<?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>42185</bug_id>
          
          <creation_ts>2010-07-13 13:03:19 -0700</creation_ts>
          <short_desc>Synchronize Khronos and WebKit WebGL tests</short_desc>
          <delta_ts>2010-07-15 13:38:06 -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>WebGL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>42200</dependson>
    
    <dependson>42204</dependson>
    
    <dependson>42212</dependson>
    
    <dependson>42335</dependson>
          <blocked>42336</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kenneth Russell">kbr</reporter>
          <assigned_to name="Kenneth Russell">kbr</assigned_to>
          <cc>abarth</cc>
    
    <cc>cmarrin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>fishd</cc>
    
    <cc>japhet</cc>
    
    <cc>oliver</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zmo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>250688</commentid>
    <comment_count>0</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-07-13 13:03:19 -0700</bug_when>
    <thetext>Many of the WebGL layout tests which originated in WebKit have been adopted as portions of the Khronos WebGL conformance suite. It is desirable to consider the Khronos repository the master version of these tests, because multiple vendors are making improvements to them in that repository. Recent changes to the WebKit layout tests have been merged into the Khronos version of the tests. At this point we need to synchronize the Khronos versions of the WebKit WebGL layout tests back to the WebKit repository, to get back to a state where the tests are identical (modulo some paths of .js includes which are different in the two repositories).

This synchronization will be done in a few stages because it will touch a lot of test code. This bug will be used to track the progress.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250695</commentid>
    <comment_count>1</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-07-13 13:16:55 -0700</bug_when>
    <thetext>(In reply to comment #0)
&gt; Many of the WebGL layout tests which originated in WebKit have been adopted as portions of the Khronos WebGL conformance suite. It is desirable to consider the Khronos repository the master version of these tests, because multiple vendors are making improvements to them in that repository. Recent changes to the WebKit layout tests have been merged into the Khronos version of the tests. At this point we need to synchronize the Khronos versions of the WebKit WebGL layout tests back to the WebKit repository, to get back to a state where the tests are identical (modulo some paths of .js includes which are different in the two repositories).
&gt; 
&gt; This synchronization will be done in a few stages because it will touch a lot of test code. This bug will be used to track the progress.

Maybe we should change the folder structure in khronos conformance tests to match the WebKit Layout tests.  That way we can do a full sync with very little effort.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250713</commentid>
    <comment_count>2</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-07-13 13:38:03 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Maybe we should change the folder structure in khronos conformance tests to match the WebKit Layout tests.  That way we can do a full sync with very little effort.

This would require the creation of some unnecessary directories in the Khronos test suite. I think that we can get the same effect with a simple shell script to perform the synchronization -- which I will probably add while fixing this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>252021</commentid>
    <comment_count>3</comment_count>
      <attachid>61695</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-07-15 11:46:44 -0700</bug_when>
    <thetext>Created attachment 61695
Patch

From the ChangeLog:

For the WebGL tests in the Khronos repository that originated in the WebKit repository, synchronized the latest versions of these tests using a script which will be checked in later. Copied webgl-test-utils.js from Khronos repo and added needed entry points to webgl-test.js. Rebaselined tests as necessary and verified the rebaselining manually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>252025</commentid>
    <comment_count>4</comment_count>
      <attachid>61698</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-07-15 11:53:51 -0700</bug_when>
    <thetext>Created attachment 61698
Revised patch

Replaced tabs with spaces in Khronos repo in a couple of tests, and re-synchronized those tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>252034</commentid>
    <comment_count>5</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-07-15 12:13:16 -0700</bug_when>
    <thetext>Committed r63444: &lt;http://trac.webkit.org/changeset/63444&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>252066</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-15 13:38:06 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/63444 might have broken Leopard Intel Release (Tests)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61695</attachid>
            <date>2010-07-15 11:46:44 -0700</date>
            <delta_ts>2010-07-15 11:53:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>test-sync.patch</filename>
            <type>text/plain</type>
            <size>160518</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDYzNDQyKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsOTMgQEAKKzIwMTAtMDctMTUgIEtlbm5ldGggUnVzc2VsbCAg
PGtickBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFN5bmNocm9uaXplIEtocm9ub3MgYW5kIFdlYktpdCBXZWJHTCB0ZXN0cworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDIxODUKKworICAg
ICAgICBGb3IgdGhlIFdlYkdMIHRlc3RzIGluIHRoZSBLaHJvbm9zIHJlcG9zaXRvcnkgdGhhdCBv
cmlnaW5hdGVkIGluCisgICAgICAgIHRoZSBXZWJLaXQgcmVwb3NpdG9yeSwgc3luY2hyb25pemVk
IHRoZSBsYXRlc3QgdmVyc2lvbnMgb2YgdGhlc2UKKyAgICAgICAgdGVzdHMgdXNpbmcgYSBzY3Jp
cHQgd2hpY2ggd2lsbCBiZSBjaGVja2VkIGluIGxhdGVyLiBDb3BpZWQKKyAgICAgICAgd2ViZ2wt
dGVzdC11dGlscy5qcyBmcm9tIEtocm9ub3MgcmVwbyBhbmQgYWRkZWQgbmVlZGVkIGVudHJ5Cisg
ICAgICAgIHBvaW50cyB0byB3ZWJnbC10ZXN0LmpzLiBSZWJhc2VsaW5lZCB0ZXN0cyBhcyBuZWNl
c3NhcnkgYW5kCisgICAgICAgIHZlcmlmaWVkIHRoZSByZWJhc2VsaW5pbmcgbWFudWFsbHkuCisK
KyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9hcnJheS1idWZmZXItY3Jhc2gtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2FycmF5LWJ1ZmZlci1jcmFzaC5odG1s
OgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2FycmF5LXVuaXQtdGVzdHMuaHRtbDoKKyAg
ICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9jb250ZXh0LWF0dHJpYnV0ZXMtYWxwaGEtZGVwdGgt
c3RlbmNpbC1hbnRpYWxpYXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvY2FudmFzL3dl
YmdsL2NvbnRleHQtYXR0cmlidXRlcy1hbHBoYS1kZXB0aC1zdGVuY2lsLWFudGlhbGlhcy5odG1s
OgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2NvbnRleHQtYXR0cmlidXRlcy1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvY29udGV4dC1hdHRyaWJ1dGVzLmh0
bWw6CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvY29weS10ZXgtaW1hZ2UtYW5kLXN1Yi1p
bWFnZS0yZC5odG1sOgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2RyYXctYXJyYXlzLW91
dC1vZi1ib3VuZHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2Ry
YXctYXJyYXlzLW91dC1vZi1ib3VuZHMuaHRtbDoKKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJn
bC9kcmF3LWVsZW1lbnRzLW91dC1vZi1ib3VuZHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZh
c3QvY2FudmFzL3dlYmdsL2RyYXctZWxlbWVudHMtb3V0LW9mLWJvdW5kcy5odG1sOgorICAgICAg
ICAqIGZhc3QvY2FudmFzL3dlYmdsL2Vycm9yLXJlcG9ydGluZy1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogZmFzdC9jYW52YXMvd2ViZ2wvZXJyb3ItcmVwb3J0aW5nLmh0bWw6CisgICAgICAgICog
ZmFzdC9jYW52YXMvd2ViZ2wvZ2V0LWFjdGl2ZS10ZXN0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBmYXN0L2NhbnZhcy93ZWJnbC9nZXQtYWN0aXZlLXRlc3QuaHRtbDoKKyAgICAgICAgKiBmYXN0
L2NhbnZhcy93ZWJnbC9nbC1iaW5kLWF0dHJpYi1sb2NhdGlvbi10ZXN0LWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9nbC1iaW5kLWF0dHJpYi1sb2NhdGlvbi10ZXN0
Lmh0bWw6CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvZ2wtZW5hYmxlLWVudW0tdGVzdC5o
dG1sOgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2dsLWVudW0tdGVzdHMtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2dsLWVudW0tdGVzdHMuaHRtbDoKKyAg
ICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9nbC1nZXQtY2FsbHMtZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2dsLWdldC1jYWxscy5odG1sOgorICAgICAgICAqIGZh
c3QvY2FudmFzL3dlYmdsL2dsLW9iamVjdC1nZXQtY2FsbHMtZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIGZhc3QvY2FudmFzL3dlYmdsL2dsLW9iamVjdC1nZXQtY2FsbHMuaHRtbDoKKyAgICAgICAg
KiBmYXN0L2NhbnZhcy93ZWJnbC9nbC11bmlmb3JtLWFycmF5cy5odG1sOgorICAgICAgICAqIGZh
c3QvY2FudmFzL3dlYmdsL2dsLXVuaWZvcm1tYXRyaXg0ZnYuaHRtbDoKKyAgICAgICAgKiBmYXN0
L2NhbnZhcy93ZWJnbC9pbmRleC12YWxpZGF0aW9uLWNvcGllcy1pbmRpY2VzLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9pbmRleC12YWxpZGF0aW9uLWNvcGllcy1p
bmRpY2VzLmh0bWw6CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvaW5kZXgtdmFsaWRhdGlv
bi1jcmFzaC13aXRoLWJ1ZmZlci1zdWItZGF0YS1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFz
dC9jYW52YXMvd2ViZ2wvaW5kZXgtdmFsaWRhdGlvbi1jcmFzaC13aXRoLWJ1ZmZlci1zdWItZGF0
YS5odG1sOgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2luZGV4LXZhbGlkYXRpb24tZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2luZGV4LXZhbGlkYXRpb24t
dmVyaWZpZXMtdG9vLW1hbnktaW5kaWNlcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9j
YW52YXMvd2ViZ2wvaW5kZXgtdmFsaWRhdGlvbi12ZXJpZmllcy10b28tbWFueS1pbmRpY2VzLmh0
bWw6CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvaW5kZXgtdmFsaWRhdGlvbi13aXRoLXJl
c2l6ZWQtYnVmZmVyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9p
bmRleC12YWxpZGF0aW9uLXdpdGgtcmVzaXplZC1idWZmZXIuaHRtbDoKKyAgICAgICAgKiBmYXN0
L2NhbnZhcy93ZWJnbC9pbmRleC12YWxpZGF0aW9uLmh0bWw6CisgICAgICAgICogZmFzdC9jYW52
YXMvd2ViZ2wvaW52YWxpZC1VVEYtMTYuaHRtbDoKKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJn
bC9udWxsLW9iamVjdC1iZWhhdmlvdXItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvY2Fu
dmFzL3dlYmdsL251bGwtb2JqZWN0LWJlaGF2aW91ci5odG1sOgorICAgICAgICAqIGZhc3QvY2Fu
dmFzL3dlYmdsL251bGwtdW5pZm9ybS1sb2NhdGlvbi5odG1sOgorICAgICAgICAqIGZhc3QvY2Fu
dmFzL3dlYmdsL3BvaW50LXNpemUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvY2FudmFz
L3dlYmdsL3BvaW50LXNpemUuaHRtbDoKKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9yZW5k
ZXJidWZmZXItaW5pdGlhbGl6YXRpb24tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvY2Fu
dmFzL3dlYmdsL3JlbmRlcmJ1ZmZlci1pbml0aWFsaXphdGlvbi5odG1sOgorICAgICAgICAqIGZh
c3QvY2FudmFzL3dlYmdsL3Jlc291cmNlcy93ZWJnbC10ZXN0LXV0aWxzLmpzOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkdMVGVzdFV0aWxzKToKKyAgICAgICAgKFdlYkdMVGVzdFV0aWxzLik6CisgICAg
ICAgICogZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsLXRlc3QuanM6CisgICAgICAg
IChpbml0Tm9uS2hyb25vc0ZyYW1ld29yayk6CisgICAgICAgIChub25LaHJvbm9zRnJhbWV3b3Jr
Tm90aWZ5RG9uZSk6CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvdGV4LWltYWdlLWFuZC1z
dWItaW1hZ2UtMmQtd2l0aC1hcnJheS1idWZmZXItdmlldy1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogZmFzdC9jYW52YXMvd2ViZ2wvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1hcnJh
eS1idWZmZXItdmlldy5odG1sOgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL3RleC1pbWFn
ZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtZGF0YS1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogZmFzdC9jYW52YXMvd2ViZ2wvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFn
ZS1kYXRhLmh0bWw6CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvdGV4LWltYWdlLWFuZC1z
dWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9jYW52
YXMvd2ViZ2wvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS5odG1sOgorICAg
ICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL3RleC1pbWFnZS1hbmQtdW5pZm9ybS1iaW5kaW5nLWJ1
Z3MtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL3RleC1pbWFnZS1h
bmQtdW5pZm9ybS1iaW5kaW5nLWJ1Z3MuaHRtbDoKKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJn
bC90ZXgtaW1hZ2Utd2l0aC1mb3JtYXQtYW5kLXR5cGUtZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IGZhc3QvY2FudmFzL3dlYmdsL3RleC1pbWFnZS13aXRoLWZvcm1hdC1hbmQtdHlwZS5odG1sOgor
ICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL3RleC1zdWItaW1hZ2UtMmQtZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL3RleC1zdWItaW1hZ2UtMmQuaHRtbDoKKyAg
ICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC90ZXh0dXJlLWFjdGl2ZS1iaW5kLmh0bWw6CisgICAg
ICAgICogZmFzdC9jYW52YXMvd2ViZ2wvdGV4dHVyZS1jb21wbGV0ZS5odG1sOgorICAgICAgICAq
IGZhc3QvY2FudmFzL3dlYmdsL3RleHR1cmUtbnBvdC1leHBlY3RlZC50eHQ6CisgICAgICAgICog
ZmFzdC9jYW52YXMvd2ViZ2wvdGV4dHVyZS1ucG90Lmh0bWw6CisgICAgICAgICogZmFzdC9jYW52
YXMvd2ViZ2wvdGV4dHVyZS10cmFuc3BhcmVudC1waXhlbHMtaW5pdGlhbGl6ZWQtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL3RleHR1cmUtdHJhbnNwYXJlbnQtcGl4
ZWxzLWluaXRpYWxpemVkLmh0bWw6CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvdHJpYW5n
bGUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL3RyaWFuZ2xlLmh0
bWw6CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvdW5pZm9ybS1sb2NhdGlvbi1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvdW5pZm9ybS1sb2NhdGlvbi5odG1s
OgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL3ZpZXdwb3J0LXVuY2hhbmdlZC11cG9uLXJl
c2l6ZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvdmlld3BvcnQt
dW5jaGFuZ2VkLXVwb24tcmVzaXplLmh0bWw6CisKIDIwMTAtMDctMTUgIFBhdmVsIFBvZGl2aWxv
diAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2phbiBW
YWZhaS4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2FycmF5LWJ1ZmZlci1j
cmFzaC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMv
d2ViZ2wvYXJyYXktYnVmZmVyLWNyYXNoLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNjM0MzgpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9hcnJheS1idWZmZXItY3Jhc2gtZXhwZWN0
ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDggKzEsOCBAQAotUmVncmVzc2lvbiB0ZXN0IGZv
ciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE4ODkgOiBbdjhdIFdl
YkNvcmU6OldlYkdMQXJyYXlCdWZmZXJJbnRlcm5hbDo6Ynl0ZUxlbmd0aEF0dHJHZXR0ZXIgTlVM
TCBwb2ludGVyCitUZXN0IEFycmF5QnVmZmVyLmJ5dGVMZW5ndGgKIAogT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgogCi1QQVNTIG5ldyBXZWJHTEFycmF5QnVmZmVyKCkuYnl0ZUxlbmd0aCBkaWQg
bm90IGNyYXNoCitQQVNTIG5ldyBBcnJheUJ1ZmZlcigpLmJ5dGVMZW5ndGggZGlkIG5vdCBjcmFz
aAogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9hcnJheS1idWZmZXItY3Jhc2guaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9hcnJheS1idWZmZXIt
Y3Jhc2guaHRtbAkocmV2aXNpb24gNjM0MzgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93
ZWJnbC9hcnJheS1idWZmZXItY3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTAsMTIgKzEw
LDEyIEBACiAKIDxzY3JpcHQ+CiAKLWRlc2NyaXB0aW9uKCdSZWdyZXNzaW9uIHRlc3QgZm9yIDxh
IGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTg4OSI+aHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxODg5PC9hPiA6IDxjb2RlPlt2
OF0gV2ViQ29yZTo6V2ViR0xBcnJheUJ1ZmZlckludGVybmFsOjpieXRlTGVuZ3RoQXR0ckdldHRl
ciBOVUxMIHBvaW50ZXI8L2NvZGU+Jyk7CitkZXNjcmlwdGlvbignVGVzdCBBcnJheUJ1ZmZlci5i
eXRlTGVuZ3RoJyk7CiAKIDwhLS0gVGhlIGZvbGxvd2luZyB1c2VkIHRvIGNhdXNlIGEgY3Jhc2gg
aW4gQ2hyb21lIC0tPgotbmV3IFdlYkdMQXJyYXlCdWZmZXIoKS5ieXRlTGVuZ3RoOworbmV3IEFy
cmF5QnVmZmVyKCkuYnl0ZUxlbmd0aDsKIAotdGVzdFBhc3NlZCgibmV3IFdlYkdMQXJyYXlCdWZm
ZXIoKS5ieXRlTGVuZ3RoIGRpZCBub3QgY3Jhc2giKTsKK3Rlc3RQYXNzZWQoIm5ldyBBcnJheUJ1
ZmZlcigpLmJ5dGVMZW5ndGggZGlkIG5vdCBjcmFzaCIpOwogc3VjY2Vzc2Z1bGx5UGFyc2VkID0g
dHJ1ZTsKIAogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9h
cnJheS11bml0LXRlc3RzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvd2ViZ2wvYXJyYXktdW5pdC10ZXN0cy5odG1sCShyZXZpc2lvbiA2MzQzOCkKKysrIExheW91
dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2FycmF5LXVuaXQtdGVzdHMuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtNzAzLDggKzcwMyw1IEBAIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CiA8L3Nj
cmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KIAotPHNjcmlwdD4KLTwvc2NyaXB0PgotCiA8L2JvZHk+CiA8L2h0bWw+CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9jb250ZXh0LWF0dHJpYnV0ZXMtYWxwaGEt
ZGVwdGgtc3RlbmNpbC1hbnRpYWxpYXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2NvbnRleHQtYXR0cmlidXRlcy1hbHBoYS1kZXB0aC1z
dGVuY2lsLWFudGlhbGlhcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDYzNDM4KQorKysgTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvY29udGV4dC1hdHRyaWJ1dGVzLWFscGhhLWRlcHRoLXN0
ZW5jaWwtYW50aWFsaWFzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMyw3ICszLDYg
QEAgVmVyaWZ5IFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMgYXJlIHdvcmtpbgogCiBPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCiAKLVJlZ3Jlc3Npb24gdGVzdCBmb3IgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTMzNDE2IDogSG9vayB1cCBXZWJHTENvbnRleHRBdHRyaWJ1
dGVzIHRvIE9wZW5HTCBjb250ZXh0IGNyZWF0aW9uIGNvZGUKIFRlc3RpbmcgYWxwaGEgPSB0cnVl
CiBQQVNTIHdlYkdMID0gZ2V0V2ViR0woJ2FscGhhT24nLCB7IGFscGhhOiB0cnVlLCBkZXB0aDog
ZmFsc2UsIHN0ZW5jaWw6IGZhbHNlLCBhbnRpYWxpYXM6IGZhbHNlIH0sIFsgMCwgMCwgMCwgMCBd
LCAxLCAwKSBpcyBub24tbnVsbC4KIFBBU1MgY29udGV4dEF0dHJpYnMgPSB3ZWJHTC5nZXRDb250
ZXh0QXR0cmlidXRlcygpIGlzIG5vbi1udWxsLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvd2ViZ2wvY29udGV4dC1hdHRyaWJ1dGVzLWFscGhhLWRlcHRoLXN0ZW5jaWwtYW50aWFsaWFz
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvY29udGV4
dC1hdHRyaWJ1dGVzLWFscGhhLWRlcHRoLXN0ZW5jaWwtYW50aWFsaWFzLmh0bWwJKHJldmlzaW9u
IDYzNDM4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvY29udGV4dC1hdHRyaWJ1
dGVzLWFscGhhLWRlcHRoLXN0ZW5jaWwtYW50aWFsaWFzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTM1LDE2ICszNSwxMiBAQCB2YXIgY29ycmVjdENvbG9yID0gbnVsbDsKIAogZnVuY3Rpb24gaW5p
dCgpCiB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdFdlYkdMRW5hYmxl
ZCIsICIxIik7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIGlmICh3aW5k
b3cuaW5pdE5vbktocm9ub3NGcmFtZXdvcmspIHsKKyAgICAgICAgd2luZG93LmluaXROb25LaHJv
bm9zRnJhbWV3b3JrKHRydWUpOwogICAgIH0KIAogICAgIGRlc2NyaXB0aW9uKCdWZXJpZnkgV2Vi
R0xDb250ZXh0QXR0cmlidXRlcyBhcmUgd29ya2luZyBhcyBzcGVjaWZpZWQsIGluY2x1ZGluZyBh
bHBoYSwgZGVwdGgsIHN0ZW5jaWwsIGFudGlhbGlhcywgYnV0IG5vdCBwcmVtdWx0aXBsaWVkQWxw
aGEnKTsKIAotICAgIGRlYnVnKCdSZWdyZXNzaW9uIHRlc3QgZm9yIDxhIGhyZWY9Imh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzQxNiI+aHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTMzNDE2PC9hPiA6IDxjb2RlPkhvb2sgdXAgV2ViR0xDb250
ZXh0QXR0cmlidXRlcyB0byBPcGVuR0wgY29udGV4dCBjcmVhdGlvbiBjb2RlPC9jb2RlPicpOwot
ICAgIAogICAgIHJ1blRlc3QoKTsKIH0KIApAQCAtNTcsNyArNTMsNyBAQCBmdW5jdGlvbiBnZXRX
ZWJHTChjYW52YXNOYW1lLCBjb250ZXh0QXR0CiAgICAgICAgIHJldHVybiBudWxsOwogICAgIH0K
ICAgICB2YXIgYWN0dWFsQ29udGV4dEF0dHJpYnMgPSBnbC5nZXRDb250ZXh0QXR0cmlidXRlcygp
OwotICAgIAorCiAgICAgLy8gQWRkIGEgY29uc29sZQogICAgIGdsLmNvbnNvbGUgPSAoImNvbnNv
bGUiIGluIHdpbmRvdykgPyB3aW5kb3cuY29uc29sZSA6IHsgbG9nOiBmdW5jdGlvbigpIHsgfSB9
OwogCkBAIC0yOTQsOCArMjkwLDggQEAgZnVuY3Rpb24gcnVuVGVzdCgpCiB9CiAKIGZ1bmN0aW9u
IGZpbmlzaCgpIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAod2luZG93Lm5v
bktocm9ub3NGcmFtZXdvcmtOb3RpZnlEb25lKSB7CisgICAgICAgIHdpbmRvdy5ub25LaHJvbm9z
RnJhbWV3b3JrTm90aWZ5RG9uZSgpOwogICAgIH0KIH0KIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvY29udGV4dC1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9jb250ZXh0LWF0dHJp
YnV0ZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA2MzQzOCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL3dlYmdsL2NvbnRleHQtYXR0cmlidXRlcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTMyLDcgKzMyLDcgQEAgUEFTUyBhdHRyaWJzLmRlcHRoIGlzIHRydWUKIFBBU1MgYXR0
cmlicy5hbHBoYSBpcyB0cnVlCiBQQVNTIGF0dHJpYnMuc3RlbmNpbCA9PSB0cnVlIHx8IGF0dHJp
YnMuc3RlbmNpbCA9PSBmYWxzZSBpcyB0cnVlCiBQQVNTIGF0dHJpYnMuYW50aWFsaWFzIGlzIGZh
bHNlCi1QQVNTIGF0dHJpYnMucHJlbXVsdGlwbGllZEFscGhhIGlzIHRydWUKK1BBU1MgYXR0cmli
cy5wcmVtdWx0aXBsaWVkQWxwaGEgPT0gdHJ1ZSB8fCBhdHRyaWJzLnByZW11bHRpcGxpZWRBbHBo
YSA9PSBmYWxzZSBpcyB0cnVlCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRF
U1QgQ09NUExFVEUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2NvbnRleHQt
YXR0cmlidXRlcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dl
YmdsL2NvbnRleHQtYXR0cmlidXRlcy5odG1sCShyZXZpc2lvbiA2MzQzOCkKKysrIExheW91dFRl
c3RzL2Zhc3QvY2FudmFzL3dlYmdsL2NvbnRleHQtYXR0cmlidXRlcy5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC00NCwxNCArNDQsMTQgQEAgc2hvdWxkQmUoImF0dHJpYnMuYW50aWFsaWFzIiwgImZh
bHNlIik7CiBzaG91bGRCZSgiYXR0cmlicy5wcmVtdWx0aXBsaWVkQWxwaGEiLCAidHJ1ZSIpOwog
CiBkZWJ1ZygiVGVzdCBjdXN0b21pemVkIHZhbHVlcyIpOwotLy8gKHByZW11bHRpcGxpZWRBbHBo
YSA9PSBmYWxzZSkgaXMgbm90IHN1cHBvcnRlZCwgZGVmYXVsdCB0byB0cnVlCisvLyAocHJlbXVs
dGlwbGllZEFscGhhID09IGZhbHNlKSBpcyBub3Qgc3VwcG9ydGVkIGJ5IG1vc3QgaW1wbGVtZW50
YXRpb25zIHlldAogc2hvdWxkQmVOb25OdWxsKCJjb250ZXh0ID0gY3JlYXRlM0RDb250ZXh0KG51
bGwsIHsgcHJlbXVsdGlwbGllZEFscGhhOiBmYWxzZSwgYW50aWFsaWFzOiBmYWxzZSB9KSIpOwog
c2hvdWxkQmVOb25OdWxsKCJhdHRyaWJzID0gY29udGV4dC5nZXRDb250ZXh0QXR0cmlidXRlcygp
Iik7CiBzaG91bGRCZSgiYXR0cmlicy5kZXB0aCIsICJ0cnVlIik7CiBzaG91bGRCZSgiYXR0cmli
cy5hbHBoYSIsICJ0cnVlIik7CiBzaG91bGRCZSgiYXR0cmlicy5zdGVuY2lsID09IHRydWUgfHwg
YXR0cmlicy5zdGVuY2lsID09IGZhbHNlIiwgInRydWUiKTsKIHNob3VsZEJlKCJhdHRyaWJzLmFu
dGlhbGlhcyIsICJmYWxzZSIpOwotc2hvdWxkQmUoImF0dHJpYnMucHJlbXVsdGlwbGllZEFscGhh
IiwgInRydWUiKTsKK3Nob3VsZEJlKCJhdHRyaWJzLnByZW11bHRpcGxpZWRBbHBoYSA9PSB0cnVl
IHx8IGF0dHJpYnMucHJlbXVsdGlwbGllZEFscGhhID09IGZhbHNlIiwgInRydWUiKTsKIAogc3Vj
Y2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvd2ViZ2wvY29weS10ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2NvcHktdGV4LWltYWdlLWFu
ZC1zdWItaW1hZ2UtMmQuaHRtbAkocmV2aXNpb24gNjM0MzgpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy93ZWJnbC9jb3B5LXRleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTE4LDcgKzE4LDEyIEBAIHZvaWQgbWFpbigpCiAKIDxzY3JpcHQgaWQ9ImZz
aGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgogdW5pZm9ybSBzYW1wbGVyMkQgdGV4
OworLy8gV29ya2Fyb3VuZCBmb3Igbm9uLWNvbXBsaWFudCBXZWJHTCBpbXBsZW1lbnRhdGlvbnMg
KEZJWE1FKQorI2lmIGRlZmluZWQoR0xfRVMpCit2YXJ5aW5nIG1lZGl1bXAgdmVjMiB0ZXhDb29y
ZDsKKyNlbHNlCiB2YXJ5aW5nIHZlYzIgdGV4Q29vcmQ7CisjZW5kaWYKIAogdm9pZCBtYWluKCkK
IHsKQEAgLTMxLDEwICszNiw4IEBAIHZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSBmYWxzZTsKIAog
ZnVuY3Rpb24gaW5pdCgpCiB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
ewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktp
dFdlYkdMRW5hYmxlZCIsICIxIik7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwor
ICAgIGlmICh3aW5kb3cuaW5pdE5vbktocm9ub3NGcmFtZXdvcmspIHsKKyAgICAgICAgd2luZG93
LmluaXROb25LaHJvbm9zRnJhbWV3b3JrKHRydWUpOwogICAgIH0KIAogICAgIGRlc2NyaXB0aW9u
KCdWZXJpZnkgY29weVRleEltYWdlMkQgYW5kIGNvcHlUZXhTdWJJbWFnZTJEJyk7CkBAIC05Nyw3
ICsxMDAsNyBAQCBmdW5jdGlvbiBydW5UZXN0SXRlcmF0aW9uKGFudGlhbGlhcykKICAgICAvLyBC
aW5kIHRoZSB0ZXh0dXJlIHRvIHRleHR1cmUgdW5pdCAwCiAgICAgZ2wuYmluZFRleHR1cmUoZ2wu
VEVYVFVSRV8yRCwgdGV4dHVyZSk7CiAgICAgLy8gU2V0IHVwIHRleHR1cmUKLSAgICBnbC50ZXhJ
bWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEsIDIsIDIsIDAsIGdsLlJHQkEsIGdsLlVO
U0lHTkVEX0JZVEUsIG51bGwpOyAgICAKKyAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQs
IDAsIGdsLlJHQkEsIDIsIDIsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOwog
ICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVS
LCBnbC5ORUFSRVNUKTsKICAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRF
WFRVUkVfTUFHX0ZJTFRFUiwgZ2wuTkVBUkVTVCk7CiAKQEAgLTE3NSw4ICsxNzgsOCBAQCBmdW5j
dGlvbiBydW5UZXN0KGFudGlhbGlhcykKIH0KIAogZnVuY3Rpb24gZmluaXNoKCkgewotICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cubm9uS2hyb25vc0ZyYW1ld29ya05v
dGlmeURvbmUpIHsKKyAgICAgICAgd2luZG93Lm5vbktocm9ub3NGcmFtZXdvcmtOb3RpZnlEb25l
KCk7CiAgICAgfQogfQogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93
ZWJnbC9kcmF3LWFycmF5cy1vdXQtb2YtYm91bmRzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9kcmF3LWFycmF5cy1vdXQtb2YtYm91bmRz
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNjM0MzgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy93ZWJnbC9kcmF3LWFycmF5cy1vdXQtb2YtYm91bmRzLWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMywyNiArMyw0MCBAQCBUZXN0IG9mIGRyYXdBcnJheXMgd2l0aCBvdXQtb2YtYm91
bmRzIHBhCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIFRlc3QgZW1wdHkgYnVmZmVyCitQ
QVNTIGNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywgMCwgMSkgZ2VuZXJhdGVk
IGV4cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX09QRVJBVElPTi4KIFBBU1MgY29udGV4dC5kcmF3
QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAwLCAxMDAwMCkgZ2VuZXJhdGVkIGV4cGVjdGVkIEdM
IGVycm9yOiBJTlZBTElEX09QRVJBVElPTi4KK1BBU1MgY29udGV4dC5kcmF3QXJyYXlzKGNvbnRl
eHQuVFJJQU5HTEVTLCAwLCAxMDAwMDAwMDAwMDAwMCkgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVy
cm9yOiBJTlZBTElEX09QRVJBVElPTi4KIFBBU1MgY29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQu
VFJJQU5HTEVTLCAwLCAtMSkgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX1ZB
TFVFLgorUEFTUyBjb250ZXh0LmRyYXdBcnJheXMoY29udGV4dC5UUklBTkdMRVMsIDEsIDApIGdl
bmVyYXRlZCBleHBlY3RlZCBHTCBlcnJvcjogSU5WQUxJRF9PUEVSQVRJT04uCiBQQVNTIGNvbnRl
eHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywgLTEsIDApIGdlbmVyYXRlZCBleHBlY3Rl
ZCBHTCBlcnJvcjogSU5WQUxJRF9WQUxVRS4KIFBBU1MgY29udGV4dC5kcmF3QXJyYXlzKGNvbnRl
eHQuVFJJQU5HTEVTLCAwLCAwKSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IE5PX0VSUk9S
LgogUEFTUyBjb250ZXh0LmRyYXdBcnJheXMoY29udGV4dC5UUklBTkdMRVMsIDEwMCwgMCkgZ2Vu
ZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX09QRVJBVElPTi4KK1BBU1MgY29udGV4
dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAxLCAtMSkgZ2VuZXJhdGVkIGV4cGVjdGVk
IEdMIGVycm9yOiBJTlZBTElEX1ZBTFVFLgorUEFTUyBjb250ZXh0LmRyYXdBcnJheXMoY29udGV4
dC5UUklBTkdMRVMsIC0xLCAxKSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURf
VkFMVUUuCiAKIFRlc3QgYnVmZmVyIHdpdGggMyBmbG9hdCB2ZWN0b3JzCi1QQVNTIGNvbnRleHQu
Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhjb250ZXh0LkZSQU1FQlVGRkVSKSBpcyBjb250ZXh0LkZS
QU1FQlVGRkVSX0NPTVBMRVRFCi1QQVNTIGNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFO
R0xFUywgMCwgMykgaXMgdW5kZWZpbmVkCiBQQVNTIGNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0
LlRSSUFOR0xFUywgMCwgMykgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBOT19FUlJPUi4K
IFBBU1MgY29udGV4dC5kcmF3QXJyYXlzKDB4MDAwOSwgMCwgMykgZ2VuZXJhdGVkIGV4cGVjdGVk
IEdMIGVycm9yOiBJTlZBTElEX0VOVU0uCiBQQVNTIGNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0
LlRSSUFOR0xFUywgMywgMikgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX09Q
RVJBVElPTi4KIFBBU1MgY29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAwLCAx
MDAwMCkgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX09QRVJBVElPTi4KK1BB
U1MgY29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAwLCAxMDAwMDAwMDAwMDAw
MCkgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX09QRVJBVElPTi4KIFBBU1Mg
Y29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAwLCAtMSkgZ2VuZXJhdGVkIGV4
cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX1ZBTFVFLgogUEFTUyBjb250ZXh0LmRyYXdBcnJheXMo
Y29udGV4dC5UUklBTkdMRVMsIC0xLCAwKSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IElO
VkFMSURfVkFMVUUuCiBQQVNTIGNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywg
MCwgMCkgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBOT19FUlJPUi4KIFBBU1MgY29udGV4
dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAxMDAsIDApIGdlbmVyYXRlZCBleHBlY3Rl
ZCBHTCBlcnJvcjogSU5WQUxJRF9PUEVSQVRJT04uCitQQVNTIGNvbnRleHQuZHJhd0FycmF5cyhj
b250ZXh0LlRSSUFOR0xFUywgMSwgLTEpIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBlcnJvcjogSU5W
QUxJRF9WQUxVRS4KK1BBU1MgY29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAt
MSwgMSkgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX1ZBTFVFLgorCitUZXN0
IGJ1ZmZlciB3aXRoIGludGVybGVhdmVkICgzKzIpIGZsb2F0IHZlY3RvcnMKK1BBU1MgY29udGV4
dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAwLCA5KSBnZW5lcmF0ZWQgZXhwZWN0ZWQg
R0wgZXJyb3I6IE5PX0VSUk9SLgorUEFTUyBjb250ZXh0LmRyYXdBcnJheXMoY29udGV4dC5UUklB
TkdMRVMsIDAsIC01MDApIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBlcnJvcjogSU5WQUxJRF9WQUxV
RS4KK1BBU1MgY29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAtMjAwLCAxKSBn
ZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURfVkFMVUUuCitQQVNTIGNvbnRleHQu
ZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywgLTIwMCwgLTUwMCkgZ2VuZXJhdGVkIGV4cGVj
dGVkIEdMIGVycm9yOiBJTlZBTElEX1ZBTFVFLgogUEFTUyBjb250ZXh0LmRyYXdBcnJheXMoY29u
dGV4dC5UUklBTkdMRVMsIDAsIDB4ZmZmZmZmZmYpIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBlcnJv
cjogSU5WQUxJRF9WQUxVRS4KIFBBU1MgY29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5H
TEVTLCAweGZmZmZmZmZmLCAxKSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURf
VkFMVUUuCiBQQVNTIGNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywgMHhmZmZm
ZmZmZiwgMHhmZmZmZmZmZikgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX1ZB
TFVFLgorUEFTUyBjb250ZXh0LmRyYXdBcnJheXMoY29udGV4dC5UUklBTkdMRVMsIDAsIDIwMCkg
Z2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX09QRVJBVElPTi4KK1BBU1MgY29u
dGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAwLCAweDdmZmZmZmZmKSBnZW5lcmF0
ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURfT1BFUkFUSU9OLgogUEFTUyBjb250ZXh0LmRy
YXdBcnJheXMoY29udGV4dC5UUklBTkdMRVMsIDB4N2ZmZmZmZmYsIDEpIGdlbmVyYXRlZCBleHBl
Y3RlZCBHTCBlcnJvcjogSU5WQUxJRF9PUEVSQVRJT04uCiBQQVNTIGNvbnRleHQuZHJhd0FycmF5
cyhjb250ZXh0LlRSSUFOR0xFUywgMHg3ZmZmZmZmZiwgMHg3ZmZmZmZmZikgZ2VuZXJhdGVkIGV4
cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX09QRVJBVElPTi4KIApJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvd2ViZ2wvZHJhdy1hcnJheXMtb3V0LW9mLWJvdW5kcy5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2RyYXctYXJyYXlzLW91dC1vZi1i
b3VuZHMuaHRtbAkocmV2aXNpb24gNjM0MzgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93
ZWJnbC9kcmF3LWFycmF5cy1vdXQtb2YtYm91bmRzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIw
LDI4ICsyMCw2OSBAQCBjb250ZXh0LmJpbmRCdWZmZXIoY29udGV4dC5BUlJBWV9CVUZGRVIsCiBj
b250ZXh0LmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KDApOwogCiBkZWJ1ZygiVGVzdCBlbXB0eSBi
dWZmZXIiKQotY29udGV4dC5idWZmZXJEYXRhKGNvbnRleHQuQVJSQVlfQlVGRkVSLCBuZXcgV2Vi
R0xGbG9hdEFycmF5KFsgIF0pLCBjb250ZXh0LlNUQVRJQ19EUkFXKTsKK2NvbnRleHQuYnVmZmVy
RGF0YShjb250ZXh0LkFSUkFZX0JVRkZFUiwgbmV3IEZsb2F0MzJBcnJheShbICBdKSwgY29udGV4
dC5TVEFUSUNfRFJBVyk7CiBjb250ZXh0LnZlcnRleEF0dHJpYlBvaW50ZXIoMCwgMywgY29udGV4
dC5GTE9BVCwgZmFsc2UsIDAsIDApOworc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHQsIGNv
bnRleHQuSU5WQUxJRF9PUEVSQVRJT04sICJjb250ZXh0LmRyYXdBcnJheXMoY29udGV4dC5UUklB
TkdMRVMsIDAsIDEpIik7CiBzaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5J
TlZBTElEX09QRVJBVElPTiwgImNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywg
MCwgMTAwMDApIik7CitzaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5JTlZB
TElEX09QRVJBVElPTiwgImNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywgMCwg
MTAwMDAwMDAwMDAwMDApIik7CiBzaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4
dC5JTlZBTElEX1ZBTFVFLCAiY29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAw
LCAtMSkiKTsKK3Nob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0LCBjb250ZXh0LklOVkFMSURf
T1BFUkFUSU9OLCAiY29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAxLCAwKSIp
Owogc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHQsIGNvbnRleHQuSU5WQUxJRF9WQUxVRSwg
ImNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywgLTEsIDApIik7CiBzaG91bGRH
ZW5lcmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5OT19FUlJPUiwgImNvbnRleHQuZHJhd0Fy
cmF5cyhjb250ZXh0LlRSSUFOR0xFUywgMCwgMCkiKTsKIHNob3VsZEdlbmVyYXRlR0xFcnJvcihj
b250ZXh0LCBjb250ZXh0LklOVkFMSURfT1BFUkFUSU9OLCAiY29udGV4dC5kcmF3QXJyYXlzKGNv
bnRleHQuVFJJQU5HTEVTLCAxMDAsIDApIik7CitzaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4
dCwgY29udGV4dC5JTlZBTElEX1ZBTFVFLCAiY29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJ
QU5HTEVTLCAxLCAtMSkiKTsKK3Nob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0LCBjb250ZXh0
LklOVkFMSURfVkFMVUUsICJjb250ZXh0LmRyYXdBcnJheXMoY29udGV4dC5UUklBTkdMRVMsIC0x
LCAxKSIpOwogCiBkZWJ1ZygiIikKIGRlYnVnKCJUZXN0IGJ1ZmZlciB3aXRoIDMgZmxvYXQgdmVj
dG9ycyIpCi1jb250ZXh0LmJ1ZmZlckRhdGEoY29udGV4dC5BUlJBWV9CVUZGRVIsIG5ldyBXZWJH
TEZsb2F0QXJyYXkoWyAwLDAuNSwwLCAtMC41LC0wLjUsMCwgMC41LC0wLjUsMCBdKSwgY29udGV4
dC5TVEFUSUNfRFJBVyk7Citjb250ZXh0LmJ1ZmZlckRhdGEoY29udGV4dC5BUlJBWV9CVUZGRVIs
IG5ldyBGbG9hdDMyQXJyYXkoWyAwLDAuNSwwLCAtMC41LC0wLjUsMCwgMC41LC0wLjUsMCBdKSwg
Y29udGV4dC5TVEFUSUNfRFJBVyk7CiBjb250ZXh0LnZlcnRleEF0dHJpYlBvaW50ZXIoMCwgMywg
Y29udGV4dC5GTE9BVCwgZmFsc2UsIDAsIDApOwotc2hvdWxkQmUoImNvbnRleHQuY2hlY2tGcmFt
ZWJ1ZmZlclN0YXR1cyhjb250ZXh0LkZSQU1FQlVGRkVSKSIsICJjb250ZXh0LkZSQU1FQlVGRkVS
X0NPTVBMRVRFIik7Ci1zaG91bGRCZSgiY29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5H
TEVTLCAwLCAzKSIsICJ1bmRlZmluZWQiKTsKIHNob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0
LCBjb250ZXh0Lk5PX0VSUk9SLCAiY29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVT
LCAwLCAzKSIpOwogc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHQsIGNvbnRleHQuSU5WQUxJ
RF9FTlVNLCAiY29udGV4dC5kcmF3QXJyYXlzKDB4MDAwOSwgMCwgMykiKTsgLy8gR0xfUE9MWUdP
Tgogc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHQsIGNvbnRleHQuSU5WQUxJRF9PUEVSQVRJ
T04sICJjb250ZXh0LmRyYXdBcnJheXMoY29udGV4dC5UUklBTkdMRVMsIDMsIDIpIik7CiBzaG91
bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5JTlZBTElEX09QRVJBVElPTiwgImNv
bnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywgMCwgMTAwMDApIik7CitzaG91bGRH
ZW5lcmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5JTlZBTElEX09QRVJBVElPTiwgImNvbnRl
eHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywgMCwgMTAwMDAwMDAwMDAwMDApIik7CiBz
aG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5JTlZBTElEX1ZBTFVFLCAiY29u
dGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAwLCAtMSkiKTsKIHNob3VsZEdlbmVy
YXRlR0xFcnJvcihjb250ZXh0LCBjb250ZXh0LklOVkFMSURfVkFMVUUsICJjb250ZXh0LmRyYXdB
cnJheXMoY29udGV4dC5UUklBTkdMRVMsIC0xLCAwKSIpOwogc2hvdWxkR2VuZXJhdGVHTEVycm9y
KGNvbnRleHQsIGNvbnRleHQuTk9fRVJST1IsICJjb250ZXh0LmRyYXdBcnJheXMoY29udGV4dC5U
UklBTkdMRVMsIDAsIDApIik7CiBzaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4
dC5JTlZBTElEX09QRVJBVElPTiwgImNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xF
UywgMTAwLCAwKSIpOworc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHQsIGNvbnRleHQuSU5W
QUxJRF9WQUxVRSwgImNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywgMSwgLTEp
Iik7CitzaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5JTlZBTElEX1ZBTFVF
LCAiY29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAtMSwgMSkiKTsKKworZGVi
dWcoIiIpCitkZWJ1ZygiVGVzdCBidWZmZXIgd2l0aCBpbnRlcmxlYXZlZCAoMysyKSBmbG9hdCB2
ZWN0b3JzIikKKwordmFyIHByb2dyYW0yID0gY3JlYXRlUHJvZ3JhbShjb250ZXh0LAorCQkJICAg
ICAiYXR0cmlidXRlIHZlYzMgYU9uZTsiICsKKwkJCSAgICAgImF0dHJpYnV0ZSB2ZWMyIGFUd287
IiArCisJCQkgICAgICJ2b2lkIG1haW4oKSB7IGdsX1Bvc2l0aW9uID0gdmVjNChhT25lLCAxLjAp
ICsgdmVjNChhVHdvLCAwLjAsIDEuMCk7IH0iLAorCQkJICAgICAidm9pZCBtYWluKCkgeyBnbF9G
cmFnQ29sb3IgPSB2ZWM0KDEuMCwgMC4wLCAwLjAsIDEuMCk7IH0iLAorCQkJICAgICBbICJhT25l
IiwgImFUd28iIF0pOworaWYgKCFwcm9ncmFtMikgeworICAgIHRlc3RGYWlsZWQoImZhaWxlZCB0
byBjcmVhdGUgdGVzdCBwcm9ncmFtIik7Cit9CisKK2NvbnRleHQudXNlUHJvZ3JhbShwcm9ncmFt
Mik7CisKK3ZhciB2Ym8gPSBjb250ZXh0LmNyZWF0ZUJ1ZmZlcigpOworY29udGV4dC5iaW5kQnVm
ZmVyKGNvbnRleHQuQVJSQVlfQlVGRkVSLCB2Ym8pOworLy8gZW5vdWdoIGZvciA5IHZlcnRpY2Vz
LCBzbyAzIHRyaWFuZ2xlcworY29udGV4dC5idWZmZXJEYXRhKGNvbnRleHQuQVJSQVlfQlVGRkVS
LCBuZXcgRmxvYXQzMkFycmF5KDkqNSksIGNvbnRleHQuU1RBVElDX0RSQVcpOworCisvLyBiaW5k
IGZpcnN0IDMgZWxlbWVudHMsIHdpdGggYSBzdHJpZGUgb2YgNSBmbG9hdCBlbGVtZW50cworY29u
dGV4dC52ZXJ0ZXhBdHRyaWJQb2ludGVyKDAsIDMsIGNvbnRleHQuRkxPQVQsIGZhbHNlLCA1KjQs
IDApOworLy8gYmluZCAyIGVsZW1lbnRzLCBzdGFydGluZyBhZnRlciB0aGUgZmlyc3QgMzsgc2Ft
ZSBzdHJpZGUgb2YgNSBmbG9hdCBlbGVtZW50cworY29udGV4dC52ZXJ0ZXhBdHRyaWJQb2ludGVy
KDEsIDIsIGNvbnRleHQuRkxPQVQsIGZhbHNlLCA1KjQsIDMqNCk7CisKK2NvbnRleHQuZW5hYmxl
VmVydGV4QXR0cmliQXJyYXkoMCk7Citjb250ZXh0LmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KDEp
OworCitzaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5OT19FUlJPUiwgImNv
bnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywgMCwgOSkiKTsKKworLy8gbmVnYXRp
dmUgdmFsdWVzIG11c3QgZ2VuZXJhdGUgSU5WQUxJRF9WQUxVRTsgdGhleSBjYW4gbmV2ZXIgYmUg
dmFsaWQKK3Nob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0LCBjb250ZXh0LklOVkFMSURfVkFM
VUUsICJjb250ZXh0LmRyYXdBcnJheXMoY29udGV4dC5UUklBTkdMRVMsIDAsIC01MDApIik7Citz
aG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5JTlZBTElEX1ZBTFVFLCAiY29u
dGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAtMjAwLCAxKSIpOworc2hvdWxkR2Vu
ZXJhdGVHTEVycm9yKGNvbnRleHQsIGNvbnRleHQuSU5WQUxJRF9WQUxVRSwgImNvbnRleHQuZHJh
d0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywgLTIwMCwgLTUwMCkiKTsKIAogLy8gMHhmZmZmZmZm
ZiBuZWVkcyB0byBjb252ZXJ0IHRvIGEgJ2xvbmcnIElETCBhcmd1bWVudCBhcyAtMSwgYXMgcGVy
CiAvLyBXZWJJREwgNC4xLjcuICBKUyBUb0ludDMyKDB4ZmZmZmZmZmYpID09IC0xLCB3aGljaCBp
cyB0aGUgZmlyc3Qgc3RlcApAQCAtNDksNiArOTAsMTEgQEAgc2hvdWxkR2VuZXJhdGVHTEVycm9y
KGNvbnRleHQsIGNvbnRleHQuSQogc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHQsIGNvbnRl
eHQuSU5WQUxJRF9WQUxVRSwgImNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywg
MCwgMHhmZmZmZmZmZikiKTsKIHNob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0LCBjb250ZXh0
LklOVkFMSURfVkFMVUUsICJjb250ZXh0LmRyYXdBcnJheXMoY29udGV4dC5UUklBTkdMRVMsIDB4
ZmZmZmZmZmYsIDEpIik7CiBzaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5J
TlZBTElEX1ZBTFVFLCAiY29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAweGZm
ZmZmZmZmLCAweGZmZmZmZmZmKSIpOworCisvLyB2YWx1ZXMgdGhhdCBjb3VsZCBvdGhlcndpc2Ug
YmUgdmFsaWQgYnV0IGFyZW4ndCBkdWUgdG8gYmluZGluZ3MgZ2VuZXJhdGUKKy8vIElOVkFMSURf
T1BFUkFUSU9OCitzaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5JTlZBTElE
X09QRVJBVElPTiwgImNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywgMCwgMjAw
KSIpOworc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHQsIGNvbnRleHQuSU5WQUxJRF9PUEVS
QVRJT04sICJjb250ZXh0LmRyYXdBcnJheXMoY29udGV4dC5UUklBTkdMRVMsIDAsIDB4N2ZmZmZm
ZmYpIik7CiBzaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5JTlZBTElEX09Q
RVJBVElPTiwgImNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywgMHg3ZmZmZmZm
ZiwgMSkiKTsKIHNob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0LCBjb250ZXh0LklOVkFMSURf
T1BFUkFUSU9OLCAiY29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAweDdmZmZm
ZmZmLCAweDdmZmZmZmZmKSIpOwogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJn
bC9kcmF3LWVsZW1lbnRzLW91dC1vZi1ib3VuZHMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2RyYXctZWxlbWVudHMtb3V0LW9mLWJvdW5k
cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDYzNDM4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvd2ViZ2wvZHJhdy1lbGVtZW50cy1vdXQtb2YtYm91bmRzLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtNSwyNyArNSw0MyBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBCiBUZXN0IGVtcHR5IGluZGV4IGJ1ZmZlcgogUEFTUyBjb250ZXh0LmRyYXdFbGVt
ZW50cyhjb250ZXh0LlRSSUFOR0xFUywgMywgY29udGV4dC5VTlNJR05FRF9CWVRFLCAwKSBnZW5l
cmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURfT1BFUkFUSU9OLgogUEFTUyBjb250ZXh0
LmRyYXdFbGVtZW50cyhjb250ZXh0LlRSSUFOR0xFUywgMTAwMDAsIGNvbnRleHQuVU5TSUdORURf
QllURSwgMCkgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX09QRVJBVElPTi4K
K1BBU1MgY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRVMsIDEwMDAwMDAwMDAw
MDAwLCBjb250ZXh0LlVOU0lHTkVEX0JZVEUsIDApIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBlcnJv
cjogSU5WQUxJRF9PUEVSQVRJT04uCiBQQVNTIGNvbnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQu
VFJJQU5HTEVTLCAtMSwgY29udGV4dC5VTlNJR05FRF9CWVRFLCAwKSBnZW5lcmF0ZWQgZXhwZWN0
ZWQgR0wgZXJyb3I6IElOVkFMSURfVkFMVUUuCiBQQVNTIGNvbnRleHQuZHJhd0VsZW1lbnRzKGNv
bnRleHQuVFJJQU5HTEVTLCAxLCBjb250ZXh0LlVOU0lHTkVEX0JZVEUsIDApIGdlbmVyYXRlZCBl
eHBlY3RlZCBHTCBlcnJvcjogSU5WQUxJRF9PUEVSQVRJT04uCiBQQVNTIGNvbnRleHQuZHJhd0Vs
ZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVTLCAwLCBjb250ZXh0LlVOU0lHTkVEX0JZVEUsIC0xKSBn
ZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURfVkFMVUUuCiBQQVNTIGNvbnRleHQu
ZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVTLCAwLCBjb250ZXh0LlVOU0lHTkVEX0JZVEUs
IDApIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBlcnJvcjogTk9fRVJST1IuCitQQVNTIGNvbnRleHQu
ZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVTLCAtMSwgY29udGV4dC5VTlNJR05FRF9CWVRF
LCAxKSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURfVkFMVUUuCitQQVNTIGNv
bnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVTLCAxLCBjb250ZXh0LlVOU0lHTkVE
X0JZVEUsIC0xKSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURfVkFMVUUuCiAK
IFRlc3QgYnVmZmVyIHdpdGggMyBieXRlIGluZGV4ZXMKLVBBU1MgY29udGV4dC5jaGVja0ZyYW1l
YnVmZmVyU3RhdHVzKGNvbnRleHQuRlJBTUVCVUZGRVIpIGlzIGNvbnRleHQuRlJBTUVCVUZGRVJf
Q09NUExFVEUKLVBBU1MgY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRVMsIDMs
IGNvbnRleHQuVU5TSUdORURfQllURSwgMCkgaXMgdW5kZWZpbmVkCiBQQVNTIGNvbnRleHQuZHJh
d0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVTLCAzLCBjb250ZXh0LlVOU0lHTkVEX0JZVEUsIDAp
IGdlbmVyYXRlZCBleHBlY3RlZCBHTCBlcnJvcjogTk9fRVJST1IuCiBQQVNTIGNvbnRleHQuZHJh
d0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVTLCAzLCBjb250ZXh0LlVOU0lHTkVEX0lOVCwgMCkg
Z2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX0VOVU0uCiBQQVNTIGNvbnRleHQu
ZHJhd0VsZW1lbnRzKDB4MDAwOSwgMywgY29udGV4dC5VTlNJR05FRF9CWVRFLCAwKSBnZW5lcmF0
ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURfRU5VTS4KIFBBU1MgY29udGV4dC5kcmF3RWxl
bWVudHMoY29udGV4dC5UUklBTkdMRVMsIDMsIGNvbnRleHQuVU5TSUdORURfQllURSwgMikgZ2Vu
ZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX09QRVJBVElPTi4KIFBBU1MgY29udGV4
dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRVMsIDEwMDAwLCBjb250ZXh0LlVOU0lHTkVE
X0JZVEUsIDApIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBlcnJvcjogSU5WQUxJRF9PUEVSQVRJT04u
CitQQVNTIGNvbnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVTLCAxMDAwMDAwMDAw
MDAwMCwgY29udGV4dC5VTlNJR05FRF9CWVRFLCAwKSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJy
b3I6IElOVkFMSURfT1BFUkFUSU9OLgogUEFTUyBjb250ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0
LlRSSUFOR0xFUywgLTEsIGNvbnRleHQuVU5TSUdORURfQllURSwgMCkgZ2VuZXJhdGVkIGV4cGVj
dGVkIEdMIGVycm9yOiBJTlZBTElEX1ZBTFVFLgogUEFTUyBjb250ZXh0LmRyYXdFbGVtZW50cyhj
b250ZXh0LlRSSUFOR0xFUywgMCwgY29udGV4dC5VTlNJR05FRF9CWVRFLCAtMSkgZ2VuZXJhdGVk
IGV4cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX1ZBTFVFLgogUEFTUyBjb250ZXh0LmRyYXdFbGVt
ZW50cyhjb250ZXh0LlRSSUFOR0xFUywgLTEsIGNvbnRleHQuVU5TSUdORURfQllURSwgMSkgZ2Vu
ZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX1ZBTFVFLgorUEFTUyBjb250ZXh0LmRy
YXdFbGVtZW50cyhjb250ZXh0LlRSSUFOR0xFUywgMSwgY29udGV4dC5VTlNJR05FRF9CWVRFLCAt
MSkgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX1ZBTFVFLgogUEFTUyBjb250
ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0LlRSSUFOR0xFUywgMCwgY29udGV4dC5VTlNJR05FRF9C
WVRFLCA0KSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURfT1BFUkFUSU9OLgog
UEFTUyBjb250ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0LlRSSUFOR0xFUywgMHhmZmZmZmZmZiwg
Y29udGV4dC5VTlNJR05FRF9CWVRFLCAwKSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IElO
VkFMSURfVkFMVUUuCiBQQVNTIGNvbnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVT
LCAweDdmZmZmZmZmLCBjb250ZXh0LlVOU0lHTkVEX0JZVEUsIDApIGdlbmVyYXRlZCBleHBlY3Rl
ZCBHTCBlcnJvcjogSU5WQUxJRF9PUEVSQVRJT04uCiBQQVNTIGNvbnRleHQuZHJhd0VsZW1lbnRz
KGNvbnRleHQuVFJJQU5HTEVTLCAweDdmZmZmZmZmLCBjb250ZXh0LlVOU0lHTkVEX0JZVEUsIDB4
N2ZmZmZmZmYpIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBlcnJvcjogSU5WQUxJRF9PUEVSQVRJT04u
CiAKK1Rlc3QgYnVmZmVyIHdpdGggaW50ZXJsZWF2ZWQgKDMrMikgZmxvYXQgdmVjdG9ycworUEFT
UyBjb250ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0LlRSSUFOR0xFUywgOSwgY29udGV4dC5VTlNJ
R05FRF9TSE9SVCwgMCkgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBOT19FUlJPUi4KK1BB
U1MgY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRVMsIDksIGNvbnRleHQuRkxP
QVQsIDApIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBlcnJvcjogSU5WQUxJRF9FTlVNLgorUEFTUyBj
b250ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0LlRSSUFOR0xFUywgOSwgY29udGV4dC5TSE9SVCwg
MCkgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX0VOVU0uCitQQVNTIGNvbnRl
eHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVTLCA5LCBjb250ZXh0LlVOU0lHTkVEX0lO
VCwgMCkgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX0VOVU0uCitQQVNTIGNv
bnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVTLCA5LCBjb250ZXh0LlVOU0lHTkVE
X1NIT1JULCAxMDAwKSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURfT1BFUkFU
SU9OLgorUEFTUyBjb250ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0LlRSSUFOR0xFUywgMTIsIGNv
bnRleHQuVU5TSUdORURfU0hPUlQsIDApIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBlcnJvcjogSU5W
QUxJRF9PUEVSQVRJT04uCitQQVNTIGNvbnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5H
TEVTLCAxNSwgY29udGV4dC5VTlNJR05FRF9TSE9SVCwgMCkgZ2VuZXJhdGVkIGV4cGVjdGVkIEdM
IGVycm9yOiBJTlZBTElEX09QRVJBVElPTi4KK1BBU1MgY29udGV4dC5kcmF3RWxlbWVudHMoY29u
dGV4dC5UUklBTkdMRVMsIDE4LCBjb250ZXh0LlVOU0lHTkVEX1NIT1JULCAwKSBnZW5lcmF0ZWQg
ZXhwZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURfT1BFUkFUSU9OLgorUEFTUyBjb250ZXh0LmRyYXdF
bGVtZW50cyhjb250ZXh0LlRSSUFOR0xFUywgMywgY29udGV4dC5VTlNJR05FRF9TSE9SVCwgMiox
NSkgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX09QRVJBVElPTi4KK1BBU1Mg
Y29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRVMsIDB4ZmZmZmZmZmYsIGNvbnRl
eHQuVU5TSUdORURfU0hPUlQsIDApIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBlcnJvcjogSU5WQUxJ
RF9WQUxVRS4KK1BBU1MgY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRVMsIDB4
N2ZmZmZmZmYsIGNvbnRleHQuVU5TSUdORURfU0hPUlQsIDApIGdlbmVyYXRlZCBleHBlY3RlZCBH
TCBlcnJvcjogSU5WQUxJRF9PUEVSQVRJT04uCisKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKIAogVEVTVCBDT01QTEVURQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2Vi
Z2wvZHJhdy1lbGVtZW50cy1vdXQtb2YtYm91bmRzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZHJhdy1lbGVtZW50cy1vdXQtb2YtYm91bmRzLmh0bWwJ
KHJldmlzaW9uIDYzNDM4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZHJhdy1l
bGVtZW50cy1vdXQtb2YtYm91bmRzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE4LDQxICsxOCw5
OSBAQCBjb250ZXh0LnVzZVByb2dyYW0ocHJvZ3JhbSk7CiB2YXIgdmVydGV4T2JqZWN0ID0gY29u
dGV4dC5jcmVhdGVCdWZmZXIoKTsKIGNvbnRleHQuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoMCk7
CiBjb250ZXh0LmJpbmRCdWZmZXIoY29udGV4dC5BUlJBWV9CVUZGRVIsIHZlcnRleE9iamVjdCk7
Ci1jb250ZXh0LmJ1ZmZlckRhdGEoY29udGV4dC5BUlJBWV9CVUZGRVIsIG5ldyBXZWJHTEZsb2F0
QXJyYXkoWyAwLDAuNSwwLCAtMC41LC0wLjUsMCwgMC41LC0wLjUsMCBdKSwgY29udGV4dC5TVEFU
SUNfRFJBVyk7Citjb250ZXh0LmJ1ZmZlckRhdGEoY29udGV4dC5BUlJBWV9CVUZGRVIsIG5ldyBG
bG9hdDMyQXJyYXkoWyAwLDAuNSwwLCAtMC41LC0wLjUsMCwgMC41LC0wLjUsMCBdKSwgY29udGV4
dC5TVEFUSUNfRFJBVyk7CiBjb250ZXh0LnZlcnRleEF0dHJpYlBvaW50ZXIoMCwgMywgY29udGV4
dC5GTE9BVCwgZmFsc2UsIDAsIDApOwogCiB2YXIgaW5kZXhPYmplY3QgPSBjb250ZXh0LmNyZWF0
ZUJ1ZmZlcigpOwogCiBkZWJ1ZygiVGVzdCBlbXB0eSBpbmRleCBidWZmZXIiKQogY29udGV4dC5i
aW5kQnVmZmVyKGNvbnRleHQuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIGluZGV4T2JqZWN0KTsKLWNv
bnRleHQuYnVmZmVyRGF0YShjb250ZXh0LkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBuZXcgV2ViR0xV
bnNpZ25lZEJ5dGVBcnJheShbICBdKSwgY29udGV4dC5TVEFUSUNfRFJBVyk7Citjb250ZXh0LmJ1
ZmZlckRhdGEoY29udGV4dC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgbmV3IFVpbnQ4QXJyYXkoWyAg
XSksIGNvbnRleHQuU1RBVElDX0RSQVcpOwogc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHQs
IGNvbnRleHQuSU5WQUxJRF9PUEVSQVRJT04sICJjb250ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0
LlRSSUFOR0xFUywgMywgY29udGV4dC5VTlNJR05FRF9CWVRFLCAwKSIpOwogc2hvdWxkR2VuZXJh
dGVHTEVycm9yKGNvbnRleHQsIGNvbnRleHQuSU5WQUxJRF9PUEVSQVRJT04sICJjb250ZXh0LmRy
YXdFbGVtZW50cyhjb250ZXh0LlRSSUFOR0xFUywgMTAwMDAsIGNvbnRleHQuVU5TSUdORURfQllU
RSwgMCkiKTsKK3Nob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0LCBjb250ZXh0LklOVkFMSURf
T1BFUkFUSU9OLCAiY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRVMsIDEwMDAw
MDAwMDAwMDAwLCBjb250ZXh0LlVOU0lHTkVEX0JZVEUsIDApIik7CiBzaG91bGRHZW5lcmF0ZUdM
RXJyb3IoY29udGV4dCwgY29udGV4dC5JTlZBTElEX1ZBTFVFLCAiY29udGV4dC5kcmF3RWxlbWVu
dHMoY29udGV4dC5UUklBTkdMRVMsIC0xLCBjb250ZXh0LlVOU0lHTkVEX0JZVEUsIDApIik7CiBz
aG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5JTlZBTElEX09QRVJBVElPTiwg
ImNvbnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVTLCAxLCBjb250ZXh0LlVOU0lH
TkVEX0JZVEUsIDApIik7CiBzaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5J
TlZBTElEX1ZBTFVFLCAiY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRVMsIDAs
IGNvbnRleHQuVU5TSUdORURfQllURSwgLTEpIik7CiBzaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29u
dGV4dCwgY29udGV4dC5OT19FUlJPUiwgImNvbnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJ
QU5HTEVTLCAwLCBjb250ZXh0LlVOU0lHTkVEX0JZVEUsIDApIik7CitzaG91bGRHZW5lcmF0ZUdM
RXJyb3IoY29udGV4dCwgY29udGV4dC5JTlZBTElEX1ZBTFVFLCAiY29udGV4dC5kcmF3RWxlbWVu
dHMoY29udGV4dC5UUklBTkdMRVMsIC0xLCBjb250ZXh0LlVOU0lHTkVEX0JZVEUsIDEpIik7Citz
aG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5JTlZBTElEX1ZBTFVFLCAiY29u
dGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRVMsIDEsIGNvbnRleHQuVU5TSUdORURf
QllURSwgLTEpIik7CiAKIGRlYnVnKCIiKQogZGVidWcoIlRlc3QgYnVmZmVyIHdpdGggMyBieXRl
IGluZGV4ZXMiKQogY29udGV4dC5iaW5kQnVmZmVyKGNvbnRleHQuRUxFTUVOVF9BUlJBWV9CVUZG
RVIsIGluZGV4T2JqZWN0KTsKLWNvbnRleHQuYnVmZmVyRGF0YShjb250ZXh0LkVMRU1FTlRfQVJS
QVlfQlVGRkVSLCBuZXcgV2ViR0xVbnNpZ25lZEJ5dGVBcnJheShbIDAsIDEsIDIgXSksIGNvbnRl
eHQuU1RBVElDX0RSQVcpOwotc2hvdWxkQmUoImNvbnRleHQuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1
cyhjb250ZXh0LkZSQU1FQlVGRkVSKSIsICJjb250ZXh0LkZSQU1FQlVGRkVSX0NPTVBMRVRFIik7
Ci1zaG91bGRCZSgiY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRVMsIDMsIGNv
bnRleHQuVU5TSUdORURfQllURSwgMCkiLCAidW5kZWZpbmVkIik7Citjb250ZXh0LmJ1ZmZlckRh
dGEoY29udGV4dC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgbmV3IFVpbnQ4QXJyYXkoWyAwLCAxLCAy
IF0pLCBjb250ZXh0LlNUQVRJQ19EUkFXKTsKIHNob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0
LCBjb250ZXh0Lk5PX0VSUk9SLCAiY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdM
RVMsIDMsIGNvbnRleHQuVU5TSUdORURfQllURSwgMCkiKTsKIHNob3VsZEdlbmVyYXRlR0xFcnJv
cihjb250ZXh0LCBjb250ZXh0LklOVkFMSURfRU5VTSwgImNvbnRleHQuZHJhd0VsZW1lbnRzKGNv
bnRleHQuVFJJQU5HTEVTLCAzLCBjb250ZXh0LlVOU0lHTkVEX0lOVCwgMCkiKTsKIHNob3VsZEdl
bmVyYXRlR0xFcnJvcihjb250ZXh0LCBjb250ZXh0LklOVkFMSURfRU5VTSwgImNvbnRleHQuZHJh
d0VsZW1lbnRzKDB4MDAwOSwgMywgY29udGV4dC5VTlNJR05FRF9CWVRFLCAwKSIpOyAvLyBHTF9Q
T0xZR09OCiBzaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5JTlZBTElEX09Q
RVJBVElPTiwgImNvbnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVTLCAzLCBjb250
ZXh0LlVOU0lHTkVEX0JZVEUsIDIpIik7CiBzaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dCwg
Y29udGV4dC5JTlZBTElEX09QRVJBVElPTiwgImNvbnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQu
VFJJQU5HTEVTLCAxMDAwMCwgY29udGV4dC5VTlNJR05FRF9CWVRFLCAwKSIpOworc2hvdWxkR2Vu
ZXJhdGVHTEVycm9yKGNvbnRleHQsIGNvbnRleHQuSU5WQUxJRF9PUEVSQVRJT04sICJjb250ZXh0
LmRyYXdFbGVtZW50cyhjb250ZXh0LlRSSUFOR0xFUywgMTAwMDAwMDAwMDAwMDAsIGNvbnRleHQu
VU5TSUdORURfQllURSwgMCkiKTsKIHNob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0LCBjb250
ZXh0LklOVkFMSURfVkFMVUUsICJjb250ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0LlRSSUFOR0xF
UywgLTEsIGNvbnRleHQuVU5TSUdORURfQllURSwgMCkiKTsKIHNob3VsZEdlbmVyYXRlR0xFcnJv
cihjb250ZXh0LCBjb250ZXh0LklOVkFMSURfVkFMVUUsICJjb250ZXh0LmRyYXdFbGVtZW50cyhj
b250ZXh0LlRSSUFOR0xFUywgMCwgY29udGV4dC5VTlNJR05FRF9CWVRFLCAtMSkiKTsKIHNob3Vs
ZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0LCBjb250ZXh0LklOVkFMSURfVkFMVUUsICJjb250ZXh0
LmRyYXdFbGVtZW50cyhjb250ZXh0LlRSSUFOR0xFUywgLTEsIGNvbnRleHQuVU5TSUdORURfQllU
RSwgMSkiKTsKK3Nob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0LCBjb250ZXh0LklOVkFMSURf
VkFMVUUsICJjb250ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0LlRSSUFOR0xFUywgMSwgY29udGV4
dC5VTlNJR05FRF9CWVRFLCAtMSkiKTsKIHNob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0LCBj
b250ZXh0LklOVkFMSURfT1BFUkFUSU9OLCAiY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5U
UklBTkdMRVMsIDAsIGNvbnRleHQuVU5TSUdORURfQllURSwgNCkiKTsKIHNob3VsZEdlbmVyYXRl
R0xFcnJvcihjb250ZXh0LCBjb250ZXh0LklOVkFMSURfVkFMVUUsICJjb250ZXh0LmRyYXdFbGVt
ZW50cyhjb250ZXh0LlRSSUFOR0xFUywgMHhmZmZmZmZmZiwgY29udGV4dC5VTlNJR05FRF9CWVRF
LCAwKSIpOwogc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHQsIGNvbnRleHQuSU5WQUxJRF9P
UEVSQVRJT04sICJjb250ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0LlRSSUFOR0xFUywgMHg3ZmZm
ZmZmZiwgY29udGV4dC5VTlNJR05FRF9CWVRFLCAwKSIpOwogc2hvdWxkR2VuZXJhdGVHTEVycm9y
KGNvbnRleHQsIGNvbnRleHQuSU5WQUxJRF9PUEVSQVRJT04sICJjb250ZXh0LmRyYXdFbGVtZW50
cyhjb250ZXh0LlRSSUFOR0xFUywgMHg3ZmZmZmZmZiwgY29udGV4dC5VTlNJR05FRF9CWVRFLCAw
eDdmZmZmZmZmKSIpOwogCiBkZWJ1ZygiIikKK2RlYnVnKCJUZXN0IGJ1ZmZlciB3aXRoIGludGVy
bGVhdmVkICgzKzIpIGZsb2F0IHZlY3RvcnMiKQorCit2YXIgcHJvZ3JhbTIgPSBjcmVhdGVQcm9n
cmFtKGNvbnRleHQsCisJCQkgICAgICJhdHRyaWJ1dGUgdmVjMyBhT25lOyIgKworCQkJICAgICAi
YXR0cmlidXRlIHZlYzIgYVR3bzsiICsKKwkJCSAgICAgInZvaWQgbWFpbigpIHsgZ2xfUG9zaXRp
b24gPSB2ZWM0KGFPbmUsIDEuMCkgKyB2ZWM0KGFUd28sIDAuMCwgMS4wKTsgfSIsCisJCQkgICAg
ICJ2b2lkIG1haW4oKSB7IGdsX0ZyYWdDb2xvciA9IHZlYzQoMS4wLCAwLjAsIDAuMCwgMS4wKTsg
fSIsCisJCQkgICAgIFsgImFPbmUiLCAiYVR3byIgXSk7CitpZiAoIXByb2dyYW0yKSB7CisgICAg
dGVzdEZhaWxlZCgiZmFpbGVkIHRvIGNyZWF0ZSB0ZXN0IHByb2dyYW0iKTsKK30KKworY29udGV4
dC51c2VQcm9ncmFtKHByb2dyYW0yKTsKKwordmFyIHZibyA9IGNvbnRleHQuY3JlYXRlQnVmZmVy
KCk7Citjb250ZXh0LmJpbmRCdWZmZXIoY29udGV4dC5BUlJBWV9CVUZGRVIsIHZibyk7CisvLyBl
bm91Z2ggZm9yIDkgdmVydGljZXMsIHNvIDMgdHJpYW5nbGVzCitjb250ZXh0LmJ1ZmZlckRhdGEo
Y29udGV4dC5BUlJBWV9CVUZGRVIsIG5ldyBGbG9hdDMyQXJyYXkoOSo1KSwgY29udGV4dC5TVEFU
SUNfRFJBVyk7CisKKy8vIGJpbmQgZmlyc3QgMyBlbGVtZW50cywgd2l0aCBhIHN0cmlkZSBvZiA1
IGZsb2F0IGVsZW1lbnRzCitjb250ZXh0LnZlcnRleEF0dHJpYlBvaW50ZXIoMCwgMywgY29udGV4
dC5GTE9BVCwgZmFsc2UsIDUqNCwgMCk7CisvLyBiaW5kIDIgZWxlbWVudHMsIHN0YXJ0aW5nIGFm
dGVyIHRoZSBmaXJzdCAzOyBzYW1lIHN0cmlkZSBvZiA1IGZsb2F0IGVsZW1lbnRzCitjb250ZXh0
LnZlcnRleEF0dHJpYlBvaW50ZXIoMSwgMiwgY29udGV4dC5GTE9BVCwgZmFsc2UsIDUqNCwgMyo0
KTsKKworY29udGV4dC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgwKTsKK2NvbnRleHQuZW5hYmxl
VmVydGV4QXR0cmliQXJyYXkoMSk7CisKK3ZhciBlYm8gPSBjb250ZXh0LmNyZWF0ZUJ1ZmZlcigp
OworY29udGV4dC5iaW5kQnVmZmVyKGNvbnRleHQuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIGVibyk7
Citjb250ZXh0LmJ1ZmZlckRhdGEoY29udGV4dC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgbmV3IFVp
bnQxNkFycmF5KFsgMCwgMSwgMiwKKwkJCQkJCQkJCSAgICAgICAxLCAyLCAwLAorCQkJCQkJCQkJ
ICAgICAgIDIsIDAsIDEsCisJCQkJCQkJCQkgICAgICAgMjAwLCAyMDAsIDIwMCwKKwkJCQkJCQkJ
CSAgICAgICAweDdmZmYsIDB4N2ZmZiwgMHg3ZmZmLAorCQkJCQkJCQkJICAgICAgIDB4ZmZmZiwg
MHhmZmZmLCAweGZmZmYgXSksCisJCSAgIGNvbnRleHQuU1RBVElDX0RSQVcpOworCitzaG91bGRH
ZW5lcmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5OT19FUlJPUiwgImNvbnRleHQuZHJhd0Vs
ZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVTLCA5LCBjb250ZXh0LlVOU0lHTkVEX1NIT1JULCAwKSIp
OworCisvLyBpbnZhbGlkIHR5cGUgYXJndW1lbnRzCitzaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29u
dGV4dCwgY29udGV4dC5JTlZBTElEX0VOVU0sICJjb250ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0
LlRSSUFOR0xFUywgOSwgY29udGV4dC5GTE9BVCwgMCkiKTsKK3Nob3VsZEdlbmVyYXRlR0xFcnJv
cihjb250ZXh0LCBjb250ZXh0LklOVkFMSURfRU5VTSwgImNvbnRleHQuZHJhd0VsZW1lbnRzKGNv
bnRleHQuVFJJQU5HTEVTLCA5LCBjb250ZXh0LlNIT1JULCAwKSIpOworc2hvdWxkR2VuZXJhdGVH
TEVycm9yKGNvbnRleHQsIGNvbnRleHQuSU5WQUxJRF9FTlVNLCAiY29udGV4dC5kcmF3RWxlbWVu
dHMoY29udGV4dC5UUklBTkdMRVMsIDksIGNvbnRleHQuVU5TSUdORURfSU5ULCAwKSIpOworCisv
LyBpbnZhbGlkIG9wZXJhdGlvbiB3aXRoIGluZGljZXMgdGhhdCB3b3VsZCBiZSB2YWxpZCB3aXRo
IGNvcnJlY3QgYmluZGluZ3MKK3Nob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0LCBjb250ZXh0
LklOVkFMSURfT1BFUkFUSU9OLCAiY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdM
RVMsIDksIGNvbnRleHQuVU5TSUdORURfU0hPUlQsIDEwMDApIik7CitzaG91bGRHZW5lcmF0ZUdM
RXJyb3IoY29udGV4dCwgY29udGV4dC5JTlZBTElEX09QRVJBVElPTiwgImNvbnRleHQuZHJhd0Vs
ZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVTLCAxMiwgY29udGV4dC5VTlNJR05FRF9TSE9SVCwgMCki
KTsKK3Nob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0LCBjb250ZXh0LklOVkFMSURfT1BFUkFU
SU9OLCAiY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRVMsIDE1LCBjb250ZXh0
LlVOU0lHTkVEX1NIT1JULCAwKSIpOworc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHQsIGNv
bnRleHQuSU5WQUxJRF9PUEVSQVRJT04sICJjb250ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0LlRS
SUFOR0xFUywgMTgsIGNvbnRleHQuVU5TSUdORURfU0hPUlQsIDApIik7CitzaG91bGRHZW5lcmF0
ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5JTlZBTElEX09QRVJBVElPTiwgImNvbnRleHQuZHJh
d0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVTLCAzLCBjb250ZXh0LlVOU0lHTkVEX1NIT1JULCAy
KjE1KSIpOworCitzaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5JTlZBTElE
X1ZBTFVFLCAiY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRVMsIDB4ZmZmZmZm
ZmYsIGNvbnRleHQuVU5TSUdORURfU0hPUlQsIDApIik7CitzaG91bGRHZW5lcmF0ZUdMRXJyb3Io
Y29udGV4dCwgY29udGV4dC5JTlZBTElEX09QRVJBVElPTiwgImNvbnRleHQuZHJhd0VsZW1lbnRz
KGNvbnRleHQuVFJJQU5HTEVTLCAweDdmZmZmZmZmLCBjb250ZXh0LlVOU0lHTkVEX1NIT1JULCAw
KSIpOworCitkZWJ1ZygiIikKIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CiA8L3NjcmlwdD4K
IApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZXJyb3ItcmVwb3J0aW5nLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9l
cnJvci1yZXBvcnRpbmctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA2MzQzOCkKKysrIExheW91dFRl
c3RzL2Zhc3QvY2FudmFzL3dlYmdsL2Vycm9yLXJlcG9ydGluZy1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTUsMjcgKzUsMjcgQEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQQogUEFTUyBjb250ZXh0LmdldEVycm9yKCkgaXMgMAogVGVzdGluZyBnZXRBY3Rp
dmVBdHRyaWIKIFBBU1MgY29udGV4dC5nZXRBY3RpdmVBdHRyaWIobnVsbCwgMikgaXMgbnVsbAot
UEFTUyBjb250ZXh0LmdldEVycm9yKCkgaXMgY29udGV4dC5JTlZBTElEX1ZBTFVFCi1QQVNTIGNv
bnRleHQuZ2V0RXJyb3IoKSBpcyBjb250ZXh0Lk5PX0VSUk9SCitQQVNTIGdldEVycm9yIHdhcyBl
eHBlY3RlZCB2YWx1ZTogSU5WQUxJRF9WQUxVRSA6IAorUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0
ZWQgdmFsdWU6IE5PX0VSUk9SIDogCiBQQVNTIGNvbnRleHQuZ2V0QWN0aXZlQXR0cmliKHByb2dy
YW0sIDIpIGlzIG51bGwKLVBBU1MgY29udGV4dC5nZXRFcnJvcigpIGlzIGNvbnRleHQuSU5WQUxJ
RF9WQUxVRQotUEFTUyBjb250ZXh0LmdldEVycm9yKCkgaXMgY29udGV4dC5OT19FUlJPUgorUEFT
UyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IElOVkFMSURfVkFMVUUgOiAKK1BBU1MgZ2V0
RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IAogVGVzdGluZyBnZXRBY3RpdmVV
bmlmb3JtCiBQQVNTIGNvbnRleHQuZ2V0QWN0aXZlVW5pZm9ybShudWxsLCAwKSBpcyBudWxsCi1Q
QVNTIGNvbnRleHQuZ2V0RXJyb3IoKSBpcyBjb250ZXh0LklOVkFMSURfVkFMVUUKLVBBU1MgY29u
dGV4dC5nZXRFcnJvcigpIGlzIGNvbnRleHQuTk9fRVJST1IKK1BBU1MgZ2V0RXJyb3Igd2FzIGV4
cGVjdGVkIHZhbHVlOiBJTlZBTElEX1ZBTFVFIDogCitQQVNTIGdldEVycm9yIHdhcyBleHBlY3Rl
ZCB2YWx1ZTogTk9fRVJST1IgOiAKIFBBU1MgY29udGV4dC5nZXRBY3RpdmVVbmlmb3JtKHByb2dy
YW0sIDUwKSBpcyBudWxsCi1QQVNTIGNvbnRleHQuZ2V0RXJyb3IoKSBpcyBjb250ZXh0LklOVkFM
SURfVkFMVUUKLVBBU1MgY29udGV4dC5nZXRFcnJvcigpIGlzIGNvbnRleHQuTk9fRVJST1IKK1BB
U1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBJTlZBTElEX1ZBTFVFIDogCitQQVNTIGdl
dEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiAKIFRlc3RpbmcgYXR0ZW1wdHMg
dG8gbWFuaXB1bGF0ZSB0aGUgZGVmYXVsdCBmcmFtZWJ1ZmZlcgogUEFTUyBjb250ZXh0LmJpbmRG
cmFtZWJ1ZmZlcihjb250ZXh0LkZSQU1FQlVGRkVSLCAwKSBpcyB1bmRlZmluZWQuCi1QQVNTIGNv
bnRleHQuZ2V0RXJyb3IoKSBpcyBjb250ZXh0Lk5PX0VSUk9SCitQQVNTIGdldEVycm9yIHdhcyBl
eHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiAKIFBBU1MgY29udGV4dC5mcmFtZWJ1ZmZlclJlbmRl
cmJ1ZmZlcihjb250ZXh0LkZSQU1FQlVGRkVSLCBjb250ZXh0LkRFUFRIX0FUVEFDSE1FTlQsIGNv
bnRleHQuUkVOREVSQlVGRkVSLCAwKSBpcyB1bmRlZmluZWQuCi1QQVNTIGNvbnRleHQuZ2V0RXJy
b3IoKSBpcyBjb250ZXh0LklOVkFMSURfT1BFUkFUSU9OCi1QQVNTIGNvbnRleHQuZ2V0RXJyb3Io
KSBpcyBjb250ZXh0Lk5PX0VSUk9SCitQQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTog
SU5WQUxJRF9PUEVSQVRJT04gOiAKK1BBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBO
T19FUlJPUiA6IAogUEFTUyBjb250ZXh0LmZyYW1lYnVmZmVyVGV4dHVyZTJEKGNvbnRleHQuRlJB
TUVCVUZGRVIsIGNvbnRleHQuQ09MT1JfQVRUQUNITUVOVDAsIGNvbnRleHQuVEVYVFVSRV8yRCwg
MCwgMCkgaXMgdW5kZWZpbmVkLgotUEFTUyBjb250ZXh0LmdldEVycm9yKCkgaXMgY29udGV4dC5J
TlZBTElEX09QRVJBVElPTgotUEFTUyBjb250ZXh0LmdldEVycm9yKCkgaXMgY29udGV4dC5OT19F
UlJPUgorUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IElOVkFMSURfT1BFUkFUSU9O
IDogCitQQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiAKIFBBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZXJyb3ItcmVwb3J0aW5nLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZXJyb3ItcmVwb3J0aW5nLmh0bWwJKHJl
dmlzaW9uIDYzNDM4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZXJyb3ItcmVw
b3J0aW5nLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTI2LDQwICsyNiw0MCBAQCBzaG91bGRCZSgi
Y29udGV4dC5nZXRFcnJvcigpIiwgIjAiKTsKIGRlYnVnKCJUZXN0aW5nIGdldEFjdGl2ZUF0dHJp
YiIpOwogLy8gU3ludGhldGljIE9wZW5HTCBlcnJvcgogc2hvdWxkQmVOdWxsKCJjb250ZXh0Lmdl
dEFjdGl2ZUF0dHJpYihudWxsLCAyKSIpOwotc2hvdWxkQmUoImNvbnRleHQuZ2V0RXJyb3IoKSIs
ICJjb250ZXh0LklOVkFMSURfVkFMVUUiKTsKK2dsRXJyb3JTaG91bGRCZShjb250ZXh0LCBjb250
ZXh0LklOVkFMSURfVkFMVUUpOwogLy8gRXJyb3Igc3RhdGUgc2hvdWxkIGJlIGNsZWFyIGJ5IHRo
aXMgcG9pbnQKLXNob3VsZEJlKCJjb250ZXh0LmdldEVycm9yKCkiLCAiY29udGV4dC5OT19FUlJP
UiIpOworZ2xFcnJvclNob3VsZEJlKGNvbnRleHQsIGNvbnRleHQuTk9fRVJST1IpOwogLy8gUmVh
bCBPcGVuR0wgZXJyb3IKIHNob3VsZEJlTnVsbCgiY29udGV4dC5nZXRBY3RpdmVBdHRyaWIocHJv
Z3JhbSwgMikiKTsKLXNob3VsZEJlKCJjb250ZXh0LmdldEVycm9yKCkiLCAiY29udGV4dC5JTlZB
TElEX1ZBTFVFIik7CitnbEVycm9yU2hvdWxkQmUoY29udGV4dCwgY29udGV4dC5JTlZBTElEX1ZB
TFVFKTsKIC8vIEVycm9yIHN0YXRlIHNob3VsZCBiZSBjbGVhciBieSB0aGlzIHBvaW50Ci1zaG91
bGRCZSgiY29udGV4dC5nZXRFcnJvcigpIiwgImNvbnRleHQuTk9fRVJST1IiKTsKK2dsRXJyb3JT
aG91bGRCZShjb250ZXh0LCBjb250ZXh0Lk5PX0VSUk9SKTsKIAogZGVidWcoIlRlc3RpbmcgZ2V0
QWN0aXZlVW5pZm9ybSIpOwogLy8gU3ludGhldGljIE9wZW5HTCBlcnJvcgogc2hvdWxkQmVOdWxs
KCJjb250ZXh0LmdldEFjdGl2ZVVuaWZvcm0obnVsbCwgMCkiKTsKLXNob3VsZEJlKCJjb250ZXh0
LmdldEVycm9yKCkiLCAiY29udGV4dC5JTlZBTElEX1ZBTFVFIik7CitnbEVycm9yU2hvdWxkQmUo
Y29udGV4dCwgY29udGV4dC5JTlZBTElEX1ZBTFVFKTsKIC8vIEVycm9yIHN0YXRlIHNob3VsZCBi
ZSBjbGVhciBieSB0aGlzIHBvaW50Ci1zaG91bGRCZSgiY29udGV4dC5nZXRFcnJvcigpIiwgImNv
bnRleHQuTk9fRVJST1IiKTsKK2dsRXJyb3JTaG91bGRCZShjb250ZXh0LCBjb250ZXh0Lk5PX0VS
Uk9SKTsKIC8vIFJlYWwgT3BlbkdMIGVycm9yCiBzaG91bGRCZU51bGwoImNvbnRleHQuZ2V0QWN0
aXZlVW5pZm9ybShwcm9ncmFtLCA1MCkiKTsKLXNob3VsZEJlKCJjb250ZXh0LmdldEVycm9yKCki
LCAiY29udGV4dC5JTlZBTElEX1ZBTFVFIik7CitnbEVycm9yU2hvdWxkQmUoY29udGV4dCwgY29u
dGV4dC5JTlZBTElEX1ZBTFVFKTsKIC8vIEVycm9yIHN0YXRlIHNob3VsZCBiZSBjbGVhciBieSB0
aGlzIHBvaW50Ci1zaG91bGRCZSgiY29udGV4dC5nZXRFcnJvcigpIiwgImNvbnRleHQuTk9fRVJS
T1IiKTsKK2dsRXJyb3JTaG91bGRCZShjb250ZXh0LCBjb250ZXh0Lk5PX0VSUk9SKTsKIAogZGVi
dWcoIlRlc3RpbmcgYXR0ZW1wdHMgdG8gbWFuaXB1bGF0ZSB0aGUgZGVmYXVsdCBmcmFtZWJ1ZmZl
ciIpOwogc2hvdWxkQmVVbmRlZmluZWQoImNvbnRleHQuYmluZEZyYW1lYnVmZmVyKGNvbnRleHQu
RlJBTUVCVUZGRVIsIDApIik7Ci1zaG91bGRCZSgiY29udGV4dC5nZXRFcnJvcigpIiwgImNvbnRl
eHQuTk9fRVJST1IiKTsKK2dsRXJyb3JTaG91bGRCZShjb250ZXh0LCBjb250ZXh0Lk5PX0VSUk9S
KTsKIHNob3VsZEJlVW5kZWZpbmVkKCJjb250ZXh0LmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKGNv
bnRleHQuRlJBTUVCVUZGRVIsIGNvbnRleHQuREVQVEhfQVRUQUNITUVOVCwgY29udGV4dC5SRU5E
RVJCVUZGRVIsIDApIik7CiAvLyBTeW50aGV0aWMgT3BlbkdMIGVycm9yCi1zaG91bGRCZSgiY29u
dGV4dC5nZXRFcnJvcigpIiwgImNvbnRleHQuSU5WQUxJRF9PUEVSQVRJT04iKTsKK2dsRXJyb3JT
aG91bGRCZShjb250ZXh0LCBjb250ZXh0LklOVkFMSURfT1BFUkFUSU9OKTsKIC8vIEVycm9yIHN0
YXRlIHNob3VsZCBiZSBjbGVhciBieSB0aGlzIHBvaW50Ci1zaG91bGRCZSgiY29udGV4dC5nZXRF
cnJvcigpIiwgImNvbnRleHQuTk9fRVJST1IiKTsKK2dsRXJyb3JTaG91bGRCZShjb250ZXh0LCBj
b250ZXh0Lk5PX0VSUk9SKTsKIHNob3VsZEJlVW5kZWZpbmVkKCJjb250ZXh0LmZyYW1lYnVmZmVy
VGV4dHVyZTJEKGNvbnRleHQuRlJBTUVCVUZGRVIsIGNvbnRleHQuQ09MT1JfQVRUQUNITUVOVDAs
IGNvbnRleHQuVEVYVFVSRV8yRCwgMCwgMCkiKTsKIC8vIFN5bnRoZXRpYyBPcGVuR0wgZXJyb3IK
LXNob3VsZEJlKCJjb250ZXh0LmdldEVycm9yKCkiLCAiY29udGV4dC5JTlZBTElEX09QRVJBVElP
TiIpOworZ2xFcnJvclNob3VsZEJlKGNvbnRleHQsIGNvbnRleHQuSU5WQUxJRF9PUEVSQVRJT04p
OwogLy8gRXJyb3Igc3RhdGUgc2hvdWxkIGJlIGNsZWFyIGJ5IHRoaXMgcG9pbnQKLXNob3VsZEJl
KCJjb250ZXh0LmdldEVycm9yKCkiLCAiY29udGV4dC5OT19FUlJPUiIpOworZ2xFcnJvclNob3Vs
ZEJlKGNvbnRleHQsIGNvbnRleHQuTk9fRVJST1IpOwogCiBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0
cnVlOwogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9nZXQt
YWN0aXZlLXRlc3QtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL3dlYmdsL2dldC1hY3RpdmUtdGVzdC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDYzNDM4
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZ2V0LWFjdGl2ZS10ZXN0LWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMiwyMSArMiwxNiBAQCBUZXN0IG9mIGdldEFjdGl2
ZUF0dHJpYiBhbmQgZ2V0QWN0aXZlVW5pCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAot
UEFTUyBjb250ZXh0IGlzIG5vbi1udWxsLgotUEFTUyBjb250ZXh0MiBpcyBub24tbnVsbC4KLVBB
U1MgcHJvZ3JhbSBpcyBub24tbnVsbC4KLVBBU1MgcHJvZ3JhbTIgaXMgbm9uLW51bGwuCi1QQVNT
IGNvbnRleHQuZ2V0RXJyb3IoKSBpcyBjb250ZXh0Lk5PX0VSUk9SCi1QQVNTIGNvbnRleHQyLmdl
dEVycm9yKCkgaXMgY29udGV4dDIuTk9fRVJST1IKK1BBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVk
IHZhbHVlOiBOT19FUlJPUiA6IAogUEFTUyBjb250ZXh0LmdldEFjdGl2ZVVuaWZvcm0ocHJvZ3Jh
bSwgMCkubmFtZSBpcyAndV9tb2RlbFZpZXdQcm9qTWF0cml4JwogUEFTUyBjb250ZXh0LmdldEFj
dGl2ZVVuaWZvcm0ocHJvZ3JhbSwgMCkudHlwZSBpcyBjb250ZXh0LkZMT0FUX01BVDQKIFBBU1Mg
Y29udGV4dC5nZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0sIDApLnNpemUgaXMgMQogUEFTUyBjb250
ZXh0LmdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbSwgMSkgaXMgbnVsbAotUEFTUyBjb250ZXh0Lmdl
dEVycm9yKCkgaXMgY29udGV4dC5JTlZBTElEX1ZBTFVFCitQQVNTIGdldEVycm9yIHdhcyBleHBl
Y3RlZCB2YWx1ZTogSU5WQUxJRF9WQUxVRSA6IAogUEFTUyBjb250ZXh0LmdldEFjdGl2ZVVuaWZv
cm0ocHJvZ3JhbSwgLTEpIGlzIG51bGwKLVBBU1MgY29udGV4dC5nZXRFcnJvcigpIGlzIGNvbnRl
eHQuSU5WQUxJRF9WQUxVRQorUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IElOVkFM
SURfVkFMVUUgOiAKIFBBU1MgY29udGV4dC5nZXRBY3RpdmVVbmlmb3JtKG51bGwsIDApIGlzIG51
bGwKLVBBU1MgY29udGV4dC5nZXRFcnJvcigpIGlzIGNvbnRleHQuSU5WQUxJRF9WQUxVRQorUEFT
UyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IElOVkFMSURfVkFMVUUgOiAKIFBBU1MgaW5m
b1tpaV0gaXMgbm9uLW51bGwuCiBQQVNTIGluZm9baWldIGlzIG5vbi1udWxsLgogUEFTUyBpbmZv
W2lpXS5uYW1lIGlzIGV4cGVjdGVkW2lpXS5uYW1lCkBAIC0zNCwyMCArMjksMjIgQEAgUEFTUyBp
bmZvMltpaV0ubmFtZSBpcyBleHBlY3RlZDJbaWldLm5hbQogUEFTUyBpbmZvMltpaV0udHlwZSBp
cyBleHBlY3RlZDJbaWldLnR5cGUKIFBBU1MgaW5mbzJbaWldLnNpemUgaXMgZXhwZWN0ZWQyW2lp
XS5zaXplCiBQQVNTIGNvbnRleHQuZ2V0QWN0aXZlQXR0cmliKHByb2dyYW0sIDIpIGlzIG51bGwK
LVBBU1MgY29udGV4dC5nZXRFcnJvcigpIGlzIGNvbnRleHQuSU5WQUxJRF9WQUxVRQorUEFTUyBn
ZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IElOVkFMSURfVkFMVUUgOiAKIFBBU1MgY29udGV4
dC5nZXRBY3RpdmVBdHRyaWIocHJvZ3JhbSwgLTEpIGlzIG51bGwKLVBBU1MgY29udGV4dC5nZXRF
cnJvcigpIGlzIGNvbnRleHQuSU5WQUxJRF9WQUxVRQorUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0
ZWQgdmFsdWU6IElOVkFMSURfVkFMVUUgOiAKIFBBU1MgY29udGV4dC5nZXRBY3RpdmVBdHRyaWIo
bnVsbCwgMCkgaXMgbnVsbAotUEFTUyBjb250ZXh0LmdldEVycm9yKCkgaXMgY29udGV4dC5JTlZB
TElEX1ZBTFVFCi1QQVNTIGNvbnRleHQyLmdldEVycm9yKCkgaXMgY29udGV4dC5OT19FUlJPUgor
UEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IElOVkFMSURfVkFMVUUgOiAKK1BBU1Mg
Z2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IAorQ2hlY2sgdHJ5aW5nIHRv
IGdldCBhdHRyaWJzIGZyb20gZGlmZmVyZW50IGNvbnRleHQKIFBBU1MgY29udGV4dDIuZ2V0QWN0
aXZlQXR0cmliKHByb2dyYW0sIDApIGlzIG51bGwKLVBBU1MgY29udGV4dDIuZ2V0RXJyb3IoKSBp
cyBjb250ZXh0Mi5JTlZBTElEX09QRVJBVElPTgorUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQg
dmFsdWU6IElOVkFMSURfT1BFUkFUSU9OIDogCiBQQVNTIGNvbnRleHQyLmdldEFjdGl2ZVVuaWZv
cm0ocHJvZ3JhbSwgMCkgaXMgbnVsbAotUEFTUyBjb250ZXh0Mi5nZXRFcnJvcigpIGlzIGNvbnRl
eHQyLklOVkFMSURfT1BFUkFUSU9OCitQQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTog
SU5WQUxJRF9PUEVSQVRJT04gOiAKK0NoZWNrIHRyeWluZyB0byBnZXQgYXR0cmlicyBmcm9tIGRl
bGV0ZWQgcHJvZ3JhbQogUEFTUyBjb250ZXh0LmdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbSwgMCkg
aXMgbnVsbAotUEFTUyBjb250ZXh0LmdldEVycm9yKCkgaXMgY29udGV4dC5JTlZBTElEX1ZBTFVF
CitQQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogSU5WQUxJRF9WQUxVRSA6IAogUEFT
UyBjb250ZXh0LmdldEFjdGl2ZUF0dHJpYihwcm9ncmFtLCAwKSBpcyBudWxsCi1QQVNTIGNvbnRl
eHQuZ2V0RXJyb3IoKSBpcyBjb250ZXh0LklOVkFMSURfVkFMVUUKK1BBU1MgZ2V0RXJyb3Igd2Fz
IGV4cGVjdGVkIHZhbHVlOiBJTlZBTElEX1ZBTFVFIDogCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFz
L3dlYmdsL2dldC1hY3RpdmUtdGVzdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvY2FudmFzL3dlYmdsL2dldC1hY3RpdmUtdGVzdC5odG1sCShyZXZpc2lvbiA2MzQzOCkKKysr
IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2dldC1hY3RpdmUtdGVzdC5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsNCBAQAorCiA8aHRtbD4KIDxoZWFkPgogPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4K
QEAgLTEyLDUxICsxMyw0NiBAQAogZGVzY3JpcHRpb24oIlRlc3Qgb2YgZ2V0QWN0aXZlQXR0cmli
IGFuZCBnZXRBY3RpdmVVbmlmb3JtIik7CiAKIHZhciBjb250ZXh0ID0gY3JlYXRlM0RDb250ZXh0
KCk7Ci1zaG91bGRCZU5vbk51bGwoImNvbnRleHQiKTsKIHZhciBjb250ZXh0MiA9IGNyZWF0ZTNE
Q29udGV4dCgpOwotc2hvdWxkQmVOb25OdWxsKCJjb250ZXh0MiIpOwogdmFyIHByb2dyYW0gPSBs
b2FkU3RhbmRhcmRQcm9ncmFtKGNvbnRleHQpOwotc2hvdWxkQmVOb25OdWxsKCJwcm9ncmFtIik7
CiB2YXIgcHJvZ3JhbTIgPSBsb2FkUHJvZ3JhbShjb250ZXh0MiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJyZXNvdXJjZXMvaW50QXJyYXlVbmlmb3JtU2hhZGVyLnZlcnQiLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgInJlc291cmNlcy9ub29wVW5pZm9ybVNoYWRlci5mcmFnIik7
Ci1zaG91bGRCZU5vbk51bGwoInByb2dyYW0yIik7Ci1zaG91bGRCZSgiY29udGV4dC5nZXRFcnJv
cigpIiwgImNvbnRleHQuTk9fRVJST1IiKTsKLXNob3VsZEJlKCJjb250ZXh0Mi5nZXRFcnJvcigp
IiwgImNvbnRleHQyLk5PX0VSUk9SIik7CiAKK2dsRXJyb3JTaG91bGRCZShjb250ZXh0LCBjb250
ZXh0Lk5PX0VSUk9SKTsKIHNob3VsZEJlKCJjb250ZXh0LmdldEFjdGl2ZVVuaWZvcm0ocHJvZ3Jh
bSwgMCkubmFtZSIsICIndV9tb2RlbFZpZXdQcm9qTWF0cml4JyIpOwogc2hvdWxkQmUoImNvbnRl
eHQuZ2V0QWN0aXZlVW5pZm9ybShwcm9ncmFtLCAwKS50eXBlIiwgImNvbnRleHQuRkxPQVRfTUFU
NCIpOwogc2hvdWxkQmUoImNvbnRleHQuZ2V0QWN0aXZlVW5pZm9ybShwcm9ncmFtLCAwKS5zaXpl
IiwgIjEiKTsKIHNob3VsZEJlTnVsbCgiY29udGV4dC5nZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0s
IDEpIik7Ci1zaG91bGRCZSgiY29udGV4dC5nZXRFcnJvcigpIiwgImNvbnRleHQuSU5WQUxJRF9W
QUxVRSIpOworZ2xFcnJvclNob3VsZEJlKGNvbnRleHQsIGNvbnRleHQuSU5WQUxJRF9WQUxVRSk7
CiBzaG91bGRCZU51bGwoImNvbnRleHQuZ2V0QWN0aXZlVW5pZm9ybShwcm9ncmFtLCAtMSkiKTsK
LXNob3VsZEJlKCJjb250ZXh0LmdldEVycm9yKCkiLCAiY29udGV4dC5JTlZBTElEX1ZBTFVFIik7
CitnbEVycm9yU2hvdWxkQmUoY29udGV4dCwgY29udGV4dC5JTlZBTElEX1ZBTFVFKTsKIHNob3Vs
ZEJlTnVsbCgiY29udGV4dC5nZXRBY3RpdmVVbmlmb3JtKG51bGwsIDApIik7Ci1zaG91bGRCZSgi
Y29udGV4dC5nZXRFcnJvcigpIiwgImNvbnRleHQuSU5WQUxJRF9WQUxVRSIpOworZ2xFcnJvclNo
b3VsZEJlKGNvbnRleHQsIGNvbnRleHQuSU5WQUxJRF9WQUxVRSk7CiAKIC8vIHdlIGRvbid0IGtu
b3cgdGhlIG9yZGVyIHRoZSBhdHRyaWJzIHdpbGwgYXBwZWFyLgogdmFyIGluZm8gPSBbCi0gICAg
Y29udGV4dC5nZXRBY3RpdmVBdHRyaWIocHJvZ3JhbSwgMCksCi0gICAgY29udGV4dC5nZXRBY3Rp
dmVBdHRyaWIocHJvZ3JhbSwgMSkKKyAgY29udGV4dC5nZXRBY3RpdmVBdHRyaWIocHJvZ3JhbSwg
MCksCisgIGNvbnRleHQuZ2V0QWN0aXZlQXR0cmliKHByb2dyYW0sIDEpCiBdOwogZm9yICh2YXIg
aWkgPSAwOyBpaSA8IGluZm8ubGVuZ3RoOyArK2lpKQogICAgIHNob3VsZEJlTm9uTnVsbCgiaW5m
b1tpaV0iKTsKIAogdmFyIGV4cGVjdGVkID0gWwotICAgIHsgbmFtZTogJ2Ffbm9ybWFsJywgdHlw
ZTogY29udGV4dC5GTE9BVF9WRUMzLCBzaXplOiAxIH0sCi0gICAgeyBuYW1lOiAnYV92ZXJ0ZXgn
LCB0eXBlOiBjb250ZXh0LkZMT0FUX1ZFQzQsIHNpemU6IDEgfQorICB7IG5hbWU6ICdhX25vcm1h
bCcsIHR5cGU6IGNvbnRleHQuRkxPQVRfVkVDMywgc2l6ZTogMSB9LAorICB7IG5hbWU6ICdhX3Zl
cnRleCcsIHR5cGU6IGNvbnRleHQuRkxPQVRfVkVDNCwgc2l6ZTogMSB9CiBdOwogCiBpZiAoaW5m
b1swXS5uYW1lICE9IGV4cGVjdGVkWzBdLm5hbWUpIHsKLSAgICB0ID0gaW5mb1swXTsKLSAgICBp
bmZvWzBdID0gaW5mb1sxXTsKLSAgICBpbmZvWzFdID0gdDsKKyAgdCA9IGluZm9bMF07CisgIGlu
Zm9bMF0gPSBpbmZvWzFdOworICBpbmZvWzFdID0gdDsKIH0KIAogZm9yICh2YXIgaWkgPSAwOyBp
aSA8IGluZm8ubGVuZ3RoOyArK2lpKSB7Ci0gICAgc2hvdWxkQmUoImluZm9baWldLm5hbWUiLCAi
ZXhwZWN0ZWRbaWldLm5hbWUiKTsKLSAgICBzaG91bGRCZSgiaW5mb1tpaV0udHlwZSIsICJleHBl
Y3RlZFtpaV0udHlwZSIpOwotICAgIHNob3VsZEJlKCJpbmZvW2lpXS5zaXplIiwgImV4cGVjdGVk
W2lpXS5zaXplIik7CisgIHNob3VsZEJlKCJpbmZvW2lpXS5uYW1lIiwgImV4cGVjdGVkW2lpXS5u
YW1lIik7CisgIHNob3VsZEJlKCJpbmZvW2lpXS50eXBlIiwgImV4cGVjdGVkW2lpXS50eXBlIik7
CisgIHNob3VsZEJlKCJpbmZvW2lpXS5zaXplIiwgImV4cGVjdGVkW2lpXS5zaXplIik7CiB9CiAK
IC8vIHdlIGRvbid0IGtub3cgdGhlIG9yZGVyIHRoZSB1bmlmb3JtcyB3aWxsIGFwcGVhci4KQEAg
LTg1LDIzICs4MSwyNiBAQCBmb3IgKHZhciBpaSA9IDA7IGlpIDwgaW5mbzIubGVuZ3RoOyArK2lp
CiB9CiAKIHNob3VsZEJlTnVsbCgiY29udGV4dC5nZXRBY3RpdmVBdHRyaWIocHJvZ3JhbSwgMiki
KTsKLXNob3VsZEJlKCJjb250ZXh0LmdldEVycm9yKCkiLCAiY29udGV4dC5JTlZBTElEX1ZBTFVF
Iik7CitnbEVycm9yU2hvdWxkQmUoY29udGV4dCwgY29udGV4dC5JTlZBTElEX1ZBTFVFKTsKIHNo
b3VsZEJlTnVsbCgiY29udGV4dC5nZXRBY3RpdmVBdHRyaWIocHJvZ3JhbSwgLTEpIik7Ci1zaG91
bGRCZSgiY29udGV4dC5nZXRFcnJvcigpIiwgImNvbnRleHQuSU5WQUxJRF9WQUxVRSIpOworZ2xF
cnJvclNob3VsZEJlKGNvbnRleHQsIGNvbnRleHQuSU5WQUxJRF9WQUxVRSk7CiBzaG91bGRCZU51
bGwoImNvbnRleHQuZ2V0QWN0aXZlQXR0cmliKG51bGwsIDApIik7Ci1zaG91bGRCZSgiY29udGV4
dC5nZXRFcnJvcigpIiwgImNvbnRleHQuSU5WQUxJRF9WQUxVRSIpOworZ2xFcnJvclNob3VsZEJl
KGNvbnRleHQsIGNvbnRleHQuSU5WQUxJRF9WQUxVRSk7CisKK2dsRXJyb3JTaG91bGRCZShjb250
ZXh0MiwgY29udGV4dC5OT19FUlJPUik7CiAKLXNob3VsZEJlKCJjb250ZXh0Mi5nZXRFcnJvcigp
IiwgImNvbnRleHQuTk9fRVJST1IiKTsKK2RlYnVnKCJDaGVjayB0cnlpbmcgdG8gZ2V0IGF0dHJp
YnMgZnJvbSBkaWZmZXJlbnQgY29udGV4dCIpOwogc2hvdWxkQmVOdWxsKCJjb250ZXh0Mi5nZXRB
Y3RpdmVBdHRyaWIocHJvZ3JhbSwgMCkiKTsKLXNob3VsZEJlKCJjb250ZXh0Mi5nZXRFcnJvcigp
IiwgImNvbnRleHQyLklOVkFMSURfT1BFUkFUSU9OIik7CitnbEVycm9yU2hvdWxkQmUoY29udGV4
dDIsIGNvbnRleHQyLklOVkFMSURfT1BFUkFUSU9OKTsKIHNob3VsZEJlTnVsbCgiY29udGV4dDIu
Z2V0QWN0aXZlVW5pZm9ybShwcm9ncmFtLCAwKSIpOwotc2hvdWxkQmUoImNvbnRleHQyLmdldEVy
cm9yKCkiLCAiY29udGV4dDIuSU5WQUxJRF9PUEVSQVRJT04iKTsKK2dsRXJyb3JTaG91bGRCZShj
b250ZXh0MiwgY29udGV4dDIuSU5WQUxJRF9PUEVSQVRJT04pOwogCitkZWJ1ZygiQ2hlY2sgdHJ5
aW5nIHRvIGdldCBhdHRyaWJzIGZyb20gZGVsZXRlZCBwcm9ncmFtIik7CiBjb250ZXh0LmRlbGV0
ZVByb2dyYW0ocHJvZ3JhbSk7CiBzaG91bGRCZU51bGwoImNvbnRleHQuZ2V0QWN0aXZlVW5pZm9y
bShwcm9ncmFtLCAwKSIpOwotc2hvdWxkQmUoImNvbnRleHQuZ2V0RXJyb3IoKSIsICJjb250ZXh0
LklOVkFMSURfVkFMVUUiKTsKK2dsRXJyb3JTaG91bGRCZShjb250ZXh0LCBjb250ZXh0LklOVkFM
SURfVkFMVUUpOwogc2hvdWxkQmVOdWxsKCJjb250ZXh0LmdldEFjdGl2ZUF0dHJpYihwcm9ncmFt
LCAwKSIpOwotc2hvdWxkQmUoImNvbnRleHQuZ2V0RXJyb3IoKSIsICJjb250ZXh0LklOVkFMSURf
VkFMVUUiKTsKK2dsRXJyb3JTaG91bGRCZShjb250ZXh0LCBjb250ZXh0LklOVkFMSURfVkFMVUUp
OwogCiBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9nbC1iaW5kLWF0dHJpYi1sb2NhdGlvbi10ZXN0LWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9nbC1i
aW5kLWF0dHJpYi1sb2NhdGlvbi10ZXN0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNjM0MzgpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9nbC1iaW5kLWF0dHJpYi1sb2NhdGlvbi10
ZXN0LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNCw3ICs0LDYgQEAgT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQQogCiAKIENhbnZhcy5nZXRDb250ZXh0Ci1Q
QVNTIFtvYmplY3QgSFRNTENhbnZhc0VsZW1lbnRdIGlzIG5vbi1udWxsLgogUEFTUyBbb2JqZWN0
IFdlYkdMUmVuZGVyaW5nQ29udGV4dF0gaXMgbm9uLW51bGwuCiAKIENoZWNraW5nIGdsLmJpbmRB
dHRyaWJMb2NhdGlvbi4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2dsLWJp
bmQtYXR0cmliLWxvY2F0aW9uLXRlc3QuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy93ZWJnbC9nbC1iaW5kLWF0dHJpYi1sb2NhdGlvbi10ZXN0Lmh0bWwJKHJldmlz
aW9uIDYzNDM4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZ2wtYmluZC1hdHRy
aWItbG9jYXRpb24tdGVzdC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xOCwxNSArMTgsMTUgQEAg
YXR0cmlidXRlIHZlYzQgdkNvbG9yOwogdmFyeWluZyB2ZWM0IGNvbG9yOwogdm9pZCBtYWluKCkK
IHsKLSAgICBnbF9Qb3NpdGlvbiA9IHZQb3NpdGlvbjsKLSAgICBjb2xvciA9IHZDb2xvcjsKKyAg
Z2xfUG9zaXRpb24gPSB2UG9zaXRpb247CisgIGNvbG9yID0gdkNvbG9yOwogfQogPC9zY3JpcHQ+
CiA8c2NyaXB0IGlkPSJmc2hhZGVyIiB0eXBlPSJ0ZXh0L3NvbWV0aGluZy1ub3QtamF2YXNjcmlw
dCI+CiB2YXJ5aW5nIHZlYzQgY29sb3I7CiB2b2lkIG1haW4oKQogewotICAgIGdsX0ZyYWdDb2xv
ciA9IGNvbG9yOworICBnbF9GcmFnQ29sb3IgPSBjb2xvcjsKIH0KIDwvc2NyaXB0PgogPHNjcmlw
dD4KQEAgLTM1LDIxICszNSwxOSBAQCBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IGVuc3VyZXMgV2Vi
R0wgaW1wCiBkZWJ1ZygiIik7CiBkZWJ1ZygiQ2FudmFzLmdldENvbnRleHQiKTsKIAotdmFyIGNh
bnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKLXNob3VsZEJlTm9uTnVs
bChjYW52YXMpOwotdmFyIGdsID0gY2FudmFzLmdldENvbnRleHQoImV4cGVyaW1lbnRhbC13ZWJn
bCIpOwordmFyIGdsID0gY3JlYXRlM0RDb250ZXh0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJj
YW52YXMiKSk7CiBzaG91bGRCZU5vbk51bGwoZ2wpOwogCiBmdW5jdGlvbiBmYWlsKHgseSwgYnVm
LCBzaG91bGRCZSkKIHsKLSAgICB2YXIgaSA9ICh5KjUwK3gpICogNDsKLSAgICB2YXIgcmVhc29u
ID0gInBpeGVsIGF0ICgiK3grIiwiK3krIikgaXMgKCIrYnVmW2ldKyIsIitidWZbaSsxXSsiLCIr
YnVmW2krMl0rIiwiK2J1ZltpKzNdKyIpLCBzaG91bGQgYmUgIitzaG91bGRCZTsKLSAgICB0ZXN0
RmFpbGVkKHJlYXNvbik7CisgIHZhciBpID0gKHkqNTAreCkgKiA0OworICB2YXIgcmVhc29uID0g
InBpeGVsIGF0ICgiK3grIiwiK3krIikgaXMgKCIrYnVmW2ldKyIsIitidWZbaSsxXSsiLCIrYnVm
W2krMl0rIiwiK2J1ZltpKzNdKyIpLCBzaG91bGQgYmUgIitzaG91bGRCZTsKKyAgdGVzdEZhaWxl
ZChyZWFzb24pOwogfQogCiBmdW5jdGlvbiBwYXNzKCkKIHsKLSAgICB0ZXN0UGFzc2VkKCJkcmF3
aW5nIGlzIGNvcnJlY3QiKTsKKyAgdGVzdFBhc3NlZCgiZHJhd2luZyBpcyBjb3JyZWN0Iik7CiB9
CiAKIGZ1bmN0aW9uIGxvYWRTaGFkZXIoc2hhZGVyVHlwZSwgc2hhZGVySWQpIHsKQEAgLTU5LDgg
KzU3LDggQEAgZnVuY3Rpb24gbG9hZFNoYWRlcihzaGFkZXJUeXBlLCBzaGFkZXJJZAogICAvLyBD
cmVhdGUgdGhlIHNoYWRlciBvYmplY3QKICAgdmFyIHNoYWRlciA9IGdsLmNyZWF0ZVNoYWRlcihz
aGFkZXJUeXBlKTsKICAgaWYgKHNoYWRlciA9PSBudWxsKSB7Ci0gICAgICBkZWJ1ZygiKioqIEVy
cm9yOiB1bmFibGUgdG8gY3JlYXRlIHNoYWRlciAnIitzaGFkZXJJZCsiJyIpOwotICAgICAgcmV0
dXJuIG51bGw7CisgICAgZGVidWcoIioqKiBFcnJvcjogdW5hYmxlIHRvIGNyZWF0ZSBzaGFkZXIg
JyIrc2hhZGVySWQrIiciKTsKKyAgICByZXR1cm4gbnVsbDsKICAgfQogCiAgIC8vIExvYWQgdGhl
IHNoYWRlciBzb3VyY2UKQEAgLTcyLDExICs3MCwxMSBAQCBmdW5jdGlvbiBsb2FkU2hhZGVyKHNo
YWRlclR5cGUsIHNoYWRlcklkCiAgIC8vIENoZWNrIHRoZSBjb21waWxlIHN0YXR1cwogICB2YXIg
Y29tcGlsZWQgPSBnbC5nZXRTaGFkZXJQYXJhbWV0ZXIoc2hhZGVyLCBnbC5DT01QSUxFX1NUQVRV
Uyk7CiAgIGlmICghY29tcGlsZWQpIHsKLSAgICAgIC8vIFNvbWV0aGluZyB3ZW50IHdyb25nIGR1
cmluZyBjb21waWxhdGlvbjsgZ2V0IHRoZSBlcnJvcgotICAgICAgdmFyIGVycm9yID0gZ2wuZ2V0
U2hhZGVySW5mb0xvZyhzaGFkZXIpOwotICAgICAgZGVidWcoIioqKiBFcnJvciBjb21waWxpbmcg
c2hhZGVyICciK3NoYWRlcisiJzoiK2Vycm9yKTsKLSAgICAgIGdsLmRlbGV0ZVNoYWRlcihzaGFk
ZXIpOwotICAgICAgcmV0dXJuIG51bGw7CisgICAgLy8gU29tZXRoaW5nIHdlbnQgd3JvbmcgZHVy
aW5nIGNvbXBpbGF0aW9uOyBnZXQgdGhlIGVycm9yCisgICAgdmFyIGVycm9yID0gZ2wuZ2V0U2hh
ZGVySW5mb0xvZyhzaGFkZXIpOworICAgIGRlYnVnKCIqKiogRXJyb3IgY29tcGlsaW5nIHNoYWRl
ciAnIitzaGFkZXIrIic6IitlcnJvcik7CisgICAgZ2wuZGVsZXRlU2hhZGVyKHNoYWRlcik7Cisg
ICAgcmV0dXJuIG51bGw7CiAgIH0KICAgcmV0dXJuIHNoYWRlcjsKIH0KQEAgLTEwNCw5ICsxMDIs
OSBAQCBnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgbmV3IEZsb2F0CiB2YXIgY29sb3Jz
ID0gZ2wuY3JlYXRlQnVmZmVyKCk7CiBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgY29s
b3JzKTsKIGdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCBuZXcgRmxvYXQzMkFycmF5KFsK
LSAgIDAsMSwwLDEsCi0gICAwLDEsMCwxLAotICAgMCwxLDAsMV0pLCBnbC5TVEFUSUNfRFJBVyk7
CisgICAgMCwxLDAsMSwKKyAgICAwLDEsMCwxLAorICAgIDAsMSwwLDFdKSwgZ2wuU1RBVElDX0RS
QVcpOwogCiBmdW5jdGlvbiBzZXRCaW5kTG9jYXRpb25zKGNvbG9yTG9jYXRpb24sIHBvc2l0aW9u
TG9jYXRpb24pIHsKICAgZ2wuYmluZEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sIHBvc2l0aW9uTG9j
YXRpb24sICJ2UG9zaXRpb24iKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmds
L2dsLWVuYWJsZS1lbnVtLXRlc3QuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy93ZWJnbC9nbC1lbmFibGUtZW51bS10ZXN0Lmh0bWwJKHJldmlzaW9uIDYzNDM4KQor
KysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZ2wtZW5hYmxlLWVudW0tdGVzdC5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC01LDkgKzUsOSBAQAogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVu
dC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgogPHRpdGxlPldlYkdM
IGdsLkVOQUJMRSBlbnVtcyBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+CiA8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy9kZXNrdG9wLWdsLWNvbnN0YW50cy5qcyIgdHlwZT0idGV4
dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJnbC10
ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZGVza3RvcC1nbC1jb25z
dGFudHMuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+CiA8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9nbC1lbnVtLXRl
c3RzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93
ZWJnbC9nbC1lbnVtLXRlc3RzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNjM0MzgpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9nbC1lbnVtLXRlc3RzLWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtNyw2ICs3LDcgQEAgQ2FudmFzLmdldENvbnRleHQKIFBBU1MgY29udGV4
dCBleGlzdHMKIAogQ2hlY2tpbmcgZ2wgZW51bXMuCitQQVNTIGdsLmdldEVycm9yKCkgaXMgZ2wu
Tk9fRVJST1IKIFBBU1MgZ2wuYmluZFRleHR1cmUoZGVza3RvcEdMWydURVhUVVJFXzNEJ10sIHRl
eCkgc2hvdWxkIHJldHVybiBJTlZBTElEX0VOVU0uCiBQQVNTIGdsLmJsZW5kRXF1YXRpb24oZGVz
a3RvcEdMWydNSU4nXSkgc2hvdWxkIHJldHVybiBJTlZBTElEX0VOVU0uCiBQQVNTIGdsLmJsZW5k
RXF1YXRpb24oZGVza3RvcEdMWydNQVgnXSkgc2hvdWxkIHJldHVybiBJTlZBTElEX0VOVU0uCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9nbC1lbnVtLXRlc3RzLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZ2wtZW51bS10ZXN0cy5o
dG1sCShyZXZpc2lvbiA2MzQzOCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2ds
LWVudW0tdGVzdHMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNSw5ICs1LDkgQEAKIDxtZXRhIGh0
dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04
Ij4KIDx0aXRsZT5XZWJHTCBnbCBlbnVtcyBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+CiA8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyIvPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9kZXNrdG9wLWdsLWNvbnN0YW50cy5qcyIg
dHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJlc291cmNl
cy93ZWJnbC10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZGVza3Rv
cC1nbC1jb25zdGFudHMuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+CiA8ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+PC9kaXY+CkBAIC0zMSw2ICszMSw4IEBAIGlmICghZ2wpIHsKICAgdmFyIGJ1
ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcigxKTsKICAgdmFyIGJ1ZiA9IG5ldyBVaW50MTZBcnJheShi
dWZmZXIpOwogICB2YXIgdGV4ID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworICBnbC5iaW5kQnVmZmVy
KGdsLkFSUkFZX0JVRkZFUiwgZ2wuY3JlYXRlQnVmZmVyKCkpOworICBzaG91bGRCZSgiZ2wuZ2V0
RXJyb3IoKSIsICJnbC5OT19FUlJPUiIpOwogICB2YXIgdGVzdHMgPSBbCiAgICAgImdsLmJpbmRU
ZXh0dXJlKGRlc2t0b3BHTFsnVEVYVFVSRV8zRCddLCB0ZXgpIiwKICAgICAiZ2wuYmxlbmRFcXVh
dGlvbihkZXNrdG9wR0xbJ01JTiddKSIsCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93
ZWJnbC9nbC1nZXQtY2FsbHMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL3dlYmdsL2dsLWdldC1jYWxscy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDYz
NDM4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZ2wtZ2V0LWNhbGxzLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNzAsNiArNzAsOCBAQCBQQVNTIGNvbnRleHQuZ2V0
UGFyYW1ldGVyKGNvbnRleHQuVklFV1BPCiBQQVNTIGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRl
eHQuTUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SUykgPj0gMTYgaXMgdHJ1ZQogUEFTUyBjb250
ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0Lk1BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTKSA+PSAx
MjggaXMgdHJ1ZQogUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0Lk1BWF9WQVJZSU5H
X1ZFQ1RPUlMpID49IDggaXMgdHJ1ZQorRkFJTCBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0
Lk5VTV9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUykgc2hvdWxkIGJlIDAuIFdhcyA0LgorRkFJ
TCBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNIQURFUl9DT01QSUxFUikgc2hvdWxkIGJl
IHRydWUgKG9mIHR5cGUgYm9vbGVhbikuIFdhcyBudWxsIChvZiB0eXBlIG9iamVjdCkuCiAKIFBB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9j
YW52YXMvd2ViZ2wvZ2wtZ2V0LWNhbGxzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvd2ViZ2wvZ2wtZ2V0LWNhbGxzLmh0bWwJKHJldmlzaW9uIDYzNDM4KQorKysg
TGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZ2wtZ2V0LWNhbGxzLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw4IEBACisKIDxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hodG1sIj4KIDxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250
ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPHRpdGxlPldlYkdMIGdsIGNhbGxzIENv
bmZvcm1hbmNlIFRlc3RzPC90aXRsZT4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+CiA8c2NyaXB0IHNyYz0iLi4vLi4v
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvd2ViZ2wtdGVzdC5qcyI+PC9zY3JpcHQ+CkBAIC0xNiw3ICsxOSw3IEBAIGRlc2NyaXB0
aW9uKCJUaGlzIHRlc3QgZW5zdXJlcyBiYXNpYyBmdW4KIGRlYnVnKCIiKTsKIGRlYnVnKCJDYW52
YXMuZ2V0Q29udGV4dCIpOwogCi12YXIgY29udGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJjYW52YXMiKS5nZXRDb250ZXh0KCJleHBlcmltZW50YWwtd2ViZ2wiKTsKK3ZhciBjb250ZXh0
ID0gY3JlYXRlM0RDb250ZXh0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKSk7CiBp
ZiAoIWNvbnRleHQpCiAgICAgdGVzdEZhaWxlZCgiY29udGV4dCBkb2VzIG5vdCBleGlzdCIpOwog
ZWxzZSB7CkBAIC03OCwxMCArODEsMTIgQEAgZWxzZSB7CiAgICAgc2hvdWxkQmUoJ2NvbnRleHQu
Z2V0UGFyYW1ldGVyKGNvbnRleHQuU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfRkFJTCknLCAnY29u
dGV4dC5LRUVQJyk7CiAgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQu
U1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfUEFTUyknLCAnY29udGV4dC5LRUVQJyk7CiAgICAgc2hv
dWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU1RFTkNJTF9CQUNLX1JFRiknLCAn
MCcpOwotICAgIAorCiAgICAgLy8gRklYTUU6IEN1cnJlbnQgV2ViS2l0IGltcGxlbWVudGF0aW9u
IHJldHVybnMgdGhlIHdyb25nIHZhbHVlIChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MzE4NDIpCi0gICAgLy9zaG91bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29u
dGV4dC5TVEVOQ0lMX0JBQ0tfVkFMVUVfTUFTSyknLCAnMHhGRkZGRkZGRicpOwotICAgIC8vc2hv
dWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU1RFTkNJTF9CQUNLX1dSSVRFTUFT
SyknLCAnMHhGRkZGRkZGRicpOworICAgIC8vIFJlLWVuYWJsZSB0aGVzZSB0ZXN0cyBhcyBzb29u
IGFzIHRoYXQgYnVnIGhhcyBiZWVuIGZpeGVkLgorICAgIC8vIHNob3VsZEJlKCdjb250ZXh0Lmdl
dFBhcmFtZXRlcihjb250ZXh0LlNURU5DSUxfQkFDS19WQUxVRV9NQVNLKScsICcweEZGRkZGRkZG
Jyk7CisgICAgLy8gc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU1RFTkNJ
TF9CQUNLX1dSSVRFTUFTSyknLCAnMHhGRkZGRkZGRicpOworCiAgICAgLy8gSWYgRVhUX3BhY2tl
ZF9kZXB0aF9zdGVuY2lsIGlzIHN1cHBvcnRlZCwgU1RFTkNJTF9CSVRTID4gMDsgb3RoZXJ3aXNl
LCBTVEVOQ0lMX0JJVFMgPT0gMC4KICAgICBzaG91bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIo
Y29udGV4dC5TVEVOQ0lMX0JJVFMpID49IDAnLCAndHJ1ZScpOwogICAgIHNob3VsZEJlKCdjb250
ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNURU5DSUxfQ0xFQVJfVkFMVUUpJywgJzAnKTsKQEAg
LTkxLDggKzk2LDEyIEBAIGVsc2UgewogICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRl
cihjb250ZXh0LlNURU5DSUxfUEFTU19ERVBUSF9QQVNTKScsICdjb250ZXh0LktFRVAnKTsKICAg
ICBzaG91bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5TVEVOQ0lMX1JFRiknLCAn
MCcpOwogICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNURU5DSUxf
VEVTVCknLCAnZmFsc2UnKTsKLSAgICAvL3Nob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihj
b250ZXh0LlNURU5DSUxfVkFMVUVfTUFTSyknLCAnMHhGRkZGRkZGRicpOwotICAgIC8vc2hvdWxk
QmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU1RFTkNJTF9XUklURU1BU0spJywgJzB4
RkZGRkZGRkYnKTsKKworICAgIC8vIEZJWE1FOiBDdXJyZW50IFdlYktpdCBpbXBsZW1lbnRhdGlv
biByZXR1cm5zIHRoZSB3cm9uZyB2YWx1ZSAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTMxODQyKQorICAgIC8vIFJlLWVuYWJsZSB0aGVzZSB0ZXN0cyBhcyBzb29uIGFz
IHRoYXQgYnVnIGhhcyBiZWVuIGZpeGVkLgorICAgIC8vIHNob3VsZEJlKCdjb250ZXh0LmdldFBh
cmFtZXRlcihjb250ZXh0LlNURU5DSUxfVkFMVUVfTUFTSyknLCAnMHhGRkZGRkZGRicpOworICAg
IC8vIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNURU5DSUxfV1JJVEVN
QVNLKScsICcweEZGRkZGRkZGJyk7CisKICAgICBzaG91bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0
ZXIoY29udGV4dC5URVhUVVJFX0JJTkRJTkdfMkQpJywgJ251bGwnKTsKICAgICBzaG91bGRCZSgn
Y29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5URVhUVVJFX0JJTkRJTkdfQ1VCRV9NQVApJywg
J251bGwnKTsKICAgICBzaG91bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5VTlBB
Q0tfQUxJR05NRU5UKScsICc0Jyk7CkBAIC0xMDIsNiArMTExLDggQEAgZWxzZSB7CiAgICAgc2hv
dWxkQmVUcnVlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0Lk1BWF9GUkFHTUVOVF9VTklG
T1JNX1ZFQ1RPUlMpID49IDE2Jyk7CiAgICAgc2hvdWxkQmVUcnVlKCdjb250ZXh0LmdldFBhcmFt
ZXRlcihjb250ZXh0Lk1BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTKSA+PSAxMjgnKTsKICAgICBz
aG91bGRCZVRydWUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuTUFYX1ZBUllJTkdfVkVD
VE9SUykgPj0gOCcpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0
Lk5VTV9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUyknLCAnMCcpOworICAgIHNob3VsZEJlKCdj
b250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNIQURFUl9DT01QSUxFUiknLCAndHJ1ZScpOwog
fQogCiBkZWJ1ZygiIik7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9nbC1v
YmplY3QtZ2V0LWNhbGxzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy93ZWJnbC9nbC1vYmplY3QtZ2V0LWNhbGxzLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gNjM0MzgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9nbC1vYmplY3QtZ2V0
LWNhbGxzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMiwxMSArMiw2IEBAIFRlc3Qg
b2YgZ2V0IGNhbGxzIGFnYWluc3QgR0wgb2JqZWN0cyBsaWsKIAogT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgogCi1QQVNTIGdsLmdldFByb2dyYW1JbmZvTG9nKHN0YW5kYXJkUHJvZ3JhbSkgaXMg
IiIKLVBBU1MgZ2wuZ2V0U2hhZGVySW5mb0xvZyhlcnJvclZlcnQpIGlzIHBhcnNlRXJyb3IKLVBB
U1MgZ2wuZ2V0U2hhZGVySW5mb0xvZyhlcnJvckZyYWcpIGlzIHBhcnNlRXJyb3IKLVBBU1MgZ2wu
Z2V0U2hhZGVyU291cmNlKGVycm9yVmVydCkgaXMgZXJyb3JWZXJ0U3RyaW5nCi1QQVNTIGdsLmdl
dFNoYWRlclNvdXJjZShlcnJvckZyYWcpIGlzIGVycm9yRnJhZ1N0cmluZwogUEFTUyBzaGFkZXJz
Lmxlbmd0aCBpcyAyCiBQQVNTIHNoYWRlcnNbMF0gPT0gc3RhbmRhcmRWZXJ0ICYmIHNoYWRlcnNb
MV0gPT0gc3RhbmRhcmRGcmFnIHx8IHNoYWRlcnNbMV0gPT0gc3RhbmRhcmRWZXJ0ICYmIHNoYWRl
cnNbMF0gPT0gc3RhbmRhcmRGcmFnIGlzIHRydWUKIFBBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5O
T19FUlJPUgpAQCAtMTYsOSArMTEsMTAgQEAgUEFTUyBnbC5nZXRBdHRhY2hlZFNoYWRlcnMoc3Rh
bmRhcmRWZXJ0KQogUEFTUyBnbC5nZXRFcnJvcigpIGlzIGdsLklOVkFMSURfVkFMVUUKIFBBU1Mg
Z2wuZ2V0QnVmZmVyUGFyYW1ldGVyKGdsLkFSUkFZX0JVRkZFUiwgZ2wuQlVGRkVSX1NJWkUpIGlz
IDE2CiBQQVNTIGdsLmdldEJ1ZmZlclBhcmFtZXRlcihnbC5BUlJBWV9CVUZGRVIsIGdsLkJVRkZF
Ul9VU0FHRSkgaXMgZ2wuRFlOQU1JQ19EUkFXCi1QQVNTIGdsLmdldEVycm9yKCkgaXMgMAotUEFT
UyBnbC5nZXRFcnJvcigpIGlzIDAKLVBBU1MgZ2wuZ2V0RXJyb3IoKSBpcyAwCitQQVNTIGdldEVy
cm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiAKK1BBU1MgZ2V0RXJyb3Igd2FzIGV4
cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IAorUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFs
dWU6IE5PX0VSUk9SIDogCitQQVNTIGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVC
VUZGRVIpIGlzIGdsLkZSQU1FQlVGRkVSX0NPTVBMRVRFCiBQQVNTIGdsLmdldEZyYW1lYnVmZmVy
QXR0YWNobWVudFBhcmFtZXRlcihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAs
IGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX1RZUEUpIGlzIGdsLlRFWFRVUkUKIFBB
U1MgZ2wuZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKGdsLkZSQU1FQlVGRkVSLCBn
bC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFN
RSkgaXMgdGV4dHVyZQogUEFTUyBnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIo
Z2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5GUkFNRUJVRkZFUl9BVFRB
Q0hNRU5UX1RFWFRVUkVfTEVWRUwpIGlzIDAKQEAgLTM4LDggKzM0LDggQEAgUEFTUyBnbC5nZXRS
ZW5kZXJidWZmZXJQYXJhbWV0ZXIoZ2wuUkVORAogUEFTUyBnbC5nZXRSZW5kZXJidWZmZXJQYXJh
bWV0ZXIoZ2wuUkVOREVSQlVGRkVSLCBnbC5SRU5ERVJCVUZGRVJfSEVJR0hUKSBpcyAyCiBQQVNT
IGdsLmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcihnbC5SRU5ERVJCVUZGRVIsIGdsLlJFTkRFUkJV
RkZFUl9JTlRFUk5BTF9GT1JNQVQpIGlzIG5vbi16ZXJvLgogUEFTUyBnbC5nZXRSZW5kZXJidWZm
ZXJQYXJhbWV0ZXIoZ2wuUkVOREVSQlVGRkVSLCBnbC5SRU5ERVJCVUZGRVJfREVQVEhfU0laRSkg
aXMgbm9uLXplcm8uCi1QQVNTIGdsLmdldEVycm9yKCkgaXMgMAotUEFTUyBnbC5nZXRFcnJvcigp
IGlzIDAKK1BBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IAorUEFT
UyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogCiBQQVNTIGdsLmdldFJl
bmRlcmJ1ZmZlclBhcmFtZXRlcihnbC5SRU5ERVJCVUZGRVIsIGdsLlJFTkRFUkJVRkZFUl9SRURf
U0laRSkgaXMgbm9uLXplcm8uCiBQQVNTIGdsLmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcihnbC5S
RU5ERVJCVUZGRVIsIGdsLlJFTkRFUkJVRkZFUl9HUkVFTl9TSVpFKSBpcyBub24temVyby4KIFBB
U1MgZ2wuZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKGdsLlJFTkRFUkJVRkZFUiwgZ2wuUkVOREVS
QlVGRkVSX0JMVUVfU0laRSkgaXMgbm9uLXplcm8uCkBAIC01NCwyNSArNTAsMjUgQEAgUEFTUyBn
bC5nZXRUZXhQYXJhbWV0ZXIoZ2wuVEVYVFVSRV8yRCwgZwogUEFTUyBnbC5nZXRUZXhQYXJhbWV0
ZXIoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1MpIGlzIGdsLkNMQU1QX1RPX0VER0UK
IFBBU1MgZ2wuZ2V0VGV4UGFyYW1ldGVyKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9U
KSBpcyBnbC5DTEFNUF9UT19FREdFCiBQQVNTIGdsLmdldFByb2dyYW1QYXJhbWV0ZXIoYm9vbFBy
b2dyYW0sIGdsLkxJTktfU1RBVFVTKSBpcyB0cnVlCi1QQVNTIGdsLmdldEVycm9yKCkgaXMgMAor
UEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogCiBQQVNTIGdsLmdl
dFVuaWZvcm0oYm9vbFByb2dyYW0sIGJ2YWxMb2MpIGlzIHRydWUKIFBBU1MgZ2wuZ2V0VW5pZm9y
bShib29sUHJvZ3JhbSwgYnZhbDJMb2MpIGlzIFsxLCAwXQogUEFTUyBnbC5nZXRVbmlmb3JtKGJv
b2xQcm9ncmFtLCBidmFsM0xvYykgaXMgWzEsIDAsIDFdCiBQQVNTIGdsLmdldFVuaWZvcm0oYm9v
bFByb2dyYW0sIGJ2YWw0TG9jKSBpcyBbMSwgMCwgMSwgMF0KIFBBU1MgZ2wuZ2V0UHJvZ3JhbVBh
cmFtZXRlcihpbnRQcm9ncmFtLCBnbC5MSU5LX1NUQVRVUykgaXMgdHJ1ZQotUEFTUyBnbC5nZXRF
cnJvcigpIGlzIDAKK1BBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6
IAogUEFTUyBnbC5nZXRVbmlmb3JtKGludFByb2dyYW0sIGl2YWxMb2MpIGlzIDEKIFBBU1MgZ2wu
Z2V0VW5pZm9ybShpbnRQcm9ncmFtLCBpdmFsMkxvYykgaXMgWzIsIDNdCiBQQVNTIGdsLmdldFVu
aWZvcm0oaW50UHJvZ3JhbSwgaXZhbDNMb2MpIGlzIFs0LCA1LCA2XQogUEFTUyBnbC5nZXRVbmlm
b3JtKGludFByb2dyYW0sIGl2YWw0TG9jKSBpcyBbNywgOCwgOSwgMTBdCiBQQVNTIGdsLmdldFBy
b2dyYW1QYXJhbWV0ZXIoZmxvYXRQcm9ncmFtLCBnbC5MSU5LX1NUQVRVUykgaXMgdHJ1ZQotUEFT
UyBnbC5nZXRFcnJvcigpIGlzIDAKK1BBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBO
T19FUlJPUiA6IAogUEFTUyBnbC5nZXRVbmlmb3JtKGZsb2F0UHJvZ3JhbSwgZnZhbExvYykgaXMg
MTEKIFBBU1MgZ2wuZ2V0VW5pZm9ybShmbG9hdFByb2dyYW0sIGZ2YWwyTG9jKSBpcyBbMTIsIDEz
XQogUEFTUyBnbC5nZXRVbmlmb3JtKGZsb2F0UHJvZ3JhbSwgZnZhbDNMb2MpIGlzIFsxNCwgMTUs
IDE2XQogUEFTUyBnbC5nZXRVbmlmb3JtKGZsb2F0UHJvZ3JhbSwgZnZhbDRMb2MpIGlzIFsxNywg
MTgsIDE5LCAyMF0KIFBBU1MgZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihtYXRQcm9ncmFtLCBnbC5M
SU5LX1NUQVRVUykgaXMgdHJ1ZQotUEFTUyBnbC5nZXRFcnJvcigpIGlzIDAKK1BBU1MgZ2V0RXJy
b3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IAogUEFTUyBnbC5nZXRVbmlmb3JtKG1h
dFByb2dyYW0sIG12YWwyTG9jKSBpcyBbMSwgMiwgMywgNF0KIFBBU1MgZ2wuZ2V0VW5pZm9ybSht
YXRQcm9ncmFtLCBtdmFsM0xvYykgaXMgWzUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzXQog
UEFTUyBnbC5nZXRVbmlmb3JtKG1hdFByb2dyYW0sIG12YWw0TG9jKSBpcyBbMTQsIDE1LCAxNiwg
MTcsIDE4LCAxOSwgMjAsIDIxLCAyMiwgMjMsIDI0LCAyNSwgMjYsIDI3LCAyOCwgMjldCkBAIC04
NCwxMSArODAsMTEgQEAgUEFTUyBnbC5nZXRWZXJ0ZXhBdHRyaWIoMSwgZ2wuVkVSVEVYX0FUVAog
UEFTUyBnbC5nZXRWZXJ0ZXhBdHRyaWIoMSwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9OT1JNQUxJ
WkVEKSBpcyBmYWxzZQogUEFTUyBnbC5nZXRWZXJ0ZXhBdHRyaWIoMSwgZ2wuVkVSVEVYX0FUVFJJ
Ql9BUlJBWV9FTkFCTEVEKSBpcyBmYWxzZQogUEFTUyBnbC5nZXRWZXJ0ZXhBdHRyaWIoMSwgZ2wu
Q1VSUkVOVF9WRVJURVhfQVRUUklCKSBpcyBbNSwgNiwgNywgOF0KLVBBU1MgZ2wuZ2V0RXJyb3Io
KSBpcyAwCitQQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiAKIFBB
U1MgZ2wuZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKGdsLkZSQU1FQlVGRkVSLCBn
bC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFN
RSkgaXMgbnVsbAogUEFTUyBnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wu
RlJBTUVCVUZGRVIsIGdsLkRFUFRIX0FUVEFDSE1FTlQsIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1F
TlRfT0JKRUNUX05BTUUpIGlzIG51bGwKIFBBU1MgZ2wuZ2V0VmVydGV4QXR0cmliKDEsIGdsLlZF
UlRFWF9BVFRSSUJfQVJSQVlfQlVGRkVSX0JJTkRJTkcpIGlzIG51bGwKLVBBU1MgZ2wuZ2V0RXJy
b3IoKSBpcyAwCitQQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiAK
IFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZ2wtb2JqZWN0LWdldC1jYWxscy5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2dsLW9iamVjdC1nZXQt
Y2FsbHMuaHRtbAkocmV2aXNpb24gNjM0MzgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93
ZWJnbC9nbC1vYmplY3QtZ2V0LWNhbGxzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEzLDMwICsx
MywxMiBAQCBkZXNjcmlwdGlvbigiVGVzdCBvZiBnZXQgY2FsbHMgYWdhaW5zdCBHCiAKIHZhciBn
bCA9IGNyZWF0ZTNEQ29udGV4dCgpOwogCi12YXIgZXJyb3JWZXJ0ID0gZ2wuY3JlYXRlU2hhZGVy
KGdsLlZFUlRFWF9TSEFERVIpOwotZ2wuc2hhZGVyU291cmNlKGVycm9yVmVydCwgIkkgYW0gYSBi
YWQgdmVydGV4IHNoYWRlciIpOwotZ2wuY29tcGlsZVNoYWRlcihlcnJvclZlcnQpOwotCi12YXIg
ZXJyb3JGcmFnID0gZ2wuY3JlYXRlU2hhZGVyKGdsLkZSQUdNRU5UX1NIQURFUik7Ci1nbC5zaGFk
ZXJTb3VyY2UoZXJyb3JGcmFnLCAiSSBhbSBhIGJhZCBmcmFnbWVudCBzaGFkZXIiKTsKLWdsLmNv
bXBpbGVTaGFkZXIoZXJyb3JGcmFnKTsKLQogdmFyIHN0YW5kYXJkVmVydCA9IGxvYWRTdGFuZGFy
ZFZlcnRleFNoYWRlcihnbCk7CiB2YXIgc3RhbmRhcmRGcmFnID0gbG9hZFN0YW5kYXJkRnJhZ21l
bnRTaGFkZXIoZ2wpOwogdmFyIHN0YW5kYXJkUHJvZ3JhbSA9IGdsLmNyZWF0ZVByb2dyYW0oKTsK
IGdsLmF0dGFjaFNoYWRlcihzdGFuZGFyZFByb2dyYW0sIHN0YW5kYXJkVmVydCk7CiBnbC5hdHRh
Y2hTaGFkZXIoc3RhbmRhcmRQcm9ncmFtLCBzdGFuZGFyZEZyYWcpOwogZ2wubGlua1Byb2dyYW0o
c3RhbmRhcmRQcm9ncmFtKTsKLQotLy8gVGVzdCBwcm9ncmFtIGFuZCBzaGFkZXIgZ2V0cwotdmFy
IHBhcnNlRXJyb3IgPSAiRVJST1I6IDA6MTogJ0knIDogc3ludGF4IGVycm9yIHN5bnRheCBlcnJv
clxuRVJST1I6IFBhcnNlciBmb3VuZCBubyBjb2RlIHRvIGNvbXBpbGUgaW4gc291cmNlIHN0cmlu
Z3MuXG4iOwotdmFyIGVycm9yVmVydFN0cmluZyA9ICJJIGFtIGEgYmFkIHZlcnRleCBzaGFkZXJc
biI7Ci12YXIgZXJyb3JGcmFnU3RyaW5nID0gIkkgYW0gYSBiYWQgZnJhZ21lbnQgc2hhZGVyXG4i
Owotc2hvdWxkQmUoJ2dsLmdldFByb2dyYW1JbmZvTG9nKHN0YW5kYXJkUHJvZ3JhbSknLCAnIiIn
KTsKLXNob3VsZEJlKCdnbC5nZXRTaGFkZXJJbmZvTG9nKGVycm9yVmVydCknLCAncGFyc2VFcnJv
cicpOwotc2hvdWxkQmUoJ2dsLmdldFNoYWRlckluZm9Mb2coZXJyb3JGcmFnKScsICdwYXJzZUVy
cm9yJyk7Ci1zaG91bGRCZSgnZ2wuZ2V0U2hhZGVyU291cmNlKGVycm9yVmVydCknLCAnZXJyb3JW
ZXJ0U3RyaW5nJyk7Ci1zaG91bGRCZSgnZ2wuZ2V0U2hhZGVyU291cmNlKGVycm9yRnJhZyknLCAn
ZXJyb3JGcmFnU3RyaW5nJyk7CiB2YXIgc2hhZGVycyA9IGdsLmdldEF0dGFjaGVkU2hhZGVycyhz
dGFuZGFyZFByb2dyYW0pOwogc2hvdWxkQmUoJ3NoYWRlcnMubGVuZ3RoJywgJzInKTsKIHNob3Vs
ZEJlVHJ1ZSgnc2hhZGVyc1swXSA9PSBzdGFuZGFyZFZlcnQgJiYgc2hhZGVyc1sxXSA9PSBzdGFu
ZGFyZEZyYWcgfHwgc2hhZGVyc1sxXSA9PSBzdGFuZGFyZFZlcnQgJiYgc2hhZGVyc1swXSA9PSBz
dGFuZGFyZEZyYWcnKTsKQEAgLTU3LDEwICszOSwxMSBAQCBzaG91bGRCZSgnZ2wuZ2V0QnVmZmVy
UGFyYW1ldGVyKGdsLkFSUkFZCiB2YXIgdGV4dHVyZSA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKIGds
LmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleHR1cmUpOwogZ2wudGV4SW1hZ2UyRChnbC5U
RVhUVVJFXzJELCAwLCBnbC5SR0JBLCAyLCAyLCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRF
LAotICAgICAgICAgICAgICBuZXcgV2ViR0xVbnNpZ25lZEJ5dGVBcnJheShbMCwgMCwgMCwgMjU1
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjU1LCAyNTUsIDI1
NSwgMjU1LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjU1LCAy
NTUsIDI1NSwgMjU1LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MCwgMCwgMCwgMjU1XSkpOworICAgICAgICAgICAgICBuZXcgVWludDhBcnJheShbCisgICAgICAg
ICAgICAgICAgICAwLCAwLCAwLCAyNTUsCisgICAgICAgICAgICAgICAgICAyNTUsIDI1NSwgMjU1
LCAyNTUsCisgICAgICAgICAgICAgICAgICAyNTUsIDI1NSwgMjU1LCAyNTUsCisgICAgICAgICAg
ICAgICAgICAwLCAwLCAwLCAyNTVdKSk7CiBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQs
IGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTElORUFSKTsKIGdsLnRleFBhcmFtZXRlcmkoZ2wu
VEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCBnbC5MSU5FQVIpOwogZ2wuYmluZFRl
eHR1cmUoZ2wuVEVYVFVSRV8yRCwgbnVsbCk7CkBAIC02OCwxOCArNTEsMTggQEAgdmFyIGZyYW1l
YnVmZmVyID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKQogZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZS
QU1FQlVGRkVSLCBmcmFtZWJ1ZmZlcik7CiBnbC5mcmFtZWJ1ZmZlclRleHR1cmUyRChnbC5GUkFN
RUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLlRFWFRVUkVfMkQsIHRleHR1cmUsIDAp
OwogdmFyIHJlbmRlcmJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpOwotc2hvdWxkQmUo
J2dsLmdldEVycm9yKCknLCAnMCcpOworZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUik7
CiBnbC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgcmVuZGVyYnVmZmVyKTsKLXNo
b3VsZEJlKCdnbC5nZXRFcnJvcigpJywgJzAnKTsKK2dsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9f
RVJST1IpOwogZ2wucmVuZGVyYnVmZmVyU3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIGdsLkRFUFRI
X0NPTVBPTkVOVDE2LCAyLCAyKTsKLXNob3VsZEJlKCdnbC5nZXRFcnJvcigpJywgJzAnKTsKK2ds
RXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IpOwogZ2wuZnJhbWVidWZmZXJSZW5kZXJidWZm
ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkRFUFRIX0FUVEFDSE1FTlQsIGdsLlJFTkRFUkJVRkZFUiwg
cmVuZGVyYnVmZmVyKTsKIC8vIEZJWE1FOiBvbiBzb21lIG1hY2hpbmVzIChpbiBwYXJ0aWN1bGFy
IHRoZSBXZWJLaXQgY29tbWl0IGJvdHMpIHRoZQogLy8gZnJhbWVidWZmZXIgc3RhdHVzIGlzIEZS
QU1FQlVGRkVSX1VOU1VQUE9SVEVEOyBtb3JlIGludmVzdGlnYXRpb24KIC8vIGlzIG5lZWRlZCB3
aHkgdGhpcyBpcyB0aGUgY2FzZSwgYmVjYXVzZSB0aGUgRkJPIGFsbG9jYXRlZAogLy8gaW50ZXJu
YWxseSBieSB0aGUgV2ViS2l0IGltcGxlbWVudGF0aW9uIGhhcyBhbG1vc3QgaWRlbnRpY2FsCiAv
LyBwYXJhbWV0ZXJzIHRvIHRoaXMgb25lLiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTMxODQzLgotLy9zaG91bGRCZSgnZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1
cyhnbC5GUkFNRUJVRkZFUiknLCAnZ2wuRlJBTUVCVUZGRVJfQ09NUExFVEUnKTsKK3Nob3VsZEJl
KCdnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKScsICdnbC5GUkFNRUJV
RkZFUl9DT01QTEVURScpOwogc2hvdWxkQmUoJ2dsLmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBh
cmFtZXRlcihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLkZSQU1FQlVG
RkVSX0FUVEFDSE1FTlRfT0JKRUNUX1RZUEUpJywgJ2dsLlRFWFRVUkUnKTsKIHNob3VsZEJlKCdn
bC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkNP
TE9SX0FUVEFDSE1FTlQwLCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FKScs
ICd0ZXh0dXJlJyk7CiBzaG91bGRCZSgnZ2wuZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1l
dGVyKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuRlJBTUVCVUZGRVJf
QVRUQUNITUVOVF9URVhUVVJFX0xFVkVMKScsICcwJyk7CkBAIC0xMDcsOSArOTAsOSBAQCBzaG91
bGRCZSgnZ2wuZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKGdsCiBzaG91bGRCZU5vblplcm8oJ2ds
LmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcihnbC5SRU5ERVJCVUZGRVIsIGdsLlJFTkRFUkJVRkZF
Ul9JTlRFUk5BTF9GT1JNQVQpJyk7CiBzaG91bGRCZU5vblplcm8oJ2dsLmdldFJlbmRlcmJ1ZmZl
clBhcmFtZXRlcihnbC5SRU5ERVJCVUZGRVIsIGdsLlJFTkRFUkJVRkZFUl9ERVBUSF9TSVpFKScp
OwogdmFyIGNvbG9yYnVmZmVyID0gZ2wuY3JlYXRlUmVuZGVyYnVmZmVyKCk7Ci1zaG91bGRCZSgn
Z2wuZ2V0RXJyb3IoKScsICcwJyk7CitnbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SKTsK
IGdsLmJpbmRSZW5kZXJidWZmZXIoZ2wuUkVOREVSQlVGRkVSLCByZW5kZXJidWZmZXIpOwotc2hv
dWxkQmUoJ2dsLmdldEVycm9yKCknLCAnMCcpOworZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19F
UlJPUik7CiBnbC5yZW5kZXJidWZmZXJTdG9yYWdlKGdsLlJFTkRFUkJVRkZFUiwgZ2wuUkdCQTQs
IDIsIDIpOwogc2hvdWxkQmVOb25aZXJvKCdnbC5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIoZ2wu
UkVOREVSQlVGRkVSLCBnbC5SRU5ERVJCVUZGRVJfUkVEX1NJWkUpJyk7CiBzaG91bGRCZU5vblpl
cm8oJ2dsLmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcihnbC5SRU5ERVJCVUZGRVIsIGdsLlJFTkRF
UkJVRkZFUl9HUkVFTl9TSVpFKScpOwpAQCAtMTQ4LDcgKzEzMSw3IEBAIGdsLnVuaWZvcm0xaShi
dmFsTG9jLCAxKTsKIGdsLnVuaWZvcm0yaShidmFsMkxvYywgMSwgMCk7CiBnbC51bmlmb3JtM2ko
YnZhbDNMb2MsIDEsIDAsIDEpOwogZ2wudW5pZm9ybTRpKGJ2YWw0TG9jLCAxLCAwLCAxLCAwKTsK
LXNob3VsZEJlKCdnbC5nZXRFcnJvcigpJywgJzAnKTsKK2dsRXJyb3JTaG91bGRCZShnbCwgZ2wu
Tk9fRVJST1IpOwogc2hvdWxkQmUoJ2dsLmdldFVuaWZvcm0oYm9vbFByb2dyYW0sIGJ2YWxMb2Mp
JywgJ3RydWUnKTsKIHNob3VsZEJlKCdnbC5nZXRVbmlmb3JtKGJvb2xQcm9ncmFtLCBidmFsMkxv
YyknLCAnWzEsIDBdJyk7CiBzaG91bGRCZSgnZ2wuZ2V0VW5pZm9ybShib29sUHJvZ3JhbSwgYnZh
bDNMb2MpJywgJ1sxLCAwLCAxXScpOwpAQCAtMTY1LDcgKzE0OCw3IEBAIGdsLnVuaWZvcm0xaShp
dmFsTG9jLCAxKTsKIGdsLnVuaWZvcm0yaShpdmFsMkxvYywgMiwgMyk7CiBnbC51bmlmb3JtM2ko
aXZhbDNMb2MsIDQsIDUsIDYpOwogZ2wudW5pZm9ybTRpKGl2YWw0TG9jLCA3LCA4LCA5LCAxMCk7
Ci1zaG91bGRCZSgnZ2wuZ2V0RXJyb3IoKScsICcwJyk7CitnbEVycm9yU2hvdWxkQmUoZ2wsIGds
Lk5PX0VSUk9SKTsKIHNob3VsZEJlKCdnbC5nZXRVbmlmb3JtKGludFByb2dyYW0sIGl2YWxMb2Mp
JywgJzEnKTsKIHNob3VsZEJlKCdnbC5nZXRVbmlmb3JtKGludFByb2dyYW0sIGl2YWwyTG9jKScs
ICdbMiwgM10nKTsKIHNob3VsZEJlKCdnbC5nZXRVbmlmb3JtKGludFByb2dyYW0sIGl2YWwzTG9j
KScsICdbNCwgNSwgNl0nKTsKQEAgLTE4Miw3ICsxNjUsNyBAQCBnbC51bmlmb3JtMWYoZnZhbExv
YywgMTEpOwogZ2wudW5pZm9ybTJmKGZ2YWwyTG9jLCAxMiwgMTMpOwogZ2wudW5pZm9ybTNmKGZ2
YWwzTG9jLCAxNCwgMTUsIDE2KTsKIGdsLnVuaWZvcm00ZihmdmFsNExvYywgMTcsIDE4LCAxOSwg
MjApOwotc2hvdWxkQmUoJ2dsLmdldEVycm9yKCknLCAnMCcpOworZ2xFcnJvclNob3VsZEJlKGds
LCBnbC5OT19FUlJPUik7CiBzaG91bGRCZSgnZ2wuZ2V0VW5pZm9ybShmbG9hdFByb2dyYW0sIGZ2
YWxMb2MpJywgJzExJyk7CiBzaG91bGRCZSgnZ2wuZ2V0VW5pZm9ybShmbG9hdFByb2dyYW0sIGZ2
YWwyTG9jKScsICdbMTIsIDEzXScpOwogc2hvdWxkQmUoJ2dsLmdldFVuaWZvcm0oZmxvYXRQcm9n
cmFtLCBmdmFsM0xvYyknLCAnWzE0LCAxNSwgMTZdJyk7CkBAIC0xOTcsMTMgKzE4MCwxMyBAQCBn
bC51c2VQcm9ncmFtKG1hdFByb2dyYW0pOwogZ2wudW5pZm9ybU1hdHJpeDJmdihtdmFsMkxvYywg
ZmFsc2UsIFsxLCAyLCAzLCA0XSk7CiBnbC51bmlmb3JtTWF0cml4M2Z2KG12YWwzTG9jLCBmYWxz
ZSwgWzUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzXSk7CiBnbC51bmlmb3JtTWF0cml4NGZ2
KG12YWw0TG9jLCBmYWxzZSwgWzE0LCAxNSwgMTYsIDE3LCAxOCwgMTksIDIwLCAyMSwgMjIsIDIz
LCAyNCwgMjUsIDI2LCAyNywgMjgsIDI5XSk7Ci1zaG91bGRCZSgnZ2wuZ2V0RXJyb3IoKScsICcw
Jyk7CitnbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SKTsKIHNob3VsZEJlKCdnbC5nZXRV
bmlmb3JtKG1hdFByb2dyYW0sIG12YWwyTG9jKScsICdbMSwgMiwgMywgNF0nKTsKIHNob3VsZEJl
KCdnbC5nZXRVbmlmb3JtKG1hdFByb2dyYW0sIG12YWwzTG9jKScsICdbNSwgNiwgNywgOCwgOSwg
MTAsIDExLCAxMiwgMTNdJyk7CiBzaG91bGRCZSgnZ2wuZ2V0VW5pZm9ybShtYXRQcm9ncmFtLCBt
dmFsNExvYyknLCAnWzE0LCAxNSwgMTYsIDE3LCAxOCwgMTksIDIwLCAyMSwgMjIsIDIzLCAyNCwg
MjUsIDI2LCAyNywgMjgsIDI5XScpOwogCiAvLyBUZXN0IGdldFZlcnRleEF0dHJpYgotdmFyIGFy
cmF5ID0gbmV3IFdlYkdMRmxvYXRBcnJheShbMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAs
IDExLCAxMiwgMTMsIDE0LCAxNSwgMTZdKTsKK3ZhciBhcnJheSA9IG5ldyBGbG9hdDMyQXJyYXko
WzEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2XSk7
CiBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgYnVmZmVyKTsKIGdsLmJ1ZmZlckRhdGEo
Z2wuQVJSQVlfQlVGRkVSLCBhcnJheSwgZ2wuRFlOQU1JQ19EUkFXKTsKIC8vIFZlcnRleCBhdHRy
aWJ1dGUgMCBpcyBzcGVjaWFsIGluIHRoYXQgaXQgaGFzIG5vIGN1cnJlbnQgc3RhdGUsIHNvCkBA
IC0yMjEsNyArMjA0LDcgQEAgZ2wuZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KDEpOwogc2hvdWxk
QmUoJ2dsLmdldFZlcnRleEF0dHJpYigxLCBnbC5WRVJURVhfQVRUUklCX0FSUkFZX0VOQUJMRUQp
JywgJ2ZhbHNlJyk7CiBnbC52ZXJ0ZXhBdHRyaWI0ZigxLCA1LCA2LCA3LCA4KTsKIHNob3VsZEJl
KCdnbC5nZXRWZXJ0ZXhBdHRyaWIoMSwgZ2wuQ1VSUkVOVF9WRVJURVhfQVRUUklCKScsICdbNSwg
NiwgNywgOF0nKTsKLXNob3VsZEJlKCdnbC5nZXRFcnJvcigpJywgJzAnKTsKK2dsRXJyb3JTaG91
bGRCZShnbCwgZ2wuTk9fRVJST1IpOwogCiAvLyBUZXN0IGNhc2VzIHdoZXJlIG5hbWUgPT0gMAog
Z2wuZGVsZXRlVGV4dHVyZSh0ZXh0dXJlKTsKQEAgLTIzMCw3ICsyMTMsNyBAQCBnbC5kZWxldGVS
ZW5kZXJidWZmZXIocmVuZGVyYnVmZmVyKTsKIHNob3VsZEJlTnVsbCgnZ2wuZ2V0RnJhbWVidWZm
ZXJBdHRhY2htZW50UGFyYW1ldGVyKGdsLkZSQU1FQlVGRkVSLCBnbC5ERVBUSF9BVFRBQ0hNRU5U
LCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FKScpOwogZ2wuZGVsZXRlQnVm
ZmVyKGJ1ZmZlcik7CiBzaG91bGRCZU51bGwoJ2dsLmdldFZlcnRleEF0dHJpYigxLCBnbC5WRVJU
RVhfQVRUUklCX0FSUkFZX0JVRkZFUl9CSU5ESU5HKScpOwotc2hvdWxkQmUoJ2dsLmdldEVycm9y
KCknLCAnMCcpOworZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUik7CiAKIHN1Y2Nlc3Nm
dWxseVBhcnNlZCA9IHRydWU7CiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL3dlYmdsL2dsLXVuaWZvcm0tYXJyYXlzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvd2ViZ2wvZ2wtdW5pZm9ybS1hcnJheXMuaHRtbAkocmV2aXNpb24gNjM0
MzgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9nbC11bmlmb3JtLWFycmF5cy5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw3ICsyMSwxMiBAQAogPC9zY3JpcHQ+CiAKIDxzY3Jp
cHQgaWQ9ImZzaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgorICAgIC8vIFdvcmth
cm91bmQgZm9yIG5vbi1jb21wbGlhbnQgV2ViR0wgaW1wbGVtZW50YXRpb25zIChGSVhNRSkKKyAg
ICAjaWYgZGVmaW5lZChHTF9FUykKKyAgICB1bmlmb3JtIG1lZGl1bXAgJHR5cGUgY29sb3JbM107
CisgICAgI2Vsc2UKICAgICB1bmlmb3JtICR0eXBlIGNvbG9yWzNdOworICAgICNlbmRpZgogICAg
IHZvaWQgbWFpbigpCiAgICAgewogICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGNvbG9yWzBd
JGVsZW0sIGNvbG9yWzFdJGVsZW0sIGNvbG9yWzJdJGVsZW0sIDEpOwpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvd2ViZ2wvZ2wtdW5pZm9ybW1hdHJpeDRmdi5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2dsLXVuaWZvcm1tYXRyaXg0ZnYuaHRt
bAkocmV2aXNpb24gNjM0MzgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9nbC11
bmlmb3JtbWF0cml4NGZ2Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgZm9y
ICh2YXIgaWkgPSAyOyBpaSA8PSA0OyArK2lpKSB7CiAgIHZhciBtYXQgPSBbXTsKICAgZm9yICh2
YXIgamogPSAwOyBqaiA8IGlpOyArK2pqKSB7CiAgICAgZm9yICh2YXIgbGwgPSAwOyBsbCA8IGlp
OyArK2xsKSB7Ci0gICAgICBpZiAoamogPT0gaWkgLTEgJiYgbGwgPT0gaWkgLSAxKQorICAgICAg
aWYgKGpqID09IGlpIC0gMSAmJiBsbCA9PSBpaSAtIDEpCiAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgbWF0W2pqICogaWkgKyBsbF0gPSAoamogPT0gbGwpID8gMSA6IDA7CiAgICAgfQpAQCAtNjAs
OCArNjAsOCBAQCBmb3IgKHZhciBpaSA9IDI7IGlpIDw9IDQ7ICsraWkpIHsKIAogZGVidWcoIiIp
Owogc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKLTwvc2NyaXB0PgogCis8L3NjcmlwdD4KIDxz
Y3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
IAogPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvaW5kZXgtdmFs
aWRhdGlvbi1jb3BpZXMtaW5kaWNlcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvaW5kZXgtdmFsaWRhdGlvbi1jb3BpZXMtaW5kaWNlcy1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDYzNDM4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMv
d2ViZ2wvaW5kZXgtdmFsaWRhdGlvbi1jb3BpZXMtaW5kaWNlcy1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTIsMTIgKzIsOSBAQCBUZXN0IHRoYXQgY2xpZW50IGRhdGEgaXMgYWx3YXlz
IGNvcGllZCBkCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAotUmVncmVzc2lvbiB0ZXN0
IGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzI3NDggOiBJbmRl
eCB2YWxpZGF0aW9uIGNvZGUgbXVzdCBhbHdheXMgY29weSBjbGllbnQgZGF0YQotUEFTUyBjb250
ZXh0LmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoY29udGV4dC5GUkFNRUJVRkZFUikgaXMgY29udGV4
dC5GUkFNRUJVRkZFUl9DT01QTEVURQogUEFTUyBjb250ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0
LlRSSUFOR0xFX1NUUklQLCA0LCBjb250ZXh0LlVOU0lHTkVEX1NIT1JULCAyKSBnZW5lcmF0ZWQg
ZXhwZWN0ZWQgR0wgZXJyb3I6IE5PX0VSUk9SLgogUEFTUyBjb250ZXh0LmRyYXdFbGVtZW50cyhj
b250ZXh0LlRSSUFOR0xFX1NUUklQLCA0LCBjb250ZXh0LlVOU0lHTkVEX1NIT1JULCAwKSBnZW5l
cmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURfT1BFUkFUSU9OLgogUEFTUyBjb250ZXh0
LmRyYXdFbGVtZW50cyhjb250ZXh0LlRSSUFOR0xFX1NUUklQLCA0LCBjb250ZXh0LlVOU0lHTkVE
X1NIT1JULCA0KSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURfT1BFUkFUSU9O
LgotUEFTUyBjb250ZXh0LmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoY29udGV4dC5GUkFNRUJVRkZF
UikgaXMgY29udGV4dC5GUkFNRUJVRkZFUl9DT01QTEVURQogUEFTUyBjb250ZXh0LmRyYXdFbGVt
ZW50cyhjb250ZXh0LlRSSUFOR0xFX1NUUklQLCA0LCBjb250ZXh0LlVOU0lHTkVEX1NIT1JULCAy
KSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IE5PX0VSUk9SLgogUEFTUyBjb250ZXh0LmRy
YXdFbGVtZW50cyhjb250ZXh0LlRSSUFOR0xFX1NUUklQLCA0LCBjb250ZXh0LlVOU0lHTkVEX1NI
T1JULCAwKSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURfT1BFUkFUSU9OLgog
UEFTUyBjb250ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0LlRSSUFOR0xFX1NUUklQLCA0LCBjb250
ZXh0LlVOU0lHTkVEX1NIT1JULCA0KSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IElOVkFM
SURfT1BFUkFUSU9OLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvaW5kZXgt
dmFsaWRhdGlvbi1jb3BpZXMtaW5kaWNlcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL3dlYmdsL2luZGV4LXZhbGlkYXRpb24tY29waWVzLWluZGljZXMuaHRtbAko
cmV2aXNpb24gNjM0MzgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9pbmRleC12
YWxpZGF0aW9uLWNvcGllcy1pbmRpY2VzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTExLDggKzEx
LDYgQEAKIDxzY3JpcHQ+CiBkZXNjcmlwdGlvbignVGVzdCB0aGF0IGNsaWVudCBkYXRhIGlzIGFs
d2F5cyBjb3BpZWQgZHVyaW5nIGJ1ZmZlckRhdGEgYW5kIGJ1ZmZlclN1YkRhdGEgY2FsbHMsIGJl
Y2F1c2Ugb3RoZXJ3aXNlIHRoZSBkYXRhIHRoZSBHTCB1c2VzIHRvIGRyYXcgbWF5IGRpZmZlciBm
cm9tIHRoYXQgY2hlY2tlZCBieSB0aGUgaW5kZXggdmFsaWRhdGlvbiBjb2RlLicpCiAKLWRlYnVn
KCdSZWdyZXNzaW9uIHRlc3QgZm9yIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zMjc0OCI+aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTMyNzQ4PC9hPiA6IDxjb2RlPkluZGV4IHZhbGlkYXRpb24gY29kZSBtdXN0IGFsd2F5cyBj
b3B5IGNsaWVudCBkYXRhPC9jb2RlPicpOwotCiB2YXIgY29udGV4dCA9IGNyZWF0ZTNEQ29udGV4
dCgpOwogdmFyIHByb2dyYW0gPSBsb2FkU3RhbmRhcmRQcm9ncmFtKGNvbnRleHQpOwogCkBAIC0y
MSwyMSArMTksMTkgQEAgdmFyIHZlcnRleE9iamVjdCA9IGNvbnRleHQuY3JlYXRlQnVmZmVyKAog
Y29udGV4dC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgwKTsKIGNvbnRleHQuYmluZEJ1ZmZlcihj
b250ZXh0LkFSUkFZX0JVRkZFUiwgdmVydGV4T2JqZWN0KTsKIC8vIDQgdmVydGljZXMgLT4gMiB0
cmlhbmdsZXMKLWNvbnRleHQuYnVmZmVyRGF0YShjb250ZXh0LkFSUkFZX0JVRkZFUiwgbmV3IFdl
YkdMRmxvYXRBcnJheShbIDAsMCwwLCAwLDEsMCwgMSwwLDAsIDEsMSwwIF0pLCBjb250ZXh0LlNU
QVRJQ19EUkFXKTsKK2NvbnRleHQuYnVmZmVyRGF0YShjb250ZXh0LkFSUkFZX0JVRkZFUiwgbmV3
IEZsb2F0MzJBcnJheShbIDAsMCwwLCAwLDEsMCwgMSwwLDAsIDEsMSwwIF0pLCBjb250ZXh0LlNU
QVRJQ19EUkFXKTsKIGNvbnRleHQudmVydGV4QXR0cmliUG9pbnRlcigwLCAzLCBjb250ZXh0LkZM
T0FULCBmYWxzZSwgMCwgMCk7CiAKIHZhciBpbmRleE9iamVjdCA9IGNvbnRleHQuY3JlYXRlQnVm
ZmVyKCk7CiAKIGNvbnRleHQuYmluZEJ1ZmZlcihjb250ZXh0LkVMRU1FTlRfQVJSQVlfQlVGRkVS
LCBpbmRleE9iamVjdCk7Ci12YXIgaW5kaWNlcyA9IG5ldyBXZWJHTFVuc2lnbmVkU2hvcnRBcnJh
eShbIDEwMDAwLCAwLCAxLCAyLCAzLCAxMDAwMCBdKTsKK3ZhciBpbmRpY2VzID0gbmV3IFVpbnQx
NkFycmF5KFsgMTAwMDAsIDAsIDEsIDIsIDMsIDEwMDAwIF0pOwogY29udGV4dC5idWZmZXJEYXRh
KGNvbnRleHQuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIGluZGljZXMsIGNvbnRleHQuU1RBVElDX0RS
QVcpOwotc2hvdWxkQmUoJ2NvbnRleHQuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhjb250ZXh0LkZS
QU1FQlVGRkVSKScsICdjb250ZXh0LkZSQU1FQlVGRkVSX0NPTVBMRVRFJyk7CiBzaG91bGRHZW5l
cmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5OT19FUlJPUiwgImNvbnRleHQuZHJhd0VsZW1l
bnRzKGNvbnRleHQuVFJJQU5HTEVfU1RSSVAsIDQsIGNvbnRleHQuVU5TSUdORURfU0hPUlQsIDIp
Iik7CiBzaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5JTlZBTElEX09QRVJB
VElPTiwgImNvbnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVfU1RSSVAsIDQsIGNv
bnRleHQuVU5TSUdORURfU0hPUlQsIDApIik7CiBzaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4
dCwgY29udGV4dC5JTlZBTElEX09QRVJBVElPTiwgImNvbnRleHQuZHJhd0VsZW1lbnRzKGNvbnRl
eHQuVFJJQU5HTEVfU1RSSVAsIDQsIGNvbnRleHQuVU5TSUdORURfU0hPUlQsIDQpIik7CiBpbmRp
Y2VzWzBdID0gMjsKIGluZGljZXNbNV0gPSAxOwotc2hvdWxkQmUoImNvbnRleHQuY2hlY2tGcmFt
ZWJ1ZmZlclN0YXR1cyhjb250ZXh0LkZSQU1FQlVGRkVSKSIsICJjb250ZXh0LkZSQU1FQlVGRkVS
X0NPTVBMRVRFIik7CiBzaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5OT19F
UlJPUiwgImNvbnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVfU1RSSVAsIDQsIGNv
bnRleHQuVU5TSUdORURfU0hPUlQsIDIpIik7CiBzaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4
dCwgY29udGV4dC5JTlZBTElEX09QRVJBVElPTiwgImNvbnRleHQuZHJhd0VsZW1lbnRzKGNvbnRl
eHQuVFJJQU5HTEVfU1RSSVAsIDQsIGNvbnRleHQuVU5TSUdORURfU0hPUlQsIDApIik7CiBzaG91
bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5JTlZBTElEX09QRVJBVElPTiwgImNv
bnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVfU1RSSVAsIDQsIGNvbnRleHQuVU5T
SUdORURfU0hPUlQsIDQpIik7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9p
bmRleC12YWxpZGF0aW9uLWNyYXNoLXdpdGgtYnVmZmVyLXN1Yi1kYXRhLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9pbmRleC12YWxpZGF0
aW9uLWNyYXNoLXdpdGgtYnVmZmVyLXN1Yi1kYXRhLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNjM0
MzgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9pbmRleC12YWxpZGF0aW9uLWNy
YXNoLXdpdGgtYnVmZmVyLXN1Yi1kYXRhLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
Miw3ICsyLDYgQEAgVmVyaWZpZXMgdGhhdCB0aGUgaW5kZXggdmFsaWRhdGlvbiBjb2RlIAogCiBP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKLVJlZ3Jlc3Npb24gdGVzdCBmb3IgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyMDA0IDogYnVmZmVyU3ViRGF0YSBjYXVz
ZXMgY3Jhc2ggaW4gV2ViR0xCdWZmZXI6OmFzc29jaWF0ZUJ1ZmZlclN1YkRhdGEKIFBBU1MgYnVm
ZmVyU3ViRGF0YSwgd2hlbiBidWZmZXIgb2JqZWN0IHdhcyBpbml0aWFsaXplZCB3aXRoIG51bGws
IGRpZCBub3QgY3Jhc2gKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIApJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvaW5kZXgtdmFsaWRhdGlvbi1jcmFzaC13aXRo
LWJ1ZmZlci1zdWItZGF0YS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL3dlYmdsL2luZGV4LXZhbGlkYXRpb24tY3Jhc2gtd2l0aC1idWZmZXItc3ViLWRhdGEuaHRt
bAkocmV2aXNpb24gNjM0MzgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9pbmRl
eC12YWxpZGF0aW9uLWNyYXNoLXdpdGgtYnVmZmVyLXN1Yi1kYXRhLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTExLDggKzExLDYgQEAKIDxzY3JpcHQ+CiBkZXNjcmlwdGlvbignVmVyaWZpZXMgdGhh
dCB0aGUgaW5kZXggdmFsaWRhdGlvbiBjb2RlIHdoaWNoIGlzIHdpdGhpbiBidWZmZXJTdWJEYXRh
IGRvZXMgbm90IGNyYXNoLicpCiAKLWRlYnVnKCdSZWdyZXNzaW9uIHRlc3QgZm9yIDxhIGhyZWY9
Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjAwNCI+aHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyMDA0PC9hPiA6IDxjb2RlPmJ1ZmZlclN1
YkRhdGEgY2F1c2VzIGNyYXNoIGluIFdlYkdMQnVmZmVyOjphc3NvY2lhdGVCdWZmZXJTdWJEYXRh
PC9jb2RlPicpOwotCiB2YXIgZ2wgPSBjcmVhdGUzRENvbnRleHQoKTsKIAogdmFyIGVsZW1lbnRC
dWZmZXIgPSBnbC5jcmVhdGVCdWZmZXIoKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFz
L3dlYmdsL2luZGV4LXZhbGlkYXRpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2luZGV4LXZhbGlkYXRpb24tZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiA2MzQzOCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2luZGV4LXZh
bGlkYXRpb24tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAotVGVz
dCBvZiB2YWxpZGF0aW5nIGluZGljZXMgZm9yIGRyYXdFbGVtZW50cygpLgorVGVzdHMgdGhhdCBp
bmRleCB2YWxpZGF0aW9uIHZlcmlmaWVzIHRoZSBjb3JyZWN0IG51bWJlciBvZiBpbmRpY2VzCiAK
IE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvd2ViZ2wvaW5kZXgtdmFsaWRhdGlvbi12ZXJpZmllcy10b28tbWFueS1pbmRpY2VzLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9pbmRl
eC12YWxpZGF0aW9uLXZlcmlmaWVzLXRvby1tYW55LWluZGljZXMtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiA2MzQzOCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2luZGV4LXZhbGlk
YXRpb24tdmVyaWZpZXMtdG9vLW1hbnktaW5kaWNlcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNCArMSw0IEBACi1SZWdyZXNzaW9uIHRlc3QgZm9yIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjY5MiA6IEluZGV4IHZhbGlkYXRpb24gZm9yIGRyYXdF
bGVtZW50cyBleGFtaW5lcyB0b28gbWFueSBpbmRpY2VzCitUZXN0cyB0aGF0IGluZGV4IHZhbGlk
YXRpb24gZm9yIGRyYXdFbGVtZW50cyBkb2VzIG5vdCBleGFtaW5lIHRvbyBtYW55IGluZGljZXMK
IAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy93ZWJnbC9pbmRleC12YWxpZGF0aW9uLXZlcmlmaWVzLXRvby1tYW55LWluZGljZXMuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9pbmRleC12YWxp
ZGF0aW9uLXZlcmlmaWVzLXRvby1tYW55LWluZGljZXMuaHRtbAkocmV2aXNpb24gNjM0MzgpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9pbmRleC12YWxpZGF0aW9uLXZlcmlmaWVz
LXRvby1tYW55LWluZGljZXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOSw3ICs5LDcgQEAKIDxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgogCiA8c2NyaXB0PgotZGVzY3JpcHRpb24oJ1JlZ3Jlc3Np
b24gdGVzdCBmb3IgPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTMyNjkyIj5odHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzI2OTI8
L2E+IDogPGNvZGU+SW5kZXggdmFsaWRhdGlvbiBmb3IgZHJhd0VsZW1lbnRzIGV4YW1pbmVzIHRv
byBtYW55IGluZGljZXM8L2NvZGU+Jyk7CitkZXNjcmlwdGlvbignVGVzdHMgdGhhdCBpbmRleCB2
YWxpZGF0aW9uIGZvciBkcmF3RWxlbWVudHMgZG9lcyBub3QgZXhhbWluZSB0b28gbWFueSBpbmRp
Y2VzJyk7CiAKIHZhciBjb250ZXh0ID0gY3JlYXRlM0RDb250ZXh0KCk7CiB2YXIgcHJvZ3JhbSA9
IGxvYWRTdGFuZGFyZFByb2dyYW0oY29udGV4dCk7CkBAIC0xOSwxNCArMTksMTQgQEAgdmFyIHZl
cnRleE9iamVjdCA9IGNvbnRleHQuY3JlYXRlQnVmZmVyKAogY29udGV4dC5lbmFibGVWZXJ0ZXhB
dHRyaWJBcnJheSgwKTsKIGNvbnRleHQuYmluZEJ1ZmZlcihjb250ZXh0LkFSUkFZX0JVRkZFUiwg
dmVydGV4T2JqZWN0KTsKIC8vIDQgdmVydGljZXMgLT4gMiB0cmlhbmdsZXMKLWNvbnRleHQuYnVm
ZmVyRGF0YShjb250ZXh0LkFSUkFZX0JVRkZFUiwgbmV3IFdlYkdMRmxvYXRBcnJheShbIDAsMCww
LCAwLDEsMCwgMSwwLDAsIDEsMSwwIF0pLCBjb250ZXh0LlNUQVRJQ19EUkFXKTsKK2NvbnRleHQu
YnVmZmVyRGF0YShjb250ZXh0LkFSUkFZX0JVRkZFUiwgbmV3IEZsb2F0MzJBcnJheShbIDAsMCww
LCAwLDEsMCwgMSwwLDAsIDEsMSwwIF0pLCBjb250ZXh0LlNUQVRJQ19EUkFXKTsKIGNvbnRleHQu
dmVydGV4QXR0cmliUG9pbnRlcigwLCAzLCBjb250ZXh0LkZMT0FULCBmYWxzZSwgMCwgMCk7CiAK
IHZhciBpbmRleE9iamVjdCA9IGNvbnRleHQuY3JlYXRlQnVmZmVyKCk7CiAKIGRlYnVnKCJUZXN0
IG91dCBvZiByYW5nZSBpbmRpY2VzIikKIGNvbnRleHQuYmluZEJ1ZmZlcihjb250ZXh0LkVMRU1F
TlRfQVJSQVlfQlVGRkVSLCBpbmRleE9iamVjdCk7Ci1jb250ZXh0LmJ1ZmZlckRhdGEoY29udGV4
dC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgbmV3IFdlYkdMVW5zaWduZWRTaG9ydEFycmF5KFsgMTAw
MDAsIDAsIDEsIDIsIDMsIDEwMDAwIF0pLCBjb250ZXh0LlNUQVRJQ19EUkFXKTsKK2NvbnRleHQu
YnVmZmVyRGF0YShjb250ZXh0LkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBuZXcgVWludDE2QXJyYXko
WyAxMDAwMCwgMCwgMSwgMiwgMywgMTAwMDAgXSksIGNvbnRleHQuU1RBVElDX0RSQVcpOwogc2hv
dWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHQsIGNvbnRleHQuTk9fRVJST1IsICJjb250ZXh0LmRy
YXdFbGVtZW50cyhjb250ZXh0LlRSSUFOR0xFX1NUUklQLCA0LCBjb250ZXh0LlVOU0lHTkVEX1NI
T1JULCAyKSIpOwogc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHQsIGNvbnRleHQuSU5WQUxJ
RF9PUEVSQVRJT04sICJjb250ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0LlRSSUFOR0xFX1NUUklQ
LCA0LCBjb250ZXh0LlVOU0lHTkVEX1NIT1JULCAwKSIpOwogc2hvdWxkR2VuZXJhdGVHTEVycm9y
KGNvbnRleHQsIGNvbnRleHQuSU5WQUxJRF9PUEVSQVRJT04sICJjb250ZXh0LmRyYXdFbGVtZW50
cyhjb250ZXh0LlRSSUFOR0xFX1NUUklQLCA0LCBjb250ZXh0LlVOU0lHTkVEX1NIT1JULCA0KSIp
OwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvaW5kZXgtdmFsaWRhdGlvbi13
aXRoLXJlc2l6ZWQtYnVmZmVyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2NhbnZhcy93ZWJnbC9pbmRleC12YWxpZGF0aW9uLXdpdGgtcmVzaXplZC1idWZmZXIt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA2MzQzOCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFz
L3dlYmdsL2luZGV4LXZhbGlkYXRpb24td2l0aC1yZXNpemVkLWJ1ZmZlci1leHBlY3RlZC50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTIsNyArMiw2IEBAIFRlc3QgdGhhdCB1cGRhdGluZyB0aGUgc2l6
ZSBvZiBhIHZlcnRleCAKIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCi1SZWdyZXNzaW9u
IHRlc3QgZm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTA5MiA6
IEluZGV4IHZhbGlkYXRpb24gY2FjaGVzIGJ1ZmZlciBzaXplIGluZm9ybWF0aW9uIHRvbyBhZ2dy
ZXNzaXZlbHkKIFBBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IGFm
dGVyIGluaXRpYWxpemF0aW9uCiBQQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9f
RVJST1IgOiBhZnRlciB2ZXJ0ZXggc2V0dXAKIFBBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZh
bHVlOiBOT19FUlJPUiA6IGFmdGVyIHRleHR1cmUgY29vcmQgc2V0dXAKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvY2FudmFzL3dlYmdsL2luZGV4LXZhbGlkYXRpb24td2l0aC1yZXNpemVkLWJ1ZmZl
ci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2luZGV4
LXZhbGlkYXRpb24td2l0aC1yZXNpemVkLWJ1ZmZlci5odG1sCShyZXZpc2lvbiA2MzQzOCkKKysr
IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2luZGV4LXZhbGlkYXRpb24td2l0aC1yZXNp
emVkLWJ1ZmZlci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw4ICszMCw2IEBAIHZvaWQgbWFp
bigpIHsKIDxzY3JpcHQ+CiBkZXNjcmlwdGlvbignVGVzdCB0aGF0IHVwZGF0aW5nIHRoZSBzaXpl
IG9mIGEgdmVydGV4IGJ1ZmZlciBpcyBwcm9wZXJseSBub3RpY2VkIGJ5IHRoZSBXZWJHTCBpbXBs
ZW1lbnRhdGlvbi4nKQogCi1kZWJ1ZygnUmVncmVzc2lvbiB0ZXN0IGZvciA8YSBocmVmPSJodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDEwOTIiPmh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTA5MjwvYT4gOiA8Y29kZT5JbmRleCB2YWxpZGF0
aW9uIGNhY2hlcyBidWZmZXIgc2l6ZSBpbmZvcm1hdGlvbiB0b28gYWdncmVzc2l2ZWx5PC9jb2Rl
PicpOwotCiB2YXIgZ2wgPSBpbml0V2ViR0woImV4YW1wbGUiLCAidnMiLCAiZnMiLCBbInZQb3Np
dGlvbiIsICJ2Q29sb3IiXSwgWzAsIDAsIDAsIDFdLCAxKTsKIGdsRXJyb3JTaG91bGRCZShnbCwg
Z2wuTk9fRVJST1IsICJhZnRlciBpbml0aWFsaXphdGlvbiIpOwogCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2NhbnZhcy93ZWJnbC9pbmRleC12YWxpZGF0aW9uLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvaW5kZXgtdmFsaWRhdGlvbi5odG1sCShyZXZp
c2lvbiA2MzQzOCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2luZGV4LXZhbGlk
YXRpb24uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOSwyNCArOSwyNCBAQAogPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+CiAKIDxzY3JpcHQ+Ci1kZXNjcmlwdGlvbigiVGVzdCBvZiB2YWxpZGF0aW5n
IGluZGljZXMgZm9yIGRyYXdFbGVtZW50cygpLiIpOworZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQg
aW5kZXggdmFsaWRhdGlvbiB2ZXJpZmllcyB0aGUgY29ycmVjdCBudW1iZXIgb2YgaW5kaWNlcyIp
OwogCiB2YXIgZ2wgPSBjcmVhdGUzRENvbnRleHQoKTsKIHZhciBwcm9ncmFtID0gbG9hZFN0YW5k
YXJkUHJvZ3JhbShnbCk7CiAKIC8vIDMgdmVydGljZXMgPT4gMSB0cmlhbmdsZSwgaW50ZXJsZWF2
ZWQgZGF0YQotdmFyIGRhdGFDb21wbGV0ZSA9IG5ldyBXZWJHTEZsb2F0QXJyYXkoWzAsIDAsIDAs
IDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgMSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCAwLCAwLCAxLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDEsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgMSwgMSwgMSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCAxXSk7Ci12YXIgZGF0YUluY29tcGxldGUgPSBu
ZXcgV2ViR0xGbG9hdEFycmF5KFswLCAwLCAwLCAxLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMCwgMCwgMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDEsIDAsIDAsIDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAwLCAwLCAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMSwgMSwgMSwgMV0pOwotdmFyIGluZGljZXMgPSBuZXcgV2ViR0xVbnNpZ25lZFNob3J0
QXJyYXkoWzAsIDEsIDJdKTsKK3ZhciBkYXRhQ29tcGxldGUgPSBuZXcgRmxvYXQzMkFycmF5KFsw
LCAwLCAwLCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDEs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgMCwgMCwgMSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCAxLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDEsIDEsIDEsIDEsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMCwgMCwgMV0pOwordmFyIGRhdGFJbmNvbXBsZXRlID0gbmV3IEZsb2F0
MzJBcnJheShbMCwgMCwgMCwgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDAsIDAsIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCAw
LCAwLCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgMSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsIDEsIDEsIDFdKTsKK3Zh
ciBpbmRpY2VzID0gbmV3IFVpbnQxNkFycmF5KFswLCAxLCAyXSk7CiAKIGRlYnVnKCJUZXN0aW5n
IHdpdGggdmFsaWQgaW5kaWNlcyIpOwogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93
ZWJnbC9pbnZhbGlkLVVURi0xNi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL3dlYmdsL2ludmFsaWQtVVRGLTE2Lmh0bWwJKHJldmlzaW9uIDYzNDM4KQorKysgTGF5
b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvaW52YWxpZC1VVEYtMTYuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtOCw4ICs4LDkgQEAKIDxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgogPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+CiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBp
ZiAod2luZG93LmluaXROb25LaHJvbm9zRnJhbWV3b3JrKSB7CisgICAgICAgIHdpbmRvdy5pbml0
Tm9uS2hyb25vc0ZyYW1ld29yayhmYWxzZSk7CisgICAgfQogPC9zY3JpcHQ+CiA8c2NyaXB0Pgog
ZGVzY3JpcHRpb24oJ1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHRoZSBpbnRlcm5hbCBjb252ZXJz
aW9uIGZyb20gVVRGMTYgdG8gVVRGOCBpcyByb2J1c3QgdG8gaW52YWxpZCBpbnB1dHMuIEFueSBE
T00gZW50cnkgcG9pbnQgd2hpY2ggY29udmVydHMgYW4gaW5jb21pbmcgc3RyaW5nIHRvIFVURjgg
Y291bGQgYmUgdXNlZCBmb3IgdGhpcyB0ZXN0LicpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9j
YW52YXMvd2ViZ2wvbnVsbC1vYmplY3QtYmVoYXZpb3VyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9udWxsLW9iamVjdC1iZWhhdmlvdXIt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA2MzQzOCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFz
L3dlYmdsL251bGwtb2JqZWN0LWJlaGF2aW91ci1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTIsMjkgKzIsMzEgQEAgVGVzdHMgY2FsbGluZyBXZWJHTCBBUElzIHdpdGhvdXQgcHJvdmlk
aQogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKLVBBU1MgY29udGV4dC5jb21waWxlU2hh
ZGVyKCkgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX1ZBTFVFLgotUEFTUyBj
b250ZXh0LmxpbmtQcm9ncmFtKCkgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBJTlZBTElE
X1ZBTFVFLgotUEFTUyBjb250ZXh0LmF0dGFjaFNoYWRlcigpIGdlbmVyYXRlZCBleHBlY3RlZCBH
TCBlcnJvcjogSU5WQUxJRF9WQUxVRS4KLVBBU1MgY29udGV4dC5hdHRhY2hTaGFkZXIocHJvZ3Jh
bSwgdW5kZWZpbmVkKSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURfVkFMVUUu
Ci1QQVNTIGNvbnRleHQuYXR0YWNoU2hhZGVyKHVuZGVmaW5lZCwgc2hhZGVyKSBnZW5lcmF0ZWQg
ZXhwZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURfVkFMVUUuCi1QQVNTIGNvbnRleHQuZGV0YWNoU2hh
ZGVyKHByb2dyYW0sIHVuZGVmaW5lZCkgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBJTlZB
TElEX1ZBTFVFLgotUEFTUyBjb250ZXh0LmRldGFjaFNoYWRlcih1bmRlZmluZWQsIHNoYWRlcikg
Z2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX1ZBTFVFLgotUEFTUyBjb250ZXh0
LnNoYWRlclNvdXJjZSgpIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBlcnJvcjogSU5WQUxJRF9WQUxV
RS4KLVBBU1MgY29udGV4dC5zaGFkZXJTb3VyY2UodW5kZWZpbmVkLCAnZm9vJykgZ2VuZXJhdGVk
IGV4cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX1ZBTFVFLgotUEFTUyBjb250ZXh0LmJpbmRBdHRy
aWJMb2NhdGlvbih1bmRlZmluZWQsIDAsICdmb28nKSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJy
b3I6IElOVkFMSURfVkFMVUUuCi1QQVNTIGNvbnRleHQuYmluZEJ1ZmZlcihjb250ZXh0LkFSUkFZ
X0JVRkZFUiwgMCkgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBOT19FUlJPUi4KLVBBU1Mg
Y29udGV4dC5iaW5kRnJhbWVidWZmZXIoY29udGV4dC5GUkFNRUJVRkZFUiwgMCkgZ2VuZXJhdGVk
IGV4cGVjdGVkIEdMIGVycm9yOiBOT19FUlJPUi4KLVBBU1MgY29udGV4dC5iaW5kUmVuZGVyYnVm
ZmVyKGNvbnRleHQuUkVOREVSQlVGRkVSLCAwKSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6
IE5PX0VSUk9SLgotUEFTUyBjb250ZXh0LmJpbmRUZXh0dXJlKGNvbnRleHQuVEVYVFVSRV8yRCwg
MCkgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBOT19FUlJPUi4KLVBBU1MgY29udGV4dC5m
cmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihjb250ZXh0LkZSQU1FQlVGRkVSLCBjb250ZXh0LkRFUFRI
X0FUVEFDSE1FTlQsIGNvbnRleHQuUkVOREVSQlVGRkVSLCAwKSBnZW5lcmF0ZWQgZXhwZWN0ZWQg
R0wgZXJyb3I6IElOVkFMSURfT1BFUkFUSU9OLgotUEFTUyBjb250ZXh0LmZyYW1lYnVmZmVyVGV4
dHVyZTJEKGNvbnRleHQuRlJBTUVCVUZGRVIsIGNvbnRleHQuQ09MT1JfQVRUQUNITUVOVDAsIGNv
bnRleHQuVEVYVFVSRV8yRCwgMCwgMCkgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBJTlZB
TElEX09QRVJBVElPTi4KLVBBU1MgY29udGV4dC5nZXRQcm9ncmFtUGFyYW1ldGVyKHVuZGVmaW5l
ZCwgMCkgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX1ZBTFVFLgotUEFTUyBj
b250ZXh0LmdldFByb2dyYW1JbmZvTG9nKHVuZGVmaW5lZCwgMCkgZ2VuZXJhdGVkIGV4cGVjdGVk
IEdMIGVycm9yOiBJTlZBTElEX1ZBTFVFLgotUEFTUyBjb250ZXh0LmdldFNoYWRlclBhcmFtZXRl
cih1bmRlZmluZWQsIDApIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBlcnJvcjogSU5WQUxJRF9WQUxV
RS4KLVBBU1MgY29udGV4dC5nZXRTaGFkZXJJbmZvTG9nKHVuZGVmaW5lZCwgMCkgZ2VuZXJhdGVk
IGV4cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX1ZBTFVFLgotUEFTUyBjb250ZXh0LmdldFNoYWRl
clNvdXJjZSh1bmRlZmluZWQpIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBlcnJvcjogSU5WQUxJRF9W
QUxVRS4KLVBBU1MgY29udGV4dC5nZXRVbmlmb3JtKHVuZGVmaW5lZCwgMCkgZ2VuZXJhdGVkIGV4
cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX1ZBTFVFLgotUEFTUyBjb250ZXh0LmdldFVuaWZvcm1M
b2NhdGlvbih1bmRlZmluZWQsICdmb28nKSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IElO
VkFMSURfVkFMVUUuCitQQVNTIFByb2dyYW0gQ29tcGlsZWQKK1BBU1MgU2hhZGVyIENvbXBpbGVk
CitQQVNTIGNvbnRleHQuY29tcGlsZVNoYWRlcigpIHdhcyBleHBlY3RlZCB2YWx1ZTogSU5WQUxJ
RF9WQUxVRS4KK1BBU1MgY29udGV4dC5saW5rUHJvZ3JhbSgpIHdhcyBleHBlY3RlZCB2YWx1ZTog
SU5WQUxJRF9WQUxVRS4KK1BBU1MgY29udGV4dC5hdHRhY2hTaGFkZXIoKSB3YXMgZXhwZWN0ZWQg
dmFsdWU6IElOVkFMSURfVkFMVUUuCitQQVNTIGNvbnRleHQuYXR0YWNoU2hhZGVyKHByb2dyYW0s
IHVuZGVmaW5lZCkgd2FzIGV4cGVjdGVkIHZhbHVlOiBJTlZBTElEX1ZBTFVFLgorUEFTUyBjb250
ZXh0LmF0dGFjaFNoYWRlcih1bmRlZmluZWQsIHNoYWRlcikgd2FzIGV4cGVjdGVkIHZhbHVlOiBJ
TlZBTElEX1ZBTFVFLgorUEFTUyBjb250ZXh0LmRldGFjaFNoYWRlcihwcm9ncmFtLCB1bmRlZmlu
ZWQpIHdhcyBleHBlY3RlZCB2YWx1ZTogSU5WQUxJRF9WQUxVRS4KK1BBU1MgY29udGV4dC5kZXRh
Y2hTaGFkZXIodW5kZWZpbmVkLCBzaGFkZXIpIHdhcyBleHBlY3RlZCB2YWx1ZTogSU5WQUxJRF9W
QUxVRS4KK1BBU1MgY29udGV4dC5zaGFkZXJTb3VyY2UoKSB3YXMgZXhwZWN0ZWQgdmFsdWU6IElO
VkFMSURfVkFMVUUuCitQQVNTIGNvbnRleHQuc2hhZGVyU291cmNlKHVuZGVmaW5lZCwgJ2Zvbycp
IHdhcyBleHBlY3RlZCB2YWx1ZTogSU5WQUxJRF9WQUxVRS4KK1BBU1MgY29udGV4dC5iaW5kQXR0
cmliTG9jYXRpb24odW5kZWZpbmVkLCAwLCAnZm9vJykgd2FzIGV4cGVjdGVkIHZhbHVlOiBJTlZB
TElEX1ZBTFVFLgorUEFTUyBjb250ZXh0LmJpbmRCdWZmZXIoY29udGV4dC5BUlJBWV9CVUZGRVIs
IDApIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IuCitQQVNTIGNvbnRleHQuYmluZEZyYW1l
YnVmZmVyKGNvbnRleHQuRlJBTUVCVUZGRVIsIDApIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJS
T1IuCitQQVNTIGNvbnRleHQuYmluZFJlbmRlcmJ1ZmZlcihjb250ZXh0LlJFTkRFUkJVRkZFUiwg
MCkgd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUi4KK1BBU1MgY29udGV4dC5iaW5kVGV4dHVy
ZShjb250ZXh0LlRFWFRVUkVfMkQsIDApIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IuCitQ
QVNTIGNvbnRleHQuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoY29udGV4dC5GUkFNRUJVRkZFUiwg
Y29udGV4dC5ERVBUSF9BVFRBQ0hNRU5ULCBjb250ZXh0LlJFTkRFUkJVRkZFUiwgMCkgd2FzIGV4
cGVjdGVkIHZhbHVlOiBJTlZBTElEX09QRVJBVElPTi4KK1BBU1MgY29udGV4dC5mcmFtZWJ1ZmZl
clRleHR1cmUyRChjb250ZXh0LkZSQU1FQlVGRkVSLCBjb250ZXh0LkNPTE9SX0FUVEFDSE1FTlQw
LCBjb250ZXh0LlRFWFRVUkVfMkQsIDAsIDApIHdhcyBleHBlY3RlZCB2YWx1ZTogSU5WQUxJRF9P
UEVSQVRJT04uCitQQVNTIGNvbnRleHQuZ2V0UHJvZ3JhbVBhcmFtZXRlcih1bmRlZmluZWQsIDAp
IHdhcyBleHBlY3RlZCB2YWx1ZTogSU5WQUxJRF9WQUxVRS4KK1BBU1MgY29udGV4dC5nZXRQcm9n
cmFtSW5mb0xvZyh1bmRlZmluZWQsIDApIHdhcyBleHBlY3RlZCB2YWx1ZTogSU5WQUxJRF9WQUxV
RS4KK1BBU1MgY29udGV4dC5nZXRTaGFkZXJQYXJhbWV0ZXIodW5kZWZpbmVkLCAwKSB3YXMgZXhw
ZWN0ZWQgdmFsdWU6IElOVkFMSURfVkFMVUUuCitQQVNTIGNvbnRleHQuZ2V0U2hhZGVySW5mb0xv
Zyh1bmRlZmluZWQsIDApIHdhcyBleHBlY3RlZCB2YWx1ZTogSU5WQUxJRF9WQUxVRS4KK1BBU1Mg
Y29udGV4dC5nZXRTaGFkZXJTb3VyY2UodW5kZWZpbmVkKSB3YXMgZXhwZWN0ZWQgdmFsdWU6IElO
VkFMSURfVkFMVUUuCitQQVNTIGNvbnRleHQuZ2V0VW5pZm9ybSh1bmRlZmluZWQsIDApIHdhcyBl
eHBlY3RlZCB2YWx1ZTogSU5WQUxJRF9WQUxVRS4KK1BBU1MgY29udGV4dC5nZXRVbmlmb3JtTG9j
YXRpb24odW5kZWZpbmVkLCAnZm9vJykgd2FzIGV4cGVjdGVkIHZhbHVlOiBJTlZBTElEX1ZBTFVF
LgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9udWxsLW9iamVjdC1iZWhhdmlvdXIuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9udWxsLW9iamVj
dC1iZWhhdmlvdXIuaHRtbAkocmV2aXNpb24gNjM0MzgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy93ZWJnbC9udWxsLW9iamVjdC1iZWhhdmlvdXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MywxOCArMywyMyBAQAogPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9qcy9yZXNv
dXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KIDxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJn
bC10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2ViZ2wtdGVzdC11
dGlscy5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KIDxkaXYgaWQ9ImRlc2NyaXB0aW9u
Ij48L2Rpdj4KIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgogCiA8c2NyaXB0PgordmFyIHd0dSA9
IFdlYkdMVGVzdFV0aWxzOwogZGVzY3JpcHRpb24oIlRlc3RzIGNhbGxpbmcgV2ViR0wgQVBJcyB3
aXRob3V0IHByb3ZpZGluZyB0aGUgbmVjZXNzYXJ5IG9iamVjdHMiKTsKIAotdmFyIGNvbnRleHQg
PSBjcmVhdGUzRENvbnRleHQoKTsKLXZhciBwcm9ncmFtID0gbG9hZFN0YW5kYXJkUHJvZ3JhbShj
b250ZXh0KTsKLXZhciBzaGFkZXIgPSBsb2FkU3RhbmRhcmRWZXJ0ZXhTaGFkZXIoY29udGV4dCk7
Cit2YXIgY29udGV4dCA9IHd0dS5jcmVhdGUzRENvbnRleHQoKTsKK3ZhciBwcm9ncmFtID0gd3R1
LmxvYWRTdGFuZGFyZFByb2dyYW0oY29udGV4dCk7Cit2YXIgc2hhZGVyID0gd3R1LmxvYWRTdGFu
ZGFyZFZlcnRleFNoYWRlcihjb250ZXh0KTsKK3ZhciBzaG91bGRHZW5lcmF0ZUdMRXJyb3IgPSB3
dHUuc2hvdWxkR2VuZXJhdGVHTEVycm9yOwogCithc3NlcnRNc2cocHJvZ3JhbSAhPSBudWxsLCAi
UHJvZ3JhbSBDb21waWxlZCIpOworYXNzZXJ0TXNnKHNoYWRlciAhPSBudWxsLCAiU2hhZGVyIENv
bXBpbGVkIik7CiBzaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5JTlZBTElE
X1ZBTFVFLCAiY29udGV4dC5jb21waWxlU2hhZGVyKCkiKTsKIHNob3VsZEdlbmVyYXRlR0xFcnJv
cihjb250ZXh0LCBjb250ZXh0LklOVkFMSURfVkFMVUUsICJjb250ZXh0LmxpbmtQcm9ncmFtKCki
KTsKIHNob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0LCBjb250ZXh0LklOVkFMSURfVkFMVUUs
ICJjb250ZXh0LmF0dGFjaFNoYWRlcigpIik7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy93ZWJnbC9udWxsLXVuaWZvcm0tbG9jYXRpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9udWxsLXVuaWZvcm0tbG9jYXRpb24uaHRtbAkocmV2aXNp
b24gNjM0MzgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9udWxsLXVuaWZvcm0t
bG9jYXRpb24uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjAsMzQgKzIwLDM0IEBAIHZhciBmbG9h
dEFycmF5ID0gbmV3IFdlYkdMRmxvYXRBcnJheShbMSwKIHZhciBpbnRBcnJheSA9IG5ldyBXZWJH
TEludEFycmF5KFsxLCAyLCAzLCA0XSk7CiAKIGZ1bmN0aW9uIGNhbGxVbmlmb3JtRnVuY3Rpb24o
bmFtZSkgewotICAgIHZhciBpc0FycmF5VmFyaWFudCA9IChuYW1lLmNoYXJBdChuYW1lLmxlbmd0
aCAtIDEpID09ICd2Jyk7Ci0gICAgdmFyIGlzTWF0cml4ID0gKG5hbWUuaW5kZXhPZigiTWF0cml4
IikgIT0gLTEpOwotICAgIHZhciBpc0Zsb2F0ID0KLSAgICAgICAgKG5hbWUuY2hhckF0KG5hbWUu
bGVuZ3RoIC0gMSkgPT0gJ2YnIHx8Ci0gICAgICAgICBuYW1lLmNoYXJBdChuYW1lLmxlbmd0aCAt
IDIpID09ICdmJyk7Ci0gICAgdmFyIHNpemVJbmRleCA9IChpc0FycmF5VmFyaWFudCA/IG5hbWUu
bGVuZ3RoIC0gMyA6IG5hbWUubGVuZ3RoIC0gMik7Ci0gICAgdmFyIHNpemUgPSBwYXJzZUludChu
YW1lLnN1YnN0cmluZyhzaXplSW5kZXgsIHNpemVJbmRleCArIDEpKTsKLSAgICAvLyBJbml0aWFs
aXplIGFyZ3VtZW50IGxpc3Qgd2l0aCBudWxsIHVuaWZvcm0gbG9jYXRpb24KLSAgICB2YXIgYXJn
cyA9IFsgbnVsbCBdOwotICAgIGlmIChpc0FycmF5VmFyaWFudCkgewotICAgICAgICAvLyBDYWxs
IHZhcmlhbnQgd2hpY2ggdGFrZXMgdmFsdWVzIGFzIGFycmF5Ci0gICAgICAgIGlmIChpc01hdHJp
eCkgewotICAgICAgICAgICAgc2l6ZSA9IHNpemUgKiBzaXplOwotICAgICAgICAgICAgYXJncy5w
dXNoKGZhbHNlKTsKLSAgICAgICAgfQotICAgICAgICB2YXIgYXJyYXkgPSAoaXNGbG9hdCA/IG5l
dyBXZWJHTEZsb2F0QXJyYXkoc2l6ZSkgOiBuZXcgV2ViR0xJbnRBcnJheShzaXplKSk7Ci0gICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7Ci0gICAgICAgICAgICBhcnJheVtp
XSA9IGk7Ci0gICAgICAgIH0KLSAgICAgICAgYXJncy5wdXNoKGFycmF5KTsKLSAgICB9IGVsc2Ug
ewotICAgICAgICAvLyBDYWxsIHZhcmlhbnQgd2hpY2ggdGFrZXMgdmFsdWVzIGFzIHBhcmFtZXRl
cnMKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAgICAg
IGFyZ3MucHVzaChpKTsKLSAgICAgICAgfQorICB2YXIgaXNBcnJheVZhcmlhbnQgPSAobmFtZS5j
aGFyQXQobmFtZS5sZW5ndGggLSAxKSA9PSAndicpOworICB2YXIgaXNNYXRyaXggPSAobmFtZS5p
bmRleE9mKCJNYXRyaXgiKSAhPSAtMSk7CisgIHZhciBpc0Zsb2F0ID0KKyAgICAgIChuYW1lLmNo
YXJBdChuYW1lLmxlbmd0aCAtIDEpID09ICdmJyB8fAorICAgICAgIG5hbWUuY2hhckF0KG5hbWUu
bGVuZ3RoIC0gMikgPT0gJ2YnKTsKKyAgdmFyIHNpemVJbmRleCA9IChpc0FycmF5VmFyaWFudCA/
IG5hbWUubGVuZ3RoIC0gMyA6IG5hbWUubGVuZ3RoIC0gMik7CisgIHZhciBzaXplID0gcGFyc2VJ
bnQobmFtZS5zdWJzdHJpbmcoc2l6ZUluZGV4LCBzaXplSW5kZXggKyAxKSk7CisgIC8vIEluaXRp
YWxpemUgYXJndW1lbnQgbGlzdCB3aXRoIG51bGwgdW5pZm9ybSBsb2NhdGlvbgorICB2YXIgYXJn
cyA9IFsgbnVsbCBdOworICBpZiAoaXNBcnJheVZhcmlhbnQpIHsKKyAgICAvLyBDYWxsIHZhcmlh
bnQgd2hpY2ggdGFrZXMgdmFsdWVzIGFzIGFycmF5CisgICAgaWYgKGlzTWF0cml4KSB7CisgICAg
ICBzaXplID0gc2l6ZSAqIHNpemU7CisgICAgICBhcmdzLnB1c2goZmFsc2UpOwogICAgIH0KLSAg
ICB2YXIgZnVuYyA9IGdsW25hbWVdOwotICAgIHJldHVybiBmdW5jLmFwcGx5KGdsLCBhcmdzKTsK
KyAgICB2YXIgYXJyYXkgPSAoaXNGbG9hdCA/IG5ldyBXZWJHTEZsb2F0QXJyYXkoc2l6ZSkgOiBu
ZXcgV2ViR0xJbnRBcnJheShzaXplKSk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyBp
KyspIHsKKyAgICAgIGFycmF5W2ldID0gaTsKKyAgICB9CisgICAgYXJncy5wdXNoKGFycmF5KTsK
KyAgfSBlbHNlIHsKKyAgICAvLyBDYWxsIHZhcmlhbnQgd2hpY2ggdGFrZXMgdmFsdWVzIGFzIHBh
cmFtZXRlcnMKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKykgeworICAgICAgYXJn
cy5wdXNoKGkpOworICAgIH0KKyAgfQorICB2YXIgZnVuYyA9IGdsW25hbWVdOworICByZXR1cm4g
ZnVuYy5hcHBseShnbCwgYXJncyk7CiB9CiAKIHZhciBmdW5jcyA9IFsgInVuaWZvcm0xZiIsICJ1
bmlmb3JtMWZ2IiwgInVuaWZvcm0xaSIsICJ1bmlmb3JtMWl2IiwKQEAgLTU2LDkgKzU2LDkgQEAg
dmFyIGZ1bmNzID0gWyAidW5pZm9ybTFmIiwgInVuaWZvcm0xZnYiLAogICAgICAgICAgICAgICAi
dW5pZm9ybTRmIiwgInVuaWZvcm00ZnYiLCAidW5pZm9ybTRpIiwgInVuaWZvcm00aXYiLAogICAg
ICAgICAgICAgICAidW5pZm9ybU1hdHJpeDJmdiIsICJ1bmlmb3JtTWF0cml4M2Z2IiwgInVuaWZv
cm1NYXRyaXg0ZnYiIF07CiBmb3IgKHZhciBpID0gMDsgaSA8IGZ1bmNzLmxlbmd0aDsgaSsrKSB7
Ci0gICAgY2FsbFN0cmluZyA9ICJjYWxsVW5pZm9ybUZ1bmN0aW9uKCciICsgZnVuY3NbaV0gKyAi
JykiOwotICAgIHNob3VsZEJlVW5kZWZpbmVkKGNhbGxTdHJpbmcpOwotICAgIHNob3VsZEJlKCJn
bC5nZXRFcnJvcigpIiwgImdsLk5PX0VSUk9SIik7CisgIGNhbGxTdHJpbmcgPSAiY2FsbFVuaWZv
cm1GdW5jdGlvbignIiArIGZ1bmNzW2ldICsgIicpIjsKKyAgc2hvdWxkQmVVbmRlZmluZWQoY2Fs
bFN0cmluZyk7CisgIHNob3VsZEJlKCJnbC5nZXRFcnJvcigpIiwgImdsLk5PX0VSUk9SIik7CiB9
CiAKIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy93ZWJnbC9wb2ludC1zaXplLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9wb2ludC1zaXplLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
NjM0MzgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9wb2ludC1zaXplLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMiw4ICsyLDEwIEBAIFZlcmlmeSBHTF9WRVJURVhf
UFJPR1JBTV9QT0lOVF9TSVpFIGlzIGUKIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCi1S
ZWdyZXNzaW9uIHRlc3QgZm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zNzE3OCA6IE11c3QgZW5hYmxlIEdMX1ZFUlRFWF9QUk9HUkFNX1BPSU5UX1NJWkUgZHVyaW5n
IGluaXRpYWxpemF0aW9uCiBEcmF3IGEgcG9pbnQgb2Ygc2l6ZSAxIGFuZCB2ZXJpZnkgaXQgZG9l
cyBub3QgdG91Y2ggYW55IG90aGVyIHBpeGVscy4KIERyYXcgYSBwb2ludCBvZiBzaXplIDIgYW5k
IHZlcmlmeSBpdCBmaWxscyB0aGUgYXBwcm9wcmlhdGUgcmVnaW9uLgogUEFTUyAKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQogCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9wb2ludC1zaXplLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcG9pbnQtc2l6ZS5odG1sCShyZXZpc2lvbiA2MzQz
OCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3BvaW50LXNpemUuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMTEzLDEwICsxMTMsMTMgQEAgZnVuY3Rpb24gcnVuVGVzdCgpCiA8c2Ny
aXB0PgogZGVzY3JpcHRpb24oJ1ZlcmlmeSBHTF9WRVJURVhfUFJPR1JBTV9QT0lOVF9TSVpFIGlz
IGVuYWJsZWQgaW4gV2ViR0wnKTsKIAotZGVidWcoJ1JlZ3Jlc3Npb24gdGVzdCBmb3IgPGEgaHJl
Zj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3MTc4Ij5odHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzcxNzg8L2E+IDogPGNvZGU+TXVzdCBl
bmFibGUgR0xfVkVSVEVYX1BST0dSQU1fUE9JTlRfU0laRSBkdXJpbmcgaW5pdGlhbGl6YXRpb248
L2NvZGU+Jyk7Ci0KIGlmIChydW5UZXN0KCkpCiAgICAgdGVzdFBhc3NlZCgiIik7CisKK3N1Y2Nl
c3NmdWxseVBhcnNlZCA9IHRydWU7CiA8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorCiA8L2JvZHk+CiA8L2h0bWw+
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9yZW5kZXJidWZmZXItaW5pdGlh
bGl6YXRpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL3dlYmdsL3JlbmRlcmJ1ZmZlci1pbml0aWFsaXphdGlvbi1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDYzNDM4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVuZGVyYnVmZmVy
LWluaXRpYWxpemF0aW9uLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMiw3ICsyLDYg
QEAgVmVyaWZ5IHJlbmRlcmJ1ZmZlcnMgYXJlIGluaXRpYWxpemVkIHRvIAogCiBPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCiAKLVJlZ3Jlc3Npb24gdGVzdCBmb3IgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTM2MjQ4IDogSW1wbGVtZW50IGxhenkgY2xlYXJpbmcgb2Yg
cmVuZGVyYnVmZmVycwogVGVzdCB3aGV0aGVyIHRoZSBXZWJHTCBpbnRlcm5hbCBidWZmZXJzIGhh
dmUgYmVlbiBpbml0aWFsaXplZCB0byAwLgogUEFTUyBCdWZmZXJzIGhhdmUgYmVlbiBpbml0aWFs
aXplZCB0byAwLgogVGVzdCB3aGV0aGVyIHVzZXIgY3JlYXRlZCBidWZmZXJzIGhhdmUgYmVlbiBp
bml0aWFsaXplZCB0byAwLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVu
ZGVyYnVmZmVyLWluaXRpYWxpemF0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvd2ViZ2wvcmVuZGVyYnVmZmVyLWluaXRpYWxpemF0aW9uLmh0bWwJKHJldmlz
aW9uIDYzNDM4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVuZGVyYnVmZmVy
LWluaXRpYWxpemF0aW9uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTcwLDggKzcwLDYgQEAgdmFy
IHN1Y2Nlc3NmdWxseVBhcnNlZCA9IGZhbHNlOwogCiBkZXNjcmlwdGlvbignVmVyaWZ5IHJlbmRl
cmJ1ZmZlcnMgYXJlIGluaXRpYWxpemVkIHRvIDAgYmVmb3JlIGJlaW5nIHJlYWQgaW4gV2ViR0wn
KTsKIAotZGVidWcoJ1JlZ3Jlc3Npb24gdGVzdCBmb3IgPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2MjQ4Ij5odHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzYyNDg8L2E+IDogPGNvZGU+SW1wbGVtZW50IGxhenkgY2xlYXJpbmcg
b2YgcmVuZGVyYnVmZmVyczwvY29kZT4nKTsKLQogcnVuVGVzdCgpOwogCiBzdWNjZXNzZnVsbHlQ
YXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvdGV4LWlt
YWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1hcnJheS1idWZmZXItdmlldy1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvdGV4LWltYWdlLWFu
ZC1zdWItaW1hZ2UtMmQtd2l0aC1hcnJheS1idWZmZXItdmlldy1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDYzNDM4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvdGV4LWltYWdlLWFu
ZC1zdWItaW1hZ2UtMmQtd2l0aC1hcnJheS1idWZmZXItdmlldy1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTMsNyArMyw2IEBAIFZlcmlmaWVzIHRleEltYWdlMkQgYW5kIHRleFN1Yklt
YWdlMkQgY28KIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCi1SZWdyZXNzaW9uIHRlc3Qg
Zm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDM5OCA6IFN1cHBv
cnQgVU5QQUNLX0ZMSVBfWV9XRUJHTCBhbmQgVU5QQUNLX1BSRU1VTFRJUExZX0FMUEhBX1dFQkdM
IGZvciB0ZXhJbWFnZTJEIHRha2luZyBBcnJheUJ1ZmZlclZpZXcKIFRlc3RpbmcgdGV4SW1hZ2Uy
RCB3aXRoIHR5cGU9VU5TSUdORURfQllURSwgdW5wYWNrQWxpZ25tZW50PTEsIGZsaXBZPXRydWUs
IHByZW11bHRpcGx5QWxwaGE9ZmFsc2UKIENoZWNraW5nIGJvdHRvbSBwaXhlbAogUEFTUyBwaXhl
bCBpcyBjb3JyZWN0Q29sb3IKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3Rl
eC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtYXJyYXktYnVmZmVyLXZpZXcuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC90ZXgtaW1hZ2UtYW5kLXN1
Yi1pbWFnZS0yZC13aXRoLWFycmF5LWJ1ZmZlci12aWV3Lmh0bWwJKHJldmlzaW9uIDYzNDM4KQor
KysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Ut
MmQtd2l0aC1hcnJheS1idWZmZXItdmlldy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxNiAr
MzQsMTIgQEAgdmFyIGltYWdlRGF0YSA9IG51bGw7CiAKIGZ1bmN0aW9uIGluaXQoKQogewotICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRXZWJHTEVuYWJsZWQiLCAiMSIpOwot
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBpZiAod2luZG93LmluaXROb25L
aHJvbm9zRnJhbWV3b3JrKSB7CisgICAgICAgIHdpbmRvdy5pbml0Tm9uS2hyb25vc0ZyYW1ld29y
ayh0cnVlKTsKICAgICB9CiAKICAgICBkZXNjcmlwdGlvbignVmVyaWZpZXMgdGV4SW1hZ2UyRCBh
bmQgdGV4U3ViSW1hZ2UyRCBjb2RlIHBhdGhzIHRha2luZyBBcnJheUJ1ZmZlclZpZXcnKTsKIAot
ICAgIGRlYnVnKCdSZWdyZXNzaW9uIHRlc3QgZm9yIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDM5OCI+aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTQwMzk4PC9hPiA6IDxjb2RlPlN1cHBvcnQgVU5QQUNLX0ZMSVBfWV9XRUJH
TCBhbmQgVU5QQUNLX1BSRU1VTFRJUExZX0FMUEhBX1dFQkdMIGZvciB0ZXhJbWFnZTJEIHRha2lu
ZyBBcnJheUJ1ZmZlclZpZXc8L2NvZGU+Jyk7Ci0KICAgICB2YXIgY2FudmFzMmQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgidGV4Y2FudmFzIik7CiAgICAgdmFyIGNvbnRleHQyZCA9IGNhbnZh
czJkLmdldENvbnRleHQoIjJkIik7CiAgICAgaW1hZ2VEYXRhID0gY29udGV4dDJkLmNyZWF0ZUlt
YWdlRGF0YSgxLCAyKTsKQEAgLTI2NCw4ICsyNjAsOCBAQCBmdW5jdGlvbiBydW5UZXN0KCkKIH0K
IAogZnVuY3Rpb24gZmluaXNoKCkgewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlm
ICh3aW5kb3cubm9uS2hyb25vc0ZyYW1ld29ya05vdGlmeURvbmUpIHsKKyAgICAgICAgd2luZG93
Lm5vbktocm9ub3NGcmFtZXdvcmtOb3RpZnlEb25lKCk7CiAgICAgfQogfQogPC9zY3JpcHQ+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFn
ZS0yZC13aXRoLWltYWdlLWRhdGEtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvY2FudmFzL3dlYmdsL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1h
Z2UtZGF0YS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDYzNDM4KQorKysgTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvd2ViZ2wvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1kYXRh
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMyw3ICszLDYgQEAgVmVyaWZ5IHRleElt
YWdlMkQgYW5kIHRleFN1YkltYWdlMkQgY29kZQogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CiAKLVJlZ3Jlc3Npb24gdGVzdCBmb3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTM0NDU5IDogUmVmYWN0b3IgdGV4SW1hZ2UyRCBhbmQgdGV4U3ViSW1hZ2UyRCB0YWtp
bmcgSW1hZ2VEYXRhIHRvIHVzZSBjb21tb24gY29kZQogVGVzdGluZyB0ZXhJbWFnZTJEIHdpdGgg
ZmxpcFk9dHJ1ZSBhbmQgcHJlbXVsdGlwbHlBbHBoYT1mYWxzZQogQ2hlY2tpbmcgYm90dG9tIHBp
eGVsCiBQQVNTIHBpeGVsIGlzIGNvcnJlY3RDb2xvcgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9j
YW52YXMvd2ViZ2wvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1kYXRhLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvdGV4LWltYWdl
LWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1kYXRhLmh0bWwJKHJldmlzaW9uIDYzNDM4KQor
KysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2Ut
MmQtd2l0aC1pbWFnZS1kYXRhLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTM0LDE2ICszNCwxMiBA
QCB2YXIgaW1hZ2VEYXRhID0gbnVsbDsKIAogZnVuY3Rpb24gaW5pdCgpCiB7Ci0gICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdFdlYkdMRW5hYmxlZCIsICIxIik7Ci0gICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIGlmICh3aW5kb3cuaW5pdE5vbktocm9ub3NG
cmFtZXdvcmspIHsKKyAgICAgICAgd2luZG93LmluaXROb25LaHJvbm9zRnJhbWV3b3JrKHRydWUp
OwogICAgIH0KIAogICAgIGRlc2NyaXB0aW9uKCdWZXJpZnkgdGV4SW1hZ2UyRCBhbmQgdGV4U3Vi
SW1hZ2UyRCBjb2RlIHBhdGhzIHRha2luZyBJbWFnZURhdGEnKTsKIAotICAgIGRlYnVnKCdSZWdy
ZXNzaW9uIHRlc3QgZm9yIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0zNDQ1OSI+aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM0
NDU5PC9hPiA6IDxjb2RlPlJlZmFjdG9yIHRleEltYWdlMkQgYW5kIHRleFN1YkltYWdlMkQgdGFr
aW5nIEltYWdlRGF0YSB0byB1c2UgY29tbW9uIGNvZGU8L2NvZGU+Jyk7Ci0KICAgICB2YXIgY2Fu
dmFzMmQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGV4Y2FudmFzIik7CiAgICAgdmFyIGNv
bnRleHQyZCA9IGNhbnZhczJkLmdldENvbnRleHQoIjJkIik7CiAgICAgaW1hZ2VEYXRhID0gY29u
dGV4dDJkLmNyZWF0ZUltYWdlRGF0YSgxLCAyKTsKQEAgLTE4Nyw4ICsxODMsOCBAQCBmdW5jdGlv
biBydW5UZXN0KCkKIH0KIAogZnVuY3Rpb24gZmluaXNoKCkgewotICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5
RG9uZSgpOworICAgIGlmICh3aW5kb3cubm9uS2hyb25vc0ZyYW1ld29ya05vdGlmeURvbmUpIHsK
KyAgICAgICAgd2luZG93Lm5vbktocm9ub3NGcmFtZXdvcmtOb3RpZnlEb25lKCk7CiAgICAgfQog
fQogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC90ZXgtaW1h
Z2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0y
ZC13aXRoLWltYWdlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNjM0MzgpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2NhbnZhcy93ZWJnbC90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdl
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMiw3ICsyLDYgQEAgVmVyaWZ5IHRleElt
YWdlMkQgYW5kIHRleFN1YkltYWdlMkQgY29kZQogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CiAKLVJlZ3Jlc3Npb24gdGVzdCBmb3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTM0NDU4IDogUmVmYWN0b3IgdGV4SW1hZ2UyRCBhbmQgdGV4U3ViSW1hZ2UyRCB0YWtp
bmcgSW1hZ2UgdG8gdXNlIGNvbW1vbiBjb2RlCiBUZXN0aW5nIHRleEltYWdlMkQgd2l0aCBmbGlw
WT10cnVlCiBDaGVja2luZyBsb3dlciBsZWZ0IGNvcm5lcgogUEFTUyBwaXhlbCBpcyBjb3JyZWN0
Q29sb3IKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3RleC1pbWFnZS1hbmQt
c3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy93ZWJnbC90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLmh0
bWwJKHJldmlzaW9uIDYzNDM4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvdGV4
LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0zMywxNiArMzMsMTIgQEAgdmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IGZhbHNlOwogCiBmdW5j
dGlvbiBpbml0KCkKIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0g
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0V2Vi
R0xFbmFibGVkIiwgIjEiKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAg
aWYgKHdpbmRvdy5pbml0Tm9uS2hyb25vc0ZyYW1ld29yaykgeworICAgICAgICB3aW5kb3cuaW5p
dE5vbktocm9ub3NGcmFtZXdvcmsodHJ1ZSk7CiAgICAgfQogCiAgICAgZGVzY3JpcHRpb24oJ1Zl
cmlmeSB0ZXhJbWFnZTJEIGFuZCB0ZXhTdWJJbWFnZTJEIGNvZGUgcGF0aHMgdGFraW5nIEltYWdl
cycpOwogCi0gICAgZGVidWcoJ1JlZ3Jlc3Npb24gdGVzdCBmb3IgPGEgaHJlZj0iaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM0NDU4Ij5odHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQ0NTg8L2E+IDogPGNvZGU+UmVmYWN0b3IgdGV4SW1hZ2Uy
RCBhbmQgdGV4U3ViSW1hZ2UyRCB0YWtpbmcgSW1hZ2UgdG8gdXNlIGNvbW1vbiBjb2RlPC9jb2Rl
PicpOwotCiAgICAgZ2wgPSBpbml0V2ViR0woImV4YW1wbGUiLCAidnNoYWRlciIsICJmc2hhZGVy
IiwgWyAiZ19Qb3NpdGlvbiIsICJnX1RleENvb3JkMCIgXSwgWyAwLCAwLCAwLCAxIF0sIDEpOwog
CiAgICAgdGV4dHVyZUxvYyA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihnbC5wcm9ncmFtLCAidGV4
Iik7CkBAIC0xODYsOCArMTgyLDggQEAgZnVuY3Rpb24gcnVuVGVzdChpbWFnZSkKIH0KIAogZnVu
Y3Rpb24gZmluaXNoKCkgewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsK
LSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5k
b3cubm9uS2hyb25vc0ZyYW1ld29ya05vdGlmeURvbmUpIHsKKyAgICAgICAgd2luZG93Lm5vbkto
cm9ub3NGcmFtZXdvcmtOb3RpZnlEb25lKCk7CiAgICAgfQogfQogPC9zY3JpcHQ+CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC90ZXgtaW1hZ2UtYW5kLXVuaWZvcm0tYmluZGlu
Zy1idWdzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy93ZWJnbC90ZXgtaW1hZ2UtYW5kLXVuaWZvcm0tYmluZGluZy1idWdzLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gNjM0MzgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC90ZXgtaW1h
Z2UtYW5kLXVuaWZvcm0tYmluZGluZy1idWdzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMSwxMCArMSwxMCBAQAotUmVncmVzc2lvbiB0ZXN0IGZvciBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzIzNjQgOiBbQ2hyb21pdW1dIFNwb3JlVmlld2VyIGRlbW8g
ZG9lc24ndCB3b3JrIGluIENocm9taXVtCitUZXN0cyBwYXNzaW5nIGEgdmVjNCB0byBhIHVuaWZv
cm0gYW5kIGEgY2FudmFzIHRvIHRleEltYWdlMkQKIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgogCiBQQVNTIGdsLnVzZVByb2dyYW0oZmxvYXRQcm9ncmFtKSBpcyB1bmRlZmluZWQuCiBQQVNT
IGdsLmdldEVycm9yKCkgaXMgZ2wuTk9fRVJST1IKLVBBU1MgZ2wudW5pZm9ybTRmdihmdmFsNExv
YywgbmV3IFdlYkdMRmxvYXRBcnJheShbMC4xLCAwLjIsIDAuNCwgMS4wXSkpOyBpcyB1bmRlZmlu
ZWQuCitQQVNTIGdsLnVuaWZvcm00ZnYoZnZhbDRMb2MsIG5ldyBGbG9hdDMyQXJyYXkoWzAuMSwg
MC4yLCAwLjQsIDEuMF0pKTsgaXMgdW5kZWZpbmVkLgogUEFTUyBnbC5iaW5kVGV4dHVyZShnbC5U
RVhUVVJFXzJELCB0ZXh0dXJlKSBpcyB1bmRlZmluZWQuCiBQQVNTIGdsLnRleEltYWdlMkQoZ2wu
VEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgdG1wY2Fu
dmFzKSBpcyB1bmRlZmluZWQuCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC90ZXgtaW1hZ2UtYW5kLXVuaWZvcm0tYmlu
ZGluZy1idWdzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2Vi
Z2wvdGV4LWltYWdlLWFuZC11bmlmb3JtLWJpbmRpbmctYnVncy5odG1sCShyZXZpc2lvbiA2MzQz
OCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3RleC1pbWFnZS1hbmQtdW5pZm9y
bS1iaW5kaW5nLWJ1Z3MuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTAsMTQgKzEwLDE0IEBACiAK
IDxzY3JpcHQ+CiAKLWRlc2NyaXB0aW9uKCdSZWdyZXNzaW9uIHRlc3QgZm9yIDxhIGhyZWY9Imh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjM2NCI+aHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyMzY0PC9hPiA6IDxjb2RlPltDaHJvbWl1bV0g
U3BvcmVWaWV3ZXIgZGVtbyBkb2VzblwndCB3b3JrIGluIENocm9taXVtPC9jb2RlPicpOworZGVz
Y3JpcHRpb24oJ1Rlc3RzIHBhc3NpbmcgYSB2ZWM0IHRvIGEgdW5pZm9ybSBhbmQgYSBjYW52YXMg
dG8gdGV4SW1hZ2UyRCcpOwogCiB2YXIgZ2wgPSBjcmVhdGUzRENvbnRleHQoKTsKIHZhciBmbG9h
dFByb2dyYW0gPSBsb2FkUHJvZ3JhbShnbCwgInJlc291cmNlcy9mbG9hdFVuaWZvcm1TaGFkZXIu
dmVydCIsICJyZXNvdXJjZXMvbm9vcFVuaWZvcm1TaGFkZXIuZnJhZyIpOwogc2hvdWxkQmVVbmRl
ZmluZWQoImdsLnVzZVByb2dyYW0oZmxvYXRQcm9ncmFtKSIpOwogdmFyIGZ2YWw0TG9jID0gZ2wu
Z2V0VW5pZm9ybUxvY2F0aW9uKGZsb2F0UHJvZ3JhbSwgImZ2YWw0Iik7CiBzaG91bGRCZSgiZ2wu
Z2V0RXJyb3IoKSIsICJnbC5OT19FUlJPUiIpOwotc2hvdWxkQmVVbmRlZmluZWQoImdsLnVuaWZv
cm00ZnYoZnZhbDRMb2MsIG5ldyBXZWJHTEZsb2F0QXJyYXkoWzAuMSwgMC4yLCAwLjQsIDEuMF0p
KTsiKTsKK3Nob3VsZEJlVW5kZWZpbmVkKCJnbC51bmlmb3JtNGZ2KGZ2YWw0TG9jLCBuZXcgRmxv
YXQzMkFycmF5KFswLjEsIDAuMiwgMC40LCAxLjBdKSk7Iik7CiAKIHZhciB0bXBjYW52YXMgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsKIHRtcGNhbnZhcy53aWR0aCA9IDI7Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC90ZXgtaW1hZ2Utd2l0aC1mb3JtYXQt
YW5kLXR5cGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL3dlYmdsL3RleC1pbWFnZS13aXRoLWZvcm1hdC1hbmQtdHlwZS1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDYzNDM4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvdGV4LWltYWdl
LXdpdGgtZm9ybWF0LWFuZC10eXBlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMiw5
ICsyLDYgQEAgVmVyaWZ5IHRleEltYWdlMkQgYW5kIHRleFN1YkltYWdlMkQgY29kZQogCiBPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCiAKLVJlZ3Jlc3Npb24gdGVzdCBmb3I6Ci1odHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAzMTkgOiBJbXBsZW1lbnQgZm9ybWF0IGNv
bnZlcnNpb25zIGluIHRleEltYWdlMkQgYW5kIHRleFN1YkltYWdlMkQgdGFraW5nIEhUTUwgZGF0
YQotaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMzk4IDogU3VwcG9y
dCBVTlBBQ0tfRkxJUF9ZX1dFQkdMIGFuZCBVTlBBQ0tfUFJFTVVMVElQTFlfQUxQSEFfV0VCR0wg
Zm9yIHRleEltYWdlMkQgdGFraW5nIEFycmF5QnVmZmVyVmlldwogVGVzdGluZyB0ZXhJbWFnZTJE
IHdpdGggSW1hZ2UgYXQgMjU2eDEKIFBBU1MgUkdCQS9VTlNJR05FRF9CWVRFIHNob3VsZCBtYWlu
dGFpbiBmdWxsIHByZWNpc2lvbiBvZiBkYXRhCiBUZXN0aW5nIHRleEltYWdlMkQgd2l0aCBJbWFn
ZSBhdCAyNTZ4MQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvdGV4LWltYWdl
LXdpdGgtZm9ybWF0LWFuZC10eXBlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvd2ViZ2wvdGV4LWltYWdlLXdpdGgtZm9ybWF0LWFuZC10eXBlLmh0bWwJKHJldmlz
aW9uIDYzNDM4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvdGV4LWltYWdlLXdp
dGgtZm9ybWF0LWFuZC10eXBlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTUxLDE4ICs1MSwxMiBA
QCB2YXIgRGF0YU1vZGUgPSB7CiAKIGZ1bmN0aW9uIGluaXQoKQogewotICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3Zl
cnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRXZWJHTEVuYWJsZWQiLCAiMSIpOwotICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBpZiAod2luZG93LmluaXROb25LaHJvbm9zRnJhbWV3
b3JrKSB7CisgICAgICAgIHdpbmRvdy5pbml0Tm9uS2hyb25vc0ZyYW1ld29yayh0cnVlKTsKICAg
ICB9CiAKICAgICBkZXNjcmlwdGlvbignVmVyaWZ5IHRleEltYWdlMkQgYW5kIHRleFN1YkltYWdl
MkQgY29kZSBwYXRocyB0YWtpbmcgYm90aCBIVE1MIGFuZCB1c2VyLXNwZWNpZmllZCBkYXRhIHdp
dGggYWxsIGZvcm1hdC90eXBlIGNvbWJpbmF0aW9ucycpOwogCi0gICAgZGVidWcoJ1JlZ3Jlc3Np
b24gdGVzdCBmb3I6Jyk7Ci0gICAgZGVidWcoJzxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00MDMxOSI+aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQwMzE5PC9hPiA6IDxjb2RlPkltcGxlbWVudCBmb3JtYXQgY29udmVyc2lvbnMg
aW4gdGV4SW1hZ2UyRCBhbmQgdGV4U3ViSW1hZ2UyRCB0YWtpbmcgSFRNTCBkYXRhPC9jb2RlPicp
OwotICAgIGRlYnVnKCc8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDAzOTgiPmh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDM5
ODwvYT4gOiA8Y29kZT5TdXBwb3J0IFVOUEFDS19GTElQX1lfV0VCR0wgYW5kIFVOUEFDS19QUkVN
VUxUSVBMWV9BTFBIQV9XRUJHTCBmb3IgdGV4SW1hZ2UyRCB0YWtpbmcgQXJyYXlCdWZmZXJWaWV3
PC9jb2RlPicpOwotCiAgICAgZ2wgPSBpbml0V2ViR0woImV4YW1wbGUiLCAidnNoYWRlciIsICJm
c2hhZGVyIiwgWyAiZ19Qb3NpdGlvbiIsICJnX1RleENvb3JkMCIgXSwgWyAwLCAwLCAwLCAxIF0s
IDEpOwogICAgIGdsLmRpc2FibGUoZ2wuQkxFTkQpOwogCkBAIC00ODAsOCArNDc0LDggQEAgZnVu
Y3Rpb24gcnVuT25lVGVzdCh0ZXN0Q2FzZSkKIH0KIAogZnVuY3Rpb24gZmluaXNoKCkgewotICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cubm9uS2hyb25vc0ZyYW1ld29y
a05vdGlmeURvbmUpIHsKKyAgICAgICAgd2luZG93Lm5vbktocm9ub3NGcmFtZXdvcmtOb3RpZnlE
b25lKCk7CiAgICAgfQogfQogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC90
ZXgtc3ViLWltYWdlLTJkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy93ZWJnbC90ZXgtc3ViLWltYWdlLTJkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
NjM0MzgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC90ZXgtc3ViLWltYWdlLTJk
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMiw2ICsyLDggQEAgVGVzdHMgdGV4U3Vi
SW1hZ2UyRCB1cGxvYWQgcGF0aCBmcm9tIFdlYgogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CiAKLVJlZ3Jlc3Npb24gdGVzdCBmb3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTMzOTMyIDogW0Nocm9taXVtXSBJbXBsZW1lbnQgdGV4U3ViSW1hZ2UyRCB0YWtpbmcg
V2ViR0xBcnJheQogUEFTUyAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC90ZXgtc3Vi
LWltYWdlLTJkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2Vi
Z2wvdGV4LXN1Yi1pbWFnZS0yZC5odG1sCShyZXZpc2lvbiA2MzQzOCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL3dlYmdsL3RleC1zdWItaW1hZ2UtMmQuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMzUsOCArMzUsNiBAQCB2b2lkIG1haW4oKQogPHNjcmlwdD4KIGRlc2NyaXB0aW9uKCdUZXN0
cyB0ZXhTdWJJbWFnZTJEIHVwbG9hZCBwYXRoIGZyb20gV2ViR0xVbnNpZ25lZEJ5dGVBcnJheScp
OwogCi1kZWJ1ZygnUmVncmVzc2lvbiB0ZXN0IGZvciA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzM5MzIiPmh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zMzkzMjwvYT4gOiA8Y29kZT5bQ2hyb21pdW1dIEltcGxlbWVudCB0ZXhT
dWJJbWFnZTJEIHRha2luZyBXZWJHTEFycmF5PC9jb2RlPicpOwotCiB2YXIgZ2wgPSBpbml0V2Vi
R0woImV4YW1wbGUiLCAidnNoYWRlciIsICJmc2hhZGVyIiwgWyAiZ19Qb3NpdGlvbiIsICJnX1Rl
eENvb3JkMCIgXSwgWyAwLCAwLCAwLCAxIF0sIDEpOwogdmFyIHRleHR1cmVXaWR0aCA9IDI1NjsK
IHZhciB0ZXh0dXJlSGVpZ2h0ID0gMTsKQEAgLTExOCw2ICsxMTYsOSBAQCBmb3IgKHZhciBpID0g
MDsgaSA8IHRleHR1cmVXaWR0aDsgaSsrKSB7CiAKIGlmIChwYXNzZWQpCiAgICAgdGVzdFBhc3Nl
ZCgiIik7CisKK3N1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CiA8L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9k
eT4KIDwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3RleHR1cmUt
YWN0aXZlLWJpbmQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93
ZWJnbC90ZXh0dXJlLWFjdGl2ZS1iaW5kLmh0bWwJKHJldmlzaW9uIDYzNDM4KQorKysgTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvdGV4dHVyZS1hY3RpdmUtYmluZC5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDExICsxLDExIEBACiA8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8v
RFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIgogICAiaHR0cDovL3d3dy53My5vcmcvVFIv
aHRtbDQvbG9vc2UuZHRkIj4KIDxodG1sPgotPGhlYWQ+Ci08dGl0bGU+V2ViR0wgQWN0aXZlVGV4
dHVyZSBCaW5kVGV4dHVyZSBjb25mb3JtYW5jZSB0ZXN0LjwvdGl0bGU+Ci08bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgot
PHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYmdsLXRlc3QuanMiPiA8L3NjcmlwdD4KKyAgPGhl
YWQ+CisgICAgPHRpdGxlPldlYkdMIEFjdGl2ZVRleHR1cmUgQmluZFRleHR1cmUgY29uZm9ybWFu
Y2UgdGVzdC48L3RpdGxlPgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
anMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4u
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9
InJlc291cmNlcy93ZWJnbC10ZXN0LmpzIj4gPC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KIDxj
YW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIHN0eWxlPSJ3aWR0aDogNDBw
eDsgaGVpZ2h0OiA0MHB4OyI+PC9jYW52YXM+CkBAIC0zNiw5ICszNiw4IEBAIHZvaWQgbWFpbigp
CiA8c2NyaXB0PgogZnVuY3Rpb24gaW5pdCgpCiB7Ci0gIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2Uo
IldlYktpdFdlYkdMRW5hYmxlZCIsICIxIik7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworICBpZiAod2luZG93LmluaXROb25LaHJvbm9zRnJhbWV3b3JrKSB7CisgICAg
d2luZG93LmluaXROb25LaHJvbm9zRnJhbWV3b3JrKGZhbHNlKTsKICAgfQogCiAgIGRlYnVnKCJU
ZXN0cyB0aGF0IGdsQWN0aXZlVGV4dHVyZSBhbmQgZ2xCaW5kVGV4dHVyZSB3b3JrIGFzIGV4cGVj
dGVkIik7CkBAIC0xMzEsOCArMTMwLDE0IEBAIGZ1bmN0aW9uIGluaXQoKQogICAgIGdsLnJlYWRQ
aXhlbHMoeCwgeSwgMSwgMSwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgYnVmKTsKICAgICB2
YXIgbXNnID0gJ2V4cGVjdGVkOicgKwogICAgICAgICBjWzBdICsgJywgJyArIGNbMV0gKyAnLCAn
ICsgY1syXSArICcsICcgKyBjWzNdICsgJyBmb3VuZDogJyArCi0gICAgICAgIGJ1ZlswXSArICcs
ICcgKyBidWZbMV0gKyAnLCAnICsgYnVmWzJdICsgJywgJyArIGJ1ZlszXTsKLSAgICBpZiAoYnVm
WzBdICE9IGNbMF0gfHwgYnVmWzFdICE9IGNbMV0gfHwgYnVmWzJdICE9IGNbMl0gfHwgYnVmWzNd
ICE9IGNbM10pCisgICAgICAgIGJ1ZlswXSArICcsICcgKworICAgICAgICBidWZbMV0gKyAnLCAn
ICsKKyAgICAgICAgYnVmWzJdICsgJywgJyArCisgICAgICAgIGJ1ZlszXTsKKyAgICBpZiAoYnVm
WzBdICE9IGNbMF0gfHwKKyAgICAgICAgYnVmWzFdICE9IGNbMV0gfHwKKyAgICAgICAgYnVmWzJd
ICE9IGNbMl0gfHwKKyAgICAgICAgYnVmWzNdICE9IGNbM10pCiAgICAgICB0ZXN0RmFpbGVkKG1z
Zyk7CiAgICAgZWxzZQogICAgICAgdGVzdFBhc3NlZChtc2cpOwpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvd2ViZ2wvdGV4dHVyZS1jb21wbGV0ZS5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3RleHR1cmUtY29tcGxldGUuaHRtbAkocmV2aXNp
b24gNjM0MzgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC90ZXh0dXJlLWNvbXBs
ZXRlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTM1LDkgKzM1LDggQEAgdm9pZCBtYWluKCkKIDxz
Y3JpcHQ+CiBmdW5jdGlvbiBpbml0KCkKIHsKLSAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2Vi
S2l0V2ViR0xFbmFibGVkIiwgIjEiKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7CisgIGlmICh3aW5kb3cuaW5pdE5vbktocm9ub3NGcmFtZXdvcmspIHsKKyAgICB3aW5k
b3cuaW5pdE5vbktocm9ub3NGcmFtZXdvcmsoZmFsc2UpOwogICB9CiAKICAgZGVidWcoIkNoZWNr
cyB0aGF0IGEgdGV4dHVyZSB0aGF0IGlzIG5vdCAtdGV4dHVyZS1jb21wbGV0ZS0gZG9lcyBub3Qg
ZHJhdyBpZiIrCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC90ZXh0dXJlLW5w
b3QtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dl
YmdsL3RleHR1cmUtbnBvdC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDYzNDM4KQorKysgTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvdGV4dHVyZS1ucG90LWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMSwxMSArMSwxMiBAQAotIAotV2ViR0wgTlBPVCB0ZXh0dXJlIGNvbmZvcm1h
bmNlIHRlc3QKKyBQQVNTIFNob3VsZCBiZSBubyBlcnJvcnMgZnJvbSBzZXR1cC4KIFBBU1MgZ2wu
dGV4SW1hZ2UyRCB3aXRoIE5QT1QgdGV4dHVyZSB3aXRoIGxldmVsID4gMCBzaG91bGQgcmV0dXJu
IElOVkFMSURfVkFMVUUKIFBBU1MgZ2wudGV4SW1hZ2UyRCB3aXRoIE5QT1QgdGV4dHVyZSBhdCBs
ZXZlbCAwIHNob3VsZCBzdWNjZWVkCiBQQVNTIGdsLmdlbmVyYXRlTWlwbWFwIHdpdGggTlBPVCB0
ZXh0dXJlIHNob3VsZCByZXR1cm4gSU5WQUxJRF9PUEVSQVRJT04KIFBBU1MgTlBPVCB0ZXh0dXJl
IHdpdGggVEVYVFVSRV9XUkFQIHNldCB0byBSRVBFQVQgc2hvdWxkIGRyYXcgd2l0aCAwLDAsMCwy
NTUKK1BBU1MgU2hvdWxkIGJlIG5vIGVycm9ycyBmcm9tIHNldHVwLgogUEFTUyBOUE9UIHRleHR1
cmUgd2l0aCBURVhUVVJFX01JTl9GSUxURVIgbm90IE5FQVJFU1Qgb3IgTElORUFSIHNob3VsZCBk
cmF3IHdpdGggMCwwLDAsMjU1Ci1QQVNTIE5QT1QgdGV4dHVyZSB3aXRoIFRFWFRVUkVfTUlOX0ZJ
TFRFUiBzZXQgdG8gTElORUFSIHNob3VsZCBkcmF3IHdpdGggMCwxOTIsMTI4LDI1NQorUEFTUyBT
aG91bGQgYmUgbm8gZXJyb3JzIGZyb20gc2V0dXAuCitQQVNTIE5QT1QgdGV4dHVyZSB3aXRoIFRF
WFRVUkVfTUlOX0ZJTFRFUiBzZXQgdG8gTElORUFSIHNob3VsZCBkcmF3LgogUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy93ZWJnbC90ZXh0dXJlLW5wb3QuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC90ZXh0dXJlLW5wb3QuaHRtbAkocmV2aXNpb24gNjM0Mzgp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC90ZXh0dXJlLW5wb3QuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMSwxNTYgKzEsODIgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8v
VzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iDQotICAiaHR0cDovL3d3dy53My5v
cmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4NCi08aHRtbD4NCi0gIDxoZWFkPg0KLSAgICA8dGl0bGU+
V2ViR0wgTm9uLVBvd2VyIG9mIDIgdGV4dHVyZSBjb25mb3JtYW5jZSB0ZXN0LjwvdGl0bGU+DQot
ICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIi8+DQotICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0Pg0KLSAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYmds
LXRlc3QuanMiPiA8L3NjcmlwdD4NCi08L2hlYWQ+DQotPGJvZHk+DQotPGNhbnZhcyBpZD0iZXhh
bXBsZSIgd2lkdGg9IjQiIGhlaWdodD0iNCIgc3R5bGU9IndpZHRoOiA0MHB4OyBoZWlnaHQ6IDMw
cHg7Ij48L2NhbnZhcz4NCi08Y2FudmFzIGlkPSJjYW52YXMyZCIgd2lkdGg9IjUiIGhlaWdodD0i
MyIgc3R5bGU9IndpZHRoOiA1MHB4OyBoZWlnaHQ6IDMwcHg7Ij48L2NhbnZhcz4NCi08ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+PC9kaXY+DQotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+DQotICAgIDxz
Y3JpcHQgaWQ9InZzaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4NCi0gICAgICAgIGF0
dHJpYnV0ZSB2ZWM0IHZQb3NpdGlvbjsNCi0gICAgICAgIGF0dHJpYnV0ZSB2ZWMyIHRleENvb3Jk
MDsNCi0gICAgICAgIHZhcnlpbmcgdmVjMiB0ZXhDb29yZDsNCi0gICAgICAgIHZvaWQgbWFpbigp
DQotICAgICAgICB7DQotICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSB2UG9zaXRpb247DQotICAg
ICAgICAgICAgdGV4Q29vcmQgPSB0ZXhDb29yZDA7DQotICAgICAgICB9DQotICAgIDwvc2NyaXB0
Pg0KLQ0KLSAgICA8c2NyaXB0IGlkPSJmc2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50
Ij4NCi0gICAgICAgIHVuaWZvcm0gc2FtcGxlcjJEIHRleDsNCi0gICAgICAgIHZhcnlpbmcgdmVj
MiB0ZXhDb29yZDsNCi0gICAgICAgIHZvaWQgbWFpbigpDQotICAgICAgICB7DQotICAgICAgICAg
ICAgZ2xfRnJhZ0NvbG9yID0gdGV4dHVyZTJEKHRleCwgdGV4Q29vcmQpOw0KLSAgICAgICAgfQ0K
LSAgICA8L3NjcmlwdD4NCi0NCi0gICAgPHNjcmlwdD4NCi0gICAgICAgIGZ1bmN0aW9uIGluaXQo
KQ0KLSAgICAgICAgew0KLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpIHsNCi0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVm
ZXJlbmNlKCJXZWJLaXRXZWJHTEVuYWJsZWQiLCAiMSIpOw0KLSAgICAgICAgICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7DQotICAgICAgICAgICAgfQ0KLQ0KLSAgICAg
ICAgICAgIGRlYnVnKCJXZWJHTCBOUE9UIHRleHR1cmUgY29uZm9ybWFuY2UgdGVzdCIpOw0KLQ0K
LSAgICAgICAgICAgIHZhciBjYW52YXMyZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52
YXMyZCIpOw0KLSAgICAgICAgICAgIHZhciBjdHgyZCA9IGNhbnZhczJkLmdldENvbnRleHQoIjJk
Iik7DQotICAgICAgICAgICAgY3R4MmQuZmlsbFN0eWxlID0gInJnYmEoMCwxOTIsMTI4LDI1NSki
Ow0KLSAgICAgICAgICAgIGN0eDJkLmZpbGxSZWN0KDAsIDAsIDUsIDMpOw0KLQ0KLSAgICAgICAg
ICAgIGdsID0gaW5pdFdlYkdMKCJleGFtcGxlIiwgInZzaGFkZXIiLCAiZnNoYWRlciIsIFsgInZQ
b3NpdGlvbiIsICJ0ZXhDb29yZDAiXSwgWyAwLCAwLCAwLCAxIF0sIDEpOw0KLQ0KLSAgICAgICAg
ICAgIGdsLmRpc2FibGUoZ2wuREVQVEhfVEVTVCk7DQotICAgICAgICAgICAgZ2wuZGlzYWJsZShn
bC5CTEVORCk7DQotDQotICAgICAgICAgICAgdmFyIHZlcnRleE9iamVjdCA9IGdsLmNyZWF0ZUJ1
ZmZlcigpOw0KLSAgICAgICAgICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCB2ZXJ0
ZXhPYmplY3QpOw0KLSAgICAgICAgICAgIGdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCBu
ZXcgV2ViR0xGbG9hdEFycmF5KFsgLTEsMSwwLCAxLDEsMCwgLTEsLTEsMCwNCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0x
LC0xLDAsIDEsMSwwLCAxLC0xLDANCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSwgZ2wuU1RBVElDX0RSQVcpOw0KLSAgICAg
ICAgICAgIGdsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KDApOw0KLSAgICAgICAgICAgIGdsLnZl
cnRleEF0dHJpYlBvaW50ZXIoMCwgMywgZ2wuRkxPQVQsIGZhbHNlLCAwLCAwKTsNCi0NCi0gICAg
ICAgICAgICB2YXIgdmVydGV4T2JqZWN0ID0gZ2wuY3JlYXRlQnVmZmVyKCk7DQotICAgICAgICAg
ICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIHZlcnRleE9iamVjdCk7DQotICAgICAg
ICAgICAgZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIG5ldyBXZWJHTEZsb2F0QXJyYXko
WyAwLDAsIDEsMCwgMCwxLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwxLCAxLDAsIDEsMQ0KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pLCBnbC5T
VEFUSUNfRFJBVyk7DQotICAgICAgICAgICAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoMSk7
DQotICAgICAgICAgICAgZ2wudmVydGV4QXR0cmliUG9pbnRlcigxLCAyLCBnbC5GTE9BVCwgZmFs
c2UsIDAsIDApOw0KLQ0KLSAgICAgICAgICAgIHZhciB0ZXggPSBnbC5jcmVhdGVUZXh0dXJlKCk7
DQotICAgICAgICAgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4KTsNCi0NCi0g
ICAgICAgICAgICAvLyBDaGVjayB0aGF0IGFuIE5QT1QgdGV4dHVyZSBub3Qgb24gbGV2ZWwgMCBn
ZW5lcmF0ZXMgSU5WQUxJRF9WQUxVRQ0KLSAgICAgICAgICAgIGdsLnRleEltYWdlMkQoZ2wuVEVY
VFVSRV8yRCwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgIDEsICAgICAgICAgICAgICAgICAv
LyBsZXZlbA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgZ2wuUkdCQSwNCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgIGdsLlJHQkEsDQotICAgICAgICAgICAgICAgICAgICAgICAgICBnbC5V
TlNJR05FRF9CWVRFLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgY2FudmFzMmQpOw0KLSAg
ICAgICAgICAgIGFzc2VydE1zZyhnbC5nZXRFcnJvcigpID09IGdsLklOVkFMSURfVkFMVUUsDQot
ICAgICAgICAgICAgICAgICAgICAgICJnbC50ZXhJbWFnZTJEIHdpdGggTlBPVCB0ZXh0dXJlIHdp
dGggbGV2ZWwgPiAwIHNob3VsZCByZXR1cm4gSU5WQUxJRF9WQUxVRSIpOw0KLQ0KLSAgICAgICAg
ICAgIC8vIENoZWNrIHRoYXQgYW4gTlBPVCB0ZXh0dXJlIG9uIGxldmVsIDAgc3VjY2VlZHMNCi0g
ICAgICAgICAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsDQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAwLCAgICAgICAgICAgICAgICAgLy8gbGV2ZWwNCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgIGdsLlJHQkEsDQotICAgICAgICAgICAgICAgICAgICAgICAgICBnbC5SR0JBLA0K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgZ2wuVU5TSUdORURfQllURSwNCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgIGNhbnZhczJkKTsNCi0gICAgICAgICAgICBhc3NlcnRNc2coZ2wuZ2V0
RXJyb3IoKSA9PSBnbC5OT19FUlJPUiwNCi0gICAgICAgICAgICAgICAgICAgICAgImdsLnRleElt
YWdlMkQgd2l0aCBOUE9UIHRleHR1cmUgYXQgbGV2ZWwgMCBzaG91bGQgc3VjY2VlZCIpOw0KLQ0K
LSAgICAgICAgICAgIC8vIENoZWNrIHRoYXQgZ2VuZXJhdGVNaXBtYXAgZmFpbHMgb24gTlBPVA0K
LSAgICAgICAgICAgIGdsLmdlbmVyYXRlTWlwbWFwKGdsLlRFWFRVUkVfMkQpOw0KLSAgICAgICAg
ICAgIGFzc2VydE1zZyhnbC5nZXRFcnJvcigpID09IGdsLklOVkFMSURfT1BFUkFUSU9OLA0KLSAg
ICAgICAgICAgICAgICAgICAgICAiZ2wuZ2VuZXJhdGVNaXBtYXAgd2l0aCBOUE9UIHRleHR1cmUg
c2hvdWxkIHJldHVybiBJTlZBTElEX09QRVJBVElPTiIpOw0KLQ0KLSAgICAgICAgICAgIHZhciBs
b2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24oZ2wucHJvZ3JhbSwgInRleCIpOw0KLSAgICAgICAg
ICAgIGdsLnVuaWZvcm0xaShsb2MsIDApOw0KLQ0KLSAgICAgICAgICAgIC8vIEZJWE1FOiB1bmNv
bW1lbnQgdGhlIHRocmVlIGNoZWNoQnVmZmVyIGNhbGxzIG9uY2Ugd2UgZmlndXJlIG91dCB3aHkg
dGhleSBmYWlsIG9uIHRoZSBMZW9wYXJkIGJvdC4NCi0gICAgICAgICAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzkxMjgNCi0NCi0gICAgICAgICAgICAvLyBD
aGVjayB0aGF0IG5vdGhpbmcgaXMgZHJhd24gaWYgZmlsdGVyaW5nIGlzIG5vdCBjb3JyZWN0IGZv
ciBOUE9UDQotICAgICAgICAgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5U
RVhUVVJFX01JTl9GSUxURVIsIGdsLk5FQVJFU1QpOw0KLSAgICAgICAgICAgIGdsLnRleFBhcmFt
ZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCBnbC5ORUFSRVNUKTsN
Ci0gICAgICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVf
V1JBUF9TLCBnbC5SRVBFQVQpOw0KLSAgICAgICAgICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVY
VFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1QsIGdsLlJFUEVBVCk7DQotDQotICAgICAgICAgICAg
Y2hlY2tCdWZmZXIoMCwwLDAsMjU1LCAiTlBPVCB0ZXh0dXJlIHdpdGggVEVYVFVSRV9XUkFQIHNl
dCB0byBSRVBFQVQgc2hvdWxkIGRyYXcgd2l0aCAwLDAsMCwyNTUiKTsNCi0NCi0gICAgICAgICAg
ICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9TLCBnbC5D
TEFNUF9UT19FREdFKTsNCi0gICAgICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVf
MkQsIGdsLlRFWFRVUkVfV1JBUF9ULCBnbC5DTEFNUF9UT19FREdFKTsNCi0gICAgICAgICAgICBn
bC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgZ2wu
TkVBUkVTVF9NSVBNQVBfTElORUFSKTsNCi0NCi0gICAgICAgICAgICBjaGVja0J1ZmZlcigwLDAs
MCwyNTUsICJOUE9UIHRleHR1cmUgd2l0aCBURVhUVVJFX01JTl9GSUxURVIgbm90IE5FQVJFU1Qg
b3IgTElORUFSIHNob3VsZCBkcmF3IHdpdGggMCwwLDAsMjU1Iik7DQotDQotICAgICAgICAgICAg
Z2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01JTl9GSUxURVIsIGds
LkxJTkVBUik7DQotDQotICAgICAgICAgICAgY2hlY2tCdWZmZXIoMCwxOTIsMTI4LDI1NSwgIk5Q
T1QgdGV4dHVyZSB3aXRoIFRFWFRVUkVfTUlOX0ZJTFRFUiBzZXQgdG8gTElORUFSIHNob3VsZCBk
cmF3IHdpdGggMCwxOTIsMTI4LDI1NSIpOw0KLQ0KLSAgICAgICAgICAgIGZ1bmN0aW9uIGNoZWNr
QnVmZmVyKHIsIGcsIGIsIGEsIG1zZykgew0KLSAgICAgICAgICAgICAgZ2wuY2xlYXJDb2xvcigx
LDEsMSwxKTsNCi0gICAgICAgICAgICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQgfCBn
bC5ERVBUSF9CVUZGRVJfQklUKTsNCi0gICAgICAgICAgICAgIGdsLmRyYXdBcnJheXMoZ2wuVFJJ
QU5HTEVTLCAwLCA2KTsNCi0gICAgICAgICAgICAgIGdsLmZsdXNoKCk7DQotICAgICAgICAgICAg
ICB2YXIgYnVmID0gbmV3IFVpbnQ4QXJyYXkoNCAqIDQgKiA0KTsNCi0gICAgICAgICAgICAgIGds
LnJlYWRQaXhlbHMoMCwgMCwgNCwgNCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgYnVmKTsN
Ci0gICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNCAqIDQ7ICsraSkgew0KLSAgICAg
ICAgICAgICAgICB2YXIgb2Zmc2V0ID0gaSAqIDQ7DQotICAgICAgICAgICAgICAgIGlmIChidWZb
b2Zmc2V0ICsgMF0gIT0gciB8fA0KLSAgICAgICAgICAgICAgICAgICAgYnVmW29mZnNldCArIDFd
ICE9IGcgfHwNCi0gICAgICAgICAgICAgICAgICAgIGJ1ZltvZmZzZXQgKyAyXSAhPSBiIHx8DQot
ICAgICAgICAgICAgICAgICAgICBidWZbb2Zmc2V0ICsgM10gIT0gYSkgew0KLSAgICAgICAgICAg
ICAgICAgIHRlc3RGYWlsZWQobXNnICsgJywgcmVhZCBiYWNrIGNvbG9yIGlzICcgKyBidWZbb2Zm
c2V0ICsgMF0gKyAnLCcgKyBidWZbb2Zmc2V0ICsgMV0NCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICsgJywnICsgYnVmW29mZnNldCArIDJdICsgJywnICsgYnVmW29mZnNldCArIDNdKTsN
Ci0gICAgICAgICAgICAgICAgICByZXR1cm47DQotICAgICAgICAgICAgICAgIH0NCi0gICAgICAg
ICAgICAgIH0NCi0gICAgICAgICAgICAgIHRlc3RQYXNzZWQobXNnKTsNCi0gICAgICAgICAgICB9
DQotICAgICAgIH0NCi0NCi0gICAgICAgaW5pdCgpOw0KLSAgICAgICBzdWNjZXNzZnVsbHlQYXJz
ZWQgPSB0cnVlOw0KLSAgICA8L3NjcmlwdD4NCi08L2JvZHk+DQotPHNjcmlwdCBzcmM9Ii4uLy4u
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pg0KLQ0KLTxzY3JpcHQ+DQot
PC9zY3JpcHQ+DQotDQotPC9ib2R5Pg0KLTwvaHRtbD4NCi0NCis8IURPQ1RZUEUgSFRNTCBQVUJM
SUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIgorICAiaHR0cDovL3d3
dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+V2Vi
R0wgTm9uLVBvd2VyIG9mIDIgdGV4dHVyZSBjb25mb3JtYW5jZSB0ZXN0LjwvdGl0bGU+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYmdsLXRlc3QuanMiPiA8L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2ViZ2wtdGVzdC11dGlscy5qcyI+IDwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iNCIgaGVpZ2h0
PSI0IiBzdHlsZT0id2lkdGg6IDQwcHg7IGhlaWdodDogMzBweDsiPjwvY2FudmFzPgorPGRpdiBp
ZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0
PgordmFyIHd0dSA9IFdlYkdMVGVzdFV0aWxzOwordmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJleGFtcGxlIik7Cit2YXIgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KGNhbnZh
cyk7Cit2YXIgcHJvZ3JhbSA9IHd0dS5zZXR1cFRleHR1cmVkUXVhZChnbCk7CisKK2Fzc2VydE1z
ZyhnbC5nZXRFcnJvcigpID09IGdsLk5PX0VSUk9SLCAiU2hvdWxkIGJlIG5vIGVycm9ycyBmcm9t
IHNldHVwLiIpOworCit2YXIgdGV4ID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworCisvLyBDaGVjayB0
aGF0IGFuIE5QT1QgdGV4dHVyZSBub3Qgb24gbGV2ZWwgMCBnZW5lcmF0ZXMgSU5WQUxJRF9WQUxV
RQord3R1LmZpbGxUZXh0dXJlKGdsLCB0ZXgsIDUsIDMsIFswLCAxOTIsIDEyOCwgMjU1XSwgMSk7
Cithc3NlcnRNc2coZ2wuZ2V0RXJyb3IoKSA9PSBnbC5JTlZBTElEX1ZBTFVFLAorICAgICAgICAg
ICJnbC50ZXhJbWFnZTJEIHdpdGggTlBPVCB0ZXh0dXJlIHdpdGggbGV2ZWwgPiAwIHNob3VsZCBy
ZXR1cm4gSU5WQUxJRF9WQUxVRSIpOworCisvLyBDaGVjayB0aGF0IGFuIE5QT1QgdGV4dHVyZSBv
biBsZXZlbCAwIHN1Y2NlZWRzCit3dHUuZmlsbFRleHR1cmUoZ2wsIHRleCwgNSwgMywgWzAsIDE5
MiwgMTI4LCAyNTVdKTsKK2Fzc2VydE1zZyhnbC5nZXRFcnJvcigpID09IGdsLk5PX0VSUk9SLAor
ICAgICAgICAgICJnbC50ZXhJbWFnZTJEIHdpdGggTlBPVCB0ZXh0dXJlIGF0IGxldmVsIDAgc2hv
dWxkIHN1Y2NlZWQiKTsKKworLy8gQ2hlY2sgdGhhdCBnZW5lcmF0ZU1pcG1hcCBmYWlscyBvbiBO
UE9UCitnbC5nZW5lcmF0ZU1pcG1hcChnbC5URVhUVVJFXzJEKTsKK2Fzc2VydE1zZyhnbC5nZXRF
cnJvcigpID09IGdsLklOVkFMSURfT1BFUkFUSU9OLAorICAgICAgICAgICJnbC5nZW5lcmF0ZU1p
cG1hcCB3aXRoIE5QT1QgdGV4dHVyZSBzaG91bGQgcmV0dXJuIElOVkFMSURfT1BFUkFUSU9OIik7
CisKK3ZhciBsb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInRleCIpOworZ2wu
dW5pZm9ybTFpKGxvYywgMCk7CisKKy8vIENoZWNrIHRoYXQgbm90aGluZyBpcyBkcmF3biBpZiBm
aWx0ZXJpbmcgaXMgbm90IGNvcnJlY3QgZm9yIE5QT1QKK2dsLnRleFBhcmFtZXRlcmkoZ2wuVEVY
VFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBnbC5ORUFSRVNUKTsKK2dsLnRleFBhcmFt
ZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCBnbC5ORUFSRVNUKTsK
K2dsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1MsIGdsLlJF
UEVBVCk7CitnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9U
LCBnbC5SRVBFQVQpOworCit3dHUuZHJhd1F1YWQoZ2wpOword3R1LmNoZWNrQ2FudmFzKAorICAg
IGdsLCBbMCwgMCwgMCwgMjU1XSwKKyAgICAiTlBPVCB0ZXh0dXJlIHdpdGggVEVYVFVSRV9XUkFQ
IHNldCB0byBSRVBFQVQgc2hvdWxkIGRyYXcgd2l0aCAwLDAsMCwyNTUiKTsKK2Fzc2VydE1zZyhn
bC5nZXRFcnJvcigpID09IGdsLk5PX0VSUk9SLCAiU2hvdWxkIGJlIG5vIGVycm9ycyBmcm9tIHNl
dHVwLiIpOworCitnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JB
UF9TLCBnbC5DTEFNUF9UT19FREdFKTsKK2dsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwg
Z2wuVEVYVFVSRV9XUkFQX1QsIGdsLkNMQU1QX1RPX0VER0UpOworZ2wudGV4UGFyYW1ldGVyaShn
bC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01JTl9GSUxURVIsIGdsLk5FQVJFU1RfTUlQTUFQX0xJ
TkVBUik7CisKK3d0dS5kcmF3UXVhZChnbCk7Cit3dHUuY2hlY2tDYW52YXMoCisgICAgZ2wsIFsw
LCAwLCAwLCAyNTVdLAorICAgICJOUE9UIHRleHR1cmUgd2l0aCBURVhUVVJFX01JTl9GSUxURVIg
bm90IE5FQVJFU1Qgb3IgTElORUFSIHNob3VsZCBkcmF3IHdpdGggMCwwLDAsMjU1Iik7Cithc3Nl
cnRNc2coZ2wuZ2V0RXJyb3IoKSA9PSBnbC5OT19FUlJPUiwgIlNob3VsZCBiZSBubyBlcnJvcnMg
ZnJvbSBzZXR1cC4iKTsKKworZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhU
VVJFX01JTl9GSUxURVIsIGdsLkxJTkVBUik7CisKK3d0dS5kcmF3UXVhZChnbCk7Cit3dHUuY2hl
Y2tDYW52YXMoCisgICAgZ2wsIFswLCAxOTIsIDEyOCwgMjU1XSwKKyAgICAiTlBPVCB0ZXh0dXJl
IHdpdGggVEVYVFVSRV9NSU5fRklMVEVSIHNldCB0byBMSU5FQVIgc2hvdWxkIGRyYXcuIik7CisK
K3N1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKworPHNj
cmlwdD4KKzwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CisKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL3dlYmdsL3RleHR1cmUtdHJhbnNwYXJlbnQtcGl4ZWxzLWluaXRpYWxpemVk
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJn
bC90ZXh0dXJlLXRyYW5zcGFyZW50LXBpeGVscy1pbml0aWFsaXplZC1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDYzNDM4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvdGV4dHVyZS10
cmFuc3BhcmVudC1waXhlbHMtaW5pdGlhbGl6ZWQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC0xLDQgKzEsNCBAQAotUmVncmVzc2lvbiB0ZXN0IGZvciBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzI4ODggOiBHYXJiYWdlIGluIHRyYW5zcGFyZW50IHJlZ2lv
bnMgb2YgaW1hZ2VzIHVwbG9hZGVkIGFzIHRleHR1cmVzCitUZXN0cyB0aGVyZSBpcyBubyBnYXJi
YWdlIGluIHRyYW5zcGFyZW50IHJlZ2lvbnMgb2YgaW1hZ2VzIHVwbG9hZGVkIGFzIHRleHR1cmVz
CiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9j
YW52YXMvd2ViZ2wvdGV4dHVyZS10cmFuc3BhcmVudC1waXhlbHMtaW5pdGlhbGl6ZWQuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC90ZXh0dXJlLXRyYW5z
cGFyZW50LXBpeGVscy1pbml0aWFsaXplZC5odG1sCShyZXZpc2lvbiA2MzQzOCkKKysrIExheW91
dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3RleHR1cmUtdHJhbnNwYXJlbnQtcGl4ZWxzLWluaXRp
YWxpemVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMzLDE5ICszMywxNyBAQCB2YXIgc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gZmFsc2U7CiAKIGZ1bmN0aW9uIGluaXQoKQogewotICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
b3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRXZWJHTEVuYWJsZWQiLCAiMSIpOwotICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBpZiAod2luZG93LmluaXROb25LaHJvbm9zRnJh
bWV3b3JrKSB7CisgICAgICAgIHdpbmRvdy5pbml0Tm9uS2hyb25vc0ZyYW1ld29yayh0cnVlKTsK
ICAgICB9CiAKLSAgICBkZXNjcmlwdGlvbignUmVncmVzc2lvbiB0ZXN0IGZvciA8YSBocmVmPSJo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzI4ODgiPmh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjg4ODwvYT4gOiA8Y29kZT5HYXJiYWdlIGlu
IHRyYW5zcGFyZW50IHJlZ2lvbnMgb2YgaW1hZ2VzIHVwbG9hZGVkIGFzIHRleHR1cmVzPC9jb2Rl
PicpOworICAgIGRlc2NyaXB0aW9uKCdUZXN0cyB0aGVyZSBpcyBubyBnYXJiYWdlIGluIHRyYW5z
cGFyZW50IHJlZ2lvbnMgb2YgaW1hZ2VzIHVwbG9hZGVkIGFzIHRleHR1cmVzJyk7CiAKICAgICBn
bCA9IGluaXRXZWJHTCgiZXhhbXBsZSIsICJ2c2hhZGVyIiwgImZzaGFkZXIiLCBbICJnX1Bvc2l0
aW9uIiwgImdfVGV4Q29vcmQwIiBdLCBbIDAsIDAsIDAsIDEgXSwgMSk7CiAKICAgICB0ZXh0dXJl
TG9jID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKGdsLnByb2dyYW0sICJ0ZXgiKTsKIAotICAgIHZh
ciB2ZXJ0aWNlcyA9IG5ldyBXZWJHTEZsb2F0QXJyYXkoWworICAgIHZhciB2ZXJ0aWNlcyA9IG5l
dyBGbG9hdDMyQXJyYXkoWwogICAgICAgICAgMS4wLCAgMS4wLCAwLjAsCiAgICAgICAgIC0xLjAs
ICAxLjAsIDAuMCwKICAgICAgICAgLTEuMCwgLTEuMCwgMC4wLApAQCAtNTQsNyArNTIsNyBAQCBm
dW5jdGlvbiBpbml0KCkKICAgICAgICAgIDEuMCwgLTEuMCwgMC4wXSk7CiAgICAgLy8gVGhlIGlu
cHV0IHRleHR1cmUgaGFzIDggY2hhcmFjdGVyczsgdGFrZSB0aGUgbGVmdG1vc3Qgb25lCiAgICAg
dmFyIGNvZWZmID0gMS4wIC8gOC4wOwotICAgIHZhciB0ZXhDb29yZHMgPSBuZXcgV2ViR0xGbG9h
dEFycmF5KFsKKyAgICB2YXIgdGV4Q29vcmRzID0gbmV3IEZsb2F0MzJBcnJheShbCiAgICAgICAg
IGNvZWZmLCAxLjAsCiAgICAgICAgIDAuMCwgMS4wLAogICAgICAgICAwLjAsIDAuMCwKQEAgLTE0
Nyw4ICsxNDUsOCBAQCBmdW5jdGlvbiBydW5UZXN0KCkKIH0KIAogZnVuY3Rpb24gZmluaXNoKCkg
ewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cubm9uS2hyb25vc0Zy
YW1ld29ya05vdGlmeURvbmUpIHsKKyAgICAgICAgd2luZG93Lm5vbktocm9ub3NGcmFtZXdvcmtO
b3RpZnlEb25lKCk7CiAgICAgfQogfQogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy93ZWJnbC90cmlhbmdsZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvdHJpYW5nbGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA2
MzQzOCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3RyaWFuZ2xlLWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSArMSw1IEBACi1UZXN0IFBBU1NFRAorIFBBU1MgZHJh
d2luZyBpcyBjb3JyZWN0CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvdHJpYW5nbGUu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC90cmlhbmds
ZS5odG1sCShyZXZpc2lvbiA2MzQzOCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmds
L3RyaWFuZ2xlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsOCArMSwxOCBAQAorCiA8IURPQ1RZ
UEUgaHRtbD4KIDxodG1sPgogICA8aGVhZD4KLSAgICA8dGl0bGU+U3Bpbm5pbmcgQm94PC90aXRs
ZT4KKyAgICA8dGl0bGU+UmVuZGVyaW5nIFRlc3Q8L3RpdGxlPgorICAgIDxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cisg
ICAgPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+CiAgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJnbC10ZXN0LmpzIj4gPC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSI1MCIgaGVpZ2h0
PSI1MCI+CitUaGVyZSBpcyBzdXBwb3NlZCB0byBiZSBhbiBleGFtcGxlIGRyYXdpbmcgaGVyZSwg
YnV0IGl0J3Mgbm90IGltcG9ydGFudC4KKzwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24i
PjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CiAgICAgPHNjcmlwdCBpZD0idnNoYWRl
ciIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPgogICAgICAgICBhdHRyaWJ1dGUgdmVjNCB2UG9z
aXRpb247CiAgICAgICAgIHZvaWQgbWFpbigpCkBAIC0yMywzNSArMzMsMzQgQEAKICAgICAgICAg
ewogICAgICAgICAgICAgdmFyIGkgPSAoeSo1MCt4KSAqIDQ7CiAgICAgICAgICAgICB2YXIgcmVh
c29uID0gInBpeGVsIGF0ICgiK3grIiwiK3krIikgaXMgKCIrYnVmW2ldKyIsIitidWZbaSsxXSsi
LCIrYnVmW2krMl0rIiwiK2J1ZltpKzNdKyIpLCBzaG91bGQgYmUgIitzaG91bGRCZTsKLSAgICAg
ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHRzIikuaW5uZXJIVE1MID0gIlRl
c3QgPHNwYW4gc3R5bGU9J2NvbG9yOnJlZCc+RkFJTEVEPC9zcGFuPiAiK3JlYXNvbjsKKyAgICAg
ICAgICAgIHRlc3RGYWlsZWQocmVhc29uKTsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAg
ICBmdW5jdGlvbiBwYXNzKCkKICAgICAgICAgewotICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInJlc3VsdHMiKS5pbm5lckhUTUwgPSAiVGVzdCA8c3BhbiBzdHlsZT0nY29sb3I6
Z3JlZW4nPlBBU1NFRDwvc3Bhbj4iOworICAgICAgICAgICAgdGVzdFBhc3NlZCgiZHJhd2luZyBp
cyBjb3JyZWN0Iik7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgZnVuY3Rpb24gaW5p
dCgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpIHsKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZl
cmVuY2UoIldlYktpdFdlYkdMRW5hYmxlZCIsICIxIik7Ci0gICAgICAgICAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgaWYgKHdpbmRvdy5pbml0
Tm9uS2hyb25vc0ZyYW1ld29yaykgeworICAgICAgICAgICAgICAgIHdpbmRvdy5pbml0Tm9uS2hy
b25vc0ZyYW1ld29yayhmYWxzZSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAKKwogICAg
ICAgICAgICAgZ2wgPSBpbml0V2ViR0woImV4YW1wbGUiLCAidnNoYWRlciIsICJmc2hhZGVyIiwg
WyAidlBvc2l0aW9uIl0sIFsgMCwgMCwgMCwgMSBdLCAxKTsKLSAgICAgICAgICAgIAorCiAgICAg
ICAgICAgICB2YXIgdmVydGV4T2JqZWN0ID0gZ2wuY3JlYXRlQnVmZmVyKCk7CiAgICAgICAgICAg
ICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgdmVydGV4T2JqZWN0KTsKLSAgICAgICAg
ICAgIGdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCBuZXcgV2ViR0xGbG9hdEFycmF5KFsg
MCwwLjUsMCwgLTAuNSwtMC41LDAsIDAuNSwtMC41LDAgXSksIGdsLlNUQVRJQ19EUkFXKTsKKyAg
ICAgICAgICAgIGdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCBuZXcgRmxvYXQzMkFycmF5
KFsgMCwwLjUsMCwgLTAuNSwtMC41LDAsIDAuNSwtMC41LDAgXSksIGdsLlNUQVRJQ19EUkFXKTsK
ICAgICAgICAgICAgIGdsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KDApOwogICAgICAgICAgICAg
Z2wudmVydGV4QXR0cmliUG9pbnRlcigwLCAzLCBnbC5GTE9BVCwgZmFsc2UsIDAsIDApOwotICAg
ICAgICAgICAgCisKICAgICAgICAgICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQgfCBn
bC5ERVBUSF9CVUZGRVJfQklUKTsKICAgICAgICAgICAgIGdsLmRyYXdBcnJheXMoZ2wuVFJJQU5H
TEVTLCAwLCAzKTsKLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICB2YXIgYnVmID0gbmV3IFVp
bnQ4QXJyYXkoNTAgKiA1MCAqIDQpOwogICAgICAgICAgICAgZ2wucmVhZFBpeGVscygwLCAwLCA1
MCwgNTAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIGJ1Zik7Ci0gICAgICAgICAgICAKKwog
ICAgICAgICAgICAgLy8gVGVzdCBzZXZlcmFsIGxvY2F0aW9ucwogICAgICAgICAgICAgLy8gRmly
c3QgbGluZSBzaG91bGQgYmUgYWxsIGJsYWNrCiAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IDUwOyArK2kpCkBAIC01OSw3ICs2OCw3IEBACiAgICAgICAgICAgICAgICAgICAgIGZhaWwo
aSwgMCwgYnVmLCAiKDAsMCwwLDI1NSkiKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAKKwogICAgICAgICAgICAgLy8gTGlu
ZSAxNSBzaG91bGQgYmUgcmVkIGZvciBhdCBsZWFzdCAxMCByZWQgcGl4ZWxzIHN0YXJ0aW5nIDIw
IHBpeGVscyBpbgogICAgICAgICAgICAgdmFyIG9mZnNldCA9ICgxNSo1MCsyMCkgKiA0OwogICAg
ICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDsgKytpKQpAQCAtNzQsMTUgKzgzLDE1IEBA
CiAgICAgICAgICAgICAgICAgICAgIGZhaWwoaSwgNDksIGJ1ZiwgIigwLDAsMCwyNTUpIik7CiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgCisKICAgICAgICAgICAgIHBhc3MoKTsKICAgICAgICB9CisKKyAgICAgICBpbml0KCk7
CisgICAgICAgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKICAgICA8L3NjcmlwdD4KLSAgPC9o
ZWFkPgotICA8Ym9keSBvbmxvYWQ9ImluaXQoKSI+Ci0gICAgPGNhbnZhcyBpZD0iZXhhbXBsZSIg
d2lkdGg9IjUwcHgiIGhlaWdodD0iNTBweCI+Ci0gICAgVGhlcmUgaXMgc3VwcG9zZWQgdG8gYmUg
YW4gZXhhbXBsZSBkcmF3aW5nIGhlcmUsIGJ1dCBpdCdzIG5vdCBpbXBvcnRhbnQuCi0gICAgPC9j
YW52YXM+Ci0gICAgPGRpdiBpZD0icmVzdWx0cyI+VGVzdCA8c3BhbiBzdHlsZT0iY29sb3I6cmVk
Ij5GQUlMRUQ8L3NwYW4+PC9kaXY+Ci0gIDwvYm9keT4KKzwvYm9keT4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKworPC9ib2R5Pgog
PC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvdW5pZm9ybS1sb2Nh
dGlvbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMv
d2ViZ2wvdW5pZm9ybS1sb2NhdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDYzNDM4KQorKysg
TGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvdW5pZm9ybS1sb2NhdGlvbi1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi1UZXN0cyBXZWJHTCBBUElzIHJlbGF0
ZWQgdG8gc2hhZGVyIHVuaWZvcm1zCitUZXN0cyB0aGUgV2ViR0xVbmlmb3JtTG9jYXRpb24gQVBJ
CiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIApAQCAtMTYsNiArMTYsOCBAQCBQQVNTIGNv
bnRleHRBLnVzZVByb2dyYW0ocHJvZ3JhbVYpIGdlbmVyCiBQQVNTIGNvbnRleHRBLnVuaWZvcm00
ZnYobG9jYXRpb25WZWM0LCB2ZWMpIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBlcnJvcjogTk9fRVJS
T1IuCiBQQVNTIGNvbnRleHRBLmdldFVuaWZvcm0ocHJvZ3JhbVYsIGxvY2F0aW9uVmVjNCkgaXMg
dmVjCiBQQVNTIGNvbnRleHRBLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtViwgIklEb250RXhp
c3QiKSBpcyBudWxsCitQQVNTIGNvbnRleHRBLmxpbmtQcm9ncmFtKHByb2dyYW1BMSkgZ2VuZXJh
dGVkIGV4cGVjdGVkIEdMIGVycm9yOiBOT19FUlJPUi4KK1BBU1MgY29udGV4dEEudW5pZm9ybU1h
dHJpeDRmdihsb2NhdGlvbkEsIGZhbHNlLCBtYXQpIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBlcnJv
cjogSU5WQUxJRF9PUEVSQVRJT04uCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAK
IFRFU1QgQ09NUExFVEUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3VuaWZv
cm0tbG9jYXRpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93
ZWJnbC91bmlmb3JtLWxvY2F0aW9uLmh0bWwJKHJldmlzaW9uIDYzNDM4KQorKysgTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvd2ViZ2wvdW5pZm9ybS1sb2NhdGlvbi5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC05LDcgKzksNyBAQAogPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CiAKIDxzY3JpcHQ+Ci1k
ZXNjcmlwdGlvbigiVGVzdHMgV2ViR0wgQVBJcyByZWxhdGVkIHRvIHNoYWRlciB1bmlmb3JtcyIp
OworZGVzY3JpcHRpb24oIlRlc3RzIHRoZSBXZWJHTFVuaWZvcm1Mb2NhdGlvbiBBUEkiKTsKIAog
dmFyIGNvbnRleHRBID0gY3JlYXRlM0RDb250ZXh0KCk7CiB2YXIgY29udGV4dEIgPSBjcmVhdGUz
RENvbnRleHQoKTsKQEAgLTQ1LDYgKzQ1LDkgQEAgc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRl
eHRBLCBjb250ZXh0QQogc2hvdWxkQmUoImNvbnRleHRBLmdldFVuaWZvcm0ocHJvZ3JhbVYsIGxv
Y2F0aW9uVmVjNCkiLCAidmVjIik7CiAKIHNob3VsZEJlTnVsbCgiY29udGV4dEEuZ2V0VW5pZm9y
bUxvY2F0aW9uKHByb2dyYW1WLCBcIklEb250RXhpc3RcIikiKTsKK3Nob3VsZEdlbmVyYXRlR0xF
cnJvcihjb250ZXh0QSwgY29udGV4dEEuTk9fRVJST1IsICJjb250ZXh0QS5saW5rUHJvZ3JhbShw
cm9ncmFtQTEpIik7CisvLyBBZnRlciBsaW5raW5nIGFsbCBib3hlcyBhcmUgYmFkLgorc2hvdWxk
R2VuZXJhdGVHTEVycm9yKGNvbnRleHRBLCBjb250ZXh0QS5JTlZBTElEX09QRVJBVElPTiwgImNv
bnRleHRBLnVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb25BLCBmYWxzZSwgbWF0KSIpOwogCiBzdWNj
ZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy93ZWJnbC92aWV3cG9ydC11bmNoYW5nZWQtdXBvbi1yZXNpemUtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3ZpZXdwb3J0LXVu
Y2hhbmdlZC11cG9uLXJlc2l6ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDYzNDM4KQorKysgTGF5
b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvdmlld3BvcnQtdW5jaGFuZ2VkLXVwb24tcmVzaXpl
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMiw3ICsyLDYgQEAgVmVyaWZpZXMgdGhh
dCBHTCB2aWV3cG9ydCBkb2VzIG5vdCBjaGFuZwogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CiAKLVJlZ3Jlc3Npb24gdGVzdCBmb3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTM0NzY2IDogUmVtb3ZlIGF1dG9tYXRpYyB2aWV3cG9ydCByZXNpemluZwogUEFTUyBW
aWV3cG9ydCBjb3JyZWN0bHkgZGlkIG5vdCBjaGFuZ2Ugc2l6ZSBkdXJpbmcgY2FudmFzIHJlc2l6
ZQogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy93ZWJnbC92aWV3cG9ydC11bmNoYW5nZWQtdXBvbi1yZXNpemUuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC92aWV3cG9ydC11bmNoYW5n
ZWQtdXBvbi1yZXNpemUuaHRtbAkocmV2aXNpb24gNjM0MzgpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy93ZWJnbC92aWV3cG9ydC11bmNoYW5nZWQtdXBvbi1yZXNpemUuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMjcsOCArMjcsNiBAQCB2b2lkIG1haW4oKQogPHNjcmlwdD4KIGRlc2NyaXB0
aW9uKCdWZXJpZmllcyB0aGF0IEdMIHZpZXdwb3J0IGRvZXMgbm90IGNoYW5nZSB3aGVuIGNhbnZh
cyBpcyByZXNpemVkJyk7CiAKLWRlYnVnKCdSZWdyZXNzaW9uIHRlc3QgZm9yIDxhIGhyZWY9Imh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNDc2NiI+aHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM0NzY2PC9hPiA6IDxjb2RlPlJlbW92ZSBhdXRv
bWF0aWMgdmlld3BvcnQgcmVzaXppbmc8L2NvZGU+Jyk7Ci0KIHZhciBnbCA9IGluaXRXZWJHTCgi
ZXhhbXBsZSIsICJ2c2hhZGVyIiwgImZzaGFkZXIiLCBbICJnX1Bvc2l0aW9uIiBdLCBbIDAsIDAs
IDEsIDEgXSwgMSk7CiAKIHZhciB2ZXJ0aWNlcyA9IG5ldyBXZWJHTEZsb2F0QXJyYXkoWwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsLXRlc3QtdXRp
bHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsLXRlc3QtdXRpbHMuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2wtdGVzdC11dGlscy5qcwkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw3NDEgQEAKKy8vIENvcHlyaWdodCAoYykgMjAwOSBUaGUgQ2hyb21pdW0gQXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCisKK1dlYkdMVGVzdFV0aWxzID0gKGZ1bmN0aW9uKCkgeworCisv
KioKKyAqIFdyYXBwZWQgbG9nZ2luZyBmdW5jdGlvbi4KKyAqIEBwYXJhbSB7c3RyaW5nfSBtc2cg
VGhlIG1lc3NhZ2UgdG8gbG9nLgorICovCit2YXIgbG9nID0gZnVuY3Rpb24obXNnKSB7CisgIGlm
ICh3aW5kb3cuY29uc29sZSAmJiB3aW5kb3cuY29uc29sZS5sb2cpIHsKKyAgICB3aW5kb3cuY29u
c29sZS5sb2cobXNnKTsKKyAgfQorfTsKKwordmFyIGxhc3RFcnJvciA9ICIiOworCisvKioKKyAq
IFJldHVybnMgdGhlIGxhc3QgY29tcGlsZXIvbGlua2VyIGVycm9yLgorICogQHJldHVybiB7c3Ry
aW5nfSBUaGUgbGFzdCBjb21waWxlci9saW5rZXIgZXJyb3IuCisgKi8KK3ZhciBnZXRMYXN0RXJy
b3IgPSBmdW5jdGlvbigpIHsKKyAgcmV0dXJuIGxhc3RFcnJvcjsKK307CisKKy8qKgorICogQSB2
ZXJ0ZXggc2hhZGVyIGZvciBhIHNpbmdsZSB0ZXh0dXJlLgorICogQHR5cGUge3N0cmluZ30KKyAq
LwordmFyIHNpbXBsZVRleHR1cmVWZXJ0ZXhTaGFkZXIgPSAnJyArCisgICdhdHRyaWJ1dGUgdmVj
NCB2UG9zaXRpb247XG4nICsKKyAgJ2F0dHJpYnV0ZSB2ZWMyIHRleENvb3JkMDtcbicgKworICAn
dmFyeWluZyB2ZWMyIHRleENvb3JkO1xuJyArCisgICd2b2lkIG1haW4oKSB7XG4nICsKKyAgJyAg
ICBnbF9Qb3NpdGlvbiA9IHZQb3NpdGlvbjtcbicgKworICAnICAgIHRleENvb3JkID0gdGV4Q29v
cmQwO1xuJyArCisgICd9XG4nOworCisvKioKKyAqIEEgZnJhZ21lbnQgc2hhZGVyIGZvciBhIHNp
bmdsZSB0ZXh0dXJlLgorICogQHR5cGUge3N0cmluZ30KKyAqLwordmFyIHNpbXBsZVRleHR1cmVG
cmFnbWVudFNoYWRlciA9ICcnICsKKyAgJyNpZmRlZiBHTF9FU1xuJyArCisgICdwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDtcbicgKworICAnI2VuZGlmXG4nICsKKyAgJ3VuaWZvcm0gc2FtcGxlcjJE
IHRleDtcbicgKworICAndmFyeWluZyB2ZWMyIHRleENvb3JkO1xuJyArCisgICd2b2lkIG1haW4o
KSB7XG4nICsKKyAgJyAgICBnbF9GcmFnQ29sb3IgPSB0ZXh0dXJlMkQodGV4LCB0ZXhDb29yZCk7
XG4nICsKKyAgJ31cbic7CisKKy8qKgorICogQ3JlYXRlcyBhIHNpbXBsZSB0ZXh0dXJlIHZlcnRl
eCBzaGFkZXIuCisgKiBAcGFyYW0geyFXZWJHTENvbnRleHR9IGdsIFRoZSBXZWJHTENvbnRleHQg
dG8gdXNlLgorICogQHJldHVybiB7IVdlYkdMU2hhZGVyfQorICovCit2YXIgc2V0dXBTaW1wbGVU
ZXh0dXJlVmVydGV4U2hhZGVyID0gZnVuY3Rpb24oZ2wpIHsKKyAgICByZXR1cm4gbG9hZFNoYWRl
cihnbCwgc2ltcGxlVGV4dHVyZVZlcnRleFNoYWRlciwgZ2wuVkVSVEVYX1NIQURFUik7Cit9Owor
CisvKioKKyAqIENyZWF0ZXMgYSBzaW1wbGUgdGV4dHVyZSBmcmFnbWVudCBzaGFkZXIuCisgKiBA
cGFyYW0geyFXZWJHTENvbnRleHR9IGdsIFRoZSBXZWJHTENvbnRleHQgdG8gdXNlLgorICogQHJl
dHVybiB7IVdlYkdMU2hhZGVyfQorICovCit2YXIgc2V0dXBTaW1wbGVUZXh0dXJlRnJhZ21lbnRT
aGFkZXIgPSBmdW5jdGlvbihnbCkgeworICAgIHJldHVybiBsb2FkU2hhZGVyKAorICAgICAgICBn
bCwgc2ltcGxlVGV4dHVyZUZyYWdtZW50U2hhZGVyLCBnbC5GUkFHTUVOVF9TSEFERVIpOworfTsK
KworLyoqCisgKiBDcmVhdGVzIGEgcHJvZ3JhbSwgYXR0YWNoZXMgc2hhZGVycywgYmluZHMgYXR0
cmliIGxvY2F0aW9ucywgbGlua3MgdGhlCisgKiBwcm9ncmFtIGFuZCBjYWxscyB1c2VQcm9ncmFt
LgorICogQHBhcmFtIHshQXJyYXkuPCFXZWJHTFNoYWRlcj59IHNoYWRlcnMgVGhlIHNoYWRlcnMg
dG8gYXR0YWNoIC4KKyAqIEBwYXJhbSB7IUFycmF5LjxzdHJpbmc+fSBhdHRyaWJzIFRoZSBhdHRy
aWJzIG5hbWVzLgorICogQHBhcmFtIHshQXJyYXkuPG51bWJlcj59IG9wdF9sb2NhdGlvbnMgVGhl
IGxvY2F0aW9ucyBmb3IgdGhlIGF0dHJpYnMuCisgKi8KK3ZhciBzZXR1cFByb2dyYW0gPSBmdW5j
dGlvbihnbCwgc2hhZGVycywgYXR0cmlicywgb3B0X2xvY2F0aW9ucykgeworICB2YXIgcHJvZ3Jh
bSA9IGdsLmNyZWF0ZVByb2dyYW0oKTsKKyAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IHNoYWRlcnMu
bGVuZ3RoOyArK2lpKSB7CisgICAgZ2wuYXR0YWNoU2hhZGVyKHByb2dyYW0sIHNoYWRlcnNbaWld
KTsKKyAgfQorICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgYXR0cmlicy5sZW5ndGg7ICsraWkpIHsK
KyAgICBnbC5iaW5kQXR0cmliTG9jYXRpb24oCisgICAgICAgIHByb2dyYW0sCisgICAgICAgIG9w
dF9sb2NhdGlvbnMgPyBvcHRfbG9jYXRpb25zW2lpXSA6IGlpLAorICAgICAgICBhdHRyaWJzW2lp
XSk7CisgIH0KKyAgZ2wubGlua1Byb2dyYW0ocHJvZ3JhbSk7CisKKyAgLy8gQ2hlY2sgdGhlIGxp
bmsgc3RhdHVzCisgIHZhciBsaW5rZWQgPSBnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKHByb2dyYW0s
IGdsLkxJTktfU1RBVFVTKTsKKyAgaWYgKCFsaW5rZWQpIHsKKyAgICAgIC8vIHNvbWV0aGluZyB3
ZW50IHdyb25nIHdpdGggdGhlIGxpbmsKKyAgICAgIGxhc3RFcnJvciA9IGdsLmdldFByb2dyYW1J
bmZvTG9nIChwcm9ncmFtKTsKKyAgICAgIGxvZygiRXJyb3IgaW4gcHJvZ3JhbSBsaW5raW5nOiIg
KyBsYXN0RXJyb3IpOworCisgICAgICBnbC5kZWxldGVQcm9ncmFtKHByb2dyYW0pOworICAgICAg
cmV0dXJuIG51bGw7CisgIH0KKworICBnbC51c2VQcm9ncmFtKHByb2dyYW0pOworICByZXR1cm4g
cHJvZ3JhbTsKK307CisKKy8qKgorICogQ3JlYXRlcyBhIHNpbXBsZSB0ZXh0dXJlIHByb2dyYW0u
CisgKiBAcGFyYW0geyFXZWJHTENvbnRleHR9IGdsIFRoZSBXZWJHTENvbnRleHQgdG8gdXNlLgor
ICogQHBhcmFtIHtudW1iZXJ9IG9wdF9wb3NpdGlvbkxvY2F0aW9uIFRoZSBhdHRyaWIgbG9jYXRp
b24gZm9yIHBvc2l0aW9uLgorICogQHBhcmFtIHtudW1iZXJ9IG9wdF90ZXhjb29yZExvY2F0aW9u
IFRoZSBhdHRyaWIgbG9jYXRpb24gZm9yIHRleHR1cmUgY29vcmRzLgorICogQHJldHVybiB7V2Vi
R0xQcm9ncmFtfQorICovCit2YXIgc2V0dXBTaW1wbGVUZXh0dXJlUHJvZ3JhbSA9IGZ1bmN0aW9u
KAorICAgIGdsLCBvcHRfcG9zaXRpb25Mb2NhdGlvbiwgb3B0X3RleGNvb3JkTG9jYXRpb24pIHsK
KyAgb3B0X3Bvc2l0aW9uTG9jYXRpb24gPSBvcHRfcG9zaXRpb25Mb2NhdGlvbiB8fCAwOworICBv
cHRfdGV4Y29vcmRMb2NhdGlvbiA9IG9wdF90ZXhjb29yZExvY2F0aW9uIHx8IDE7CisgIHZhciB2
cyA9IHNldHVwU2ltcGxlVGV4dHVyZVZlcnRleFNoYWRlcihnbCk7CisgIHZhciBmcyA9IHNldHVw
U2ltcGxlVGV4dHVyZUZyYWdtZW50U2hhZGVyKGdsKTsKKyAgaWYgKCF2cyB8fCAhZnMpIHsKKyAg
ICByZXR1cm4gbnVsbDsKKyAgfQorICB2YXIgcHJvZ3JhbSA9IHNldHVwUHJvZ3JhbSgKKyAgICAg
IGdsLAorICAgICAgW3ZzLCBmc10sCisgICAgICBbJ3ZQb3NpdGlvbicsICd0ZXhDb29yZDAnXSwK
KyAgICAgIFtvcHRfcG9zaXRpb25Mb2NhdGlvbiwgb3B0X3RleGNvb3JkTG9jYXRpb25dKTsKKyAg
aWYgKCFwcm9ncmFtKSB7CisgICAgZ2wuZGVsZXRlU2hhZGVyKGZzKTsKKyAgICBnbC5kZWxldGVT
aGFkZXIodnMpOworICB9CisgIHJldHVybiBwcm9ncmFtOworfTsKKworLyoqCisgKiBDcmVhdGVz
IGJ1ZmZlcnMgZm9yIGEgdGV4dHVyZWQgdW5pdCBxdWFkIGFuZCBhdHRhY2hlcyB0aGVtIHRvIHZl
cnRleCBhdHRyaWJzLgorICogQHBhcmFtIHshV2ViR0xDb250ZXh0fSBnbCBUaGUgV2ViR0xDb250
ZXh0IHRvIHVzZS4KKyAqIEBwYXJhbSB7bnVtYmVyfSBvcHRfcG9zaXRpb25Mb2NhdGlvbiBUaGUg
YXR0cmliIGxvY2F0aW9uIGZvciBwb3NpdGlvbi4KKyAqIEBwYXJhbSB7bnVtYmVyfSBvcHRfdGV4
Y29vcmRMb2NhdGlvbiBUaGUgYXR0cmliIGxvY2F0aW9uIGZvciB0ZXh0dXJlIGNvb3Jkcy4KKyAq
IEByZXR1cm4geyFBcnJheS48V2ViR0xCdWZmZXI+fSBUaGUgYnVmZmVyIG9iamVjdHMgdGhhdCB3
ZXJlCisgKiAgICAgIGNyZWF0ZWQuCisgKi8KK3ZhciBzZXR1cFVuaXRRdWFkID0gZnVuY3Rpb24o
Z2wsIG9wdF9wb3NpdGlvbkxvY2F0aW9uLCBvcHRfdGV4Y29vcmRMb2NhdGlvbikgeworICBvcHRf
cG9zaXRpb25Mb2NhdGlvbiA9IG9wdF9wb3NpdGlvbkxvY2F0aW9uIHx8IDA7CisgIG9wdF90ZXhj
b29yZExvY2F0aW9uID0gb3B0X3RleGNvb3JkTG9jYXRpb24gfHwgMTsKKyAgdmFyIG9iamVjdHMg
PSBbXTsKKworICB2YXIgdmVydGV4T2JqZWN0ID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgIGdsLmJp
bmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCB2ZXJ0ZXhPYmplY3QpOworICBnbC5idWZmZXJEYXRh
KGdsLkFSUkFZX0JVRkZFUiwgbmV3IEZsb2F0MzJBcnJheSgKKyAgICAgIFstMSwxLDAsIDEsMSww
LCAtMSwtMSwwLAorICAgICAgIC0xLC0xLDAsIDEsMSwwLCAxLC0xLDBdKSwgZ2wuU1RBVElDX0RS
QVcpOworICBnbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShvcHRfcG9zaXRpb25Mb2NhdGlvbik7
CisgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIob3B0X3Bvc2l0aW9uTG9jYXRpb24sIDMsIGdsLkZM
T0FULCBmYWxzZSwgMCwgMCk7CisgIG9iamVjdHMucHVzaCh2ZXJ0ZXhPYmplY3QpOworCisgIHZh
ciB2ZXJ0ZXhPYmplY3QgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgZ2wuYmluZEJ1ZmZlcihnbC5B
UlJBWV9CVUZGRVIsIHZlcnRleE9iamVjdCk7CisgIGdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVG
RkVSLCBuZXcgRmxvYXQzMkFycmF5KAorICAgICAgWzAsMCwgMSwwLCAwLDEsCisgICAgICAgMCwx
LCAxLDAsIDEsMV0pLCBnbC5TVEFUSUNfRFJBVyk7CisgIGdsLmVuYWJsZVZlcnRleEF0dHJpYkFy
cmF5KG9wdF90ZXhjb29yZExvY2F0aW9uKTsKKyAgZ2wudmVydGV4QXR0cmliUG9pbnRlcihvcHRf
dGV4Y29vcmRMb2NhdGlvbiwgMiwgZ2wuRkxPQVQsIGZhbHNlLCAwLCAwKTsKKyAgb2JqZWN0cy5w
dXNoKHZlcnRleE9iamVjdCk7CisgIHJldHVybiBvYmplY3RzOworfTsKKworLyoqCisgKiBDcmVh
dGVzIGEgcHJvZ3JhbSBhbmQgYnVmZmVycyBmb3IgcmVuZGVyaW5nIGEgdGV4dHVyZWQgcXVhZC4K
KyAqIEBwYXJhbSB7IVdlYkdMQ29udGV4dH0gZ2wgVGhlIFdlYkdMQ29udGV4dCB0byB1c2UuCisg
KiBAcGFyYW0ge251bWJlcn0gb3B0X3Bvc2l0aW9uTG9jYXRpb24gVGhlIGF0dHJpYiBsb2NhdGlv
biBmb3IgcG9zaXRpb24uCisgKiBAcGFyYW0ge251bWJlcn0gb3B0X3RleGNvb3JkTG9jYXRpb24g
VGhlIGF0dHJpYiBsb2NhdGlvbiBmb3IgdGV4dHVyZSBjb29yZHMuCisgKiBAcmV0dXJuIHshV2Vi
R0xQcm9ncmFtfQorICovCit2YXIgc2V0dXBUZXh0dXJlZFF1YWQgPSBmdW5jdGlvbigKKyAgICBn
bCwgb3B0X3Bvc2l0aW9uTG9jYXRpb24sIG9wdF90ZXhjb29yZExvY2F0aW9uKSB7CisgIHZhciBw
cm9ncmFtID0gc2V0dXBTaW1wbGVUZXh0dXJlUHJvZ3JhbSgKKyAgICAgIGdsLCBvcHRfcG9zaXRp
b25Mb2NhdGlvbiwgb3B0X3RleGNvb3JkTG9jYXRpb24pOworICBzZXR1cFVuaXRRdWFkKGdsLCBv
cHRfcG9zaXRpb25Mb2NhdGlvbiwgb3B0X3RleGNvb3JkTG9jYXRpb24pOworICByZXR1cm4gcHJv
Z3JhbTsKK307CisKKy8qKgorICogRmlsbHMgdGhlIGdpdmVuIHRleHR1cmUgd2l0aCBhIHNvbGlk
IGNvbG9yCisgKiBAcGFyYW0geyFXZWJHTENvbnRleHR9IGdsIFRoZSBXZWJHTENvbnRleHQgdG8g
dXNlLgorICogQHBhcmFtIHshV2ViR0xUZXh0dXJlfSB0ZXggVGhlIHRleHR1cmUgdG8gZmlsbC4K
KyAqIEBwYXJhbSB7bnVtYmVyfSB3aWR0aCBUaGUgd2lkdGggb2YgdGhlIHRleHR1cmUgdG8gY3Jl
YXRlLgorICogQHBhcmFtIHtudW1iZXJ9IGhlaWdodCBUaGUgaGVpZ2h0IG9mIHRoZSB0ZXh0dXJl
IHRvIGNyZWF0ZS4KKyAqIEBwYXJhbSB7IUFycmF5LjxudW1iZXI+fSBjb2xvciBUaGUgY29sb3Ig
dG8gZmlsbCB3aXRoLiBBIDQgZWxlbWVudCBhcnJheQorICogICAgICAgIHdoZXJlIGVhY2ggZWxl
bWVudCBpcyBpbiB0aGUgcmFuZ2UgMCB0byAyNTUuCisgKiBAcGFyYW0ge251bWJlcn0gb3B0X2xl
dmVsIFRoZSBsZXZlbCBvZiB0aGUgdGV4dHVyZSB0byBmaWxsLiBEZWZhdWx0ID0gMC4KKyAqLwor
dmFyIGZpbGxUZXh0dXJlID0gZnVuY3Rpb24oZ2wsIHRleCwgd2lkdGgsIGhlaWdodCwgY29sb3Is
IG9wdF9sZXZlbCkgeworICBvcHRfbGV2ZWwgPSBvcHRfbGV2ZWwgfHwgMDsKKyAgdmFyIGNhbnZh
cyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpOworICBjYW52YXMud2lkdGggPSB3
aWR0aDsKKyAgY2FudmFzLmhlaWdodCA9IGhlaWdodDsKKyAgdmFyIGN0eDJkID0gY2FudmFzLmdl
dENvbnRleHQoJzJkJyk7CisgIGN0eDJkLmZpbGxTdHlsZSA9ICJyZ2JhKCIgKyBjb2xvclswXSAr
ICIsIiArIGNvbG9yWzFdICsgIiwiICsgY29sb3JbMl0gKyAiLCIgKyBjb2xvclszXSArICIpIjsK
KyAgY3R4MmQuZmlsbFJlY3QoMCwgMCwgd2lkdGgsIGhlaWdodCk7CisgIGdsLmJpbmRUZXh0dXJl
KGdsLlRFWFRVUkVfMkQsIHRleCk7CisgIGdsLnRleEltYWdlMkQoCisgICAgICBnbC5URVhUVVJF
XzJELCBvcHRfbGV2ZWwsIGdsLlJHQkEsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIGNhbnZh
cyk7Cit9OworCisvKioKKyAqIENyZWF0ZXMgYSB0ZXh0dXJlcyBhbmQgZmlsbHMgaXQgd2l0aCBh
IHNvbGlkIGNvbG9yCisgKiBAcGFyYW0geyFXZWJHTENvbnRleHR9IGdsIFRoZSBXZWJHTENvbnRl
eHQgdG8gdXNlLgorICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoIFRoZSB3aWR0aCBvZiB0aGUgdGV4
dHVyZSB0byBjcmVhdGUuCisgKiBAcGFyYW0ge251bWJlcn0gaGVpZ2h0IFRoZSBoZWlnaHQgb2Yg
dGhlIHRleHR1cmUgdG8gY3JlYXRlLgorICogQHBhcmFtIHshQXJyYXkuPG51bWJlcj59IGNvbG9y
IFRoZSBjb2xvciB0byBmaWxsIHdpdGguIEEgNCBlbGVtZW50IGFycmF5CisgKiAgICAgICAgd2hl
cmUgZWFjaCBlbGVtZW50IGlzIGluIHRoZSByYW5nZSAwIHRvIDI1NS4KKyAqIEByZXR1cm4geyFX
ZWJHTFRleHR1cmV9CisgKi8KK3ZhciBjcmVhdGVDb2xvcmVkVGV4dHVyZSA9IGZ1bmN0aW9uKGds
LCB3aWR0aCwgaGVpZ2h0LCBjb2xvcikgeworICB2YXIgdGV4ID0gZ2wuY3JlYXRlVGV4dHVyZSgp
OworICBmaWxsVGV4dHVyZShnbCwgdGV4dCwgd2lkdGgsIGhlaWdodCwgY29sb3IpOworICByZXR1
cm4gdGV4OworfTsKKworLyoqCisgKiBEcmF3cyBhIHByZXZpb3VzbHkgc2V0dXAgcXVhZC4KKyAq
IEBwYXJhbSB7IVdlYkdMQ29udGV4dH0gZ2wgVGhlIFdlYkdMQ29udGV4dCB0byB1c2UuCisgKiBA
cGFyYW0geyFBcnJheS48bnVtYmVyPn0gb3B0X2NvbG9yIFRoZSBjb2xvciB0byBmaWxsIGNsZWFy
IHdpdGggYmVmb3JlCisgKiAgICAgICAgZHJhd2luZy4gQSA0IGVsZW1lbnQgYXJyYXkgd2hlcmUg
ZWFjaCBlbGVtZW50IGlzIGluIHRoZSByYW5nZSAwIHRvCisgKiAgICAgICAgMjU1LiBEZWZhdWx0
IFsyNTUsIDI1NSwgMjU1LCAyNTVdCisgKi8KK3ZhciBkcmF3UXVhZCA9IGZ1bmN0aW9uKGdsLCBv
cHRfY29sb3IpIHsKKyAgb3B0X2NvbG9yID0gb3B0X2NvbG9yIHx8IFsyNTUsIDI1NSwgMjU1LCAy
NTVdOworICBnbC5jbGVhckNvbG9yKAorICAgICAgb3B0X2NvbG9yWzBdIC8gMjU1LAorICAgICAg
b3B0X2NvbG9yWzFdIC8gMjU1LAorICAgICAgb3B0X2NvbG9yWzJdIC8gMjU1LAorICAgICAgb3B0
X2NvbG9yWzNdIC8gMjU1KTsKKyAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCB8IGdsLkRF
UFRIX0JVRkZFUl9CSVQpOworICBnbC5kcmF3QXJyYXlzKGdsLlRSSUFOR0xFUywgMCwgNik7Cit9
OworCisvKioKKyAqIENoZWNrcyB0aGF0IGFuIGVudGlyZSBjYW52YXMgaXMgMSBjb2xvci4KKyAq
IEBwYXJhbSB7IVdlYkdMQ29udGV4dH0gZ2wgVGhlIFdlYkdMQ29udGV4dCB0byB1c2UuCisgKiBA
cGFyYW0geyFBcnJheS48bnVtYmVyPn0gY29sb3IgVGhlIGNvbG9yIHRvIGZpbGwgY2xlYXIgd2l0
aCBiZWZvcmUgZHJhd2luZy4gQQorICogICAgICAgIDQgZWxlbWVudCBhcnJheSB3aGVyZSBlYWNo
IGVsZW1lbnQgaXMgaW4gdGhlIHJhbmdlIDAgdG8gMjU1LgorICogQHBhcmFtIHtzdHJpbmd9IG1z
ZyBNZXNzYWdlIHRvIGFzc29jaWF0ZSB3aXRoIHN1Y2Nlc3MuIEVnICgic2hvdWxkIGJlIHJlZCIp
LgorICovCit2YXIgY2hlY2tDYW52YXMgPSBmdW5jdGlvbihnbCwgY29sb3IsIG1zZykgeworICB2
YXIgd2lkdGggPSBnbC5jYW52YXMud2lkdGg7CisgIHZhciBoZWlnaHQgPSBnbC5jYW52YXMuaGVp
Z2h0OworICB2YXIgYnVmID0gbmV3IFVpbnQ4QXJyYXkod2lkdGggKiBoZWlnaHQgKiA0KTsKKyAg
Z2wucmVhZFBpeGVscygwLCAwLCB3aWR0aCwgaGVpZ2h0LCBnbC5SR0JBLCBnbC5VTlNJR05FRF9C
WVRFLCBidWYpOworICBmb3IgKHZhciBpID0gMDsgaSA8IHdpZHRoICogaGVpZ2h0OyArK2kpIHsK
KyAgICB2YXIgb2Zmc2V0ID0gaSAqIDQ7CisgICAgaWYgKGJ1ZltvZmZzZXQgKyAwXSAhPSBjb2xv
clswXSB8fAorICAgICAgICBidWZbb2Zmc2V0ICsgMV0gIT0gY29sb3JbMV0gfHwKKyAgICAgICAg
YnVmW29mZnNldCArIDJdICE9IGNvbG9yWzJdIHx8CisgICAgICAgIGJ1ZltvZmZzZXQgKyAzXSAh
PSBjb2xvclszXSkgeworICAgICAgdGVzdEZhaWxlZChtc2cpOworICAgICAgZGVidWcoJ2V4cGVj
dGVkOiAnICsKKyAgICAgICAgICBjb2xvclswXSArICcsICcgKworICAgICAgICAgIGNvbG9yWzFd
ICsgJywgJyArCisgICAgICAgICAgY29sb3JbMl0gKyAnLCAnICsKKyAgICAgICAgICBjb2xvclsz
XSArICcgd2FzOiAnICsKKyAgICAgICAgICBidWZbb2Zmc2V0ICsgMF0gKyAnLCAnICsKKyAgICAg
ICAgICBidWZbb2Zmc2V0ICsgMV0gKyAnLCAnICsKKyAgICAgICAgICBidWZbb2Zmc2V0ICsgMl0g
KyAnLCAnICsKKyAgICAgICAgICBidWZbb2Zmc2V0ICsgM10pOworICAgICAgcmV0dXJuOworICAg
IH0KKyAgfQorICB0ZXN0UGFzc2VkKG1zZyk7Cit9OworCisvKioKKyAqIENyZWF0ZXMgYSB3ZWJn
bCBjb250ZXh0LgorICogQHBhcmFtIHshQ2FudmFzfSBvcHRfY2FudmFzIFRoZSBjYW52YXMgdGFn
IHRvIGdldCBjb250ZXh0IGZyb20uIElmIG9uZSBpcyBub3QKKyAqICAgICBwYXNzZWQgaW4gb25l
IHdpbGwgYmUgY3JlYXRlZC4KKyAqIEByZXR1cm4geyFXZWJHTENvbnRleHR9IFRoZSBjcmVhdGVk
IGNvbnRleHQuCisgKi8KK3ZhciBjcmVhdGUzRENvbnRleHQgPSBmdW5jdGlvbihvcHRfY2FudmFz
KSB7CisgIG9wdF9jYW52YXMgPSBvcHRfY2FudmFzIHx8IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImNhbnZhcyIpOworICB2YXIgY29udGV4dCA9IG51bGw7CisgIHRyeSB7CisgICAgY29udGV4dCA9
IG9wdF9jYW52YXMuZ2V0Q29udGV4dCgiZXhwZXJpbWVudGFsLXdlYmdsIik7CisgIH0gY2F0Y2go
ZSkge30KKyAgaWYgKCFjb250ZXh0KSB7CisgICAgdHJ5IHsKKyAgICAgIGNvbnRleHQgPSBvcHRf
Y2FudmFzLmdldENvbnRleHQoIndlYmtpdC0zZCIpOworICAgIH0gY2F0Y2goZSkge30KKyAgfQor
ICBpZiAoIWNvbnRleHQpIHsKKyAgICB0cnkgeworICAgICAgY29udGV4dCA9IG9wdF9jYW52YXMu
Z2V0Q29udGV4dCgibW96LXdlYmdsIik7CisgICAgfSBjYXRjaChlKSB7fQorICB9CisgIGlmICgh
Y29udGV4dCkgeworICAgIHRlc3RGYWlsZWQoIlVuYWJsZSB0byBmZXRjaCBXZWJHTCByZW5kZXJp
bmcgY29udGV4dCBmb3IgQ2FudmFzIik7CisgIH0KKyAgcmV0dXJuIGNvbnRleHQ7Cit9CisKKy8q
KgorICogR2V0cyBhIEdMRXJyb3IgdmFsdWUgYXMgYSBzdHJpbmcuCisgKiBAcGFyYW0geyFXZWJH
TENvbnRleHR9IGdsIFRoZSBXZWJHTENvbnRleHQgdG8gdXNlLgorICogQHBhcmFtIHtudW1iZXJ9
IGVyciBUaGUgd2ViZ2wgZXJyb3IgYXMgcmV0cmlldmVkIGZyb20gZ2wuZ2V0RXJyb3IoKS4KKyAq
IEByZXR1cm4ge3N0cmluZ30gdGhlIGVycm9yIGFzIGEgc3RyaW5nLgorICovCit2YXIgZ2V0R0xF
cnJvckFzU3RyaW5nID0gZnVuY3Rpb24oZ2wsIGVycikgeworICBpZiAoZXJyID09PSBnbC5OT19F
UlJPUikgeworICAgIHJldHVybiAiTk9fRVJST1IiOworICB9CisgIGZvciAodmFyIG5hbWUgaW4g
Z2wpIHsKKyAgICBpZiAoZ2xbbmFtZV0gPT09IGVycikgeworICAgICAgcmV0dXJuIG5hbWU7Cisg
ICAgfQorICB9CisgIHJldHVybiBlcnIudG9TdHJpbmcoKTsKK307CisKKy8qKgorICogV3JhcHMg
YSBXZWJHTCBmdW5jdGlvbiB3aXRoIGEgZnVuY3Rpb24gdGhhdCB0aHJvd3MgYW4gZXhjZXB0aW9u
IGlmIHRoZXJlIGlzCisgKiBhbiBlcnJvci4KKyAqIEBwYXJhbSB7IVdlYkdMQ29udGV4dH0gZ2wg
VGhlIFdlYkdMQ29udGV4dCB0byB1c2UuCisgKiBAcGFyYW0ge3N0cmluZ30gZm5hbWUgTmFtZSBv
ZiBmdW5jdGlvbiB0byB3cmFwLgorICogQHJldHVybiB7ZnVuY3Rpb259IFRoZSB3cmFwcGVkIGZ1
bmN0aW9uLgorICovCit2YXIgY3JlYXRlR0xFcnJvcldyYXBwZXIgPSBmdW5jdGlvbihjb250ZXh0
LCBmbmFtZSkgeworICByZXR1cm4gZnVuY3Rpb24oKSB7CisgICAgdmFyIHJ2ID0gY29udGV4dFtm
bmFtZV0uYXBwbHkoY29udGV4dCwgYXJndW1lbnRzKTsKKyAgICB2YXIgZXJyID0gY29udGV4dC5n
ZXRFcnJvcigpOworICAgIGlmIChlcnIgIT0gMCkKKyAgICAgIHRocm93ICJHTCBlcnJvciAiICsg
Z2V0R0xFcnJvckFzU3RyaW5nKGVycikgKyAiIGluICIgKyBmbmFtZTsKKyAgICByZXR1cm4gcnY7
CisgIH07Cit9OworCisvKioKKyAqIENyZWF0ZXMgYSBXZWJHTCBjb250ZXh0IHdoZXJlIGFsbCBm
dW5jdGlvbnMgYXJlIHdyYXBwZWQgdG8gdGhyb3cgYW4gZXhjZXB0aW9uCisgKiBpZiB0aGVyZSBp
cyBhbiBlcnJvci4KKyAqIEBwYXJhbSB7IUNhbnZhc30gY2FudmFzIFRoZSBIVE1MIGNhbnZhcyB0
byBnZXQgYSBjb250ZXh0IGZyb20uCisgKiBAcmV0dXJuIHshT2JqZWN0fSBUaGUgd3JhcHBlZCBj
b250ZXh0LgorICovCitmdW5jdGlvbiBjcmVhdGUzRENvbnRleHRXaXRoV3JhcHBlclRoYXRUaHJv
d3NPbkdMRXJyb3IoY2FudmFzKSB7CisgIHZhciBjb250ZXh0ID0gY3JlYXRlM0RDb250ZXh0KGNh
bnZhcyk7CisgIHZhciB3cmFwID0ge307CisgIGZvciAodmFyIGkgaW4gY29udGV4dCkgeworICAg
IHRyeSB7CisgICAgICBpZiAodHlwZW9mIGNvbnRleHRbaV0gPT0gJ2Z1bmN0aW9uJykgeworICAg
ICAgICB3cmFwW2ldID0gY3JlYXRlR0xFcnJvcldyYXBwZXIoY29udGV4dCwgaSk7CisgICAgICB9
IGVsc2UgeworICAgICAgICB3cmFwW2ldID0gY29udGV4dFtpXTsKKyAgICAgIH0KKyAgICB9IGNh
dGNoIChlKSB7CisgICAgICBsb2coImNyZWF0ZUNvbnRleHRXcmFwcGVyVGhhdFRocm93c09uR0xF
cnJvcjogRXJyb3IgYWNjZXNzaW5nICIgKyBpKTsKKyAgICB9CisgIH0KKyAgd3JhcC5nZXRFcnJv
ciA9IGZ1bmN0aW9uKCkgeworICAgICAgcmV0dXJuIGNvbnRleHQuZ2V0RXJyb3IoKTsKKyAgfTsK
KyAgcmV0dXJuIHdyYXA7Cit9OworCisvKioKKyAqIFRlc3RzIHRoYXQgYW4gZXZhbHVhdGVkIGV4
cHJlc3Npb24gZ2VuZXJhdGVzIGEgc3BlY2lmaWMgR0wgZXJyb3IuCisgKiBAcGFyYW0geyFXZWJH
TENvbnRleHR9IGdsIFRoZSBXZWJHTENvbnRleHQgdG8gdXNlLgorICogQHBhcmFtIHtudW1iZXJ9
IGdsRXJyb3IgVGhlIGV4cGVjdGVkIGdsIGVycm9yLgorICogQHBhcmFtIHtzdHJpbmd9IGV2YWxT
VHIgVGhlIHN0cmluZyB0byBldmFsdWF0ZS4KKyAqLwordmFyIHNob3VsZEdlbmVyYXRlR0xFcnJv
ciA9IGZ1bmN0aW9uKGdsLCBnbEVycm9yLCBldmFsU3RyKSB7CisgIHZhciBleGNlcHRpb247Cisg
IHRyeSB7CisgICAgZXZhbChldmFsU3RyKTsKKyAgfSBjYXRjaCAoZSkgeworICAgIGV4Y2VwdGlv
biA9IGU7CisgIH0KKyAgaWYgKGV4Y2VwdGlvbikgeworICAgIHRlc3RGYWlsZWQoZXZhbFN0ciAr
ICIgdGhyZXcgZXhjZXB0aW9uICIgKyBleGNlcHRpb24pOworICB9IGVsc2UgeworICAgIHZhciBl
cnIgPSBnbC5nZXRFcnJvcigpOworICAgIGlmIChlcnIgIT0gZ2xFcnJvcikgeworICAgICAgdGVz
dEZhaWxlZChldmFsU3RyICsgIiBleHBlY3RlZDogIiArIGdldEdMRXJyb3JBc1N0cmluZyhnbCwg
Z2xFcnJvcikgKyAiLiBXYXMgIiArIGdldEdMRXJyb3JBc1N0cmluZyhnbCwgZXJyKSArICIuIik7
CisgICAgfSBlbHNlIHsKKyAgICAgIHRlc3RQYXNzZWQoZXZhbFN0ciArICIgd2FzIGV4cGVjdGVk
IHZhbHVlOiAiICsgZ2V0R0xFcnJvckFzU3RyaW5nKGdsLCBnbEVycm9yKSArICIuIik7CisgICAg
fQorICB9Cit9OworCisvKioKKyAqIFRlc3RzIHRoYXQgdGhlIGZpcnN0IGVycm9yIEdMIHJldHVy
bnMgaXMgdGhlIHNwZWNpZmllZCBlcnJvci4KKyAqIEBwYXJhbSB7IVdlYkdMQ29udGV4dH0gZ2wg
VGhlIFdlYkdMQ29udGV4dCB0byB1c2UuCisgKiBAcGFyYW0ge251bWJlcn0gZ2xFcnJvciBUaGUg
ZXhwZWN0ZWQgZ2wgZXJyb3IuCisgKiBAcGFyYW0ge3N0cmluZ30gb3B0X21zZworICovCit2YXIg
Z2xFcnJvclNob3VsZEJlID0gZnVuY3Rpb24oZ2wsIGdsRXJyb3IsIG9wdF9tc2cpIHsKKyAgb3B0
X21zZyA9IG9wdF9tc2cgfHwgIiI7CisgIHZhciBlcnIgPSBnbC5nZXRFcnJvcigpOworICBpZiAo
ZXJyICE9IGdsRXJyb3IpIHsKKyAgICB0ZXN0RmFpbGVkKCJnZXRFcnJvciBleHBlY3RlZDogIiAr
IGdldEdMRXJyb3JBc1N0cmluZyhnbCwgZ2xFcnJvcikgKworICAgICAgICAgICAgICAgIi4gV2Fz
ICIgKyBnZXRHTEVycm9yQXNTdHJpbmcoZ2wsIGVycikgKyAiIDogIiArIG9wdF9tc2cpOworICB9
IGVsc2UgeworICAgIHRlc3RQYXNzZWQoImdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogIiAr
CisgICAgICAgICAgICAgICAgZ2V0R0xFcnJvckFzU3RyaW5nKGdsLCBnbEVycm9yKSArICIgOiAi
ICsgb3B0X21zZyk7CisgIH0KK307CisKKy8qKgorICogTGlua3MgYSBXZWJHTCBwcm9ncmFtLCB0
aHJvd3MgaWYgdGhlcmUgYXJlIGVycm9ycy4KKyAqIEBwYXJhbSB7IVdlYkdMQ29udGV4dH0gZ2wg
VGhlIFdlYkdMQ29udGV4dCB0byB1c2UuCisgKiBAcGFyYW0geyFXZWJHTFByb2dyYW19IHByb2dy
YW0gVGhlIFdlYkdMUHJvZ3JhbSB0byBsaW5rLgorICovCit2YXIgbGlua1Byb2dyYW0gPSBmdW5j
dGlvbihnbCwgcHJvZ3JhbSkgeworICAvLyBMaW5rIHRoZSBwcm9ncmFtCisgIGdsLmxpbmtQcm9n
cmFtKHByb2dyYW0pOworCisgIC8vIENoZWNrIHRoZSBsaW5rIHN0YXR1cworICB2YXIgbGlua2Vk
ID0gZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihwcm9ncmFtLCBnbC5MSU5LX1NUQVRVUyk7CisgIGlm
ICghbGlua2VkKSB7CisgICAgLy8gc29tZXRoaW5nIHdlbnQgd3Jvbmcgd2l0aCB0aGUgbGluawor
ICAgIHZhciBlcnJvciA9IGdsLmdldFByb2dyYW1JbmZvTG9nIChwcm9ncmFtKTsKKworICAgIGds
LmRlbGV0ZVByb2dyYW0ocHJvZ3JhbSk7CisgICAgZ2wuZGVsZXRlUHJvZ3JhbShmcmFnbWVudFNo
YWRlcik7CisgICAgZ2wuZGVsZXRlUHJvZ3JhbSh2ZXJ0ZXhTaGFkZXIpOworCisgICAgdGVzdEZh
aWxlZCgiRXJyb3IgaW4gcHJvZ3JhbSBsaW5raW5nOiIgKyBlcnJvcik7CisgIH0KK307CisKKy8q
KgorICogU2V0cyB1cCBXZWJHTCB3aXRoIHNoYWRlcnMuCisgKiBAcGFyYW0ge3N0cmluZ30gY2Fu
dmFzTmFtZSBUaGUgaWQgb2YgdGhlIGNhbnZhcy4KKyAqIEBwYXJhbSB7c3RyaW5nfSB2c2hhZGVy
IFRoZSBpZCBvZiB0aGUgc2NyaXB0IHRhZyB0aGF0IGNvbnRhaW5zIHRoZSB2ZXJ0ZXgKKyAqICAg
ICBzaGFkZXIgc291cmNlLgorICogQHBhcmFtIHtzdHJpbmd9IGZzaGFkZXIgVGhlIGlkIG9mIHRo
ZSBzY3JpcHQgdGFnIHRoYXQgY29udGFpbnMgdGhlIGZyYWdtZW50CisgKiAgICAgc2hhZGVyIHNv
dXJjZS4KKyAqIEBwYXJhbSB7IUFycmF5LjxzdHJpbmc+fSBhdHRyaWJzIEFuIGFycmF5IG9mIGF0
dHJpYiBuYW1lcyB1c2VkIHRvIGJpbmQKKyAqICAgICBhdHRyaWJzIHRvIHRoZSBvcmRpbmFsIG9m
IHRoZSBuYW1lIGluIHRoaXMgYXJyYXkuCisgKiBAcGFyYW0geyFBcnJheS48bnVtYmVyPn0gb3B0
X2NsZWFyQ29sb3IgVGhlIGNvbG9yIHRvIGNsYQorICogQHJldHVybiB7IVdlYkdMQ29udGV4dH0g
VGhlIGNyZWF0ZWQgV2ViR0xDb250ZXh0LgorICovCit2YXIgc2V0dXBXZWJHTFdpdGhTaGFkZXJz
ID0gZnVuY3Rpb24oCisgICBjYW52YXNOYW1lLCB2c2hhZGVyLCBmc2hhZGVyLCBhdHRyaWJzKSB7
CisgIHZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChjYW52YXNOYW1lKTsKKyAg
dmFyIGdsID0gY3JlYXRlM0RDb250ZXh0KGNhbnZhcyk7CisgIGlmICghZ2wpIHsKKyAgICB0ZXN0
RmFpbGVkKCJObyBXZWJHTCBjb250ZXh0IGZvdW5kIik7CisgIH0KKworICAvLyBjcmVhdGUgb3Vy
IHNoYWRlcnMKKyAgdmFyIHZlcnRleFNoYWRlciA9IGxvYWRTaGFkZXJGcm9tU2NyaXB0KGdsLCB2
c2hhZGVyKTsKKyAgdmFyIGZyYWdtZW50U2hhZGVyID0gbG9hZFNoYWRlckZyb21TY3JpcHQoZ2ws
IGZzaGFkZXIpOworCisgIGlmICghdmVydGV4U2hhZGVyIHx8ICFmcmFnbWVudFNoYWRlcikgewor
ICAgIHJldHVybiBudWxsOworICB9CisKKyAgLy8gQ3JlYXRlIHRoZSBwcm9ncmFtIG9iamVjdAor
ICBwcm9ncmFtID0gZ2wuY3JlYXRlUHJvZ3JhbSgpOworCisgIGlmICghcHJvZ3JhbSkgeworICAg
IHJldHVybiBudWxsOworICB9CisKKyAgLy8gQXR0YWNoIG91ciB0d28gc2hhZGVycyB0byB0aGUg
cHJvZ3JhbQorICBnbC5hdHRhY2hTaGFkZXIgKHByb2dyYW0sIHZlcnRleFNoYWRlcik7CisgIGds
LmF0dGFjaFNoYWRlciAocHJvZ3JhbSwgZnJhZ21lbnRTaGFkZXIpOworCisgIC8vIEJpbmQgYXR0
cmlidXRlcworICBmb3IgKHZhciBpIGluIGF0dHJpYnMpIHsKKyAgICBnbC5iaW5kQXR0cmliTG9j
YXRpb24gKHByb2dyYW0sIGksIGF0dHJpYnNbaV0pOworICB9CisKKyAgbGlua1Byb2dyYW0oZ2ws
IHByb2dyYW0pOworCisgIGdsLnVzZVByb2dyYW0ocHJvZ3JhbSk7CisKKyAgZ2wuZW5hYmxlKGds
LkRFUFRIX1RFU1QpOworICBnbC5lbmFibGUoZ2wuQkxFTkQpOworICBnbC5ibGVuZEZ1bmMoZ2wu
U1JDX0FMUEhBLCBnbC5PTkVfTUlOVVNfU1JDX0FMUEhBKTsKKworICBnbC5wcm9ncmFtID0gcHJv
Z3JhbTsKKyAgcmV0dXJuIGdsOworfTsKKworLyoqCisgKiBHZXRzIGEgZmlsZSBmcm9tIGEgZmls
ZS9VUkwKKyAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlIHRoZSBVUkwgb2YgdGhlIGZpbGUgdG8gZ2V0
LgorICogQHJldHVybiB7c3RyaW5nfSBUaGUgY29udGVudHMgb2YgdGhlIGZpbGUuCisgKi8KK3Zh
ciByZWFkRmlsZSA9IGZ1bmN0aW9uKGZpbGUpIHsKKyAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVx
dWVzdCgpOworICB4aHIub3BlbigiR0VUIiwgZmlsZSwgZmFsc2UpOworICB4aHIuc2VuZCgpOwor
ICByZXR1cm4geGhyLnJlc3BvbnNlVGV4dDsKK307CisKKy8qKgorICogR2V0cyBhIGZpbGUgZnJv
bSBhIFVSTCBhbmQgcGFyc2VzIGl0IGZvciBmaWxlbmFtZXMuIElGIGEgZmlsZSBuYW1lIGVuZHMK
KyAqIGluIC50eHQgcmVjdXJzaXZlbHkgcmVhZHMgdGhhdCBmaWxlIGFuZCBhZGRzIGl0IHRvIHRo
ZSBsaXN0LgorICovCit2YXIgcmVhZEZpbGVMaXN0ID0gZnVuY3Rpb24odXJsKSB7CisgIHZhciBm
aWxlcyA9IFtdOworICBpZiAodXJsLnN1YnN0cih1cmwubGVuZ3RoIC0gNCkgPT0gJy50eHQnKSB7
CisgICAgdmFyIGxpbmVzID0gcmVhZEZpbGUodXJsKS5zcGxpdCgnXG4nKTsKKyAgICB2YXIgcHJl
Zml4ID0gJyc7CisgICAgdmFyIGxhc3RTbGFzaCA9IHVybC5sYXN0SW5kZXhPZignLycpOworICAg
IGlmIChsYXN0U2xhc2ggPj0gMCkgeworICAgICAgcHJlZml4ID0gdXJsLnN1YnN0cigwLCBsYXN0
U2xhc2ggKyAxKTsKKyAgICB9CisgICAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IGxpbmVzLmxlbmd0
aDsgKytpaSkgeworICAgICAgdmFyIHN0ciA9IGxpbmVzW2lpXS5yZXBsYWNlKC9eXHNccyovLCAn
JykucmVwbGFjZSgvXHNccyokLywgJycpOworICAgICAgaWYgKHN0ci5sZW5ndGggPiA0ICYmCisg
ICAgICAgICAgc3RyWzBdICE9ICcjJyAmJgorICAgICAgICAgIHN0clswXSAhPSAiOyIgJiYKKyAg
ICAgICAgICBzdHIuc3Vic3RyKDAsIDIpICE9ICIvLyIpIHsKKyAgICAgICAgbmV3X3VybCA9IHBy
ZWZpeCArIHN0cjsKKyAgICAgICAgZmlsZXMgPSBmaWxlcy5jb25jYXQocmVhZEZpbGVMaXN0KG5l
d191cmwpKTsKKyAgICAgIH0KKyAgICB9CisgIH0gZWxzZSB7CisgICAgZmlsZXMucHVzaCh1cmwp
OworICB9CisgIHJldHVybiBmaWxlczsKK307CisKKy8qKgorICogTG9hZHMgYSBzaGFkZXIuCisg
KiBAcGFyYW0geyFXZWJHTENvbnRleHR9IGdsIFRoZSBXZWJHTENvbnRleHQgdG8gdXNlLgorICog
QHBhcmFtIHtzdHJpbmd9IHNoYWRlclNvdXJjZSBUaGUgc2hhZGVyIHNvdXJjZS4KKyAqIEBwYXJh
bSB7bnVtYmVyfSBzaGFkZXJUeXBlIFRoZSB0eXBlIG9mIHNoYWRlci4KKyAqIEByZXR1cm4geyFX
ZWJHTFNoYWRlcn0gVGhlIGNyZWF0ZWQgc2hhZGVyLgorICovCit2YXIgbG9hZFNoYWRlciA9IGZ1
bmN0aW9uKGdsLCBzaGFkZXJTb3VyY2UsIHNoYWRlclR5cGUpIHsKKyAgLy8gQ3JlYXRlIHRoZSBz
aGFkZXIgb2JqZWN0CisgIHZhciBzaGFkZXIgPSBnbC5jcmVhdGVTaGFkZXIoc2hhZGVyVHlwZSk7
CisgIGlmIChzaGFkZXIgPT0gbnVsbCkgeworICAgIGxvZygiKioqIEVycm9yOiB1bmFibGUgdG8g
Y3JlYXRlIHNoYWRlciAnIitzaGFkZXJTb3VyY2UrIiciKTsKKyAgICByZXR1cm4gbnVsbDsKKyAg
fQorCisgIC8vIExvYWQgdGhlIHNoYWRlciBzb3VyY2UKKyAgZ2wuc2hhZGVyU291cmNlKHNoYWRl
ciwgc2hhZGVyU291cmNlKTsKKworICAvLyBDb21waWxlIHRoZSBzaGFkZXIKKyAgZ2wuY29tcGls
ZVNoYWRlcihzaGFkZXIpOworCisgIC8vIENoZWNrIHRoZSBjb21waWxlIHN0YXR1cworICB2YXIg
Y29tcGlsZWQgPSBnbC5nZXRTaGFkZXJQYXJhbWV0ZXIoc2hhZGVyLCBnbC5DT01QSUxFX1NUQVRV
Uyk7CisgIGlmICghY29tcGlsZWQpIHsKKyAgICAvLyBTb21ldGhpbmcgd2VudCB3cm9uZyBkdXJp
bmcgY29tcGlsYXRpb247IGdldCB0aGUgZXJyb3IKKyAgICBsYXN0RXJyb3IgPSBnbC5nZXRTaGFk
ZXJJbmZvTG9nKHNoYWRlcik7CisgICAgbG9nKCIqKiogRXJyb3IgY29tcGlsaW5nIHNoYWRlciAn
IiArIHNoYWRlciArICInOiIgKyBsYXN0RXJyb3IpOworICAgIGdsLmRlbGV0ZVNoYWRlcihzaGFk
ZXIpOworICAgIHJldHVybiBudWxsOworICB9CisKKyAgcmV0dXJuIHNoYWRlcjsKK30KKworLyoq
CisgKiBMb2FkcyBhIHNoYWRlciBmcm9tIGEgVVJMLgorICogQHBhcmFtIHshV2ViR0xDb250ZXh0
fSBnbCBUaGUgV2ViR0xDb250ZXh0IHRvIHVzZS4KKyAqIEBwYXJhbSB7ZmlsZX0gZmlsZSBUaGUg
VVJMIG9mIHRoZSBzaGFkZXIgc291cmNlLgorICogQHBhcmFtIHtudW1iZXJ9IHR5cGUgVGhlIHR5
cGUgb2Ygc2hhZGVyLgorICogQHJldHVybiB7IVdlYkdMU2hhZGVyfSBUaGUgY3JlYXRlZCBzaGFk
ZXIuCisgKi8KK3ZhciBsb2FkU2hhZGVyRnJvbUZpbGUgPSBmdW5jdGlvbihnbCwgZmlsZSwgdHlw
ZSkgeworICB2YXIgc2hhZGVyU291cmNlID0gcmVhZEZpbGUoZmlsZSk7CisgIHJldHVybiBsb2Fk
U2hhZGVyKGdsLCBzaGFkZXJTb3VyY2UsIHR5cGUpOworfTsKKworLyoqCisgKiBMb2FkcyBhIHNo
YWRlciBmcm9tIGEgc2NyaXB0IHRhZy4KKyAqIEBwYXJhbSB7IVdlYkdMQ29udGV4dH0gZ2wgVGhl
IFdlYkdMQ29udGV4dCB0byB1c2UuCisgKiBAcGFyYW0ge3N0cmluZ30gc2NyaXB0SWQgVGhlIGlk
IG9mIHRoZSBzY3JpcHQgdGFnLgorICogQHBhcmFtIHtudW1iZXJ9IG9wdF9zaGFkZXJUeXBlIFRo
ZSB0eXBlIG9mIHNoYWRlci4gSWYgbm90IHBhc3NlZCBpbiBpdCB3aWxsCisgKiAgICAgYmUgZGVy
aXZlZCBmcm9tIHRoZSB0eXBlIG9mIHRoZSBzY3JpcHQgdGFnLgorICogQHJldHVybiB7IVdlYkdM
U2hhZGVyfSBUaGUgY3JlYXRlZCBzaGFkZXIuCisgKi8KK3ZhciBsb2FkU2hhZGVyRnJvbVNjcmlw
dCA9IGZ1bmN0aW9uKGdsLCBzY3JpcHRJZCwgb3B0X3NoYWRlclR5cGUpIHsKKyAgdmFyIHNoYWRl
clNvdXJjZSA9ICIiOworICB2YXIgc2hhZGVyVHlwZTsKKyAgdmFyIHNoYWRlclNjcmlwdCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHNjcmlwdElkKTsKKyAgaWYgKCFzaGFkZXJTY3JpcHQpIHsK
KyAgICB0aHJvdygiKioqIEVycm9yOiB1bmtub3duIHNjcmlwdCBlbGVtZW50IiArIHNjcmlwdElk
KTsKKyAgfQorICBzaGFkZXJTb3VyY2UgPSBzaGFkZXJTY3JpcHQudGV4dDsKKworICBpZiAoIW9w
dF9zaGFkZXJUeXBlKSB7CisgICAgaWYgKHNoYWRlclNjcmlwdC50eXBlID09ICJ4LXNoYWRlci94
LXZlcnRleCIpIHsKKyAgICAgIHNoYWRlclR5cGUgPSBnbC5WRVJURVhfU0hBREVSOworICAgIH0g
ZWxzZSBpZiAoc2hhZGVyU2NyaXB0LnR5cGUgPT0gIngtc2hhZGVyL3gtZnJhZ21lbnQiKSB7Cisg
ICAgICBzaGFkZXJUeXBlID0gZ2wuRlJBR01FTlRfU0hBREVSOworICAgIH0gZWxzZSBpZiAoc2hh
ZGVyVHlwZSAhPSBnbC5WRVJURVhfU0hBREVSICYmIHNoYWRlclR5cGUgIT0gZ2wuRlJBR01FTlRf
U0hBREVSKSB7CisgICAgICB0aHJvdygiKioqIEVycm9yOiB1bmtub3duIHNoYWRlciB0eXBlIik7
CisgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisgIH0KKworICByZXR1cm4gbG9hZFNoYWRlcigK
KyAgICAgIGdsLCBzaGFkZXJTb3VyY2UsIG9wdF9zaGFkZXJUeXBlID8gb3B0X3NoYWRlclR5cGUg
OiBzaGFkZXJUeXBlKTsKK307CisKK3ZhciBsb2FkU3RhbmRhcmRQcm9ncmFtID0gZnVuY3Rpb24o
Z2wpIHsKKyAgdmFyIHByb2dyYW0gPSBnbC5jcmVhdGVQcm9ncmFtKCk7CisgIGdsLmF0dGFjaFNo
YWRlcihwcm9ncmFtLCBsb2FkU3RhbmRhcmRWZXJ0ZXhTaGFkZXIoZ2wpKTsKKyAgZ2wuYXR0YWNo
U2hhZGVyKHByb2dyYW0sIGxvYWRTdGFuZGFyZEZyYWdtZW50U2hhZGVyKGdsKSk7CisgIGxpbmtQ
cm9ncmFtKGdsLCBwcm9ncmFtKTsKKyAgcmV0dXJuIHByb2dyYW07Cit9OworCisvKioKKyAqIExv
YWRzIHNoYWRlcnMgZnJvbSBmaWxlcywgY3JlYXRlcyBhIHByb2dyYW0sIGF0dGFjaGVzIHRoZSBz
aGFkZXJzIGFuZCBsaW5rcy4KKyAqIEBwYXJhbSB7IVdlYkdMQ29udGV4dH0gZ2wgVGhlIFdlYkdM
Q29udGV4dCB0byB1c2UuCisgKiBAcGFyYW0ge3N0cmluZ30gdmVydGV4U2hhZGVyUGF0aCBUaGUg
VVJMIG9mIHRoZSB2ZXJ0ZXggc2hhZGVyLgorICogQHBhcmFtIHtzdHJpbmd9IGZyYWdtZW50U2hh
ZGVyUGF0aCBUaGUgVVJMIG9mIHRoZSBmcmFnbWVudCBzaGFkZXIuCisgKiBAcmV0dXJuIHshV2Vi
R0xQcm9ncmFtfSBUaGUgY3JlYXRlZCBwcm9ncmFtLgorICovCit2YXIgbG9hZFByb2dyYW1Gcm9t
RmlsZSA9IGZ1bmN0aW9uKGdsLCB2ZXJ0ZXhTaGFkZXJQYXRoLCBmcmFnbWVudFNoYWRlclBhdGgp
IHsKKyAgdmFyIHByb2dyYW0gPSBnbC5jcmVhdGVQcm9ncmFtKCk7CisgIGdsLmF0dGFjaFNoYWRl
cigKKyAgICAgIHByb2dyYW0sCisgICAgICBsb2FkU2hhZGVyRnJvbUZpbGUoZ2wsIHZlcnRleFNo
YWRlclBhdGgsIGdsLlZFUlRFWF9TSEFERVIpKTsKKyAgZ2wuYXR0YWNoU2hhZGVyKAorICAgICAg
cHJvZ3JhbSwKKyAgICAgIGxvYWRTaGFkZXJGcm9tRmlsZShnbCwgZnJhZ21lbnRTaGFkZXJQYXRo
LCBnbC5GUkFHTUVOVF9TSEFERVIpKTsKKyAgbGlua1Byb2dyYW0oZ2wsIHByb2dyYW0pOworICBy
ZXR1cm4gcHJvZ3JhbTsKK307CisKKy8qKgorICogTG9hZHMgc2hhZGVycyBmcm9tIHNjcmlwdCB0
YWdzLCBjcmVhdGVzIGEgcHJvZ3JhbSwgYXR0YWNoZXMgdGhlIHNoYWRlcnMgYW5kCisgKiBsaW5r
cy4KKyAqIEBwYXJhbSB7IVdlYkdMQ29udGV4dH0gZ2wgVGhlIFdlYkdMQ29udGV4dCB0byB1c2Uu
CisgKiBAcGFyYW0ge3N0cmluZ30gdmVydGV4U2NyaXB0SWQgVGhlIGlkIG9mIHRoZSBzY3JpcHQg
dGFnIHRoYXQgY29udGFpbnMgdGhlCisgKiAgICAgICAgdmVydGV4IHNoYWRlci4KKyAqIEBwYXJh
bSB7c3RyaW5nfSBmcmFnbWVudFNjcmlwdElkIFRoZSBpZCBvZiB0aGUgc2NyaXB0IHRhZyB0aGF0
IGNvbnRhaW5zIHRoZQorICogICAgICAgIGZyYWdtZW50IHNoYWRlci4KKyAqIEByZXR1cm4geyFX
ZWJHTFByb2dyYW19IFRoZSBjcmVhdGVkIHByb2dyYW0uCisgKi8KK3ZhciBsb2FkUHJvZ3JhbUZy
b21TY3JpcHQgPSBmdW5jdGlvbiBsb2FkUHJvZ3JhbUZyb21TY3JpcHQoCisgIGdsLCB2ZXJ0ZXhT
Y3JpcHRJZCwgZnJhZ21lbnRTY3JpcHRJZCkgeworICB2YXIgcHJvZ3JhbSA9IGdsLmNyZWF0ZVBy
b2dyYW0oKTsKKyAgZ2wuYXR0YWNoU2hhZGVyKAorICAgICAgcHJvZ3JhbSwKKyAgICAgIGxvYWRT
aGFkZXJGcm9tU2NyaXB0KGdsLCB2ZXJ0ZXhTY3JpcHRJZCwgZ2wuVkVSVEVYX1NIQURFUikpOwor
ICBnbC5hdHRhY2hTaGFkZXIoCisgICAgICBwcm9ncmFtLAorICAgICAgbG9hZFNoYWRlckZyb21T
Y3JpcHQoZ2wsIGZyYWdtZW50U2NyaXB0SWQsICBnbC5GUkFHTUVOVF9TSEFERVIpKTsKKyAgbGlu
a1Byb2dyYW0oZ2wsIHByb2dyYW0pOworICByZXR1cm4gcHJvZ3JhbTsKK307CisKK3ZhciBsb2Fk
U3RhbmRhcmRWZXJ0ZXhTaGFkZXIgPSBmdW5jdGlvbihnbCkgeworICByZXR1cm4gbG9hZFNoYWRl
ckZyb21GaWxlKAorICAgICAgZ2wsICJyZXNvdXJjZXMvdmVydGV4U2hhZGVyLnZlcnQiLCBnbC5W
RVJURVhfU0hBREVSKTsKK307CisKK3ZhciBsb2FkU3RhbmRhcmRGcmFnbWVudFNoYWRlciA9IGZ1
bmN0aW9uKGdsKSB7CisgIHJldHVybiBsb2FkU2hhZGVyRnJvbUZpbGUoCisgICAgICBnbCwgInJl
c291cmNlcy9mcmFnbWVudFNoYWRlci5mcmFnIiwgZ2wuRlJBR01FTlRfU0hBREVSKTsKK307CisK
Ky8qKgorICogTG9hZHMgYW4gaW1hZ2UgYXN5bmNocm9ub3VzbHkuCisgKiBAcGFyYW0ge3N0cmlu
Z30gdXJsIFVSTCBvZiBpbWFnZSB0byBsb2FkLgorICogQHBhcmFtIHshZnVuY3Rpb24oIUVsZW1l
bnQpOiB2b2lkfSBjYWxsYmFjayBGdW5jdGlvbiB0byBjYWxsCisgKiAgICAgd2l0aCBsb2FkZWQg
aW1hZ2UuCisgKi8KK3ZhciBsb2FkSW1hZ2VBc3luYyA9IGZ1bmN0aW9uKHVybCwgY2FsbGJhY2sp
IHsKKyAgdmFyIGltZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2ltZycpOworICBpbWcub25s
b2FkID0gZnVuY3Rpb24oKSB7CisgICAgY2FsbGJhY2soaW1nKTsKKyAgfTsKKyAgaW1nLnNyYyA9
IHVybDsKK307CisKKy8qKgorICogTG9hZHMgYW4gYXJyYXkgb2YgaW1hZ2VzLgorICogQHBhcmFt
IHshQXJyYXkuPHN0cmluZz59IHVybHMgVVJMcyBvZiBpbWFnZXMgdG8gbG9hZC4KKyAqIEBwYXJh
bSB7IWZ1bmN0aW9uKCF7c3RyaW5nLCBpbWd9KTogdm9pZH0gY2FsbGJhY2suIENhbGxiYWNrCisg
KiAgICAgdGhhdCBnZXRzIHBhc3NlZCBtYXAgb2YgdXJscyB0byBpbWcgdGFncy4KKyAqLwordmFy
IGxvYWRJbWFnZXNBc3luYyA9IGZ1bmN0aW9uKHVybHMsIGNhbGxiYWNrKSB7CisgIHZhciBjb3Vu
dCA9IDE7CisgIHZhciBpbWFnZXMgPSB7IH07CisgIGZ1bmN0aW9uIGNvdW50RG93bigpIHsKKyAg
ICAtLWNvdW50OworICAgIGlmIChjb3VudCA9PSAwKSB7CisgICAgICBjYWxsYmFjayhpbWFnZXMp
OworICAgIH0KKyAgfQorICBmdW5jdGlvbiBpbWFnZUxvYWRlZCh1cmwpIHsKKyAgICByZXR1cm4g
ZnVuY3Rpb24oaW1nKSB7CisgICAgICBpbWFnZXNbdXJsXSA9IGltZzsKKyAgICAgIGNvdW50RG93
bigpOworICAgIH0KKyAgfQorICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgdXJscy5sZW5ndGg7ICsr
aWkpIHsKKyAgICArK2NvdW50OworICAgIGxvYWRJbWFnZUFzeW5jKHVybHNbaWldLCBpbWFnZUxv
YWRlZCh1cmxzW2lpXSkpOworICB9CisgIGNvdW50RG93bigpOworfTsKKworcmV0dXJuIHsKKyAg
Y3JlYXRlM0RDb250ZXh0OiBjcmVhdGUzRENvbnRleHQsCisgIGNyZWF0ZTNEQ29udGV4dFdpdGhX
cmFwcGVyVGhhdFRocm93c09uR0xFcnJvcjoKKyAgICBjcmVhdGUzRENvbnRleHRXaXRoV3JhcHBl
clRoYXRUaHJvd3NPbkdMRXJyb3IsCisgIGNoZWNrQ2FudmFzOiBjaGVja0NhbnZhcywKKyAgY3Jl
YXRlQ29sb3JlZFRleHR1cmU6IGNyZWF0ZUNvbG9yZWRUZXh0dXJlLAorICBkcmF3UXVhZDogZHJh
d1F1YWQsCisgIGdldExhc3RFcnJvcjogZ2V0TGFzdEVycm9yLAorICBnbEVycm9yU2hvdWxkQmU6
IGdsRXJyb3JTaG91bGRCZSwKKyAgZmlsbFRleHR1cmU6IGZpbGxUZXh0dXJlLAorICBsb2FkSW1h
Z2VBc3luYzogbG9hZEltYWdlQXN5bmMsCisgIGxvYWRJbWFnZXNBc3luYzogbG9hZEltYWdlc0Fz
eW5jLAorICBsb2FkUHJvZ3JhbUZyb21GaWxlOiBsb2FkUHJvZ3JhbUZyb21GaWxlLAorICBsb2Fk
UHJvZ3JhbUZyb21TY3JpcHQ6IGxvYWRQcm9ncmFtRnJvbVNjcmlwdCwKKyAgbG9hZFNoYWRlcjog
bG9hZFNoYWRlciwKKyAgbG9hZFNoYWRlckZyb21GaWxlOiBsb2FkU2hhZGVyRnJvbUZpbGUsCisg
IGxvYWRTaGFkZXJGcm9tU2NyaXB0OiBsb2FkU2hhZGVyRnJvbVNjcmlwdCwKKyAgbG9hZFN0YW5k
YXJkUHJvZ3JhbTogbG9hZFN0YW5kYXJkUHJvZ3JhbSwKKyAgbG9hZFN0YW5kYXJkVmVydGV4U2hh
ZGVyOiBsb2FkU3RhbmRhcmRWZXJ0ZXhTaGFkZXIsCisgIGxvYWRTdGFuZGFyZEZyYWdtZW50U2hh
ZGVyOiBsb2FkU3RhbmRhcmRGcmFnbWVudFNoYWRlciwKKyAgc2V0dXBQcm9ncmFtOiBzZXR1cFBy
b2dyYW0sCisgIHNldHVwU2ltcGxlVGV4dHVyZUZyYWdtZW50U2hhZGVyOiBzZXR1cFNpbXBsZVRl
eHR1cmVGcmFnbWVudFNoYWRlciwKKyAgc2V0dXBTaW1wbGVUZXh0dXJlUHJvZ3JhbTogc2V0dXBT
aW1wbGVUZXh0dXJlUHJvZ3JhbSwKKyAgc2V0dXBTaW1wbGVUZXh0dXJlVmVydGV4U2hhZGVyOiBz
ZXR1cFNpbXBsZVRleHR1cmVWZXJ0ZXhTaGFkZXIsCisgIHNldHVwVGV4dHVyZWRRdWFkOiBzZXR1
cFRleHR1cmVkUXVhZCwKKyAgc2V0dXBVbml0UXVhZDogc2V0dXBVbml0UXVhZCwKKyAgc2hvdWxk
R2VuZXJhdGVHTEVycm9yOiBzaG91bGRHZW5lcmF0ZUdMRXJyb3IsCisgIHJlYWRGaWxlOiByZWFk
RmlsZSwKKyAgcmVhZEZpbGVMaXN0OiByZWFkRmlsZUxpc3QsCisKKyAgbm9uZTogZmFsc2UKK307
CisKK30oKSk7CisKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsLXRlc3QuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMv
d2ViZ2wvcmVzb3VyY2VzL3dlYmdsLXRlc3QuanMJKHJldmlzaW9uIDYzNDM4KQorKysgTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsLXRlc3QuanMJKHdvcmtpbmcg
Y29weSkKQEAgLTExLDYgKzExLDIyIEBAIGZ1bmN0aW9uIGFzc2VydE1zZyhhc3NlcnRpb24sIG1z
ZykgewogICAgIH0KIH0KIAorZnVuY3Rpb24gaW5pdE5vbktocm9ub3NGcmFtZXdvcmsod2FpdFVu
dGlsRG9uZSkgeworICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRXZWJHTEVuYWJsZWQi
LCAiMSIpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAo
d2FpdFVudGlsRG9uZSkgeworICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9u
ZSgpOworICAgIH0KKyAgfQorfQorCitmdW5jdGlvbiBub25LaHJvbm9zRnJhbWV3b3JrTm90aWZ5
RG9uZSgpIHsKKyAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91
dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgfQorfQorCiAvLwogLy8tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAK
</data>
<flag name="commit-queue"
          id="49765"
          type_id="3"
          status="-"
          setter="kbr"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61698</attachid>
            <date>2010-07-15 11:53:51 -0700</date>
            <delta_ts>2010-07-15 12:10:06 -0700</delta_ts>
            <desc>Revised patch</desc>
            <filename>test-sync.patch</filename>
            <type>text/plain</type>
            <size>160997</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDYzNDQyKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsOTMgQEAKKzIwMTAtMDctMTUgIEtlbm5ldGggUnVzc2VsbCAg
PGtickBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFN5bmNocm9uaXplIEtocm9ub3MgYW5kIFdlYktpdCBXZWJHTCB0ZXN0cworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDIxODUKKworICAg
ICAgICBGb3IgdGhlIFdlYkdMIHRlc3RzIGluIHRoZSBLaHJvbm9zIHJlcG9zaXRvcnkgdGhhdCBv
cmlnaW5hdGVkIGluCisgICAgICAgIHRoZSBXZWJLaXQgcmVwb3NpdG9yeSwgc3luY2hyb25pemVk
IHRoZSBsYXRlc3QgdmVyc2lvbnMgb2YgdGhlc2UKKyAgICAgICAgdGVzdHMgdXNpbmcgYSBzY3Jp
cHQgd2hpY2ggd2lsbCBiZSBjaGVja2VkIGluIGxhdGVyLiBDb3BpZWQKKyAgICAgICAgd2ViZ2wt
dGVzdC11dGlscy5qcyBmcm9tIEtocm9ub3MgcmVwbyBhbmQgYWRkZWQgbmVlZGVkIGVudHJ5Cisg
ICAgICAgIHBvaW50cyB0byB3ZWJnbC10ZXN0LmpzLiBSZWJhc2VsaW5lZCB0ZXN0cyBhcyBuZWNl
c3NhcnkgYW5kCisgICAgICAgIHZlcmlmaWVkIHRoZSByZWJhc2VsaW5pbmcgbWFudWFsbHkuCisK
KyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9hcnJheS1idWZmZXItY3Jhc2gtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2FycmF5LWJ1ZmZlci1jcmFzaC5odG1s
OgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2FycmF5LXVuaXQtdGVzdHMuaHRtbDoKKyAg
ICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9jb250ZXh0LWF0dHJpYnV0ZXMtYWxwaGEtZGVwdGgt
c3RlbmNpbC1hbnRpYWxpYXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvY2FudmFzL3dl
YmdsL2NvbnRleHQtYXR0cmlidXRlcy1hbHBoYS1kZXB0aC1zdGVuY2lsLWFudGlhbGlhcy5odG1s
OgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2NvbnRleHQtYXR0cmlidXRlcy1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvY29udGV4dC1hdHRyaWJ1dGVzLmh0
bWw6CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvY29weS10ZXgtaW1hZ2UtYW5kLXN1Yi1p
bWFnZS0yZC5odG1sOgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2RyYXctYXJyYXlzLW91
dC1vZi1ib3VuZHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2Ry
YXctYXJyYXlzLW91dC1vZi1ib3VuZHMuaHRtbDoKKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJn
bC9kcmF3LWVsZW1lbnRzLW91dC1vZi1ib3VuZHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZh
c3QvY2FudmFzL3dlYmdsL2RyYXctZWxlbWVudHMtb3V0LW9mLWJvdW5kcy5odG1sOgorICAgICAg
ICAqIGZhc3QvY2FudmFzL3dlYmdsL2Vycm9yLXJlcG9ydGluZy1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogZmFzdC9jYW52YXMvd2ViZ2wvZXJyb3ItcmVwb3J0aW5nLmh0bWw6CisgICAgICAgICog
ZmFzdC9jYW52YXMvd2ViZ2wvZ2V0LWFjdGl2ZS10ZXN0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBmYXN0L2NhbnZhcy93ZWJnbC9nZXQtYWN0aXZlLXRlc3QuaHRtbDoKKyAgICAgICAgKiBmYXN0
L2NhbnZhcy93ZWJnbC9nbC1iaW5kLWF0dHJpYi1sb2NhdGlvbi10ZXN0LWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9nbC1iaW5kLWF0dHJpYi1sb2NhdGlvbi10ZXN0
Lmh0bWw6CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvZ2wtZW5hYmxlLWVudW0tdGVzdC5o
dG1sOgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2dsLWVudW0tdGVzdHMtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2dsLWVudW0tdGVzdHMuaHRtbDoKKyAg
ICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9nbC1nZXQtY2FsbHMtZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2dsLWdldC1jYWxscy5odG1sOgorICAgICAgICAqIGZh
c3QvY2FudmFzL3dlYmdsL2dsLW9iamVjdC1nZXQtY2FsbHMtZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIGZhc3QvY2FudmFzL3dlYmdsL2dsLW9iamVjdC1nZXQtY2FsbHMuaHRtbDoKKyAgICAgICAg
KiBmYXN0L2NhbnZhcy93ZWJnbC9nbC11bmlmb3JtLWFycmF5cy5odG1sOgorICAgICAgICAqIGZh
c3QvY2FudmFzL3dlYmdsL2dsLXVuaWZvcm1tYXRyaXg0ZnYuaHRtbDoKKyAgICAgICAgKiBmYXN0
L2NhbnZhcy93ZWJnbC9pbmRleC12YWxpZGF0aW9uLWNvcGllcy1pbmRpY2VzLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9pbmRleC12YWxpZGF0aW9uLWNvcGllcy1p
bmRpY2VzLmh0bWw6CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvaW5kZXgtdmFsaWRhdGlv
bi1jcmFzaC13aXRoLWJ1ZmZlci1zdWItZGF0YS1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFz
dC9jYW52YXMvd2ViZ2wvaW5kZXgtdmFsaWRhdGlvbi1jcmFzaC13aXRoLWJ1ZmZlci1zdWItZGF0
YS5odG1sOgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2luZGV4LXZhbGlkYXRpb24tZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2luZGV4LXZhbGlkYXRpb24t
dmVyaWZpZXMtdG9vLW1hbnktaW5kaWNlcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9j
YW52YXMvd2ViZ2wvaW5kZXgtdmFsaWRhdGlvbi12ZXJpZmllcy10b28tbWFueS1pbmRpY2VzLmh0
bWw6CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvaW5kZXgtdmFsaWRhdGlvbi13aXRoLXJl
c2l6ZWQtYnVmZmVyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9p
bmRleC12YWxpZGF0aW9uLXdpdGgtcmVzaXplZC1idWZmZXIuaHRtbDoKKyAgICAgICAgKiBmYXN0
L2NhbnZhcy93ZWJnbC9pbmRleC12YWxpZGF0aW9uLmh0bWw6CisgICAgICAgICogZmFzdC9jYW52
YXMvd2ViZ2wvaW52YWxpZC1VVEYtMTYuaHRtbDoKKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJn
bC9udWxsLW9iamVjdC1iZWhhdmlvdXItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvY2Fu
dmFzL3dlYmdsL251bGwtb2JqZWN0LWJlaGF2aW91ci5odG1sOgorICAgICAgICAqIGZhc3QvY2Fu
dmFzL3dlYmdsL251bGwtdW5pZm9ybS1sb2NhdGlvbi5odG1sOgorICAgICAgICAqIGZhc3QvY2Fu
dmFzL3dlYmdsL3BvaW50LXNpemUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvY2FudmFz
L3dlYmdsL3BvaW50LXNpemUuaHRtbDoKKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9yZW5k
ZXJidWZmZXItaW5pdGlhbGl6YXRpb24tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvY2Fu
dmFzL3dlYmdsL3JlbmRlcmJ1ZmZlci1pbml0aWFsaXphdGlvbi5odG1sOgorICAgICAgICAqIGZh
c3QvY2FudmFzL3dlYmdsL3Jlc291cmNlcy93ZWJnbC10ZXN0LXV0aWxzLmpzOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkdMVGVzdFV0aWxzKToKKyAgICAgICAgKFdlYkdMVGVzdFV0aWxzLik6CisgICAg
ICAgICogZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsLXRlc3QuanM6CisgICAgICAg
IChpbml0Tm9uS2hyb25vc0ZyYW1ld29yayk6CisgICAgICAgIChub25LaHJvbm9zRnJhbWV3b3Jr
Tm90aWZ5RG9uZSk6CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvdGV4LWltYWdlLWFuZC1z
dWItaW1hZ2UtMmQtd2l0aC1hcnJheS1idWZmZXItdmlldy1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogZmFzdC9jYW52YXMvd2ViZ2wvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1hcnJh
eS1idWZmZXItdmlldy5odG1sOgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL3RleC1pbWFn
ZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtZGF0YS1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogZmFzdC9jYW52YXMvd2ViZ2wvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFn
ZS1kYXRhLmh0bWw6CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvdGV4LWltYWdlLWFuZC1z
dWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9jYW52
YXMvd2ViZ2wvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS5odG1sOgorICAg
ICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL3RleC1pbWFnZS1hbmQtdW5pZm9ybS1iaW5kaW5nLWJ1
Z3MtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL3RleC1pbWFnZS1h
bmQtdW5pZm9ybS1iaW5kaW5nLWJ1Z3MuaHRtbDoKKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJn
bC90ZXgtaW1hZ2Utd2l0aC1mb3JtYXQtYW5kLXR5cGUtZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IGZhc3QvY2FudmFzL3dlYmdsL3RleC1pbWFnZS13aXRoLWZvcm1hdC1hbmQtdHlwZS5odG1sOgor
ICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL3RleC1zdWItaW1hZ2UtMmQtZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL3RleC1zdWItaW1hZ2UtMmQuaHRtbDoKKyAg
ICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC90ZXh0dXJlLWFjdGl2ZS1iaW5kLmh0bWw6CisgICAg
ICAgICogZmFzdC9jYW52YXMvd2ViZ2wvdGV4dHVyZS1jb21wbGV0ZS5odG1sOgorICAgICAgICAq
IGZhc3QvY2FudmFzL3dlYmdsL3RleHR1cmUtbnBvdC1leHBlY3RlZC50eHQ6CisgICAgICAgICog
ZmFzdC9jYW52YXMvd2ViZ2wvdGV4dHVyZS1ucG90Lmh0bWw6CisgICAgICAgICogZmFzdC9jYW52
YXMvd2ViZ2wvdGV4dHVyZS10cmFuc3BhcmVudC1waXhlbHMtaW5pdGlhbGl6ZWQtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL3RleHR1cmUtdHJhbnNwYXJlbnQtcGl4
ZWxzLWluaXRpYWxpemVkLmh0bWw6CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvdHJpYW5n
bGUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL3RyaWFuZ2xlLmh0
bWw6CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvdW5pZm9ybS1sb2NhdGlvbi1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvdW5pZm9ybS1sb2NhdGlvbi5odG1s
OgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL3ZpZXdwb3J0LXVuY2hhbmdlZC11cG9uLXJl
c2l6ZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvdmlld3BvcnQt
dW5jaGFuZ2VkLXVwb24tcmVzaXplLmh0bWw6CisKIDIwMTAtMDctMTUgIFBhdmVsIFBvZGl2aWxv
diAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2phbiBW
YWZhaS4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2FycmF5LWJ1ZmZlci1j
cmFzaC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMv
d2ViZ2wvYXJyYXktYnVmZmVyLWNyYXNoLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNjM0MzgpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9hcnJheS1idWZmZXItY3Jhc2gtZXhwZWN0
ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDggKzEsOCBAQAotUmVncmVzc2lvbiB0ZXN0IGZv
ciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE4ODkgOiBbdjhdIFdl
YkNvcmU6OldlYkdMQXJyYXlCdWZmZXJJbnRlcm5hbDo6Ynl0ZUxlbmd0aEF0dHJHZXR0ZXIgTlVM
TCBwb2ludGVyCitUZXN0IEFycmF5QnVmZmVyLmJ5dGVMZW5ndGgKIAogT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgogCi1QQVNTIG5ldyBXZWJHTEFycmF5QnVmZmVyKCkuYnl0ZUxlbmd0aCBkaWQg
bm90IGNyYXNoCitQQVNTIG5ldyBBcnJheUJ1ZmZlcigpLmJ5dGVMZW5ndGggZGlkIG5vdCBjcmFz
aAogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9hcnJheS1idWZmZXItY3Jhc2guaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9hcnJheS1idWZmZXIt
Y3Jhc2guaHRtbAkocmV2aXNpb24gNjM0MzgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93
ZWJnbC9hcnJheS1idWZmZXItY3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTAsMTIgKzEw
LDEyIEBACiAKIDxzY3JpcHQ+CiAKLWRlc2NyaXB0aW9uKCdSZWdyZXNzaW9uIHRlc3QgZm9yIDxh
IGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTg4OSI+aHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxODg5PC9hPiA6IDxjb2RlPlt2
OF0gV2ViQ29yZTo6V2ViR0xBcnJheUJ1ZmZlckludGVybmFsOjpieXRlTGVuZ3RoQXR0ckdldHRl
ciBOVUxMIHBvaW50ZXI8L2NvZGU+Jyk7CitkZXNjcmlwdGlvbignVGVzdCBBcnJheUJ1ZmZlci5i
eXRlTGVuZ3RoJyk7CiAKIDwhLS0gVGhlIGZvbGxvd2luZyB1c2VkIHRvIGNhdXNlIGEgY3Jhc2gg
aW4gQ2hyb21lIC0tPgotbmV3IFdlYkdMQXJyYXlCdWZmZXIoKS5ieXRlTGVuZ3RoOworbmV3IEFy
cmF5QnVmZmVyKCkuYnl0ZUxlbmd0aDsKIAotdGVzdFBhc3NlZCgibmV3IFdlYkdMQXJyYXlCdWZm
ZXIoKS5ieXRlTGVuZ3RoIGRpZCBub3QgY3Jhc2giKTsKK3Rlc3RQYXNzZWQoIm5ldyBBcnJheUJ1
ZmZlcigpLmJ5dGVMZW5ndGggZGlkIG5vdCBjcmFzaCIpOwogc3VjY2Vzc2Z1bGx5UGFyc2VkID0g
dHJ1ZTsKIAogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9h
cnJheS11bml0LXRlc3RzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvd2ViZ2wvYXJyYXktdW5pdC10ZXN0cy5odG1sCShyZXZpc2lvbiA2MzQzOCkKKysrIExheW91
dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2FycmF5LXVuaXQtdGVzdHMuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtNzAzLDggKzcwMyw1IEBAIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CiA8L3Nj
cmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KIAotPHNjcmlwdD4KLTwvc2NyaXB0PgotCiA8L2JvZHk+CiA8L2h0bWw+CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9jb250ZXh0LWF0dHJpYnV0ZXMtYWxwaGEt
ZGVwdGgtc3RlbmNpbC1hbnRpYWxpYXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2NvbnRleHQtYXR0cmlidXRlcy1hbHBoYS1kZXB0aC1z
dGVuY2lsLWFudGlhbGlhcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDYzNDM4KQorKysgTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvY29udGV4dC1hdHRyaWJ1dGVzLWFscGhhLWRlcHRoLXN0
ZW5jaWwtYW50aWFsaWFzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMyw3ICszLDYg
QEAgVmVyaWZ5IFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMgYXJlIHdvcmtpbgogCiBPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCiAKLVJlZ3Jlc3Npb24gdGVzdCBmb3IgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTMzNDE2IDogSG9vayB1cCBXZWJHTENvbnRleHRBdHRyaWJ1
dGVzIHRvIE9wZW5HTCBjb250ZXh0IGNyZWF0aW9uIGNvZGUKIFRlc3RpbmcgYWxwaGEgPSB0cnVl
CiBQQVNTIHdlYkdMID0gZ2V0V2ViR0woJ2FscGhhT24nLCB7IGFscGhhOiB0cnVlLCBkZXB0aDog
ZmFsc2UsIHN0ZW5jaWw6IGZhbHNlLCBhbnRpYWxpYXM6IGZhbHNlIH0sIFsgMCwgMCwgMCwgMCBd
LCAxLCAwKSBpcyBub24tbnVsbC4KIFBBU1MgY29udGV4dEF0dHJpYnMgPSB3ZWJHTC5nZXRDb250
ZXh0QXR0cmlidXRlcygpIGlzIG5vbi1udWxsLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvd2ViZ2wvY29udGV4dC1hdHRyaWJ1dGVzLWFscGhhLWRlcHRoLXN0ZW5jaWwtYW50aWFsaWFz
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvY29udGV4
dC1hdHRyaWJ1dGVzLWFscGhhLWRlcHRoLXN0ZW5jaWwtYW50aWFsaWFzLmh0bWwJKHJldmlzaW9u
IDYzNDM4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvY29udGV4dC1hdHRyaWJ1
dGVzLWFscGhhLWRlcHRoLXN0ZW5jaWwtYW50aWFsaWFzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTM1LDE2ICszNSwxMiBAQCB2YXIgY29ycmVjdENvbG9yID0gbnVsbDsKIAogZnVuY3Rpb24gaW5p
dCgpCiB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdFdlYkdMRW5hYmxl
ZCIsICIxIik7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIGlmICh3aW5k
b3cuaW5pdE5vbktocm9ub3NGcmFtZXdvcmspIHsKKyAgICAgICAgd2luZG93LmluaXROb25LaHJv
bm9zRnJhbWV3b3JrKHRydWUpOwogICAgIH0KIAogICAgIGRlc2NyaXB0aW9uKCdWZXJpZnkgV2Vi
R0xDb250ZXh0QXR0cmlidXRlcyBhcmUgd29ya2luZyBhcyBzcGVjaWZpZWQsIGluY2x1ZGluZyBh
bHBoYSwgZGVwdGgsIHN0ZW5jaWwsIGFudGlhbGlhcywgYnV0IG5vdCBwcmVtdWx0aXBsaWVkQWxw
aGEnKTsKIAotICAgIGRlYnVnKCdSZWdyZXNzaW9uIHRlc3QgZm9yIDxhIGhyZWY9Imh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzQxNiI+aHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTMzNDE2PC9hPiA6IDxjb2RlPkhvb2sgdXAgV2ViR0xDb250
ZXh0QXR0cmlidXRlcyB0byBPcGVuR0wgY29udGV4dCBjcmVhdGlvbiBjb2RlPC9jb2RlPicpOwot
ICAgIAogICAgIHJ1blRlc3QoKTsKIH0KIApAQCAtNTcsNyArNTMsNyBAQCBmdW5jdGlvbiBnZXRX
ZWJHTChjYW52YXNOYW1lLCBjb250ZXh0QXR0CiAgICAgICAgIHJldHVybiBudWxsOwogICAgIH0K
ICAgICB2YXIgYWN0dWFsQ29udGV4dEF0dHJpYnMgPSBnbC5nZXRDb250ZXh0QXR0cmlidXRlcygp
OwotICAgIAorCiAgICAgLy8gQWRkIGEgY29uc29sZQogICAgIGdsLmNvbnNvbGUgPSAoImNvbnNv
bGUiIGluIHdpbmRvdykgPyB3aW5kb3cuY29uc29sZSA6IHsgbG9nOiBmdW5jdGlvbigpIHsgfSB9
OwogCkBAIC0yOTQsOCArMjkwLDggQEAgZnVuY3Rpb24gcnVuVGVzdCgpCiB9CiAKIGZ1bmN0aW9u
IGZpbmlzaCgpIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAod2luZG93Lm5v
bktocm9ub3NGcmFtZXdvcmtOb3RpZnlEb25lKSB7CisgICAgICAgIHdpbmRvdy5ub25LaHJvbm9z
RnJhbWV3b3JrTm90aWZ5RG9uZSgpOwogICAgIH0KIH0KIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvY29udGV4dC1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9jb250ZXh0LWF0dHJp
YnV0ZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA2MzQzOCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL3dlYmdsL2NvbnRleHQtYXR0cmlidXRlcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTMyLDcgKzMyLDcgQEAgUEFTUyBhdHRyaWJzLmRlcHRoIGlzIHRydWUKIFBBU1MgYXR0
cmlicy5hbHBoYSBpcyB0cnVlCiBQQVNTIGF0dHJpYnMuc3RlbmNpbCA9PSB0cnVlIHx8IGF0dHJp
YnMuc3RlbmNpbCA9PSBmYWxzZSBpcyB0cnVlCiBQQVNTIGF0dHJpYnMuYW50aWFsaWFzIGlzIGZh
bHNlCi1QQVNTIGF0dHJpYnMucHJlbXVsdGlwbGllZEFscGhhIGlzIHRydWUKK1BBU1MgYXR0cmli
cy5wcmVtdWx0aXBsaWVkQWxwaGEgPT0gdHJ1ZSB8fCBhdHRyaWJzLnByZW11bHRpcGxpZWRBbHBo
YSA9PSBmYWxzZSBpcyB0cnVlCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRF
U1QgQ09NUExFVEUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2NvbnRleHQt
YXR0cmlidXRlcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dl
YmdsL2NvbnRleHQtYXR0cmlidXRlcy5odG1sCShyZXZpc2lvbiA2MzQzOCkKKysrIExheW91dFRl
c3RzL2Zhc3QvY2FudmFzL3dlYmdsL2NvbnRleHQtYXR0cmlidXRlcy5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC00NCwxNCArNDQsMTQgQEAgc2hvdWxkQmUoImF0dHJpYnMuYW50aWFsaWFzIiwgImZh
bHNlIik7CiBzaG91bGRCZSgiYXR0cmlicy5wcmVtdWx0aXBsaWVkQWxwaGEiLCAidHJ1ZSIpOwog
CiBkZWJ1ZygiVGVzdCBjdXN0b21pemVkIHZhbHVlcyIpOwotLy8gKHByZW11bHRpcGxpZWRBbHBo
YSA9PSBmYWxzZSkgaXMgbm90IHN1cHBvcnRlZCwgZGVmYXVsdCB0byB0cnVlCisvLyAocHJlbXVs
dGlwbGllZEFscGhhID09IGZhbHNlKSBpcyBub3Qgc3VwcG9ydGVkIGJ5IG1vc3QgaW1wbGVtZW50
YXRpb25zIHlldAogc2hvdWxkQmVOb25OdWxsKCJjb250ZXh0ID0gY3JlYXRlM0RDb250ZXh0KG51
bGwsIHsgcHJlbXVsdGlwbGllZEFscGhhOiBmYWxzZSwgYW50aWFsaWFzOiBmYWxzZSB9KSIpOwog
c2hvdWxkQmVOb25OdWxsKCJhdHRyaWJzID0gY29udGV4dC5nZXRDb250ZXh0QXR0cmlidXRlcygp
Iik7CiBzaG91bGRCZSgiYXR0cmlicy5kZXB0aCIsICJ0cnVlIik7CiBzaG91bGRCZSgiYXR0cmli
cy5hbHBoYSIsICJ0cnVlIik7CiBzaG91bGRCZSgiYXR0cmlicy5zdGVuY2lsID09IHRydWUgfHwg
YXR0cmlicy5zdGVuY2lsID09IGZhbHNlIiwgInRydWUiKTsKIHNob3VsZEJlKCJhdHRyaWJzLmFu
dGlhbGlhcyIsICJmYWxzZSIpOwotc2hvdWxkQmUoImF0dHJpYnMucHJlbXVsdGlwbGllZEFscGhh
IiwgInRydWUiKTsKK3Nob3VsZEJlKCJhdHRyaWJzLnByZW11bHRpcGxpZWRBbHBoYSA9PSB0cnVl
IHx8IGF0dHJpYnMucHJlbXVsdGlwbGllZEFscGhhID09IGZhbHNlIiwgInRydWUiKTsKIAogc3Vj
Y2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvd2ViZ2wvY29weS10ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2NvcHktdGV4LWltYWdlLWFu
ZC1zdWItaW1hZ2UtMmQuaHRtbAkocmV2aXNpb24gNjM0MzgpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy93ZWJnbC9jb3B5LXRleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTE4LDcgKzE4LDEyIEBAIHZvaWQgbWFpbigpCiAKIDxzY3JpcHQgaWQ9ImZz
aGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgogdW5pZm9ybSBzYW1wbGVyMkQgdGV4
OworLy8gV29ya2Fyb3VuZCBmb3Igbm9uLWNvbXBsaWFudCBXZWJHTCBpbXBsZW1lbnRhdGlvbnMg
KEZJWE1FKQorI2lmIGRlZmluZWQoR0xfRVMpCit2YXJ5aW5nIG1lZGl1bXAgdmVjMiB0ZXhDb29y
ZDsKKyNlbHNlCiB2YXJ5aW5nIHZlYzIgdGV4Q29vcmQ7CisjZW5kaWYKIAogdm9pZCBtYWluKCkK
IHsKQEAgLTMxLDEwICszNiw4IEBAIHZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSBmYWxzZTsKIAog
ZnVuY3Rpb24gaW5pdCgpCiB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
ewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktp
dFdlYkdMRW5hYmxlZCIsICIxIik7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwor
ICAgIGlmICh3aW5kb3cuaW5pdE5vbktocm9ub3NGcmFtZXdvcmspIHsKKyAgICAgICAgd2luZG93
LmluaXROb25LaHJvbm9zRnJhbWV3b3JrKHRydWUpOwogICAgIH0KIAogICAgIGRlc2NyaXB0aW9u
KCdWZXJpZnkgY29weVRleEltYWdlMkQgYW5kIGNvcHlUZXhTdWJJbWFnZTJEJyk7CkBAIC05Nyw3
ICsxMDAsNyBAQCBmdW5jdGlvbiBydW5UZXN0SXRlcmF0aW9uKGFudGlhbGlhcykKICAgICAvLyBC
aW5kIHRoZSB0ZXh0dXJlIHRvIHRleHR1cmUgdW5pdCAwCiAgICAgZ2wuYmluZFRleHR1cmUoZ2wu
VEVYVFVSRV8yRCwgdGV4dHVyZSk7CiAgICAgLy8gU2V0IHVwIHRleHR1cmUKLSAgICBnbC50ZXhJ
bWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEsIDIsIDIsIDAsIGdsLlJHQkEsIGdsLlVO
U0lHTkVEX0JZVEUsIG51bGwpOyAgICAKKyAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQs
IDAsIGdsLlJHQkEsIDIsIDIsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIG51bGwpOwog
ICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVS
LCBnbC5ORUFSRVNUKTsKICAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRF
WFRVUkVfTUFHX0ZJTFRFUiwgZ2wuTkVBUkVTVCk7CiAKQEAgLTE3NSw4ICsxNzgsOCBAQCBmdW5j
dGlvbiBydW5UZXN0KGFudGlhbGlhcykKIH0KIAogZnVuY3Rpb24gZmluaXNoKCkgewotICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cubm9uS2hyb25vc0ZyYW1ld29ya05v
dGlmeURvbmUpIHsKKyAgICAgICAgd2luZG93Lm5vbktocm9ub3NGcmFtZXdvcmtOb3RpZnlEb25l
KCk7CiAgICAgfQogfQogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93
ZWJnbC9kcmF3LWFycmF5cy1vdXQtb2YtYm91bmRzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9kcmF3LWFycmF5cy1vdXQtb2YtYm91bmRz
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNjM0MzgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy93ZWJnbC9kcmF3LWFycmF5cy1vdXQtb2YtYm91bmRzLWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMywyNiArMyw0MCBAQCBUZXN0IG9mIGRyYXdBcnJheXMgd2l0aCBvdXQtb2YtYm91
bmRzIHBhCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIFRlc3QgZW1wdHkgYnVmZmVyCitQ
QVNTIGNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywgMCwgMSkgZ2VuZXJhdGVk
IGV4cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX09QRVJBVElPTi4KIFBBU1MgY29udGV4dC5kcmF3
QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAwLCAxMDAwMCkgZ2VuZXJhdGVkIGV4cGVjdGVkIEdM
IGVycm9yOiBJTlZBTElEX09QRVJBVElPTi4KK1BBU1MgY29udGV4dC5kcmF3QXJyYXlzKGNvbnRl
eHQuVFJJQU5HTEVTLCAwLCAxMDAwMDAwMDAwMDAwMCkgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVy
cm9yOiBJTlZBTElEX09QRVJBVElPTi4KIFBBU1MgY29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQu
VFJJQU5HTEVTLCAwLCAtMSkgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX1ZB
TFVFLgorUEFTUyBjb250ZXh0LmRyYXdBcnJheXMoY29udGV4dC5UUklBTkdMRVMsIDEsIDApIGdl
bmVyYXRlZCBleHBlY3RlZCBHTCBlcnJvcjogSU5WQUxJRF9PUEVSQVRJT04uCiBQQVNTIGNvbnRl
eHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywgLTEsIDApIGdlbmVyYXRlZCBleHBlY3Rl
ZCBHTCBlcnJvcjogSU5WQUxJRF9WQUxVRS4KIFBBU1MgY29udGV4dC5kcmF3QXJyYXlzKGNvbnRl
eHQuVFJJQU5HTEVTLCAwLCAwKSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IE5PX0VSUk9S
LgogUEFTUyBjb250ZXh0LmRyYXdBcnJheXMoY29udGV4dC5UUklBTkdMRVMsIDEwMCwgMCkgZ2Vu
ZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX09QRVJBVElPTi4KK1BBU1MgY29udGV4
dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAxLCAtMSkgZ2VuZXJhdGVkIGV4cGVjdGVk
IEdMIGVycm9yOiBJTlZBTElEX1ZBTFVFLgorUEFTUyBjb250ZXh0LmRyYXdBcnJheXMoY29udGV4
dC5UUklBTkdMRVMsIC0xLCAxKSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURf
VkFMVUUuCiAKIFRlc3QgYnVmZmVyIHdpdGggMyBmbG9hdCB2ZWN0b3JzCi1QQVNTIGNvbnRleHQu
Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhjb250ZXh0LkZSQU1FQlVGRkVSKSBpcyBjb250ZXh0LkZS
QU1FQlVGRkVSX0NPTVBMRVRFCi1QQVNTIGNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFO
R0xFUywgMCwgMykgaXMgdW5kZWZpbmVkCiBQQVNTIGNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0
LlRSSUFOR0xFUywgMCwgMykgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBOT19FUlJPUi4K
IFBBU1MgY29udGV4dC5kcmF3QXJyYXlzKDB4MDAwOSwgMCwgMykgZ2VuZXJhdGVkIGV4cGVjdGVk
IEdMIGVycm9yOiBJTlZBTElEX0VOVU0uCiBQQVNTIGNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0
LlRSSUFOR0xFUywgMywgMikgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX09Q
RVJBVElPTi4KIFBBU1MgY29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAwLCAx
MDAwMCkgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX09QRVJBVElPTi4KK1BB
U1MgY29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAwLCAxMDAwMDAwMDAwMDAw
MCkgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX09QRVJBVElPTi4KIFBBU1Mg
Y29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAwLCAtMSkgZ2VuZXJhdGVkIGV4
cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX1ZBTFVFLgogUEFTUyBjb250ZXh0LmRyYXdBcnJheXMo
Y29udGV4dC5UUklBTkdMRVMsIC0xLCAwKSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IElO
VkFMSURfVkFMVUUuCiBQQVNTIGNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywg
MCwgMCkgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBOT19FUlJPUi4KIFBBU1MgY29udGV4
dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAxMDAsIDApIGdlbmVyYXRlZCBleHBlY3Rl
ZCBHTCBlcnJvcjogSU5WQUxJRF9PUEVSQVRJT04uCitQQVNTIGNvbnRleHQuZHJhd0FycmF5cyhj
b250ZXh0LlRSSUFOR0xFUywgMSwgLTEpIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBlcnJvcjogSU5W
QUxJRF9WQUxVRS4KK1BBU1MgY29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAt
MSwgMSkgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX1ZBTFVFLgorCitUZXN0
IGJ1ZmZlciB3aXRoIGludGVybGVhdmVkICgzKzIpIGZsb2F0IHZlY3RvcnMKK1BBU1MgY29udGV4
dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAwLCA5KSBnZW5lcmF0ZWQgZXhwZWN0ZWQg
R0wgZXJyb3I6IE5PX0VSUk9SLgorUEFTUyBjb250ZXh0LmRyYXdBcnJheXMoY29udGV4dC5UUklB
TkdMRVMsIDAsIC01MDApIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBlcnJvcjogSU5WQUxJRF9WQUxV
RS4KK1BBU1MgY29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAtMjAwLCAxKSBn
ZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURfVkFMVUUuCitQQVNTIGNvbnRleHQu
ZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywgLTIwMCwgLTUwMCkgZ2VuZXJhdGVkIGV4cGVj
dGVkIEdMIGVycm9yOiBJTlZBTElEX1ZBTFVFLgogUEFTUyBjb250ZXh0LmRyYXdBcnJheXMoY29u
dGV4dC5UUklBTkdMRVMsIDAsIDB4ZmZmZmZmZmYpIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBlcnJv
cjogSU5WQUxJRF9WQUxVRS4KIFBBU1MgY29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5H
TEVTLCAweGZmZmZmZmZmLCAxKSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURf
VkFMVUUuCiBQQVNTIGNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywgMHhmZmZm
ZmZmZiwgMHhmZmZmZmZmZikgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX1ZB
TFVFLgorUEFTUyBjb250ZXh0LmRyYXdBcnJheXMoY29udGV4dC5UUklBTkdMRVMsIDAsIDIwMCkg
Z2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX09QRVJBVElPTi4KK1BBU1MgY29u
dGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAwLCAweDdmZmZmZmZmKSBnZW5lcmF0
ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURfT1BFUkFUSU9OLgogUEFTUyBjb250ZXh0LmRy
YXdBcnJheXMoY29udGV4dC5UUklBTkdMRVMsIDB4N2ZmZmZmZmYsIDEpIGdlbmVyYXRlZCBleHBl
Y3RlZCBHTCBlcnJvcjogSU5WQUxJRF9PUEVSQVRJT04uCiBQQVNTIGNvbnRleHQuZHJhd0FycmF5
cyhjb250ZXh0LlRSSUFOR0xFUywgMHg3ZmZmZmZmZiwgMHg3ZmZmZmZmZikgZ2VuZXJhdGVkIGV4
cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX09QRVJBVElPTi4KIApJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvd2ViZ2wvZHJhdy1hcnJheXMtb3V0LW9mLWJvdW5kcy5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2RyYXctYXJyYXlzLW91dC1vZi1i
b3VuZHMuaHRtbAkocmV2aXNpb24gNjM0MzgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93
ZWJnbC9kcmF3LWFycmF5cy1vdXQtb2YtYm91bmRzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIw
LDI4ICsyMCw2OSBAQCBjb250ZXh0LmJpbmRCdWZmZXIoY29udGV4dC5BUlJBWV9CVUZGRVIsCiBj
b250ZXh0LmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KDApOwogCiBkZWJ1ZygiVGVzdCBlbXB0eSBi
dWZmZXIiKQotY29udGV4dC5idWZmZXJEYXRhKGNvbnRleHQuQVJSQVlfQlVGRkVSLCBuZXcgV2Vi
R0xGbG9hdEFycmF5KFsgIF0pLCBjb250ZXh0LlNUQVRJQ19EUkFXKTsKK2NvbnRleHQuYnVmZmVy
RGF0YShjb250ZXh0LkFSUkFZX0JVRkZFUiwgbmV3IEZsb2F0MzJBcnJheShbICBdKSwgY29udGV4
dC5TVEFUSUNfRFJBVyk7CiBjb250ZXh0LnZlcnRleEF0dHJpYlBvaW50ZXIoMCwgMywgY29udGV4
dC5GTE9BVCwgZmFsc2UsIDAsIDApOworc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHQsIGNv
bnRleHQuSU5WQUxJRF9PUEVSQVRJT04sICJjb250ZXh0LmRyYXdBcnJheXMoY29udGV4dC5UUklB
TkdMRVMsIDAsIDEpIik7CiBzaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5J
TlZBTElEX09QRVJBVElPTiwgImNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywg
MCwgMTAwMDApIik7CitzaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5JTlZB
TElEX09QRVJBVElPTiwgImNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywgMCwg
MTAwMDAwMDAwMDAwMDApIik7CiBzaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4
dC5JTlZBTElEX1ZBTFVFLCAiY29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAw
LCAtMSkiKTsKK3Nob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0LCBjb250ZXh0LklOVkFMSURf
T1BFUkFUSU9OLCAiY29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAxLCAwKSIp
Owogc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHQsIGNvbnRleHQuSU5WQUxJRF9WQUxVRSwg
ImNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywgLTEsIDApIik7CiBzaG91bGRH
ZW5lcmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5OT19FUlJPUiwgImNvbnRleHQuZHJhd0Fy
cmF5cyhjb250ZXh0LlRSSUFOR0xFUywgMCwgMCkiKTsKIHNob3VsZEdlbmVyYXRlR0xFcnJvcihj
b250ZXh0LCBjb250ZXh0LklOVkFMSURfT1BFUkFUSU9OLCAiY29udGV4dC5kcmF3QXJyYXlzKGNv
bnRleHQuVFJJQU5HTEVTLCAxMDAsIDApIik7CitzaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4
dCwgY29udGV4dC5JTlZBTElEX1ZBTFVFLCAiY29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJ
QU5HTEVTLCAxLCAtMSkiKTsKK3Nob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0LCBjb250ZXh0
LklOVkFMSURfVkFMVUUsICJjb250ZXh0LmRyYXdBcnJheXMoY29udGV4dC5UUklBTkdMRVMsIC0x
LCAxKSIpOwogCiBkZWJ1ZygiIikKIGRlYnVnKCJUZXN0IGJ1ZmZlciB3aXRoIDMgZmxvYXQgdmVj
dG9ycyIpCi1jb250ZXh0LmJ1ZmZlckRhdGEoY29udGV4dC5BUlJBWV9CVUZGRVIsIG5ldyBXZWJH
TEZsb2F0QXJyYXkoWyAwLDAuNSwwLCAtMC41LC0wLjUsMCwgMC41LC0wLjUsMCBdKSwgY29udGV4
dC5TVEFUSUNfRFJBVyk7Citjb250ZXh0LmJ1ZmZlckRhdGEoY29udGV4dC5BUlJBWV9CVUZGRVIs
IG5ldyBGbG9hdDMyQXJyYXkoWyAwLDAuNSwwLCAtMC41LC0wLjUsMCwgMC41LC0wLjUsMCBdKSwg
Y29udGV4dC5TVEFUSUNfRFJBVyk7CiBjb250ZXh0LnZlcnRleEF0dHJpYlBvaW50ZXIoMCwgMywg
Y29udGV4dC5GTE9BVCwgZmFsc2UsIDAsIDApOwotc2hvdWxkQmUoImNvbnRleHQuY2hlY2tGcmFt
ZWJ1ZmZlclN0YXR1cyhjb250ZXh0LkZSQU1FQlVGRkVSKSIsICJjb250ZXh0LkZSQU1FQlVGRkVS
X0NPTVBMRVRFIik7Ci1zaG91bGRCZSgiY29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5H
TEVTLCAwLCAzKSIsICJ1bmRlZmluZWQiKTsKIHNob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0
LCBjb250ZXh0Lk5PX0VSUk9SLCAiY29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVT
LCAwLCAzKSIpOwogc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHQsIGNvbnRleHQuSU5WQUxJ
RF9FTlVNLCAiY29udGV4dC5kcmF3QXJyYXlzKDB4MDAwOSwgMCwgMykiKTsgLy8gR0xfUE9MWUdP
Tgogc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHQsIGNvbnRleHQuSU5WQUxJRF9PUEVSQVRJ
T04sICJjb250ZXh0LmRyYXdBcnJheXMoY29udGV4dC5UUklBTkdMRVMsIDMsIDIpIik7CiBzaG91
bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5JTlZBTElEX09QRVJBVElPTiwgImNv
bnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywgMCwgMTAwMDApIik7CitzaG91bGRH
ZW5lcmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5JTlZBTElEX09QRVJBVElPTiwgImNvbnRl
eHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywgMCwgMTAwMDAwMDAwMDAwMDApIik7CiBz
aG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5JTlZBTElEX1ZBTFVFLCAiY29u
dGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAwLCAtMSkiKTsKIHNob3VsZEdlbmVy
YXRlR0xFcnJvcihjb250ZXh0LCBjb250ZXh0LklOVkFMSURfVkFMVUUsICJjb250ZXh0LmRyYXdB
cnJheXMoY29udGV4dC5UUklBTkdMRVMsIC0xLCAwKSIpOwogc2hvdWxkR2VuZXJhdGVHTEVycm9y
KGNvbnRleHQsIGNvbnRleHQuTk9fRVJST1IsICJjb250ZXh0LmRyYXdBcnJheXMoY29udGV4dC5U
UklBTkdMRVMsIDAsIDApIik7CiBzaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4
dC5JTlZBTElEX09QRVJBVElPTiwgImNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xF
UywgMTAwLCAwKSIpOworc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHQsIGNvbnRleHQuSU5W
QUxJRF9WQUxVRSwgImNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywgMSwgLTEp
Iik7CitzaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5JTlZBTElEX1ZBTFVF
LCAiY29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAtMSwgMSkiKTsKKworZGVi
dWcoIiIpCitkZWJ1ZygiVGVzdCBidWZmZXIgd2l0aCBpbnRlcmxlYXZlZCAoMysyKSBmbG9hdCB2
ZWN0b3JzIikKKwordmFyIHByb2dyYW0yID0gY3JlYXRlUHJvZ3JhbShjb250ZXh0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiYXR0cmlidXRlIHZlYzMgYU9uZTsiICsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgImF0dHJpYnV0ZSB2ZWMyIGFUd287IiArCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJ2b2lkIG1haW4oKSB7IGdsX1Bvc2l0aW9uID0gdmVjNChhT25l
LCAxLjApICsgdmVjNChhVHdvLCAwLjAsIDEuMCk7IH0iLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAidm9pZCBtYWluKCkgeyBnbF9GcmFnQ29sb3IgPSB2ZWM0KDEuMCwgMC4wLCAwLjAs
IDEuMCk7IH0iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbICJhT25lIiwgImFUd28i
IF0pOworaWYgKCFwcm9ncmFtMikgeworICAgIHRlc3RGYWlsZWQoImZhaWxlZCB0byBjcmVhdGUg
dGVzdCBwcm9ncmFtIik7Cit9CisKK2NvbnRleHQudXNlUHJvZ3JhbShwcm9ncmFtMik7CisKK3Zh
ciB2Ym8gPSBjb250ZXh0LmNyZWF0ZUJ1ZmZlcigpOworY29udGV4dC5iaW5kQnVmZmVyKGNvbnRl
eHQuQVJSQVlfQlVGRkVSLCB2Ym8pOworLy8gZW5vdWdoIGZvciA5IHZlcnRpY2VzLCBzbyAzIHRy
aWFuZ2xlcworY29udGV4dC5idWZmZXJEYXRhKGNvbnRleHQuQVJSQVlfQlVGRkVSLCBuZXcgRmxv
YXQzMkFycmF5KDkqNSksIGNvbnRleHQuU1RBVElDX0RSQVcpOworCisvLyBiaW5kIGZpcnN0IDMg
ZWxlbWVudHMsIHdpdGggYSBzdHJpZGUgb2YgNSBmbG9hdCBlbGVtZW50cworY29udGV4dC52ZXJ0
ZXhBdHRyaWJQb2ludGVyKDAsIDMsIGNvbnRleHQuRkxPQVQsIGZhbHNlLCA1KjQsIDApOworLy8g
YmluZCAyIGVsZW1lbnRzLCBzdGFydGluZyBhZnRlciB0aGUgZmlyc3QgMzsgc2FtZSBzdHJpZGUg
b2YgNSBmbG9hdCBlbGVtZW50cworY29udGV4dC52ZXJ0ZXhBdHRyaWJQb2ludGVyKDEsIDIsIGNv
bnRleHQuRkxPQVQsIGZhbHNlLCA1KjQsIDMqNCk7CisKK2NvbnRleHQuZW5hYmxlVmVydGV4QXR0
cmliQXJyYXkoMCk7Citjb250ZXh0LmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KDEpOworCitzaG91
bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5OT19FUlJPUiwgImNvbnRleHQuZHJh
d0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywgMCwgOSkiKTsKKworLy8gbmVnYXRpdmUgdmFsdWVz
IG11c3QgZ2VuZXJhdGUgSU5WQUxJRF9WQUxVRTsgdGhleSBjYW4gbmV2ZXIgYmUgdmFsaWQKK3No
b3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0LCBjb250ZXh0LklOVkFMSURfVkFMVUUsICJjb250
ZXh0LmRyYXdBcnJheXMoY29udGV4dC5UUklBTkdMRVMsIDAsIC01MDApIik7CitzaG91bGRHZW5l
cmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5JTlZBTElEX1ZBTFVFLCAiY29udGV4dC5kcmF3
QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAtMjAwLCAxKSIpOworc2hvdWxkR2VuZXJhdGVHTEVy
cm9yKGNvbnRleHQsIGNvbnRleHQuSU5WQUxJRF9WQUxVRSwgImNvbnRleHQuZHJhd0FycmF5cyhj
b250ZXh0LlRSSUFOR0xFUywgLTIwMCwgLTUwMCkiKTsKIAogLy8gMHhmZmZmZmZmZiBuZWVkcyB0
byBjb252ZXJ0IHRvIGEgJ2xvbmcnIElETCBhcmd1bWVudCBhcyAtMSwgYXMgcGVyCiAvLyBXZWJJ
REwgNC4xLjcuICBKUyBUb0ludDMyKDB4ZmZmZmZmZmYpID09IC0xLCB3aGljaCBpcyB0aGUgZmly
c3Qgc3RlcApAQCAtNDksNiArOTAsMTEgQEAgc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHQs
IGNvbnRleHQuSQogc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHQsIGNvbnRleHQuSU5WQUxJ
RF9WQUxVRSwgImNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywgMCwgMHhmZmZm
ZmZmZikiKTsKIHNob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0LCBjb250ZXh0LklOVkFMSURf
VkFMVUUsICJjb250ZXh0LmRyYXdBcnJheXMoY29udGV4dC5UUklBTkdMRVMsIDB4ZmZmZmZmZmYs
IDEpIik7CiBzaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5JTlZBTElEX1ZB
TFVFLCAiY29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAweGZmZmZmZmZmLCAw
eGZmZmZmZmZmKSIpOworCisvLyB2YWx1ZXMgdGhhdCBjb3VsZCBvdGhlcndpc2UgYmUgdmFsaWQg
YnV0IGFyZW4ndCBkdWUgdG8gYmluZGluZ3MgZ2VuZXJhdGUKKy8vIElOVkFMSURfT1BFUkFUSU9O
CitzaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5JTlZBTElEX09QRVJBVElP
TiwgImNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywgMCwgMjAwKSIpOworc2hv
dWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHQsIGNvbnRleHQuSU5WQUxJRF9PUEVSQVRJT04sICJj
b250ZXh0LmRyYXdBcnJheXMoY29udGV4dC5UUklBTkdMRVMsIDAsIDB4N2ZmZmZmZmYpIik7CiBz
aG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5JTlZBTElEX09QRVJBVElPTiwg
ImNvbnRleHQuZHJhd0FycmF5cyhjb250ZXh0LlRSSUFOR0xFUywgMHg3ZmZmZmZmZiwgMSkiKTsK
IHNob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0LCBjb250ZXh0LklOVkFMSURfT1BFUkFUSU9O
LCAiY29udGV4dC5kcmF3QXJyYXlzKGNvbnRleHQuVFJJQU5HTEVTLCAweDdmZmZmZmZmLCAweDdm
ZmZmZmZmKSIpOwogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9kcmF3LWVs
ZW1lbnRzLW91dC1vZi1ib3VuZHMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvY2FudmFzL3dlYmdsL2RyYXctZWxlbWVudHMtb3V0LW9mLWJvdW5kcy1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDYzNDM4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wv
ZHJhdy1lbGVtZW50cy1vdXQtb2YtYm91bmRzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtNSwyNyArNSw0MyBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
CiBUZXN0IGVtcHR5IGluZGV4IGJ1ZmZlcgogUEFTUyBjb250ZXh0LmRyYXdFbGVtZW50cyhjb250
ZXh0LlRSSUFOR0xFUywgMywgY29udGV4dC5VTlNJR05FRF9CWVRFLCAwKSBnZW5lcmF0ZWQgZXhw
ZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURfT1BFUkFUSU9OLgogUEFTUyBjb250ZXh0LmRyYXdFbGVt
ZW50cyhjb250ZXh0LlRSSUFOR0xFUywgMTAwMDAsIGNvbnRleHQuVU5TSUdORURfQllURSwgMCkg
Z2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX09QRVJBVElPTi4KK1BBU1MgY29u
dGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRVMsIDEwMDAwMDAwMDAwMDAwLCBjb250
ZXh0LlVOU0lHTkVEX0JZVEUsIDApIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBlcnJvcjogSU5WQUxJ
RF9PUEVSQVRJT04uCiBQQVNTIGNvbnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVT
LCAtMSwgY29udGV4dC5VTlNJR05FRF9CWVRFLCAwKSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJy
b3I6IElOVkFMSURfVkFMVUUuCiBQQVNTIGNvbnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJ
QU5HTEVTLCAxLCBjb250ZXh0LlVOU0lHTkVEX0JZVEUsIDApIGdlbmVyYXRlZCBleHBlY3RlZCBH
TCBlcnJvcjogSU5WQUxJRF9PUEVSQVRJT04uCiBQQVNTIGNvbnRleHQuZHJhd0VsZW1lbnRzKGNv
bnRleHQuVFJJQU5HTEVTLCAwLCBjb250ZXh0LlVOU0lHTkVEX0JZVEUsIC0xKSBnZW5lcmF0ZWQg
ZXhwZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURfVkFMVUUuCiBQQVNTIGNvbnRleHQuZHJhd0VsZW1l
bnRzKGNvbnRleHQuVFJJQU5HTEVTLCAwLCBjb250ZXh0LlVOU0lHTkVEX0JZVEUsIDApIGdlbmVy
YXRlZCBleHBlY3RlZCBHTCBlcnJvcjogTk9fRVJST1IuCitQQVNTIGNvbnRleHQuZHJhd0VsZW1l
bnRzKGNvbnRleHQuVFJJQU5HTEVTLCAtMSwgY29udGV4dC5VTlNJR05FRF9CWVRFLCAxKSBnZW5l
cmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURfVkFMVUUuCitQQVNTIGNvbnRleHQuZHJh
d0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVTLCAxLCBjb250ZXh0LlVOU0lHTkVEX0JZVEUsIC0x
KSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURfVkFMVUUuCiAKIFRlc3QgYnVm
ZmVyIHdpdGggMyBieXRlIGluZGV4ZXMKLVBBU1MgY29udGV4dC5jaGVja0ZyYW1lYnVmZmVyU3Rh
dHVzKGNvbnRleHQuRlJBTUVCVUZGRVIpIGlzIGNvbnRleHQuRlJBTUVCVUZGRVJfQ09NUExFVEUK
LVBBU1MgY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRVMsIDMsIGNvbnRleHQu
VU5TSUdORURfQllURSwgMCkgaXMgdW5kZWZpbmVkCiBQQVNTIGNvbnRleHQuZHJhd0VsZW1lbnRz
KGNvbnRleHQuVFJJQU5HTEVTLCAzLCBjb250ZXh0LlVOU0lHTkVEX0JZVEUsIDApIGdlbmVyYXRl
ZCBleHBlY3RlZCBHTCBlcnJvcjogTk9fRVJST1IuCiBQQVNTIGNvbnRleHQuZHJhd0VsZW1lbnRz
KGNvbnRleHQuVFJJQU5HTEVTLCAzLCBjb250ZXh0LlVOU0lHTkVEX0lOVCwgMCkgZ2VuZXJhdGVk
IGV4cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX0VOVU0uCiBQQVNTIGNvbnRleHQuZHJhd0VsZW1l
bnRzKDB4MDAwOSwgMywgY29udGV4dC5VTlNJR05FRF9CWVRFLCAwKSBnZW5lcmF0ZWQgZXhwZWN0
ZWQgR0wgZXJyb3I6IElOVkFMSURfRU5VTS4KIFBBU1MgY29udGV4dC5kcmF3RWxlbWVudHMoY29u
dGV4dC5UUklBTkdMRVMsIDMsIGNvbnRleHQuVU5TSUdORURfQllURSwgMikgZ2VuZXJhdGVkIGV4
cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX09QRVJBVElPTi4KIFBBU1MgY29udGV4dC5kcmF3RWxl
bWVudHMoY29udGV4dC5UUklBTkdMRVMsIDEwMDAwLCBjb250ZXh0LlVOU0lHTkVEX0JZVEUsIDAp
IGdlbmVyYXRlZCBleHBlY3RlZCBHTCBlcnJvcjogSU5WQUxJRF9PUEVSQVRJT04uCitQQVNTIGNv
bnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVTLCAxMDAwMDAwMDAwMDAwMCwgY29u
dGV4dC5VTlNJR05FRF9CWVRFLCAwKSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IElOVkFM
SURfT1BFUkFUSU9OLgogUEFTUyBjb250ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0LlRSSUFOR0xF
UywgLTEsIGNvbnRleHQuVU5TSUdORURfQllURSwgMCkgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVy
cm9yOiBJTlZBTElEX1ZBTFVFLgogUEFTUyBjb250ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0LlRS
SUFOR0xFUywgMCwgY29udGV4dC5VTlNJR05FRF9CWVRFLCAtMSkgZ2VuZXJhdGVkIGV4cGVjdGVk
IEdMIGVycm9yOiBJTlZBTElEX1ZBTFVFLgogUEFTUyBjb250ZXh0LmRyYXdFbGVtZW50cyhjb250
ZXh0LlRSSUFOR0xFUywgLTEsIGNvbnRleHQuVU5TSUdORURfQllURSwgMSkgZ2VuZXJhdGVkIGV4
cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX1ZBTFVFLgorUEFTUyBjb250ZXh0LmRyYXdFbGVtZW50
cyhjb250ZXh0LlRSSUFOR0xFUywgMSwgY29udGV4dC5VTlNJR05FRF9CWVRFLCAtMSkgZ2VuZXJh
dGVkIGV4cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX1ZBTFVFLgogUEFTUyBjb250ZXh0LmRyYXdF
bGVtZW50cyhjb250ZXh0LlRSSUFOR0xFUywgMCwgY29udGV4dC5VTlNJR05FRF9CWVRFLCA0KSBn
ZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURfT1BFUkFUSU9OLgogUEFTUyBjb250
ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0LlRSSUFOR0xFUywgMHhmZmZmZmZmZiwgY29udGV4dC5V
TlNJR05FRF9CWVRFLCAwKSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURfVkFM
VUUuCiBQQVNTIGNvbnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVTLCAweDdmZmZm
ZmZmLCBjb250ZXh0LlVOU0lHTkVEX0JZVEUsIDApIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBlcnJv
cjogSU5WQUxJRF9PUEVSQVRJT04uCiBQQVNTIGNvbnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQu
VFJJQU5HTEVTLCAweDdmZmZmZmZmLCBjb250ZXh0LlVOU0lHTkVEX0JZVEUsIDB4N2ZmZmZmZmYp
IGdlbmVyYXRlZCBleHBlY3RlZCBHTCBlcnJvcjogSU5WQUxJRF9PUEVSQVRJT04uCiAKK1Rlc3Qg
YnVmZmVyIHdpdGggaW50ZXJsZWF2ZWQgKDMrMikgZmxvYXQgdmVjdG9ycworUEFTUyBjb250ZXh0
LmRyYXdFbGVtZW50cyhjb250ZXh0LlRSSUFOR0xFUywgOSwgY29udGV4dC5VTlNJR05FRF9TSE9S
VCwgMCkgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBOT19FUlJPUi4KK1BBU1MgY29udGV4
dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRVMsIDksIGNvbnRleHQuRkxPQVQsIDApIGdl
bmVyYXRlZCBleHBlY3RlZCBHTCBlcnJvcjogSU5WQUxJRF9FTlVNLgorUEFTUyBjb250ZXh0LmRy
YXdFbGVtZW50cyhjb250ZXh0LlRSSUFOR0xFUywgOSwgY29udGV4dC5TSE9SVCwgMCkgZ2VuZXJh
dGVkIGV4cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX0VOVU0uCitQQVNTIGNvbnRleHQuZHJhd0Vs
ZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVTLCA5LCBjb250ZXh0LlVOU0lHTkVEX0lOVCwgMCkgZ2Vu
ZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX0VOVU0uCitQQVNTIGNvbnRleHQuZHJh
d0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVTLCA5LCBjb250ZXh0LlVOU0lHTkVEX1NIT1JULCAx
MDAwKSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURfT1BFUkFUSU9OLgorUEFT
UyBjb250ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0LlRSSUFOR0xFUywgMTIsIGNvbnRleHQuVU5T
SUdORURfU0hPUlQsIDApIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBlcnJvcjogSU5WQUxJRF9PUEVS
QVRJT04uCitQQVNTIGNvbnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVTLCAxNSwg
Y29udGV4dC5VTlNJR05FRF9TSE9SVCwgMCkgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBJ
TlZBTElEX09QRVJBVElPTi4KK1BBU1MgY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklB
TkdMRVMsIDE4LCBjb250ZXh0LlVOU0lHTkVEX1NIT1JULCAwKSBnZW5lcmF0ZWQgZXhwZWN0ZWQg
R0wgZXJyb3I6IElOVkFMSURfT1BFUkFUSU9OLgorUEFTUyBjb250ZXh0LmRyYXdFbGVtZW50cyhj
b250ZXh0LlRSSUFOR0xFUywgMywgY29udGV4dC5VTlNJR05FRF9TSE9SVCwgMioxNSkgZ2VuZXJh
dGVkIGV4cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX09QRVJBVElPTi4KK1BBU1MgY29udGV4dC5k
cmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRVMsIDB4ZmZmZmZmZmYsIGNvbnRleHQuVU5TSUdO
RURfU0hPUlQsIDApIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBlcnJvcjogSU5WQUxJRF9WQUxVRS4K
K1BBU1MgY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRVMsIDB4N2ZmZmZmZmYs
IGNvbnRleHQuVU5TSUdORURfU0hPUlQsIDApIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBlcnJvcjog
SU5WQUxJRF9PUEVSQVRJT04uCisKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAog
VEVTVCBDT01QTEVURQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZHJhdy1l
bGVtZW50cy1vdXQtb2YtYm91bmRzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvd2ViZ2wvZHJhdy1lbGVtZW50cy1vdXQtb2YtYm91bmRzLmh0bWwJKHJldmlzaW9u
IDYzNDM4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZHJhdy1lbGVtZW50cy1v
dXQtb2YtYm91bmRzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE4LDQxICsxOCw5OSBAQCBjb250
ZXh0LnVzZVByb2dyYW0ocHJvZ3JhbSk7CiB2YXIgdmVydGV4T2JqZWN0ID0gY29udGV4dC5jcmVh
dGVCdWZmZXIoKTsKIGNvbnRleHQuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoMCk7CiBjb250ZXh0
LmJpbmRCdWZmZXIoY29udGV4dC5BUlJBWV9CVUZGRVIsIHZlcnRleE9iamVjdCk7Ci1jb250ZXh0
LmJ1ZmZlckRhdGEoY29udGV4dC5BUlJBWV9CVUZGRVIsIG5ldyBXZWJHTEZsb2F0QXJyYXkoWyAw
LDAuNSwwLCAtMC41LC0wLjUsMCwgMC41LC0wLjUsMCBdKSwgY29udGV4dC5TVEFUSUNfRFJBVyk7
Citjb250ZXh0LmJ1ZmZlckRhdGEoY29udGV4dC5BUlJBWV9CVUZGRVIsIG5ldyBGbG9hdDMyQXJy
YXkoWyAwLDAuNSwwLCAtMC41LC0wLjUsMCwgMC41LC0wLjUsMCBdKSwgY29udGV4dC5TVEFUSUNf
RFJBVyk7CiBjb250ZXh0LnZlcnRleEF0dHJpYlBvaW50ZXIoMCwgMywgY29udGV4dC5GTE9BVCwg
ZmFsc2UsIDAsIDApOwogCiB2YXIgaW5kZXhPYmplY3QgPSBjb250ZXh0LmNyZWF0ZUJ1ZmZlcigp
OwogCiBkZWJ1ZygiVGVzdCBlbXB0eSBpbmRleCBidWZmZXIiKQogY29udGV4dC5iaW5kQnVmZmVy
KGNvbnRleHQuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIGluZGV4T2JqZWN0KTsKLWNvbnRleHQuYnVm
ZmVyRGF0YShjb250ZXh0LkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBuZXcgV2ViR0xVbnNpZ25lZEJ5
dGVBcnJheShbICBdKSwgY29udGV4dC5TVEFUSUNfRFJBVyk7Citjb250ZXh0LmJ1ZmZlckRhdGEo
Y29udGV4dC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgbmV3IFVpbnQ4QXJyYXkoWyAgXSksIGNvbnRl
eHQuU1RBVElDX0RSQVcpOwogc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHQsIGNvbnRleHQu
SU5WQUxJRF9PUEVSQVRJT04sICJjb250ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0LlRSSUFOR0xF
UywgMywgY29udGV4dC5VTlNJR05FRF9CWVRFLCAwKSIpOwogc2hvdWxkR2VuZXJhdGVHTEVycm9y
KGNvbnRleHQsIGNvbnRleHQuSU5WQUxJRF9PUEVSQVRJT04sICJjb250ZXh0LmRyYXdFbGVtZW50
cyhjb250ZXh0LlRSSUFOR0xFUywgMTAwMDAsIGNvbnRleHQuVU5TSUdORURfQllURSwgMCkiKTsK
K3Nob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0LCBjb250ZXh0LklOVkFMSURfT1BFUkFUSU9O
LCAiY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRVMsIDEwMDAwMDAwMDAwMDAw
LCBjb250ZXh0LlVOU0lHTkVEX0JZVEUsIDApIik7CiBzaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29u
dGV4dCwgY29udGV4dC5JTlZBTElEX1ZBTFVFLCAiY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4
dC5UUklBTkdMRVMsIC0xLCBjb250ZXh0LlVOU0lHTkVEX0JZVEUsIDApIik7CiBzaG91bGRHZW5l
cmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5JTlZBTElEX09QRVJBVElPTiwgImNvbnRleHQu
ZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVTLCAxLCBjb250ZXh0LlVOU0lHTkVEX0JZVEUs
IDApIik7CiBzaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5JTlZBTElEX1ZB
TFVFLCAiY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRVMsIDAsIGNvbnRleHQu
VU5TSUdORURfQllURSwgLTEpIik7CiBzaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dCwgY29u
dGV4dC5OT19FUlJPUiwgImNvbnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVTLCAw
LCBjb250ZXh0LlVOU0lHTkVEX0JZVEUsIDApIik7CitzaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29u
dGV4dCwgY29udGV4dC5JTlZBTElEX1ZBTFVFLCAiY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4
dC5UUklBTkdMRVMsIC0xLCBjb250ZXh0LlVOU0lHTkVEX0JZVEUsIDEpIik7CitzaG91bGRHZW5l
cmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5JTlZBTElEX1ZBTFVFLCAiY29udGV4dC5kcmF3
RWxlbWVudHMoY29udGV4dC5UUklBTkdMRVMsIDEsIGNvbnRleHQuVU5TSUdORURfQllURSwgLTEp
Iik7CiAKIGRlYnVnKCIiKQogZGVidWcoIlRlc3QgYnVmZmVyIHdpdGggMyBieXRlIGluZGV4ZXMi
KQogY29udGV4dC5iaW5kQnVmZmVyKGNvbnRleHQuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIGluZGV4
T2JqZWN0KTsKLWNvbnRleHQuYnVmZmVyRGF0YShjb250ZXh0LkVMRU1FTlRfQVJSQVlfQlVGRkVS
LCBuZXcgV2ViR0xVbnNpZ25lZEJ5dGVBcnJheShbIDAsIDEsIDIgXSksIGNvbnRleHQuU1RBVElD
X0RSQVcpOwotc2hvdWxkQmUoImNvbnRleHQuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhjb250ZXh0
LkZSQU1FQlVGRkVSKSIsICJjb250ZXh0LkZSQU1FQlVGRkVSX0NPTVBMRVRFIik7Ci1zaG91bGRC
ZSgiY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRVMsIDMsIGNvbnRleHQuVU5T
SUdORURfQllURSwgMCkiLCAidW5kZWZpbmVkIik7Citjb250ZXh0LmJ1ZmZlckRhdGEoY29udGV4
dC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgbmV3IFVpbnQ4QXJyYXkoWyAwLCAxLCAyIF0pLCBjb250
ZXh0LlNUQVRJQ19EUkFXKTsKIHNob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0LCBjb250ZXh0
Lk5PX0VSUk9SLCAiY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRVMsIDMsIGNv
bnRleHQuVU5TSUdORURfQllURSwgMCkiKTsKIHNob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0
LCBjb250ZXh0LklOVkFMSURfRU5VTSwgImNvbnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJ
QU5HTEVTLCAzLCBjb250ZXh0LlVOU0lHTkVEX0lOVCwgMCkiKTsKIHNob3VsZEdlbmVyYXRlR0xF
cnJvcihjb250ZXh0LCBjb250ZXh0LklOVkFMSURfRU5VTSwgImNvbnRleHQuZHJhd0VsZW1lbnRz
KDB4MDAwOSwgMywgY29udGV4dC5VTlNJR05FRF9CWVRFLCAwKSIpOyAvLyBHTF9QT0xZR09OCiBz
aG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5JTlZBTElEX09QRVJBVElPTiwg
ImNvbnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVTLCAzLCBjb250ZXh0LlVOU0lH
TkVEX0JZVEUsIDIpIik7CiBzaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5J
TlZBTElEX09QRVJBVElPTiwgImNvbnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVT
LCAxMDAwMCwgY29udGV4dC5VTlNJR05FRF9CWVRFLCAwKSIpOworc2hvdWxkR2VuZXJhdGVHTEVy
cm9yKGNvbnRleHQsIGNvbnRleHQuSU5WQUxJRF9PUEVSQVRJT04sICJjb250ZXh0LmRyYXdFbGVt
ZW50cyhjb250ZXh0LlRSSUFOR0xFUywgMTAwMDAwMDAwMDAwMDAsIGNvbnRleHQuVU5TSUdORURf
QllURSwgMCkiKTsKIHNob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0LCBjb250ZXh0LklOVkFM
SURfVkFMVUUsICJjb250ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0LlRSSUFOR0xFUywgLTEsIGNv
bnRleHQuVU5TSUdORURfQllURSwgMCkiKTsKIHNob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0
LCBjb250ZXh0LklOVkFMSURfVkFMVUUsICJjb250ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0LlRS
SUFOR0xFUywgMCwgY29udGV4dC5VTlNJR05FRF9CWVRFLCAtMSkiKTsKIHNob3VsZEdlbmVyYXRl
R0xFcnJvcihjb250ZXh0LCBjb250ZXh0LklOVkFMSURfVkFMVUUsICJjb250ZXh0LmRyYXdFbGVt
ZW50cyhjb250ZXh0LlRSSUFOR0xFUywgLTEsIGNvbnRleHQuVU5TSUdORURfQllURSwgMSkiKTsK
K3Nob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0LCBjb250ZXh0LklOVkFMSURfVkFMVUUsICJj
b250ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0LlRSSUFOR0xFUywgMSwgY29udGV4dC5VTlNJR05F
RF9CWVRFLCAtMSkiKTsKIHNob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0LCBjb250ZXh0LklO
VkFMSURfT1BFUkFUSU9OLCAiY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRVMs
IDAsIGNvbnRleHQuVU5TSUdORURfQllURSwgNCkiKTsKIHNob3VsZEdlbmVyYXRlR0xFcnJvcihj
b250ZXh0LCBjb250ZXh0LklOVkFMSURfVkFMVUUsICJjb250ZXh0LmRyYXdFbGVtZW50cyhjb250
ZXh0LlRSSUFOR0xFUywgMHhmZmZmZmZmZiwgY29udGV4dC5VTlNJR05FRF9CWVRFLCAwKSIpOwog
c2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHQsIGNvbnRleHQuSU5WQUxJRF9PUEVSQVRJT04s
ICJjb250ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0LlRSSUFOR0xFUywgMHg3ZmZmZmZmZiwgY29u
dGV4dC5VTlNJR05FRF9CWVRFLCAwKSIpOwogc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHQs
IGNvbnRleHQuSU5WQUxJRF9PUEVSQVRJT04sICJjb250ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0
LlRSSUFOR0xFUywgMHg3ZmZmZmZmZiwgY29udGV4dC5VTlNJR05FRF9CWVRFLCAweDdmZmZmZmZm
KSIpOwogCiBkZWJ1ZygiIikKK2RlYnVnKCJUZXN0IGJ1ZmZlciB3aXRoIGludGVybGVhdmVkICgz
KzIpIGZsb2F0IHZlY3RvcnMiKQorCit2YXIgcHJvZ3JhbTIgPSBjcmVhdGVQcm9ncmFtKGNvbnRl
eHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhdHRyaWJ1dGUgdmVjMyBhT25lOyIg
KworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXR0cmlidXRlIHZlYzIgYVR3bzsiICsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZvaWQgbWFpbigpIHsgZ2xfUG9zaXRpb24g
PSB2ZWM0KGFPbmUsIDEuMCkgKyB2ZWM0KGFUd28sIDAuMCwgMS4wKTsgfSIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJ2b2lkIG1haW4oKSB7IGdsX0ZyYWdDb2xvciA9IHZlYzQoMS4w
LCAwLjAsIDAuMCwgMS4wKTsgfSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsgImFP
bmUiLCAiYVR3byIgXSk7CitpZiAoIXByb2dyYW0yKSB7CisgICAgdGVzdEZhaWxlZCgiZmFpbGVk
IHRvIGNyZWF0ZSB0ZXN0IHByb2dyYW0iKTsKK30KKworY29udGV4dC51c2VQcm9ncmFtKHByb2dy
YW0yKTsKKwordmFyIHZibyA9IGNvbnRleHQuY3JlYXRlQnVmZmVyKCk7Citjb250ZXh0LmJpbmRC
dWZmZXIoY29udGV4dC5BUlJBWV9CVUZGRVIsIHZibyk7CisvLyBlbm91Z2ggZm9yIDkgdmVydGlj
ZXMsIHNvIDMgdHJpYW5nbGVzCitjb250ZXh0LmJ1ZmZlckRhdGEoY29udGV4dC5BUlJBWV9CVUZG
RVIsIG5ldyBGbG9hdDMyQXJyYXkoOSo1KSwgY29udGV4dC5TVEFUSUNfRFJBVyk7CisKKy8vIGJp
bmQgZmlyc3QgMyBlbGVtZW50cywgd2l0aCBhIHN0cmlkZSBvZiA1IGZsb2F0IGVsZW1lbnRzCitj
b250ZXh0LnZlcnRleEF0dHJpYlBvaW50ZXIoMCwgMywgY29udGV4dC5GTE9BVCwgZmFsc2UsIDUq
NCwgMCk7CisvLyBiaW5kIDIgZWxlbWVudHMsIHN0YXJ0aW5nIGFmdGVyIHRoZSBmaXJzdCAzOyBz
YW1lIHN0cmlkZSBvZiA1IGZsb2F0IGVsZW1lbnRzCitjb250ZXh0LnZlcnRleEF0dHJpYlBvaW50
ZXIoMSwgMiwgY29udGV4dC5GTE9BVCwgZmFsc2UsIDUqNCwgMyo0KTsKKworY29udGV4dC5lbmFi
bGVWZXJ0ZXhBdHRyaWJBcnJheSgwKTsKK2NvbnRleHQuZW5hYmxlVmVydGV4QXR0cmliQXJyYXko
MSk7CisKK3ZhciBlYm8gPSBjb250ZXh0LmNyZWF0ZUJ1ZmZlcigpOworY29udGV4dC5iaW5kQnVm
ZmVyKGNvbnRleHQuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIGVibyk7Citjb250ZXh0LmJ1ZmZlckRh
dGEoY29udGV4dC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgbmV3IFVpbnQxNkFycmF5KFsgMCwgMSwg
MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAxLCAyLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIsIDAsIDEsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAw
LCAyMDAsIDIwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAweDdmZmYsIDB4N2ZmZiwgMHg3ZmZmLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDB4ZmZmZiwgMHhmZmZmLCAweGZmZmYgXSksCisgICAgICAgICAgICAgICAgICAgY29udGV4dC5T
VEFUSUNfRFJBVyk7CisKK3Nob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0LCBjb250ZXh0Lk5P
X0VSUk9SLCAiY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRVMsIDksIGNvbnRl
eHQuVU5TSUdORURfU0hPUlQsIDApIik7CisKKy8vIGludmFsaWQgdHlwZSBhcmd1bWVudHMKK3No
b3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0LCBjb250ZXh0LklOVkFMSURfRU5VTSwgImNvbnRl
eHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVTLCA5LCBjb250ZXh0LkZMT0FULCAwKSIp
Oworc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHQsIGNvbnRleHQuSU5WQUxJRF9FTlVNLCAi
Y29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRVMsIDksIGNvbnRleHQuU0hPUlQs
IDApIik7CitzaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5JTlZBTElEX0VO
VU0sICJjb250ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0LlRSSUFOR0xFUywgOSwgY29udGV4dC5V
TlNJR05FRF9JTlQsIDApIik7CisKKy8vIGludmFsaWQgb3BlcmF0aW9uIHdpdGggaW5kaWNlcyB0
aGF0IHdvdWxkIGJlIHZhbGlkIHdpdGggY29ycmVjdCBiaW5kaW5ncworc2hvdWxkR2VuZXJhdGVH
TEVycm9yKGNvbnRleHQsIGNvbnRleHQuSU5WQUxJRF9PUEVSQVRJT04sICJjb250ZXh0LmRyYXdF
bGVtZW50cyhjb250ZXh0LlRSSUFOR0xFUywgOSwgY29udGV4dC5VTlNJR05FRF9TSE9SVCwgMTAw
MCkiKTsKK3Nob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0LCBjb250ZXh0LklOVkFMSURfT1BF
UkFUSU9OLCAiY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRVMsIDEyLCBjb250
ZXh0LlVOU0lHTkVEX1NIT1JULCAwKSIpOworc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHQs
IGNvbnRleHQuSU5WQUxJRF9PUEVSQVRJT04sICJjb250ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0
LlRSSUFOR0xFUywgMTUsIGNvbnRleHQuVU5TSUdORURfU0hPUlQsIDApIik7CitzaG91bGRHZW5l
cmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5JTlZBTElEX09QRVJBVElPTiwgImNvbnRleHQu
ZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVTLCAxOCwgY29udGV4dC5VTlNJR05FRF9TSE9S
VCwgMCkiKTsKK3Nob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0LCBjb250ZXh0LklOVkFMSURf
T1BFUkFUSU9OLCAiY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRVMsIDMsIGNv
bnRleHQuVU5TSUdORURfU0hPUlQsIDIqMTUpIik7CisKK3Nob3VsZEdlbmVyYXRlR0xFcnJvcihj
b250ZXh0LCBjb250ZXh0LklOVkFMSURfVkFMVUUsICJjb250ZXh0LmRyYXdFbGVtZW50cyhjb250
ZXh0LlRSSUFOR0xFUywgMHhmZmZmZmZmZiwgY29udGV4dC5VTlNJR05FRF9TSE9SVCwgMCkiKTsK
K3Nob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0LCBjb250ZXh0LklOVkFMSURfT1BFUkFUSU9O
LCAiY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRVMsIDB4N2ZmZmZmZmYsIGNv
bnRleHQuVU5TSUdORURfU0hPUlQsIDApIik7CisKK2RlYnVnKCIiKQogc3VjY2Vzc2Z1bGx5UGFy
c2VkID0gdHJ1ZTsKIDwvc2NyaXB0PgogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93
ZWJnbC9lcnJvci1yZXBvcnRpbmctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvY2FudmFzL3dlYmdsL2Vycm9yLXJlcG9ydGluZy1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDYzNDM4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZXJyb3ItcmVwb3J0
aW5nLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNSwyNyArNSwyNyBAQCBPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBCiBQQVNTIGNvbnRleHQuZ2V0RXJyb3Io
KSBpcyAwCiBUZXN0aW5nIGdldEFjdGl2ZUF0dHJpYgogUEFTUyBjb250ZXh0LmdldEFjdGl2ZUF0
dHJpYihudWxsLCAyKSBpcyBudWxsCi1QQVNTIGNvbnRleHQuZ2V0RXJyb3IoKSBpcyBjb250ZXh0
LklOVkFMSURfVkFMVUUKLVBBU1MgY29udGV4dC5nZXRFcnJvcigpIGlzIGNvbnRleHQuTk9fRVJS
T1IKK1BBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBJTlZBTElEX1ZBTFVFIDogCitQ
QVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiAKIFBBU1MgY29udGV4
dC5nZXRBY3RpdmVBdHRyaWIocHJvZ3JhbSwgMikgaXMgbnVsbAotUEFTUyBjb250ZXh0LmdldEVy
cm9yKCkgaXMgY29udGV4dC5JTlZBTElEX1ZBTFVFCi1QQVNTIGNvbnRleHQuZ2V0RXJyb3IoKSBp
cyBjb250ZXh0Lk5PX0VSUk9SCitQQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogSU5W
QUxJRF9WQUxVRSA6IAorUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9S
IDogCiBUZXN0aW5nIGdldEFjdGl2ZVVuaWZvcm0KIFBBU1MgY29udGV4dC5nZXRBY3RpdmVVbmlm
b3JtKG51bGwsIDApIGlzIG51bGwKLVBBU1MgY29udGV4dC5nZXRFcnJvcigpIGlzIGNvbnRleHQu
SU5WQUxJRF9WQUxVRQotUEFTUyBjb250ZXh0LmdldEVycm9yKCkgaXMgY29udGV4dC5OT19FUlJP
UgorUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IElOVkFMSURfVkFMVUUgOiAKK1BB
U1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IAogUEFTUyBjb250ZXh0
LmdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbSwgNTApIGlzIG51bGwKLVBBU1MgY29udGV4dC5nZXRF
cnJvcigpIGlzIGNvbnRleHQuSU5WQUxJRF9WQUxVRQotUEFTUyBjb250ZXh0LmdldEVycm9yKCkg
aXMgY29udGV4dC5OT19FUlJPUgorUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IElO
VkFMSURfVkFMVUUgOiAKK1BBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJP
UiA6IAogVGVzdGluZyBhdHRlbXB0cyB0byBtYW5pcHVsYXRlIHRoZSBkZWZhdWx0IGZyYW1lYnVm
ZmVyCiBQQVNTIGNvbnRleHQuYmluZEZyYW1lYnVmZmVyKGNvbnRleHQuRlJBTUVCVUZGRVIsIDAp
IGlzIHVuZGVmaW5lZC4KLVBBU1MgY29udGV4dC5nZXRFcnJvcigpIGlzIGNvbnRleHQuTk9fRVJS
T1IKK1BBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IAogUEFTUyBj
b250ZXh0LmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKGNvbnRleHQuRlJBTUVCVUZGRVIsIGNvbnRl
eHQuREVQVEhfQVRUQUNITUVOVCwgY29udGV4dC5SRU5ERVJCVUZGRVIsIDApIGlzIHVuZGVmaW5l
ZC4KLVBBU1MgY29udGV4dC5nZXRFcnJvcigpIGlzIGNvbnRleHQuSU5WQUxJRF9PUEVSQVRJT04K
LVBBU1MgY29udGV4dC5nZXRFcnJvcigpIGlzIGNvbnRleHQuTk9fRVJST1IKK1BBU1MgZ2V0RXJy
b3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBJTlZBTElEX09QRVJBVElPTiA6IAorUEFTUyBnZXRFcnJv
ciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogCiBQQVNTIGNvbnRleHQuZnJhbWVidWZm
ZXJUZXh0dXJlMkQoY29udGV4dC5GUkFNRUJVRkZFUiwgY29udGV4dC5DT0xPUl9BVFRBQ0hNRU5U
MCwgY29udGV4dC5URVhUVVJFXzJELCAwLCAwKSBpcyB1bmRlZmluZWQuCi1QQVNTIGNvbnRleHQu
Z2V0RXJyb3IoKSBpcyBjb250ZXh0LklOVkFMSURfT1BFUkFUSU9OCi1QQVNTIGNvbnRleHQuZ2V0
RXJyb3IoKSBpcyBjb250ZXh0Lk5PX0VSUk9SCitQQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2
YWx1ZTogSU5WQUxJRF9PUEVSQVRJT04gOiAKK1BBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZh
bHVlOiBOT19FUlJPUiA6IAogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNU
IENPTVBMRVRFCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9lcnJvci1yZXBv
cnRpbmcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9l
cnJvci1yZXBvcnRpbmcuaHRtbAkocmV2aXNpb24gNjM0MzgpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy93ZWJnbC9lcnJvci1yZXBvcnRpbmcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjYs
NDAgKzI2LDQwIEBAIHNob3VsZEJlKCJjb250ZXh0LmdldEVycm9yKCkiLCAiMCIpOwogZGVidWco
IlRlc3RpbmcgZ2V0QWN0aXZlQXR0cmliIik7CiAvLyBTeW50aGV0aWMgT3BlbkdMIGVycm9yCiBz
aG91bGRCZU51bGwoImNvbnRleHQuZ2V0QWN0aXZlQXR0cmliKG51bGwsIDIpIik7Ci1zaG91bGRC
ZSgiY29udGV4dC5nZXRFcnJvcigpIiwgImNvbnRleHQuSU5WQUxJRF9WQUxVRSIpOworZ2xFcnJv
clNob3VsZEJlKGNvbnRleHQsIGNvbnRleHQuSU5WQUxJRF9WQUxVRSk7CiAvLyBFcnJvciBzdGF0
ZSBzaG91bGQgYmUgY2xlYXIgYnkgdGhpcyBwb2ludAotc2hvdWxkQmUoImNvbnRleHQuZ2V0RXJy
b3IoKSIsICJjb250ZXh0Lk5PX0VSUk9SIik7CitnbEVycm9yU2hvdWxkQmUoY29udGV4dCwgY29u
dGV4dC5OT19FUlJPUik7CiAvLyBSZWFsIE9wZW5HTCBlcnJvcgogc2hvdWxkQmVOdWxsKCJjb250
ZXh0LmdldEFjdGl2ZUF0dHJpYihwcm9ncmFtLCAyKSIpOwotc2hvdWxkQmUoImNvbnRleHQuZ2V0
RXJyb3IoKSIsICJjb250ZXh0LklOVkFMSURfVkFMVUUiKTsKK2dsRXJyb3JTaG91bGRCZShjb250
ZXh0LCBjb250ZXh0LklOVkFMSURfVkFMVUUpOwogLy8gRXJyb3Igc3RhdGUgc2hvdWxkIGJlIGNs
ZWFyIGJ5IHRoaXMgcG9pbnQKLXNob3VsZEJlKCJjb250ZXh0LmdldEVycm9yKCkiLCAiY29udGV4
dC5OT19FUlJPUiIpOworZ2xFcnJvclNob3VsZEJlKGNvbnRleHQsIGNvbnRleHQuTk9fRVJST1Ip
OwogCiBkZWJ1ZygiVGVzdGluZyBnZXRBY3RpdmVVbmlmb3JtIik7CiAvLyBTeW50aGV0aWMgT3Bl
bkdMIGVycm9yCiBzaG91bGRCZU51bGwoImNvbnRleHQuZ2V0QWN0aXZlVW5pZm9ybShudWxsLCAw
KSIpOwotc2hvdWxkQmUoImNvbnRleHQuZ2V0RXJyb3IoKSIsICJjb250ZXh0LklOVkFMSURfVkFM
VUUiKTsKK2dsRXJyb3JTaG91bGRCZShjb250ZXh0LCBjb250ZXh0LklOVkFMSURfVkFMVUUpOwog
Ly8gRXJyb3Igc3RhdGUgc2hvdWxkIGJlIGNsZWFyIGJ5IHRoaXMgcG9pbnQKLXNob3VsZEJlKCJj
b250ZXh0LmdldEVycm9yKCkiLCAiY29udGV4dC5OT19FUlJPUiIpOworZ2xFcnJvclNob3VsZEJl
KGNvbnRleHQsIGNvbnRleHQuTk9fRVJST1IpOwogLy8gUmVhbCBPcGVuR0wgZXJyb3IKIHNob3Vs
ZEJlTnVsbCgiY29udGV4dC5nZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0sIDUwKSIpOwotc2hvdWxk
QmUoImNvbnRleHQuZ2V0RXJyb3IoKSIsICJjb250ZXh0LklOVkFMSURfVkFMVUUiKTsKK2dsRXJy
b3JTaG91bGRCZShjb250ZXh0LCBjb250ZXh0LklOVkFMSURfVkFMVUUpOwogLy8gRXJyb3Igc3Rh
dGUgc2hvdWxkIGJlIGNsZWFyIGJ5IHRoaXMgcG9pbnQKLXNob3VsZEJlKCJjb250ZXh0LmdldEVy
cm9yKCkiLCAiY29udGV4dC5OT19FUlJPUiIpOworZ2xFcnJvclNob3VsZEJlKGNvbnRleHQsIGNv
bnRleHQuTk9fRVJST1IpOwogCiBkZWJ1ZygiVGVzdGluZyBhdHRlbXB0cyB0byBtYW5pcHVsYXRl
IHRoZSBkZWZhdWx0IGZyYW1lYnVmZmVyIik7CiBzaG91bGRCZVVuZGVmaW5lZCgiY29udGV4dC5i
aW5kRnJhbWVidWZmZXIoY29udGV4dC5GUkFNRUJVRkZFUiwgMCkiKTsKLXNob3VsZEJlKCJjb250
ZXh0LmdldEVycm9yKCkiLCAiY29udGV4dC5OT19FUlJPUiIpOworZ2xFcnJvclNob3VsZEJlKGNv
bnRleHQsIGNvbnRleHQuTk9fRVJST1IpOwogc2hvdWxkQmVVbmRlZmluZWQoImNvbnRleHQuZnJh
bWVidWZmZXJSZW5kZXJidWZmZXIoY29udGV4dC5GUkFNRUJVRkZFUiwgY29udGV4dC5ERVBUSF9B
VFRBQ0hNRU5ULCBjb250ZXh0LlJFTkRFUkJVRkZFUiwgMCkiKTsKIC8vIFN5bnRoZXRpYyBPcGVu
R0wgZXJyb3IKLXNob3VsZEJlKCJjb250ZXh0LmdldEVycm9yKCkiLCAiY29udGV4dC5JTlZBTElE
X09QRVJBVElPTiIpOworZ2xFcnJvclNob3VsZEJlKGNvbnRleHQsIGNvbnRleHQuSU5WQUxJRF9P
UEVSQVRJT04pOwogLy8gRXJyb3Igc3RhdGUgc2hvdWxkIGJlIGNsZWFyIGJ5IHRoaXMgcG9pbnQK
LXNob3VsZEJlKCJjb250ZXh0LmdldEVycm9yKCkiLCAiY29udGV4dC5OT19FUlJPUiIpOworZ2xF
cnJvclNob3VsZEJlKGNvbnRleHQsIGNvbnRleHQuTk9fRVJST1IpOwogc2hvdWxkQmVVbmRlZmlu
ZWQoImNvbnRleHQuZnJhbWVidWZmZXJUZXh0dXJlMkQoY29udGV4dC5GUkFNRUJVRkZFUiwgY29u
dGV4dC5DT0xPUl9BVFRBQ0hNRU5UMCwgY29udGV4dC5URVhUVVJFXzJELCAwLCAwKSIpOwogLy8g
U3ludGhldGljIE9wZW5HTCBlcnJvcgotc2hvdWxkQmUoImNvbnRleHQuZ2V0RXJyb3IoKSIsICJj
b250ZXh0LklOVkFMSURfT1BFUkFUSU9OIik7CitnbEVycm9yU2hvdWxkQmUoY29udGV4dCwgY29u
dGV4dC5JTlZBTElEX09QRVJBVElPTik7CiAvLyBFcnJvciBzdGF0ZSBzaG91bGQgYmUgY2xlYXIg
YnkgdGhpcyBwb2ludAotc2hvdWxkQmUoImNvbnRleHQuZ2V0RXJyb3IoKSIsICJjb250ZXh0Lk5P
X0VSUk9SIik7CitnbEVycm9yU2hvdWxkQmUoY29udGV4dCwgY29udGV4dC5OT19FUlJPUik7CiAK
IHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL3dlYmdsL2dldC1hY3RpdmUtdGVzdC1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZ2V0LWFjdGl2ZS10ZXN0LWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gNjM0MzgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJn
bC9nZXQtYWN0aXZlLXRlc3QtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yLDIxICsy
LDE2IEBAIFRlc3Qgb2YgZ2V0QWN0aXZlQXR0cmliIGFuZCBnZXRBY3RpdmVVbmkKIAogT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgogCi1QQVNTIGNvbnRleHQgaXMgbm9uLW51bGwuCi1QQVNTIGNv
bnRleHQyIGlzIG5vbi1udWxsLgotUEFTUyBwcm9ncmFtIGlzIG5vbi1udWxsLgotUEFTUyBwcm9n
cmFtMiBpcyBub24tbnVsbC4KLVBBU1MgY29udGV4dC5nZXRFcnJvcigpIGlzIGNvbnRleHQuTk9f
RVJST1IKLVBBU1MgY29udGV4dDIuZ2V0RXJyb3IoKSBpcyBjb250ZXh0Mi5OT19FUlJPUgorUEFT
UyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogCiBQQVNTIGNvbnRleHQu
Z2V0QWN0aXZlVW5pZm9ybShwcm9ncmFtLCAwKS5uYW1lIGlzICd1X21vZGVsVmlld1Byb2pNYXRy
aXgnCiBQQVNTIGNvbnRleHQuZ2V0QWN0aXZlVW5pZm9ybShwcm9ncmFtLCAwKS50eXBlIGlzIGNv
bnRleHQuRkxPQVRfTUFUNAogUEFTUyBjb250ZXh0LmdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbSwg
MCkuc2l6ZSBpcyAxCiBQQVNTIGNvbnRleHQuZ2V0QWN0aXZlVW5pZm9ybShwcm9ncmFtLCAxKSBp
cyBudWxsCi1QQVNTIGNvbnRleHQuZ2V0RXJyb3IoKSBpcyBjb250ZXh0LklOVkFMSURfVkFMVUUK
K1BBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBJTlZBTElEX1ZBTFVFIDogCiBQQVNT
IGNvbnRleHQuZ2V0QWN0aXZlVW5pZm9ybShwcm9ncmFtLCAtMSkgaXMgbnVsbAotUEFTUyBjb250
ZXh0LmdldEVycm9yKCkgaXMgY29udGV4dC5JTlZBTElEX1ZBTFVFCitQQVNTIGdldEVycm9yIHdh
cyBleHBlY3RlZCB2YWx1ZTogSU5WQUxJRF9WQUxVRSA6IAogUEFTUyBjb250ZXh0LmdldEFjdGl2
ZVVuaWZvcm0obnVsbCwgMCkgaXMgbnVsbAotUEFTUyBjb250ZXh0LmdldEVycm9yKCkgaXMgY29u
dGV4dC5JTlZBTElEX1ZBTFVFCitQQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogSU5W
QUxJRF9WQUxVRSA6IAogUEFTUyBpbmZvW2lpXSBpcyBub24tbnVsbC4KIFBBU1MgaW5mb1tpaV0g
aXMgbm9uLW51bGwuCiBQQVNTIGluZm9baWldLm5hbWUgaXMgZXhwZWN0ZWRbaWldLm5hbWUKQEAg
LTM0LDIwICsyOSwyMiBAQCBQQVNTIGluZm8yW2lpXS5uYW1lIGlzIGV4cGVjdGVkMltpaV0ubmFt
CiBQQVNTIGluZm8yW2lpXS50eXBlIGlzIGV4cGVjdGVkMltpaV0udHlwZQogUEFTUyBpbmZvMltp
aV0uc2l6ZSBpcyBleHBlY3RlZDJbaWldLnNpemUKIFBBU1MgY29udGV4dC5nZXRBY3RpdmVBdHRy
aWIocHJvZ3JhbSwgMikgaXMgbnVsbAotUEFTUyBjb250ZXh0LmdldEVycm9yKCkgaXMgY29udGV4
dC5JTlZBTElEX1ZBTFVFCitQQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogSU5WQUxJ
RF9WQUxVRSA6IAogUEFTUyBjb250ZXh0LmdldEFjdGl2ZUF0dHJpYihwcm9ncmFtLCAtMSkgaXMg
bnVsbAotUEFTUyBjb250ZXh0LmdldEVycm9yKCkgaXMgY29udGV4dC5JTlZBTElEX1ZBTFVFCitQ
QVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogSU5WQUxJRF9WQUxVRSA6IAogUEFTUyBj
b250ZXh0LmdldEFjdGl2ZUF0dHJpYihudWxsLCAwKSBpcyBudWxsCi1QQVNTIGNvbnRleHQuZ2V0
RXJyb3IoKSBpcyBjb250ZXh0LklOVkFMSURfVkFMVUUKLVBBU1MgY29udGV4dDIuZ2V0RXJyb3Io
KSBpcyBjb250ZXh0Lk5PX0VSUk9SCitQQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTog
SU5WQUxJRF9WQUxVRSA6IAorUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VS
Uk9SIDogCitDaGVjayB0cnlpbmcgdG8gZ2V0IGF0dHJpYnMgZnJvbSBkaWZmZXJlbnQgY29udGV4
dAogUEFTUyBjb250ZXh0Mi5nZXRBY3RpdmVBdHRyaWIocHJvZ3JhbSwgMCkgaXMgbnVsbAotUEFT
UyBjb250ZXh0Mi5nZXRFcnJvcigpIGlzIGNvbnRleHQyLklOVkFMSURfT1BFUkFUSU9OCitQQVNT
IGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogSU5WQUxJRF9PUEVSQVRJT04gOiAKIFBBU1Mg
Y29udGV4dDIuZ2V0QWN0aXZlVW5pZm9ybShwcm9ncmFtLCAwKSBpcyBudWxsCi1QQVNTIGNvbnRl
eHQyLmdldEVycm9yKCkgaXMgY29udGV4dDIuSU5WQUxJRF9PUEVSQVRJT04KK1BBU1MgZ2V0RXJy
b3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBJTlZBTElEX09QRVJBVElPTiA6IAorQ2hlY2sgdHJ5aW5n
IHRvIGdldCBhdHRyaWJzIGZyb20gZGVsZXRlZCBwcm9ncmFtCiBQQVNTIGNvbnRleHQuZ2V0QWN0
aXZlVW5pZm9ybShwcm9ncmFtLCAwKSBpcyBudWxsCi1QQVNTIGNvbnRleHQuZ2V0RXJyb3IoKSBp
cyBjb250ZXh0LklOVkFMSURfVkFMVUUKK1BBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVl
OiBJTlZBTElEX1ZBTFVFIDogCiBQQVNTIGNvbnRleHQuZ2V0QWN0aXZlQXR0cmliKHByb2dyYW0s
IDApIGlzIG51bGwKLVBBU1MgY29udGV4dC5nZXRFcnJvcigpIGlzIGNvbnRleHQuSU5WQUxJRF9W
QUxVRQorUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IElOVkFMSURfVkFMVUUgOiAK
IFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZ2V0LWFjdGl2ZS10ZXN0Lmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZ2V0LWFjdGl2ZS10ZXN0Lmh0
bWwJKHJldmlzaW9uIDYzNDM4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZ2V0
LWFjdGl2ZS10ZXN0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0IEBACisKIDxodG1s
PgogPGhlYWQ+CiA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyIvPgpAQCAtMTIsNTEgKzEzLDQ2IEBACiBkZXNjcmlwdGlvbigi
VGVzdCBvZiBnZXRBY3RpdmVBdHRyaWIgYW5kIGdldEFjdGl2ZVVuaWZvcm0iKTsKIAogdmFyIGNv
bnRleHQgPSBjcmVhdGUzRENvbnRleHQoKTsKLXNob3VsZEJlTm9uTnVsbCgiY29udGV4dCIpOwog
dmFyIGNvbnRleHQyID0gY3JlYXRlM0RDb250ZXh0KCk7Ci1zaG91bGRCZU5vbk51bGwoImNvbnRl
eHQyIik7CiB2YXIgcHJvZ3JhbSA9IGxvYWRTdGFuZGFyZFByb2dyYW0oY29udGV4dCk7Ci1zaG91
bGRCZU5vbk51bGwoInByb2dyYW0iKTsKIHZhciBwcm9ncmFtMiA9IGxvYWRQcm9ncmFtKGNvbnRl
eHQyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlc291cmNlcy9pbnRBcnJheVVuaWZv
cm1TaGFkZXIudmVydCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVzb3VyY2VzL25v
b3BVbmlmb3JtU2hhZGVyLmZyYWciKTsKLXNob3VsZEJlTm9uTnVsbCgicHJvZ3JhbTIiKTsKLXNo
b3VsZEJlKCJjb250ZXh0LmdldEVycm9yKCkiLCAiY29udGV4dC5OT19FUlJPUiIpOwotc2hvdWxk
QmUoImNvbnRleHQyLmdldEVycm9yKCkiLCAiY29udGV4dDIuTk9fRVJST1IiKTsKIAorZ2xFcnJv
clNob3VsZEJlKGNvbnRleHQsIGNvbnRleHQuTk9fRVJST1IpOwogc2hvdWxkQmUoImNvbnRleHQu
Z2V0QWN0aXZlVW5pZm9ybShwcm9ncmFtLCAwKS5uYW1lIiwgIid1X21vZGVsVmlld1Byb2pNYXRy
aXgnIik7CiBzaG91bGRCZSgiY29udGV4dC5nZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0sIDApLnR5
cGUiLCAiY29udGV4dC5GTE9BVF9NQVQ0Iik7CiBzaG91bGRCZSgiY29udGV4dC5nZXRBY3RpdmVV
bmlmb3JtKHByb2dyYW0sIDApLnNpemUiLCAiMSIpOwogc2hvdWxkQmVOdWxsKCJjb250ZXh0Lmdl
dEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbSwgMSkiKTsKLXNob3VsZEJlKCJjb250ZXh0LmdldEVycm9y
KCkiLCAiY29udGV4dC5JTlZBTElEX1ZBTFVFIik7CitnbEVycm9yU2hvdWxkQmUoY29udGV4dCwg
Y29udGV4dC5JTlZBTElEX1ZBTFVFKTsKIHNob3VsZEJlTnVsbCgiY29udGV4dC5nZXRBY3RpdmVV
bmlmb3JtKHByb2dyYW0sIC0xKSIpOwotc2hvdWxkQmUoImNvbnRleHQuZ2V0RXJyb3IoKSIsICJj
b250ZXh0LklOVkFMSURfVkFMVUUiKTsKK2dsRXJyb3JTaG91bGRCZShjb250ZXh0LCBjb250ZXh0
LklOVkFMSURfVkFMVUUpOwogc2hvdWxkQmVOdWxsKCJjb250ZXh0LmdldEFjdGl2ZVVuaWZvcm0o
bnVsbCwgMCkiKTsKLXNob3VsZEJlKCJjb250ZXh0LmdldEVycm9yKCkiLCAiY29udGV4dC5JTlZB
TElEX1ZBTFVFIik7CitnbEVycm9yU2hvdWxkQmUoY29udGV4dCwgY29udGV4dC5JTlZBTElEX1ZB
TFVFKTsKIAogLy8gd2UgZG9uJ3Qga25vdyB0aGUgb3JkZXIgdGhlIGF0dHJpYnMgd2lsbCBhcHBl
YXIuCiB2YXIgaW5mbyA9IFsKLSAgICBjb250ZXh0LmdldEFjdGl2ZUF0dHJpYihwcm9ncmFtLCAw
KSwKLSAgICBjb250ZXh0LmdldEFjdGl2ZUF0dHJpYihwcm9ncmFtLCAxKQorICBjb250ZXh0Lmdl
dEFjdGl2ZUF0dHJpYihwcm9ncmFtLCAwKSwKKyAgY29udGV4dC5nZXRBY3RpdmVBdHRyaWIocHJv
Z3JhbSwgMSkKIF07CiBmb3IgKHZhciBpaSA9IDA7IGlpIDwgaW5mby5sZW5ndGg7ICsraWkpCiAg
ICAgc2hvdWxkQmVOb25OdWxsKCJpbmZvW2lpXSIpOwogCiB2YXIgZXhwZWN0ZWQgPSBbCi0gICAg
eyBuYW1lOiAnYV9ub3JtYWwnLCB0eXBlOiBjb250ZXh0LkZMT0FUX1ZFQzMsIHNpemU6IDEgfSwK
LSAgICB7IG5hbWU6ICdhX3ZlcnRleCcsIHR5cGU6IGNvbnRleHQuRkxPQVRfVkVDNCwgc2l6ZTog
MSB9CisgIHsgbmFtZTogJ2Ffbm9ybWFsJywgdHlwZTogY29udGV4dC5GTE9BVF9WRUMzLCBzaXpl
OiAxIH0sCisgIHsgbmFtZTogJ2FfdmVydGV4JywgdHlwZTogY29udGV4dC5GTE9BVF9WRUM0LCBz
aXplOiAxIH0KIF07CiAKIGlmIChpbmZvWzBdLm5hbWUgIT0gZXhwZWN0ZWRbMF0ubmFtZSkgewot
ICAgIHQgPSBpbmZvWzBdOwotICAgIGluZm9bMF0gPSBpbmZvWzFdOwotICAgIGluZm9bMV0gPSB0
OworICB0ID0gaW5mb1swXTsKKyAgaW5mb1swXSA9IGluZm9bMV07CisgIGluZm9bMV0gPSB0Owog
fQogCiBmb3IgKHZhciBpaSA9IDA7IGlpIDwgaW5mby5sZW5ndGg7ICsraWkpIHsKLSAgICBzaG91
bGRCZSgiaW5mb1tpaV0ubmFtZSIsICJleHBlY3RlZFtpaV0ubmFtZSIpOwotICAgIHNob3VsZEJl
KCJpbmZvW2lpXS50eXBlIiwgImV4cGVjdGVkW2lpXS50eXBlIik7Ci0gICAgc2hvdWxkQmUoImlu
Zm9baWldLnNpemUiLCAiZXhwZWN0ZWRbaWldLnNpemUiKTsKKyAgc2hvdWxkQmUoImluZm9baWld
Lm5hbWUiLCAiZXhwZWN0ZWRbaWldLm5hbWUiKTsKKyAgc2hvdWxkQmUoImluZm9baWldLnR5cGUi
LCAiZXhwZWN0ZWRbaWldLnR5cGUiKTsKKyAgc2hvdWxkQmUoImluZm9baWldLnNpemUiLCAiZXhw
ZWN0ZWRbaWldLnNpemUiKTsKIH0KIAogLy8gd2UgZG9uJ3Qga25vdyB0aGUgb3JkZXIgdGhlIHVu
aWZvcm1zIHdpbGwgYXBwZWFyLgpAQCAtODUsMjMgKzgxLDI2IEBAIGZvciAodmFyIGlpID0gMDsg
aWkgPCBpbmZvMi5sZW5ndGg7ICsraWkKIH0KIAogc2hvdWxkQmVOdWxsKCJjb250ZXh0LmdldEFj
dGl2ZUF0dHJpYihwcm9ncmFtLCAyKSIpOwotc2hvdWxkQmUoImNvbnRleHQuZ2V0RXJyb3IoKSIs
ICJjb250ZXh0LklOVkFMSURfVkFMVUUiKTsKK2dsRXJyb3JTaG91bGRCZShjb250ZXh0LCBjb250
ZXh0LklOVkFMSURfVkFMVUUpOwogc2hvdWxkQmVOdWxsKCJjb250ZXh0LmdldEFjdGl2ZUF0dHJp
Yihwcm9ncmFtLCAtMSkiKTsKLXNob3VsZEJlKCJjb250ZXh0LmdldEVycm9yKCkiLCAiY29udGV4
dC5JTlZBTElEX1ZBTFVFIik7CitnbEVycm9yU2hvdWxkQmUoY29udGV4dCwgY29udGV4dC5JTlZB
TElEX1ZBTFVFKTsKIHNob3VsZEJlTnVsbCgiY29udGV4dC5nZXRBY3RpdmVBdHRyaWIobnVsbCwg
MCkiKTsKLXNob3VsZEJlKCJjb250ZXh0LmdldEVycm9yKCkiLCAiY29udGV4dC5JTlZBTElEX1ZB
TFVFIik7CitnbEVycm9yU2hvdWxkQmUoY29udGV4dCwgY29udGV4dC5JTlZBTElEX1ZBTFVFKTsK
KworZ2xFcnJvclNob3VsZEJlKGNvbnRleHQyLCBjb250ZXh0Lk5PX0VSUk9SKTsKIAotc2hvdWxk
QmUoImNvbnRleHQyLmdldEVycm9yKCkiLCAiY29udGV4dC5OT19FUlJPUiIpOworZGVidWcoIkNo
ZWNrIHRyeWluZyB0byBnZXQgYXR0cmlicyBmcm9tIGRpZmZlcmVudCBjb250ZXh0Iik7CiBzaG91
bGRCZU51bGwoImNvbnRleHQyLmdldEFjdGl2ZUF0dHJpYihwcm9ncmFtLCAwKSIpOwotc2hvdWxk
QmUoImNvbnRleHQyLmdldEVycm9yKCkiLCAiY29udGV4dDIuSU5WQUxJRF9PUEVSQVRJT04iKTsK
K2dsRXJyb3JTaG91bGRCZShjb250ZXh0MiwgY29udGV4dDIuSU5WQUxJRF9PUEVSQVRJT04pOwog
c2hvdWxkQmVOdWxsKCJjb250ZXh0Mi5nZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0sIDApIik7Ci1z
aG91bGRCZSgiY29udGV4dDIuZ2V0RXJyb3IoKSIsICJjb250ZXh0Mi5JTlZBTElEX09QRVJBVElP
TiIpOworZ2xFcnJvclNob3VsZEJlKGNvbnRleHQyLCBjb250ZXh0Mi5JTlZBTElEX09QRVJBVElP
Tik7CiAKK2RlYnVnKCJDaGVjayB0cnlpbmcgdG8gZ2V0IGF0dHJpYnMgZnJvbSBkZWxldGVkIHBy
b2dyYW0iKTsKIGNvbnRleHQuZGVsZXRlUHJvZ3JhbShwcm9ncmFtKTsKIHNob3VsZEJlTnVsbCgi
Y29udGV4dC5nZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0sIDApIik7Ci1zaG91bGRCZSgiY29udGV4
dC5nZXRFcnJvcigpIiwgImNvbnRleHQuSU5WQUxJRF9WQUxVRSIpOworZ2xFcnJvclNob3VsZEJl
KGNvbnRleHQsIGNvbnRleHQuSU5WQUxJRF9WQUxVRSk7CiBzaG91bGRCZU51bGwoImNvbnRleHQu
Z2V0QWN0aXZlQXR0cmliKHByb2dyYW0sIDApIik7Ci1zaG91bGRCZSgiY29udGV4dC5nZXRFcnJv
cigpIiwgImNvbnRleHQuSU5WQUxJRF9WQUxVRSIpOworZ2xFcnJvclNob3VsZEJlKGNvbnRleHQs
IGNvbnRleHQuSU5WQUxJRF9WQUxVRSk7CiAKIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CiA8
L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2dsLWJpbmQtYXR0
cmliLWxvY2F0aW9uLXRlc3QtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL3dlYmdsL2dsLWJpbmQtYXR0cmliLWxvY2F0aW9uLXRlc3QtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiA2MzQzOCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2ds
LWJpbmQtYXR0cmliLWxvY2F0aW9uLXRlc3QtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC00LDcgKzQsNiBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBCiAK
IAogQ2FudmFzLmdldENvbnRleHQKLVBBU1MgW29iamVjdCBIVE1MQ2FudmFzRWxlbWVudF0gaXMg
bm9uLW51bGwuCiBQQVNTIFtvYmplY3QgV2ViR0xSZW5kZXJpbmdDb250ZXh0XSBpcyBub24tbnVs
bC4KIAogQ2hlY2tpbmcgZ2wuYmluZEF0dHJpYkxvY2F0aW9uLgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvd2ViZ2wvZ2wtYmluZC1hdHRyaWItbG9jYXRpb24tdGVzdC5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2dsLWJpbmQtYXR0cmliLWxv
Y2F0aW9uLXRlc3QuaHRtbAkocmV2aXNpb24gNjM0MzgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy93ZWJnbC9nbC1iaW5kLWF0dHJpYi1sb2NhdGlvbi10ZXN0Lmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTE4LDE1ICsxOCwxNSBAQCBhdHRyaWJ1dGUgdmVjNCB2Q29sb3I7CiB2YXJ5aW5nIHZl
YzQgY29sb3I7CiB2b2lkIG1haW4oKQogewotICAgIGdsX1Bvc2l0aW9uID0gdlBvc2l0aW9uOwot
ICAgIGNvbG9yID0gdkNvbG9yOworICBnbF9Qb3NpdGlvbiA9IHZQb3NpdGlvbjsKKyAgY29sb3Ig
PSB2Q29sb3I7CiB9CiA8L3NjcmlwdD4KIDxzY3JpcHQgaWQ9ImZzaGFkZXIiIHR5cGU9InRleHQv
c29tZXRoaW5nLW5vdC1qYXZhc2NyaXB0Ij4KIHZhcnlpbmcgdmVjNCBjb2xvcjsKIHZvaWQgbWFp
bigpCiB7Ci0gICAgZ2xfRnJhZ0NvbG9yID0gY29sb3I7CisgIGdsX0ZyYWdDb2xvciA9IGNvbG9y
OwogfQogPC9zY3JpcHQ+CiA8c2NyaXB0PgpAQCAtMzUsMjEgKzM1LDE5IEBAIGRlc2NyaXB0aW9u
KCJUaGlzIHRlc3QgZW5zdXJlcyBXZWJHTCBpbXAKIGRlYnVnKCIiKTsKIGRlYnVnKCJDYW52YXMu
Z2V0Q29udGV4dCIpOwogCi12YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNh
bnZhcyIpOwotc2hvdWxkQmVOb25OdWxsKGNhbnZhcyk7Ci12YXIgZ2wgPSBjYW52YXMuZ2V0Q29u
dGV4dCgiZXhwZXJpbWVudGFsLXdlYmdsIik7Cit2YXIgZ2wgPSBjcmVhdGUzRENvbnRleHQoZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpKTsKIHNob3VsZEJlTm9uTnVsbChnbCk7CiAK
IGZ1bmN0aW9uIGZhaWwoeCx5LCBidWYsIHNob3VsZEJlKQogewotICAgIHZhciBpID0gKHkqNTAr
eCkgKiA0OwotICAgIHZhciByZWFzb24gPSAicGl4ZWwgYXQgKCIreCsiLCIreSsiKSBpcyAoIiti
dWZbaV0rIiwiK2J1ZltpKzFdKyIsIitidWZbaSsyXSsiLCIrYnVmW2krM10rIiksIHNob3VsZCBi
ZSAiK3Nob3VsZEJlOwotICAgIHRlc3RGYWlsZWQocmVhc29uKTsKKyAgdmFyIGkgPSAoeSo1MCt4
KSAqIDQ7CisgIHZhciByZWFzb24gPSAicGl4ZWwgYXQgKCIreCsiLCIreSsiKSBpcyAoIitidWZb
aV0rIiwiK2J1ZltpKzFdKyIsIitidWZbaSsyXSsiLCIrYnVmW2krM10rIiksIHNob3VsZCBiZSAi
K3Nob3VsZEJlOworICB0ZXN0RmFpbGVkKHJlYXNvbik7CiB9CiAKIGZ1bmN0aW9uIHBhc3MoKQog
ewotICAgIHRlc3RQYXNzZWQoImRyYXdpbmcgaXMgY29ycmVjdCIpOworICB0ZXN0UGFzc2VkKCJk
cmF3aW5nIGlzIGNvcnJlY3QiKTsKIH0KIAogZnVuY3Rpb24gbG9hZFNoYWRlcihzaGFkZXJUeXBl
LCBzaGFkZXJJZCkgewpAQCAtNTksOCArNTcsOCBAQCBmdW5jdGlvbiBsb2FkU2hhZGVyKHNoYWRl
clR5cGUsIHNoYWRlcklkCiAgIC8vIENyZWF0ZSB0aGUgc2hhZGVyIG9iamVjdAogICB2YXIgc2hh
ZGVyID0gZ2wuY3JlYXRlU2hhZGVyKHNoYWRlclR5cGUpOwogICBpZiAoc2hhZGVyID09IG51bGwp
IHsKLSAgICAgIGRlYnVnKCIqKiogRXJyb3I6IHVuYWJsZSB0byBjcmVhdGUgc2hhZGVyICciK3No
YWRlcklkKyInIik7Ci0gICAgICByZXR1cm4gbnVsbDsKKyAgICBkZWJ1ZygiKioqIEVycm9yOiB1
bmFibGUgdG8gY3JlYXRlIHNoYWRlciAnIitzaGFkZXJJZCsiJyIpOworICAgIHJldHVybiBudWxs
OwogICB9CiAKICAgLy8gTG9hZCB0aGUgc2hhZGVyIHNvdXJjZQpAQCAtNzIsMTEgKzcwLDExIEBA
IGZ1bmN0aW9uIGxvYWRTaGFkZXIoc2hhZGVyVHlwZSwgc2hhZGVySWQKICAgLy8gQ2hlY2sgdGhl
IGNvbXBpbGUgc3RhdHVzCiAgIHZhciBjb21waWxlZCA9IGdsLmdldFNoYWRlclBhcmFtZXRlcihz
aGFkZXIsIGdsLkNPTVBJTEVfU1RBVFVTKTsKICAgaWYgKCFjb21waWxlZCkgewotICAgICAgLy8g
U29tZXRoaW5nIHdlbnQgd3JvbmcgZHVyaW5nIGNvbXBpbGF0aW9uOyBnZXQgdGhlIGVycm9yCi0g
ICAgICB2YXIgZXJyb3IgPSBnbC5nZXRTaGFkZXJJbmZvTG9nKHNoYWRlcik7Ci0gICAgICBkZWJ1
ZygiKioqIEVycm9yIGNvbXBpbGluZyBzaGFkZXIgJyIrc2hhZGVyKyInOiIrZXJyb3IpOwotICAg
ICAgZ2wuZGVsZXRlU2hhZGVyKHNoYWRlcik7Ci0gICAgICByZXR1cm4gbnVsbDsKKyAgICAvLyBT
b21ldGhpbmcgd2VudCB3cm9uZyBkdXJpbmcgY29tcGlsYXRpb247IGdldCB0aGUgZXJyb3IKKyAg
ICB2YXIgZXJyb3IgPSBnbC5nZXRTaGFkZXJJbmZvTG9nKHNoYWRlcik7CisgICAgZGVidWcoIioq
KiBFcnJvciBjb21waWxpbmcgc2hhZGVyICciK3NoYWRlcisiJzoiK2Vycm9yKTsKKyAgICBnbC5k
ZWxldGVTaGFkZXIoc2hhZGVyKTsKKyAgICByZXR1cm4gbnVsbDsKICAgfQogICByZXR1cm4gc2hh
ZGVyOwogfQpAQCAtMTA0LDkgKzEwMiw5IEBAIGdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVS
LCBuZXcgRmxvYXQKIHZhciBjb2xvcnMgPSBnbC5jcmVhdGVCdWZmZXIoKTsKIGdsLmJpbmRCdWZm
ZXIoZ2wuQVJSQVlfQlVGRkVSLCBjb2xvcnMpOwogZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZG
RVIsIG5ldyBGbG9hdDMyQXJyYXkoWwotICAgMCwxLDAsMSwKLSAgIDAsMSwwLDEsCi0gICAwLDEs
MCwxXSksIGdsLlNUQVRJQ19EUkFXKTsKKyAgICAwLDEsMCwxLAorICAgIDAsMSwwLDEsCisgICAg
MCwxLDAsMV0pLCBnbC5TVEFUSUNfRFJBVyk7CiAKIGZ1bmN0aW9uIHNldEJpbmRMb2NhdGlvbnMo
Y29sb3JMb2NhdGlvbiwgcG9zaXRpb25Mb2NhdGlvbikgewogICBnbC5iaW5kQXR0cmliTG9jYXRp
b24ocHJvZ3JhbSwgcG9zaXRpb25Mb2NhdGlvbiwgInZQb3NpdGlvbiIpOwpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZ2wtZW5hYmxlLWVudW0tdGVzdC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2dsLWVuYWJsZS1lbnVtLXRlc3Qu
aHRtbAkocmV2aXNpb24gNjM0MzgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9n
bC1lbmFibGUtZW51bS10ZXN0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTUsOSArNSw5IEBACiA8
bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNl
dD11dGYtOCI+CiA8dGl0bGU+V2ViR0wgZ2wuRU5BQkxFIGVudW1zIENvbmZvcm1hbmNlIFRlc3Rz
PC90aXRsZT4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2Rlc2t0b3AtZ2wt
Y29uc3RhbnRzLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogPHNjcmlwdCBz
cmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL3dlYmdsLXRlc3QuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InJl
c291cmNlcy9kZXNrdG9wLWdsLWNvbnN0YW50cy5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9k
eT4KIDxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL3dlYmdsL2dsLWVudW0tdGVzdHMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2dsLWVudW0tdGVzdHMtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiA2MzQzOCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2dsLWVudW0t
dGVzdHMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC03LDYgKzcsNyBAQCBDYW52YXMu
Z2V0Q29udGV4dAogUEFTUyBjb250ZXh0IGV4aXN0cwogCiBDaGVja2luZyBnbCBlbnVtcy4KK1BB
U1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJPUgogUEFTUyBnbC5iaW5kVGV4dHVyZShkZXNr
dG9wR0xbJ1RFWFRVUkVfM0QnXSwgdGV4KSBzaG91bGQgcmV0dXJuIElOVkFMSURfRU5VTS4KIFBB
U1MgZ2wuYmxlbmRFcXVhdGlvbihkZXNrdG9wR0xbJ01JTiddKSBzaG91bGQgcmV0dXJuIElOVkFM
SURfRU5VTS4KIFBBU1MgZ2wuYmxlbmRFcXVhdGlvbihkZXNrdG9wR0xbJ01BWCddKSBzaG91bGQg
cmV0dXJuIElOVkFMSURfRU5VTS4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmds
L2dsLWVudW0tdGVzdHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy93ZWJnbC9nbC1lbnVtLXRlc3RzLmh0bWwJKHJldmlzaW9uIDYzNDM4KQorKysgTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvd2ViZ2wvZ2wtZW51bS10ZXN0cy5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC01LDkgKzUsOSBAQAogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0
ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgogPHRpdGxlPldlYkdMIGdsIGVudW1zIENvbmZvcm1h
bmNlIFRlc3RzPC90aXRsZT4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2Rl
c2t0b3AtZ2wtY29uc3RhbnRzLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0Pgog
PHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYmdsLXRlc3QuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9InJlc291cmNlcy9kZXNrdG9wLWdsLWNvbnN0YW50cy5qcyI+PC9zY3JpcHQ+CiA8L2hl
YWQ+CiA8Ym9keT4KIDxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KQEAgLTMxLDYgKzMxLDgg
QEAgaWYgKCFnbCkgewogICB2YXIgYnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKDEpOwogICB2YXIg
YnVmID0gbmV3IFVpbnQxNkFycmF5KGJ1ZmZlcik7CiAgIHZhciB0ZXggPSBnbC5jcmVhdGVUZXh0
dXJlKCk7CisgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBnbC5jcmVhdGVCdWZmZXIo
KSk7CisgIHNob3VsZEJlKCJnbC5nZXRFcnJvcigpIiwgImdsLk5PX0VSUk9SIik7CiAgIHZhciB0
ZXN0cyA9IFsKICAgICAiZ2wuYmluZFRleHR1cmUoZGVza3RvcEdMWydURVhUVVJFXzNEJ10sIHRl
eCkiLAogICAgICJnbC5ibGVuZEVxdWF0aW9uKGRlc2t0b3BHTFsnTUlOJ10pIiwKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2dsLWdldC1jYWxscy1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZ2wtZ2V0LWNhbGxzLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gNjM0MzgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93
ZWJnbC9nbC1nZXQtY2FsbHMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC03MCw2ICs3
MCw4IEBAIFBBU1MgY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5WSUVXUE8KIFBBU1MgY29u
dGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5NQVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JTKSA+
PSAxNiBpcyB0cnVlCiBQQVNTIGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuTUFYX1ZFUlRF
WF9VTklGT1JNX1ZFQ1RPUlMpID49IDEyOCBpcyB0cnVlCiBQQVNTIGNvbnRleHQuZ2V0UGFyYW1l
dGVyKGNvbnRleHQuTUFYX1ZBUllJTkdfVkVDVE9SUykgPj0gOCBpcyB0cnVlCitGQUlMIGNvbnRl
eHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuTlVNX0NPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTKSBz
aG91bGQgYmUgMC4gV2FzIDQuCitGQUlMIGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU0hB
REVSX0NPTVBJTEVSKSBzaG91bGQgYmUgdHJ1ZSAob2YgdHlwZSBib29sZWFuKS4gV2FzIG51bGwg
KG9mIHR5cGUgb2JqZWN0KS4KIAogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9nbC1nZXQtY2FsbHMuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9nbC1nZXQtY2FsbHMuaHRt
bAkocmV2aXNpb24gNjM0MzgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9nbC1n
ZXQtY2FsbHMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDggQEAKKwogPGh0bWwgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgogPGhlYWQ+Cis8bWV0YSBodHRwLWVx
dWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8
dGl0bGU+V2ViR0wgZ2wgY2FsbHMgQ29uZm9ybWFuY2UgVGVzdHM8L3RpdGxlPgogPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
Lz4KIDxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgogPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJnbC10ZXN0LmpzIj48L3NjcmlwdD4KQEAg
LTE2LDcgKzE5LDcgQEAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBlbnN1cmVzIGJhc2ljIGZ1bgog
ZGVidWcoIiIpOwogZGVidWcoIkNhbnZhcy5nZXRDb250ZXh0Iik7CiAKLXZhciBjb250ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpLmdldENvbnRleHQoImV4cGVyaW1lbnRh
bC13ZWJnbCIpOwordmFyIGNvbnRleHQgPSBjcmVhdGUzRENvbnRleHQoZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImNhbnZhcyIpKTsKIGlmICghY29udGV4dCkKICAgICB0ZXN0RmFpbGVkKCJjb250
ZXh0IGRvZXMgbm90IGV4aXN0Iik7CiBlbHNlIHsKQEAgLTc4LDEwICs4MSwxMiBAQCBlbHNlIHsK
ICAgICBzaG91bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5TVEVOQ0lMX0JBQ0tf
UEFTU19ERVBUSF9GQUlMKScsICdjb250ZXh0LktFRVAnKTsKICAgICBzaG91bGRCZSgnY29udGV4
dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5TVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9QQVNTKScsICdj
b250ZXh0LktFRVAnKTsKICAgICBzaG91bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4
dC5TVEVOQ0lMX0JBQ0tfUkVGKScsICcwJyk7Ci0gICAgCisKICAgICAvLyBGSVhNRTogQ3VycmVu
dCBXZWJLaXQgaW1wbGVtZW50YXRpb24gcmV0dXJucyB0aGUgd3JvbmcgdmFsdWUgKGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTg0MikKLSAgICAvL3Nob3VsZEJlKCdj
b250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNURU5DSUxfQkFDS19WQUxVRV9NQVNLKScsICcw
eEZGRkZGRkZGJyk7Ci0gICAgLy9zaG91bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4
dC5TVEVOQ0lMX0JBQ0tfV1JJVEVNQVNLKScsICcweEZGRkZGRkZGJyk7CisgICAgLy8gUmUtZW5h
YmxlIHRoZXNlIHRlc3RzIGFzIHNvb24gYXMgdGhhdCBidWcgaGFzIGJlZW4gZml4ZWQuCisgICAg
Ly8gc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU1RFTkNJTF9CQUNLX1ZB
TFVFX01BU0spJywgJzB4RkZGRkZGRkYnKTsKKyAgICAvLyBzaG91bGRCZSgnY29udGV4dC5nZXRQ
YXJhbWV0ZXIoY29udGV4dC5TVEVOQ0lMX0JBQ0tfV1JJVEVNQVNLKScsICcweEZGRkZGRkZGJyk7
CisKICAgICAvLyBJZiBFWFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwgaXMgc3VwcG9ydGVkLCBTVEVO
Q0lMX0JJVFMgPiAwOyBvdGhlcndpc2UsIFNURU5DSUxfQklUUyA9PSAwLgogICAgIHNob3VsZEJl
KCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNURU5DSUxfQklUUykgPj0gMCcsICd0cnVl
Jyk7CiAgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU1RFTkNJTF9D
TEVBUl9WQUxVRSknLCAnMCcpOwpAQCAtOTEsOCArOTYsMTIgQEAgZWxzZSB7CiAgICAgc2hvdWxk
QmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU1RFTkNJTF9QQVNTX0RFUFRIX1BBU1Mp
JywgJ2NvbnRleHQuS0VFUCcpOwogICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihj
b250ZXh0LlNURU5DSUxfUkVGKScsICcwJyk7CiAgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFy
YW1ldGVyKGNvbnRleHQuU1RFTkNJTF9URVNUKScsICdmYWxzZScpOwotICAgIC8vc2hvdWxkQmUo
J2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU1RFTkNJTF9WQUxVRV9NQVNLKScsICcweEZG
RkZGRkZGJyk7Ci0gICAgLy9zaG91bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5T
VEVOQ0lMX1dSSVRFTUFTSyknLCAnMHhGRkZGRkZGRicpOworCisgICAgLy8gRklYTUU6IEN1cnJl
bnQgV2ViS2l0IGltcGxlbWVudGF0aW9uIHJldHVybnMgdGhlIHdyb25nIHZhbHVlIChodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE4NDIpCisgICAgLy8gUmUtZW5hYmxl
IHRoZXNlIHRlc3RzIGFzIHNvb24gYXMgdGhhdCBidWcgaGFzIGJlZW4gZml4ZWQuCisgICAgLy8g
c2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU1RFTkNJTF9WQUxVRV9NQVNL
KScsICcweEZGRkZGRkZGJyk7CisgICAgLy8gc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVy
KGNvbnRleHQuU1RFTkNJTF9XUklURU1BU0spJywgJzB4RkZGRkZGRkYnKTsKKwogICAgIHNob3Vs
ZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlRFWFRVUkVfQklORElOR18yRCknLCAn
bnVsbCcpOwogICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlRFWFRV
UkVfQklORElOR19DVUJFX01BUCknLCAnbnVsbCcpOwogICAgIHNob3VsZEJlKCdjb250ZXh0Lmdl
dFBhcmFtZXRlcihjb250ZXh0LlVOUEFDS19BTElHTk1FTlQpJywgJzQnKTsKQEAgLTEwMiw2ICsx
MTEsOCBAQCBlbHNlIHsKICAgICBzaG91bGRCZVRydWUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNv
bnRleHQuTUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SUykgPj0gMTYnKTsKICAgICBzaG91bGRC
ZVRydWUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuTUFYX1ZFUlRFWF9VTklGT1JNX1ZF
Q1RPUlMpID49IDEyOCcpOwogICAgIHNob3VsZEJlVHJ1ZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIo
Y29udGV4dC5NQVhfVkFSWUlOR19WRUNUT1JTKSA+PSA4Jyk7CisgICAgc2hvdWxkQmUoJ2NvbnRl
eHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuTlVNX0NPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTKScs
ICcwJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU0hBREVS
X0NPTVBJTEVSKScsICd0cnVlJyk7CiB9CiAKIGRlYnVnKCIiKTsKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL3dlYmdsL2dsLW9iamVjdC1nZXQtY2FsbHMtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2dsLW9iamVjdC1nZXQtY2Fs
bHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA2MzQzOCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL3dlYmdsL2dsLW9iamVjdC1nZXQtY2FsbHMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC0yLDExICsyLDYgQEAgVGVzdCBvZiBnZXQgY2FsbHMgYWdhaW5zdCBHTCBvYmplY3RzIGxp
awogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKLVBBU1MgZ2wuZ2V0UHJvZ3JhbUluZm9M
b2coc3RhbmRhcmRQcm9ncmFtKSBpcyAiIgotUEFTUyBnbC5nZXRTaGFkZXJJbmZvTG9nKGVycm9y
VmVydCkgaXMgcGFyc2VFcnJvcgotUEFTUyBnbC5nZXRTaGFkZXJJbmZvTG9nKGVycm9yRnJhZykg
aXMgcGFyc2VFcnJvcgotUEFTUyBnbC5nZXRTaGFkZXJTb3VyY2UoZXJyb3JWZXJ0KSBpcyBlcnJv
clZlcnRTdHJpbmcKLVBBU1MgZ2wuZ2V0U2hhZGVyU291cmNlKGVycm9yRnJhZykgaXMgZXJyb3JG
cmFnU3RyaW5nCiBQQVNTIHNoYWRlcnMubGVuZ3RoIGlzIDIKIFBBU1Mgc2hhZGVyc1swXSA9PSBz
dGFuZGFyZFZlcnQgJiYgc2hhZGVyc1sxXSA9PSBzdGFuZGFyZEZyYWcgfHwgc2hhZGVyc1sxXSA9
PSBzdGFuZGFyZFZlcnQgJiYgc2hhZGVyc1swXSA9PSBzdGFuZGFyZEZyYWcgaXMgdHJ1ZQogUEFT
UyBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCkBAIC0xNiw5ICsxMSwxMCBAQCBQQVNTIGds
LmdldEF0dGFjaGVkU2hhZGVycyhzdGFuZGFyZFZlcnQpCiBQQVNTIGdsLmdldEVycm9yKCkgaXMg
Z2wuSU5WQUxJRF9WQUxVRQogUEFTUyBnbC5nZXRCdWZmZXJQYXJhbWV0ZXIoZ2wuQVJSQVlfQlVG
RkVSLCBnbC5CVUZGRVJfU0laRSkgaXMgMTYKIFBBU1MgZ2wuZ2V0QnVmZmVyUGFyYW1ldGVyKGds
LkFSUkFZX0JVRkZFUiwgZ2wuQlVGRkVSX1VTQUdFKSBpcyBnbC5EWU5BTUlDX0RSQVcKLVBBU1Mg
Z2wuZ2V0RXJyb3IoKSBpcyAwCi1QQVNTIGdsLmdldEVycm9yKCkgaXMgMAotUEFTUyBnbC5nZXRF
cnJvcigpIGlzIDAKK1BBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6
IAorUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogCitQQVNTIGdl
dEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiAKK1BBU1MgZ2wuY2hlY2tGcmFt
ZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUikgaXMgZ2wuRlJBTUVCVUZGRVJfQ09NUExFVEUK
IFBBU1MgZ2wuZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKGdsLkZSQU1FQlVGRkVS
LCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1Rf
VFlQRSkgaXMgZ2wuVEVYVFVSRQogUEFTUyBnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJh
bWV0ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5GUkFNRUJVRkZF
Ul9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FKSBpcyB0ZXh0dXJlCiBQQVNTIGdsLmdldEZyYW1lYnVm
ZmVyQXR0YWNobWVudFBhcmFtZXRlcihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVO
VDAsIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9MRVZFTCkgaXMgMApAQCAtMzgs
OCArMzQsOCBAQCBQQVNTIGdsLmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcihnbC5SRU5ECiBQQVNT
IGdsLmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcihnbC5SRU5ERVJCVUZGRVIsIGdsLlJFTkRFUkJV
RkZFUl9IRUlHSFQpIGlzIDIKIFBBU1MgZ2wuZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKGdsLlJF
TkRFUkJVRkZFUiwgZ2wuUkVOREVSQlVGRkVSX0lOVEVSTkFMX0ZPUk1BVCkgaXMgbm9uLXplcm8u
CiBQQVNTIGdsLmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcihnbC5SRU5ERVJCVUZGRVIsIGdsLlJF
TkRFUkJVRkZFUl9ERVBUSF9TSVpFKSBpcyBub24temVyby4KLVBBU1MgZ2wuZ2V0RXJyb3IoKSBp
cyAwCi1QQVNTIGdsLmdldEVycm9yKCkgaXMgMAorUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQg
dmFsdWU6IE5PX0VSUk9SIDogCitQQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9f
RVJST1IgOiAKIFBBU1MgZ2wuZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKGdsLlJFTkRFUkJVRkZF
UiwgZ2wuUkVOREVSQlVGRkVSX1JFRF9TSVpFKSBpcyBub24temVyby4KIFBBU1MgZ2wuZ2V0UmVu
ZGVyYnVmZmVyUGFyYW1ldGVyKGdsLlJFTkRFUkJVRkZFUiwgZ2wuUkVOREVSQlVGRkVSX0dSRUVO
X1NJWkUpIGlzIG5vbi16ZXJvLgogUEFTUyBnbC5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIoZ2wu
UkVOREVSQlVGRkVSLCBnbC5SRU5ERVJCVUZGRVJfQkxVRV9TSVpFKSBpcyBub24temVyby4KQEAg
LTU0LDI1ICs1MCwyNSBAQCBQQVNTIGdsLmdldFRleFBhcmFtZXRlcihnbC5URVhUVVJFXzJELCBn
CiBQQVNTIGdsLmdldFRleFBhcmFtZXRlcihnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBf
UykgaXMgZ2wuQ0xBTVBfVE9fRURHRQogUEFTUyBnbC5nZXRUZXhQYXJhbWV0ZXIoZ2wuVEVYVFVS
RV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1QpIGlzIGdsLkNMQU1QX1RPX0VER0UKIFBBU1MgZ2wuZ2V0
UHJvZ3JhbVBhcmFtZXRlcihib29sUHJvZ3JhbSwgZ2wuTElOS19TVEFUVVMpIGlzIHRydWUKLVBB
U1MgZ2wuZ2V0RXJyb3IoKSBpcyAwCitQQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTog
Tk9fRVJST1IgOiAKIFBBU1MgZ2wuZ2V0VW5pZm9ybShib29sUHJvZ3JhbSwgYnZhbExvYykgaXMg
dHJ1ZQogUEFTUyBnbC5nZXRVbmlmb3JtKGJvb2xQcm9ncmFtLCBidmFsMkxvYykgaXMgWzEsIDBd
CiBQQVNTIGdsLmdldFVuaWZvcm0oYm9vbFByb2dyYW0sIGJ2YWwzTG9jKSBpcyBbMSwgMCwgMV0K
IFBBU1MgZ2wuZ2V0VW5pZm9ybShib29sUHJvZ3JhbSwgYnZhbDRMb2MpIGlzIFsxLCAwLCAxLCAw
XQogUEFTUyBnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKGludFByb2dyYW0sIGdsLkxJTktfU1RBVFVT
KSBpcyB0cnVlCi1QQVNTIGdsLmdldEVycm9yKCkgaXMgMAorUEFTUyBnZXRFcnJvciB3YXMgZXhw
ZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogCiBQQVNTIGdsLmdldFVuaWZvcm0oaW50UHJvZ3JhbSwg
aXZhbExvYykgaXMgMQogUEFTUyBnbC5nZXRVbmlmb3JtKGludFByb2dyYW0sIGl2YWwyTG9jKSBp
cyBbMiwgM10KIFBBU1MgZ2wuZ2V0VW5pZm9ybShpbnRQcm9ncmFtLCBpdmFsM0xvYykgaXMgWzQs
IDUsIDZdCiBQQVNTIGdsLmdldFVuaWZvcm0oaW50UHJvZ3JhbSwgaXZhbDRMb2MpIGlzIFs3LCA4
LCA5LCAxMF0KIFBBU1MgZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihmbG9hdFByb2dyYW0sIGdsLkxJ
TktfU1RBVFVTKSBpcyB0cnVlCi1QQVNTIGdsLmdldEVycm9yKCkgaXMgMAorUEFTUyBnZXRFcnJv
ciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogCiBQQVNTIGdsLmdldFVuaWZvcm0oZmxv
YXRQcm9ncmFtLCBmdmFsTG9jKSBpcyAxMQogUEFTUyBnbC5nZXRVbmlmb3JtKGZsb2F0UHJvZ3Jh
bSwgZnZhbDJMb2MpIGlzIFsxMiwgMTNdCiBQQVNTIGdsLmdldFVuaWZvcm0oZmxvYXRQcm9ncmFt
LCBmdmFsM0xvYykgaXMgWzE0LCAxNSwgMTZdCiBQQVNTIGdsLmdldFVuaWZvcm0oZmxvYXRQcm9n
cmFtLCBmdmFsNExvYykgaXMgWzE3LCAxOCwgMTksIDIwXQogUEFTUyBnbC5nZXRQcm9ncmFtUGFy
YW1ldGVyKG1hdFByb2dyYW0sIGdsLkxJTktfU1RBVFVTKSBpcyB0cnVlCi1QQVNTIGdsLmdldEVy
cm9yKCkgaXMgMAorUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDog
CiBQQVNTIGdsLmdldFVuaWZvcm0obWF0UHJvZ3JhbSwgbXZhbDJMb2MpIGlzIFsxLCAyLCAzLCA0
XQogUEFTUyBnbC5nZXRVbmlmb3JtKG1hdFByb2dyYW0sIG12YWwzTG9jKSBpcyBbNSwgNiwgNywg
OCwgOSwgMTAsIDExLCAxMiwgMTNdCiBQQVNTIGdsLmdldFVuaWZvcm0obWF0UHJvZ3JhbSwgbXZh
bDRMb2MpIGlzIFsxNCwgMTUsIDE2LCAxNywgMTgsIDE5LCAyMCwgMjEsIDIyLCAyMywgMjQsIDI1
LCAyNiwgMjcsIDI4LCAyOV0KQEAgLTg0LDExICs4MCwxMSBAQCBQQVNTIGdsLmdldFZlcnRleEF0
dHJpYigxLCBnbC5WRVJURVhfQVRUCiBQQVNTIGdsLmdldFZlcnRleEF0dHJpYigxLCBnbC5WRVJU
RVhfQVRUUklCX0FSUkFZX05PUk1BTElaRUQpIGlzIGZhbHNlCiBQQVNTIGdsLmdldFZlcnRleEF0
dHJpYigxLCBnbC5WRVJURVhfQVRUUklCX0FSUkFZX0VOQUJMRUQpIGlzIGZhbHNlCiBQQVNTIGds
LmdldFZlcnRleEF0dHJpYigxLCBnbC5DVVJSRU5UX1ZFUlRFWF9BVFRSSUIpIGlzIFs1LCA2LCA3
LCA4XQotUEFTUyBnbC5nZXRFcnJvcigpIGlzIDAKK1BBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVk
IHZhbHVlOiBOT19FUlJPUiA6IAogUEFTUyBnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJh
bWV0ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5GUkFNRUJVRkZF
Ul9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FKSBpcyBudWxsCiBQQVNTIGdsLmdldEZyYW1lYnVmZmVy
QXR0YWNobWVudFBhcmFtZXRlcihnbC5GUkFNRUJVRkZFUiwgZ2wuREVQVEhfQVRUQUNITUVOVCwg
Z2wuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRSkgaXMgbnVsbAogUEFTUyBnbC5n
ZXRWZXJ0ZXhBdHRyaWIoMSwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9CVUZGRVJfQklORElORykg
aXMgbnVsbAotUEFTUyBnbC5nZXRFcnJvcigpIGlzIDAKK1BBU1MgZ2V0RXJyb3Igd2FzIGV4cGVj
dGVkIHZhbHVlOiBOT19FUlJPUiA6IAogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQog
CiBURVNUIENPTVBMRVRFCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9nbC1v
YmplY3QtZ2V0LWNhbGxzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvd2ViZ2wvZ2wtb2JqZWN0LWdldC1jYWxscy5odG1sCShyZXZpc2lvbiA2MzQzOCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2dsLW9iamVjdC1nZXQtY2FsbHMuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMTMsMzAgKzEzLDEyIEBAIGRlc2NyaXB0aW9uKCJUZXN0IG9mIGdldCBj
YWxscyBhZ2FpbnN0IEcKIAogdmFyIGdsID0gY3JlYXRlM0RDb250ZXh0KCk7CiAKLXZhciBlcnJv
clZlcnQgPSBnbC5jcmVhdGVTaGFkZXIoZ2wuVkVSVEVYX1NIQURFUik7Ci1nbC5zaGFkZXJTb3Vy
Y2UoZXJyb3JWZXJ0LCAiSSBhbSBhIGJhZCB2ZXJ0ZXggc2hhZGVyIik7Ci1nbC5jb21waWxlU2hh
ZGVyKGVycm9yVmVydCk7Ci0KLXZhciBlcnJvckZyYWcgPSBnbC5jcmVhdGVTaGFkZXIoZ2wuRlJB
R01FTlRfU0hBREVSKTsKLWdsLnNoYWRlclNvdXJjZShlcnJvckZyYWcsICJJIGFtIGEgYmFkIGZy
YWdtZW50IHNoYWRlciIpOwotZ2wuY29tcGlsZVNoYWRlcihlcnJvckZyYWcpOwotCiB2YXIgc3Rh
bmRhcmRWZXJ0ID0gbG9hZFN0YW5kYXJkVmVydGV4U2hhZGVyKGdsKTsKIHZhciBzdGFuZGFyZEZy
YWcgPSBsb2FkU3RhbmRhcmRGcmFnbWVudFNoYWRlcihnbCk7CiB2YXIgc3RhbmRhcmRQcm9ncmFt
ID0gZ2wuY3JlYXRlUHJvZ3JhbSgpOwogZ2wuYXR0YWNoU2hhZGVyKHN0YW5kYXJkUHJvZ3JhbSwg
c3RhbmRhcmRWZXJ0KTsKIGdsLmF0dGFjaFNoYWRlcihzdGFuZGFyZFByb2dyYW0sIHN0YW5kYXJk
RnJhZyk7CiBnbC5saW5rUHJvZ3JhbShzdGFuZGFyZFByb2dyYW0pOwotCi0vLyBUZXN0IHByb2dy
YW0gYW5kIHNoYWRlciBnZXRzCi12YXIgcGFyc2VFcnJvciA9ICJFUlJPUjogMDoxOiAnSScgOiBz
eW50YXggZXJyb3Igc3ludGF4IGVycm9yXG5FUlJPUjogUGFyc2VyIGZvdW5kIG5vIGNvZGUgdG8g
Y29tcGlsZSBpbiBzb3VyY2Ugc3RyaW5ncy5cbiI7Ci12YXIgZXJyb3JWZXJ0U3RyaW5nID0gIkkg
YW0gYSBiYWQgdmVydGV4IHNoYWRlclxuIjsKLXZhciBlcnJvckZyYWdTdHJpbmcgPSAiSSBhbSBh
IGJhZCBmcmFnbWVudCBzaGFkZXJcbiI7Ci1zaG91bGRCZSgnZ2wuZ2V0UHJvZ3JhbUluZm9Mb2co
c3RhbmRhcmRQcm9ncmFtKScsICciIicpOwotc2hvdWxkQmUoJ2dsLmdldFNoYWRlckluZm9Mb2co
ZXJyb3JWZXJ0KScsICdwYXJzZUVycm9yJyk7Ci1zaG91bGRCZSgnZ2wuZ2V0U2hhZGVySW5mb0xv
ZyhlcnJvckZyYWcpJywgJ3BhcnNlRXJyb3InKTsKLXNob3VsZEJlKCdnbC5nZXRTaGFkZXJTb3Vy
Y2UoZXJyb3JWZXJ0KScsICdlcnJvclZlcnRTdHJpbmcnKTsKLXNob3VsZEJlKCdnbC5nZXRTaGFk
ZXJTb3VyY2UoZXJyb3JGcmFnKScsICdlcnJvckZyYWdTdHJpbmcnKTsKIHZhciBzaGFkZXJzID0g
Z2wuZ2V0QXR0YWNoZWRTaGFkZXJzKHN0YW5kYXJkUHJvZ3JhbSk7CiBzaG91bGRCZSgnc2hhZGVy
cy5sZW5ndGgnLCAnMicpOwogc2hvdWxkQmVUcnVlKCdzaGFkZXJzWzBdID09IHN0YW5kYXJkVmVy
dCAmJiBzaGFkZXJzWzFdID09IHN0YW5kYXJkRnJhZyB8fCBzaGFkZXJzWzFdID09IHN0YW5kYXJk
VmVydCAmJiBzaGFkZXJzWzBdID09IHN0YW5kYXJkRnJhZycpOwpAQCAtNTcsMTAgKzM5LDExIEBA
IHNob3VsZEJlKCdnbC5nZXRCdWZmZXJQYXJhbWV0ZXIoZ2wuQVJSQVkKIHZhciB0ZXh0dXJlID0g
Z2wuY3JlYXRlVGV4dHVyZSgpOwogZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4dHVy
ZSk7CiBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEsIDIsIDIsIDAsIGds
LlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsCi0gICAgICAgICAgICAgIG5ldyBXZWJHTFVuc2lnbmVk
Qnl0ZUFycmF5KFswLCAwLCAwLCAyNTUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAyNTUsIDI1NSwgMjU1LCAyNTUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAyNTUsIDI1NSwgMjU1LCAyNTUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCAwLCAyNTVdKSk7CisgICAgICAgICAgICAgIG5l
dyBVaW50OEFycmF5KFsKKyAgICAgICAgICAgICAgICAgIDAsIDAsIDAsIDI1NSwKKyAgICAgICAg
ICAgICAgICAgIDI1NSwgMjU1LCAyNTUsIDI1NSwKKyAgICAgICAgICAgICAgICAgIDI1NSwgMjU1
LCAyNTUsIDI1NSwKKyAgICAgICAgICAgICAgICAgIDAsIDAsIDAsIDI1NV0pKTsKIGdsLnRleFBh
cmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBnbC5MSU5FQVIp
OwogZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01BR19GSUxURVIs
IGdsLkxJTkVBUik7CiBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCBudWxsKTsKQEAgLTY4
LDE4ICs1MSwxOCBAQCB2YXIgZnJhbWVidWZmZXIgPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpCiBn
bC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZyYW1lYnVmZmVyKTsKIGdsLmZyYW1l
YnVmZmVyVGV4dHVyZTJEKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wu
VEVYVFVSRV8yRCwgdGV4dHVyZSwgMCk7CiB2YXIgcmVuZGVyYnVmZmVyID0gZ2wuY3JlYXRlUmVu
ZGVyYnVmZmVyKCk7Ci1zaG91bGRCZSgnZ2wuZ2V0RXJyb3IoKScsICcwJyk7CitnbEVycm9yU2hv
dWxkQmUoZ2wsIGdsLk5PX0VSUk9SKTsKIGdsLmJpbmRSZW5kZXJidWZmZXIoZ2wuUkVOREVSQlVG
RkVSLCByZW5kZXJidWZmZXIpOwotc2hvdWxkQmUoJ2dsLmdldEVycm9yKCknLCAnMCcpOworZ2xF
cnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUik7CiBnbC5yZW5kZXJidWZmZXJTdG9yYWdlKGds
LlJFTkRFUkJVRkZFUiwgZ2wuREVQVEhfQ09NUE9ORU5UMTYsIDIsIDIpOwotc2hvdWxkQmUoJ2ds
LmdldEVycm9yKCknLCAnMCcpOworZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUik7CiBn
bC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZ2wuREVQVEhfQVRUQUNI
TUVOVCwgZ2wuUkVOREVSQlVGRkVSLCByZW5kZXJidWZmZXIpOwogLy8gRklYTUU6IG9uIHNvbWUg
bWFjaGluZXMgKGluIHBhcnRpY3VsYXIgdGhlIFdlYktpdCBjb21taXQgYm90cykgdGhlCiAvLyBm
cmFtZWJ1ZmZlciBzdGF0dXMgaXMgRlJBTUVCVUZGRVJfVU5TVVBQT1JURUQ7IG1vcmUgaW52ZXN0
aWdhdGlvbgogLy8gaXMgbmVlZGVkIHdoeSB0aGlzIGlzIHRoZSBjYXNlLCBiZWNhdXNlIHRoZSBG
Qk8gYWxsb2NhdGVkCiAvLyBpbnRlcm5hbGx5IGJ5IHRoZSBXZWJLaXQgaW1wbGVtZW50YXRpb24g
aGFzIGFsbW9zdCBpZGVudGljYWwKIC8vIHBhcmFtZXRlcnMgdG8gdGhpcyBvbmUuIFNlZSBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE4NDMuCi0vL3Nob3VsZEJlKCdn
bC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKScsICdnbC5GUkFNRUJVRkZF
Ul9DT01QTEVURScpOworc2hvdWxkQmUoJ2dsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJB
TUVCVUZGRVIpJywgJ2dsLkZSQU1FQlVGRkVSX0NPTVBMRVRFJyk7CiBzaG91bGRCZSgnZ2wuZ2V0
RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9B
VFRBQ0hNRU5UMCwgZ2wuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfVFlQRSknLCAnZ2wu
VEVYVFVSRScpOwogc2hvdWxkQmUoJ2dsLmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRl
cihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLkZSQU1FQlVGRkVSX0FU
VEFDSE1FTlRfT0JKRUNUX05BTUUpJywgJ3RleHR1cmUnKTsKIHNob3VsZEJlKCdnbC5nZXRGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFD
SE1FTlQwLCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfTEVWRUwpJywgJzAnKTsK
QEAgLTEwNyw5ICs5MCw5IEBAIHNob3VsZEJlKCdnbC5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIo
Z2wKIHNob3VsZEJlTm9uWmVybygnZ2wuZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKGdsLlJFTkRF
UkJVRkZFUiwgZ2wuUkVOREVSQlVGRkVSX0lOVEVSTkFMX0ZPUk1BVCknKTsKIHNob3VsZEJlTm9u
WmVybygnZ2wuZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKGdsLlJFTkRFUkJVRkZFUiwgZ2wuUkVO
REVSQlVGRkVSX0RFUFRIX1NJWkUpJyk7CiB2YXIgY29sb3JidWZmZXIgPSBnbC5jcmVhdGVSZW5k
ZXJidWZmZXIoKTsKLXNob3VsZEJlKCdnbC5nZXRFcnJvcigpJywgJzAnKTsKK2dsRXJyb3JTaG91
bGRCZShnbCwgZ2wuTk9fRVJST1IpOwogZ2wuYmluZFJlbmRlcmJ1ZmZlcihnbC5SRU5ERVJCVUZG
RVIsIHJlbmRlcmJ1ZmZlcik7Ci1zaG91bGRCZSgnZ2wuZ2V0RXJyb3IoKScsICcwJyk7CitnbEVy
cm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SKTsKIGdsLnJlbmRlcmJ1ZmZlclN0b3JhZ2UoZ2wu
UkVOREVSQlVGRkVSLCBnbC5SR0JBNCwgMiwgMik7CiBzaG91bGRCZU5vblplcm8oJ2dsLmdldFJl
bmRlcmJ1ZmZlclBhcmFtZXRlcihnbC5SRU5ERVJCVUZGRVIsIGdsLlJFTkRFUkJVRkZFUl9SRURf
U0laRSknKTsKIHNob3VsZEJlTm9uWmVybygnZ2wuZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKGds
LlJFTkRFUkJVRkZFUiwgZ2wuUkVOREVSQlVGRkVSX0dSRUVOX1NJWkUpJyk7CkBAIC0xNDgsNyAr
MTMxLDcgQEAgZ2wudW5pZm9ybTFpKGJ2YWxMb2MsIDEpOwogZ2wudW5pZm9ybTJpKGJ2YWwyTG9j
LCAxLCAwKTsKIGdsLnVuaWZvcm0zaShidmFsM0xvYywgMSwgMCwgMSk7CiBnbC51bmlmb3JtNGko
YnZhbDRMb2MsIDEsIDAsIDEsIDApOwotc2hvdWxkQmUoJ2dsLmdldEVycm9yKCknLCAnMCcpOwor
Z2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUik7CiBzaG91bGRCZSgnZ2wuZ2V0VW5pZm9y
bShib29sUHJvZ3JhbSwgYnZhbExvYyknLCAndHJ1ZScpOwogc2hvdWxkQmUoJ2dsLmdldFVuaWZv
cm0oYm9vbFByb2dyYW0sIGJ2YWwyTG9jKScsICdbMSwgMF0nKTsKIHNob3VsZEJlKCdnbC5nZXRV
bmlmb3JtKGJvb2xQcm9ncmFtLCBidmFsM0xvYyknLCAnWzEsIDAsIDFdJyk7CkBAIC0xNjUsNyAr
MTQ4LDcgQEAgZ2wudW5pZm9ybTFpKGl2YWxMb2MsIDEpOwogZ2wudW5pZm9ybTJpKGl2YWwyTG9j
LCAyLCAzKTsKIGdsLnVuaWZvcm0zaShpdmFsM0xvYywgNCwgNSwgNik7CiBnbC51bmlmb3JtNGko
aXZhbDRMb2MsIDcsIDgsIDksIDEwKTsKLXNob3VsZEJlKCdnbC5nZXRFcnJvcigpJywgJzAnKTsK
K2dsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IpOwogc2hvdWxkQmUoJ2dsLmdldFVuaWZv
cm0oaW50UHJvZ3JhbSwgaXZhbExvYyknLCAnMScpOwogc2hvdWxkQmUoJ2dsLmdldFVuaWZvcm0o
aW50UHJvZ3JhbSwgaXZhbDJMb2MpJywgJ1syLCAzXScpOwogc2hvdWxkQmUoJ2dsLmdldFVuaWZv
cm0oaW50UHJvZ3JhbSwgaXZhbDNMb2MpJywgJ1s0LCA1LCA2XScpOwpAQCAtMTgyLDcgKzE2NSw3
IEBAIGdsLnVuaWZvcm0xZihmdmFsTG9jLCAxMSk7CiBnbC51bmlmb3JtMmYoZnZhbDJMb2MsIDEy
LCAxMyk7CiBnbC51bmlmb3JtM2YoZnZhbDNMb2MsIDE0LCAxNSwgMTYpOwogZ2wudW5pZm9ybTRm
KGZ2YWw0TG9jLCAxNywgMTgsIDE5LCAyMCk7Ci1zaG91bGRCZSgnZ2wuZ2V0RXJyb3IoKScsICcw
Jyk7CitnbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SKTsKIHNob3VsZEJlKCdnbC5nZXRV
bmlmb3JtKGZsb2F0UHJvZ3JhbSwgZnZhbExvYyknLCAnMTEnKTsKIHNob3VsZEJlKCdnbC5nZXRV
bmlmb3JtKGZsb2F0UHJvZ3JhbSwgZnZhbDJMb2MpJywgJ1sxMiwgMTNdJyk7CiBzaG91bGRCZSgn
Z2wuZ2V0VW5pZm9ybShmbG9hdFByb2dyYW0sIGZ2YWwzTG9jKScsICdbMTQsIDE1LCAxNl0nKTsK
QEAgLTE5NywxMyArMTgwLDEzIEBAIGdsLnVzZVByb2dyYW0obWF0UHJvZ3JhbSk7CiBnbC51bmlm
b3JtTWF0cml4MmZ2KG12YWwyTG9jLCBmYWxzZSwgWzEsIDIsIDMsIDRdKTsKIGdsLnVuaWZvcm1N
YXRyaXgzZnYobXZhbDNMb2MsIGZhbHNlLCBbNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTNd
KTsKIGdsLnVuaWZvcm1NYXRyaXg0ZnYobXZhbDRMb2MsIGZhbHNlLCBbMTQsIDE1LCAxNiwgMTcs
IDE4LCAxOSwgMjAsIDIxLCAyMiwgMjMsIDI0LCAyNSwgMjYsIDI3LCAyOCwgMjldKTsKLXNob3Vs
ZEJlKCdnbC5nZXRFcnJvcigpJywgJzAnKTsKK2dsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJS
T1IpOwogc2hvdWxkQmUoJ2dsLmdldFVuaWZvcm0obWF0UHJvZ3JhbSwgbXZhbDJMb2MpJywgJ1sx
LCAyLCAzLCA0XScpOwogc2hvdWxkQmUoJ2dsLmdldFVuaWZvcm0obWF0UHJvZ3JhbSwgbXZhbDNM
b2MpJywgJ1s1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxM10nKTsKIHNob3VsZEJlKCdnbC5n
ZXRVbmlmb3JtKG1hdFByb2dyYW0sIG12YWw0TG9jKScsICdbMTQsIDE1LCAxNiwgMTcsIDE4LCAx
OSwgMjAsIDIxLCAyMiwgMjMsIDI0LCAyNSwgMjYsIDI3LCAyOCwgMjldJyk7CiAKIC8vIFRlc3Qg
Z2V0VmVydGV4QXR0cmliCi12YXIgYXJyYXkgPSBuZXcgV2ViR0xGbG9hdEFycmF5KFsxLCAyLCAz
LCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNl0pOwordmFyIGFy
cmF5ID0gbmV3IEZsb2F0MzJBcnJheShbMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDEx
LCAxMiwgMTMsIDE0LCAxNSwgMTZdKTsKIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBi
dWZmZXIpOwogZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIGFycmF5LCBnbC5EWU5BTUlD
X0RSQVcpOwogLy8gVmVydGV4IGF0dHJpYnV0ZSAwIGlzIHNwZWNpYWwgaW4gdGhhdCBpdCBoYXMg
bm8gY3VycmVudCBzdGF0ZSwgc28KQEAgLTIyMSw3ICsyMDQsNyBAQCBnbC5kaXNhYmxlVmVydGV4
QXR0cmliQXJyYXkoMSk7CiBzaG91bGRCZSgnZ2wuZ2V0VmVydGV4QXR0cmliKDEsIGdsLlZFUlRF
WF9BVFRSSUJfQVJSQVlfRU5BQkxFRCknLCAnZmFsc2UnKTsKIGdsLnZlcnRleEF0dHJpYjRmKDEs
IDUsIDYsIDcsIDgpOwogc2hvdWxkQmUoJ2dsLmdldFZlcnRleEF0dHJpYigxLCBnbC5DVVJSRU5U
X1ZFUlRFWF9BVFRSSUIpJywgJ1s1LCA2LCA3LCA4XScpOwotc2hvdWxkQmUoJ2dsLmdldEVycm9y
KCknLCAnMCcpOworZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUik7CiAKIC8vIFRlc3Qg
Y2FzZXMgd2hlcmUgbmFtZSA9PSAwCiBnbC5kZWxldGVUZXh0dXJlKHRleHR1cmUpOwpAQCAtMjMw
LDcgKzIxMyw3IEBAIGdsLmRlbGV0ZVJlbmRlcmJ1ZmZlcihyZW5kZXJidWZmZXIpOwogc2hvdWxk
QmVOdWxsKCdnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wuRlJBTUVCVUZG
RVIsIGdsLkRFUFRIX0FUVEFDSE1FTlQsIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNU
X05BTUUpJyk7CiBnbC5kZWxldGVCdWZmZXIoYnVmZmVyKTsKIHNob3VsZEJlTnVsbCgnZ2wuZ2V0
VmVydGV4QXR0cmliKDEsIGdsLlZFUlRFWF9BVFRSSUJfQVJSQVlfQlVGRkVSX0JJTkRJTkcpJyk7
Ci1zaG91bGRCZSgnZ2wuZ2V0RXJyb3IoKScsICcwJyk7CitnbEVycm9yU2hvdWxkQmUoZ2wsIGds
Lk5PX0VSUk9SKTsKIAogc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKIDwvc2NyaXB0PgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZ2wtdW5pZm9ybS1hcnJheXMuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9nbC11bmlmb3JtLWFy
cmF5cy5odG1sCShyZXZpc2lvbiA2MzQzOCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dl
YmdsL2dsLXVuaWZvcm0tYXJyYXlzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIxLDcgKzIxLDEy
IEBACiA8L3NjcmlwdD4KIAogPHNjcmlwdCBpZD0iZnNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC1m
cmFnbWVudCI+CisgICAgLy8gV29ya2Fyb3VuZCBmb3Igbm9uLWNvbXBsaWFudCBXZWJHTCBpbXBs
ZW1lbnRhdGlvbnMgKEZJWE1FKQorICAgICNpZiBkZWZpbmVkKEdMX0VTKQorICAgIHVuaWZvcm0g
bWVkaXVtcCAkdHlwZSBjb2xvclszXTsKKyAgICAjZWxzZQogICAgIHVuaWZvcm0gJHR5cGUgY29s
b3JbM107CisgICAgI2VuZGlmCiAgICAgdm9pZCBtYWluKCkKICAgICB7CiAgICAgICAgIGdsX0Zy
YWdDb2xvciA9IHZlYzQoY29sb3JbMF0kZWxlbSwgY29sb3JbMV0kZWxlbSwgY29sb3JbMl0kZWxl
bSwgMSk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9nbC11bmlmb3JtbWF0
cml4NGZ2Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wv
Z2wtdW5pZm9ybW1hdHJpeDRmdi5odG1sCShyZXZpc2lvbiA2MzQzOCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL3dlYmdsL2dsLXVuaWZvcm1tYXRyaXg0ZnYuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtNDMsNyArNDMsNyBAQCBmb3IgKHZhciBpaSA9IDI7IGlpIDw9IDQ7ICsraWkpIHsKICAg
dmFyIG1hdCA9IFtdOwogICBmb3IgKHZhciBqaiA9IDA7IGpqIDwgaWk7ICsramopIHsKICAgICBm
b3IgKHZhciBsbCA9IDA7IGxsIDwgaWk7ICsrbGwpIHsKLSAgICAgIGlmIChqaiA9PSBpaSAtMSAm
JiBsbCA9PSBpaSAtIDEpCisgICAgICBpZiAoamogPT0gaWkgLSAxICYmIGxsID09IGlpIC0gMSkK
ICAgICAgICAgY29udGludWU7CiAgICAgICBtYXRbamogKiBpaSArIGxsXSA9IChqaiA9PSBsbCkg
PyAxIDogMDsKICAgICB9CkBAIC02MCw4ICs2MCw4IEBAIGZvciAodmFyIGlpID0gMjsgaWkgPD0g
NDsgKytpaSkgewogCiBkZWJ1ZygiIik7CiBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwotPC9z
Y3JpcHQ+CiAKKzwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogCiA8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy93ZWJnbC9pbmRleC12YWxpZGF0aW9uLWNvcGllcy1pbmRpY2VzLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9pbmRleC12YWxp
ZGF0aW9uLWNvcGllcy1pbmRpY2VzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNjM0MzgpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9pbmRleC12YWxpZGF0aW9uLWNvcGllcy1pbmRp
Y2VzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMiwxMiArMiw5IEBAIFRlc3QgdGhh
dCBjbGllbnQgZGF0YSBpcyBhbHdheXMgY29waWVkIGQKIAogT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgogCi1SZWdyZXNzaW9uIHRlc3QgZm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zMjc0OCA6IEluZGV4IHZhbGlkYXRpb24gY29kZSBtdXN0IGFsd2F5cyBjb3B5
IGNsaWVudCBkYXRhCi1QQVNTIGNvbnRleHQuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhjb250ZXh0
LkZSQU1FQlVGRkVSKSBpcyBjb250ZXh0LkZSQU1FQlVGRkVSX0NPTVBMRVRFCiBQQVNTIGNvbnRl
eHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVfU1RSSVAsIDQsIGNvbnRleHQuVU5TSUdO
RURfU0hPUlQsIDIpIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBlcnJvcjogTk9fRVJST1IuCiBQQVNT
IGNvbnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVfU1RSSVAsIDQsIGNvbnRleHQu
VU5TSUdORURfU0hPUlQsIDApIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBlcnJvcjogSU5WQUxJRF9P
UEVSQVRJT04uCiBQQVNTIGNvbnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVfU1RS
SVAsIDQsIGNvbnRleHQuVU5TSUdORURfU0hPUlQsIDQpIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBl
cnJvcjogSU5WQUxJRF9PUEVSQVRJT04uCi1QQVNTIGNvbnRleHQuY2hlY2tGcmFtZWJ1ZmZlclN0
YXR1cyhjb250ZXh0LkZSQU1FQlVGRkVSKSBpcyBjb250ZXh0LkZSQU1FQlVGRkVSX0NPTVBMRVRF
CiBQQVNTIGNvbnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVfU1RSSVAsIDQsIGNv
bnRleHQuVU5TSUdORURfU0hPUlQsIDIpIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBlcnJvcjogTk9f
RVJST1IuCiBQQVNTIGNvbnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVfU1RSSVAs
IDQsIGNvbnRleHQuVU5TSUdORURfU0hPUlQsIDApIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBlcnJv
cjogSU5WQUxJRF9PUEVSQVRJT04uCiBQQVNTIGNvbnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQu
VFJJQU5HTEVfU1RSSVAsIDQsIGNvbnRleHQuVU5TSUdORURfU0hPUlQsIDQpIGdlbmVyYXRlZCBl
eHBlY3RlZCBHTCBlcnJvcjogSU5WQUxJRF9PUEVSQVRJT04uCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy93ZWJnbC9pbmRleC12YWxpZGF0aW9uLWNvcGllcy1pbmRpY2VzLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvaW5kZXgtdmFsaWRhdGlv
bi1jb3BpZXMtaW5kaWNlcy5odG1sCShyZXZpc2lvbiA2MzQzOCkKKysrIExheW91dFRlc3RzL2Zh
c3QvY2FudmFzL3dlYmdsL2luZGV4LXZhbGlkYXRpb24tY29waWVzLWluZGljZXMuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMTEsOCArMTEsNiBAQAogPHNjcmlwdD4KIGRlc2NyaXB0aW9uKCdUZXN0
IHRoYXQgY2xpZW50IGRhdGEgaXMgYWx3YXlzIGNvcGllZCBkdXJpbmcgYnVmZmVyRGF0YSBhbmQg
YnVmZmVyU3ViRGF0YSBjYWxscywgYmVjYXVzZSBvdGhlcndpc2UgdGhlIGRhdGEgdGhlIEdMIHVz
ZXMgdG8gZHJhdyBtYXkgZGlmZmVyIGZyb20gdGhhdCBjaGVja2VkIGJ5IHRoZSBpbmRleCB2YWxp
ZGF0aW9uIGNvZGUuJykKIAotZGVidWcoJ1JlZ3Jlc3Npb24gdGVzdCBmb3IgPGEgaHJlZj0iaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyNzQ4Ij5odHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzI3NDg8L2E+IDogPGNvZGU+SW5kZXggdmFsaWRh
dGlvbiBjb2RlIG11c3QgYWx3YXlzIGNvcHkgY2xpZW50IGRhdGE8L2NvZGU+Jyk7Ci0KIHZhciBj
b250ZXh0ID0gY3JlYXRlM0RDb250ZXh0KCk7CiB2YXIgcHJvZ3JhbSA9IGxvYWRTdGFuZGFyZFBy
b2dyYW0oY29udGV4dCk7CiAKQEAgLTIxLDIxICsxOSwxOSBAQCB2YXIgdmVydGV4T2JqZWN0ID0g
Y29udGV4dC5jcmVhdGVCdWZmZXIoCiBjb250ZXh0LmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KDAp
OwogY29udGV4dC5iaW5kQnVmZmVyKGNvbnRleHQuQVJSQVlfQlVGRkVSLCB2ZXJ0ZXhPYmplY3Qp
OwogLy8gNCB2ZXJ0aWNlcyAtPiAyIHRyaWFuZ2xlcwotY29udGV4dC5idWZmZXJEYXRhKGNvbnRl
eHQuQVJSQVlfQlVGRkVSLCBuZXcgV2ViR0xGbG9hdEFycmF5KFsgMCwwLDAsIDAsMSwwLCAxLDAs
MCwgMSwxLDAgXSksIGNvbnRleHQuU1RBVElDX0RSQVcpOworY29udGV4dC5idWZmZXJEYXRhKGNv
bnRleHQuQVJSQVlfQlVGRkVSLCBuZXcgRmxvYXQzMkFycmF5KFsgMCwwLDAsIDAsMSwwLCAxLDAs
MCwgMSwxLDAgXSksIGNvbnRleHQuU1RBVElDX0RSQVcpOwogY29udGV4dC52ZXJ0ZXhBdHRyaWJQ
b2ludGVyKDAsIDMsIGNvbnRleHQuRkxPQVQsIGZhbHNlLCAwLCAwKTsKIAogdmFyIGluZGV4T2Jq
ZWN0ID0gY29udGV4dC5jcmVhdGVCdWZmZXIoKTsKIAogY29udGV4dC5iaW5kQnVmZmVyKGNvbnRl
eHQuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIGluZGV4T2JqZWN0KTsKLXZhciBpbmRpY2VzID0gbmV3
IFdlYkdMVW5zaWduZWRTaG9ydEFycmF5KFsgMTAwMDAsIDAsIDEsIDIsIDMsIDEwMDAwIF0pOwor
dmFyIGluZGljZXMgPSBuZXcgVWludDE2QXJyYXkoWyAxMDAwMCwgMCwgMSwgMiwgMywgMTAwMDAg
XSk7CiBjb250ZXh0LmJ1ZmZlckRhdGEoY29udGV4dC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgaW5k
aWNlcywgY29udGV4dC5TVEFUSUNfRFJBVyk7Ci1zaG91bGRCZSgnY29udGV4dC5jaGVja0ZyYW1l
YnVmZmVyU3RhdHVzKGNvbnRleHQuRlJBTUVCVUZGRVIpJywgJ2NvbnRleHQuRlJBTUVCVUZGRVJf
Q09NUExFVEUnKTsKIHNob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0LCBjb250ZXh0Lk5PX0VS
Uk9SLCAiY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRV9TVFJJUCwgNCwgY29u
dGV4dC5VTlNJR05FRF9TSE9SVCwgMikiKTsKIHNob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0
LCBjb250ZXh0LklOVkFMSURfT1BFUkFUSU9OLCAiY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4
dC5UUklBTkdMRV9TVFJJUCwgNCwgY29udGV4dC5VTlNJR05FRF9TSE9SVCwgMCkiKTsKIHNob3Vs
ZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0LCBjb250ZXh0LklOVkFMSURfT1BFUkFUSU9OLCAiY29u
dGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRV9TVFJJUCwgNCwgY29udGV4dC5VTlNJ
R05FRF9TSE9SVCwgNCkiKTsKIGluZGljZXNbMF0gPSAyOwogaW5kaWNlc1s1XSA9IDE7Ci1zaG91
bGRCZSgiY29udGV4dC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGNvbnRleHQuRlJBTUVCVUZGRVIp
IiwgImNvbnRleHQuRlJBTUVCVUZGRVJfQ09NUExFVEUiKTsKIHNob3VsZEdlbmVyYXRlR0xFcnJv
cihjb250ZXh0LCBjb250ZXh0Lk5PX0VSUk9SLCAiY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4
dC5UUklBTkdMRV9TVFJJUCwgNCwgY29udGV4dC5VTlNJR05FRF9TSE9SVCwgMikiKTsKIHNob3Vs
ZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0LCBjb250ZXh0LklOVkFMSURfT1BFUkFUSU9OLCAiY29u
dGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdMRV9TVFJJUCwgNCwgY29udGV4dC5VTlNJ
R05FRF9TSE9SVCwgMCkiKTsKIHNob3VsZEdlbmVyYXRlR0xFcnJvcihjb250ZXh0LCBjb250ZXh0
LklOVkFMSURfT1BFUkFUSU9OLCAiY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5UUklBTkdM
RV9TVFJJUCwgNCwgY29udGV4dC5VTlNJR05FRF9TSE9SVCwgNCkiKTsKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvY2FudmFzL3dlYmdsL2luZGV4LXZhbGlkYXRpb24tY3Jhc2gtd2l0aC1idWZmZXIt
c3ViLWRhdGEtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL3dlYmdsL2luZGV4LXZhbGlkYXRpb24tY3Jhc2gtd2l0aC1idWZmZXItc3ViLWRhdGEtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiA2MzQzOCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dl
YmdsL2luZGV4LXZhbGlkYXRpb24tY3Jhc2gtd2l0aC1idWZmZXItc3ViLWRhdGEtZXhwZWN0ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yLDcgKzIsNiBAQCBWZXJpZmllcyB0aGF0IHRoZSBpbmRl
eCB2YWxpZGF0aW9uIGNvZGUgCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAotUmVncmVz
c2lvbiB0ZXN0IGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDIw
MDQgOiBidWZmZXJTdWJEYXRhIGNhdXNlcyBjcmFzaCBpbiBXZWJHTEJ1ZmZlcjo6YXNzb2NpYXRl
QnVmZmVyU3ViRGF0YQogUEFTUyBidWZmZXJTdWJEYXRhLCB3aGVuIGJ1ZmZlciBvYmplY3Qgd2Fz
IGluaXRpYWxpemVkIHdpdGggbnVsbCwgZGlkIG5vdCBjcmFzaAogUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9pbmRl
eC12YWxpZGF0aW9uLWNyYXNoLXdpdGgtYnVmZmVyLXN1Yi1kYXRhLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvaW5kZXgtdmFsaWRhdGlvbi1jcmFzaC13
aXRoLWJ1ZmZlci1zdWItZGF0YS5odG1sCShyZXZpc2lvbiA2MzQzOCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL3dlYmdsL2luZGV4LXZhbGlkYXRpb24tY3Jhc2gtd2l0aC1idWZmZXItc3Vi
LWRhdGEuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTEsOCArMTEsNiBAQAogPHNjcmlwdD4KIGRl
c2NyaXB0aW9uKCdWZXJpZmllcyB0aGF0IHRoZSBpbmRleCB2YWxpZGF0aW9uIGNvZGUgd2hpY2gg
aXMgd2l0aGluIGJ1ZmZlclN1YkRhdGEgZG9lcyBub3QgY3Jhc2guJykKIAotZGVidWcoJ1JlZ3Jl
c3Npb24gdGVzdCBmb3IgPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQyMDA0Ij5odHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDIw
MDQ8L2E+IDogPGNvZGU+YnVmZmVyU3ViRGF0YSBjYXVzZXMgY3Jhc2ggaW4gV2ViR0xCdWZmZXI6
OmFzc29jaWF0ZUJ1ZmZlclN1YkRhdGE8L2NvZGU+Jyk7Ci0KIHZhciBnbCA9IGNyZWF0ZTNEQ29u
dGV4dCgpOwogCiB2YXIgZWxlbWVudEJ1ZmZlciA9IGdsLmNyZWF0ZUJ1ZmZlcigpOwpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvaW5kZXgtdmFsaWRhdGlvbi1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvaW5kZXgtdmFs
aWRhdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDYzNDM4KQorKysgTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvd2ViZ2wvaW5kZXgtdmFsaWRhdGlvbi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNCArMSw0IEBACi1UZXN0IG9mIHZhbGlkYXRpbmcgaW5kaWNlcyBmb3IgZHJhd0Vs
ZW1lbnRzKCkuCitUZXN0cyB0aGF0IGluZGV4IHZhbGlkYXRpb24gdmVyaWZpZXMgdGhlIGNvcnJl
Y3QgbnVtYmVyIG9mIGluZGljZXMKIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9pbmRleC12YWxpZGF0aW9uLXZlcmlmaWVz
LXRvby1tYW55LWluZGljZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL3dlYmdsL2luZGV4LXZhbGlkYXRpb24tdmVyaWZpZXMtdG9vLW1hbnktaW5k
aWNlcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDYzNDM4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9j
YW52YXMvd2ViZ2wvaW5kZXgtdmFsaWRhdGlvbi12ZXJpZmllcy10b28tbWFueS1pbmRpY2VzLWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLVJlZ3Jlc3Npb24gdGVz
dCBmb3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyNjkyIDogSW5k
ZXggdmFsaWRhdGlvbiBmb3IgZHJhd0VsZW1lbnRzIGV4YW1pbmVzIHRvbyBtYW55IGluZGljZXMK
K1Rlc3RzIHRoYXQgaW5kZXggdmFsaWRhdGlvbiBmb3IgZHJhd0VsZW1lbnRzIGRvZXMgbm90IGV4
YW1pbmUgdG9vIG1hbnkgaW5kaWNlcwogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2luZGV4LXZhbGlkYXRpb24tdmVyaWZp
ZXMtdG9vLW1hbnktaW5kaWNlcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL3dlYmdsL2luZGV4LXZhbGlkYXRpb24tdmVyaWZpZXMtdG9vLW1hbnktaW5kaWNlcy5o
dG1sCShyZXZpc2lvbiA2MzQzOCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2lu
ZGV4LXZhbGlkYXRpb24tdmVyaWZpZXMtdG9vLW1hbnktaW5kaWNlcy5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC05LDcgKzksNyBAQAogPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CiAKIDxzY3JpcHQ+
Ci1kZXNjcmlwdGlvbignUmVncmVzc2lvbiB0ZXN0IGZvciA8YSBocmVmPSJodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzI2OTIiPmh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zMjY5MjwvYT4gOiA8Y29kZT5JbmRleCB2YWxpZGF0aW9uIGZvciBk
cmF3RWxlbWVudHMgZXhhbWluZXMgdG9vIG1hbnkgaW5kaWNlczwvY29kZT4nKTsKK2Rlc2NyaXB0
aW9uKCdUZXN0cyB0aGF0IGluZGV4IHZhbGlkYXRpb24gZm9yIGRyYXdFbGVtZW50cyBkb2VzIG5v
dCBleGFtaW5lIHRvbyBtYW55IGluZGljZXMnKTsKIAogdmFyIGNvbnRleHQgPSBjcmVhdGUzRENv
bnRleHQoKTsKIHZhciBwcm9ncmFtID0gbG9hZFN0YW5kYXJkUHJvZ3JhbShjb250ZXh0KTsKQEAg
LTE5LDE0ICsxOSwxNCBAQCB2YXIgdmVydGV4T2JqZWN0ID0gY29udGV4dC5jcmVhdGVCdWZmZXIo
CiBjb250ZXh0LmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KDApOwogY29udGV4dC5iaW5kQnVmZmVy
KGNvbnRleHQuQVJSQVlfQlVGRkVSLCB2ZXJ0ZXhPYmplY3QpOwogLy8gNCB2ZXJ0aWNlcyAtPiAy
IHRyaWFuZ2xlcwotY29udGV4dC5idWZmZXJEYXRhKGNvbnRleHQuQVJSQVlfQlVGRkVSLCBuZXcg
V2ViR0xGbG9hdEFycmF5KFsgMCwwLDAsIDAsMSwwLCAxLDAsMCwgMSwxLDAgXSksIGNvbnRleHQu
U1RBVElDX0RSQVcpOworY29udGV4dC5idWZmZXJEYXRhKGNvbnRleHQuQVJSQVlfQlVGRkVSLCBu
ZXcgRmxvYXQzMkFycmF5KFsgMCwwLDAsIDAsMSwwLCAxLDAsMCwgMSwxLDAgXSksIGNvbnRleHQu
U1RBVElDX0RSQVcpOwogY29udGV4dC52ZXJ0ZXhBdHRyaWJQb2ludGVyKDAsIDMsIGNvbnRleHQu
RkxPQVQsIGZhbHNlLCAwLCAwKTsKIAogdmFyIGluZGV4T2JqZWN0ID0gY29udGV4dC5jcmVhdGVC
dWZmZXIoKTsKIAogZGVidWcoIlRlc3Qgb3V0IG9mIHJhbmdlIGluZGljZXMiKQogY29udGV4dC5i
aW5kQnVmZmVyKGNvbnRleHQuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIGluZGV4T2JqZWN0KTsKLWNv
bnRleHQuYnVmZmVyRGF0YShjb250ZXh0LkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBuZXcgV2ViR0xV
bnNpZ25lZFNob3J0QXJyYXkoWyAxMDAwMCwgMCwgMSwgMiwgMywgMTAwMDAgXSksIGNvbnRleHQu
U1RBVElDX0RSQVcpOworY29udGV4dC5idWZmZXJEYXRhKGNvbnRleHQuRUxFTUVOVF9BUlJBWV9C
VUZGRVIsIG5ldyBVaW50MTZBcnJheShbIDEwMDAwLCAwLCAxLCAyLCAzLCAxMDAwMCBdKSwgY29u
dGV4dC5TVEFUSUNfRFJBVyk7CiBzaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4
dC5OT19FUlJPUiwgImNvbnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVfU1RSSVAs
IDQsIGNvbnRleHQuVU5TSUdORURfU0hPUlQsIDIpIik7CiBzaG91bGRHZW5lcmF0ZUdMRXJyb3Io
Y29udGV4dCwgY29udGV4dC5JTlZBTElEX09QRVJBVElPTiwgImNvbnRleHQuZHJhd0VsZW1lbnRz
KGNvbnRleHQuVFJJQU5HTEVfU1RSSVAsIDQsIGNvbnRleHQuVU5TSUdORURfU0hPUlQsIDApIik7
CiBzaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5JTlZBTElEX09QRVJBVElP
TiwgImNvbnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuVFJJQU5HTEVfU1RSSVAsIDQsIGNvbnRl
eHQuVU5TSUdORURfU0hPUlQsIDQpIik7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93
ZWJnbC9pbmRleC12YWxpZGF0aW9uLXdpdGgtcmVzaXplZC1idWZmZXItZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2luZGV4LXZhbGlkYXRp
b24td2l0aC1yZXNpemVkLWJ1ZmZlci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDYzNDM4KQorKysg
TGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvaW5kZXgtdmFsaWRhdGlvbi13aXRoLXJlc2l6
ZWQtYnVmZmVyLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMiw3ICsyLDYgQEAgVGVz
dCB0aGF0IHVwZGF0aW5nIHRoZSBzaXplIG9mIGEgdmVydGV4IAogCiBPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCiAKLVJlZ3Jlc3Npb24gdGVzdCBmb3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTQxMDkyIDogSW5kZXggdmFsaWRhdGlvbiBjYWNoZXMgYnVmZmVyIHNp
emUgaW5mb3JtYXRpb24gdG9vIGFnZ3Jlc3NpdmVseQogUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0
ZWQgdmFsdWU6IE5PX0VSUk9SIDogYWZ0ZXIgaW5pdGlhbGl6YXRpb24KIFBBU1MgZ2V0RXJyb3Ig
d2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IGFmdGVyIHZlcnRleCBzZXR1cAogUEFTUyBn
ZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogYWZ0ZXIgdGV4dHVyZSBjb29y
ZCBzZXR1cApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvaW5kZXgtdmFsaWRh
dGlvbi13aXRoLXJlc2l6ZWQtYnVmZmVyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvd2ViZ2wvaW5kZXgtdmFsaWRhdGlvbi13aXRoLXJlc2l6ZWQtYnVmZmVyLmh0
bWwJKHJldmlzaW9uIDYzNDM4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvaW5k
ZXgtdmFsaWRhdGlvbi13aXRoLXJlc2l6ZWQtYnVmZmVyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTMwLDggKzMwLDYgQEAgdm9pZCBtYWluKCkgewogPHNjcmlwdD4KIGRlc2NyaXB0aW9uKCdUZXN0
IHRoYXQgdXBkYXRpbmcgdGhlIHNpemUgb2YgYSB2ZXJ0ZXggYnVmZmVyIGlzIHByb3Blcmx5IG5v
dGljZWQgYnkgdGhlIFdlYkdMIGltcGxlbWVudGF0aW9uLicpCiAKLWRlYnVnKCdSZWdyZXNzaW9u
IHRlc3QgZm9yIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD00MTA5MiI+aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQxMDkyPC9h
PiA6IDxjb2RlPkluZGV4IHZhbGlkYXRpb24gY2FjaGVzIGJ1ZmZlciBzaXplIGluZm9ybWF0aW9u
IHRvbyBhZ2dyZXNzaXZlbHk8L2NvZGU+Jyk7Ci0KIHZhciBnbCA9IGluaXRXZWJHTCgiZXhhbXBs
ZSIsICJ2cyIsICJmcyIsIFsidlBvc2l0aW9uIiwgInZDb2xvciJdLCBbMCwgMCwgMCwgMV0sIDEp
OwogZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgImFmdGVyIGluaXRpYWxpemF0aW9u
Iik7CiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2luZGV4LXZhbGlkYXRp
b24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9pbmRl
eC12YWxpZGF0aW9uLmh0bWwJKHJldmlzaW9uIDYzNDM4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9j
YW52YXMvd2ViZ2wvaW5kZXgtdmFsaWRhdGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC05LDI0
ICs5LDI0IEBACiA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KIAogPHNjcmlwdD4KLWRlc2NyaXB0
aW9uKCJUZXN0IG9mIHZhbGlkYXRpbmcgaW5kaWNlcyBmb3IgZHJhd0VsZW1lbnRzKCkuIik7Citk
ZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBpbmRleCB2YWxpZGF0aW9uIHZlcmlmaWVzIHRoZSBjb3Jy
ZWN0IG51bWJlciBvZiBpbmRpY2VzIik7CiAKIHZhciBnbCA9IGNyZWF0ZTNEQ29udGV4dCgpOwog
dmFyIHByb2dyYW0gPSBsb2FkU3RhbmRhcmRQcm9ncmFtKGdsKTsKIAogLy8gMyB2ZXJ0aWNlcyA9
PiAxIHRyaWFuZ2xlLCBpbnRlcmxlYXZlZCBkYXRhCi12YXIgZGF0YUNvbXBsZXRlID0gbmV3IFdl
YkdMRmxvYXRBcnJheShbMCwgMCwgMCwgMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAwLCAwLCAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDEsIDAsIDAsIDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MCwgMCwgMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCAxLCAx
LCAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDFdKTsK
LXZhciBkYXRhSW5jb21wbGV0ZSA9IG5ldyBXZWJHTEZsb2F0QXJyYXkoWzAsIDAsIDAsIDEsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCAxLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgMCwgMCwgMSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDEsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCAxLCAxLCAxXSk7Ci12YXIgaW5kaWNlcyA9
IG5ldyBXZWJHTFVuc2lnbmVkU2hvcnRBcnJheShbMCwgMSwgMl0pOwordmFyIGRhdGFDb21wbGV0
ZSA9IG5ldyBGbG9hdDMyQXJyYXkoWzAsIDAsIDAsIDEsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMCwgMCwgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAxLCAwLCAwLCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAs
IDAsIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgMSwgMSwgMSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCAxXSk7Cit2YXIgZGF0
YUluY29tcGxldGUgPSBuZXcgRmxvYXQzMkFycmF5KFswLCAwLCAwLCAxLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgMSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDEsIDAsIDAsIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAwLCAwLCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMSwgMSwgMSwgMV0pOwordmFyIGluZGljZXMgPSBuZXcgVWludDE2QXJyYXkoWzAsIDEs
IDJdKTsKIAogZGVidWcoIlRlc3Rpbmcgd2l0aCB2YWxpZCBpbmRpY2VzIik7CiAKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2ludmFsaWQtVVRGLTE2Lmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvaW52YWxpZC1VVEYtMTYuaHRtbAko
cmV2aXNpb24gNjM0MzgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9pbnZhbGlk
LVVURi0xNi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC04LDggKzgsOSBAQAogPHAgaWQ9ImRlc2Ny
aXB0aW9uIj48L3A+CiA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KIDxzY3JpcHQ+Ci0gICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cuaW5pdE5vbktocm9ub3NGcmFtZXdvcmsp
IHsKKyAgICAgICAgd2luZG93LmluaXROb25LaHJvbm9zRnJhbWV3b3JrKGZhbHNlKTsKKyAgICB9
CiA8L3NjcmlwdD4KIDxzY3JpcHQ+CiBkZXNjcmlwdGlvbignVGhpcyB0ZXN0IHZlcmlmaWVzIHRo
YXQgdGhlIGludGVybmFsIGNvbnZlcnNpb24gZnJvbSBVVEYxNiB0byBVVEY4IGlzIHJvYnVzdCB0
byBpbnZhbGlkIGlucHV0cy4gQW55IERPTSBlbnRyeSBwb2ludCB3aGljaCBjb252ZXJ0cyBhbiBp
bmNvbWluZyBzdHJpbmcgdG8gVVRGOCBjb3VsZCBiZSB1c2VkIGZvciB0aGlzIHRlc3QuJyk7Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9udWxsLW9iamVjdC1iZWhhdmlvdXIt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmds
L251bGwtb2JqZWN0LWJlaGF2aW91ci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDYzNDM4KQorKysg
TGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvbnVsbC1vYmplY3QtYmVoYXZpb3VyLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMiwyOSArMiwzMSBAQCBUZXN0cyBjYWxsaW5nIFdl
YkdMIEFQSXMgd2l0aG91dCBwcm92aWRpCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAot
UEFTUyBjb250ZXh0LmNvbXBpbGVTaGFkZXIoKSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6
IElOVkFMSURfVkFMVUUuCi1QQVNTIGNvbnRleHQubGlua1Byb2dyYW0oKSBnZW5lcmF0ZWQgZXhw
ZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURfVkFMVUUuCi1QQVNTIGNvbnRleHQuYXR0YWNoU2hhZGVy
KCkgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX1ZBTFVFLgotUEFTUyBjb250
ZXh0LmF0dGFjaFNoYWRlcihwcm9ncmFtLCB1bmRlZmluZWQpIGdlbmVyYXRlZCBleHBlY3RlZCBH
TCBlcnJvcjogSU5WQUxJRF9WQUxVRS4KLVBBU1MgY29udGV4dC5hdHRhY2hTaGFkZXIodW5kZWZp
bmVkLCBzaGFkZXIpIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBlcnJvcjogSU5WQUxJRF9WQUxVRS4K
LVBBU1MgY29udGV4dC5kZXRhY2hTaGFkZXIocHJvZ3JhbSwgdW5kZWZpbmVkKSBnZW5lcmF0ZWQg
ZXhwZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURfVkFMVUUuCi1QQVNTIGNvbnRleHQuZGV0YWNoU2hh
ZGVyKHVuZGVmaW5lZCwgc2hhZGVyKSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IElOVkFM
SURfVkFMVUUuCi1QQVNTIGNvbnRleHQuc2hhZGVyU291cmNlKCkgZ2VuZXJhdGVkIGV4cGVjdGVk
IEdMIGVycm9yOiBJTlZBTElEX1ZBTFVFLgotUEFTUyBjb250ZXh0LnNoYWRlclNvdXJjZSh1bmRl
ZmluZWQsICdmb28nKSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURfVkFMVUUu
Ci1QQVNTIGNvbnRleHQuYmluZEF0dHJpYkxvY2F0aW9uKHVuZGVmaW5lZCwgMCwgJ2ZvbycpIGdl
bmVyYXRlZCBleHBlY3RlZCBHTCBlcnJvcjogSU5WQUxJRF9WQUxVRS4KLVBBU1MgY29udGV4dC5i
aW5kQnVmZmVyKGNvbnRleHQuQVJSQVlfQlVGRkVSLCAwKSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wg
ZXJyb3I6IE5PX0VSUk9SLgotUEFTUyBjb250ZXh0LmJpbmRGcmFtZWJ1ZmZlcihjb250ZXh0LkZS
QU1FQlVGRkVSLCAwKSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IE5PX0VSUk9SLgotUEFT
UyBjb250ZXh0LmJpbmRSZW5kZXJidWZmZXIoY29udGV4dC5SRU5ERVJCVUZGRVIsIDApIGdlbmVy
YXRlZCBleHBlY3RlZCBHTCBlcnJvcjogTk9fRVJST1IuCi1QQVNTIGNvbnRleHQuYmluZFRleHR1
cmUoY29udGV4dC5URVhUVVJFXzJELCAwKSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IE5P
X0VSUk9SLgotUEFTUyBjb250ZXh0LmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKGNvbnRleHQuRlJB
TUVCVUZGRVIsIGNvbnRleHQuREVQVEhfQVRUQUNITUVOVCwgY29udGV4dC5SRU5ERVJCVUZGRVIs
IDApIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBlcnJvcjogSU5WQUxJRF9PUEVSQVRJT04uCi1QQVNT
IGNvbnRleHQuZnJhbWVidWZmZXJUZXh0dXJlMkQoY29udGV4dC5GUkFNRUJVRkZFUiwgY29udGV4
dC5DT0xPUl9BVFRBQ0hNRU5UMCwgY29udGV4dC5URVhUVVJFXzJELCAwLCAwKSBnZW5lcmF0ZWQg
ZXhwZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURfT1BFUkFUSU9OLgotUEFTUyBjb250ZXh0LmdldFBy
b2dyYW1QYXJhbWV0ZXIodW5kZWZpbmVkLCAwKSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6
IElOVkFMSURfVkFMVUUuCi1QQVNTIGNvbnRleHQuZ2V0UHJvZ3JhbUluZm9Mb2codW5kZWZpbmVk
LCAwKSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURfVkFMVUUuCi1QQVNTIGNv
bnRleHQuZ2V0U2hhZGVyUGFyYW1ldGVyKHVuZGVmaW5lZCwgMCkgZ2VuZXJhdGVkIGV4cGVjdGVk
IEdMIGVycm9yOiBJTlZBTElEX1ZBTFVFLgotUEFTUyBjb250ZXh0LmdldFNoYWRlckluZm9Mb2co
dW5kZWZpbmVkLCAwKSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURfVkFMVUUu
Ci1QQVNTIGNvbnRleHQuZ2V0U2hhZGVyU291cmNlKHVuZGVmaW5lZCkgZ2VuZXJhdGVkIGV4cGVj
dGVkIEdMIGVycm9yOiBJTlZBTElEX1ZBTFVFLgotUEFTUyBjb250ZXh0LmdldFVuaWZvcm0odW5k
ZWZpbmVkLCAwKSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IElOVkFMSURfVkFMVUUuCi1Q
QVNTIGNvbnRleHQuZ2V0VW5pZm9ybUxvY2F0aW9uKHVuZGVmaW5lZCwgJ2ZvbycpIGdlbmVyYXRl
ZCBleHBlY3RlZCBHTCBlcnJvcjogSU5WQUxJRF9WQUxVRS4KK1BBU1MgUHJvZ3JhbSBDb21waWxl
ZAorUEFTUyBTaGFkZXIgQ29tcGlsZWQKK1BBU1MgY29udGV4dC5jb21waWxlU2hhZGVyKCkgd2Fz
IGV4cGVjdGVkIHZhbHVlOiBJTlZBTElEX1ZBTFVFLgorUEFTUyBjb250ZXh0LmxpbmtQcm9ncmFt
KCkgd2FzIGV4cGVjdGVkIHZhbHVlOiBJTlZBTElEX1ZBTFVFLgorUEFTUyBjb250ZXh0LmF0dGFj
aFNoYWRlcigpIHdhcyBleHBlY3RlZCB2YWx1ZTogSU5WQUxJRF9WQUxVRS4KK1BBU1MgY29udGV4
dC5hdHRhY2hTaGFkZXIocHJvZ3JhbSwgdW5kZWZpbmVkKSB3YXMgZXhwZWN0ZWQgdmFsdWU6IElO
VkFMSURfVkFMVUUuCitQQVNTIGNvbnRleHQuYXR0YWNoU2hhZGVyKHVuZGVmaW5lZCwgc2hhZGVy
KSB3YXMgZXhwZWN0ZWQgdmFsdWU6IElOVkFMSURfVkFMVUUuCitQQVNTIGNvbnRleHQuZGV0YWNo
U2hhZGVyKHByb2dyYW0sIHVuZGVmaW5lZCkgd2FzIGV4cGVjdGVkIHZhbHVlOiBJTlZBTElEX1ZB
TFVFLgorUEFTUyBjb250ZXh0LmRldGFjaFNoYWRlcih1bmRlZmluZWQsIHNoYWRlcikgd2FzIGV4
cGVjdGVkIHZhbHVlOiBJTlZBTElEX1ZBTFVFLgorUEFTUyBjb250ZXh0LnNoYWRlclNvdXJjZSgp
IHdhcyBleHBlY3RlZCB2YWx1ZTogSU5WQUxJRF9WQUxVRS4KK1BBU1MgY29udGV4dC5zaGFkZXJT
b3VyY2UodW5kZWZpbmVkLCAnZm9vJykgd2FzIGV4cGVjdGVkIHZhbHVlOiBJTlZBTElEX1ZBTFVF
LgorUEFTUyBjb250ZXh0LmJpbmRBdHRyaWJMb2NhdGlvbih1bmRlZmluZWQsIDAsICdmb28nKSB3
YXMgZXhwZWN0ZWQgdmFsdWU6IElOVkFMSURfVkFMVUUuCitQQVNTIGNvbnRleHQuYmluZEJ1ZmZl
cihjb250ZXh0LkFSUkFZX0JVRkZFUiwgMCkgd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUi4K
K1BBU1MgY29udGV4dC5iaW5kRnJhbWVidWZmZXIoY29udGV4dC5GUkFNRUJVRkZFUiwgMCkgd2Fz
IGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUi4KK1BBU1MgY29udGV4dC5iaW5kUmVuZGVyYnVmZmVy
KGNvbnRleHQuUkVOREVSQlVGRkVSLCAwKSB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SLgor
UEFTUyBjb250ZXh0LmJpbmRUZXh0dXJlKGNvbnRleHQuVEVYVFVSRV8yRCwgMCkgd2FzIGV4cGVj
dGVkIHZhbHVlOiBOT19FUlJPUi4KK1BBU1MgY29udGV4dC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZl
cihjb250ZXh0LkZSQU1FQlVGRkVSLCBjb250ZXh0LkRFUFRIX0FUVEFDSE1FTlQsIGNvbnRleHQu
UkVOREVSQlVGRkVSLCAwKSB3YXMgZXhwZWN0ZWQgdmFsdWU6IElOVkFMSURfT1BFUkFUSU9OLgor
UEFTUyBjb250ZXh0LmZyYW1lYnVmZmVyVGV4dHVyZTJEKGNvbnRleHQuRlJBTUVCVUZGRVIsIGNv
bnRleHQuQ09MT1JfQVRUQUNITUVOVDAsIGNvbnRleHQuVEVYVFVSRV8yRCwgMCwgMCkgd2FzIGV4
cGVjdGVkIHZhbHVlOiBJTlZBTElEX09QRVJBVElPTi4KK1BBU1MgY29udGV4dC5nZXRQcm9ncmFt
UGFyYW1ldGVyKHVuZGVmaW5lZCwgMCkgd2FzIGV4cGVjdGVkIHZhbHVlOiBJTlZBTElEX1ZBTFVF
LgorUEFTUyBjb250ZXh0LmdldFByb2dyYW1JbmZvTG9nKHVuZGVmaW5lZCwgMCkgd2FzIGV4cGVj
dGVkIHZhbHVlOiBJTlZBTElEX1ZBTFVFLgorUEFTUyBjb250ZXh0LmdldFNoYWRlclBhcmFtZXRl
cih1bmRlZmluZWQsIDApIHdhcyBleHBlY3RlZCB2YWx1ZTogSU5WQUxJRF9WQUxVRS4KK1BBU1Mg
Y29udGV4dC5nZXRTaGFkZXJJbmZvTG9nKHVuZGVmaW5lZCwgMCkgd2FzIGV4cGVjdGVkIHZhbHVl
OiBJTlZBTElEX1ZBTFVFLgorUEFTUyBjb250ZXh0LmdldFNoYWRlclNvdXJjZSh1bmRlZmluZWQp
IHdhcyBleHBlY3RlZCB2YWx1ZTogSU5WQUxJRF9WQUxVRS4KK1BBU1MgY29udGV4dC5nZXRVbmlm
b3JtKHVuZGVmaW5lZCwgMCkgd2FzIGV4cGVjdGVkIHZhbHVlOiBJTlZBTElEX1ZBTFVFLgorUEFT
UyBjb250ZXh0LmdldFVuaWZvcm1Mb2NhdGlvbih1bmRlZmluZWQsICdmb28nKSB3YXMgZXhwZWN0
ZWQgdmFsdWU6IElOVkFMSURfVkFMVUUuCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CiAKIFRFU1QgQ09NUExFVEUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL251
bGwtb2JqZWN0LWJlaGF2aW91ci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL3dlYmdsL251bGwtb2JqZWN0LWJlaGF2aW91ci5odG1sCShyZXZpc2lvbiA2MzQzOCkK
KysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL251bGwtb2JqZWN0LWJlaGF2aW91ci5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zLDE4ICszLDIzIEBACiA8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgogPHNjcmlw
dCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL3dlYmdsLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5
PgogPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgogPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
CiAKIDxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7CiBkZXNjcmlwdGlvbigiVGVz
dHMgY2FsbGluZyBXZWJHTCBBUElzIHdpdGhvdXQgcHJvdmlkaW5nIHRoZSBuZWNlc3Nhcnkgb2Jq
ZWN0cyIpOwogCi12YXIgY29udGV4dCA9IGNyZWF0ZTNEQ29udGV4dCgpOwotdmFyIHByb2dyYW0g
PSBsb2FkU3RhbmRhcmRQcm9ncmFtKGNvbnRleHQpOwotdmFyIHNoYWRlciA9IGxvYWRTdGFuZGFy
ZFZlcnRleFNoYWRlcihjb250ZXh0KTsKK3ZhciBjb250ZXh0ID0gd3R1LmNyZWF0ZTNEQ29udGV4
dCgpOwordmFyIHByb2dyYW0gPSB3dHUubG9hZFN0YW5kYXJkUHJvZ3JhbShjb250ZXh0KTsKK3Zh
ciBzaGFkZXIgPSB3dHUubG9hZFN0YW5kYXJkVmVydGV4U2hhZGVyKGNvbnRleHQpOwordmFyIHNo
b3VsZEdlbmVyYXRlR0xFcnJvciA9IHd0dS5zaG91bGRHZW5lcmF0ZUdMRXJyb3I7CiAKK2Fzc2Vy
dE1zZyhwcm9ncmFtICE9IG51bGwsICJQcm9ncmFtIENvbXBpbGVkIik7Cithc3NlcnRNc2coc2hh
ZGVyICE9IG51bGwsICJTaGFkZXIgQ29tcGlsZWQiKTsKIHNob3VsZEdlbmVyYXRlR0xFcnJvcihj
b250ZXh0LCBjb250ZXh0LklOVkFMSURfVkFMVUUsICJjb250ZXh0LmNvbXBpbGVTaGFkZXIoKSIp
Owogc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHQsIGNvbnRleHQuSU5WQUxJRF9WQUxVRSwg
ImNvbnRleHQubGlua1Byb2dyYW0oKSIpOwogc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHQs
IGNvbnRleHQuSU5WQUxJRF9WQUxVRSwgImNvbnRleHQuYXR0YWNoU2hhZGVyKCkiKTsKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL251bGwtdW5pZm9ybS1sb2NhdGlvbi5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL251bGwtdW5pZm9y
bS1sb2NhdGlvbi5odG1sCShyZXZpc2lvbiA2MzQzOCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL3dlYmdsL251bGwtdW5pZm9ybS1sb2NhdGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0y
MCwzNCArMjAsMzQgQEAgdmFyIGZsb2F0QXJyYXkgPSBuZXcgV2ViR0xGbG9hdEFycmF5KFsxLAog
dmFyIGludEFycmF5ID0gbmV3IFdlYkdMSW50QXJyYXkoWzEsIDIsIDMsIDRdKTsKIAogZnVuY3Rp
b24gY2FsbFVuaWZvcm1GdW5jdGlvbihuYW1lKSB7Ci0gICAgdmFyIGlzQXJyYXlWYXJpYW50ID0g
KG5hbWUuY2hhckF0KG5hbWUubGVuZ3RoIC0gMSkgPT0gJ3YnKTsKLSAgICB2YXIgaXNNYXRyaXgg
PSAobmFtZS5pbmRleE9mKCJNYXRyaXgiKSAhPSAtMSk7Ci0gICAgdmFyIGlzRmxvYXQgPQotICAg
ICAgICAobmFtZS5jaGFyQXQobmFtZS5sZW5ndGggLSAxKSA9PSAnZicgfHwKLSAgICAgICAgIG5h
bWUuY2hhckF0KG5hbWUubGVuZ3RoIC0gMikgPT0gJ2YnKTsKLSAgICB2YXIgc2l6ZUluZGV4ID0g
KGlzQXJyYXlWYXJpYW50ID8gbmFtZS5sZW5ndGggLSAzIDogbmFtZS5sZW5ndGggLSAyKTsKLSAg
ICB2YXIgc2l6ZSA9IHBhcnNlSW50KG5hbWUuc3Vic3RyaW5nKHNpemVJbmRleCwgc2l6ZUluZGV4
ICsgMSkpOwotICAgIC8vIEluaXRpYWxpemUgYXJndW1lbnQgbGlzdCB3aXRoIG51bGwgdW5pZm9y
bSBsb2NhdGlvbgotICAgIHZhciBhcmdzID0gWyBudWxsIF07Ci0gICAgaWYgKGlzQXJyYXlWYXJp
YW50KSB7Ci0gICAgICAgIC8vIENhbGwgdmFyaWFudCB3aGljaCB0YWtlcyB2YWx1ZXMgYXMgYXJy
YXkKLSAgICAgICAgaWYgKGlzTWF0cml4KSB7Ci0gICAgICAgICAgICBzaXplID0gc2l6ZSAqIHNp
emU7Ci0gICAgICAgICAgICBhcmdzLnB1c2goZmFsc2UpOwotICAgICAgICB9Ci0gICAgICAgIHZh
ciBhcnJheSA9IChpc0Zsb2F0ID8gbmV3IFdlYkdMRmxvYXRBcnJheShzaXplKSA6IG5ldyBXZWJH
TEludEFycmF5KHNpemUpKTsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyBpKysp
IHsKLSAgICAgICAgICAgIGFycmF5W2ldID0gaTsKLSAgICAgICAgfQotICAgICAgICBhcmdzLnB1
c2goYXJyYXkpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIENhbGwgdmFyaWFudCB3aGljaCB0
YWtlcyB2YWx1ZXMgYXMgcGFyYW1ldGVycwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNp
emU7IGkrKykgewotICAgICAgICAgICAgYXJncy5wdXNoKGkpOwotICAgICAgICB9CisgIHZhciBp
c0FycmF5VmFyaWFudCA9IChuYW1lLmNoYXJBdChuYW1lLmxlbmd0aCAtIDEpID09ICd2Jyk7Cisg
IHZhciBpc01hdHJpeCA9IChuYW1lLmluZGV4T2YoIk1hdHJpeCIpICE9IC0xKTsKKyAgdmFyIGlz
RmxvYXQgPQorICAgICAgKG5hbWUuY2hhckF0KG5hbWUubGVuZ3RoIC0gMSkgPT0gJ2YnIHx8Cisg
ICAgICAgbmFtZS5jaGFyQXQobmFtZS5sZW5ndGggLSAyKSA9PSAnZicpOworICB2YXIgc2l6ZUlu
ZGV4ID0gKGlzQXJyYXlWYXJpYW50ID8gbmFtZS5sZW5ndGggLSAzIDogbmFtZS5sZW5ndGggLSAy
KTsKKyAgdmFyIHNpemUgPSBwYXJzZUludChuYW1lLnN1YnN0cmluZyhzaXplSW5kZXgsIHNpemVJ
bmRleCArIDEpKTsKKyAgLy8gSW5pdGlhbGl6ZSBhcmd1bWVudCBsaXN0IHdpdGggbnVsbCB1bmlm
b3JtIGxvY2F0aW9uCisgIHZhciBhcmdzID0gWyBudWxsIF07CisgIGlmIChpc0FycmF5VmFyaWFu
dCkgeworICAgIC8vIENhbGwgdmFyaWFudCB3aGljaCB0YWtlcyB2YWx1ZXMgYXMgYXJyYXkKKyAg
ICBpZiAoaXNNYXRyaXgpIHsKKyAgICAgIHNpemUgPSBzaXplICogc2l6ZTsKKyAgICAgIGFyZ3Mu
cHVzaChmYWxzZSk7CiAgICAgfQotICAgIHZhciBmdW5jID0gZ2xbbmFtZV07Ci0gICAgcmV0dXJu
IGZ1bmMuYXBwbHkoZ2wsIGFyZ3MpOworICAgIHZhciBhcnJheSA9IChpc0Zsb2F0ID8gbmV3IFdl
YkdMRmxvYXRBcnJheShzaXplKSA6IG5ldyBXZWJHTEludEFycmF5KHNpemUpKTsKKyAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IHNpemU7IGkrKykgeworICAgICAgYXJyYXlbaV0gPSBpOworICAgIH0K
KyAgICBhcmdzLnB1c2goYXJyYXkpOworICB9IGVsc2UgeworICAgIC8vIENhbGwgdmFyaWFudCB3
aGljaCB0YWtlcyB2YWx1ZXMgYXMgcGFyYW1ldGVycworICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
c2l6ZTsgaSsrKSB7CisgICAgICBhcmdzLnB1c2goaSk7CisgICAgfQorICB9CisgIHZhciBmdW5j
ID0gZ2xbbmFtZV07CisgIHJldHVybiBmdW5jLmFwcGx5KGdsLCBhcmdzKTsKIH0KIAogdmFyIGZ1
bmNzID0gWyAidW5pZm9ybTFmIiwgInVuaWZvcm0xZnYiLCAidW5pZm9ybTFpIiwgInVuaWZvcm0x
aXYiLApAQCAtNTYsOSArNTYsOSBAQCB2YXIgZnVuY3MgPSBbICJ1bmlmb3JtMWYiLCAidW5pZm9y
bTFmdiIsCiAgICAgICAgICAgICAgICJ1bmlmb3JtNGYiLCAidW5pZm9ybTRmdiIsICJ1bmlmb3Jt
NGkiLCAidW5pZm9ybTRpdiIsCiAgICAgICAgICAgICAgICJ1bmlmb3JtTWF0cml4MmZ2IiwgInVu
aWZvcm1NYXRyaXgzZnYiLCAidW5pZm9ybU1hdHJpeDRmdiIgXTsKIGZvciAodmFyIGkgPSAwOyBp
IDwgZnVuY3MubGVuZ3RoOyBpKyspIHsKLSAgICBjYWxsU3RyaW5nID0gImNhbGxVbmlmb3JtRnVu
Y3Rpb24oJyIgKyBmdW5jc1tpXSArICInKSI7Ci0gICAgc2hvdWxkQmVVbmRlZmluZWQoY2FsbFN0
cmluZyk7Ci0gICAgc2hvdWxkQmUoImdsLmdldEVycm9yKCkiLCAiZ2wuTk9fRVJST1IiKTsKKyAg
Y2FsbFN0cmluZyA9ICJjYWxsVW5pZm9ybUZ1bmN0aW9uKCciICsgZnVuY3NbaV0gKyAiJykiOwor
ICBzaG91bGRCZVVuZGVmaW5lZChjYWxsU3RyaW5nKTsKKyAgc2hvdWxkQmUoImdsLmdldEVycm9y
KCkiLCAiZ2wuTk9fRVJST1IiKTsKIH0KIAogc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3BvaW50LXNpemUtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3BvaW50LXNpemUt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA2MzQzOCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFz
L3dlYmdsL3BvaW50LXNpemUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yLDggKzIs
MTAgQEAgVmVyaWZ5IEdMX1ZFUlRFWF9QUk9HUkFNX1BPSU5UX1NJWkUgaXMgZQogCiBPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCiAKLVJlZ3Jlc3Npb24gdGVzdCBmb3IgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3MTc4IDogTXVzdCBlbmFibGUgR0xfVkVSVEVYX1BS
T0dSQU1fUE9JTlRfU0laRSBkdXJpbmcgaW5pdGlhbGl6YXRpb24KIERyYXcgYSBwb2ludCBvZiBz
aXplIDEgYW5kIHZlcmlmeSBpdCBkb2VzIG5vdCB0b3VjaCBhbnkgb3RoZXIgcGl4ZWxzLgogRHJh
dyBhIHBvaW50IG9mIHNpemUgMiBhbmQgdmVyaWZ5IGl0IGZpbGxzIHRoZSBhcHByb3ByaWF0ZSBy
ZWdpb24uCiBQQVNTIAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3BvaW50LXNpemUu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9wb2ludC1z
aXplLmh0bWwJKHJldmlzaW9uIDYzNDM4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2Vi
Z2wvcG9pbnQtc2l6ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsMTAgKzExMywxMyBAQCBm
dW5jdGlvbiBydW5UZXN0KCkKIDxzY3JpcHQ+CiBkZXNjcmlwdGlvbignVmVyaWZ5IEdMX1ZFUlRF
WF9QUk9HUkFNX1BPSU5UX1NJWkUgaXMgZW5hYmxlZCBpbiBXZWJHTCcpOwogCi1kZWJ1ZygnUmVn
cmVzc2lvbiB0ZXN0IGZvciA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MzcxNzgiPmh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
NzE3ODwvYT4gOiA8Y29kZT5NdXN0IGVuYWJsZSBHTF9WRVJURVhfUFJPR1JBTV9QT0lOVF9TSVpF
IGR1cmluZyBpbml0aWFsaXphdGlvbjwvY29kZT4nKTsKLQogaWYgKHJ1blRlc3QoKSkKICAgICB0
ZXN0UGFzc2VkKCIiKTsKKworc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKIDwvc2NyaXB0Pgor
Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+CisKIDwvYm9keT4KIDwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dl
YmdsL3JlbmRlcmJ1ZmZlci1pbml0aWFsaXphdGlvbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVuZGVyYnVmZmVyLWluaXRpYWxpemF0
aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNjM0MzgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy93ZWJnbC9yZW5kZXJidWZmZXItaW5pdGlhbGl6YXRpb24tZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0yLDcgKzIsNiBAQCBWZXJpZnkgcmVuZGVyYnVmZmVycyBhcmUgaW5pdGlh
bGl6ZWQgdG8gCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAotUmVncmVzc2lvbiB0ZXN0
IGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzYyNDggOiBJbXBs
ZW1lbnQgbGF6eSBjbGVhcmluZyBvZiByZW5kZXJidWZmZXJzCiBUZXN0IHdoZXRoZXIgdGhlIFdl
YkdMIGludGVybmFsIGJ1ZmZlcnMgaGF2ZSBiZWVuIGluaXRpYWxpemVkIHRvIDAuCiBQQVNTIEJ1
ZmZlcnMgaGF2ZSBiZWVuIGluaXRpYWxpemVkIHRvIDAuCiBUZXN0IHdoZXRoZXIgdXNlciBjcmVh
dGVkIGJ1ZmZlcnMgaGF2ZSBiZWVuIGluaXRpYWxpemVkIHRvIDAuCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2NhbnZhcy93ZWJnbC9yZW5kZXJidWZmZXItaW5pdGlhbGl6YXRpb24uaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9yZW5kZXJidWZmZXItaW5p
dGlhbGl6YXRpb24uaHRtbAkocmV2aXNpb24gNjM0MzgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy93ZWJnbC9yZW5kZXJidWZmZXItaW5pdGlhbGl6YXRpb24uaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtNzAsOCArNzAsNiBAQCB2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gZmFsc2U7CiAKIGRl
c2NyaXB0aW9uKCdWZXJpZnkgcmVuZGVyYnVmZmVycyBhcmUgaW5pdGlhbGl6ZWQgdG8gMCBiZWZv
cmUgYmVpbmcgcmVhZCBpbiBXZWJHTCcpOwogCi1kZWJ1ZygnUmVncmVzc2lvbiB0ZXN0IGZvciA8
YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzYyNDgiPmh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjI0ODwvYT4gOiA8Y29kZT5J
bXBsZW1lbnQgbGF6eSBjbGVhcmluZyBvZiByZW5kZXJidWZmZXJzPC9jb2RlPicpOwotCiBydW5U
ZXN0KCk7CiAKIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy93ZWJnbC90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWFycmF5LWJ1
ZmZlci12aWV3LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy93ZWJnbC90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWFycmF5LWJ1ZmZlci12
aWV3LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNjM0MzgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy93ZWJnbC90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWFycmF5LWJ1ZmZlci12
aWV3LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMyw3ICszLDYgQEAgVmVyaWZpZXMg
dGV4SW1hZ2UyRCBhbmQgdGV4U3ViSW1hZ2UyRCBjbwogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCiAKLVJlZ3Jlc3Npb24gdGVzdCBmb3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQwMzk4IDogU3VwcG9ydCBVTlBBQ0tfRkxJUF9ZX1dFQkdMIGFuZCBVTlBBQ0tf
UFJFTVVMVElQTFlfQUxQSEFfV0VCR0wgZm9yIHRleEltYWdlMkQgdGFraW5nIEFycmF5QnVmZmVy
VmlldwogVGVzdGluZyB0ZXhJbWFnZTJEIHdpdGggdHlwZT1VTlNJR05FRF9CWVRFLCB1bnBhY2tB
bGlnbm1lbnQ9MSwgZmxpcFk9dHJ1ZSwgcHJlbXVsdGlwbHlBbHBoYT1mYWxzZQogQ2hlY2tpbmcg
Ym90dG9tIHBpeGVsCiBQQVNTIHBpeGVsIGlzIGNvcnJlY3RDb2xvcgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvd2ViZ2wvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1hcnJh
eS1idWZmZXItdmlldy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFz
L3dlYmdsL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtYXJyYXktYnVmZmVyLXZpZXcu
aHRtbAkocmV2aXNpb24gNjM0MzgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC90
ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWFycmF5LWJ1ZmZlci12aWV3Lmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTM0LDE2ICszNCwxMiBAQCB2YXIgaW1hZ2VEYXRhID0gbnVsbDsKIAog
ZnVuY3Rpb24gaW5pdCgpCiB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
ewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktp
dFdlYkdMRW5hYmxlZCIsICIxIik7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwor
ICAgIGlmICh3aW5kb3cuaW5pdE5vbktocm9ub3NGcmFtZXdvcmspIHsKKyAgICAgICAgd2luZG93
LmluaXROb25LaHJvbm9zRnJhbWV3b3JrKHRydWUpOwogICAgIH0KIAogICAgIGRlc2NyaXB0aW9u
KCdWZXJpZmllcyB0ZXhJbWFnZTJEIGFuZCB0ZXhTdWJJbWFnZTJEIGNvZGUgcGF0aHMgdGFraW5n
IEFycmF5QnVmZmVyVmlldycpOwogCi0gICAgZGVidWcoJ1JlZ3Jlc3Npb24gdGVzdCBmb3IgPGEg
aHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMzk4Ij5odHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAzOTg8L2E+IDogPGNvZGU+U3Vw
cG9ydCBVTlBBQ0tfRkxJUF9ZX1dFQkdMIGFuZCBVTlBBQ0tfUFJFTVVMVElQTFlfQUxQSEFfV0VC
R0wgZm9yIHRleEltYWdlMkQgdGFraW5nIEFycmF5QnVmZmVyVmlldzwvY29kZT4nKTsKLQogICAg
IHZhciBjYW52YXMyZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXhjYW52YXMiKTsKICAg
ICB2YXIgY29udGV4dDJkID0gY2FudmFzMmQuZ2V0Q29udGV4dCgiMmQiKTsKICAgICBpbWFnZURh
dGEgPSBjb250ZXh0MmQuY3JlYXRlSW1hZ2VEYXRhKDEsIDIpOwpAQCAtMjY0LDggKzI2MCw4IEBA
IGZ1bmN0aW9uIHJ1blRlc3QoKQogfQogCiBmdW5jdGlvbiBmaW5pc2goKSB7Ci0gICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy5ub25LaHJvbm9zRnJhbWV3b3JrTm90aWZ5
RG9uZSkgeworICAgICAgICB3aW5kb3cubm9uS2hyb25vc0ZyYW1ld29ya05vdGlmeURvbmUoKTsK
ICAgICB9CiB9CiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmds
L3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtZGF0YS1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvdGV4LWltYWdlLWFu
ZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1kYXRhLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNjM0
MzgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC90ZXgtaW1hZ2UtYW5kLXN1Yi1p
bWFnZS0yZC13aXRoLWltYWdlLWRhdGEtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0z
LDcgKzMsNiBAQCBWZXJpZnkgdGV4SW1hZ2UyRCBhbmQgdGV4U3ViSW1hZ2UyRCBjb2RlCiAKIE9u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAotUmVncmVzc2lvbiB0ZXN0IGZvciBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQ0NTkgOiBSZWZhY3RvciB0ZXhJbWFnZTJE
IGFuZCB0ZXhTdWJJbWFnZTJEIHRha2luZyBJbWFnZURhdGEgdG8gdXNlIGNvbW1vbiBjb2RlCiBU
ZXN0aW5nIHRleEltYWdlMkQgd2l0aCBmbGlwWT10cnVlIGFuZCBwcmVtdWx0aXBseUFscGhhPWZh
bHNlCiBDaGVja2luZyBib3R0b20gcGl4ZWwKIFBBU1MgcGl4ZWwgaXMgY29ycmVjdENvbG9yCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFn
ZS0yZC13aXRoLWltYWdlLWRhdGEuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy93ZWJnbC90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLWRhdGEu
aHRtbAkocmV2aXNpb24gNjM0MzgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC90
ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLWRhdGEuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMzQsMTYgKzM0LDEyIEBAIHZhciBpbWFnZURhdGEgPSBudWxsOwogCiBmdW5jdGlv
biBpbml0KCkKIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0V2ViR0xF
bmFibGVkIiwgIjEiKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgaWYg
KHdpbmRvdy5pbml0Tm9uS2hyb25vc0ZyYW1ld29yaykgeworICAgICAgICB3aW5kb3cuaW5pdE5v
bktocm9ub3NGcmFtZXdvcmsodHJ1ZSk7CiAgICAgfQogCiAgICAgZGVzY3JpcHRpb24oJ1Zlcmlm
eSB0ZXhJbWFnZTJEIGFuZCB0ZXhTdWJJbWFnZTJEIGNvZGUgcGF0aHMgdGFraW5nIEltYWdlRGF0
YScpOwogCi0gICAgZGVidWcoJ1JlZ3Jlc3Npb24gdGVzdCBmb3IgPGEgaHJlZj0iaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM0NDU5Ij5odHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQ0NTk8L2E+IDogPGNvZGU+UmVmYWN0b3IgdGV4SW1hZ2Uy
RCBhbmQgdGV4U3ViSW1hZ2UyRCB0YWtpbmcgSW1hZ2VEYXRhIHRvIHVzZSBjb21tb24gY29kZTwv
Y29kZT4nKTsKLQogICAgIHZhciBjYW52YXMyZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0
ZXhjYW52YXMiKTsKICAgICB2YXIgY29udGV4dDJkID0gY2FudmFzMmQuZ2V0Q29udGV4dCgiMmQi
KTsKICAgICBpbWFnZURhdGEgPSBjb250ZXh0MmQuY3JlYXRlSW1hZ2VEYXRhKDEsIDIpOwpAQCAt
MTg3LDggKzE4Myw4IEBAIGZ1bmN0aW9uIHJ1blRlc3QoKQogfQogCiBmdW5jdGlvbiBmaW5pc2go
KSB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy5ub25LaHJvbm9z
RnJhbWV3b3JrTm90aWZ5RG9uZSkgeworICAgICAgICB3aW5kb3cubm9uS2hyb25vc0ZyYW1ld29y
a05vdGlmeURvbmUoKTsKICAgICB9CiB9CiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvY2FudmFzL3dlYmdsL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3Rl
eC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biA2MzQzOCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3RleC1pbWFnZS1hbmQt
c3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0y
LDcgKzIsNiBAQCBWZXJpZnkgdGV4SW1hZ2UyRCBhbmQgdGV4U3ViSW1hZ2UyRCBjb2RlCiAKIE9u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAotUmVncmVzc2lvbiB0ZXN0IGZvciBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQ0NTggOiBSZWZhY3RvciB0ZXhJbWFnZTJE
IGFuZCB0ZXhTdWJJbWFnZTJEIHRha2luZyBJbWFnZSB0byB1c2UgY29tbW9uIGNvZGUKIFRlc3Rp
bmcgdGV4SW1hZ2UyRCB3aXRoIGZsaXBZPXRydWUKIENoZWNraW5nIGxvd2VyIGxlZnQgY29ybmVy
CiBQQVNTIHBpeGVsIGlzIGNvcnJlY3RDb2xvcgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvd2ViZ2wvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3RleC1pbWFnZS1hbmQtc3Vi
LWltYWdlLTJkLXdpdGgtaW1hZ2UuaHRtbAkocmV2aXNpb24gNjM0MzgpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2NhbnZhcy93ZWJnbC90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdl
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMzLDE2ICszMywxMiBAQCB2YXIgc3VjY2Vzc2Z1bGx5
UGFyc2VkID0gZmFsc2U7CiAKIGZ1bmN0aW9uIGluaXQoKQogewotICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJp
ZGVQcmVmZXJlbmNlKCJXZWJLaXRXZWJHTEVuYWJsZWQiLCAiMSIpOwotICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LndhaXRVbnRpbERvbmUoKTsKKyAgICBpZiAod2luZG93LmluaXROb25LaHJvbm9zRnJhbWV3b3Jr
KSB7CisgICAgICAgIHdpbmRvdy5pbml0Tm9uS2hyb25vc0ZyYW1ld29yayh0cnVlKTsKICAgICB9
CiAKICAgICBkZXNjcmlwdGlvbignVmVyaWZ5IHRleEltYWdlMkQgYW5kIHRleFN1YkltYWdlMkQg
Y29kZSBwYXRocyB0YWtpbmcgSW1hZ2VzJyk7CiAKLSAgICBkZWJ1ZygnUmVncmVzc2lvbiB0ZXN0
IGZvciA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQ0
NTgiPmh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNDQ1ODwvYT4gOiA8
Y29kZT5SZWZhY3RvciB0ZXhJbWFnZTJEIGFuZCB0ZXhTdWJJbWFnZTJEIHRha2luZyBJbWFnZSB0
byB1c2UgY29tbW9uIGNvZGU8L2NvZGU+Jyk7Ci0KICAgICBnbCA9IGluaXRXZWJHTCgiZXhhbXBs
ZSIsICJ2c2hhZGVyIiwgImZzaGFkZXIiLCBbICJnX1Bvc2l0aW9uIiwgImdfVGV4Q29vcmQwIiBd
LCBbIDAsIDAsIDAsIDEgXSwgMSk7CiAKICAgICB0ZXh0dXJlTG9jID0gZ2wuZ2V0VW5pZm9ybUxv
Y2F0aW9uKGdsLnByb2dyYW0sICJ0ZXgiKTsKQEAgLTE4Niw4ICsxODIsOCBAQCBmdW5jdGlvbiBy
dW5UZXN0KGltYWdlKQogfQogCiBmdW5jdGlvbiBmaW5pc2goKSB7Ci0gICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3Rp
ZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy5ub25LaHJvbm9zRnJhbWV3b3JrTm90aWZ5RG9uZSkg
eworICAgICAgICB3aW5kb3cubm9uS2hyb25vc0ZyYW1ld29ya05vdGlmeURvbmUoKTsKICAgICB9
CiB9CiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3RleC1p
bWFnZS1hbmQtdW5pZm9ybS1iaW5kaW5nLWJ1Z3MtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3RleC1pbWFnZS1hbmQtdW5pZm9ybS1iaW5k
aW5nLWJ1Z3MtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA2MzQzOCkKKysrIExheW91dFRlc3RzL2Zh
c3QvY2FudmFzL3dlYmdsL3RleC1pbWFnZS1hbmQtdW5pZm9ybS1iaW5kaW5nLWJ1Z3MtZXhwZWN0
ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwICsxLDEwIEBACi1SZWdyZXNzaW9uIHRlc3Qg
Zm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjM2NCA6IFtDaHJv
bWl1bV0gU3BvcmVWaWV3ZXIgZGVtbyBkb2Vzbid0IHdvcmsgaW4gQ2hyb21pdW0KK1Rlc3RzIHBh
c3NpbmcgYSB2ZWM0IHRvIGEgdW5pZm9ybSBhbmQgYSBjYW52YXMgdG8gdGV4SW1hZ2UyRAogCiBP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIFBBU1MgZ2wudXNlUHJvZ3JhbShmbG9hdFByb2dy
YW0pIGlzIHVuZGVmaW5lZC4KIFBBU1MgZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJPUgotUEFT
UyBnbC51bmlmb3JtNGZ2KGZ2YWw0TG9jLCBuZXcgV2ViR0xGbG9hdEFycmF5KFswLjEsIDAuMiwg
MC40LCAxLjBdKSk7IGlzIHVuZGVmaW5lZC4KK1BBU1MgZ2wudW5pZm9ybTRmdihmdmFsNExvYywg
bmV3IEZsb2F0MzJBcnJheShbMC4xLCAwLjIsIDAuNCwgMS4wXSkpOyBpcyB1bmRlZmluZWQuCiBQ
QVNTIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleHR1cmUpIGlzIHVuZGVmaW5lZC4K
IFBBU1MgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0JBLCBnbC5SR0JBLCBn
bC5VTlNJR05FRF9CWVRFLCB0bXBjYW52YXMpIGlzIHVuZGVmaW5lZC4KIFBBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3Rl
eC1pbWFnZS1hbmQtdW5pZm9ybS1iaW5kaW5nLWJ1Z3MuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC90ZXgtaW1hZ2UtYW5kLXVuaWZvcm0tYmluZGluZy1i
dWdzLmh0bWwJKHJldmlzaW9uIDYzNDM4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2Vi
Z2wvdGV4LWltYWdlLWFuZC11bmlmb3JtLWJpbmRpbmctYnVncy5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0xMCwxNCArMTAsMTQgQEAKIAogPHNjcmlwdD4KIAotZGVzY3JpcHRpb24oJ1JlZ3Jlc3Np
b24gdGVzdCBmb3IgPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTMyMzY0Ij5odHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzIzNjQ8
L2E+IDogPGNvZGU+W0Nocm9taXVtXSBTcG9yZVZpZXdlciBkZW1vIGRvZXNuXCd0IHdvcmsgaW4g
Q2hyb21pdW08L2NvZGU+Jyk7CitkZXNjcmlwdGlvbignVGVzdHMgcGFzc2luZyBhIHZlYzQgdG8g
YSB1bmlmb3JtIGFuZCBhIGNhbnZhcyB0byB0ZXhJbWFnZTJEJyk7CiAKIHZhciBnbCA9IGNyZWF0
ZTNEQ29udGV4dCgpOwogdmFyIGZsb2F0UHJvZ3JhbSA9IGxvYWRQcm9ncmFtKGdsLCAicmVzb3Vy
Y2VzL2Zsb2F0VW5pZm9ybVNoYWRlci52ZXJ0IiwgInJlc291cmNlcy9ub29wVW5pZm9ybVNoYWRl
ci5mcmFnIik7CiBzaG91bGRCZVVuZGVmaW5lZCgiZ2wudXNlUHJvZ3JhbShmbG9hdFByb2dyYW0p
Iik7CiB2YXIgZnZhbDRMb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24oZmxvYXRQcm9ncmFtLCAi
ZnZhbDQiKTsKIHNob3VsZEJlKCJnbC5nZXRFcnJvcigpIiwgImdsLk5PX0VSUk9SIik7Ci1zaG91
bGRCZVVuZGVmaW5lZCgiZ2wudW5pZm9ybTRmdihmdmFsNExvYywgbmV3IFdlYkdMRmxvYXRBcnJh
eShbMC4xLCAwLjIsIDAuNCwgMS4wXSkpOyIpOworc2hvdWxkQmVVbmRlZmluZWQoImdsLnVuaWZv
cm00ZnYoZnZhbDRMb2MsIG5ldyBGbG9hdDMyQXJyYXkoWzAuMSwgMC4yLCAwLjQsIDEuMF0pKTsi
KTsKIAogdmFyIHRtcGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOwog
dG1wY2FudmFzLndpZHRoID0gMjsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmds
L3RleC1pbWFnZS13aXRoLWZvcm1hdC1hbmQtdHlwZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvdGV4LWltYWdlLXdpdGgtZm9ybWF0LWFu
ZC10eXBlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNjM0MzgpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy93ZWJnbC90ZXgtaW1hZ2Utd2l0aC1mb3JtYXQtYW5kLXR5cGUtZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0yLDkgKzIsNiBAQCBWZXJpZnkgdGV4SW1hZ2UyRCBhbmQgdGV4
U3ViSW1hZ2UyRCBjb2RlCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAotUmVncmVzc2lv
biB0ZXN0IGZvcjoKLWh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDMx
OSA6IEltcGxlbWVudCBmb3JtYXQgY29udmVyc2lvbnMgaW4gdGV4SW1hZ2UyRCBhbmQgdGV4U3Vi
SW1hZ2UyRCB0YWtpbmcgSFRNTCBkYXRhCi1odHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDAzOTggOiBTdXBwb3J0IFVOUEFDS19GTElQX1lfV0VCR0wgYW5kIFVOUEFDS19Q
UkVNVUxUSVBMWV9BTFBIQV9XRUJHTCBmb3IgdGV4SW1hZ2UyRCB0YWtpbmcgQXJyYXlCdWZmZXJW
aWV3CiBUZXN0aW5nIHRleEltYWdlMkQgd2l0aCBJbWFnZSBhdCAyNTZ4MQogUEFTUyBSR0JBL1VO
U0lHTkVEX0JZVEUgc2hvdWxkIG1haW50YWluIGZ1bGwgcHJlY2lzaW9uIG9mIGRhdGEKIFRlc3Rp
bmcgdGV4SW1hZ2UyRCB3aXRoIEltYWdlIGF0IDI1NngxCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy93ZWJnbC90ZXgtaW1hZ2Utd2l0aC1mb3JtYXQtYW5kLXR5cGUuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC90ZXgtaW1hZ2Utd2l0aC1mb3Jt
YXQtYW5kLXR5cGUuaHRtbAkocmV2aXNpb24gNjM0MzgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy93ZWJnbC90ZXgtaW1hZ2Utd2l0aC1mb3JtYXQtYW5kLXR5cGUuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtNTEsMTggKzUxLDEyIEBAIHZhciBEYXRhTW9kZSA9IHsKIAogZnVuY3Rpb24gaW5p
dCgpCiB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdFdlYkdMRW5hYmxl
ZCIsICIxIik7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIGlmICh3aW5k
b3cuaW5pdE5vbktocm9ub3NGcmFtZXdvcmspIHsKKyAgICAgICAgd2luZG93LmluaXROb25LaHJv
bm9zRnJhbWV3b3JrKHRydWUpOwogICAgIH0KIAogICAgIGRlc2NyaXB0aW9uKCdWZXJpZnkgdGV4
SW1hZ2UyRCBhbmQgdGV4U3ViSW1hZ2UyRCBjb2RlIHBhdGhzIHRha2luZyBib3RoIEhUTUwgYW5k
IHVzZXItc3BlY2lmaWVkIGRhdGEgd2l0aCBhbGwgZm9ybWF0L3R5cGUgY29tYmluYXRpb25zJyk7
CiAKLSAgICBkZWJ1ZygnUmVncmVzc2lvbiB0ZXN0IGZvcjonKTsKLSAgICBkZWJ1ZygnPGEgaHJl
Zj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMzE5Ij5odHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAzMTk8L2E+IDogPGNvZGU+SW1wbGVt
ZW50IGZvcm1hdCBjb252ZXJzaW9ucyBpbiB0ZXhJbWFnZTJEIGFuZCB0ZXhTdWJJbWFnZTJEIHRh
a2luZyBIVE1MIGRhdGE8L2NvZGU+Jyk7Ci0gICAgZGVidWcoJzxhIGhyZWY9Imh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDM5OCI+aHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQwMzk4PC9hPiA6IDxjb2RlPlN1cHBvcnQgVU5QQUNLX0ZMSVBf
WV9XRUJHTCBhbmQgVU5QQUNLX1BSRU1VTFRJUExZX0FMUEhBX1dFQkdMIGZvciB0ZXhJbWFnZTJE
IHRha2luZyBBcnJheUJ1ZmZlclZpZXc8L2NvZGU+Jyk7Ci0KICAgICBnbCA9IGluaXRXZWJHTCgi
ZXhhbXBsZSIsICJ2c2hhZGVyIiwgImZzaGFkZXIiLCBbICJnX1Bvc2l0aW9uIiwgImdfVGV4Q29v
cmQwIiBdLCBbIDAsIDAsIDAsIDEgXSwgMSk7CiAgICAgZ2wuZGlzYWJsZShnbC5CTEVORCk7CiAK
QEAgLTQ4MCw4ICs0NzQsOCBAQCBmdW5jdGlvbiBydW5PbmVUZXN0KHRlc3RDYXNlKQogfQogCiBm
dW5jdGlvbiBmaW5pc2goKSB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
ewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgaWYgKHdp
bmRvdy5ub25LaHJvbm9zRnJhbWV3b3JrTm90aWZ5RG9uZSkgeworICAgICAgICB3aW5kb3cubm9u
S2hyb25vc0ZyYW1ld29ya05vdGlmeURvbmUoKTsKICAgICB9CiB9CiAKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvY2FudmFzL3dlYmdsL3RleC1zdWItaW1hZ2UtMmQtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3RleC1zdWItaW1hZ2UtMmQt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA2MzQzOCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFz
L3dlYmdsL3RleC1zdWItaW1hZ2UtMmQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0y
LDYgKzIsOCBAQCBUZXN0cyB0ZXhTdWJJbWFnZTJEIHVwbG9hZCBwYXRoIGZyb20gV2ViCiAKIE9u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAotUmVncmVzc2lvbiB0ZXN0IGZvciBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzM5MzIgOiBbQ2hyb21pdW1dIEltcGxlbWVu
dCB0ZXhTdWJJbWFnZTJEIHRha2luZyBXZWJHTEFycmF5CiBQQVNTIAorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCiAKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvY2FudmFzL3dlYmdsL3RleC1zdWItaW1hZ2UtMmQuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC90ZXgtc3ViLWltYWdlLTJkLmh0bWwJKHJldmlzaW9u
IDYzNDM4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvdGV4LXN1Yi1pbWFnZS0y
ZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw4ICszNSw2IEBAIHZvaWQgbWFpbigpCiA8c2Ny
aXB0PgogZGVzY3JpcHRpb24oJ1Rlc3RzIHRleFN1YkltYWdlMkQgdXBsb2FkIHBhdGggZnJvbSBX
ZWJHTFVuc2lnbmVkQnl0ZUFycmF5Jyk7CiAKLWRlYnVnKCdSZWdyZXNzaW9uIHRlc3QgZm9yIDxh
IGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzkzMiI+aHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzOTMyPC9hPiA6IDxjb2RlPltD
aHJvbWl1bV0gSW1wbGVtZW50IHRleFN1YkltYWdlMkQgdGFraW5nIFdlYkdMQXJyYXk8L2NvZGU+
Jyk7Ci0KIHZhciBnbCA9IGluaXRXZWJHTCgiZXhhbXBsZSIsICJ2c2hhZGVyIiwgImZzaGFkZXIi
LCBbICJnX1Bvc2l0aW9uIiwgImdfVGV4Q29vcmQwIiBdLCBbIDAsIDAsIDAsIDEgXSwgMSk7CiB2
YXIgdGV4dHVyZVdpZHRoID0gMjU2OwogdmFyIHRleHR1cmVIZWlnaHQgPSAxOwpAQCAtMTE4LDYg
KzExNiw5IEBAIGZvciAodmFyIGkgPSAwOyBpIDwgdGV4dHVyZVdpZHRoOyBpKyspIHsKIAogaWYg
KHBhc3NlZCkKICAgICB0ZXN0UGFzc2VkKCIiKTsKKworc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1
ZTsKIDwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvd2ViZ2wvdGV4dHVyZS1hY3RpdmUtYmluZC5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3RleHR1cmUtYWN0aXZlLWJpbmQuaHRtbAkocmV2
aXNpb24gNjM0MzgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC90ZXh0dXJlLWFj
dGl2ZS1iaW5kLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTEgKzEsMTEgQEAKIDwhRE9DVFlQ
RSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iCiAg
ICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgogPGh0bWw+Ci08aGVhZD4K
LTx0aXRsZT5XZWJHTCBBY3RpdmVUZXh0dXJlIEJpbmRUZXh0dXJlIGNvbmZvcm1hbmNlIHRlc3Qu
PC90aXRsZT4KLTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIi8+Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2ViZ2wtdGVz
dC5qcyI+IDwvc2NyaXB0PgorICA8aGVhZD4KKyAgICA8dGl0bGU+V2ViR0wgQWN0aXZlVGV4dHVy
ZSBCaW5kVGV4dHVyZSBjb25mb3JtYW5jZSB0ZXN0LjwvdGl0bGU+CisgICAgPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4K
KyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYmdsLXRlc3QuanMiPiA8L3Njcmlw
dD4KIDwvaGVhZD4KIDxib2R5PgogPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjIiIGhlaWdo
dD0iMiIgc3R5bGU9IndpZHRoOiA0MHB4OyBoZWlnaHQ6IDQwcHg7Ij48L2NhbnZhcz4KQEAgLTM2
LDkgKzM2LDggQEAgdm9pZCBtYWluKCkKIDxzY3JpcHQ+CiBmdW5jdGlvbiBpbml0KCkKIHsKLSAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9s
bGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0V2ViR0xFbmFibGVkIiwgIjEiKTsKLSAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgIGlmICh3aW5kb3cuaW5pdE5vbkto
cm9ub3NGcmFtZXdvcmspIHsKKyAgICB3aW5kb3cuaW5pdE5vbktocm9ub3NGcmFtZXdvcmsoZmFs
c2UpOwogICB9CiAKICAgZGVidWcoIlRlc3RzIHRoYXQgZ2xBY3RpdmVUZXh0dXJlIGFuZCBnbEJp
bmRUZXh0dXJlIHdvcmsgYXMgZXhwZWN0ZWQiKTsKQEAgLTEzMSw4ICsxMzAsMTQgQEAgZnVuY3Rp
b24gaW5pdCgpCiAgICAgZ2wucmVhZFBpeGVscyh4LCB5LCAxLCAxLCBnbC5SR0JBLCBnbC5VTlNJ
R05FRF9CWVRFLCBidWYpOwogICAgIHZhciBtc2cgPSAnZXhwZWN0ZWQ6JyArCiAgICAgICAgIGNb
MF0gKyAnLCAnICsgY1sxXSArICcsICcgKyBjWzJdICsgJywgJyArIGNbM10gKyAnIGZvdW5kOiAn
ICsKLSAgICAgICAgYnVmWzBdICsgJywgJyArIGJ1ZlsxXSArICcsICcgKyBidWZbMl0gKyAnLCAn
ICsgYnVmWzNdOwotICAgIGlmIChidWZbMF0gIT0gY1swXSB8fCBidWZbMV0gIT0gY1sxXSB8fCBi
dWZbMl0gIT0gY1syXSB8fCBidWZbM10gIT0gY1szXSkKKyAgICAgICAgYnVmWzBdICsgJywgJyAr
CisgICAgICAgIGJ1ZlsxXSArICcsICcgKworICAgICAgICBidWZbMl0gKyAnLCAnICsKKyAgICAg
ICAgYnVmWzNdOworICAgIGlmIChidWZbMF0gIT0gY1swXSB8fAorICAgICAgICBidWZbMV0gIT0g
Y1sxXSB8fAorICAgICAgICBidWZbMl0gIT0gY1syXSB8fAorICAgICAgICBidWZbM10gIT0gY1sz
XSkKICAgICAgIHRlc3RGYWlsZWQobXNnKTsKICAgICBlbHNlCiAgICAgICB0ZXN0UGFzc2VkKG1z
Zyk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC90ZXh0dXJlLWNvbXBsZXRl
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvdGV4dHVy
ZS1jb21wbGV0ZS5odG1sCShyZXZpc2lvbiA2MzQzOCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL3dlYmdsL3RleHR1cmUtY29tcGxldGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMzUsOSAr
MzUsOCBAQCB2b2lkIG1haW4oKQogPHNjcmlwdD4KIGZ1bmN0aW9uIGluaXQoKQogewotICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
b3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRXZWJHTEVuYWJsZWQiLCAiMSIpOwotICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgaWYgKHdpbmRvdy5pbml0Tm9uS2hyb25v
c0ZyYW1ld29yaykgeworICAgIHdpbmRvdy5pbml0Tm9uS2hyb25vc0ZyYW1ld29yayhmYWxzZSk7
CiAgIH0KIAogICBkZWJ1ZygiQ2hlY2tzIHRoYXQgYSB0ZXh0dXJlIHRoYXQgaXMgbm90IC10ZXh0
dXJlLWNvbXBsZXRlLSBkb2VzIG5vdCBkcmF3IGlmIisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL3dlYmdsL3RleHR1cmUtbnBvdC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvdGV4dHVyZS1ucG90LWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gNjM0MzgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC90ZXh0dXJlLW5w
b3QtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDExICsxLDEyIEBACi0gCi1XZWJH
TCBOUE9UIHRleHR1cmUgY29uZm9ybWFuY2UgdGVzdAorIFBBU1MgU2hvdWxkIGJlIG5vIGVycm9y
cyBmcm9tIHNldHVwLgogUEFTUyBnbC50ZXhJbWFnZTJEIHdpdGggTlBPVCB0ZXh0dXJlIHdpdGgg
bGV2ZWwgPiAwIHNob3VsZCByZXR1cm4gSU5WQUxJRF9WQUxVRQogUEFTUyBnbC50ZXhJbWFnZTJE
IHdpdGggTlBPVCB0ZXh0dXJlIGF0IGxldmVsIDAgc2hvdWxkIHN1Y2NlZWQKIFBBU1MgZ2wuZ2Vu
ZXJhdGVNaXBtYXAgd2l0aCBOUE9UIHRleHR1cmUgc2hvdWxkIHJldHVybiBJTlZBTElEX09QRVJB
VElPTgogUEFTUyBOUE9UIHRleHR1cmUgd2l0aCBURVhUVVJFX1dSQVAgc2V0IHRvIFJFUEVBVCBz
aG91bGQgZHJhdyB3aXRoIDAsMCwwLDI1NQorUEFTUyBTaG91bGQgYmUgbm8gZXJyb3JzIGZyb20g
c2V0dXAuCiBQQVNTIE5QT1QgdGV4dHVyZSB3aXRoIFRFWFRVUkVfTUlOX0ZJTFRFUiBub3QgTkVB
UkVTVCBvciBMSU5FQVIgc2hvdWxkIGRyYXcgd2l0aCAwLDAsMCwyNTUKLVBBU1MgTlBPVCB0ZXh0
dXJlIHdpdGggVEVYVFVSRV9NSU5fRklMVEVSIHNldCB0byBMSU5FQVIgc2hvdWxkIGRyYXcgd2l0
aCAwLDE5MiwxMjgsMjU1CitQQVNTIFNob3VsZCBiZSBubyBlcnJvcnMgZnJvbSBzZXR1cC4KK1BB
U1MgTlBPVCB0ZXh0dXJlIHdpdGggVEVYVFVSRV9NSU5fRklMVEVSIHNldCB0byBMSU5FQVIgc2hv
dWxkIGRyYXcuCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExF
VEUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3RleHR1cmUtbnBvdC5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3RleHR1cmUtbnBv
dC5odG1sCShyZXZpc2lvbiA2MzQzOCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmds
L3RleHR1cmUtbnBvdC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE1NiArMSw4MiBAQAotPCFE
T0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9F
TiINCi0gICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPg0KLTxodG1sPg0K
LSAgPGhlYWQ+DQotICAgIDx0aXRsZT5XZWJHTCBOb24tUG93ZXIgb2YgMiB0ZXh0dXJlIGNvbmZv
cm1hbmNlIHRlc3QuPC90aXRsZT4NCi0gICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4NCi0gICAgPHNjcmlwdCBzcmM9
Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+DQotICAgIDxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvd2ViZ2wtdGVzdC5qcyI+IDwvc2NyaXB0Pg0KLTwvaGVhZD4NCi08
Ym9keT4NCi08Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iNCIgaGVpZ2h0PSI0IiBzdHlsZT0i
d2lkdGg6IDQwcHg7IGhlaWdodDogMzBweDsiPjwvY2FudmFzPg0KLTxjYW52YXMgaWQ9ImNhbnZh
czJkIiB3aWR0aD0iNSIgaGVpZ2h0PSIzIiBzdHlsZT0id2lkdGg6IDUwcHg7IGhlaWdodDogMzBw
eDsiPjwvY2FudmFzPg0KLTxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4NCi08ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4NCi0gICAgPHNjcmlwdCBpZD0idnNoYWRlciIgdHlwZT0ieC1zaGFkZXIv
eC12ZXJ0ZXgiPg0KLSAgICAgICAgYXR0cmlidXRlIHZlYzQgdlBvc2l0aW9uOw0KLSAgICAgICAg
YXR0cmlidXRlIHZlYzIgdGV4Q29vcmQwOw0KLSAgICAgICAgdmFyeWluZyB2ZWMyIHRleENvb3Jk
Ow0KLSAgICAgICAgdm9pZCBtYWluKCkNCi0gICAgICAgIHsNCi0gICAgICAgICAgICBnbF9Qb3Np
dGlvbiA9IHZQb3NpdGlvbjsNCi0gICAgICAgICAgICB0ZXhDb29yZCA9IHRleENvb3JkMDsNCi0g
ICAgICAgIH0NCi0gICAgPC9zY3JpcHQ+DQotDQotICAgIDxzY3JpcHQgaWQ9ImZzaGFkZXIiIHR5
cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPg0KLSAgICAgICAgdW5pZm9ybSBzYW1wbGVyMkQgdGV4
Ow0KLSAgICAgICAgdmFyeWluZyB2ZWMyIHRleENvb3JkOw0KLSAgICAgICAgdm9pZCBtYWluKCkN
Ci0gICAgICAgIHsNCi0gICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB0ZXh0dXJlMkQodGV4LCB0
ZXhDb29yZCk7DQotICAgICAgICB9DQotICAgIDwvc2NyaXB0Pg0KLQ0KLSAgICA8c2NyaXB0Pg0K
LSAgICAgICAgZnVuY3Rpb24gaW5pdCgpDQotICAgICAgICB7DQotICAgICAgICAgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgew0KLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdFdlYkdMRW5hYmxlZCIsICIxIik7
DQotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsNCi0g
ICAgICAgICAgICB9DQotDQotICAgICAgICAgICAgZGVidWcoIldlYkdMIE5QT1QgdGV4dHVyZSBj
b25mb3JtYW5jZSB0ZXN0Iik7DQotDQotICAgICAgICAgICAgdmFyIGNhbnZhczJkID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhczJkIik7DQotICAgICAgICAgICAgdmFyIGN0eDJkID0g
Y2FudmFzMmQuZ2V0Q29udGV4dCgiMmQiKTsNCi0gICAgICAgICAgICBjdHgyZC5maWxsU3R5bGUg
PSAicmdiYSgwLDE5MiwxMjgsMjU1KSI7DQotICAgICAgICAgICAgY3R4MmQuZmlsbFJlY3QoMCwg
MCwgNSwgMyk7DQotDQotICAgICAgICAgICAgZ2wgPSBpbml0V2ViR0woImV4YW1wbGUiLCAidnNo
YWRlciIsICJmc2hhZGVyIiwgWyAidlBvc2l0aW9uIiwgInRleENvb3JkMCJdLCBbIDAsIDAsIDAs
IDEgXSwgMSk7DQotDQotICAgICAgICAgICAgZ2wuZGlzYWJsZShnbC5ERVBUSF9URVNUKTsNCi0g
ICAgICAgICAgICBnbC5kaXNhYmxlKGdsLkJMRU5EKTsNCi0NCi0gICAgICAgICAgICB2YXIgdmVy
dGV4T2JqZWN0ID0gZ2wuY3JlYXRlQnVmZmVyKCk7DQotICAgICAgICAgICAgZ2wuYmluZEJ1ZmZl
cihnbC5BUlJBWV9CVUZGRVIsIHZlcnRleE9iamVjdCk7DQotICAgICAgICAgICAgZ2wuYnVmZmVy
RGF0YShnbC5BUlJBWV9CVUZGRVIsIG5ldyBXZWJHTEZsb2F0QXJyYXkoWyAtMSwxLDAsIDEsMSww
LCAtMSwtMSwwLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLTEsLTEsMCwgMSwxLDAsIDEsLTEsMA0KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pLCBn
bC5TVEFUSUNfRFJBVyk7DQotICAgICAgICAgICAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXko
MCk7DQotICAgICAgICAgICAgZ2wudmVydGV4QXR0cmliUG9pbnRlcigwLCAzLCBnbC5GTE9BVCwg
ZmFsc2UsIDAsIDApOw0KLQ0KLSAgICAgICAgICAgIHZhciB2ZXJ0ZXhPYmplY3QgPSBnbC5jcmVh
dGVCdWZmZXIoKTsNCi0gICAgICAgICAgICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwg
dmVydGV4T2JqZWN0KTsNCi0gICAgICAgICAgICBnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZF
UiwgbmV3IFdlYkdMRmxvYXRBcnJheShbIDAsMCwgMSwwLCAwLDEsDQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLDEsIDEs
MCwgMSwxDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXSksIGdsLlNUQVRJQ19EUkFXKTsNCi0gICAgICAgICAgICBnbC5lbmFi
bGVWZXJ0ZXhBdHRyaWJBcnJheSgxKTsNCi0gICAgICAgICAgICBnbC52ZXJ0ZXhBdHRyaWJQb2lu
dGVyKDEsIDIsIGdsLkZMT0FULCBmYWxzZSwgMCwgMCk7DQotDQotICAgICAgICAgICAgdmFyIHRl
eCA9IGdsLmNyZWF0ZVRleHR1cmUoKTsNCi0gICAgICAgICAgICBnbC5iaW5kVGV4dHVyZShnbC5U
RVhUVVJFXzJELCB0ZXgpOw0KLQ0KLSAgICAgICAgICAgIC8vIENoZWNrIHRoYXQgYW4gTlBPVCB0
ZXh0dXJlIG5vdCBvbiBsZXZlbCAwIGdlbmVyYXRlcyBJTlZBTElEX1ZBTFVFDQotICAgICAgICAg
ICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELA0KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgMSwgICAgICAgICAgICAgICAgIC8vIGxldmVsDQotICAgICAgICAgICAgICAgICAgICAgICAg
ICBnbC5SR0JBLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgZ2wuUkdCQSwNCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgIGdsLlVOU0lHTkVEX0JZVEUsDQotICAgICAgICAgICAgICAgICAg
ICAgICAgICBjYW52YXMyZCk7DQotICAgICAgICAgICAgYXNzZXJ0TXNnKGdsLmdldEVycm9yKCkg
PT0gZ2wuSU5WQUxJRF9WQUxVRSwNCi0gICAgICAgICAgICAgICAgICAgICAgImdsLnRleEltYWdl
MkQgd2l0aCBOUE9UIHRleHR1cmUgd2l0aCBsZXZlbCA+IDAgc2hvdWxkIHJldHVybiBJTlZBTElE
X1ZBTFVFIik7DQotDQotICAgICAgICAgICAgLy8gQ2hlY2sgdGhhdCBhbiBOUE9UIHRleHR1cmUg
b24gbGV2ZWwgMCBzdWNjZWVkcw0KLSAgICAgICAgICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVS
RV8yRCwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgIDAsICAgICAgICAgICAgICAgICAvLyBs
ZXZlbA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgZ2wuUkdCQSwNCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIGdsLlJHQkEsDQotICAgICAgICAgICAgICAgICAgICAgICAgICBnbC5VTlNJ
R05FRF9CWVRFLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgY2FudmFzMmQpOw0KLSAgICAg
ICAgICAgIGFzc2VydE1zZyhnbC5nZXRFcnJvcigpID09IGdsLk5PX0VSUk9SLA0KLSAgICAgICAg
ICAgICAgICAgICAgICAiZ2wudGV4SW1hZ2UyRCB3aXRoIE5QT1QgdGV4dHVyZSBhdCBsZXZlbCAw
IHNob3VsZCBzdWNjZWVkIik7DQotDQotICAgICAgICAgICAgLy8gQ2hlY2sgdGhhdCBnZW5lcmF0
ZU1pcG1hcCBmYWlscyBvbiBOUE9UDQotICAgICAgICAgICAgZ2wuZ2VuZXJhdGVNaXBtYXAoZ2wu
VEVYVFVSRV8yRCk7DQotICAgICAgICAgICAgYXNzZXJ0TXNnKGdsLmdldEVycm9yKCkgPT0gZ2wu
SU5WQUxJRF9PUEVSQVRJT04sDQotICAgICAgICAgICAgICAgICAgICAgICJnbC5nZW5lcmF0ZU1p
cG1hcCB3aXRoIE5QT1QgdGV4dHVyZSBzaG91bGQgcmV0dXJuIElOVkFMSURfT1BFUkFUSU9OIik7
DQotDQotICAgICAgICAgICAgdmFyIGxvYyA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihnbC5wcm9n
cmFtLCAidGV4Iik7DQotICAgICAgICAgICAgZ2wudW5pZm9ybTFpKGxvYywgMCk7DQotDQotICAg
ICAgICAgICAgLy8gRklYTUU6IHVuY29tbWVudCB0aGUgdGhyZWUgY2hlY2hCdWZmZXIgY2FsbHMg
b25jZSB3ZSBmaWd1cmUgb3V0IHdoeSB0aGV5IGZhaWwgb24gdGhlIExlb3BhcmQgYm90Lg0KLSAg
ICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTEy
OA0KLQ0KLSAgICAgICAgICAgIC8vIENoZWNrIHRoYXQgbm90aGluZyBpcyBkcmF3biBpZiBmaWx0
ZXJpbmcgaXMgbm90IGNvcnJlY3QgZm9yIE5QT1QNCi0gICAgICAgICAgICBnbC50ZXhQYXJhbWV0
ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTkVBUkVTVCk7DQot
ICAgICAgICAgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01B
R19GSUxURVIsIGdsLk5FQVJFU1QpOw0KLSAgICAgICAgICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wu
VEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1MsIGdsLlJFUEVBVCk7DQotICAgICAgICAgICAg
Z2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBfVCwgZ2wuUkVQ
RUFUKTsNCi0NCi0gICAgICAgICAgICBjaGVja0J1ZmZlcigwLDAsMCwyNTUsICJOUE9UIHRleHR1
cmUgd2l0aCBURVhUVVJFX1dSQVAgc2V0IHRvIFJFUEVBVCBzaG91bGQgZHJhdyB3aXRoIDAsMCww
LDI1NSIpOw0KLQ0KLSAgICAgICAgICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwg
Z2wuVEVYVFVSRV9XUkFQX1MsIGdsLkNMQU1QX1RPX0VER0UpOw0KLSAgICAgICAgICAgIGdsLnRl
eFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1QsIGdsLkNMQU1QX1RP
X0VER0UpOw0KLSAgICAgICAgICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wu
VEVYVFVSRV9NSU5fRklMVEVSLCBnbC5ORUFSRVNUX01JUE1BUF9MSU5FQVIpOw0KLQ0KLSAgICAg
ICAgICAgIGNoZWNrQnVmZmVyKDAsMCwwLDI1NSwgIk5QT1QgdGV4dHVyZSB3aXRoIFRFWFRVUkVf
TUlOX0ZJTFRFUiBub3QgTkVBUkVTVCBvciBMSU5FQVIgc2hvdWxkIGRyYXcgd2l0aCAwLDAsMCwy
NTUiKTsNCi0NCi0gICAgICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGds
LlRFWFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTElORUFSKTsNCi0NCi0gICAgICAgICAgICBjaGVja0J1
ZmZlcigwLDE5MiwxMjgsMjU1LCAiTlBPVCB0ZXh0dXJlIHdpdGggVEVYVFVSRV9NSU5fRklMVEVS
IHNldCB0byBMSU5FQVIgc2hvdWxkIGRyYXcgd2l0aCAwLDE5MiwxMjgsMjU1Iik7DQotDQotICAg
ICAgICAgICAgZnVuY3Rpb24gY2hlY2tCdWZmZXIociwgZywgYiwgYSwgbXNnKSB7DQotICAgICAg
ICAgICAgICBnbC5jbGVhckNvbG9yKDEsMSwxLDEpOw0KLSAgICAgICAgICAgICAgZ2wuY2xlYXIo
Z2wuQ09MT1JfQlVGRkVSX0JJVCB8IGdsLkRFUFRIX0JVRkZFUl9CSVQpOw0KLSAgICAgICAgICAg
ICAgZ2wuZHJhd0FycmF5cyhnbC5UUklBTkdMRVMsIDAsIDYpOw0KLSAgICAgICAgICAgICAgZ2wu
Zmx1c2goKTsNCi0gICAgICAgICAgICAgIHZhciBidWYgPSBuZXcgVWludDhBcnJheSg0ICogNCAq
IDQpOw0KLSAgICAgICAgICAgICAgZ2wucmVhZFBpeGVscygwLCAwLCA0LCA0LCBnbC5SR0JBLCBn
bC5VTlNJR05FRF9CWVRFLCBidWYpOw0KLSAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCA0ICogNDsgKytpKSB7DQotICAgICAgICAgICAgICAgIHZhciBvZmZzZXQgPSBpICogNDsNCi0g
ICAgICAgICAgICAgICAgaWYgKGJ1ZltvZmZzZXQgKyAwXSAhPSByIHx8DQotICAgICAgICAgICAg
ICAgICAgICBidWZbb2Zmc2V0ICsgMV0gIT0gZyB8fA0KLSAgICAgICAgICAgICAgICAgICAgYnVm
W29mZnNldCArIDJdICE9IGIgfHwNCi0gICAgICAgICAgICAgICAgICAgIGJ1ZltvZmZzZXQgKyAz
XSAhPSBhKSB7DQotICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZChtc2cgKyAnLCByZWFkIGJh
Y2sgY29sb3IgaXMgJyArIGJ1ZltvZmZzZXQgKyAwXSArICcsJyArIGJ1ZltvZmZzZXQgKyAxXQ0K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAnLCcgKyBidWZbb2Zmc2V0ICsgMl0gKyAn
LCcgKyBidWZbb2Zmc2V0ICsgM10pOw0KLSAgICAgICAgICAgICAgICAgIHJldHVybjsNCi0gICAg
ICAgICAgICAgICAgfQ0KLSAgICAgICAgICAgICAgfQ0KLSAgICAgICAgICAgICAgdGVzdFBhc3Nl
ZChtc2cpOw0KLSAgICAgICAgICAgIH0NCi0gICAgICAgfQ0KLQ0KLSAgICAgICBpbml0KCk7DQot
ICAgICAgIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7DQotICAgIDwvc2NyaXB0Pg0KLTwvYm9k
eT4NCi08c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+DQotDQotPHNjcmlwdD4NCi08L3NjcmlwdD4NCi0NCi08L2JvZHk+DQotPC9odG1sPg0K
LQ0KKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRp
b25hbC8vRU4iCisgICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgorPGh0
bWw+Cis8aGVhZD4KKzx0aXRsZT5XZWJHTCBOb24tUG93ZXIgb2YgMiB0ZXh0dXJlIGNvbmZvcm1h
bmNlIHRlc3QuPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
d2ViZ2wtdGVzdC5qcyI+IDwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJnbC10
ZXN0LXV0aWxzLmpzIj4gPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9ImV4
YW1wbGUiIHdpZHRoPSI0IiBoZWlnaHQ9IjQiIHN0eWxlPSJ3aWR0aDogNDBweDsgaGVpZ2h0OiAz
MHB4OyI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIg
Y2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImV4YW1wbGUiKTsKK3ZhciBnbCA9IHd0
dS5jcmVhdGUzRENvbnRleHQoY2FudmFzKTsKK3ZhciBwcm9ncmFtID0gd3R1LnNldHVwVGV4dHVy
ZWRRdWFkKGdsKTsKKworYXNzZXJ0TXNnKGdsLmdldEVycm9yKCkgPT0gZ2wuTk9fRVJST1IsICJT
aG91bGQgYmUgbm8gZXJyb3JzIGZyb20gc2V0dXAuIik7CisKK3ZhciB0ZXggPSBnbC5jcmVhdGVU
ZXh0dXJlKCk7CisKKy8vIENoZWNrIHRoYXQgYW4gTlBPVCB0ZXh0dXJlIG5vdCBvbiBsZXZlbCAw
IGdlbmVyYXRlcyBJTlZBTElEX1ZBTFVFCit3dHUuZmlsbFRleHR1cmUoZ2wsIHRleCwgNSwgMywg
WzAsIDE5MiwgMTI4LCAyNTVdLCAxKTsKK2Fzc2VydE1zZyhnbC5nZXRFcnJvcigpID09IGdsLklO
VkFMSURfVkFMVUUsCisgICAgICAgICAgImdsLnRleEltYWdlMkQgd2l0aCBOUE9UIHRleHR1cmUg
d2l0aCBsZXZlbCA+IDAgc2hvdWxkIHJldHVybiBJTlZBTElEX1ZBTFVFIik7CisKKy8vIENoZWNr
IHRoYXQgYW4gTlBPVCB0ZXh0dXJlIG9uIGxldmVsIDAgc3VjY2VlZHMKK3d0dS5maWxsVGV4dHVy
ZShnbCwgdGV4LCA1LCAzLCBbMCwgMTkyLCAxMjgsIDI1NV0pOworYXNzZXJ0TXNnKGdsLmdldEVy
cm9yKCkgPT0gZ2wuTk9fRVJST1IsCisgICAgICAgICAgImdsLnRleEltYWdlMkQgd2l0aCBOUE9U
IHRleHR1cmUgYXQgbGV2ZWwgMCBzaG91bGQgc3VjY2VlZCIpOworCisvLyBDaGVjayB0aGF0IGdl
bmVyYXRlTWlwbWFwIGZhaWxzIG9uIE5QT1QKK2dsLmdlbmVyYXRlTWlwbWFwKGdsLlRFWFRVUkVf
MkQpOworYXNzZXJ0TXNnKGdsLmdldEVycm9yKCkgPT0gZ2wuSU5WQUxJRF9PUEVSQVRJT04sCisg
ICAgICAgICAgImdsLmdlbmVyYXRlTWlwbWFwIHdpdGggTlBPVCB0ZXh0dXJlIHNob3VsZCByZXR1
cm4gSU5WQUxJRF9PUEVSQVRJT04iKTsKKwordmFyIGxvYyA9IGdsLmdldFVuaWZvcm1Mb2NhdGlv
bihwcm9ncmFtLCAidGV4Iik7CitnbC51bmlmb3JtMWkobG9jLCAwKTsKKworLy8gQ2hlY2sgdGhh
dCBub3RoaW5nIGlzIGRyYXduIGlmIGZpbHRlcmluZyBpcyBub3QgY29ycmVjdCBmb3IgTlBPVAor
Z2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01JTl9GSUxURVIsIGds
Lk5FQVJFU1QpOworZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01B
R19GSUxURVIsIGdsLk5FQVJFU1QpOworZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBn
bC5URVhUVVJFX1dSQVBfUywgZ2wuUkVQRUFUKTsKK2dsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVS
RV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1QsIGdsLlJFUEVBVCk7CisKK3d0dS5kcmF3UXVhZChnbCk7
Cit3dHUuY2hlY2tDYW52YXMoCisgICAgZ2wsIFswLCAwLCAwLCAyNTVdLAorICAgICJOUE9UIHRl
eHR1cmUgd2l0aCBURVhUVVJFX1dSQVAgc2V0IHRvIFJFUEVBVCBzaG91bGQgZHJhdyB3aXRoIDAs
MCwwLDI1NSIpOworYXNzZXJ0TXNnKGdsLmdldEVycm9yKCkgPT0gZ2wuTk9fRVJST1IsICJTaG91
bGQgYmUgbm8gZXJyb3JzIGZyb20gc2V0dXAuIik7CisKK2dsLnRleFBhcmFtZXRlcmkoZ2wuVEVY
VFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1MsIGdsLkNMQU1QX1RPX0VER0UpOworZ2wudGV4UGFy
YW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBfVCwgZ2wuQ0xBTVBfVE9fRURH
RSk7CitnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUlOX0ZJTFRF
UiwgZ2wuTkVBUkVTVF9NSVBNQVBfTElORUFSKTsKKword3R1LmRyYXdRdWFkKGdsKTsKK3d0dS5j
aGVja0NhbnZhcygKKyAgICBnbCwgWzAsIDAsIDAsIDI1NV0sCisgICAgIk5QT1QgdGV4dHVyZSB3
aXRoIFRFWFRVUkVfTUlOX0ZJTFRFUiBub3QgTkVBUkVTVCBvciBMSU5FQVIgc2hvdWxkIGRyYXcg
d2l0aCAwLDAsMCwyNTUiKTsKK2Fzc2VydE1zZyhnbC5nZXRFcnJvcigpID09IGdsLk5PX0VSUk9S
LCAiU2hvdWxkIGJlIG5vIGVycm9ycyBmcm9tIHNldHVwLiIpOworCitnbC50ZXhQYXJhbWV0ZXJp
KGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTElORUFSKTsKKword3R1
LmRyYXdRdWFkKGdsKTsKK3d0dS5jaGVja0NhbnZhcygKKyAgICBnbCwgWzAsIDE5MiwgMTI4LCAy
NTVdLAorICAgICJOUE9UIHRleHR1cmUgd2l0aCBURVhUVVJFX01JTl9GSUxURVIgc2V0IHRvIExJ
TkVBUiBzaG91bGQgZHJhdy4iKTsKKworc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2Ny
aXB0PgorPC9ib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0PgorPC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRt
bD4KKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvdGV4dHVyZS10cmFuc3Bh
cmVudC1waXhlbHMtaW5pdGlhbGl6ZWQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3RleHR1cmUtdHJhbnNwYXJlbnQtcGl4ZWxzLWluaXRp
YWxpemVkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNjM0MzgpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy93ZWJnbC90ZXh0dXJlLXRyYW5zcGFyZW50LXBpeGVscy1pbml0aWFsaXplZC1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi1SZWdyZXNzaW9uIHRlc3Qg
Zm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjg4OCA6IEdhcmJh
Z2UgaW4gdHJhbnNwYXJlbnQgcmVnaW9ucyBvZiBpbWFnZXMgdXBsb2FkZWQgYXMgdGV4dHVyZXMK
K1Rlc3RzIHRoZXJlIGlzIG5vIGdhcmJhZ2UgaW4gdHJhbnNwYXJlbnQgcmVnaW9ucyBvZiBpbWFn
ZXMgdXBsb2FkZWQgYXMgdGV4dHVyZXMKIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC90ZXh0dXJlLXRyYW5zcGFyZW50LXBp
eGVscy1pbml0aWFsaXplZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL3dlYmdsL3RleHR1cmUtdHJhbnNwYXJlbnQtcGl4ZWxzLWluaXRpYWxpemVkLmh0bWwJKHJl
dmlzaW9uIDYzNDM4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvdGV4dHVyZS10
cmFuc3BhcmVudC1waXhlbHMtaW5pdGlhbGl6ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMzMs
MTkgKzMzLDE3IEBAIHZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSBmYWxzZTsKIAogZnVuY3Rpb24g
aW5pdCgpCiB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdFdlYkdMRW5h
YmxlZCIsICIxIik7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
LSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIGlmICh3
aW5kb3cuaW5pdE5vbktocm9ub3NGcmFtZXdvcmspIHsKKyAgICAgICAgd2luZG93LmluaXROb25L
aHJvbm9zRnJhbWV3b3JrKHRydWUpOwogICAgIH0KIAotICAgIGRlc2NyaXB0aW9uKCdSZWdyZXNz
aW9uIHRlc3QgZm9yIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zMjg4OCI+aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyODg4
PC9hPiA6IDxjb2RlPkdhcmJhZ2UgaW4gdHJhbnNwYXJlbnQgcmVnaW9ucyBvZiBpbWFnZXMgdXBs
b2FkZWQgYXMgdGV4dHVyZXM8L2NvZGU+Jyk7CisgICAgZGVzY3JpcHRpb24oJ1Rlc3RzIHRoZXJl
IGlzIG5vIGdhcmJhZ2UgaW4gdHJhbnNwYXJlbnQgcmVnaW9ucyBvZiBpbWFnZXMgdXBsb2FkZWQg
YXMgdGV4dHVyZXMnKTsKIAogICAgIGdsID0gaW5pdFdlYkdMKCJleGFtcGxlIiwgInZzaGFkZXIi
LCAiZnNoYWRlciIsIFsgImdfUG9zaXRpb24iLCAiZ19UZXhDb29yZDAiIF0sIFsgMCwgMCwgMCwg
MSBdLCAxKTsKIAogICAgIHRleHR1cmVMb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24oZ2wucHJv
Z3JhbSwgInRleCIpOwogCi0gICAgdmFyIHZlcnRpY2VzID0gbmV3IFdlYkdMRmxvYXRBcnJheShb
CisgICAgdmFyIHZlcnRpY2VzID0gbmV3IEZsb2F0MzJBcnJheShbCiAgICAgICAgICAxLjAsICAx
LjAsIDAuMCwKICAgICAgICAgLTEuMCwgIDEuMCwgMC4wLAogICAgICAgICAtMS4wLCAtMS4wLCAw
LjAsCkBAIC01NCw3ICs1Miw3IEBAIGZ1bmN0aW9uIGluaXQoKQogICAgICAgICAgMS4wLCAtMS4w
LCAwLjBdKTsKICAgICAvLyBUaGUgaW5wdXQgdGV4dHVyZSBoYXMgOCBjaGFyYWN0ZXJzOyB0YWtl
IHRoZSBsZWZ0bW9zdCBvbmUKICAgICB2YXIgY29lZmYgPSAxLjAgLyA4LjA7Ci0gICAgdmFyIHRl
eENvb3JkcyA9IG5ldyBXZWJHTEZsb2F0QXJyYXkoWworICAgIHZhciB0ZXhDb29yZHMgPSBuZXcg
RmxvYXQzMkFycmF5KFsKICAgICAgICAgY29lZmYsIDEuMCwKICAgICAgICAgMC4wLCAxLjAsCiAg
ICAgICAgIDAuMCwgMC4wLApAQCAtMTQ3LDggKzE0NSw4IEBAIGZ1bmN0aW9uIHJ1blRlc3QoKQog
fQogCiBmdW5jdGlvbiBmaW5pc2goKSB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAg
aWYgKHdpbmRvdy5ub25LaHJvbm9zRnJhbWV3b3JrTm90aWZ5RG9uZSkgeworICAgICAgICB3aW5k
b3cubm9uS2hyb25vc0ZyYW1ld29ya05vdGlmeURvbmUoKTsKICAgICB9CiB9CiA8L3NjcmlwdD4K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3RyaWFuZ2xlLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC90cmlhbmdsZS1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDYzNDM4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMv
d2ViZ2wvdHJpYW5nbGUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xICsxLDUgQEAK
LVRlc3QgUEFTU0VECisgUEFTUyBkcmF3aW5nIGlzIGNvcnJlY3QKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy93ZWJnbC90cmlhbmdsZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvY2FudmFzL3dlYmdsL3RyaWFuZ2xlLmh0bWwJKHJldmlzaW9uIDYzNDM4KQorKysgTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvdHJpYW5nbGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MSw4ICsxLDE4IEBACisKIDwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiAgIDxoZWFkPgotICAgIDx0
aXRsZT5TcGlubmluZyBCb3g8L3RpdGxlPgorICAgIDx0aXRsZT5SZW5kZXJpbmcgVGVzdDwvdGl0
bGU+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiLz4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dl
YmdsLXRlc3QuanMiPiA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhh
bXBsZSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIj4KK1RoZXJlIGlzIHN1cHBvc2VkIHRvIGJlIGFu
IGV4YW1wbGUgZHJhd2luZyBoZXJlLCBidXQgaXQncyBub3QgaW1wb3J0YW50LgorPC9jYW52YXM+
Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
ICAgICA8c2NyaXB0IGlkPSJ2c2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+CiAgICAg
ICAgIGF0dHJpYnV0ZSB2ZWM0IHZQb3NpdGlvbjsKICAgICAgICAgdm9pZCBtYWluKCkKQEAgLTIz
LDM1ICszMywzNCBAQAogICAgICAgICB7CiAgICAgICAgICAgICB2YXIgaSA9ICh5KjUwK3gpICog
NDsKICAgICAgICAgICAgIHZhciByZWFzb24gPSAicGl4ZWwgYXQgKCIreCsiLCIreSsiKSBpcyAo
IitidWZbaV0rIiwiK2J1ZltpKzFdKyIsIitidWZbaSsyXSsiLCIrYnVmW2krM10rIiksIHNob3Vs
ZCBiZSAiK3Nob3VsZEJlOwotICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJl
c3VsdHMiKS5pbm5lckhUTUwgPSAiVGVzdCA8c3BhbiBzdHlsZT0nY29sb3I6cmVkJz5GQUlMRUQ8
L3NwYW4+ICIrcmVhc29uOworICAgICAgICAgICAgdGVzdEZhaWxlZChyZWFzb24pOwogICAgICAg
ICB9Ci0gICAgICAgIAorCiAgICAgICAgIGZ1bmN0aW9uIHBhc3MoKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0cyIpLmlubmVySFRNTCA9ICJU
ZXN0IDxzcGFuIHN0eWxlPSdjb2xvcjpncmVlbic+UEFTU0VEPC9zcGFuPiI7CisgICAgICAgICAg
ICB0ZXN0UGFzc2VkKCJkcmF3aW5nIGlzIGNvcnJlY3QiKTsKICAgICAgICAgfQotICAgICAgICAK
KwogICAgICAgICBmdW5jdGlvbiBpbml0KCkKICAgICAgICAgewotICAgICAgICAgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0V2ViR0xFbmFibGVkIiwgIjEiKTsK
LSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAg
ICAgICAgICBpZiAod2luZG93LmluaXROb25LaHJvbm9zRnJhbWV3b3JrKSB7CisgICAgICAgICAg
ICAgICAgd2luZG93LmluaXROb25LaHJvbm9zRnJhbWV3b3JrKGZhbHNlKTsKICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICBnbCA9IGluaXRXZWJHTCgiZXhhbXBsZSIs
ICJ2c2hhZGVyIiwgImZzaGFkZXIiLCBbICJ2UG9zaXRpb24iXSwgWyAwLCAwLCAwLCAxIF0sIDEp
OwotICAgICAgICAgICAgCisKICAgICAgICAgICAgIHZhciB2ZXJ0ZXhPYmplY3QgPSBnbC5jcmVh
dGVCdWZmZXIoKTsKICAgICAgICAgICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCB2
ZXJ0ZXhPYmplY3QpOwotICAgICAgICAgICAgZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIs
IG5ldyBXZWJHTEZsb2F0QXJyYXkoWyAwLDAuNSwwLCAtMC41LC0wLjUsMCwgMC41LC0wLjUsMCBd
KSwgZ2wuU1RBVElDX0RSQVcpOworICAgICAgICAgICAgZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9C
VUZGRVIsIG5ldyBGbG9hdDMyQXJyYXkoWyAwLDAuNSwwLCAtMC41LC0wLjUsMCwgMC41LC0wLjUs
MCBdKSwgZ2wuU1RBVElDX0RSQVcpOwogICAgICAgICAgICAgZ2wuZW5hYmxlVmVydGV4QXR0cmli
QXJyYXkoMCk7CiAgICAgICAgICAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKDAsIDMsIGdsLkZM
T0FULCBmYWxzZSwgMCwgMCk7Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgZ2wuY2xlYXIo
Z2wuQ09MT1JfQlVGRkVSX0JJVCB8IGdsLkRFUFRIX0JVRkZFUl9CSVQpOwogICAgICAgICAgICAg
Z2wuZHJhd0FycmF5cyhnbC5UUklBTkdMRVMsIDAsIDMpOwotICAgICAgICAgICAgCisKICAgICAg
ICAgICAgIHZhciBidWYgPSBuZXcgVWludDhBcnJheSg1MCAqIDUwICogNCk7CiAgICAgICAgICAg
ICBnbC5yZWFkUGl4ZWxzKDAsIDAsIDUwLCA1MCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwg
YnVmKTsKLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICAvLyBUZXN0IHNldmVyYWwgbG9jYXRp
b25zCiAgICAgICAgICAgICAvLyBGaXJzdCBsaW5lIHNob3VsZCBiZSBhbGwgYmxhY2sKICAgICAg
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNTA7ICsraSkKQEAgLTU5LDcgKzY4LDcgQEAKICAg
ICAgICAgICAgICAgICAgICAgZmFpbChpLCAwLCBidWYsICIoMCwwLDAsMjU1KSIpOwogICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IAorCiAgICAgICAgICAgICAvLyBMaW5lIDE1IHNob3VsZCBiZSByZWQgZm9yIGF0IGxlYXN0IDEw
IHJlZCBwaXhlbHMgc3RhcnRpbmcgMjAgcGl4ZWxzIGluCiAgICAgICAgICAgICB2YXIgb2Zmc2V0
ID0gKDE1KjUwKzIwKSAqIDQ7CiAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwOyAr
K2kpCkBAIC03NCwxNSArODMsMTUgQEAKICAgICAgICAgICAgICAgICAgICAgZmFpbChpLCA0OSwg
YnVmLCAiKDAsMCwwLDI1NSkiKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAKKwogICAgICAgICAgICAgcGFzcygpOwogICAg
ICAgIH0KKworICAgICAgIGluaXQoKTsKKyAgICAgICBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVl
OwogICAgIDwvc2NyaXB0PgotICA8L2hlYWQ+Ci0gIDxib2R5IG9ubG9hZD0iaW5pdCgpIj4KLSAg
ICA8Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iNTBweCIgaGVpZ2h0PSI1MHB4Ij4KLSAgICBU
aGVyZSBpcyBzdXBwb3NlZCB0byBiZSBhbiBleGFtcGxlIGRyYXdpbmcgaGVyZSwgYnV0IGl0J3Mg
bm90IGltcG9ydGFudC4KLSAgICA8L2NhbnZhcz4KLSAgICA8ZGl2IGlkPSJyZXN1bHRzIj5UZXN0
IDxzcGFuIHN0eWxlPSJjb2xvcjpyZWQiPkZBSUxFRDwvc3Bhbj48L2Rpdj4KLSAgPC9ib2R5Pgor
PC9ib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorCis8L2JvZHk+CiA8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy93ZWJnbC91bmlmb3JtLWxvY2F0aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC91bmlmb3JtLWxvY2F0aW9uLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gNjM0MzgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC91bmlm
b3JtLWxvY2F0aW9uLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAK
LVRlc3RzIFdlYkdMIEFQSXMgcmVsYXRlZCB0byBzaGFkZXIgdW5pZm9ybXMKK1Rlc3RzIHRoZSBX
ZWJHTFVuaWZvcm1Mb2NhdGlvbiBBUEkKIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCkBA
IC0xNiw2ICsxNiw4IEBAIFBBU1MgY29udGV4dEEudXNlUHJvZ3JhbShwcm9ncmFtVikgZ2VuZXIK
IFBBU1MgY29udGV4dEEudW5pZm9ybTRmdihsb2NhdGlvblZlYzQsIHZlYykgZ2VuZXJhdGVkIGV4
cGVjdGVkIEdMIGVycm9yOiBOT19FUlJPUi4KIFBBU1MgY29udGV4dEEuZ2V0VW5pZm9ybShwcm9n
cmFtViwgbG9jYXRpb25WZWM0KSBpcyB2ZWMKIFBBU1MgY29udGV4dEEuZ2V0VW5pZm9ybUxvY2F0
aW9uKHByb2dyYW1WLCAiSURvbnRFeGlzdCIpIGlzIG51bGwKK1BBU1MgY29udGV4dEEubGlua1By
b2dyYW0ocHJvZ3JhbUExKSBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJyb3I6IE5PX0VSUk9SLgor
UEFTUyBjb250ZXh0QS51bmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uQSwgZmFsc2UsIG1hdCkgZ2Vu
ZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX09QRVJBVElPTi4KIFBBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvd2ViZ2wvdW5pZm9ybS1sb2NhdGlvbi5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3VuaWZvcm0tbG9jYXRpb24uaHRtbAkocmV2aXNp
b24gNjM0MzgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC91bmlmb3JtLWxvY2F0
aW9uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTksNyArOSw3IEBACiA8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KIAogPHNjcmlwdD4KLWRlc2NyaXB0aW9uKCJUZXN0cyBXZWJHTCBBUElzIHJlbGF0
ZWQgdG8gc2hhZGVyIHVuaWZvcm1zIik7CitkZXNjcmlwdGlvbigiVGVzdHMgdGhlIFdlYkdMVW5p
Zm9ybUxvY2F0aW9uIEFQSSIpOwogCiB2YXIgY29udGV4dEEgPSBjcmVhdGUzRENvbnRleHQoKTsK
IHZhciBjb250ZXh0QiA9IGNyZWF0ZTNEQ29udGV4dCgpOwpAQCAtNDUsNiArNDUsOSBAQCBzaG91
bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dEEsIGNvbnRleHRBCiBzaG91bGRCZSgiY29udGV4dEEu
Z2V0VW5pZm9ybShwcm9ncmFtViwgbG9jYXRpb25WZWM0KSIsICJ2ZWMiKTsKIAogc2hvdWxkQmVO
dWxsKCJjb250ZXh0QS5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbVYsIFwiSURvbnRFeGlzdFwi
KSIpOworc2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHRBLCBjb250ZXh0QS5OT19FUlJPUiwg
ImNvbnRleHRBLmxpbmtQcm9ncmFtKHByb2dyYW1BMSkiKTsKKy8vIEFmdGVyIGxpbmtpbmcgYWxs
IGJveGVzIGFyZSBiYWQuCitzaG91bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dEEsIGNvbnRleHRB
LklOVkFMSURfT1BFUkFUSU9OLCAiY29udGV4dEEudW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbkEs
IGZhbHNlLCBtYXQpIik7CiAKIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CiA8L3NjcmlwdD4K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3ZpZXdwb3J0LXVuY2hhbmdlZC11
cG9uLXJlc2l6ZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9j
YW52YXMvd2ViZ2wvdmlld3BvcnQtdW5jaGFuZ2VkLXVwb24tcmVzaXplLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gNjM0MzgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC92aWV3cG9y
dC11bmNoYW5nZWQtdXBvbi1yZXNpemUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0y
LDcgKzIsNiBAQCBWZXJpZmllcyB0aGF0IEdMIHZpZXdwb3J0IGRvZXMgbm90IGNoYW5nCiAKIE9u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAotUmVncmVzc2lvbiB0ZXN0IGZvciBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQ3NjYgOiBSZW1vdmUgYXV0b21hdGljIHZp
ZXdwb3J0IHJlc2l6aW5nCiBQQVNTIFZpZXdwb3J0IGNvcnJlY3RseSBkaWQgbm90IGNoYW5nZSBz
aXplIGR1cmluZyBjYW52YXMgcmVzaXplCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3ZpZXdwb3J0LXVuY2hhbmdl
ZC11cG9uLXJlc2l6ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFz
L3dlYmdsL3ZpZXdwb3J0LXVuY2hhbmdlZC11cG9uLXJlc2l6ZS5odG1sCShyZXZpc2lvbiA2MzQz
OCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3ZpZXdwb3J0LXVuY2hhbmdlZC11
cG9uLXJlc2l6ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw4ICsyNyw2IEBAIHZvaWQgbWFp
bigpCiA8c2NyaXB0PgogZGVzY3JpcHRpb24oJ1ZlcmlmaWVzIHRoYXQgR0wgdmlld3BvcnQgZG9l
cyBub3QgY2hhbmdlIHdoZW4gY2FudmFzIGlzIHJlc2l6ZWQnKTsKIAotZGVidWcoJ1JlZ3Jlc3Np
b24gdGVzdCBmb3IgPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTM0NzY2Ij5odHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQ3NjY8
L2E+IDogPGNvZGU+UmVtb3ZlIGF1dG9tYXRpYyB2aWV3cG9ydCByZXNpemluZzwvY29kZT4nKTsK
LQogdmFyIGdsID0gaW5pdFdlYkdMKCJleGFtcGxlIiwgInZzaGFkZXIiLCAiZnNoYWRlciIsIFsg
ImdfUG9zaXRpb24iIF0sIFsgMCwgMCwgMSwgMSBdLCAxKTsKIAogdmFyIHZlcnRpY2VzID0gbmV3
IFdlYkdMRmxvYXRBcnJheShbCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2wtdGVzdC11dGlscy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2wtdGVzdC11dGlscy5qcwkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3Jlc291cmNlcy93ZWJnbC10ZXN0
LXV0aWxzLmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc0MSBAQAorLy8gQ29weXJpZ2h0IChj
KSAyMDA5IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworV2ViR0xUZXN0VXRp
bHMgPSAoZnVuY3Rpb24oKSB7CisKKy8qKgorICogV3JhcHBlZCBsb2dnaW5nIGZ1bmN0aW9uLgor
ICogQHBhcmFtIHtzdHJpbmd9IG1zZyBUaGUgbWVzc2FnZSB0byBsb2cuCisgKi8KK3ZhciBsb2cg
PSBmdW5jdGlvbihtc2cpIHsKKyAgaWYgKHdpbmRvdy5jb25zb2xlICYmIHdpbmRvdy5jb25zb2xl
LmxvZykgeworICAgIHdpbmRvdy5jb25zb2xlLmxvZyhtc2cpOworICB9Cit9OworCit2YXIgbGFz
dEVycm9yID0gIiI7CisKKy8qKgorICogUmV0dXJucyB0aGUgbGFzdCBjb21waWxlci9saW5rZXIg
ZXJyb3IuCisgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBsYXN0IGNvbXBpbGVyL2xpbmtlciBlcnJv
ci4KKyAqLwordmFyIGdldExhc3RFcnJvciA9IGZ1bmN0aW9uKCkgeworICByZXR1cm4gbGFzdEVy
cm9yOworfTsKKworLyoqCisgKiBBIHZlcnRleCBzaGFkZXIgZm9yIGEgc2luZ2xlIHRleHR1cmUu
CisgKiBAdHlwZSB7c3RyaW5nfQorICovCit2YXIgc2ltcGxlVGV4dHVyZVZlcnRleFNoYWRlciA9
ICcnICsKKyAgJ2F0dHJpYnV0ZSB2ZWM0IHZQb3NpdGlvbjtcbicgKworICAnYXR0cmlidXRlIHZl
YzIgdGV4Q29vcmQwO1xuJyArCisgICd2YXJ5aW5nIHZlYzIgdGV4Q29vcmQ7XG4nICsKKyAgJ3Zv
aWQgbWFpbigpIHtcbicgKworICAnICAgIGdsX1Bvc2l0aW9uID0gdlBvc2l0aW9uO1xuJyArCisg
ICcgICAgdGV4Q29vcmQgPSB0ZXhDb29yZDA7XG4nICsKKyAgJ31cbic7CisKKy8qKgorICogQSBm
cmFnbWVudCBzaGFkZXIgZm9yIGEgc2luZ2xlIHRleHR1cmUuCisgKiBAdHlwZSB7c3RyaW5nfQor
ICovCit2YXIgc2ltcGxlVGV4dHVyZUZyYWdtZW50U2hhZGVyID0gJycgKworICAnI2lmZGVmIEdM
X0VTXG4nICsKKyAgJ3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuJyArCisgICcjZW5kaWZcbicg
KworICAndW5pZm9ybSBzYW1wbGVyMkQgdGV4O1xuJyArCisgICd2YXJ5aW5nIHZlYzIgdGV4Q29v
cmQ7XG4nICsKKyAgJ3ZvaWQgbWFpbigpIHtcbicgKworICAnICAgIGdsX0ZyYWdDb2xvciA9IHRl
eHR1cmUyRCh0ZXgsIHRleENvb3JkKTtcbicgKworICAnfVxuJzsKKworLyoqCisgKiBDcmVhdGVz
IGEgc2ltcGxlIHRleHR1cmUgdmVydGV4IHNoYWRlci4KKyAqIEBwYXJhbSB7IVdlYkdMQ29udGV4
dH0gZ2wgVGhlIFdlYkdMQ29udGV4dCB0byB1c2UuCisgKiBAcmV0dXJuIHshV2ViR0xTaGFkZXJ9
CisgKi8KK3ZhciBzZXR1cFNpbXBsZVRleHR1cmVWZXJ0ZXhTaGFkZXIgPSBmdW5jdGlvbihnbCkg
eworICAgIHJldHVybiBsb2FkU2hhZGVyKGdsLCBzaW1wbGVUZXh0dXJlVmVydGV4U2hhZGVyLCBn
bC5WRVJURVhfU0hBREVSKTsKK307CisKKy8qKgorICogQ3JlYXRlcyBhIHNpbXBsZSB0ZXh0dXJl
IGZyYWdtZW50IHNoYWRlci4KKyAqIEBwYXJhbSB7IVdlYkdMQ29udGV4dH0gZ2wgVGhlIFdlYkdM
Q29udGV4dCB0byB1c2UuCisgKiBAcmV0dXJuIHshV2ViR0xTaGFkZXJ9CisgKi8KK3ZhciBzZXR1
cFNpbXBsZVRleHR1cmVGcmFnbWVudFNoYWRlciA9IGZ1bmN0aW9uKGdsKSB7CisgICAgcmV0dXJu
IGxvYWRTaGFkZXIoCisgICAgICAgIGdsLCBzaW1wbGVUZXh0dXJlRnJhZ21lbnRTaGFkZXIsIGds
LkZSQUdNRU5UX1NIQURFUik7Cit9OworCisvKioKKyAqIENyZWF0ZXMgYSBwcm9ncmFtLCBhdHRh
Y2hlcyBzaGFkZXJzLCBiaW5kcyBhdHRyaWIgbG9jYXRpb25zLCBsaW5rcyB0aGUKKyAqIHByb2dy
YW0gYW5kIGNhbGxzIHVzZVByb2dyYW0uCisgKiBAcGFyYW0geyFBcnJheS48IVdlYkdMU2hhZGVy
Pn0gc2hhZGVycyBUaGUgc2hhZGVycyB0byBhdHRhY2ggLgorICogQHBhcmFtIHshQXJyYXkuPHN0
cmluZz59IGF0dHJpYnMgVGhlIGF0dHJpYnMgbmFtZXMuCisgKiBAcGFyYW0geyFBcnJheS48bnVt
YmVyPn0gb3B0X2xvY2F0aW9ucyBUaGUgbG9jYXRpb25zIGZvciB0aGUgYXR0cmlicy4KKyAqLwor
dmFyIHNldHVwUHJvZ3JhbSA9IGZ1bmN0aW9uKGdsLCBzaGFkZXJzLCBhdHRyaWJzLCBvcHRfbG9j
YXRpb25zKSB7CisgIHZhciBwcm9ncmFtID0gZ2wuY3JlYXRlUHJvZ3JhbSgpOworICBmb3IgKHZh
ciBpaSA9IDA7IGlpIDwgc2hhZGVycy5sZW5ndGg7ICsraWkpIHsKKyAgICBnbC5hdHRhY2hTaGFk
ZXIocHJvZ3JhbSwgc2hhZGVyc1tpaV0pOworICB9CisgIGZvciAodmFyIGlpID0gMDsgaWkgPCBh
dHRyaWJzLmxlbmd0aDsgKytpaSkgeworICAgIGdsLmJpbmRBdHRyaWJMb2NhdGlvbigKKyAgICAg
ICAgcHJvZ3JhbSwKKyAgICAgICAgb3B0X2xvY2F0aW9ucyA/IG9wdF9sb2NhdGlvbnNbaWldIDog
aWksCisgICAgICAgIGF0dHJpYnNbaWldKTsKKyAgfQorICBnbC5saW5rUHJvZ3JhbShwcm9ncmFt
KTsKKworICAvLyBDaGVjayB0aGUgbGluayBzdGF0dXMKKyAgdmFyIGxpbmtlZCA9IGdsLmdldFBy
b2dyYW1QYXJhbWV0ZXIocHJvZ3JhbSwgZ2wuTElOS19TVEFUVVMpOworICBpZiAoIWxpbmtlZCkg
eworICAgICAgLy8gc29tZXRoaW5nIHdlbnQgd3Jvbmcgd2l0aCB0aGUgbGluaworICAgICAgbGFz
dEVycm9yID0gZ2wuZ2V0UHJvZ3JhbUluZm9Mb2cgKHByb2dyYW0pOworICAgICAgbG9nKCJFcnJv
ciBpbiBwcm9ncmFtIGxpbmtpbmc6IiArIGxhc3RFcnJvcik7CisKKyAgICAgIGdsLmRlbGV0ZVBy
b2dyYW0ocHJvZ3JhbSk7CisgICAgICByZXR1cm4gbnVsbDsKKyAgfQorCisgIGdsLnVzZVByb2dy
YW0ocHJvZ3JhbSk7CisgIHJldHVybiBwcm9ncmFtOworfTsKKworLyoqCisgKiBDcmVhdGVzIGEg
c2ltcGxlIHRleHR1cmUgcHJvZ3JhbS4KKyAqIEBwYXJhbSB7IVdlYkdMQ29udGV4dH0gZ2wgVGhl
IFdlYkdMQ29udGV4dCB0byB1c2UuCisgKiBAcGFyYW0ge251bWJlcn0gb3B0X3Bvc2l0aW9uTG9j
YXRpb24gVGhlIGF0dHJpYiBsb2NhdGlvbiBmb3IgcG9zaXRpb24uCisgKiBAcGFyYW0ge251bWJl
cn0gb3B0X3RleGNvb3JkTG9jYXRpb24gVGhlIGF0dHJpYiBsb2NhdGlvbiBmb3IgdGV4dHVyZSBj
b29yZHMuCisgKiBAcmV0dXJuIHtXZWJHTFByb2dyYW19CisgKi8KK3ZhciBzZXR1cFNpbXBsZVRl
eHR1cmVQcm9ncmFtID0gZnVuY3Rpb24oCisgICAgZ2wsIG9wdF9wb3NpdGlvbkxvY2F0aW9uLCBv
cHRfdGV4Y29vcmRMb2NhdGlvbikgeworICBvcHRfcG9zaXRpb25Mb2NhdGlvbiA9IG9wdF9wb3Np
dGlvbkxvY2F0aW9uIHx8IDA7CisgIG9wdF90ZXhjb29yZExvY2F0aW9uID0gb3B0X3RleGNvb3Jk
TG9jYXRpb24gfHwgMTsKKyAgdmFyIHZzID0gc2V0dXBTaW1wbGVUZXh0dXJlVmVydGV4U2hhZGVy
KGdsKTsKKyAgdmFyIGZzID0gc2V0dXBTaW1wbGVUZXh0dXJlRnJhZ21lbnRTaGFkZXIoZ2wpOwor
ICBpZiAoIXZzIHx8ICFmcykgeworICAgIHJldHVybiBudWxsOworICB9CisgIHZhciBwcm9ncmFt
ID0gc2V0dXBQcm9ncmFtKAorICAgICAgZ2wsCisgICAgICBbdnMsIGZzXSwKKyAgICAgIFsndlBv
c2l0aW9uJywgJ3RleENvb3JkMCddLAorICAgICAgW29wdF9wb3NpdGlvbkxvY2F0aW9uLCBvcHRf
dGV4Y29vcmRMb2NhdGlvbl0pOworICBpZiAoIXByb2dyYW0pIHsKKyAgICBnbC5kZWxldGVTaGFk
ZXIoZnMpOworICAgIGdsLmRlbGV0ZVNoYWRlcih2cyk7CisgIH0KKyAgcmV0dXJuIHByb2dyYW07
Cit9OworCisvKioKKyAqIENyZWF0ZXMgYnVmZmVycyBmb3IgYSB0ZXh0dXJlZCB1bml0IHF1YWQg
YW5kIGF0dGFjaGVzIHRoZW0gdG8gdmVydGV4IGF0dHJpYnMuCisgKiBAcGFyYW0geyFXZWJHTENv
bnRleHR9IGdsIFRoZSBXZWJHTENvbnRleHQgdG8gdXNlLgorICogQHBhcmFtIHtudW1iZXJ9IG9w
dF9wb3NpdGlvbkxvY2F0aW9uIFRoZSBhdHRyaWIgbG9jYXRpb24gZm9yIHBvc2l0aW9uLgorICog
QHBhcmFtIHtudW1iZXJ9IG9wdF90ZXhjb29yZExvY2F0aW9uIFRoZSBhdHRyaWIgbG9jYXRpb24g
Zm9yIHRleHR1cmUgY29vcmRzLgorICogQHJldHVybiB7IUFycmF5LjxXZWJHTEJ1ZmZlcj59IFRo
ZSBidWZmZXIgb2JqZWN0cyB0aGF0IHdlcmUKKyAqICAgICAgY3JlYXRlZC4KKyAqLwordmFyIHNl
dHVwVW5pdFF1YWQgPSBmdW5jdGlvbihnbCwgb3B0X3Bvc2l0aW9uTG9jYXRpb24sIG9wdF90ZXhj
b29yZExvY2F0aW9uKSB7CisgIG9wdF9wb3NpdGlvbkxvY2F0aW9uID0gb3B0X3Bvc2l0aW9uTG9j
YXRpb24gfHwgMDsKKyAgb3B0X3RleGNvb3JkTG9jYXRpb24gPSBvcHRfdGV4Y29vcmRMb2NhdGlv
biB8fCAxOworICB2YXIgb2JqZWN0cyA9IFtdOworCisgIHZhciB2ZXJ0ZXhPYmplY3QgPSBnbC5j
cmVhdGVCdWZmZXIoKTsKKyAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIHZlcnRleE9i
amVjdCk7CisgIGdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCBuZXcgRmxvYXQzMkFycmF5
KAorICAgICAgWy0xLDEsMCwgMSwxLDAsIC0xLC0xLDAsCisgICAgICAgLTEsLTEsMCwgMSwxLDAs
IDEsLTEsMF0pLCBnbC5TVEFUSUNfRFJBVyk7CisgIGdsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5
KG9wdF9wb3NpdGlvbkxvY2F0aW9uKTsKKyAgZ2wudmVydGV4QXR0cmliUG9pbnRlcihvcHRfcG9z
aXRpb25Mb2NhdGlvbiwgMywgZ2wuRkxPQVQsIGZhbHNlLCAwLCAwKTsKKyAgb2JqZWN0cy5wdXNo
KHZlcnRleE9iamVjdCk7CisKKyAgdmFyIHZlcnRleE9iamVjdCA9IGdsLmNyZWF0ZUJ1ZmZlcigp
OworICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgdmVydGV4T2JqZWN0KTsKKyAgZ2wu
YnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIG5ldyBGbG9hdDMyQXJyYXkoCisgICAgICBbMCww
LCAxLDAsIDAsMSwKKyAgICAgICAwLDEsIDEsMCwgMSwxXSksIGdsLlNUQVRJQ19EUkFXKTsKKyAg
Z2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkob3B0X3RleGNvb3JkTG9jYXRpb24pOworICBnbC52
ZXJ0ZXhBdHRyaWJQb2ludGVyKG9wdF90ZXhjb29yZExvY2F0aW9uLCAyLCBnbC5GTE9BVCwgZmFs
c2UsIDAsIDApOworICBvYmplY3RzLnB1c2godmVydGV4T2JqZWN0KTsKKyAgcmV0dXJuIG9iamVj
dHM7Cit9OworCisvKioKKyAqIENyZWF0ZXMgYSBwcm9ncmFtIGFuZCBidWZmZXJzIGZvciByZW5k
ZXJpbmcgYSB0ZXh0dXJlZCBxdWFkLgorICogQHBhcmFtIHshV2ViR0xDb250ZXh0fSBnbCBUaGUg
V2ViR0xDb250ZXh0IHRvIHVzZS4KKyAqIEBwYXJhbSB7bnVtYmVyfSBvcHRfcG9zaXRpb25Mb2Nh
dGlvbiBUaGUgYXR0cmliIGxvY2F0aW9uIGZvciBwb3NpdGlvbi4KKyAqIEBwYXJhbSB7bnVtYmVy
fSBvcHRfdGV4Y29vcmRMb2NhdGlvbiBUaGUgYXR0cmliIGxvY2F0aW9uIGZvciB0ZXh0dXJlIGNv
b3Jkcy4KKyAqIEByZXR1cm4geyFXZWJHTFByb2dyYW19CisgKi8KK3ZhciBzZXR1cFRleHR1cmVk
UXVhZCA9IGZ1bmN0aW9uKAorICAgIGdsLCBvcHRfcG9zaXRpb25Mb2NhdGlvbiwgb3B0X3RleGNv
b3JkTG9jYXRpb24pIHsKKyAgdmFyIHByb2dyYW0gPSBzZXR1cFNpbXBsZVRleHR1cmVQcm9ncmFt
KAorICAgICAgZ2wsIG9wdF9wb3NpdGlvbkxvY2F0aW9uLCBvcHRfdGV4Y29vcmRMb2NhdGlvbik7
CisgIHNldHVwVW5pdFF1YWQoZ2wsIG9wdF9wb3NpdGlvbkxvY2F0aW9uLCBvcHRfdGV4Y29vcmRM
b2NhdGlvbik7CisgIHJldHVybiBwcm9ncmFtOworfTsKKworLyoqCisgKiBGaWxscyB0aGUgZ2l2
ZW4gdGV4dHVyZSB3aXRoIGEgc29saWQgY29sb3IKKyAqIEBwYXJhbSB7IVdlYkdMQ29udGV4dH0g
Z2wgVGhlIFdlYkdMQ29udGV4dCB0byB1c2UuCisgKiBAcGFyYW0geyFXZWJHTFRleHR1cmV9IHRl
eCBUaGUgdGV4dHVyZSB0byBmaWxsLgorICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoIFRoZSB3aWR0
aCBvZiB0aGUgdGV4dHVyZSB0byBjcmVhdGUuCisgKiBAcGFyYW0ge251bWJlcn0gaGVpZ2h0IFRo
ZSBoZWlnaHQgb2YgdGhlIHRleHR1cmUgdG8gY3JlYXRlLgorICogQHBhcmFtIHshQXJyYXkuPG51
bWJlcj59IGNvbG9yIFRoZSBjb2xvciB0byBmaWxsIHdpdGguIEEgNCBlbGVtZW50IGFycmF5Cisg
KiAgICAgICAgd2hlcmUgZWFjaCBlbGVtZW50IGlzIGluIHRoZSByYW5nZSAwIHRvIDI1NS4KKyAq
IEBwYXJhbSB7bnVtYmVyfSBvcHRfbGV2ZWwgVGhlIGxldmVsIG9mIHRoZSB0ZXh0dXJlIHRvIGZp
bGwuIERlZmF1bHQgPSAwLgorICovCit2YXIgZmlsbFRleHR1cmUgPSBmdW5jdGlvbihnbCwgdGV4
LCB3aWR0aCwgaGVpZ2h0LCBjb2xvciwgb3B0X2xldmVsKSB7CisgIG9wdF9sZXZlbCA9IG9wdF9s
ZXZlbCB8fCAwOworICB2YXIgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFz
Jyk7CisgIGNhbnZhcy53aWR0aCA9IHdpZHRoOworICBjYW52YXMuaGVpZ2h0ID0gaGVpZ2h0Owor
ICB2YXIgY3R4MmQgPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTsKKyAgY3R4MmQuZmlsbFN0eWxl
ID0gInJnYmEoIiArIGNvbG9yWzBdICsgIiwiICsgY29sb3JbMV0gKyAiLCIgKyBjb2xvclsyXSAr
ICIsIiArIGNvbG9yWzNdICsgIikiOworICBjdHgyZC5maWxsUmVjdCgwLCAwLCB3aWR0aCwgaGVp
Z2h0KTsKKyAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4KTsKKyAgZ2wudGV4SW1h
Z2UyRCgKKyAgICAgIGdsLlRFWFRVUkVfMkQsIG9wdF9sZXZlbCwgZ2wuUkdCQSwgZ2wuUkdCQSwg
Z2wuVU5TSUdORURfQllURSwgY2FudmFzKTsKK307CisKKy8qKgorICogQ3JlYXRlcyBhIHRleHR1
cmVzIGFuZCBmaWxscyBpdCB3aXRoIGEgc29saWQgY29sb3IKKyAqIEBwYXJhbSB7IVdlYkdMQ29u
dGV4dH0gZ2wgVGhlIFdlYkdMQ29udGV4dCB0byB1c2UuCisgKiBAcGFyYW0ge251bWJlcn0gd2lk
dGggVGhlIHdpZHRoIG9mIHRoZSB0ZXh0dXJlIHRvIGNyZWF0ZS4KKyAqIEBwYXJhbSB7bnVtYmVy
fSBoZWlnaHQgVGhlIGhlaWdodCBvZiB0aGUgdGV4dHVyZSB0byBjcmVhdGUuCisgKiBAcGFyYW0g
eyFBcnJheS48bnVtYmVyPn0gY29sb3IgVGhlIGNvbG9yIHRvIGZpbGwgd2l0aC4gQSA0IGVsZW1l
bnQgYXJyYXkKKyAqICAgICAgICB3aGVyZSBlYWNoIGVsZW1lbnQgaXMgaW4gdGhlIHJhbmdlIDAg
dG8gMjU1LgorICogQHJldHVybiB7IVdlYkdMVGV4dHVyZX0KKyAqLwordmFyIGNyZWF0ZUNvbG9y
ZWRUZXh0dXJlID0gZnVuY3Rpb24oZ2wsIHdpZHRoLCBoZWlnaHQsIGNvbG9yKSB7CisgIHZhciB0
ZXggPSBnbC5jcmVhdGVUZXh0dXJlKCk7CisgIGZpbGxUZXh0dXJlKGdsLCB0ZXh0LCB3aWR0aCwg
aGVpZ2h0LCBjb2xvcik7CisgIHJldHVybiB0ZXg7Cit9OworCisvKioKKyAqIERyYXdzIGEgcHJl
dmlvdXNseSBzZXR1cCBxdWFkLgorICogQHBhcmFtIHshV2ViR0xDb250ZXh0fSBnbCBUaGUgV2Vi
R0xDb250ZXh0IHRvIHVzZS4KKyAqIEBwYXJhbSB7IUFycmF5LjxudW1iZXI+fSBvcHRfY29sb3Ig
VGhlIGNvbG9yIHRvIGZpbGwgY2xlYXIgd2l0aCBiZWZvcmUKKyAqICAgICAgICBkcmF3aW5nLiBB
IDQgZWxlbWVudCBhcnJheSB3aGVyZSBlYWNoIGVsZW1lbnQgaXMgaW4gdGhlIHJhbmdlIDAgdG8K
KyAqICAgICAgICAyNTUuIERlZmF1bHQgWzI1NSwgMjU1LCAyNTUsIDI1NV0KKyAqLwordmFyIGRy
YXdRdWFkID0gZnVuY3Rpb24oZ2wsIG9wdF9jb2xvcikgeworICBvcHRfY29sb3IgPSBvcHRfY29s
b3IgfHwgWzI1NSwgMjU1LCAyNTUsIDI1NV07CisgIGdsLmNsZWFyQ29sb3IoCisgICAgICBvcHRf
Y29sb3JbMF0gLyAyNTUsCisgICAgICBvcHRfY29sb3JbMV0gLyAyNTUsCisgICAgICBvcHRfY29s
b3JbMl0gLyAyNTUsCisgICAgICBvcHRfY29sb3JbM10gLyAyNTUpOworICBnbC5jbGVhcihnbC5D
T0xPUl9CVUZGRVJfQklUIHwgZ2wuREVQVEhfQlVGRkVSX0JJVCk7CisgIGdsLmRyYXdBcnJheXMo
Z2wuVFJJQU5HTEVTLCAwLCA2KTsKK307CisKKy8qKgorICogQ2hlY2tzIHRoYXQgYW4gZW50aXJl
IGNhbnZhcyBpcyAxIGNvbG9yLgorICogQHBhcmFtIHshV2ViR0xDb250ZXh0fSBnbCBUaGUgV2Vi
R0xDb250ZXh0IHRvIHVzZS4KKyAqIEBwYXJhbSB7IUFycmF5LjxudW1iZXI+fSBjb2xvciBUaGUg
Y29sb3IgdG8gZmlsbCBjbGVhciB3aXRoIGJlZm9yZSBkcmF3aW5nLiBBCisgKiAgICAgICAgNCBl
bGVtZW50IGFycmF5IHdoZXJlIGVhY2ggZWxlbWVudCBpcyBpbiB0aGUgcmFuZ2UgMCB0byAyNTUu
CisgKiBAcGFyYW0ge3N0cmluZ30gbXNnIE1lc3NhZ2UgdG8gYXNzb2NpYXRlIHdpdGggc3VjY2Vz
cy4gRWcgKCJzaG91bGQgYmUgcmVkIikuCisgKi8KK3ZhciBjaGVja0NhbnZhcyA9IGZ1bmN0aW9u
KGdsLCBjb2xvciwgbXNnKSB7CisgIHZhciB3aWR0aCA9IGdsLmNhbnZhcy53aWR0aDsKKyAgdmFy
IGhlaWdodCA9IGdsLmNhbnZhcy5oZWlnaHQ7CisgIHZhciBidWYgPSBuZXcgVWludDhBcnJheSh3
aWR0aCAqIGhlaWdodCAqIDQpOworICBnbC5yZWFkUGl4ZWxzKDAsIDAsIHdpZHRoLCBoZWlnaHQs
IGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIGJ1Zik7CisgIGZvciAodmFyIGkgPSAwOyBpIDwg
d2lkdGggKiBoZWlnaHQ7ICsraSkgeworICAgIHZhciBvZmZzZXQgPSBpICogNDsKKyAgICBpZiAo
YnVmW29mZnNldCArIDBdICE9IGNvbG9yWzBdIHx8CisgICAgICAgIGJ1ZltvZmZzZXQgKyAxXSAh
PSBjb2xvclsxXSB8fAorICAgICAgICBidWZbb2Zmc2V0ICsgMl0gIT0gY29sb3JbMl0gfHwKKyAg
ICAgICAgYnVmW29mZnNldCArIDNdICE9IGNvbG9yWzNdKSB7CisgICAgICB0ZXN0RmFpbGVkKG1z
Zyk7CisgICAgICBkZWJ1ZygnZXhwZWN0ZWQ6ICcgKworICAgICAgICAgIGNvbG9yWzBdICsgJywg
JyArCisgICAgICAgICAgY29sb3JbMV0gKyAnLCAnICsKKyAgICAgICAgICBjb2xvclsyXSArICcs
ICcgKworICAgICAgICAgIGNvbG9yWzNdICsgJyB3YXM6ICcgKworICAgICAgICAgIGJ1ZltvZmZz
ZXQgKyAwXSArICcsICcgKworICAgICAgICAgIGJ1ZltvZmZzZXQgKyAxXSArICcsICcgKworICAg
ICAgICAgIGJ1ZltvZmZzZXQgKyAyXSArICcsICcgKworICAgICAgICAgIGJ1ZltvZmZzZXQgKyAz
XSk7CisgICAgICByZXR1cm47CisgICAgfQorICB9CisgIHRlc3RQYXNzZWQobXNnKTsKK307CisK
Ky8qKgorICogQ3JlYXRlcyBhIHdlYmdsIGNvbnRleHQuCisgKiBAcGFyYW0geyFDYW52YXN9IG9w
dF9jYW52YXMgVGhlIGNhbnZhcyB0YWcgdG8gZ2V0IGNvbnRleHQgZnJvbS4gSWYgb25lIGlzIG5v
dAorICogICAgIHBhc3NlZCBpbiBvbmUgd2lsbCBiZSBjcmVhdGVkLgorICogQHJldHVybiB7IVdl
YkdMQ29udGV4dH0gVGhlIGNyZWF0ZWQgY29udGV4dC4KKyAqLwordmFyIGNyZWF0ZTNEQ29udGV4
dCA9IGZ1bmN0aW9uKG9wdF9jYW52YXMpIHsKKyAgb3B0X2NhbnZhcyA9IG9wdF9jYW52YXMgfHwg
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7CisgIHZhciBjb250ZXh0ID0gbnVsbDsK
KyAgdHJ5IHsKKyAgICBjb250ZXh0ID0gb3B0X2NhbnZhcy5nZXRDb250ZXh0KCJleHBlcmltZW50
YWwtd2ViZ2wiKTsKKyAgfSBjYXRjaChlKSB7fQorICBpZiAoIWNvbnRleHQpIHsKKyAgICB0cnkg
eworICAgICAgY29udGV4dCA9IG9wdF9jYW52YXMuZ2V0Q29udGV4dCgid2Via2l0LTNkIik7Cisg
ICAgfSBjYXRjaChlKSB7fQorICB9CisgIGlmICghY29udGV4dCkgeworICAgIHRyeSB7CisgICAg
ICBjb250ZXh0ID0gb3B0X2NhbnZhcy5nZXRDb250ZXh0KCJtb3otd2ViZ2wiKTsKKyAgICB9IGNh
dGNoKGUpIHt9CisgIH0KKyAgaWYgKCFjb250ZXh0KSB7CisgICAgdGVzdEZhaWxlZCgiVW5hYmxl
IHRvIGZldGNoIFdlYkdMIHJlbmRlcmluZyBjb250ZXh0IGZvciBDYW52YXMiKTsKKyAgfQorICBy
ZXR1cm4gY29udGV4dDsKK30KKworLyoqCisgKiBHZXRzIGEgR0xFcnJvciB2YWx1ZSBhcyBhIHN0
cmluZy4KKyAqIEBwYXJhbSB7IVdlYkdMQ29udGV4dH0gZ2wgVGhlIFdlYkdMQ29udGV4dCB0byB1
c2UuCisgKiBAcGFyYW0ge251bWJlcn0gZXJyIFRoZSB3ZWJnbCBlcnJvciBhcyByZXRyaWV2ZWQg
ZnJvbSBnbC5nZXRFcnJvcigpLgorICogQHJldHVybiB7c3RyaW5nfSB0aGUgZXJyb3IgYXMgYSBz
dHJpbmcuCisgKi8KK3ZhciBnZXRHTEVycm9yQXNTdHJpbmcgPSBmdW5jdGlvbihnbCwgZXJyKSB7
CisgIGlmIChlcnIgPT09IGdsLk5PX0VSUk9SKSB7CisgICAgcmV0dXJuICJOT19FUlJPUiI7Cisg
IH0KKyAgZm9yICh2YXIgbmFtZSBpbiBnbCkgeworICAgIGlmIChnbFtuYW1lXSA9PT0gZXJyKSB7
CisgICAgICByZXR1cm4gbmFtZTsKKyAgICB9CisgIH0KKyAgcmV0dXJuIGVyci50b1N0cmluZygp
OworfTsKKworLyoqCisgKiBXcmFwcyBhIFdlYkdMIGZ1bmN0aW9uIHdpdGggYSBmdW5jdGlvbiB0
aGF0IHRocm93cyBhbiBleGNlcHRpb24gaWYgdGhlcmUgaXMKKyAqIGFuIGVycm9yLgorICogQHBh
cmFtIHshV2ViR0xDb250ZXh0fSBnbCBUaGUgV2ViR0xDb250ZXh0IHRvIHVzZS4KKyAqIEBwYXJh
bSB7c3RyaW5nfSBmbmFtZSBOYW1lIG9mIGZ1bmN0aW9uIHRvIHdyYXAuCisgKiBAcmV0dXJuIHtm
dW5jdGlvbn0gVGhlIHdyYXBwZWQgZnVuY3Rpb24uCisgKi8KK3ZhciBjcmVhdGVHTEVycm9yV3Jh
cHBlciA9IGZ1bmN0aW9uKGNvbnRleHQsIGZuYW1lKSB7CisgIHJldHVybiBmdW5jdGlvbigpIHsK
KyAgICB2YXIgcnYgPSBjb250ZXh0W2ZuYW1lXS5hcHBseShjb250ZXh0LCBhcmd1bWVudHMpOwor
ICAgIHZhciBlcnIgPSBjb250ZXh0LmdldEVycm9yKCk7CisgICAgaWYgKGVyciAhPSAwKQorICAg
ICAgdGhyb3cgIkdMIGVycm9yICIgKyBnZXRHTEVycm9yQXNTdHJpbmcoZXJyKSArICIgaW4gIiAr
IGZuYW1lOworICAgIHJldHVybiBydjsKKyAgfTsKK307CisKKy8qKgorICogQ3JlYXRlcyBhIFdl
YkdMIGNvbnRleHQgd2hlcmUgYWxsIGZ1bmN0aW9ucyBhcmUgd3JhcHBlZCB0byB0aHJvdyBhbiBl
eGNlcHRpb24KKyAqIGlmIHRoZXJlIGlzIGFuIGVycm9yLgorICogQHBhcmFtIHshQ2FudmFzfSBj
YW52YXMgVGhlIEhUTUwgY2FudmFzIHRvIGdldCBhIGNvbnRleHQgZnJvbS4KKyAqIEByZXR1cm4g
eyFPYmplY3R9IFRoZSB3cmFwcGVkIGNvbnRleHQuCisgKi8KK2Z1bmN0aW9uIGNyZWF0ZTNEQ29u
dGV4dFdpdGhXcmFwcGVyVGhhdFRocm93c09uR0xFcnJvcihjYW52YXMpIHsKKyAgdmFyIGNvbnRl
eHQgPSBjcmVhdGUzRENvbnRleHQoY2FudmFzKTsKKyAgdmFyIHdyYXAgPSB7fTsKKyAgZm9yICh2
YXIgaSBpbiBjb250ZXh0KSB7CisgICAgdHJ5IHsKKyAgICAgIGlmICh0eXBlb2YgY29udGV4dFtp
XSA9PSAnZnVuY3Rpb24nKSB7CisgICAgICAgIHdyYXBbaV0gPSBjcmVhdGVHTEVycm9yV3JhcHBl
cihjb250ZXh0LCBpKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHdyYXBbaV0gPSBjb250ZXh0
W2ldOworICAgICAgfQorICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgIGxvZygiY3JlYXRlQ29udGV4
dFdyYXBwZXJUaGF0VGhyb3dzT25HTEVycm9yOiBFcnJvciBhY2Nlc3NpbmcgIiArIGkpOworICAg
IH0KKyAgfQorICB3cmFwLmdldEVycm9yID0gZnVuY3Rpb24oKSB7CisgICAgICByZXR1cm4gY29u
dGV4dC5nZXRFcnJvcigpOworICB9OworICByZXR1cm4gd3JhcDsKK307CisKKy8qKgorICogVGVz
dHMgdGhhdCBhbiBldmFsdWF0ZWQgZXhwcmVzc2lvbiBnZW5lcmF0ZXMgYSBzcGVjaWZpYyBHTCBl
cnJvci4KKyAqIEBwYXJhbSB7IVdlYkdMQ29udGV4dH0gZ2wgVGhlIFdlYkdMQ29udGV4dCB0byB1
c2UuCisgKiBAcGFyYW0ge251bWJlcn0gZ2xFcnJvciBUaGUgZXhwZWN0ZWQgZ2wgZXJyb3IuCisg
KiBAcGFyYW0ge3N0cmluZ30gZXZhbFNUciBUaGUgc3RyaW5nIHRvIGV2YWx1YXRlLgorICovCit2
YXIgc2hvdWxkR2VuZXJhdGVHTEVycm9yID0gZnVuY3Rpb24oZ2wsIGdsRXJyb3IsIGV2YWxTdHIp
IHsKKyAgdmFyIGV4Y2VwdGlvbjsKKyAgdHJ5IHsKKyAgICBldmFsKGV2YWxTdHIpOworICB9IGNh
dGNoIChlKSB7CisgICAgZXhjZXB0aW9uID0gZTsKKyAgfQorICBpZiAoZXhjZXB0aW9uKSB7Cisg
ICAgdGVzdEZhaWxlZChldmFsU3RyICsgIiB0aHJldyBleGNlcHRpb24gIiArIGV4Y2VwdGlvbik7
CisgIH0gZWxzZSB7CisgICAgdmFyIGVyciA9IGdsLmdldEVycm9yKCk7CisgICAgaWYgKGVyciAh
PSBnbEVycm9yKSB7CisgICAgICB0ZXN0RmFpbGVkKGV2YWxTdHIgKyAiIGV4cGVjdGVkOiAiICsg
Z2V0R0xFcnJvckFzU3RyaW5nKGdsLCBnbEVycm9yKSArICIuIFdhcyAiICsgZ2V0R0xFcnJvckFz
U3RyaW5nKGdsLCBlcnIpICsgIi4iKTsKKyAgICB9IGVsc2UgeworICAgICAgdGVzdFBhc3NlZChl
dmFsU3RyICsgIiB3YXMgZXhwZWN0ZWQgdmFsdWU6ICIgKyBnZXRHTEVycm9yQXNTdHJpbmcoZ2ws
IGdsRXJyb3IpICsgIi4iKTsKKyAgICB9CisgIH0KK307CisKKy8qKgorICogVGVzdHMgdGhhdCB0
aGUgZmlyc3QgZXJyb3IgR0wgcmV0dXJucyBpcyB0aGUgc3BlY2lmaWVkIGVycm9yLgorICogQHBh
cmFtIHshV2ViR0xDb250ZXh0fSBnbCBUaGUgV2ViR0xDb250ZXh0IHRvIHVzZS4KKyAqIEBwYXJh
bSB7bnVtYmVyfSBnbEVycm9yIFRoZSBleHBlY3RlZCBnbCBlcnJvci4KKyAqIEBwYXJhbSB7c3Ry
aW5nfSBvcHRfbXNnCisgKi8KK3ZhciBnbEVycm9yU2hvdWxkQmUgPSBmdW5jdGlvbihnbCwgZ2xF
cnJvciwgb3B0X21zZykgeworICBvcHRfbXNnID0gb3B0X21zZyB8fCAiIjsKKyAgdmFyIGVyciA9
IGdsLmdldEVycm9yKCk7CisgIGlmIChlcnIgIT0gZ2xFcnJvcikgeworICAgIHRlc3RGYWlsZWQo
ImdldEVycm9yIGV4cGVjdGVkOiAiICsgZ2V0R0xFcnJvckFzU3RyaW5nKGdsLCBnbEVycm9yKSAr
CisgICAgICAgICAgICAgICAiLiBXYXMgIiArIGdldEdMRXJyb3JBc1N0cmluZyhnbCwgZXJyKSAr
ICIgOiAiICsgb3B0X21zZyk7CisgIH0gZWxzZSB7CisgICAgdGVzdFBhc3NlZCgiZ2V0RXJyb3Ig
d2FzIGV4cGVjdGVkIHZhbHVlOiAiICsKKyAgICAgICAgICAgICAgICBnZXRHTEVycm9yQXNTdHJp
bmcoZ2wsIGdsRXJyb3IpICsgIiA6ICIgKyBvcHRfbXNnKTsKKyAgfQorfTsKKworLyoqCisgKiBM
aW5rcyBhIFdlYkdMIHByb2dyYW0sIHRocm93cyBpZiB0aGVyZSBhcmUgZXJyb3JzLgorICogQHBh
cmFtIHshV2ViR0xDb250ZXh0fSBnbCBUaGUgV2ViR0xDb250ZXh0IHRvIHVzZS4KKyAqIEBwYXJh
bSB7IVdlYkdMUHJvZ3JhbX0gcHJvZ3JhbSBUaGUgV2ViR0xQcm9ncmFtIHRvIGxpbmsuCisgKi8K
K3ZhciBsaW5rUHJvZ3JhbSA9IGZ1bmN0aW9uKGdsLCBwcm9ncmFtKSB7CisgIC8vIExpbmsgdGhl
IHByb2dyYW0KKyAgZ2wubGlua1Byb2dyYW0ocHJvZ3JhbSk7CisKKyAgLy8gQ2hlY2sgdGhlIGxp
bmsgc3RhdHVzCisgIHZhciBsaW5rZWQgPSBnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKHByb2dyYW0s
IGdsLkxJTktfU1RBVFVTKTsKKyAgaWYgKCFsaW5rZWQpIHsKKyAgICAvLyBzb21ldGhpbmcgd2Vu
dCB3cm9uZyB3aXRoIHRoZSBsaW5rCisgICAgdmFyIGVycm9yID0gZ2wuZ2V0UHJvZ3JhbUluZm9M
b2cgKHByb2dyYW0pOworCisgICAgZ2wuZGVsZXRlUHJvZ3JhbShwcm9ncmFtKTsKKyAgICBnbC5k
ZWxldGVQcm9ncmFtKGZyYWdtZW50U2hhZGVyKTsKKyAgICBnbC5kZWxldGVQcm9ncmFtKHZlcnRl
eFNoYWRlcik7CisKKyAgICB0ZXN0RmFpbGVkKCJFcnJvciBpbiBwcm9ncmFtIGxpbmtpbmc6IiAr
IGVycm9yKTsKKyAgfQorfTsKKworLyoqCisgKiBTZXRzIHVwIFdlYkdMIHdpdGggc2hhZGVycy4K
KyAqIEBwYXJhbSB7c3RyaW5nfSBjYW52YXNOYW1lIFRoZSBpZCBvZiB0aGUgY2FudmFzLgorICog
QHBhcmFtIHtzdHJpbmd9IHZzaGFkZXIgVGhlIGlkIG9mIHRoZSBzY3JpcHQgdGFnIHRoYXQgY29u
dGFpbnMgdGhlIHZlcnRleAorICogICAgIHNoYWRlciBzb3VyY2UuCisgKiBAcGFyYW0ge3N0cmlu
Z30gZnNoYWRlciBUaGUgaWQgb2YgdGhlIHNjcmlwdCB0YWcgdGhhdCBjb250YWlucyB0aGUgZnJh
Z21lbnQKKyAqICAgICBzaGFkZXIgc291cmNlLgorICogQHBhcmFtIHshQXJyYXkuPHN0cmluZz59
IGF0dHJpYnMgQW4gYXJyYXkgb2YgYXR0cmliIG5hbWVzIHVzZWQgdG8gYmluZAorICogICAgIGF0
dHJpYnMgdG8gdGhlIG9yZGluYWwgb2YgdGhlIG5hbWUgaW4gdGhpcyBhcnJheS4KKyAqIEBwYXJh
bSB7IUFycmF5LjxudW1iZXI+fSBvcHRfY2xlYXJDb2xvciBUaGUgY29sb3IgdG8gY2xhCisgKiBA
cmV0dXJuIHshV2ViR0xDb250ZXh0fSBUaGUgY3JlYXRlZCBXZWJHTENvbnRleHQuCisgKi8KK3Zh
ciBzZXR1cFdlYkdMV2l0aFNoYWRlcnMgPSBmdW5jdGlvbigKKyAgIGNhbnZhc05hbWUsIHZzaGFk
ZXIsIGZzaGFkZXIsIGF0dHJpYnMpIHsKKyAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKGNhbnZhc05hbWUpOworICB2YXIgZ2wgPSBjcmVhdGUzRENvbnRleHQoY2FudmFzKTsK
KyAgaWYgKCFnbCkgeworICAgIHRlc3RGYWlsZWQoIk5vIFdlYkdMIGNvbnRleHQgZm91bmQiKTsK
KyAgfQorCisgIC8vIGNyZWF0ZSBvdXIgc2hhZGVycworICB2YXIgdmVydGV4U2hhZGVyID0gbG9h
ZFNoYWRlckZyb21TY3JpcHQoZ2wsIHZzaGFkZXIpOworICB2YXIgZnJhZ21lbnRTaGFkZXIgPSBs
b2FkU2hhZGVyRnJvbVNjcmlwdChnbCwgZnNoYWRlcik7CisKKyAgaWYgKCF2ZXJ0ZXhTaGFkZXIg
fHwgIWZyYWdtZW50U2hhZGVyKSB7CisgICAgcmV0dXJuIG51bGw7CisgIH0KKworICAvLyBDcmVh
dGUgdGhlIHByb2dyYW0gb2JqZWN0CisgIHByb2dyYW0gPSBnbC5jcmVhdGVQcm9ncmFtKCk7CisK
KyAgaWYgKCFwcm9ncmFtKSB7CisgICAgcmV0dXJuIG51bGw7CisgIH0KKworICAvLyBBdHRhY2gg
b3VyIHR3byBzaGFkZXJzIHRvIHRoZSBwcm9ncmFtCisgIGdsLmF0dGFjaFNoYWRlciAocHJvZ3Jh
bSwgdmVydGV4U2hhZGVyKTsKKyAgZ2wuYXR0YWNoU2hhZGVyIChwcm9ncmFtLCBmcmFnbWVudFNo
YWRlcik7CisKKyAgLy8gQmluZCBhdHRyaWJ1dGVzCisgIGZvciAodmFyIGkgaW4gYXR0cmlicykg
eworICAgIGdsLmJpbmRBdHRyaWJMb2NhdGlvbiAocHJvZ3JhbSwgaSwgYXR0cmlic1tpXSk7Cisg
IH0KKworICBsaW5rUHJvZ3JhbShnbCwgcHJvZ3JhbSk7CisKKyAgZ2wudXNlUHJvZ3JhbShwcm9n
cmFtKTsKKworICBnbC5lbmFibGUoZ2wuREVQVEhfVEVTVCk7CisgIGdsLmVuYWJsZShnbC5CTEVO
RCk7CisgIGdsLmJsZW5kRnVuYyhnbC5TUkNfQUxQSEEsIGdsLk9ORV9NSU5VU19TUkNfQUxQSEEp
OworCisgIGdsLnByb2dyYW0gPSBwcm9ncmFtOworICByZXR1cm4gZ2w7Cit9OworCisvKioKKyAq
IEdldHMgYSBmaWxlIGZyb20gYSBmaWxlL1VSTAorICogQHBhcmFtIHtzdHJpbmd9IGZpbGUgdGhl
IFVSTCBvZiB0aGUgZmlsZSB0byBnZXQuCisgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBjb250ZW50
cyBvZiB0aGUgZmlsZS4KKyAqLwordmFyIHJlYWRGaWxlID0gZnVuY3Rpb24oZmlsZSkgeworICB2
YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CisgIHhoci5vcGVuKCJHRVQiLCBmaWxlLCBm
YWxzZSk7CisgIHhoci5zZW5kKCk7CisgIHJldHVybiB4aHIucmVzcG9uc2VUZXh0OworfTsKKwor
LyoqCisgKiBHZXRzIGEgZmlsZSBmcm9tIGEgVVJMIGFuZCBwYXJzZXMgaXQgZm9yIGZpbGVuYW1l
cy4gSUYgYSBmaWxlIG5hbWUgZW5kcworICogaW4gLnR4dCByZWN1cnNpdmVseSByZWFkcyB0aGF0
IGZpbGUgYW5kIGFkZHMgaXQgdG8gdGhlIGxpc3QuCisgKi8KK3ZhciByZWFkRmlsZUxpc3QgPSBm
dW5jdGlvbih1cmwpIHsKKyAgdmFyIGZpbGVzID0gW107CisgIGlmICh1cmwuc3Vic3RyKHVybC5s
ZW5ndGggLSA0KSA9PSAnLnR4dCcpIHsKKyAgICB2YXIgbGluZXMgPSByZWFkRmlsZSh1cmwpLnNw
bGl0KCdcbicpOworICAgIHZhciBwcmVmaXggPSAnJzsKKyAgICB2YXIgbGFzdFNsYXNoID0gdXJs
Lmxhc3RJbmRleE9mKCcvJyk7CisgICAgaWYgKGxhc3RTbGFzaCA+PSAwKSB7CisgICAgICBwcmVm
aXggPSB1cmwuc3Vic3RyKDAsIGxhc3RTbGFzaCArIDEpOworICAgIH0KKyAgICBmb3IgKHZhciBp
aSA9IDA7IGlpIDwgbGluZXMubGVuZ3RoOyArK2lpKSB7CisgICAgICB2YXIgc3RyID0gbGluZXNb
aWldLnJlcGxhY2UoL15cc1xzKi8sICcnKS5yZXBsYWNlKC9cc1xzKiQvLCAnJyk7CisgICAgICBp
ZiAoc3RyLmxlbmd0aCA+IDQgJiYKKyAgICAgICAgICBzdHJbMF0gIT0gJyMnICYmCisgICAgICAg
ICAgc3RyWzBdICE9ICI7IiAmJgorICAgICAgICAgIHN0ci5zdWJzdHIoMCwgMikgIT0gIi8vIikg
eworICAgICAgICBuZXdfdXJsID0gcHJlZml4ICsgc3RyOworICAgICAgICBmaWxlcyA9IGZpbGVz
LmNvbmNhdChyZWFkRmlsZUxpc3QobmV3X3VybCkpOworICAgICAgfQorICAgIH0KKyAgfSBlbHNl
IHsKKyAgICBmaWxlcy5wdXNoKHVybCk7CisgIH0KKyAgcmV0dXJuIGZpbGVzOworfTsKKworLyoq
CisgKiBMb2FkcyBhIHNoYWRlci4KKyAqIEBwYXJhbSB7IVdlYkdMQ29udGV4dH0gZ2wgVGhlIFdl
YkdMQ29udGV4dCB0byB1c2UuCisgKiBAcGFyYW0ge3N0cmluZ30gc2hhZGVyU291cmNlIFRoZSBz
aGFkZXIgc291cmNlLgorICogQHBhcmFtIHtudW1iZXJ9IHNoYWRlclR5cGUgVGhlIHR5cGUgb2Yg
c2hhZGVyLgorICogQHJldHVybiB7IVdlYkdMU2hhZGVyfSBUaGUgY3JlYXRlZCBzaGFkZXIuCisg
Ki8KK3ZhciBsb2FkU2hhZGVyID0gZnVuY3Rpb24oZ2wsIHNoYWRlclNvdXJjZSwgc2hhZGVyVHlw
ZSkgeworICAvLyBDcmVhdGUgdGhlIHNoYWRlciBvYmplY3QKKyAgdmFyIHNoYWRlciA9IGdsLmNy
ZWF0ZVNoYWRlcihzaGFkZXJUeXBlKTsKKyAgaWYgKHNoYWRlciA9PSBudWxsKSB7CisgICAgbG9n
KCIqKiogRXJyb3I6IHVuYWJsZSB0byBjcmVhdGUgc2hhZGVyICciK3NoYWRlclNvdXJjZSsiJyIp
OworICAgIHJldHVybiBudWxsOworICB9CisKKyAgLy8gTG9hZCB0aGUgc2hhZGVyIHNvdXJjZQor
ICBnbC5zaGFkZXJTb3VyY2Uoc2hhZGVyLCBzaGFkZXJTb3VyY2UpOworCisgIC8vIENvbXBpbGUg
dGhlIHNoYWRlcgorICBnbC5jb21waWxlU2hhZGVyKHNoYWRlcik7CisKKyAgLy8gQ2hlY2sgdGhl
IGNvbXBpbGUgc3RhdHVzCisgIHZhciBjb21waWxlZCA9IGdsLmdldFNoYWRlclBhcmFtZXRlcihz
aGFkZXIsIGdsLkNPTVBJTEVfU1RBVFVTKTsKKyAgaWYgKCFjb21waWxlZCkgeworICAgIC8vIFNv
bWV0aGluZyB3ZW50IHdyb25nIGR1cmluZyBjb21waWxhdGlvbjsgZ2V0IHRoZSBlcnJvcgorICAg
IGxhc3RFcnJvciA9IGdsLmdldFNoYWRlckluZm9Mb2coc2hhZGVyKTsKKyAgICBsb2coIioqKiBF
cnJvciBjb21waWxpbmcgc2hhZGVyICciICsgc2hhZGVyICsgIic6IiArIGxhc3RFcnJvcik7Cisg
ICAgZ2wuZGVsZXRlU2hhZGVyKHNoYWRlcik7CisgICAgcmV0dXJuIG51bGw7CisgIH0KKworICBy
ZXR1cm4gc2hhZGVyOworfQorCisvKioKKyAqIExvYWRzIGEgc2hhZGVyIGZyb20gYSBVUkwuCisg
KiBAcGFyYW0geyFXZWJHTENvbnRleHR9IGdsIFRoZSBXZWJHTENvbnRleHQgdG8gdXNlLgorICog
QHBhcmFtIHtmaWxlfSBmaWxlIFRoZSBVUkwgb2YgdGhlIHNoYWRlciBzb3VyY2UuCisgKiBAcGFy
YW0ge251bWJlcn0gdHlwZSBUaGUgdHlwZSBvZiBzaGFkZXIuCisgKiBAcmV0dXJuIHshV2ViR0xT
aGFkZXJ9IFRoZSBjcmVhdGVkIHNoYWRlci4KKyAqLwordmFyIGxvYWRTaGFkZXJGcm9tRmlsZSA9
IGZ1bmN0aW9uKGdsLCBmaWxlLCB0eXBlKSB7CisgIHZhciBzaGFkZXJTb3VyY2UgPSByZWFkRmls
ZShmaWxlKTsKKyAgcmV0dXJuIGxvYWRTaGFkZXIoZ2wsIHNoYWRlclNvdXJjZSwgdHlwZSk7Cit9
OworCisvKioKKyAqIExvYWRzIGEgc2hhZGVyIGZyb20gYSBzY3JpcHQgdGFnLgorICogQHBhcmFt
IHshV2ViR0xDb250ZXh0fSBnbCBUaGUgV2ViR0xDb250ZXh0IHRvIHVzZS4KKyAqIEBwYXJhbSB7
c3RyaW5nfSBzY3JpcHRJZCBUaGUgaWQgb2YgdGhlIHNjcmlwdCB0YWcuCisgKiBAcGFyYW0ge251
bWJlcn0gb3B0X3NoYWRlclR5cGUgVGhlIHR5cGUgb2Ygc2hhZGVyLiBJZiBub3QgcGFzc2VkIGlu
IGl0IHdpbGwKKyAqICAgICBiZSBkZXJpdmVkIGZyb20gdGhlIHR5cGUgb2YgdGhlIHNjcmlwdCB0
YWcuCisgKiBAcmV0dXJuIHshV2ViR0xTaGFkZXJ9IFRoZSBjcmVhdGVkIHNoYWRlci4KKyAqLwor
dmFyIGxvYWRTaGFkZXJGcm9tU2NyaXB0ID0gZnVuY3Rpb24oZ2wsIHNjcmlwdElkLCBvcHRfc2hh
ZGVyVHlwZSkgeworICB2YXIgc2hhZGVyU291cmNlID0gIiI7CisgIHZhciBzaGFkZXJUeXBlOwor
ICB2YXIgc2hhZGVyU2NyaXB0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoc2NyaXB0SWQpOwor
ICBpZiAoIXNoYWRlclNjcmlwdCkgeworICAgIHRocm93KCIqKiogRXJyb3I6IHVua25vd24gc2Ny
aXB0IGVsZW1lbnQiICsgc2NyaXB0SWQpOworICB9CisgIHNoYWRlclNvdXJjZSA9IHNoYWRlclNj
cmlwdC50ZXh0OworCisgIGlmICghb3B0X3NoYWRlclR5cGUpIHsKKyAgICBpZiAoc2hhZGVyU2Ny
aXB0LnR5cGUgPT0gIngtc2hhZGVyL3gtdmVydGV4IikgeworICAgICAgc2hhZGVyVHlwZSA9IGds
LlZFUlRFWF9TSEFERVI7CisgICAgfSBlbHNlIGlmIChzaGFkZXJTY3JpcHQudHlwZSA9PSAieC1z
aGFkZXIveC1mcmFnbWVudCIpIHsKKyAgICAgIHNoYWRlclR5cGUgPSBnbC5GUkFHTUVOVF9TSEFE
RVI7CisgICAgfSBlbHNlIGlmIChzaGFkZXJUeXBlICE9IGdsLlZFUlRFWF9TSEFERVIgJiYgc2hh
ZGVyVHlwZSAhPSBnbC5GUkFHTUVOVF9TSEFERVIpIHsKKyAgICAgIHRocm93KCIqKiogRXJyb3I6
IHVua25vd24gc2hhZGVyIHR5cGUiKTsKKyAgICAgIHJldHVybiBudWxsOworICAgIH0KKyAgfQor
CisgIHJldHVybiBsb2FkU2hhZGVyKAorICAgICAgZ2wsIHNoYWRlclNvdXJjZSwgb3B0X3NoYWRl
clR5cGUgPyBvcHRfc2hhZGVyVHlwZSA6IHNoYWRlclR5cGUpOworfTsKKwordmFyIGxvYWRTdGFu
ZGFyZFByb2dyYW0gPSBmdW5jdGlvbihnbCkgeworICB2YXIgcHJvZ3JhbSA9IGdsLmNyZWF0ZVBy
b2dyYW0oKTsKKyAgZ2wuYXR0YWNoU2hhZGVyKHByb2dyYW0sIGxvYWRTdGFuZGFyZFZlcnRleFNo
YWRlcihnbCkpOworICBnbC5hdHRhY2hTaGFkZXIocHJvZ3JhbSwgbG9hZFN0YW5kYXJkRnJhZ21l
bnRTaGFkZXIoZ2wpKTsKKyAgbGlua1Byb2dyYW0oZ2wsIHByb2dyYW0pOworICByZXR1cm4gcHJv
Z3JhbTsKK307CisKKy8qKgorICogTG9hZHMgc2hhZGVycyBmcm9tIGZpbGVzLCBjcmVhdGVzIGEg
cHJvZ3JhbSwgYXR0YWNoZXMgdGhlIHNoYWRlcnMgYW5kIGxpbmtzLgorICogQHBhcmFtIHshV2Vi
R0xDb250ZXh0fSBnbCBUaGUgV2ViR0xDb250ZXh0IHRvIHVzZS4KKyAqIEBwYXJhbSB7c3RyaW5n
fSB2ZXJ0ZXhTaGFkZXJQYXRoIFRoZSBVUkwgb2YgdGhlIHZlcnRleCBzaGFkZXIuCisgKiBAcGFy
YW0ge3N0cmluZ30gZnJhZ21lbnRTaGFkZXJQYXRoIFRoZSBVUkwgb2YgdGhlIGZyYWdtZW50IHNo
YWRlci4KKyAqIEByZXR1cm4geyFXZWJHTFByb2dyYW19IFRoZSBjcmVhdGVkIHByb2dyYW0uCisg
Ki8KK3ZhciBsb2FkUHJvZ3JhbUZyb21GaWxlID0gZnVuY3Rpb24oZ2wsIHZlcnRleFNoYWRlclBh
dGgsIGZyYWdtZW50U2hhZGVyUGF0aCkgeworICB2YXIgcHJvZ3JhbSA9IGdsLmNyZWF0ZVByb2dy
YW0oKTsKKyAgZ2wuYXR0YWNoU2hhZGVyKAorICAgICAgcHJvZ3JhbSwKKyAgICAgIGxvYWRTaGFk
ZXJGcm9tRmlsZShnbCwgdmVydGV4U2hhZGVyUGF0aCwgZ2wuVkVSVEVYX1NIQURFUikpOworICBn
bC5hdHRhY2hTaGFkZXIoCisgICAgICBwcm9ncmFtLAorICAgICAgbG9hZFNoYWRlckZyb21GaWxl
KGdsLCBmcmFnbWVudFNoYWRlclBhdGgsIGdsLkZSQUdNRU5UX1NIQURFUikpOworICBsaW5rUHJv
Z3JhbShnbCwgcHJvZ3JhbSk7CisgIHJldHVybiBwcm9ncmFtOworfTsKKworLyoqCisgKiBMb2Fk
cyBzaGFkZXJzIGZyb20gc2NyaXB0IHRhZ3MsIGNyZWF0ZXMgYSBwcm9ncmFtLCBhdHRhY2hlcyB0
aGUgc2hhZGVycyBhbmQKKyAqIGxpbmtzLgorICogQHBhcmFtIHshV2ViR0xDb250ZXh0fSBnbCBU
aGUgV2ViR0xDb250ZXh0IHRvIHVzZS4KKyAqIEBwYXJhbSB7c3RyaW5nfSB2ZXJ0ZXhTY3JpcHRJ
ZCBUaGUgaWQgb2YgdGhlIHNjcmlwdCB0YWcgdGhhdCBjb250YWlucyB0aGUKKyAqICAgICAgICB2
ZXJ0ZXggc2hhZGVyLgorICogQHBhcmFtIHtzdHJpbmd9IGZyYWdtZW50U2NyaXB0SWQgVGhlIGlk
IG9mIHRoZSBzY3JpcHQgdGFnIHRoYXQgY29udGFpbnMgdGhlCisgKiAgICAgICAgZnJhZ21lbnQg
c2hhZGVyLgorICogQHJldHVybiB7IVdlYkdMUHJvZ3JhbX0gVGhlIGNyZWF0ZWQgcHJvZ3JhbS4K
KyAqLwordmFyIGxvYWRQcm9ncmFtRnJvbVNjcmlwdCA9IGZ1bmN0aW9uIGxvYWRQcm9ncmFtRnJv
bVNjcmlwdCgKKyAgZ2wsIHZlcnRleFNjcmlwdElkLCBmcmFnbWVudFNjcmlwdElkKSB7CisgIHZh
ciBwcm9ncmFtID0gZ2wuY3JlYXRlUHJvZ3JhbSgpOworICBnbC5hdHRhY2hTaGFkZXIoCisgICAg
ICBwcm9ncmFtLAorICAgICAgbG9hZFNoYWRlckZyb21TY3JpcHQoZ2wsIHZlcnRleFNjcmlwdElk
LCBnbC5WRVJURVhfU0hBREVSKSk7CisgIGdsLmF0dGFjaFNoYWRlcigKKyAgICAgIHByb2dyYW0s
CisgICAgICBsb2FkU2hhZGVyRnJvbVNjcmlwdChnbCwgZnJhZ21lbnRTY3JpcHRJZCwgIGdsLkZS
QUdNRU5UX1NIQURFUikpOworICBsaW5rUHJvZ3JhbShnbCwgcHJvZ3JhbSk7CisgIHJldHVybiBw
cm9ncmFtOworfTsKKwordmFyIGxvYWRTdGFuZGFyZFZlcnRleFNoYWRlciA9IGZ1bmN0aW9uKGds
KSB7CisgIHJldHVybiBsb2FkU2hhZGVyRnJvbUZpbGUoCisgICAgICBnbCwgInJlc291cmNlcy92
ZXJ0ZXhTaGFkZXIudmVydCIsIGdsLlZFUlRFWF9TSEFERVIpOworfTsKKwordmFyIGxvYWRTdGFu
ZGFyZEZyYWdtZW50U2hhZGVyID0gZnVuY3Rpb24oZ2wpIHsKKyAgcmV0dXJuIGxvYWRTaGFkZXJG
cm9tRmlsZSgKKyAgICAgIGdsLCAicmVzb3VyY2VzL2ZyYWdtZW50U2hhZGVyLmZyYWciLCBnbC5G
UkFHTUVOVF9TSEFERVIpOworfTsKKworLyoqCisgKiBMb2FkcyBhbiBpbWFnZSBhc3luY2hyb25v
dXNseS4KKyAqIEBwYXJhbSB7c3RyaW5nfSB1cmwgVVJMIG9mIGltYWdlIHRvIGxvYWQuCisgKiBA
cGFyYW0geyFmdW5jdGlvbighRWxlbWVudCk6IHZvaWR9IGNhbGxiYWNrIEZ1bmN0aW9uIHRvIGNh
bGwKKyAqICAgICB3aXRoIGxvYWRlZCBpbWFnZS4KKyAqLwordmFyIGxvYWRJbWFnZUFzeW5jID0g
ZnVuY3Rpb24odXJsLCBjYWxsYmFjaykgeworICB2YXIgaW1nID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnaW1nJyk7CisgIGltZy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKKyAgICBjYWxsYmFjayhp
bWcpOworICB9OworICBpbWcuc3JjID0gdXJsOworfTsKKworLyoqCisgKiBMb2FkcyBhbiBhcnJh
eSBvZiBpbWFnZXMuCisgKiBAcGFyYW0geyFBcnJheS48c3RyaW5nPn0gdXJscyBVUkxzIG9mIGlt
YWdlcyB0byBsb2FkLgorICogQHBhcmFtIHshZnVuY3Rpb24oIXtzdHJpbmcsIGltZ30pOiB2b2lk
fSBjYWxsYmFjay4gQ2FsbGJhY2sKKyAqICAgICB0aGF0IGdldHMgcGFzc2VkIG1hcCBvZiB1cmxz
IHRvIGltZyB0YWdzLgorICovCit2YXIgbG9hZEltYWdlc0FzeW5jID0gZnVuY3Rpb24odXJscywg
Y2FsbGJhY2spIHsKKyAgdmFyIGNvdW50ID0gMTsKKyAgdmFyIGltYWdlcyA9IHsgfTsKKyAgZnVu
Y3Rpb24gY291bnREb3duKCkgeworICAgIC0tY291bnQ7CisgICAgaWYgKGNvdW50ID09IDApIHsK
KyAgICAgIGNhbGxiYWNrKGltYWdlcyk7CisgICAgfQorICB9CisgIGZ1bmN0aW9uIGltYWdlTG9h
ZGVkKHVybCkgeworICAgIHJldHVybiBmdW5jdGlvbihpbWcpIHsKKyAgICAgIGltYWdlc1t1cmxd
ID0gaW1nOworICAgICAgY291bnREb3duKCk7CisgICAgfQorICB9CisgIGZvciAodmFyIGlpID0g
MDsgaWkgPCB1cmxzLmxlbmd0aDsgKytpaSkgeworICAgICsrY291bnQ7CisgICAgbG9hZEltYWdl
QXN5bmModXJsc1tpaV0sIGltYWdlTG9hZGVkKHVybHNbaWldKSk7CisgIH0KKyAgY291bnREb3du
KCk7Cit9OworCityZXR1cm4geworICBjcmVhdGUzRENvbnRleHQ6IGNyZWF0ZTNEQ29udGV4dCwK
KyAgY3JlYXRlM0RDb250ZXh0V2l0aFdyYXBwZXJUaGF0VGhyb3dzT25HTEVycm9yOgorICAgIGNy
ZWF0ZTNEQ29udGV4dFdpdGhXcmFwcGVyVGhhdFRocm93c09uR0xFcnJvciwKKyAgY2hlY2tDYW52
YXM6IGNoZWNrQ2FudmFzLAorICBjcmVhdGVDb2xvcmVkVGV4dHVyZTogY3JlYXRlQ29sb3JlZFRl
eHR1cmUsCisgIGRyYXdRdWFkOiBkcmF3UXVhZCwKKyAgZ2V0TGFzdEVycm9yOiBnZXRMYXN0RXJy
b3IsCisgIGdsRXJyb3JTaG91bGRCZTogZ2xFcnJvclNob3VsZEJlLAorICBmaWxsVGV4dHVyZTog
ZmlsbFRleHR1cmUsCisgIGxvYWRJbWFnZUFzeW5jOiBsb2FkSW1hZ2VBc3luYywKKyAgbG9hZElt
YWdlc0FzeW5jOiBsb2FkSW1hZ2VzQXN5bmMsCisgIGxvYWRQcm9ncmFtRnJvbUZpbGU6IGxvYWRQ
cm9ncmFtRnJvbUZpbGUsCisgIGxvYWRQcm9ncmFtRnJvbVNjcmlwdDogbG9hZFByb2dyYW1Gcm9t
U2NyaXB0LAorICBsb2FkU2hhZGVyOiBsb2FkU2hhZGVyLAorICBsb2FkU2hhZGVyRnJvbUZpbGU6
IGxvYWRTaGFkZXJGcm9tRmlsZSwKKyAgbG9hZFNoYWRlckZyb21TY3JpcHQ6IGxvYWRTaGFkZXJG
cm9tU2NyaXB0LAorICBsb2FkU3RhbmRhcmRQcm9ncmFtOiBsb2FkU3RhbmRhcmRQcm9ncmFtLAor
ICBsb2FkU3RhbmRhcmRWZXJ0ZXhTaGFkZXI6IGxvYWRTdGFuZGFyZFZlcnRleFNoYWRlciwKKyAg
bG9hZFN0YW5kYXJkRnJhZ21lbnRTaGFkZXI6IGxvYWRTdGFuZGFyZEZyYWdtZW50U2hhZGVyLAor
ICBzZXR1cFByb2dyYW06IHNldHVwUHJvZ3JhbSwKKyAgc2V0dXBTaW1wbGVUZXh0dXJlRnJhZ21l
bnRTaGFkZXI6IHNldHVwU2ltcGxlVGV4dHVyZUZyYWdtZW50U2hhZGVyLAorICBzZXR1cFNpbXBs
ZVRleHR1cmVQcm9ncmFtOiBzZXR1cFNpbXBsZVRleHR1cmVQcm9ncmFtLAorICBzZXR1cFNpbXBs
ZVRleHR1cmVWZXJ0ZXhTaGFkZXI6IHNldHVwU2ltcGxlVGV4dHVyZVZlcnRleFNoYWRlciwKKyAg
c2V0dXBUZXh0dXJlZFF1YWQ6IHNldHVwVGV4dHVyZWRRdWFkLAorICBzZXR1cFVuaXRRdWFkOiBz
ZXR1cFVuaXRRdWFkLAorICBzaG91bGRHZW5lcmF0ZUdMRXJyb3I6IHNob3VsZEdlbmVyYXRlR0xF
cnJvciwKKyAgcmVhZEZpbGU6IHJlYWRGaWxlLAorICByZWFkRmlsZUxpc3Q6IHJlYWRGaWxlTGlz
dCwKKworICBub25lOiBmYWxzZQorfTsKKworfSgpKTsKKworCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2wtdGVzdC5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2wtdGVzdC5qcwkocmV2
aXNpb24gNjM0MzgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2wtdGVzdC5qcwkod29ya2luZyBjb3B5KQpAQCAtMTEsNiArMTEsMjIgQEAgZnVuY3Rpb24g
YXNzZXJ0TXNnKGFzc2VydGlvbiwgbXNnKSB7CiAgICAgfQogfQogCitmdW5jdGlvbiBpbml0Tm9u
S2hyb25vc0ZyYW1ld29yayh3YWl0VW50aWxEb25lKSB7CisgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVu
Y2UoIldlYktpdFdlYkdMRW5hYmxlZCIsICIxIik7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworICAgIGlmICh3YWl0VW50aWxEb25lKSB7CisgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgfQorICB9Cit9CisKK2Z1bmN0aW9uIG5v
bktocm9ub3NGcmFtZXdvcmtOb3RpZnlEb25lKCkgeworICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICB9
Cit9CisKIC8vCiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAo=
</data>
<flag name="review"
          id="49768"
          type_id="1"
          status="+"
          setter="japhet"
    />
    <flag name="commit-queue"
          id="49769"
          type_id="3"
          status="-"
          setter="kbr"
    />
          </attachment>
      

    </bug>

</bugzilla>