<?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>235398</bug_id>
          
          <creation_ts>2022-01-20 04:15:39 -0800</creation_ts>
          <short_desc>Update LayoutTests/resources/testharness.js to 2021-6-24 version</short_desc>
          <delta_ts>2022-02-01 02:33:21 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=168100</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=235943</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>235560</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kimmo Kinnunen">kkinnunen</reporter>
          <assigned_to name="Kimmo Kinnunen">kkinnunen</assigned_to>
          <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gsnedders</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>mkwst</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1832389</commentid>
    <comment_count>0</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-01-20 04:15:39 -0800</bug_when>
    <thetext>Update LayoutTests/resources/testharness.js to 2021-6-24 version
to match LayoutTests/imported/w3c/web-platform-tests/resources/testharness.js

The harness has useful step_wait functions now</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832390</commentid>
    <comment_count>1</comment_count>
      <attachid>449563</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-01-20 04:20:03 -0800</bug_when>
    <thetext>Created attachment 449563
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832391</commentid>
    <comment_count>2</comment_count>
      <attachid>449563</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-01-20 04:25:10 -0800</bug_when>
    <thetext>Comment on attachment 449563
Patch

r=me once bots are happy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832405</commentid>
    <comment_count>3</comment_count>
      <attachid>449563</attachid>
    <who name="Sam Sneddon [:gsnedders]">gsnedders</who>
    <bug_when>2022-01-20 06:24:16 -0800</bug_when>
    <thetext>Comment on attachment 449563
Patch

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

What&apos;s the reason for going for the 2021-06-24 version rather than something more recent?

&gt; LayoutTests/resources/testharnessreport.js:11
&gt; - * Typically such integration will attach callbacks when each test is
&gt; - * has run, using add_result_callback(callback(test)), or when the whole test file has
&gt; - * completed, using add_completion_callback(callback(tests, harness_status)).
&gt; + * Typically test system integration will attach callbacks when each test has
&gt; + * run, using add_result_callback(callback(test)), or when the whole test file
&gt; + * has completed, using
&gt; + * add_completion_callback(callback(tests, harness_status)).

Don&apos;t replace this file; keep our own version.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832728</commentid>
    <comment_count>4</comment_count>
      <attachid>449648</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-01-21 03:21:57 -0800</bug_when>
    <thetext>Created attachment 449648
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834471</commentid>
    <comment_count>5</comment_count>
      <attachid>450121</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-01-27 03:12:16 -0800</bug_when>
    <thetext>Created attachment 450121
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834480</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-01-27 04:16:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/88126222&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834837</commentid>
    <comment_count>7</comment_count>
      <attachid>450207</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-01-27 23:34:52 -0800</bug_when>
    <thetext>Created attachment 450207
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834870</commentid>
    <comment_count>8</comment_count>
      <attachid>450216</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-01-28 02:28:00 -0800</bug_when>
    <thetext>Created attachment 450216
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834875</commentid>
    <comment_count>9</comment_count>
      <attachid>450219</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-01-28 03:21:35 -0800</bug_when>
    <thetext>Created attachment 450219
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834891</commentid>
    <comment_count>10</comment_count>
      <attachid>450219</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-01-28 04:37:12 -0800</bug_when>
    <thetext>Comment on attachment 450219
Patch for landing

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

&gt; LayoutTests/http/tests/paymentrequest/payment-is-showing.https.html:-292
&gt; -      );

Why are we removing this one?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835424</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-01-30 21:48:44 -0800</bug_when>
    <thetext>Committed r288806 (246582@main): &lt;https://commits.webkit.org/246582@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 450219.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835871</commentid>
    <comment_count>12</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-02-01 02:09:34 -0800</bug_when>
    <thetext>&gt; What&apos;s the reason for going for the 2021-06-24 version rather than something more recent?

Just to stay consistent with LayoutTests/imported/w3c/web-platform-tests/resources/testharness.js</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449563</attachid>
            <date>2022-01-20 04:20:03 -0800</date>
            <delta_ts>2022-01-21 03:21:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235398-20220120142001.patch</filename>
            <type>text/plain</type>
            <size>98623</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4MTEyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMWZiZjI2NzE2OGY1M2UyZmY1MmIx
NmVmODIxN2M0YzMyZGY4MTE1ZC4uMTFkMjFmNWQ2YzBiMmIxOGM1ZmU2NzU3MGFkZDAwMmRmNGQx
MTVkZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDIyLTAxLTIwICBLaW1tbyBLaW5udW5lbiAg
PGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgVXBkYXRlIExheW91dFRlc3RzL3Jlc291
cmNlcy90ZXN0aGFybmVzcy5qcyB0byAyMDIxLTYtMjQgdmVyc2lvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1Mzk4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ29weSB0ZXN0aGFybmVzcy5qcywgdGVz
dGhhcm5lc3NyZXBvcnQuanMgZnJvbSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzCisg
ICAgICAgIERlbGV0ZSB0ZXN0aGFybmVzcy5jc3MsIGl0IGlzIG5vdyBidW5kbGVkIGluIHRlc3Ro
YXJuZXNzLmpzLgorCisgICAgICAgICogZWRpdGluZy90ZXh0LWl0ZXJhdG9yL2NvdW50LW1hdGNo
ZXMtaW4tZnJhbWVzLmh0bWw6CisgICAgICAgICogZWRpdGluZy90ZXh0LWl0ZXJhdG9yL2hpZGRl
bi10ZXh0YXJlYS1zZWxlY3Rpb24tcXVpcmsuaHRtbDoKKyAgICAgICAgKiBmYXN0L2N1c3RvbS1l
bGVtZW50cy9kZWZpbmVkLXBzZXVkby1jbGFzcy5odG1sOgorICAgICAgICBTdG9wIHVzaW5nIHRl
c3RoYXJuZXNzLmNzcworCisgICAgICAgICogcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmNzczogUmVt
b3ZlZC4KKyAgICAgICAgQnVuZGxlZCBpbiAuanMgbm93LgorCisgICAgICAgICogcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzLmpzOgorICAgICAgICAoV2luZG93VGVzdEVudmlyb25tZW50KToKKyAgICAg
ICAgKFdpbmRvd1Rlc3RFbnZpcm9ubWVudC5wcm90b3R5cGUuX2Rpc3BhdGNoKToKKyAgICAgICAg
KFdpbmRvd1Rlc3RFbnZpcm9ubWVudC5wcm90b3R5cGUub25fdGVzdHNfcmVhZHkpOgorICAgICAg
ICAoV29ya2VyVGVzdEVudmlyb25tZW50LnByb3RvdHlwZS5vbl90ZXN0c19yZWFkeSk6CisgICAg
ICAgIChjcmVhdGVfdGVzdF9lbnZpcm9ubWVudCk6CisgICAgICAgIChnZXRfdGVzdF9uYW1lKToK
KyAgICAgICAgKHRlc3QpOgorICAgICAgICAoYXN5bmNfdGVzdCk6CisgICAgICAgIChwcm9taXNl
X3Rlc3QpOgorICAgICAgICAocHJvbWlzZV9yZWplY3RzX2pzKToKKyAgICAgICAgKHByb21pc2Vf
cmVqZWN0c19kb20pOgorICAgICAgICAocHJvbWlzZV9yZWplY3RzX2V4YWN0bHkpOgorICAgICAg
ICAocHJvbWlzZV9zZXR1cCk6CisgICAgICAgIChkb25lKToKKyAgICAgICAgKGZvcm1hdF92YWx1
ZSk6CisgICAgICAgICogcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzOgorICAgICAgICAo
ZHVtcF90ZXN0X3Jlc3VsdHMpOgorICAgICAgICAoY2F0Y2gpOgorICAgICAgICAoY29udmVydFJl
c3VsdCk6IERlbGV0ZWQuCisgICAgICAgIChzZWxmLnRlc3RSdW5uZXIuYWRkX2NvbXBsZXRpb25f
Y2FsbGJhY2suc2FuaXRpemUpOiBEZWxldGVkLgorICAgICAgICAoc2VsZi50ZXN0UnVubmVyLmFk
ZF9jb21wbGV0aW9uX2NhbGxiYWNrKTogRGVsZXRlZC4KKwogMjAyMi0wMS0xOCAgS2ltbW8gS2lu
bnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBXZWJHTCBH
UFUgYnVmZmVyIHRleHR1cmUgdXBsb2FkIHBhdGggZm9yIENvY29hIGdldFVzZXJNZWRpYSBjYW1l
cmEgc3RyZWFtcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy90ZXh0LWl0ZXJhdG9y
L2NvdW50LW1hdGNoZXMtaW4tZnJhbWVzLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3RleHQt
aXRlcmF0b3IvY291bnQtbWF0Y2hlcy1pbi1mcmFtZXMuaHRtbAppbmRleCAxOWRkMDUxZjVjN2Jh
MTI5YTZjNGY3ZTFjZTdjMmRhMTM1ODg4OWExLi5hYWMzYzNkMjQyM2YzMzU0MjlhOWQ5YmM2NWJh
YjE5MWU5M2ZhYThkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3RleHQtaXRlcmF0
b3IvY291bnQtbWF0Y2hlcy1pbi1mcmFtZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5n
L3RleHQtaXRlcmF0b3IvY291bnQtbWF0Y2hlcy1pbi1mcmFtZXMuaHRtbApAQCAtNCw3ICs0LDYg
QEAKIDx0aXRsZT5UZXh0IHNlYXJjaCBmcm9tIGZyYW1lczwvdGl0bGU+CiA8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPGxpbmsgcmVs
PSdzdHlsZXNoZWV0JyBocmVmPScuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuY3NzJz4KIDwv
aGVhZD4KIDxib2R5PgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3RleHQtaXRl
cmF0b3IvaGlkZGVuLXRleHRhcmVhLXNlbGVjdGlvbi1xdWlyay5odG1sIGIvTGF5b3V0VGVzdHMv
ZWRpdGluZy90ZXh0LWl0ZXJhdG9yL2hpZGRlbi10ZXh0YXJlYS1zZWxlY3Rpb24tcXVpcmsuaHRt
bAppbmRleCAzYzlhOWUyYWQwYzdjNzEyMmJkNWJkMWZkOGM2N2MwOTY3YmM4MmUwLi43MjY2ZWEz
Yzg2MDc3Y2JjZDE1NWY5ZDgyYjkwZjg5NzMzMTc0MmQ5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9lZGl0aW5nL3RleHQtaXRlcmF0b3IvaGlkZGVuLXRleHRhcmVhLXNlbGVjdGlvbi1xdWlyay5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvdGV4dC1pdGVyYXRvci9oaWRkZW4tdGV4dGFy
ZWEtc2VsZWN0aW9uLXF1aXJrLmh0bWwKQEAgLTQsNyArNCw2IEBACiA8dGl0bGU+U2VsZWN0aW9u
cyBpbiBoaWRkZW4gZWxlbWVudHM8L3RpdGxlPgogPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxsaW5rIHJlbD0nc3R5bGVzaGVldCcg
aHJlZj0nLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmNzcyc+CiA8L2hlYWQ+CiA8Ym9keT4K
IDxzdHlsZT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL2Rl
ZmluZWQtcHNldWRvLWNsYXNzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50
cy9kZWZpbmVkLXBzZXVkby1jbGFzcy5odG1sCmluZGV4IDA2MjBmY2QzNzBhZjIzYTVhMjk5ZjMw
YjI4YmM5MTBiYTk0YmFhNzUuLmE1OGUxMzEyM2NmYjRkMjRhMzBmNDA3NjZmNTA3Y2MwN2RkNWUy
NzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL2RlZmluZWQt
cHNldWRvLWNsYXNzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMv
ZGVmaW5lZC1wc2V1ZG8tY2xhc3MuaHRtbApAQCAtNiw3ICs2LDYgQEAKIDxsaW5rIHJlbD0iaGVs
cCIgaHJlZj0iaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYmNvbXBvbmVudHMvc3BlYy9jdXN0b20v
I3RoZS1kZWZpbmVkLWVsZW1lbnQtcHNldWRvLWNsYXNzLWRlZmluZWQiPgogPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxsaW5rIHJl
bD0nc3R5bGVzaGVldCcgaHJlZj0nLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmNzcyc+CiA8
L2hlYWQ+CiA8Ym9keT4KIDxkaXYgaWQ9ImxvZyI+PC9kaXY+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuY3NzIGIvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzLmNzcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzY1MDg0ZjNmODIx
MTZmODVmMGE1ZWNjNWFkNzg4YmY4Y2RhNDcxMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuY3Nz
CisrKyAvZGV2L251bGwKQEAgLTEsOTIgKzAsMCBAQAotaHRtbCB7Ci0gICAgZm9udC1mYW1pbHk6
RGVqYVZ1IFNhbnMsIEJpdHN0cmVhbSBWZXJhIFNhbnMsIEFyaWFsLCBTYW5zOwotfQotCi0jbG9n
IC53YXJuaW5nLAotI2xvZyAud2FybmluZyBhIHsKLSAgY29sb3I6IGJsYWNrOwotICBiYWNrZ3Jv
dW5kOiB5ZWxsb3c7Ci19Ci0KLSNsb2cgLmVycm9yLAotI2xvZyAuZXJyb3IgYSB7Ci0gIGNvbG9y
OiB3aGl0ZTsKLSAgYmFja2dyb3VuZDogcmVkOwotfQotCi0jbG9nIHByZSB7Ci0gIGJvcmRlcjog
MXB4IHNvbGlkIGJsYWNrOwotICBwYWRkaW5nOiAxZW07Ci19Ci0KLXNlY3Rpb24jc3VtbWFyeSB7
Ci0gICAgbWFyZ2luLWJvdHRvbToxZW07Ci19Ci0KLXRhYmxlI3Jlc3VsdHMgewotICAgIGJvcmRl
ci1jb2xsYXBzZTpjb2xsYXBzZTsKLSAgICB0YWJsZS1sYXlvdXQ6Zml4ZWQ7Ci0gICAgd2lkdGg6
MTAwJTsKLX0KLQotdGFibGUjcmVzdWx0cyB0aDpmaXJzdC1jaGlsZCwKLXRhYmxlI3Jlc3VsdHMg
dGQ6Zmlyc3QtY2hpbGQgewotICAgIHdpZHRoOjRlbTsKLX0KLQotdGFibGUjcmVzdWx0cyB0aDps
YXN0LWNoaWxkLAotdGFibGUjcmVzdWx0cyB0ZDpsYXN0LWNoaWxkIHsKLSAgICB3aWR0aDo1MCU7
Ci19Ci0KLXRhYmxlI3Jlc3VsdHMuYXNzZXJ0aW9ucyB0aDpsYXN0LWNoaWxkLAotdGFibGUjcmVz
dWx0cy5hc3NlcnRpb25zIHRkOmxhc3QtY2hpbGQgewotICAgIHdpZHRoOjM1JTsKLX0KLQotdGFi
bGUjcmVzdWx0cyB0aCB7Ci0gICAgcGFkZGluZzowOwotICAgIHBhZGRpbmctYm90dG9tOjAuNWVt
OwotICAgIGJvcmRlci1ib3R0b206bWVkaXVtIHNvbGlkIGJsYWNrOwotfQotCi10YWJsZSNyZXN1
bHRzIHRkIHsKLSAgICBwYWRkaW5nOjFlbTsKLSAgICBwYWRkaW5nLWJvdHRvbTowLjVlbTsKLSAg
ICBib3JkZXItYm90dG9tOnRoaW4gc29saWQgYmxhY2s7Ci19Ci0KLXRyLnBhc3MgPiB0ZDpmaXJz
dC1jaGlsZCB7Ci0gICAgY29sb3I6Z3JlZW47Ci19Ci0KLXRyLmZhaWwgPiB0ZDpmaXJzdC1jaGls
ZCB7Ci0gICAgY29sb3I6cmVkOwotfQotCi10ci50aW1lb3V0ID4gdGQ6Zmlyc3QtY2hpbGQgewot
ICAgIGNvbG9yOnJlZDsKLX0KLQotdHIubm90cnVuID4gdGQ6Zmlyc3QtY2hpbGQgewotICAgIGNv
bG9yOmJsdWU7Ci19Ci0KLS5wYXNzID4gdGQ6Zmlyc3QtY2hpbGQsIC5mYWlsID4gdGQ6Zmlyc3Qt
Y2hpbGQsIC50aW1lb3V0ID4gdGQ6Zmlyc3QtY2hpbGQsIC5ub3RydW4gPiB0ZDpmaXJzdC1jaGls
ZCB7Ci0gICAgZm9udC12YXJpYW50OnNtYWxsLWNhcHM7Ci19Ci0KLXRhYmxlI3Jlc3VsdHMgc3Bh
biB7Ci0gICAgZGlzcGxheTpibG9jazsKLX0KLQotdGFibGUjcmVzdWx0cyBzcGFuLmV4cGVjdGVk
IHsKLSAgICBmb250LWZhbWlseTpEZWphVnUgU2FucyBNb25vLCBCaXRzdHJlYW0gVmVyYSBTYW5z
IE1vbm8sIE1vbm9zcGFjZTsKLSAgICB3aGl0ZS1zcGFjZTpwcmU7Ci19Ci0KLXRhYmxlI3Jlc3Vs
dHMgc3Bhbi5hY3R1YWwgewotICAgIGZvbnQtZmFtaWx5OkRlamFWdSBTYW5zIE1vbm8sIEJpdHN0
cmVhbSBWZXJhIFNhbnMgTW9ubywgTW9ub3NwYWNlOwotICAgIHdoaXRlLXNwYWNlOnByZTsKLX0K
LQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIGIvTGF5
b3V0VGVzdHMvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzCmluZGV4IDE1NTkxMDQyYWE0Y2IwZmRk
NzVmZTNiZjU2YjliZGZiNjNmZDE2MWQuLmY4NWIxOWZkOWJkOTBjMzQ3NmRlZGNiZTU4MjViODJm
YjQwZGU4MmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Jlc291cmNlcy90ZXN0aGFybmVzcy5q
cworKysgYi9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMKQEAgLTEsMjEgKzEs
MTEgQEAKIC8qZ2xvYmFsIHNlbGYqLwogLypqc2hpbnQgbGF0ZWRlZjogbm9mdW5jKi8KLS8qCi1E
aXN0cmlidXRlZCB1bmRlciBib3RoIHRoZSBXM0MgVGVzdCBTdWl0ZSBMaWNlbnNlIFsxXSBhbmQg
dGhlIFczQwotMy1jbGF1c2UgQlNEIExpY2Vuc2UgWzJdLiBUbyBjb250cmlidXRlIHRvIGEgVzND
IFRlc3QgU3VpdGUsIHNlZSB0aGUKLXBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNd
LgotCi1bMV0gaHR0cDovL3d3dy53My5vcmcvQ29uc29ydGl1bS9MZWdhbC8yMDA4LzA0LXRlc3Rz
dWl0ZS1saWNlbnNlCi1bMl0gaHR0cDovL3d3dy53My5vcmcvQ29uc29ydGl1bS9MZWdhbC8yMDA4
LzAzLWJzZC1saWNlbnNlCi1bM10gaHR0cDovL3d3dy53My5vcmcvMjAwNC8xMC8yNy10ZXN0Y2Fz
ZXMKLSovCiAKIC8qIERvY3VtZW50YXRpb246IGh0dHBzOi8vd2ViLXBsYXRmb3JtLXRlc3RzLm9y
Zy93cml0aW5nLXRlc3RzL3Rlc3RoYXJuZXNzLWFwaS5odG1sCiAgKiAoLi4vZG9jcy9fd3JpdGlu
Zy10ZXN0cy90ZXN0aGFybmVzcy1hcGkubWQpICovCiAKIChmdW5jdGlvbiAoZ2xvYmFsX3Njb3Bl
KQogewotICAgIHZhciBkZWJ1ZyA9IGZhbHNlOwogICAgIC8vIGRlZmF1bHQgdGltZW91dCBpcyAx
MCBzZWNvbmRzLCB0ZXN0IGNhbiBvdmVycmlkZSBpZiBuZWVkZWQKICAgICB2YXIgc2V0dGluZ3Mg
PSB7CiAgICAgICAgIG91dHB1dDp0cnVlLApAQCAtMjQsNyArMTQsOCBAQCBwb2xpY2llcyBhbmQg
Y29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgICAgICJsb25nIjo2MDAwMAogICAgICAg
ICB9LAogICAgICAgICB0ZXN0X3RpbWVvdXQ6bnVsbCwKLSAgICAgICAgbWVzc2FnZV9ldmVudHM6
IFsic3RhcnQiLCAidGVzdF9zdGF0ZSIsICJyZXN1bHQiLCAiY29tcGxldGlvbiJdCisgICAgICAg
IG1lc3NhZ2VfZXZlbnRzOiBbInN0YXJ0IiwgInRlc3Rfc3RhdGUiLCAicmVzdWx0IiwgImNvbXBs
ZXRpb24iXSwKKyAgICAgICAgZGVidWc6IGZhbHNlLAogICAgIH07CiAKICAgICB2YXIgeGh0bWxf
bnMgPSAiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI7CkBAIC04NywxNCArNzgsMTUgQEAg
cG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0OiB0ZXN0LnN0cnVjdHVyZWRfY2xvbmUoKX0p
OwogICAgICAgICAgICAgICAgICAgICAgfV0sCiAgICAgICAgICAgICBjb21wbGV0aW9uOiBbYWRk
X2NvbXBsZXRpb25fY2FsbGJhY2ssIHJlbW92ZV9jb21wbGV0aW9uX2NhbGxiYWNrLAotICAgICAg
ICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICh0ZXN0cywgaGFybmVzc19zdGF0dXMpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAodGVzdHMsIGhhcm5lc3Nfc3RhdHVzLCBh
c3NlcnRzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjbG9uZWRfdGVzdHMg
PSBtYXAodGVzdHMsIGZ1bmN0aW9uKHRlc3QpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB0ZXN0LnN0cnVjdHVyZWRfY2xvbmUoKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXNfb2JqLl9k
aXNwYXRjaCgiY29tcGxldGlvbl9jYWxsYmFjayIsIFt0ZXN0cywgaGFybmVzc19zdGF0dXNdLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3R5cGU6ICJj
b21wbGV0ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGVzdHM6IGNsb25lZF90ZXN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGF0dXM6IGhhcm5lc3Nfc3RhdHVzLnN0cnVjdHVyZWRfY2xvbmUo
KX0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
YXR1czogaGFybmVzc19zdGF0dXMuc3RydWN0dXJlZF9jbG9uZSgpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydHM6IGFzc2VydHMubWFwKGFz
c2VydCA9PiBhc3NlcnQuc3RydWN0dXJlZF9jbG9uZSgpKX0pOwogICAgICAgICAgICAgICAgICAg
ICAgICAgIH1dCiAgICAgICAgIH0KIApAQCAtMTMxLDExICsxMjMsNyBAQCBwb2xpY2llcyBhbmQg
Y29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYXNf
c2VsZWN0b3IpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB3W3NlbGVjdG9yXS5hcHBseSh1bmRlZmluZWQsIGNhbGxi
YWNrX2FyZ3MpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRlYnVnKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBlOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgaWYgKHN1cHBvcnRzX3Bv
c3RfbWVzc2FnZSh3KSAmJiB3ICE9PSBzZWxmKSB7CkBAIC0xOTIsOCArMTgwLDggQEAgcG9saWNp
ZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAgICAgICB0aGlzX29iai5vdXRw
dXRfaGFuZGxlci5zaG93X3N0YXR1cygpOwogICAgICAgICB9KTsKIAotICAgICAgICBhZGRfY29t
cGxldGlvbl9jYWxsYmFjayhmdW5jdGlvbiAodGVzdHMsIGhhcm5lc3Nfc3RhdHVzKSB7Ci0gICAg
ICAgICAgICB0aGlzX29iai5vdXRwdXRfaGFuZGxlci5zaG93X3Jlc3VsdHModGVzdHMsIGhhcm5l
c3Nfc3RhdHVzKTsKKyAgICAgICAgYWRkX2NvbXBsZXRpb25fY2FsbGJhY2soZnVuY3Rpb24gKHRl
c3RzLCBoYXJuZXNzX3N0YXR1cywgYXNzZXJ0c19ydW4pIHsKKyAgICAgICAgICAgIHRoaXNfb2Jq
Lm91dHB1dF9oYW5kbGVyLnNob3dfcmVzdWx0cyh0ZXN0cywgaGFybmVzc19zdGF0dXMsIGFzc2Vy
dHNfcnVuKTsKICAgICAgICAgfSk7CiAgICAgICAgIHRoaXMuc2V0dXBfbWVzc2FnZXMoc2V0dGlu
Z3MubWVzc2FnZV9ldmVudHMpOwogICAgIH07CkBAIC0zMTQsMTQgKzMwMiwxNSBAQCBwb2xpY2ll
cyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgICAgICAgICAgICAgfSk7CiAg
ICAgICAgICAgICAgICAgfSk7CiAgICAgICAgIGFkZF9jb21wbGV0aW9uX2NhbGxiYWNrKAotICAg
ICAgICAgICAgICAgIGZ1bmN0aW9uKHRlc3RzLCBoYXJuZXNzX3N0YXR1cykgeworICAgICAgICAg
ICAgICAgIGZ1bmN0aW9uKHRlc3RzLCBoYXJuZXNzX3N0YXR1cywgYXNzZXJ0cykgewogICAgICAg
ICAgICAgICAgICAgICB0aGlzX29iai5fZGlzcGF0Y2goewogICAgICAgICAgICAgICAgICAgICAg
ICAgdHlwZTogImNvbXBsZXRlIiwKICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RzOiBtYXAo
dGVzdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24odGVzdCkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGVzdC5zdHJ1Y3R1cmVkX2Nsb25l
KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksCi0gICAgICAgICAgICAgICAgICAg
ICAgICBzdGF0dXM6IGhhcm5lc3Nfc3RhdHVzLnN0cnVjdHVyZWRfY2xvbmUoKQorICAgICAgICAg
ICAgICAgICAgICAgICAgc3RhdHVzOiBoYXJuZXNzX3N0YXR1cy5zdHJ1Y3R1cmVkX2Nsb25lKCks
CisgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnRzOiBhc3NlcnRzLm1hcChhc3NlcnQgPT4g
YXNzZXJ0LnN0cnVjdHVyZWRfY2xvbmUoKSksCiAgICAgICAgICAgICAgICAgICAgIH0pOwogICAg
ICAgICAgICAgICAgIH0pOwogICAgIH07CkBAIC0zOTgsMjAgKzM4Nyw3IEBAIHBvbGljaWVzIGFu
ZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAgICBzZWxmLmFkZEV2ZW50TGlzdGVuZXIo
Im1lc3NhZ2UiLAogICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgICAgICAg
ICAgICAgICAgIGlmIChldmVudC5kYXRhICYmIGV2ZW50LmRhdGEudHlwZSAmJiBldmVudC5kYXRh
LnR5cGUgPT09ICJjb25uZWN0IikgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50
LnBvcnRzICYmIGV2ZW50LnBvcnRzWzBdKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gSWYgYSBNZXNzYWdlQ2hhbm5lbCB3YXMgcGFzc2VkLCB0aGVuIHVzZSBpdCB0bwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIHNlbmQgcmVzdWx0cyBiYWNrIHRvIHRoZSBtYWluIHdp
bmRvdy4gIFRoaXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbGxvd3MgdGhlIHRl
c3RzIHRvIHdvcmsgZXZlbiBpZiB0aGUgYnJvd3NlcgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIGRvZXMgbm90IGZ1bGx5IHN1cHBvcnQgTWVzc2FnZUV2ZW50LnNvdXJjZSBpbgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNlcnZpY2VXb3JrZXJzIHlldC4KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0aGlzX29iai5fYWRkX21lc3NhZ2VfcG9ydChldmVudC5wb3J0
c1swXSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucG9ydHNbMF0uc3RhcnQo
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gTWVzc2FnZUNoYW5uZWwsIHRoZW4gYXR0ZW1wdCB0
bwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVzZSB0aGUgTWVzc2FnZUV2ZW50LnNv
dXJjZSB0byBzZW5kIHJlc3VsdHMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiYWNr
IHRvIHRoZSBtYWluIHdpbmRvdy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzX29i
ai5fYWRkX21lc3NhZ2VfcG9ydChldmVudC5zb3VyY2UpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgdGhpc19vYmouX2FkZF9tZXNzYWdlX3BvcnQo
ZXZlbnQuc291cmNlKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0s
IGZhbHNlKTsKIApAQCAtNTEzLDExICs0ODksNyBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9u
IGZvcm1zIFszXS4KICAgICAgICAgICAgIHJldHVybiBuZXcgRGVkaWNhdGVkV29ya2VyVGVzdEVu
dmlyb25tZW50KCk7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoISgnbG9jYXRpb24nIGluIGds
b2JhbF9zY29wZSkpIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgU2hlbGxUZXN0RW52aXJvbm1l
bnQoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQg
dGVzdCBlbnZpcm9ubWVudCIpOworICAgICAgICByZXR1cm4gbmV3IFNoZWxsVGVzdEVudmlyb25t
ZW50KCk7CiAgICAgfQogCiAgICAgdmFyIHRlc3RfZW52aXJvbm1lbnQgPSBjcmVhdGVfdGVzdF9l
bnZpcm9ubWVudCgpOwpAQCAtNTMzLDIzICs1MDUsNjUgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1
dGlvbiBmb3JtcyBbM10uCiAgICAgICAgICAgICBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNh
bGwod29ya2VyKSA9PSAnW29iamVjdCBTZXJ2aWNlV29ya2VyXSc7CiAgICAgfQogCisgICAgdmFy
IHNlZW5fZnVuY19uYW1lID0gT2JqZWN0LmNyZWF0ZShudWxsKTsKKworICAgIGZ1bmN0aW9uIGdl
dF90ZXN0X25hbWUoZnVuYywgbmFtZSkKKyAgICB7CisgICAgICAgIGlmIChuYW1lKSB7CisgICAg
ICAgICAgICByZXR1cm4gbmFtZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChmdW5jKSB7Cisg
ICAgICAgICAgICB2YXIgZnVuY19jb2RlID0gZnVuYy50b1N0cmluZygpOworCisgICAgICAgICAg
ICAvLyBUcnkgYW5kIG1hdGNoIHdpdGggYnJhY2tldHMsIGJ1dCBmYWxsYmFjayB0byBtYXRjaGlu
ZyB3aXRob3V0CisgICAgICAgICAgICB2YXIgYXJyb3cgPSBmdW5jX2NvZGUubWF0Y2goL15cKFwp
XHMqPT5ccyooPzp7KC4qKX1ccyp8KC4qKSkkLyk7CisKKyAgICAgICAgICAgIC8vIENoZWNrIGZv
ciBKUyBsaW5lIHNlcGFyYXRvcnMKKyAgICAgICAgICAgIGlmIChhcnJvdyAhPT0gbnVsbCAmJiAh
L1tcdTAwMEFcdTAwMERcdTIwMjhcdTIwMjldLy50ZXN0KGZ1bmNfY29kZSkpIHsKKyAgICAgICAg
ICAgICAgICB2YXIgdHJpbW1lZCA9IChhcnJvd1sxXSAhPT0gdW5kZWZpbmVkID8gYXJyb3dbMV0g
OiBhcnJvd1syXSkudHJpbSgpOworICAgICAgICAgICAgICAgIC8vIGRyb3AgdHJhaWxpbmcgOyBp
ZiB0aGVyZSdzIG5vIGVhcmxpZXIgb25lcworICAgICAgICAgICAgICAgIHRyaW1tZWQgPSB0cmlt
bWVkLnJlcGxhY2UoL14oW147XSopKDtccyopKyQvLCAiJDEiKTsKKworICAgICAgICAgICAgICAg
IGlmICh0cmltbWVkKSB7CisgICAgICAgICAgICAgICAgICAgIGxldCBuYW1lID0gdHJpbW1lZDsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKHNlZW5fZnVuY19uYW1lW3RyaW1tZWRdKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIHN1YnRlc3QgbmFtZSBhbHJlYWR5IGV4aXN0cywg
c28gYWRkIGEgc3VmZml4LgorICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSArPSAiICIgKyBz
ZWVuX2Z1bmNfbmFtZVt0cmltbWVkXTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHNlZW5fZnVuY19uYW1lW3RyaW1tZWRdID0gMDsKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBzZWVuX2Z1bmNfbmFtZVt0cmlt
bWVkXSArPSAxOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmFtZTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gdGVzdF9l
bnZpcm9ubWVudC5uZXh0X2RlZmF1bHRfdGVzdF9uYW1lKCk7CisgICAgfQorCiAgICAgLyoKICAg
ICAgKiBBUEkgZnVuY3Rpb25zCiAgICAgICovCiAgICAgZnVuY3Rpb24gdGVzdChmdW5jLCBuYW1l
LCBwcm9wZXJ0aWVzKQogICAgIHsKLSAgICAgICAgdmFyIHRlc3RfbmFtZSA9IG5hbWUgPyBuYW1l
IDogdGVzdF9lbnZpcm9ubWVudC5uZXh0X2RlZmF1bHRfdGVzdF9uYW1lKCk7Ci0gICAgICAgIHBy
b3BlcnRpZXMgPSBwcm9wZXJ0aWVzID8gcHJvcGVydGllcyA6IHt9OworICAgICAgICBpZiAodGVz
dHMucHJvbWlzZV9zZXR1cF9jYWxsZWQpIHsKKyAgICAgICAgICAgIHRlc3RzLnN0YXR1cy5zdGF0
dXMgPSB0ZXN0cy5zdGF0dXMuRVJST1I7CisgICAgICAgICAgICB0ZXN0cy5zdGF0dXMubWVzc2Fn
ZSA9ICdgdGVzdGAgaW52b2tlZCBhZnRlciBgcHJvbWlzZV9zZXR1cGAnOworICAgICAgICAgICAg
dGVzdHMuY29tcGxldGUoKTsKKyAgICAgICAgfQorICAgICAgICB2YXIgdGVzdF9uYW1lID0gZ2V0
X3Rlc3RfbmFtZShmdW5jLCBuYW1lKTsKICAgICAgICAgdmFyIHRlc3Rfb2JqID0gbmV3IFRlc3Qo
dGVzdF9uYW1lLCBwcm9wZXJ0aWVzKTsKICAgICAgICAgdmFyIHZhbHVlID0gdGVzdF9vYmouc3Rl
cChmdW5jLCB0ZXN0X29iaiwgdGVzdF9vYmopOwogCiAgICAgICAgIGlmICh2YWx1ZSAhPT0gdW5k
ZWZpbmVkKSB7Ci0gICAgICAgICAgICB2YXIgbXNnID0gIlRlc3QgbmFtZWQgXCIiICsgdGVzdF9u
YW1lICsKLSAgICAgICAgICAgICAgICAiXCIgaW5hcHByb3ByaWF0ZWx5IHJldHVybmVkIGEgdmFs
dWUiOworICAgICAgICAgICAgdmFyIG1zZyA9ICdUZXN0IG5hbWVkICInICsgdGVzdF9uYW1lICsK
KyAgICAgICAgICAgICAgICAnIiBwYXNzZWQgYSBmdW5jdGlvbiB0byBgdGVzdGAgdGhhdCByZXR1
cm5lZCBhIHZhbHVlLic7CiAKICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgaWYg
KHZhbHVlICYmIHZhbHVlLmhhc093blByb3BlcnR5KCJ0aGVuIikpIHsKLSAgICAgICAgICAgICAg
ICAgICAgbXNnICs9ICIsIGNvbnNpZGVyIHVzaW5nIGBwcm9taXNlX3Rlc3RgIGluc3RlYWQiOwor
ICAgICAgICAgICAgICAgIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUudGhlbiA9PT0gJ2Z1bmN0
aW9uJykgeworICAgICAgICAgICAgICAgICAgICBtc2cgKz0gJyBDb25zaWRlciB1c2luZyBgcHJv
bWlzZV90ZXN0YCBpbnN0ZWFkIHdoZW4gJyArCisgICAgICAgICAgICAgICAgICAgICAgICAndXNp
bmcgUHJvbWlzZXMgb3IgYXN5bmMvYXdhaXQuJzsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB9IGNhdGNoIChlcnIpIHt9CiAKQEAgLTU2NCwyMiArNTc4LDU1IEBAIHBvbGljaWVzIGFu
ZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogCiAgICAgZnVuY3Rpb24gYXN5bmNfdGVzdChmdW5j
LCBuYW1lLCBwcm9wZXJ0aWVzKQogICAgIHsKKyAgICAgICAgaWYgKHRlc3RzLnByb21pc2Vfc2V0
dXBfY2FsbGVkKSB7CisgICAgICAgICAgICB0ZXN0cy5zdGF0dXMuc3RhdHVzID0gdGVzdHMuc3Rh
dHVzLkVSUk9SOworICAgICAgICAgICAgdGVzdHMuc3RhdHVzLm1lc3NhZ2UgPSAnYGFzeW5jX3Rl
c3RgIGludm9rZWQgYWZ0ZXIgYHByb21pc2Vfc2V0dXBgJzsKKyAgICAgICAgICAgIHRlc3RzLmNv
bXBsZXRlKCk7CisgICAgICAgIH0KICAgICAgICAgaWYgKHR5cGVvZiBmdW5jICE9PSAiZnVuY3Rp
b24iKSB7CiAgICAgICAgICAgICBwcm9wZXJ0aWVzID0gbmFtZTsKICAgICAgICAgICAgIG5hbWUg
PSBmdW5jOwogICAgICAgICAgICAgZnVuYyA9IG51bGw7CiAgICAgICAgIH0KLSAgICAgICAgdmFy
IHRlc3RfbmFtZSA9IG5hbWUgPyBuYW1lIDogdGVzdF9lbnZpcm9ubWVudC5uZXh0X2RlZmF1bHRf
dGVzdF9uYW1lKCk7Ci0gICAgICAgIHByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzID8gcHJvcGVydGll
cyA6IHt9OworICAgICAgICB2YXIgdGVzdF9uYW1lID0gZ2V0X3Rlc3RfbmFtZShmdW5jLCBuYW1l
KTsKICAgICAgICAgdmFyIHRlc3Rfb2JqID0gbmV3IFRlc3QodGVzdF9uYW1lLCBwcm9wZXJ0aWVz
KTsKICAgICAgICAgaWYgKGZ1bmMpIHsKLSAgICAgICAgICAgIHRlc3Rfb2JqLnN0ZXAoZnVuYywg
dGVzdF9vYmosIHRlc3Rfb2JqKTsKKyAgICAgICAgICAgIHZhciB2YWx1ZSA9IHRlc3Rfb2JqLnN0
ZXAoZnVuYywgdGVzdF9vYmosIHRlc3Rfb2JqKTsKKworICAgICAgICAgICAgLy8gVGVzdCBhdXRo
b3JzIHNvbWV0aW1lcyByZXR1cm4gdmFsdWVzIHRvIGFzeW5jX3Rlc3QsIGV4cGVjdGluZyB1cwor
ICAgICAgICAgICAgLy8gdG8gaGFuZGxlIHRoZSB2YWx1ZSBzb21laG93LiBNYWtlIGRvaW5nIHNv
IGEgaGFybmVzcyBlcnJvciB0byBiZQorICAgICAgICAgICAgLy8gY2xlYXIgdGhpcyBpcyBpbnZh
bGlkLCBhbmQgcG9pbnQgYXV0aG9ycyB0byBwcm9taXNlX3Rlc3QgaWYgaXQKKyAgICAgICAgICAg
IC8vIG1heSBiZSBhcHByb3ByaWF0ZS4KKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBO
b3RlIHRoYXQgd2Ugb25seSBwZXJmb3JtIHRoaXMgY2hlY2sgb24gdGhlIGluaXRpYWwgZnVuY3Rp
b24KKyAgICAgICAgICAgIC8vIHBhc3NlZCB0byBhc3luY190ZXN0LCBub3Qgb24gYW55IGxhdGVy
IHN0ZXBzIC0gd2UgaGF2ZW4ndCBzZWVuIGEKKyAgICAgICAgICAgIC8vIGNvbnNpc3RlbnQgcHJv
YmxlbSB3aXRoIHRob3NlIChhbmQgaXQncyBoYXJkZXIgdG8gY2hlY2spLgorICAgICAgICAgICAg
aWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHsKKyAgICAgICAgICAgICAgICB2YXIgbXNnID0gJ1Rl
c3QgbmFtZWQgIicgKyB0ZXN0X25hbWUgKworICAgICAgICAgICAgICAgICAgICAnIiBwYXNzZWQg
YSBmdW5jdGlvbiB0byBgYXN5bmNfdGVzdGAgdGhhdCByZXR1cm5lZCBhIHZhbHVlLic7CisKKyAg
ICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUgJiYgdHlw
ZW9mIHZhbHVlLnRoZW4gPT09ICdmdW5jdGlvbicpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IG1zZyArPSAnIENvbnNpZGVyIHVzaW5nIGBwcm9taXNlX3Rlc3RgIGluc3RlYWQgd2hlbiAnICsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAndXNpbmcgUHJvbWlzZXMgb3IgYXN5bmMvYXdh
aXQuJzsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVy
cikge30KKworICAgICAgICAgICAgICAgIHRlc3RzLnNldF9zdGF0dXModGVzdHMuc3RhdHVzLkVS
Uk9SLCBtc2cpOworICAgICAgICAgICAgICAgIHRlc3RzLmNvbXBsZXRlKCk7CisgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHRlc3Rfb2JqOwogICAgIH0KIAogICAgIGZ1
bmN0aW9uIHByb21pc2VfdGVzdChmdW5jLCBuYW1lLCBwcm9wZXJ0aWVzKSB7Ci0gICAgICAgIHZh
ciB0ZXN0ID0gYXN5bmNfdGVzdChuYW1lLCBwcm9wZXJ0aWVzKTsKKyAgICAgICAgaWYgKHR5cGVv
ZiBmdW5jICE9PSAiZnVuY3Rpb24iKSB7CisgICAgICAgICAgICBwcm9wZXJ0aWVzID0gbmFtZTsK
KyAgICAgICAgICAgIG5hbWUgPSBmdW5jOworICAgICAgICAgICAgZnVuYyA9IG51bGw7CisgICAg
ICAgIH0KKyAgICAgICAgdmFyIHRlc3RfbmFtZSA9IGdldF90ZXN0X25hbWUoZnVuYywgbmFtZSk7
CisgICAgICAgIHZhciB0ZXN0ID0gbmV3IFRlc3QodGVzdF9uYW1lLCBwcm9wZXJ0aWVzKTsKICAg
ICAgICAgdGVzdC5faXNfcHJvbWlzZV90ZXN0ID0gdHJ1ZTsKIAogICAgICAgICAvLyBJZiB0aGVy
ZSBpcyBubyBwcm9taXNlIHRlc3RzIHF1ZXVlIG1ha2Ugb25lLgpAQCAtNjI0LDEwICs2NzEsODcg
QEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAgIH0pOwogICAg
IH0KIAotICAgIGZ1bmN0aW9uIHByb21pc2VfcmVqZWN0cyh0ZXN0LCBleHBlY3RlZCwgcHJvbWlz
ZSwgZGVzY3JpcHRpb24pIHsKLSAgICAgICAgcmV0dXJuIHByb21pc2UudGhlbih0ZXN0LnVucmVh
Y2hlZF9mdW5jKCJTaG91bGQgaGF2ZSByZWplY3RlZDogIiArIGRlc2NyaXB0aW9uKSkuY2F0Y2go
ZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyhleHBlY3RlZCwgZnVuY3Rp
b24oKSB7IHRocm93IGUgfSwgZGVzY3JpcHRpb24pOwotICAgICAgICB9KTsKKyAgICAvKioKKyAg
ICAgKiBNYWtlIGEgY29weSBvZiBhIFByb21pc2UgaW4gdGhlIGN1cnJlbnQgcmVhbG0uCisgICAg
ICoKKyAgICAgKiBAcGFyYW0ge1Byb21pc2V9IHByb21pc2UgdGhlIGdpdmVuIHByb21pc2UgdGhh
dCBtYXkgYmUgZnJvbSBhIGRpZmZlcmVudAorICAgICAqICAgICAgICAgICAgICAgICAgICAgICAg
ICByZWFsbQorICAgICAqIEByZXR1cm5zIHtQcm9taXNlfQorICAgICAqCisgICAgICogQW4gYXJi
aXRyYXJ5IHByb21pc2UgcHJvdmlkZWQgYnkgdGhlIGNhbGxlciBtYXkgaGF2ZSBvcmlnaW5hdGVk
IGluCisgICAgICogYW5vdGhlciBmcmFtZSB0aGF0IGhhdmUgc2luY2UgbmF2aWdhdGVkIGF3YXks
IHJlbmRlcmluZyB0aGUgZnJhbWUncworICAgICAqIGRvY3VtZW50IGluYWN0aXZlLiBTdWNoIGEg
cHJvbWlzZSBjYW5ub3QgYmUgdXNlZCB3aXRoIGBhd2FpdGAgb3IKKyAgICAgKiBQcm9taXNlLnJl
c29sdmUoKSwgYXMgbWljcm90YXNrcyBhc3NvY2lhdGVkIHdpdGggaXQgbWF5IGJlIHByZXZlbnRl
ZAorICAgICAqIGZyb20gYmVpbmcgcnVuLiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3doYXR3Zy9o
dG1sL2lzc3Vlcy81MzE5IGZvciBhCisgICAgICogcGFydGljdWxhciBjYXNlLgorICAgICAqCisg
ICAgICogSW4gZnVuY3Rpb25zIHdlIGRlZmluZSBoZXJlLCB0aGVyZSBpcyBhbiBleHBlY3RhdGlv
biBmcm9tIHRoZSBjYWxsZXIKKyAgICAgKiB0aGF0IHRoZSBwcm9taXNlIGlzIGZyb20gdGhlIGN1
cnJlbnQgcmVhbG0sIHRoYXQgY2FuIGFsd2F5cyBiZSB1c2VkIHdpdGgKKyAgICAgKiBgYXdhaXRg
LCBldGMuIFdlIHRoZXJlZm9yZSBjcmVhdGUgYSBuZXcgcHJvbWlzZSBpbiB0aGlzIHJlYWxtIHRo
YXQKKyAgICAgKiBpbmhlcml0IHRoZSB2YWx1ZSBhbmQgc3RhdHVzIGZyb20gdGhlIGdpdmVuIHBy
b21pc2UuCisgICAgICovCisKKyAgICBmdW5jdGlvbiBicmluZ19wcm9taXNlX3RvX2N1cnJlbnRf
cmVhbG0ocHJvbWlzZSkgeworICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocHJvbWlzZS50aGVu
LmJpbmQocHJvbWlzZSkpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHByb21pc2VfcmVqZWN0c19q
cyh0ZXN0LCBjb25zdHJ1Y3RvciwgcHJvbWlzZSwgZGVzY3JpcHRpb24pIHsKKyAgICAgICAgcmV0
dXJuIGJyaW5nX3Byb21pc2VfdG9fY3VycmVudF9yZWFsbShwcm9taXNlKQorICAgICAgICAgICAg
LnRoZW4odGVzdC51bnJlYWNoZWRfZnVuYygiU2hvdWxkIGhhdmUgcmVqZWN0ZWQ6ICIgKyBkZXNj
cmlwdGlvbikpCisgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24oZSkgeworICAgICAgICAgICAg
ICAgIGFzc2VydF90aHJvd3NfanNfaW1wbChjb25zdHJ1Y3RvciwgZnVuY3Rpb24oKSB7IHRocm93
IGUgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24s
ICJwcm9taXNlX3JlamVjdHNfanMiKTsKKyAgICAgICAgICAgIH0pOworICAgIH0KKworICAgIC8q
KgorICAgICAqIEFzc2VydCB0aGF0IGEgUHJvbWlzZSBpcyByZWplY3RlZCB3aXRoIHRoZSByaWdo
dCBET01FeGNlcHRpb24uCisgICAgICoKKyAgICAgKiBAcGFyYW0gdGVzdCB0aGUgdGVzdCBhcmd1
bWVudCBwYXNzZWQgdG8gcHJvbWlzZV90ZXN0CisgICAgICogQHBhcmFtIHtudW1iZXJ8c3RyaW5n
fSB0eXBlLiAgU2VlIGRvY3VtZW50YXRpb24gZm9yIGFzc2VydF90aHJvd3NfZG9tLgorICAgICAq
CisgICAgICogRm9yIHRoZSByZW1haW5pbmcgYXJndW1lbnRzLCB0aGVyZSBhcmUgdHdvIHdheXMg
b2YgY2FsbGluZworICAgICAqIHByb21pc2VfcmVqZWN0c19kb206CisgICAgICoKKyAgICAgKiAx
KSBJZiB0aGUgRE9NRXhjZXB0aW9uIGlzIGV4cGVjdGVkIHRvIGNvbWUgZnJvbSB0aGUgY3VycmVu
dCBnbG9iYWwsIHRoZQorICAgICAqIHRoaXJkIGFyZ3VtZW50IHNob3VsZCBiZSB0aGUgcHJvbWlz
ZSBleHBlY3RlZCB0byByZWplY3QsIGFuZCBhIGZvdXJ0aCwKKyAgICAgKiBvcHRpb25hbCwgYXJn
dW1lbnQgaXMgdGhlIGFzc2VydGlvbiBkZXNjcmlwdGlvbi4KKyAgICAgKgorICAgICAqIDIpIElm
IHRoZSBET01FeGNlcHRpb24gaXMgZXhwZWN0ZWQgdG8gY29tZSBmcm9tIHNvbWUgb3RoZXIgZ2xv
YmFsLCB0aGUKKyAgICAgKiB0aGlyZCBhcmd1bWVudCBzaG91bGQgYmUgdGhlIERPTUV4Y2VwdGlv
biBjb25zdHJ1Y3RvciBmcm9tIHRoYXQgZ2xvYmFsLAorICAgICAqIHRoZSBmb3VydGggYXJndW1l
bnQgdGhlIHByb21pc2UgZXhwZWN0ZWQgdG8gcmVqZWN0LCBhbmQgdGhlIGZpZnRoLAorICAgICAq
IG9wdGlvbmFsLCBhcmd1bWVudCB0aGUgYXNzZXJ0aW9uIGRlc2NyaXB0aW9uLgorICAgICAqLwor
CisgICAgZnVuY3Rpb24gcHJvbWlzZV9yZWplY3RzX2RvbSh0ZXN0LCB0eXBlLCBwcm9taXNlT3JD
b25zdHJ1Y3RvciwgZGVzY3JpcHRpb25PclByb21pc2UsIG1heWJlRGVzY3JpcHRpb24pIHsKKyAg
ICAgICAgbGV0IGNvbnN0cnVjdG9yLCBwcm9taXNlLCBkZXNjcmlwdGlvbjsKKyAgICAgICAgaWYg
KHR5cGVvZiBwcm9taXNlT3JDb25zdHJ1Y3RvciA9PT0gImZ1bmN0aW9uIiAmJgorICAgICAgICAg
ICAgcHJvbWlzZU9yQ29uc3RydWN0b3IubmFtZSA9PT0gIkRPTUV4Y2VwdGlvbiIpIHsKKyAgICAg
ICAgICAgIGNvbnN0cnVjdG9yID0gcHJvbWlzZU9yQ29uc3RydWN0b3I7CisgICAgICAgICAgICBw
cm9taXNlID0gZGVzY3JpcHRpb25PclByb21pc2U7CisgICAgICAgICAgICBkZXNjcmlwdGlvbiA9
IG1heWJlRGVzY3JpcHRpb247CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjb25zdHJ1
Y3RvciA9IHNlbGYuRE9NRXhjZXB0aW9uOworICAgICAgICAgICAgcHJvbWlzZSA9IHByb21pc2VP
ckNvbnN0cnVjdG9yOworICAgICAgICAgICAgZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbk9yUHJv
bWlzZTsKKyAgICAgICAgICAgIGFzc2VydChtYXliZURlc2NyaXB0aW9uID09PSB1bmRlZmluZWQs
CisgICAgICAgICAgICAgICAgICAgIlRvbyBtYW55IGFyZ3MgcGFzZWQgdG8gbm8tY29uc3RydWN0
b3IgdmVyc2lvbiBvZiBwcm9taXNlX3JlamVjdHNfZG9tIik7CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIGJyaW5nX3Byb21pc2VfdG9fY3VycmVudF9yZWFsbShwcm9taXNlKQorICAgICAgICAg
ICAgLnRoZW4odGVzdC51bnJlYWNoZWRfZnVuYygiU2hvdWxkIGhhdmUgcmVqZWN0ZWQ6ICIgKyBk
ZXNjcmlwdGlvbikpCisgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24oZSkgeworICAgICAgICAg
ICAgICAgIGFzc2VydF90aHJvd3NfZG9tX2ltcGwodHlwZSwgZnVuY3Rpb24oKSB7IHRocm93IGUg
fSwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
cHJvbWlzZV9yZWplY3RzX2RvbSIsIGNvbnN0cnVjdG9yKTsKKyAgICAgICAgICAgIH0pOworICAg
IH0KKworICAgIGZ1bmN0aW9uIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHRlc3QsIGV4Y2VwdGlv
biwgcHJvbWlzZSwgZGVzY3JpcHRpb24pIHsKKyAgICAgICAgcmV0dXJuIGJyaW5nX3Byb21pc2Vf
dG9fY3VycmVudF9yZWFsbShwcm9taXNlKQorICAgICAgICAgICAgLnRoZW4odGVzdC51bnJlYWNo
ZWRfZnVuYygiU2hvdWxkIGhhdmUgcmVqZWN0ZWQ6ICIgKyBkZXNjcmlwdGlvbikpCisgICAgICAg
ICAgICAuY2F0Y2goZnVuY3Rpb24oZSkgeworICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3Nf
ZXhhY3RseV9pbXBsKGV4Y2VwdGlvbiwgZnVuY3Rpb24oKSB7IHRocm93IGUgfSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiwgInByb21pc2Vf
cmVqZWN0c19leGFjdGx5Iik7CisgICAgICAgICAgICB9KTsKICAgICB9CiAKICAgICAvKioKQEAg
LTc2OSw5ICs4OTMsNTYgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAg
ICAgICAgIHRlc3RfZW52aXJvbm1lbnQub25fbmV3X2hhcm5lc3NfcHJvcGVydGllcyhwcm9wZXJ0
aWVzKTsKICAgICB9CiAKKyAgICBmdW5jdGlvbiBwcm9taXNlX3NldHVwKGZ1bmMsIG1heWJlX3By
b3BlcnRpZXMpCisgICAgeworICAgICAgICBpZiAodHlwZW9mIGZ1bmMgIT09ICJmdW5jdGlvbiIp
IHsKKyAgICAgICAgICAgIHRlc3RzLnNldF9zdGF0dXModGVzdHMuc3RhdHVzLkVSUk9SLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAicHJvbWlzZV90ZXN0IGludm9rZWQgd2l0aG91dCBh
IGZ1bmN0aW9uIik7CisgICAgICAgICAgICB0ZXN0cy5jb21wbGV0ZSgpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgICAgIHRlc3RzLnByb21pc2Vfc2V0dXBfY2FsbGVkID0g
dHJ1ZTsKKworICAgICAgICBpZiAoIXRlc3RzLnByb21pc2VfdGVzdHMpIHsKKyAgICAgICAgICAg
IHRlc3RzLnByb21pc2VfdGVzdHMgPSBQcm9taXNlLnJlc29sdmUoKTsKKyAgICAgICAgfQorCisg
ICAgICAgIHRlc3RzLnByb21pc2VfdGVzdHMgPSB0ZXN0cy5wcm9taXNlX3Rlc3RzCisgICAgICAg
ICAgICAudGhlbihmdW5jdGlvbigpCisgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgICAgdmFyIHByb3BlcnRpZXMgPSBtYXliZV9wcm9wZXJ0aWVzIHx8IHt9OworICAgICAg
ICAgICAgICAgICAgICAgIHZhciByZXN1bHQ7CisKKyAgICAgICAgICAgICAgICAgICAgICB0ZXN0
cy5zZXR1cChudWxsLCBwcm9wZXJ0aWVzKTsKKyAgICAgICAgICAgICAgICAgICAgICByZXN1bHQg
PSBmdW5jKCk7CisgICAgICAgICAgICAgICAgICAgICAgdGVzdF9lbnZpcm9ubWVudC5vbl9uZXdf
aGFybmVzc19wcm9wZXJ0aWVzKHByb3BlcnRpZXMpOworCisgICAgICAgICAgICAgICAgICAgICAg
aWYgKCFyZXN1bHQgfHwgdHlwZW9mIHJlc3VsdC50aGVuICE9PSAiZnVuY3Rpb24iKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRocm93ICJOb24tdGhlbmFibGUgcmV0dXJuZWQgYnkgZnVu
Y3Rpb24gcGFzc2VkIHRvIGBwcm9taXNlX3NldHVwYCI7CisgICAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICAgICAg
ICB9KQorICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uKGUpCisgICAgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICAgICB0ZXN0cy5zZXRfc3RhdHVzKHRlc3RzLnN0YXR1cy5F
UlJPUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcoZSks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSAmJiBlLnN0YWNrKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgdGVzdHMuY29tcGxldGUoKTsKKyAgICAgICAgICAgICAg
ICAgICB9KTsKKyAgICB9CisKICAgICBmdW5jdGlvbiBkb25lKCkgewogICAgICAgICBpZiAodGVz
dHMudGVzdHMubGVuZ3RoID09PSAwKSB7Ci0gICAgICAgICAgICB0ZXN0cy5zZXRfZmlsZV9pc190
ZXN0KCk7CisgICAgICAgICAgICAvLyBgZG9uZWAgaXMgaW52b2tlZCBhZnRlciBoYW5kbGluZyB1
bmNhdWdodCBleGNlcHRpb25zLCBzbyBpZiB0aGUKKyAgICAgICAgICAgIC8vIGhhcm5lc3Mgc3Rh
dHVzIGlzIGFscmVhZHkgc2V0LCB0aGUgY29ycmVzcG9uZGluZyBtZXNzYWdlIGlzIG1vcmUKKyAg
ICAgICAgICAgIC8vIGRlc2NyaXB0aXZlIHRoYW4gdGhlIGdlbmVyaWMgbWVzc2FnZSBkZWZpbmVk
IGhlcmUuCisgICAgICAgICAgICBpZiAodGVzdHMuc3RhdHVzLnN0YXR1cyA9PT0gbnVsbCkgewor
ICAgICAgICAgICAgICAgIHRlc3RzLnN0YXR1cy5zdGF0dXMgPSB0ZXN0cy5zdGF0dXMuRVJST1I7
CisgICAgICAgICAgICAgICAgdGVzdHMuc3RhdHVzLm1lc3NhZ2UgPSAiZG9uZSgpIHdhcyBjYWxs
ZWQgd2l0aG91dCBmaXJzdCBkZWZpbmluZyBhbnkgdGVzdHMiOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICB0ZXN0cy5jb21wbGV0ZSgpOworICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAgICAgICAgIGlmICh0ZXN0cy5maWxlX2lzX3Rlc3QpIHsKICAgICAgICAgICAgIC8vIGZp
bGUgaXMgdGVzdCBmaWxlcyBuZXZlciBoYXZlIGFzeW5jaHJvbm91cyBjbGVhbnVwIGxvZ2ljLApA
QCAtNzk0LDYgKzk2NSwxMiBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4K
ICAgICAgICAgICAgICAgICB9KTsKICAgICB9CiAKKyAgICAvKgorICAgICAqIFJlZ2lzdGVyIGEg
ZnVuY3Rpb24gYXMgYSBET00gZXZlbnQgbGlzdGVuZXIgdG8gdGhlIGdpdmVuIG9iamVjdCBmb3Ig
dGhlCisgICAgICogZXZlbnQgYnViYmxpbmcgcGhhc2UuCisgICAgICoKKyAgICAgKiBUaGlzIGZ1
bmN0aW9uIHdhcyBkZXByZWNhdGVkIGluIE5vdmVtYmVyIG9mIDIwMTkuCisgICAgICovCiAgICAg
ZnVuY3Rpb24gb25fZXZlbnQob2JqZWN0LCBldmVudCwgY2FsbGJhY2spCiAgICAgewogICAgICAg
ICBvYmplY3QuYWRkRXZlbnRMaXN0ZW5lcihldmVudCwgY2FsbGJhY2ssIGZhbHNlKTsKQEAgLTgx
MCw5ICs5ODcsMTIgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAg
ZXhwb3NlKHRlc3QsICd0ZXN0Jyk7CiAgICAgZXhwb3NlKGFzeW5jX3Rlc3QsICdhc3luY190ZXN0
Jyk7CiAgICAgZXhwb3NlKHByb21pc2VfdGVzdCwgJ3Byb21pc2VfdGVzdCcpOwotICAgIGV4cG9z
ZShwcm9taXNlX3JlamVjdHMsICdwcm9taXNlX3JlamVjdHMnKTsKKyAgICBleHBvc2UocHJvbWlz
ZV9yZWplY3RzX2pzLCAncHJvbWlzZV9yZWplY3RzX2pzJyk7CisgICAgZXhwb3NlKHByb21pc2Vf
cmVqZWN0c19kb20sICdwcm9taXNlX3JlamVjdHNfZG9tJyk7CisgICAgZXhwb3NlKHByb21pc2Vf
cmVqZWN0c19leGFjdGx5LCAncHJvbWlzZV9yZWplY3RzX2V4YWN0bHknKTsKICAgICBleHBvc2Uo
Z2VuZXJhdGVfdGVzdHMsICdnZW5lcmF0ZV90ZXN0cycpOwogICAgIGV4cG9zZShzZXR1cCwgJ3Nl
dHVwJyk7CisgICAgZXhwb3NlKHByb21pc2Vfc2V0dXAsICdwcm9taXNlX3NldHVwJyk7CiAgICAg
ZXhwb3NlKGRvbmUsICdkb25lJyk7CiAgICAgZXhwb3NlKG9uX2V2ZW50LCAnb25fZXZlbnQnKTsK
ICAgICBleHBvc2Uoc3RlcF90aW1lb3V0LCAnc3RlcF90aW1lb3V0Jyk7CkBAIC05MTQsMTIgKzEw
OTQsMjAgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAgICAg
ICBzZWVuLnB1c2godmFsKTsKICAgICAgICAgfQogICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2
YWwpKSB7Ci0gICAgICAgICAgICByZXR1cm4gIlsiICsgdmFsLm1hcChmdW5jdGlvbih4KSB7cmV0
dXJuIGZvcm1hdF92YWx1ZSh4LCBzZWVuKTt9KS5qb2luKCIsICIpICsgIl0iOworICAgICAgICAg
ICAgbGV0IG91dHB1dCA9ICJbIjsKKyAgICAgICAgICAgIGlmICh2YWwuYmVnaW5FbGxpcHNpcyAh
PT0gdW5kZWZpbmVkKSB7CisgICAgICAgICAgICAgICAgb3V0cHV0ICs9ICLigKYsICI7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBvdXRwdXQgKz0gdmFsLm1hcChmdW5jdGlvbih4KSB7cmV0
dXJuIGZvcm1hdF92YWx1ZSh4LCBzZWVuKTt9KS5qb2luKCIsICIpOworICAgICAgICAgICAgaWYg
KHZhbC5lbmRFbGxpcHNpcyAhPT0gdW5kZWZpbmVkKSB7CisgICAgICAgICAgICAgICAgb3V0cHV0
ICs9ICIsIOKApiI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gb3V0cHV0ICsg
Il0iOwogICAgICAgICB9CiAKICAgICAgICAgc3dpdGNoICh0eXBlb2YgdmFsKSB7CiAgICAgICAg
IGNhc2UgInN0cmluZyI6Ci0gICAgICAgICAgICB2YWwgPSB2YWwucmVwbGFjZSgiXFwiLCAiXFxc
XCIpOworICAgICAgICAgICAgdmFsID0gdmFsLnJlcGxhY2UoL1xcL2csICJcXFxcIik7CiAgICAg
ICAgICAgICBmb3IgKHZhciBwIGluIHJlcGxhY2VtZW50cykgewogICAgICAgICAgICAgICAgIHZh
ciByZXBsYWNlID0gIlxcIiArIHJlcGxhY2VtZW50c1twXTsKICAgICAgICAgICAgICAgICB2YWwg
PSB2YWwucmVwbGFjZShSZWdFeHAoU3RyaW5nLmZyb21DaGFyQ29kZShwKSwgImciKSwgcmVwbGFj
ZSk7CkBAIC05ODQsMTkgKzExNzIsNTMgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3Jt
cyBbM10uCiAgICAgICogQXNzZXJ0aW9ucwogICAgICAqLwogCisgICAgZnVuY3Rpb24gZXhwb3Nl
X2Fzc2VydChmLCBuYW1lKSB7CisgICAgICAgIGZ1bmN0aW9uIGFzc2VydF93cmFwcGVyKC4uLmFy
Z3MpIHsKKyAgICAgICAgICAgIGxldCBzdGF0dXMgPSBUZXN0LnN0YXR1c2VzLlRJTUVPVVQ7Cisg
ICAgICAgICAgICBsZXQgc3RhY2sgPSBudWxsOworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAg
ICAgICAgICBpZiAoc2V0dGluZ3MuZGVidWcpIHsKKyAgICAgICAgICAgICAgICAgICAgY29uc29s
ZS5kZWJ1ZygiQVNTRVJUIiwgbmFtZSwgdGVzdHMuY3VycmVudF90ZXN0ICYmIHRlc3RzLmN1cnJl
bnRfdGVzdC5uYW1lLCBhcmdzKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
aWYgKHRlc3RzLm91dHB1dCkgeworICAgICAgICAgICAgICAgICAgICB0ZXN0cy5zZXRfYXNzZXJ0
KG5hbWUsIGFyZ3MpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjb25zdCBy
diA9IGYuYXBwbHkodW5kZWZpbmVkLCBhcmdzKTsKKyAgICAgICAgICAgICAgICBzdGF0dXMgPSBU
ZXN0LnN0YXR1c2VzLlBBU1M7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJ2OworICAgICAgICAg
ICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBBc3NlcnRp
b25FcnJvcikgeworICAgICAgICAgICAgICAgICAgICBzdGF0dXMgPSBUZXN0LnN0YXR1c2VzLkZB
SUw7CisgICAgICAgICAgICAgICAgICAgIHN0YWNrID0gZS5zdGFjazsKKyAgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVzID0gVGVzdC5zdGF0dXNlcy5F
UlJPUjsKKyAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHRocm93IGU7CisgICAg
ICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICAgICAgICAgIGlmICh0ZXN0cy5vdXRwdXQgJiYg
IXN0YWNrKSB7CisgICAgICAgICAgICAgICAgICAgIHN0YWNrID0gZ2V0X3N0YWNrKCk7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICh0ZXN0cy5vdXRwdXQpIHsKKyAgICAg
ICAgICAgICAgICAgICAgdGVzdHMuc2V0X2Fzc2VydF9zdGF0dXMoc3RhdHVzLCBzdGFjayk7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGV4cG9z
ZShhc3NlcnRfd3JhcHBlciwgbmFtZSk7CisgICAgfQorCiAgICAgZnVuY3Rpb24gYXNzZXJ0X3Ry
dWUoYWN0dWFsLCBkZXNjcmlwdGlvbikKICAgICB7CiAgICAgICAgIGFzc2VydChhY3R1YWwgPT09
IHRydWUsICJhc3NlcnRfdHJ1ZSIsIGRlc2NyaXB0aW9uLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiZXhwZWN0ZWQgdHJ1ZSBnb3QgJHthY3R1YWx9Iiwge2FjdHVhbDphY3R1YWx9
KTsKICAgICB9Ci0gICAgZXhwb3NlKGFzc2VydF90cnVlLCAiYXNzZXJ0X3RydWUiKTsKKyAgICBl
eHBvc2VfYXNzZXJ0KGFzc2VydF90cnVlLCAiYXNzZXJ0X3RydWUiKTsKIAogICAgIGZ1bmN0aW9u
IGFzc2VydF9mYWxzZShhY3R1YWwsIGRlc2NyaXB0aW9uKQogICAgIHsKICAgICAgICAgYXNzZXJ0
KGFjdHVhbCA9PT0gZmFsc2UsICJhc3NlcnRfZmFsc2UiLCBkZXNjcmlwdGlvbiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCBmYWxzZSBnb3QgJHthY3R1YWx9Iiwg
e2FjdHVhbDphY3R1YWx9KTsKICAgICB9Ci0gICAgZXhwb3NlKGFzc2VydF9mYWxzZSwgImFzc2Vy
dF9mYWxzZSIpOworICAgIGV4cG9zZV9hc3NlcnQoYXNzZXJ0X2ZhbHNlLCAiYXNzZXJ0X2ZhbHNl
Iik7CiAKICAgICBmdW5jdGlvbiBzYW1lX3ZhbHVlKHgsIHkpIHsKICAgICAgICAgaWYgKHkgIT09
IHkpIHsKQEAgLTEwMjYsNyArMTI0OCw3IEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9y
bXMgWzNdLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4
cGVjdGVkICR7ZXhwZWN0ZWR9IGJ1dCBnb3QgJHthY3R1YWx9IiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtleHBlY3RlZDpleHBlY3RlZCwgYWN0dWFsOmFj
dHVhbH0pOwogICAgIH0KLSAgICBleHBvc2UoYXNzZXJ0X2VxdWFscywgImFzc2VydF9lcXVhbHMi
KTsKKyAgICBleHBvc2VfYXNzZXJ0KGFzc2VydF9lcXVhbHMsICJhc3NlcnRfZXF1YWxzIik7CiAK
ICAgICBmdW5jdGlvbiBhc3NlcnRfbm90X2VxdWFscyhhY3R1YWwsIGV4cGVjdGVkLCBkZXNjcmlw
dGlvbikKICAgICB7CkBAIC0xMDM4LDcgKzEyNjAsNyBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0
aW9uIGZvcm1zIFszXS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiZ290IGRpc2FsbG93ZWQgdmFsdWUgJHthY3R1YWx9IiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7YWN0dWFsOmFjdHVhbH0pOwogICAgIH0KLSAg
ICBleHBvc2UoYXNzZXJ0X25vdF9lcXVhbHMsICJhc3NlcnRfbm90X2VxdWFscyIpOworICAgIGV4
cG9zZV9hc3NlcnQoYXNzZXJ0X25vdF9lcXVhbHMsICJhc3NlcnRfbm90X2VxdWFscyIpOwogCiAg
ICAgZnVuY3Rpb24gYXNzZXJ0X2luX2FycmF5KGFjdHVhbCwgZXhwZWN0ZWQsIGRlc2NyaXB0aW9u
KQogICAgIHsKQEAgLTEwNDYsOCArMTI2OCwxMCBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9u
IGZvcm1zIFszXS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgInZhbHVlICR7YWN0dWFsfSBub3QgaW4gYXJyYXkgJHtleHBlY3RlZH0iLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7YWN0dWFsOmFjdHVhbCwgZXhw
ZWN0ZWQ6ZXhwZWN0ZWR9KTsKICAgICB9Ci0gICAgZXhwb3NlKGFzc2VydF9pbl9hcnJheSwgImFz
c2VydF9pbl9hcnJheSIpOworICAgIGV4cG9zZV9hc3NlcnQoYXNzZXJ0X2luX2FycmF5LCAiYXNz
ZXJ0X2luX2FycmF5Iik7CiAKKyAgICAvLyBUaGlzIGZ1bmN0aW9uIHdhcyBkZXByZWNhdGVkIGlu
IEp1bHkgb2YgMjAxNS4KKyAgICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9y
bS10ZXN0cy93cHQvaXNzdWVzLzIwMzMKICAgICBmdW5jdGlvbiBhc3NlcnRfb2JqZWN0X2VxdWFs
cyhhY3R1YWwsIGV4cGVjdGVkLCBkZXNjcmlwdGlvbikKICAgICB7CiAgICAgICAgICBhc3NlcnQo
dHlwZW9mIGFjdHVhbCA9PT0gIm9iamVjdCIgJiYgYWN0dWFsICE9PSBudWxsLCAiYXNzZXJ0X29i
amVjdF9lcXVhbHMiLCBkZXNjcmlwdGlvbiwKQEAgLTEwNzAsNyArMTI5NCw3IEBAIHBvbGljaWVz
IGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAgICAgICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KHNhbWVfdmFsdWUoYWN0dWFsW3BdLCBleHBlY3Rl
ZFtwXSksICJhc3NlcnRfb2JqZWN0X2VxdWFscyIsIGRlc2NyaXB0aW9uLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwcm9wZXJ0eSAke3B9
IGV4cGVjdGVkICR7ZXhwZWN0ZWR9IGdvdCAke2FjdHVhbH0iLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtwOnAsIGV4cGVjdGVkOmV4cGVj
dGVkLCBhY3R1YWw6YWN0dWFsfSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAge3A6cCwgZXhwZWN0ZWQ6ZXhwZWN0ZWRbcF0sIGFjdHVhbDph
Y3R1YWxbcF19KTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICBmb3IgKHAgaW4gZXhwZWN0ZWQpIHsKQEAgLTEwODIsMzIgKzEzMDYsNjQgQEAgcG9saWNp
ZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAgICB9CiAgICAgICAgICBjaGVj
a19lcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBbXSk7CiAgICAgfQotICAgIGV4cG9zZShhc3NlcnRf
b2JqZWN0X2VxdWFscywgImFzc2VydF9vYmplY3RfZXF1YWxzIik7CisgICAgZXhwb3NlX2Fzc2Vy
dChhc3NlcnRfb2JqZWN0X2VxdWFscywgImFzc2VydF9vYmplY3RfZXF1YWxzIik7CiAKICAgICBm
dW5jdGlvbiBhc3NlcnRfYXJyYXlfZXF1YWxzKGFjdHVhbCwgZXhwZWN0ZWQsIGRlc2NyaXB0aW9u
KQogICAgIHsKKyAgICAgICAgY29uc3QgbWF4X2FycmF5X2xlbmd0aCA9IDIwOworICAgICAgICBm
dW5jdGlvbiBzaG9ydGVuX2FycmF5KGFyciwgb2Zmc2V0ID0gMCkgeworICAgICAgICAgICAgLy8g
TWFrZSAiLCDigKYiIG9ubHkgc2hvdyB1cCB3aGVuIGl0IHdvdWxkIGxpa2VseSByZWR1Y2UgdGhl
IGxlbmd0aCwgbm90IGFjY291bnRpbmcgZm9yCisgICAgICAgICAgICAvLyBmb250cy4KKyAgICAg
ICAgICAgIGlmIChhcnIubGVuZ3RoIDwgbWF4X2FycmF5X2xlbmd0aCArIDIpIHsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gYXJyOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gQnkgZGVm
YXVsdCB3ZSB3YW50IGhhbGYgdGhlIGVsZW1lbnRzIGFmdGVyIHRoZSBvZmZzZXQgYW5kIGhhbGYg
YmVmb3JlCisgICAgICAgICAgICAvLyBCdXQgaWYgdGhhdCB0YWtlcyB1cyBwYXN0IHRoZSBlbmQg
b2YgdGhlIGFycmF5LCB3ZSBoYXZlIG1vcmUgYmVmb3JlLCBhbmQKKyAgICAgICAgICAgIC8vIGlm
IGl0IHRha2VzIHVzIGJlZm9yZSB0aGUgc3RhcnQgd2UgaGF2ZSBtb3JlIGFmdGVyLgorICAgICAg
ICAgICAgY29uc3QgbGVuZ3RoX2FmdGVyX29mZnNldCA9IE1hdGguZmxvb3IobWF4X2FycmF5X2xl
bmd0aCAvIDIpOworICAgICAgICAgICAgbGV0IHVwcGVyX2JvdW5kID0gTWF0aC5taW4obGVuZ3Ro
X2FmdGVyX29mZnNldCArIG9mZnNldCwgYXJyLmxlbmd0aCk7CisgICAgICAgICAgICBjb25zdCBs
b3dlcl9ib3VuZCA9IE1hdGgubWF4KHVwcGVyX2JvdW5kIC0gbWF4X2FycmF5X2xlbmd0aCwgMCk7
CisKKyAgICAgICAgICAgIGlmIChsb3dlcl9ib3VuZCA9PT0gMCkgeworICAgICAgICAgICAgICAg
IHVwcGVyX2JvdW5kID0gbWF4X2FycmF5X2xlbmd0aDsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgY29uc3Qgb3V0cHV0ID0gYXJyLnNsaWNlKGxvd2VyX2JvdW5kLCB1cHBlcl9ib3VuZCk7
CisgICAgICAgICAgICBpZiAobG93ZXJfYm91bmQgPiAwKSB7CisgICAgICAgICAgICAgICAgb3V0
cHV0LmJlZ2luRWxsaXBzaXMgPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYg
KHVwcGVyX2JvdW5kIDwgYXJyLmxlbmd0aCkgeworICAgICAgICAgICAgICAgIG91dHB1dC5lbmRF
bGxpcHNpcyA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gb3V0cHV0
OworICAgICAgICB9CisKICAgICAgICAgYXNzZXJ0KHR5cGVvZiBhY3R1YWwgPT09ICJvYmplY3Qi
ICYmIGFjdHVhbCAhPT0gbnVsbCAmJiAibGVuZ3RoIiBpbiBhY3R1YWwsCiAgICAgICAgICAgICAg
ICAiYXNzZXJ0X2FycmF5X2VxdWFscyIsIGRlc2NyaXB0aW9uLAogICAgICAgICAgICAgICAgInZh
bHVlIGlzICR7YWN0dWFsfSwgZXhwZWN0ZWQgYXJyYXkiLAogICAgICAgICAgICAgICAge2FjdHVh
bDphY3R1YWx9KTsKICAgICAgICAgYXNzZXJ0KGFjdHVhbC5sZW5ndGggPT09IGV4cGVjdGVkLmxl
bmd0aCwKICAgICAgICAgICAgICAgICJhc3NlcnRfYXJyYXlfZXF1YWxzIiwgZGVzY3JpcHRpb24s
Ci0gICAgICAgICAgICAgICAibGVuZ3RocyBkaWZmZXIsIGV4cGVjdGVkICR7ZXhwZWN0ZWR9IGdv
dCAke2FjdHVhbH0iLAotICAgICAgICAgICAgICAge2V4cGVjdGVkOmV4cGVjdGVkLmxlbmd0aCwg
YWN0dWFsOmFjdHVhbC5sZW5ndGh9KTsKKyAgICAgICAgICAgICAgICJsZW5ndGhzIGRpZmZlciwg
ZXhwZWN0ZWQgYXJyYXkgJHtleHBlY3RlZH0gbGVuZ3RoICR7ZXhwZWN0ZWRMZW5ndGh9LCBnb3Qg
JHthY3R1YWx9IGxlbmd0aCAke2FjdHVhbExlbmd0aH0iLAorICAgICAgICAgICAgICAge2V4cGVj
dGVkOnNob3J0ZW5fYXJyYXkoZXhwZWN0ZWQsIGV4cGVjdGVkLmxlbmd0aCAtIDEpLCBleHBlY3Rl
ZExlbmd0aDpleHBlY3RlZC5sZW5ndGgsCisgICAgICAgICAgICAgICAgYWN0dWFsOnNob3J0ZW5f
YXJyYXkoYWN0dWFsLCBhY3R1YWwubGVuZ3RoIC0gMSksIGFjdHVhbExlbmd0aDphY3R1YWwubGVu
Z3RoCisgICAgICAgICAgICAgICB9KTsKIAogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFj
dHVhbC5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgYXNzZXJ0KGFjdHVhbC5oYXNPd25Qcm9w
ZXJ0eShpKSA9PT0gZXhwZWN0ZWQuaGFzT3duUHJvcGVydHkoaSksCiAgICAgICAgICAgICAgICAg
ICAgImFzc2VydF9hcnJheV9lcXVhbHMiLCBkZXNjcmlwdGlvbiwKLSAgICAgICAgICAgICAgICAg
ICAicHJvcGVydHkgJHtpfSwgcHJvcGVydHkgZXhwZWN0ZWQgdG8gYmUgJHtleHBlY3RlZH0gYnV0
IHdhcyAke2FjdHVhbH0iLAorICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCBwcm9wZXJ0eSAk
e2l9IHRvIGJlICR7ZXhwZWN0ZWR9IGJ1dCB3YXMgJHthY3R1YWx9IChleHBlY3RlZCBhcnJheSAk
e2FycmF5RXhwZWN0ZWR9IGdvdCAke2FycmF5QWN0dWFsfSkiLAogICAgICAgICAgICAgICAgICAg
IHtpOmksIGV4cGVjdGVkOmV4cGVjdGVkLmhhc093blByb3BlcnR5KGkpID8gInByZXNlbnQiIDog
Im1pc3NpbmciLAotICAgICAgICAgICAgICAgICAgIGFjdHVhbDphY3R1YWwuaGFzT3duUHJvcGVy
dHkoaSkgPyAicHJlc2VudCIgOiAibWlzc2luZyJ9KTsKKyAgICAgICAgICAgICAgICAgICAgYWN0
dWFsOmFjdHVhbC5oYXNPd25Qcm9wZXJ0eShpKSA/ICJwcmVzZW50IiA6ICJtaXNzaW5nIiwKKyAg
ICAgICAgICAgICAgICAgICAgYXJyYXlFeHBlY3RlZDpzaG9ydGVuX2FycmF5KGV4cGVjdGVkLCBp
KSwgYXJyYXlBY3R1YWw6c2hvcnRlbl9hcnJheShhY3R1YWwsIGkpfSk7CiAgICAgICAgICAgICBh
c3NlcnQoc2FtZV92YWx1ZShleHBlY3RlZFtpXSwgYWN0dWFsW2ldKSwKICAgICAgICAgICAgICAg
ICAgICAiYXNzZXJ0X2FycmF5X2VxdWFscyIsIGRlc2NyaXB0aW9uLAotICAgICAgICAgICAgICAg
ICAgICJwcm9wZXJ0eSAke2l9LCBleHBlY3RlZCAke2V4cGVjdGVkfSBidXQgZ290ICR7YWN0dWFs
fSIsCi0gICAgICAgICAgICAgICAgICAge2k6aSwgZXhwZWN0ZWQ6ZXhwZWN0ZWRbaV0sIGFjdHVh
bDphY3R1YWxbaV19KTsKKyAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgcHJvcGVydHkgJHtp
fSB0byBiZSAke2V4cGVjdGVkfSBidXQgZ290ICR7YWN0dWFsfSAoZXhwZWN0ZWQgYXJyYXkgJHth
cnJheUV4cGVjdGVkfSBnb3QgJHthcnJheUFjdHVhbH0pIiwKKyAgICAgICAgICAgICAgICAgICB7
aTppLCBleHBlY3RlZDpleHBlY3RlZFtpXSwgYWN0dWFsOmFjdHVhbFtpXSwKKyAgICAgICAgICAg
ICAgICAgICAgYXJyYXlFeHBlY3RlZDpzaG9ydGVuX2FycmF5KGV4cGVjdGVkLCBpKSwgYXJyYXlB
Y3R1YWw6c2hvcnRlbl9hcnJheShhY3R1YWwsIGkpfSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAg
ZXhwb3NlKGFzc2VydF9hcnJheV9lcXVhbHMsICJhc3NlcnRfYXJyYXlfZXF1YWxzIik7CisgICAg
ZXhwb3NlX2Fzc2VydChhc3NlcnRfYXJyYXlfZXF1YWxzLCAiYXNzZXJ0X2FycmF5X2VxdWFscyIp
OwogCiAgICAgZnVuY3Rpb24gYXNzZXJ0X2FycmF5X2FwcHJveF9lcXVhbHMoYWN0dWFsLCBleHBl
Y3RlZCwgZXBzaWxvbiwgZGVzY3JpcHRpb24pCiAgICAgewpAQCAtMTEyNCw3ICsxMzgwLDcgQEAg
cG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAgICAgICAgICAgICAg
ImFzc2VydF9hcnJheV9hcHByb3hfZXF1YWxzIiwgZGVzY3JpcHRpb24sCiAgICAgICAgICAgICAg
ICAgICAgInByb3BlcnR5ICR7aX0sIHByb3BlcnR5IGV4cGVjdGVkIHRvIGJlICR7ZXhwZWN0ZWR9
IGJ1dCB3YXMgJHthY3R1YWx9IiwKICAgICAgICAgICAgICAgICAgICB7aTppLCBleHBlY3RlZDpl
eHBlY3RlZC5oYXNPd25Qcm9wZXJ0eShpKSA/ICJwcmVzZW50IiA6ICJtaXNzaW5nIiwKLSAgICAg
ICAgICAgICAgICAgICBhY3R1YWw6YWN0dWFsLmhhc093blByb3BlcnR5KGkpID8gInByZXNlbnQi
IDogIm1pc3NpbmcifSk7CisgICAgICAgICAgICAgICAgICAgIGFjdHVhbDphY3R1YWwuaGFzT3du
UHJvcGVydHkoaSkgPyAicHJlc2VudCIgOiAibWlzc2luZyJ9KTsKICAgICAgICAgICAgIGFzc2Vy
dCh0eXBlb2YgYWN0dWFsW2ldID09PSAibnVtYmVyIiwKICAgICAgICAgICAgICAgICAgICAiYXNz
ZXJ0X2FycmF5X2FwcHJveF9lcXVhbHMiLCBkZXNjcmlwdGlvbiwKICAgICAgICAgICAgICAgICAg
ICAicHJvcGVydHkgJHtpfSwgZXhwZWN0ZWQgYSBudW1iZXIgYnV0IGdvdCBhICR7dHlwZV9hY3R1
YWx9IiwKQEAgLTExMzUsNyArMTM5MSw3IEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9y
bXMgWzNdLgogICAgICAgICAgICAgICAgICAgIHtpOmksIGV4cGVjdGVkOmV4cGVjdGVkW2ldLCBh
Y3R1YWw6YWN0dWFsW2ldLCBlcHNpbG9uOmVwc2lsb259KTsKICAgICAgICAgfQogICAgIH0KLSAg
ICBleHBvc2UoYXNzZXJ0X2FycmF5X2FwcHJveF9lcXVhbHMsICJhc3NlcnRfYXJyYXlfYXBwcm94
X2VxdWFscyIpOworICAgIGV4cG9zZV9hc3NlcnQoYXNzZXJ0X2FycmF5X2FwcHJveF9lcXVhbHMs
ICJhc3NlcnRfYXJyYXlfYXBwcm94X2VxdWFscyIpOwogCiAgICAgZnVuY3Rpb24gYXNzZXJ0X2Fw
cHJveF9lcXVhbHMoYWN0dWFsLCBleHBlY3RlZCwgZXBzaWxvbiwgZGVzY3JpcHRpb24pCiAgICAg
ewpAQCAtMTE0NywxMiArMTQwMywxOCBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1z
IFszXS4KICAgICAgICAgICAgICAgICJleHBlY3RlZCBhIG51bWJlciBidXQgZ290IGEgJHt0eXBl
X2FjdHVhbH0iLAogICAgICAgICAgICAgICAge3R5cGVfYWN0dWFsOnR5cGVvZiBhY3R1YWx9KTsK
IAotICAgICAgICBhc3NlcnQoTWF0aC5hYnMoYWN0dWFsIC0gZXhwZWN0ZWQpIDw9IGVwc2lsb24s
Ci0gICAgICAgICAgICAgICAiYXNzZXJ0X2FwcHJveF9lcXVhbHMiLCBkZXNjcmlwdGlvbiwKLSAg
ICAgICAgICAgICAgICJleHBlY3RlZCAke2V4cGVjdGVkfSArLy0gJHtlcHNpbG9ufSBidXQgZ290
ICR7YWN0dWFsfSIsCi0gICAgICAgICAgICAgICB7ZXhwZWN0ZWQ6ZXhwZWN0ZWQsIGFjdHVhbDph
Y3R1YWwsIGVwc2lsb246ZXBzaWxvbn0pOworICAgICAgICAvLyBUaGUgZXBzaWxvbiBtYXRoIGJl
bG93IGRvZXMgbm90IHBsYWNlIG5pY2Ugd2l0aCBOYU4gYW5kIEluZmluaXR5CisgICAgICAgIC8v
IEJ1dCBpbiB0aGlzIGNhc2UgSW5maW5pdHkgPSBJbmZpbml0eSBhbmQgTmFOID0gTmFOCisgICAg
ICAgIGlmIChpc0Zpbml0ZShhY3R1YWwpIHx8IGlzRmluaXRlKGV4cGVjdGVkKSkgeworICAgICAg
ICAgICAgYXNzZXJ0KE1hdGguYWJzKGFjdHVhbCAtIGV4cGVjdGVkKSA8PSBlcHNpbG9uLAorICAg
ICAgICAgICAgICAgICAgICJhc3NlcnRfYXBwcm94X2VxdWFscyIsIGRlc2NyaXB0aW9uLAorICAg
ICAgICAgICAgICAgICAgICJleHBlY3RlZCAke2V4cGVjdGVkfSArLy0gJHtlcHNpbG9ufSBidXQg
Z290ICR7YWN0dWFsfSIsCisgICAgICAgICAgICAgICAgICAge2V4cGVjdGVkOmV4cGVjdGVkLCBh
Y3R1YWw6YWN0dWFsLCBlcHNpbG9uOmVwc2lsb259KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIGFzc2VydF9lcXVhbHMoYWN0dWFsLCBleHBlY3RlZCk7CisgICAgICAgIH0KICAgICB9
Ci0gICAgZXhwb3NlKGFzc2VydF9hcHByb3hfZXF1YWxzLCAiYXNzZXJ0X2FwcHJveF9lcXVhbHMi
KTsKKyAgICBleHBvc2VfYXNzZXJ0KGFzc2VydF9hcHByb3hfZXF1YWxzLCAiYXNzZXJ0X2FwcHJv
eF9lcXVhbHMiKTsKIAogICAgIGZ1bmN0aW9uIGFzc2VydF9sZXNzX3RoYW4oYWN0dWFsLCBleHBl
Y3RlZCwgZGVzY3JpcHRpb24pCiAgICAgewpAQCAtMTE2OSw3ICsxNDMxLDcgQEAgcG9saWNpZXMg
YW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgYSBu
dW1iZXIgbGVzcyB0aGFuICR7ZXhwZWN0ZWR9IGJ1dCBnb3QgJHthY3R1YWx9IiwKICAgICAgICAg
ICAgICAgIHtleHBlY3RlZDpleHBlY3RlZCwgYWN0dWFsOmFjdHVhbH0pOwogICAgIH0KLSAgICBl
eHBvc2UoYXNzZXJ0X2xlc3NfdGhhbiwgImFzc2VydF9sZXNzX3RoYW4iKTsKKyAgICBleHBvc2Vf
YXNzZXJ0KGFzc2VydF9sZXNzX3RoYW4sICJhc3NlcnRfbGVzc190aGFuIik7CiAKICAgICBmdW5j
dGlvbiBhc3NlcnRfZ3JlYXRlcl90aGFuKGFjdHVhbCwgZXhwZWN0ZWQsIGRlc2NyaXB0aW9uKQog
ICAgIHsKQEAgLTExODYsNyArMTQ0OCw3IEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9y
bXMgWzNdLgogICAgICAgICAgICAgICAgImV4cGVjdGVkIGEgbnVtYmVyIGdyZWF0ZXIgdGhhbiAk
e2V4cGVjdGVkfSBidXQgZ290ICR7YWN0dWFsfSIsCiAgICAgICAgICAgICAgICB7ZXhwZWN0ZWQ6
ZXhwZWN0ZWQsIGFjdHVhbDphY3R1YWx9KTsKICAgICB9Ci0gICAgZXhwb3NlKGFzc2VydF9ncmVh
dGVyX3RoYW4sICJhc3NlcnRfZ3JlYXRlcl90aGFuIik7CisgICAgZXhwb3NlX2Fzc2VydChhc3Nl
cnRfZ3JlYXRlcl90aGFuLCAiYXNzZXJ0X2dyZWF0ZXJfdGhhbiIpOwogCiAgICAgZnVuY3Rpb24g
YXNzZXJ0X2JldHdlZW5fZXhjbHVzaXZlKGFjdHVhbCwgbG93ZXIsIHVwcGVyLCBkZXNjcmlwdGlv
bikKICAgICB7CkBAIC0xMjA0LDcgKzE0NjYsNyBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9u
IGZvcm1zIFszXS4KICAgICAgICAgICAgICAgICJhbmQgbGVzcyB0aGFuICR7dXBwZXJ9IGJ1dCBn
b3QgJHthY3R1YWx9IiwKICAgICAgICAgICAgICAgIHtsb3dlcjpsb3dlciwgdXBwZXI6dXBwZXIs
IGFjdHVhbDphY3R1YWx9KTsKICAgICB9Ci0gICAgZXhwb3NlKGFzc2VydF9iZXR3ZWVuX2V4Y2x1
c2l2ZSwgImFzc2VydF9iZXR3ZWVuX2V4Y2x1c2l2ZSIpOworICAgIGV4cG9zZV9hc3NlcnQoYXNz
ZXJ0X2JldHdlZW5fZXhjbHVzaXZlLCAiYXNzZXJ0X2JldHdlZW5fZXhjbHVzaXZlIik7CiAKICAg
ICBmdW5jdGlvbiBhc3NlcnRfbGVzc190aGFuX2VxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIGRlc2Ny
aXB0aW9uKQogICAgIHsKQEAgLTEyMjEsNyArMTQ4Myw3IEBAIHBvbGljaWVzIGFuZCBjb250cmli
dXRpb24gZm9ybXMgWzNdLgogICAgICAgICAgICAgICAgImV4cGVjdGVkIGEgbnVtYmVyIGxlc3Mg
dGhhbiBvciBlcXVhbCB0byAke2V4cGVjdGVkfSBidXQgZ290ICR7YWN0dWFsfSIsCiAgICAgICAg
ICAgICAgICB7ZXhwZWN0ZWQ6ZXhwZWN0ZWQsIGFjdHVhbDphY3R1YWx9KTsKICAgICB9Ci0gICAg
ZXhwb3NlKGFzc2VydF9sZXNzX3RoYW5fZXF1YWwsICJhc3NlcnRfbGVzc190aGFuX2VxdWFsIik7
CisgICAgZXhwb3NlX2Fzc2VydChhc3NlcnRfbGVzc190aGFuX2VxdWFsLCAiYXNzZXJ0X2xlc3Nf
dGhhbl9lcXVhbCIpOwogCiAgICAgZnVuY3Rpb24gYXNzZXJ0X2dyZWF0ZXJfdGhhbl9lcXVhbChh
Y3R1YWwsIGV4cGVjdGVkLCBkZXNjcmlwdGlvbikKICAgICB7CkBAIC0xMjM4LDcgKzE1MDAsNyBA
QCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgICAgICAgICJl
eHBlY3RlZCBhIG51bWJlciBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJHtleHBlY3RlZH0gYnV0
IGdvdCAke2FjdHVhbH0iLAogICAgICAgICAgICAgICAge2V4cGVjdGVkOmV4cGVjdGVkLCBhY3R1
YWw6YWN0dWFsfSk7CiAgICAgfQotICAgIGV4cG9zZShhc3NlcnRfZ3JlYXRlcl90aGFuX2VxdWFs
LCAiYXNzZXJ0X2dyZWF0ZXJfdGhhbl9lcXVhbCIpOworICAgIGV4cG9zZV9hc3NlcnQoYXNzZXJ0
X2dyZWF0ZXJfdGhhbl9lcXVhbCwgImFzc2VydF9ncmVhdGVyX3RoYW5fZXF1YWwiKTsKIAogICAg
IGZ1bmN0aW9uIGFzc2VydF9iZXR3ZWVuX2luY2x1c2l2ZShhY3R1YWwsIGxvd2VyLCB1cHBlciwg
ZGVzY3JpcHRpb24pCiAgICAgewpAQCAtMTI1Niw3ICsxNTE4LDcgQEAgcG9saWNpZXMgYW5kIGNv
bnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAgICAgICAgICAiYW5kIGxlc3MgdGhhbiBvciBl
cXVhbCB0byAke3VwcGVyfSBidXQgZ290ICR7YWN0dWFsfSIsCiAgICAgICAgICAgICAgICB7bG93
ZXI6bG93ZXIsIHVwcGVyOnVwcGVyLCBhY3R1YWw6YWN0dWFsfSk7CiAgICAgfQotICAgIGV4cG9z
ZShhc3NlcnRfYmV0d2Vlbl9pbmNsdXNpdmUsICJhc3NlcnRfYmV0d2Vlbl9pbmNsdXNpdmUiKTsK
KyAgICBleHBvc2VfYXNzZXJ0KGFzc2VydF9iZXR3ZWVuX2luY2x1c2l2ZSwgImFzc2VydF9iZXR3
ZWVuX2luY2x1c2l2ZSIpOwogCiAgICAgZnVuY3Rpb24gYXNzZXJ0X3JlZ2V4cF9tYXRjaChhY3R1
YWwsIGV4cGVjdGVkLCBkZXNjcmlwdGlvbikgewogICAgICAgICAvKgpAQCAtMTI2NywzMyArMTUy
OSwzOCBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgICAg
ICAgICJleHBlY3RlZCAke2V4cGVjdGVkfSBidXQgZ290ICR7YWN0dWFsfSIsCiAgICAgICAgICAg
ICAgICB7ZXhwZWN0ZWQ6ZXhwZWN0ZWQsIGFjdHVhbDphY3R1YWx9KTsKICAgICB9Ci0gICAgZXhw
b3NlKGFzc2VydF9yZWdleHBfbWF0Y2gsICJhc3NlcnRfcmVnZXhwX21hdGNoIik7CisgICAgZXhw
b3NlX2Fzc2VydChhc3NlcnRfcmVnZXhwX21hdGNoLCAiYXNzZXJ0X3JlZ2V4cF9tYXRjaCIpOwog
CiAgICAgZnVuY3Rpb24gYXNzZXJ0X2NsYXNzX3N0cmluZyhvYmplY3QsIGNsYXNzX3N0cmluZywg
ZGVzY3JpcHRpb24pIHsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyh7fS50b1N0cmluZy5jYWxsKG9i
amVjdCksICJbb2JqZWN0ICIgKyBjbGFzc19zdHJpbmcgKyAiXSIsCi0gICAgICAgICAgICAgICAg
ICAgICAgZGVzY3JpcHRpb24pOworICAgICAgICB2YXIgYWN0dWFsID0ge30udG9TdHJpbmcuY2Fs
bChvYmplY3QpOworICAgICAgICB2YXIgZXhwZWN0ZWQgPSAiW29iamVjdCAiICsgY2xhc3Nfc3Ry
aW5nICsgIl0iOworICAgICAgICBhc3NlcnQoc2FtZV92YWx1ZShhY3R1YWwsIGV4cGVjdGVkKSwg
ImFzc2VydF9jbGFzc19zdHJpbmciLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCAke2V4cGVjdGVkfSBidXQgZ290ICR7
YWN0dWFsfSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7
ZXhwZWN0ZWQ6ZXhwZWN0ZWQsIGFjdHVhbDphY3R1YWx9KTsKICAgICB9Ci0gICAgZXhwb3NlKGFz
c2VydF9jbGFzc19zdHJpbmcsICJhc3NlcnRfY2xhc3Nfc3RyaW5nIik7Ci0KKyAgICBleHBvc2Vf
YXNzZXJ0KGFzc2VydF9jbGFzc19zdHJpbmcsICJhc3NlcnRfY2xhc3Nfc3RyaW5nIik7CiAKICAg
ICBmdW5jdGlvbiBhc3NlcnRfb3duX3Byb3BlcnR5KG9iamVjdCwgcHJvcGVydHlfbmFtZSwgZGVz
Y3JpcHRpb24pIHsKICAgICAgICAgYXNzZXJ0KG9iamVjdC5oYXNPd25Qcm9wZXJ0eShwcm9wZXJ0
eV9uYW1lKSwKICAgICAgICAgICAgICAgICJhc3NlcnRfb3duX3Byb3BlcnR5IiwgZGVzY3JpcHRp
b24sCiAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgcHJvcGVydHkgJHtwfSBtaXNzaW5nIiwge3A6
cHJvcGVydHlfbmFtZX0pOwogICAgIH0KLSAgICBleHBvc2UoYXNzZXJ0X293bl9wcm9wZXJ0eSwg
ImFzc2VydF9vd25fcHJvcGVydHkiKTsKKyAgICBleHBvc2VfYXNzZXJ0KGFzc2VydF9vd25fcHJv
cGVydHksICJhc3NlcnRfb3duX3Byb3BlcnR5Iik7CiAKICAgICBmdW5jdGlvbiBhc3NlcnRfbm90
X293bl9wcm9wZXJ0eShvYmplY3QsIHByb3BlcnR5X25hbWUsIGRlc2NyaXB0aW9uKSB7CiAgICAg
ICAgIGFzc2VydCghb2JqZWN0Lmhhc093blByb3BlcnR5KHByb3BlcnR5X25hbWUpLAogICAgICAg
ICAgICAgICAgImFzc2VydF9ub3Rfb3duX3Byb3BlcnR5IiwgZGVzY3JpcHRpb24sCiAgICAgICAg
ICAgICAgICAidW5leHBlY3RlZCBwcm9wZXJ0eSAke3B9IGlzIGZvdW5kIG9uIG9iamVjdCIsIHtw
OnByb3BlcnR5X25hbWV9KTsKICAgICB9Ci0gICAgZXhwb3NlKGFzc2VydF9ub3Rfb3duX3Byb3Bl
cnR5LCAiYXNzZXJ0X25vdF9vd25fcHJvcGVydHkiKTsKKyAgICBleHBvc2VfYXNzZXJ0KGFzc2Vy
dF9ub3Rfb3duX3Byb3BlcnR5LCAiYXNzZXJ0X25vdF9vd25fcHJvcGVydHkiKTsKIAogICAgIGZ1
bmN0aW9uIF9hc3NlcnRfaW5oZXJpdHMobmFtZSkgewogICAgICAgICByZXR1cm4gZnVuY3Rpb24g
KG9iamVjdCwgcHJvcGVydHlfbmFtZSwgZGVzY3JpcHRpb24pCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIGFzc2VydCh0eXBlb2Ygb2JqZWN0ID09PSAib2JqZWN0IiB8fCB0eXBlb2Ygb2JqZWN0ID09
PSAiZnVuY3Rpb24iLAorICAgICAgICAgICAgYXNzZXJ0KCh0eXBlb2Ygb2JqZWN0ID09PSAib2Jq
ZWN0IiAmJiBvYmplY3QgIT09IG51bGwpIHx8CisgICAgICAgICAgICAgICAgICAgdHlwZW9mIG9i
amVjdCA9PT0gImZ1bmN0aW9uIiB8fAorICAgICAgICAgICAgICAgICAgIC8vIE9yIGhhcyBbW0lz
SFRNTEREQV1dIHNsb3QKKyAgICAgICAgICAgICAgICAgICBTdHJpbmcob2JqZWN0KSA9PT0gIltv
YmplY3QgSFRNTEFsbENvbGxlY3Rpb25dIiwKICAgICAgICAgICAgICAgICAgICBuYW1lLCBkZXNj
cmlwdGlvbiwKICAgICAgICAgICAgICAgICAgICAicHJvdmlkZWQgdmFsdWUgaXMgbm90IGFuIG9i
amVjdCIpOwogCkBAIC0xMzEyLDggKzE1NzksOCBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9u
IGZvcm1zIFszXS4KICAgICAgICAgICAgICAgICAgICB7cDpwcm9wZXJ0eV9uYW1lfSk7CiAgICAg
ICAgIH07CiAgICAgfQotICAgIGV4cG9zZShfYXNzZXJ0X2luaGVyaXRzKCJhc3NlcnRfaW5oZXJp
dHMiKSwgImFzc2VydF9pbmhlcml0cyIpOwotICAgIGV4cG9zZShfYXNzZXJ0X2luaGVyaXRzKCJh
c3NlcnRfaWRsX2F0dHJpYnV0ZSIpLCAiYXNzZXJ0X2lkbF9hdHRyaWJ1dGUiKTsKKyAgICBleHBv
c2VfYXNzZXJ0KF9hc3NlcnRfaW5oZXJpdHMoImFzc2VydF9pbmhlcml0cyIpLCAiYXNzZXJ0X2lu
aGVyaXRzIik7CisgICAgZXhwb3NlX2Fzc2VydChfYXNzZXJ0X2luaGVyaXRzKCJhc3NlcnRfaWRs
X2F0dHJpYnV0ZSIpLCAiYXNzZXJ0X2lkbF9hdHRyaWJ1dGUiKTsKIAogICAgIGZ1bmN0aW9uIGFz
c2VydF9yZWFkb25seShvYmplY3QsIHByb3BlcnR5X25hbWUsIGRlc2NyaXB0aW9uKQogICAgIHsK
QEAgLTEzMzAsNTAgKzE1OTcsMTU2IEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMg
WzNdLgogICAgICAgICAgICAgIG9iamVjdFtwcm9wZXJ0eV9uYW1lXSA9IGluaXRpYWxfdmFsdWU7
CiAgICAgICAgICB9CiAgICAgfQotICAgIGV4cG9zZShhc3NlcnRfcmVhZG9ubHksICJhc3NlcnRf
cmVhZG9ubHkiKTsKKyAgICBleHBvc2VfYXNzZXJ0KGFzc2VydF9yZWFkb25seSwgImFzc2VydF9y
ZWFkb25seSIpOwogCiAgICAgLyoqCi0gICAgICogQXNzZXJ0IGFuIEV4Y2VwdGlvbiB3aXRoIHRo
ZSBleHBlY3RlZCBjb2RlIGlzIHRocm93bi4KKyAgICAgKiBBc3NlcnQgYSBKUyBFcnJvciB3aXRo
IHRoZSBleHBlY3RlZCBjb25zdHJ1Y3RvciBpcyB0aHJvd24uCiAgICAgICoKLSAgICAgKiBAcGFy
YW0ge29iamVjdHxudW1iZXJ8c3RyaW5nfSBjb2RlIFRoZSBleHBlY3RlZCBleGNlcHRpb24gY29k
ZS4KKyAgICAgKiBAcGFyYW0ge29iamVjdH0gY29uc3RydWN0b3IgVGhlIGV4cGVjdGVkIGV4Y2Vw
dGlvbiBjb25zdHJ1Y3Rvci4KICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIEZ1bmN0aW9u
IHdoaWNoIHNob3VsZCB0aHJvdy4KICAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzY3JpcHRpb24g
RXJyb3IgZGVzY3JpcHRpb24gZm9yIHRoZSBjYXNlIHRoYXQgdGhlIGVycm9yIGlzIG5vdCB0aHJv
d24uCiAgICAgICovCi0gICAgZnVuY3Rpb24gYXNzZXJ0X3Rocm93cyhjb2RlLCBmdW5jLCBkZXNj
cmlwdGlvbikKKyAgICBmdW5jdGlvbiBhc3NlcnRfdGhyb3dzX2pzKGNvbnN0cnVjdG9yLCBmdW5j
LCBkZXNjcmlwdGlvbikKKyAgICB7CisgICAgICAgIGFzc2VydF90aHJvd3NfanNfaW1wbChjb25z
dHJ1Y3RvciwgZnVuYywgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiYXNzZXJ0X3Rocm93c19qcyIpOworICAgIH0KKyAgICBleHBvc2VfYXNzZXJ0KGFzc2VydF90
aHJvd3NfanMsICJhc3NlcnRfdGhyb3dzX2pzIik7CisKKyAgICAvKioKKyAgICAgKiBMaWtlIGFz
c2VydF90aHJvd3NfanMgYnV0IGFsbG93cyBzcGVjaWZ5aW5nIHRoZSBhc3NlcnRpb24gdHlwZQor
ICAgICAqIChhc3NlcnRfdGhyb3dzX2pzIG9yIHByb21pc2VfcmVqZWN0c19qcywgaW4gcHJhY3Rp
Y2UpLgorICAgICAqLworICAgIGZ1bmN0aW9uIGFzc2VydF90aHJvd3NfanNfaW1wbChjb25zdHJ1
Y3RvciwgZnVuYywgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGFzc2VydGlvbl90eXBlKQogICAgIHsKICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgIGZ1
bmMuY2FsbCh0aGlzKTsKLSAgICAgICAgICAgIGFzc2VydChmYWxzZSwgImFzc2VydF90aHJvd3Mi
LCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgIGFzc2VydChmYWxzZSwgYXNzZXJ0aW9uX3R5cGUs
IGRlc2NyaXB0aW9uLAogICAgICAgICAgICAgICAgICAgICIke2Z1bmN9IGRpZCBub3QgdGhyb3ci
LCB7ZnVuYzpmdW5jfSk7CiAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgIGlmIChl
IGluc3RhbmNlb2YgQXNzZXJ0aW9uRXJyb3IpIHsKICAgICAgICAgICAgICAgICB0aHJvdyBlOwog
ICAgICAgICAgICAgfQogCisgICAgICAgICAgICAvLyBCYXNpYyBzYW5pdHktY2hlY2tzIG9uIHRo
ZSB0aHJvd24gZXhjZXB0aW9uLgogICAgICAgICAgICAgYXNzZXJ0KHR5cGVvZiBlID09PSAib2Jq
ZWN0IiwKLSAgICAgICAgICAgICAgICAgICAiYXNzZXJ0X3Rocm93cyIsIGRlc2NyaXB0aW9uLAor
ICAgICAgICAgICAgICAgICAgIGFzc2VydGlvbl90eXBlLCBkZXNjcmlwdGlvbiwKICAgICAgICAg
ICAgICAgICAgICAiJHtmdW5jfSB0aHJldyAke2V9IHdpdGggdHlwZSAke3R5cGV9LCBub3QgYW4g
b2JqZWN0IiwKICAgICAgICAgICAgICAgICAgICB7ZnVuYzpmdW5jLCBlOmUsIHR5cGU6dHlwZW9m
IGV9KTsKIAogICAgICAgICAgICAgYXNzZXJ0KGUgIT09IG51bGwsCi0gICAgICAgICAgICAgICAg
ICAgImFzc2VydF90aHJvd3MiLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICAgICBhc3Nl
cnRpb25fdHlwZSwgZGVzY3JpcHRpb24sCiAgICAgICAgICAgICAgICAgICAgIiR7ZnVuY30gdGhy
ZXcgbnVsbCwgbm90IGFuIG9iamVjdCIsCiAgICAgICAgICAgICAgICAgICAge2Z1bmM6ZnVuY30p
OwogCi0gICAgICAgICAgICBpZiAoY29kZSA9PT0gbnVsbCkgewotICAgICAgICAgICAgICAgIHRo
cm93IG5ldyBBc3NlcnRpb25FcnJvcignVGVzdCBidWc6IG5lZWQgdG8gcGFzcyBleGNlcHRpb24g
dG8gYXNzZXJ0X3Rocm93cygpJyk7CisgICAgICAgICAgICAvLyBCYXNpYyBzYW5pdHktY2hlY2sg
b24gdGhlIHBhc3NlZC1pbiBjb25zdHJ1Y3RvcgorICAgICAgICAgICAgYXNzZXJ0KHR5cGVvZiBj
b25zdHJ1Y3RvciA9PSAiZnVuY3Rpb24iLAorICAgICAgICAgICAgICAgICAgIGFzc2VydGlvbl90
eXBlLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAiJHtjb25zdHJ1Y3Rvcn0gaXMg
bm90IGEgY29uc3RydWN0b3IiLAorICAgICAgICAgICAgICAgICAgIHtjb25zdHJ1Y3Rvcjpjb25z
dHJ1Y3Rvcn0pOworICAgICAgICAgICAgdmFyIG9iaiA9IGNvbnN0cnVjdG9yOworICAgICAgICAg
ICAgd2hpbGUgKG9iaikgeworICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygb2JqID09PSAiZnVu
Y3Rpb24iICYmCisgICAgICAgICAgICAgICAgICAgIG9iai5uYW1lID09PSAiRXJyb3IiKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICBvYmogPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqKTsKICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGlmICh0eXBlb2YgY29kZSA9PT0gIm9iamVjdCIpIHsKLSAgICAgICAgICAgICAg
ICBhc3NlcnQoIm5hbWUiIGluIGUgJiYgZS5uYW1lID09IGNvZGUubmFtZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgImFzc2VydF90aHJvd3MiLCBkZXNjcmlwdGlvbiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIiR7ZnVuY30gdGhyZXcgJHthY3R1YWx9ICgke2FjdHVhbF9uYW1lfSkgZXhwZWN0
ZWQgJHtleHBlY3RlZH0gKCR7ZXhwZWN0ZWRfbmFtZX0pIiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHtmdW5jOmZ1bmMsIGFjdHVhbDplLCBhY3R1YWxfbmFtZTplLm5hbWUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQ6Y29kZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9uYW1lOmNvZGUubmFt
ZX0pOwotICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGFzc2VydChvYmogIT0g
bnVsbCwKKyAgICAgICAgICAgICAgICAgICBhc3NlcnRpb25fdHlwZSwgZGVzY3JpcHRpb24sCisg
ICAgICAgICAgICAgICAgICAgIiR7Y29uc3RydWN0b3J9IGlzIG5vdCBhbiBFcnJvciBzdWJ0eXBl
IiwKKyAgICAgICAgICAgICAgICAgICB7Y29uc3RydWN0b3I6Y29uc3RydWN0b3J9KTsKKworICAg
ICAgICAgICAgLy8gQW5kIGNoZWNraW5nIHRoYXQgb3VyIGV4Y2VwdGlvbiBpcyByZWFzb25hYmxl
CisgICAgICAgICAgICBhc3NlcnQoZS5jb25zdHJ1Y3RvciA9PT0gY29uc3RydWN0b3IgJiYKKyAg
ICAgICAgICAgICAgICAgICBlLm5hbWUgPT09IGNvbnN0cnVjdG9yLm5hbWUsCisgICAgICAgICAg
ICAgICAgICAgYXNzZXJ0aW9uX3R5cGUsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAgICAg
ICIke2Z1bmN9IHRocmV3ICR7YWN0dWFsfSAoJHthY3R1YWxfbmFtZX0pIGV4cGVjdGVkIGluc3Rh
bmNlIG9mICR7ZXhwZWN0ZWR9ICgke2V4cGVjdGVkX25hbWV9KSIsCisgICAgICAgICAgICAgICAg
ICAge2Z1bmM6ZnVuYywgYWN0dWFsOmUsIGFjdHVhbF9uYW1lOmUubmFtZSwKKyAgICAgICAgICAg
ICAgICAgICAgZXhwZWN0ZWQ6Y29uc3RydWN0b3IsCisgICAgICAgICAgICAgICAgICAgIGV4cGVj
dGVkX25hbWU6Y29uc3RydWN0b3IubmFtZX0pOworICAgICAgICB9CisgICAgfQorCisgICAgLyoq
CisgICAgICogQXNzZXJ0IGEgRE9NRXhjZXB0aW9uIHdpdGggdGhlIGV4cGVjdGVkIHR5cGUgaXMg
dGhyb3duLgorICAgICAqCisgICAgICogQHBhcmFtIHtudW1iZXJ8c3RyaW5nfSB0eXBlIFRoZSBl
eHBlY3RlZCBleGNlcHRpb24gbmFtZSBvciBjb2RlLiAgU2VlIHRoZQorICAgICAqICAgICAgICB0
YWJsZSBvZiBuYW1lcyBhbmQgY29kZXMgYXQKKyAgICAgKiAgICAgICAgaHR0cHM6Ly9oZXljYW0u
Z2l0aHViLmlvL3dlYmlkbC8jZGZuLWVycm9yLW5hbWVzLXRhYmxlCisgICAgICogICAgICAgIElm
IGEgbnVtYmVyIGlzIHBhc3NlZCBpdCBzaG91bGQgYmUgb25lIG9mIHRoZSBudW1lcmljIGNvZGUg
dmFsdWVzCisgICAgICogICAgICAgIGluIHRoYXQgdGFibGUgKGUuZy4gMywgNCwgZXRjKS4gIElm
IGEgc3RyaW5nIGlzIHBhc3NlZCBpdCBjYW4KKyAgICAgKiAgICAgICAgZWl0aGVyIGJlIGFuIGV4
Y2VwdGlvbiBuYW1lIChlLmcuICJIaWVyYXJjaHlSZXF1ZXN0RXJyb3IiLAorICAgICAqICAgICAg
ICAiV3JvbmdEb2N1bWVudEVycm9yIikgb3IgdGhlIG5hbWUgb2YgdGhlIGNvcnJlc3BvbmRpbmcg
ZXJyb3IgY29kZQorICAgICAqICAgICAgICAoZS5nLiAiSElFUkFSQ0hZX1JFUVVFU1RfRVJSIiwg
IldST05HX0RPQ1VNRU5UX0VSUiIpLgorICAgICAqCisgICAgICogRm9yIHRoZSByZW1haW5pbmcg
YXJndW1lbnRzLCB0aGVyZSBhcmUgdHdvIHdheXMgb2YgY2FsbGluZworICAgICAqIHByb21pc2Vf
cmVqZWN0c19kb206CisgICAgICoKKyAgICAgKiAxKSBJZiB0aGUgRE9NRXhjZXB0aW9uIGlzIGV4
cGVjdGVkIHRvIGNvbWUgZnJvbSB0aGUgY3VycmVudCBnbG9iYWwsIHRoZQorICAgICAqIHNlY29u
ZCBhcmd1bWVudCBzaG91bGQgYmUgdGhlIGZ1bmN0aW9uIGV4cGVjdGVkIHRvIHRocm93IGFuZCBh
IHRoaXJkLAorICAgICAqIG9wdGlvbmFsLCBhcmd1bWVudCBpcyB0aGUgYXNzZXJ0aW9uIGRlc2Ny
aXB0aW9uLgorICAgICAqCisgICAgICogMikgSWYgdGhlIERPTUV4Y2VwdGlvbiBpcyBleHBlY3Rl
ZCB0byBjb21lIGZyb20gc29tZSBvdGhlciBnbG9iYWwsIHRoZQorICAgICAqIHNlY29uZCBhcmd1
bWVudCBzaG91bGQgYmUgdGhlIERPTUV4Y2VwdGlvbiBjb25zdHJ1Y3RvciBmcm9tIHRoYXQgZ2xv
YmFsLAorICAgICAqIHRoZSB0aGlyZCBhcmd1bWVudCB0aGUgZnVuY3Rpb24gZXhwZWN0ZWQgdG8g
dGhyb3csIGFuZCB0aGUgZm91cnRoLCBvcHRpb25hbCwKKyAgICAgKiBhcmd1bWVudCB0aGUgYXNz
ZXJ0aW9uIGRlc2NyaXB0aW9uLgorICAgICAqLworICAgIGZ1bmN0aW9uIGFzc2VydF90aHJvd3Nf
ZG9tKHR5cGUsIGZ1bmNPckNvbnN0cnVjdG9yLCBkZXNjcmlwdGlvbk9yRnVuYywgbWF5YmVEZXNj
cmlwdGlvbikKKyAgICB7CisgICAgICAgIGxldCBjb25zdHJ1Y3RvciwgZnVuYywgZGVzY3JpcHRp
b247CisgICAgICAgIGlmIChmdW5jT3JDb25zdHJ1Y3Rvci5uYW1lID09PSAiRE9NRXhjZXB0aW9u
IikgeworICAgICAgICAgICAgY29uc3RydWN0b3IgPSBmdW5jT3JDb25zdHJ1Y3RvcjsKKyAgICAg
ICAgICAgIGZ1bmMgPSBkZXNjcmlwdGlvbk9yRnVuYzsKKyAgICAgICAgICAgIGRlc2NyaXB0aW9u
ID0gbWF5YmVEZXNjcmlwdGlvbjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGNvbnN0
cnVjdG9yID0gc2VsZi5ET01FeGNlcHRpb247CisgICAgICAgICAgICBmdW5jID0gZnVuY09yQ29u
c3RydWN0b3I7CisgICAgICAgICAgICBkZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uT3JGdW5jOwor
ICAgICAgICAgICAgYXNzZXJ0KG1heWJlRGVzY3JpcHRpb24gPT09IHVuZGVmaW5lZCwKKyAgICAg
ICAgICAgICAgICAgICAiVG9vIG1hbnkgYXJncyBwYXNlZCB0byBuby1jb25zdHJ1Y3RvciB2ZXJz
aW9uIG9mIGFzc2VydF90aHJvd3NfZG9tIik7CisgICAgICAgIH0KKyAgICAgICAgYXNzZXJ0X3Ro
cm93c19kb21faW1wbCh0eXBlLCBmdW5jLCBkZXNjcmlwdGlvbiwgImFzc2VydF90aHJvd3NfZG9t
IiwgY29uc3RydWN0b3IpCisgICAgfQorICAgIGV4cG9zZV9hc3NlcnQoYXNzZXJ0X3Rocm93c19k
b20sICJhc3NlcnRfdGhyb3dzX2RvbSIpOworCisgICAgLyoqCisgICAgICogU2ltaWxhciB0byBh
c3NlcnRfdGhyb3dzX2RvbSBidXQgYWxsb3dzIHNwZWNpZnlpbmcgdGhlIGFzc2VydGlvbiB0eXBl
CisgICAgICogKGFzc2VydF90aHJvd3NfZG9tIG9yIHByb21pc2VfcmVqZWN0c19kb20sIGluIHBy
YWN0aWNlKS4gIFRoZQorICAgICAqICJjb25zdHJ1Y3RvciIgYXJndW1lbnQgbXVzdCBiZSB0aGUg
RE9NRXhjZXB0aW9uIGNvbnN0cnVjdG9yIGZyb20gdGhlCisgICAgICogZ2xvYmFsIHdlIGV4cGVj
dCB0aGUgZXhjZXB0aW9uIHRvIGNvbWUgZnJvbS4KKyAgICAgKi8KKyAgICBmdW5jdGlvbiBhc3Nl
cnRfdGhyb3dzX2RvbV9pbXBsKHR5cGUsIGZ1bmMsIGRlc2NyaXB0aW9uLCBhc3NlcnRpb25fdHlw
ZSwgY29uc3RydWN0b3IpCisgICAgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgZnVuYy5j
YWxsKHRoaXMpOworICAgICAgICAgICAgYXNzZXJ0KGZhbHNlLCBhc3NlcnRpb25fdHlwZSwgZGVz
Y3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgIiR7ZnVuY30gZGlkIG5vdCB0aHJvdyIsIHtm
dW5jOmZ1bmN9KTsKKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgaWYgKGUgaW5z
dGFuY2VvZiBBc3NlcnRpb25FcnJvcikgeworICAgICAgICAgICAgICAgIHRocm93IGU7CiAgICAg
ICAgICAgICB9CiAKLSAgICAgICAgICAgIHZhciBjb2RlX25hbWVfbWFwID0geworICAgICAgICAg
ICAgLy8gQmFzaWMgc2FuaXR5LWNoZWNrcyBvbiB0aGUgdGhyb3duIGV4Y2VwdGlvbi4KKyAgICAg
ICAgICAgIGFzc2VydCh0eXBlb2YgZSA9PT0gIm9iamVjdCIsCisgICAgICAgICAgICAgICAgICAg
YXNzZXJ0aW9uX3R5cGUsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAgICAgICIke2Z1bmN9
IHRocmV3ICR7ZX0gd2l0aCB0eXBlICR7dHlwZX0sIG5vdCBhbiBvYmplY3QiLAorICAgICAgICAg
ICAgICAgICAgIHtmdW5jOmZ1bmMsIGU6ZSwgdHlwZTp0eXBlb2YgZX0pOworCisgICAgICAgICAg
ICBhc3NlcnQoZSAhPT0gbnVsbCwKKyAgICAgICAgICAgICAgICAgICBhc3NlcnRpb25fdHlwZSwg
ZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgIiR7ZnVuY30gdGhyZXcgbnVsbCwgbm90
IGFuIG9iamVjdCIsCisgICAgICAgICAgICAgICAgICAge2Z1bmM6ZnVuY30pOworCisgICAgICAg
ICAgICAvLyBTYW5pdHktY2hlY2sgb3VyIHR5cGUKKyAgICAgICAgICAgIGFzc2VydCh0eXBlb2Yg
dHlwZSA9PSAibnVtYmVyIiB8fAorICAgICAgICAgICAgICAgICAgIHR5cGVvZiB0eXBlID09ICJz
dHJpbmciLAorICAgICAgICAgICAgICAgICAgIGFzc2VydGlvbl90eXBlLCBkZXNjcmlwdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAiJHt0eXBlfSBpcyBub3QgYSBudW1iZXIgb3Igc3RyaW5nIiwK
KyAgICAgICAgICAgICAgICAgICB7dHlwZTp0eXBlfSk7CisKKyAgICAgICAgICAgIHZhciBjb2Rl
bmFtZV9uYW1lX21hcCA9IHsKICAgICAgICAgICAgICAgICBJTkRFWF9TSVpFX0VSUjogJ0luZGV4
U2l6ZUVycm9yJywKICAgICAgICAgICAgICAgICBISUVSQVJDSFlfUkVRVUVTVF9FUlI6ICdIaWVy
YXJjaHlSZXF1ZXN0RXJyb3InLAogICAgICAgICAgICAgICAgIFdST05HX0RPQ1VNRU5UX0VSUjog
J1dyb25nRG9jdW1lbnRFcnJvcicsCkBAIC0xMzk4LDggKzE3NzEsNiBAQCBwb2xpY2llcyBhbmQg
Y29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgICAgICAgICBEQVRBX0NMT05FX0VSUjog
J0RhdGFDbG9uZUVycm9yJwogICAgICAgICAgICAgfTsKIAotICAgICAgICAgICAgdmFyIG5hbWUg
PSBjb2RlIGluIGNvZGVfbmFtZV9tYXAgPyBjb2RlX25hbWVfbWFwW2NvZGVdIDogY29kZTsKLQog
ICAgICAgICAgICAgdmFyIG5hbWVfY29kZV9tYXAgPSB7CiAgICAgICAgICAgICAgICAgSW5kZXhT
aXplRXJyb3I6IDEsCiAgICAgICAgICAgICAgICAgSGllcmFyY2h5UmVxdWVzdEVycm9yOiAzLApA
QCAtMTQ0MywxOSArMTgxNCwyMyBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFsz
XS4KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHZhciBy
ZXF1aXJlZF9wcm9wcyA9IHsgY29kZTogY29kZSB9OworICAgICAgICAgICAgdmFyIHJlcXVpcmVk
X3Byb3BzID0ge307CisgICAgICAgICAgICB2YXIgbmFtZTsKIAotICAgICAgICAgICAgaWYgKHR5
cGVvZiBjb2RlID09PSAibnVtYmVyIikgewotICAgICAgICAgICAgICAgIGlmIChjb2RlID09PSAw
KSB7Ci0gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25FcnJvcignVGVzdCBi
dWc6IGFtYmlndW91cyBET01FeGNlcHRpb24gY29kZSAwIHBhc3NlZCB0byBhc3NlcnRfdGhyb3dz
KCknKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCEoY29kZSBpbiBjb2RlX25hbWVfbWFw
KSkgewotICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRXJyb3IoJ1Rlc3Qg
YnVnOiB1bnJlY29nbml6ZWQgRE9NRXhjZXB0aW9uIGNvZGUgIicgKyBjb2RlICsgJyIgcGFzc2Vk
IHRvIGFzc2VydF90aHJvd3MoKScpOworICAgICAgICAgICAgaWYgKHR5cGVvZiB0eXBlID09PSAi
bnVtYmVyIikgeworICAgICAgICAgICAgICAgIGlmICh0eXBlID09PSAwKSB7CisgICAgICAgICAg
ICAgICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25FcnJvcignVGVzdCBidWc6IGFtYmlndW91cyBE
T01FeGNlcHRpb24gY29kZSAwIHBhc3NlZCB0byBhc3NlcnRfdGhyb3dzX2RvbSgpJyk7CisgICAg
ICAgICAgICAgICAgfSBlbHNlIGlmICghKHR5cGUgaW4gY29kZV9uYW1lX21hcCkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbkVycm9yKCdUZXN0IGJ1ZzogdW5yZWNv
Z25pemVkIERPTUV4Y2VwdGlvbiBjb2RlICInICsgdHlwZSArICciIHBhc3NlZCB0byBhc3NlcnRf
dGhyb3dzX2RvbSgpJyk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIG5hbWUg
PSBjb2RlX25hbWVfbWFwW2NvZGVdOwotICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgY29k
ZSA9PT0gInN0cmluZyIpIHsKKyAgICAgICAgICAgICAgICBuYW1lID0gY29kZV9uYW1lX21hcFt0
eXBlXTsKKyAgICAgICAgICAgICAgICByZXF1aXJlZF9wcm9wcy5jb2RlID0gdHlwZTsKKyAgICAg
ICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHR5cGUgPT09ICJzdHJpbmciKSB7CisgICAgICAgICAg
ICAgICAgbmFtZSA9IHR5cGUgaW4gY29kZW5hbWVfbmFtZV9tYXAgPyBjb2RlbmFtZV9uYW1lX21h
cFt0eXBlXSA6IHR5cGU7CiAgICAgICAgICAgICAgICAgaWYgKCEobmFtZSBpbiBuYW1lX2NvZGVf
bWFwKSkgewotICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRXJyb3IoJ1Rl
c3QgYnVnOiB1bnJlY29nbml6ZWQgRE9NRXhjZXB0aW9uIGNvZGUgIicgKyBjb2RlICsgJyIgcGFz
c2VkIHRvIGFzc2VydF90aHJvd3MoKScpOworICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcg
QXNzZXJ0aW9uRXJyb3IoJ1Rlc3QgYnVnOiB1bnJlY29nbml6ZWQgRE9NRXhjZXB0aW9uIGNvZGUg
bmFtZSBvciBuYW1lICInICsgdHlwZSArICciIHBhc3NlZCB0byBhc3NlcnRfdGhyb3dzX2RvbSgp
Jyk7CiAgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgcmVxdWlyZWRfcHJvcHMu
Y29kZSA9IG5hbWVfY29kZV9tYXBbbmFtZV07CiAgICAgICAgICAgICB9CiAKQEAgLTE0NjcsMjYg
KzE4NDIsNjUgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAg
ICAgICAgICAgcmVxdWlyZWRfcHJvcHMubmFtZSA9IG5hbWU7CiAgICAgICAgICAgICB9CiAKLSAg
ICAgICAgICAgIC8vV2UnZCBsaWtlIHRvIHRlc3QgdGhhdCBlIGluc3RhbmNlb2YgdGhlIGFwcHJv
cHJpYXRlIGludGVyZmFjZSwKLSAgICAgICAgICAgIC8vYnV0IHdlIGNhbid0LCBiZWNhdXNlIHdl
IGRvbid0IGtub3cgd2hhdCB3aW5kb3cgaXQgd2FzIGNyZWF0ZWQKLSAgICAgICAgICAgIC8vaW4u
ICBJdCBtaWdodCBiZSBhbiBpbnN0YW5jZW9mIHRoZSBhcHByb3ByaWF0ZSBpbnRlcmZhY2Ugb24g
c29tZQotICAgICAgICAgICAgLy91bmtub3duIG90aGVyIHdpbmRvdy4gIFRPRE86IFdvcmsgYXJv
dW5kIHRoaXMgc29tZWhvdz8KLQogICAgICAgICAgICAgZm9yICh2YXIgcHJvcCBpbiByZXF1aXJl
ZF9wcm9wcykgewogICAgICAgICAgICAgICAgIGFzc2VydChwcm9wIGluIGUgJiYgZVtwcm9wXSA9
PSByZXF1aXJlZF9wcm9wc1twcm9wXSwKLSAgICAgICAgICAgICAgICAgICAgICAgImFzc2VydF90
aHJvd3MiLCBkZXNjcmlwdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgIiR7ZnVuY30gdGhy
ZXcgJHtlfSB0aGF0IGlzIG5vdCBhIERPTUV4Y2VwdGlvbiAiICsgY29kZSArICI6IHByb3BlcnR5
ICR7cHJvcH0gaXMgZXF1YWwgdG8gJHthY3R1YWx9LCBleHBlY3RlZCAke2V4cGVjdGVkfSIsCisg
ICAgICAgICAgICAgICAgICAgICAgIGFzc2VydGlvbl90eXBlLCBkZXNjcmlwdGlvbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIiR7ZnVuY30gdGhyZXcgJHtlfSB0aGF0IGlzIG5vdCBhIERPTUV4
Y2VwdGlvbiAiICsgdHlwZSArICI6IHByb3BlcnR5ICR7cHJvcH0gaXMgZXF1YWwgdG8gJHthY3R1
YWx9LCBleHBlY3RlZCAke2V4cGVjdGVkfSIsCiAgICAgICAgICAgICAgICAgICAgICAgIHtmdW5j
OmZ1bmMsIGU6ZSwgcHJvcDpwcm9wLCBhY3R1YWw6ZVtwcm9wXSwgZXhwZWN0ZWQ6cmVxdWlyZWRf
cHJvcHNbcHJvcF19KTsKICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gQ2hlY2sgdGhh
dCB0aGUgZXhjZXB0aW9uIGlzIGZyb20gdGhlIHJpZ2h0IGdsb2JhbC4gIFRoaXMgY2hlY2sgaXMg
bGFzdAorICAgICAgICAgICAgLy8gc28gbW9yZSBzcGVjaWZpYywgYW5kIG1vcmUgaW5mb3JtYXRp
dmUsIGNoZWNrcyBvbiB0aGUgcHJvcGVydGllcyBjYW4KKyAgICAgICAgICAgIC8vIGhhcHBlbiBp
biBjYXNlIGEgdG90YWxseSBpbmNvcnJlY3QgZXhjZXB0aW9uIGlzIHRocm93bi4KKyAgICAgICAg
ICAgIGFzc2VydChlLmNvbnN0cnVjdG9yID09PSBjb25zdHJ1Y3RvciwKKyAgICAgICAgICAgICAg
ICAgICBhc3NlcnRpb25fdHlwZSwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgIiR7
ZnVuY30gdGhyZXcgYW4gZXhjZXB0aW9uIGZyb20gdGhlIHdyb25nIGdsb2JhbCIsCisgICAgICAg
ICAgICAgICAgICAge2Z1bmN9KTsKKworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAg
ICogQXNzZXJ0IHRoZSBwcm92aWRlZCB2YWx1ZSBpcyB0aHJvd24uCisgICAgICoKKyAgICAgKiBA
cGFyYW0ge3ZhbHVlfSBleGNlcHRpb24gVGhlIGV4cGVjdGVkIGV4Y2VwdGlvbi4KKyAgICAgKiBA
cGFyYW0ge0Z1bmN0aW9ufSBmdW5jIEZ1bmN0aW9uIHdoaWNoIHNob3VsZCB0aHJvdy4KKyAgICAg
KiBAcGFyYW0ge3N0cmluZ30gZGVzY3JpcHRpb24gRXJyb3IgZGVzY3JpcHRpb24gZm9yIHRoZSBj
YXNlIHRoYXQgdGhlIGVycm9yIGlzIG5vdCB0aHJvd24uCisgICAgICovCisgICAgZnVuY3Rpb24g
YXNzZXJ0X3Rocm93c19leGFjdGx5KGV4Y2VwdGlvbiwgZnVuYywgZGVzY3JpcHRpb24pCisgICAg
eworICAgICAgICBhc3NlcnRfdGhyb3dzX2V4YWN0bHlfaW1wbChleGNlcHRpb24sIGZ1bmMsIGRl
c2NyaXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXNzZXJ0X3Ro
cm93c19leGFjdGx5Iik7CisgICAgfQorICAgIGV4cG9zZV9hc3NlcnQoYXNzZXJ0X3Rocm93c19l
eGFjdGx5LCAiYXNzZXJ0X3Rocm93c19leGFjdGx5Iik7CisKKyAgICAvKioKKyAgICAgKiBMaWtl
IGFzc2VydF90aHJvd3NfZXhhY3RseSBidXQgYWxsb3dzIHNwZWNpZnlpbmcgdGhlIGFzc2VydGlv
biB0eXBlCisgICAgICogKGFzc2VydF90aHJvd3NfZXhhY3RseSBvciBwcm9taXNlX3JlamVjdHNf
ZXhhY3RseSwgaW4gcHJhY3RpY2UpLgorICAgICAqLworICAgIGZ1bmN0aW9uIGFzc2VydF90aHJv
d3NfZXhhY3RseV9pbXBsKGV4Y2VwdGlvbiwgZnVuYywgZGVzY3JpcHRpb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0aW9uX3R5cGUpCisgICAgeworICAg
ICAgICB0cnkgeworICAgICAgICAgICAgZnVuYy5jYWxsKHRoaXMpOworICAgICAgICAgICAgYXNz
ZXJ0KGZhbHNlLCBhc3NlcnRpb25fdHlwZSwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAg
ICAgIiR7ZnVuY30gZGlkIG5vdCB0aHJvdyIsIHtmdW5jOmZ1bmN9KTsKKyAgICAgICAgfSBjYXRj
aCAoZSkgeworICAgICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBBc3NlcnRpb25FcnJvcikgewor
ICAgICAgICAgICAgICAgIHRocm93IGU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGFz
c2VydChzYW1lX3ZhbHVlKGUsIGV4Y2VwdGlvbiksIGFzc2VydGlvbl90eXBlLCBkZXNjcmlwdGlv
biwKKyAgICAgICAgICAgICAgICAgICAiJHtmdW5jfSB0aHJldyAke2V9IGJ1dCB3ZSBleHBlY3Rl
ZCBpdCB0byB0aHJvdyAke2V4Y2VwdGlvbn0iLAorICAgICAgICAgICAgICAgICAgIHtmdW5jOmZ1
bmMsIGU6ZSwgZXhjZXB0aW9uOmV4Y2VwdGlvbn0pOwogICAgICAgICB9CiAgICAgfQotICAgIGV4
cG9zZShhc3NlcnRfdGhyb3dzLCAiYXNzZXJ0X3Rocm93cyIpOwogCiAgICAgZnVuY3Rpb24gYXNz
ZXJ0X3VucmVhY2hlZChkZXNjcmlwdGlvbikgewogICAgICAgICAgYXNzZXJ0KGZhbHNlLCAiYXNz
ZXJ0X3VucmVhY2hlZCIsIGRlc2NyaXB0aW9uLAogICAgICAgICAgICAgICAgICJSZWFjaGVkIHVu
cmVhY2hhYmxlIGNvZGUiKTsKICAgICB9Ci0gICAgZXhwb3NlKGFzc2VydF91bnJlYWNoZWQsICJh
c3NlcnRfdW5yZWFjaGVkIik7CisgICAgZXhwb3NlX2Fzc2VydChhc3NlcnRfdW5yZWFjaGVkLCAi
YXNzZXJ0X3VucmVhY2hlZCIpOwogCiAgICAgZnVuY3Rpb24gYXNzZXJ0X2FueShhc3NlcnRfZnVu
YywgYWN0dWFsLCBleHBlY3RlZF9hcnJheSkKICAgICB7CkBAIC0xNTA3LDggKzE5MjEsNDggQEAg
cG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAgICAgICB0aHJvdyBu
ZXcgQXNzZXJ0aW9uRXJyb3IoZXJyb3JzLmpvaW4oIlxuXG4iKSk7CiAgICAgICAgIH0KICAgICB9
CisgICAgLy8gRklYTUU6IGFzc2VydF9hbnkgY2Fubm90IHVzZSBleHBvc2VfYXNzZXJ0LCBiZWNh
dXNlIGFzc2VydF93cmFwcGVyIGRvZXMKKyAgICAvLyBub3Qgc3VwcG9ydCBuZXN0ZWQgYXNzZXJ0
IGNhbGxzIChlLmcuIHRvIGFzc2VydF9mdW5jKS4gV2UgbmVlZCB0bworICAgIC8vIHN1cHBvcnQg
YnlwYXNzaW5nIGFzc2VydF93cmFwcGVyIGZvciB0aGUgaW5uZXIgYXNzZXJ0cyBoZXJlLgogICAg
IGV4cG9zZShhc3NlcnRfYW55LCAiYXNzZXJ0X2FueSIpOwogCisgICAgLyoqCisgICAgICogQXNz
ZXJ0IHRoYXQgYSBmZWF0dXJlIGlzIGltcGxlbWVudGVkLCBiYXNlZCBvbiBhICd0cnV0aHknIGNv
bmRpdGlvbi4KKyAgICAgKgorICAgICAqIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIHVzZWQgdG8g
ZWFybHktZXhpdCBmcm9tIHRlc3RzIGluIHdoaWNoIHRoZXJlIGlzCisgICAgICogbm8gcG9pbnQg
Y29udGludWluZyB3aXRob3V0IHN1cHBvcnQgZm9yIGEgbm9uLW9wdGlvbmFsIHNwZWMgb3Igc3Bl
YworICAgICAqIGZlYXR1cmUuIEZvciBleGFtcGxlOgorICAgICAqCisgICAgICogICAgIGFzc2Vy
dF9pbXBsZW1lbnRzKHdpbmRvdy5Gb28sICdGb28gaXMgbm90IHN1cHBvcnRlZCcpOworICAgICAq
CisgICAgICogQHBhcmFtIHtvYmplY3R9IGNvbmRpdGlvbiBUaGUgdHJ1dGh5IHZhbHVlIHRvIHRl
c3QKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzY3JpcHRpb24gRXJyb3IgZGVzY3JpcHRpb24g
Zm9yIHRoZSBjYXNlIHRoYXQgdGhlIGNvbmRpdGlvbiBpcyBub3QgdHJ1dGh5LgorICAgICAqLwor
ICAgIGZ1bmN0aW9uIGFzc2VydF9pbXBsZW1lbnRzKGNvbmRpdGlvbiwgZGVzY3JpcHRpb24pIHsK
KyAgICAgICAgYXNzZXJ0KCEhY29uZGl0aW9uLCAiYXNzZXJ0X2ltcGxlbWVudHMiLCBkZXNjcmlw
dGlvbik7CisgICAgfQorICAgIGV4cG9zZV9hc3NlcnQoYXNzZXJ0X2ltcGxlbWVudHMsICJhc3Nl
cnRfaW1wbGVtZW50cyIpCisKKyAgICAvKioKKyAgICAgKiBBc3NlcnQgdGhhdCBhbiBvcHRpb25h
bCBmZWF0dXJlIGlzIGltcGxlbWVudGVkLCBiYXNlZCBvbiBhICd0cnV0aHknIGNvbmRpdGlvbi4K
KyAgICAgKgorICAgICAqIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIHVzZWQgdG8gZWFybHktZXhp
dCBmcm9tIHRlc3RzIGluIHdoaWNoIHRoZXJlIGlzCisgICAgICogbm8gcG9pbnQgY29udGludWlu
ZyB3aXRob3V0IHN1cHBvcnQgZm9yIGFuIGV4cGxpY2l0bHkgb3B0aW9uYWwgc3BlYyBvcgorICAg
ICAqIHNwZWMgZmVhdHVyZS4gRm9yIGV4YW1wbGU6CisgICAgICoKKyAgICAgKiAgICAgYXNzZXJ0
X2ltcGxlbWVudHNfb3B0aW9uYWwodmlkZW8uY2FuUGxheVR5cGUoInZpZGVvL3dlYm0iKSwKKyAg
ICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndlYm0gdmlkZW8gcGxheWJhY2sg
bm90IHN1cHBvcnRlZCIpOworICAgICAqCisgICAgICogQHBhcmFtIHtvYmplY3R9IGNvbmRpdGlv
biBUaGUgdHJ1dGh5IHZhbHVlIHRvIHRlc3QKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzY3Jp
cHRpb24gRXJyb3IgZGVzY3JpcHRpb24gZm9yIHRoZSBjYXNlIHRoYXQgdGhlIGNvbmRpdGlvbiBp
cyBub3QgdHJ1dGh5LgorICAgICAqLworICAgIGZ1bmN0aW9uIGFzc2VydF9pbXBsZW1lbnRzX29w
dGlvbmFsKGNvbmRpdGlvbiwgZGVzY3JpcHRpb24pIHsKKyAgICAgICAgaWYgKCFjb25kaXRpb24p
IHsKKyAgICAgICAgICAgIHRocm93IG5ldyBPcHRpb25hbEZlYXR1cmVVbnN1cHBvcnRlZEVycm9y
KGRlc2NyaXB0aW9uKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBleHBvc2VfYXNzZXJ0KGFzc2Vy
dF9pbXBsZW1lbnRzX29wdGlvbmFsLCAiYXNzZXJ0X2ltcGxlbWVudHNfb3B0aW9uYWwiKQorCiAg
ICAgZnVuY3Rpb24gVGVzdChuYW1lLCBwcm9wZXJ0aWVzKQogICAgIHsKICAgICAgICAgaWYgKHRl
c3RzLmZpbGVfaXNfdGVzdCAmJiB0ZXN0cy50ZXN0cy5sZW5ndGgpIHsKQEAgLTE1MjMsNyArMTk3
Nyw3IEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAgICB0aGlz
LnRpbWVvdXRfaWQgPSBudWxsOwogICAgICAgICB0aGlzLmluZGV4ID0gbnVsbDsKIAotICAgICAg
ICB0aGlzLnByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzOworICAgICAgICB0aGlzLnByb3BlcnRpZXMg
PSBwcm9wZXJ0aWVzIHx8IHt9OwogICAgICAgICB0aGlzLnRpbWVvdXRfbGVuZ3RoID0gc2V0dGlu
Z3MudGVzdF90aW1lb3V0OwogICAgICAgICBpZiAodGhpcy50aW1lb3V0X2xlbmd0aCAhPT0gbnVs
bCkgewogICAgICAgICAgICAgdGhpcy50aW1lb3V0X2xlbmd0aCAqPSB0ZXN0cy50aW1lb3V0X211
bHRpcGxpZXI7CkBAIC0xNTUzLDcgKzIwMDcsOCBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9u
IGZvcm1zIFszXS4KICAgICAgICAgUEFTUzowLAogICAgICAgICBGQUlMOjEsCiAgICAgICAgIFRJ
TUVPVVQ6MiwKLSAgICAgICAgTk9UUlVOOjMKKyAgICAgICAgTk9UUlVOOjMsCisgICAgICAgIFBS
RUNPTkRJVElPTl9GQUlMRUQ6NAogICAgIH07CiAKICAgICBUZXN0LnByb3RvdHlwZSA9IG1lcmdl
KHt9LCBUZXN0LnN0YXR1c2VzKTsKQEAgLTE1NjYsNiArMjAyMSwxOCBAQCBwb2xpY2llcyBhbmQg
Y29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgQ09NUExFVEU6NAogICAgIH07CiAKKyAg
ICBUZXN0LnByb3RvdHlwZS5zdGF0dXNfZm9ybWF0cyA9IHsKKyAgICAgICAgMDogIlBhc3MiLAor
ICAgICAgICAxOiAiRmFpbCIsCisgICAgICAgIDI6ICJUaW1lb3V0IiwKKyAgICAgICAgMzogIk5v
dCBSdW4iLAorICAgICAgICA0OiAiT3B0aW9uYWwgRmVhdHVyZSBVbnN1cHBvcnRlZCIsCisgICAg
fQorCisgICAgVGVzdC5wcm90b3R5cGUuZm9ybWF0X3N0YXR1cyA9IGZ1bmN0aW9uKCkgeworICAg
ICAgICByZXR1cm4gdGhpcy5zdGF0dXNfZm9ybWF0c1t0aGlzLnN0YXR1c107CisgICAgfQorCiAg
ICAgVGVzdC5wcm90b3R5cGUuc3RydWN0dXJlZF9jbG9uZSA9IGZ1bmN0aW9uKCkKICAgICB7CiAg
ICAgICAgIGlmICghdGhpcy5fc3RydWN0dXJlZF9jbG9uZSkgewpAQCAtMTU5MCwxMSArMjA1Nywx
NiBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgaWYgKHRo
aXMucGhhc2UgPiB0aGlzLnBoYXNlcy5TVEFSVEVEKSB7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KKworICAgICAgICBpZiAoc2V0dGluZ3MuZGVidWcgJiYgdGhpcy5waGFzZSAhPT0g
dGhpcy5waGFzZXMuU1RBUlRFRCkgeworICAgICAgICAgICAgY29uc29sZS5sb2coIlRFU1QgU1RB
UlQiLCB0aGlzLm5hbWUpOworICAgICAgICB9CiAgICAgICAgIHRoaXMucGhhc2UgPSB0aGlzLnBo
YXNlcy5TVEFSVEVEOwogICAgICAgICAvL0lmIHdlIGRvbid0IGdldCBhIHJlc3VsdCBiZWZvcmUg
dGhlIGhhcm5lc3MgdGltZXMgb3V0IHRoYXQgd2lsbCBiZSBhIHRlc3QgdGltZW91dAogICAgICAg
ICB0aGlzLnNldF9zdGF0dXModGhpcy5USU1FT1VULCAiVGVzdCB0aW1lZCBvdXQiKTsKIAogICAg
ICAgICB0ZXN0cy5zdGFydGVkID0gdHJ1ZTsKKyAgICAgICAgdGVzdHMuY3VycmVudF90ZXN0ID0g
dGhpczsKICAgICAgICAgdGVzdHMubm90aWZ5X3Rlc3Rfc3RhdGUodGhpcyk7CiAKICAgICAgICAg
aWYgKHRoaXMudGltZW91dF9pZCA9PT0gbnVsbCkgewpAQCAtMTYwNywxOCArMjA3OSwyNSBAQCBw
b2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgICAgIHRoaXNfb2Jq
ID0gdGhpczsKICAgICAgICAgfQogCisgICAgICAgIGlmIChzZXR0aW5ncy5kZWJ1ZykgeworICAg
ICAgICAgICAgY29uc29sZS5kZWJ1ZygiVEVTVCBTVEVQIiwgdGhpcy5uYW1lKTsKKyAgICAgICAg
fQorCiAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzX29i
aiwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAyKSk7CiAgICAgICAgIH0g
Y2F0Y2ggKGUpIHsKICAgICAgICAgICAgIGlmICh0aGlzLnBoYXNlID49IHRoaXMucGhhc2VzLkhB
U19SRVNVTFQpIHsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB2YXIgc3RhdHVzID0gZSBpbnN0YW5jZW9mIE9wdGlvbmFsRmVhdHVyZVVuc3VwcG9y
dGVkRXJyb3IgPyB0aGlzLlBSRUNPTkRJVElPTl9GQUlMRUQgOiB0aGlzLkZBSUw7CiAgICAgICAg
ICAgICB2YXIgbWVzc2FnZSA9IFN0cmluZygodHlwZW9mIGUgPT09ICJvYmplY3QiICYmIGUgIT09
IG51bGwpID8gZS5tZXNzYWdlIDogZSk7CiAgICAgICAgICAgICB2YXIgc3RhY2sgPSBlLnN0YWNr
ID8gZS5zdGFjayA6IG51bGw7CiAKLSAgICAgICAgICAgIHRoaXMuc2V0X3N0YXR1cyh0aGlzLkZB
SUwsIG1lc3NhZ2UsIHN0YWNrKTsKKyAgICAgICAgICAgIHRoaXMuc2V0X3N0YXR1cyhzdGF0dXMs
IG1lc3NhZ2UsIHN0YWNrKTsKICAgICAgICAgICAgIHRoaXMucGhhc2UgPSB0aGlzLnBoYXNlcy5I
QVNfUkVTVUxUOwogICAgICAgICAgICAgdGhpcy5kb25lKCk7CisgICAgICAgIH0gZmluYWxseSB7
CisgICAgICAgICAgICB0aGlzLmN1cnJlbnRfdGVzdCA9IG51bGw7CiAgICAgICAgIH0KICAgICB9
OwogCkBAIC0xNjY4LDYgKzIxNDcsMTA1IEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9y
bXMgWzNdLgogICAgICAgICByZXR1cm4gc2V0VGltZW91dCh0aGlzLnN0ZXBfZnVuYyhmdW5jdGlv
bigpIHsKICAgICAgICAgICAgIHJldHVybiBmLmFwcGx5KHRlc3RfdGhpcywgYXJncyk7CiAgICAg
ICAgIH0pLCB0aW1lb3V0ICogdGVzdHMudGltZW91dF9tdWx0aXBsaWVyKTsKKyAgICB9OworCisg
ICAgVGVzdC5wcm90b3R5cGUuc3RlcF93YWl0X2Z1bmMgPSBmdW5jdGlvbihjb25kLCBmdW5jLCBk
ZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRpbWVvdXQ9MzAwMCwgaW50ZXJ2YWw9MTAwKSB7CisgICAgICAgIC8qKgorICAgICAgICAgKiBQ
b2xsIGZvciBhIGZ1bmN0aW9uIHRvIHJldHVybiB0cnVlLCBhbmQgY2FsbCBhIGNhbGxiYWNrCisg
ICAgICAgICAqIGZ1bmN0aW9uIG9uY2UgaXQgZG9lcywgb3IgYXNzZXJ0IGlmIGEgdGltZW91dCBp
cworICAgICAgICAgKiByZWFjaGVkLiBUaGlzIGlzIHByZWZlcnJlZCBvdmVyIGEgc2ltcGxlIHN0
ZXBfdGltZW91dAorICAgICAgICAgKiB3aGVuZXZlciBwb3NzaWJsZSBzaW5jZSBpdCBhbGxvd3Mg
dGhlIHRpbWVvdXQgdG8gYmUgbG9uZ2VyCisgICAgICAgICAqIHRvIHJlZHVjZSBpbnRlcm1pdHRl
bnRzIHdpdGhvdXQgY29tcHJvbWlzaW5nIHRlc3QgZXhlY3V0aW9uCisgICAgICAgICAqIHNwZWVk
IHdoZW4gdGhlIGNvbmRpdGlvbiBpcyBxdWlja2x5IG1ldC4KKyAgICAgICAgICoKKyAgICAgICAg
ICogQHBhcmFtIHtGdW5jdGlvbn0gY29uZCBBIGZ1bmN0aW9uIHRha2luZyBubyBhcmd1bWVudHMg
YW5kCisgICAgICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuaW5nIGEgYm9vbGVh
bi4gVGhlIGNhbGxiYWNrIGlzIGNhbGxlZAorICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAg
ICAgIHdoZW4gdGhpcyBmdW5jdGlvbiByZXR1cm5zIHRydWUuCisgICAgICAgICAqIEBwYXJhbSB7
RnVuY3Rpb259IGZ1bmMgQSBmdW5jdGlvbiB0YWtpbmcgbm8gYXJndW1lbnRzIHRvIGNhbGwgb25j
ZQorICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBjb25kaXRpb24gaXMgbWV0
LgorICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzY3JpcHRpb24gRXJyb3IgbWVzc2FnZSB0
byBhZGQgdG8gYXNzZXJ0IGluIGNhc2Ugb2YKKyAgICAgICAgICogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZhaWx1cmUuCisgICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0aW1lb3V0IFRp
bWVvdXQgaW4gbXMuIFRoaXMgaXMgbXVsdGlwbGllZCBieSB0aGUgZ2xvYmFsCisgICAgICAgICAq
ICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXRfbXVsdGlwbGllcgorICAgICAgICAgKiBA
cGFyYW0ge251bWJlcn0gaW50ZXJ2YWwgUG9sbGluZyBpbnRlcnZhbCBpbiBtcworICAgICAgICAg
KgorICAgICAgICAgKiovCisKKyAgICAgICAgdmFyIHRpbWVvdXRfZnVsbCA9IHRpbWVvdXQgKiB0
ZXN0cy50aW1lb3V0X211bHRpcGxpZXI7CisgICAgICAgIHZhciByZW1haW5pbmcgPSBNYXRoLmNl
aWwodGltZW91dF9mdWxsIC8gaW50ZXJ2YWwpOworICAgICAgICB2YXIgdGVzdF90aGlzID0gdGhp
czsKKworICAgICAgICB2YXIgd2FpdF9mb3JfaW5uZXIgPSB0ZXN0X3RoaXMuc3RlcF9mdW5jKCgp
ID0+IHsKKyAgICAgICAgICAgIGlmIChjb25kKCkpIHsKKyAgICAgICAgICAgICAgICBmdW5jKCk7
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmKHJlbWFpbmluZyA9PT0g
MCkgeworICAgICAgICAgICAgICAgICAgICBhc3NlcnQoZmFsc2UsICJzdGVwX3dhaXRfZnVuYyIs
IGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRpbWVkIG91dCB3YWl0
aW5nIG9uIGNvbmRpdGlvbiIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBy
ZW1haW5pbmctLTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KHdhaXRfZm9yX2lubmVyLCBp
bnRlcnZhbCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworCisgICAgICAgIHdhaXRfZm9y
X2lubmVyKCk7CisgICAgfTsKKworICAgIFRlc3QucHJvdG90eXBlLnN0ZXBfd2FpdF9mdW5jX2Rv
bmUgPSBmdW5jdGlvbihjb25kLCBmdW5jLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dD0zMDAwLCBpbnRlcnZhbD0x
MDApIHsKKyAgICAgICAgLyoqCisgICAgICAgICAqIFBvbGwgZm9yIGEgZnVuY3Rpb24gdG8gcmV0
dXJuIHRydWUsIGFuZCBpbnZva2UgYSBjYWxsYmFjaworICAgICAgICAgKiBmb2xsb3dlZCBieSB0
aGlzLmRvbmUoKSBvbmNlIGl0IGRvZXMsIG9yIGFzc2VydCBpZiBhIHRpbWVvdXQKKyAgICAgICAg
ICogaXMgcmVhY2hlZC4gVGhpcyBpcyBwcmVmZXJyZWQgb3ZlciBhIHNpbXBsZSBzdGVwX3RpbWVv
dXQKKyAgICAgICAgICogd2hlbmV2ZXIgcG9zc2libGUgc2luY2UgaXQgYWxsb3dzIHRoZSB0aW1l
b3V0IHRvIGJlIGxvbmdlcgorICAgICAgICAgKiB0byByZWR1Y2UgaW50ZXJtaXR0ZW50cyB3aXRo
b3V0IGNvbXByb21pc2luZyB0ZXN0IGV4ZWN1dGlvbiBzcGVlZAorICAgICAgICAgKiB3aGVuIHRo
ZSBjb25kaXRpb24gaXMgcXVpY2tseSBtZXQuCisgICAgICAgICAqCisgICAgICAgICAqIEBwYXJh
bSB7RnVuY3Rpb259IGNvbmQgQSBmdW5jdGlvbiB0YWtpbmcgbm8gYXJndW1lbnRzIGFuZAorICAg
ICAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybmluZyBhIGJvb2xlYW4uIFRoZSBj
YWxsYmFjayBpcyBjYWxsZWQKKyAgICAgICAgICogICAgICAgICAgICAgICAgICAgICAgICB3aGVu
IHRoaXMgZnVuY3Rpb24gcmV0dXJucyB0cnVlLgorICAgICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9u
fSBmdW5jIEEgZnVuY3Rpb24gdGFraW5nIG5vIGFyZ3VtZW50cyB0byBjYWxsIG9uY2UKKyAgICAg
ICAgICogICAgICAgICAgICAgICAgICAgICAgICB0aGUgY29uZGl0aW9uIGlzIG1ldC4KKyAgICAg
ICAgICogQHBhcmFtIHtzdHJpbmd9IGRlc2NyaXB0aW9uIEVycm9yIG1lc3NhZ2UgdG8gYWRkIHRv
IGFzc2VydCBpbiBjYXNlIG9mCisgICAgICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmYWlsdXJlLgorICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gdGltZW91dCBUaW1lb3V0IGlu
IG1zLiBUaGlzIGlzIG11bHRpcGxpZWQgYnkgdGhlIGdsb2JhbAorICAgICAgICAgKiAgICAgICAg
ICAgICAgICAgICAgICAgICB0aW1lb3V0X211bHRpcGxpZXIKKyAgICAgICAgICogQHBhcmFtIHtu
dW1iZXJ9IGludGVydmFsIFBvbGxpbmcgaW50ZXJ2YWwgaW4gbXMKKyAgICAgICAgICoKKyAgICAg
ICAgICoqLworCisgICAgICAgICB0aGlzLnN0ZXBfd2FpdF9mdW5jKGNvbmQsICgpID0+IHsKKyAg
ICAgICAgICAgIGlmIChmdW5jKSB7CisgICAgICAgICAgICAgICAgZnVuYygpOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgdGhpcy5kb25lKCk7CisgICAgICAgICB9LCBkZXNjcmlwdGlvbiwg
dGltZW91dCwgaW50ZXJ2YWwpOworICAgIH0KKworICAgIFRlc3QucHJvdG90eXBlLnN0ZXBfd2Fp
dCA9IGZ1bmN0aW9uKGNvbmQsIGRlc2NyaXB0aW9uLCB0aW1lb3V0PTMwMDAsIGludGVydmFsPTEw
MCkgeworICAgICAgICAvKioKKyAgICAgICAgICogUG9sbCBmb3IgYSBmdW5jdGlvbiB0byByZXR1
cm4gdHJ1ZSwgYW5kIHJlc29sdmUgYSBwcm9taXNlCisgICAgICAgICAqIG9uY2UgaXQgZG9lcywg
b3IgYXNzZXJ0IGlmIGEgdGltZW91dCBpcyByZWFjaGVkLiBUaGlzIGlzCisgICAgICAgICAqIHBy
ZWZlcnJlZCBvdmVyIGEgc2ltcGxlIHN0ZXBfdGltZW91dCB3aGVuZXZlciBwb3NzaWJsZQorICAg
ICAgICAgKiBzaW5jZSBpdCBhbGxvd3MgdGhlIHRpbWVvdXQgdG8gYmUgbG9uZ2VyIHRvIHJlZHVj
ZQorICAgICAgICAgKiBpbnRlcm1pdHRlbnRzIHdpdGhvdXQgY29tcHJvbWlzaW5nIHRlc3QgZXhl
Y3V0aW9uIHNwZWVkCisgICAgICAgICAqIHdoZW4gdGhlIGNvbmRpdGlvbiBpcyBxdWlja2x5IG1l
dC4KKyAgICAgICAgICoKKyAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gY29uZCBBIGZ1bmN0
aW9uIHRha2luZyBubyBhcmd1bWVudHMgYW5kCisgICAgICAgICAqICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuaW5nIGEgYm9vbGVhbi4KKyAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IGRl
c2NyaXB0aW9uIEVycm9yIG1lc3NhZ2UgdG8gYWRkIHRvIGFzc2VydCBpbiBjYXNlIG9mCisgICAg
ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWlsdXJlLgorICAgICAgICAgKiBA
cGFyYW0ge251bWJlcn0gdGltZW91dCBUaW1lb3V0IGluIG1zLiBUaGlzIGlzIG11bHRpcGxpZWQg
YnkgdGhlIGdsb2JhbAorICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0
X211bHRpcGxpZXIKKyAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IGludGVydmFsIFBvbGxpbmcg
aW50ZXJ2YWwgaW4gbXMKKyAgICAgICAgICogQHJldHVybnMge1Byb21pc2V9IFByb21pc2UgcmVz
b2x2ZWQgb25jZSBjb25kIGlzIG1ldC4KKyAgICAgICAgICoKKyAgICAgICAgICoqLworCisgICAg
ICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICAgICAgICAgIHRoaXMuc3Rl
cF93YWl0X2Z1bmMoY29uZCwgcmVzb2x2ZSwgZGVzY3JpcHRpb24sIHRpbWVvdXQsIGludGVydmFs
KTsKKyAgICAgICAgfSk7CiAgICAgfQogCiAgICAgLyoKQEAgLTE3MzcsNiArMjMxNSwxMiBAQCBw
b2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgICAgIGNsZWFyVGlt
ZW91dCh0aGlzLnRpbWVvdXRfaWQpOwogICAgICAgICB9CiAKKyAgICAgICAgaWYgKHNldHRpbmdz
LmRlYnVnKSB7CisgICAgICAgICAgICBjb25zb2xlLmxvZygiVEVTVCBET05FIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHRoaXMuc3RhdHVzLAorICAgICAgICAgICAgICAgICAgICAgICAgdGhp
cy5uYW1lLCkKKyAgICAgICAgfQorCiAgICAgICAgIHRoaXMuY2xlYW51cCgpOwogICAgIH07CiAK
QEAgLTE5MzYsNiArMjUyMCwxMCBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFsz
XS4KICAgICAgICAgICAgICAgICB9KTsKICAgICB9CiAKKyAgICBSZW1vdGVUZXN0LnByb3RvdHlw
ZS5mb3JtYXRfc3RhdHVzID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiBUZXN0LnByb3Rv
dHlwZS5zdGF0dXNfZm9ybWF0c1t0aGlzLnN0YXR1c107CisgICAgfQorCiAgICAgLyoKICAgICAg
KiBBIFJlbW90ZUNvbnRleHQgbGlzdGVucyBmb3IgdGVzdCBldmVudHMgZnJvbSBhIHJlbW90ZSB0
ZXN0IGNvbnRleHQsIHN1Y2gKICAgICAgKiBhcyBhbm90aGVyIHdpbmRvdyBvciBhIHdvcmtlci4g
VGhlc2UgZXZlbnRzIGFyZSB0aGVuIHVzZWQgdG8gY29uc3RydWN0CkBAIC0yMDQ0LDYgKzI2MzIs
MTYgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAgICAgICB0
ZXN0cy5zZXRfc3RhdHVzKGRhdGEuc3RhdHVzLnN0YXR1cywgZGF0YS5zdGF0dXMubWVzc2FnZSwg
ZGF0YS5zdGF0dXMuc2Fjayk7CiAgICAgICAgIH0KIAorICAgICAgICBmb3IgKGxldCBhc3NlcnQg
b2YgZGF0YS5hc3NlcnRzKSB7CisgICAgICAgICAgICB2YXIgcmVjb3JkID0gbmV3IEFzc2VydFJl
Y29yZCgpOworICAgICAgICAgICAgcmVjb3JkLmFzc2VydF9uYW1lID0gYXNzZXJ0LmFzc2VydF9u
YW1lOworICAgICAgICAgICAgcmVjb3JkLmFyZ3MgPSBhc3NlcnQuYXJnczsKKyAgICAgICAgICAg
IHJlY29yZC50ZXN0ID0gYXNzZXJ0LnRlc3QgIT0gbnVsbCA/IHRoaXMudGVzdHNbYXNzZXJ0LnRl
c3QuaW5kZXhdIDogbnVsbDsKKyAgICAgICAgICAgIHJlY29yZC5zdGF0dXMgPSBhc3NlcnQuc3Rh
dHVzOworICAgICAgICAgICAgcmVjb3JkLnN0YWNrID0gYXNzZXJ0LnN0YWNrOworICAgICAgICAg
ICAgdGVzdHMuYXNzZXJ0c19ydW4ucHVzaChyZWNvcmQpOworICAgICAgICB9CisKICAgICAgICAg
dGhpcy5tZXNzYWdlX3RhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgdGhpcy5t
ZXNzYWdlX2hhbmRsZXIpOwogICAgICAgICB0aGlzLnJ1bm5pbmcgPSBmYWxzZTsKIApAQCAtMjA4
NywxMSArMjY4NSwyMCBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAg
ICBUZXN0c1N0YXR1cy5zdGF0dXNlcyA9IHsKICAgICAgICAgT0s6MCwKICAgICAgICAgRVJST1I6
MSwKLSAgICAgICAgVElNRU9VVDoyCisgICAgICAgIFRJTUVPVVQ6MiwKKyAgICAgICAgUFJFQ09O
RElUSU9OX0ZBSUxFRDozCiAgICAgfTsKIAogICAgIFRlc3RzU3RhdHVzLnByb3RvdHlwZSA9IG1l
cmdlKHt9LCBUZXN0c1N0YXR1cy5zdGF0dXNlcyk7CiAKKyAgICBUZXN0c1N0YXR1cy5wcm90b3R5
cGUuZm9ybWF0cyA9IHsKKyAgICAgICAgMDogIk9LIiwKKyAgICAgICAgMTogIkVycm9yIiwKKyAg
ICAgICAgMjogIlRpbWVvdXQiLAorICAgICAgICAzOiAiT3B0aW9uYWwgRmVhdHVyZSBVbnN1cHBv
cnRlZCIKKyAgICB9CisKKwogICAgIFRlc3RzU3RhdHVzLnByb3RvdHlwZS5zdHJ1Y3R1cmVkX2Ns
b25lID0gZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9zdHJ1Y3R1cmVkX2Ns
b25lKSB7CkBAIC0yMTA2LDYgKzI3MTMsMjcgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBm
b3JtcyBbM10uCiAgICAgICAgIHJldHVybiB0aGlzLl9zdHJ1Y3R1cmVkX2Nsb25lOwogICAgIH07
CiAKKyAgICBUZXN0c1N0YXR1cy5wcm90b3R5cGUuZm9ybWF0X3N0YXR1cyA9IGZ1bmN0aW9uKCkg
eworICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXRzW3RoaXMuc3RhdHVzXTsKKyAgICB9CisKKyAg
ICBmdW5jdGlvbiBBc3NlcnRSZWNvcmQodGVzdCwgYXNzZXJ0X25hbWUsIGFyZ3MgPSBbXSkgewor
ICAgICAgICB0aGlzLmFzc2VydF9uYW1lID0gYXNzZXJ0X25hbWU7CisgICAgICAgIHRoaXMudGVz
dCA9IHRlc3Q7CisgICAgICAgIC8vIEF2b2lkIGtlZXBpbmcgY29tcGxleCBvYmplY3RzIGFsaXZl
CisgICAgICAgIHRoaXMuYXJncyA9IGFyZ3MubWFwKHggPT4gZm9ybWF0X3ZhbHVlKHgpLnJlcGxh
Y2UoL1xuL2csICIgIikpOworICAgICAgICB0aGlzLnN0YXR1cyA9IG51bGw7CisgICAgfQorCisg
ICAgQXNzZXJ0UmVjb3JkLnByb3RvdHlwZS5zdHJ1Y3R1cmVkX2Nsb25lID0gZnVuY3Rpb24oKSB7
CisgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICBhc3NlcnRfbmFtZTogdGhpcy5hc3NlcnRf
bmFtZSwKKyAgICAgICAgICAgIHRlc3Q6IHRoaXMudGVzdCA/IHRoaXMudGVzdC5zdHJ1Y3R1cmVk
X2Nsb25lKCkgOiBudWxsLAorICAgICAgICAgICAgYXJnczogdGhpcy5hcmdzLAorICAgICAgICAg
ICAgc3RhdHVzOiB0aGlzLnN0YXR1cywKKyAgICAgICAgfQorICAgIH0KKwogICAgIGZ1bmN0aW9u
IFRlc3RzKCkKICAgICB7CiAgICAgICAgIHRoaXMudGVzdHMgPSBbXTsKQEAgLTIxMjgsNiArMjc1
NiwxMCBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgdGhp
cy5hbGxvd191bmNhdWdodF9leGNlcHRpb24gPSBmYWxzZTsKIAogICAgICAgICB0aGlzLmZpbGVf
aXNfdGVzdCA9IGZhbHNlOworICAgICAgICAvLyBUaGlzIHZhbHVlIGlzIGxhemlseSBpbml0aWFs
aXplZCBpbiBvcmRlciB0byBhdm9pZCBpbnRyb2R1Y2luZyBhCisgICAgICAgIC8vIGRlcGVuZGVu
Y3kgb24gRUNNQVNjcmlwdCAyMDE1IFByb21pc2VzIHRvIGFsbCB0ZXN0cy4KKyAgICAgICAgdGhp
cy5wcm9taXNlX3Rlc3RzID0gbnVsbDsKKyAgICAgICAgdGhpcy5wcm9taXNlX3NldHVwX2NhbGxl
ZCA9IGZhbHNlOwogCiAgICAgICAgIHRoaXMudGltZW91dF9tdWx0aXBsaWVyID0gMTsKICAgICAg
ICAgdGhpcy50aW1lb3V0X2xlbmd0aCA9IHRlc3RfZW52aXJvbm1lbnQudGVzdF90aW1lb3V0KCk7
CkBAIC0yMTM4LDggKzI3NzAsMjEgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBb
M10uCiAgICAgICAgIHRoaXMudGVzdF9kb25lX2NhbGxiYWNrcyA9IFtdOwogICAgICAgICB0aGlz
LmFsbF9kb25lX2NhbGxiYWNrcyA9IFtdOwogCisgICAgICAgIHRoaXMuaGlkZV90ZXN0X3N0YXRl
ID0gZmFsc2U7CiAgICAgICAgIHRoaXMucGVuZGluZ19yZW1vdGVzID0gW107CiAKKyAgICAgICAg
dGhpcy5jdXJyZW50X3Rlc3QgPSBudWxsOworICAgICAgICB0aGlzLmFzc2VydHNfcnVuID0gW107
CisKKyAgICAgICAgLy8gVHJhY2sgd2hldGhlciBvdXRwdXQgaXMgZW5hYmxlZCwgYW5kIHRodXMg
d2hldGhlciBvciBub3Qgd2Ugc2hvdWxkCisgICAgICAgIC8vIHRyYWNrIGFzc2VydHMuCisgICAg
ICAgIC8vCisgICAgICAgIC8vIE9uIHdvcmtlcnMgd2UgZG9uJ3QgZ2V0IHByb3BlcnRpZXMgc2V0
IGZyb20gdGVzdGhhcm5lc3NyZXBvcnQuanMsIHNvCisgICAgICAgIC8vIHdlIGRvbid0IGtub3cg
d2hldGhlciBvciBub3QgdG8gdHJhY2sgYXNzZXJ0cy4gVG8gYXZvaWQgdGhlCisgICAgICAgIC8v
IHJlc3VsdGluZyBwZXJmb3JtYW5jZSBoaXQsIHdlIGFzc3VtZSB3ZSBhcmUgbm90IG1lYW50IHRv
LiBUaGlzIG1lYW5zCisgICAgICAgIC8vIHRoYXQgYXNzZXJ0IHRyYWNraW5nIGRvZXMgbm90IGZ1
bmN0aW9uIG9uIHdvcmtlcnMuCisgICAgICAgIHRoaXMub3V0cHV0ID0gc2V0dGluZ3Mub3V0cHV0
ICYmICdkb2N1bWVudCcgaW4gZ2xvYmFsX3Njb3BlOworCiAgICAgICAgIHRoaXMuc3RhdHVzID0g
bmV3IFRlc3RzU3RhdHVzKCk7CiAKICAgICAgICAgdmFyIHRoaXNfb2JqID0gdGhpczsKQEAgLTIx
NzgsMTEgKzI4MjMsMTkgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAg
ICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyVGltZW91
dCh0aGlzLnRpbWVvdXRfaWQpOwogICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgfSBlbHNlIGlmIChwID09ICJzaW5nbGVfdGVzdCIgJiYgdmFsdWUpIHsKKyAgICAgICAgICAg
ICAgICAgICAgdGhpcy5zZXRfZmlsZV9pc190ZXN0KCk7CiAgICAgICAgICAgICAgICAgfSBlbHNl
IGlmIChwID09ICJ0aW1lb3V0X211bHRpcGxpZXIiKSB7CiAgICAgICAgICAgICAgICAgICAgIHRo
aXMudGltZW91dF9tdWx0aXBsaWVyID0gdmFsdWU7CiAgICAgICAgICAgICAgICAgICAgIGlmICh0
aGlzLnRpbWVvdXRfbGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50aW1l
b3V0X2xlbmd0aCAqPSB0aGlzLnRpbWVvdXRfbXVsdGlwbGllcjsKICAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocCA9PSAiaGlkZV90ZXN0X3N0YXRlIikg
eworICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGVfdGVzdF9zdGF0ZSA9IHZhbHVlOworICAg
ICAgICAgICAgICAgIH0gZWxzZSBpZiAocCA9PSAib3V0cHV0IikgeworICAgICAgICAgICAgICAg
ICAgICB0aGlzLm91dHB1dCA9IHZhbHVlOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocCA9
PT0gImRlYnVnIikgeworICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncy5kZWJ1ZyA9IHZhbHVl
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMjE5MSw5
ICsyODQ0LDEwIEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAg
ICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICBmdW5jKCk7CiAgICAgICAgICAgICB9IGNhdGNo
IChlKSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5zdGF0dXMuc3RhdHVzID0gdGhpcy5zdGF0dXMu
RVJST1I7CisgICAgICAgICAgICAgICAgdGhpcy5zdGF0dXMuc3RhdHVzID0gZSBpbnN0YW5jZW9m
IE9wdGlvbmFsRmVhdHVyZVVuc3VwcG9ydGVkRXJyb3IgPyB0aGlzLnN0YXR1cy5QUkVDT05ESVRJ
T05fRkFJTEVEIDogdGhpcy5zdGF0dXMuRVJST1I7CiAgICAgICAgICAgICAgICAgdGhpcy5zdGF0
dXMubWVzc2FnZSA9IFN0cmluZyhlKTsKICAgICAgICAgICAgICAgICB0aGlzLnN0YXR1cy5zdGFj
ayA9IGUuc3RhY2sgPyBlLnN0YWNrIDogbnVsbDsKKyAgICAgICAgICAgICAgICB0aGlzLmNvbXBs
ZXRlKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgdGhpcy5zZXRfdGltZW91
dCgpOwpAQCAtMjIwNiw3ICsyODYwLDcgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3Jt
cyBbM10uCiAgICAgICAgIHRoaXMud2FpdF9mb3JfZmluaXNoID0gdHJ1ZTsKICAgICAgICAgdGhp
cy5maWxlX2lzX3Rlc3QgPSB0cnVlOwogICAgICAgICAvLyBDcmVhdGUgdGhlIHRlc3QsIHdoaWNo
IHdpbGwgYWRkIGl0IHRvIHRoZSBsaXN0IG9mIHRlc3RzCi0gICAgICAgIGFzeW5jX3Rlc3QoKTsK
KyAgICAgICAgdGVzdHMuY3VycmVudF90ZXN0ID0gYXN5bmNfdGVzdCgpOwogICAgIH07CiAKICAg
ICBUZXN0cy5wcm90b3R5cGUuc2V0X3N0YXR1cyA9IGZ1bmN0aW9uKHN0YXR1cywgbWVzc2FnZSwg
c3RhY2spCkBAIC0yMzcwLDYgKzMwMjQsMTYgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBm
b3JtcyBbM10uCiAgICAgICAgICAgICAgICAgICBhbGxfY29tcGxldGUpOwogICAgIH07CiAKKyAg
ICBUZXN0cy5wcm90b3R5cGUuc2V0X2Fzc2VydCA9IGZ1bmN0aW9uKGFzc2VydF9uYW1lLCBhcmdz
KSB7CisgICAgICAgIHRoaXMuYXNzZXJ0c19ydW4ucHVzaChuZXcgQXNzZXJ0UmVjb3JkKHRoaXMu
Y3VycmVudF90ZXN0LCBhc3NlcnRfbmFtZSwgYXJncykpCisgICAgfQorCisgICAgVGVzdHMucHJv
dG90eXBlLnNldF9hc3NlcnRfc3RhdHVzID0gZnVuY3Rpb24oc3RhdHVzLCBzdGFjaykgeworICAg
ICAgICBsZXQgYXNzZXJ0X3JlY29yZCA9IHRoaXMuYXNzZXJ0c19ydW5bdGhpcy5hc3NlcnRzX3J1
bi5sZW5ndGggLSAxXTsKKyAgICAgICAgYXNzZXJ0X3JlY29yZC5zdGF0dXMgPSBzdGF0dXM7Cisg
ICAgICAgIGFzc2VydF9yZWNvcmQuc3RhY2sgPSBzdGFjazsKKyAgICB9CisKICAgICAvKioKICAg
ICAgKiBVcGRhdGUgdGhlIGhhcm5lc3Mgc3RhdHVzIHRvIHJlZmxlY3QgYW4gdW5yZWNvdmVyYWJs
ZSBoYXJuZXNzIGVycm9yIHRoYXQKICAgICAgKiBzaG91bGQgY2FuY2VsIGFsbCBmdXJ0aGVyIHRl
c3RpbmcuIFVwZGF0ZSBhbGwgcHJldmlvdXNseS1kZWZpbmVkIHRlc3RzCkBAIC0yNDEyLDIyICsz
MDc2LDE2IEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAgIH0KIAog
ICAgIGZ1bmN0aW9uIHNhbml0aXplX3VucGFpcmVkX3N1cnJvZ2F0ZXMoc3RyKSB7Ci0gICAgICAg
IHJldHVybiBzdHIucmVwbGFjZSgvKFtcdWQ4MDAtXHVkYmZmXSkoPyFbXHVkYzAwLVx1ZGZmZl0p
L2csCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbihfLCB1bnBhaXJlZCkKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gY29kZV91bml0X3N0cih1bnBhaXJlZCk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICB9KQotICAgICAgICAgICAgICAgICAgLy8gVGhpcyByZXBsYWNlbWVudCBpcyBpbnRlbnRp
b25hbGx5IGltcGxlbWVudGVkIHdpdGhvdXQgYW4KLSAgICAgICAgICAgICAgICAgIC8vIEVTMjAx
OCBuZWdhdGl2ZSBsb29rYmVoaW5kIGFzc2VydGlvbiB0byBzdXBwb3J0IHJ1bnRpbWVzCi0gICAg
ICAgICAgICAgICAgICAvLyB3aGljaCBkbyBub3QgeWV0IGltcGxlbWVudCB0aGF0IGxhbmd1YWdl
IGZlYXR1cmUuCi0gICAgICAgICAgICAgICAgICAucmVwbGFjZSgvKF58W15cdWQ4MDAtXHVkYmZm
XSkoW1x1ZGMwMC1cdWRmZmZdKS9nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rp
b24oXywgcHJldmlvdXMsIHVucGFpcmVkKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoL1tcdWRjMDAtXHVkZmZmXS8udGVzdChwcmV2aW91cykpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwcmV2aW91cyA9IGNvZGVfdW5pdF9zdHIocHJldmlvdXMpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gcHJldmlvdXMgKyBjb2RlX3VuaXRfc3RyKHVucGFpcmVkKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICByZXR1cm4gc3RyLnJlcGxhY2UoCisg
ICAgICAgICAgICAvKFtcdWQ4MDAtXHVkYmZmXSspKD8hW1x1ZGMwMC1cdWRmZmZdKXwoXnxbXlx1
ZDgwMC1cdWRiZmZdKShbXHVkYzAwLVx1ZGZmZl0rKS9nLAorICAgICAgICAgICAgZnVuY3Rpb24o
XywgbG93LCBwcmVmaXgsIGhpZ2gpIHsKKyAgICAgICAgICAgICAgICB2YXIgb3V0cHV0ID0gcHJl
Zml4IHx8ICIiOyAgLy8gcHJlZml4IG1heSBiZSB1bmRlZmluZWQKKyAgICAgICAgICAgICAgICB2
YXIgc3RyaW5nID0gbG93IHx8IGhpZ2g7ICAvLyBvbmx5IG9uZSBvZiB0aGVzZSBhbHRlcm5hdGVz
IGNhbiBtYXRjaAorICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyaW5nLmxl
bmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIG91dHB1dCArPSBjb2RlX3VuaXRfc3Ry
KHN0cmluZ1tpXSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBv
dXRwdXQ7CisgICAgICAgICAgICB9KTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBzYW5pdGl6ZV9h
bGxfdW5wYWlyZWRfc3Vycm9nYXRlcyh0ZXN0cykgewpAQCAtMjQ3Myw3ICszMTMxLDcgQEAgcG9s
aWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAgIGZvckVhY2ggKHRoaXMu
YWxsX2RvbmVfY2FsbGJhY2tzLAogICAgICAgICAgICAgICAgICBmdW5jdGlvbihjYWxsYmFjaykK
ICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sodGhpc19v
YmoudGVzdHMsIHRoaXNfb2JqLnN0YXR1cyk7CisgICAgICAgICAgICAgICAgICAgICBjYWxsYmFj
ayh0aGlzX29iai50ZXN0cywgdGhpc19vYmouc3RhdHVzLCB0aGlzX29iai5hc3NlcnRzX3J1bik7
CiAgICAgICAgICAgICAgICAgIH0pOwogICAgIH07CiAKQEAgLTI0ODQsMjQgKzMxNDIsOCBAQCBw
b2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgdmFyIG1lc3NhZ2Vf
cG9ydDsKIAogICAgICAgICBpZiAoaXNfc2VydmljZV93b3JrZXIod29ya2VyKSkgewotICAgICAg
ICAgICAgaWYgKHdpbmRvdy5NZXNzYWdlQ2hhbm5lbCkgewotICAgICAgICAgICAgICAgIC8vIFRo
ZSBTZXJ2aWNlV29ya2VyJ3MgaW1wbGljaXQgTWVzc2FnZVBvcnQgaXMgY3VycmVudGx5IG5vdAot
ICAgICAgICAgICAgICAgIC8vIHJlbGlhYmx5IGFjY2Vzc2libGUgZnJvbSB0aGUgU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlIGR1ZSB0bwotICAgICAgICAgICAgICAgIC8vIEJsaW5rIHNldHRpbmcg
TWVzc2FnZUV2ZW50LnNvdXJjZSB0byBudWxsIGZvciBtZXNzYWdlcyBzZW50Ci0gICAgICAgICAg
ICAgICAgLy8gdmlhIFNlcnZpY2VXb3JrZXIucG9zdE1lc3NhZ2UoKS4gVW50aWwgdGhhdCdzIHJl
c29sdmVkLAotICAgICAgICAgICAgICAgIC8vIGNyZWF0ZSBhbiBleHBsaWNpdCBNZXNzYWdlQ2hh
bm5lbCBhbmQgcGFzcyBvbmUgZW5kIHRvIHRoZQotICAgICAgICAgICAgICAgIC8vIHdvcmtlci4K
LSAgICAgICAgICAgICAgICB2YXIgbWVzc2FnZV9jaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVs
KCk7Ci0gICAgICAgICAgICAgICAgbWVzc2FnZV9wb3J0ID0gbWVzc2FnZV9jaGFubmVsLnBvcnQx
OwotICAgICAgICAgICAgICAgIG1lc3NhZ2VfcG9ydC5zdGFydCgpOwotICAgICAgICAgICAgICAg
IHdvcmtlci5wb3N0TWVzc2FnZSh7dHlwZTogImNvbm5lY3QifSwgW21lc3NhZ2VfY2hhbm5lbC5w
b3J0Ml0pOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAvLyBJZiBNZXNz
YWdlQ2hhbm5lbCBpcyBub3QgYXZhaWxhYmxlLCB0aGVuIHRyeSB0aGUKLSAgICAgICAgICAgICAg
ICAvLyBTZXJ2aWNlV29ya2VyLnBvc3RNZXNzYWdlKCkgYXBwcm9hY2ggdXNpbmcgTWVzc2FnZUV2
ZW50LnNvdXJjZQotICAgICAgICAgICAgICAgIC8vIG9uIHRoZSBvdGhlciBlbmQuCi0gICAgICAg
ICAgICAgICAgbWVzc2FnZV9wb3J0ID0gbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXI7Ci0gICAgICAg
ICAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKHt0eXBlOiAiY29ubmVjdCJ9KTsKLSAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIG1lc3NhZ2VfcG9ydCA9IG5hdmlnYXRvci5zZXJ2aWNlV29ya2Vy
OworICAgICAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKHt0eXBlOiAiY29ubmVjdCJ9KTsKICAg
ICAgICAgfSBlbHNlIGlmIChpc19zaGFyZWRfd29ya2VyKHdvcmtlcikpIHsKICAgICAgICAgICAg
IG1lc3NhZ2VfcG9ydCA9IHdvcmtlci5wb3J0OwogICAgICAgICAgICAgbWVzc2FnZV9wb3J0LnN0
YXJ0KCk7CkBAIC0yNzA0LDcgKzMzNDYsNyBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZv
cm1zIFszXS4KICAgICAgICAgICAgIHRoaXMucGhhc2UgPSB0aGlzLkhBVkVfUkVTVUxUUzsKICAg
ICAgICAgfQogICAgICAgICB2YXIgZG9uZV9jb3VudCA9IHRlc3RzLnRlc3RzLmxlbmd0aCAtIHRl
c3RzLm51bV9wZW5kaW5nOwotICAgICAgICBpZiAodGhpcy5vdXRwdXRfbm9kZSkgeworICAgICAg
ICBpZiAodGhpcy5vdXRwdXRfbm9kZSAmJiAhdGVzdHMuaGlkZV90ZXN0X3N0YXRlKSB7CiAgICAg
ICAgICAgICBpZiAoZG9uZV9jb3VudCA8IDEwMCB8fAogICAgICAgICAgICAgICAgIChkb25lX2Nv
dW50IDwgMTAwMCAmJiBkb25lX2NvdW50ICUgMTAwID09PSAwKSB8fAogICAgICAgICAgICAgICAg
IGRvbmVfY291bnQgJSAxMDAwID09PSAwKSB7CkBAIC0yNzE1LDcgKzMzNTcsNyBAQCBwb2xpY2ll
cyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgfQogICAgIH07CiAKLSAgICBP
dXRwdXQucHJvdG90eXBlLnNob3dfcmVzdWx0cyA9IGZ1bmN0aW9uICh0ZXN0cywgaGFybmVzc19z
dGF0dXMpIHsKKyAgICBPdXRwdXQucHJvdG90eXBlLnNob3dfcmVzdWx0cyA9IGZ1bmN0aW9uICh0
ZXN0cywgaGFybmVzc19zdGF0dXMsIGFzc2VydHNfcnVuKSB7CiAgICAgICAgIGlmICh0aGlzLnBo
YXNlID49IHRoaXMuQ09NUExFVEUpIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpA
QCAtMjc0NCwyMSArMzM4NiwxMCBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFsz
XS4KICAgICAgICAgICAgIGhlYWRzWzBdLmFwcGVuZENoaWxkKHN0eWxlc2hlZXQpOwogICAgICAg
ICB9CiAKLSAgICAgICAgdmFyIHN0YXR1c190ZXh0X2hhcm5lc3MgPSB7fTsKLSAgICAgICAgc3Rh
dHVzX3RleHRfaGFybmVzc1toYXJuZXNzX3N0YXR1cy5PS10gPSAiT0siOwotICAgICAgICBzdGF0
dXNfdGV4dF9oYXJuZXNzW2hhcm5lc3Nfc3RhdHVzLkVSUk9SXSA9ICJFcnJvciI7Ci0gICAgICAg
IHN0YXR1c190ZXh0X2hhcm5lc3NbaGFybmVzc19zdGF0dXMuVElNRU9VVF0gPSAiVGltZW91dCI7
Ci0KLSAgICAgICAgdmFyIHN0YXR1c190ZXh0ID0ge307Ci0gICAgICAgIHN0YXR1c190ZXh0W1Rl
c3QucHJvdG90eXBlLlBBU1NdID0gIlBhc3MiOwotICAgICAgICBzdGF0dXNfdGV4dFtUZXN0LnBy
b3RvdHlwZS5GQUlMXSA9ICJGYWlsIjsKLSAgICAgICAgc3RhdHVzX3RleHRbVGVzdC5wcm90b3R5
cGUuVElNRU9VVF0gPSAiVGltZW91dCI7Ci0gICAgICAgIHN0YXR1c190ZXh0W1Rlc3QucHJvdG90
eXBlLk5PVFJVTl0gPSAiTm90IFJ1biI7Ci0KICAgICAgICAgdmFyIHN0YXR1c19udW1iZXIgPSB7
fTsKICAgICAgICAgZm9yRWFjaCh0ZXN0cywKICAgICAgICAgICAgICAgICBmdW5jdGlvbih0ZXN0
KSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBzdGF0dXMgPSBzdGF0dXNfdGV4dFt0ZXN0LnN0
YXR1c107CisgICAgICAgICAgICAgICAgICAgIHZhciBzdGF0dXMgPSB0ZXN0LmZvcm1hdF9zdGF0
dXMoKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXR1c19udW1iZXIuaGFzT3duUHJvcGVy
dHkoc3RhdHVzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzX251bWJlcltzdGF0
dXNdICs9IDE7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC0yNzc1LDggKzM0MDYs
NyBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgWyJoMiIsIHt9LCAiU3VtbWFyeSJdLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmdW5jdGlvbigpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXR1cyA9
IHN0YXR1c190ZXh0X2hhcm5lc3NbaGFybmVzc19zdGF0dXMuc3RhdHVzXTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzdGF0dXMgPSBoYXJuZXNzX3N0YXR1cy5mb3Jt
YXRfc3RhdHVzKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcnYg
PSBbWyJzZWN0aW9uIiwge30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFsicCIsIHt9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIkhhcm5lc3Mgc3RhdHVzOiAiLApAQCAtMjc5OCwxMyArMzQyOCwxNCBAQCBw
b2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2YXIgcnYgPSBbWyJkaXYiLCB7fV1dOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyIGkgPSAwOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
d2hpbGUgKHN0YXR1c190ZXh0Lmhhc093blByb3BlcnR5KGkpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXR1c19udW1iZXIuaGFzT3duUHJvcGVydHko
c3RhdHVzX3RleHRbaV0pKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZhciBzdGF0dXMgPSBzdGF0dXNfdGV4dFtpXTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcnZbMF0ucHVzaChbImRpdiIsIHsiY2xhc3MiOnN0YXR1
c19jbGFzcyhzdGF0dXMpfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdo
aWxlIChUZXN0LnByb3RvdHlwZS5zdGF0dXNfZm9ybWF0cy5oYXNPd25Qcm9wZXJ0eShpKSkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0dXNfbnVtYmVy
Lmhhc093blByb3BlcnR5KFRlc3QucHJvdG90eXBlLnN0YXR1c19mb3JtYXRzW2ldKSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc3RhdHVzID0gVGVz
dC5wcm90b3R5cGUuc3RhdHVzX2Zvcm1hdHNbaV07CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJ2WzBdLnB1c2goWyJkaXYiLCB7fSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJsYWJlbCIsIHt9LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
WyJpbnB1dCIsIHt0eXBlOiJjaGVja2JveCIsIGNoZWNrZWQ6ImNoZWNrZWQifV0sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXNf
bnVtYmVyW3N0YXR1c10gKyAiICIgKyBzdGF0dXNdXSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXNfbnVtYmVyW3N0YXR1c10g
KyAiICIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBbInNwYW4iLCB7ImNsYXNzIjpzdGF0dXNfY2xhc3Moc3RhdHVzKX0sIHN0YXR1c11d
XSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkrKzsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KQEAgLTI4MjQsMTMgKzM0NTUsMTMgQEAgcG9saWNpZXMgYW5kIGNv
bnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXN1bHRfY2xhc3MgPSBlbGVtZW50LnBhcmVu
dE5vZGUuZ2V0QXR0cmlidXRlKCJjbGFzcyIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdmFyIHJlc3VsdF9jbGFzcyA9IGVsZW1lbnQucXVlcnlTZWxlY3Rvcigic3BhbltjbGFz
c10iKS5nZXRBdHRyaWJ1dGUoImNsYXNzIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2YXIgc3R5bGVfZWxlbWVudCA9IG91dHB1dF9kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJz
dHlsZSNoaWRlLSIgKyByZXN1bHRfY2xhc3MpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdmFyIGlucHV0X2VsZW1lbnQgPSBlbGVtZW50LnF1ZXJ5U2VsZWN0b3IoImlucHV0Iik7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXN0eWxlX2VsZW1lbnQgJiYg
IWlucHV0X2VsZW1lbnQuY2hlY2tlZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0eWxlX2VsZW1lbnQgPSBvdXRwdXRfZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHho
dG1sX25zLCAic3R5bGUiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dHlsZV9lbGVtZW50LmlkID0gImhpZGUtIiArIHJlc3VsdF9jbGFzczsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdHlsZV9lbGVtZW50LnRleHRDb250ZW50ID0gInRhYmxl
I3Jlc3VsdHMgPiB0Ym9keSA+IHRyLiIrcmVzdWx0X2NsYXNzKyJ7ZGlzcGxheTpub25lfSI7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVfZWxlbWVudC50ZXh0Q29u
dGVudCA9ICJ0YWJsZSNyZXN1bHRzID4gdGJvZHkgPiB0ci5vdmVyYWxsLSIrcmVzdWx0X2NsYXNz
KyJ7ZGlzcGxheTpub25lfSI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
b3V0cHV0X2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoc3R5bGVfZWxlbWVudCk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHN0eWxlX2VsZW1lbnQgJiYgaW5w
dXRfZWxlbWVudC5jaGVja2VkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3R5bGVfZWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHN0eWxlX2VsZW1lbnQpOwpA
QCAtMjg3MSw2ICszNTAyLDUyIEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNd
LgogICAgICAgICAgICAgcmV0dXJuICcnOwogICAgICAgICB9CiAKKyAgICAgICAgdmFyIGFzc2Vy
dHNfcnVuX2J5X3Rlc3QgPSBuZXcgTWFwKCk7CisgICAgICAgIGFzc2VydHNfcnVuLmZvckVhY2go
YXNzZXJ0ID0+IHsKKyAgICAgICAgICAgIGlmICghYXNzZXJ0c19ydW5fYnlfdGVzdC5oYXMoYXNz
ZXJ0LnRlc3QpKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0c19ydW5fYnlfdGVzdC5zZXQoYXNz
ZXJ0LnRlc3QsIFtdKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGFzc2VydHNfcnVuX2J5
X3Rlc3QuZ2V0KGFzc2VydC50ZXN0KS5wdXNoKGFzc2VydCk7CisgICAgICAgIH0pOworCisgICAg
ICAgIGZ1bmN0aW9uIGdldF9hc3NlcnRzX291dHB1dCh0ZXN0KSB7CisgICAgICAgICAgICB2YXIg
YXNzZXJ0cyA9IGFzc2VydHNfcnVuX2J5X3Rlc3QuZ2V0KHRlc3QpOworICAgICAgICAgICAgaWYg
KCFhc3NlcnRzKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuICJObyBhc3NlcnRzIHJhbiI7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBydiA9ICI8dGFibGU+IjsKKyAgICAgICAgICAgIHJ2
ICs9IGFzc2VydHMubWFwKGFzc2VydCA9PiB7CisgICAgICAgICAgICAgICAgdmFyIG91dHB1dF9m
biA9ICI8c3Ryb25nPiIgKyBlc2NhcGVfaHRtbChhc3NlcnQuYXNzZXJ0X25hbWUpICsgIjwvc3Ry
b25nPigiOworICAgICAgICAgICAgICAgIHZhciBwcmVmaXhfbGVuID0gb3V0cHV0X2ZuLmxlbmd0
aDsKKyAgICAgICAgICAgICAgICB2YXIgb3V0cHV0X2FyZ3MgPSBhc3NlcnQuYXJnczsKKyAgICAg
ICAgICAgICAgICB2YXIgb3V0cHV0X2xlbiA9IG91dHB1dF9hcmdzLnJlZHVjZSgocHJldiwgY3Vy
cmVudCkgPT4gcHJlditjdXJyZW50LCBwcmVmaXhfbGVuKTsKKyAgICAgICAgICAgICAgICBpZiAo
b3V0cHV0X2xlbltvdXRwdXRfbGVuLmxlbmd0aCAtIDFdID4gNTApIHsKKyAgICAgICAgICAgICAg
ICAgICAgb3V0cHV0X2FyZ3MgPSBvdXRwdXRfYXJncy5tYXAoKHgsIGkpID0+CisgICAgICAgICAg
ICAgICAgICAgIChpID4gMCA/ICIgICIucmVwZWF0KHByZWZpeF9sZW4pIDogIiIgKSsgeCArIChp
IDwgb3V0cHV0X2FyZ3MubGVuZ3RoIC0gMSA/ICIsXG4iIDogIiIpKTsKKyAgICAgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBvdXRwdXRfYXJncyA9IG91dHB1dF9hcmdz
Lm1hcCgoeCwgaSkgPT4geCArIChpIDwgb3V0cHV0X2FyZ3MubGVuZ3RoIC0gMSA/ICIsICIgOiAi
IikpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBvdXRwdXRfZm4gKz0gZXNj
YXBlX2h0bWwob3V0cHV0X2FyZ3Muam9pbigiIikpOworICAgICAgICAgICAgICAgIG91dHB1dF9m
biArPSAnKSc7CisgICAgICAgICAgICAgICAgdmFyIG91dHB1dF9sb2NhdGlvbjsKKyAgICAgICAg
ICAgICAgICBpZiAoYXNzZXJ0LnN0YWNrKSB7CisgICAgICAgICAgICAgICAgICAgIG91dHB1dF9s
b2NhdGlvbiA9IGFzc2VydC5zdGFjay5zcGxpdCgiXG4iLCAxKVswXS5yZXBsYWNlKC9AP1x3Kzpc
L1wvW14gIlwvXSsoPzo6XGQrKT8vZywgIiAiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgcmV0dXJuICI8dHIgY2xhc3M9J292ZXJhbGwtIiArCisgICAgICAgICAgICAgICAg
ICAgIHN0YXR1c19jbGFzcyhUZXN0LnByb3RvdHlwZS5zdGF0dXNfZm9ybWF0c1thc3NlcnQuc3Rh
dHVzXSkgKyAiJz4iICsKKyAgICAgICAgICAgICAgICAgICAgIjx0ZCBjbGFzcz0nIiArCisgICAg
ICAgICAgICAgICAgICAgIHN0YXR1c19jbGFzcyhUZXN0LnByb3RvdHlwZS5zdGF0dXNfZm9ybWF0
c1thc3NlcnQuc3RhdHVzXSkgKyAiJz4iICsKKyAgICAgICAgICAgICAgICAgICAgVGVzdC5wcm90
b3R5cGUuc3RhdHVzX2Zvcm1hdHNbYXNzZXJ0LnN0YXR1c10gKyAiPC90ZD4iICsKKyAgICAgICAg
ICAgICAgICAgICAgIjx0ZD48cHJlPiIgKworICAgICAgICAgICAgICAgICAgICBvdXRwdXRfZm4g
KworICAgICAgICAgICAgICAgICAgICAob3V0cHV0X2xvY2F0aW9uID8gIlxuIiArIGVzY2FwZV9o
dG1sKG91dHB1dF9sb2NhdGlvbikgOiAiIikgKworICAgICAgICAgICAgICAgICAgICAiPC9wcmU+
PC90ZD48L3RyPiI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICApLmpvaW4oIlxuIik7Cisg
ICAgICAgICAgICBydiArPSAiPC90YWJsZT4iOworICAgICAgICAgICAgcmV0dXJuIHJ2OworICAg
ICAgICB9CisKICAgICAgICAgbG9nLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
Uyh4aHRtbF9ucywgInNlY3Rpb24iKSk7CiAgICAgICAgIHZhciBhc3NlcnRpb25zID0gaGFzX2Fz
c2VydGlvbnMoKTsKICAgICAgICAgdmFyIGh0bWwgPSAiPGgyPkRldGFpbHM8L2gyPjx0YWJsZSBp
ZD0ncmVzdWx0cycgIiArIChhc3NlcnRpb25zID8gImNsYXNzPSdhc3NlcnRpb25zJyIgOiAiIiAp
ICsgIj4iICsKQEAgLTI4NzksMTkgKzM1NTYsMjYgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlv
biBmb3JtcyBbM10uCiAgICAgICAgICAgICAiPHRoPk1lc3NhZ2U8L3RoPjwvdHI+PC90aGVhZD4i
ICsKICAgICAgICAgICAgICI8dGJvZHk+IjsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0
ZXN0cy5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgaHRtbCArPSAnPHRyIGNsYXNzPSInICsK
LSAgICAgICAgICAgICAgICBlc2NhcGVfaHRtbChzdGF0dXNfY2xhc3Moc3RhdHVzX3RleHRbdGVz
dHNbaV0uc3RhdHVzXSkpICsKLSAgICAgICAgICAgICAgICAnIj48dGQ+JyArCi0gICAgICAgICAg
ICAgICAgZXNjYXBlX2h0bWwoc3RhdHVzX3RleHRbdGVzdHNbaV0uc3RhdHVzXSkgKworICAgICAg
ICAgICAgdmFyIHRlc3QgPSB0ZXN0c1tpXTsKKyAgICAgICAgICAgIGh0bWwgKz0gJzx0ciBjbGFz
cz0ib3ZlcmFsbC0nICsKKyAgICAgICAgICAgICAgICBzdGF0dXNfY2xhc3ModGVzdC5mb3JtYXRf
c3RhdHVzKCkpICsKKyAgICAgICAgICAgICAgICAnIj4nICsKKyAgICAgICAgICAgICAgICAnPHRk
IGNsYXNzPSInICsKKyAgICAgICAgICAgICAgICBzdGF0dXNfY2xhc3ModGVzdC5mb3JtYXRfc3Rh
dHVzKCkpICsKKyAgICAgICAgICAgICAgICAnIj4nICsKKyAgICAgICAgICAgICAgICB0ZXN0LmZv
cm1hdF9zdGF0dXMoKSArCiAgICAgICAgICAgICAgICAgIjwvdGQ+PHRkPiIgKwotICAgICAgICAg
ICAgICAgIGVzY2FwZV9odG1sKHRlc3RzW2ldLm5hbWUpICsKKyAgICAgICAgICAgICAgICBlc2Nh
cGVfaHRtbCh0ZXN0Lm5hbWUpICsKICAgICAgICAgICAgICAgICAiPC90ZD48dGQ+IiArCi0gICAg
ICAgICAgICAgICAgKGFzc2VydGlvbnMgPyBlc2NhcGVfaHRtbChnZXRfYXNzZXJ0aW9uKHRlc3Rz
W2ldKSkgKyAiPC90ZD48dGQ+IiA6ICIiKSArCi0gICAgICAgICAgICAgICAgZXNjYXBlX2h0bWwo
dGVzdHNbaV0ubWVzc2FnZSA/IHRlc3RzW2ldLm1lc3NhZ2UgOiAiICIpICsKKyAgICAgICAgICAg
ICAgICAoYXNzZXJ0aW9ucyA/IGVzY2FwZV9odG1sKGdldF9hc3NlcnRpb24odGVzdCkpICsgIjwv
dGQ+PHRkPiIgOiAiIikgKworICAgICAgICAgICAgICAgIGVzY2FwZV9odG1sKHRlc3QubWVzc2Fn
ZSA/IHRlc3RzW2ldLm1lc3NhZ2UgOiAiICIpICsKICAgICAgICAgICAgICAgICAodGVzdHNbaV0u
c3RhY2sgPyAiPHByZT4iICsKICAgICAgICAgICAgICAgICAgZXNjYXBlX2h0bWwodGVzdHNbaV0u
c3RhY2spICsKLSAgICAgICAgICAgICAgICAgIjwvcHJlPiI6ICIiKSArCi0gICAgICAgICAgICAg
ICAgIjwvdGQ+PC90cj4iOworICAgICAgICAgICAgICAgICAiPC9wcmU+IjogIiIpOworICAgICAg
ICAgICAgaWYgKCEodGVzdCBpbnN0YW5jZW9mIFJlbW90ZVRlc3QpKSB7CisgICAgICAgICAgICAg
ICAgIGh0bWwgKz0gIjxkZXRhaWxzPjxzdW1tYXJ5PkFzc2VydHMgcnVuPC9zdW1tYXJ5PiIgKyBn
ZXRfYXNzZXJ0c19vdXRwdXQodGVzdCkgKyAiPC9kZXRhaWxzPiIKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGh0bWwgKz0gIjwvdGQ+PC90cj4iOwogICAgICAgICB9CiAgICAgICAgIGh0bWwg
Kz0gIjwvdGJvZHk+PC90YWJsZT4iOwogICAgICAgICB0cnkgewpAQCAtMzA3Myw5ICszNzU3LDYg
QEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICovCiAgICAgZnVu
Y3Rpb24gYXNzZXJ0KGV4cGVjdGVkX3RydWUsIGZ1bmN0aW9uX25hbWUsIGRlc2NyaXB0aW9uLCBl
cnJvciwgc3Vic3RpdHV0aW9ucykKICAgICB7Ci0gICAgICAgIGlmICh0ZXN0cy50ZXN0cy5sZW5n
dGggPT09IDApIHsKLSAgICAgICAgICAgIHRlc3RzLnNldF9maWxlX2lzX3Rlc3QoKTsKLSAgICAg
ICAgfQogICAgICAgICBpZiAoZXhwZWN0ZWRfdHJ1ZSAhPT0gdHJ1ZSkgewogICAgICAgICAgICAg
dmFyIG1zZyA9IG1ha2VfbWVzc2FnZShmdW5jdGlvbl9uYW1lLCBkZXNjcmlwdGlvbiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IsIHN1YnN0aXR1dGlvbnMpOwpAQCAt
MzA4NSwxNCArMzc2NiwxNyBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4K
IAogICAgIGZ1bmN0aW9uIEFzc2VydGlvbkVycm9yKG1lc3NhZ2UpCiAgICAgeworICAgICAgICBp
ZiAodHlwZW9mIG1lc3NhZ2UgPT0gInN0cmluZyIpIHsKKyAgICAgICAgICAgIG1lc3NhZ2UgPSBz
YW5pdGl6ZV91bnBhaXJlZF9zdXJyb2dhdGVzKG1lc3NhZ2UpOworICAgICAgICB9CiAgICAgICAg
IHRoaXMubWVzc2FnZSA9IG1lc3NhZ2U7Ci0gICAgICAgIHRoaXMuc3RhY2sgPSB0aGlzLmdldF9z
dGFjaygpOworICAgICAgICB0aGlzLnN0YWNrID0gZ2V0X3N0YWNrKCk7CiAgICAgfQogICAgIGV4
cG9zZShBc3NlcnRpb25FcnJvciwgIkFzc2VydGlvbkVycm9yIik7CiAKICAgICBBc3NlcnRpb25F
cnJvci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEVycm9yLnByb3RvdHlwZSk7CiAKLSAgICBB
c3NlcnRpb25FcnJvci5wcm90b3R5cGUuZ2V0X3N0YWNrID0gZnVuY3Rpb24oKSB7CisgICAgY29u
c3QgZ2V0X3N0YWNrID0gZnVuY3Rpb24oKSB7CiAgICAgICAgIHZhciBzdGFjayA9IG5ldyBFcnJv
cigpLnN0YWNrOwogICAgICAgICAvLyBJRTExIGRvZXMgbm90IGluaXRpYWxpemUgJ0Vycm9yLnN0
YWNrJyB1bnRpbCB0aGUgb2JqZWN0IGlzIHRocm93bi4KICAgICAgICAgaWYgKCFzdGFjaykgewpA
QCAtMzEzOCw2ICszODIyLDEzIEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNd
LgogICAgICAgICByZXR1cm4gbGluZXMuc2xpY2UoaSkuam9pbigiXG4iKTsKICAgICB9CiAKKyAg
ICBmdW5jdGlvbiBPcHRpb25hbEZlYXR1cmVVbnN1cHBvcnRlZEVycm9yKG1lc3NhZ2UpCisgICAg
eworICAgICAgICBBc3NlcnRpb25FcnJvci5jYWxsKHRoaXMsIG1lc3NhZ2UpOworICAgIH0KKyAg
ICBPcHRpb25hbEZlYXR1cmVVbnN1cHBvcnRlZEVycm9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVh
dGUoQXNzZXJ0aW9uRXJyb3IucHJvdG90eXBlKTsKKyAgICBleHBvc2UoT3B0aW9uYWxGZWF0dXJl
VW5zdXBwb3J0ZWRFcnJvciwgIk9wdGlvbmFsRmVhdHVyZVVuc3VwcG9ydGVkRXJyb3IiKTsKKwog
ICAgIGZ1bmN0aW9uIG1ha2VfbWVzc2FnZShmdW5jdGlvbl9uYW1lLCBkZXNjcmlwdGlvbiwgZXJy
b3IsIHN1YnN0aXR1dGlvbnMpCiAgICAgewogICAgICAgICBmb3IgKHZhciBwIGluIHN1YnN0aXR1
dGlvbnMpIHsKQEAgLTMzMDYsNyArMzk5Nyw3IEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24g
Zm9ybXMgWzNdLgogICAgIGZ1bmN0aW9uIGdldF90aXRsZSgpCiAgICAgewogICAgICAgICBpZiAo
J2RvY3VtZW50JyBpbiBnbG9iYWxfc2NvcGUpIHsKLSAgICAgICAgICAgIC8vRG9uJ3QgdXNlIGRv
Y3VtZW50LnRpdGxlIHRvIHdvcmsgYXJvdW5kIGFuIE9wZXJhIGJ1ZyBpbiBYSFRNTCBkb2N1bWVu
dHMKKyAgICAgICAgICAgIC8vRG9uJ3QgdXNlIGRvY3VtZW50LnRpdGxlIHRvIHdvcmsgYXJvdW5k
IGFuIE9wZXJhL1ByZXN0byBidWcgaW4gWEhUTUwgZG9jdW1lbnRzCiAgICAgICAgICAgICB2YXIg
dGl0bGUgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGl0bGUiKVswXTsKICAgICAg
ICAgICAgIGlmICh0aXRsZSAmJiB0aXRsZS5maXJzdENoaWxkICYmIHRpdGxlLmZpcnN0Q2hpbGQu
ZGF0YSkgewogICAgICAgICAgICAgICAgIHJldHVybiB0aXRsZS5maXJzdENoaWxkLmRhdGE7CkBA
IC0zMzY1LDM4ICs0MDU2LDU2IEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNd
LgogICAgIHZhciB0ZXN0cyA9IG5ldyBUZXN0cygpOwogCiAgICAgaWYgKGdsb2JhbF9zY29wZS5h
ZGRFdmVudExpc3RlbmVyKSB7Ci0gICAgICAgIHZhciBlcnJvcl9oYW5kbGVyID0gZnVuY3Rpb24o
ZSkgewotICAgICAgICAgICAgaWYgKHRlc3RzLnRlc3RzLmxlbmd0aCA9PT0gMCAmJiAhdGVzdHMu
YWxsb3dfdW5jYXVnaHRfZXhjZXB0aW9uKSB7Ci0gICAgICAgICAgICAgICAgdGVzdHMuc2V0X2Zp
bGVfaXNfdGVzdCgpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB2YXIgc3RhY2s7Ci0g
ICAgICAgICAgICBpZiAoZS5lcnJvciAmJiBlLmVycm9yLnN0YWNrKSB7Ci0gICAgICAgICAgICAg
ICAgc3RhY2sgPSBlLmVycm9yLnN0YWNrOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgICAgICBzdGFjayA9IGUuZmlsZW5hbWUgKyAiOiIgKyBlLmxpbmVubyArICI6IiArIGUuY29s
bm87Ci0gICAgICAgICAgICB9Ci0KKyAgICAgICAgdmFyIGVycm9yX2hhbmRsZXIgPSBmdW5jdGlv
bihlcnJvciwgbWVzc2FnZSwgc3RhY2spIHsKKyAgICAgICAgICAgIHZhciBvcHRpb25hbF91bnN1
cHBvcnRlZCA9IGVycm9yIGluc3RhbmNlb2YgT3B0aW9uYWxGZWF0dXJlVW5zdXBwb3J0ZWRFcnJv
cjsKICAgICAgICAgICAgIGlmICh0ZXN0cy5maWxlX2lzX3Rlc3QpIHsKICAgICAgICAgICAgICAg
ICB2YXIgdGVzdCA9IHRlc3RzLnRlc3RzWzBdOwogICAgICAgICAgICAgICAgIGlmICh0ZXN0LnBo
YXNlID49IHRlc3QucGhhc2VzLkhBU19SRVNVTFQpIHsKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB0ZXN0LnNldF9zdGF0dXMo
dGVzdC5GQUlMLCBlLm1lc3NhZ2UsIHN0YWNrKTsKKyAgICAgICAgICAgICAgICB2YXIgc3RhdHVz
ID0gb3B0aW9uYWxfdW5zdXBwb3J0ZWQgPyB0ZXN0LlBSRUNPTkRJVElPTl9GQUlMRUQgOiB0ZXN0
LkZBSUw7CisgICAgICAgICAgICAgICAgdGVzdC5zZXRfc3RhdHVzKHN0YXR1cywgbWVzc2FnZSwg
c3RhY2spOwogICAgICAgICAgICAgICAgIHRlc3QucGhhc2UgPSB0ZXN0LnBoYXNlcy5IQVNfUkVT
VUxUOwotICAgICAgICAgICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb24gaW52b2NhdGlv
biBpcyBzdXBlcmZsdW91cy4KLSAgICAgICAgICAgICAgICAvLyBUT0RPOiBSZW1vdmUuCi0gICAg
ICAgICAgICAgICAgdGVzdC5kb25lKCk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKCF0ZXN0cy5h
bGxvd191bmNhdWdodF9leGNlcHRpb24pIHsKLSAgICAgICAgICAgICAgICB0ZXN0cy5zdGF0dXMu
c3RhdHVzID0gdGVzdHMuc3RhdHVzLkVSUk9SOwotICAgICAgICAgICAgICAgIHRlc3RzLnN0YXR1
cy5tZXNzYWdlID0gZS5tZXNzYWdlOworICAgICAgICAgICAgICAgIHZhciBzdGF0dXMgPSBvcHRp
b25hbF91bnN1cHBvcnRlZCA/IHRlc3RzLnN0YXR1cy5QUkVDT05ESVRJT05fRkFJTEVEIDogdGVz
dHMuc3RhdHVzLkVSUk9SOworICAgICAgICAgICAgICAgIHRlc3RzLnN0YXR1cy5zdGF0dXMgPSBz
dGF0dXM7CisgICAgICAgICAgICAgICAgdGVzdHMuc3RhdHVzLm1lc3NhZ2UgPSBtZXNzYWdlOwog
ICAgICAgICAgICAgICAgIHRlc3RzLnN0YXR1cy5zdGFjayA9IHN0YWNrOwogICAgICAgICAgICAg
fQotICAgICAgICAgICAgZG9uZSgpOworCisgICAgICAgICAgICAvLyBEbyBub3QgdHJhbnNpdGlv
biB0byB0aGUgImNvbXBsZXRlIiBwaGFzZSBpZiB0aGUgdGVzdCBoYXMgYmVlbgorICAgICAgICAg
ICAgLy8gY29uZmlndXJlZCB0byBhbGxvdyB1bmNhdWdodCBleGNlcHRpb25zLiBUaGlzIGdpdmVz
IHRoZSB0ZXN0IGFuCisgICAgICAgICAgICAvLyBvcHBvcnR1bml0eSB0byBkZWZpbmUgc3VidGVz
dHMgYmFzZWQgb24gdGhlIGV4Y2VwdGlvbiByZXBvcnRpbmcKKyAgICAgICAgICAgIC8vIGJlaGF2
aW9yLgorICAgICAgICAgICAgaWYgKCF0ZXN0cy5hbGxvd191bmNhdWdodF9leGNlcHRpb24pIHsK
KyAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAg
ICAgICAgYWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLCBlcnJvcl9oYW5kbGVyLCBmYWxzZSk7Ci0g
ICAgICAgIGFkZEV2ZW50TGlzdGVuZXIoInVuaGFuZGxlZHJlamVjdGlvbiIsIGZ1bmN0aW9uKGUp
eyBlcnJvcl9oYW5kbGVyKGUucmVhc29uKTsgfSwgZmFsc2UpOworICAgICAgICBhZGRFdmVudExp
c3RlbmVyKCJlcnJvciIsIGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgICAgIHZhciBtZXNzYWdlID0g
ZS5tZXNzYWdlOworICAgICAgICAgICAgdmFyIHN0YWNrOworICAgICAgICAgICAgaWYgKGUuZXJy
b3IgJiYgZS5lcnJvci5zdGFjaykgeworICAgICAgICAgICAgICAgIHN0YWNrID0gZS5lcnJvci5z
dGFjazsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgc3RhY2sgPSBlLmZp
bGVuYW1lICsgIjoiICsgZS5saW5lbm8gKyAiOiIgKyBlLmNvbG5vOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgZXJyb3JfaGFuZGxlcihlLmVycm9yLCBtZXNzYWdlLCBzdGFjayk7CisgICAg
ICAgIH0sIGZhbHNlKTsKKworICAgICAgICBhZGRFdmVudExpc3RlbmVyKCJ1bmhhbmRsZWRyZWpl
Y3Rpb24iLCBmdW5jdGlvbihlKSB7CisgICAgICAgICAgICB2YXIgbWVzc2FnZTsKKyAgICAgICAg
ICAgIGlmIChlLnJlYXNvbiAmJiBlLnJlYXNvbi5tZXNzYWdlKSB7CisgICAgICAgICAgICAgICAg
bWVzc2FnZSA9ICJVbmhhbmRsZWQgcmVqZWN0aW9uOiAiICsgZS5yZWFzb24ubWVzc2FnZTsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbWVzc2FnZSA9ICJVbmhhbmRsZWQg
cmVqZWN0aW9uIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHZhciBzdGFjazsKKyAgICAg
ICAgICAgIGlmIChlLnJlYXNvbiAmJiBlLnJlYXNvbi5zdGFjaykgeworICAgICAgICAgICAgICAg
IHN0YWNrID0gZS5yZWFzb24uc3RhY2s7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlcnJv
cl9oYW5kbGVyKGUucmVhc29uLCBtZXNzYWdlLCBzdGFjayk7CisgICAgICAgIH0sIGZhbHNlKTsK
ICAgICB9CiAKICAgICB0ZXN0X2Vudmlyb25tZW50Lm9uX3Rlc3RzX3JlYWR5KCk7CkBAIC0zNDMx
LDUwICs0MTQwLDYyIEBAIHRhYmxlI3Jlc3VsdHMge1wKICAgICB3aWR0aDoxMDAlO1wKIH1cCiBc
Ci10YWJsZSNyZXN1bHRzIHRoOmZpcnN0LWNoaWxkLFwKLXRhYmxlI3Jlc3VsdHMgdGQ6Zmlyc3Qt
Y2hpbGQge1wKLSAgICB3aWR0aDo0ZW07XAordGFibGUjcmVzdWx0cyA+IHRoZWFkID4gdHIgPiB0
aDpmaXJzdC1jaGlsZCxcCit0YWJsZSNyZXN1bHRzID4gdGJvZHkgPiB0ciA+IHRkOmZpcnN0LWNo
aWxkIHtcCisgICAgd2lkdGg6OGVtO1wKIH1cCiBcCi10YWJsZSNyZXN1bHRzIHRoOmxhc3QtY2hp
bGQsXAotdGFibGUjcmVzdWx0cyB0ZDpsYXN0LWNoaWxkIHtcCit0YWJsZSNyZXN1bHRzID4gdGhl
YWQgPiB0ciA+IHRoOmxhc3QtY2hpbGQsXAordGFibGUjcmVzdWx0cyA+IHRoZWFkID4gdHIgPiB0
ZDpsYXN0LWNoaWxkIHtcCiAgICAgd2lkdGg6NTAlO1wKIH1cCiBcCi10YWJsZSNyZXN1bHRzLmFz
c2VydGlvbnMgdGg6bGFzdC1jaGlsZCxcCi10YWJsZSNyZXN1bHRzLmFzc2VydGlvbnMgdGQ6bGFz
dC1jaGlsZCB7XAordGFibGUjcmVzdWx0cy5hc3NlcnRpb25zID4gdGhlYWQgPiB0ciA+IHRoOmxh
c3QtY2hpbGQsXAordGFibGUjcmVzdWx0cy5hc3NlcnRpb25zID4gdGJvZHkgPiB0ciA+IHRkOmxh
c3QtY2hpbGQge1wKICAgICB3aWR0aDozNSU7XAogfVwKIFwKLXRhYmxlI3Jlc3VsdHMgdGgge1wK
K3RhYmxlI3Jlc3VsdHMgPiB0aGVhZCA+ID4gdHIgPiB0aCB7XAogICAgIHBhZGRpbmc6MDtcCiAg
ICAgcGFkZGluZy1ib3R0b206MC41ZW07XAogICAgIGJvcmRlci1ib3R0b206bWVkaXVtIHNvbGlk
IGJsYWNrO1wKIH1cCiBcCi10YWJsZSNyZXN1bHRzIHRkIHtcCit0YWJsZSNyZXN1bHRzID4gdGJv
ZHkgPiB0cj4gdGQge1wKICAgICBwYWRkaW5nOjFlbTtcCiAgICAgcGFkZGluZy1ib3R0b206MC41
ZW07XAogICAgIGJvcmRlci1ib3R0b206dGhpbiBzb2xpZCBibGFjaztcCiB9XAogXAotdHIucGFz
cyA+IHRkOmZpcnN0LWNoaWxkIHtcCisucGFzcyB7XAogICAgIGNvbG9yOmdyZWVuO1wKIH1cCiBc
Ci10ci5mYWlsID4gdGQ6Zmlyc3QtY2hpbGQge1wKKy5mYWlsIHtcCiAgICAgY29sb3I6cmVkO1wK
IH1cCiBcCi10ci50aW1lb3V0ID4gdGQ6Zmlyc3QtY2hpbGQge1wKK3RyLnRpbWVvdXQge1wKICAg
ICBjb2xvcjpyZWQ7XAogfVwKIFwKLXRyLm5vdHJ1biA+IHRkOmZpcnN0LWNoaWxkIHtcCit0ci5u
b3RydW4ge1wKICAgICBjb2xvcjpibHVlO1wKIH1cCiBcCi0ucGFzcyA+IHRkOmZpcnN0LWNoaWxk
LCAuZmFpbCA+IHRkOmZpcnN0LWNoaWxkLCAudGltZW91dCA+IHRkOmZpcnN0LWNoaWxkLCAubm90
cnVuID4gdGQ6Zmlyc3QtY2hpbGQge1wKK3RyLm9wdGlvbmFsdW5zdXBwb3J0ZWQge1wKKyAgICBj
b2xvcjpibHVlO1wKK31cCitcCisub2sge1wKKyAgICBjb2xvcjpncmVlbjtcCit9XAorXAorLmVy
cm9yIHtcCisgICAgY29sb3I6cmVkO1wKK31cCitcCisucGFzcywgLmZhaWwsIC50aW1lb3V0LCAu
bm90cnVuLCAub3B0aW9uYWx1bnN1cHBvcnRlZCAub2ssIC50aW1lb3V0LCAuZXJyb3Ige1wKICAg
ICBmb250LXZhcmlhbnQ6c21hbGwtY2FwcztcCiB9XAogXApAQCAtMzQ5MSwyMyArNDIxMiw3IEBA
IHRhYmxlI3Jlc3VsdHMgc3Bhbi5hY3R1YWwge1wKICAgICBmb250LWZhbWlseTpEZWphVnUgU2Fu
cyBNb25vLCBCaXRzdHJlYW0gVmVyYSBTYW5zIE1vbm8sIE1vbm9zcGFjZTtcCiAgICAgd2hpdGUt
c3BhY2U6cHJlO1wKIH1cCi1cCi1zcGFuLm9rIHtcCi0gICAgY29sb3I6Z3JlZW47XAotfVwKLVwK
LXRyLmVycm9yIHtcCi0gICAgY29sb3I6cmVkO1wKLX1cCi1cCi1zcGFuLnRpbWVvdXQge1wKLSAg
ICBjb2xvcjpyZWQ7XAotfVwKLVwKLXNwYW4ub2ssIHNwYW4udGltZW91dCwgc3Bhbi5lcnJvciB7
XAotICAgIGZvbnQtdmFyaWFudDpzbWFsbC1jYXBzO1wKLX1cCiAiOwogCi19KSh0aGlzKTsKK30p
KHNlbGYpOwogLy8gdmltOiBzZXQgZXhwYW5kdGFiIHNoaWZ0d2lkdGg9NCB0YWJzdG9wPTQ6CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMgYi9M
YXlvdXRUZXN0cy9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMKaW5kZXggN2I5ZTZmYjcz
MmE4N2M0Y2Q4ODViODJmZmY1NDJiYTRkN2IwMGQxNi4uZTVjYjQwZmUwZWY2NTJiZTQwN2Q0YzQ4
YjFjNTkzOTE4NjRjZWM3YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzcmVwb3J0LmpzCisrKyBiL0xheW91dFRlc3RzL3Jlc291cmNlcy90ZXN0aGFybmVzc3Jl
cG9ydC5qcwpAQCAtMSwxNDIgKzEsNTcgQEAKKy8qIGdsb2JhbCBhZGRfY29tcGxldGlvbl9jYWxs
YmFjayAqLworLyogZ2xvYmFsIHNldHVwICovCisKIC8qCi0gKiBUaGlzIGZpbGUgaXMgaW50ZW5k
ZWQgZm9yIHZlbmRvcnMgdG8gaW1wbGVtZW50Ci0gKiBjb2RlIG5lZWRlZCB0byBpbnRlZ3JhdGUg
dGVzdGhhcm5lc3MuanMgdGVzdHMgd2l0aCB0aGVpciBvd24gdGVzdCBzeXN0ZW1zLgorICogVGhp
cyBmaWxlIGlzIGludGVuZGVkIGZvciB2ZW5kb3JzIHRvIGltcGxlbWVudCBjb2RlIG5lZWRlZCB0
byBpbnRlZ3JhdGUKKyAqIHRlc3RoYXJuZXNzLmpzIHRlc3RzIHdpdGggdGhlaXIgb3duIHRlc3Qg
c3lzdGVtcy4KICAqCi0gKiBUeXBpY2FsbHkgc3VjaCBpbnRlZ3JhdGlvbiB3aWxsIGF0dGFjaCBj
YWxsYmFja3Mgd2hlbiBlYWNoIHRlc3QgaXMKLSAqIGhhcyBydW4sIHVzaW5nIGFkZF9yZXN1bHRf
Y2FsbGJhY2soY2FsbGJhY2sodGVzdCkpLCBvciB3aGVuIHRoZSB3aG9sZSB0ZXN0IGZpbGUgaGFz
Ci0gKiBjb21wbGV0ZWQsIHVzaW5nIGFkZF9jb21wbGV0aW9uX2NhbGxiYWNrKGNhbGxiYWNrKHRl
c3RzLCBoYXJuZXNzX3N0YXR1cykpLgorICogVHlwaWNhbGx5IHRlc3Qgc3lzdGVtIGludGVncmF0
aW9uIHdpbGwgYXR0YWNoIGNhbGxiYWNrcyB3aGVuIGVhY2ggdGVzdCBoYXMKKyAqIHJ1biwgdXNp
bmcgYWRkX3Jlc3VsdF9jYWxsYmFjayhjYWxsYmFjayh0ZXN0KSksIG9yIHdoZW4gdGhlIHdob2xl
IHRlc3QgZmlsZQorICogaGFzIGNvbXBsZXRlZCwgdXNpbmcKKyAqIGFkZF9jb21wbGV0aW9uX2Nh
bGxiYWNrKGNhbGxiYWNrKHRlc3RzLCBoYXJuZXNzX3N0YXR1cykpLgogICoKICAqIEZvciBtb3Jl
IGRvY3VtZW50YXRpb24gYWJvdXQgdGhlIGNhbGxiYWNrIGZ1bmN0aW9ucyBhbmQgdGhlCiAgKiBw
YXJhbWV0ZXJzIHRoZXkgYXJlIGNhbGxlZCB3aXRoIHNlZSB0ZXN0aGFybmVzcy5qcwogICovCiAK
LS8vIFNldHVwIGZvciBXZWJLaXQgSmF2YVNjcmlwdCB0ZXN0cwotaWYgKHNlbGYudGVzdFJ1bm5l
cikgewotICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotICAgIHRlc3RSdW5uZXIud2FpdFVu
dGlsRG9uZSgpOwotICAgIHRlc3RSdW5uZXIuZ3JhbnRXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9u
KCJodHRwOi8vbG9jYWxob3N0Ojg4MDAiKTsKLSAgICAvLyBMZXQncyByZXN0cmljdCBjYWxsaW5n
IHRlc3RoYXJuZXNzIHRpbWVvdXQoKSB0byB3cHRzZXJ2ZSB0ZXN0cyBmb3IgdGhlIG1vbWVudC4K
LSAgICAvLyBUaGF0IHdpbGwgbGltaXQgdGhlIGltcGFjdCB0byBhIHNtYWxsIG51bWJlciBvZiB0
ZXN0cy4KLSAgICAvLyBUaGUgcmlzayBpcyB0aGF0IHRlc3RoYXJuZXNzIHRpbWVvdXQoKSBtaWdo
dCBiZSBjYWxsZWQgdG8gbGF0ZSBvbiBzbG93IGJvdHMgdG8gZmluaXNoIHByb3Blcmx5LgotICAg
IGlmICh0ZXN0UnVubmVyLnRpbWVvdXQgJiYgKGxvY2F0aW9uLnBvcnQgPT0gODgwMCB8fCBsb2Nh
dGlvbi5wb3J0ID09IDk0NDMpKQotICAgICAgICBzZXRUaW1lb3V0KHRpbWVvdXQsIHRlc3RSdW5u
ZXIudGltZW91dCAqIDAuOSk7Ci0KLSAgICBpZiAobG9jYXRpb24ucG9ydCA9PSA4ODAwIHx8IGxv
Y2F0aW9uLnBvcnQgPT0gOTQ0MykgewotICAgICAgICBpZiAoc2VsZi5pbnRlcm5hbHMpIHsKLSAg
ICAgICAgICAgIC8vIFVzZSA0NDEwMCBzYW1wbGUgcmF0ZSBieSBkZWZhdWx0IGluc3RlYWQgb2Yg
dGhlIGhhcmR3YXJlIHNhbXBsZSByYXRlIHNvIHRoYXQgd2UgZ2V0IGNvbnNpc3RlbnQgcmVzdWx0
cyBhY3Jvc3MgbWFjaGluZXMuCi0gICAgICAgICAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0RGVm
YXVsdEF1ZGlvQ29udGV4dFNhbXBsZVJhdGUoNDQxMDApOwotICAgICAgICB9Ci0gICAgfQotCi0g
ICAgaWYgKHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1Nob3VsZERvd25ncmFkZVJlZmVycmVyKSAK
LSAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NTaG91bGREb3duZ3JhZGVSZWZlcnJlcihm
YWxzZSwgZnVuY3Rpb24oKSB7IH0pOwotfQotCi1pZiAoc2VsZi5pbnRlcm5hbHMgJiYgaW50ZXJu
YWxzLnNldElDRUNhbmRpZGF0ZUZpbHRlcmluZykKLSAgICBpbnRlcm5hbHMuc2V0SUNFQ2FuZGlk
YXRlRmlsdGVyaW5nKGZhbHNlKTsKLQotLy8gRnVuY3Rpb24gdXNlZCB0byBjb252ZXJ0IHRoZSB0
ZXN0IHN0YXR1cyBjb2RlIGludG8KLS8vIHRoZSBjb3JyZXNwb25kaW5nIHN0cmluZwotZnVuY3Rp
b24gY29udmVydFJlc3VsdChyZXN1bHRTdGF0dXMpCi17Ci0gICAgaWYocmVzdWx0U3RhdHVzID09
IDApCi0gICAgICAgIHJldHVybigiUEFTUyIpOwotICAgIGVsc2UgaWYocmVzdWx0U3RhdHVzID09
IDEpCi0gICAgICAgIHJldHVybigiRkFJTCIpOwotICAgIGVsc2UgaWYocmVzdWx0U3RhdHVzID09
IDIpCi0gICAgICAgIHJldHVybigiVElNRU9VVCIpOwotICAgIGVsc2UKLSAgICAgICAgcmV0dXJu
KCJOT1RSVU4iKTsKK2Z1bmN0aW9uIGR1bXBfdGVzdF9yZXN1bHRzKHRlc3RzLCBzdGF0dXMpIHsK
KyAgICB2YXIgcmVzdWx0c19lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0
Iik7CisgICAgcmVzdWx0c19lbGVtZW50LnR5cGUgPSAidGV4dC9qc29uIjsKKyAgICByZXN1bHRz
X2VsZW1lbnQuaWQgPSAiX190ZXN0aGFybmVzc19fcmVzdWx0c19fIjsKKyAgICB2YXIgdGVzdF9y
ZXN1bHRzID0gdGVzdHMubWFwKGZ1bmN0aW9uKHgpIHsKKyAgICAgICAgcmV0dXJuIHtuYW1lOngu
bmFtZSwgc3RhdHVzOnguc3RhdHVzLCBtZXNzYWdlOngubWVzc2FnZSwgc3RhY2s6eC5zdGFja30K
KyAgICB9KTsKKyAgICB2YXIgZGF0YSA9IHt0ZXN0OndpbmRvdy5sb2NhdGlvbi5ocmVmLAorICAg
ICAgICAgICAgICAgIHRlc3RzOnRlc3RfcmVzdWx0cywKKyAgICAgICAgICAgICAgICBzdGF0dXM6
IHN0YXR1cy5zdGF0dXMsCisgICAgICAgICAgICAgICAgbWVzc2FnZTogc3RhdHVzLm1lc3NhZ2Us
CisgICAgICAgICAgICAgICAgc3RhY2s6IHN0YXR1cy5zdGFja307CisgICAgcmVzdWx0c19lbGVt
ZW50LnRleHRDb250ZW50ID0gSlNPTi5zdHJpbmdpZnkoZGF0YSk7CisKKyAgICAvLyBUbyBhdm9p
ZCBhIEhpZXJhcmNoeVJlcXVlc3RFcnJvciB3aXRoIFhNTCBkb2N1bWVudHMsIGVuc3VyZSB0aGF0
ICdyZXN1bHRzX2VsZW1lbnQnCisgICAgLy8gaXMgaW5zZXJ0ZWQgYXQgYSBsb2NhdGlvbiB0aGF0
IHJlc3VsdHMgaW4gYSB2YWxpZCBkb2N1bWVudC4KKyAgICB2YXIgcGFyZW50ID0gZG9jdW1lbnQu
Ym9keQorICAgICAgICA/IGRvY3VtZW50LmJvZHkgICAgICAgICAgICAgICAgIC8vIDxib2R5PiBp
cyByZXF1aXJlZCBpbiBYSFRNTCBkb2N1bWVudHMKKyAgICAgICAgOiBkb2N1bWVudC5kb2N1bWVu
dEVsZW1lbnQ7ICAgICAvLyBmYWxsYmFjayBmb3Igb3B0aW9uYWwgPGJvZHk+IGluIEhUTUw1LCBT
VkcsIGV0Yy4KKworICAgIHBhcmVudC5hcHBlbmRDaGlsZChyZXN1bHRzX2VsZW1lbnQpOwogfQog
Ci1pZiAoc2VsZi50ZXN0UnVubmVyKSB7Ci0gICAgLyogRGlzYWJsZSB0aGUgZGVmYXVsdCBvdXRw
dXQgb2YgdGVzdGhhcm5lc3MuanMuICBUaGUgZGVmYXVsdCBvdXRwdXQgZm9ybWF0cwotICAgICog
IHRlc3QgcmVzdWx0cyBpbnRvIGFuIEhUTUwgdGFibGUuICBXaGVuIHRoYXQgdGFibGUgaXMgZHVt
cGVkIGFzIHRleHQsIG5vCi0gICAgKiAgc3BhY2luZyBiZXR3ZWVuIGNlbGxzIGlzIHByZXNlcnZl
ZCwgYW5kIGl0IGlzIHRoZXJlZm9yZSBub3QgcmVhZGFibGUuIEJ5Ci0gICAgKiAgc2V0dGluZyBv
dXRwdXQgdG8gZmFsc2UsIHRoZSBIVE1MIHRhYmxlIHdpbGwgbm90IGJlIGNyZWF0ZWQKLSAgICAq
LwotICAgIHNldHVwKHsib3V0cHV0IjogZmFsc2UsICJleHBsaWNpdF90aW1lb3V0IjogdHJ1ZX0p
OwotCi0gICAgLyogIFVzaW5nIGEgY2FsbGJhY2sgZnVuY3Rpb24sIHRlc3QgcmVzdWx0cyB3aWxs
IGJlIGFkZGVkIHRvIHRoZSBwYWdlIGluIGEKLSAgICAqICAgbWFubmVyIHRoYXQgYWxsb3dzIGR1
bXBBc1RleHQgdG8gcHJvZHVjZSByZWFkYWJsZSB0ZXN0IHJlc3VsdHMKLSAgICAqLwotICAgIGFk
ZF9jb21wbGV0aW9uX2NhbGxiYWNrKGZ1bmN0aW9uICh0ZXN0cywgaGFybmVzc19zdGF0dXMpIHsK
LSAgICAgICAgdmFyIHJlc3VsdFN0ciA9ICJcbiI7Ci0KLSAgICAgICAgLy8gU2FuaXRpemVzIHRo
ZSBnaXZlbiB0ZXh0IGZvciBkaXNwbGF5IGluIHRlc3QgcmVzdWx0cy4KLSAgICAgICAgZnVuY3Rp
b24gc2FuaXRpemUodGV4dCkgewotICAgICAgICAgICAgaWYgKCF0ZXh0KSB7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuICIiOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdGV4dCA9IHRleHQu
cmVwbGFjZSgvXDAvZywgIlxcMCIpOwotICAgICAgICAgICAgcmV0dXJuIHRleHQucmVwbGFjZSgv
XHIvZywgIlxcciIpOwotICAgICAgICB9CithZGRfY29tcGxldGlvbl9jYWxsYmFjayhkdW1wX3Rl
c3RfcmVzdWx0cyk7CiAKLSAgICAgICAgaWYoaGFybmVzc19zdGF0dXMuc3RhdHVzICE9IDApCi0g
ICAgICAgICAgICByZXN1bHRTdHIgKz0gIkhhcm5lc3MgRXJyb3IgKCIgKyBjb252ZXJ0UmVzdWx0
KGhhcm5lc3Nfc3RhdHVzLnN0YXR1cykgKyAiKSwgbWVzc2FnZSA9ICIgKyBoYXJuZXNzX3N0YXR1
cy5tZXNzYWdlICsgIlxuXG4iOwotCi0gICAgICAgIC8vIFRydW5jYXRlIGRlY2ltYWwgdmFsdWVz
IGZyb20gb3V0cHV0IGluIHdlYmF1ZGlvIHRlc3RzIHRvIGF2b2lkIHRlc3QgZmxha2luZXNzIGR1
ZSB0byBmbG9hdGluZyBwb2ludCBwcmVjaXNpb24gaXNzdWVzLgotICAgICAgICBjb25zdCBpc1dl
YkF1ZGlvVGVzdCA9IGRvY3VtZW50LlVSTC5pbmRleE9mKCcvd2ViYXVkaW8nKSA+PSAwOwotCi0g
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGVzdHMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAg
ICAgIHZhciBtZXNzYWdlID0gc2FuaXRpemUodGVzdHNbaV0ubWVzc2FnZSk7Ci0gICAgICAgICAg
ICBpZiAodGVzdHNbaV0uc3RhdHVzID09IDEgJiYgIXRlc3RzW2ldLmR1bXBTdGFjaykgewotICAg
ICAgICAgICAgICAgIC8vIFJlbW92ZSBzdGFjayBmb3IgZmFpbGVkIHRlc3RzIGZvciBwcm9wZXIg
c3RyaW5nIGNvbXBhcmlzb24gd2l0aG91dCBmaWxlIHBhdGhzLgotICAgICAgICAgICAgICAgIC8v
IEZvciBhIHRlc3QgdG8gZHVtcCB0aGUgc3RhY2sgc2V0IGl0cyBkdW1wU3RhY2sgYXR0cmlidXRl
IHRvIHRydWUuCi0gICAgICAgICAgICAgICAgdmFyIHN0YWNrSW5kZXggPSBtZXNzYWdlLmluZGV4
T2YoIihzdGFjazoiKTsKLSAgICAgICAgICAgICAgICBpZiAoc3RhY2tJbmRleCA+IDApCi0gICAg
ICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnN1YnN0cigwLCBzdGFja0luZGV4KTsK
LSAgICAgICAgICAgIH0KLSAKLSAgICAgICAgICAgIGxldCB0ZXN0TmFtZSA9IHRlc3RzW2ldLm5h
bWU7Ci0gICAgICAgICAgICBpZiAoaXNXZWJBdWRpb1Rlc3QpIHsKLSAgICAgICAgICAgICAgICAg
IHRlc3ROYW1lID0gdGVzdE5hbWUucmVwbGFjZSgvXFtbMC05LixcLWVdKlswLTldXC5bMC05XXs3
LH1bMC05LixcLWVdKlxdLywgIltleHBlY3RlZCBhcnJheV0iKTsKLSAgICAgICAgICAgICAgICAg
IHRlc3ROYW1lID0gdGVzdE5hbWUucmVwbGFjZSgvWzAtOV1cLlswLTldezcsfS9nLCAobWF0Y2gs
IG9mZnNldCwgc3RyaW5nKSA9PiB7Ci0gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNl
RmxvYXQobWF0Y2gpLnRvRml4ZWQoNik7Ci0gICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAg
ICAgICAgICAgIHRlc3ROYW1lID0gdGVzdE5hbWUucmVwbGFjZSgvIFwoY29udGFpbnMgWzAtOV0r
IGRpZmZlcmVudCB2YWx1ZXNcKS4vLCAiLiIpOwotICAgICAgICAgICAgICAgICAgdGVzdE5hbWUg
PSB0ZXN0TmFtZS5yZXBsYWNlKC8gXChjb250YWlucyAxIGRpZmZlcmVudCB2YWx1ZVwpLi8sICIu
Iik7Ci0gICAgICAgICAgICAgICAgICB0ZXN0TmFtZSA9IHRlc3ROYW1lLnJlcGxhY2UoLzogQWN0
dWFsIFRhaWwgRnJhbWUgWzAtOV0rIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBbMC05XSsu
LywgIi4iKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcmVzdWx0U3RyICs9IGNvbnZl
cnRSZXN1bHQodGVzdHNbaV0uc3RhdHVzKSArICIgIiArIHNhbml0aXplKHRlc3ROYW1lKSArICIg
IiArIG1lc3NhZ2UgKyAiXG4iOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIHJlc3VsdHMgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLCAi
cHJlIik7Ci0gICAgICAgIHJlc3VsdHMuaW5uZXJUZXh0ID0gcmVzdWx0U3RyOwotCi0gICAgICAg
IHZhciBsb2cgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIik7Ci0gICAgICAgIGlmIChs
b2cpCi0gICAgICAgICAgICBsb2cuYXBwZW5kQ2hpbGQocmVzdWx0cyk7Ci0gICAgICAgIGVsc2Ug
aWYgKGRvY3VtZW50LmJvZHkpCi0gICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxk
KHJlc3VsdHMpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHZhciByb290ID0gZG9jdW1l
bnQuZG9jdW1lbnRFbGVtZW50OwotICAgICAgICAgICAgdmFyIGlzX2h0bWwgPSByb290Ci0gICAg
ICAgICAgICAgICAgICAgICYmIHJvb3QubmFtZXNwYWNlVVJJID09ICJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hodG1sIgotICAgICAgICAgICAgICAgICAgICAmJiByb290LmxvY2FsTmFtZSA9PSAi
aHRtbCI7Ci0gICAgICAgICAgICB2YXIgaXNfc3ZnID0gZG9jdW1lbnQuZGVmYXVsdFZpZXcKLSAg
ICAgICAgICAgICAgICAgICAgJiYgIlNWR1NWR0VsZW1lbnQiIGluIGRvY3VtZW50LmRlZmF1bHRW
aWV3Ci0gICAgICAgICAgICAgICAgICAgICYmIHJvb3QgaW5zdGFuY2VvZiBkb2N1bWVudC5kZWZh
dWx0Vmlldy5TVkdTVkdFbGVtZW50OwotCi0gICAgICAgICAgICBpZiAoaXNfc3ZnKSB7Ci0gICAg
ICAgICAgICAgICAgdmFyIGZvcmVpZ25PYmplY3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgImZvcmVpZ25PYmplY3QiKTsKLSAgICAgICAg
ICAgICAgICBmb3JlaWduT2JqZWN0LnNldEF0dHJpYnV0ZSgid2lkdGgiLCAiMTAwJSIpOwotICAg
ICAgICAgICAgICAgIGZvcmVpZ25PYmplY3Quc2V0QXR0cmlidXRlKCJoZWlnaHQiLCAiMTAwJSIp
OwotICAgICAgICAgICAgICAgIHJvb3QuYXBwZW5kQ2hpbGQoZm9yZWlnbk9iamVjdCk7Ci0gICAg
ICAgICAgICAgICAgZm9yZWlnbk9iamVjdC5hcHBlbmRDaGlsZChyZXN1bHRzKTsKLSAgICAgICAg
ICAgIH0gZWxzZSBpZiAoaXNfaHRtbCkgewotICAgICAgICAgICAgICAgIHJvb3QuYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1s
IiwgImJvZHkiKSkKLSAgICAgICAgICAgICAgICAgICAgLmFwcGVuZENoaWxkKHJlc3VsdHMpOwot
ICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICByb290LmFwcGVuZENoaWxkKHJl
c3VsdHMpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLy8gV2FpdCBmb3Ig
YW55IG90aGVyIGNvbXBsZXRpb24gY2FsbGJhY2tzLCB3aGljaCBtYXkgZWxpbWluYXRlIHRlc3Qg
ZWxlbWVudHMKLSAgICAgICAgLy8gZnJvbSB0aGUgcGFnZSBhbmQgdGhlcmVmb3JlIHJlZHVjZSB0
aGUgb3V0cHV0LgotICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAg
IHRlc3RSdW5uZXIuZm9yY2VJbW1lZGlhdGVDb21wbGV0aW9uKCk7Ci0gICAgICAgIH0sIDApOwot
ICAgIH0pOworLyogSWYgdGhlIHBhcmVudCB3aW5kb3cgaGFzIGEgdGVzdGhhcm5lc3NfcHJvcGVy
dGllcyBvYmplY3QsCisgKiB3ZSB1c2UgdGhpcyB0byBwcm92aWRlIHRoZSB0ZXN0IHNldHRpbmdz
LiBUaGlzIGlzIHVzZWQgYnkgdGhlCisgKiBkZWZhdWx0IGluLWJyb3dzZXIgcnVubmVyIHRvIGNv
bmZpZ3VyZSB0aGUgdGltZW91dCBhbmQgdGhlCisgKiByZW5kZXJpbmcgb2YgcmVzdWx0cworICov
Cit0cnkgeworICAgIGlmICh3aW5kb3cub3BlbmVyICYmICJ0ZXN0aGFybmVzc19wcm9wZXJ0aWVz
IiBpbiB3aW5kb3cub3BlbmVyKSB7CisgICAgICAgIC8qIElmIHdlIHBhc3MgdGhlIHRlc3RoYXJu
ZXNzX3Byb3BlcnRpZXMgb2JqZWN0IGFzLWlzIGhlcmUgd2l0aG91dAorICAgICAgICAgKiBKU09O
IHN0cmluZ2lmeWluZyBhbmQgcmVwYXJzaW5nIGl0LCBJRSBmYWlscyAmIGVtaXRzIHRoZSBtZXNz
YWdlCisgICAgICAgICAqICJDb3VsZCBub3QgY29tcGxldGUgdGhlIG9wZXJhdGlvbiBkdWUgdG8g
ZXJyb3IgODA3MDAwMTkiLgorICAgICAgICAgKi8KKyAgICAgICAgc2V0dXAoSlNPTi5wYXJzZShK
U09OLnN0cmluZ2lmeSh3aW5kb3cub3BlbmVyLnRlc3RoYXJuZXNzX3Byb3BlcnRpZXMpKSk7Cisg
ICAgfQorfSBjYXRjaCAoZSkgewogfQorLy8gdmltOiBzZXQgZXhwYW5kdGFiIHNoaWZ0d2lkdGg9
NCB0YWJzdG9wPTQ6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449648</attachid>
            <date>2022-01-21 03:21:57 -0800</date>
            <delta_ts>2022-01-27 03:12:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235398-20220121132154.patch</filename>
            <type>text/plain</type>
            <size>462914</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4MTEyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMWZiZjI2NzE2OGY1M2UyZmY1MmIx
NmVmODIxN2M0YzMyZGY4MTE1ZC4uMTFkMjFmNWQ2YzBiMmIxOGM1ZmU2NzU3MGFkZDAwMmRmNGQx
MTVkZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDIyLTAxLTIwICBLaW1tbyBLaW5udW5lbiAg
PGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgVXBkYXRlIExheW91dFRlc3RzL3Jlc291
cmNlcy90ZXN0aGFybmVzcy5qcyB0byAyMDIxLTYtMjQgdmVyc2lvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1Mzk4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ29weSB0ZXN0aGFybmVzcy5qcywgdGVz
dGhhcm5lc3NyZXBvcnQuanMgZnJvbSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzCisg
ICAgICAgIERlbGV0ZSB0ZXN0aGFybmVzcy5jc3MsIGl0IGlzIG5vdyBidW5kbGVkIGluIHRlc3Ro
YXJuZXNzLmpzLgorCisgICAgICAgICogZWRpdGluZy90ZXh0LWl0ZXJhdG9yL2NvdW50LW1hdGNo
ZXMtaW4tZnJhbWVzLmh0bWw6CisgICAgICAgICogZWRpdGluZy90ZXh0LWl0ZXJhdG9yL2hpZGRl
bi10ZXh0YXJlYS1zZWxlY3Rpb24tcXVpcmsuaHRtbDoKKyAgICAgICAgKiBmYXN0L2N1c3RvbS1l
bGVtZW50cy9kZWZpbmVkLXBzZXVkby1jbGFzcy5odG1sOgorICAgICAgICBTdG9wIHVzaW5nIHRl
c3RoYXJuZXNzLmNzcworCisgICAgICAgICogcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmNzczogUmVt
b3ZlZC4KKyAgICAgICAgQnVuZGxlZCBpbiAuanMgbm93LgorCisgICAgICAgICogcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzLmpzOgorICAgICAgICAoV2luZG93VGVzdEVudmlyb25tZW50KToKKyAgICAg
ICAgKFdpbmRvd1Rlc3RFbnZpcm9ubWVudC5wcm90b3R5cGUuX2Rpc3BhdGNoKToKKyAgICAgICAg
KFdpbmRvd1Rlc3RFbnZpcm9ubWVudC5wcm90b3R5cGUub25fdGVzdHNfcmVhZHkpOgorICAgICAg
ICAoV29ya2VyVGVzdEVudmlyb25tZW50LnByb3RvdHlwZS5vbl90ZXN0c19yZWFkeSk6CisgICAg
ICAgIChjcmVhdGVfdGVzdF9lbnZpcm9ubWVudCk6CisgICAgICAgIChnZXRfdGVzdF9uYW1lKToK
KyAgICAgICAgKHRlc3QpOgorICAgICAgICAoYXN5bmNfdGVzdCk6CisgICAgICAgIChwcm9taXNl
X3Rlc3QpOgorICAgICAgICAocHJvbWlzZV9yZWplY3RzX2pzKToKKyAgICAgICAgKHByb21pc2Vf
cmVqZWN0c19kb20pOgorICAgICAgICAocHJvbWlzZV9yZWplY3RzX2V4YWN0bHkpOgorICAgICAg
ICAocHJvbWlzZV9zZXR1cCk6CisgICAgICAgIChkb25lKToKKyAgICAgICAgKGZvcm1hdF92YWx1
ZSk6CisgICAgICAgICogcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzOgorICAgICAgICAo
ZHVtcF90ZXN0X3Jlc3VsdHMpOgorICAgICAgICAoY2F0Y2gpOgorICAgICAgICAoY29udmVydFJl
c3VsdCk6IERlbGV0ZWQuCisgICAgICAgIChzZWxmLnRlc3RSdW5uZXIuYWRkX2NvbXBsZXRpb25f
Y2FsbGJhY2suc2FuaXRpemUpOiBEZWxldGVkLgorICAgICAgICAoc2VsZi50ZXN0UnVubmVyLmFk
ZF9jb21wbGV0aW9uX2NhbGxiYWNrKTogRGVsZXRlZC4KKwogMjAyMi0wMS0xOCAgS2ltbW8gS2lu
bnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBXZWJHTCBH
UFUgYnVmZmVyIHRleHR1cmUgdXBsb2FkIHBhdGggZm9yIENvY29hIGdldFVzZXJNZWRpYSBjYW1l
cmEgc3RyZWFtcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzLWN1c3RvbS1wcm9wZXJ0aWVz
LWFwaS9yZWdpc3RlclByb3BlcnR5Lmh0bWwgYi9MYXlvdXRUZXN0cy9jc3MtY3VzdG9tLXByb3Bl
cnRpZXMtYXBpL3JlZ2lzdGVyUHJvcGVydHkuaHRtbAppbmRleCA5MTZkNGI0OTQwMzRmMmIxZGJm
YzBhZjIzNWIxNDQyYzlhMTI0ODI1Li43YjkyNDAzNTI1ZDMyMzIyYzBjNTU5MGFlYTg2N2E4NTI2
MGNkNWRmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9jc3MtY3VzdG9tLXByb3BlcnRpZXMtYXBp
L3JlZ2lzdGVyUHJvcGVydHkuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9jc3MtY3VzdG9tLXByb3Bl
cnRpZXMtYXBpL3JlZ2lzdGVyUHJvcGVydHkuaHRtbApAQCAtNiwxMiArNiwxMiBAQAogPHNjcmlw
dD4KIC8vIFRlc3RzIGZvciBlcnJvciBjaGVja2luZyBkdXJpbmcgcHJvcGVydHkgcmVnaXN0cmF0
aW9uCiB0ZXN0KGZ1bmN0aW9uKCkgewotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigp
LCAoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSgpKTsKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBU
eXBlRXJyb3IoKSwgKCkgPT4gQ1NTLnJlZ2lzdGVyUHJvcGVydHkodW5kZWZpbmVkKSk7Ci0gICAg
YXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IENTUy5yZWdpc3RlclByb3BlcnR5
KHRydWUpKTsKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gQ1NTLnJl
Z2lzdGVyUHJvcGVydHkoMikpOwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAo
KSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSgiY3NzIikpOwotICAgIGFzc2VydF90aHJvd3MobmV3
IFR5cGVFcnJvcigpLCAoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eShudWxsKSk7CisgICAgYXNz
ZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IENTUy5yZWdpc3RlclByb3BlcnR5KCkpOwor
ICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0
eSh1bmRlZmluZWQpKTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gQ1NT
LnJlZ2lzdGVyUHJvcGVydHkodHJ1ZSkpOworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9y
LCAoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSgyKSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhU
eXBlRXJyb3IsICgpID0+IENTUy5yZWdpc3RlclByb3BlcnR5KCJjc3MiKSk7CisgICAgYXNzZXJ0
X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IENTUy5yZWdpc3RlclByb3BlcnR5KG51bGwpKTsK
IH0sICJyZWdpc3RlclByb3BlcnR5IHJlcXVpcmVzIGEgRGljdGlvbmFyeSB0eXBlIik7CiB0ZXN0
KGZ1bmN0aW9uKCkgewogICAgIC8vIFZhbGlkIHByb3BlcnR5IG5hbWVzLCBzaG91bGRuJ3QgdGhy
b3cKQEAgLTE5LDE5ICsxOSwxOSBAQCB0ZXN0KGZ1bmN0aW9uKCkgewogICAgIENTUy5yZWdpc3Rl
clByb3BlcnR5KHtuYW1lOiAnLS1uYW1lMiwgbm8gbmVlZCBmb3IgZXNjYXBlcycsIGluaGVyaXRz
OiBmYWxzZX0pOwogICAgIENTUy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiBbJy0tbmFtZScsIDNd
LCBpbmhlcml0czogZmFsc2V9KTsKICAgICAvLyBJbnZhbGlkIHByb3BlcnR5IG5hbWVzCi0gICAg
YXNzZXJ0X3Rocm93cyhuZXcgU3ludGF4RXJyb3IoKSwgKCkgPT4gQ1NTLnJlZ2lzdGVyUHJvcGVy
dHkoe25hbWU6ICduby1sZWFkaW5nLWRhc2gnLCBpbmhlcml0czogZmFsc2V9KSk7Ci0gICAgYXNz
ZXJ0X3Rocm93cyhuZXcgU3ludGF4RXJyb3IoKSwgKCkgPT4gQ1NTLnJlZ2lzdGVyUHJvcGVydHko
e25hbWU6ICcnLCBpbmhlcml0czogZmFsc2V9KSk7Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgU3lu
dGF4RXJyb3IoKSwgKCkgPT4gQ1NTLnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6ICdcXC0tbmFtZScs
IGluaGVyaXRzOiBmYWxzZX0pKTsKKyAgICBhc3NlcnRfdGhyb3dzX2RvbSgnU3ludGF4RXJyb3In
LCAoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTogJ25vLWxlYWRpbmctZGFzaCcsIGlu
aGVyaXRzOiBmYWxzZX0pKTsKKyAgICBhc3NlcnRfdGhyb3dzX2RvbSgnU3ludGF4RXJyb3InLCAo
KSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTogJycsIGluaGVyaXRzOiBmYWxzZX0pKTsK
KyAgICBhc3NlcnRfdGhyb3dzX2RvbSgnU3ludGF4RXJyb3InLCAoKSA9PiBDU1MucmVnaXN0ZXJQ
cm9wZXJ0eSh7bmFtZTogJ1xcLS1uYW1lJywgaW5oZXJpdHM6IGZhbHNlfSkpOwogfSwgInJlZ2lz
dGVyUHJvcGVydHkgcmVxdWlyZXMgYSBuYW1lIG1hdGNoaW5nIDxjdXN0b20tcHJvcGVydHktbmFt
ZT4iKTsKIHRlc3QoZnVuY3Rpb24oKSB7CiAgICAgQ1NTLnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6
ICctLXN5bnRheC10ZXN0LTEnLCBpbmhlcml0czogZmFsc2UsIHN5bnRheDogJyonfSk7CiAgICAg
Q1NTLnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6ICctLXN5bnRheC10ZXN0LTInLCBpbmhlcml0czog
ZmFsc2UsIHN5bnRheDogJyAqICd9KTsKICAgICBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTog
Jy0tc3ludGF4LXRlc3QtMycsIGluaGVyaXRzOiBmYWxzZSwgaW5pdGlhbFZhbHVlOiAnNTAwcHgn
fSk7Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IENTUy5yZWdpc3Rl
clByb3BlcnR5KHt9KSk7Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+
IENTUy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiAnLS1uby1pbmhlcml0cyd9KSk7Ci0gICAgYXNz
ZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IENTUy5yZWdpc3RlclByb3BlcnR5KHtp
bmhlcml0czogZmFsc2V9KSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+
IENTUy5yZWdpc3RlclByb3BlcnR5KHt9KSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJy
b3IsICgpID0+IENTUy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiAnLS1uby1pbmhlcml0cyd9KSk7
CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IENTUy5yZWdpc3RlclByb3Bl
cnR5KHtpbmhlcml0czogZmFsc2V9KSk7CiAgICAgLy8gUmVwZWF0ZWQgbmFtZQotICAgIGFzc2Vy
dF90aHJvd3MoRE9NRXhjZXB0aW9uLklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUiwKKyAgICBhc3Nl
cnRfdGhyb3dzX2RvbShET01FeGNlcHRpb24uSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSLAogICAg
ICAgICAoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTogJy0tc3ludGF4LXRlc3QtMycs
IGluaGVyaXRzOiBmYWxzZSwgaW5pdGlhbFZhbHVlOiAnNTAwcHgnfSkpOwogfSwgInJlZ2lzdGVy
UHJvcGVydHkgYWx3YXlzIGFsbG93cyBvbWl0dGluZyBpbml0aWFsVmFsdWUgYW5kIHN5bnRheCwg
cmVxdWlyZXMgbmFtZSBhbmQgaW5oZXJpdHMiKTsKIHRlc3QoZnVuY3Rpb24oKSB7CkBAIC00Miwx
MSArNDIsMTEgQEAgdGVzdChmdW5jdGlvbigpIHsKICAgQ1NTLnJlZ2lzdGVyUHJvcGVydHkoe25h
bWU6ICctLWluaXRpYWx2YWx1ZS10ZXN0LTAnLCBpbmhlcml0czogZmFsc2UsIHN5bnRheDogJzxs
ZW5ndGg+JywgaW5pdGlhbFZhbHVlOiAnY2FsYygxMHB4ICsgMTBpbiknfSk7CiAgIGFzc2VydF9l
cXVhbHMod2luZG93LmdldENvbXB1dGVkU3R5bGUoZWwpLmdldFByb3BlcnR5VmFsdWUoJy0taW5p
dGlhbHZhbHVlLXRlc3QtMCcpLnRvU3RyaW5nKCksICc5NzBweCcpOwogCi0gIGFzc2VydF90aHJv
d3MobmV3IFN5bnRheEVycm9yKCksCisgIGFzc2VydF90aHJvd3NfZG9tKCdTeW50YXhFcnJvcics
CiAgICAgKCkgPT4gQ1NTLnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6ICctLWluaXRpYWx2YWx1ZS10
ZXN0LTEnLCBpbmhlcml0czogZmFsc2UsIHN5bnRheDogJzxsZW5ndGg+JywgaW5pdGlhbFZhbHVl
OiAnMTBlbSd9KSk7Ci0gIGFzc2VydF90aHJvd3MobmV3IFN5bnRheEVycm9yKCksCisgIGFzc2Vy
dF90aHJvd3NfZG9tKCdTeW50YXhFcnJvcicsCiAgICAgKCkgPT4gQ1NTLnJlZ2lzdGVyUHJvcGVy
dHkoe25hbWU6ICctLWluaXRpYWx2YWx1ZS10ZXN0LTInLCBpbmhlcml0czogZmFsc2UsIHN5bnRh
eDogJzxsZW5ndGg+JywgaW5pdGlhbFZhbHVlOiAnY2FsYygxMHB4ICsgMTBlbSknfSkpOwotICBh
c3NlcnRfdGhyb3dzKG5ldyBTeW50YXhFcnJvcigpLAorICBhc3NlcnRfdGhyb3dzX2RvbSgnU3lu
dGF4RXJyb3InLAogICAgICgpID0+IENTUy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiAnLS1pbml0
aWFsdmFsdWUtdGVzdC0zJywgaW5oZXJpdHM6IGZhbHNlLCBzeW50YXg6ICc8bGVuZ3RoPicsIGlu
aXRpYWxWYWx1ZTogJ2NhbGMoMTBweCArIDEwJSknfSkpOwogfSwgInJlZ2lzdGVyUHJvcGVydHkg
cmVxdWlyZXMgaW5pdGlhbFZhbHVlIHRvIGJlIGNvbXB1dGF0aW9uYWxseSBpbmRlcGVuZGVudCIp
OwogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3RleHQtaXRlcmF0
b3IvY291bnQtbWF0Y2hlcy1pbi1mcmFtZXMuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvdGV4
dC1pdGVyYXRvci9jb3VudC1tYXRjaGVzLWluLWZyYW1lcy5odG1sCmluZGV4IDE5ZGQwNTFmNWM3
YmExMjlhNmM0ZjdlMWNlN2MyZGExMzU4ODg5YTEuLmFhYzNjM2QyNDIzZjMzNTQyOWE5ZDliYzY1
YmFiMTkxZTkzZmFhOGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvdGV4dC1pdGVy
YXRvci9jb3VudC1tYXRjaGVzLWluLWZyYW1lcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2VkaXRp
bmcvdGV4dC1pdGVyYXRvci9jb3VudC1tYXRjaGVzLWluLWZyYW1lcy5odG1sCkBAIC00LDcgKzQs
NiBAQAogPHRpdGxlPlRleHQgc2VhcmNoIGZyb20gZnJhbWVzPC90aXRsZT4KIDxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08bGluayBy
ZWw9J3N0eWxlc2hlZXQnIGhyZWY9Jy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5jc3MnPgog
PC9oZWFkPgogPGJvZHk+CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvdGV4dC1p
dGVyYXRvci9oaWRkZW4tdGV4dGFyZWEtc2VsZWN0aW9uLXF1aXJrLmh0bWwgYi9MYXlvdXRUZXN0
cy9lZGl0aW5nL3RleHQtaXRlcmF0b3IvaGlkZGVuLXRleHRhcmVhLXNlbGVjdGlvbi1xdWlyay5o
dG1sCmluZGV4IDNjOWE5ZTJhZDBjN2M3MTIyYmQ1YmQxZmQ4YzY3YzA5NjdiYzgyZTAuLjcyNjZl
YTNjODYwNzdjYmNkMTU1ZjlkODJiOTBmODk3MzMxNzQyZDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2VkaXRpbmcvdGV4dC1pdGVyYXRvci9oaWRkZW4tdGV4dGFyZWEtc2VsZWN0aW9uLXF1aXJr
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy90ZXh0LWl0ZXJhdG9yL2hpZGRlbi10ZXh0
YXJlYS1zZWxlY3Rpb24tcXVpcmsuaHRtbApAQCAtNCw3ICs0LDYgQEAKIDx0aXRsZT5TZWxlY3Rp
b25zIGluIGhpZGRlbiBlbGVtZW50czwvdGl0bGU+CiA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPGxpbmsgcmVsPSdzdHlsZXNoZWV0
JyBocmVmPScuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuY3NzJz4KIDwvaGVhZD4KIDxib2R5
PgogPHN0eWxlPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvd2Vi
Z2wyL2JpbmRpbmdzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC93ZWJnbDIv
YmluZGluZ3MuaHRtbAppbmRleCBiYzVmYjQ2MWFiMGY2Mjc5ZGYyM2M0OTFiZmU1YjhkMWJlZTg0
ZTdjLi42NDA0ZjRkMjZiNjg4ZjY1MDMxODljNzA2MTZiZWY2NGE4ODAzNDRkIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC93ZWJnbDIvYmluZGluZ3MuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC93ZWJnbDIvYmluZGluZ3MuaHRtbApAQCAt
NDgsNyArNDgsNyBAQCBzZXR1cChmdW5jdGlvbigpIHsKIAogZm9yICh2YXIgW21ldGhvZCwgYXJn
cywgbmFtZV0gb2YgZXJyb3JfbWV0aG9kcykgewogICB0ZXN0KGZ1bmN0aW9uKCkgewotICAgIGFz
c2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBjb250ZXh0W21ldGhvZF0oLi4uYXJn
cykpOworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBjb250ZXh0W21ldGhv
ZF0oLi4uYXJncykpOwogICB9LCBuYW1lKTsKIH0KIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvZGVmaW5lZC1wc2V1ZG8tY2xhc3MuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL2RlZmluZWQtcHNldWRvLWNsYXNzLmh0
bWwKaW5kZXggMDYyMGZjZDM3MGFmMjNhNWEyOTlmMzBiMjhiYzkxMGJhOTRiYWE3NS4uMGMwYzNi
MDhhMmFiODEyZjZiYTg2M2M1MDNhNDZiYzg5YjVkZmE1ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvZmFzdC9jdXN0b20tZWxlbWVudHMvZGVmaW5lZC1wc2V1ZG8tY2xhc3MuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9kZWZpbmVkLXBzZXVkby1jbGFzcy5odG1s
CkBAIC02LDcgKzYsNiBAQAogPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL3czYy5naXRo
dWIuaW8vd2ViY29tcG9uZW50cy9zcGVjL2N1c3RvbS8jdGhlLWRlZmluZWQtZWxlbWVudC1wc2V1
ZG8tY2xhc3MtZGVmaW5lZCI+CiA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5l
c3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPGxpbmsgcmVsPSdzdHlsZXNoZWV0JyBocmVmPScuLi8u
Li9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuY3NzJz4KIDwvaGVhZD4KIDxib2R5PgogPGRpdiBpZD0i
bG9nIj48L2Rpdj4KQEAgLTEwNSwyOCArMTA0LDMwIEBAIHRlc3QoZnVuY3Rpb24gKCkgewogCiB0
ZXN0KGZ1bmN0aW9uICgpIHsKICAgICB2YXIgbWF0Y2hJbnNpZGVDb25zdHJ1Y3RvciA9IGZhbHNl
OworICAgIGNvbnN0IHRoZUV4Y2VwdGlvbiA9IHtuYW1lOiAnYmFkJ307CiAgICAgY2xhc3MgVGhy
b3dzRXhjZXB0aW9uIGV4dGVuZHMgSFRNTEVsZW1lbnQgewogICAgICAgICBjb25zdHJ1Y3Rvcigp
IHsKICAgICAgICAgICAgIHN1cGVyKCk7CiAgICAgICAgICAgICBtYXRjaEluc2lkZUNvbnN0cnVj
dG9yID0gdGhpcy5tYXRjaGVzKCc6ZGVmaW5lZCcpOwotICAgICAgICAgICAgdGhyb3cge25hbWU6
ICdiYWQnfTsKKyAgICAgICAgICAgIHRocm93IHRoZUV4Y2VwdGlvbjsKICAgICAgICAgfQogICAg
IH07CiAgICAgY3VzdG9tRWxlbWVudHMuZGVmaW5lKCd0aHJvd3MtZXhjZXB0aW9uJywgVGhyb3dz
RXhjZXB0aW9uKTsKICAgICB2YXIgaW5zdGFuY2U7Ci0gICAgYXNzZXJ0X3Rocm93cyh7bmFtZTog
J2JhZCd9LCBmdW5jdGlvbiAoKSB7IGluc3RhbmNlID0gbmV3IFRocm93c0V4Y2VwdGlvbjsgfSk7
CisgICAgYXNzZXJ0X3Rocm93c19leGFjdGx5KHRoZUV4Y2VwdGlvbiwgZnVuY3Rpb24gKCkgeyBp
bnN0YW5jZSA9IG5ldyBUaHJvd3NFeGNlcHRpb247IH0pOwogICAgIGFzc2VydF90cnVlKG1hdGNo
SW5zaWRlQ29uc3RydWN0b3IpOwogfSwgJ1RoZSBkZWZpbmVkIGZsYWcgb2YgYSBjdXN0b20gZWxl
bWVudCBtdXN0IGJlIHNldCBpbnNpZGUgYSBjb25zdHJ1Y3RvciB3aGVuIGNvbnN0cnVjdGluZyBh
IGN1c3RvbSBlbGVtZW50IHN5bmNocm9ub3VzbHknCiAgICAgKyAnIGV2ZW4gaWYgdGhlIGNvbnN0
cnVjdG9yIHRocmV3IGFuIGV4Y2VwdGlvbiBsYXRlcicpOwogCiB0ZXN0KGZ1bmN0aW9uICgpIHsK
ICAgICB2YXIgaW5zdGFuY2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0aHJvd3MtZXhjZXB0
aW9uLTInKTsKKyAgICBjb25zdCB0aGVFeGNlcHRpb24gPSB7bmFtZTogJ2JhZCd9OwogICAgIGRv
Y3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaW5zdGFuY2UpOwogICAgIHZhciB1bmNhdWdodEVycm9y
OwogICAgIHdpbmRvdy5vbmVycm9yID0gZnVuY3Rpb24gKG1lc3NhZ2UsIHVybCwgbGluZU51bWJl
ciwgY29sdW1uTnVtYmVyLCBlcnJvcikgeyB1bmNhdWdodEVycm9yID0gZXJyb3I7IHJldHVybiB0
cnVlOyB9CiAgICAgY3VzdG9tRWxlbWVudHMuZGVmaW5lKCd0aHJvd3MtZXhjZXB0aW9uLTInLCBj
bGFzcyBleHRlbmRzIEhUTUxFbGVtZW50IHsKICAgICAgICAgY29uc3RydWN0b3IoKSB7Ci0gICAg
ICAgICAgICB0aHJvdyB7bmFtZTogJ2JhZCd9OworICAgICAgICAgICAgdGhyb3cgdGhlRXhjZXB0
aW9uOwogICAgICAgICB9CiAgICAgfSk7CiAgICAgYXNzZXJ0X2VxdWFscyh1bmNhdWdodEVycm9y
Lm5hbWUsICdiYWQnKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1l
bnRzL3Rocm93LW9uLWR5bmFtaWMtbWFya3VwLWluc2VydGlvbi1jb3VudGVyLWNvbnN0cnVjdC5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvdGhyb3ctb24tZHluYW1pYy1t
YXJrdXAtaW5zZXJ0aW9uLWNvdW50ZXItY29uc3RydWN0Lmh0bWwKaW5kZXggNmYzYmFlODNmMmVk
YmM4MDUwMTI0MWNjZmUzZmQ3ZTc5MjQ5ZDJiMS4uZTEwMjM0YjIzOTVmOGYxNDliMWQ1MTAwNWQ1
ODhlY2NjOTA0ZTBkNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVu
dHMvdGhyb3ctb24tZHluYW1pYy1tYXJrdXAtaW5zZXJ0aW9uLWNvdW50ZXItY29uc3RydWN0Lmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvdGhyb3ctb24tZHluYW1p
Yy1tYXJrdXAtaW5zZXJ0aW9uLWNvdW50ZXItY29uc3RydWN0Lmh0bWwKQEAgLTQ1LDEyICs0NSwx
MiBAQCBhc3luYyBmdW5jdGlvbiBjb25zdHJ1Y3RfY3VzdG9tX2VsZW1lbnRfaW5fcGFyc2VyKHRl
c3QsIGNhbGxfZnVuY3Rpb24pCiAKIHByb21pc2VfdGVzdChhc3luYyBmdW5jdGlvbiAoKSB7CiAg
ICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgY29uc3RydWN0X2N1c3RvbV9lbGVtZW50X2luX3BhcnNl
cih0aGlzLCAoZG9jdW1lbnQpID0+IGRvY3VtZW50Lm9wZW4oKSk7Ci0gICAgYXNzZXJ0X3Rocm93
cyh7bmFtZTogJ0ludmFsaWRTdGF0ZUVycm9yJ30sICgpID0+IHsgdGhyb3cgcmVzdWx0LmV4Y2Vw
dGlvbjsgfSwgJ011c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3InKTsKKyAgICBhc3NlcnRf
dGhyb3dzX2RvbSgnSW52YWxpZFN0YXRlRXJyb3InLCByZXN1bHQud2luZG93LkRPTUV4Y2VwdGlv
biwgKCkgPT4geyB0aHJvdyByZXN1bHQuZXhjZXB0aW9uOyB9LCAnTXVzdCB0aHJvdyBhbiBJbnZh
bGlkU3RhdGVFcnJvcicpOwogfSwgJ2RvY3VtZW50Lm9wZW4oKSBtdXN0IHRocm93IGFuIEludmFs
aWRTdGF0ZUVycm9yIHdoZW4gc3luY2hyb25vdXNseSBjb25zdHJ1Y3RpbmcgYSBjdXN0b20gZWxl
bWVudCcpOwogCiBwcm9taXNlX3Rlc3QoYXN5bmMgZnVuY3Rpb24gKCkgewogICAgIGNvbnN0IHJl
c3VsdCA9IGF3YWl0IGNvbnN0cnVjdF9jdXN0b21fZWxlbWVudF9pbl9wYXJzZXIodGhpcywgKGRv
Y3VtZW50KSA9PiBkb2N1bWVudC5vcGVuKCd0ZXh0L2h0bWwnKSk7Ci0gICAgYXNzZXJ0X3Rocm93
cyh7bmFtZTogJ0ludmFsaWRTdGF0ZUVycm9yJ30sICgpID0+IHsgdGhyb3cgcmVzdWx0LmV4Y2Vw
dGlvbjsgfSwgJ011c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3InKTsKKyAgICBhc3NlcnRf
dGhyb3dzX2RvbSgnSW52YWxpZFN0YXRlRXJyb3InLCByZXN1bHQud2luZG93LkRPTUV4Y2VwdGlv
biwgKCkgPT4geyB0aHJvdyByZXN1bHQuZXhjZXB0aW9uOyB9LCAnTXVzdCB0aHJvdyBhbiBJbnZh
bGlkU3RhdGVFcnJvcicpOwogfSwgJ2RvY3VtZW50Lm9wZW4oInRleHQvaHRtbCIpIG11c3QgdGhy
b3cgYW4gSW52YWxpZFN0YXRlRXJyb3Igd2hlbiBzeW5jaHJvbm91c2x5IGNvbnN0cnVjdGluZyBh
IGN1c3RvbSBlbGVtZW50Jyk7CiAKIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVs
dGlwYWdlL2R5bmFtaWMtbWFya3VwLWluc2VydGlvbi5odG1sI2RvbS1kb2N1bWVudC1vcGVuLXdp
bmRvdwpAQCAtNjMsMTkgKzYzLDE5IEBAIHByb21pc2VfdGVzdChhc3luYyBmdW5jdGlvbiAoKSB7
CiAKIHByb21pc2VfdGVzdChhc3luYyBmdW5jdGlvbiAoKSB7CiAgICAgY29uc3QgcmVzdWx0ID0g
YXdhaXQgY29uc3RydWN0X2N1c3RvbV9lbGVtZW50X2luX3BhcnNlcih0aGlzLCAoZG9jdW1lbnQp
ID0+IGRvY3VtZW50LmNsb3NlKCkpOwotICAgIGFzc2VydF90aHJvd3Moe25hbWU6ICdJbnZhbGlk
U3RhdGVFcnJvcid9LCAoKSA9PiB7IHRocm93IHJlc3VsdC5leGNlcHRpb247IH0sICdNdXN0IHRo
cm93IGFuIEludmFsaWRTdGF0ZUVycm9yJyk7CisgICAgYXNzZXJ0X3Rocm93c19kb20oJ0ludmFs
aWRTdGF0ZUVycm9yJywgcmVzdWx0LndpbmRvdy5ET01FeGNlcHRpb24sICgpID0+IHsgdGhyb3cg
cmVzdWx0LmV4Y2VwdGlvbjsgfSwgJ011c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3InKTsK
IH0sICdkb2N1bWVudC5jbG9zZSgpIG11c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3Igd2hl
biBzeW5jaHJvbm91c2x5IGNvbnN0cnVjdGluZyBhIGN1c3RvbSBlbGVtZW50Jyk7CiAKIHByb21p
c2VfdGVzdChhc3luYyBmdW5jdGlvbiAoKSB7CiAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgY29u
c3RydWN0X2N1c3RvbV9lbGVtZW50X2luX3BhcnNlcih0aGlzLCAoZG9jdW1lbnQpID0+IGRvY3Vt
ZW50LndyaXRlKCc8Yj5zb21lIHRleHQ8L2I+JykpOwotICAgIGFzc2VydF90aHJvd3Moe25hbWU6
ICdJbnZhbGlkU3RhdGVFcnJvcid9LCAoKSA9PiB7IHRocm93IHJlc3VsdC5leGNlcHRpb247IH0s
ICdNdXN0IHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yJyk7CisgICAgYXNzZXJ0X3Rocm93c19k
b20oJ0ludmFsaWRTdGF0ZUVycm9yJywgcmVzdWx0LndpbmRvdy5ET01FeGNlcHRpb24sICgpID0+
IHsgdGhyb3cgcmVzdWx0LmV4Y2VwdGlvbjsgfSwgJ011c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRl
RXJyb3InKTsKICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdC5kb2N1bWVudC5xdWVyeVNlbGVjdG9y
KCdiJyksIG51bGwsICdNdXN0IG5vdCBpbnNlcnQgbmV3IGNvbnRlbnQnKTsKICAgICBhc3NlcnRf
ZmFsc2UocmVzdWx0LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5pbm5lckhUTUwuaW5jbHVkZXMo
J3NvbWUgdGV4dCcpLCAnTXVzdCBub3QgaW5zZXJ0IG5ldyBjb250ZW50Jyk7CiB9LCAnZG9jdW1l
bnQud3JpdGUgbXVzdCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciB3aGVuIHN5bmNocm9ub3Vz
bHkgY29uc3RydWN0aW5nIGEgY3VzdG9tIGVsZW1lbnQnKTsKIAogcHJvbWlzZV90ZXN0KGFzeW5j
IGZ1bmN0aW9uICgpIHsKICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBjb25zdHJ1Y3RfY3VzdG9t
X2VsZW1lbnRfaW5fcGFyc2VyKHRoaXMsIChkb2N1bWVudCkgPT4gZG9jdW1lbnQud3JpdGVsbign
PGI+c29tZSB0ZXh0PC9iPicpKTsKLSAgICBhc3NlcnRfdGhyb3dzKHtuYW1lOiAnSW52YWxpZFN0
YXRlRXJyb3InfSwgKCkgPT4geyB0aHJvdyByZXN1bHQuZXhjZXB0aW9uOyB9LCAnTXVzdCB0aHJv
dyBhbiBJbnZhbGlkU3RhdGVFcnJvcicpOworICAgIGFzc2VydF90aHJvd3NfZG9tKCdJbnZhbGlk
U3RhdGVFcnJvcicsIHJlc3VsdC53aW5kb3cuRE9NRXhjZXB0aW9uLCAoKSA9PiB7IHRocm93IHJl
c3VsdC5leGNlcHRpb247IH0sICdNdXN0IHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yJyk7CiAg
ICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQuZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYicpLCBudWxs
LCAnTXVzdCBub3QgaW5zZXJ0IG5ldyBjb250ZW50Jyk7CiAgICAgYXNzZXJ0X2ZhbHNlKHJlc3Vs
dC5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuaW5uZXJIVE1MLmluY2x1ZGVzKCdzb21lIHRleHQn
KSwgJ011c3Qgbm90IGluc2VydCBuZXcgY29udGVudCcpOwogfSwgJ2RvY3VtZW50LndyaXRlbG4g
bXVzdCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciB3aGVuIHN5bmNocm9ub3VzbHkgY29uc3Ry
dWN0aW5nIGEgY3VzdG9tIGVsZW1lbnQnKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
Y3VzdG9tLWVsZW1lbnRzL3Rocm93LW9uLWR5bmFtaWMtbWFya3VwLWluc2VydGlvbi1jb3VudGVy
LXJlYWN0aW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvdGhyb3ct
b24tZHluYW1pYy1tYXJrdXAtaW5zZXJ0aW9uLWNvdW50ZXItcmVhY3Rpb25zLmh0bWwKaW5kZXgg
MDZmZWVmNjgyZTBjYjgzZGJhYzIwY2JhNjYyNjBjNDE2NzRiMGUxNy4uYWE2OTkwZTU5N2VmYjhh
ZjRjZTk3MDE3NGZiM2E0NTdlNjFiYjY4MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9j
dXN0b20tZWxlbWVudHMvdGhyb3ctb24tZHluYW1pYy1tYXJrdXAtaW5zZXJ0aW9uLWNvdW50ZXIt
cmVhY3Rpb25zLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvdGhy
b3ctb24tZHluYW1pYy1tYXJrdXAtaW5zZXJ0aW9uLWNvdW50ZXItcmVhY3Rpb25zLmh0bWwKQEAg
LTQ1LDEyICs0NSwxMiBAQCBhc3luYyBmdW5jdGlvbiBjdXN0b21fZWxlbWVudF9yZWFjdGlvbnNf
aW5fcGFyc2VyKHRlc3QsIGNhbGxfZnVuY3Rpb24pCiAKIHByb21pc2VfdGVzdChhc3luYyBmdW5j
dGlvbiAoKSB7CiAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgY3VzdG9tX2VsZW1lbnRfcmVhY3Rp
b25zX2luX3BhcnNlcih0aGlzLCAoZG9jdW1lbnQpID0+IGRvY3VtZW50Lm9wZW4oKSk7Ci0gICAg
YXNzZXJ0X3Rocm93cyh7bmFtZTogJ0ludmFsaWRTdGF0ZUVycm9yJ30sICgpID0+IHsgdGhyb3cg
cmVzdWx0LmV4Y2VwdGlvbjsgfSwgJ011c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3InKTsK
KyAgICBhc3NlcnRfdGhyb3dzX2RvbSgnSW52YWxpZFN0YXRlRXJyb3InLCByZXN1bHQud2luZG93
LkRPTUV4Y2VwdGlvbiwgKCkgPT4geyB0aHJvdyByZXN1bHQuZXhjZXB0aW9uOyB9LCAnTXVzdCB0
aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvcicpOwogfSwgJ2RvY3VtZW50Lm9wZW4oKSBtdXN0IHRo
cm93IGFuIEludmFsaWRTdGF0ZUVycm9yIHdoZW4gcHJvY2Vzc2luZyBjdXN0b20gZWxlbWVudCBy
ZWFjdGlvbnMgZm9yIGEgc3luY2hyb25vdXMgY29uc3RydWN0ZWQgY3VzdG9tIGVsZW1lbnQnKTsK
IAogcHJvbWlzZV90ZXN0KGFzeW5jIGZ1bmN0aW9uICgpIHsKICAgICBjb25zdCByZXN1bHQgPSBh
d2FpdCBjdXN0b21fZWxlbWVudF9yZWFjdGlvbnNfaW5fcGFyc2VyKHRoaXMsIChkb2N1bWVudCkg
PT4gZG9jdW1lbnQub3BlbigndGV4dC9odG1sJykpOwotICAgIGFzc2VydF90aHJvd3Moe25hbWU6
ICdJbnZhbGlkU3RhdGVFcnJvcid9LCAoKSA9PiB7IHRocm93IHJlc3VsdC5leGNlcHRpb247IH0s
ICdNdXN0IHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yJyk7CisgICAgYXNzZXJ0X3Rocm93c19k
b20oJ0ludmFsaWRTdGF0ZUVycm9yJywgcmVzdWx0LndpbmRvdy5ET01FeGNlcHRpb24sICgpID0+
IHsgdGhyb3cgcmVzdWx0LmV4Y2VwdGlvbjsgfSwgJ011c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRl
RXJyb3InKTsKIH0sICdkb2N1bWVudC5vcGVuKCJ0ZXh0L2h0bWwiKSBtdXN0IHRocm93IGFuIElu
dmFsaWRTdGF0ZUVycm9yIHdoZW4gcHJvY2Vzc2luZyBjdXN0b20gZWxlbWVudCByZWFjdGlvbnMg
Zm9yIGEgc3luY2hyb25vdXMgY29uc3RydWN0ZWQgY3VzdG9tIGVsZW1lbnQnKTsKIAogLy8gaHR0
cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZHluYW1pYy1tYXJrdXAtaW5zZXJ0
aW9uLmh0bWwjZG9tLWRvY3VtZW50LW9wZW4td2luZG93CkBAIC02MywxOSArNjMsMTkgQEAgcHJv
bWlzZV90ZXN0KGFzeW5jIGZ1bmN0aW9uICgpIHsKIAogcHJvbWlzZV90ZXN0KGFzeW5jIGZ1bmN0
aW9uICgpIHsKICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBjdXN0b21fZWxlbWVudF9yZWFjdGlv
bnNfaW5fcGFyc2VyKHRoaXMsIChkb2N1bWVudCkgPT4gZG9jdW1lbnQuY2xvc2UoKSk7Ci0gICAg
YXNzZXJ0X3Rocm93cyh7bmFtZTogJ0ludmFsaWRTdGF0ZUVycm9yJ30sICgpID0+IHsgdGhyb3cg
cmVzdWx0LmV4Y2VwdGlvbjsgfSwgJ011c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3InKTsK
KyAgICBhc3NlcnRfdGhyb3dzX2RvbSgnSW52YWxpZFN0YXRlRXJyb3InLCByZXN1bHQud2luZG93
LkRPTUV4Y2VwdGlvbiwgKCkgPT4geyB0aHJvdyByZXN1bHQuZXhjZXB0aW9uOyB9LCAnTXVzdCB0
aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvcicpOwogfSwgJ2RvY3VtZW50LmNsb3NlKCkgbXVzdCB0
aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciB3aGVuIHByb2Nlc3NpbmcgY3VzdG9tIGVsZW1lbnQg
cmVhY3Rpb25zIGZvciBhIHN5bmNocm9ub3VzIGNvbnN0cnVjdGVkIGN1c3RvbSBlbGVtZW50Jyk7
CiAKIHByb21pc2VfdGVzdChhc3luYyBmdW5jdGlvbiAoKSB7CiAgICAgY29uc3QgcmVzdWx0ID0g
YXdhaXQgY3VzdG9tX2VsZW1lbnRfcmVhY3Rpb25zX2luX3BhcnNlcih0aGlzLCAoZG9jdW1lbnQp
ID0+IGRvY3VtZW50LndyaXRlKCc8Yj5zb21lIHRleHQ8L2I+JykpOwotICAgIGFzc2VydF90aHJv
d3Moe25hbWU6ICdJbnZhbGlkU3RhdGVFcnJvcid9LCAoKSA9PiB7IHRocm93IHJlc3VsdC5leGNl
cHRpb247IH0sICdNdXN0IHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yJyk7CisgICAgYXNzZXJ0
X3Rocm93c19kb20oJ0ludmFsaWRTdGF0ZUVycm9yJywgcmVzdWx0LndpbmRvdy5ET01FeGNlcHRp
b24sICgpID0+IHsgdGhyb3cgcmVzdWx0LmV4Y2VwdGlvbjsgfSwgJ011c3QgdGhyb3cgYW4gSW52
YWxpZFN0YXRlRXJyb3InKTsKICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdC5kb2N1bWVudC5xdWVy
eVNlbGVjdG9yKCdiJyksIG51bGwsICdNdXN0IG5vdCBpbnNlcnQgbmV3IGNvbnRlbnQnKTsKICAg
ICBhc3NlcnRfZmFsc2UocmVzdWx0LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5pbm5lckhUTUwu
aW5jbHVkZXMoJ3NvbWUgdGV4dCcpLCAnTXVzdCBub3QgaW5zZXJ0IG5ldyBjb250ZW50Jyk7CiB9
LCAnZG9jdW1lbnQud3JpdGUgbXVzdCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciB3aGVuIHBy
b2Nlc3NpbmcgY3VzdG9tIGVsZW1lbnQgcmVhY3Rpb25zIGZvciBhIHN5bmNocm9ub3VzIGNvbnN0
cnVjdGVkIGN1c3RvbSBlbGVtZW50Jyk7CiAKIHByb21pc2VfdGVzdChhc3luYyBmdW5jdGlvbiAo
KSB7CiAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgY3VzdG9tX2VsZW1lbnRfcmVhY3Rpb25zX2lu
X3BhcnNlcih0aGlzLCAoZG9jdW1lbnQpID0+IGRvY3VtZW50LndyaXRlbG4oJzxiPnNvbWUgdGV4
dDwvYj4nKSk7Ci0gICAgYXNzZXJ0X3Rocm93cyh7bmFtZTogJ0ludmFsaWRTdGF0ZUVycm9yJ30s
ICgpID0+IHsgdGhyb3cgcmVzdWx0LmV4Y2VwdGlvbjsgfSwgJ011c3QgdGhyb3cgYW4gSW52YWxp
ZFN0YXRlRXJyb3InKTsKKyAgICBhc3NlcnRfdGhyb3dzX2RvbSgnSW52YWxpZFN0YXRlRXJyb3In
LCByZXN1bHQud2luZG93LkRPTUV4Y2VwdGlvbiwgKCkgPT4geyB0aHJvdyByZXN1bHQuZXhjZXB0
aW9uOyB9LCAnTXVzdCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvcicpOwogICAgIGFzc2VydF9l
cXVhbHMocmVzdWx0LmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2InKSwgbnVsbCwgJ011c3Qgbm90
IGluc2VydCBuZXcgY29udGVudCcpOwogICAgIGFzc2VydF9mYWxzZShyZXN1bHQuZG9jdW1lbnQu
ZG9jdW1lbnRFbGVtZW50LmlubmVySFRNTC5pbmNsdWRlcygnc29tZSB0ZXh0JyksICdNdXN0IG5v
dCBpbnNlcnQgbmV3IGNvbnRlbnQnKTsKIH0sICdkb2N1bWVudC53cml0ZWxuIG11c3QgdGhyb3cg
YW4gSW52YWxpZFN0YXRlRXJyb3Igd2hlbiBwcm9jZXNzaW5nIGN1c3RvbSBlbGVtZW50IHJlYWN0
aW9ucyBmb3IgYSBzeW5jaHJvbm91cyBjb25zdHJ1Y3RlZCBjdXN0b20gZWxlbWVudCcpOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vZG9jdW1lbnQtYWxsLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9kb2N1bWVudC1hbGwuaHRtbAppbmRleCAxMDg3MzEwODNhODE4ZWNlMGJl
NzMwMGI1ZWQzMDAwYWExNTI3NjdkLi43MjQzNzA2ZGIyN2E1NDRlMTRlM2Y2YmYxNGUyNjI1MjBj
ZjE3MTRmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9kb2N1bWVudC1hbGwuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9kb2N1bWVudC1hbGwuaHRtbApAQCAtMTUzLDcg
KzE1Myw3IEBAIHRlc3QoZnVuY3Rpb24oKSB7CiB9LCAiZG9jdW1lbnQuYWxsIHdpbGwgcmV0dXJu
IGEgc3ViLWNvbGxlY3Rpb24gaWYgdGhlIG5hbWUvaWQgaXMgZm91bmQgbW9yZSB0aGFuIG9uY2Us
IHRoYXQgaXMgbGl2ZSIpOwogCiB0ZXN0KGZ1bmN0aW9uKCkgewotICAgIGFzc2VydF90aHJvd3Mo
bmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsgZG9jdW1lbnQuYWxsLm5hbWVkSXRlbSgpIH0p
OworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsgZG9jdW1lbnQu
YWxsLm5hbWVkSXRlbSgpIH0pOwogfSwgImRvY3VtZW50LmFsbCdzIG5hbWVkSXRlbSBmdW5jdGlv
biByZXF1aXJlcyBwYXNzaW5nIGFuIGFyZ3VtZW50Iik7CiAKIHRlc3QoZnVuY3Rpb24oKSB7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9lbGVtZW50RnJvbVBvaW50LXBhcmFtZXRl
cnMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2VsZW1lbnRGcm9tUG9pbnQtcGFyYW1ldGVy
cy5odG1sCmluZGV4IGFkZGQyNmQ4OTEzMWRhMDkxN2IxMGU0Yzk1ZTdkYzZhNzlkYTgxMWEuLjQy
YWY0MWUzY2FhNTdiMGE1MDk5M2E2OTVlY2FiODk5ZjE4ZTc4ZjMgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2Zhc3QvZG9tL2VsZW1lbnRGcm9tUG9pbnQtcGFyYW1ldGVycy5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL2VsZW1lbnRGcm9tUG9pbnQtcGFyYW1ldGVycy5odG1sCkBAIC02
LDI2ICs2LDI2IEBACiA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVw
b3J0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiB0ZXN0KGZ1bmN0aW9uKCkgewotICAgIGFzc2Vy
dF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsgCisgICAgYXNzZXJ0X3Rocm93
c19qcyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeyAKICAgICAgICAgZG9jdW1lbnQuZWxlbWVudEZy
b21Qb2ludCgpOwogICAgIH0sICJDYWxsZWQgd2l0aCBubyBwYXJhbWV0ZXIiKTsKIAotICAgIGFz
c2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsgCisgICAgYXNzZXJ0X3Ro
cm93c19qcyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeyAKICAgICAgICAgZG9jdW1lbnQuZWxlbWVu
dEZyb21Qb2ludCgwKTsKICAgICB9LCAiQ2FsbGVkIHdpdGggMSBwYXJhbWV0ZXIiKTsKIH0sICJQ
YXJhbWV0ZXJzIGFyZSBtYW5kYXRvcnkuIik7CiAKIHRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgYXNz
ZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgeworICAgIGFzc2VydF90aHJv
d3NfanMoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKICAgICAgICAgZG9jdW1lbnQuZWxlbWVudEZy
b21Qb2ludCgwLCBJbmZpbml0eSk7CiAgICAgfSwgIlBhc3NpbmcgSW5maW5pdHkgYXMgc2Vjb25k
IHBhcmFtZXRlciB0aHJvd3MiKTsKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwg
ZnVuY3Rpb24oKSB7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkg
ewogICAgICAgICBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KEluZmluaXR5LCAwKTsKICAgICB9
LCAiUGFzc2luZyBJbmZpbml0eSBhcyBmaXJzdCBwYXJhbWV0ZXIgdGhyb3dzIik7Ci0gICAgYXNz
ZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgeworICAgIGFzc2VydF90aHJv
d3NfanMoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKICAgICAgICAgZG9jdW1lbnQuZWxlbWVudEZy
b21Qb2ludCgwLCBOYU4pOwogICAgIH0sICJQYXNzaW5nIE5hTiBhcyBzZWNvbmQgcGFyYW1ldGVy
IHRocm93cyIpOwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigp
IHsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CiAgICAgICAg
IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoTmFOLCAwKTsKICAgICB9LCAiUGFzc2luZyBOYU4g
YXMgZmlyc3QgcGFyYW1ldGVyIHRocm93cyIpOwogfSwgIlBhcmFtZXRlciBzaG91bGQgYmUgZmlu
aXRlIGZsb2F0aW5nIHBvaW50IHZhbHVlcy4iKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZG9tL3JlcGxhY2VhYmxlLXNldHRlci10aHJvd3MtaWYtZGVmaW5lb3ducHJvcGVydHktZmFp
bHMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3JlcGxhY2VhYmxlLXNldHRlci10aHJvd3Mt
aWYtZGVmaW5lb3ducHJvcGVydHktZmFpbHMuaHRtbAppbmRleCBjZmFiZmYzNTFhMjUyNThmMjFj
MGZiZmFhZTNhNzQ2ODE5OGU2NjgwLi5kY2VhOTNiNTExNmE1YzIyZmVhMjQwYmU4ODM3MDY2YTAy
OTYxZDdiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9yZXBsYWNlYWJsZS1zZXR0
ZXItdGhyb3dzLWlmLWRlZmluZW93bnByb3BlcnR5LWZhaWxzLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vcmVwbGFjZWFibGUtc2V0dGVyLXRocm93cy1pZi1kZWZpbmVvd25wcm9wZXJ0
eS1mYWlscy5odG1sCkBAIC0xMSw3ICsxMSw3IEBACiBmb3IgKGNvbnN0IGtleSBvZiBbInNlbGYi
LCAicGFyZW50IiwgIm9yaWdpbiIsICJpbm5lcldpZHRoIl0pIHsKICAgICB0ZXN0KCgpID0+IHsK
ICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdywga2V5LCB7IGNvbmZpZ3VyYWJs
ZTogZmFsc2UgfSk7Ci0gICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvciwgKCkgPT4g
eyB3aW5kb3dba2V5XSA9IDE7IH0pOworICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJv
ciwgKCkgPT4geyB3aW5kb3dba2V5XSA9IDE7IH0pOwogCiAgICAgICAgIGNvbnN0IGRlc2MgPSBP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHdpbmRvdywga2V5KTsKICAgICAgICAgYXNz
ZXJ0X2ZhbHNlKCJ2YWx1ZSIgaW4gZGVzYyk7CkBAIC0yNiw3ICsyNiw3IEBAIGZvciAoY29uc3Qg
a2V5IG9mIFsic2NyZWVuIiwgImxlbmd0aCIsICJldmVudCIsICJvdXRlckhlaWdodCJdKSB7CiAg
ICAgdGVzdCgoKSA9PiB7CiAgICAgICAgIGNvbnN0IHsgc2V0IH0gPSBPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKHdpbmRvdywga2V5KTsKICAgICAgICAgT2JqZWN0LmRlZmluZVByb3Bl
cnR5KHdpbmRvdywga2V5LCB7IHZhbHVlOiAxLCB3cml0YWJsZTogZmFsc2UsIGNvbmZpZ3VyYWJs
ZTogZmFsc2UgfSk7Ci0gICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvciwgKCkgPT4g
eyBzZXQuY2FsbCh3aW5kb3csIDIpOyB9KTsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBl
RXJyb3IsICgpID0+IHsgc2V0LmNhbGwod2luZG93LCAyKTsgfSk7CiAKICAgICAgICAgY29uc3Qg
ZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iod2luZG93LCBrZXkpOwogICAg
ICAgICBhc3NlcnRfZXF1YWxzKGRlc2MudmFsdWUsIDEpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9kb20vd2luZG93LW9wZW5lci1zZXR0ZXItdGhyb3dzLWlmLWRlZmluZW93bnByb3Bl
cnR5LWZhaWxzLTEuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3dpbmRvdy1vcGVuZXItc2V0
dGVyLXRocm93cy1pZi1kZWZpbmVvd25wcm9wZXJ0eS1mYWlscy0xLmh0bWwKaW5kZXggNDIzMzkx
ZDVkZmMyNWZlZjQxYWE2YTNhZTJlMGIwNDM5ZmJiN2I2NS4uNTk5YjUxMjUxYjNkMDUyNzUyYWQy
NTRiY2RjOWM1YWQ2MzIyMTFiZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vd2lu
ZG93LW9wZW5lci1zZXR0ZXItdGhyb3dzLWlmLWRlZmluZW93bnByb3BlcnR5LWZhaWxzLTEuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS93aW5kb3ctb3BlbmVyLXNldHRlci10aHJvd3Mt
aWYtZGVmaW5lb3ducHJvcGVydHktZmFpbHMtMS5odG1sCkBAIC0xMCw3ICsxMCw3IEBACiA8c2Ny
aXB0PgogdGVzdCgoKSA9PiB7CiAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdywgIm9w
ZW5lciIsIHsgY29uZmlndXJhYmxlOiBmYWxzZSB9KTsKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBU
eXBlRXJyb3IsICgpID0+IHsgd2luZG93Lm9wZW5lciA9IDE7IH0pOworICAgIGFzc2VydF90aHJv
d3NfanMoVHlwZUVycm9yLCAoKSA9PiB7IHdpbmRvdy5vcGVuZXIgPSAxOyB9KTsKIAogICAgIGNv
bnN0IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHdpbmRvdywgIm9wZW5l
ciIpOwogICAgIGFzc2VydF9mYWxzZSgidmFsdWUiIGluIGRlc2MpOwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9kb20vd2luZG93LW9wZW5lci1zZXR0ZXItdGhyb3dzLWlmLWRlZmluZW93
bnByb3BlcnR5LWZhaWxzLTIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3dpbmRvdy1vcGVu
ZXItc2V0dGVyLXRocm93cy1pZi1kZWZpbmVvd25wcm9wZXJ0eS1mYWlscy0yLmh0bWwKaW5kZXgg
NjZhYzI5NzkyOWYwMTFlMjhhZDg4NzM0MzU4OTNmMDYzYTY4ZmNiNS4uOTQ2Y2YzYTMyYWYyYTIw
YzRlNTViMTg5MTk5MGYwMjhmZjQyNzRiYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9k
b20vd2luZG93LW9wZW5lci1zZXR0ZXItdGhyb3dzLWlmLWRlZmluZW93bnByb3BlcnR5LWZhaWxz
LTIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS93aW5kb3ctb3BlbmVyLXNldHRlci10
aHJvd3MtaWYtZGVmaW5lb3ducHJvcGVydHktZmFpbHMtMi5odG1sCkBAIC0xMSw3ICsxMSw3IEBA
CiB0ZXN0KCgpID0+IHsKICAgICBjb25zdCB7IHNldCB9ID0gT2JqZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvcih3aW5kb3csICJvcGVuZXIiKTsKICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHko
d2luZG93LCAib3BlbmVyIiwgeyB2YWx1ZTogMSwgd3JpdGFibGU6IGZhbHNlLCBjb25maWd1cmFi
bGU6IGZhbHNlIH0pOwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvciwgKCkgPT4geyBz
ZXQuY2FsbCh3aW5kb3csIDIpOyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwg
KCkgPT4geyBzZXQuY2FsbCh3aW5kb3csIDIpOyB9KTsKIAogICAgIGNvbnN0IGRlc2MgPSBPYmpl
Y3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHdpbmRvdywgIm9wZW5lciIpOwogICAgIGFzc2Vy
dF9lcXVhbHMoZGVzYy52YWx1ZSwgMSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy9jbGlwYm9hcmQtZXZlbnQtY29uc3RydWN0b3IuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL2NsaXBib2FyZC1ldmVudC1jb25zdHJ1Y3Rvci5odG1sCmluZGV4IDc3NDkzNjE2YTcz
OThmNzZmMzA4ZDQ5OTQ1NTA3YWU2NDE1OWYyZjguLmExM2QwM2Q2MmJkZmUyMzE1NWZmODEyMGU0
MjZmN2Y4ODcxNDBlNWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2NsaXBi
b2FyZC1ldmVudC1jb25zdHJ1Y3Rvci5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L2NsaXBib2FyZC1ldmVudC1jb25zdHJ1Y3Rvci5odG1sCkBAIC04LDcgKzgsNyBAQAogPGJvZHk+
CiA8c2NyaXB0PgogdGVzdChmdW5jdGlvbigpIHsKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBl
RXJyb3IoKSwgZnVuY3Rpb24oKSB7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsIGZ1
bmN0aW9uKCkgewogICAgICAgICBuZXcgQ2xpcGJvYXJkRXZlbnQoKTsKICAgICB9KTsKIH0sICJG
aXJzdCBwYXJhbWV0ZXIgaXMgbWFuZGF0b3J5Iik7CkBAIC02NCw3ICs2NCw3IEBAIHRlc3QoZnVu
Y3Rpb24oKSB7CiB9LCAiYnViYmxlcyAvIGNhbmNlbGFibGUgLyBjb21wb3NlZCBtZW1iZXJzIik7
CiAKIHRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCks
IGZ1bmN0aW9uKCkgeworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCBmdW5jdGlvbigp
IHsKICAgICAgICAgbmV3IENsaXBib2FyZEV2ZW50KCJmb28iLCB7Y2xpcGJvYXJkRGF0YTogZG9j
dW1lbnR9KTsKICAgICB9KTsKIH0sICJQYXNzaW5nIGEgYmFkIHR5cGUgZm9yIGNsaXBib2FyZERh
dGEgbWVtYmVyIHNob3VsZCB0aHJvdyIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9m
aWxlcy93b3JrZXJzL3Jlc291cmNlcy93b3JrZXItZmlsZS1yZWFkZXItc3luYy1iYWQtcGFyYW1l
dGVyLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy93b3JrZXJzL3Jlc291cmNlcy93b3JrZXIt
ZmlsZS1yZWFkZXItc3luYy1iYWQtcGFyYW1ldGVyLmpzCmluZGV4IGM5NWFmY2QwZmU1ZTBkYWFi
ZTg1N2Y5NThhNmZlZWQ4NTJmYjUwYjYuLjkxMzQ1NWQ2NmEyZWNlOTg5NmJiOTc5MDZjYjRjNTJi
MTEyODI1NTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvd29ya2Vycy9yZXNv
dXJjZXMvd29ya2VyLWZpbGUtcmVhZGVyLXN5bmMtYmFkLXBhcmFtZXRlci5qcworKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzL3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1maWxlLXJlYWRlci1z
eW5jLWJhZC1wYXJhbWV0ZXIuanMKQEAgLTIsMTggKzIsMTggQEAgaWYgKHNlbGYuaW1wb3J0U2Ny
aXB0cykKICAgc2VsZi5pbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi8uLi9yZXNvdXJjZXMvdGVzdGhh
cm5lc3MuanMnKTsKIAogdGVzdChmdW5jdGlvbigpIHsKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBU
eXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7IG5ldyBGaWxlUmVhZGVyU3luYygpLnJlYWRBc0JpbmFy
eVN0cmluZyhudWxsKTsgfSk7Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1
bmN0aW9uKCkgeyBuZXcgRmlsZVJlYWRlclN5bmMoKS5yZWFkQXNBcnJheUJ1ZmZlcihudWxsKTsg
fSk7Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgeyBuZXcg
RmlsZVJlYWRlclN5bmMoKS5yZWFkQXNUZXh0KG51bGwpOyB9KTsKLSAgICBhc3NlcnRfdGhyb3dz
KG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7IG5ldyBGaWxlUmVhZGVyU3luYygpLnJlYWRB
c0RhdGFVUkwobnVsbCk7IH0pOworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCBmdW5j
dGlvbigpIHsgbmV3IEZpbGVSZWFkZXJTeW5jKCkucmVhZEFzQmluYXJ5U3RyaW5nKG51bGwpOyB9
KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7IG5ldyBGaWxl
UmVhZGVyU3luYygpLnJlYWRBc0FycmF5QnVmZmVyKG51bGwpOyB9KTsKKyAgICBhc3NlcnRfdGhy
b3dzX2pzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7IG5ldyBGaWxlUmVhZGVyU3luYygpLnJlYWRB
c1RleHQobnVsbCk7IH0pOworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCBmdW5jdGlv
bigpIHsgbmV3IEZpbGVSZWFkZXJTeW5jKCkucmVhZEFzRGF0YVVSTChudWxsKTsgfSk7CiB9LCAi
VHJ5aW5nIHRvIHJlYWQgYSBudWxsIHBhcmFtZXRlciIpOwogCiAKIHRlc3QoZnVuY3Rpb24oKSB7
Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgeyBuZXcgRmls
ZVJlYWRlclN5bmMoKS5yZWFkQXNCaW5hcnlTdHJpbmcodW5kZWZpbmVkKTsgfSk7Ci0gICAgYXNz
ZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgeyBuZXcgRmlsZVJlYWRlclN5
bmMoKS5yZWFkQXNBcnJheUJ1ZmZlcih1bmRlZmluZWQpOyB9KTsKLSAgICBhc3NlcnRfdGhyb3dz
KG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7IG5ldyBGaWxlUmVhZGVyU3luYygpLnJlYWRB
c1RleHQodW5kZWZpbmVkKTsgfSk7Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCks
IGZ1bmN0aW9uKCkgeyBuZXcgRmlsZVJlYWRlclN5bmMoKS5yZWFkQXNEYXRhVVJMKHVuZGVmaW5l
ZCk7IH0pOworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsgbmV3
IEZpbGVSZWFkZXJTeW5jKCkucmVhZEFzQmluYXJ5U3RyaW5nKHVuZGVmaW5lZCk7IH0pOworICAg
IGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsgbmV3IEZpbGVSZWFkZXJT
eW5jKCkucmVhZEFzQXJyYXlCdWZmZXIodW5kZWZpbmVkKTsgfSk7CisgICAgYXNzZXJ0X3Rocm93
c19qcyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeyBuZXcgRmlsZVJlYWRlclN5bmMoKS5yZWFkQXNU
ZXh0KHVuZGVmaW5lZCk7IH0pOworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCBmdW5j
dGlvbigpIHsgbmV3IEZpbGVSZWFkZXJTeW5jKCkucmVhZEFzRGF0YVVSTCh1bmRlZmluZWQpOyB9
KTsKIH0sICJUcnlpbmcgdG8gcmVhZCBhbiB1bmRlZmluZWQgcGFyYW1ldGVyIik7CiAKIGRvbmUo
KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMveGhyLWJsb2ItcmVxdWVzdC5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy94aHItYmxvYi1yZXF1ZXN0Lmh0bWwKaW5kZXgg
YWNmM2E3ZDJiMWE1YTE5ODFkZDg3N2JjMWViOWFiNWJiYWQzMDc3MC4uZjI2YWZkMTIzNzgwN2E1
ZGM3MTg2ZTc1MDMyMDU3ODY1OTNhNmM0YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9m
aWxlcy94aHItYmxvYi1yZXF1ZXN0Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy94
aHItYmxvYi1yZXF1ZXN0Lmh0bWwKQEAgLTUwLDcgKzUwLDcgQEAgZnVuY3Rpb24gdGVzdF9ub3RB
bGxvd2VkX21ldGhvZF9zeW5jKG1ldGhvZCkgewogICAgICAgICAgICAgYXNzZXJ0X3VucmVhY2hl
ZCgnRXhjZXB0aW9uIHNob3VsZCBiZSB0aHJvd24gZm9yIHN5bmNocm9ub3VzICcgKyBtZXRob2Qg
KyAnIFhIUicpOwogICAgICAgICB9CiAKLSAgICAgICAgYXNzZXJ0X3Rocm93cygnTmV0d29ya0Vy
cm9yJywgKCkgPT4geyByZXEuc2VuZCgpOyB9LCAnRXhjZXB0aW9uIHRocm93biBmb3Igc3luY2hy
b25vdXMgJyArIG1ldGhvZCArICcgWEhSJyk7CisgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCdO
ZXR3b3JrRXJyb3InLCAoKSA9PiB7IHJlcS5zZW5kKCk7IH0sICdFeGNlcHRpb24gdGhyb3duIGZv
ciBzeW5jaHJvbm91cyAnICsgbWV0aG9kICsgJyBYSFInKTsKIAogICAgICAgICBhc3NlcnRfZmFs
c2Uob25FcnJvciwgJ0Vycm9yIGNhbGxiYWNrIGlzIGNhbGxlZCcpOwogICAgIH0sICdTeW5jaHJv
bm91cyBYSFIgcmVxdWVzdCBzaG91bGQgdGhyb3cgZXhjZXB0aW9uIHdpdGggJyArIG1ldGhvZCk7
CkBAIC05Nyw3ICs5Nyw3IEBAIGZ1bmN0aW9uIHRlc3RfbWV0aG9kX2FzeW5jKG1ldGhvZCwgc2hv
dWxkTG9hZCkgewogCiBmdW5jdGlvbiB0ZXN0X2ZvcmJpZGRlbl9tZXRob2QocmVxdWVzdCkgewog
ICAgIHRlc3QoKCkgPT4gewotICAgICAgICBhc3NlcnRfdGhyb3dzKCdTZWN1cml0eUVycm9yJywg
KCkgPT4geworICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgnU2VjdXJpdHlFcnJvcicsICgpID0+
IHsKICAgICAgICAgICAgIHZhciByZXEgPSBuZXcgWE1MSHR0cFJlcXVlc3Q7CiAgICAgICAgICAg
ICByZXEub3BlbihyZXF1ZXN0LCB1cmwpOwogICAgICAgICB9KQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9tZWRpYWNhcHR1cmVmcm9tZWxlbWVudC9DYW52YXNDYXB0dXJlTWVkaWFTdHJl
YW0tZXhjZXB0aW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYWNhcHR1cmVmcm9tZWxl
bWVudC9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW0tZXhjZXB0aW9ucy5odG1sCmluZGV4IDY5Zjhk
ZmVkY2VhMWUxYzI3Nzc0OGUxOGQ5ZDIyMmUxZmEzM2QyNDcuLjE5ZGRiMzAwOTgzMDQ5N2NjNWFh
MDQ3NmUyZDgxYmIwMzk0MTAzYWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFj
YXB0dXJlZnJvbWVsZW1lbnQvQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtLWV4Y2VwdGlvbnMuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhY2FwdHVyZWZyb21lbGVtZW50L0NhbnZhc0Nh
cHR1cmVNZWRpYVN0cmVhbS1leGNlcHRpb25zLmh0bWwKQEAgLTYsNyArNiw3IEBACiAKIHRlc3Qo
ZnVuY3Rpb24oKSB7CiAgIHZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52
YXMnKTsKLSAgYXNzZXJ0X3Rocm93cygiTm90U3VwcG9ydGVkRXJyb3IiLCBmdW5jdGlvbigpIHsg
Y2FudmFzLmNhcHR1cmVTdHJlYW0oLTAuNSkgfSwKKyAgYXNzZXJ0X3Rocm93c19kb20oIk5vdFN1
cHBvcnRlZEVycm9yIiwgZnVuY3Rpb24oKSB7IGNhbnZhcy5jYXB0dXJlU3RyZWFtKC0wLjUpIH0s
CiAgICAgICAgICAgICAgICAgImNhbm5vdCBoYXZlIG5lZ2F0aXZlIGZyYW1lIHJhdGUiKTsKIH0s
ICdjaGVjayBjYXB0dXJlU3RyZWFtKCkgdGhyb3dzIEV4Y2VwdGlvbiB3aXRoIGludmFsaWQgZnJh
bWUgcmF0ZScpOwogCkBAIC0yMiw3ICsyMiw3IEBAIGZ1bmN0aW9uIG1ha2VBc3luY1Rlc3QoKSB7
CiAgICAgICBjdHguZmlsbFN0eWxlID0gcGF0dGVybjsKICAgICAgIGN0eC5maWxsUmVjdCgwLCAw
LCAxMDAsIDEwMCk7CiAKLSAgICAgIGFzc2VydF90aHJvd3MoIlNlY3VyaXR5RXJyb3IiLCBmdW5j
dGlvbigpIHsgY2FudmFzLmNhcHR1cmVTdHJlYW0oKSB9LAorICAgICAgYXNzZXJ0X3Rocm93c19k
b20oIlNlY3VyaXR5RXJyb3IiLCBmdW5jdGlvbigpIHsgY2FudmFzLmNhcHR1cmVTdHJlYW0oKSB9
LAogICAgICAgICAgICAgICAgICJjYW5ub3QgaGF2ZSBjcm9zcyBvcmlnaW4iKTsKICAgICAgIHRl
c3QuZG9uZSgpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXNl
c3Npb24vbWV0YWRhdGEvYXJ0d29ya2Rvd25sb2FkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L21l
ZGlhc2Vzc2lvbi9tZXRhZGF0YS9hcnR3b3JrZG93bmxvYWQuaHRtbAppbmRleCBmNmIxMTUyYmRi
ZTgxMzExZTIwNGU5YWM5NjE3NjY5MmRiODJlOWJiLi44NDE2MDU5OTI4MWI0NmYzMTc0MTgyY2Nl
NTYxYmM5Y2NiYmFjMGNmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc2Vzc2lv
bi9tZXRhZGF0YS9hcnR3b3JrZG93bmxvYWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21l
ZGlhc2Vzc2lvbi9tZXRhZGF0YS9hcnR3b3JrZG93bmxvYWQuaHRtbApAQCAtMjAsMTQgKzIwLDE0
IEBAIHByb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4gewogICAgIGlmICghd2luZG93LmludGVy
bmFscykKICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0cygiVGVzdCBuZWVkcyBpbnRlcm5h
bHMiKTsKIAotICAgIHJldHVybiBwcm9taXNlX3JlamVjdHModGVzdCwgJ0ludmFsaWRBY2Nlc3NF
cnJvcicsIGludGVybmFscy5sb2FkQXJ0d29ya0ltYWdlKCJiYWRfaW1hZ2UuanBnIikpOworICAg
IHJldHVybiBwcm9taXNlX3JlamVjdHNfZG9tKHRlc3QsICdJbnZhbGlkQWNjZXNzRXJyb3InLCBp
bnRlcm5hbHMubG9hZEFydHdvcmtJbWFnZSgiYmFkX2ltYWdlLmpwZyIpKTsKIH0sICJlbnN1cmUg
bG9hZGluZyBpbnZhbGlkIGFydHdvcmsgY2F1c2VzIGEgZmFpbHVyZSIpOwogCiBwcm9taXNlX3Rl
c3QoYXN5bmMgKHRlc3QpID0+IHsKICAgICBpZiAoIXdpbmRvdy5pbnRlcm5hbHMpCiAgICAgICAg
IHJldHVybiBQcm9taXNlLnJlamVjdHMoIlRlc3QgbmVlZHMgaW50ZXJuYWxzIik7CiAKLSAgICBy
ZXR1cm4gcHJvbWlzZV9yZWplY3RzKHRlc3QsICdJbnZhbGlkQWNjZXNzRXJyb3InLCBpbnRlcm5h
bHMubG9hZEFydHdvcmtJbWFnZSgiIikpOworICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZG9t
KHRlc3QsICdJbnZhbGlkQWNjZXNzRXJyb3InLCBpbnRlcm5hbHMubG9hZEFydHdvcmtJbWFnZSgi
IikpOwogfSwgImVuc3VyZSBsb2FkaW5nIGEgbm9uLWltYWdlIGNhdXNlcyBhIGZhaWx1cmUiKTsK
IAogICAgICAgICA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFz
dHJlYW0vc2NyZWVuY2FwdHVyZS11c2VyLWdlc3R1cmUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
bWVkaWFzdHJlYW0vc2NyZWVuY2FwdHVyZS11c2VyLWdlc3R1cmUuaHRtbAppbmRleCA5NTgyNjk0
Nzk5MDUxOGVlZTYxNTEzMTQ5MzNkYWI0M2JmNDQ1YTAzLi42N2FiMGExYzE2MjA0NWFjOTc0NWNj
MGFhYzZmMGFlNzZlZjM5NjRiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3Ry
ZWFtL3NjcmVlbmNhcHR1cmUtdXNlci1nZXN0dXJlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9tZWRpYXN0cmVhbS9zY3JlZW5jYXB0dXJlLXVzZXItZ2VzdHVyZS5odG1sCkBAIC0yNSw2ICsy
NSw2IEBAIHByb21pc2VfdGVzdCgoKSA9PiB7CiAKIAogcHJvbWlzZV90ZXN0KCh0ZXN0KSA9PiB7
Ci0gICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0ZXN0LCAiSW52YWxpZEFjY2Vzc0Vycm9yIiwg
bmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXREaXNwbGF5TWVkaWEoe3ZpZGVvIDogdHJ1ZX0pKTsK
KyAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2RvbSh0ZXN0LCAiSW52YWxpZEFjY2Vzc0Vycm9y
IiwgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXREaXNwbGF5TWVkaWEoe3ZpZGVvIDogdHJ1ZX0p
KTsKIH0sICJEZW55IGdldERpc3BsYXlNZWRpYSBjYWxsIGlmIG5vIHVzZXIgZ2VzdHVyZSIpOwog
PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mZXRjaC9mZXRjaC11cmwtc2VyaWFs
aXphdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvZmV0Y2gvZmV0Y2gtdXJsLXNlcmlhbGl6YXRpb24u
aHRtbAppbmRleCBkZTc5MzY0MTBlZjE0OTczMmE2OGVhZWM1MWIwNTQ3NTkwMzg4Yzg5Li42NDIy
YmQyMDg0NzYxMjkxNDFlZDIzYzhiMjkyN2QxNmY1NmViYTFmIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9mZXRjaC9mZXRjaC11cmwtc2VyaWFsaXphdGlvbi5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2ZldGNoL2ZldGNoLXVybC1zZXJpYWxpemF0aW9uLmh0bWwKQEAgLTE3LDcgKzE3LDcgQEAgZnVu
Y3Rpb24gZXhlY3V0ZVRlc3RzKHVybHMpCiAgICAgICAgICAgICB0ZXN0KGZ1bmN0aW9uKCkgewog
ICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJiYXNlIikuc2V0QXR0cmli
dXRlKCJocmVmIiwgdXJsLmJhc2UpOwogICAgICAgICAgICAgICAgIGlmICh1cmwudXNlcm5hbWUg
fHwgdXJsLnBhc3N3b3JkIHx8IHVybC5mYWlsdXJlKQotICAgICAgICAgICAgICAgICAgICBhc3Nl
cnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7ICBuZXcgUmVxdWVzdCh1cmwu
aW5wdXQpOyB9KTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJy
b3IsIGZ1bmN0aW9uKCkgeyAgbmV3IFJlcXVlc3QodXJsLmlucHV0KTsgfSk7CiAgICAgICAgICAg
ICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIHZhciByZXF1ZXN0ID0gbmV3IFJlcXVl
c3QodXJsLmlucHV0KTsKICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXF1ZXN0
LnVybCwgdXJsLmhyZWYpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9mZXRj
aC9mZXRjaGluZy1zYW1lLXJlc291cmNlLXdpdGgtZGlmZmVyZW50LW9wdGlvbnMuaHRtbCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvZmV0Y2gvZmV0Y2hpbmctc2FtZS1yZXNvdXJjZS13aXRoLWRp
ZmZlcmVudC1vcHRpb25zLmh0bWwKaW5kZXggY2NmOTUzZTFjMjNhMjllYmE0MWYwMTZjMmZkNGEw
MDgxNDM1M2ZhNS4uM2I0ZWYyZGFjNzVjZjM1ODkwMjhmYmU3NGYxNzFmZDk1M2NiMDRkYyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9mZXRjaC9mZXRjaGluZy1zYW1lLXJlc291
cmNlLXdpdGgtZGlmZmVyZW50LW9wdGlvbnMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2ZldGNoL2ZldGNoaW5nLXNhbWUtcmVzb3VyY2Utd2l0aC1kaWZmZXJlbnQtb3B0aW9ucy5o
dG1sCkBAIC0yMSw4ICsyMSw4IEBAIHByb21pc2VfdGVzdChmdW5jdGlvbih0KSB7CiAgICAgICAg
ICAgICAgICAgICAgIGFzc2VydF90cnVlKGFycmF5QnVmZmVyLmJ5dGVMZW5ndGggPiAwKTsKICAg
ICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIH0pLAotICAgICAgICAgICAgcHJvbWlzZV9y
ZWplY3RzKHQsIG5ldyBUeXBlRXJyb3IoKSwgZmV0Y2godXJsMSwgeyJtb2RlIjogImNvcnMiLCAi
Y3JlZGVudGlhbHMiOiAiaW5jbHVkZSJ9KSksCi0gICAgICAgICAgICBwcm9taXNlX3JlamVjdHMo
dCwgbmV3IFR5cGVFcnJvcigpLCBmZXRjaCh1cmwyLCB7Im1vZGUiOiAiY29ycyIsICJjcmVkZW50
aWFscyI6ICJpbmNsdWRlIn0pKSwKKyAgICAgICAgICAgIHByb21pc2VfcmVqZWN0c19qcyh0LCBU
eXBlRXJyb3IsIGZldGNoKHVybDEsIHsibW9kZSI6ICJjb3JzIiwgImNyZWRlbnRpYWxzIjogImlu
Y2x1ZGUifSkpLAorICAgICAgICAgICAgcHJvbWlzZV9yZWplY3RzX2pzKHQsIFR5cGVFcnJvciwg
ZmV0Y2godXJsMiwgeyJtb2RlIjogImNvcnMiLCAiY3JlZGVudGlhbHMiOiAiaW5jbHVkZSJ9KSks
CiAgICAgICAgICAgICBmZXRjaCh1cmwyLCB7Im1vZGUiOiAiY29ycyJ9KS50aGVuKChyZXNwb25z
ZSkgPT4gewogICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocmVzcG9uc2UudHlwZSwgImNv
cnMiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UuYXJyYXlCdWZmZXIoKS50aGVu
KChhcnJheUJ1ZmZlcikgPT4gewpAQCAtNDgsOSArNDgsOSBAQCBwcm9taXNlX3Rlc3QoZnVuY3Rp
b24odCkgewogICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXNwb25zZS50eXBlLCAib3BhcXVl
Iik7CiAgICAgICAgIH0pOwogICAgIH0pLnRoZW4oKCkgPT4gewotICAgICAgICByZXR1cm4gcHJv
bWlzZV9yZWplY3RzKHQsIG5ldyBUeXBlRXJyb3IoKSwgZmV0Y2godXJsMywgeyJtb2RlIjogImNv
cnMiLCAiY3JlZGVudGlhbHMiOiAiaW5jbHVkZSJ9KSk7CisgICAgICAgIHJldHVybiBwcm9taXNl
X3JlamVjdHNfanModCwgVHlwZUVycm9yLCBmZXRjaCh1cmwzLCB7Im1vZGUiOiAiY29ycyIsICJj
cmVkZW50aWFscyI6ICJpbmNsdWRlIn0pKTsKICAgICB9KS50aGVuKCgpID0+IHsKLSAgICAgICAg
cmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCBuZXcgVHlwZUVycm9yKCksIGZldGNoKHVybDQsIHsi
bW9kZSI6ICJjb3JzIiwgImNyZWRlbnRpYWxzIjogImluY2x1ZGUifSkpOworICAgICAgICByZXR1
cm4gcHJvbWlzZV9yZWplY3RzX2pzKHQsIFR5cGVFcnJvciwgZmV0Y2godXJsNCwgeyJtb2RlIjog
ImNvcnMiLCAiY3JlZGVudGlhbHMiOiAiaW5jbHVkZSJ9KSk7CiAgICAgfSkudGhlbigoKSA9PiB7
CiAgICAgICAgIHJldHVybiBmZXRjaCh1cmw0LCB7Im1vZGUiOiAibm8tY29ycyJ9KS50aGVuKChy
ZXNwb25zZSkgPT4gewogICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXNwb25zZS50eXBlLCAi
b3BhcXVlIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ZldGNoL3JlZGly
ZWN0bW9kZS1hbmQtcHJlbG9hZC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9mZXRjaC9y
ZWRpcmVjdG1vZGUtYW5kLXByZWxvYWQuaHRtbAppbmRleCBjYmI2NWZmNGYxZmJkY2Y2MmE3Y2Ux
ZjNjMzUxZjNjZjc2ZDIyMzQ3Li4zMjRiZWE1NTZkZjNkMjVmM2ZhOWM4NzZkNzIwMTExOWE3MzE5
ODJkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ZldGNoL3JlZGlyZWN0bW9k
ZS1hbmQtcHJlbG9hZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvZmV0Y2gvcmVk
aXJlY3Rtb2RlLWFuZC1wcmVsb2FkLmh0bWwKQEAgLTI2LDcgKzI2LDcgQEAgZnVuY3Rpb24gc3Rh
cnRUZXN0cygpCiAgICAgfSwgIkZldGNoIHNob3VsZCBjaGVjayBmb3IgcmVkaXJlY3Rpb25zIGV2
ZW4gaWYgcmVzb3VyY2UgaXMgcHJlbG9hZGVkIChkaWZmZXJlbnQgZmV0Y2ggbW9kZSwgZGlmZmVy
ZW50IHJlZGlyZWN0IG1vZGUpIik7CiAKICAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odGVzdCkg
ewotICAgICAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHRlc3QsIG5ldyBUeXBlRXJyb3IoKSwg
ZmV0Y2gocHJlbG9hZFVybCwge3JlZGlyZWN0OiAiZXJyb3IiLCBtb2RlOiAiY29ycyIsIGNyZWRl
bnRpYWxzOiAiaW5jbHVkZSJ9KSk7CisgICAgICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNfanMo
dGVzdCwgVHlwZUVycm9yLCBmZXRjaChwcmVsb2FkVXJsLCB7cmVkaXJlY3Q6ICJlcnJvciIsIG1v
ZGU6ICJjb3JzIiwgY3JlZGVudGlhbHM6ICJpbmNsdWRlIn0pKTsKICAgICB9LCAiRmV0Y2ggc2hv
dWxkIGNoZWNrIGZvciByZWRpcmVjdGlvbnMgZXZlbiBpZiByZXNvdXJjZSBpcyBwcmVsb2FkZWQg
KGRpZmZlcmVudCBmZXRjaCBtb2RlLCBkaWZmZXJlbnQgcmVkaXJlY3QgbW9kZSkgMiIpOwogfQog
ICAgIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0
aW9uL3B1c2hzdGF0ZS1hdC11bmlxdWUtb3JpZ2luLWRlbmllZC5weSBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvbmF2aWdhdGlvbi9wdXNoc3RhdGUtYXQtdW5pcXVlLW9yaWdpbi1kZW5pZWQucHkK
aW5kZXggNDc1ZWYyMzAyMzk5ZTc2MTY4NzY4YmIxZGIwMjFhNzA3YzNkODllYy4uMjgyMjUxNTQ3
ZTMxNzZmMmI0NDNlYTI5Y2U1NDhmYTY1MWY2MjExMCAxMDA3NTUKLS0tIGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3B1c2hzdGF0ZS1hdC11bmlxdWUtb3JpZ2luLWRlbmllZC5w
eQorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcHVzaHN0YXRlLWF0LXVu
aXF1ZS1vcmlnaW4tZGVuaWVkLnB5CkBAIC0xMCw3ICsxMCw3IEBAIHN5cy5zdGRvdXQud3JpdGUo
CiAgICAgJzxzY3JpcHQ+XG4nCiAgICAgJ3ZhciBvcmlnaW5VUkwgPSBkb2N1bWVudC5VUkw7XG4n
CiAgICAgJ3Rlc3QoZnVuY3Rpb24gKCkge1xuJwotICAgICcgICAgYXNzZXJ0X3Rocm93cyhcJ1Nl
Y3VyaXR5RXJyb3JcJywgZnVuY3Rpb24gKCkge1xuJworICAgICcgICAgYXNzZXJ0X3Rocm93c19k
b20oXCdTZWN1cml0eUVycm9yXCcsIGZ1bmN0aW9uICgpIHtcbicKICAgICAnICAgICAgICBoaXN0
b3J5LnB1c2hTdGF0ZShudWxsLCBudWxsLCBvcmlnaW5VUkwgKyAiL3BhdGgiKTtcbicKICAgICAn
ICAgIH0pO1xuJwogICAgICd9LCBcJ3B1c2hTdGF0ZSB0byBhIG5ldyBwYXRoIGluIHVuaXF1ZSBv
cmlnaW4gc2hvdWxkIGZhaWwgd2l0aCBTZWN1cml0eUVycm9yXCcpO1xuJwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbi5odG1sIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbi5odG1sCmlu
ZGV4IDM5MTg1OTAwMDcxMTM5NWVhZGUxNTFhNzQ4YmEyYmRiYjgyNzA4YmUuLjkzYTg3Y2I0OTBj
OGYzZTIwYmNlY2Y5ZjRhMzMxNGE5YmQ3M2E4MWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvbm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb24uaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL25vdGlmaWNhdGlvbnMvbm90aWZpY2F0aW9uLmh0bWwKQEAgLTExLDcgKzEx
LDcgQEAKIDxzY3JpcHQ+CiAKIHRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgYXNzZXJ0X3Rocm93cyhu
ZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgeyBuZXcgTm90aWZpY2F0aW9uKCk7IH0pOworICAg
IGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsgbmV3IE5vdGlmaWNhdGlv
bigpOyB9KTsKIH0sICJUaGUgTm90aWZpY2F0aW9uIGNvbnN0cnVjdG9yIHJlcXVpcmVzIGF0IGxl
YXN0IG9uZSBhcmd1bWVudC4iKTsKIAogdGVzdChmdW5jdGlvbigpIHsKQEAgLTUzLDcgKzUzLDcg
QEAgdGVzdChmdW5jdGlvbigpIHsKICAgICBsZXQgbm90aWZpY2F0aW9uMyA9IG5ldyBOb3RpZmlj
YXRpb24oInRlc3QgdGl0bGUiLCB7IGRpcjogInJ0bCIgfSk7CiAgICAgYXNzZXJ0X2VxdWFscyhu
b3RpZmljYXRpb24zLmRpciwgInJ0bCIpOwogCi0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVy
cm9yKCksIGZ1bmN0aW9uKCkgeyBuZXcgTm90aWZpY2F0aW9uKCJ0ZXN0IHRpdGxlIiwgeyBkaXI6
ICJmb28iIH0pIH0pOworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCBmdW5jdGlvbigp
IHsgbmV3IE5vdGlmaWNhdGlvbigidGVzdCB0aXRsZSIsIHsgZGlyOiAiZm9vIiB9KSB9KTsKIH0s
ICJUaGUgTm90aWZpY2F0aW9uT3B0aW9ucyBkaWN0aW9uYXJ5IG9ubHkgYWNjZXB0cyB2YWxpZCBO
b3RpZmljYXRpb25EaXJlY3Rpb24gdmFsdWVzLiIpOwogCiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1hZGRyZXNzLWF0
dHJpYnV0ZXMtYW5kLXRvSlNPTi1tZXRob2QuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1hZGRyZXNzLWF0dHJpYnV0ZXMtYW5kLXRvSlNP
Ti1tZXRob2QuaHR0cHMuaHRtbAppbmRleCBjNjAzOWI1MzBjZWY3MmZlOGIxZWNhZDk1ZWEzZTJh
NzRmYjMzNWJkLi5hNDZmOWIyMGM4YTYzNzY5MjE1OTVlNWE1M2QzYzUyMGNjMjQ4OTY1IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtYWRk
cmVzcy1hdHRyaWJ1dGVzLWFuZC10b0pTT04tbWV0aG9kLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LWFkZHJlc3MtYXR0cmlidXRl
cy1hbmQtdG9KU09OLW1ldGhvZC5odHRwcy5odG1sCkBAIC0zMSw4ICszMSw4IEBAIGZ1bmN0aW9u
IHJ1blRlc3QoYnV0dG9uLCBleHBlY3RlZCA9IHt9KSB7CiAgICAgICBhZGRyLmFkZHJlc3NMaW5l
IGluc3RhbmNlb2YgQXJyYXksCiAgICAgICAiRXhwZWN0ZWQgYWRkcmVzc0xpbmUgdG8gYmUgYW4g
YXJyYXkiCiAgICAgKTsKLSAgICBhc3NlcnRfdGhyb3dzKAotICAgICAgbmV3IFR5cGVFcnJvcigp
LAorICAgIGFzc2VydF90aHJvd3NfanMoCisgICAgICBUeXBlRXJyb3IsCiAgICAgICAoKSA9PiB7
CiAgICAgICAgIGFkZHIuYWRkcmVzc0xpbmUucHVzaCgidGhpcyBtdXN0IHRocm93Iik7CiAgICAg
ICB9LApAQCAtNTksOCArNTksOCBAQCBmdW5jdGlvbiBydW5UZXN0KGJ1dHRvbiwgZXhwZWN0ZWQg
PSB7fSkgewogICAgIH0KICAgICBhc3NlcnRfZXF1YWxzKGpzb25BZGRyZXNzRW50cmllcy5sZW5n
dGgsIGV4cGVjdGVkRW50cmllcy5sZW5ndGgpOwogICAgIC8vIENoZWNrIHRoYXQgLnRvSlNPTigp
IGNyZWF0ZWQgYSBmcm96ZW4gYXJyYXkKLSAgICBhc3NlcnRfdGhyb3dzKAotICAgICAgbmV3IFR5
cGVFcnJvcigpLAorICAgIGFzc2VydF90aHJvd3NfanMoCisgICAgICBUeXBlRXJyb3IsCiAgICAg
ICAoKSA9PiB7CiAgICAgICAgIGpzb25BZGRyZXNzLmFkZHJlc3NMaW5lLnB1c2goInRoaXMgbXVz
dCB0aHJvdyIpOwogICAgICAgfSwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
cGF5bWVudHJlcXVlc3QvcGF5bWVudC1pcy1zaG93aW5nLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtaXMtc2hvd2luZy5odHRwcy5odG1s
CmluZGV4IGE4NGI4YTI0ZGI3ZjNkYTZjMjJjYWUwZjI3MjkxNmNjOGZiMGY5M2UuLjgyNTEzODU5
ZGVmZmIxYWY5ZDdlNDVjYzc3YzlkZjcyM2Q5YzdhY2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1pcy1zaG93aW5nLmh0dHBzLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LWlzLXNo
b3dpbmcuaHR0cHMuaHRtbApAQCAtODEsNyArODEsNyBAQAogICAgICAgICAgIHJldHVybiBbcmVx
dWVzdDIuc2hvdygpXQogICAgICAgICB9CiAgICAgICApOwotICAgICAgYXdhaXQgcHJvbWlzZV9y
ZWplY3RzKAorICAgICAgYXdhaXQgcHJvbWlzZV9yZWplY3RzX2RvbSgKICAgICAgICAgdCwKICAg
ICAgICAgJ0Fib3J0RXJyb3InLAogICAgICAgICBzaG93UHJvbWlzZTIsCkBAIC04OSw3ICs4OSw3
IEBACiAgICAgICApOwogCiAgICAgICBhd2FpdCByZXF1ZXN0MS5hYm9ydCgpOwotICAgICAgYXdh
aXQgcHJvbWlzZV9yZWplY3RzKAorICAgICAgYXdhaXQgcHJvbWlzZV9yZWplY3RzX2RvbSgKICAg
ICAgICAgdCwKICAgICAgICAgJ0Fib3J0RXJyb3InLAogICAgICAgICBzaG93UHJvbWlzZTEsCkBA
IC0xMDAsNyArMTAwLDcgQEAKICAgICAgIC8vIGl0IHdpbGwgYWdhaW4gcmVzdWx0IGluIHByb21p
c2UgcmVqZWN0ZWQgd2l0aCBhbiBJbnZhbGlkU3RhdGVFcnJvci4KICAgICAgIC8vIFNlZTogaHR0
cHM6Ly9naXRodWIuY29tL3czYy9wYXltZW50LXJlcXVlc3QvcHVsbC84MjEKICAgICAgIGNvbnN0
IFtyZWplY3RlZFByb21pc2VdID0gYXdhaXQgYWN0aXZhdGVUaGVuKGFzeW5jICgpID0+IHsgcmV0
dXJuIFtyZXF1ZXN0Mi5zaG93KCldIH0pOwotICAgICAgYXdhaXQgcHJvbWlzZV9yZWplY3RzKAor
ICAgICAgYXdhaXQgcHJvbWlzZV9yZWplY3RzX2RvbSgKICAgICAgICAgdCwKICAgICAgICAgJ0lu
dmFsaWRTdGF0ZUVycm9yJywKICAgICAgICAgcmVqZWN0ZWRQcm9taXNlLApAQCAtMTM3LDcgKzEz
Nyw3IEBACiAgICAgICAgIH0KICAgICAgICk7CiAKLSAgICAgIGF3YWl0IHByb21pc2VfcmVqZWN0
cygKKyAgICAgIGF3YWl0IHByb21pc2VfcmVqZWN0c19kb20oCiAgICAgICAgIHQsCiAgICAgICAg
ICdBYm9ydEVycm9yJywKICAgICAgICAgd2luZG93U2hvd1Byb21pc2UsCkBAIC0xNDYsNyArMTQ2
LDcgQEAKIAogICAgICAgLy8gQ2xlYW51cAogICAgICAgYXdhaXQgaWZyYW1lUmVxdWVzdC5hYm9y
dCgpOwotICAgICAgYXdhaXQgcHJvbWlzZV9yZWplY3RzKAorICAgICAgYXdhaXQgcHJvbWlzZV9y
ZWplY3RzX2RvbSgKICAgICAgICAgdCwKICAgICAgICAgJ0Fib3J0RXJyb3InLAogICAgICAgICBp
ZnJhbWVTaG93UHJvbWlzZSwKQEAgLTE3Nyw3ICsxNzcsNyBAQAogICAgICAgICB9CiAgICAgICAp
OwogCi0gICAgICBhd2FpdCBwcm9taXNlX3JlamVjdHMoCisgICAgICBhd2FpdCBwcm9taXNlX3Jl
amVjdHNfZG9tKAogICAgICAgICB0LAogICAgICAgICAnQWJvcnRFcnJvcicsCiAgICAgICAgIGlm
cmFtZVNob3dQcm9taXNlLApAQCAtMTg2LDcgKzE4Niw3IEBACiAKICAgICAgIC8vIENsZWFudXAK
ICAgICAgIGF3YWl0IHdpbmRvd1JlcXVlc3QuYWJvcnQoKTsKLSAgICAgIGF3YWl0IHByb21pc2Vf
cmVqZWN0cygKKyAgICAgIGF3YWl0IHByb21pc2VfcmVqZWN0c19kb20oCiAgICAgICAgIHQsCiAg
ICAgICAgICdBYm9ydEVycm9yJywKICAgICAgICAgd2luZG93U2hvd1Byb21pc2UsCkBAIC0yMTcs
NyArMjE3LDcgQEAKICAgICAgICAgfQogICAgICAgKTsKIAotICAgICAgYXdhaXQgcHJvbWlzZV9y
ZWplY3RzKAorICAgICAgYXdhaXQgcHJvbWlzZV9yZWplY3RzX2RvbSgKICAgICAgICAgdCwKICAg
ICAgICAgJ0Fib3J0RXJyb3InLAogICAgICAgICBpZnJhbWVTaG93UHJvbWlzZSwKQEAgLTIyNSw3
ICsyMjUsNyBAQAogICAgICAgKTsKIAogICAgICAgYXdhaXQgd2luZG93UmVxdWVzdC5hYm9ydCgp
OwotICAgICAgYXdhaXQgcHJvbWlzZV9yZWplY3RzKAorICAgICAgYXdhaXQgcHJvbWlzZV9yZWpl
Y3RzX2RvbSgKICAgICAgICAgdCwKICAgICAgICAgJ0Fib3J0RXJyb3InLAogICAgICAgICB3aW5k
b3dTaG93UHJvbWlzZSwKQEAgLTI1Niw3ICsyNTYsNyBAQAogICAgICAgKTsKIAogICAgICAgLy8g
d2luZG93U2hvd1Byb21pc2UgYW5kIGlmcmFtZVJlcXVlc3Qgd2lsbCBib3RoIHJlamVjdAotICAg
ICAgYXdhaXQgcHJvbWlzZV9yZWplY3RzKAorICAgICAgYXdhaXQgcHJvbWlzZV9yZWplY3RzX2Rv
bSgKICAgICAgICAgdCwKICAgICAgICAgJ0Fib3J0RXJyb3InLAogICAgICAgICB3aW5kb3dTaG93
UHJvbWlzZSwKQEAgLTI2NCw3ICsyNjQsNyBAQAogICAgICAgKTsKIAogICAgICAgYXdhaXQgaWZy
YW1lUmVxdWVzdC5hYm9ydCgpOwotICAgICAgYXdhaXQgcHJvbWlzZV9yZWplY3RzKAorICAgICAg
YXdhaXQgcHJvbWlzZV9yZWplY3RzX2RvbSgKICAgICAgICAgdCwKICAgICAgICAgJ0Fib3J0RXJy
b3InLAogICAgICAgICBpZnJhbWVTaG93UHJvbWlzZSwKQEAgLTI4NCw3ICsyODQsNyBAQAogICAg
ICAgLy8gYW5kIHRoZSByZXF1ZXN0IGlzIHNob3dpbmcgYm9vbGVhbiB0byBiZWNvbWUgZmFsc2Uu
CiAgICAgICBpZnJhbWUuc3JjID0gJ3Jlc291cmNlcy9ibGFuay5odG1sP2FiYz0xMjMnOwogICAg
ICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiAoaWZyYW1lLm9ubG9hZCA9IHJlc29sdmUp
KTsKLSAgICAgIGF3YWl0IHByb21pc2VfcmVqZWN0cygKKyAgICAgIGF3YWl0IHByb21pc2VfcmVq
ZWN0c19kb20oCiAgICAgICAgIHQsCiAgICAgICAgICdBYm9ydEVycm9yJywKICAgICAgICAgaWZy
YW1lU2hvd1Byb21pc2UsCkBAIC0yOTYsNyArMjk2LDcgQEAKICAgICAgIGNvbnN0IHJlcXVlc3Qg
PSBuZXcgd2luZG93LlBheW1lbnRSZXF1ZXN0KG1ldGhvZHMsIGRldGFpbHMpOwogICAgICAgY29u
c3QgW3Nob3dQcm9taXNlXSA9IGF3YWl0IGFjdGl2YXRlVGhlbihhc3luYyAoKSA9PiB7IHJldHVy
biBbcmVxdWVzdC5zaG93KCldIH0pOwogICAgICAgYXdhaXQgcmVxdWVzdC5hYm9ydCgpOwotICAg
ICAgYXdhaXQgcHJvbWlzZV9yZWplY3RzKAorICAgICAgYXdhaXQgcHJvbWlzZV9yZWplY3RzX2Rv
bSgKICAgICAgICAgdCwKICAgICAgICAgJ0Fib3J0RXJyb3InLAogICAgICAgICBzaG93UHJvbWlz
ZSwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5
bWVudC1yZXF1ZXN0LWFib3J0LW1ldGhvZC5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LXJlcXVlc3QtYWJvcnQtbWV0aG9kLmh0dHBzLmh0
bWwKaW5kZXggYjRhNzM0MTFkN2U0N2IzY2U2NjRmMzliNDRhN2RmOGQ1YTRkYWQ2Yy4uOTk4NjZl
MzhiYTY4ZjA5MzYxZDg5MmQ1NGM1NGQwZThjZTU1Y2UyZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LXJlcXVlc3QtYWJvcnQtbWV0aG9k
Lmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9w
YXltZW50LXJlcXVlc3QtYWJvcnQtbWV0aG9kLmh0dHBzLmh0bWwKQEAgLTQxLDE1ICs0MSwxNSBA
QCBjb25zdCBkZWZhdWx0RGV0YWlscyA9IE9iamVjdC5mcmVlemUoewogcHJvbWlzZV90ZXN0KGFz
eW5jIHQgPT4gewogICAvLyByZXF1ZXN0IGlzIGluICJjcmVhdGVkIiBzdGF0ZQogICBjb25zdCBy
ZXF1ZXN0ID0gbmV3IFBheW1lbnRSZXF1ZXN0KGRlZmF1bHRNZXRob2RzLCBkZWZhdWx0RGV0YWls
cyk7Ci0gIGF3YWl0IHByb21pc2VfcmVqZWN0cyh0LCAiSW52YWxpZFN0YXRlRXJyb3IiLCByZXF1
ZXN0LmFib3J0KCkpOworICBhd2FpdCBwcm9taXNlX3JlamVjdHNfZG9tKHQsICJJbnZhbGlkU3Rh
dGVFcnJvciIsIHJlcXVlc3QuYWJvcnQoKSk7CiB9LCBgVGhyb3dzIGlmIHRoZSBwcm9taXNlIFtb
c3RhdGVdXSBpcyBub3QgImludGVyYWN0aXZlImApOwogCiBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9
PiB7CiAgIC8vIHJlcXVlc3QgaXMgaW4gImNyZWF0ZWQiIHN0YXRlLgogICBjb25zdCByZXF1ZXN0
ID0gbmV3IFBheW1lbnRSZXF1ZXN0KGRlZmF1bHRNZXRob2RzLCBkZWZhdWx0RGV0YWlscyk7Ci0g
IGF3YWl0IHByb21pc2VfcmVqZWN0cyh0LCAiSW52YWxpZFN0YXRlRXJyb3IiLCByZXF1ZXN0LmFi
b3J0KCkpOworICBhd2FpdCBwcm9taXNlX3JlamVjdHNfZG9tKHQsICJJbnZhbGlkU3RhdGVFcnJv
ciIsIHJlcXVlc3QuYWJvcnQoKSk7CiAgIC8vIENhbGwgaXQgYWdhaW4sIGZvciBnb29kIG1lYXN1
cmUuCi0gIGF3YWl0IHByb21pc2VfcmVqZWN0cyh0LCAiSW52YWxpZFN0YXRlRXJyb3IiLCByZXF1
ZXN0LmFib3J0KCkpOworICBhd2FpdCBwcm9taXNlX3JlamVjdHNfZG9tKHQsICJJbnZhbGlkU3Rh
dGVFcnJvciIsIHJlcXVlc3QuYWJvcnQoKSk7CiAgIC8vIFRoZSByZXF1ZXN0J3Mgc3RhdGUgaXMg
ImNyZWF0ZWQiLCBzbyBsZXQncyBzaG93IGl0CiAgIC8vIHdoaWNoIGNoYW5nZXMgdGhlIHN0YXRl
IHRvICJpbnRlcmFjdGl2ZS4iLgogICBhd2FpdCBhY3RpdmF0ZVRoZW4oYXN5bmMgKCkgPT4gewpA
QCAtNjIsNyArNjIsNyBAQCBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CiAgICAgfSAKICAgfSk7
CiAgIC8vIFRoZSByZXF1ZXN0IGlzIG5vdyAiY2xvc2VkIiwgc28uLi4KLSAgYXdhaXQgcHJvbWlz
ZV9yZWplY3RzKHQsICJJbnZhbGlkU3RhdGVFcnJvciIsIHJlcXVlc3QuYWJvcnQoKSk7CisgIGF3
YWl0IHByb21pc2VfcmVqZWN0c19kb20odCwgIkludmFsaWRTdGF0ZUVycm9yIiwgcmVxdWVzdC5h
Ym9ydCgpKTsKIH0sIGBDYWxsaW5nIGFib3J0IG11c3Qgbm90IGNoYW5nZSB0aGUgW1tzdGF0ZV1d
IHVudGlsIGFmdGVyICJpbnRlcmFjdGl2ZSJgKTsKIAogdXNlcl9hY3RpdmF0aW9uX3Rlc3QoYXN5
bmMgdCA9PiB7CkBAIC03MywxMCArNzMsMTAgQEAgdXNlcl9hY3RpdmF0aW9uX3Rlc3QoYXN5bmMg
dCA9PiB7CiAgIH0gY2F0Y2ggKGVycikgewogICAgIGFzc2VydF90cnVlKGZhbHNlLCAiVW5leHBl
Y3RlZCBwcm9taXNlIHJlamVjdGlvbjogIiArIGVyci5tZXNzYWdlKTsKICAgfQotICBhd2FpdCBw
cm9taXNlX3JlamVjdHModCwgIkFib3J0RXJyb3IiLCBhY2NlcHRQcm9taXNlKTsKKyAgYXdhaXQg
cHJvbWlzZV9yZWplY3RzX2RvbSh0LCAiQWJvcnRFcnJvciIsIGFjY2VwdFByb21pc2UpOwogICAv
LyBBcyByZXF1ZXN0IGlzIG5vdyAiY2xvc2VkIiwgdHJ5aW5nIHRvIHNob3cgaXQgd2lsbCBmYWls
CiAgIGF3YWl0IGFjdGl2YXRlVGhlbihhc3luYyAoKSA9PiB7Ci0gICAgYXdhaXQgcHJvbWlzZV9y
ZWplY3RzKHQsICJJbnZhbGlkU3RhdGVFcnJvciIsIHJlcXVlc3Quc2hvdygpKTsKKyAgICBhd2Fp
dCBwcm9taXNlX3JlamVjdHNfZG9tKHQsICJJbnZhbGlkU3RhdGVFcnJvciIsIHJlcXVlc3Quc2hv
dygpKTsKICAgfSk7CiB9LCAiY2FsbGluZyAuYWJvcnQoKSBjYXVzZXMgYWNjZXB0UHJvbWlzZSB0
byByZWplY3QgYW5kIGNsb3NlcyB0aGUgcmVxdWVzdC4iKTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LXJlcXVlc3QtY2FubWFrZXBh
eW1lbnQtbWV0aG9kLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRy
ZXF1ZXN0L3BheW1lbnQtcmVxdWVzdC1jYW5tYWtlcGF5bWVudC1tZXRob2QuaHR0cHMuaHRtbApp
bmRleCA0MzI3N2VhZTc1Y2MyZmU4ZGE2M2VjMmNmNDg3YjQyZWUwZjE2Y2UxLi5mMWZiMjViZDBj
Yjc2MTU1OTVkZWM2MDI3ZDIzOTc5YmQxMjY2YWMzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVxdWVzdC1jYW5tYWtlcGF5bWVudC1t
ZXRob2QuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1
ZXN0L3BheW1lbnQtcmVxdWVzdC1jYW5tYWtlcGF5bWVudC1tZXRob2QuaHR0cHMuaHRtbApAQCAt
NDQsMTMgKzQ0LDEzIEBAIHVzZXJfYWN0aXZhdGlvbl90ZXN0KGFzeW5jIHQgPT4gewogICAgICAg
YGNhbk1ha2VQYXltZW50UHJvbWlzZSBzaG91bGQgaGF2ZSB0aHJvd24gSW52YWxpZFN0YXRlRXJy
b3JgCiAgICAgKTsKICAgfSBjYXRjaCAoZXJyKSB7Ci0gICAgYXdhaXQgcHJvbWlzZV9yZWplY3Rz
KHQsICJJbnZhbGlkU3RhdGVFcnJvciIsIGNhbk1ha2VQYXltZW50UHJvbWlzZSk7CisgICAgYXdh
aXQgcHJvbWlzZV9yZWplY3RzX2RvbSh0LCAiSW52YWxpZFN0YXRlRXJyb3IiLCBjYW5NYWtlUGF5
bWVudFByb21pc2UpOwogICB9IGZpbmFsbHkgewogICAgIGF3YWl0IHJlcXVlc3QuYWJvcnQoKTsK
LSAgICBhd2FpdCBwcm9taXNlX3JlamVjdHModCwgIkFib3J0RXJyb3IiLCBhY2NlcHRQcm9taXNl
KTsKKyAgICBhd2FpdCBwcm9taXNlX3JlamVjdHNfZG9tKHQsICJBYm9ydEVycm9yIiwgYWNjZXB0
UHJvbWlzZSk7CiAgIH0KICAgLy8gVGhlIHN0YXRlIHNob3VsZCBiZSAiY2xvc2VkIgotICBhd2Fp
dCBwcm9taXNlX3JlamVjdHModCwgIkludmFsaWRTdGF0ZUVycm9yIiwgcmVxdWVzdC5jYW5NYWtl
UGF5bWVudCgpKTsKKyAgYXdhaXQgcHJvbWlzZV9yZWplY3RzX2RvbSh0LCAiSW52YWxpZFN0YXRl
RXJyb3IiLCByZXF1ZXN0LmNhbk1ha2VQYXltZW50KCkpOwogfSwgJ0lmIHJlcXVlc3QuW1tzdGF0
ZV1dIGlzICJpbnRlcmFjdGl2ZSIsIHRoZW4gcmV0dXJuIGEgcHJvbWlzZSByZWplY3RlZCB3aXRo
IGFuICJJbnZhbGlkU3RhdGVFcnJvciIgRE9NRXhjZXB0aW9uLicpOwogCiAvLyBGSVhNRTogVGhp
cyBjYW4gYmUgcmVtb3ZlZCBpbiBmYXZvciBvZiB0aGUgdGVzdCBpbiBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3BheW1lbnQtcmVxdWVzdCBvbmNlIHdlIHN1cHBvcnQgdGVzdF9kcml2
ZXIuYmxlc3MoKS4KQEAgLTU5LDcgKzU5LDcgQEAgdXNlcl9hY3RpdmF0aW9uX3Rlc3QoYXN5bmMg
dCA9PiB7CiAgIGNvbnN0IGFjY2VwdFByb21pc2UgPSByZXF1ZXN0LnNob3coKTsgLy8gU2V0cyBz
dGF0ZSB0byAiaW50ZXJhY3RpdmUiCiAgIGFjY2VwdFByb21pc2UuY2F0Y2goKCkgPT4ge30pOyAv
LyBuby1vcCwganVzdCB0byBzaWxlbmNlIHVuaGFuZGxlZCByZWplY3Rpb24gaW4gZGV2dG9vbHMu
CiAgIGF3YWl0IHJlcXVlc3QuYWJvcnQoKTsgLy8gVGhlIHN0YXRlIGlzIG5vdyAiY2xvc2VkIgot
ICBhd2FpdCBwcm9taXNlX3JlamVjdHModCwgIkludmFsaWRTdGF0ZUVycm9yIiwgcmVxdWVzdC5j
YW5NYWtlUGF5bWVudCgpKTsKKyAgYXdhaXQgcHJvbWlzZV9yZWplY3RzX2RvbSh0LCAiSW52YWxp
ZFN0YXRlRXJyb3IiLCByZXF1ZXN0LmNhbk1ha2VQYXltZW50KCkpOwogICB0cnkgewogICAgIGNv
bnN0IHJlc3VsdCA9IGF3YWl0IHJlcXVlc3QuY2FuTWFrZVBheW1lbnQoKTsKICAgICBhc3NlcnRf
dHJ1ZSgKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3Qv
cGF5bWVudC1yZXF1ZXN0LW1lcmNoYW50LXZhbGlkYXRpb24uaHR0cHMuaHRtbCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1yZXF1ZXN0LW1lcmNoYW50LXZh
bGlkYXRpb24uaHR0cHMuaHRtbAppbmRleCBiMDBhZWQzZmNhMzEyNzE2NzE0MDRjYzYwNDFjODQ5
OGQxN2FmOTYxLi42M2Q2NTk5Y2FiMzNmYjQxMTdkZmQ1ODJkMjUxMDY1MzAwOTg5MDM4IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVx
dWVzdC1tZXJjaGFudC12YWxpZGF0aW9uLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LXJlcXVlc3QtbWVyY2hhbnQtdmFsaWRhdGlv
bi5odHRwcy5odG1sCkBAIC0zNiwxMCArMzYsMTAgQEAgdXNlcl9hY3RpdmF0aW9uX3Rlc3QoYXN5
bmMgdCA9PiB7CiAgICAgcmVxdWVzdC5vbm1lcmNoYW50dmFsaWRhdGlvbiA9IGV2ZW50ID0+IHsK
ICAgICAgICAgYXNzZXJ0X2VxdWFscyhldmVudC52YWxpZGF0aW9uVVJMLCAiaHR0cHM6Ly93ZWJr
aXQub3JnLyIpOwogICAgICAgICBldmVudC5jb21wbGV0ZSh7IH0pOwotICAgICAgICBhc3NlcnRf
dGhyb3dzKCJJbnZhbGlkU3RhdGVFcnJvciIsICgpID0+IGV2ZW50LmNvbXBsZXRlKHsgfSkpOwor
ICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiSW52YWxpZFN0YXRlRXJyb3IiLCAoKSA9PiBldmVu
dC5jb21wbGV0ZSh7IH0pKTsKICAgICAgICAgcmVxdWVzdC5hYm9ydCgpOwogICAgIH07Ci0gICAg
YXdhaXQgcHJvbWlzZV9yZWplY3RzKHQsICJBYm9ydEVycm9yIiwgcmVxdWVzdC5zaG93KCkpOwor
ICAgIGF3YWl0IHByb21pc2VfcmVqZWN0c19kb20odCwgIkFib3J0RXJyb3IiLCByZXF1ZXN0LnNo
b3coKSk7CiB9LCAiQ2FsbGluZyBjb21wbGV0ZSgpIHR3aWNlIHRocm93cyBhbiBJbnZhbGlkU3Rh
dGVFcnJvci4iKTsKIAogdXNlcl9hY3RpdmF0aW9uX3Rlc3QoYXN5bmMgdCA9PiB7CkBAIC01MCw5
ICs1MCw5IEBAIHVzZXJfYWN0aXZhdGlvbl90ZXN0KGFzeW5jIHQgPT4gewogICAgIHJlcXVlc3Qu
b25tZXJjaGFudHZhbGlkYXRpb24gPSBldmVudCA9PiB7CiAgICAgICAgIGFzc2VydF9lcXVhbHMo
ZXZlbnQudmFsaWRhdGlvblVSTCwgImh0dHBzOi8vd2Via2l0Lm9yZy8iKTsKICAgICAgICAgcmVx
dWVzdC5hYm9ydCgpOwotICAgICAgICBhc3NlcnRfdGhyb3dzKCJJbnZhbGlkU3RhdGVFcnJvciIs
ICgpID0+IGV2ZW50LmNvbXBsZXRlKHsgfSkpOworICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgi
SW52YWxpZFN0YXRlRXJyb3IiLCAoKSA9PiBldmVudC5jb21wbGV0ZSh7IH0pKTsKICAgICB9Owot
ICAgIGF3YWl0IHByb21pc2VfcmVqZWN0cyh0LCAiQWJvcnRFcnJvciIsIHJlcXVlc3Quc2hvdygp
KTsKKyAgICBhd2FpdCBwcm9taXNlX3JlamVjdHNfZG9tKHQsICJBYm9ydEVycm9yIiwgcmVxdWVz
dC5zaG93KCkpOwogfSwgIkNhbGxpbmcgY29tcGxldGUoKSBhZnRlciBhYm9ydCgpIHRocm93cyBh
biBJbnZhbGlkU3RhdGVFcnJvci4iKTsKIAogdXNlcl9hY3RpdmF0aW9uX3Rlc3QoYXN5bmMgdCA9
PiB7CkBAIC02NCw3ICs2NCw3IEBAIHVzZXJfYWN0aXZhdGlvbl90ZXN0KGFzeW5jIHQgPT4gewog
ICAgICAgICBhc3NlcnRfZXF1YWxzKGV2ZW50LnZhbGlkYXRpb25VUkwsICJodHRwczovL3dlYmtp
dC5vcmcvIik7CiAgICAgICAgIGV2ZW50LmNvbXBsZXRlKG5ldyBQcm9taXNlKChyZXNvbHZlLCBy
ZWplY3QpID0+IHJlamVjdCgpKSk7CiAgICAgfTsKLSAgICBhd2FpdCBwcm9taXNlX3JlamVjdHMo
dCwgIkFib3J0RXJyb3IiLCByZXF1ZXN0LnNob3coKSk7CisgICAgYXdhaXQgcHJvbWlzZV9yZWpl
Y3RzX2RvbSh0LCAiQWJvcnRFcnJvciIsIHJlcXVlc3Quc2hvdygpKTsKIH0sICJDYWxsaW5nIGNv
bXBsZXRlKCkgd2l0aCBhIHByb21pc2UgdGhhdCBpcyByZWplY3RlZCBhYm9ydHMgdGhlIHJlcXVl
c3QuIik7CiAKIHVzZXJfYWN0aXZhdGlvbl90ZXN0KGFzeW5jIHQgPT4gewpAQCAtNzYsNyArNzYs
NyBAQCB1c2VyX2FjdGl2YXRpb25fdGVzdChhc3luYyB0ID0+IHsKICAgICAgICAgYXNzZXJ0X2Vx
dWFscyhldmVudC52YWxpZGF0aW9uVVJMLCAiaHR0cHM6Ly93ZWJraXQub3JnLyIpOwogICAgICAg
ICBldmVudC5jb21wbGV0ZShuZXcgUHJvbWlzZShyZXNvbHZlID0+IHJlc29sdmUoNykpKTsKICAg
ICB9OwotICAgIGF3YWl0IHByb21pc2VfcmVqZWN0cyh0LCBuZXcgVHlwZUVycm9yKCksIHJlcXVl
c3Quc2hvdygpKTsKKyAgICBhd2FpdCBwcm9taXNlX3JlamVjdHNfanModCwgVHlwZUVycm9yLCBy
ZXF1ZXN0LnNob3coKSk7CiB9LCAiQ2FsbGluZyBjb21wbGV0ZSgpIHdpdGggYSBudW1iZXIgYWJv
cnRzIHRoZSByZXF1ZXN0IHdpdGggYSBUeXBlRXJyb3IuIik7CiAKIHVzZXJfYWN0aXZhdGlvbl90
ZXN0KGFzeW5jIHQgPT4gewpAQCAtODgsNyArODgsNyBAQCB1c2VyX2FjdGl2YXRpb25fdGVzdChh
c3luYyB0ID0+IHsKICAgICAgICAgYXNzZXJ0X2VxdWFscyhldmVudC52YWxpZGF0aW9uVVJMLCAi
aHR0cHM6Ly93ZWJraXQub3JnLyIpOwogICAgICAgICBldmVudC5jb21wbGV0ZShuZXcgUHJvbWlz
ZShyZXNvbHZlID0+IHJlc29sdmUodW5kZWZpbmVkKSkpOwogICAgIH07Ci0gICAgYXdhaXQgcHJv
bWlzZV9yZWplY3RzKHQsIG5ldyBUeXBlRXJyb3IoKSwgcmVxdWVzdC5zaG93KCkpOworICAgIGF3
YWl0IHByb21pc2VfcmVqZWN0c19qcyh0LCBUeXBlRXJyb3IsIHJlcXVlc3Quc2hvdygpKTsKIH0s
ICJDYWxsaW5nIGNvbXBsZXRlKCkgd2l0aCB1bmRlZmluZWQgYWJvcnRzIHRoZSByZXF1ZXN0IHdp
dGggYSBUeXBlRXJyb3IuIik7CiAKIHVzZXJfYWN0aXZhdGlvbl90ZXN0KGFzeW5jIHQgPT4gewpA
QCAtMTAwLDcgKzEwMCw3IEBAIHVzZXJfYWN0aXZhdGlvbl90ZXN0KGFzeW5jIHQgPT4gewogICAg
ICAgICBhc3NlcnRfZXF1YWxzKGV2ZW50LnZhbGlkYXRpb25VUkwsICJodHRwczovL3dlYmtpdC5v
cmcvIik7CiAgICAgICAgIGV2ZW50LmNvbXBsZXRlKG5ldyBQcm9taXNlKHJlc29sdmUgPT4gcmVz
b2x2ZShudWxsKSkpOwogICAgIH07Ci0gICAgYXdhaXQgcHJvbWlzZV9yZWplY3RzKHQsIG5ldyBU
eXBlRXJyb3IoKSwgcmVxdWVzdC5zaG93KCkpOworICAgIGF3YWl0IHByb21pc2VfcmVqZWN0c19q
cyh0LCBUeXBlRXJyb3IsIHJlcXVlc3Quc2hvdygpKTsKIH0sICJDYWxsaW5nIGNvbXBsZXRlKCkg
d2l0aCBudWxsIGFib3J0cyB0aGUgcmVxdWVzdCB3aXRoIGEgVHlwZUVycm9yLiIpOwogCiB1c2Vy
X2FjdGl2YXRpb25fdGVzdChhc3luYyB0ID0+IHsKQEAgLTExMiw3ICsxMTIsNyBAQCB1c2VyX2Fj
dGl2YXRpb25fdGVzdChhc3luYyB0ID0+IHsKICAgICAgICAgYXNzZXJ0X2VxdWFscyhldmVudC52
YWxpZGF0aW9uVVJMLCAiaHR0cHM6Ly93ZWJraXQub3JnLyIpOwogICAgICAgICBldmVudC5jb21w
bGV0ZShuZXcgUHJvbWlzZShyZXNvbHZlID0+IHJlc29sdmUoIiIpKSk7CiAgICAgfTsKLSAgICBh
d2FpdCBwcm9taXNlX3JlamVjdHModCwgbmV3IFR5cGVFcnJvcigpLCByZXF1ZXN0LnNob3coKSk7
CisgICAgYXdhaXQgcHJvbWlzZV9yZWplY3RzX2pzKHQsIFR5cGVFcnJvciwgcmVxdWVzdC5zaG93
KCkpOwogfSwgIkNhbGxpbmcgY29tcGxldGUoKSB3aXRoIGEgc3RyaW5nIGFib3J0cyB0aGUgcmVx
dWVzdCB3aXRoIGEgVHlwZUVycm9yLiIpOwogCiB1c2VyX2FjdGl2YXRpb25fdGVzdChhc3luYyB0
ID0+IHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3Qv
cGF5bWVudC1yZXF1ZXN0LXNob3ctbWV0aG9kLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVxdWVzdC1zaG93LW1ldGhvZC5odHRwcy5o
dG1sCmluZGV4IDQzMmEwOWZlNGM2ODM4NDFiZDhhYTVhYTM5MTkwMDU0NDQyMDZjYTUuLjhmZDc4
ODRlNTA4MGM3MWQwYzc1NTI1ZDk4ZWFkNDQ5MmRiMmM0ZDcgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1yZXF1ZXN0LXNob3ctbWV0aG9k
Lmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9w
YXltZW50LXJlcXVlc3Qtc2hvdy1tZXRob2QuaHR0cHMuaHRtbApAQCAtNDYsOSArNDYsOSBAQCB0
ZXN0KCgpID0+IHsKIHVzZXJfYWN0aXZhdGlvbl90ZXN0KGFzeW5jIHQgPT4gewogICBjb25zdCBy
ZXF1ZXN0ID0gbmV3IFBheW1lbnRSZXF1ZXN0KGRlZmF1bHRNZXRob2RzLCBkZWZhdWx0RGV0YWls
cyk7CiAgIGNvbnN0IGFjY2VwdFByb21pc2UgPSByZXF1ZXN0LnNob3coKTsgLy8gU2V0cyBzdGF0
ZSB0byAiaW50ZXJhY3RpdmUiCi0gIGF3YWl0IHByb21pc2VfcmVqZWN0cyh0LCAiU2VjdXJpdHlF
cnJvciIsIHJlcXVlc3Quc2hvdygpKTsKKyAgYXdhaXQgcHJvbWlzZV9yZWplY3RzX2RvbSh0LCAi
U2VjdXJpdHlFcnJvciIsIHJlcXVlc3Quc2hvdygpKTsKICAgYXdhaXQgcmVxdWVzdC5hYm9ydCgp
OwotICBhd2FpdCBwcm9taXNlX3JlamVjdHModCwgIkFib3J0RXJyb3IiLCBhY2NlcHRQcm9taXNl
KTsKKyAgYXdhaXQgcHJvbWlzZV9yZWplY3RzX2RvbSh0LCAiQWJvcnRFcnJvciIsIGFjY2VwdFBy
b21pc2UpOwogfSwgYFRocm93cyBpZiB0aGUgcHJvbWlzZSBbW3N0YXRlXV0gaXMgbm90ICJjcmVh
dGVkImApOwogCiB1c2VyX2FjdGl2YXRpb25fdGVzdChhc3luYyB0ID0+IHsKQEAgLTU2LDkgKzU2
LDkgQEAgdXNlcl9hY3RpdmF0aW9uX3Rlc3QoYXN5bmMgdCA9PiB7CiAgIGNvbnN0IHJlcXVlc3Qy
ID0gbmV3IFBheW1lbnRSZXF1ZXN0KGRlZmF1bHRNZXRob2RzLCBkZWZhdWx0RGV0YWlscyk7CiAg
IGNvbnN0IGFjY2VwdFByb21pc2UxID0gcmVxdWVzdDEuc2hvdygpOwogICBjb25zdCBhY2NlcHRQ
cm9taXNlMiA9IHJlcXVlc3QyLnNob3coKTsKLSAgYXdhaXQgcHJvbWlzZV9yZWplY3RzKHQsICJT
ZWN1cml0eUVycm9yIiwgYWNjZXB0UHJvbWlzZTIpOworICBhd2FpdCBwcm9taXNlX3JlamVjdHNf
ZG9tKHQsICJTZWN1cml0eUVycm9yIiwgYWNjZXB0UHJvbWlzZTIpOwogICBhd2FpdCByZXF1ZXN0
MS5hYm9ydCgpOwotICBhd2FpdCBwcm9taXNlX3JlamVjdHModCwgIkFib3J0RXJyb3IiLCBhY2Nl
cHRQcm9taXNlMSk7CisgIGF3YWl0IHByb21pc2VfcmVqZWN0c19kb20odCwgIkFib3J0RXJyb3Ii
LCBhY2NlcHRQcm9taXNlMSk7CiB9LCBgSWYgdGhlIHVzZXIgYWdlbnQncyAicGF5bWVudCByZXF1
ZXN0IGlzIHNob3dpbmciIGJvb2xlYW4gaXMgdHJ1ZSwgdGhlbiByZXR1cm4gYSBwcm9taXNlIHJl
amVjdGVkIHdpdGggYW4gIkFib3J0RXJyb3IiIERPTUV4Y2VwdGlvbi5gKTsKIAogdXNlcl9hY3Rp
dmF0aW9uX3Rlc3QoYXN5bmMgdCA9PiB7CkBAIC02Niw3ICs2Niw3IEBAIHVzZXJfYWN0aXZhdGlv
bl90ZXN0KGFzeW5jIHQgPT4gewogICAgIFt7IHN1cHBvcnRlZE1ldGhvZHM6ICJ0aGlzLWlzLW5v
dC1zdXBwb3J0ZWQiIH1dLAogICAgIGRlZmF1bHREZXRhaWxzKTsKICAgY29uc3QgYWNjZXB0UHJv
bWlzZSA9IHJlcXVlc3Quc2hvdygpOwotICBhd2FpdCBwcm9taXNlX3JlamVjdHModCwgIk5vdFN1
cHBvcnRlZEVycm9yIiwgYWNjZXB0UHJvbWlzZSk7CisgIGF3YWl0IHByb21pc2VfcmVqZWN0c19k
b20odCwgIk5vdFN1cHBvcnRlZEVycm9yIiwgYWNjZXB0UHJvbWlzZSk7CiB9LCBgSWYgcGF5bWVu
dCBtZXRob2QgY29uc3VsdGF0aW9uIHByb2R1Y2VzIG5vIHN1cHBvcnRlZCBtZXRob2Qgb2YgcGF5
bWVudCwgdGhlbiByZXR1cm4gYSBwcm9taXNlIHJlamVjdGVkIHdpdGggYSAiTm90U3VwcG9ydGVk
RXJyb3IiIERPTUV4Y2VwdGlvbi5gKTsKIAogdXNlcl9hY3RpdmF0aW9uX3Rlc3QoYXN5bmMgdCA9
PiB7CkBAIC03NCwxNCArNzQsMTQgQEAgdXNlcl9hY3RpdmF0aW9uX3Rlc3QoYXN5bmMgdCA9PiB7
CiAgICAgW3sgc3VwcG9ydGVkTWV0aG9kczogImh0dHBzOi8vYXBwbGUuY29tL2FwcGxlLXBheSIg
fV0sCiAgICAgZGVmYXVsdERldGFpbHMpOwogICBjb25zdCBhY2NlcHRQcm9taXNlID0gcmVxdWVz
dC5zaG93KCk7Ci0gIGF3YWl0IHByb21pc2VfcmVqZWN0cyh0LCBuZXcgVHlwZUVycm9yLCBhY2Nl
cHRQcm9taXNlKTsKKyAgYXdhaXQgcHJvbWlzZV9yZWplY3RzX2pzKHQsIFR5cGVFcnJvciwgYWNj
ZXB0UHJvbWlzZSk7CiB9LCBgSWYgZGF0YSBjb252ZXJzaW9uIHJlc3VsdHMgaW4gYW4gZXJyb3Is
IHRoZW4gcmV0dXJuIGEgcHJvbWlzZSByZWplY3RlZCB3aXRoIGEgIlR5cGVFcnJvciIgRE9NRXhj
ZXB0aW9uLmApOwogCiB1c2VyX2FjdGl2YXRpb25fdGVzdChhc3luYyB0ID0+IHsKICAgY29uc3Qg
cmVxdWVzdCA9IG5ldyBQYXltZW50UmVxdWVzdChkZWZhdWx0TWV0aG9kcywgZGVmYXVsdERldGFp
bHMpOwogICBjb25zdCBhY2NlcHRQcm9taXNlID0gcmVxdWVzdC5zaG93KCk7IC8vIFNldHMgc3Rh
dGUgdG8gImludGVyYWN0aXZlIgogICBpbnRlcm5hbHMubW9ja1BheW1lbnRDb29yZGluYXRvci5j
YW5jZWxQYXltZW50KCk7Ci0gIGF3YWl0IHByb21pc2VfcmVqZWN0cyh0LCAiQWJvcnRFcnJvciIs
IGFjY2VwdFByb21pc2UpOworICBhd2FpdCBwcm9taXNlX3JlamVjdHNfZG9tKHQsICJBYm9ydEVy
cm9yIiwgYWNjZXB0UHJvbWlzZSk7CiB9LCBgSWYgdGhlIHVzZXIgYWJvcnRzIHRoZSBwYXltZW50
IHJlcXVlc3QgYWxnb3JpdGhtLCB0aGVuIHJldHVybiBhIHByb21pc2UgcmVqZWN0ZWQgd2l0aCBh
biAiQWJvcnRFcnJvciIgRE9NRXhjZXB0aW9uLmApOwogCiB1c2VyX2FjdGl2YXRpb25fdGVzdChh
c3luYyB0ID0+IHsKQEAgLTkyLDcgKzkyLDcgQEAgdXNlcl9hY3RpdmF0aW9uX3Rlc3QoYXN5bmMg
dCA9PiB7CiAgICAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiByZXNvbHZlKGRlZmF1bHREZXRh
aWxzKSk7CiAgICAgfSk7CiAgIH0pKTsgLy8gU2V0cyBzdGF0ZSB0byAiaW50ZXJhY3RpdmUiCi0g
IGF3YWl0IHByb21pc2VfcmVqZWN0cyh0LCAiQWJvcnRFcnJvciIsIGFjY2VwdFByb21pc2UpOwor
ICBhd2FpdCBwcm9taXNlX3JlamVjdHNfZG9tKHQsICJBYm9ydEVycm9yIiwgYWNjZXB0UHJvbWlz
ZSk7CiB9LCBgSWYgdGhlIHVzZXIgYWJvcnRzIHRoZSBwYXltZW50IHJlcXVlc3QgYWxnb3JpdGht
IHdoaWxlIGRldGFpbHMgYXJlIHVwZGF0aW5nLCB0aGVuIHJlamVjdCB0aGUgYWNjZXB0IHByb21p
c2Ugd2l0aCBhbiAiQWJvcnRFcnJvciIgd2hlbiB0aGUgZGV0YWlscyBzZXR0bGUuYCk7CiAKIHVz
ZXJfYWN0aXZhdGlvbl90ZXN0KGFzeW5jIHQgPT4gewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LXJlc3BvbnNlLXJlamVjdHMtaWYtbm90
LWFjdGl2ZS5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVz
dC9wYXltZW50LXJlc3BvbnNlLXJlamVjdHMtaWYtbm90LWFjdGl2ZS5odHRwcy5odG1sCmluZGV4
IDMyZDEwMWY2NjVkM2Y3OWFiMDZiNjE3ODhmODI5YzQwOWUwYmNjMjkuLjBhODBiN2MzYmNjNGNl
NzVmZjk3ZWY0MzE4YWQyMTZhNjdmMTY5YmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1yZXNwb25zZS1yZWplY3RzLWlmLW5vdC1hY3Rp
dmUuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0
L3BheW1lbnQtcmVzcG9uc2UtcmVqZWN0cy1pZi1ub3QtYWN0aXZlLmh0dHBzLmh0bWwKQEAgLTU5
LDEyICs1OSwxNCBAQCBmdW5jdGlvbiBtZXRob2ROb3RGdWxseUFjdGl2ZSh0ZXh0LCBtZXRob2RO
YW1lLCAuLi5hcmdzKSB7CiAgICAgICBpZnJhbWUuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIHJl
c29sdmUpOwogICAgICAgaWZyYW1lLnNyYyA9ICIvcGF5bWVudC1yZXF1ZXN0L3Jlc291cmNlcy9w
YWdlMi5odG1sIjsKICAgICB9KTsKKyAgICBjb25zdCBpZnJhbWVET01FeGNlcHRpb24gPSBpZnJh
bWUuY29udGVudFdpbmRvdy5ET01FeGNlcHRpb247CiAgICAgLy8gTm93LCByZXNwb25zZSdzIHJl
bGV2YW50IGdsb2JhbCBvYmplY3QncyBkb2N1bWVudCBpcyBubyBsb25nZXIgYWN0aXZlLgogICAg
IC8vIFNvLCBwcm9taXNlIG5lZWRzIHRvIHJlamVjdCBhcHByb3ByaWF0ZWx5LgogICAgIGNvbnN0
IHByb21pc2UgPSByZXNwb25zZVttZXRob2ROYW1lXSguLi5hcmdzKTsKLSAgICBhd2FpdCBwcm9t
aXNlX3JlamVjdHMoCisgICAgYXdhaXQgcHJvbWlzZV9yZWplY3RzX2RvbSgKICAgICAgIHQsCiAg
ICAgICAiQWJvcnRFcnJvciIsCisgICAgICBpZnJhbWVET01FeGNlcHRpb24sCiAgICAgICBwcm9t
aXNlLAogICAgICAgIkluYWN0aXZlIGRvY3VtZW50LCBzbyBtdXN0IHRocm93IEFib3J0RXJyb3Ii
CiAgICAgKTsKQEAgLTkzLDEyICs5NSwxNCBAQCBmdW5jdGlvbiBtZXRob2RCZWNvbWVzTm90RnVs
bHlBY3RpdmUodGV4dCwgbWV0aG9kTmFtZSwgLi4uYXJncykgewogICAgICAgaWZyYW1lLmFkZEV2
ZW50TGlzdGVuZXIoImxvYWQiLCByZXNvbHZlKTsKICAgICAgIGlmcmFtZS5zcmMgPSAiL3BheW1l
bnQtcmVxdWVzdC9yZXNvdXJjZXMvcGFnZTIuaHRtbCI7CiAgICAgfSk7CisgICAgY29uc3QgaWZy
YW1lRE9NRXhjZXB0aW9uID0gaWZyYW1lLmNvbnRlbnRXaW5kb3cuRE9NRXhjZXB0aW9uOwogCiAg
ICAgLy8gTm93LCByZXNwb25zZSdzIHJlbGV2YW50IGdsb2JhbCBvYmplY3QncyBkb2N1bWVudCBp
cyBubyBsb25nZXIgYWN0aXZlLgogICAgIC8vIFNvLCBwcm9taXNlIG5lZWRzIHRvIHJlamVjdCBh
cHByb3ByaWF0ZWx5LgotICAgIGF3YWl0IHByb21pc2VfcmVqZWN0cygKKyAgICBhd2FpdCBwcm9t
aXNlX3JlamVjdHNfZG9tKAogICAgICAgdCwKICAgICAgICJBYm9ydEVycm9yIiwKKyAgICAgIGlm
cmFtZURPTUV4Y2VwdGlvbiwKICAgICAgIHByb21pc2UsCiAgICAgICAiSW5hY3RpdmUgZG9jdW1l
bnQsIHNvIG11c3QgdGhyb3cgQWJvcnRFcnJvciIKICAgICApOwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LXJlc3BvbnNlLXJldHJ5LW1l
dGhvZC5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9w
YXltZW50LXJlc3BvbnNlLXJldHJ5LW1ldGhvZC5odHRwcy5odG1sCmluZGV4IDY0YTQxMWFjNWIx
MGY2YjIzNTRmMDIzYmY1YjI3ZmYxZWMxNzk2ODkuLmNmNjA1MDc3Y2IzMmU2YzUxOTI1MWViMzVh
ZDEzNmNjODI2MTU1MzAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVu
dHJlcXVlc3QvcGF5bWVudC1yZXNwb25zZS1yZXRyeS1tZXRob2QuaHR0cHMuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVzcG9uc2UtcmV0
cnktbWV0aG9kLmh0dHBzLmh0bWwKQEAgLTI5LDcgKzI5LDcgQEAgcHJvbWlzZV90ZXN0KGFzeW5j
IHQgPT4gewogICBjb25zdCB7IHJlc3BvbnNlIH0gPSBhd2FpdCBnZXRQYXltZW50UmVxdWVzdFJl
c3BvbnNlKCk7CiAgIC8vIHNldHMgcmVzcG9uc2UuW1tjb21wbGV0ZV1dIHRvIHRydWUuCiAgIGF3
YWl0IHJlc3BvbnNlLmNvbXBsZXRlKCJzdWNjZXNzIik7Ci0gIHJldHVybiBwcm9taXNlX3JlamVj
dHMoCisgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZG9tKAogICAgIHQsCiAgICAgIkludmFsaWRT
dGF0ZUVycm9yIiwKICAgICByZXNwb25zZS5yZXRyeSh7fSksCkBAIC00MCw3ICs0MCw3IEBAIHBy
b21pc2VfdGVzdChhc3luYyB0ID0+IHsKIHByb21pc2VfdGVzdChhc3luYyB0ID0+IHsKICAgY29u
c3QgeyByZXNwb25zZSB9ID0gYXdhaXQgZ2V0UGF5bWVudFJlcXVlc3RSZXNwb25zZSgpOwogICBj
b25zdCByZXRyeVByb21pc2UgPSByZXNwb25zZS5yZXRyeSh7fSk7Ci0gIGF3YWl0IHByb21pc2Vf
cmVqZWN0cygKKyAgYXdhaXQgcHJvbWlzZV9yZWplY3RzX2RvbSgKICAgICB0LAogICAgICJJbnZh
bGlkU3RhdGVFcnJvciIsCiAgICAgcmVzcG9uc2UucmV0cnkoe30pLApAQCAtNTQsNyArNTQsNyBA
QCBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CiBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CiAg
IGNvbnN0IHsgcmVzcG9uc2UgfSA9IGF3YWl0IGdldFBheW1lbnRSZXF1ZXN0UmVzcG9uc2UoKTsK
ICAgY29uc3QgcmV0cnlQcm9taXNlID0gcmVzcG9uc2UucmV0cnkoe30pOwotICBhd2FpdCBwcm9t
aXNlX3JlamVjdHMoCisgIGF3YWl0IHByb21pc2VfcmVqZWN0c19kb20oCiAgICAgdCwKICAgICAi
SW52YWxpZFN0YXRlRXJyb3IiLAogICAgIHJlc3BvbnNlLmNvbXBsZXRlKCJzdWNjZXNzIiksCkBA
IC02OCw3ICs2OCw3IEBAIHByb21pc2VfdGVzdChhc3luYyB0ID0+IHsKIHByb21pc2VfdGVzdChh
c3luYyB0ID0+IHsKICAgY29uc3QgeyByZXNwb25zZSwgcmVxdWVzdCB9ID0gYXdhaXQgZ2V0UGF5
bWVudFJlcXVlc3RSZXNwb25zZSgpOwogICBjb25zdCByZXRyeVByb21pc2UgPSByZXNwb25zZS5y
ZXRyeSh7fSk7Ci0gIGF3YWl0IHByb21pc2VfcmVqZWN0cygKKyAgYXdhaXQgcHJvbWlzZV9yZWpl
Y3RzX2RvbSgKICAgICB0LAogICAgICJJbnZhbGlkU3RhdGVFcnJvciIsCiAgICAgcmVxdWVzdC5h
Ym9ydCgpLApAQCAtOTYsNyArOTYsNyBAQCBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CiAgICAg
IkV4cGVjdGVkIHVuZGVmaW5lZCBhcyB0aGUgcmVzb2x2ZSB2YWx1ZSIKICAgKTsKICAgYXdhaXQg
cmVzcG9uc2UuY29tcGxldGUoInN1Y2Nlc3MiKTsKLSAgYXdhaXQgcHJvbWlzZV9yZWplY3RzKAor
ICBhd2FpdCBwcm9taXNlX3JlamVjdHNfZG9tKAogICAgIHQsCiAgICAgIkludmFsaWRTdGF0ZUVy
cm9yIiwKICAgICByZXNwb25zZS5yZXRyeSh7fSksCkBAIC0xMDgsMTkgKzEwOCwxOSBAQCBwcm9t
aXNlX3Rlc3QoYXN5bmMgdCA9PiB7CiAgIGNvbnN0IHsgcmVzcG9uc2UgfSA9IGF3YWl0IGdldFBh
eW1lbnRSZXF1ZXN0UmVzcG9uc2UoKTsKICAgdmFyIHByb21pc2UgPSByZXNwb25zZS5yZXRyeSh7
fSk7CiAgIGludGVybmFscy5tb2NrUGF5bWVudENvb3JkaW5hdG9yLmNhbmNlbFBheW1lbnQoKTsK
LSAgYXdhaXQgcHJvbWlzZV9yZWplY3RzKAorICBhd2FpdCBwcm9taXNlX3JlamVjdHNfZG9tKAog
ICAgIHQsCiAgICAgIkFib3J0RXJyb3IiLAogICAgIHByb21pc2UsCiAgICAgIlRoZSB1c2VyIGFi
b3J0aW5nIGEgcmV0cnkgcmVqZWN0cyB3aXRoIGEgQWJvcnRFcnJvciIKICAgKTsKLSAgYXdhaXQg
cHJvbWlzZV9yZWplY3RzKAorICBhd2FpdCBwcm9taXNlX3JlamVjdHNfZG9tKAogICAgIHQsCiAg
ICAgIkludmFsaWRTdGF0ZUVycm9yIiwKICAgICByZXNwb25zZS5yZXRyeSh7fSksCiAgICAgIkFm
dGVyIHRoZSB1c2VyIGFib3J0cywgcmVzcG9uc2UgW1tjb21wbGV0ZV1dIGlzIHRydWUgc28gcmV0
cnkoKSBtdXN0IHJlamVjdCB3aXRoIEludmFsaWRTdGF0ZUVycm9yIgogICApOwotICBhd2FpdCBw
cm9taXNlX3JlamVjdHMoCisgIGF3YWl0IHByb21pc2VfcmVqZWN0c19kb20oCiAgICAgdCwKICAg
ICAiSW52YWxpZFN0YXRlRXJyb3IiLAogICAgIHJlc3BvbnNlLmNvbXBsZXRlKCJzdWNjZXNzIiks
CkBAIC0xNTgsMTMgKzE1OCwxMyBAQCBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CiAgIGNvbnN0
IHJldHJ5UHJvbWlzZSA9IHJlc3BvbnNlLnJldHJ5KHt9KTsKICAgaW50ZXJuYWxzLm1vY2tQYXlt
ZW50Q29vcmRpbmF0b3IuY2hhbmdlU2hpcHBpbmdPcHRpb24oIm9wdGlvbiIpOwogICBhd2FpdCBz
aGlwcGluZ0NoYW5nZWRQcm9taXNlOwotICBhd2FpdCBwcm9taXNlX3JlamVjdHMoCisgIGF3YWl0
IHByb21pc2VfcmVqZWN0c19qcygKICAgICB0LAotICAgIG5ldyBUeXBlRXJyb3IoKSwKKyAgICBU
eXBlRXJyb3IsCiAgICAgcmV0cnlQcm9taXNlLAogICAgICJyZXRyeSgpIGFib3J0cyB3aXRoIGEg
VHlwZUVycm9yLCBiZWNhdXNlIHRvdGFscycgdmFsdWUgaXMgaW52YWxpZCIKICAgKTsKLSAgYXdh
aXQgcHJvbWlzZV9yZWplY3RzKAorICBhd2FpdCBwcm9taXNlX3JlamVjdHNfZG9tKAogICAgIHQs
CiAgICAgIkludmFsaWRTdGF0ZUVycm9yIiwKICAgICByZXNwb25zZS5jb21wbGV0ZSgic3VjY2Vz
cyIpLApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9y
ZWplY3RzX2lmX25vdF9hY3RpdmUuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
cGF5bWVudHJlcXVlc3QvcmVqZWN0c19pZl9ub3RfYWN0aXZlLmh0dHBzLmh0bWwKaW5kZXggOTZl
OGY2YTQ4YzE2Njg0OGU4M2ViNmYzYWYyYWQ5MTEyZDRhOTc4Ni4uY2Y2NDEwYmI0N2M2N2I2ZWEx
MzczNjZkN2UyM2EyZTI0YzcwZTRkNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9wYXltZW50cmVxdWVzdC9yZWplY3RzX2lmX25vdF9hY3RpdmUuaHR0cHMuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3JlamVjdHNfaWZfbm90X2FjdGl2
ZS5odHRwcy5odG1sCkBAIC02Miw2ICs2Miw3IEBAIHByb21pc2VfdGVzdChhc3luYyB0ID0+IHsK
ICAgICBpZnJhbWUsCiAgICAgInJlc291cmNlcy9wYWdlMS5odG1sIgogICApOworICBjb25zdCBm
aXJzdEN0b3IgPSBpZnJhbWUuY29udGVudFdpbmRvdy5ET01FeGNlcHRpb247CiAKICAgLy8gV2Ug
bmF2aWdhdGUgdGhlIGlmcmFtZSBhZ2FpbiwgcHV0dGluZyByZXF1ZXN0MSdzIGRvY3VtZW50IGlu
dG8gYW4gaW5hY3RpdmUgc3RhdGUuCiAgIGNvbnN0IHJlcXVlc3QyID0gYXdhaXQgZ2V0TG9hZGVk
UGF5bWVudFJlcXVlc3QoCkBAIC03MSw5ICs3MiwxMCBAQCBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9
PiB7CiAKICAgLy8gTm93LCByZXF1ZXN0MSdzIHJlbGV2YW50IGdsb2JhbCBvYmplY3QncyBkb2N1
bWVudCBpcyBubyBsb25nZXIgYWN0aXZlLgogICAvLyBTbywgY2FsbCAuc2hvdygpLCBhbmQgbWFr
ZSBzdXJlIGl0IHJlamVjdHMgYXBwcm9wcmlhdGVseS4KLSAgYXdhaXQgcHJvbWlzZV9yZWplY3Rz
KAorICBhd2FpdCBwcm9taXNlX3JlamVjdHNfZG9tKAogICAgIHQsCiAgICAgIkFib3J0RXJyb3Ii
LAorICAgIGZpcnN0Q3RvciwKICAgICByZXF1ZXN0MS5zaG93KCksCiAgICAgIkluYWN0aXZlIGRv
Y3VtZW50LCBzbyBtdXN0IHRocm93IEFib3J0RXJyb3IiCiAgICk7CkBAIC04MywxMSArODUsMTMg
QEAgcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4gewogICAgICAgcmVxdWVzdDIuc2hvdygpLmNhdGNo
KChlcnJvcikgPT4ge30pOwogICAgIGF3YWl0IHJlcXVlc3QyLmFib3J0KCk7CiAgIH0pOworICBj
b25zdCBzZWNvbmRDdG9yID0gaWZyYW1lLmNvbnRlbnRXaW5kb3cuRE9NRXhjZXB0aW9uOwogCiAg
IGF3YWl0IGFjdGl2YXRlVGhlbihhc3luYyAoKSA9PiB7Ci0gICAgYXdhaXQgcHJvbWlzZV9yZWpl
Y3RzKAorICAgIGF3YWl0IHByb21pc2VfcmVqZWN0c19kb20oCiAgICAgICB0LAogICAgICAgIklu
dmFsaWRTdGF0ZUVycm9yIiwKKyAgICAgIHNlY29uZEN0b3IsCiAgICAgICByZXF1ZXN0Mi5zaG93
KCksCiAgICAgICAiQWJvcnQgYWxyZWFkeSBjYWxsZWQsIHNvIEludmFsaWRTdGF0ZUVycm9yIgog
ICAgICk7CkBAIC0xMzQsNyArMTM4LDcgQEAgcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4gewogICAv
LyAoaXQgaXMgdGhlIGFjdGl2ZSBkb2N1bWVudCBvZiB0aGUgaW5uZXIgaWZyYW1lKSwgYnV0IGlz
IG5vdCBmdWxseSBhY3RpdmUKICAgLy8gKHNpbmNlIHRoZSBwYXJlbnQgb2YgdGhlIGlubmVyIGlm
cmFtZSBpcyBpdHNlbGYgbm8gbG9uZ2VyIGFjdGl2ZSkuCiAgIC8vIFNvLCBjYWxsIHJlcXVlc3Qu
c2hvdygpIGFuZCBtYWtlIHN1cmUgaXQgcmVqZWN0cyBhcHByb3ByaWF0ZWx5LgotICBhd2FpdCBw
cm9taXNlX3JlamVjdHMoCisgIGF3YWl0IHByb21pc2VfcmVqZWN0c19kb20oCiAgICAgdCwKICAg
ICAiQWJvcnRFcnJvciIsCiAgICAgcmVxdWVzdC5zaG93KCksCkBAIC0xNjQsNyArMTY4LDcgQEAg
cHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4gewogICAgICAgaWZyYW1lLmFkZEV2ZW50TGlzdGVuZXIo
ImxvYWQiLCByZXNvbHZlKTsKICAgICAgIGlmcmFtZS5zcmMgPSAicmVzb3VyY2VzL3BhZ2UyLmh0
bWwiOwogICAgIH0pOwotICAgIGF3YWl0IHByb21pc2VfcmVqZWN0cygKKyAgICBhd2FpdCBwcm9t
aXNlX3JlamVjdHNfZG9tKAogICAgICAgdCwKICAgICAgICJBYm9ydEVycm9yIiwKICAgICAgIHNo
b3dQcm9taXNlLApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVx
dWVzdC91cGRhdGVXaXRoLW1ldGhvZC1wbWktaGFuZGxpbmcuaHR0cHMuaHRtbCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvdXBkYXRlV2l0aC1tZXRob2QtcG1pLWhhbmRs
aW5nLmh0dHBzLmh0bWwKaW5kZXggMTJjNjA5NjhhYjU5N2Y1YzkxMGY4MDdmMTI5MjJjOTRjNTE4
NDY3NC4uNTk4MWM2ZWQyMmFiMDJkMmNiMDg4NDlmOTQyMWFiZmM4ODA0NWM1MyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC91cGRhdGVXaXRoLW1ldGhv
ZC1wbWktaGFuZGxpbmcuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Bh
eW1lbnRyZXF1ZXN0L3VwZGF0ZVdpdGgtbWV0aG9kLXBtaS1oYW5kbGluZy5odHRwcy5odG1sCkBA
IC04Niw3ICs4Niw3IEBAIGZ1bmN0aW9uIHJ1blRlc3QoYnV0dG9uLCB7IGludmFsaWRNZXRob2Qg
fSkgewogICAgIHJlcXVlc3Qub25zaGlwcGluZ2FkZHJlc3NjaGFuZ2UgPSBsaXN0ZW5lcjsKICAg
ICAvLyByZXF1ZXN0LmFkZEV2ZW50TGlzdGVuZXIoInNoaXBwaW5nYWRkcmVzc2NoYW5nZSIsIGxp
c3RlbmVyLCB7IG9uY2U6IHRydWUgfSk7CiAgICAgY29uc3Qgc2hvd1Byb21pc2UgPSByZXF1ZXN0
LnNob3coKTsKLSAgICBhd2FpdCBwcm9taXNlX3JlamVjdHModCwgbmV3IFJhbmdlRXJyb3IoKSwg
c2hvd1Byb21pc2UpOworICAgIGF3YWl0IHByb21pc2VfcmVqZWN0c19qcyh0LCBSYW5nZUVycm9y
LCBzaG93UHJvbWlzZSk7CiAgIH0sIGJ1dHRvbi50ZXh0Q29udGVudC50cmltKCkpOwogfQogPC9z
Y3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2J5cGFz
c2luZy1jb3JzLWNoZWNrcy1mb3ItZXh0ZW5zaW9uLXVybHMuaHRtbCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvYnlwYXNzaW5nLWNvcnMtY2hlY2tzLWZvci1leHRlbnNpb24tdXJs
cy5odG1sCmluZGV4IDllOGRlYTFmZjdlNTBiZDQ4NWY0YWZiYWIzOTk4YTUwY2VhNzQzMmUuLjc0
NTNkNzA0NWQwM2M0YmNiZjdhNWU0NDgxNmJmZTcyMjA4YTExMzggMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvYnlwYXNzaW5nLWNvcnMtY2hlY2tzLWZvci1leHRl
bnNpb24tdXJscy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvYnlw
YXNzaW5nLWNvcnMtY2hlY2tzLWZvci1leHRlbnNpb24tdXJscy5odG1sCkBAIC0xNiw3ICsxNiw3
IEBACiAgICAgdGVzdCgoKSA9PiB7CiAgICAgICAgIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgp
OwogICAgICAgICB4aHIub3BlbigiR0VUIiwgInNhZmFyaS1leHRlbnNpb246Ly90ZXN0MSIsIGZh
bHNlKTsKLSAgICAgICAgYXNzZXJ0X3Rocm93cyh7bmFtZTogIk5ldHdvcmtFcnJvciJ9LCAoKSA9
PiB7IHhoci5zZW5kKCkgfSk7CisgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJOZXR3b3JrRXJy
b3IiLCAoKSA9PiB7IHhoci5zZW5kKCkgfSk7CiAgICAgfSwgIkJ5cGFzc2luZyBDT1JTIG9uIHN5
bmNocm9ub3VzIFhIUiAtIHNob3VsZCB0cmlnZ2VyIGEgQ09SUyBlcnJvciBtZXNzYWdlIik7CiAK
ICAgICB0ZXN0KCgpID0+IHsKQEAgLTI0LDExICsyNCwxMSBAQAogCiAgICAgICAgIHhociA9IG5l
dyBYTUxIdHRwUmVxdWVzdCgpOwogICAgICAgICB4aHIub3BlbigiR0VUIiwgInNhZmFyaS1leHRl
bnNpb246Ly90ZXN0MyIsIGZhbHNlKTsKLSAgICAgICAgYXNzZXJ0X3Rocm93cyh7bmFtZTogIk5l
dHdvcmtFcnJvciJ9LCAoKSA9PiB7IHhoci5zZW5kKCkgfSk7CisgICAgICAgIGFzc2VydF90aHJv
d3NfZG9tKCJOZXR3b3JrRXJyb3IiLCAoKSA9PiB7IHhoci5zZW5kKCkgfSk7CiAgICAgfSwgIkJ5
cGFzc2luZyBDT1JTIG9uIHN5bmNocm9ub3VzIFhIUiAtIHNob3VsZCBub3QgdHJpZ2dlciBhIENP
UlMgZXJyb3IgbWVzc2FnZSIpOwogCiAgICAgcHJvbWlzZV90ZXN0KCh0ZXN0KSA9PiB7Ci0gICAg
ICAgIHJldHVybiBwcm9taXNlX3JlamVjdHModGVzdCwgbmV3IFR5cGVFcnJvciwgZmV0Y2goInNh
ZmFyaS1leHRlbnNpb246Ly90ZXN0NCIpKTsKKyAgICAgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0
c19qcyh0ZXN0LCBUeXBlRXJyb3IsIGZldGNoKCJzYWZhcmktZXh0ZW5zaW9uOi8vdGVzdDQiKSk7
CiAgICAgfSwgIkJ5cGFzc2luZyBDT1JTIG9uIGFzeW5jaHJvbm91cyBmZXRjaCAtIHNob3VsZCBu
b3QgdHJpZ2dlciBhIENPUlMgZXJyb3IgbWVzc2FnZSIpOwogPC9zY3JpcHQ+CiA8L2JvZHk+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0
eVBvbGljeS8xLjEvZnJhbWUtYW5jZXN0b3JzL2ZyYW1lLWFuY2VzdG9ycy1vdmVycmlkZXMteGZv
Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBv
bGljeS8xLjEvZnJhbWUtYW5jZXN0b3JzL2ZyYW1lLWFuY2VzdG9ycy1vdmVycmlkZXMteGZvLmh0
bWwKaW5kZXggNzY5NjExMmM5MDk0YTQyY2Y4YzBjZGRlOTc2NWY0Zjk2ZGIzNDkyNy4uOGNlZTc2
YzljZTc0ZWY0ZWUzYjNiMGM5ZDg5NDJmMGY5YTQ4YWI0ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvMS4xL2ZyYW1lLWFu
Y2VzdG9ycy9mcmFtZS1hbmNlc3RvcnMtb3ZlcnJpZGVzLXhmby5odG1sCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5LzEuMS9mcmFtZS1h
bmNlc3RvcnMvZnJhbWUtYW5jZXN0b3JzLW92ZXJyaWRlcy14Zm8uaHRtbApAQCAtMTksNyArMTks
NyBAQAogICAgICAgICAgICAgdmFyIGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpZnJhbWUn
KTsKICAgICAgICAgICAgIGkuc3JjID0gIi4uLy4uL3Jlc291cmNlcy9mcmFtZS1hbmNlc3RvcnMt
YW5kLXgtZnJhbWUtb3B0aW9ucy5wbD9wb2xpY3k9b3RoZXItb3JpZ2luLmNvbSZ4Zm89U0FNRU9S
SUdJTiI7CiAgICAgICAgICAgICBpLm9ubG9hZCA9IHQuc3RlcF9mdW5jX2RvbmUoZnVuY3Rpb24g
KCkgewotICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3MoCisgICAgICAgICAgICAgICAgYXNz
ZXJ0X3Rocm93c19kb20oCiAgICAgICAgICAgICAgICAgICAgICJTZWN1cml0eUVycm9yIiwKICAg
ICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeyBpLmNvbnRlbnRXaW5kb3cub3JpZ2luIH0s
CiAgICAgICAgICAgICAgICAgICAgICJUaGUgc2FtZS1vcmlnaW4gcGFnZSB3YXMgYmxvY2tlZCBh
bmQgc2FuZGJveGVkLiIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdWJy
ZXNvdXJjZS1pbnRlZ3JpdHkvc3JpLWZldGNoLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
dWJyZXNvdXJjZS1pbnRlZ3JpdHkvc3JpLWZldGNoLmpzCmluZGV4IGM3Zjk4ZDA0NGM5MDdjZmEy
MzYxMGY2MGE3NWRhMTQ1Mzg0OTkzMzYuLmRmY2VjYzg5NWYxODJmMTFhY2VmODlhMDI2Y2ZmMWY3
MWU0NmY2NmEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3VicmVzb3VyY2Ut
aW50ZWdyaXR5L3NyaS1mZXRjaC5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N1YnJl
c291cmNlLWludGVncml0eS9zcmktZmV0Y2guanMKQEAgLTI0LDcgKzI0LDcgQEAgZnVuY3Rpb24g
aW50ZWdyaXR5KGRlc2MsIHVybCwgb3B0aW9ucywgZXhwZWN0ZWRFcnJvcikgewogICAgICAgICB9
LCBkZXNjKTsKICAgICB9IGVsc2UgewogICAgICAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odGVz
dCkgewotICAgICAgICAgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0ZXN0LCBleHBlY3RlZEVy
cm9yLCBmZXRjaCh1cmwsIG9wdGlvbnMpKTsKKyAgICAgICAgICAgIHJldHVybiBwcm9taXNlX3Jl
amVjdHNfZXhhY3RseSh0ZXN0LCBleHBlY3RlZEVycm9yLCBmZXRjaCh1cmwsIG9wdGlvbnMpKTsK
ICAgICAgICAgfSwgZGVzYyk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2VydmljZS13b3JrZXItY3Jvc3NvcmlnaW4tZmV0Y2gu
aHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3NlcnZpY2Utd29y
a2VyLWNyb3Nzb3JpZ2luLWZldGNoLmh0bWwKaW5kZXggZmFkNTA1N2ZhODhjNzUxODVlMmQ4YWI5
ZDlkNzg3YzBlOTFmNDIxNi4uZjg2NWNiYjczN2U1ZGJmN2I5YjNmNWY0MDg4Mzc5MThhNDYzYmQz
YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmljZS13b3JrZXItY3Jvc3NvcmlnaW4tZmV0Y2guaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dvcmtlcnMvc2VydmljZS9zZXJ2aWNlLXdvcmtlci1jcm9zc29yaWdpbi1mZXRjaC5o
dG1sCkBAIC05LDcgKzksNyBAQAogcHJvbWlzZV90ZXN0KHRlc3QgPT4gewogICAgIC8vIFRyaWdn
ZXJpbmcgcG90ZW50aWFsIHByZWZsaWdodCB0aHJvdWdoIGN1c3RvbSBoZWFkZXIuCiAgICAgdmFy
IGZldGNoUHJvbWlzZSA9IGZldGNoKCJodHRwOi8vbG9jYWxob3N0OjgwODAvcmVzb3VyY2VzL3Nx
dWFyZTEwMC5wbmcuZnJvbXNlcnZpY2V3b3JrZXIiLCB7IGhlYWRlcnM6IHsiY3VzdG9tIjogImhl
YWRlciJ9fSk7Ci0gICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0ZXN0LCBuZXcgVHlwZUVycm9y
KCksIGZldGNoUHJvbWlzZSk7CisgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19kb20odGVzdCwg
IlR5cGVFcnJvciIsIGZldGNoUHJvbWlzZSk7CiB9LCAiVGVzdGluZyB1bmludGVyY2VwdGVkIGZl
dGNoIHdpdGggcHJlZmxpZ2h0LCBmZXRjaCBzaG91bGQgZmFpbCIpOwogCiB2YXIgZnJhbWU7CkBA
IC0yNyw3ICsyNyw3IEBAIHByb21pc2VfdGVzdChhc3luYyB0ZXN0ID0+IHsKIHByb21pc2VfdGVz
dCh0ZXN0ID0+IHsKICAgICAvLyBUcmlnZ2VyaW5nIHBvdGVudGlhbCBwcmVmbGlnaHQgdGhyb3Vn
aCBjdXN0b20gaGVhZGVyLgogICAgIHZhciBmZXRjaFByb21pc2UgPSBmcmFtZS5jb250ZW50V2lu
ZG93LmZldGNoKCJodHRwOi8vbG9jYWxob3N0OjgwODAvcmVzb3VyY2VzL3NxdWFyZTEwMC5wbmcu
ZXJyb3IuZnJvbXNlcnZpY2V3b3JrZXIiLCB7IGhlYWRlcnM6IHsiY3VzdG9tIjogImhlYWRlciJ9
fSk7Ci0gICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0ZXN0LCBuZXcgVHlwZUVycm9yKCksIGZl
dGNoUHJvbWlzZSk7CisgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19kb20odGVzdCwgIlR5cGVF
cnJvciIsIGZldGNoUHJvbWlzZSk7CiB9LCAiVGVzdGluZyBpbnRlcmNlcHRlZCBmZXRjaCB3aXRo
IHByZWZsaWdodCwgZmV0Y2ggc2hvdWxkIGZhaWwiKTsKIDwvc2NyaXB0PgogPC9ib2R5PgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9zZXQtYmFkLWhl
YWRlcnZhbHVlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Nl
dC1iYWQtaGVhZGVydmFsdWUuaHRtbAppbmRleCA4YmEzMDMzMjJlNjFmYmZiNzczMjRhY2NhMjhk
ODU0NzFjNDk4MTg3Li44YzI4MmM4YTM0NTBhMzZiYTMxYjU5N2EzN2UzMmYwOGJlOGFhZTAxIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3NldC1iYWQt
aGVhZGVydmFsdWUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1
ZXN0L3NldC1iYWQtaGVhZGVydmFsdWUuaHRtbApAQCAtMTAsMjAgKzEwLDIyIEBACiAgIDxib2R5
PgogICAgIDxkaXYgaWQ9ImxvZyI+PC9kaXY+CiAgICAgPHNjcmlwdD4KLSAgICAgIGZ1bmN0aW9u
IHRyeV92YWx1ZSh2YWx1ZSwgZXhwZWN0RXJyb3IpIHsKKyAgICAgIGZ1bmN0aW9uIHRyeV92YWx1
ZSh2YWx1ZSwgZXhwZWN0RXJyb3IsIGlzRE9NRXJyb3IpIHsKICAgICAgICAgdGVzdChmdW5jdGlv
bigpIHsKICAgICAgICAgICB2YXIgY2xpZW50ID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCkKICAgICAg
ICAgICBjbGllbnQub3BlbigiR0VUIiwgIi4uLiIpCi0gICAgICAgICAgaWYgKGV4cGVjdEVycm9y
KQotICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzKGV4cGVjdEVycm9yLCBmdW5jdGlvbigpIHsg
Y2xpZW50LnNldFJlcXVlc3RIZWFkZXIoIngtdGVzdCIsIHZhbHVlKSB9LCAnIGdpdmVuIHZhbHVl
ICcgKyB2YWx1ZSsnLCAnKQorICAgICAgICAgIGlmIChleHBlY3RFcnJvciAmJiBpc0RPTUVycm9y
KQorICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbShleHBlY3RFcnJvciwgZnVuY3Rpb24o
KSB7IGNsaWVudC5zZXRSZXF1ZXN0SGVhZGVyKCJ4LXRlc3QiLCB2YWx1ZSkgfSwgJyBnaXZlbiB2
YWx1ZSAnICsgdmFsdWUrJywgJykKKyAgICAgICAgICBlbHNlIGlmIChleHBlY3RFcnJvcikKKyAg
ICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhleHBlY3RFcnJvciwgZnVuY3Rpb24oKSB7IGNs
aWVudC5zZXRSZXF1ZXN0SGVhZGVyKCJ4LXRlc3QiLCB2YWx1ZSkgfSwgJyBnaXZlbiB2YWx1ZSAn
ICsgdmFsdWUrJywgJykKICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgIGNsaWVudC5zZXRS
ZXF1ZXN0SGVhZGVyKCJ4LXRlc3QiLCB2YWx1ZSkgIAogICAgICAgICAgIH0pCiAgICAgICB9CiAK
LSAgICAgIHRyeV92YWx1ZSgidFxydCIsIHtuYW1lOidTeW50YXhFcnJvcid9KQotICAgICAgdHJ5
X3ZhbHVlKCJ0XG50Iiwge25hbWU6J1N5bnRheEVycm9yJ30pCi0gICAgICB0cnlfdmFsdWUoIu++
g++9ve++hCIsIHtuYW1lOidUeXBlRXJyb3InfSkKKyAgICAgIHRyeV92YWx1ZSgidFxydCIsICdT
eW50YXhFcnJvcicsIHRydWUpCisgICAgICB0cnlfdmFsdWUoInRcbnQiLCAnU3ludGF4RXJyb3In
LCB0cnVlKQorICAgICAgdHJ5X3ZhbHVlKCLvvoPvvb3vvoQiLCBUeXBlRXJyb3IsIGZhbHNlKQog
ICAgICAgdHJ5X3ZhbHVlKCJ0XGJ0IikKICAgICAgIHRyeV92YWx1ZSgidFx2dCIpCiAgICAgICB0
cnlfdmFsdWUoInRcdHQiKQpAQCAtMzMsNyArMzUsNyBAQAogICAgICAgdGVzdChmdW5jdGlvbigp
IHsKICAgICAgICAgdmFyIGNsaWVudCA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpCiAgICAgICAgIGNs
aWVudC5vcGVuKCJHRVQiLCAiLi4uIikKLSAgICAgICAgYXNzZXJ0X3Rocm93cyh7bmFtZTonVHlw
ZUVycm9yJ30sIGZ1bmN0aW9uKCkgeyBjbGllbnQuc2V0UmVxdWVzdEhlYWRlcigieC10ZXN0Iikg
fSkKKyAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeyBjbGll
bnQuc2V0UmVxdWVzdEhlYWRlcigieC10ZXN0IikgfSkKICAgICAgIH0pCiAgICAgPC9zY3JpcHQ+
CiAgIDwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVk
REItcHJpdmF0ZS1icm93c2luZy9jbG9zZS1pbi11cGdyYWRlbmVlZGVkLmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvY2xvc2UtaW4tdXBn
cmFkZW5lZWRlZC5odG1sCmluZGV4IDJlMDBiNGU4NTZmYzM0NjU4MDU5YWZjZmViMzgxNTMxYjI4
YmQxNzEuLjAxNWVmMGJhMTkyZmY0YmU4MTk4OWUwNWYwNDg0NjYwMmFjYmQxOGYgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9j
bG9zZS1pbi11cGdyYWRlbmVlZGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2Nsb3NlLWluLXVwZ3JhZGVuZWVkZWQuaHRtbApA
QCAtMjksNyArMjksNyBAQCBvcGVuX3JxLm9uZXJyb3IgPSBmdW5jdGlvbihlKSB7CiAgICAgYXNz
ZXJ0X3RydWUoISFkYikKICAgICBhc3NlcnRfZXF1YWxzKGRiLnZlcnNpb24sIDEpCiAgICAgYXNz
ZXJ0X2VxdWFscyhkYi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCwgMSkKLSAgICBhc3NlcnRfdGhy
b3dzKCJJbnZhbGlkU3RhdGVFcnJvciIsIGZ1bmN0aW9uKCkgeyBkYi50cmFuc2FjdGlvbignb3Mn
KSB9KQorICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlkU3RhdGVFcnJvciIsIGZ1bmN0aW9u
KCkgeyBkYi50cmFuc2FjdGlvbignb3MnKSB9KQogCiAgICAgdGhpcy5kb25lKCkKIH0KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2lu
Zy9pZGJjdXJzb3ItYWR2YW5jZS1pbnZhbGlkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yLWFkdmFuY2UtaW52YWxpZC5o
dG1sCmluZGV4IGUyNTA0YjllNDFlNjg5OTJlNzBiNjExYTVhZDI5NjQ4YmE0ZjE2NzYuLjQ0ODJk
NjhkMjE1NmZiODI1NzdjZjc2NzZjYTM4NDdjODhmYjJlYzYgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3ItYWR2
YW5jZS1pbnZhbGlkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWRE
Qi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvci1hZHZhbmNlLWludmFsaWQuaHRtbApAQCAtNDYs
MTAgKzQ2LDEwIEBACiAgICAgICAgICAgICAgICAgY3Vyc29yLmFkdmFuY2UoMSk7CiAKICAgICAg
ICAgICAgICAgICAvLyBTZWNvbmQgdHJ5Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygn
SW52YWxpZFN0YXRlRXJyb3InLAorICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCdJ
bnZhbGlkU3RhdGVFcnJvcicsCiAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyBjdXJz
b3IuYWR2YW5jZSgxKTsgfSwgJ3NlY29uZCBhZHZhbmNlJyk7CiAKLSAgICAgICAgICAgICAgICBh
c3NlcnRfdGhyb3dzKCdJbnZhbGlkU3RhdGVFcnJvcicsCisgICAgICAgICAgICAgICAgYXNzZXJ0
X3Rocm93c19kb20oJ0ludmFsaWRTdGF0ZUVycm9yJywKICAgICAgICAgICAgICAgICAgICAgZnVu
Y3Rpb24oKSB7IGN1cnNvci5hZHZhbmNlKDMpOyB9LCAndGhpcmQgYWR2YW5jZScpOwogCiAgICAg
ICAgICAgICAgICAgY291bnQrKzsKQEAgLTY0LDE5ICs2NCwxOSBAQAogICAgICAgICAgICAgcnEu
b25zdWNjZXNzID0gdGhpcy5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAg
IHZhciBjdXJzb3IgPSBlLnRhcmdldC5yZXN1bHQ7CiAKLSAgICAgICAgICAgICAgICBhc3NlcnRf
dGhyb3dzKHsgbmFtZTogIlR5cGVFcnJvciIgfSwKKyAgICAgICAgICAgICAgICBhc3NlcnRfdGhy
b3dzX2pzKFR5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7IGN1cnNv
ci5hZHZhbmNlKGRvY3VtZW50KTsgfSk7CiAKLSAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dz
KHsgbmFtZTogIlR5cGVFcnJvciIgfSwKKyAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2pz
KFR5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7IGN1cnNvci5hZHZh
bmNlKHt9KTsgfSk7CiAKLSAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzKHsgbmFtZTogIlR5
cGVFcnJvciIgfSwKKyAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwK
ICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7IGN1cnNvci5hZHZhbmNlKFtdKTsgfSk7
CiAKLSAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzKHsgbmFtZTogIlR5cGVFcnJvciIgfSwK
KyAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwKICAgICAgICAgICAg
ICAgICAgICAgZnVuY3Rpb24oKSB7IGN1cnNvci5hZHZhbmNlKCIiKTsgfSk7CiAKLSAgICAgICAg
ICAgICAgICBhc3NlcnRfdGhyb3dzKHsgbmFtZTogIlR5cGVFcnJvciIgfSwKKyAgICAgICAgICAg
ICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgZnVu
Y3Rpb24oKSB7IGN1cnNvci5hZHZhbmNlKCIxIDIiKTsgfSk7CiAKICAgICAgICAgICAgICAgICB0
aGlzLmRvbmUoKTsKQEAgLTkxLDE0ICs5MSwxNCBAQAogICAgICAgICAgICAgcnEub25zdWNjZXNz
ID0gdGhpcy5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgIHZhciBjdXJz
b3IgPSBlLnRhcmdldC5yZXN1bHQ7CiAKLSAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzKHsg
bmFtZTogIlR5cGVFcnJvciIgfSwKKyAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5
cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7IGN1cnNvci5hZHZhbmNl
KG51bGwpOyB9KTsKIAotICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3MoeyBuYW1lOiAiVHlw
ZUVycm9yIiB9LAorICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLAog
ICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsgY3Vyc29yLmFkdmFuY2UodW5kZWZpbmVk
KTsgfSk7CiAKICAgICAgICAgICAgICAgICB2YXIgbXl2YXIgPSBudWxsOwotICAgICAgICAgICAg
ICAgIGFzc2VydF90aHJvd3MoeyBuYW1lOiAiVHlwZUVycm9yIiB9LAorICAgICAgICAgICAgICAg
IGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICBmdW5jdGlv
bigpIHsgY3Vyc29yLmFkdmFuY2UobXl2YXIpOyB9KTsKIAogICAgICAgICAgICAgICAgIHRoaXMu
ZG9uZSgpOwpAQCAtMTEzLDcgKzExMyw3IEBACiAgICAgICAgICAgICBycS5vbnN1Y2Nlc3MgPSB0
aGlzLnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgdmFyIGN1cnNvciA9
IGUudGFyZ2V0LnJlc3VsdDsKIAotICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3MoeyBuYW1l
OiAiVHlwZUVycm9yIiB9LAorICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVy
cm9yLAogICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsgY3Vyc29yLmFkdmFuY2UoKTsg
fSk7CiAKICAgICAgICAgICAgICAgICB0aGlzLmRvbmUoKTsKQEAgLTEyOCwyNiArMTI4LDI2IEBA
CiAgICAgICAgICAgICBycS5vbnN1Y2Nlc3MgPSB0aGlzLnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7
CiAgICAgICAgICAgICAgICAgdmFyIGN1cnNvciA9IGUudGFyZ2V0LnJlc3VsdDsKIAotICAgICAg
ICAgICAgICAgIGFzc2VydF90aHJvd3MoeyBuYW1lOiAiVHlwZUVycm9yIiB9LAorICAgICAgICAg
ICAgICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICBm
dW5jdGlvbigpIHsgY3Vyc29yLmFkdmFuY2UoLTEpOyB9KTsKIAotICAgICAgICAgICAgICAgIGFz
c2VydF90aHJvd3MoeyBuYW1lOiAiVHlwZUVycm9yIiB9LAorICAgICAgICAgICAgICAgIGFzc2Vy
dF90aHJvd3NfanMoVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsg
Y3Vyc29yLmFkdmFuY2UoTmFOKTsgfSk7CiAKLSAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dz
KHsgbmFtZTogIlR5cGVFcnJvciIgfSwKKyAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2pz
KFR5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7IGN1cnNvci5hZHZh
bmNlKDApOyB9KTsKIAotICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3MoeyBuYW1lOiAiVHlw
ZUVycm9yIiB9LAorICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLAog
ICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsgY3Vyc29yLmFkdmFuY2UoLTApOyB9KTsK
IAotICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3MoeyBuYW1lOiAiVHlwZUVycm9yIiB9LAor
ICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLAogICAgICAgICAgICAg
ICAgICAgICBmdW5jdGlvbigpIHsgY3Vyc29yLmFkdmFuY2UoSW5maW5pdHkpOyB9KTsKIAotICAg
ICAgICAgICAgICAgIGFzc2VydF90aHJvd3MoeyBuYW1lOiAiVHlwZUVycm9yIiB9LAorICAgICAg
ICAgICAgICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAg
ICBmdW5jdGlvbigpIHsgY3Vyc29yLmFkdmFuY2UoLUluZmluaXR5KTsgfSk7CiAKICAgICAgICAg
ICAgICAgICB2YXIgbXl2YXIgPSAtOTk5OTk5OwotICAgICAgICAgICAgICAgIGFzc2VydF90aHJv
d3MoeyBuYW1lOiAiVHlwZUVycm9yIiB9LAorICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3Nf
anMoVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsgY3Vyc29yLmFk
dmFuY2UobXl2YXIpOyB9KTsKIAogICAgICAgICAgICAgICAgIHRoaXMuZG9uZSgpOwpAQCAtMTY5
LDcgKzE2OSw3IEBACiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAg
ICB9CiAKLSAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzKHsgbmFtZTogIlR5cGVFcnJvciIg
fSwKKyAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwKICAgICAgICAg
ICAgICAgICAgICAgZnVuY3Rpb24oKSB7IGN1cnNvci5hZHZhbmNlKDApOyB9KTsKIAogICAgICAg
ICAgICAgICAgIGN1cnNvci5hZHZhbmNlKDEpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9hZHZhbmNlX2lu
ZGV4Mi5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJy
b3dzaW5nL2lkYmN1cnNvcl9hZHZhbmNlX2luZGV4Mi5odG1sCmluZGV4IDA4ZmIwNWQzNjI3YzM4
YzBlMWM5ZDg4MTc3MjVlZjE4ZjI2ZjI2YWQuLjExZTAxYjFlMzMwYmEyNGVhOWZmY2Y2MjU4MTE1
MzgzYTUzNzA3YmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVk
REItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfYWR2YW5jZV9pbmRleDIuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vy
c29yX2FkdmFuY2VfaW5kZXgyLmh0bWwKQEAgLTM1LDcgKzM1LDcgQEAKICAgICAgICAgICAgIHZh
ciBjdXJzb3IgPSBlLnRhcmdldC5yZXN1bHQ7CiAKICAgICAgICAgICAgIGFzc2VydF90cnVlKGN1
cnNvciAhPSBudWxsLCAiY3Vyc29yIGV4aXN0Iik7Ci0gICAgICAgICAgICBhc3NlcnRfdGhyb3dz
KG5ldyBUeXBlRXJyb3IoKSwKKyAgICAgICAgICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9y
LAogICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyBjdXJzb3IuYWR2YW5jZShkb2N1bWVudCk7
IH0pOwogCiAgICAgICAgICAgICB0LmRvbmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfYWR2YW5jZV9p
bmRleDMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1i
cm93c2luZy9pZGJjdXJzb3JfYWR2YW5jZV9pbmRleDMuaHRtbAppbmRleCBmOGExYWVmMDcwN2Ez
MDUyYTgxY2I0MWYxYTlmOGJlNjcyOTNhMjAxLi41Y2M0ODRlYzFhNDQ4MDFjMTQ5N2JlNjBjMzI2
ODJhMWNmZjg5NmQ5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhl
ZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2FkdmFuY2VfaW5kZXgzLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1
cnNvcl9hZHZhbmNlX2luZGV4My5odG1sCkBAIC0zNSw3ICszNSw3IEBACiAgICAgICAgICAgICB2
YXIgY3Vyc29yID0gZS50YXJnZXQucmVzdWx0OwogCiAgICAgICAgICAgICBhc3NlcnRfdHJ1ZShj
dXJzb3IgIT0gbnVsbCwgImN1cnNvciBleGlzdCIpOwotICAgICAgICAgICAgYXNzZXJ0X3Rocm93
cyhuZXcgVHlwZUVycm9yKCksCisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJv
ciwKICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsgY3Vyc29yLmFkdmFuY2UoLTEpOyB9KTsK
IAogICAgICAgICAgICAgdC5kb25lKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2FkdmFuY2VfaW5kZXg2
Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Np
bmcvaWRiY3Vyc29yX2FkdmFuY2VfaW5kZXg2Lmh0bWwKaW5kZXggNzRkNjUzYzA5OTUxNDYzODA2
YzNkMTIzM2M3MGEzY2M4OGQ1YjJiZC4uNTM4ZjUzNjEyNGIyMDk2ZmJlM2M4MDA4ZTg5NmRjNjEx
Njk1YzA1ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1w
cml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9hZHZhbmNlX2luZGV4Ni5odG1sCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3Jf
YWR2YW5jZV9pbmRleDYuaHRtbApAQCAtMjYsNyArMjYsNyBAQAogICAgICAgICAgICAgdmFyIGN1
cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CiAgICAgICAgICAgICBhc3NlcnRfdHJ1ZShjdXJz
b3IgaW5zdGFuY2VvZiBJREJDdXJzb3IpOwogCi0gICAgICAgICAgICBhc3NlcnRfdGhyb3dzKG5l
dyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2pz
KFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgY3Vyc29yLmFkdmFuY2Uo
MCk7CiAgICAgICAgICAgICB9LCAiQ2FsbGluZyBhZHZhbmNlKCkgd2l0aCBjb3VudCBhcmd1bWVu
dCAwIHNob3VsZCB0aHJvdyBUeXBlRXJyb3IuIik7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfYWR2YW5j
ZV9pbmRleDcuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0
ZS1icm93c2luZy9pZGJjdXJzb3JfYWR2YW5jZV9pbmRleDcuaHRtbAppbmRleCA2MTdjZGEwN2Fm
NmJjOTM4YzU0NjYyYzRjZTU2M2ZkZDVhNjMzODQ5Li4xNWI4NzBhYzQyYzczOWY3NGI4ZTVmYTVk
ZGFhNzVjN2RjYzUyZDhkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5k
ZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2FkdmFuY2VfaW5kZXg3Lmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lk
YmN1cnNvcl9hZHZhbmNlX2luZGV4Ny5odG1sCkBAIC0yNyw3ICsyNyw3IEBACiAgICAgICAgICAg
ICBhc3NlcnRfdHJ1ZShjdXJzb3IgaW5zdGFuY2VvZiBJREJDdXJzb3IpOwogCiAgICAgICAgICAg
ICBldmVudC50YXJnZXQudHJhbnNhY3Rpb24uYWJvcnQoKTsKLSAgICAgICAgICAgIGFzc2VydF90
aHJvd3MoIlRyYW5zYWN0aW9uSW5hY3RpdmVFcnJvciIsIGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgYXNzZXJ0X3Rocm93c19kb20oIlRyYW5zYWN0aW9uSW5hY3RpdmVFcnJvciIsIGZ1bmN0aW9u
KCkgewogICAgICAgICAgICAgICAgIGN1cnNvci5hZHZhbmNlKDEpOwogICAgICAgICAgICAgfSwg
IkNhbGxpbmcgYWR2YW5jZSgpIHNob3VsZCB0aHJvd3MgYW4gZXhjZXB0aW9uIFRyYW5zYWN0aW9u
SW5hY3RpdmVFcnJvciB3aGVuIHRoZSB0cmFuc2FjdGlvbiBpcyBub3QgYWN0aXZlLiIpOwogCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJv
d3NpbmcvaWRiY3Vyc29yX2FkdmFuY2VfaW5kZXg4Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2FkdmFuY2VfaW5kZXg4
Lmh0bWwKaW5kZXggMWNkZTlhZjFhN2E3MWUwYjM2YTgzMzlmNTU3NDZjM2FkN2JkMGE2Mi4uMzFh
N2EzZjg1NjllZTk4ZDhiMzg2MmQwMGRhZjg4MWQ3Y2E2N2M1YiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9h
ZHZhbmNlX2luZGV4OC5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVk
REItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfYWR2YW5jZV9pbmRleDguaHRtbApAQCAtMjcs
NyArMjcsNyBAQAogICAgICAgICAgICAgYXNzZXJ0X3RydWUoY3Vyc29yIGluc3RhbmNlb2YgSURC
Q3Vyc29yKTsKIAogICAgICAgICAgICAgY3Vyc29yLmFkdmFuY2UoMSk7Ci0gICAgICAgICAgICBh
c3NlcnRfdGhyb3dzKCJJbnZhbGlkU3RhdGVFcnJvciIsIGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgYXNzZXJ0X3Rocm93c19kb20oIkludmFsaWRTdGF0ZUVycm9yIiwgZnVuY3Rpb24oKSB7CiAg
ICAgICAgICAgICAgICAgY3Vyc29yLmFkdmFuY2UoMSk7CiAgICAgICAgICAgICB9LCAiQ2FsbGlu
ZyBhZHZhbmNlKCkgc2hvdWxkIHRocm93IERPTUV4Y2VwdGlvbiB3aGVuIHRoZSBjdXJzb3IgaXMg
Y3VycmVudGx5IGJlaW5nIGl0ZXJhdGVkLiIpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2FkdmFuY2Vf
aW5kZXg5Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUt
YnJvd3NpbmcvaWRiY3Vyc29yX2FkdmFuY2VfaW5kZXg5Lmh0bWwKaW5kZXggMDkxYzFiY2JjOWI1
YzBjNDM1ZTM3YTJlY2VhNmZmMzdmZWU4YzEwMS4uODM5ZDNlYThiMjQwYmU2YmYxMjA5NDg4OTBh
NjdkOTlkYTVjNjE4NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4
ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9hZHZhbmNlX2luZGV4OS5odG1sCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJj
dXJzb3JfYWR2YW5jZV9pbmRleDkuaHRtbApAQCAtMjYsNyArMjYsNyBAQAogICAgICAgICAgICAg
YXNzZXJ0X3RydWUoY3Vyc29yIGluc3RhbmNlb2YgSURCQ3Vyc29yLCAiY3Vyc29yIGV4aXN0Iik7
CiAKICAgICAgICAgICAgIGRiLmRlbGV0ZU9iamVjdFN0b3JlKCJzdG9yZSIpOwotICAgICAgICAg
ICAgYXNzZXJ0X3Rocm93cygiSW52YWxpZFN0YXRlRXJyb3IiLCBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlkU3RhdGVFcnJvciIsIGZ1bmN0aW9uKCkg
ewogICAgICAgICAgICAgICAgIGN1cnNvci5hZHZhbmNlKDEpOwogICAgICAgICAgICAgfSwgIklm
IHRoZSBjdXJzb3IncyBzb3VyY2Ugb3IgZWZmZWN0aXZlIG9iamVjdCBzdG9yZSBoYXMgYmVlbiBk
ZWxldGVkLCB0aGUgaW1wbGVtZW50YXRpb24gTVVTVCB0aHJvdyBhIERPTUV4Y2VwdGlvbiBvZiB0
eXBlIEludmFsaWRTdGF0ZUVycm9yIik7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfYWR2YW5jZV9vYmpl
Y3RzdG9yZTIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0
ZS1icm93c2luZy9pZGJjdXJzb3JfYWR2YW5jZV9vYmplY3RzdG9yZTIuaHRtbAppbmRleCA1YWNm
N2ZmODAzYTBjNjUxYzU1MDZjYTQ3NDkzNTdkZDM0N2I3YjI4Li42MTQ0OTE4MWVmM2ZmYjRkZDU1
NTVmMDA0MGU5MjIzMTk0OTZlN2E5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2FkdmFuY2Vfb2JqZWN0c3Rv
cmUyLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRl
LWJyb3dzaW5nL2lkYmN1cnNvcl9hZHZhbmNlX29iamVjdHN0b3JlMi5odG1sCkBAIC0yOSw3ICsy
OSw3IEBACiAgICAgICAgICAgICB2YXIgY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKICAg
ICAgICAgICAgIGFzc2VydF90cnVlKGN1cnNvciBpbnN0YW5jZW9mIElEQkN1cnNvcik7CiAKLSAg
ICAgICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKICAgICAg
ICAgICAgICAgICBjdXJzb3IuYWR2YW5jZSgwKTsKICAgICAgICAgICAgIH0sICJDYWxsaW5nIGFk
dmFuY2UoKSB3aXRoIGNvdW50IGFyZ3VtZW50IDAgc2hvdWxkIHRocm93IFR5cGVFcnJvci4iKTsK
IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRl
LWJyb3dzaW5nL2lkYmN1cnNvcl9hZHZhbmNlX29iamVjdHN0b3JlMy5odG1sIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9hZHZh
bmNlX29iamVjdHN0b3JlMy5odG1sCmluZGV4IDk4YjU3NzUyNDdmNGVlNGJkZjNkYmJiNWQyNTdi
ZjRiMGJhNTcxMTkuLjk1NjZmNDVlMjU5MzIyMGJmOWViM2IxZGI5M2I2ZjhjN2FjYWRjZGUgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93
c2luZy9pZGJjdXJzb3JfYWR2YW5jZV9vYmplY3RzdG9yZTMuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2FkdmFu
Y2Vfb2JqZWN0c3RvcmUzLmh0bWwKQEAgLTMwLDcgKzMwLDcgQEAKICAgICAgICAgICAgIGFzc2Vy
dF90cnVlKGN1cnNvciBpbnN0YW5jZW9mIElEQkN1cnNvcik7CiAKICAgICAgICAgICAgIGV2ZW50
LnRhcmdldC50cmFuc2FjdGlvbi5hYm9ydCgpOwotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygi
VHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yIiwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhc3Nl
cnRfdGhyb3dzX2RvbSgiVHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yIiwgZnVuY3Rpb24oKSB7CiAg
ICAgICAgICAgICAgICAgY3Vyc29yLmFkdmFuY2UoMSk7CiAgICAgICAgICAgICB9LCAiQ2FsbGlu
ZyBhZHZhbmNlKCkgc2hvdWxkIHRocm93cyBhbiBleGNlcHRpb24gVHJhbnNhY3Rpb25JbmFjdGl2
ZUVycm9yIHdoZW4gdGhlIHRyYW5zYWN0aW9uIGlzIG5vdCBhY3RpdmUiKTsKIApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lk
YmN1cnNvcl9hZHZhbmNlX29iamVjdHN0b3JlNC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9hZHZhbmNlX29iamVjdHN0
b3JlNC5odG1sCmluZGV4IGRhYmY4ZTg2OTczNzYxYThlZGE3MGFhZGI5NjRmNTZhMmI5YmNkYTku
LjFjODk0N2YwODcyNmRmNWEyZDAxYTY4YTMzOTI1N2EyZTg5M2UzYzkgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJz
b3JfYWR2YW5jZV9vYmplY3RzdG9yZTQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2FkdmFuY2Vfb2JqZWN0c3Rv
cmU0Lmh0bWwKQEAgLTMwLDcgKzMwLDcgQEAKICAgICAgICAgICAgIGFzc2VydF90cnVlKGN1cnNv
ciBpbnN0YW5jZW9mIElEQkN1cnNvcik7CiAKICAgICAgICAgICAgIGN1cnNvci5hZHZhbmNlKDEp
OwotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygiSW52YWxpZFN0YXRlRXJyb3IiLCBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlkU3RhdGVFcnJvciIs
IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgIGN1cnNvci5hZHZhbmNlKDEpOwogICAgICAg
ICAgICAgfSwgIkNhbGxpbmcgYWR2YW5jZSgpIHNob3VsZCB0aHJvdyBET01FeGNlcHRpb24gd2hl
biB0aGUgY3Vyc29yIGlzIGN1cnJlbnRseSBiZWluZyBpdGVyYXRlZC4iKTsKIApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lk
YmN1cnNvcl9hZHZhbmNlX29iamVjdHN0b3JlNS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9hZHZhbmNlX29iamVjdHN0
b3JlNS5odG1sCmluZGV4IGZmNjFmNmYzNjZhMzY4N2VjMzg5MmYyMTU4NzU3NzA3MGEyYTFlMTEu
LmM2NzM4MmE0NGM5M2M0NDRmMzFkY2M4ODlkYmQxNGIyY2MwNGVhMWQgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJz
b3JfYWR2YW5jZV9vYmplY3RzdG9yZTUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2FkdmFuY2Vfb2JqZWN0c3Rv
cmU1Lmh0bWwKQEAgLTI1LDcgKzI1LDcgQEAKICAgICAgICAgICAgIGFzc2VydF90cnVlKGN1cnNv
ciBpbnN0YW5jZW9mIElEQkN1cnNvciwgImN1cnNvciBleGlzdCIpOwogCiAgICAgICAgICAgICBk
Yi5kZWxldGVPYmplY3RTdG9yZSgic3RvcmUiKTsKLSAgICAgICAgICAgIGFzc2VydF90aHJvd3Mo
IkludmFsaWRTdGF0ZUVycm9yIiwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhc3NlcnRfdGhy
b3dzX2RvbSgiSW52YWxpZFN0YXRlRXJyb3IiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAg
ICBjdXJzb3IuYWR2YW5jZSgxKTsKICAgICAgICAgICAgIH0sICJJZiB0aGUgY3Vyc29yJ3Mgc291
cmNlIG9yIGVmZmVjdGl2ZSBvYmplY3Qgc3RvcmUgaGFzIGJlZW4gZGVsZXRlZCwgdGhlIGltcGxl
bWVudGF0aW9uIE1VU1QgdGhyb3cgYSBET01FeGNlcHRpb24gb2YgdHlwZSBJbnZhbGlkU3RhdGVF
cnJvciIpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERC
LXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2NvbnRpbnVlX2luZGV4Mi5odG1sIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9j
b250aW51ZV9pbmRleDIuaHRtbAppbmRleCAzYTg4OThjZDZmNzUzMjViNWZmNTQzODQzY2QxMTli
MjVhODkxODUyLi5lYTY3NWJkYjZkYzlkZDZlMzIxODQ5ODJiMjMyZWU2ZTMyYTE3Mzg5IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Np
bmcvaWRiY3Vyc29yX2NvbnRpbnVlX2luZGV4Mi5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfY29udGludWVfaW5k
ZXgyLmh0bWwKQEAgLTM1LDcgKzM1LDcgQEAKICAgICAgICAgY3Vyc29yX3JxLm9uc3VjY2VzcyA9
IHQuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgIHZhciBjdXJzb3IgPSBlLnRh
cmdldC5yZXN1bHQ7CiAKLSAgICAgICAgICAgIGFzc2VydF90aHJvd3MoIkRhdGFFcnJvciIsCisg
ICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiRGF0YUVycm9yIiwKICAgICAgICAgICAgICAg
ICBmdW5jdGlvbigpIHsgY3Vyc29yLmNvbnRpbnVlKGRvY3VtZW50KTsgfSk7CiAKICAgICAgICAg
ICAgIGFzc2VydF90cnVlKGN1cnNvciBpbnN0YW5jZW9mIElEQkN1cnNvcldpdGhWYWx1ZSwgImN1
cnNvciIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1w
cml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9jb250aW51ZV9pbmRleDMuaHRtbCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfY29u
dGludWVfaW5kZXgzLmh0bWwKaW5kZXggNTVlZWZhMzcyMWY0NTE0MmRlMjc3Zjc4ZDUyOGE5OTI5
NzgyYjBhOS4uMTgxMDU3NGU5ZTVhZDczMTcxMTljOTFmNDk4NzQxZWQ4MDc4NzBiZiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5n
L2lkYmN1cnNvcl9jb250aW51ZV9pbmRleDMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2NvbnRpbnVlX2luZGV4
My5odG1sCkBAIC00MCw3ICs0MCw3IEBACiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC8v
IEZpcnN0IHRpbWUgY2hlY2tzIGtleSBlcXVhbCwgc2Vjb25kIHRpbWUgY2hlY2tzIGtleSBsZXNz
IHRoYW4KLSAgICAgICAgICAgIGFzc2VydF90aHJvd3MoIkRhdGFFcnJvciIsCisgICAgICAgICAg
ICBhc3NlcnRfdGhyb3dzX2RvbSgiRGF0YUVycm9yIiwKICAgICAgICAgICAgICAgICBmdW5jdGlv
bigpIHsgY3Vyc29yLmNvbnRpbnVlKHJlY29yZHNbMF0uaUtleSk7IH0pOwogCiAgICAgICAgICAg
ICBjdXJzb3IuY29udGludWUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfY29udGludWVfaW5kZXg0Lmh0
bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Npbmcv
aWRiY3Vyc29yX2NvbnRpbnVlX2luZGV4NC5odG1sCmluZGV4IGQ0MTZjOWY1OGVkZGQwZDQxNWVm
NDFlOTMwMTFhMDcxZThhY2RhMGEuLjM1NTQ2YjQxNTAyMmVhMGI1YmNjM2Q3N2FjMzZmMTRhMGZm
NTYwNmEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJp
dmF0ZS1icm93c2luZy9pZGJjdXJzb3JfY29udGludWVfaW5kZXg0Lmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9j
b250aW51ZV9pbmRleDQuaHRtbApAQCAtNDcsNyArNDcsNyBAQAogICAgICAgICAgICAgY2FzZSAx
OgogICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocmVjb3JkLnBLZXksIHJlY29yZHNbMV0u
cEtleSwgInNlY29uZCBwS2V5Iik7CiAgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyZWNv
cmQuaUtleSwgcmVjb3Jkc1sxXS5pS2V5LCAic2Vjb25kIGlLZXkiKTsKLSAgICAgICAgICAgICAg
ICBhc3NlcnRfdGhyb3dzKCJEYXRhRXJyb3IiLAorICAgICAgICAgICAgICAgIGFzc2VydF90aHJv
d3NfZG9tKCJEYXRhRXJyb3IiLAogICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsgY3Vy
c29yLmNvbnRpbnVlKCJpbmRleEtleV8yIik7IH0pOwogICAgICAgICAgICAgICAgIHQuZG9uZSgp
OwogICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9jb250aW51ZV9pbmRl
eDcuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93
c2luZy9pZGJjdXJzb3JfY29udGludWVfaW5kZXg3Lmh0bWwKaW5kZXggNWFlNjA5OGFmMGRhMThi
YjdjNjEzZDIzMThlOGFhMTMzZDUwOWRmOS4uM2ZlMjA5MmFlYWY3ZjJhNzhmYjBkM2NiNzI5MDRi
MmJjYWQ1ZjA3OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWRE
Qi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9jb250aW51ZV9pbmRleDcuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vy
c29yX2NvbnRpbnVlX2luZGV4Ny5odG1sCkBAIC0yNyw3ICsyNyw3IEBACiAgICAgICAgICAgICBh
c3NlcnRfdHJ1ZShjdXJzb3IgaW5zdGFuY2VvZiBJREJDdXJzb3IpOwogCiAgICAgICAgICAgICBl
dmVudC50YXJnZXQudHJhbnNhY3Rpb24uYWJvcnQoKTsKLSAgICAgICAgICAgIGFzc2VydF90aHJv
d3MoIlRyYW5zYWN0aW9uSW5hY3RpdmVFcnJvciIsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
YXNzZXJ0X3Rocm93c19kb20oIlRyYW5zYWN0aW9uSW5hY3RpdmVFcnJvciIsIGZ1bmN0aW9uKCkg
ewogICAgICAgICAgICAgICAgIGN1cnNvci5jb250aW51ZSgpOwogICAgICAgICAgICAgfSwgIkNh
bGxpbmcgY29udGludWUoKSBzaG91bGQgdGhyb3dzIGFuIGV4Y2VwdGlvbiBUcmFuc2FjdGlvbklu
YWN0aXZlRXJyb3Igd2hlbiB0aGUgdHJhbnNhY3Rpb24gaXMgbm90IGFjdGl2ZS4iKTsKIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dz
aW5nL2lkYmN1cnNvcl9jb250aW51ZV9pbmRleDguaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfY29udGludWVfaW5kZXg4
Lmh0bWwKaW5kZXggNmVlNTdmNWJkMjRkMmY3MzQ3NDRmYWVjOTIwOWI5ZDZmY2IxNjMyYi4uMmY3
YWMyMTgxMGQ0OTQ4MzU5OWUyMzI4Mjc4ZWY3MzgyY2QyYjRmYiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9j
b250aW51ZV9pbmRleDguaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhl
ZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2NvbnRpbnVlX2luZGV4OC5odG1sCkBAIC0y
Nyw3ICsyNyw3IEBACiAgICAgICAgICAgICBhc3NlcnRfdHJ1ZShjdXJzb3IgaW5zdGFuY2VvZiBJ
REJDdXJzb3IpOwogCiAgICAgICAgICAgICBkYi5kZWxldGVPYmplY3RTdG9yZSgic3RvcmUiKTsK
LSAgICAgICAgICAgIGFzc2VydF90aHJvd3MoIkludmFsaWRTdGF0ZUVycm9yIiwgZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiSW52YWxpZFN0YXRlRXJyb3IiLCBm
dW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICBjdXJzb3IuY29udGludWUoKTsKICAgICAgICAg
ICAgIH0sICJJZiB0aGUgY3Vyc29yJ3Mgc291cmNlIG9yIGVmZmVjdGl2ZSBvYmplY3Qgc3RvcmUg
aGFzIGJlZW4gZGVsZXRlZCwgdGhlIGltcGxlbWVudGF0aW9uIE1VU1QgdGhyb3cgYSBET01FeGNl
cHRpb24gb2YgdHlwZSBJbnZhbGlkU3RhdGVFcnJvciIpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2Nv
bnRpbnVlX2ludmFsaWQuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREIt
cHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfY29udGludWVfaW52YWxpZC5odG1sCmluZGV4IDY1
N2E2YTAyYzA2ZTM1ODBmZDI0NWJmMTI2NjdiMmI4ZjNlNWUyMDUuLjVhOWM0MGY2MmY0NmU3MDMw
MjhlMWVhMjFhMmYxZDdkNmY1MzMyMjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfY29udGludWVfaW52YWxp
ZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1i
cm93c2luZy9pZGJjdXJzb3JfY29udGludWVfaW52YWxpZC5odG1sCkBAIC0zOSwxMCArMzksMTAg
QEAKICAgICAgICAgICAgIGN1cnNvci5jb250aW51ZSh1bmRlZmluZWQpOwogCiAgICAgICAgICAg
ICAvLyBTZWNvbmQgdHJ5Ci0gICAgICAgICAgICBhc3NlcnRfdGhyb3dzKCdJbnZhbGlkU3RhdGVF
cnJvcicsCisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgnSW52YWxpZFN0YXRlRXJyb3In
LAogICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyBjdXJzb3IuY29udGludWUoKTsgfSwgJ3Nl
Y29uZCBjb250aW51ZScpOwogCi0gICAgICAgICAgICBhc3NlcnRfdGhyb3dzKCdJbnZhbGlkU3Rh
dGVFcnJvcicsCisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgnSW52YWxpZFN0YXRlRXJy
b3InLAogICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyBjdXJzb3IuY29udGludWUoMyk7IH0s
ICd0aGlyZCBjb250aW51ZScpOwogCiAgICAgICAgICAgICBjb3VudCsrOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1
cnNvcl9jb250aW51ZV9vYmplY3RzdG9yZTIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfY29udGludWVfb2JqZWN0c3Rv
cmUyLmh0bWwKaW5kZXggNDRlNDM4ZmU5Nzg4NTJkMzUxNDFmYTM5NmZkYTA5OWYzMWM5YjBkMC4u
NWZhYjE4Y2U2NjEwMTZjNDZkOWZiM2QxMmY2ZmU2YWQxZjFjM2NlNyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNv
cl9jb250aW51ZV9vYmplY3RzdG9yZTIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2NvbnRpbnVlX29iamVjdHN0
b3JlMi5odG1sCkBAIC0yOSw3ICsyOSw3IEBACiAgICAgICAgICAgICB2YXIgY3Vyc29yID0gZS50
YXJnZXQucmVzdWx0OwogCiAgICAgICAgICAgICBhc3NlcnRfdHJ1ZShjdXJzb3IgaW5zdGFuY2Vv
ZiBJREJDdXJzb3IsICJjdXJzb3IgZXhpc3RzIik7Ci0gICAgICAgICAgICBhc3NlcnRfdGhyb3dz
KCJEYXRhRXJyb3IiLAorICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkRhdGFFcnJvciIs
CiAgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7IGN1cnNvci5jb250aW51ZShkb2N1bWVudCk7
IH0pOwogCiAgICAgICAgICAgICB0LmRvbmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfY29udGludWVf
b2JqZWN0c3RvcmUzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXBy
aXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2NvbnRpbnVlX29iamVjdHN0b3JlMy5odG1sCmluZGV4
IGM4MDQyZTRhNGRmZjMwMDJiZjkxMmVlMzUwY2YxZTY2YTgyZTYwYTkuLjc0MGFiNWRjNWE0NmNi
MDMzODExZDQwZTQwNTVhOTEyOTJmY2NlNDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfY29udGludWVfb2Jq
ZWN0c3RvcmUzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1w
cml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9jb250aW51ZV9vYmplY3RzdG9yZTMuaHRtbApAQCAt
MjksNyArMjksNyBAQAogICAgICAgICAgICAgdmFyIGN1cnNvciA9IGUudGFyZ2V0LnJlc3VsdDsK
IAogICAgICAgICAgICAgYXNzZXJ0X3RydWUoY3Vyc29yIGluc3RhbmNlb2YgSURCQ3Vyc29yLCAi
Y3Vyc29yIGV4aXN0Iik7Ci0gICAgICAgICAgICBhc3NlcnRfdGhyb3dzKCJEYXRhRXJyb3IiLAor
ICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkRhdGFFcnJvciIsCiAgICAgICAgICAgICAg
ICAgZnVuY3Rpb24oKSB7IGN1cnNvci5jb250aW51ZShyZWNvcmRzWzBdLnBLZXkpOyB9KTsKIAog
ICAgICAgICAgICAgdC5kb25lKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2NvbnRpbnVlX29iamVjdHN0
b3JlNC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJy
b3dzaW5nL2lkYmN1cnNvcl9jb250aW51ZV9vYmplY3RzdG9yZTQuaHRtbAppbmRleCA2MGQ5MWQ5
YjEyMjYyZjE0M2ZiYWVjMzMyZGI2MjczMTI4NWIzZjBiLi5hYTBmZGIwNzI0YWQzODY3ZmY2ZGU0
YmRmYTJiYjIxYzI3MWU4ZTcxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
SW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2NvbnRpbnVlX29iamVjdHN0b3Jl
NC5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1i
cm93c2luZy9pZGJjdXJzb3JfY29udGludWVfb2JqZWN0c3RvcmU0Lmh0bWwKQEAgLTQwLDcgKzQw
LDcgQEAKIAogICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgIGFzc2VydF9lcXVh
bHMoY3Vyc29yLnZhbHVlLnBLZXksIHJlY29yZHNbMV0ucEtleSwgInNlY29uZCBjdXJzb3IgcGtl
eSIpOwotICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3MoIkRhdGFFcnJvciIsCisgICAgICAg
ICAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkRhdGFFcnJvciIsCiAgICAgICAgICAgICAgICAg
ICAgIGZ1bmN0aW9uKCkgeyBjdXJzb3IuY29udGludWUocmVjb3Jkc1syXS5wS2V5KTsgfSk7CiAg
ICAgICAgICAgICAgICAgdC5kb25lKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Npbmcv
aWRiY3Vyc29yX2NvbnRpbnVlX29iamVjdHN0b3JlNS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9jb250aW51ZV9vYmpl
Y3RzdG9yZTUuaHRtbAppbmRleCAwMjYzMTVjYmQwMzU3NmFjMmMyNWQyOGI1YTk5OWZlN2ExMTU3
MmM1Li5kNmY4ZjNkNjZmZDVjNTc0ZjA4MzE1ZmY2OTNiZWM2OTg1YzNlMjkyIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRi
Y3Vyc29yX2NvbnRpbnVlX29iamVjdHN0b3JlNS5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfY29udGludWVfb2Jq
ZWN0c3RvcmU1Lmh0bWwKQEAgLTMxLDcgKzMxLDcgQEAKICAgICAgICAgICAgIGFzc2VydF90cnVl
KGN1cnNvciBpbnN0YW5jZW9mIElEQkN1cnNvciwgImN1cnNvciBleGlzdHMiKTsKIAogICAgICAg
ICAgICAgZS50YXJnZXQudHJhbnNhY3Rpb24uYWJvcnQoKTsKLSAgICAgICAgICAgIGFzc2VydF90
aHJvd3MoIlRyYW5zYWN0aW9uSW5hY3RpdmVFcnJvciIsIGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgYXNzZXJ0X3Rocm93c19kb20oIlRyYW5zYWN0aW9uSW5hY3RpdmVFcnJvciIsIGZ1bmN0aW9u
KCkgewogICAgICAgICAgICAgICAgIGN1cnNvci5jb250aW51ZSgpOwogICAgICAgICAgICAgfSwg
IkNhbGxpbmcgY29udGludWUoKSBzaG91bGQgdGhyb3dzIGFuIGV4Y2VwdGlvbiBUcmFuc2FjdGlv
bkluYWN0aXZlRXJyb3Igd2hlbiB0aGUgdHJhbnNhY3Rpb24gaXMgbm90IGFjdGl2ZS4iKTsKIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJy
b3dzaW5nL2lkYmN1cnNvcl9jb250aW51ZV9vYmplY3RzdG9yZTYuaHRtbCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfY29udGlu
dWVfb2JqZWN0c3RvcmU2Lmh0bWwKaW5kZXggYjU2OTU1OWY4ZTk2OGVlMjkyZGE4ZmNjNDE4Yjg3
MGFhYTJhM2IyZC4uYmY0MzYzOGI5N2FkMGNlMDA3MTlmODBlZDU5MGVlM2VkYWE0ZjgxOCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dz
aW5nL2lkYmN1cnNvcl9jb250aW51ZV9vYmplY3RzdG9yZTYuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2NvbnRp
bnVlX29iamVjdHN0b3JlNi5odG1sCkBAIC0yNyw3ICsyNyw3IEBACiAgICAgICAgICAgICBhc3Nl
cnRfdHJ1ZShjdXJzb3IgaW5zdGFuY2VvZiBJREJDdXJzb3IsICJjdXJzb3IgZXhpc3RzIik7CiAK
ICAgICAgICAgICAgIGRiLmRlbGV0ZU9iamVjdFN0b3JlKCJ0ZXN0Iik7Ci0gICAgICAgICAgICBh
c3NlcnRfdGhyb3dzKCJJbnZhbGlkU3RhdGVFcnJvciIsIGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgYXNzZXJ0X3Rocm93c19kb20oIkludmFsaWRTdGF0ZUVycm9yIiwgZnVuY3Rpb24oKSB7CiAg
ICAgICAgICAgICAgICAgY3Vyc29yLmNvbnRpbnVlKCk7CiAgICAgICAgICAgICB9LCAiSWYgdGhl
IGN1cnNvcidzIHNvdXJjZSBvciBlZmZlY3RpdmUgb2JqZWN0IHN0b3JlIGhhcyBiZWVuIGRlbGV0
ZWQsIHRoZSBpbXBsZW1lbnRhdGlvbiBNVVNUIHRocm93IGEgRE9NRXhjZXB0aW9uIG9mIHR5cGUg
SW52YWxpZFN0YXRlRXJyb3IiKTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9kZWxldGVfaW5kZXgyLmh0
bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Npbmcv
aWRiY3Vyc29yX2RlbGV0ZV9pbmRleDIuaHRtbAppbmRleCAxMzNmOTEyNDQ4ODhmNGIwOTZmNDYz
YTA0ODQzM2M1NDg3NTMxMThjLi4xMGFkOGJiNWY1ZDRhYzQ5NDA4MWQ2Y2M1NGE5MDQxOWY3ZDQy
YTNhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZh
dGUtYnJvd3NpbmcvaWRiY3Vyc29yX2RlbGV0ZV9pbmRleDIuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2RlbGV0
ZV9pbmRleDIuaHRtbApAQCAtMzIsNyArMzIsNyBAQAogICAgICAgICAgICAgdmFyIGN1cnNvciA9
IGUudGFyZ2V0LnJlc3VsdDsKIAogICAgICAgICAgICAgYXNzZXJ0X3RydWUoY3Vyc29yIGluc3Rh
bmNlb2YgSURCQ3Vyc29yLCAiY3Vyc29yIGV4aXN0Iik7Ci0gICAgICAgICAgICBhc3NlcnRfdGhy
b3dzKCdSZWFkT25seUVycm9yJywgZnVuY3Rpb24oKSB7IGN1cnNvci5kZWxldGUoKTsgfSk7Cisg
ICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgnUmVhZE9ubHlFcnJvcicsIGZ1bmN0aW9uKCkg
eyBjdXJzb3IuZGVsZXRlKCk7IH0pOwogICAgICAgICAgICAgdC5kb25lKCk7CiAgICAgICAgIH0p
OwogICAgIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREIt
cHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfZGVsZXRlX2luZGV4My5odG1sIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9kZWxl
dGVfaW5kZXgzLmh0bWwKaW5kZXggYzFjMzA0NGIzZjVjMGJmY2Y1NWZjYzFiMDVjMTE0OTJhYWVh
NGFkZi4uN2E2ZWIyMjQyYjBiYWUwMTViYjQyZTdiNjY4YzMwMDM0NDQwYzU3OSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lk
YmN1cnNvcl9kZWxldGVfaW5kZXgzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9kZWxldGVfaW5kZXgzLmh0bWwK
QEAgLTMwLDcgKzMwLDcgQEAKICAgICAgICAgfSk7CiAKICAgICAgICAgZS50YXJnZXQudHJhbnNh
Y3Rpb24ub25jb21wbGV0ZSA9IHQuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAg
IGFzc2VydF90aHJvd3MoJ1RyYW5zYWN0aW9uSW5hY3RpdmVFcnJvcicsIGZ1bmN0aW9uKCkgeyB3
aW5kb3cuY3Vyc29yLmRlbGV0ZSgpOyB9KQorICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19kb20o
J1RyYW5zYWN0aW9uSW5hY3RpdmVFcnJvcicsIGZ1bmN0aW9uKCkgeyB3aW5kb3cuY3Vyc29yLmRl
bGV0ZSgpOyB9KQogICAgICAgICAgICAgdC5kb25lKCk7CiAgICAgICAgIH0pOwogICAgIH0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93
c2luZy9pZGJjdXJzb3JfZGVsZXRlX2luZGV4NC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9kZWxldGVfaW5kZXg0Lmh0
bWwKaW5kZXggZmY2ZTU3Njc0MDlkN2Q2ZmNmN2JhOGI4ZjdlYzM5NTIzNjRiNDg4NC4uMDA5Zjg0
MDliNDU3YTJiNzlkZjhjYjI5MjA2MjdhYWFhYjVjN2MwMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9kZWxl
dGVfaW5kZXg0Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1w
cml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9kZWxldGVfaW5kZXg0Lmh0bWwKQEAgLTI3LDcgKzI3
LDcgQEAKICAgICAgICAgICAgIGFzc2VydF90cnVlKGN1cnNvciBpbnN0YW5jZW9mIElEQkN1cnNv
ciwgImN1cnNvciBleGlzdCIpOwogCiAgICAgICAgICAgICBkYi5kZWxldGVPYmplY3RTdG9yZSgi
c3RvcmUiKTsKLSAgICAgICAgICAgIGFzc2VydF90aHJvd3MoIkludmFsaWRTdGF0ZUVycm9yIiwg
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiSW52YWxpZFN0YXRl
RXJyb3IiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICBjdXJzb3IuZGVsZXRlKCk7CiAg
ICAgICAgICAgICB9LCAiSWYgdGhlIGN1cnNvcidzIHNvdXJjZSBvciBlZmZlY3RpdmUgb2JqZWN0
IHN0b3JlIGhhcyBiZWVuIGRlbGV0ZWQsIHRoZSBpbXBsZW1lbnRhdGlvbiBNVVNUIHRocm93IGEg
RE9NRXhjZXB0aW9uIG9mIHR5cGUgSW52YWxpZFN0YXRlRXJyb3IiKTsKIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1
cnNvcl9kZWxldGVfaW5kZXg1Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhl
ZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2RlbGV0ZV9pbmRleDUuaHRtbAppbmRleCA0
ZmMwZTI5NjdkNjJjMzcwZGNiNjRkYzA3NWRhOTFkYWQ1YWZiMTNhLi4zNjAwYTgyYWQ0NTgyOTk5
YjQyMDg3YWVjMzMyNDQ1MWEzZDQ2ZmJmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2RlbGV0ZV9pbmRleDUu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJv
d3NpbmcvaWRiY3Vyc29yX2RlbGV0ZV9pbmRleDUuaHRtbApAQCAtMjgsNyArMjgsNyBAQAogICAg
ICAgICAgICAgYXNzZXJ0X3RydWUoY3Vyc29yIGluc3RhbmNlb2YgSURCQ3Vyc29yLCAiY3Vyc29y
IGV4aXN0Iik7CiAKICAgICAgICAgICAgIGN1cnNvci5jb250aW51ZSgpOwotICAgICAgICAgICAg
YXNzZXJ0X3Rocm93cygiSW52YWxpZFN0YXRlRXJyb3IiLCBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlkU3RhdGVFcnJvciIsIGZ1bmN0aW9uKCkgewog
ICAgICAgICAgICAgICAgIGN1cnNvci5kZWxldGUoKTsKICAgICAgICAgICAgIH0pOwogCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Np
bmcvaWRiY3Vyc29yX2RlbGV0ZV9vYmplY3RzdG9yZTIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfZGVsZXRlX29iamVj
dHN0b3JlMi5odG1sCmluZGV4IGNjNTdlOTlmNjk1ZDY5ZjY5YTQ0MjgyN2M2YzY1NzhhNmMyNTMz
M2EuLjc3NTljNzJlOTE2OWJhOWI4Y2YzNDQ2ZjkxNjgwNTA3NzkxYzNjZDIgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJj
dXJzb3JfZGVsZXRlX29iamVjdHN0b3JlMi5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfZGVsZXRlX29iamVjdHN0
b3JlMi5odG1sCkBAIC0zMCw3ICszMCw3IEBACiAgICAgICAgICAgICB2YXIgY3Vyc29yID0gZS50
YXJnZXQucmVzdWx0OwogCiAgICAgICAgICAgICBhc3NlcnRfdHJ1ZShjdXJzb3IgIT0gbnVsbCwg
ImN1cnNvciBleGlzdCIpOwotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygnUmVhZE9ubHlFcnJv
cicsIGZ1bmN0aW9uKCkgeyBjdXJzb3IuZGVsZXRlKCk7IH0pOworICAgICAgICAgICAgYXNzZXJ0
X3Rocm93c19kb20oJ1JlYWRPbmx5RXJyb3InLCBmdW5jdGlvbigpIHsgY3Vyc29yLmRlbGV0ZSgp
OyB9KTsKICAgICAgICAgICAgIHQuZG9uZSgpOwogICAgICAgICB9KTsKICAgICB9CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Npbmcv
aWRiY3Vyc29yX2RlbGV0ZV9vYmplY3RzdG9yZTMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfZGVsZXRlX29iamVjdHN0
b3JlMy5odG1sCmluZGV4IGIyZmQ4MjAxYWRjMzAyODlmODYwODU2Y2U5ZWE1MzM4YjcyY2QyZjku
LmY4MjViOGE0MTJlZGM4ZGZhMGU2ODczOTEwY2M4NmY0OGRhOGY3MzAgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJz
b3JfZGVsZXRlX29iamVjdHN0b3JlMy5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfZGVsZXRlX29iamVjdHN0b3Jl
My5odG1sCkBAIC0yOSw3ICsyOSw3IEBACiAgICAgICAgIH0pOwogCiAgICAgICAgIGUudGFyZ2V0
LnRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSB0LnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7Ci0gICAg
ICAgICAgICBhc3NlcnRfdGhyb3dzKCdUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3InLCBmdW5jdGlv
bigpIHsgd2luZG93LmN1cnNvci5kZWxldGUoKTsgfSkKKyAgICAgICAgICAgIGFzc2VydF90aHJv
d3NfZG9tKCdUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3InLCBmdW5jdGlvbigpIHsgd2luZG93LmN1
cnNvci5kZWxldGUoKTsgfSkKICAgICAgICAgICAgIHQuZG9uZSgpOwogICAgICAgICB9KTsKICAg
ICB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZh
dGUtYnJvd3NpbmcvaWRiY3Vyc29yX2RlbGV0ZV9vYmplY3RzdG9yZTQuaHRtbCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfZGVs
ZXRlX29iamVjdHN0b3JlNC5odG1sCmluZGV4IGI5Nzc1YzhmMTY2MzJhM2MzNmFhYjI2YTE5YmE5
N2RkNzYyMzQ3OWEuLjE3YjE4ZDBhZjUxNTliMmJlMWVlZmFjYWE3MzE2NTlhMDM1YTkyODEgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93
c2luZy9pZGJjdXJzb3JfZGVsZXRlX29iamVjdHN0b3JlNC5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfZGVsZXRl
X29iamVjdHN0b3JlNC5odG1sCkBAIC0yNiw3ICsyNiw3IEBACiAgICAgICAgICAgICBhc3NlcnRf
dHJ1ZShjdXJzb3IgaW5zdGFuY2VvZiBJREJDdXJzb3IsICJjdXJzb3IgZXhpc3QiKTsKIAogICAg
ICAgICAgICAgZGIuZGVsZXRlT2JqZWN0U3RvcmUoInN0b3JlIik7Ci0gICAgICAgICAgICBhc3Nl
cnRfdGhyb3dzKCJJbnZhbGlkU3RhdGVFcnJvciIsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
YXNzZXJ0X3Rocm93c19kb20oIkludmFsaWRTdGF0ZUVycm9yIiwgZnVuY3Rpb24oKSB7CiAgICAg
ICAgICAgICAgICAgY3Vyc29yLmRlbGV0ZSgpOwogICAgICAgICAgICAgfSwgIklmIHRoZSBjdXJz
b3IncyBzb3VyY2Ugb3IgZWZmZWN0aXZlIG9iamVjdCBzdG9yZSBoYXMgYmVlbiBkZWxldGVkLCB0
aGUgaW1wbGVtZW50YXRpb24gTVVTVCB0aHJvdyBhIERPTUV4Y2VwdGlvbiBvZiB0eXBlIEludmFs
aWRTdGF0ZUVycm9yIik7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9J
bmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfZGVsZXRlX29iamVjdHN0b3JlNS5o
dG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5n
L2lkYmN1cnNvcl9kZWxldGVfb2JqZWN0c3RvcmU1Lmh0bWwKaW5kZXggNzdmYTVmMjMzY2VlZmJl
ZDQ0YThjMTBlY2VmZThiMDA1ZTIxMTg5Zi4uZGQ4Mjg2ZjA4ZDM3YzQ4NTE2Yjc0YzQ2NzdhMWQ4
ZDQ5NmE3YzRjMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWRE
Qi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9kZWxldGVfb2JqZWN0c3RvcmU1Lmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lk
YmN1cnNvcl9kZWxldGVfb2JqZWN0c3RvcmU1Lmh0bWwKQEAgLTMwLDcgKzMwLDcgQEAKICAgICAg
ICAgICAgIGFzc2VydF90cnVlKGN1cnNvciBpbnN0YW5jZW9mIElEQkN1cnNvciwgImN1cnNvciBl
eGlzdCIpOwogCiAgICAgICAgICAgICBjdXJzb3IuY29udGludWUoKTsKLSAgICAgICAgICAgIGFz
c2VydF90aHJvd3MoIkludmFsaWRTdGF0ZUVycm9yIiwgZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICBhc3NlcnRfdGhyb3dzX2RvbSgiSW52YWxpZFN0YXRlRXJyb3IiLCBmdW5jdGlvbigpIHsKICAg
ICAgICAgICAgICAgICBjdXJzb3IuZGVsZXRlKCk7CiAgICAgICAgICAgICB9KTsKIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5n
L2lkYmN1cnNvcl91cGRhdGVfaW5kZXgyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
SW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX3VwZGF0ZV9pbmRleDIuaHRtbApp
bmRleCA3ZDAwMDFjYmI5MTg5N2I0NjFmYTQwYzRmZmM5ZjlhOWY1MzYyMjY3Li5hMmMyMDY0Y2Zi
Mzc0NmIwZDFiOTM0MTk0MjhjOWZmMzBkMDExYjU1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX3VwZGF0ZV9p
bmRleDIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZh
dGUtYnJvd3NpbmcvaWRiY3Vyc29yX3VwZGF0ZV9pbmRleDIuaHRtbApAQCAtMzAsNyArMzAsNyBA
QAogCiAgICAgICAgIGN1cnNvcl9ycS5vbnN1Y2Nlc3MgPSB0LnN0ZXBfZnVuYyhmdW5jdGlvbihl
KSB7CiAgICAgICAgICAgICB2YXIgY3Vyc29yID0gZS50YXJnZXQucmVzdWx0OwotICAgICAgICAg
ICAgYXNzZXJ0X3Rocm93cygnUmVhZE9ubHlFcnJvcicsIGZ1bmN0aW9uKCkgeyBjdXJzb3IudXBk
YXRlKGN1cnNvci52YWx1ZSk7IH0pOworICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oJ1Jl
YWRPbmx5RXJyb3InLCBmdW5jdGlvbigpIHsgY3Vyc29yLnVwZGF0ZShjdXJzb3IudmFsdWUpOyB9
KTsKICAgICAgICAgICAgIHQuZG9uZSgpOwogICAgICAgICB9KTsKICAgICB9CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRi
Y3Vyc29yX3VwZGF0ZV9pbmRleDMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRl
eGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfdXBkYXRlX2luZGV4My5odG1sCmluZGV4
IDBkZTY2Y2JjNmMzMDdkZjNmNzFkODdlMzM0YjBlNDI2MGRhMDcxNzguLjU0ZmQyMjg3YmE2Y2I4
MjkzZGVmNDgyNWQ1YTdiNzRhZjgxNjNkOGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfdXBkYXRlX2luZGV4
My5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1i
cm93c2luZy9pZGJjdXJzb3JfdXBkYXRlX2luZGV4My5odG1sCkBAIC0zMSw3ICszMSw3IEBACiAg
ICAgICAgIH0pOwogCiAgICAgICAgIGUudGFyZ2V0LnRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSB0
LnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICBhc3NlcnRfdGhyb3dzKCdUcmFu
c2FjdGlvbkluYWN0aXZlRXJyb3InLCBmdW5jdGlvbigpIHsgd2luZG93LmN1cnNvci51cGRhdGUo
d2luZG93LnJlY29yZCk7IH0pCisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgnVHJhbnNh
Y3Rpb25JbmFjdGl2ZUVycm9yJywgZnVuY3Rpb24oKSB7IHdpbmRvdy5jdXJzb3IudXBkYXRlKHdp
bmRvdy5yZWNvcmQpOyB9KQogICAgICAgICAgICAgdC5kb25lKCk7CiAgICAgICAgIH0pOwogICAg
IH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0
ZS1icm93c2luZy9pZGJjdXJzb3JfdXBkYXRlX2luZGV4NC5odG1sIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl91cGRhdGVfaW5k
ZXg0Lmh0bWwKaW5kZXggMmFkMjk0NThjZDc4OTdmZDRhZGQ4Y2M1YjQzZGZiYzk3Yjc4N2VkZi4u
ZDFmMTdkMmM4MzcxNjA3YWE4OGExNTgyZjZhYzc5OWEwZjIyMjEyMiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNv
cl91cGRhdGVfaW5kZXg0Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4
ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl91cGRhdGVfaW5kZXg0Lmh0bWwKQEAgLTI4
LDcgKzI4LDcgQEAKIAogICAgICAgICAgICAgZGIuZGVsZXRlT2JqZWN0U3RvcmUoInN0b3JlIik7
CiAgICAgICAgICAgICBjdXJzb3IudmFsdWUuaUtleSArPSAiX3VwZGF0ZWQiOwotICAgICAgICAg
ICAgYXNzZXJ0X3Rocm93cygiSW52YWxpZFN0YXRlRXJyb3IiLCBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlkU3RhdGVFcnJvciIsIGZ1bmN0aW9uKCkg
ewogICAgICAgICAgICAgICAgIGN1cnNvci51cGRhdGUoY3Vyc29yLnZhbHVlKTsKICAgICAgICAg
ICAgIH0sICJJZiB0aGUgY3Vyc29yJ3Mgc291cmNlIG9yIGVmZmVjdGl2ZSBvYmplY3Qgc3RvcmUg
aGFzIGJlZW4gZGVsZXRlZCwgdGhlIGltcGxlbWVudGF0aW9uIE1VU1QgdGhyb3cgYSBET01FeGNl
cHRpb24gb2YgdHlwZSBJbnZhbGlkU3RhdGVFcnJvciIpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX3Vw
ZGF0ZV9pbmRleDUuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJp
dmF0ZS1icm93c2luZy9pZGJjdXJzb3JfdXBkYXRlX2luZGV4NS5odG1sCmluZGV4IGM4MjUzZTU0
YjExMDc1ZjcyNTQ2MTE3NDVkZGE3ZDRlMjZhZTA5NjEuLmZkNGYyOGZjNjc3M2I2MjIwYTI4NzYw
OWQwYjM4Njk3YmNmZGIyOTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9J
bmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfdXBkYXRlX2luZGV4NS5odG1sCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9p
ZGJjdXJzb3JfdXBkYXRlX2luZGV4NS5odG1sCkBAIC0zNSw3ICszNSw3IEBACiAKICAgICAgICAg
ICAgIHZhciByZWNvcmQgPSBjdXJzb3IudmFsdWU7CiAgICAgICAgICAgICByZWNvcmQuZGF0YSA9
IGRvY3VtZW50OwotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygnRGF0YUNsb25lRXJyb3InLCBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCdEYXRhQ2xvbmVFcnJv
cicsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgIGN1cnNvci51cGRhdGUocmVjb3JkKTsK
ICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgdC5kb25lKCk7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29y
X3VwZGF0ZV9pbmRleDYuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREIt
cHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfdXBkYXRlX2luZGV4Ni5odG1sCmluZGV4IGUyMjhk
NzliM2Y1OWQ5ZjZlNDQ5YTY4ODU2ZTdkYzMxMThlZDBlMTUuLmVkNzI5OGEzYmNlNDJlMzkzMDVm
ZTQwNmYzOTkzMDRkYTJmMThmNTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfdXBkYXRlX2luZGV4Ni5odG1s
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2lu
Zy9pZGJjdXJzb3JfdXBkYXRlX2luZGV4Ni5odG1sCkBAIC0zMyw3ICszMyw3IEBACiAgICAgICAg
ICAgICB2YXIgY3Vyc29yID0gZS50YXJnZXQucmVzdWx0OwogICAgICAgICAgICAgYXNzZXJ0X3Ry
dWUoY3Vyc29yIGluc3RhbmNlb2YgSURCQ3Vyc29yKTsKIAotICAgICAgICAgICAgYXNzZXJ0X3Ro
cm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgeyBjdXJzb3IudXBkYXRlKCk7IH0pOwor
ICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeyBjdXJz
b3IudXBkYXRlKCk7IH0pOwogICAgICAgICAgICAgdC5kb25lKCk7CiAgICAgICAgIH0pOwogICAg
IH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0
ZS1icm93c2luZy9pZGJjdXJzb3JfdXBkYXRlX2luZGV4Ny5odG1sIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl91cGRhdGVfaW5k
ZXg3Lmh0bWwKaW5kZXggNzI3MGViZWVjODdmOTIyYzg1NDEyNzU4MjAzZDEzNDc5Y2VhZDg1OS4u
NDdhZjlkZDEwMWQyN2I2ZjBhZTYyMTEyNzc2ZGEyZjZiYjk0YmNmYiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNv
cl91cGRhdGVfaW5kZXg3Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4
ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl91cGRhdGVfaW5kZXg3Lmh0bWwKQEAgLTMz
LDcgKzMzLDcgQEAKICAgICAgICAgICAgIHZhciBjdXJzb3IgPSBlLnRhcmdldC5yZXN1bHQ7CiAg
ICAgICAgICAgICBhc3NlcnRfdHJ1ZShjdXJzb3IgaW5zdGFuY2VvZiBJREJDdXJzb3IpOwogCi0g
ICAgICAgICAgICBhc3NlcnRfdGhyb3dzKCdEYXRhRXJyb3InLCBmdW5jdGlvbigpIHsgY3Vyc29y
LnVwZGF0ZShudWxsKTsgfSk7CisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgnRGF0YUVy
cm9yJywgZnVuY3Rpb24oKSB7IGN1cnNvci51cGRhdGUobnVsbCk7IH0pOwogICAgICAgICAgICAg
dC5kb25lKCk7CiAgICAgICAgIH0pOwogICAgIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfdXBkYXRlX29i
amVjdHN0b3JlMi5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2
YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl91cGRhdGVfb2JqZWN0c3RvcmUyLmh0bWwKaW5kZXggNmVh
OTM1OGE3NTk2NjRlMjY4NmM5NWQxMjg5NjUzMTVhZTIzZDUwMi4uODU2Y2I1MGQ1NGM4NWQ0NjZi
NTBmNWZhODAwZTQyYWFkZWI3N2YzYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl91cGRhdGVfb2JqZWN0c3Rv
cmUyLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRl
LWJyb3dzaW5nL2lkYmN1cnNvcl91cGRhdGVfb2JqZWN0c3RvcmUyLmh0bWwKQEAgLTI4LDcgKzI4
LDcgQEAKIAogICAgICAgICBjdXJzb3JfcnEub25zdWNjZXNzID0gdC5zdGVwX2Z1bmMoZnVuY3Rp
b24oZSkgewogICAgICAgICAgICAgdmFyIGN1cnNvciA9IGUudGFyZ2V0LnJlc3VsdDsKLSAgICAg
ICAgICAgIGFzc2VydF90aHJvd3MoJ1JlYWRPbmx5RXJyb3InLCBmdW5jdGlvbigpIHsgY3Vyc29y
LnVwZGF0ZShjdXJzb3IudmFsdWUpOyB9KTsKKyAgICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9t
KCdSZWFkT25seUVycm9yJywgZnVuY3Rpb24oKSB7IGN1cnNvci51cGRhdGUoY3Vyc29yLnZhbHVl
KTsgfSk7CiAgICAgICAgICAgICB0LmRvbmUoKTsKICAgICAgICAgfSk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5n
L2lkYmN1cnNvcl91cGRhdGVfb2JqZWN0c3RvcmUzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX3VwZGF0ZV9vYmplY3Rz
dG9yZTMuaHRtbAppbmRleCBkMjg1ZDc0NDAxM2YyM2M0MDM5NmE1YTA1Zjg0OThkYjlkMDAxOGRk
Li40N2ZhMGI3YWE1MGU2NDkxMzIwYTcwMDk5NTU5YzhiNGFiMGNiZDI5IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vy
c29yX3VwZGF0ZV9vYmplY3RzdG9yZTMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX3VwZGF0ZV9vYmplY3RzdG9y
ZTMuaHRtbApAQCAtMzAsNyArMzAsNyBAQAogICAgICAgICB9KTsKIAogICAgICAgICBlLnRhcmdl
dC50cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gdC5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgewotICAg
ICAgICAgICAgYXNzZXJ0X3Rocm93cygnVHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yJywgZnVuY3Rp
b24oKSB7IHdpbmRvdy5jdXJzb3IudXBkYXRlKHdpbmRvdy5yZWNvcmQpOyB9KQorICAgICAgICAg
ICAgYXNzZXJ0X3Rocm93c19kb20oJ1RyYW5zYWN0aW9uSW5hY3RpdmVFcnJvcicsIGZ1bmN0aW9u
KCkgeyB3aW5kb3cuY3Vyc29yLnVwZGF0ZSh3aW5kb3cucmVjb3JkKTsgfSkKICAgICAgICAgICAg
IHQuZG9uZSgpOwogICAgICAgICB9KTsKICAgICB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX3VwZGF0ZV9v
YmplY3RzdG9yZTUuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJp
dmF0ZS1icm93c2luZy9pZGJjdXJzb3JfdXBkYXRlX29iamVjdHN0b3JlNS5odG1sCmluZGV4IDM5
NjRkYjk3ODA5MmRjN2ZlY2M5OGM3OWZiOTBhNjk5OGJmOWU0NDEuLmQ2OTVmZjFkYzMyZmE3Mzhh
ZDY2MmY4NTc3ZTJkMGM2MDQ1NmUwOTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfdXBkYXRlX29iamVjdHN0
b3JlNS5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0
ZS1icm93c2luZy9pZGJjdXJzb3JfdXBkYXRlX29iamVjdHN0b3JlNS5odG1sCkBAIC0yOSw3ICsy
OSw3IEBACiAKICAgICAgICAgICAgIGRiLmRlbGV0ZU9iamVjdFN0b3JlKCJ0ZXN0Iik7CiAgICAg
ICAgICAgICBjdXJzb3IudmFsdWUgKz0gIl91cGRhdGVkIjsKLSAgICAgICAgICAgIGFzc2VydF90
aHJvd3MoIkludmFsaWRTdGF0ZUVycm9yIiwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhc3Nl
cnRfdGhyb3dzX2RvbSgiSW52YWxpZFN0YXRlRXJyb3IiLCBmdW5jdGlvbigpIHsKICAgICAgICAg
ICAgICAgICBjdXJzb3IudXBkYXRlKGN1cnNvci52YWx1ZSk7CiAgICAgICAgICAgICB9LCAiSWYg
dGhlIGN1cnNvcidzIHNvdXJjZSBvciBlZmZlY3RpdmUgb2JqZWN0IHN0b3JlIGhhcyBiZWVuIGRl
bGV0ZWQsIHRoZSBpbXBsZW1lbnRhdGlvbiBNVVNUIHRocm93IGEgRE9NRXhjZXB0aW9uIG9mIHR5
cGUgSW52YWxpZFN0YXRlRXJyb3IiKTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl91cGRhdGVfb2JqZWN0
c3RvcmU2Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUt
YnJvd3NpbmcvaWRiY3Vyc29yX3VwZGF0ZV9vYmplY3RzdG9yZTYuaHRtbAppbmRleCBkNDgyMzRj
Mjg4NjY4YzUyNTcwZGNiZjkyNDRmYzcyNjgwYzYyOGJiLi43YmQ0NzZlOTI3ODY3YmQxZmFlZjI0
YWIxM2M4OTE2NTQxMmNhNWU5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
SW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX3VwZGF0ZV9vYmplY3RzdG9yZTYu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJv
d3NpbmcvaWRiY3Vyc29yX3VwZGF0ZV9vYmplY3RzdG9yZTYuaHRtbApAQCAtMzMsNyArMzMsNyBA
QAogCiAgICAgICAgICAgICB2YXIgcmVjb3JkID0gY3Vyc29yLnZhbHVlOwogICAgICAgICAgICAg
cmVjb3JkLmRhdGEgPSBkb2N1bWVudDsKLSAgICAgICAgICAgIGFzc2VydF90aHJvd3MoJ0RhdGFD
bG9uZUVycm9yJywgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgn
RGF0YUNsb25lRXJyb3InLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICBjdXJzb3IudXBk
YXRlKHJlY29yZCk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIHQuZG9uZSgpOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dz
aW5nL2lkYmN1cnNvcl91cGRhdGVfb2JqZWN0c3RvcmU3Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX3VwZGF0ZV9vYmpl
Y3RzdG9yZTcuaHRtbAppbmRleCBkYjk4MDYzZTA5OTdiNGMyMzY3YjIzZDRiYzJkYWU5Y2YxMjU1
N2M4Li40YTAwM2NhYjUyODU4YzFkNTVhMWZhMmVhZDE4N2ZmNzM3ZDQ4M2Q4IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRi
Y3Vyc29yX3VwZGF0ZV9vYmplY3RzdG9yZTcuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX3VwZGF0ZV9vYmplY3Rz
dG9yZTcuaHRtbApAQCAtMzEsNyArMzEsNyBAQAogICAgICAgICAgICAgdmFyIGN1cnNvciA9IGUu
dGFyZ2V0LnJlc3VsdDsKICAgICAgICAgICAgIGFzc2VydF90cnVlKGN1cnNvciBpbnN0YW5jZW9m
IElEQkN1cnNvcik7CiAKLSAgICAgICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigp
LCBmdW5jdGlvbigpIHsgY3Vyc29yLnVwZGF0ZSgpOyB9KTsKKyAgICAgICAgICAgIGFzc2VydF90
aHJvd3NfanMoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsgY3Vyc29yLnVwZGF0ZSgpOyB9KTsKICAg
ICAgICAgICAgIHQuZG9uZSgpOwogICAgICAgICB9KTsKICAgICB9CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29y
X3VwZGF0ZV9vYmplY3RzdG9yZTguaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRl
eGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfdXBkYXRlX29iamVjdHN0b3JlOC5odG1s
CmluZGV4IDk0OGM1NDkxNjliMDUyODI1ZThlZTZjNjYzMTY5Zjk5NDkwZWNmMDEuLmRhMzZkZGU4
OTJiZmMyZWQ3NjdhMDg4NzIxODM4YzY4YjI2MWEzM2EgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfdXBkYXRl
X29iamVjdHN0b3JlOC5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVk
REItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfdXBkYXRlX29iamVjdHN0b3JlOC5odG1sCkBA
IC0zMSw3ICszMSw3IEBACiAgICAgICAgICAgICB2YXIgY3Vyc29yID0gZS50YXJnZXQucmVzdWx0
OwogICAgICAgICAgICAgYXNzZXJ0X3RydWUoY3Vyc29yIGluc3RhbmNlb2YgSURCQ3Vyc29yKTsK
IAotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygnRGF0YUVycm9yJywgZnVuY3Rpb24oKSB7IGN1
cnNvci51cGRhdGUobnVsbCk7IH0pOworICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oJ0Rh
dGFFcnJvcicsIGZ1bmN0aW9uKCkgeyBjdXJzb3IudXBkYXRlKG51bGwpOyB9KTsKICAgICAgICAg
ICAgIHQuZG9uZSgpOwogICAgICAgICB9KTsKICAgICB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiZGF0YWJhc2VfY3Jl
YXRlT2JqZWN0U3RvcmUxMS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWRE
Qi1wcml2YXRlLWJyb3dzaW5nL2lkYmRhdGFiYXNlX2NyZWF0ZU9iamVjdFN0b3JlMTEuaHRtbApp
bmRleCBiMmUyMzNhNmU2NmUxNzgwMTU5ODZiMzZkMjk1N2UxMzBlNTFjZjU1Li4xNzA3ZjgxNjY3
ZGJmMDMwMzU5N2MwZWU3N2Y2MDY4MTI1MjE2ZWEzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiZGF0YWJhc2VfY3JlYXRl
T2JqZWN0U3RvcmUxMS5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVk
REItcHJpdmF0ZS1icm93c2luZy9pZGJkYXRhYmFzZV9jcmVhdGVPYmplY3RTdG9yZTExLmh0bWwK
QEAgLTE0LDcgKzE0LDcgQEAgdmFyIHQgPSBhc3luY190ZXN0KCksCiBvcGVuX3JxLm9udXBncmFk
ZW5lZWRlZCA9IGZ1bmN0aW9uIChlKSB7CiAgICAgdmFyIGRiID0gZS50YXJnZXQucmVzdWx0Owog
ICAgIGRiLmNyZWF0ZU9iamVjdFN0b3JlKCJzdG9yZSIpOwotICAgIGFzc2VydF90aHJvd3MoIkNv
bnN0cmFpbnRFcnJvciIsIGZ1bmN0aW9uKCl7CisgICAgYXNzZXJ0X3Rocm93c19kb20oIkNvbnN0
cmFpbnRFcnJvciIsIGZ1bmN0aW9uKCl7CiAgICAgICAgIGRiLmNyZWF0ZU9iamVjdFN0b3JlKCJz
dG9yZSIsIHsKICAgICAgICAgICAgIGtleVBhdGg6ICJrZXkxIiwKICAgICAgICAgfSk7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Np
bmcvaWRiZGF0YWJhc2VfY3JlYXRlT2JqZWN0U3RvcmUzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiZGF0YWJhc2VfY3JlYXRlT2Jq
ZWN0U3RvcmUzLmh0bWwKaW5kZXggYWQxMGU5MGQ4YjllYjkyNGUwNDU1NjMwNzU3ZDNkMWQwOTI3
ZDIyZC4uODY2NTA5NDI2YmJlZWViZDA4MzY2ODQ5MDgwNTIyMjRiZGFhODVmYiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lk
YmRhdGFiYXNlX2NyZWF0ZU9iamVjdFN0b3JlMy5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJkYXRhYmFzZV9jcmVhdGVPYmpl
Y3RTdG9yZTMuaHRtbApAQCAtMTMsNyArMTMsNyBAQCB2YXIgdCA9IGFzeW5jX3Rlc3QoKSwKIG9w
ZW5fcnEub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oKSB7fQogb3Blbl9ycS5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbiAoZSkgewogICAgIHZhciBkYiA9IGUudGFyZ2V0LnJlc3VsdAotICAgIGFzc2Vy
dF90aHJvd3MoCisgICAgYXNzZXJ0X3Rocm93c19kb20oCiAgICAgICAgICdJbnZhbGlkU3RhdGVF
cnJvcicsCiAgICAgICAgIGZ1bmN0aW9uKCkgeyBkYi5jcmVhdGVPYmplY3RTdG9yZSgnZmFpbHMn
KSB9KQogICAgIHQuZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmRhdGFiYXNlX2NyZWF0ZU9iamVjdFN0b3Jl
NC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dz
aW5nL2lkYmRhdGFiYXNlX2NyZWF0ZU9iamVjdFN0b3JlNC5odG1sCmluZGV4IGJiYzdmZmVmNWMw
MmQ2MmU5MWZjNzA1ZDRhMWU5YjFhNWQ1MzdmMWUuLjRjZDY5OTk3YjUwYTQ5Y2IwMGEyYzhkODAx
YjljNzQxMjRkM2EwYjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRl
eGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJkYXRhYmFzZV9jcmVhdGVPYmplY3RTdG9yZTQuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Np
bmcvaWRiZGF0YWJhc2VfY3JlYXRlT2JqZWN0U3RvcmU0Lmh0bWwKQEAgLTEzLDcgKzEzLDcgQEAg
dmFyIHQgPSBhc3luY190ZXN0KCksCiBvcGVuX3JxLm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9u
KGUpIHsKICAgICB2YXIgZGIgPSBlLnRhcmdldC5yZXN1bHQKICAgICBkYi5jcmVhdGVPYmplY3RT
dG9yZSgiZHVwZSIpCi0gICAgYXNzZXJ0X3Rocm93cygKKyAgICBhc3NlcnRfdGhyb3dzX2RvbSgK
ICAgICAgICAgJ0NvbnN0cmFpbnRFcnJvcicsCiAgICAgICAgIGZ1bmN0aW9uKCkgeyBkYi5jcmVh
dGVPYmplY3RTdG9yZSgiZHVwZSIpIH0pCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJkYXRhYmFzZV9jcmVhdGVPYmpl
Y3RTdG9yZTYuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0
ZS1icm93c2luZy9pZGJkYXRhYmFzZV9jcmVhdGVPYmplY3RTdG9yZTYuaHRtbAppbmRleCAxZTNm
NDAwODk4MTkzZjJkNDU1N2M0N2Y5ZDUwZGRiODk0ZTQ4ZWZkLi42NGNmMTk3NzAwMzdjNWM1MjUz
NTg1ZjkyYzVlYTE5MGJjZGY5OWU4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiZGF0YWJhc2VfY3JlYXRlT2JqZWN0U3Rv
cmU2Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRl
LWJyb3dzaW5nL2lkYmRhdGFiYXNlX2NyZWF0ZU9iamVjdFN0b3JlNi5odG1sCkBAIC0xMywxMSAr
MTMsMTEgQEAgdmFyIHQgPSBhc3luY190ZXN0KCksCiBvcGVuX3JxLm9udXBncmFkZW5lZWRlZCA9
IGZ1bmN0aW9uKGUpIHsKICAgICB2YXIgZGIgPSBlLnRhcmdldC5yZXN1bHQKIAotICAgIGFzc2Vy
dF90aHJvd3MoJ1N5bnRheEVycm9yJywgZnVuY3Rpb24oKSB7CisgICAgYXNzZXJ0X3Rocm93c19k
b20oJ1N5bnRheEVycm9yJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICBkYi5jcmVhdGVPYmpl
Y3RTdG9yZSgiaW52YWxpZGtleXBhdGgiLCB7IGtleVBhdGg6ICJJbnZhbGlkIEtleXBhdGgiIH0p
CiAgICAgICAgIH0pCiAKLSAgICBhc3NlcnRfdGhyb3dzKCdTeW50YXhFcnJvcicsIGZ1bmN0aW9u
KCkgeworICAgIGFzc2VydF90aHJvd3NfZG9tKCdTeW50YXhFcnJvcicsIGZ1bmN0aW9uKCkgewog
ICAgICAgICAgICAgZGIuY3JlYXRlT2JqZWN0U3RvcmUoImludmFsaWRrZXlwYXRoIiwgeyBhdXRv
SW5jcmVtZW50OiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBrZXlQYXRoOiAiSW52YWxpZCBLZXlwYXRoIiB9KQogICAgICAgICB9KQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJy
b3dzaW5nL2lkYmRhdGFiYXNlX2NyZWF0ZU9iamVjdFN0b3JlOS1pbnZhbGlkcGFyYW1ldGVycy5o
dG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5n
L2lkYmRhdGFiYXNlX2NyZWF0ZU9iamVjdFN0b3JlOS1pbnZhbGlkcGFyYW1ldGVycy5odG1sCmlu
ZGV4IGI2N2YxZWYxYmM3YTg1YmE3MDI2ZmM3YWI4Y2NkYzdiN2IyMDFmM2UuLjA0YjU5ZmZlNTcy
MmM5MTZhOWM5NzY2MTM3NjEyNjY0YmRjOWFiYjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJkYXRhYmFzZV9jcmVhdGVP
YmplY3RTdG9yZTktaW52YWxpZHBhcmFtZXRlcnMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiZGF0YWJhc2VfY3JlYXRlT2Jq
ZWN0U3RvcmU5LWludmFsaWRwYXJhbWV0ZXJzLmh0bWwKQEAgLTExLDcgKzExLDcgQEAKICAgICAg
ICAgdmFyIHQgPSBhc3luY190ZXN0KGRvY3VtZW50LnRpdGxlICsgIiAtICIgKyBkZXNjKTsKIAog
ICAgICAgICBjcmVhdGVkYih0KS5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihlKSB7Ci0gICAg
ICAgICAgICBhc3NlcnRfdGhyb3dzKGV4Y2VwdGlvbiwgZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICBhc3NlcnRfdGhyb3dzX2RvbShleGNlcHRpb24sIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAg
ICAgIGUudGFyZ2V0LnJlc3VsdC5jcmVhdGVPYmplY3RTdG9yZSgic3RvcmUiLCBwYXJhbXMpOwog
ICAgICAgICAgICAgfSk7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9J
bmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJkYXRhYmFzZV9kZWxldGVPYmplY3RTdG9yZTIu
aHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2lu
Zy9pZGJkYXRhYmFzZV9kZWxldGVPYmplY3RTdG9yZTIuaHRtbAppbmRleCBlNGE4N2VjYjlkMGU5
MWI2MzViNGU2YzA2ODM5ZTA1MTliZmUwYWM1Li44YzBmZmQ4NTQwYTBlZTNhNzZjMmRmYzJiMjQ0
Y2Q1YzczZGFmODllIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhl
ZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiZGF0YWJhc2VfZGVsZXRlT2JqZWN0U3RvcmUyLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5n
L2lkYmRhdGFiYXNlX2RlbGV0ZU9iamVjdFN0b3JlMi5odG1sCkBAIC0xNyw3ICsxNyw3IEBAIG9w
ZW5fcnEub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZSkKIAogICAgIGUudGFyZ2V0LnRyYW5z
YWN0aW9uLm9uY29tcGxldGUgPSB0LnN0ZXBfZnVuYyhmdW5jdGlvbiAoZSkKICAgICB7Ci0gICAg
ICAgIGFzc2VydF90aHJvd3MoJ0ludmFsaWRTdGF0ZUVycm9yJywKKyAgICAgICAgYXNzZXJ0X3Ro
cm93c19kb20oJ0ludmFsaWRTdGF0ZUVycm9yJywKICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyBk
Yi5kZWxldGVPYmplY3RTdG9yZSgiZGVsZXRlX291dHNpZGUiKTsgfSk7CiAgICAgICAgIHQuZG9u
ZSgpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4
ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmRhdGFiYXNlX2RlbGV0ZU9iamVjdFN0b3JlMy5odG1s
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lk
YmRhdGFiYXNlX2RlbGV0ZU9iamVjdFN0b3JlMy5odG1sCmluZGV4IDA0OTdjMTY5ZTU5YWYxMzIx
NGE3MDY5ZWNkZmY2OTA1YmI5MzI5NTQuLjhjNjcwOGMxM2UyYmJiYzBiNWQ5ZmEwYTAxOTdlZjQ3
NzJjMDY4ZmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREIt
cHJpdmF0ZS1icm93c2luZy9pZGJkYXRhYmFzZV9kZWxldGVPYmplY3RTdG9yZTMuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRi
ZGF0YWJhc2VfZGVsZXRlT2JqZWN0U3RvcmUzLmh0bWwKQEAgLTEzLDcgKzEzLDcgQEAgdmFyIHQg
PSBhc3luY190ZXN0KCksCiBvcGVuX3JxLm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGUpCiB7
CiAgICAgdmFyIGRiID0gZS50YXJnZXQucmVzdWx0OwotICAgIGFzc2VydF90aHJvd3MoJ05vdEZv
dW5kRXJyb3InLAorICAgIGFzc2VydF90aHJvd3NfZG9tKCdOb3RGb3VuZEVycm9yJywKICAgICAg
ICAgZnVuY3Rpb24oKSB7IGRiLmRlbGV0ZU9iamVjdFN0b3JlKCd3aGF0ZXZlcicpOyB9KTsKICAg
ICB0LmRvbmUoKTsKIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRl
eGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJkYXRhYmFzZV9kZWxldGVPYmplY3RTdG9yZTQtbm90
X3JldXNlZC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRl
LWJyb3dzaW5nL2lkYmRhdGFiYXNlX2RlbGV0ZU9iamVjdFN0b3JlNC1ub3RfcmV1c2VkLmh0bWwK
aW5kZXggM2RhNzg5YTY0ZmE2MzAxMGE0NDVmMDEzZjZmYmY1MWUxNjJhNzU0Yy4uODEyODg4ZTlm
NTkwNGY5OGQyNzI0OGU1NDZjOGRjZjg0Y2NjNWI1NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmRhdGFiYXNlX2RlbGV0
ZU9iamVjdFN0b3JlNC1ub3RfcmV1c2VkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmRhdGFiYXNlX2RlbGV0ZU9iamVjdFN0
b3JlNC1ub3RfcmV1c2VkLmh0bWwKQEAgLTI5LDcgKzI5LDcgQEAgb3Blbl9ycS5vbnVwZ3JhZGVu
ZWVkZWQgPSBmdW5jdGlvbihlKSB7CiAgICAgYXNzZXJ0X2ZhbHNlKG9ialN0b3JlMi5pbmRleE5h
bWVzLmNvbnRhaW5zKCJpZHgiKSwgImluZGV4IGV4aXN0IG9uIG5ldyBvYmpzdG9yZSIpOwogICAg
IGFzc2VydF9lcXVhbHMob2JqU3RvcmUyLmtleVBhdGgsIG51bGwsICJrZXlQYXRoIik7CiAKLSAg
ICBhc3NlcnRfdGhyb3dzKCJOb3RGb3VuZEVycm9yIiwgZnVuY3Rpb24oKSB7IG9ialN0b3JlMi5p
bmRleCgiaWR4Iik7IH0pOworICAgIGFzc2VydF90aHJvd3NfZG9tKCJOb3RGb3VuZEVycm9yIiwg
ZnVuY3Rpb24oKSB7IG9ialN0b3JlMi5pbmRleCgiaWR4Iik7IH0pOwogfQogCiBvcGVuX3JxLm9u
c3VjY2VzcyA9IGZ1bmN0aW9uKGUpIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJkYXRhYmFzZV90cmFuc2FjdGlvbi5o
dG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5n
L2lkYmRhdGFiYXNlX3RyYW5zYWN0aW9uLmh0bWwKaW5kZXggYzhjMmM5ZjU5NGI0MzI0ZDYxZWY0
MTIwYjQ2MzQ5NTc1NDAzNDRiMS4uNTBiMDE1ZmI3MzJlOTU4M2ViZTFmNmMxZjJiOGU4ZTQ1MDQ3
YTM0OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2
YXRlLWJyb3dzaW5nL2lkYmRhdGFiYXNlX3RyYW5zYWN0aW9uLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmRhdGFiYXNlX3Ry
YW5zYWN0aW9uLmh0bWwKQEAgLTE1LDcgKzE1LDcgQEAgb3Blbl9ycS5vbnVwZ3JhZGVuZWVkZWQg
PSBmdW5jdGlvbigpIHt9Owogb3Blbl9ycS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihlKSB7CiAgICAg
ZGIgPSBlLnRhcmdldC5yZXN1bHQ7CiAKLSAgICBhc3NlcnRfdGhyb3dzKCdOb3RGb3VuZEVycm9y
JywgZnVuY3Rpb24oKSB7IGRiLnRyYW5zYWN0aW9uKCdub24tZXhpc3RpbmcnKTsgfSk7CisgICAg
YXNzZXJ0X3Rocm93c19kb20oJ05vdEZvdW5kRXJyb3InLCBmdW5jdGlvbigpIHsgZGIudHJhbnNh
Y3Rpb24oJ25vbi1leGlzdGluZycpOyB9KTsKICAgICB0LmRvbmUoKTsKIH07CiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9p
ZGJkYXRhYmFzZV90cmFuc2FjdGlvbjMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9J
bmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJkYXRhYmFzZV90cmFuc2FjdGlvbjMuaHRtbApp
bmRleCAxMDg3YWVjYzhkZWVhMDhmMjdmM2FjNTliNmU0ZDU0ZTAwY2YwMzBkLi41YTRlNzNjZDNj
YThjM2YyNmJjNTRiM2ZjNDIxMTQ5YzQ3Y2EwZmNhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiZGF0YWJhc2VfdHJhbnNh
Y3Rpb24zLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2
YXRlLWJyb3dzaW5nL2lkYmRhdGFiYXNlX3RyYW5zYWN0aW9uMy5odG1sCkBAIC0xOCw3ICsxOCw3
IEBACiAgICAgb3Blbl9ycS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgIGRiLmNs
b3NlKCk7CiAKLSAgICAgICAgYXNzZXJ0X3Rocm93cygnSW52YWxpZFN0YXRlRXJyb3InLAorICAg
ICAgICBhc3NlcnRfdGhyb3dzX2RvbSgnSW52YWxpZFN0YXRlRXJyb3InLAogICAgICAgICAgICAg
ZnVuY3Rpb24oKSB7IGRiLnRyYW5zYWN0aW9uKCd0ZXN0Jyk7IH0pOwogCiAgICAgICAgIHQuZG9u
ZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2
YXRlLWJyb3dzaW5nL2lkYmRhdGFiYXNlX3RyYW5zYWN0aW9uNC5odG1sIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmRhdGFiYXNlX3RyYW5z
YWN0aW9uNC5odG1sCmluZGV4IDIxMjBmMDc5ZGJmMGNkNDI3ZDk3YzAxNzJlYjdjNGRlYWU3NGQz
NjguLjNmYWI0MGYzZWVjOWVmNmFiYmRjMWQ3NGY4YmNlN2EwZWIwYTA2MTEgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJk
YXRhYmFzZV90cmFuc2FjdGlvbjQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
SW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiZGF0YWJhc2VfdHJhbnNhY3Rpb240Lmh0bWwK
QEAgLTE2LDcgKzE2LDcgQEAKICAgICB9OwogCiAgICAgb3Blbl9ycS5vbnN1Y2Nlc3MgPSBmdW5j
dGlvbihlKSB7Ci0gICAgICAgIGFzc2VydF90aHJvd3MoeyBuYW1lOiAnVHlwZUVycm9yJyB9LAor
ICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwKICAgICAgICAgICAgIGZ1bmN0aW9u
KCkgeyBkYi50cmFuc2FjdGlvbigndGVzdCcsICd3aGF0ZXZlcicpOyB9KTsKIAogICAgICAgICB0
LmRvbmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREIt
cHJpdmF0ZS1icm93c2luZy9pZGJkYXRhYmFzZV90cmFuc2FjdGlvbjUuaHRtbCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJkYXRhYmFzZV90
cmFuc2FjdGlvbjUuaHRtbAppbmRleCBjZWY2ZDJhNDBlN2E4NDllOWE2MTg4OTg1NDdlMjBmNGNm
OTZmYjAyLi5kMGQyODkyODBlYWY5NjlkZmI2Y2I2OTkyNTBlNjIzOTFkOTg1MjY3IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Npbmcv
aWRiZGF0YWJhc2VfdHJhbnNhY3Rpb241Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmRhdGFiYXNlX3RyYW5zYWN0aW9uNS5o
dG1sCkBAIC0xNSw3ICsxNSw3IEBAIHZhciBkYiwKIG9wZW5fcnEub251cGdyYWRlbmVlZGVkID0g
ZnVuY3Rpb24oKSB7fTsKIG9wZW5fcnEub25zdWNjZXNzID0gZnVuY3Rpb24oZSkgewogICAgIGRi
ID0gZS50YXJnZXQucmVzdWx0OwotICAgIGFzc2VydF90aHJvd3MoJ0ludmFsaWRBY2Nlc3NFcnJv
cicsIGZ1bmN0aW9uKCkgeyBkYi50cmFuc2FjdGlvbihbXSk7IH0pOworICAgIGFzc2VydF90aHJv
d3NfZG9tKCdJbnZhbGlkQWNjZXNzRXJyb3InLCBmdW5jdGlvbigpIHsgZGIudHJhbnNhY3Rpb24o
W10pOyB9KTsKICAgICB0LmRvbmUoKTsKIH07CiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJmYWN0b3J5
X2NtcDIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1i
cm93c2luZy9pZGJmYWN0b3J5X2NtcDIuaHRtbAppbmRleCA4OTM5ZGQyZDMxNDM4ZDAyOWVmMzZi
ZjVlOTRlMjcyNjNjMDc5OWVmLi5iZWMyODE1ZDA5YTI5MTgxMWViNjk0ODAyODRiYTI1MWQ5ODk4
NmUwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZh
dGUtYnJvd3NpbmcvaWRiZmFjdG9yeV9jbXAyLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmZhY3RvcnlfY21wMi5odG1sCkBA
IC05LDMxICs5LDMxIEBACiA8ZGl2IGlkPWxvZz48L2Rpdj4KIDxzY3JpcHQ+CiAgICAgdGVzdCgg
ZnVuY3Rpb24oKSB7Ci0gICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5j
dGlvbigpIHsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkg
ewogICAgICAgICAgICAgaW5kZXhlZERCLmNtcCgpOwogICAgICAgICB9KTsKICAgICB9LCAiSURC
RmFjdG9yeS5jbXAoKSAtIG5vIGFyZ3VtZW50Iik7CiAKICAgICB0ZXN0KCBmdW5jdGlvbigpIHsK
LSAgICAgICAgYXNzZXJ0X3Rocm93cygiRGF0YUVycm9yIiwgZnVuY3Rpb24oKSB7CisgICAgICAg
IGFzc2VydF90aHJvd3NfZG9tKCJEYXRhRXJyb3IiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAg
IGluZGV4ZWREQi5jbXAobnVsbCwgbnVsbCk7CiAgICAgICAgIH0pOwotICAgICAgICBhc3NlcnRf
dGhyb3dzKCJEYXRhRXJyb3IiLCBmdW5jdGlvbigpIHsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19k
b20oIkRhdGFFcnJvciIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgaW5kZXhlZERCLmNtcCgx
LCBudWxsKTsKICAgICAgICAgfSk7Ci0gICAgICAgIGFzc2VydF90aHJvd3MoIkRhdGFFcnJvciIs
IGZ1bmN0aW9uKCkgeworICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiRGF0YUVycm9yIiwgZnVu
Y3Rpb24oKSB7CiAgICAgICAgICAgICBpbmRleGVkREIuY21wKG51bGwsIDEpOwogICAgICAgICB9
KTsKICAgICB9LCAiSURCRmFjdG9yeS5jbXAoKSAtIG51bGwiKTsKIAogICAgIHRlc3QoIGZ1bmN0
aW9uKCkgewotICAgICAgICBhc3NlcnRfdGhyb3dzKCJEYXRhRXJyb3IiLCBmdW5jdGlvbigpIHsK
KyAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkRhdGFFcnJvciIsIGZ1bmN0aW9uKCkgewogICAg
ICAgICAgICAgaW5kZXhlZERCLmNtcChOYU4sIE5hTik7CiAgICAgICAgIH0pOwotICAgICAgICBh
c3NlcnRfdGhyb3dzKCJEYXRhRXJyb3IiLCBmdW5jdGlvbigpIHsKKyAgICAgICAgYXNzZXJ0X3Ro
cm93c19kb20oIkRhdGFFcnJvciIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgaW5kZXhlZERC
LmNtcCgxLCBOYU4pOwogICAgICAgICB9KTsKLSAgICAgICAgYXNzZXJ0X3Rocm93cygiRGF0YUVy
cm9yIiwgZnVuY3Rpb24oKSB7CisgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJEYXRhRXJyb3Ii
LCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgIGluZGV4ZWREQi5jbXAoTmFOLCAxKTsKICAgICAg
ICAgfSk7CiAgICAgfSwgIklEQkZhY3RvcnkuY21wKCkgLSBOYU4iKTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJmYWN0
b3J5X29wZW45Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZh
dGUtYnJvd3NpbmcvaWRiZmFjdG9yeV9vcGVuOS5odG1sCmluZGV4IGJkNDQ3ZTI0N2Y3Y2YxNWVh
OWJjYWNlZDNiZjUwNTA0N2Q5OThkY2EuLmI0MWEwMzM3M2FiYjZmNTc1NzZkNTYzNTNmMjI5YTE1
OTUwNGU4ZmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREIt
cHJpdmF0ZS1icm93c2luZy9pZGJmYWN0b3J5X29wZW45Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmZhY3Rvcnlfb3Blbjku
aHRtbApAQCAtOSw3ICs5LDcgQEAgZnVuY3Rpb24gc2hvdWxkX3Rocm93KHZhbCwgbmFtZSkgewog
ICAgICAgICBuYW1lID0gKCh0eXBlb2YgdmFsID09ICJvYmplY3QiICYmIHZhbCkgPyAib2JqZWN0
IiA6IGZvcm1hdF92YWx1ZSh2YWwpKQogICAgIH0KICAgICB0ZXN0KGZ1bmN0aW9uKCkgewotICAg
ICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgeworICAgICAgYXNz
ZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgewogICAgICAgICB3aW5kb3cuaW5k
ZXhlZERCLm9wZW4oJ3Rlc3QnLCB2YWwpOwogICAgICAgfSk7CiAgICAgfSwgIkNhbGxpbmcgb3Bl
bigpIHdpdGggdmVyc2lvbiBhcmd1bWVudCAiICsgbmFtZSArICIgc2hvdWxkIHRocm93IFR5cGVF
cnJvci4iKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1w
cml2YXRlLWJyb3dzaW5nL2lkYmluZGV4LW11bHRpZW50cnktYXJyYXlrZXlwYXRoLmh0bWwgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiaW5k
ZXgtbXVsdGllbnRyeS1hcnJheWtleXBhdGguaHRtbAppbmRleCA3ZGVkZmJmOWE4M2E1OTZlODc3
N2EyYjAyZTg1N2FjZDA3ZTM4M2I0Li5mNTEwNmFmZTEyZWE4YmIwMTM0MWU4ZjVjZmY4MzEwMGQ5
NjBiNmFjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXBy
aXZhdGUtYnJvd3NpbmcvaWRiaW5kZXgtbXVsdGllbnRyeS1hcnJheWtleXBhdGguaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRi
aW5kZXgtbXVsdGllbnRyeS1hcnJheWtleXBhdGguaHRtbApAQCAtMTIsNyArMTIsNyBAQAogICAg
IGNyZWF0ZWRiKGFzeW5jX3Rlc3QoZG9jdW1lbnQudGl0bGUsIHt0aW1lb3V0OiAxMDAwMH0pKS5v
bnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgIHZhciBzdG9yZSA9IGUudGFy
Z2V0LnJlc3VsdC5jcmVhdGVPYmplY3RTdG9yZSgic3RvcmUiKTsKIAotICAgICAgICBhc3NlcnRf
dGhyb3dzKCdJbnZhbGlkQWNjZXNzRXJyb3InLCBmdW5jdGlvbigpIHsKKyAgICAgICAgYXNzZXJ0
X3Rocm93c19kb20oJ0ludmFsaWRBY2Nlc3NFcnJvcicsIGZ1bmN0aW9uKCkgewogICAgICAgICAg
ICAgc3RvcmUuY3JlYXRlSW5kZXgoJ2FjdG9ycycsIFsnbmFtZSddLCB7IG11bHRpRW50cnk6IHRy
dWUgfSkKICAgICAgICAgfSk7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJpbmRleF9jb3VudDQuaHRtbCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJpbmRleF9j
b3VudDQuaHRtbAppbmRleCBlNTk0OGVjNWRlZjAzZjQ3YTQwNTMyYjUwNWRiOTZlMWNhMWY5ZWY4
Li45MTljZjVkNGZiNzkyY2I3NGIzY2VmZGVjNDVjMTE0MGMxOTU4MzllIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiaW5k
ZXhfY291bnQ0Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1w
cml2YXRlLWJyb3dzaW5nL2lkYmluZGV4X2NvdW50NC5odG1sCkBAIC0yNyw3ICsyNyw3IEBACiAg
ICAgICAgICAgICAgICAgICAgICAgLm9iamVjdFN0b3JlKCJzdG9yZSIpCiAgICAgICAgICAgICAg
ICAgICAgICAgLmluZGV4KCJpbmRleCIpOwogCi0gICAgICAgIGFzc2VydF90aHJvd3MoIkRhdGFF
cnJvciIsIGZ1bmN0aW9uKCkgeworICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiRGF0YUVycm9y
IiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICBpbmRleC5jb3VudChOYU4pOwogICAgICAgICB9
KTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2
YXRlLWJyb3dzaW5nL2lkYmluZGV4X2dldDUuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJpbmRleF9nZXQ1Lmh0bWwKaW5kZXggMDE1
MjQ5MjYyMjRhMDY5MzJhZWY2MThhZDUzMTM4ZWY3MmY4ZjliNC4uY2QwNDNkOTE2NjJhMTM4YzU2
MjdjOTk2Yjc3MDYxZWVhYTIzMDY2NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmluZGV4X2dldDUuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiaW5k
ZXhfZ2V0NS5odG1sCkBAIC0xNyw3ICsxNyw3IEBACiAKICAgICAgICAgdmFyIGluZGV4ID0gZGIu
Y3JlYXRlT2JqZWN0U3RvcmUoInRlc3QiLCB7IGtleVBhdGg6ICJrZXkiIH0pCiAgICAgICAgICAg
ICAgICAgICAgICAgLmNyZWF0ZUluZGV4KCJpbmRleCIsICJpbmRleGVkUHJvcGVydHkiKTsKLSAg
ICAgICAgYXNzZXJ0X3Rocm93cygiRGF0YUVycm9yIixmdW5jdGlvbigpeworICAgICAgICBhc3Nl
cnRfdGhyb3dzX2RvbSgiRGF0YUVycm9yIixmdW5jdGlvbigpewogICAgICAgICAgICAgaW5kZXgu
Z2V0KE5hTik7CiAgICAgICAgIH0pOwogICAgICAgICB0LmRvbmUoKTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJpbmRl
eF9nZXQ2Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUt
YnJvd3NpbmcvaWRiaW5kZXhfZ2V0Ni5odG1sCmluZGV4IGE1Yjc2M2VkNWUzZGIzNzY2OTQ0OTAw
YzM2NmRmMWYwYTU0YzM1MWQuLjE0NGI5NjkzNWNmZDAyOGRkYjRmOWNmZTM5Y2NhYjRkZGVhOWMy
MjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0
ZS1icm93c2luZy9pZGJpbmRleF9nZXQ2Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmluZGV4X2dldDYuaHRtbApAQCAtMjAs
NyArMjAsNyBAQAogICAgICAgICBzdG9yZS5hZGQoeyBrZXk6IDEsIGluZGV4ZWRQcm9wZXJ0eTog
ImRhdGEiIH0pOwogICAgICAgICBzdG9yZS5kZWxldGVJbmRleCgiaW5kZXgiKTsKIAotICAgICAg
ICBhc3NlcnRfdGhyb3dzKCJJbnZhbGlkU3RhdGVFcnJvciIsIGZ1bmN0aW9uKCl7CisgICAgICAg
IGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlkU3RhdGVFcnJvciIsIGZ1bmN0aW9uKCl7CiAgICAg
ICAgICAgICBpbmRleC5nZXQoImRhdGEiKTsKICAgICAgICAgfSk7CiAgICAgICAgIHQuZG9uZSgp
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRl
LWJyb3dzaW5nL2lkYmluZGV4X2dldDcuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9J
bmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJpbmRleF9nZXQ3Lmh0bWwKaW5kZXggODk3MzVl
YWQ4NGRmNWY0MTU5YzRhMjNlNjczYTUyMjVjMTBjZGVmNC4uMzVlNmE1ZGEzODdhN2Q3ZWY1ZGIz
ZjQ4MWEyZTdhYTA1OTE1M2RkNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmluZGV4X2dldDcuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiaW5kZXhf
Z2V0Ny5odG1sCkBAIC0yMCw3ICsyMCw3IEBACiAKICAgICAgICAgZS50YXJnZXQudHJhbnNhY3Rp
b24uYWJvcnQoKTsKIAotICAgICAgICBhc3NlcnRfdGhyb3dzKCJJbnZhbGlkU3RhdGVFcnJvciIs
IGZ1bmN0aW9uKCl7CisgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlkU3RhdGVFcnJv
ciIsIGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICBpbmRleC5nZXQoImRhdGEiKTsKICAgICAgICAg
fSk7CiAgICAgICAgIHQuZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmluZGV4X2dldEtleTUuaHRtbCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJpbmRl
eF9nZXRLZXk1Lmh0bWwKaW5kZXggODEyYzNjZDQ4ZGQ2YTYyMzcyMmI2ZmNkYjljN2Y1YjE0MmJm
OWM5NC4uOGVkYTU3OTA1OGZjMmZhYTc0MmJkNmEzYzBkYzE5MTZkMjliNTFlNSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lk
YmluZGV4X2dldEtleTUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhl
ZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiaW5kZXhfZ2V0S2V5NS5odG1sCkBAIC0xNyw3ICsxNyw3
IEBACiAKICAgICAgICAgdmFyIGluZGV4ID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoInRlc3QiLCB7
IGtleVBhdGg6ICJrZXkiIH0pCiAgICAgICAgICAgICAgICAgICAgICAgLmNyZWF0ZUluZGV4KCJp
bmRleCIsICJpbmRleGVkUHJvcGVydHkiKTsKLSAgICAgICAgYXNzZXJ0X3Rocm93cygiRGF0YUVy
cm9yIixmdW5jdGlvbigpeworICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiRGF0YUVycm9yIixm
dW5jdGlvbigpewogICAgICAgICAgICAgaW5kZXguZ2V0S2V5KE5hTik7CiAgICAgICAgIH0pOwog
ICAgICAgICB0LmRvbmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9J
bmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJpbmRleF9nZXRLZXk2Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiaW5kZXhfZ2V0
S2V5Ni5odG1sCmluZGV4IGYwYzhlODgwNWU2ZTZlY2FmZTI3YWJjYjViYmVlZjY2Y2ZiNWNkNjku
LjM2YTdmNzE3Yjk5NzJlMjc3MTcwMTcwYzY0NDc1MjJiOTMxN2YyNDggMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJpbmRl
eF9nZXRLZXk2Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1w
cml2YXRlLWJyb3dzaW5nL2lkYmluZGV4X2dldEtleTYuaHRtbApAQCAtMjAsNyArMjAsNyBAQAog
ICAgICAgICBzdG9yZS5hZGQoeyBrZXk6IDEsIGluZGV4ZWRQcm9wZXJ0eTogImRhdGEiIH0pOwog
ICAgICAgICBzdG9yZS5kZWxldGVJbmRleCgiaW5kZXgiKTsKIAotICAgICAgICBhc3NlcnRfdGhy
b3dzKCJJbnZhbGlkU3RhdGVFcnJvciIsIGZ1bmN0aW9uKCl7CisgICAgICAgIGFzc2VydF90aHJv
d3NfZG9tKCJJbnZhbGlkU3RhdGVFcnJvciIsIGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICBpbmRl
eC5nZXRLZXkoImRhdGEiKTsKICAgICAgICAgfSk7CiAgICAgICAgIHQuZG9uZSgpOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5n
L2lkYmluZGV4X2dldEtleTcuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVk
REItcHJpdmF0ZS1icm93c2luZy9pZGJpbmRleF9nZXRLZXk3Lmh0bWwKaW5kZXggMmRlMDgwNzk5
N2I3NTEyY2Y0ZTk2MjA2MzUyOTUwNjUwYzc1ODkxOS4uYjcwYjM4NGY0NGUyMjY4NWQzOWU5NmFl
NjRlMjBkMGM0ODc3Y2IyNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0lu
ZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmluZGV4X2dldEtleTcuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiaW5kZXhf
Z2V0S2V5Ny5odG1sCkBAIC0yMCw3ICsyMCw3IEBACiAKICAgICAgICAgZS50YXJnZXQudHJhbnNh
Y3Rpb24uYWJvcnQoKTsKIAotICAgICAgICBhc3NlcnRfdGhyb3dzKCJJbnZhbGlkU3RhdGVFcnJv
ciIsIGZ1bmN0aW9uKCl7CisgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlkU3RhdGVF
cnJvciIsIGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICBpbmRleC5nZXRLZXkoImRhdGEiKTsKICAg
ICAgICAgfSk7CiAgICAgICAgIHQuZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmluZGV4X29wZW5DdXJzb3Iu
aHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2lu
Zy9pZGJpbmRleF9vcGVuQ3Vyc29yLmh0bWwKaW5kZXggZjlmYjY4YTUxODNjZDNmZDdmZWE1M2Jk
NjQxZmQ0NDc4YjY4MDU4Ni4uYTNiMGQwMTlkY2NkYzM4YmUzNzgyNmE1YmQ2YzU5MTNjNDY5M2Y0
MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRl
LWJyb3dzaW5nL2lkYmluZGV4X29wZW5DdXJzb3IuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiaW5kZXhfb3BlbkN1cnNvci5o
dG1sCkBAIC0yMCw3ICsyMCw3IEBACiAgICAgICAgIHN0b3JlLmFkZCh7IGtleTogMSwgaW5kZXhl
ZFByb3BlcnR5OiAiZGF0YSIgfSk7CiAgICAgICAgIHN0b3JlLmRlbGV0ZUluZGV4KCJpbmRleCIp
OwogCi0gICAgICAgIGFzc2VydF90aHJvd3MoIkludmFsaWRTdGF0ZUVycm9yIiwgZnVuY3Rpb24o
KXsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkludmFsaWRTdGF0ZUVycm9yIiwgZnVuY3Rp
b24oKXsKICAgICAgICAgICAgIGluZGV4Lm9wZW5DdXJzb3IoKTsKICAgICAgICAgfSk7CiAgICAg
ICAgIHQuZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4
ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmluZGV4X29wZW5DdXJzb3IyLmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiaW5kZXhfb3Bl
bkN1cnNvcjIuaHRtbAppbmRleCAwMTM4YWNiNWVmZTY5ZDQyODk0M2ZlNzAwOGIwYmQwYTUzNDg3
MGIxLi4zNTlkY2ExMWJhZDMxODZmYmJlM2E3MGE1NGFkY2JhM2RjOGI3YzM4IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRi
aW5kZXhfb3BlbkN1cnNvcjIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5k
ZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiaW5kZXhfb3BlbkN1cnNvcjIuaHRtbApAQCAtMjAs
NyArMjAsNyBAQAogCiAgICAgICAgIGUudGFyZ2V0LnRyYW5zYWN0aW9uLmFib3J0KCk7CiAKLSAg
ICAgICAgYXNzZXJ0X3Rocm93cygiSW52YWxpZFN0YXRlRXJyb3IiLCBmdW5jdGlvbigpeworICAg
ICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiSW52YWxpZFN0YXRlRXJyb3IiLCBmdW5jdGlvbigpewog
ICAgICAgICAgICAgaW5kZXgub3BlbkN1cnNvcigpOwogICAgICAgICB9KTsKICAgICAgICAgdC5k
b25lKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXBy
aXZhdGUtYnJvd3NpbmcvaWRiaW5kZXhfb3BlbktleUN1cnNvci5odG1sIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmluZGV4X29wZW5LZXlD
dXJzb3IuaHRtbAppbmRleCA3NTU1ZTA2NGZiMmExYTIyYzE3YTk1Zjg0YjE0MWJkNTY5Zjk0NGU1
Li44ZGVhNTgxNGE5YjM1MDRmNjRjY2I5OWQ5MmRmYjg1MTY2YmRhNmZhIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiaW5k
ZXhfb3BlbktleUN1cnNvci5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRl
eGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJpbmRleF9vcGVuS2V5Q3Vyc29yLmh0bWwKQEAgLTE5
LDcgKzE5LDcgQEAKIAogICAgICAgICBzdG9yZS5hZGQoeyBrZXk6IDEsIGluZGV4ZWRQcm9wZXJ0
eTogImRhdGEiIH0pOwogCi0gICAgICAgIGFzc2VydF90aHJvd3MoIkRhdGFFcnJvciIsIGZ1bmN0
aW9uKCl7CisgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJEYXRhRXJyb3IiLCBmdW5jdGlvbigp
ewogICAgICAgICAgICAgaW5kZXgub3BlbktleUN1cnNvcihOYU4pOwogICAgICAgICB9KTsKICAg
ICAgICAgdC5kb25lKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5k
ZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiaW5kZXhfb3BlbktleUN1cnNvcjIuaHRtbCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJpbmRl
eF9vcGVuS2V5Q3Vyc29yMi5odG1sCmluZGV4IGQ2MzJkMTkxYzA4NTAwYjUzMDJkNzVkNjExY2Ix
ZDVkMDg3ZWMxZmEuLmRhYmMxNmUzNTEyZDAyMDc1ODliYTAzNWRjYTIwYjQ5YTg5MGYzZTkgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93
c2luZy9pZGJpbmRleF9vcGVuS2V5Q3Vyc29yMi5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJpbmRleF9vcGVuS2V5Q3Vyc29y
Mi5odG1sCkBAIC0yMCw3ICsyMCw3IEBACiAgICAgICAgIHN0b3JlLmFkZCh7IGtleTogMSwgaW5k
ZXhlZFByb3BlcnR5OiAiZGF0YSIgfSk7CiAgICAgICAgIHN0b3JlLmRlbGV0ZUluZGV4KCJpbmRl
eCIpOwogCi0gICAgICAgIGFzc2VydF90aHJvd3MoIkludmFsaWRTdGF0ZUVycm9yIiwgZnVuY3Rp
b24oKXsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkludmFsaWRTdGF0ZUVycm9yIiwgZnVu
Y3Rpb24oKXsKICAgICAgICAgICAgIGluZGV4Lm9wZW5LZXlDdXJzb3IoKTsKICAgICAgICAgfSk7
CiAgICAgICAgIHQuZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmluZGV4X29wZW5LZXlDdXJzb3IzLmh0bWwg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRi
aW5kZXhfb3BlbktleUN1cnNvcjMuaHRtbAppbmRleCA0YTJiMmYxYWJlMWZkY2NmZmIwNDlmMDNl
NDhhY2RkM2U1YTIxNmQxLi4yZjEwY2RhYWU3OTNlYTdjMzAyZDEyMTgwMjkwOGIwNmQ4ODlhNGEz
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUt
YnJvd3NpbmcvaWRiaW5kZXhfb3BlbktleUN1cnNvcjMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiaW5kZXhfb3BlbktleUN1
cnNvcjMuaHRtbApAQCAtMjAsNyArMjAsNyBAQAogCiAgICAgICAgIGUudGFyZ2V0LnRyYW5zYWN0
aW9uLmFib3J0KCk7CiAKLSAgICAgICAgYXNzZXJ0X3Rocm93cygiSW52YWxpZFN0YXRlRXJyb3Ii
LCBmdW5jdGlvbigpeworICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiSW52YWxpZFN0YXRlRXJy
b3IiLCBmdW5jdGlvbigpewogICAgICAgICAgICAgaW5kZXgub3BlbktleUN1cnNvcigpOwogICAg
ICAgICB9KTsKICAgICAgICAgdC5kb25lKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRia2V5cmFuZ2VfaW5jb3JyZWN0
Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Np
bmcvaWRia2V5cmFuZ2VfaW5jb3JyZWN0Lmh0bWwKaW5kZXggMWUxOTc5MTQyZWZkNjgyZTA2ZDJl
MTcyNzU1ZmQ0MGJjZGMyYjY3Mi4uMjQyZDFhM2NkMTgwYWMzYmM4M2E2ZTAwNzcxNjM1ZTY0NWNl
ZmM2OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2
YXRlLWJyb3dzaW5nL2lkYmtleXJhbmdlX2luY29ycmVjdC5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJrZXlyYW5nZV9pbmNv
cnJlY3QuaHRtbApAQCAtMTYsMjQgKzE2LDI0IEBACiAKICAgICAgICAgICAgIC8vIFR5cGVFcnJv
cjogYm91bmQgcmVxdWlyZXMgbW9yZSB0aGFuIDAgYXJndW1lbnRzCiAgICAgICAgICAgICB0ZXN0
KCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJy
b3IoKSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBl
RXJyb3IsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICBJREJLZXlSYW5nZS5ib3Vu
ZCgpOwogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgfSwgIklEQktleVJhbmdlLmJv
dW5kKCkgLSBib3VuZCByZXF1aXJlcyBtb3JlIHRoYW4gMCBhcmd1bWVudHMuIik7CiAKICAgICAg
ICAgICAgIC8vIE51bGwgcGFyYW1ldGVycwogICAgICAgICAgICAgdGVzdCggZnVuY3Rpb24oKSB7
Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygiRGF0YUVycm9yIiwgZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkRhdGFFcnJvciIsIGZ1bmN0aW9u
KCkgewogICAgICAgICAgICAgICAgICAgICBJREJLZXlSYW5nZS5ib3VuZChudWxsLCBudWxsKTsK
ICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIH0sICJJREJLZXlSYW5nZS5ib3VuZChu
dWxsLCBudWxsKSAtIG51bGwgcGFyYW1ldGVycyBhcmUgaW5jb3JyZWN0LiIpOwogCiAgICAgICAg
ICAgICAvLyAvLyBOdWxsIHBhcmFtZXRlcgogICAgICAgICAgICAgdGVzdCggZnVuY3Rpb24oKSB7
Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygiRGF0YUVycm9yIiwgZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkRhdGFFcnJvciIsIGZ1bmN0aW9u
KCkgewogICAgICAgICAgICAgICAgICAgICBJREJLZXlSYW5nZS5ib3VuZCgxLCBudWxsKTsKICAg
ICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzKCJEYXRhRXJy
b3IiLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiRGF0
YUVycm9yIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgIElEQktleVJhbmdlLmJv
dW5kKG51bGwsIDEpOwogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgfSwgIklEQktl
eVJhbmdlLmJvdW5kKDEsIG51bGwgLyBudWxsLCAxKSAtIG51bGwgcGFyYW1ldGVyIGlzIGluY29y
cmVjdC4iKTsKQEAgLTQyLDIzICs0MiwyMyBAQAogICAgICAgICAgICAgdGVzdCggZnVuY3Rpb24o
KSB7CiAgICAgICAgICAgICAgICAgdmFyIGxvd2VyQmFkID0gTWF0aC5mbG9vcihNYXRoLnJhbmRv
bSgpKjMxKSArIDU7CiAgICAgICAgICAgICAgICAgdmFyIHVwcGVyID0gbG93ZXJCYWQgLSAxOwot
ICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3MoIkRhdGFFcnJvciIsIGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJEYXRhRXJyb3IiLCBmdW5jdGlvbigp
IHsKICAgICAgICAgICAgICAgICAgICAgSURCS2V5UmFuZ2UuYm91bmQobG93ZXJCYWQsIHVwcGVy
KTsKICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzKCJE
YXRhRXJyb3IiLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2Rv
bSgiRGF0YUVycm9yIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgIElEQktleVJh
bmdlLmJvdW5kKCdiJywgJ2EnKTsKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIH0s
ICJJREJLZXlSYW5nZS5ib3VuZChsb3dlciwgdXBwZXIgLyBsb3dlciA+IHVwcGVyKSAtICAnbG93
ZXInIGlzIGdyZWF0ZXIgdGhhbiAndXBwZXInLiIKICAgICAgICAgICAgICk7CiAKICAgICAgICAg
ICAgIHRlc3QoIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3MoIkRh
dGFFcnJvciIsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9t
KCJEYXRhRXJyb3IiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgSURCS2V5UmFu
Z2UuYm91bmQoJ2EnLCAxKTsKICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICBh
c3NlcnRfdGhyb3dzKCJEYXRhRXJyb3IiLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBh
c3NlcnRfdGhyb3dzX2RvbSgiRGF0YUVycm9yIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAg
ICAgICAgIElEQktleVJhbmdlLmJvdW5kKG5ldyBEYXRlKCksIDEpOwogICAgICAgICAgICAgICAg
IH0pOwotICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3MoIkRhdGFFcnJvciIsIGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJEYXRhRXJyb3IiLCBmdW5j
dGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgSURCS2V5UmFuZ2UuYm91bmQoWzEsIDJdLCAx
KTsKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIH0sICJJREJLZXlSYW5nZS5ib3Vu
ZChET01TdHJpbmcvRGF0ZS9BcnJheSwgMSkgLSBBIERPTVN0cmluZywgRGF0ZSBhbmQgQXJyYXkg
YXJlIGdyZWF0ZXIgdGhhbiBhIGZsb2F0LiIpOwpAQCAtNjcsMTcgKzY3LDE3IEBACiAgICAgICAg
ICAgICAvLyBSZWZlcmVuY2VFcnJvcjogdGhlIHZhcmlhYmxlIGlzIG5vdCBkZWZpbmVkCiAgICAg
ICAgICAgICB0ZXN0KCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICB2YXIgZ29vZFZhcmlh
YmxlID0gMTsKLSAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBSZWZlcmVuY2VFcnJv
cigpLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFJlZmVy
ZW5jZUVycm9yLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgSURCS2V5UmFuZ2Uu
Ym91bmQobm9FeGlzdGluZ1ZhcmlhYmxlLCAxKTsKICAgICAgICAgICAgICAgICB9KTsKLSAgICAg
ICAgICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBSZWZlcmVuY2VFcnJvcigpLCBmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFJlZmVyZW5jZUVycm9yLCBmdW5j
dGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgSURCS2V5UmFuZ2UuYm91bmQoZ29vZFZhcmlh
YmxlLCBub0V4aXN0aW5nVmFyaWFibGUpOwogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAg
ICAgfSwgIklEQktleVJhbmdlLmJvdW5kKG5vRXhpc3RpbmdWYXJpYWJsZSwgMSAvIGdvb2RWYXJp
YWJsZSwgbm9FeGlzdGluZ1ZhcmlhYmxlKSAtIG5vRXhpc3RpbmdWYXJpYWJsZSBpcyBub3QgZGVm
aW5lZC4iKTsKIAogICAgICAgICAgICAgLy8gVmFsaWQgdHlwZSBrZXkgZXJyb3IKICAgICAgICAg
ICAgIHRlc3QoIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3MoIkRh
dGFFcnJvciIsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9t
KCJEYXRhRXJyb3IiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgSURCS2V5UmFu
Z2UuYm91bmQodHJ1ZSwgMSk7CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB9LCAi
SURCS2V5UmFuZ2UuYm91bmQodHJ1ZSwgMSkgLSBib29sZWFuIGlzIG5vdCBhIHZhbGlkIGtleSB0
eXBlLiIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1w
cml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2FkZDEwLmh0bWwgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfYWRk
MTAuaHRtbAppbmRleCAwOGY3MTZkMzFkYmZiZDlkZGM3ZjhhOTRhOTg2MTE3NjBjNDdmN2ZhLi5m
ODRmOWM1Y2M0ODEyN2JkMzUzZTJhZGY4ZjVlZjMzOGI0MzQ0Y2EyIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0
c3RvcmVfYWRkMTAuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERC
LXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfYWRkMTAuaHRtbApAQCAtMTgsNyArMTgs
NyBAQAogICAgICAgICB2YXIgcnEsCiAgICAgICAgICAgb2JqU3RvcmUgPSBkYi5jcmVhdGVPYmpl
Y3RTdG9yZSgic3RvcmUiKTsKIAotICAgICAgICBhc3NlcnRfdGhyb3dzKCJEYXRhRXJyb3IiLAor
ICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiRGF0YUVycm9yIiwKICAgICAgICAgICAgIGZ1bmN0
aW9uKCkgeyBycSA9IG9ialN0b3JlLmFkZChyZWNvcmQpOyB9KTsKIAogICAgICAgICBhc3NlcnRf
ZXF1YWxzKHJxLCB1bmRlZmluZWQpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2FkZDExLmh0bWwg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRi
b2JqZWN0c3RvcmVfYWRkMTEuaHRtbAppbmRleCBlZTZhNGU0MGJhMjFlNTkwYzdhOGYwYjM0ZjQx
MmZjODU1YjNjNzA0Li4yYWQ2NGI5ZmVjOWNiNTcxODFmMTJmMGNjZjkxYjllNDU0YmNiZmVhIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJv
d3NpbmcvaWRib2JqZWN0c3RvcmVfYWRkMTEuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfYWRkMTEuaHRt
bApAQCAtMTgsNyArMTgsNyBAQAogICAgICAgICB2YXIgcnEsCiAgICAgICAgICAgb2JqU3RvcmUg
PSBkYi5jcmVhdGVPYmplY3RTdG9yZSgic3RvcmUiLCB7IGtleVBhdGg6ICJrZXkiIH0pOwogCi0g
ICAgICAgIGFzc2VydF90aHJvd3MoIkRhdGFFcnJvciIsCisgICAgICAgIGFzc2VydF90aHJvd3Nf
ZG9tKCJEYXRhRXJyb3IiLAogICAgICAgICAgICAgZnVuY3Rpb24oKSB7IHJxID0gb2JqU3RvcmUu
YWRkKHJlY29yZCk7IH0pOwogCiAgICAgICAgIGFzc2VydF9lcXVhbHMocnEsIHVuZGVmaW5lZCk7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUt
YnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfYWRkMTIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9hZGQxMi5odG1s
CmluZGV4IGUxNGNkYTdiNTU4MmMwZWE1YmQ3OWVmZWIxNjYxMmRlNjkyNGIxMjEuLjNhZjA4MWYz
NjY2Y2Y2ZTYyZDk0NTk1NTVlNjcwN2I0Y2UzN2VjN2UgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9h
ZGQxMi5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0
ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9hZGQxMi5odG1sCkBAIC0xOCw3ICsxOCw3IEBACiAg
ICAgICAgIHZhciBycSwKICAgICAgICAgICBvYmpTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3Jl
KCJzdG9yZSIsIHsga2V5UGF0aDogImtleSIgfSk7CiAKLSAgICAgICAgYXNzZXJ0X3Rocm93cygi
RGF0YUVycm9yIiwKKyAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkRhdGFFcnJvciIsCiAgICAg
ICAgICAgICBmdW5jdGlvbigpIHsgcnEgPSBvYmpTdG9yZS5hZGQocmVjb3JkKTsgfSk7CiAKICAg
ICAgICAgYXNzZXJ0X2VxdWFscyhycSwgdW5kZWZpbmVkKTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9y
ZV9hZGQxMy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRl
LWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2FkZDEzLmh0bWwKaW5kZXggM2Y0YjMwZDNhZmMxODI3
YTExMjUxODA4NzA3ODk1ODlhYjgyNjY1My4uYTZhZDJmMzA5Y2UxNTBmZjdlYmYyMDNhZjA4Njlh
YjdhNjQ1MjdkOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWRE
Qi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2FkZDEzLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0
b3JlX2FkZDEzLmh0bWwKQEAgLTE4LDcgKzE4LDcgQEAKICAgICAgICAgdmFyIHJxLAogICAgICAg
ICAgIG9ialN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoInN0b3JlIik7CiAKLSAgICAgICAg
YXNzZXJ0X3Rocm93cygiRGF0YUVycm9yIiwKKyAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkRh
dGFFcnJvciIsCiAgICAgICAgICAgICBmdW5jdGlvbigpIHsgcnEgPSBvYmpTdG9yZS5hZGQocmVj
b3JkLCB7IHZhbHVlOiAxIH0pOyB9KTsKIAogICAgICAgICBhc3NlcnRfZXF1YWxzKHJxLCB1bmRl
ZmluZWQpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1w
cml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2FkZDE1Lmh0bWwgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfYWRk
MTUuaHRtbAppbmRleCBjMzIyY2E3ZGEwYjE4Y2Y2YzA1NGExN2JlNzdhMzIzZGRiMmZkNjFiLi4w
ZGY3MTM0MjQzNDgwOGMwNzAyNTM4OGVkZThjZGZmZjBmYjE5NGZmIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0
c3RvcmVfYWRkMTUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERC
LXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfYWRkMTUuaHRtbApAQCAtMjEsNyArMjEs
NyBAQAogICAgICAgICB2YXIgdHhuID0gZGIudHJhbnNhY3Rpb24oInN0b3JlIik7CiAgICAgICAg
IHZhciBvc3RvcmUgPSB0eG4ub2JqZWN0U3RvcmUoInN0b3JlIik7CiAgICAgICAgIHQuc3RlcChm
dW5jdGlvbigpewotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygiUmVhZE9ubHlFcnJvciIsIGZ1
bmN0aW9uKCl7CisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiUmVhZE9ubHlFcnJvciIs
IGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgb3N0b3JlLmFkZCh7IHBLZXk6ICJwcmltYXJ5
S2V5XzAifSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0
c3RvcmVfYWRkMTYuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJp
dmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9hZGQxNi5odG1sCmluZGV4IDBkMTJlMDQzZjcy
YTdmZGQzMmMwZjZjYjhiNDY5NTZjMDFlZjAyMTQuLmRkNjVkOTA0NjcwNzZkMDcyOWUwZmIyOGRi
ZmJkNWMwYjU3YmFhM2EgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRl
eGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9hZGQxNi5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmpl
Y3RzdG9yZV9hZGQxNi5odG1sCkBAIC0yMSw3ICsyMSw3IEBACiAKICAgICBvcGVuX3JxLm9uc3Vj
Y2VzcyA9IGZ1bmN0aW9uIChldmVudCkgewogICAgICAgICB0LnN0ZXAoZnVuY3Rpb24oKXsKLSAg
ICAgICAgICAgIGFzc2VydF90aHJvd3MoIkludmFsaWRTdGF0ZUVycm9yIiwgZnVuY3Rpb24oKXsK
KyAgICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlkU3RhdGVFcnJvciIsIGZ1bmN0
aW9uKCl7CiAgICAgICAgICAgICAgICAgb3N0b3JlLmFkZCh7IHBLZXk6ICJwcmltYXJ5S2V5XzAi
fSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVf
YWRkOS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJy
b3dzaW5nL2lkYm9iamVjdHN0b3JlX2FkZDkuaHRtbAppbmRleCBjOTMwNGEwMzEwYTcwOTcxZWNi
ZjU2NjhjMDllOGUzYTFjZmJkMGIzLi44ZTI4MjAwZTZjZWYxYTIwMTU2MzA3Mjk3MTdlOWRiMTFj
M2RkZGU4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXBy
aXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfYWRkOS5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9h
ZGQ5Lmh0bWwKQEAgLTE2LDcgKzE2LDcgQEAKICAgICAgICAgICBkYiA9IGUudGFyZ2V0LnJlc3Vs
dCwKICAgICAgICAgICBvYmpTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCJzdG9yZSIsIHsg
a2V5UGF0aDogImtleSIgfSk7CiAKLSAgICAgICAgYXNzZXJ0X3Rocm93cygiRGF0YUVycm9yIiwK
KyAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkRhdGFFcnJvciIsCiAgICAgICAgICAgICBmdW5j
dGlvbigpIHsgcnEgPSBvYmpTdG9yZS5hZGQocmVjb3JkLCAxKTsgfSk7CiAKICAgICAgICAgYXNz
ZXJ0X2VxdWFscyhycSwgdW5kZWZpbmVkKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9jbGVhcjMu
aHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2lu
Zy9pZGJvYmplY3RzdG9yZV9jbGVhcjMuaHRtbAppbmRleCBkNTUwOWFjOTYxNmIxYjM0ZjFhN2Yz
YWE1N2JiMDJhZGVjMDg4ZWRlLi4xMTcxZGI2ZTc3OTRhYjY4YjlkYWRhYTRjM2VjOGU2MGM3M2Jj
N2Y1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZh
dGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfY2xlYXIzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2Ns
ZWFyMy5odG1sCkBAIC0yNiw3ICsyNiw3IEBACiAgICAgICAgIHZhciB0eG4gPSBkYi50cmFuc2Fj
dGlvbigic3RvcmUiKTsKICAgICAgICAgdmFyIG9zdG9yZSA9IHR4bi5vYmplY3RTdG9yZSgic3Rv
cmUiKTsKICAgICAgICAgdC5zdGVwKGZ1bmN0aW9uKCl7Ci0gICAgICAgICAgICBhc3NlcnRfdGhy
b3dzKCJSZWFkT25seUVycm9yIiwgZnVuY3Rpb24oKXsKKyAgICAgICAgICAgIGFzc2VydF90aHJv
d3NfZG9tKCJSZWFkT25seUVycm9yIiwgZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICBvc3Rv
cmUuY2xlYXIoKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmpl
Y3RzdG9yZV9jbGVhcjQuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREIt
cHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9jbGVhcjQuaHRtbAppbmRleCAyNzUyNTJi
MDRjOTMyNjM4MGY3NjE0ZWE2YjhkNTNjYmFhZDZlMDI1Li43MTFiOWJlOTk5MjY0MzlmZTkyYmMx
YmEwYjQ3Y2FiZDkxY2IwMWQwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
SW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfY2xlYXI0Lmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lk
Ym9iamVjdHN0b3JlX2NsZWFyNC5odG1sCkBAIC0yMSw3ICsyMSw3IEBACiAKICAgICBvcGVuX3Jx
Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgewogICAgICAgICB0LnN0ZXAoZnVuY3Rpb24o
KXsKLSAgICAgICAgICAgIGFzc2VydF90aHJvd3MoIkludmFsaWRTdGF0ZUVycm9yIiwgZnVuY3Rp
b24oKXsKKyAgICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlkU3RhdGVFcnJvciIs
IGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgb3N0b3JlLmNsZWFyKCk7CiAgICAgICAgICAg
ICB9KTsKICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
SW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfY291bnQ0Lmh0bWwgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2Jq
ZWN0c3RvcmVfY291bnQ0Lmh0bWwKaW5kZXggOTFkYThhYzhlNTIyOWYzMWRmYTFjYWM2N2ViMjA0
NzQwNTA2YjIzNi4uOWY0Yzg4Y2Q0NDE3OGViYmViYjJhYmI2ZTJjNjI4ZDQ2MDBhZWRkNCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dz
aW5nL2lkYm9iamVjdHN0b3JlX2NvdW50NC5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9jb3VudDQuaHRt
bApAQCAtMjEsNyArMjEsNyBAQAogCiAgICAgb3Blbl9ycS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAo
ZXZlbnQpIHsKICAgICAgICAgdC5zdGVwKGZ1bmN0aW9uKCl7Ci0gICAgICAgICAgICBhc3NlcnRf
dGhyb3dzKCJJbnZhbGlkU3RhdGVFcnJvciIsIGZ1bmN0aW9uKCl7CisgICAgICAgICAgICBhc3Nl
cnRfdGhyb3dzX2RvbSgiSW52YWxpZFN0YXRlRXJyb3IiLCBmdW5jdGlvbigpewogICAgICAgICAg
ICAgICAgIG9zdG9yZS5jb3VudCgpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dz
aW5nL2lkYm9iamVjdHN0b3JlX2NyZWF0ZUluZGV4MTAuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9jcmVhdGVJ
bmRleDEwLmh0bWwKaW5kZXggZTYwZTExOTc5YjkyZmYxNTM5YzY5NTFiNGFhOTFhNzkwZDY1NDI4
YS4uMDcxMjRmMGMwOGM4NGJmNWM2NmE2MzM5MjljYWI4YTY4YmZlZjFjOCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9i
amVjdHN0b3JlX2NyZWF0ZUluZGV4MTAuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfY3JlYXRlSW5kZXgx
MC5odG1sCkBAIC0xNSw3ICsxNSw3IEBAIG9wZW5fcnEub251cGdyYWRlbmVlZGVkID0gZnVuY3Rp
b24gKGUpIHsKICAgICB2YXIgZGIgPSBlLnRhcmdldC5yZXN1bHQ7CiAgICAgdmFyIG9zdG9yZSA9
IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCJzdG9yZSIpOwogICAgIG9zdG9yZS5jcmVhdGVJbmRleCgi
YSIsICJhIik7Ci0gICAgYXNzZXJ0X3Rocm93cygiQ29uc3RyYWludEVycm9yIiwgZnVuY3Rpb24o
KXsKKyAgICBhc3NlcnRfdGhyb3dzX2RvbSgiQ29uc3RyYWludEVycm9yIiwgZnVuY3Rpb24oKXsK
ICAgICAgICAgb3N0b3JlLmNyZWF0ZUluZGV4KCJhIiwgImEiKTsKICAgICB9KTsKICAgICB0LmRv
bmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJp
dmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9jcmVhdGVJbmRleDExLmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3Rv
cmVfY3JlYXRlSW5kZXgxMS5odG1sCmluZGV4IGQ0NGQyNDUwNmZiZDZkOTRhZTc0MjEwNjZjNTMx
M2IzMTQxZDUxNTIuLjM4MTQ1MjMwNzFjZWRmZjk0NWRmODBiYjc0YjdlMzg4ZjI0OGYzMzcgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93
c2luZy9pZGJvYmplY3RzdG9yZV9jcmVhdGVJbmRleDExLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2Ny
ZWF0ZUluZGV4MTEuaHRtbApAQCAtMTQsNyArMTQsNyBAQCB2YXIgdCA9IGFzeW5jX3Rlc3QoKSwK
IG9wZW5fcnEub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24gKGUpIHsKICAgICB2YXIgZGIgPSBl
LnRhcmdldC5yZXN1bHQ7CiAgICAgdmFyIG9zdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCJz
dG9yZSIpOwotICAgIGFzc2VydF90aHJvd3MoIlN5bnRheEVycm9yIiwgZnVuY3Rpb24oKXsKKyAg
ICBhc3NlcnRfdGhyb3dzX2RvbSgiU3ludGF4RXJyb3IiLCBmdW5jdGlvbigpewogICAgICAgICBv
c3RvcmUuY3JlYXRlSW5kZXgoImFiIiwgIi4iKTsKICAgICB9KTsKICAgICB0LmRvbmUoKTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93
c2luZy9pZGJvYmplY3RzdG9yZV9jcmVhdGVJbmRleDEyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfY3JlYXRl
SW5kZXgxMi5odG1sCmluZGV4IDQ4YTZkNmE3NzkwY2RjYjhhMjYyN2NlMGE2ZDkxNjdhZWVkNDI4
ZDguLjI3N2ZmOTRmN2E4ZTI2ZjA1YzE5ZTM0NDZiM2UxOWYyYjg3NGE1MzkgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJv
YmplY3RzdG9yZV9jcmVhdGVJbmRleDEyLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2NyZWF0ZUluZGV4
MTIuaHRtbApAQCAtMjEsNyArMjEsNyBAQAogCiAgICAgb3Blbl9ycS5vbnN1Y2Nlc3MgPSBmdW5j
dGlvbiAoZXZlbnQpIHsKICAgICAgICAgdC5zdGVwKGZ1bmN0aW9uKCl7Ci0gICAgICAgICAgICBh
c3NlcnRfdGhyb3dzKCJJbnZhbGlkU3RhdGVFcnJvciIsIGZ1bmN0aW9uKCl7CisgICAgICAgICAg
ICBhc3NlcnRfdGhyb3dzX2RvbSgiSW52YWxpZFN0YXRlRXJyb3IiLCBmdW5jdGlvbigpewogICAg
ICAgICAgICAgICAgIG9zdG9yZS5jcmVhdGVJbmRleCgiaW5kZXgiLCAiaW5kZXhlZFByb3BlcnR5
Iik7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVf
Y3JlYXRlSW5kZXgxMy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1w
cml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2NyZWF0ZUluZGV4MTMuaHRtbAppbmRleCBm
NTEyMzFjNTI1NzgzZTk2YzIwZDJlNGVjMzcxYzU2Y2FmYWMwZWQ5Li42MTVhOTAxMmRjZjAxN2Ri
MGM3MjBmMjY2OWYzMzMzMWZiNjM2Yjc3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfY3JlYXRlSW5k
ZXgxMy5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0
ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9jcmVhdGVJbmRleDEzLmh0bWwKQEAgLTIxLDcgKzIx
LDcgQEAKICAgICAgICAgdmFyIHR4biA9IGRiLnRyYW5zYWN0aW9uKCJzdG9yZSIsICJyZWFkd3Jp
dGUiKTsKICAgICAgICAgb3N0b3JlID0gdHhuLm9iamVjdFN0b3JlKCJzdG9yZSIpOwogICAgICAg
ICB0LnN0ZXAoZnVuY3Rpb24oKXsKLSAgICAgICAgICAgIGFzc2VydF90aHJvd3MoIkludmFsaWRT
dGF0ZUVycm9yIiwgZnVuY3Rpb24oKXsKKyAgICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJJ
bnZhbGlkU3RhdGVFcnJvciIsIGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgb3N0b3JlLmNy
ZWF0ZUluZGV4KCJpbmRleCIsICJpbmRleGVkUHJvcGVydHkiKTsKICAgICAgICAgICAgIH0pOwog
ICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVk
REItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9kZWxldGU2Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3Rv
cmVfZGVsZXRlNi5odG1sCmluZGV4IDIyNTRlMDQzMjVmOTNhNGY0ZjdlNjZjZWJmMGU5MGE4NTEx
YmIwNWYuLjE1Yzc0ODk1MmI5ZWVjZGM0MjdhMWJkOGU5OWE5ZDc3ZDhiZTU4ZDIgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9p
ZGJvYmplY3RzdG9yZV9kZWxldGU2Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2RlbGV0ZTYuaHRtbApA
QCAtMjYsNyArMjYsNyBAQAogICAgICAgICB2YXIgdHhuID0gZGIudHJhbnNhY3Rpb24oInN0b3Jl
Iik7CiAgICAgICAgIHZhciBvc3RvcmUgPSB0eG4ub2JqZWN0U3RvcmUoInN0b3JlIik7CiAgICAg
ICAgIHQuc3RlcChmdW5jdGlvbigpewotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygiUmVhZE9u
bHlFcnJvciIsIGZ1bmN0aW9uKCl7CisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiUmVh
ZE9ubHlFcnJvciIsIGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgb3N0b3JlLmRlbGV0ZSgi
cHJpbWFyeUtleV8wIik7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRi
b2JqZWN0c3RvcmVfZGVsZXRlNy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4
ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2RlbGV0ZTcuaHRtbAppbmRleCBi
ZjE1N2I5NzQxNGFhMzA3OTc4MjYwMTM5MWY5ZWNiYjdjMTQxZjk0Li4wNjFkNmJkZDQxMGRjZWNl
ZjBmMTkwMzk5ZjY4NGE5YWE2NGQzOTUzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfZGVsZXRlNy5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93
c2luZy9pZGJvYmplY3RzdG9yZV9kZWxldGU3Lmh0bWwKQEAgLTIzLDcgKzIzLDcgQEAKIAogICAg
IG9wZW5fcnEub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7CiAgICAgICAgIHQuc3RlcChm
dW5jdGlvbigpewotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygiSW52YWxpZFN0YXRlRXJyb3Ii
LCBmdW5jdGlvbigpeworICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkludmFsaWRTdGF0
ZUVycm9yIiwgZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICBvc3RvcmUuZGVsZXRlKCJwcmlt
YXJ5S2V5XzAiKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmpl
Y3RzdG9yZV9kZWxldGVJbmRleC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4
ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2RlbGV0ZUluZGV4Lmh0bWwKaW5k
ZXggZGYyZjdmYWRjOTY3YzU4ODQzYjA1ZTZhMDFhN2Q1OGMyNTVkOGZmMS4uYmRhNDIzNTQyZTI2
MWFiNWE1ZmFkMjk4OGZmMDliMDJiYWIzZmFhMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2RlbGV0
ZUluZGV4Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2
YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2RlbGV0ZUluZGV4Lmh0bWwKQEAgLTMyLDcgKzMy
LDcgQEAKICAgICAgICAgICAgICAgb2JqU3RvcmUgPSBkYi50cmFuc2FjdGlvbigidGVzdCIpCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAub2JqZWN0U3RvcmUoInRlc3QiKTsKIAotICAgICAg
ICAgICAgYXNzZXJ0X3Rocm93cygnTm90Rm91bmRFcnJvcicsCisgICAgICAgICAgICBhc3NlcnRf
dGhyb3dzX2RvbSgnTm90Rm91bmRFcnJvcicsCiAgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7
IGluZGV4ID0gb2JqU3RvcmUuaW5kZXgoImluZGV4IikgfSk7CiAgICAgICAgICAgICBhc3NlcnRf
ZXF1YWxzKGluZGV4LCB1bmRlZmluZWQpOwogICAgICAgICAgICAgdC5kb25lKCk7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Npbmcv
aWRib2JqZWN0c3RvcmVfZGVsZXRlZC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0lu
ZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2RlbGV0ZWQuaHRtbAppbmRl
eCBjZTcyYmJhNmRiMTEzMDdlNjc1YjYzZWY2M2RjNzQzNTM2MGQ2MWRkLi44ZTJmYzVjYjc2YjA1
MjY4ZWIzNDNhNDE4ZWE3NDAwZDNjYmRiOTQxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfZGVsZXRl
ZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1i
cm93c2luZy9pZGJvYmplY3RzdG9yZV9kZWxldGVkLmh0bWwKQEAgLTI4LDE2ICsyOCwxNiBAQAog
ICAgICAgICBkYi5kZWxldGVPYmplY3RTdG9yZSgic3RvcmUiKTsKICAgICAgICAgYXNzZXJ0X2Vx
dWFscyhkYi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCwgMCwgIm9iamVjdFN0b3JlTmFtZXMubGVu
Z3RoIGFmdGVyIGRlbGV0ZSIpOwogCi0gICAgICAgIGFzc2VydF90aHJvd3MoRE9NRXhjZXB0aW9u
LklOVkFMSURfU1RBVEVfRVJSLCBmdW5jdGlvbigpIHsgb2JqU3RvcmUuYWRkKDIpOyB9KTsKLSAg
ICAgICAgYXNzZXJ0X3Rocm93cyhET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIsIGZ1bmN0
aW9uKCkgeyBvYmpTdG9yZS5wdXQoMyk7IH0pOwotICAgICAgICBhc3NlcnRfdGhyb3dzKERPTUV4
Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUiwgZnVuY3Rpb24oKSB7IG9ialN0b3JlLmdldCgxKTsg
fSk7Ci0gICAgICAgIGFzc2VydF90aHJvd3MoRE9NRXhjZXB0aW9uLklOVkFMSURfU1RBVEVfRVJS
LCBmdW5jdGlvbigpIHsgb2JqU3RvcmUuY2xlYXIoKTsgfSk7Ci0gICAgICAgIGFzc2VydF90aHJv
d3MoRE9NRXhjZXB0aW9uLklOVkFMSURfU1RBVEVfRVJSLCBmdW5jdGlvbigpIHsgb2JqU3RvcmUu
Y291bnQoKTsgfSk7Ci0gICAgICAgIGFzc2VydF90aHJvd3MoRE9NRXhjZXB0aW9uLklOVkFMSURf
U1RBVEVfRVJSLCBmdW5jdGlvbigpIHsgb2JqU3RvcmUuZGVsZXRlKDEpOyB9KTsKLSAgICAgICAg
YXNzZXJ0X3Rocm93cyhET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIsIGZ1bmN0aW9uKCkg
eyBvYmpTdG9yZS5vcGVuQ3Vyc29yKCk7IH0pOwotICAgICAgICBhc3NlcnRfdGhyb3dzKERPTUV4
Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUiwgZnVuY3Rpb24oKSB7IG9ialN0b3JlLmluZGV4KCJp
ZHgiKTsgfSk7Ci0gICAgICAgIGFzc2VydF90aHJvd3MoRE9NRXhjZXB0aW9uLklOVkFMSURfU1RB
VEVfRVJSLCBmdW5jdGlvbigpIHsgb2JqU3RvcmUuZGVsZXRlSW5kZXgoImlkeCIpOyB9KTsKLSAg
ICAgICAgYXNzZXJ0X3Rocm93cyhET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIsIGZ1bmN0
aW9uKCkgeyBvYmpTdG9yZS5jcmVhdGVJbmRleCgiaWR4MiIsICJhIik7IH0pOworICAgICAgICBh
c3NlcnRfdGhyb3dzX2RvbShET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIsIGZ1bmN0aW9u
KCkgeyBvYmpTdG9yZS5hZGQoMik7IH0pOworICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbShET01F
eGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIsIGZ1bmN0aW9uKCkgeyBvYmpTdG9yZS5wdXQoMyk7
IH0pOworICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbShET01FeGNlcHRpb24uSU5WQUxJRF9TVEFU
RV9FUlIsIGZ1bmN0aW9uKCkgeyBvYmpTdG9yZS5nZXQoMSk7IH0pOworICAgICAgICBhc3NlcnRf
dGhyb3dzX2RvbShET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIsIGZ1bmN0aW9uKCkgeyBv
YmpTdG9yZS5jbGVhcigpOyB9KTsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oRE9NRXhjZXB0
aW9uLklOVkFMSURfU1RBVEVfRVJSLCBmdW5jdGlvbigpIHsgb2JqU3RvcmUuY291bnQoKTsgfSk7
CisgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKERPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VS
UiwgZnVuY3Rpb24oKSB7IG9ialN0b3JlLmRlbGV0ZSgxKTsgfSk7CisgICAgICAgIGFzc2VydF90
aHJvd3NfZG9tKERPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUiwgZnVuY3Rpb24oKSB7IG9i
alN0b3JlLm9wZW5DdXJzb3IoKTsgfSk7CisgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKERPTUV4
Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUiwgZnVuY3Rpb24oKSB7IG9ialN0b3JlLmluZGV4KCJp
ZHgiKTsgfSk7CisgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKERPTUV4Y2VwdGlvbi5JTlZBTElE
X1NUQVRFX0VSUiwgZnVuY3Rpb24oKSB7IG9ialN0b3JlLmRlbGV0ZUluZGV4KCJpZHgiKTsgfSk7
CisgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKERPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VS
UiwgZnVuY3Rpb24oKSB7IG9ialN0b3JlLmNyZWF0ZUluZGV4KCJpZHgyIiwgImEiKTsgfSk7CiAg
ICAgfQogCiAgICAgb3Blbl9ycS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJv
YmplY3RzdG9yZV9nZXQ2Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERC
LXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfZ2V0Ni5odG1sCmluZGV4IDVhN2I1NDc3
YjhhNTU4YzAyZWQ3YjJiMTJjMzA4ZTc0NTYyMDcxYzUuLmZhNWZjNmJmYzZiZDU0MzkwZTc1ODA4
OWMzY2I0OWQzNzhkMjk0YTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9J
bmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9nZXQ2Lmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9i
amVjdHN0b3JlX2dldDYuaHRtbApAQCAtMjAsNyArMjAsNyBAQAogICAgICAgICB2YXIgc3RvcmUg
PSBkYi50cmFuc2FjdGlvbigic3RvcmUiKQogICAgICAgICAgICAgICAgICAgICAgIC5vYmplY3RT
dG9yZSgic3RvcmUiKTsKICAgICAgICAgc3RvcmUudHJhbnNhY3Rpb24uYWJvcnQoKTsKLSAgICAg
ICAgYXNzZXJ0X3Rocm93cygiVHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yIiwgZnVuY3Rpb24gKCkg
eworICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiVHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yIiwg
ZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgc3RvcmUuZ2V0KDEpOwogICAgICAgICB9LCAidGhy
b3cgVHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yIG9uIGFib3J0ZWQgdHJhbnNhY3Rpb24uIik7CiAg
ICAgICAgIHQuZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0lu
ZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2dldDcuaHRtbCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3Rz
dG9yZV9nZXQ3Lmh0bWwKaW5kZXggNzk1NjEwYzllZWEyZmI4ZDNhNzczNWRlMTI5YTBhZTYxZWU3
MmExNS4uYWFkZTlhYTRjOGZiOTVmMDY0YTk3ZTc3YzIxZjJiNTBjNWU2Y2FkNCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lk
Ym9iamVjdHN0b3JlX2dldDcuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5k
ZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfZ2V0Ny5odG1sCkBAIC0xOSw3
ICsxOSw3IEBACiAgICAgb3Blbl9ycS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihlKSB7CiAgICAgICAg
IHZhciBzdG9yZSA9IGRiLnRyYW5zYWN0aW9uKCJzdG9yZSIpCiAgICAgICAgICAgICAgICAgICAg
ICAgLm9iamVjdFN0b3JlKCJzdG9yZSIpCi0gICAgICAgIGFzc2VydF90aHJvd3MoIkRhdGFFcnJv
ciIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkRhdGFFcnJvciIs
IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIHN0b3JlLmdldChudWxsKQogICAgICAgICB9LCAi
dGhyb3cgRGF0YUVycm9yIHdoZW4gdXNpbmcgaW52YWxpZCBrZXkuIik7CiAgICAgICAgIHQuZG9u
ZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2
YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX29wZW5DdXJzb3JfaW52YWxpZC5odG1sIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVj
dHN0b3JlX29wZW5DdXJzb3JfaW52YWxpZC5odG1sCmluZGV4IGNmYjMzMzMwOTI0NGQ4MjUwZTY5
NWUxYjkyMTdhYTBiYTdkMzY1YmMuLjliYzI4NzM0MjQyN2Y5ZmIzYjQ0ZWYwNTNhZjQ5MTUwYmYw
OGViZGYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJp
dmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9vcGVuQ3Vyc29yX2ludmFsaWQuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRi
b2JqZWN0c3RvcmVfb3BlbkN1cnNvcl9pbnZhbGlkLmh0bWwKQEAgLTI4LDEzICsyOCwxMyBAQAog
ICAgICAgICBhc3luY190ZXN0KGRvY3VtZW50LnRpdGxlICsgIiAtIHBhc3Mgc29tZXRoaW5nIG90
aGVyIHRoYW4gbnVtYmVyIikuc3RlcChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICB2YXIgaWR4
ID0gZGIudHJhbnNhY3Rpb24oInRlc3QiKS5vYmplY3RTdG9yZSgidGVzdCIpLmluZGV4KCJpbmRl
eCIpOwogCi0gICAgICAgICAgICBhc3NlcnRfdGhyb3dzKCJEYXRhRXJyb3IiLAorICAgICAgICAg
ICAgYXNzZXJ0X3Rocm93c19kb20oIkRhdGFFcnJvciIsCiAgICAgICAgICAgICAgICAgZnVuY3Rp
b24oKSB7IGlkeC5vcGVuQ3Vyc29yKHsgbG93ZXI6ICJhIiB9KTsgfSk7CiAKLSAgICAgICAgICAg
IGFzc2VydF90aHJvd3MoIkRhdGFFcnJvciIsCisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2Rv
bSgiRGF0YUVycm9yIiwKICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsgaWR4Lm9wZW5DdXJz
b3IoeyBsb3dlcjogImEiLCBsb3dlck9wZW46IGZhbHNlIH0pOyB9KTsKIAotICAgICAgICAgICAg
YXNzZXJ0X3Rocm93cygiRGF0YUVycm9yIiwKKyAgICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9t
KCJEYXRhRXJyb3IiLAogICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyBpZHgub3BlbkN1cnNv
cih7IGxvd2VyOiAiYSIsIGxvd2VyT3BlbjogZmFsc2UsIHVwcGVyOiBudWxsLCB1cHBlck9wZW46
IGZhbHNlIH0pOyB9KTsKIAogICAgICAgICAgICAgdGhpcy5kb25lKCk7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2Jq
ZWN0c3RvcmVfcHV0MTAuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREIt
cHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9wdXQxMC5odG1sCmluZGV4IDRkMjliYTM5
Zjc0ZmExMjBlMjI0YmZiYzhmMmQzMmY1NWVmZWVkNDEuLjliNmFmMTc0NGQzMDc2YmIzODkxODFi
ODc0Y2NlNjJmODBlMTEyZTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9J
bmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9wdXQxMC5odG1sCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJv
YmplY3RzdG9yZV9wdXQxMC5odG1sCkBAIC0xOCw3ICsxOCw3IEBACiAgICAgICAgIHZhciBycSwK
ICAgICAgICAgICBvYmpTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCJzdG9yZSIsIHsga2V5
UGF0aDogImtleSIgfSk7CiAKLSAgICAgICAgYXNzZXJ0X3Rocm93cygiRGF0YUVycm9yIiwKKyAg
ICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkRhdGFFcnJvciIsCiAgICAgICAgICAgICBmdW5jdGlv
bigpIHsgcnEgPSBvYmpTdG9yZS5wdXQocmVjb3JkKTsgfSk7CiAKICAgICAgICAgYXNzZXJ0X2Vx
dWFscyhycSwgdW5kZWZpbmVkKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9wdXQxMS5odG1sIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9i
amVjdHN0b3JlX3B1dDExLmh0bWwKaW5kZXggMmZlZDQzMzljNjNhZTUwNThhZTA1MzBlNWJkYzNl
ZDMxZjQ2MzEzMS4uNTQ2NDM1M2NmM2FlZjkxMjhkZTI2NjgzMmExOTE3ODhlNjY5YjFiMCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dz
aW5nL2lkYm9iamVjdHN0b3JlX3B1dDExLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX3B1dDExLmh0bWwK
QEAgLTE4LDcgKzE4LDcgQEAKICAgICAgICAgdmFyIHJxLAogICAgICAgICAgIG9ialN0b3JlID0g
ZGIuY3JlYXRlT2JqZWN0U3RvcmUoInN0b3JlIiwgeyBrZXlQYXRoOiAia2V5IiB9KTsKIAotICAg
ICAgICBhc3NlcnRfdGhyb3dzKCJEYXRhRXJyb3IiLAorICAgICAgICBhc3NlcnRfdGhyb3dzX2Rv
bSgiRGF0YUVycm9yIiwKICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyBycSA9IG9ialN0b3JlLnB1
dChyZWNvcmQpOyB9KTsKIAogICAgICAgICBhc3NlcnRfZXF1YWxzKHJxLCB1bmRlZmluZWQpOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJy
b3dzaW5nL2lkYm9iamVjdHN0b3JlX3B1dDEyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfcHV0MTIuaHRtbApp
bmRleCBkZDVlYWZlOGNiODU5MjAwZDRjN2U1MWQyNjQ2MmE4NTU3YTI0ZWUyLi42ZWUzYzRiNWVm
M2IzOWJlYmE4NDM3ZWY1ZGJiNzM4NjlmZDkwNmY3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfcHV0
MTIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUt
YnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfcHV0MTIuaHRtbApAQCAtMTgsNyArMTgsNyBAQAogICAg
ICAgICB2YXIgcnEsCiAgICAgICAgICAgb2JqU3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgi
c3RvcmUiLCB7IGtleVBhdGg6ICJrZXkiIH0pOwogCi0gICAgICAgIGFzc2VydF90aHJvd3MoIkRh
dGFFcnJvciIsCisgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJEYXRhRXJyb3IiLAogICAgICAg
ICAgICAgZnVuY3Rpb24oKSB7IHJxID0gb2JqU3RvcmUucHV0KHJlY29yZCk7IH0pOwogCiAgICAg
ICAgIGFzc2VydF9lcXVhbHMocnEsIHVuZGVmaW5lZCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVf
cHV0MTMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1i
cm93c2luZy9pZGJvYmplY3RzdG9yZV9wdXQxMy5odG1sCmluZGV4IDA3YjkwM2FmMWMwMTUyOGFl
ZWRmNzVkMDU1OTdlYzYzOWUwYzc1MGUuLmVjOWE5ZjBjNTIwMmQ4YWI1NmJmZTRmOWE4NTVmOGQ0
NTQ3NTRiOTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREIt
cHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9wdXQxMy5odG1sCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9y
ZV9wdXQxMy5odG1sCkBAIC0xOCw3ICsxOCw3IEBACiAgICAgICAgIHZhciBycSwKICAgICAgICAg
ICBvYmpTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCJzdG9yZSIpOwogCi0gICAgICAgIGFz
c2VydF90aHJvd3MoIkRhdGFFcnJvciIsCisgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJEYXRh
RXJyb3IiLAogICAgICAgICAgICAgZnVuY3Rpb24oKSB7IHJxID0gb2JqU3RvcmUucHV0KHJlY29y
ZCwgeyB2YWx1ZTogMSB9KTsgfSk7CiAKICAgICAgICAgYXNzZXJ0X2VxdWFscyhycSwgdW5kZWZp
bmVkKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJp
dmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9wdXQxNS5odG1sIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX3B1dDE1
Lmh0bWwKaW5kZXggNjVmZDcxNjZlODAzM2E1ZDk4N2E0OWRjYTQxYTA5ZTE4NmJhYzk2MS4uNTQ1
MmZmNzE4MzE2Yjc0OGY2M2ZhMzQ2OTNiYjE1YmYzNGEzMWEzOCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0
b3JlX3B1dDE1Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1w
cml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX3B1dDE1Lmh0bWwKQEAgLTIxLDcgKzIxLDcg
QEAKICAgICAgICAgdmFyIHR4biA9IGRiLnRyYW5zYWN0aW9uKCJzdG9yZSIpOwogICAgICAgICB2
YXIgb3N0b3JlID0gdHhuLm9iamVjdFN0b3JlKCJzdG9yZSIpOwogICAgICAgICB0LnN0ZXAoZnVu
Y3Rpb24oKXsKLSAgICAgICAgICAgIGFzc2VydF90aHJvd3MoIlJlYWRPbmx5RXJyb3IiLCBmdW5j
dGlvbigpeworICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIlJlYWRPbmx5RXJyb3IiLCBm
dW5jdGlvbigpewogICAgICAgICAgICAgICAgIG9zdG9yZS5wdXQoe3BLZXk6ICJwcmltYXJ5S2V5
XzAifSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3Rv
cmVfcHV0MTYuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0
ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9wdXQxNi5odG1sCmluZGV4IDE0ZGM4NjgxY2QzMjY3
N2E3NWJmNTZiZDI0Yjg1YzkyZWMyMzkzYzguLjBlOTFjZGVjZTBiYjI4YzEwODAxNjllZTcxMzg4
NDQzNmNiMTg0NDMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVk
REItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9wdXQxNi5odG1sCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3Rz
dG9yZV9wdXQxNi5odG1sCkBAIC0yMSw3ICsyMSw3IEBACiAKICAgICBvcGVuX3JxLm9uc3VjY2Vz
cyA9IGZ1bmN0aW9uIChldmVudCkgewogICAgICAgICB0LnN0ZXAoZnVuY3Rpb24oKXsKLSAgICAg
ICAgICAgIGFzc2VydF90aHJvd3MoIkludmFsaWRTdGF0ZUVycm9yIiwgZnVuY3Rpb24oKXsKKyAg
ICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlkU3RhdGVFcnJvciIsIGZ1bmN0aW9u
KCl7CiAgICAgICAgICAgICAgICAgb3N0b3JlLnB1dCh7cEtleTogInByaW1hcnlLZXlfMCJ9KTsK
ICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9wdXQ5
Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Np
bmcvaWRib2JqZWN0c3RvcmVfcHV0OS5odG1sCmluZGV4IDc3OWFlZDdmMTY3NmVhMjk0NzQwNTk5
YTVhYTQ4YzE2MmYxZTVlYmMuLjIzYWU5Yjk2MDUzMjc0Yjc5MjYyMDQ1ZmYxNjcwYTQ2OWU3ZjMy
NzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0
ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9wdXQ5Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX3B1dDku
aHRtbApAQCAtMTYsNyArMTYsNyBAQAogICAgICAgICAgIGRiID0gZS50YXJnZXQucmVzdWx0LAog
ICAgICAgICAgIG9ialN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoInN0b3JlIiwgeyBrZXlQ
YXRoOiAia2V5IiB9KTsKIAotICAgICAgICBhc3NlcnRfdGhyb3dzKCJEYXRhRXJyb3IiLAorICAg
ICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiRGF0YUVycm9yIiwKICAgICAgICAgICAgIGZ1bmN0aW9u
KCkgeyBycSA9IG9ialN0b3JlLnB1dChyZWNvcmQsIDEpOyB9KTsKIAogICAgICAgICBhc3NlcnRf
ZXF1YWxzKHJxLCB1bmRlZmluZWQpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2tleV9pbnZhbGlkLmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Npbmcva2V5X2ludmFsaWQu
aHRtbAppbmRleCBmNzJkYTM3NTliNTRiZDdjNWY4NDU0MTdmNDY5ZWExNWE1Njk3MTNhLi42NjNk
MjE2MDk5YTBiMzQ0NjRiNWUwNmIyN2Y4ZTYzYWIwZWRiYzJiIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Npbmcva2V5X2ludmFsaWQu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJv
d3Npbmcva2V5X2ludmFsaWQuaHRtbApAQCAtMzIsMTMgKzMyLDEzIEBACiAgICAgICAgIC8vIHNl
dCB0aGUgY3VycmVudCB0ZXN0LCBhbmQgcnVuIGl0CiAgICAgICAgIGRiLnNldFRlc3QodCkub251
cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgb2JqU3RvcmUgPSBvYmpT
dG9yZSB8fCBlLnRhcmdldC5yZXN1bHQuY3JlYXRlT2JqZWN0U3RvcmUoInN0b3JlIik7Ci0gICAg
ICAgICAgICBhc3NlcnRfdGhyb3dzKCdEYXRhRXJyb3InLCBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgIGFzc2VydF90aHJvd3NfZG9tKCdEYXRhRXJyb3InLCBmdW5jdGlvbigpIHsKICAgICAgICAg
ICAgICAgICBvYmpTdG9yZS5hZGQoInZhbHVlIiwga2V5KTsKICAgICAgICAgICAgIH0pOwogCiAg
ICAgICAgICAgICBpZiAoaXNfY2xvbmVhYmxlKGtleSkpIHsKICAgICAgICAgICAgICAgICBvYmpT
dG9yZTIgPSBvYmpTdG9yZTIgfHwgZS50YXJnZXQucmVzdWx0LmNyZWF0ZU9iamVjdFN0b3JlKCJz
dG9yZTIiLCB7IGtleVBhdGg6IFsieCIsICJrZXlwYXRoIl0gfSk7Ci0gICAgICAgICAgICAgICAg
YXNzZXJ0X3Rocm93cygnRGF0YUVycm9yJywgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAg
YXNzZXJ0X3Rocm93c19kb20oJ0RhdGFFcnJvcicsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAg
ICAgICAgICBvYmpTdG9yZTIuYWRkKHsgeDogInZhbHVlIiwga2V5cGF0aDoga2V5IH0pOwogICAg
ICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2tleXBhdGhfaW52YWxpZC5o
dG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5n
L2tleXBhdGhfaW52YWxpZC5odG1sCmluZGV4IGNjMWQ0NDQxNmZiZWFkMmVlZmJhN2U0ZDExZWEw
Nzc0ZTVmMjI5MDIuLjNjYmZiZTgwZTJhMTVhNTZhNDE5MTA4ZTViNTcwNDM4ZTkzM2I4NGMgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93
c2luZy9rZXlwYXRoX2ludmFsaWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
SW5kZXhlZERCLXByaXZhdGUtYnJvd3Npbmcva2V5cGF0aF9pbnZhbGlkLmh0bWwKQEAgLTIwLDEy
ICsyMCwxMiBAQAogCiAgICAgICAgIG9wZW5ycS5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihl
KSB7CiAgICAgICAgICAgICB2YXIgZGIgPSBlLnRhcmdldC5yZXN1bHQ7Ci0gICAgICAgICAgICBh
c3NlcnRfdGhyb3dzKCdTeW50YXhFcnJvcicsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYXNz
ZXJ0X3Rocm93c19kb20oJ1N5bnRheEVycm9yJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAg
ICAgICAgIGRiLmNyZWF0ZU9iamVjdFN0b3JlKHN0b3JlX25hbWUsIHsga2V5UGF0aDoga2V5cGF0
aCB9KQogICAgICAgICAgICAgICAgIH0sICJjcmVhdGVPYmplY3RTdG9yZSB3aXRoIGtleVBhdGgi
KTsKIAogICAgICAgICAgICAgc3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZShzdG9yZV9uYW1l
KTsKLSAgICAgICAgICAgIGFzc2VydF90aHJvd3MoJ1N5bnRheEVycm9yJywgZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgnU3ludGF4RXJyb3InLCBmdW5jdGlvbigp
IHsKICAgICAgICAgICAgICAgICAgICAgc3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4Jywga2V5cGF0
aCk7CiAgICAgICAgICAgICAgICAgfSwgImNyZWF0ZUluZGV4IHdpdGgga2V5UGF0aCIpOwogCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJv
d3NpbmcvdHJhbnNhY3Rpb24tY3JlYXRlX2luX3ZlcnNpb25jaGFuZ2UuaHRtbCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy90cmFuc2FjdGlvbi1j
cmVhdGVfaW5fdmVyc2lvbmNoYW5nZS5odG1sCmluZGV4IDAwMjc5MTZkMmU1MDU4MjY4YTAzOTNk
YTk3NmE5NjFkYWU3ZTZlNDYuLjA0YTFmMTdlOWY2ODUyMWY3NGE2ZjA2N2M4OTE3YmJmMDFiOTQ5
MjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0
ZS1icm93c2luZy90cmFuc2FjdGlvbi1jcmVhdGVfaW5fdmVyc2lvbmNoYW5nZS5odG1sCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy90cmFu
c2FjdGlvbi1jcmVhdGVfaW5fdmVyc2lvbmNoYW5nZS5odG1sCkBAIC0xNywxNCArMTcsMTQgQEAK
ICAgICAgICAgICAgIC5hZGQoInZlcnNpb25jaGFuZ2UxIiwgMSkKICAgICAgICAgICAgIC5hZGRF
dmVudExpc3RlbmVyKCJzdWNjZXNzIiwgbG9nKCJ2ZXJzaW9uY2hhbmdlX2FkZC5zdWNjZXNzIikp
CiAKLSAgICAgICAgYXNzZXJ0X3Rocm93cygnSW52YWxpZFN0YXRlRXJyb3InLCBmdW5jdGlvbigp
IHsgZGIudHJhbnNhY3Rpb24oInN0b3JlIikgfSkKKyAgICAgICAgYXNzZXJ0X3Rocm93c19kb20o
J0ludmFsaWRTdGF0ZUVycm9yJywgZnVuY3Rpb24oKSB7IGRiLnRyYW5zYWN0aW9uKCJzdG9yZSIp
IH0pCiAKICAgICAgICAgZS50YXJnZXQudHJhbnNhY3Rpb24KICAgICAgICAgICAgIC5vYmplY3RT
dG9yZSgic3RvcmUiKQogICAgICAgICAgICAgLmNvdW50KDIpCiAgICAgICAgICAgICAuYWRkRXZl
bnRMaXN0ZW5lcigic3VjY2VzcyIsIGxvZygidmVyc2lvbmNoYW5nZV9jb3VudC5zdWNjZXNzIikp
CiAKLSAgICAgICAgYXNzZXJ0X3Rocm93cygnSW52YWxpZFN0YXRlRXJyb3InLCBmdW5jdGlvbigp
IHsgZGIudHJhbnNhY3Rpb24oInN0b3JlIiwgInJlYWR3cml0ZSIpIH0pCisgICAgICAgIGFzc2Vy
dF90aHJvd3NfZG9tKCdJbnZhbGlkU3RhdGVFcnJvcicsIGZ1bmN0aW9uKCkgeyBkYi50cmFuc2Fj
dGlvbigic3RvcmUiLCAicmVhZHdyaXRlIikgfSkKIAogICAgICAgICBvcGVuX3JxLnRyYW5zYWN0
aW9uCiAgICAgICAgICAgICAub2JqZWN0U3RvcmUoInN0b3JlIikKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ludGVyc2VjdGlvbi1vYnNlcnZlci9pbnRlcnNlY3Rpb24tb2JzZXJ2ZXItaW50ZXJm
YWNlLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnRlcnNlY3Rpb24tb2JzZXJ2ZXIvaW50ZXJzZWN0aW9u
LW9ic2VydmVyLWludGVyZmFjZS5odG1sCmluZGV4IDA5YjEzNDMwZmU0MWE5ZDVhMjdmOTc3NzI4
Y2QwZTlmNDhiYTVkMTguLmMyZDI5MTliMWFlOTdmMjYwZDJhOWNjYjhmZDU4YTU1Y2IzMDlkYzcg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ludGVyc2VjdGlvbi1vYnNlcnZlci9pbnRlcnNlY3Rp
b24tb2JzZXJ2ZXItaW50ZXJmYWNlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW50ZXJzZWN0aW9u
LW9ic2VydmVyL2ludGVyc2VjdGlvbi1vYnNlcnZlci1pbnRlcmZhY2UuaHRtbApAQCAtNTgsMzIg
KzU4LDMyIEBACiAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMob2JzZXJ2ZXIudGhyZXNob2xk
cywgW051bWJlci5NSU5fVkFMVUVdKTsKICAgICB9LCdTbWFsbFBvc2l0aXZlVGhyZXNob2xkJyk7
CiAgICAgdGVzdChmdW5jdGlvbigpIHsKLSAgICAgICAgYXNzZXJ0X3Rocm93cyhSYW5nZUVycm9y
KCksIGZ1bmN0aW9uKCkgeworICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFJhbmdlRXJyb3IsIGZ1
bmN0aW9uKCkgewogICAgICAgICAgICAgbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGZ1bmN0aW9u
KCkge30sICB7IHRocmVzaG9sZDogLU51bWJlci5NSU5fVkFMVUUgfSk7CiAgICAgICAgIH0pCiAg
ICAgfSwnU21hbGxOZWdhdGl2ZVRocmVzaG9sZCcpOwogICAgIHRlc3QoZnVuY3Rpb24oKSB7Ci0g
ICAgICAgIGFzc2VydF90aHJvd3MoUmFuZ2VFcnJvcigpLCBmdW5jdGlvbigpIHsKKyAgICAgICAg
YXNzZXJ0X3Rocm93c19qcyhSYW5nZUVycm9yLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgIG5l
dyBJbnRlcnNlY3Rpb25PYnNlcnZlcihmdW5jdGlvbigpIHt9LCAgeyB0aHJlc2hvbGQ6IE51bWJl
ci5NQVhfVkFMVUUgfSk7CiAgICAgICAgIH0pCiAgICAgfSwnTGFyZ2VQb3NpdGl2ZVRocmVzaG9s
ZCcpOwogICAgIHRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgICAgIGFzc2VydF90aHJvd3MoUmFuZ2VF
cnJvcigpLCBmdW5jdGlvbigpIHsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhSYW5nZUVycm9y
LCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgIG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihmdW5j
dGlvbigpIHt9LCAgeyB0aHJlc2hvbGQ6IC1OdW1iZXIuTUFYX1ZBTFVFIH0pOwogICAgICAgICB9
KQogICAgIH0sJ0xhcmdlTmVnYXRpdmVUaHJlc2hvbGQnKTsKICAgICB0ZXN0KGZ1bmN0aW9uKCkg
ewotICAgICAgICBhc3NlcnRfdGhyb3dzKFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsKKyAgICAg
ICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAg
bmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGZ1bmN0aW9uKCkge30sICB7IHRocmVzaG9sZDogTnVt
YmVyLlBPU0lUSVZFX0lORklOSVRZIH0pOwogICAgICAgICB9KQogICAgIH0sJ1Bvc2l0aXZlSW5m
aW5pdHlUaHJlc2hvbGQnKTsKICAgICB0ZXN0KGZ1bmN0aW9uKCkgewotICAgICAgICBhc3NlcnRf
dGhyb3dzKFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19q
cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgbmV3IEludGVyc2VjdGlvbk9i
c2VydmVyKGZ1bmN0aW9uKCkge30sICB7IHRocmVzaG9sZDogTnVtYmVyLk5FR0FUSVZFX0lORklO
SVRZIH0pOwogICAgICAgICB9KQogICAgIH0sJ05lZ2F0aXZlSW5maW5pdHlUaHJlc2hvbGQnKTsK
ICAgICB0ZXN0KGZ1bmN0aW9uKCkgewotICAgICAgICBhc3NlcnRfdGhyb3dzKFR5cGVFcnJvcigp
LCBmdW5jdGlvbigpIHsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsIGZ1bmN0
aW9uKCkgewogICAgICAgICAgICAgbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGZ1bmN0aW9uKCkg
e30sICB7IHRocmVzaG9sZDogTnVtYmVyLk5hTiB9KTsKICAgICAgICAgfSkKICAgICB9LCdOYU5U
aHJlc2hvbGQnKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS9kb20tZ2V0dGVycy10
eXBlLWNoZWNrLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9kb20vZG9tLWdldHRlcnMtdHlwZS1jaGVj
ay5odG1sCmluZGV4IDdmZTQzMjQ2OGE2OTY0ODMwNzkyZTFiMDE4MWY1OTFmYzA2ZjllYTEuLmZh
ZTE1ZjdkZTZkOWZkNjBhYmFkYmEzZjdkZGZkNWY1ZWE0ZjFhMGIgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2pzL2RvbS9kb20tZ2V0dGVycy10eXBlLWNoZWNrLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvanMvZG9tL2RvbS1nZXR0ZXJzLXR5cGUtY2hlY2suaHRtbApAQCAtMTYsMTAgKzE2LDEwIEBA
CiAgICAgfSwgIkRPTSBnZXR0ZXIgc2hvdWxkIGJlIGEgZnVuY3Rpb24iKTsKIAogICAgIHRlc3Qo
KCkgPT4gewotICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4geyBn
ZXR0ZXIoKTsgfSwgIkRPTSBnZXR0ZXIgdGhyb3dzIGFuIGVycm9yIHdpdGggdW5kZWZpbmVkIik7
Ci0gICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiB7IGdldHRlci5j
YWxsKG51bGwpOyB9LCAiRE9NIGdldHRlciB0aHJvd3MgYW4gZXJyb3Igd2l0aCBudWxsIik7Ci0g
ICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiB7IGdldHRlci5jYWxs
KHt9KTsgfSwgIkRPTSBnZXR0ZXIgdGhyb3dzIGFuIGVycm9yIHdpdGggdW5yZWxhdGVkIG9iamVj
dCIpOwotICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4geyBnZXR0
ZXIuY2FsbChkb2N1bWVudC5jcmVhdGVUZXh0KCJIZWxsbyIpKTsgfSwgIkRPTSBnZXR0ZXIgdGhy
b3dzIGFuIGVycm9yIHdpdGggdW5yZWxhdGVkIERPTSBvYmplY3QiKTsKKyAgICAgICAgYXNzZXJ0
X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IHsgZ2V0dGVyKCk7IH0sICJET00gZ2V0dGVyIHRo
cm93cyBhbiBlcnJvciB3aXRoIHVuZGVmaW5lZCIpOworICAgICAgICBhc3NlcnRfdGhyb3dzX2pz
KFR5cGVFcnJvciwgKCkgPT4geyBnZXR0ZXIuY2FsbChudWxsKTsgfSwgIkRPTSBnZXR0ZXIgdGhy
b3dzIGFuIGVycm9yIHdpdGggbnVsbCIpOworICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVF
cnJvciwgKCkgPT4geyBnZXR0ZXIuY2FsbCh7fSk7IH0sICJET00gZ2V0dGVyIHRocm93cyBhbiBl
cnJvciB3aXRoIHVucmVsYXRlZCBvYmplY3QiKTsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhU
eXBlRXJyb3IsICgpID0+IHsgZ2V0dGVyLmNhbGwoZG9jdW1lbnQuY3JlYXRlVGV4dCgiSGVsbG8i
KSk7IH0sICJET00gZ2V0dGVyIHRocm93cyBhbiBlcnJvciB3aXRoIHVucmVsYXRlZCBET00gb2Jq
ZWN0Iik7CiAgICAgfSwgIkRPTSBnZXR0ZXIgdGhyb3dzIGFuIGVycm9yIHdpdGggdW5yZWxhdGVk
IHZhbHVlcyIpOwogCiAgICAgdGVzdCgoKSA9PiB7CkBAIC0zMiwxNCArMzIsMTQgQEAKICAgICAg
ICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgInNjcm9sbFRvcCIsIHsKICAgICAgICAg
ICAgIGdldDogZ2V0dGVyCiAgICAgICAgIH0pOwotICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBU
eXBlRXJyb3IoKSwgKCkgPT4geyBvYmplY3Quc2Nyb2xsVG9wOyB9KTsKKyAgICAgICAgYXNzZXJ0
X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IHsgb2JqZWN0LnNjcm9sbFRvcDsgfSk7CiAgICAg
fSwgIkRPTSBnZXR0ZXIgYWNjZXNzIHRocm93cyBhbiBlcnJvciB3aXRoIHVucmVsYXRlZCBvYmpl
Y3QiKTsKIAogICAgIHRlc3QoKCkgPT4gewogICAgICAgICB2YXIgb2JqZWN0ID0gewogICAgICAg
ICAgICAgX19wcm90b19fOiBFbGVtZW50LnByb3RvdHlwZQogICAgICAgICB9OwotICAgICAgICBh
c3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4geyBvYmplY3Quc2Nyb2xsVG9wOyB9
KTsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IHsgb2JqZWN0LnNj
cm9sbFRvcDsgfSk7CiAgICAgfSwgIkRPTSBnZXR0ZXIgYWNjZXNzIHRocm91Z2ggRWxlbWVudC5w
cm90b3R5cGUgdGhyb3dzIGFuIGVycm9yIHdpdGggdW5yZWxhdGVkIG9iamVjdCIpOwogPC9zY3Jp
cHQ+CiA8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vbGVnYWN5LXBsYXRm
b3JtLW9iamVjdC1kZWZpbmVPd25Qcm9wZXJ0eS5odG1sIGIvTGF5b3V0VGVzdHMvanMvZG9tL2xl
Z2FjeS1wbGF0Zm9ybS1vYmplY3QtZGVmaW5lT3duUHJvcGVydHkuaHRtbAppbmRleCBkNGE5MmJj
NzIzMmZlMDVkYjE5MGM3NjJkY2FiNDIwZDMxOGZiMjY1Li40NWZmNWVhYzdlMmIzZTExZmRkN2Rl
ZDhlMTg2MDA5MGU1NDkxYTBhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9kb20vbGVnYWN5
LXBsYXRmb3JtLW9iamVjdC1kZWZpbmVPd25Qcm9wZXJ0eS5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2pzL2RvbS9sZWdhY3ktcGxhdGZvcm0tb2JqZWN0LWRlZmluZU93blByb3BlcnR5Lmh0bWwKQEAg
LTUyLDcgKzUyLDcgQEAKICAgICAgICAgZWxlbWVudC5kYXRhc2V0WyJhIl0gPSAidmFsdWUxIjsK
ICAgICAgICAgZWxlbWVudC5kYXRhc2V0WyJiIl0gPSAidmFsdWUyIjsKICAgICAgICAgCi0gICAg
ICAgIGFzc2VydF90aHJvd3MoIlN5bnRheEVycm9yIiwgKCkgPT4geworICAgICAgICBhc3NlcnRf
dGhyb3dzX2RvbSgiU3ludGF4RXJyb3IiLCAoKSA9PiB7CiAgICAgICAgICAgICBPYmplY3QuZGVm
aW5lUHJvcGVydHkoZWxlbWVudC5kYXRhc2V0LCAiLWludmFsaWQiLCB7IHZhbHVlOiAidmFsdWUz
IiB9KTsgICAgICAgICAgICAKICAgICAgICAgfSk7CiAgICAgICAgIGFzc2VydF9ub3RfZXF1YWxz
KGVsZW1lbnQuZGF0YXNldFsiLWludmFsaWQiXSwgJ3ZhbHVlMycpOwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvanMvZG9tL3Bvc3QtbWVzc2FnZS1zeW1ib2wuaHRtbCBiL0xheW91dFRlc3RzL2pz
L2RvbS9wb3N0LW1lc3NhZ2Utc3ltYm9sLmh0bWwKaW5kZXggN2ExY2UwMGMzOWQ0ZWM4ZmVkMjY0
ZDZlNzNhNTkzNDU3NWIyNzZhZC4uYmNiNjY4YTU0MThjZDNlYWQ2MGU0NTFjNjY0NzFmOWY2NjRi
YTEwMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvZG9tL3Bvc3QtbWVzc2FnZS1zeW1ib2wu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20vcG9zdC1tZXNzYWdlLXN5bWJvbC5odG1sCkBA
IC03LDE2ICs3LDE2IEBACiA8Ym9keT4KIDxzY3JpcHQ+CiB0ZXN0KCgpID0+IHsKLSAgICBhc3Nl
cnRfdGhyb3dzKCJEQVRBX0NMT05FX0VSUiIsICgpID0+IHsKKyAgICBhc3NlcnRfdGhyb3dzX2Rv
bSgiREFUQV9DTE9ORV9FUlIiLCAoKSA9PiB7CiAgICAgICAgIHdpbmRvdy5wb3N0TWVzc2FnZShT
eW1ib2woIkNvY29hIiksICIqIik7CiAgICAgfSk7Ci0gICAgYXNzZXJ0X3Rocm93cygiREFUQV9D
TE9ORV9FUlIiLCAoKSA9PiB7CisgICAgYXNzZXJ0X3Rocm93c19kb20oIkRBVEFfQ0xPTkVfRVJS
IiwgKCkgPT4gewogICAgICAgICB3aW5kb3cucG9zdE1lc3NhZ2UoezA6IFN5bWJvbCgiQ29jb2Ei
KX0sICIqIik7CiAgICAgfSk7Ci0gICAgYXNzZXJ0X3Rocm93cygiREFUQV9DTE9ORV9FUlIiLCAo
KSA9PiB7CisgICAgYXNzZXJ0X3Rocm93c19kb20oIkRBVEFfQ0xPTkVfRVJSIiwgKCkgPT4gewog
ICAgICAgICB3aW5kb3cucG9zdE1lc3NhZ2Uoe2hlbGxvOiBTeW1ib2woIkNvY29hIil9LCAiKiIp
OwogICAgIH0pOwotICAgIGFzc2VydF90aHJvd3MoIkRBVEFfQ0xPTkVfRVJSIiwgKCkgPT4gewor
ICAgIGFzc2VydF90aHJvd3NfZG9tKCJEQVRBX0NMT05FX0VSUiIsICgpID0+IHsKICAgICAgICAg
d2luZG93LnBvc3RNZXNzYWdlKFtTeW1ib2woIkNvY29hIildLCAiKiIpOwogICAgIH0pOwogfSwg
IlRlc3RzIHRoYXQgcG9zdGluZyBhIG1lc3NhZ2UgdGhhdCBjb250YWlucyBTeW1ib2xzIGZhaWxz
LiIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL3F1ZXVlLW1pY3JvdGFzay13aW5k
b3cuaHRtbCBiL0xheW91dFRlc3RzL2pzL2RvbS9xdWV1ZS1taWNyb3Rhc2std2luZG93Lmh0bWwK
aW5kZXggNGI1ZTRmOTQ1M2I1MWU2MzY2OTk1N2M2MGM1ZjEwNTZhMDJjZThkNC4uN2E1YzEzN2Yy
NGYwNDdhOGQ3ZmJmMzQ3NzFiMDFmM2ExMjljZGY1OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
anMvZG9tL3F1ZXVlLW1pY3JvdGFzay13aW5kb3cuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9qcy9k
b20vcXVldWUtbWljcm90YXNrLXdpbmRvdy5odG1sCkBAIC03NywzMSArNzcsMzEgQEAgcHJvbWlz
ZV90ZXN0KCgpID0+IHsKIH0sIGBxdWV1ZU1pY3JvdGFzayBhbmQgUHJvbWlzZSB1c2VzIHRoZSBz
YW1lIE1pY3JvdGFzayBxdWV1ZWApOwogCiB0ZXN0KCgpID0+IHsKLSAgICBhc3NlcnRfdGhyb3dz
KG5ldyBUeXBlRXJyb3IsICgpID0+IHsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwg
KCkgPT4gewogICAgICAgICBzZWxmLnF1ZXVlTWljcm90YXNrKCk7CiAgICAgfSk7Ci0gICAgYXNz
ZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yLCAoKSA9PiB7CisgICAgYXNzZXJ0X3Rocm93c19qcyhU
eXBlRXJyb3IsICgpID0+IHsKICAgICAgICAgc2VsZi5xdWV1ZU1pY3JvdGFzayhudWxsKTsKICAg
ICB9KTsKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IsICgpID0+IHsKKyAgICBhc3Nl
cnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gewogICAgICAgICBzZWxmLnF1ZXVlTWljcm90
YXNrKHVuZGVmaW5lZCk7CiAgICAgfSk7Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9y
LCAoKSA9PiB7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IHsKICAgICAg
ICAgc2VsZi5xdWV1ZU1pY3JvdGFzayg0Mik7CiAgICAgfSk7Ci0gICAgYXNzZXJ0X3Rocm93cyhu
ZXcgVHlwZUVycm9yLCAoKSA9PiB7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgp
ID0+IHsKICAgICAgICAgc2VsZi5xdWV1ZU1pY3JvdGFzaygiNDIiKTsKICAgICB9KTsKLSAgICBh
c3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IsICgpID0+IHsKKyAgICBhc3NlcnRfdGhyb3dzX2pz
KFR5cGVFcnJvciwgKCkgPT4gewogICAgICAgICBzZWxmLnF1ZXVlTWljcm90YXNrKHRydWUpOwog
ICAgIH0pOwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvciwgKCkgPT4geworICAgIGFz
c2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiB7CiAgICAgICAgIHNlbGYucXVldWVNaWNy
b3Rhc2soU3ltYm9sKCI0MiIpKTsKICAgICB9KTsKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBl
RXJyb3IsICgpID0+IHsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gewog
ICAgICAgICBzZWxmLnF1ZXVlTWljcm90YXNrKHt9KTsKICAgICB9KTsKLSAgICBhc3NlcnRfdGhy
b3dzKG5ldyBUeXBlRXJyb3IsICgpID0+IHsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJv
ciwgKCkgPT4gewogICAgICAgICBzZWxmLnF1ZXVlTWljcm90YXNrKHsgaGFuZGxlRXZlbnQoKSB7
IH0gfSk7CiAgICAgfSk7CiB9LCBgcXVldWVNaWNyb3Rhc2sgc2hvdWxkIHJlamVjdCBub24tZnVu
Y3Rpb24gYXJndW1lbnRzYCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay9v
cGVyYS9pbnRlcmZhY2VzL1RleHRUcmFja0N1ZS92ZXJ0aWNhbC5odG1sIGIvTGF5b3V0VGVzdHMv
bWVkaWEvdHJhY2svb3BlcmEvaW50ZXJmYWNlcy9UZXh0VHJhY2tDdWUvdmVydGljYWwuaHRtbApp
bmRleCA1MDg0NWFlYmYxMjk0ZWYxZmNhZDZkNDg3ODU1ZTE1MzhjZGYzNTZiLi44ZDIxMDVjODky
YTEzNjU1MzlmYjNjOGE4NjdhNDY1OWM2YmRlYzUyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9t
ZWRpYS90cmFjay9vcGVyYS9pbnRlcmZhY2VzL1RleHRUcmFja0N1ZS92ZXJ0aWNhbC5odG1sCisr
KyBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL29wZXJhL2ludGVyZmFjZXMvVGV4dFRyYWNrQ3Vl
L3ZlcnRpY2FsLmh0bWwKQEAgLTI2LDcgKzI2LDcgQEAgdGVzdChmdW5jdGlvbigpewogICAgIGFz
c2VydF9lcXVhbHMoYzEudmVydGljYWwsICdybCcpOwogICAgIGMxLnZlcnRpY2FsID0gJ2xyJzsK
ICAgICBhc3NlcnRfZXF1YWxzKGMxLnZlcnRpY2FsLCAnbHInKTsKLSAgICBhc3NlcnRfdGhyb3dz
KCdTWU5UQVhfRVJSJywgZnVuY3Rpb24oKSB7CisgICAgYXNzZXJ0X3Rocm93c19kb20oJ1NZTlRB
WF9FUlInLCBmdW5jdGlvbigpIHsKICAgICAgICAgYzEudmVydGljYWwgPSAncmxcdTAwMDAnOwog
ICAgIH0pOwogfSwgZG9jdW1lbnQudGl0bGUrJywgc2NyaXB0LWNyZWF0ZWQgY3VlJyk7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay9vcGVyYS9yZXNvdXJjZXMvaWRsaGFybmVz
cy5qcyBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL29wZXJhL3Jlc291cmNlcy9pZGxoYXJuZXNz
LmpzCmluZGV4IGI2MjdiNDBmOGZjYThkODNjYWRjOTZkMzc4MWUxMDFkMzNlNzJkNzguLjcwMDcw
YTFjY2MwNDhlZWJjNDQyYTQzNDFmZjFjOTQyYzljOGYyYTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL21lZGlhL3RyYWNrL29wZXJhL3Jlc291cmNlcy9pZGxoYXJuZXNzLmpzCisrKyBiL0xheW91
dFRlc3RzL21lZGlhL3RyYWNrL29wZXJhL3Jlc291cmNlcy9pZGxoYXJuZXNzLmpzCkBAIC05NDQs
MTEgKzk0NCwxMSBAQCBJZGxFeGNlcHRpb24ucHJvdG90eXBlLnRlc3RfbWVtYmVycyA9IGZ1bmN0
aW9uKCkKICAgICAgICAgICAgICAgICAvLyB0aGUgZXhjZXB0aW9uIG9uIHdoaWNoIHRoZSBleGNl
cHRpb24gZmllbGQgd2FzIGRlY2xhcmVkLAogICAgICAgICAgICAgICAgIC8vIHRoZW4gdGhyb3cg
YSBUeXBlRXJyb3IuIgogICAgICAgICAgICAgICAgIC8vIFRPRE86IFRlc3Qgb24gYSBwbGF0Zm9y
bSBvYmplY3QgcmVwcmVzZW50aW5nIGFuIGV4Y2VwdGlvbi4KLSAgICAgICAgICAgICAgICBhc3Nl
cnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKQorICAgICAgICAgICAgICAgIGFz
c2VydF90aHJvd3NfanMoVHlwZUVycm9yLCBmdW5jdGlvbigpCiAgICAgICAgICAgICAgICAgewog
ICAgICAgICAgICAgICAgICAgICB3aW5kb3dbdGhpcy5uYW1lXS5wcm90b3R5cGVbbWVtYmVyLm5h
bWVdOwogICAgICAgICAgICAgICAgIH0uYmluZCh0aGlzKSwgImdldHRpbmcgcHJvcGVydHkgb24g
cHJvdG90eXBlIG9iamVjdCBtdXN0IHRocm93IFR5cGVFcnJvciIpOwotICAgICAgICAgICAgICAg
IGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpCisgICAgICAgICAgICAg
ICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkKICAgICAgICAgICAgICAg
ICB7CiAgICAgICAgICAgICAgICAgICAgIGRlc2MuZ2V0LmNhbGwoe30pOwogICAgICAgICAgICAg
ICAgIH0uYmluZCh0aGlzKSwgImNhbGxpbmcgZ2V0dGVyIG9uIHdyb25nIG9iamVjdCB0eXBlIG11
c3QgdGhyb3cgVHlwZUVycm9yIik7CkBAIC0xMDgzLDExICsxMDgzLDExIEBAIElkbEludGVyZmFj
ZS5wcm90b3R5cGUudGVzdF9zZWxmID0gZnVuY3Rpb24oKQogICAgICAgICAgICAgLy8KICAgICAg
ICAgICAgIC8vICJJZiBJIHdhcyBub3QgZGVjbGFyZWQgd2l0aCBhIFtDb25zdHJ1Y3Rvcl0gZXh0
ZW5kZWQgYXR0cmlidXRlLAogICAgICAgICAgICAgLy8gdGhlbiB0aHJvdyBhIFR5cGVFcnJvci4i
Ci0gICAgICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKQor
ICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkKICAgICAg
ICAgICAgIHsKICAgICAgICAgICAgICAgICB3aW5kb3dbdGhpcy5uYW1lXSgpOwogICAgICAgICAg
ICAgfS5iaW5kKHRoaXMpLCAiaW50ZXJmYWNlIG9iamVjdCBkaWRuJ3QgdGhyb3cgVHlwZUVycm9y
IHdoZW4gY2FsbGVkIGFzIGEgZnVuY3Rpb24iKTsKLSAgICAgICAgICAgIGFzc2VydF90aHJvd3Mo
bmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpCisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2pz
KFR5cGVFcnJvciwgZnVuY3Rpb24oKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIG5l
dyB3aW5kb3dbdGhpcy5uYW1lXSgpOwogICAgICAgICAgICAgfS5iaW5kKHRoaXMpLCAiaW50ZXJm
YWNlIG9iamVjdCBkaWRuJ3QgdGhyb3cgVHlwZUVycm9yIHdoZW4gY2FsbGVkIGFzIGEgY29uc3Ry
dWN0b3IiKTsKQEAgLTEzMTEsNyArMTMxMSw3IEBAIElkbEludGVyZmFjZS5wcm90b3R5cGUudGVz
dF9tZW1iZXJzID0gZnVuY3Rpb24oKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ2ludGVyZmFjZSAiJyArIHRoaXMubmFtZSArICciIGRvZXMgbm90IGhhdmUgb3duIHByb3Bl
cnR5ICJwcm90b3R5cGUiJyk7CiAKICAgICAgICAgICAgICAgICAvLyBUT0RPOiBOZWVkcyB0byB0
ZXN0IGZvciBMZW5pZW50VGhpcy4KLSAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBU
eXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19q
cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICB3aW5kb3dbdGhp
cy5uYW1lXS5wcm90b3R5cGVbbWVtYmVyLm5hbWVdOwogICAgICAgICAgICAgICAgIH0uYmluZCh0
aGlzKSwgImdldHRpbmcgcHJvcGVydHkgb24gcHJvdG90eXBlIG9iamVjdCBtdXN0IHRocm93IFR5
cGVFcnJvciIpOwogCkBAIC0xMzg0LDcgKzEzODQsNyBAQCBJZGxJbnRlcmZhY2UucHJvdG90eXBl
LnRlc3RfbWVtYmVycyA9IGZ1bmN0aW9uKCkKICAgICAgICAgICAgICAgICAvLwogICAgICAgICAg
ICAgICAgIC8vIFRPRE86IFdlIGN1cnJlbnRseSBpZ25vcmUgdGhlIHN0YXRpYyBhbmQgW0ltcGxp
Y2l0VGhpc10KICAgICAgICAgICAgICAgICAvLyBjYXNlcy4KLSAgICAgICAgICAgICAgICBhc3Nl
cnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAg
YXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAg
ICAgICB3aW5kb3dbdGhpcy5uYW1lXS5wcm90b3R5cGVbbWVtYmVyLm5hbWVdLmFwcGx5KG51bGws
IGFyZ3MpOwogICAgICAgICAgICAgICAgIH0sICJjYWxsaW5nIG9wZXJhdGlvbiB3aXRoIHRoaXMg
PSBudWxsIGRpZG4ndCB0aHJvdyBUeXBlRXJyb3IiKTsKIApAQCAtMTM5Myw3ICsxMzkzLDcgQEAg
SWRsSW50ZXJmYWNlLnByb3RvdHlwZS50ZXN0X21lbWJlcnMgPSBmdW5jdGlvbigpCiAgICAgICAg
ICAgICAgICAgLy8KICAgICAgICAgICAgICAgICAvLyBUT0RPOiBUZXN0IGEgcGxhdGZvcm0gb2Jq
ZWN0IHRoYXQgaW1wbGVtZW50cyBzb21lIG90aGVyCiAgICAgICAgICAgICAgICAgLy8gaW50ZXJm
YWNlLiAgKEhhdmUgdG8gYmUgc3VyZSB0byBnZXQgaW5oZXJpdGFuY2UgcmlnaHQuKQotICAgICAg
ICAgICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CiAg
ICAgICAgICAgICAgICAgICAgIHdpbmRvd1t0aGlzLm5hbWVdLnByb3RvdHlwZVttZW1iZXIubmFt
ZV0uYXBwbHkoe30sIGFyZ3MpOwogICAgICAgICAgICAgICAgIH0sICJjYWxsaW5nIG9wZXJhdGlv
biB3aXRoIHRoaXMgPSB7fSBkaWRuJ3QgdGhyb3cgVHlwZUVycm9yIik7CiAgICAgICAgICAgICB9
LmJpbmQodGhpcyksIHRoaXMubmFtZSArICIgaW50ZXJmYWNlOiBvcGVyYXRpb24gIiArIG1lbWJl
ci5uYW1lICsKQEAgLTE1NjUsNyArMTU2NSw3IEBAIElkbEludGVyZmFjZS5wcm90b3R5cGUudGVz
dF9pbnRlcmZhY2Vfb2YgPSBmdW5jdGlvbihkZXNjLCBvYmosIGV4Y2VwdGlvbiwgZXhwZWN0CiAg
ICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3MobmV3
IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpCisgICAgICAgICAgICAgICAgICAgIGFzc2VydF90aHJv
d3NfanMoVHlwZUVycm9yLCBmdW5jdGlvbigpCiAgICAgICAgICAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgIG9ialttZW1iZXIubmFtZV0uYXBwbHkob2JqLCBhcmdzKTsKICAg
ICAgICAgICAgICAgICAgICAgfS5iaW5kKHRoaXMpLCAiQ2FsbGVkIHdpdGggIiArIGkgKyAiIGFy
Z3VtZW50cyIpOwpAQCAtMTYzNCw3ICsxNjM0LDcgQEAgZnVuY3Rpb24gZG9faW50ZXJmYWNlX2F0
dHJpYnV0ZV9hc3NlcnRzKG9iaiwgbWVtYmVyKQogICAgIGFzc2VydF9lcXVhbHModHlwZW9mIGRl
c2MuZ2V0LCAiZnVuY3Rpb24iLCAiZ2V0dGVyIG11c3QgYmUgRnVuY3Rpb24iKTsKICAgICBhc3Nl
cnRfZXF1YWxzKGRlc2MuZ2V0Lmxlbmd0aCwgMCwgImdldHRlciBsZW5ndGggbXVzdCBiZSAwIik7
CiAgICAgLy8gVE9ETzogQWNjb3VudCBmb3IgTGVuaWVudFRoaXMKLSAgICBhc3NlcnRfdGhyb3dz
KG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKQorICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVy
cm9yLCBmdW5jdGlvbigpCiAgICAgewogICAgICAgICBkZXNjLmdldC5jYWxsKHt9KTsKICAgICB9
LmJpbmQodGhpcyksICJjYWxsaW5nIGdldHRlciBvbiB3cm9uZyBvYmplY3QgdHlwZSBtdXN0IHRo
cm93IFR5cGVFcnJvciIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdGV4
dHRyYWNrY3VlL3RleHR0cmFja2N1ZS1jb25zdHJ1Y3Rvci5odG1sIGIvTGF5b3V0VGVzdHMvbWVk
aWEvdHJhY2svdGV4dHRyYWNrY3VlL3RleHR0cmFja2N1ZS1jb25zdHJ1Y3Rvci5odG1sCmluZGV4
IDRiNTQwZTQ2ZmUwNGUxMmQyMGRlNWI0ZDhmOTQ2MmViY2UzODE5MzAuLjllM2E2NmVlZTMwZGIw
Mjk4YmNjMTg0MDFiY2Q4MDAyYzBlODNhNDQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL21lZGlh
L3RyYWNrL3RleHR0cmFja2N1ZS90ZXh0dHJhY2tjdWUtY29uc3RydWN0b3IuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9tZWRpYS90cmFjay90ZXh0dHJhY2tjdWUvdGV4dHRyYWNrY3VlLWNvbnN0cnVj
dG9yLmh0bWwKQEAgLTcsMTMgKzcsMTMgQEAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCiAgICAgaW50
ZXJuYWxzLnNldHRpbmdzLnNldEdlbmVyaWNDdWVBUElFbmFibGVkKHRydWUpOwogCiB0ZXN0KCB0
ZXN0ID0+IHsKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IsIF8gPT4geyBuZXcgVGV4
dFRyYWNrQ3VlKDAsIDEwLCAiIikgfSk7Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9y
LCBfID0+IHsgbmV3IFRleHRUcmFja0N1ZSgwLCAxMCwgeyB9KSB9KTsKLSAgICBhc3NlcnRfdGhy
b3dzKG5ldyBUeXBlRXJyb3IsIF8gPT4geyBuZXcgVGV4dFRyYWNrQ3VlKDAsIDEwLCBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdkaXYnKSkgfSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJy
b3IsIF8gPT4geyBuZXcgVGV4dFRyYWNrQ3VlKDAsIDEwLCAiIikgfSk7CisgICAgYXNzZXJ0X3Ro
cm93c19qcyhUeXBlRXJyb3IsIF8gPT4geyBuZXcgVGV4dFRyYWNrQ3VlKDAsIDEwLCB7IH0pIH0p
OworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCBfID0+IHsgbmV3IFRleHRUcmFja0N1
ZSgwLCAxMCwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykpIH0pOwogfSwgJ1RleHRUcmFj
a0N1ZSBzaG91bGQgdGhyb3cgIlR5cGVFcnJvciIgaWYgdGhlIGN1ZSBub2RlIGlzIG5vdCBhIGRv
Y3VtZW50RnJhZ21lbnQnKTsKIAogdGVzdCggdGVzdCA9PiB7Ci0gICAgYXNzZXJ0X3Rocm93cygi
SW52YWxpZE5vZGVUeXBlRXJyb3IiLCBfID0+IHsgbmV3IFRleHRUcmFja0N1ZSgwLCAxMCwgZG9j
dW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpKSB9KTsKKyAgICBhc3NlcnRfdGhyb3dzX2Rv
bSgiSW52YWxpZE5vZGVUeXBlRXJyb3IiLCBfID0+IHsgbmV3IFRleHRUcmFja0N1ZSgwLCAxMCwg
ZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpKSB9KTsKIH0sICdUZXh0VHJhY2tDdWUg
c2hvdWxkIHRocm93ICJJbnZhbGlkTm9kZVR5cGVFcnJvciIgaWYgcGFzc2VkIGFuIGludmFsaWQg
ZG9jdW1lbnRGcmFnbWVudCcpOwogCiBmdW5jdGlvbiBjcmVhdGVWYWxpZEN1ZUZyYWdtZW50KCkK
QEAgLTM2LDcgKzM2LDcgQEAgdGVzdCggdGVzdCA9PiB7CiAgICAgbGV0IHZhbGlkQ3VlID0gbmV3
IFRleHRUcmFja0N1ZSgwLCAxMCwgZnJhZ21lbnQpOwogCiAgICAgZnJhZ21lbnQuYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGFibGUnKSk7Ci0gICAgYXNzZXJ0X3Rocm93cygi
SW52YWxpZE5vZGVUeXBlRXJyb3IiLCBfID0+IHsgbmV3IFRleHRUcmFja0N1ZSgwLCAxMCwgZnJh
Z21lbnQpIH0pOworICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlkTm9kZVR5cGVFcnJvciIs
IF8gPT4geyBuZXcgVGV4dFRyYWNrQ3VlKDAsIDEwLCBmcmFnbWVudCkgfSk7CiAKIH0sIGBUZXh0
VHJhY2tDdWUgc2hvdWxkIHRocm93ICJJbnZhbGlkTm9kZVR5cGVFcnJvciIgaWYgZG9jdW1lbnRG
cmFnbWVudCBoYXMgYW4gaW52YWxpZCBub2RlYCk7CiAKQEAgLTQ1LDExICs0NSwxMSBAQCB0ZXN0
KCB0ZXN0ID0+IHsKICAgICBsZXQgdmFsaWRDdWUgPSBuZXcgVGV4dFRyYWNrQ3VlKDAsIDEwLCBm
cmFnbWVudCk7CiAKICAgICBmcmFnbWVudC5maXJzdENoaWxkLnJlbW92ZUF0dHJpYnV0ZSgnY3Vl
YmFja2dyb3VuZCcpCi0gICAgYXNzZXJ0X3Rocm93cygiSW52YWxpZFN0YXRlRXJyb3IiLCBfID0+
IHsgbmV3IFRleHRUcmFja0N1ZSgwLCAxMCwgZnJhZ21lbnQpIH0pOworICAgIGFzc2VydF90aHJv
d3NfZG9tKCJJbnZhbGlkU3RhdGVFcnJvciIsIF8gPT4geyBuZXcgVGV4dFRyYWNrQ3VlKDAsIDEw
LCBmcmFnbWVudCkgfSk7CiAKICAgICBmcmFnbWVudCA9IGNyZWF0ZVZhbGlkQ3VlRnJhZ21lbnQo
KTsKICAgICBmcmFnbWVudC5maXJzdENoaWxkLmZpcnN0Q2hpbGQucmVtb3ZlQXR0cmlidXRlKCdj
dWUnKQotICAgIGFzc2VydF90aHJvd3MoIkludmFsaWRTdGF0ZUVycm9yIiwgXyA9PiB7IG5ldyBU
ZXh0VHJhY2tDdWUoMCwgMTAsIGZyYWdtZW50KSB9KTsKKyAgICBhc3NlcnRfdGhyb3dzX2RvbSgi
SW52YWxpZFN0YXRlRXJyb3IiLCBfID0+IHsgbmV3IFRleHRUcmFja0N1ZSgwLCAxMCwgZnJhZ21l
bnQpIH0pOwogfSwgYFRleHRUcmFja0N1ZSBzaG91bGQgdGhyb3cgIkludmFsaWRTdGF0ZUVycm9y
IiBpZiBkb2N1bWVudEZyYWdtZW50IGRvZXNuJ3QgaGF2ZSAnY3VlYmFja2dyb3VuZCcgYW5kICdj
dWUnIG5vZGVzYCk7CiAKIHRlc3QoIHRlc3QgPT4gewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
bWVkaWEvdHJhY2svdzNjL2ludGVyZmFjZXMvVGV4dFRyYWNrQ3VlL2FsaWduLmh0bWwgYi9MYXlv
dXRUZXN0cy9tZWRpYS90cmFjay93M2MvaW50ZXJmYWNlcy9UZXh0VHJhY2tDdWUvYWxpZ24uaHRt
bAppbmRleCBiZTcwZGMzMzQ3YTNiNzFlYzY3ZGQ5MzBmODIwZTFiNjA0ZTE4OWFmLi4yZjJjY2M3
OTlmYTJhYzMxNTkwYTBjZTU5MTg4MmVjMDlmZDEwMTY5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9tZWRpYS90cmFjay93M2MvaW50ZXJmYWNlcy9UZXh0VHJhY2tDdWUvYWxpZ24uaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay93M2MvaW50ZXJmYWNlcy9UZXh0VHJhY2tDdWUvYWxp
Z24uaHRtbApAQCAtMjEsNyArMjEsNyBAQCB0ZXN0KGZ1bmN0aW9uKCl7CiAgICAgYXNzZXJ0X2Vx
dWFscyhjMS5hbGlnbiwgJ3N0YXJ0Jyk7CiAgICAgYzEuYWxpZ24gPSAnZW5kJzsKICAgICBhc3Nl
cnRfZXF1YWxzKGMxLmFsaWduLCAnZW5kJyk7Ci0gICAgYXNzZXJ0X3Rocm93cygnU1lOVEFYX0VS
UicsIGZ1bmN0aW9uKCkgeworICAgIGFzc2VydF90aHJvd3NfZG9tKCdTWU5UQVhfRVJSJywgZnVu
Y3Rpb24oKSB7CiAgICAgICAgIGMxLmFsaWduID0gJ3N0YXJ0XHUwMDAwJzsKICAgICB9KTsKIH0s
IGRvY3VtZW50LnRpdGxlKycsIHNjcmlwdC1jcmVhdGVkIGN1ZScpOwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvcG9pbnRlci1ldmVudHMtaW1wbGljaXQtY2FwdHVy
ZS1yZWxlYXNlLWV4Y2VwdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3Mv
cG9pbnRlci1ldmVudHMtaW1wbGljaXQtY2FwdHVyZS1yZWxlYXNlLWV4Y2VwdGlvbi5odG1sCmlu
ZGV4IDRkNDhlMmY5YWQ4NWMyNmJmYThhZWJjYjRjZjYzMzJlM2JhYzc3MjguLjQ2YjY0MjNhZmJi
ZmYxNGM4ZGQ3NWI2M2NhODY0OTY0M2RiM2MzZmEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Bv
aW50ZXJldmVudHMvaW9zL3BvaW50ZXItZXZlbnRzLWltcGxpY2l0LWNhcHR1cmUtcmVsZWFzZS1l
eGNlcHRpb24uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy9wb2ludGVy
LWV2ZW50cy1pbXBsaWNpdC1jYXB0dXJlLXJlbGVhc2UtZXhjZXB0aW9uLmh0bWwKQEAgLTE1LDcg
KzE1LDcgQEAKIHRhcmdldF90ZXN0KCh0YXJnZXQsIHRlc3QpID0+IHsKICAgICB0YXJnZXQuYWRk
RXZlbnRMaXN0ZW5lcigicG9pbnRlcmRvd24iLCBldmVudCA9PiB7CiAgICAgICAgIGFzc2VydF90
cnVlKHRhcmdldC5oYXNQb2ludGVyQ2FwdHVyZShldmVudC5wb2ludGVySWQpKTsKLSAgICAgICAg
YXNzZXJ0X3Rocm93cygiTm90Rm91bmRFcnJvciIsICgpID0+IHRhcmdldC5yZWxlYXNlUG9pbnRl
ckNhcHR1cmUoZXZlbnQucG9pbnRlcklkICsgMSkpOworICAgICAgICBhc3NlcnRfdGhyb3dzX2Rv
bSgiTm90Rm91bmRFcnJvciIsICgpID0+IHRhcmdldC5yZWxlYXNlUG9pbnRlckNhcHR1cmUoZXZl
bnQucG9pbnRlcklkICsgMSkpOwogICAgICAgICBhc3NlcnRfdHJ1ZSh0YXJnZXQuaGFzUG9pbnRl
ckNhcHR1cmUoZXZlbnQucG9pbnRlcklkKSk7CiAgICAgfSk7CiAgICAgdWkudGFwKHsgeDogNTAs
IHk6IDUwIH0pLnRoZW4oKCkgPT4gdGVzdC5kb25lKCkpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcG9pbnRlcmV2ZW50cy9pb3MvcG9pbnRlci1ldmVudHMtc2V0LXBvaW50ZXItY2FwdHVyZS1l
eGNlcHRpb25zLmh0bWwgYi9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy9wb2ludGVyLWV2
ZW50cy1zZXQtcG9pbnRlci1jYXB0dXJlLWV4Y2VwdGlvbnMuaHRtbAppbmRleCBlMzI1NjE1MWUy
YTFjNjdjMTc4ZWVlNzZiZDI3ZDVjODM2ZTJmOGM4Li40ZmQwMDhkOGExYWFjYTkyMTI5ZWNmYTdj
MzAyZGRkZDAyZDRhOWI4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lv
cy9wb2ludGVyLWV2ZW50cy1zZXQtcG9pbnRlci1jYXB0dXJlLWV4Y2VwdGlvbnMuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy9wb2ludGVyLWV2ZW50cy1zZXQtcG9pbnRl
ci1jYXB0dXJlLWV4Y2VwdGlvbnMuaHRtbApAQCAtMTMsMTEgKzEzLDExIEBACiAndXNlIHN0cmlj
dCc7CiAKIHRhcmdldF90ZXN0KCh0YXJnZXQsIHRlc3QpID0+IHsKLSAgICBhc3NlcnRfdGhyb3dz
KCJOb3RGb3VuZEVycm9yIiwgKCkgPT4gZG9jdW1lbnQuYm9keS5zZXRQb2ludGVyQ2FwdHVyZSgx
MCksICJDYWxsaW5nIHNldFBvaW50ZXJDYXB0dXJlKCkgd2l0aCBhbiBpbnZhbGlkIHBvaW50ZXIg
aWQgdGhyb3dzIGEgTm90Rm91bmRFcnJvciBleGNlcHRpb24uIik7CisgICAgYXNzZXJ0X3Rocm93
c19kb20oIk5vdEZvdW5kRXJyb3IiLCAoKSA9PiBkb2N1bWVudC5ib2R5LnNldFBvaW50ZXJDYXB0
dXJlKDEwKSwgIkNhbGxpbmcgc2V0UG9pbnRlckNhcHR1cmUoKSB3aXRoIGFuIGludmFsaWQgcG9p
bnRlciBpZCB0aHJvd3MgYSBOb3RGb3VuZEVycm9yIGV4Y2VwdGlvbi4iKTsKIAogICAgIHRhcmdl
dC5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVyZG93biIsIGV2ZW50ID0+IHsKICAgICAgICAgYXNz
ZXJ0X3RydWUodGFyZ2V0Lmhhc1BvaW50ZXJDYXB0dXJlKGV2ZW50LnBvaW50ZXJJZCkpOwotICAg
ICAgICBhc3NlcnRfdGhyb3dzKCJJbnZhbGlkU3RhdGVFcnJvciIsICgpID0+IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpLnNldFBvaW50ZXJDYXB0dXJlKGV2ZW50LnBvaW50ZXJJZCksICJD
YWxsaW5nIHNldFBvaW50ZXJDYXB0dXJlKCkgd2l0aCBhIHZhbGlkIHBvaW50ZXIgaWQgb24gYSBk
aXNjb25uZWN0ZWQgZWxlbWVudCB0aHJvd3MgYW4gSW52YWxpZFN0YXRlRXJyb3IgZXhjZXB0aW9u
LiIpOworICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiSW52YWxpZFN0YXRlRXJyb3IiLCAoKSA9
PiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKS5zZXRQb2ludGVyQ2FwdHVyZShldmVudC5w
b2ludGVySWQpLCAiQ2FsbGluZyBzZXRQb2ludGVyQ2FwdHVyZSgpIHdpdGggYSB2YWxpZCBwb2lu
dGVyIGlkIG9uIGEgZGlzY29ubmVjdGVkIGVsZW1lbnQgdGhyb3dzIGFuIEludmFsaWRTdGF0ZUVy
cm9yIGV4Y2VwdGlvbi4iKTsKICAgICB9KTsKICAgICB1aS50YXAoeyB4OiA1MCwgeTogNTAgfSku
dGhlbigoKSA9PiB0ZXN0LmRvbmUoKSk7CiB9LCAiVGhlIHNldFBvaW50ZXJDYXB0dXJlKCkgbWV0
aG9kIGNhbiB0aHJvdy4iKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BvaW50ZXJldmVudHMv
cG9pbnRlci1pZC1jcmFzaC5odG1sIGIvTGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9wb2ludGVy
LWlkLWNyYXNoLmh0bWwKaW5kZXggNzA2M2RiNGY4OWUzNTZmZGM4MWVjNDA0YTY0YmIyOTllY2Y0
YmJhZS4uMmRkY2U3MDgzMDFjYWFlYzdjMjZiNTY4M2JkZjRjZmJhZDdmZGY2NCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9wb2ludGVyLWlkLWNyYXNoLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9wb2ludGVyLWlkLWNyYXNoLmh0bWwKQEAgLTE0LDgg
KzE0LDggQEAgdGVzdCgoKSA9PiB7CiAgICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmJvZHku
YXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpOwogICAgIGZvciAobGV0
IHZhbHVlIG9mIFswLCBOdW1iZXIuTUFYX1ZBTFVFLCBOdW1iZXIuTUlOX1ZBTFVFLCBOdW1iZXIu
TUFYX1ZBTFVFICsgMSwgTnVtYmVyLk1JTl9WQUxVRSAtIDFdKSB7CiAgICAgICAgIGVsZW1lbnQu
aGFzUG9pbnRlckNhcHR1cmUodmFsdWUpOwotICAgICAgICBhc3NlcnRfdGhyb3dzKCJOb3RGb3Vu
ZEVycm9yIiwgKCkgPT4gZWxlbWVudC5zZXRQb2ludGVyQ2FwdHVyZSh2YWx1ZSkpCi0gICAgICAg
IGFzc2VydF90aHJvd3MoIk5vdEZvdW5kRXJyb3IiLCAoKSA9PiBlbGVtZW50LnJlbGVhc2VQb2lu
dGVyQ2FwdHVyZSh2YWx1ZSkpCisgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJOb3RGb3VuZEVy
cm9yIiwgKCkgPT4gZWxlbWVudC5zZXRQb2ludGVyQ2FwdHVyZSh2YWx1ZSkpCisgICAgICAgIGFz
c2VydF90aHJvd3NfZG9tKCJOb3RGb3VuZEVycm9yIiwgKCkgPT4gZWxlbWVudC5yZWxlYXNlUG9p
bnRlckNhcHR1cmUodmFsdWUpKQogICAgIH0KICAgICBlbGVtZW50LnJlbW92ZSgpOwogfSwgIkNo
ZWNraW5nIDAgY2FuIGJlIHVzZWQgYXMgYSBQb2ludGVyIElELiIpOwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcmVzb3VyY2VzL2lkbGhhcm5lc3MuanMgYi9MYXlvdXRUZXN0cy9yZXNvdXJjZXMv
aWRsaGFybmVzcy5qcwppbmRleCAyNWI5YWY1YzNlNzlkY2NkMGIxMjIyMzViOTBkNjAwMDZhMzYz
ZGVlLi42YWVjMDJlM2FiZTA2YjIwZDExYmI0NmJmZDViNzQyMzI2ODUxYzg2IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvaWRsaGFybmVzcy5qcworKysgYi9MYXlvdXRUZXN0cy9y
ZXNvdXJjZXMvaWRsaGFybmVzcy5qcwpAQCAtMSwxNCArMSw0IEBACi0vKgotRGlzdHJpYnV0ZWQg
dW5kZXIgYm90aCB0aGUgVzNDIFRlc3QgU3VpdGUgTGljZW5zZSBbMV0gYW5kIHRoZSBXM0MKLTMt
Y2xhdXNlIEJTRCBMaWNlbnNlIFsyXS4gVG8gY29udHJpYnV0ZSB0byBhIFczQyBUZXN0IFN1aXRl
LCBzZWUgdGhlCi1wb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KLQotWzFdIGh0
dHA6Ly93d3cudzMub3JnL0NvbnNvcnRpdW0vTGVnYWwvMjAwOC8wNC10ZXN0c3VpdGUtbGljZW5z
ZQotWzJdIGh0dHA6Ly93d3cudzMub3JnL0NvbnNvcnRpdW0vTGVnYWwvMjAwOC8wMy1ic2QtbGlj
ZW5zZQotWzNdIGh0dHA6Ly93d3cudzMub3JnLzIwMDQvMTAvMjctdGVzdGNhc2VzCi0qLwotCi0v
KiBGb3IgdXNlciBkb2N1bWVudGF0aW9uIHNlZSBkb2NzL2lkbGhhcm5lc3MubWQgKi8KKy8qIEZv
ciB1c2VyIGRvY3VtZW50YXRpb24gc2VlIGRvY3MvX3dyaXRpbmctdGVzdHMvaWRsaGFybmVzcy5t
ZCAqLwogCiAvKioKICAqIE5vdGVzIGZvciBwZW9wbGUgd2hvIHdhbnQgdG8gZWRpdCB0aGlzIGZp
bGUgKG5vdCBqdXN0IHVzZSBpdCBhcyBhIGxpYnJhcnkpOgpAQCAtNDgsMjAgKzM4LDMwIEBAIHBv
bGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICovCiAoZnVuY3Rpb24oKXsKICJ1
c2Ugc3RyaWN0IjsKKy8vIFN1cHBvcnQgc3Vic2V0VGVzdEJ5S2V5IGZyb20gL2NvbW1vbi9zdWJz
ZXQtdGVzdHMtYnkta2V5LmpzLCBidXQgbWFrZSBpdCBvcHRpb25hbAoraWYgKCEoJ3N1YnNldFRl
c3RCeUtleScgaW4gc2VsZikpIHsKKyAgICBzZWxmLnN1YnNldFRlc3RCeUtleSA9IGZ1bmN0aW9u
KGtleSwgY2FsbGJhY2ssIC4uLmFyZ3MpIHsKKyAgICAgIHJldHVybiBjYWxsYmFjayguLi5hcmdz
KTsKKyAgICB9CisgICAgc2VsZi5zaG91bGRSdW5TdWJUZXN0ID0gKCkgPT4gdHJ1ZTsKK30KIC8v
LyBIZWxwZXJzIC8vLwogZnVuY3Rpb24gY29uc3RWYWx1ZSAoY250KQotLy9AewogewogICAgIGlm
IChjbnQudHlwZSA9PT0gIm51bGwiKSByZXR1cm4gbnVsbDsKICAgICBpZiAoY250LnR5cGUgPT09
ICJOYU4iKSByZXR1cm4gTmFOOwogICAgIGlmIChjbnQudHlwZSA9PT0gIkluZmluaXR5IikgcmV0
dXJuIGNudC5uZWdhdGl2ZSA/IC1JbmZpbml0eSA6IEluZmluaXR5OworICAgIGlmIChjbnQudHlw
ZSA9PT0gIm51bWJlciIpIHJldHVybiArY250LnZhbHVlOwogICAgIHJldHVybiBjbnQudmFsdWU7
CiB9CiAKLS8vQH0KIGZ1bmN0aW9uIG1pbk92ZXJsb2FkTGVuZ3RoKG92ZXJsb2FkcykKLS8vQHsK
IHsKKyAgICAvLyAiVGhlIHZhbHVlIG9mIHRoZSBGdW5jdGlvbiBvYmplY3TigJlzIOKAnGxlbmd0
aOKAnSBwcm9wZXJ0eSBpcworICAgIC8vIGEgTnVtYmVyIGRldGVybWluZWQgYXMgZm9sbG93czoK
KyAgICAvLyAiLiAuIC4KKyAgICAvLyAiUmV0dXJuIHRoZSBsZW5ndGggb2YgdGhlIHNob3J0ZXN0
IGFyZ3VtZW50IGxpc3Qgb2YgdGhlCisgICAgLy8gZW50cmllcyBpbiBTLiIKICAgICBpZiAoIW92
ZXJsb2Fkcy5sZW5ndGgpIHsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQpAQCAtNzQsMTggKzc0
LDQzIEBAIGZ1bmN0aW9uIG1pbk92ZXJsb2FkTGVuZ3RoKG92ZXJsb2FkcykKICAgICAucmVkdWNl
KGZ1bmN0aW9uKG0sIG4pIHsgcmV0dXJuIE1hdGgubWluKG0sIG4pOyB9KTsKIH0KIAotLy9AfQot
ZnVuY3Rpb24gdGhyb3dPclJlamVjdChhX3Rlc3QsIG9wZXJhdGlvbiwgZm4sIG9iaiwgYXJncywg
IG1lc3NhZ2UsIGNiKQotLy9AeworLy8gQSBoZWxwZXIgdG8gZ2V0IHRoZSBnbG9iYWwgb2YgYSBG
dW5jdGlvbiBvYmplY3QuICBUaGlzIGlzIG5lZWRlZCB0byBkZXRlcm1pbmUKKy8vIHdoaWNoIGds
b2JhbCBleGNlcHRpb25zIHRoZSBmdW5jdGlvbiB0aHJvd3Mgd2lsbCBjb21lIGZyb20uCitmdW5j
dGlvbiBnbG9iYWxPZihmdW5jKQoreworICAgIHRyeSB7CisgICAgICAgIC8vIFVzZSB0aGUgZmFj
dCB0aGF0IC5jb25zdHJ1Y3RvciBmb3IgYSBGdW5jdGlvbiBvYmplY3QgaXMgbm9ybWFsbHkgdGhl
CisgICAgICAgIC8vIEZ1bmN0aW9uIGNvbnN0cnVjdG9yLCB3aGljaCBjYW4gYmUgdXNlZCB0byBt
aW50IGEgbmV3IGZ1bmN0aW9uIGluIHRoZQorICAgICAgICAvLyByaWdodCBnbG9iYWwuCisgICAg
ICAgIHJldHVybiBmdW5jLmNvbnN0cnVjdG9yKCJyZXR1cm4gdGhpczsiKSgpOworICAgIH0gY2F0
Y2ggKGUpIHsKKyAgICB9CisgICAgLy8gSWYgdGhlIGFib3ZlIGZhaWxzLCBiZWNhdXNlIHNvbWVv
bmUgZ2F2ZSB1cyBhIG5vbi1mdW5jdGlvbiwgb3IgYSBmdW5jdGlvbgorICAgIC8vIHdpdGggYSB3
ZWlyZCBwcm90byBjaGFpbiBvciB3ZWlyZCAuY29uc3RydWN0b3IgcHJvcGVydHksIGp1c3QgZmFs
bCBiYWNrCisgICAgLy8gdG8gJ3NlbGYnLgorICAgIHJldHVybiBzZWxmOworfQorCisvLyBodHRw
czovL2VzZGlzY3Vzcy5vcmcvdG9waWMvaXNjb25zdHJ1Y3RvciNjb250ZW50LTExCitmdW5jdGlv
biBpc0NvbnN0cnVjdG9yKG8pIHsKKyAgICB0cnkgeworICAgICAgICBuZXcgKG5ldyBQcm94eShv
LCB7Y29uc3RydWN0OiAoKSA9PiAoe30pfSkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
IGNhdGNoKGUpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworZnVuY3Rpb24g
dGhyb3dPclJlamVjdChhX3Rlc3QsIG9wZXJhdGlvbiwgZm4sIG9iaiwgYXJncywgbWVzc2FnZSwg
Y2IpCiB7CiAgICAgaWYgKG9wZXJhdGlvbi5pZGxUeXBlLmdlbmVyaWMgIT09ICJQcm9taXNlIikg
ewotICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7Cisg
ICAgICAgIGFzc2VydF90aHJvd3NfanMoZ2xvYmFsT2YoZm4pLlR5cGVFcnJvciwgZnVuY3Rpb24o
KSB7CiAgICAgICAgICAgICBmbi5hcHBseShvYmosIGFyZ3MpOwogICAgICAgICB9LCBtZXNzYWdl
KTsKICAgICAgICAgY2IoKTsKICAgICB9IGVsc2UgewogICAgICAgICB0cnkgewotICAgICAgICAg
ICAgcHJvbWlzZV9yZWplY3RzKGFfdGVzdCwgbmV3IFR5cGVFcnJvcigpLCBmbi5hcHBseShvYmos
IGFyZ3MpKS50aGVuKGNiLCBjYik7CisgICAgICAgICAgICBwcm9taXNlX3JlamVjdHNfanMoYV90
ZXN0LCBUeXBlRXJyb3IsIGZuLmFwcGx5KG9iaiwgYXJncyksIG1lc3NhZ2UpLnRoZW4oY2IsIGNi
KTsKICAgICAgICAgfSBjYXRjaCAoZSl7CiAgICAgICAgICAgICBhX3Rlc3Quc3RlcChmdW5jdGlv
bigpIHsKICAgICAgICAgICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCJUaHJvd3MgXCIiICsgZSAr
ICJcIiBpbnN0ZWFkIG9mIHJlamVjdGluZyBwcm9taXNlIik7CkBAIC05NSw5ICsxMjAsNyBAQCBm
dW5jdGlvbiB0aHJvd09yUmVqZWN0KGFfdGVzdCwgb3BlcmF0aW9uLCBmbiwgb2JqLCBhcmdzLCAg
bWVzc2FnZSwgY2IpCiAgICAgfQogfQogCi0vL0B9CiBmdW5jdGlvbiBhd2FpdE5DYWxsYmFja3Mo
biwgY2IsIGN0eCkKLS8vQHsKIHsKICAgICB2YXIgY291bnRlciA9IDA7CiAgICAgcmV0dXJuIGZ1
bmN0aW9uKCkgewpAQCAtMTA4LDI0ICsxMzEsMjcgQEAgZnVuY3Rpb24gYXdhaXROQ2FsbGJhY2tz
KG4sIGNiLCBjdHgpCiAgICAgfTsKIH0KIAotLy9AfQotdmFyIGZyb3VuZCA9Ci0vL0B7Ci0oZnVu
Y3Rpb24oKXsKLSAgICBpZiAoTWF0aC5mcm91bmQpIHJldHVybiBNYXRoLmZyb3VuZDsKKy8vLyBJ
ZGxIYXJuZXNzRXJyb3IgLy8vCisvLyBFbnRyeSBwb2ludAorc2VsZi5JZGxIYXJuZXNzRXJyb3Ig
PSBmdW5jdGlvbihtZXNzYWdlKQoreworICAgIC8qKgorICAgICAqIE1lc3NhZ2UgdG8gYmUgcHJp
bnRlZCBhcyB0aGUgZXJyb3IncyB0b1N0cmluZyBpbnZvY2F0aW9uLgorICAgICAqLworICAgIHRo
aXMubWVzc2FnZSA9IG1lc3NhZ2U7Cit9OworCitJZGxIYXJuZXNzRXJyb3IucHJvdG90eXBlID0g
T2JqZWN0LmNyZWF0ZShFcnJvci5wcm90b3R5cGUpOworCitJZGxIYXJuZXNzRXJyb3IucHJvdG90
eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24oKQoreworICAgIHJldHVybiB0aGlzLm1lc3NhZ2U7Cit9
OwogCi0gICAgdmFyIGFyciA9IG5ldyBGbG9hdDMyQXJyYXkoMSk7Ci0gICAgcmV0dXJuIGZ1bmN0
aW9uIGZyb3VuZChuKSB7Ci0gICAgICAgIGFyclswXSA9IG47Ci0gICAgICAgIHJldHVybiBhcnJb
MF07Ci0gICAgfTsKLX0pKCk7Ci0vL0B9CiAKIC8vLyBJZGxBcnJheSAvLy8KIC8vIEVudHJ5IHBv
aW50CiBzZWxmLklkbEFycmF5ID0gZnVuY3Rpb24oKQotLy9AewogewogICAgIC8qKgogICAgICAq
IEEgbWFwIGZyb20gc3RyaW5ncyB0byB0aGUgY29ycmVzcG9uZGluZyBuYW1lZCBJZGxPYmplY3Qs
IHN1Y2ggYXMKQEAgLTE0OCw5MiArMTc0LDI3OSBAQCBzZWxmLklkbEFycmF5ID0gZnVuY3Rpb24o
KQogCiAgICAgLyoqCiAgICAgICogV2hlbiBhZGRpbmcgbXVsdGlwbGUgY29sbGVjdGlvbnMgb2Yg
SURMcyBvbmUgYXQgYSB0aW1lLCBhbiBlYXJsaWVyIG9uZQotICAgICAqIG1pZ2h0IGNvbnRhaW4g
YSBwYXJ0aWFsIGludGVyZmFjZSBvciBpbXBsZW1lbnRzIHN0YXRlbWVudCB0aGF0IGRlcGVuZHMK
KyAgICAgKiBtaWdodCBjb250YWluIGEgcGFydGlhbCBpbnRlcmZhY2Ugb3IgaW5jbHVkZXMgc3Rh
dGVtZW50IHRoYXQgZGVwZW5kcwogICAgICAqIG9uIGEgbGF0ZXIgb25lLiAgU2F2ZSB0aGVzZSB1
cCBhbmQgaGFuZGxlIHRoZW0gcmlnaHQgYmVmb3JlIHdlIHJ1bgogICAgICAqIHRlc3RzLgogICAg
ICAqCi0gICAgICogLnBhcnRpYWxzIGlzIHNpbXBseSBhbiBhcnJheSBvZiBvYmplY3RzIGZyb20g
V2ViSURMUGFyc2VyLmpzJwotICAgICAqICJwYXJ0aWFsaW50ZXJmYWNlIiBwcm9kdWN0aW9uLiAg
LmltcGxlbWVudHMgbWFwcyBzdHJpbmdzIHRvIGFycmF5cyBvZgotICAgICAqIHN0cmluZ3MsIHN1
Y2ggdGhhdAotICAgICAqCi0gICAgICogICBBIGltcGxlbWVudHMgQjsKLSAgICAgKiAgIEEgaW1w
bGVtZW50cyBDOwotICAgICAqICAgRCBpbXBsZW1lbnRzIEU7Ci0gICAgICoKLSAgICAgKiByZXN1
bHRzIGluIHsgQTogWyJCIiwgIkMiXSwgRDogWyJFIl0gfS4KKyAgICAgKiBCb3RoIHRoaXMucGFy
dGlhbHMgYW5kIHRoaXMuaW5jbHVkZXMgd2lsbCBiZSB0aGUgb2JqZWN0cyBhcyBwYXJzZWQgYnkK
KyAgICAgKiBXZWJJRExQYXJzZXIuanMsIG5vdCB3cmFwcGVkIGluIElkbEludGVyZmFjZSBvciBz
aW1pbGFyLgogICAgICAqLwogICAgIHRoaXMucGFydGlhbHMgPSBbXTsKLSAgICB0aGlzWyJpbXBs
ZW1lbnRzIl0gPSB7fTsKKyAgICB0aGlzLmluY2x1ZGVzID0gW107CisKKyAgICAvKioKKyAgICAg
KiBSZWNvcmQgb2Ygc2tpcHBlZCBJREwgaXRlbXMsIGluIGNhc2Ugd2UgbGF0ZXIgcmVhbGl6ZSB0
aGF0IHRoZXkgYXJlIGEKKyAgICAgKiBkZXBlbmRlbmN5ICh0byByZXRyb2FjdGl2ZWx5IHByb2Nl
c3MgdGhlbSkuCisgICAgICovCisgICAgdGhpcy5za2lwcGVkID0gbmV3IE1hcCgpOwogfTsKIAot
Ly9AfQotSWRsQXJyYXkucHJvdG90eXBlLmFkZF9pZGxzID0gZnVuY3Rpb24ocmF3X2lkbHMpCi0v
L0B7CitJZGxBcnJheS5wcm90b3R5cGUuYWRkX2lkbHMgPSBmdW5jdGlvbihyYXdfaWRscywgb3B0
aW9ucykKIHsKICAgICAvKiogRW50cnkgcG9pbnQuICBTZWUgZG9jdW1lbnRhdGlvbiBhdCBiZWdp
bm5pbmcgb2YgZmlsZS4gKi8KLSAgICB0aGlzLmludGVybmFsX2FkZF9pZGxzKFdlYklETDIucGFy
c2UocmF3X2lkbHMpKTsKKyAgICB0aGlzLmludGVybmFsX2FkZF9pZGxzKFdlYklETDIucGFyc2Uo
cmF3X2lkbHMpLCBvcHRpb25zKTsKIH07CiAKLS8vQH0KLUlkbEFycmF5LnByb3RvdHlwZS5hZGRf
dW50ZXN0ZWRfaWRscyA9IGZ1bmN0aW9uKHJhd19pZGxzKQotLy9AeworSWRsQXJyYXkucHJvdG90
eXBlLmFkZF91bnRlc3RlZF9pZGxzID0gZnVuY3Rpb24ocmF3X2lkbHMsIG9wdGlvbnMpCiB7CiAg
ICAgLyoqIEVudHJ5IHBvaW50LiAgU2VlIGRvY3VtZW50YXRpb24gYXQgYmVnaW5uaW5nIG9mIGZp
bGUuICovCiAgICAgdmFyIHBhcnNlZF9pZGxzID0gV2ViSURMMi5wYXJzZShyYXdfaWRscyk7Ci0g
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXJzZWRfaWRscy5sZW5ndGg7IGkrKykKLSAgICB7Cisg
ICAgdGhpcy5tYXJrX2FzX3VudGVzdGVkKHBhcnNlZF9pZGxzKTsKKyAgICB0aGlzLmludGVybmFs
X2FkZF9pZGxzKHBhcnNlZF9pZGxzLCBvcHRpb25zKTsKK307CisKK0lkbEFycmF5LnByb3RvdHlw
ZS5tYXJrX2FzX3VudGVzdGVkID0gZnVuY3Rpb24gKHBhcnNlZF9pZGxzKQoreworICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgcGFyc2VkX2lkbHMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgcGFyc2Vk
X2lkbHNbaV0udW50ZXN0ZWQgPSB0cnVlOwotICAgICAgICBpZiAoIm1lbWJlcnMiIGluIHBhcnNl
ZF9pZGxzW2ldKQotICAgICAgICB7Ci0gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHBh
cnNlZF9pZGxzW2ldLm1lbWJlcnMubGVuZ3RoOyBqKyspCi0gICAgICAgICAgICB7CisgICAgICAg
IGlmICgibWVtYmVycyIgaW4gcGFyc2VkX2lkbHNbaV0pIHsKKyAgICAgICAgICAgIGZvciAodmFy
IGogPSAwOyBqIDwgcGFyc2VkX2lkbHNbaV0ubWVtYmVycy5sZW5ndGg7IGorKykgewogICAgICAg
ICAgICAgICAgIHBhcnNlZF9pZGxzW2ldLm1lbWJlcnNbal0udW50ZXN0ZWQgPSB0cnVlOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQotICAgIHRoaXMuaW50ZXJuYWxfYWRkX2lkbHMo
cGFyc2VkX2lkbHMpOwogfTsKIAotLy9AfQotSWRsQXJyYXkucHJvdG90eXBlLmludGVybmFsX2Fk
ZF9pZGxzID0gZnVuY3Rpb24ocGFyc2VkX2lkbHMpCi0vL0B7CitJZGxBcnJheS5wcm90b3R5cGUu
aXNfZXhjbHVkZWRfYnlfb3B0aW9ucyA9IGZ1bmN0aW9uIChuYW1lLCBvcHRpb25zKQoreworICAg
IHJldHVybiBvcHRpb25zICYmCisgICAgICAgIChvcHRpb25zLmV4Y2VwdCAmJiBvcHRpb25zLmV4
Y2VwdC5pbmNsdWRlcyhuYW1lKQorICAgICAgICAgfHwgb3B0aW9ucy5vbmx5ICYmICFvcHRpb25z
Lm9ubHkuaW5jbHVkZXMobmFtZSkpOworfTsKKworSWRsQXJyYXkucHJvdG90eXBlLmFkZF9kZXBl
bmRlbmN5X2lkbHMgPSBmdW5jdGlvbihyYXdfaWRscywgb3B0aW9ucykKK3sKKyAgICByZXR1cm4g
dGhpcy5pbnRlcm5hbF9hZGRfZGVwZW5kZW5jeV9pZGxzKFdlYklETDIucGFyc2UocmF3X2lkbHMp
LCBvcHRpb25zKTsKK307CisKK0lkbEFycmF5LnByb3RvdHlwZS5pbnRlcm5hbF9hZGRfZGVwZW5k
ZW5jeV9pZGxzID0gZnVuY3Rpb24ocGFyc2VkX2lkbHMsIG9wdGlvbnMpCit7CisgICAgY29uc3Qg
bmV3X29wdGlvbnMgPSB7IG9ubHk6IFtdIH0KKworICAgIGNvbnN0IGFsbF9kZXBzID0gbmV3IFNl
dCgpOworICAgIE9iamVjdC52YWx1ZXModGhpcy5tZW1iZXJzKS5mb3JFYWNoKHYgPT4geworICAg
ICAgICBpZiAodi5iYXNlKSB7CisgICAgICAgICAgICBhbGxfZGVwcy5hZGQodi5iYXNlKTsKKyAg
ICAgICAgfQorICAgIH0pOworICAgIC8vIEFkZCBib3RoICdBJyBhbmQgJ0InIGZvciBlYWNoICdB
IGluY2x1ZGVzIEInIGVudHJ5LgorICAgIHRoaXMuaW5jbHVkZXMuZm9yRWFjaChpID0+IHsKKyAg
ICAgICAgYWxsX2RlcHMuYWRkKGkudGFyZ2V0KTsKKyAgICAgICAgYWxsX2RlcHMuYWRkKGkuaW5j
bHVkZXMpOworICAgIH0pOworICAgIHRoaXMucGFydGlhbHMuZm9yRWFjaChwID0+IGFsbF9kZXBz
LmFkZChwLm5hbWUpKTsKKyAgICAvLyBBZGQgJ1R5cGVPZlR5cGUnIGZvciBlYWNoICJ0eXBlZGVm
IFR5cGVPZlR5cGUgTXlUeXBlOyIgZW50cnkuCisgICAgT2JqZWN0LmVudHJpZXModGhpcy5tZW1i
ZXJzKS5mb3JFYWNoKChbaywgdl0pID0+IHsKKyAgICAgICAgaWYgKHYgaW5zdGFuY2VvZiBJZGxU
eXBlZGVmKSB7CisgICAgICAgICAgICBsZXQgZGVmcyA9IHYuaWRsVHlwZS51bmlvbgorICAgICAg
ICAgICAgICAgID8gdi5pZGxUeXBlLmlkbFR5cGUubWFwKHQgPT4gdC5pZGxUeXBlKQorICAgICAg
ICAgICAgICAgIDogW3YuaWRsVHlwZS5pZGxUeXBlXTsKKyAgICAgICAgICAgIGRlZnMuZm9yRWFj
aChkID0+IGFsbF9kZXBzLmFkZChkKSk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIC8vIEFk
ZCB0aGUgYXR0cmlidXRlIGlkbFR5cGVzIG9mIGFsbCB0aGUgbmVzdGVkIG1lbWJlcnMgb2YgaWRs
cy4KKyAgICBjb25zdCBhdHRyRGVwcyA9IHBhcnNlZElkbHMgPT4geworICAgICAgICByZXR1cm4g
cGFyc2VkSWRscy5yZWR1Y2UoKGRlcHMsIHBhcnNlZCkgPT4geworICAgICAgICAgICAgaWYgKHBh
cnNlZC5tZW1iZXJzKSB7CisgICAgICAgICAgICAgICAgZm9yIChjb25zdCBhdHRyIG9mIE9iamVj
dC52YWx1ZXMocGFyc2VkLm1lbWJlcnMpLmZpbHRlcihtID0+IG0udHlwZSA9PT0gJ2F0dHJpYnV0
ZScpKSB7CisgICAgICAgICAgICAgICAgICAgIGxldCBhdHRyVHlwZSA9IGF0dHIuaWRsVHlwZTsK
KyAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIGdlbmVyaWMgbWVtYmVycyAoZS5nLiBG
cm96ZW5BcnJheTxNeVR5cGU+KQorICAgICAgICAgICAgICAgICAgICBpZiAoYXR0clR5cGUuZ2Vu
ZXJpYykgeworICAgICAgICAgICAgICAgICAgICAgICAgZGVwcy5hZGQoYXR0clR5cGUuZ2VuZXJp
Yyk7CisgICAgICAgICAgICAgICAgICAgICAgICBhdHRyVHlwZSA9IGF0dHJUeXBlLmlkbFR5cGU7
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZGVwcy5hZGQoYXR0
clR5cGUuaWRsVHlwZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAg
ICAgICAgaWYgKHBhcnNlZC5iYXNlIGluIHRoaXMubWVtYmVycykgeworICAgICAgICAgICAgICAg
IGF0dHJEZXBzKFt0aGlzLm1lbWJlcnNbcGFyc2VkLmJhc2VdXSkuZm9yRWFjaChkZXAgPT4gZGVw
cy5hZGQoZGVwKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gZGVwczsKKyAg
ICAgICAgfSwgbmV3IFNldCgpKTsKKyAgICB9OworCisgICAgY29uc3QgdGVzdGVkTWVtYmVycyA9
IE9iamVjdC52YWx1ZXModGhpcy5tZW1iZXJzKS5maWx0ZXIobSA9PiAhbS51bnRlc3RlZCAmJiBt
Lm1lbWJlcnMpOworICAgIGF0dHJEZXBzKHRlc3RlZE1lbWJlcnMpLmZvckVhY2goZGVwID0+IGFs
bF9kZXBzLmFkZChkZXApKTsKKworICAgIGNvbnN0IHRlc3RlZFBhcnRpYWxzID0gdGhpcy5wYXJ0
aWFscy5maWx0ZXIobSA9PiAhbS51bnRlc3RlZCAmJiBtLm1lbWJlcnMpOworICAgIGF0dHJEZXBz
KHRlc3RlZFBhcnRpYWxzKS5mb3JFYWNoKGRlcCA9PiBhbGxfZGVwcy5hZGQoZGVwKSk7CisKKwor
ICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMuZXhjZXB0ICYmIG9wdGlvbnMub25seSkgeworICAg
ICAgICB0aHJvdyBuZXcgSWRsSGFybmVzc0Vycm9yKCJUaGUgb25seSBhbmQgZXhjZXB0IG9wdGlv
bnMgY2FuJ3QgYmUgdXNlZCB0b2dldGhlci4iKTsKKyAgICB9CisKKyAgICBjb25zdCBkZWZpbmVk
X29yX3VudGVzdGVkID0gbmFtZSA9PiB7CisgICAgICAgIC8vIE5PVEU6IERlcHMgYXJlIHVudGVz
dGVkLCBzbyB3ZSdyZSBsZW5pZW50LCBhbmQgc2tpcCByZS1lbmNvdW50ZXJlZCBkZWZpbml0aW9u
cy4KKyAgICAgICAgLy8gZS5nLiBmb3IgJ2lkbCcgY29udGFpbmluZyBBOkIsIEI6QywgQzpECisg
ICAgICAgIC8vICAgICAgYXJyYXkuYWRkX2lkbHMoaWRsLCB7b25seTogWydBJywnQiddfSkuCisg
ICAgICAgIC8vICAgICAgYXJyYXkuYWRkX2RlcGVuZGVuY3lfaWRscyhpZGwpOworICAgICAgICAv
LyBCIHdvdWxkIGJlIGVuY291bnRlcmVkIGFzIHRlc3RlZCwgYW5kIGVuY291bnRlcmVkIGFzIGEg
ZGVwLCBzbyB3ZSBpZ25vcmUuCisgICAgICAgIHJldHVybiBuYW1lIGluIHRoaXMubWVtYmVycwor
ICAgICAgICAgICAgfHwgdGhpcy5pc19leGNsdWRlZF9ieV9vcHRpb25zKG5hbWUsIG9wdGlvbnMp
OworICAgIH0KKyAgICAvLyBNYXBzIG5hbWUgLT4gW3BhcnNlZF9pZGwsIC4uLl0KKyAgICBjb25z
dCBwcm9jZXNzID0gZnVuY3Rpb24ocGFyc2VkKSB7CisgICAgICAgIHZhciBkZXBzID0gW107Cisg
ICAgICAgIGlmIChwYXJzZWQubmFtZSkgeworICAgICAgICAgICAgZGVwcy5wdXNoKHBhcnNlZC5u
YW1lKTsKKyAgICAgICAgfSBlbHNlIGlmIChwYXJzZWQudHlwZSA9PT0gImluY2x1ZGVzIikgewor
ICAgICAgICAgICAgZGVwcy5wdXNoKHBhcnNlZC50YXJnZXQpOworICAgICAgICAgICAgZGVwcy5w
dXNoKHBhcnNlZC5pbmNsdWRlcyk7CisgICAgICAgIH0KKworICAgICAgICBkZXBzID0gZGVwcy5m
aWx0ZXIoZnVuY3Rpb24obmFtZSkgeworICAgICAgICAgICAgaWYgKCFuYW1lCisgICAgICAgICAg
ICAgICAgfHwgbmFtZSA9PT0gcGFyc2VkLm5hbWUgJiYgZGVmaW5lZF9vcl91bnRlc3RlZChuYW1l
KQorICAgICAgICAgICAgICAgIHx8ICFhbGxfZGVwcy5oYXMobmFtZSkpIHsKKyAgICAgICAgICAg
ICAgICAvLyBGbGFnIGFzIHNraXBwZWQsIGlmIGl0J3Mgbm90IGFscmVhZHkgcHJvY2Vzc2VkLCBz
byB3ZSBjYW4KKyAgICAgICAgICAgICAgICAvLyBjb21lIGJhY2sgdG8gaXQgbGF0ZXIgaWYgd2Ug
cmV0cm9zcGVjdGl2ZWx5IGNhbGwgaXQgYSBkZXAuCisgICAgICAgICAgICAgICAgaWYgKG5hbWUg
JiYgIShuYW1lIGluIHRoaXMubWVtYmVycykpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5z
a2lwcGVkLmhhcyhuYW1lKQorICAgICAgICAgICAgICAgICAgICAgICAgPyB0aGlzLnNraXBwZWQu
Z2V0KG5hbWUpLnB1c2gocGFyc2VkKQorICAgICAgICAgICAgICAgICAgICAgICAgOiB0aGlzLnNr
aXBwZWQuc2V0KG5hbWUsIFtwYXJzZWRdKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIH0uYmluZCh0aGlzKSk7CisKKyAgICAgICAgZGVwcy5mb3JFYWNoKGZ1bmN0
aW9uKG5hbWUpIHsKKyAgICAgICAgICAgIGlmICghbmV3X29wdGlvbnMub25seS5pbmNsdWRlcyhu
YW1lKSkgeworICAgICAgICAgICAgICAgIG5ld19vcHRpb25zLm9ubHkucHVzaChuYW1lKTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgY29uc3QgZm9sbG93X3VwID0gbmV3IFNldCgpOwor
ICAgICAgICAgICAgZm9yIChjb25zdCBkZXBfdHlwZSBvZiBbImluaGVyaXRhbmNlIiwgImluY2x1
ZGVzIl0pIHsKKyAgICAgICAgICAgICAgICBpZiAocGFyc2VkW2RlcF90eXBlXSkgeworICAgICAg
ICAgICAgICAgICAgICBjb25zdCBpbmhlcml0aW5nID0gcGFyc2VkW2RlcF90eXBlXTsKKyAgICAg
ICAgICAgICAgICAgICAgY29uc3QgaW5oZXJpdG9yID0gcGFyc2VkLm5hbWUgfHwgcGFyc2VkLnRh
cmdldDsKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVwcyA9IFtpbmhlcml0aW5nXTsKKyAg
ICAgICAgICAgICAgICAgICAgLy8gRm9yIEEgaW5jbHVkZXMgQiwgd2UgY2FuIGlnbm9yZSBBLCB1
bmxlc3MgQiAob3Igc29tZSBvZiBpdHMKKyAgICAgICAgICAgICAgICAgICAgLy8gbWVtYmVycykg
aXMgYmVpbmcgdGVzdGVkLgorICAgICAgICAgICAgICAgICAgICBpZiAoZGVwX3R5cGUgIT09ICJp
bmNsdWRlcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIHx8IGluaGVyaXRpbmcgaW4gdGhpcy5t
ZW1iZXJzICYmICF0aGlzLm1lbWJlcnNbaW5oZXJpdGluZ10udW50ZXN0ZWQKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHx8IHRoaXMucGFydGlhbHMuc29tZShmdW5jdGlvbihwKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwLm5hbWUgPT09IGluaGVyaXRpbmc7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGRlcHMucHVzaChpbmhlcml0b3IpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgIGZvciAoY29uc3QgZGVwIG9mIGRlcHMpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICghbmV3X29wdGlvbnMub25seS5pbmNsdWRlcyhkZXApKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbmV3X29wdGlvbnMub25seS5wdXNoKGRlcCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBhbGxfZGVwcy5hZGQoZGVwKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvd191cC5hZGQoZGVwKTsKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgZm9yIChjb25zdCBkZWZlcnJlZCBvZiBmb2xsb3dfdXApIHsKKyAgICAgICAgICAgICAgICBp
ZiAodGhpcy5za2lwcGVkLmhhcyhkZWZlcnJlZCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY29u
c3QgbmV4dCA9IHRoaXMuc2tpcHBlZC5nZXQoZGVmZXJyZWQpOworICAgICAgICAgICAgICAgICAg
ICB0aGlzLnNraXBwZWQuZGVsZXRlKGRlZmVycmVkKTsKKyAgICAgICAgICAgICAgICAgICAgbmV4
dC5mb3JFYWNoKHByb2Nlc3MpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfS5iaW5kKHRoaXMpKTsKKyAgICB9LmJpbmQodGhpcyk7CisKKyAgICBmb3IgKGxldCBw
YXJzZWQgb2YgcGFyc2VkX2lkbHMpIHsKKyAgICAgICAgcHJvY2VzcyhwYXJzZWQpOworICAgIH0K
KworICAgIHRoaXMubWFya19hc191bnRlc3RlZChwYXJzZWRfaWRscyk7CisKKyAgICBpZiAobmV3
X29wdGlvbnMub25seS5sZW5ndGgpIHsKKyAgICAgICAgdGhpcy5pbnRlcm5hbF9hZGRfaWRscyhw
YXJzZWRfaWRscywgbmV3X29wdGlvbnMpOworICAgIH0KK30KKworSWRsQXJyYXkucHJvdG90eXBl
LmludGVybmFsX2FkZF9pZGxzID0gZnVuY3Rpb24ocGFyc2VkX2lkbHMsIG9wdGlvbnMpCiB7CiAg
ICAgLyoqCiAgICAgICogSW50ZXJuYWwgaGVscGVyIGNhbGxlZCBieSBhZGRfaWRscygpIGFuZCBh
ZGRfdW50ZXN0ZWRfaWRscygpLgorICAgICAqCiAgICAgICogcGFyc2VkX2lkbHMgaXMgYW4gYXJy
YXkgb2Ygb2JqZWN0cyB0aGF0IGNvbWUgZnJvbSBXZWJJRExQYXJzZXIuanMncwogICAgICAqICJk
ZWZpbml0aW9ucyIgcHJvZHVjdGlvbi4gIFRoZSBhZGRfdW50ZXN0ZWRfaWRscygpIGVudHJ5IHBv
aW50CiAgICAgICogYWRkaXRpb25hbGx5IHNldHMgYW4gLnVudGVzdGVkIHByb3BlcnR5IG9uIGVh
Y2ggb2JqZWN0IChhbmQgaXRzCiAgICAgICogLm1lbWJlcnMpIHNvIHRoYXQgdGhleSdsbCBiZSBz
a2lwcGVkIGJ5IHRlc3QoKSAtLSB0aGV5J2xsIG9ubHkgYmUKICAgICAgKiB1c2VkIGZvciBiYXNl
IGludGVyZmFjZXMgb2YgdGVzdGVkIGludGVyZmFjZXMsIHJldHVybiB0eXBlcywgZXRjLgorICAg
ICAqCisgICAgICogb3B0aW9ucyBpcyBhIGRpY3Rpb25hcnkgdGhhdCBjYW4gaGF2ZSBhbiBvbmx5
IG9yIGV4Y2VwdCBtZW1iZXIgd2hpY2ggYXJlCisgICAgICogYXJyYXlzLiBJZiBvbmx5IGlzIGdp
dmVuIHRoZW4gb25seSBtZW1iZXJzLCBwYXJ0aWFscyBhbmQgaW50ZXJmYWNlCisgICAgICogdGFy
Z2V0cyBsaXN0ZWQgd2lsbCBiZSBhZGRlZCwgYW5kIGlmIGV4Y2VwdCBpcyBnaXZlbiBvbmx5IHRo
b3NlIHRoYXQKKyAgICAgKiBhcmVuJ3QgbGlzdGVkIHdpbGwgYmUgYWRkZWQuIE9ubHkgb25lIG9m
IG9ubHkgYW5kIGV4Y2VwdCBjYW4gYmUgdXNlZC4KICAgICAgKi8KKworICAgIGlmIChvcHRpb25z
ICYmIG9wdGlvbnMub25seSAmJiBvcHRpb25zLmV4Y2VwdCkKKyAgICB7CisgICAgICAgIHRocm93
IG5ldyBJZGxIYXJuZXNzRXJyb3IoIlRoZSBvbmx5IGFuZCBleGNlcHQgb3B0aW9ucyBjYW4ndCBi
ZSB1c2VkIHRvZ2V0aGVyLiIpOworICAgIH0KKworICAgIHZhciBzaG91bGRfc2tpcCA9IG5hbWUg
PT4geworICAgICAgICByZXR1cm4gdGhpcy5pc19leGNsdWRlZF9ieV9vcHRpb25zKG5hbWUsIG9w
dGlvbnMpOworICAgIH0KKwogICAgIHBhcnNlZF9pZGxzLmZvckVhY2goZnVuY3Rpb24ocGFyc2Vk
X2lkbCkKICAgICB7Ci0gICAgICAgIGlmIChwYXJzZWRfaWRsLnR5cGUgPT0gImludGVyZmFjZSIg
JiYgcGFyc2VkX2lkbC5wYXJ0aWFsKQorICAgICAgICB2YXIgcGFydGlhbF90eXBlcyA9IFsKKyAg
ICAgICAgICAgICJpbnRlcmZhY2UiLAorICAgICAgICAgICAgImludGVyZmFjZSBtaXhpbiIsCisg
ICAgICAgICAgICAiZGljdGlvbmFyeSIsCisgICAgICAgICAgICAibmFtZXNwYWNlIiwKKyAgICAg
ICAgXTsKKyAgICAgICAgaWYgKHBhcnNlZF9pZGwucGFydGlhbCAmJiBwYXJ0aWFsX3R5cGVzLmlu
Y2x1ZGVzKHBhcnNlZF9pZGwudHlwZSkpCiAgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChzaG91
bGRfc2tpcChwYXJzZWRfaWRsLm5hbWUpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIHRoaXMucGFydGlhbHMucHVzaChw
YXJzZWRfaWRsKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGlm
IChwYXJzZWRfaWRsLnR5cGUgPT0gImltcGxlbWVudHMiKQorICAgICAgICBpZiAocGFyc2VkX2lk
bC50eXBlID09ICJpbmNsdWRlcyIpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICghKHBhcnNl
ZF9pZGwudGFyZ2V0IGluIHRoaXNbImltcGxlbWVudHMiXSkpCisgICAgICAgICAgICBpZiAoc2hv
dWxkX3NraXAocGFyc2VkX2lkbC50YXJnZXQpKQogICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIHRoaXNbImltcGxlbWVudHMiXVtwYXJzZWRfaWRsLnRhcmdldF0gPSBbXTsKKyAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB0aGlzWyJpbXBsZW1l
bnRzIl1bcGFyc2VkX2lkbC50YXJnZXRdLnB1c2gocGFyc2VkX2lkbFsiaW1wbGVtZW50cyJdKTsK
KyAgICAgICAgICAgIHRoaXMuaW5jbHVkZXMucHVzaChwYXJzZWRfaWRsKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIHBhcnNlZF9pZGwuYXJyYXkgPSB0aGlzOwor
ICAgICAgICBpZiAoc2hvdWxkX3NraXAocGFyc2VkX2lkbC5uYW1lKSkKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgICAgIGlmIChwYXJzZWRfaWRsLm5hbWUg
aW4gdGhpcy5tZW1iZXJzKQogICAgICAgICB7Ci0gICAgICAgICAgICB0aHJvdyAiRHVwbGljYXRl
IGlkZW50aWZpZXIgIiArIHBhcnNlZF9pZGwubmFtZTsKKyAgICAgICAgICAgIHRocm93IG5ldyBJ
ZGxIYXJuZXNzRXJyb3IoIkR1cGxpY2F0ZSBpZGVudGlmaWVyICIgKyBwYXJzZWRfaWRsLm5hbWUp
OwogICAgICAgICB9CisKICAgICAgICAgc3dpdGNoKHBhcnNlZF9pZGwudHlwZSkKICAgICAgICAg
ewogICAgICAgICBjYXNlICJpbnRlcmZhY2UiOgogICAgICAgICAgICAgdGhpcy5tZW1iZXJzW3Bh
cnNlZF9pZGwubmFtZV0gPQotICAgICAgICAgICAgICAgIG5ldyBJZGxJbnRlcmZhY2UocGFyc2Vk
X2lkbCwgLyogaXNfY2FsbGJhY2sgPSAqLyBmYWxzZSk7CisgICAgICAgICAgICAgICAgbmV3IElk
bEludGVyZmFjZShwYXJzZWRfaWRsLCAvKiBpc19jYWxsYmFjayA9ICovIGZhbHNlLCAvKiBpc19t
aXhpbiA9ICovIGZhbHNlKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgImlu
dGVyZmFjZSBtaXhpbiI6CisgICAgICAgICAgICB0aGlzLm1lbWJlcnNbcGFyc2VkX2lkbC5uYW1l
XSA9CisgICAgICAgICAgICAgICAgbmV3IElkbEludGVyZmFjZShwYXJzZWRfaWRsLCAvKiBpc19j
YWxsYmFjayA9ICovIGZhbHNlLCAvKiBpc19taXhpbiA9ICovIHRydWUpOwogICAgICAgICAgICAg
YnJlYWs7CiAKICAgICAgICAgY2FzZSAiZGljdGlvbmFyeSI6CkBAIC0yNDcsOCArNDYwLDcgQEAg
SWRsQXJyYXkucHJvdG90eXBlLmludGVybmFsX2FkZF9pZGxzID0gZnVuY3Rpb24ocGFyc2VkX2lk
bHMpCiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlICJjYWxsYmFjayI6Ci0gICAg
ICAgICAgICAvLyBUT0RPCi0gICAgICAgICAgICBjb25zb2xlLmxvZygiY2FsbGJhY2sgbm90IHll
dCBzdXBwb3J0ZWQiKTsKKyAgICAgICAgICAgIHRoaXMubWVtYmVyc1twYXJzZWRfaWRsLm5hbWVd
ID0gbmV3IElkbENhbGxiYWNrKHBhcnNlZF9pZGwpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAg
ICAgICAgY2FzZSAiZW51bSI6CkBAIC0yNTcsNyArNDY5LDExIEBAIElkbEFycmF5LnByb3RvdHlw
ZS5pbnRlcm5hbF9hZGRfaWRscyA9IGZ1bmN0aW9uKHBhcnNlZF9pZGxzKQogCiAgICAgICAgIGNh
c2UgImNhbGxiYWNrIGludGVyZmFjZSI6CiAgICAgICAgICAgICB0aGlzLm1lbWJlcnNbcGFyc2Vk
X2lkbC5uYW1lXSA9Ci0gICAgICAgICAgICAgICAgbmV3IElkbEludGVyZmFjZShwYXJzZWRfaWRs
LCAvKiBpc19jYWxsYmFjayA9ICovIHRydWUpOworICAgICAgICAgICAgICAgIG5ldyBJZGxJbnRl
cmZhY2UocGFyc2VkX2lkbCwgLyogaXNfY2FsbGJhY2sgPSAqLyB0cnVlLCAvKiBpc19taXhpbiA9
ICovIGZhbHNlKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgIm5hbWVzcGFj
ZSI6CisgICAgICAgICAgICB0aGlzLm1lbWJlcnNbcGFyc2VkX2lkbC5uYW1lXSA9IG5ldyBJZGxO
YW1lc3BhY2UocGFyc2VkX2lkbCk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBkZWZh
dWx0OgpAQCAtMjY2LDkgKzQ4Miw3IEBAIElkbEFycmF5LnByb3RvdHlwZS5pbnRlcm5hbF9hZGRf
aWRscyA9IGZ1bmN0aW9uKHBhcnNlZF9pZGxzKQogICAgIH0uYmluZCh0aGlzKSk7CiB9OwogCi0v
L0B9CiBJZGxBcnJheS5wcm90b3R5cGUuYWRkX29iamVjdHMgPSBmdW5jdGlvbihkaWN0KQotLy9A
ewogewogICAgIC8qKiBFbnRyeSBwb2ludC4gIFNlZSBkb2N1bWVudGF0aW9uIGF0IGJlZ2lubmlu
ZyBvZiBmaWxlLiAqLwogICAgIGZvciAodmFyIGsgaW4gZGljdCkKQEAgLTI4NCwxMTEgKzQ5OCwy
MjMgQEAgSWRsQXJyYXkucHJvdG90eXBlLmFkZF9vYmplY3RzID0gZnVuY3Rpb24oZGljdCkKICAg
ICB9CiB9OwogCi0vL0B9CiBJZGxBcnJheS5wcm90b3R5cGUucHJldmVudF9tdWx0aXBsZV90ZXN0
aW5nID0gZnVuY3Rpb24obmFtZSkKLS8vQHsKIHsKICAgICAvKiogRW50cnkgcG9pbnQuICBTZWUg
ZG9jdW1lbnRhdGlvbiBhdCBiZWdpbm5pbmcgb2YgZmlsZS4gKi8KICAgICB0aGlzLm1lbWJlcnNb
bmFtZV0ucHJldmVudF9tdWx0aXBsZV90ZXN0aW5nID0gdHJ1ZTsKIH07CiAKLS8vQH0KLUlkbEFy
cmF5LnByb3RvdHlwZS5yZWN1cnNpdmVseV9nZXRfaW1wbGVtZW50cyA9IGZ1bmN0aW9uKGludGVy
ZmFjZV9uYW1lKQotLy9AeworSWRsQXJyYXkucHJvdG90eXBlLmlzX2pzb25fdHlwZSA9IGZ1bmN0
aW9uKHR5cGUpCiB7CiAgICAgLyoqCi0gICAgICogSGVscGVyIGZ1bmN0aW9uIGZvciB0ZXN0KCku
ICBSZXR1cm5zIGFuIGFycmF5IG9mIHRoaW5ncyB0aGF0IGltcGxlbWVudAotICAgICAqIGludGVy
ZmFjZV9uYW1lLCBzbyBpZiB0aGUgSURMIGNvbnRhaW5zCi0gICAgICoKLSAgICAgKiAgIEEgaW1w
bGVtZW50cyBCOwotICAgICAqICAgQiBpbXBsZW1lbnRzIEM7Ci0gICAgICogICBCIGltcGxlbWVu
dHMgRDsKLSAgICAgKgotICAgICAqIHRoZW4gcmVjdXJzaXZlbHlfZ2V0X2ltcGxlbWVudHMoIkEi
KSBzaG91bGQgcmV0dXJuIFsiQiIsICJDIiwgIkQiXS4KKyAgICAgKiBDaGVja3Mgd2hldGhlciB0
eXBlIGlzIGEgSlNPTiB0eXBlIGFzIHBlcgorICAgICAqIGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5p
by93ZWJpZGwvI2Rmbi1qc29uLXR5cGVzCiAgICAgICovCi0gICAgdmFyIHJldCA9IHRoaXNbImlt
cGxlbWVudHMiXVtpbnRlcmZhY2VfbmFtZV07Ci0gICAgaWYgKHJldCA9PT0gdW5kZWZpbmVkKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIFtdOworCisgICAgdmFyIGlkbFR5cGUgPSB0eXBlLmlkbFR5
cGU7CisKKyAgICBpZiAodHlwZS5nZW5lcmljID09ICJQcm9taXNlIikgeyByZXR1cm4gZmFsc2U7
IH0KKworICAgIC8vICBudWxsYWJsZSBhbmQgYW5ub3RhdGVkIHR5cGVzIGRvbid0IG5lZWQgdG8g
YmUgaGFuZGxlZCBzZXBhcmF0ZWx5LAorICAgIC8vICBhcyB3ZWJpZGwyIGRvZXNuJ3QgcmVwcmVz
ZW50IHRoZW0gd3JhcHBlZC11cCAoYXMgdGhleSdyZSBkZXNjcmliZWQKKyAgICAvLyAgaW4gV2Vi
SURMKS4KKworICAgIC8vIHVuaW9uIGFuZCByZWNvcmQgdHlwZXMKKyAgICBpZiAodHlwZS51bmlv
biB8fCB0eXBlLmdlbmVyaWMgPT0gInJlY29yZCIpIHsKKyAgICAgICAgcmV0dXJuIGlkbFR5cGUu
ZXZlcnkodGhpcy5pc19qc29uX3R5cGUsIHRoaXMpOworICAgIH0KKworICAgIC8vIHNlcXVlbmNl
IHR5cGVzCisgICAgaWYgKHR5cGUuZ2VuZXJpYyA9PSAic2VxdWVuY2UiIHx8IHR5cGUuZ2VuZXJp
YyA9PSAiRnJvemVuQXJyYXkiKSB7CisgICAgICAgIHJldHVybiB0aGlzLmlzX2pzb25fdHlwZShp
ZGxUeXBlWzBdKTsKICAgICB9Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzWyJpbXBsZW1l
bnRzIl1baW50ZXJmYWNlX25hbWVdLmxlbmd0aDsgaSsrKQorCisgICAgaWYgKHR5cGVvZiBpZGxU
eXBlICE9ICJzdHJpbmciKSB7IHRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCB0eXBlICIgKyBK
U09OLnN0cmluZ2lmeShpZGxUeXBlKSk7IH0KKworICAgIHN3aXRjaCAoaWRsVHlwZSkKICAgICB7
Ci0gICAgICAgIHJldCA9IHJldC5jb25jYXQodGhpcy5yZWN1cnNpdmVseV9nZXRfaW1wbGVtZW50
cyhyZXRbaV0pKTsKLSAgICAgICAgaWYgKHJldC5pbmRleE9mKHJldFtpXSkgIT0gcmV0Lmxhc3RJ
bmRleE9mKHJldFtpXSkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRocm93ICJDaXJjdWxhciBp
bXBsZW1lbnRzIHN0YXRlbWVudHMgaW52b2x2aW5nICIgKyByZXRbaV07Ci0gICAgICAgIH0KKyAg
ICAgICAvLyAgTnVtZXJpYyB0eXBlcworICAgICAgIGNhc2UgImJ5dGUiOgorICAgICAgIGNhc2Ug
Im9jdGV0IjoKKyAgICAgICBjYXNlICJzaG9ydCI6CisgICAgICAgY2FzZSAidW5zaWduZWQgc2hv
cnQiOgorICAgICAgIGNhc2UgImxvbmciOgorICAgICAgIGNhc2UgInVuc2lnbmVkIGxvbmciOgor
ICAgICAgIGNhc2UgImxvbmcgbG9uZyI6CisgICAgICAgY2FzZSAidW5zaWduZWQgbG9uZyBsb25n
IjoKKyAgICAgICBjYXNlICJmbG9hdCI6CisgICAgICAgY2FzZSAiZG91YmxlIjoKKyAgICAgICBj
YXNlICJ1bnJlc3RyaWN0ZWQgZmxvYXQiOgorICAgICAgIGNhc2UgInVucmVzdHJpY3RlZCBkb3Vi
bGUiOgorICAgICAgIC8vIGJvb2xlYW4KKyAgICAgICBjYXNlICJib29sZWFuIjoKKyAgICAgICAv
LyBzdHJpbmcgdHlwZXMKKyAgICAgICBjYXNlICJET01TdHJpbmciOgorICAgICAgIGNhc2UgIkJ5
dGVTdHJpbmciOgorICAgICAgIGNhc2UgIlVTVlN0cmluZyI6CisgICAgICAgLy8gb2JqZWN0IHR5
cGUKKyAgICAgICBjYXNlICJvYmplY3QiOgorICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICBjYXNlICJFcnJvciI6CisgICAgICAgY2FzZSAiRE9NRXhjZXB0aW9uIjoKKyAgICAgICBjYXNl
ICJJbnQ4QXJyYXkiOgorICAgICAgIGNhc2UgIkludDE2QXJyYXkiOgorICAgICAgIGNhc2UgIklu
dDMyQXJyYXkiOgorICAgICAgIGNhc2UgIlVpbnQ4QXJyYXkiOgorICAgICAgIGNhc2UgIlVpbnQx
NkFycmF5IjoKKyAgICAgICBjYXNlICJVaW50MzJBcnJheSI6CisgICAgICAgY2FzZSAiVWludDhD
bGFtcGVkQXJyYXkiOgorICAgICAgIGNhc2UgIkZsb2F0MzJBcnJheSI6CisgICAgICAgY2FzZSAi
RmxvYXQ2NEFycmF5IjoKKyAgICAgICBjYXNlICJBcnJheUJ1ZmZlciI6CisgICAgICAgY2FzZSAi
RGF0YVZpZXciOgorICAgICAgIGNhc2UgImFueSI6CisgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICBkZWZhdWx0OgorICAgICAgICAgICB2YXIgdGhpbmcgPSB0aGlzLm1lbWJlcnNbaWRs
VHlwZV07CisgICAgICAgICAgIGlmICghdGhpbmcpIHsgdGhyb3cgbmV3IEVycm9yKCJUeXBlICIg
KyBpZGxUeXBlICsgIiBub3QgZm91bmQiKTsgfQorICAgICAgICAgICBpZiAodGhpbmcgaW5zdGFu
Y2VvZiBJZGxFbnVtKSB7IHJldHVybiB0cnVlOyB9CisKKyAgICAgICAgICAgaWYgKHRoaW5nIGlu
c3RhbmNlb2YgSWRsVHlwZWRlZikgeworICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXNfanNv
bl90eXBlKHRoaW5nLmlkbFR5cGUpOworICAgICAgICAgICB9CisKKyAgICAgICAgICAgLy8gIGRp
Y3Rpb25hcmllcyB3aGVyZSBhbGwgb2YgdGhlaXIgbWVtYmVycyBhcmUgSlNPTiB0eXBlcworICAg
ICAgICAgICBpZiAodGhpbmcgaW5zdGFuY2VvZiBJZGxEaWN0aW9uYXJ5KSB7CisgICAgICAgICAg
ICAgICBjb25zdCBtYXAgPSBuZXcgTWFwKCk7CisgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGRp
Y3Qgb2YgdGhpbmcuZ2V0X3JldmVyc2VfaW5oZXJpdGFuY2Vfc3RhY2soKSkgeworICAgICAgICAg
ICAgICAgICAgIGZvciAoY29uc3QgbSBvZiBkaWN0Lm1lbWJlcnMpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgbWFwLnNldChtLm5hbWUsIG0uaWRsVHlwZSk7CisgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgcmV0dXJuIEFycmF5LmZyb20obWFw
LnZhbHVlcygpKS5ldmVyeSh0aGlzLmlzX2pzb25fdHlwZSwgdGhpcyk7CisgICAgICAgICAgIH0K
KworICAgICAgICAgICAvLyAgaW50ZXJmYWNlIHR5cGVzIHRoYXQgaGF2ZSBhIHRvSlNPTiBvcGVy
YXRpb24gZGVjbGFyZWQgb24gdGhlbXNlbHZlcyBvcgorICAgICAgICAgICAvLyAgb25lIG9mIHRo
ZWlyIGluaGVyaXRlZCBpbnRlcmZhY2VzLgorICAgICAgICAgICBpZiAodGhpbmcgaW5zdGFuY2Vv
ZiBJZGxJbnRlcmZhY2UpIHsKKyAgICAgICAgICAgICAgIHZhciBiYXNlOworICAgICAgICAgICAg
ICAgd2hpbGUgKHRoaW5nKQorICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgIGlm
ICh0aGluZy5oYXNfdG9fanNvbl9yZWd1bGFyX29wZXJhdGlvbigpKSB7IHJldHVybiB0cnVlOyB9
CisgICAgICAgICAgICAgICAgICAgdmFyIG1peGlucyA9IHRoaXMuaW5jbHVkZXNbdGhpbmcubmFt
ZV07CisgICAgICAgICAgICAgICAgICAgaWYgKG1peGlucykgeworICAgICAgICAgICAgICAgICAg
ICAgICBtaXhpbnMgPSBtaXhpbnMubWFwKGZ1bmN0aW9uKGlkKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2YXIgbWl4aW4gPSB0aGlzLm1lbWJlcnNbaWRdOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCFtaXhpbikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRocm93IG5ldyBFcnJvcigiSW50ZXJmYWNlICIgKyBpZCArICIgbm90IGZvdW5kIChpbXBsZW1l
bnRlZCBieSAiICsgdGhpbmcubmFtZSArICIpIik7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWl4aW47CisgICAgICAgICAg
ICAgICAgICAgICAgIH0sIHRoaXMpOworICAgICAgICAgICAgICAgICAgICAgICBpZiAobWl4aW5z
LnNvbWUoZnVuY3Rpb24obSkgeyByZXR1cm4gbS5oYXNfdG9fanNvbl9yZWd1bGFyX29wZXJhdGlv
bigpIH0gKSkgeyByZXR1cm4gdHJ1ZTsgfQorICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICBpZiAoIXRoaW5nLmJhc2UpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAgICAg
ICAgICAgICAgYmFzZSA9IHRoaXMubWVtYmVyc1t0aGluZy5iYXNlXTsKKyAgICAgICAgICAgICAg
ICAgICBpZiAoIWJhc2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCJJbnRlcmZhY2UgIiArIHRoaW5nLmJhc2UgKyAiIG5vdCBmb3VuZCAoaW5oZXJpdGVkIGJ5ICIg
KyB0aGluZy5uYW1lICsgIikiKTsKKyAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgdGhpbmcgPSBiYXNlOworICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAgICB9CisgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
Ci0gICAgcmV0dXJuIHJldDsKIH07CiAKK2Z1bmN0aW9uIGV4cG9zdXJlX3NldChvYmplY3QsIGRl
ZmF1bHRfc2V0KSB7CisgICAgdmFyIGV4cG9zZWQgPSBvYmplY3QuZXh0QXR0cnMgJiYgb2JqZWN0
LmV4dEF0dHJzLmZpbHRlcihhID0+IGEubmFtZSA9PT0gIkV4cG9zZWQiKTsKKyAgICBpZiAoZXhw
b3NlZCAmJiBleHBvc2VkLmxlbmd0aCA+IDEpIHsKKyAgICAgICAgdGhyb3cgbmV3IElkbEhhcm5l
c3NFcnJvcigKKyAgICAgICAgICAgIGBNdWx0aXBsZSAnRXhwb3NlZCcgZXh0ZW5kZWQgYXR0cmli
dXRlcyBvbiAke29iamVjdC5uYW1lfWApOworICAgIH0KKworICAgIGxldCByZXN1bHQgPSBkZWZh
dWx0X3NldCB8fCBbIldpbmRvdyJdOworICAgIGlmIChyZXN1bHQgJiYgIShyZXN1bHQgaW5zdGFu
Y2VvZiBTZXQpKSB7CisgICAgICAgIHJlc3VsdCA9IG5ldyBTZXQocmVzdWx0KTsKKyAgICB9Cisg
ICAgaWYgKGV4cG9zZWQgJiYgZXhwb3NlZC5sZW5ndGgpIHsKKyAgICAgICAgY29uc3QgeyByaHMg
fSA9IGV4cG9zZWRbMF07CisgICAgICAgIC8vIENvdWxkIGJlIGEgbGlzdCBvciBhIHN0cmluZy4K
KyAgICAgICAgY29uc3Qgc2V0ID0gcmhzLnR5cGUgPT09ICJpZGVudGlmaWVyLWxpc3QiID8KKyAg
ICAgICAgICAgIHJocy52YWx1ZS5tYXAoaWQgPT4gaWQudmFsdWUpIDoKKyAgICAgICAgICAgIFsg
cmhzLnZhbHVlIF07CisgICAgICAgIHJlc3VsdCA9IG5ldyBTZXQoc2V0KTsKKyAgICB9CisgICAg
aWYgKHJlc3VsdCAmJiByZXN1bHQuaGFzKCJXb3JrZXIiKSkgeworICAgICAgICByZXN1bHQuZGVs
ZXRlKCJXb3JrZXIiKTsKKyAgICAgICAgcmVzdWx0LmFkZCgiRGVkaWNhdGVkV29ya2VyIik7Cisg
ICAgICAgIHJlc3VsdC5hZGQoIlNlcnZpY2VXb3JrZXIiKTsKKyAgICAgICAgcmVzdWx0LmFkZCgi
U2hhcmVkV29ya2VyIik7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKIGZ1bmN0aW9u
IGV4cG9zZWRfaW4oZ2xvYmFscykgewotICAgIGlmICgnZG9jdW1lbnQnIGluIHNlbGYpIHsKLSAg
ICAgICAgcmV0dXJuIGdsb2JhbHMuaW5kZXhPZigiV2luZG93IikgPj0gMDsKKyAgICBpZiAoJ1dp
bmRvdycgaW4gc2VsZikgeworICAgICAgICByZXR1cm4gZ2xvYmFscy5oYXMoIldpbmRvdyIpOwog
ICAgIH0KICAgICBpZiAoJ0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlJyBpbiBzZWxmICYmCiAg
ICAgICAgIHNlbGYgaW5zdGFuY2VvZiBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSkgewotICAg
ICAgICByZXR1cm4gZ2xvYmFscy5pbmRleE9mKCJXb3JrZXIiKSA+PSAwIHx8Ci0gICAgICAgICAg
ICAgICBnbG9iYWxzLmluZGV4T2YoIkRlZGljYXRlZFdvcmtlciIpID49IDA7CisgICAgICAgIHJl
dHVybiBnbG9iYWxzLmhhcygiRGVkaWNhdGVkV29ya2VyIik7CiAgICAgfQogICAgIGlmICgnU2hh
cmVkV29ya2VyR2xvYmFsU2NvcGUnIGluIHNlbGYgJiYKICAgICAgICAgc2VsZiBpbnN0YW5jZW9m
IFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlKSB7Ci0gICAgICAgIHJldHVybiBnbG9iYWxzLmluZGV4
T2YoIldvcmtlciIpID49IDAgfHwKLSAgICAgICAgICAgICAgIGdsb2JhbHMuaW5kZXhPZigiU2hh
cmVkV29ya2VyIikgPj0gMDsKKyAgICAgICAgcmV0dXJuIGdsb2JhbHMuaGFzKCJTaGFyZWRXb3Jr
ZXIiKTsKICAgICB9CiAgICAgaWYgKCdTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUnIGluIHNlbGYg
JiYKICAgICAgICAgc2VsZiBpbnN0YW5jZW9mIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSkgewot
ICAgICAgICByZXR1cm4gZ2xvYmFscy5pbmRleE9mKCJXb3JrZXIiKSA+PSAwIHx8Ci0gICAgICAg
ICAgICAgICBnbG9iYWxzLmluZGV4T2YoIlNlcnZpY2VXb3JrZXIiKSA+PSAwOworICAgICAgICBy
ZXR1cm4gZ2xvYmFscy5oYXMoIlNlcnZpY2VXb3JrZXIiKTsKKyAgICB9CisgICAgdGhyb3cgbmV3
IElkbEhhcm5lc3NFcnJvcigiVW5leHBlY3RlZCBnbG9iYWwgb2JqZWN0Iik7Cit9CisKKy8qKgor
ICogQXNzZXJ0cyB0aGF0IHRoZSBnaXZlbiBlcnJvciBtZXNzYWdlIGlzIHRocm93biBmb3IgdGhl
IGdpdmVuIGZ1bmN0aW9uLgorICogQHBhcmFtIHtzdHJpbmd8SWRsSGFybmVzc0Vycm9yfSBlcnJv
ciBFeHBlY3RlZCBFcnJvciBtZXNzYWdlLgorICogQHBhcmFtIHtGdW5jdGlvbn0gaWRsQXJyYXlG
dW5jIEZ1bmN0aW9uIG9wZXJhdGluZyBvbiBhbiBJZGxBcnJheSB0aGF0IHNob3VsZCB0aHJvdy4K
KyAqLworSWRsQXJyYXkucHJvdG90eXBlLmFzc2VydF90aHJvd3MgPSBmdW5jdGlvbihlcnJvciwg
aWRsQXJyYXlGdW5jKQoreworICAgIHRyeSB7CisgICAgICAgIGlkbEFycmF5RnVuYy5jYWxsKHRo
aXMsIHRoaXMpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBB
c3NlcnRpb25FcnJvcikgeworICAgICAgICAgICAgdGhyb3cgZTsKKyAgICAgICAgfQorICAgICAg
ICAvLyBBc3NlcnRpb25zIGZvciBiZWhhdmlvdXIgb2YgdGhlIGlkbGhhcm5lc3MuanMgZW5naW5l
LgorICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBJZGxIYXJuZXNzRXJyb3IpIHsKKyAgICAg
ICAgICAgIGVycm9yID0gZXJyb3IubWVzc2FnZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZS5t
ZXNzYWdlICE9PSBlcnJvcikgeworICAgICAgICAgICAgdGhyb3cgbmV3IElkbEhhcm5lc3NFcnJv
cihgJHtpZGxBcnJheUZ1bmN9IHRocmV3ICIke2V9Iiwgbm90IHRoZSBleHBlY3RlZCBJZGxIYXJu
ZXNzRXJyb3IgIiR7ZXJyb3J9ImApOworICAgICAgICB9CisgICAgICAgIHJldHVybjsKICAgICB9
Ci0gICAgdGhyb3cgIlVuZXhwZWN0ZWQgZ2xvYmFsIG9iamVjdCI7CisgICAgdGhyb3cgbmV3IElk
bEhhcm5lc3NFcnJvcihgJHtpZGxBcnJheUZ1bmN9IGRpZCBub3QgdGhyb3cgdGhlIGV4cGVjdGVk
IElkbEhhcm5lc3NFcnJvcmApOwogfQogCi0vL0B9CiBJZGxBcnJheS5wcm90b3R5cGUudGVzdCA9
IGZ1bmN0aW9uKCkKLS8vQHsKIHsKICAgICAvKiogRW50cnkgcG9pbnQuICBTZWUgZG9jdW1lbnRh
dGlvbiBhdCBiZWdpbm5pbmcgb2YgZmlsZS4gKi8KIAotICAgIC8vIEZpcnN0IG1lcmdlIGluIGFs
bCB0aGUgcGFydGlhbCBpbnRlcmZhY2VzIGFuZCBpbXBsZW1lbnRzIHN0YXRlbWVudHMgd2UKLSAg
ICAvLyBlbmNvdW50ZXJlZC4KLSAgICB0aGlzLnBhcnRpYWxzLmZvckVhY2goZnVuY3Rpb24ocGFy
c2VkX2lkbCkKLSAgICB7Ci0gICAgICAgIGlmICghKHBhcnNlZF9pZGwubmFtZSBpbiB0aGlzLm1l
bWJlcnMpCi0gICAgICAgIHx8ICEodGhpcy5tZW1iZXJzW3BhcnNlZF9pZGwubmFtZV0gaW5zdGFu
Y2VvZiBJZGxJbnRlcmZhY2UpKQotICAgICAgICB7Ci0gICAgICAgICAgICB0aHJvdyAiUGFydGlh
bCBpbnRlcmZhY2UgIiArIHBhcnNlZF9pZGwubmFtZSArICIgd2l0aCBubyBvcmlnaW5hbCBpbnRl
cmZhY2UiOworICAgIC8vIEZpcnN0IG1lcmdlIGluIGFsbCBwYXJ0aWFsIGRlZmluaXRpb25zIGFu
ZCBpbnRlcmZhY2UgbWl4aW5zLgorICAgIHRoaXMubWVyZ2VfcGFydGlhbHMoKTsKKyAgICB0aGlz
Lm1lcmdlX21peGlucygpOworCisgICAgLy8gQXNzZXJ0IEIgZGVmaW5lZCBmb3IgQSA6IEIKKyAg
ICBmb3IgKGNvbnN0IG1lbWJlciBvZiBPYmplY3QudmFsdWVzKHRoaXMubWVtYmVycykuZmlsdGVy
KG0gPT4gbS5iYXNlKSkgeworICAgICAgICBjb25zdCBsaHMgPSBtZW1iZXIubmFtZTsKKyAgICAg
ICAgY29uc3QgcmhzID0gbWVtYmVyLmJhc2U7CisgICAgICAgIGlmICghKHJocyBpbiB0aGlzLm1l
bWJlcnMpKSB0aHJvdyBuZXcgSWRsSGFybmVzc0Vycm9yKGAke2xoc30gaW5oZXJpdHMgJHtyaHN9
LCBidXQgJHtyaHN9IGlzIHVuZGVmaW5lZC5gKTsKKyAgICAgICAgY29uc3QgbGhzX2lzX2ludGVy
ZmFjZSA9IHRoaXMubWVtYmVyc1tsaHNdIGluc3RhbmNlb2YgSWRsSW50ZXJmYWNlOworICAgICAg
ICBjb25zdCByaHNfaXNfaW50ZXJmYWNlID0gdGhpcy5tZW1iZXJzW3Joc10gaW5zdGFuY2VvZiBJ
ZGxJbnRlcmZhY2U7CisgICAgICAgIGlmIChyaHNfaXNfaW50ZXJmYWNlICE9IGxoc19pc19pbnRl
cmZhY2UpIHsKKyAgICAgICAgICAgIGlmICghbGhzX2lzX2ludGVyZmFjZSkgdGhyb3cgbmV3IElk
bEhhcm5lc3NFcnJvcihgJHtsaHN9IGluaGVyaXRzICR7cmhzfSwgYnV0ICR7bGhzfSBpcyBub3Qg
YW4gaW50ZXJmYWNlLmApOworICAgICAgICAgICAgaWYgKCFyaHNfaXNfaW50ZXJmYWNlKSB0aHJv
dyBuZXcgSWRsSGFybmVzc0Vycm9yKGAke2xoc30gaW5oZXJpdHMgJHtyaHN9LCBidXQgJHtyaHN9
IGlzIG5vdCBhbiBpbnRlcmZhY2UuYCk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHBhcnNlZF9p
ZGwuZXh0QXR0cnMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHBhcnNlZF9pZGwuZXh0QXR0cnMu
Zm9yRWFjaChmdW5jdGlvbihleHRBdHRyKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IHRoaXMubWVtYmVyc1twYXJzZWRfaWRsLm5hbWVdLmV4dEF0dHJzLnB1c2goZXh0QXR0cik7Ci0g
ICAgICAgICAgICB9LmJpbmQodGhpcykpOwotICAgICAgICB9Ci0gICAgICAgIHBhcnNlZF9pZGwu
bWVtYmVycy5mb3JFYWNoKGZ1bmN0aW9uKG1lbWJlcikKLSAgICAgICAgewotICAgICAgICAgICAg
dGhpcy5tZW1iZXJzW3BhcnNlZF9pZGwubmFtZV0ubWVtYmVycy5wdXNoKG5ldyBJZGxJbnRlcmZh
Y2VNZW1iZXIobWVtYmVyKSk7Ci0gICAgICAgIH0uYmluZCh0aGlzKSk7Ci0gICAgfS5iaW5kKHRo
aXMpKTsKLSAgICB0aGlzLnBhcnRpYWxzID0gW107Ci0KLSAgICBmb3IgKHZhciBsaHMgaW4gdGhp
c1siaW1wbGVtZW50cyJdKQotICAgIHsKLSAgICAgICAgdGhpcy5yZWN1cnNpdmVseV9nZXRfaW1w
bGVtZW50cyhsaHMpLmZvckVhY2goZnVuY3Rpb24ocmhzKQotICAgICAgICB7Ci0gICAgICAgICAg
ICB2YXIgZXJyU3RyID0gbGhzICsgIiBpbXBsZW1lbnRzICIgKyByaHMgKyAiLCBidXQgIjsKLSAg
ICAgICAgICAgIGlmICghKGxocyBpbiB0aGlzLm1lbWJlcnMpKSB0aHJvdyBlcnJTdHIgKyBsaHMg
KyAiIGlzIHVuZGVmaW5lZC4iOwotICAgICAgICAgICAgaWYgKCEodGhpcy5tZW1iZXJzW2xoc10g
aW5zdGFuY2VvZiBJZGxJbnRlcmZhY2UpKSB0aHJvdyBlcnJTdHIgKyBsaHMgKyAiIGlzIG5vdCBh
biBpbnRlcmZhY2UuIjsKLSAgICAgICAgICAgIGlmICghKHJocyBpbiB0aGlzLm1lbWJlcnMpKSB0
aHJvdyBlcnJTdHIgKyByaHMgKyAiIGlzIHVuZGVmaW5lZC4iOwotICAgICAgICAgICAgaWYgKCEo
dGhpcy5tZW1iZXJzW3Joc10gaW5zdGFuY2VvZiBJZGxJbnRlcmZhY2UpKSB0aHJvdyBlcnJTdHIg
KyByaHMgKyAiIGlzIG5vdCBhbiBpbnRlcmZhY2UuIjsKLSAgICAgICAgICAgIHRoaXMubWVtYmVy
c1tyaHNdLm1lbWJlcnMuZm9yRWFjaChmdW5jdGlvbihtZW1iZXIpCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgdGhpcy5tZW1iZXJzW2xoc10ubWVtYmVycy5wdXNoKG5ldyBJZGxJbnRl
cmZhY2VNZW1iZXIobWVtYmVyKSk7Ci0gICAgICAgICAgICB9LmJpbmQodGhpcykpOwotICAgICAg
ICB9LmJpbmQodGhpcykpOworICAgICAgICAvLyBDaGVjayBmb3IgY2lyY3VsYXIgZGVwZW5kZW5j
aWVzLgorICAgICAgICBtZW1iZXIuZ2V0X3JldmVyc2VfaW5oZXJpdGFuY2Vfc3RhY2soKTsKICAg
ICB9Ci0gICAgdGhpc1siaW1wbGVtZW50cyJdID0ge307CiAKICAgICBPYmplY3QuZ2V0T3duUHJv
cGVydHlOYW1lcyh0aGlzLm1lbWJlcnMpLmZvckVhY2goZnVuY3Rpb24obWVtYmVyTmFtZSkgewog
ICAgICAgICB2YXIgbWVtYmVyID0gdGhpcy5tZW1iZXJzW21lbWJlck5hbWVdOwpAQCAtMzk2LDE1
ICs3MjIsOSBAQCBJZGxBcnJheS5wcm90b3R5cGUudGVzdCA9IGZ1bmN0aW9uKCkKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIHZhciBleHBvc2VkID0gbWVtYmVyLmV4
dEF0dHJzLmZpbHRlcihmdW5jdGlvbihhKSB7IHJldHVybiBhLm5hbWUgPT0gIkV4cG9zZWQiIH0p
OwotICAgICAgICBpZiAoZXhwb3NlZC5sZW5ndGggPiAxKSB7Ci0gICAgICAgICAgICB0aHJvdyAi
VW5leHBlY3RlZCBFeHBvc2VkIGV4dGVuZGVkIGF0dHJpYnV0ZXMgb24gIiArIG1lbWJlck5hbWUg
KyAiOiAiICsgZXhwb3NlZDsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciBnbG9iYWxzID0gZXhw
b3NlZC5sZW5ndGggPT09IDEKLSAgICAgICAgICAgICAgICAgICAgPyBleHBvc2VkWzBdLnJocy52
YWx1ZQotICAgICAgICAgICAgICAgICAgICA6IFsiV2luZG93Il07CisgICAgICAgIHZhciBnbG9i
YWxzID0gZXhwb3N1cmVfc2V0KG1lbWJlcik7CiAgICAgICAgIG1lbWJlci5leHBvc2VkID0gZXhw
b3NlZF9pbihnbG9iYWxzKTsKKyAgICAgICAgbWVtYmVyLmV4cG9zdXJlU2V0ID0gZ2xvYmFsczsK
ICAgICB9LmJpbmQodGhpcykpOwogCiAgICAgLy8gTm93IHJ1biB0ZXN0KCkgb24gZXZlcnkgbWVt
YmVyLCBhbmQgdGVzdF9vYmplY3QoKSBmb3IgZXZlcnkgb2JqZWN0LgpAQCAtNDEzLDE4ICs3MzMs
MTk0IEBAIElkbEFycmF5LnByb3RvdHlwZS50ZXN0ID0gZnVuY3Rpb24oKQogICAgICAgICB0aGlz
Lm1lbWJlcnNbbmFtZV0udGVzdCgpOwogICAgICAgICBpZiAobmFtZSBpbiB0aGlzLm9iamVjdHMp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHRoaXMub2JqZWN0c1tuYW1lXS5mb3JFYWNoKGZ1bmN0
aW9uKHN0cikKKyAgICAgICAgICAgIGNvbnN0IG9iamVjdHMgPSB0aGlzLm9iamVjdHNbbmFtZV07
CisgICAgICAgICAgICBpZiAoIW9iamVjdHMgfHwgIUFycmF5LmlzQXJyYXkob2JqZWN0cykpIHsK
KyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWRsSGFybmVzc0Vycm9yKGBJbnZhbGlkIG9yIGVt
cHR5IG9iamVjdHMgZm9yIG1lbWJlciAke25hbWV9YCk7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBvYmplY3RzLmZvckVhY2goZnVuY3Rpb24oc3RyKQogICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIGlmICghdGhpcy5tZW1iZXJzW25hbWVdIHx8ICEodGhpcy5tZW1iZXJzW25hbWVd
IGluc3RhbmNlb2YgSWRsSW50ZXJmYWNlKSkgeworICAgICAgICAgICAgICAgICAgICB0aHJvdyBu
ZXcgSWRsSGFybmVzc0Vycm9yKGBJbnZhbGlkIG9iamVjdCBtZW1iZXIgbmFtZSAke25hbWV9YCk7
CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHRoaXMubWVtYmVyc1tuYW1lXS50
ZXN0X29iamVjdChzdHIpOwogICAgICAgICAgICAgfS5iaW5kKHRoaXMpKTsKICAgICAgICAgfQog
ICAgIH0KIH07CiAKLS8vQH0KK0lkbEFycmF5LnByb3RvdHlwZS5tZXJnZV9wYXJ0aWFscyA9IGZ1
bmN0aW9uKCkKK3sKKyAgICBjb25zdCB0ZXN0ZWRQYXJ0aWFscyA9IG5ldyBNYXAoKTsKKyAgICB0
aGlzLnBhcnRpYWxzLmZvckVhY2goZnVuY3Rpb24ocGFyc2VkX2lkbCkKKyAgICB7CisgICAgICAg
IGNvbnN0IG9yaWdpbmFsRXhpc3RzID0gcGFyc2VkX2lkbC5uYW1lIGluIHRoaXMubWVtYmVycwor
ICAgICAgICAgICAgJiYgKHRoaXMubWVtYmVyc1twYXJzZWRfaWRsLm5hbWVdIGluc3RhbmNlb2Yg
SWRsSW50ZXJmYWNlCisgICAgICAgICAgICAgICAgfHwgdGhpcy5tZW1iZXJzW3BhcnNlZF9pZGwu
bmFtZV0gaW5zdGFuY2VvZiBJZGxEaWN0aW9uYXJ5CisgICAgICAgICAgICAgICAgfHwgdGhpcy5t
ZW1iZXJzW3BhcnNlZF9pZGwubmFtZV0gaW5zdGFuY2VvZiBJZGxOYW1lc3BhY2UpOworCisgICAg
ICAgIC8vIEVuc3VyZSB1bmlxdWUgdGVzdCBuYW1lIGluIGNhc2Ugb2YgbXVsdGlwbGUgcGFydGlh
bHMuCisgICAgICAgIGxldCBwYXJ0aWFsVGVzdE5hbWUgPSBwYXJzZWRfaWRsLm5hbWU7CisgICAg
ICAgIGxldCBwYXJ0aWFsVGVzdENvdW50ID0gMTsKKyAgICAgICAgaWYgKHRlc3RlZFBhcnRpYWxz
LmhhcyhwYXJzZWRfaWRsLm5hbWUpKSB7CisgICAgICAgICAgICBwYXJ0aWFsVGVzdENvdW50ICs9
IHRlc3RlZFBhcnRpYWxzLmdldChwYXJzZWRfaWRsLm5hbWUpOworICAgICAgICAgICAgcGFydGlh
bFRlc3ROYW1lID0gYCR7cGFydGlhbFRlc3ROYW1lfVske3BhcnRpYWxUZXN0Q291bnR9XWA7Cisg
ICAgICAgIH0KKyAgICAgICAgdGVzdGVkUGFydGlhbHMuc2V0KHBhcnNlZF9pZGwubmFtZSwgcGFy
dGlhbFRlc3RDb3VudCk7CisKKyAgICAgICAgaWYgKCFwYXJzZWRfaWRsLnVudGVzdGVkKSB7Cisg
ICAgICAgICAgICB0ZXN0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfdHJ1
ZShvcmlnaW5hbEV4aXN0cywgYE9yaWdpbmFsICR7cGFyc2VkX2lkbC50eXBlfSBzaG91bGQgYmUg
ZGVmaW5lZGApOworCisgICAgICAgICAgICAgICAgdmFyIGV4cGVjdGVkOworICAgICAgICAgICAg
ICAgIHN3aXRjaCAocGFyc2VkX2lkbC50eXBlKSB7CisgICAgICAgICAgICAgICAgICAgIGNhc2Ug
J2RpY3Rpb25hcnknOiBleHBlY3RlZCA9IElkbERpY3Rpb25hcnk7IGJyZWFrOworICAgICAgICAg
ICAgICAgICAgICBjYXNlICduYW1lc3BhY2UnOiBleHBlY3RlZCA9IElkbE5hbWVzcGFjZTsgYnJl
YWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2ludGVyZmFjZSc6CisgICAgICAgICAgICAg
ICAgICAgIGNhc2UgJ2ludGVyZmFjZSBtaXhpbic6CisgICAgICAgICAgICAgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCA9IElkbEludGVyZmFjZTsgYnJl
YWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGFzc2VydF90cnVlKAorICAg
ICAgICAgICAgICAgICAgICBleHBlY3RlZC5wcm90b3R5cGUuaXNQcm90b3R5cGVPZih0aGlzLm1l
bWJlcnNbcGFyc2VkX2lkbC5uYW1lXSksCisgICAgICAgICAgICAgICAgICAgIGBPcmlnaW5hbCAk
e3BhcnNlZF9pZGwubmFtZX0gZGVmaW5pdGlvbiBzaG91bGQgaGF2ZSB0eXBlICR7cGFyc2VkX2lk
bC50eXBlfWApOworICAgICAgICAgICAgfS5iaW5kKHRoaXMpLCBgUGFydGlhbCAke3BhcnNlZF9p
ZGwudHlwZX0gJHtwYXJ0aWFsVGVzdE5hbWV9OiBvcmlnaW5hbCAke3BhcnNlZF9pZGwudHlwZX0g
ZGVmaW5lZGApOworICAgICAgICB9CisgICAgICAgIGlmICghb3JpZ2luYWxFeGlzdHMpIHsKKyAg
ICAgICAgICAgIC8vIE5vdCBnb29kLi4gYnV0IGtlZXAgY2FsbSBhbmQgY2Fycnkgb24uCisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAocGFyc2VkX2lkbC5leHRB
dHRycykKKyAgICAgICAgeworICAgICAgICAgICAgLy8gU3BlY2lhbC1jYXNlICJFeHBvc2VkIi4g
TXVzdCBiZSBhIHN1YnNldCBvZiBvcmlnaW5hbCBpbnRlcmZhY2UncyBleHBvc3VyZS4KKyAgICAg
ICAgICAgIC8vIEV4cG9zZWQgb24gYSBwYXJ0aWFsIGlzIHRoZSBlcXVpdmFsZW50IG9mIGhhdmlu
ZyB0aGUgc2FtZSBFeHBvc2VkIG9uIGFsbCBuZXN0ZWQgbWVtYmVycy4KKyAgICAgICAgICAgIC8v
IFNlZSBodHRwczovL2dpdGh1Yi5jb20vaGV5Y2FtL3dlYmlkbC9pc3N1ZXMvMTU0IGZvciBkaXNj
cmVwZW5jeSBiZXR3ZWVuIEV4cG9zZWQgYW5kCisgICAgICAgICAgICAvLyBvdGhlciBleHRlbmRl
ZCBhdHRyaWJ1dGVzIG9uIHBhcnRpYWwgaW50ZXJmYWNlcy4KKyAgICAgICAgICAgIGNvbnN0IGV4
cG9zdXJlQXR0ciA9IHBhcnNlZF9pZGwuZXh0QXR0cnMuZmluZChhID0+IGEubmFtZSA9PT0gIkV4
cG9zZWQiKTsKKyAgICAgICAgICAgIGlmIChleHBvc3VyZUF0dHIpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoIXBhcnNlZF9pZGwudW50ZXN0ZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdChm
dW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJ0aWFsRXhwb3N1
cmUgPSBleHBvc3VyZV9zZXQocGFyc2VkX2lkbCk7CisgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBtZW1iZXJFeHBvc3VyZSA9IGV4cG9zdXJlX3NldCh0aGlzLm1lbWJlcnNbcGFyc2VkX2lk
bC5uYW1lXSk7CisgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0aWFsRXhwb3N1cmUuZm9yRWFj
aChuYW1lID0+IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW1lbWJlckV4cG9z
dXJlIHx8ICFtZW1iZXJFeHBvc3VyZS5oYXMobmFtZSkpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdGhyb3cgbmV3IElkbEhhcm5lc3NFcnJvcigKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGBQYXJ0aWFsICR7cGFyc2VkX2lkbC5uYW1lfSAke3BhcnNlZF9p
ZGwudHlwZX0gaXMgZXhwb3NlZCB0byAnJHtuYW1lfScsIHRoZSBvcmlnaW5hbCAke3BhcnNlZF9p
ZGwudHlwZX0gaXMgbm90LmApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgICAgICB9LmJpbmQodGhpcyks
IGBQYXJ0aWFsICR7cGFyc2VkX2lkbC50eXBlfSAke3BhcnRpYWxUZXN0TmFtZX06IHZhbGlkIGV4
cG9zdXJlIHNldGApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBwYXJzZWRf
aWRsLm1lbWJlcnMuZm9yRWFjaChmdW5jdGlvbiAobWVtYmVyKSB7CisgICAgICAgICAgICAgICAg
ICAgIG1lbWJlci5leHRBdHRycy5wdXNoKGV4cG9zdXJlQXR0cik7CisgICAgICAgICAgICAgICAg
fS5iaW5kKHRoaXMpKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcGFyc2VkX2lkbC5l
eHRBdHRycy5mb3JFYWNoKGZ1bmN0aW9uKGV4dEF0dHIpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgLy8gIkV4cG9zZWQiIGFscmVhZHkgaGFuZGxlZCBhYm92ZS4KKyAgICAgICAgICAg
ICAgICBpZiAoZXh0QXR0ci5uYW1lID09PSAiRXhwb3NlZCIpIHsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB0aGlzLm1lbWJl
cnNbcGFyc2VkX2lkbC5uYW1lXS5leHRBdHRycy5wdXNoKGV4dEF0dHIpOworICAgICAgICAgICAg
fS5iaW5kKHRoaXMpKTsKKyAgICAgICAgfQorICAgICAgICBpZiAocGFyc2VkX2lkbC5tZW1iZXJz
Lmxlbmd0aCkgeworICAgICAgICAgICAgdGVzdChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAg
ICAgdmFyIGNsYXNoID0gcGFyc2VkX2lkbC5tZW1iZXJzLmZpbmQoZnVuY3Rpb24obWVtYmVyKSB7
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm1lbWJlcnNbcGFyc2VkX2lkbC5uYW1l
XS5tZW1iZXJzLmZpbmQoZnVuY3Rpb24obSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHRoaXMuYXJlX2R1cGxpY2F0ZV9tZW1iZXJzKG0sIG1lbWJlcik7CisgICAgICAgICAgICAg
ICAgICAgIH0uYmluZCh0aGlzKSk7CisgICAgICAgICAgICAgICAgfS5iaW5kKHRoaXMpKTsKKyAg
ICAgICAgICAgICAgICBwYXJzZWRfaWRsLm1lbWJlcnMuZm9yRWFjaChmdW5jdGlvbihtZW1iZXIp
CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB0aGlzLm1lbWJlcnNbcGFy
c2VkX2lkbC5uYW1lXS5tZW1iZXJzLnB1c2gobmV3IElkbEludGVyZmFjZU1lbWJlcihtZW1iZXIp
KTsKKyAgICAgICAgICAgICAgICB9LmJpbmQodGhpcykpOworICAgICAgICAgICAgICAgIGFzc2Vy
dF90cnVlKCFjbGFzaCwgIm1lbWJlciAiICsgKGNsYXNoICYmIGNsYXNoLm5hbWUpICsgIiBpcyB1
bmlxdWUiKTsKKyAgICAgICAgICAgIH0uYmluZCh0aGlzKSwgYFBhcnRpYWwgJHtwYXJzZWRfaWRs
LnR5cGV9ICR7cGFydGlhbFRlc3ROYW1lfTogbWVtYmVyIG5hbWVzIGFyZSB1bmlxdWVgKTsKKyAg
ICAgICAgfQorICAgIH0uYmluZCh0aGlzKSk7CisgICAgdGhpcy5wYXJ0aWFscyA9IFtdOworfQor
CitJZGxBcnJheS5wcm90b3R5cGUubWVyZ2VfbWl4aW5zID0gZnVuY3Rpb24oKQoreworICAgIGZv
ciAoY29uc3QgcGFyc2VkX2lkbCBvZiB0aGlzLmluY2x1ZGVzKQorICAgIHsKKyAgICAgICAgY29u
c3QgbGhzID0gcGFyc2VkX2lkbC50YXJnZXQ7CisgICAgICAgIGNvbnN0IHJocyA9IHBhcnNlZF9p
ZGwuaW5jbHVkZXM7CisKKyAgICAgICAgdmFyIGVyclN0ciA9IGxocyArICIgaW5jbHVkZXMgIiAr
IHJocyArICIsIGJ1dCAiOworICAgICAgICBpZiAoIShsaHMgaW4gdGhpcy5tZW1iZXJzKSkgdGhy
b3cgZXJyU3RyICsgbGhzICsgIiBpcyB1bmRlZmluZWQuIjsKKyAgICAgICAgaWYgKCEodGhpcy5t
ZW1iZXJzW2xoc10gaW5zdGFuY2VvZiBJZGxJbnRlcmZhY2UpKSB0aHJvdyBlcnJTdHIgKyBsaHMg
KyAiIGlzIG5vdCBhbiBpbnRlcmZhY2UuIjsKKyAgICAgICAgaWYgKCEocmhzIGluIHRoaXMubWVt
YmVycykpIHRocm93IGVyclN0ciArIHJocyArICIgaXMgdW5kZWZpbmVkLiI7CisgICAgICAgIGlm
ICghKHRoaXMubWVtYmVyc1tyaHNdIGluc3RhbmNlb2YgSWRsSW50ZXJmYWNlKSkgdGhyb3cgZXJy
U3RyICsgcmhzICsgIiBpcyBub3QgYW4gaW50ZXJmYWNlLiI7CisKKyAgICAgICAgaWYgKHRoaXMu
bWVtYmVyc1tyaHNdLm1lbWJlcnMubGVuZ3RoKSB7CisgICAgICAgICAgICB0ZXN0KGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgICAgICB2YXIgY2xhc2ggPSB0aGlzLm1lbWJlcnNbcmhzXS5tZW1i
ZXJzLmZpbmQoZnVuY3Rpb24obWVtYmVyKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0
aGlzLm1lbWJlcnNbbGhzXS5tZW1iZXJzLmZpbmQoZnVuY3Rpb24obSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXJlX2R1cGxpY2F0ZV9tZW1iZXJzKG0sIG1lbWJlcik7
CisgICAgICAgICAgICAgICAgICAgIH0uYmluZCh0aGlzKSk7CisgICAgICAgICAgICAgICAgfS5i
aW5kKHRoaXMpKTsKKyAgICAgICAgICAgICAgICB0aGlzLm1lbWJlcnNbcmhzXS5tZW1iZXJzLmZv
ckVhY2goZnVuY3Rpb24obWVtYmVyKSB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydF90cnVl
KAorICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tZW1iZXJzW2xoc10ubWVtYmVycy5ldmVy
eShtID0+ICF0aGlzLmFyZV9kdXBsaWNhdGVfbWVtYmVycyhtLCBtZW1iZXIpKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICJtZW1iZXIgIiArIG1lbWJlci5uYW1lICsgIiBpcyB1bmlxdWUiKTsK
KyAgICAgICAgICAgICAgICAgICAgdGhpcy5tZW1iZXJzW2xoc10ubWVtYmVycy5wdXNoKG5ldyBJ
ZGxJbnRlcmZhY2VNZW1iZXIobWVtYmVyKSk7CisgICAgICAgICAgICAgICAgfS5iaW5kKHRoaXMp
KTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfdHJ1ZSghY2xhc2gsICJtZW1iZXIgIiArIChjbGFz
aCAmJiBjbGFzaC5uYW1lKSArICIgaXMgdW5pcXVlIik7CisgICAgICAgICAgICB9LmJpbmQodGhp
cyksIGxocyArICIgaW5jbHVkZXMgIiArIHJocyArICI6IG1lbWJlciBuYW1lcyBhcmUgdW5pcXVl
Iik7CisgICAgICAgIH0KKyAgICB9CisgICAgdGhpcy5pbmNsdWRlcyA9IFtdOworfQorCitJZGxB
cnJheS5wcm90b3R5cGUuYXJlX2R1cGxpY2F0ZV9tZW1iZXJzID0gZnVuY3Rpb24obTEsIG0yKSB7
CisgICAgaWYgKG0xLm5hbWUgIT09IG0yLm5hbWUpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKyAgICBpZiAobTEudHlwZSA9PT0gJ29wZXJhdGlvbicgJiYgbTIudHlwZSA9PT0gJ29w
ZXJhdGlvbicKKyAgICAgICAgJiYgbTEuYXJndW1lbnRzLmxlbmd0aCAhPT0gbTIuYXJndW1lbnRz
Lmxlbmd0aCkgeworICAgICAgICAvLyBNZXRob2Qgb3ZlcmxvYWQuIFRPRE86IERlZXAgY29tcGFy
aXNvbiBvZiBhcmd1bWVudHMuCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0
dXJuIHRydWU7Cit9CisKIElkbEFycmF5LnByb3RvdHlwZS5hc3NlcnRfdHlwZV9pcyA9IGZ1bmN0
aW9uKHZhbHVlLCB0eXBlKQotLy9AewogeworICAgIGlmICh0eXBlLmlkbFR5cGUgaW4gdGhpcy5t
ZW1iZXJzCisgICAgJiYgdGhpcy5tZW1iZXJzW3R5cGUuaWRsVHlwZV0gaW5zdGFuY2VvZiBJZGxU
eXBlZGVmKSB7CisgICAgICAgIHRoaXMuYXNzZXJ0X3R5cGVfaXModmFsdWUsIHRoaXMubWVtYmVy
c1t0eXBlLmlkbFR5cGVdLmlkbFR5cGUpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
aWYgKHR5cGUubnVsbGFibGUgJiYgdmFsdWUgPT09IG51bGwpCisgICAgeworICAgICAgICAvLyBU
aGlzIGlzIGZpbmUKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICh0eXBlLnVuaW9u
KSB7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdHlwZS5pZGxUeXBlLmxlbmd0aDsgaSsr
KSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIHRoaXMuYXNzZXJ0X3R5cGVf
aXModmFsdWUsIHR5cGUuaWRsVHlwZVtpXSk7CisgICAgICAgICAgICAgICAgLy8gTm8gQXNzZXJ0
aW9uRXJyb3IsIHNvIHdlIG1hdGNoIG9uZSB0eXBlIGluIHRoZSB1bmlvbgorICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgICAgIGlm
IChlIGluc3RhbmNlb2YgQXNzZXJ0aW9uRXJyb3IpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8g
V2UgZGlkbid0IG1hdGNoIHRoaXMgdHlwZSwgbGV0J3MgdHJ5IHNvbWUgb3RoZXJzCisgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICB0aHJvdyBlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIC8vIFRPRE86IElz
IHRoZXJlIGEgbmljZSB3YXkgdG8gbGlzdCB0aGUgdW5pb24ncyB0eXBlcyBpbiB0aGUgbWVzc2Fn
ZT8KKyAgICAgICAgYXNzZXJ0X3RydWUoZmFsc2UsICJBdHRyaWJ1dGUgaGFzIHZhbHVlICIgKyBm
b3JtYXRfdmFsdWUodmFsdWUpCisgICAgICAgICAgICAgICAgICAgICsgIiB3aGljaCBkb2Vzbid0
IG1hdGNoIGFueSBvZiB0aGUgdHlwZXMgaW4gdGhlIHVuaW9uIik7CisKKyAgICB9CisKICAgICAv
KioKICAgICAgKiBIZWxwZXIgZnVuY3Rpb24gdGhhdCB0ZXN0cyB0aGF0IHZhbHVlIGlzIGFuIGlu
c3RhbmNlIG9mIHR5cGUgYWNjb3JkaW5nCiAgICAgICogdG8gdGhlIHJ1bGVzIG9mIFdlYklETC4g
IHZhbHVlIGlzIGFueSBKYXZhU2NyaXB0IHZhbHVlLCBhbmQgdHlwZSBpcyBhbgpAQCAtNDM4LDQz
ICs5MzQsNDkgQEAgSWRsQXJyYXkucHJvdG90eXBlLmFzc2VydF90eXBlX2lzID0gZnVuY3Rpb24o
dmFsdWUsIHR5cGUpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAodHlwZS5udWxs
YWJsZSAmJiB2YWx1ZSA9PT0gbnVsbCkKLSAgICB7Ci0gICAgICAgIC8vIFRoaXMgaXMgZmluZQot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgaWYgKHR5cGUuYXJyYXkpCiAgICAgewogICAg
ICAgICAvLyBUT0RPOiBub3Qgc3VwcG9ydGVkIHlldAogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgaWYgKHR5cGUuc2VxdWVuY2UpCisgICAgaWYgKHR5cGUuZ2VuZXJpYyA9PT0gInNlcXVl
bmNlIikKICAgICB7Ci0gICAgICAgIGFzc2VydF90cnVlKEFycmF5LmlzQXJyYXkodmFsdWUpLCAi
aXMgbm90IGFycmF5Iik7CisgICAgICAgIGFzc2VydF90cnVlKEFycmF5LmlzQXJyYXkodmFsdWUp
LCAic2hvdWxkIGJlIGFuIEFycmF5Iik7CiAgICAgICAgIGlmICghdmFsdWUubGVuZ3RoKQogICAg
ICAgICB7CiAgICAgICAgICAgICAvLyBOb3RoaW5nIHdlIGNhbiBkby4KICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQotICAgICAgICB0aGlzLmFzc2VydF90eXBlX2lzKHZhbHVlWzBdLCB0
eXBlLmlkbFR5cGUuaWRsVHlwZSk7CisgICAgICAgIHRoaXMuYXNzZXJ0X3R5cGVfaXModmFsdWVb
MF0sIHR5cGUuaWRsVHlwZVswXSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAo
dHlwZS5nZW5lcmljID09PSAiUHJvbWlzZSIpIHsKLSAgICAgICAgYXNzZXJ0X3RydWUoInRoZW4i
IGluIHZhbHVlLCAiQXR0cmlidXRlIHdpdGggYSBQcm9taXNlIHR5cGUgaGFzIGEgdGhlbiBwcm9w
ZXJ0eSIpOworICAgICAgICBhc3NlcnRfdHJ1ZSgidGhlbiIgaW4gdmFsdWUsICJBdHRyaWJ1dGUg
d2l0aCBhIFByb21pc2UgdHlwZSBzaG91bGQgaGF2ZSBhIHRoZW4gcHJvcGVydHkiKTsKICAgICAg
ICAgLy8gVE9ETzogSWRlYWxseSwgd2Ugd291bGQgY2hlY2sgb24gcHJvamVjdCBmdWxmaWxsbWVu
dAogICAgICAgICAvLyB0aGF0IHdlIGdldCB0aGUgcmlnaHQgdHlwZQogICAgICAgICAvLyBidXQg
dGhhdCB3b3VsZCByZXF1aXJlIG1ha2luZyB0aGUgdHlwZSBjaGVjayBhc3luYwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgdHlwZSA9IHR5cGUuaWRsVHlwZTsKKyAgICBpZiAodHlwZS5n
ZW5lcmljID09PSAiRnJvemVuQXJyYXkiKSB7CisgICAgICAgIGFzc2VydF90cnVlKEFycmF5Lmlz
QXJyYXkodmFsdWUpLCAiVmFsdWUgc2hvdWxkIGJlIGFycmF5Iik7CisgICAgICAgIGFzc2VydF90
cnVlKE9iamVjdC5pc0Zyb3plbih2YWx1ZSksICJWYWx1ZSBzaG91bGQgYmUgZnJvemVuIik7Cisg
ICAgICAgIGlmICghdmFsdWUubGVuZ3RoKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBOb3Ro
aW5nIHdlIGNhbiBkby4KKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICB0
aGlzLmFzc2VydF90eXBlX2lzKHZhbHVlWzBdLCB0eXBlLmlkbFR5cGVbMF0pOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgdHlwZSA9IEFycmF5LmlzQXJyYXkodHlwZS5pZGxUeXBlKSA/
IHR5cGUuaWRsVHlwZVswXSA6IHR5cGUuaWRsVHlwZTsKIAogICAgIHN3aXRjaCh0eXBlKQogICAg
IHsKLSAgICAgICAgY2FzZSAidm9pZCI6CisgICAgICAgIGNhc2UgInVuZGVmaW5lZCI6CiAgICAg
ICAgICAgICBhc3NlcnRfZXF1YWxzKHZhbHVlLCB1bmRlZmluZWQpOwogICAgICAgICAgICAgcmV0
dXJuOwogCkBAIC00ODQsMzggKzk4NiwzOCBAQCBJZGxBcnJheS5wcm90b3R5cGUuYXNzZXJ0X3R5
cGVfaXMgPSBmdW5jdGlvbih2YWx1ZSwgdHlwZSkKIAogICAgICAgICBjYXNlICJieXRlIjoKICAg
ICAgICAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIHZhbHVlLCAibnVtYmVyIik7Ci0gICAgICAg
ICAgICBhc3NlcnRfZXF1YWxzKHZhbHVlLCBNYXRoLmZsb29yKHZhbHVlKSwgIm5vdCBhbiBpbnRl
Z2VyIik7Ci0gICAgICAgICAgICBhc3NlcnRfdHJ1ZSgtMTI4IDw9IHZhbHVlICYmIHZhbHVlIDw9
IDEyNywgImJ5dGUgIiArIHZhbHVlICsgIiBub3QgaW4gcmFuZ2UgWy0xMjgsIDEyN10iKTsKKyAg
ICAgICAgICAgIGFzc2VydF9lcXVhbHModmFsdWUsIE1hdGguZmxvb3IodmFsdWUpLCAic2hvdWxk
IGJlIGFuIGludGVnZXIiKTsKKyAgICAgICAgICAgIGFzc2VydF90cnVlKC0xMjggPD0gdmFsdWUg
JiYgdmFsdWUgPD0gMTI3LCAiYnl0ZSAiICsgdmFsdWUgKyAiIHNob3VsZCBiZSBpbiByYW5nZSBb
LTEyOCwgMTI3XSIpOwogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGNhc2UgIm9jdGV0
IjoKICAgICAgICAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIHZhbHVlLCAibnVtYmVyIik7Ci0g
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHZhbHVlLCBNYXRoLmZsb29yKHZhbHVlKSwgIm5vdCBh
biBpbnRlZ2VyIik7Ci0gICAgICAgICAgICBhc3NlcnRfdHJ1ZSgwIDw9IHZhbHVlICYmIHZhbHVl
IDw9IDI1NSwgIm9jdGV0ICIgKyB2YWx1ZSArICIgbm90IGluIHJhbmdlIFswLCAyNTVdIik7Cisg
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHZhbHVlLCBNYXRoLmZsb29yKHZhbHVlKSwgInNob3Vs
ZCBiZSBhbiBpbnRlZ2VyIik7CisgICAgICAgICAgICBhc3NlcnRfdHJ1ZSgwIDw9IHZhbHVlICYm
IHZhbHVlIDw9IDI1NSwgIm9jdGV0ICIgKyB2YWx1ZSArICIgc2hvdWxkIGJlIGluIHJhbmdlIFsw
LCAyNTVdIik7CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgY2FzZSAic2hvcnQiOgog
ICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgdmFsdWUsICJudW1iZXIiKTsKLSAgICAg
ICAgICAgIGFzc2VydF9lcXVhbHModmFsdWUsIE1hdGguZmxvb3IodmFsdWUpLCAibm90IGFuIGlu
dGVnZXIiKTsKLSAgICAgICAgICAgIGFzc2VydF90cnVlKC0zMjc2OCA8PSB2YWx1ZSAmJiB2YWx1
ZSA8PSAzMjc2NywgInNob3J0ICIgKyB2YWx1ZSArICIgbm90IGluIHJhbmdlIFstMzI3NjgsIDMy
NzY3XSIpOworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh2YWx1ZSwgTWF0aC5mbG9vcih2YWx1
ZSksICJzaG91bGQgYmUgYW4gaW50ZWdlciIpOworICAgICAgICAgICAgYXNzZXJ0X3RydWUoLTMy
NzY4IDw9IHZhbHVlICYmIHZhbHVlIDw9IDMyNzY3LCAic2hvcnQgIiArIHZhbHVlICsgIiBzaG91
bGQgYmUgaW4gcmFuZ2UgWy0zMjc2OCwgMzI3NjddIik7CiAgICAgICAgICAgICByZXR1cm47CiAK
ICAgICAgICAgY2FzZSAidW5zaWduZWQgc2hvcnQiOgogICAgICAgICAgICAgYXNzZXJ0X2VxdWFs
cyh0eXBlb2YgdmFsdWUsICJudW1iZXIiKTsKLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHModmFs
dWUsIE1hdGguZmxvb3IodmFsdWUpLCAibm90IGFuIGludGVnZXIiKTsKLSAgICAgICAgICAgIGFz
c2VydF90cnVlKDAgPD0gdmFsdWUgJiYgdmFsdWUgPD0gNjU1MzUsICJ1bnNpZ25lZCBzaG9ydCAi
ICsgdmFsdWUgKyAiIG5vdCBpbiByYW5nZSBbMCwgNjU1MzVdIik7CisgICAgICAgICAgICBhc3Nl
cnRfZXF1YWxzKHZhbHVlLCBNYXRoLmZsb29yKHZhbHVlKSwgInNob3VsZCBiZSBhbiBpbnRlZ2Vy
Iik7CisgICAgICAgICAgICBhc3NlcnRfdHJ1ZSgwIDw9IHZhbHVlICYmIHZhbHVlIDw9IDY1NTM1
LCAidW5zaWduZWQgc2hvcnQgIiArIHZhbHVlICsgIiBzaG91bGQgYmUgaW4gcmFuZ2UgWzAsIDY1
NTM1XSIpOwogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGNhc2UgImxvbmciOgogICAg
ICAgICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgdmFsdWUsICJudW1iZXIiKTsKLSAgICAgICAg
ICAgIGFzc2VydF9lcXVhbHModmFsdWUsIE1hdGguZmxvb3IodmFsdWUpLCAibm90IGFuIGludGVn
ZXIiKTsKLSAgICAgICAgICAgIGFzc2VydF90cnVlKC0yMTQ3NDgzNjQ4IDw9IHZhbHVlICYmIHZh
bHVlIDw9IDIxNDc0ODM2NDcsICJsb25nICIgKyB2YWx1ZSArICIgbm90IGluIHJhbmdlIFstMjE0
NzQ4MzY0OCwgMjE0NzQ4MzY0N10iKTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHModmFsdWUs
IE1hdGguZmxvb3IodmFsdWUpLCAic2hvdWxkIGJlIGFuIGludGVnZXIiKTsKKyAgICAgICAgICAg
IGFzc2VydF90cnVlKC0yMTQ3NDgzNjQ4IDw9IHZhbHVlICYmIHZhbHVlIDw9IDIxNDc0ODM2NDcs
ICJsb25nICIgKyB2YWx1ZSArICIgc2hvdWxkIGJlIGluIHJhbmdlIFstMjE0NzQ4MzY0OCwgMjE0
NzQ4MzY0N10iKTsKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBjYXNlICJ1bnNpZ25l
ZCBsb25nIjoKICAgICAgICAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIHZhbHVlLCAibnVtYmVy
Iik7Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHZhbHVlLCBNYXRoLmZsb29yKHZhbHVlKSwg
Im5vdCBhbiBpbnRlZ2VyIik7Ci0gICAgICAgICAgICBhc3NlcnRfdHJ1ZSgwIDw9IHZhbHVlICYm
IHZhbHVlIDw9IDQyOTQ5NjcyOTUsICJ1bnNpZ25lZCBsb25nICIgKyB2YWx1ZSArICIgbm90IGlu
IHJhbmdlIFswLCA0Mjk0OTY3Mjk1XSIpOworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh2YWx1
ZSwgTWF0aC5mbG9vcih2YWx1ZSksICJzaG91bGQgYmUgYW4gaW50ZWdlciIpOworICAgICAgICAg
ICAgYXNzZXJ0X3RydWUoMCA8PSB2YWx1ZSAmJiB2YWx1ZSA8PSA0Mjk0OTY3Mjk1LCAidW5zaWdu
ZWQgbG9uZyAiICsgdmFsdWUgKyAiIHNob3VsZCBiZSBpbiByYW5nZSBbMCwgNDI5NDk2NzI5NV0i
KTsKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBjYXNlICJsb25nIGxvbmciOgpAQCAt
NTI1LDEyICsxMDI3LDEyIEBAIElkbEFycmF5LnByb3RvdHlwZS5hc3NlcnRfdHlwZV9pcyA9IGZ1
bmN0aW9uKHZhbHVlLCB0eXBlKQogICAgICAgICBjYXNlICJ1bnNpZ25lZCBsb25nIGxvbmciOgog
ICAgICAgICBjYXNlICJET01UaW1lU3RhbXAiOgogICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh0
eXBlb2YgdmFsdWUsICJudW1iZXIiKTsKLSAgICAgICAgICAgIGFzc2VydF90cnVlKDAgPD0gdmFs
dWUsICJ1bnNpZ25lZCBsb25nIGxvbmcgaXMgbmVnYXRpdmUiKTsKKyAgICAgICAgICAgIGFzc2Vy
dF90cnVlKDAgPD0gdmFsdWUsICJ1bnNpZ25lZCBsb25nIGxvbmcgc2hvdWxkIGJlIHBvc2l0aXZl
Iik7CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgY2FzZSAiZmxvYXQiOgogICAgICAg
ICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgdmFsdWUsICJudW1iZXIiKTsKLSAgICAgICAgICAg
IGFzc2VydF9lcXVhbHModmFsdWUsIGZyb3VuZCh2YWx1ZSksICJmbG9hdCByb3VuZGVkIHRvIDMy
LWJpdCBmbG9hdCBzaG91bGQgYmUgaXRzZWxmIik7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxz
KHZhbHVlLCBNYXRoLmZyb3VuZCh2YWx1ZSksICJmbG9hdCByb3VuZGVkIHRvIDMyLWJpdCBmbG9h
dCBzaG91bGQgYmUgaXRzZWxmIik7CiAgICAgICAgICAgICBhc3NlcnRfbm90X2VxdWFscyh2YWx1
ZSwgSW5maW5pdHkpOwogICAgICAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHModmFsdWUsIC1JbmZp
bml0eSk7CiAgICAgICAgICAgICBhc3NlcnRfbm90X2VxdWFscyh2YWx1ZSwgTmFOKTsKQEAgLTU0
Niw3ICsxMDQ4LDcgQEAgSWRsQXJyYXkucHJvdG90eXBlLmFzc2VydF90eXBlX2lzID0gZnVuY3Rp
b24odmFsdWUsIHR5cGUpCiAKICAgICAgICAgY2FzZSAidW5yZXN0cmljdGVkIGZsb2F0IjoKICAg
ICAgICAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIHZhbHVlLCAibnVtYmVyIik7Ci0gICAgICAg
ICAgICBhc3NlcnRfZXF1YWxzKHZhbHVlLCBmcm91bmQodmFsdWUpLCAidW5yZXN0cmljdGVkIGZs
b2F0IHJvdW5kZWQgdG8gMzItYml0IGZsb2F0IHNob3VsZCBiZSBpdHNlbGYiKTsKKyAgICAgICAg
ICAgIGFzc2VydF9lcXVhbHModmFsdWUsIE1hdGguZnJvdW5kKHZhbHVlKSwgInVucmVzdHJpY3Rl
ZCBmbG9hdCByb3VuZGVkIHRvIDMyLWJpdCBmbG9hdCBzaG91bGQgYmUgaXRzZWxmIik7CiAgICAg
ICAgICAgICByZXR1cm47CiAKICAgICAgICAgY2FzZSAidW5yZXN0cmljdGVkIGRvdWJsZSI6CkBA
IC01NjcsMTQgKzEwNjksMjYgQEAgSWRsQXJyYXkucHJvdG90eXBlLmFzc2VydF90eXBlX2lzID0g
ZnVuY3Rpb24odmFsdWUsIHR5cGUpCiAgICAgICAgICAgICBhc3NlcnRfcmVnZXhwX21hdGNoKHZh
bHVlLCAvXihbXHgwMC1cdWQ3ZmZcdWUwMDAtXHVmZmZmXXxbXHVkODAwLVx1ZGJmZl1bXHVkYzAw
LVx1ZGZmZl0pKiQvKTsKICAgICAgICAgICAgIHJldHVybjsKIAorICAgICAgICBjYXNlICJBcnJh
eUJ1ZmZlclZpZXciOgorICAgICAgICAgICAgYXNzZXJ0X3RydWUoQXJyYXlCdWZmZXIuaXNWaWV3
KHZhbHVlKSk7CisgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgY2FzZSAib2JqZWN0IjoK
LSAgICAgICAgICAgIGFzc2VydF90cnVlKHR5cGVvZiB2YWx1ZSA9PSAib2JqZWN0IiB8fCB0eXBl
b2YgdmFsdWUgPT0gImZ1bmN0aW9uIiwgIndyb25nIHR5cGU6IG5vdCBvYmplY3Qgb3IgZnVuY3Rp
b24iKTsKKyAgICAgICAgICAgIGFzc2VydF9pbl9hcnJheSh0eXBlb2YgdmFsdWUsIFsib2JqZWN0
IiwgImZ1bmN0aW9uIl0sICJ3cm9uZyB0eXBlOiBub3Qgb2JqZWN0IG9yIGZ1bmN0aW9uIik7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgLy8gVGhpcyBpcyBhIGNhdGNoLWFsbCBm
b3IgYW55IElETCB0eXBlIG5hbWUgd2hpY2ggZm9sbG93cyBKUyBjbGFzcworICAgIC8vIHNlbWFu
dGljcy4gVGhpcyBpbmNsdWRlcyBzb21lIG5vbi1pbnRlcmZhY2UgSURMIHR5cGVzIChlLmcuIElu
dDhBcnJheSwKKyAgICAvLyBGdW5jdGlvbiwgLi4uKSwgYXMgd2VsbCBhcyBhbnkgaW50ZXJmYWNl
IHR5cGVzIHRoYXQgYXJlIG5vdCBpbiB0aGUgSURMCisgICAgLy8gdGhhdCBpcyBmZWQgdG8gdGhl
IGhhcm5lc3MuIElmIGFuIElETCB0eXBlIGRvZXMgbm90IGZvbGxvdyBKUyBjbGFzcworICAgIC8v
IHNlbWFudGljcyB0aGVuIGl0IHNob3VsZCBnbyBpbiB0aGUgc3dpdGNoIHN0YXRlbWVudCBhYm92
ZS4gSWYgYW4gSURMCisgICAgLy8gdHlwZSBuZWVkcyBmdWxsIGNoZWNraW5nLCB0aGVuIHRoZSB0
ZXN0IHNob3VsZCBpbmNsdWRlIGl0IGluIHRoZSBJREwgaXQKKyAgICAvLyBmZWVkcyB0byB0aGUg
aGFybmVzcy4KICAgICBpZiAoISh0eXBlIGluIHRoaXMubWVtYmVycykpCiAgICAgewotICAgICAg
ICB0aHJvdyAiVW5yZWNvZ25pemVkIHR5cGUgIiArIHR5cGU7CisgICAgICAgIGFzc2VydF90cnVl
KHZhbHVlIGluc3RhbmNlb2Ygc2VsZlt0eXBlXSwgIndyb25nIHR5cGU6IG5vdCBhICIgKyB0eXBl
KTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmICh0aGlzLm1lbWJlcnNbdHlwZV0g
aW5zdGFuY2VvZiBJZGxJbnRlcmZhY2UpCkBAIC01ODIsMTQgKzEwOTYsMTQgQEAgSWRsQXJyYXku
cHJvdG90eXBlLmFzc2VydF90eXBlX2lzID0gZnVuY3Rpb24odmFsdWUsIHR5cGUpCiAgICAgICAg
IC8vIFdlIGRvbid0IHdhbnQgdG8gcnVuIHRoZSBmdWxsCiAgICAgICAgIC8vIElkbEludGVyZmFj
ZS5wcm90b3R5cGUudGVzdF9pbnN0YW5jZV9vZiwgYmVjYXVzZSB0aGF0IGNvdWxkIHJlc3VsdAog
ICAgICAgICAvLyBpbiBhbiBpbmZpbml0ZSBsb29wLiAgVE9ETzogVGhpcyBtZWFucyB3ZSBkb24n
dCBoYXZlIHRlc3RzIGZvcgotICAgICAgICAvLyBOb0ludGVyZmFjZU9iamVjdCBpbnRlcmZhY2Vz
LCBhbmQgd2UgYWxzbyBjYW4ndCB0ZXN0IG9iamVjdHMgdGhhdAotICAgICAgICAvLyBjb21lIGZy
b20gYW5vdGhlciBzZWxmLgotICAgICAgICBhc3NlcnRfdHJ1ZSh0eXBlb2YgdmFsdWUgPT0gIm9i
amVjdCIgfHwgdHlwZW9mIHZhbHVlID09ICJmdW5jdGlvbiIsICJ3cm9uZyB0eXBlOiBub3Qgb2Jq
ZWN0IG9yIGZ1bmN0aW9uIik7CisgICAgICAgIC8vIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0IGlu
dGVyZmFjZXMsIGFuZCB3ZSBhbHNvIGNhbid0IHRlc3Qgb2JqZWN0cworICAgICAgICAvLyB0aGF0
IGNvbWUgZnJvbSBhbm90aGVyIHNlbGYuCisgICAgICAgIGFzc2VydF9pbl9hcnJheSh0eXBlb2Yg
dmFsdWUsIFsib2JqZWN0IiwgImZ1bmN0aW9uIl0sICJ3cm9uZyB0eXBlOiBub3Qgb2JqZWN0IG9y
IGZ1bmN0aW9uIik7CiAgICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIE9iamVjdAotICAgICAg
ICAmJiAhdGhpcy5tZW1iZXJzW3R5cGVdLmhhc19leHRlbmRlZF9hdHRyaWJ1dGUoIk5vSW50ZXJm
YWNlT2JqZWN0IikKKyAgICAgICAgJiYgIXRoaXMubWVtYmVyc1t0eXBlXS5oYXNfZXh0ZW5kZWRf
YXR0cmlidXRlKCJMZWdhY3lOb0ludGVyZmFjZU9iamVjdCIpCiAgICAgICAgICYmIHR5cGUgaW4g
c2VsZikKICAgICAgICAgewotICAgICAgICAgICAgYXNzZXJ0X3RydWUodmFsdWUgaW5zdGFuY2Vv
ZiBzZWxmW3R5cGVdLCAibm90IGluc3RhbmNlb2YgIiArIHR5cGUpOworICAgICAgICAgICAgYXNz
ZXJ0X3RydWUodmFsdWUgaW5zdGFuY2VvZiBzZWxmW3R5cGVdLCAiaW5zdGFuY2VvZiAiICsgdHlw
ZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgZWxzZSBpZiAodGhpcy5tZW1iZXJzW3R5cGVdIGlu
c3RhbmNlb2YgSWRsRW51bSkKQEAgLTYwMCwyMSArMTExNCwxOSBAQCBJZGxBcnJheS5wcm90b3R5
cGUuYXNzZXJ0X3R5cGVfaXMgPSBmdW5jdGlvbih2YWx1ZSwgdHlwZSkKICAgICB7CiAgICAgICAg
IC8vIFRPRE86IFRlc3Qgd2hlbiB3ZSBhY3R1YWxseSBoYXZlIHNvbWV0aGluZyB0byB0ZXN0IHRo
aXMgb24KICAgICB9Ci0gICAgZWxzZSBpZiAodGhpcy5tZW1iZXJzW3R5cGVdIGluc3RhbmNlb2Yg
SWRsVHlwZWRlZikKKyAgICBlbHNlIGlmICh0aGlzLm1lbWJlcnNbdHlwZV0gaW5zdGFuY2VvZiBJ
ZGxDYWxsYmFjaykKICAgICB7Ci0gICAgICAgIC8vIFRPRE86IFRlc3Qgd2hlbiB3ZSBhY3R1YWxs
eSBoYXZlIHNvbWV0aGluZyB0byB0ZXN0IHRoaXMgb24KKyAgICAgICAgYXNzZXJ0X2VxdWFscyh0
eXBlb2YgdmFsdWUsICJmdW5jdGlvbiIpOwogICAgIH0KICAgICBlbHNlCiAgICAgewotICAgICAg
ICB0aHJvdyAiVHlwZSAiICsgdHlwZSArICIgaXNuJ3QgYW4gaW50ZXJmYWNlIG9yIGRpY3Rpb25h
cnkiOworICAgICAgICB0aHJvdyBuZXcgSWRsSGFybmVzc0Vycm9yKCJUeXBlICIgKyB0eXBlICsg
IiBpc24ndCBhbiBpbnRlcmZhY2UsIGNhbGxiYWNrIG9yIGRpY3Rpb25hcnkiKTsKICAgICB9CiB9
OwotLy9AfQogCiAvLy8gSWRsT2JqZWN0IC8vLwogZnVuY3Rpb24gSWRsT2JqZWN0KCkge30KIElk
bE9iamVjdC5wcm90b3R5cGUudGVzdCA9IGZ1bmN0aW9uKCkKLS8vQHsKIHsKICAgICAvKioKICAg
ICAgKiBCeSBkZWZhdWx0LCB0aGlzIGRvZXMgbm90aGluZywgc28gbm8gYWN0dWFsIHRlc3RzIGFy
ZSBydW4gZm9yIElkbE9iamVjdHMKQEAgLTYyMiw5ICsxMTM0LDcgQEAgSWRsT2JqZWN0LnByb3Rv
dHlwZS50ZXN0ID0gZnVuY3Rpb24oKQogICAgICAqLwogfTsKIAotLy9AfQogSWRsT2JqZWN0LnBy
b3RvdHlwZS5oYXNfZXh0ZW5kZWRfYXR0cmlidXRlID0gZnVuY3Rpb24obmFtZSkKLS8vQHsKIHsK
ICAgICAvKioKICAgICAgKiBUaGlzIGlzIG9ubHkgbWVhbmluZ2Z1bCBmb3IgdGhpbmdzIHRoYXQg
c3VwcG9ydCBleHRlbmRlZCBhdHRyaWJ1dGVzLApAQCAtNjM2LDEyICsxMTQ2LDEwIEBAIElkbE9i
amVjdC5wcm90b3R5cGUuaGFzX2V4dGVuZGVkX2F0dHJpYnV0ZSA9IGZ1bmN0aW9uKG5hbWUpCiAg
ICAgfSk7CiB9OwogCi0vL0B9CiAKIC8vLyBJZGxEaWN0aW9uYXJ5IC8vLwogLy8gVXNlZCBmb3Ig
SWRsQXJyYXkucHJvdG90eXBlLmFzc2VydF90eXBlX2lzCiBmdW5jdGlvbiBJZGxEaWN0aW9uYXJ5
KG9iaikKLS8vQHsKIHsKICAgICAvKioKICAgICAgKiBvYmogaXMgYW4gb2JqZWN0IHByb2R1Y2Vk
IGJ5IHRoZSBXZWJJRExQYXJzZXIuanMgImRpY3Rpb25hcnkiCkBAIC02NTEsNiArMTE1OSw5IEBA
IGZ1bmN0aW9uIElkbERpY3Rpb25hcnkob2JqKQogICAgIC8qKiBTZWxmLWV4cGxhbmF0b3J5LiAq
LwogICAgIHRoaXMubmFtZSA9IG9iai5uYW1lOwogCisgICAgLyoqIEEgYmFjay1yZWZlcmVuY2Ug
dG8gb3VyIElkbEFycmF5LiAqLworICAgIHRoaXMuYXJyYXkgPSBvYmouYXJyYXk7CisKICAgICAv
KiogQW4gYXJyYXkgb2Ygb2JqZWN0cyBwcm9kdWNlZCBieSB0aGUgImRpY3Rpb25hcnlNZW1iZXIi
IHByb2R1Y3Rpb24uICovCiAgICAgdGhpcy5tZW1iZXJzID0gb2JqLm1lbWJlcnM7CiAKQEAgLTY2
MSwxMiArMTE3MiwxNCBAQCBmdW5jdGlvbiBJZGxEaWN0aW9uYXJ5KG9iaikKICAgICB0aGlzLmJh
c2UgPSBvYmouaW5oZXJpdGFuY2U7CiB9CiAKLS8vQH0KIElkbERpY3Rpb25hcnkucHJvdG90eXBl
ID0gT2JqZWN0LmNyZWF0ZShJZGxPYmplY3QucHJvdG90eXBlKTsKIAorSWRsRGljdGlvbmFyeS5w
cm90b3R5cGUuZ2V0X3JldmVyc2VfaW5oZXJpdGFuY2Vfc3RhY2sgPSBmdW5jdGlvbigpIHsKKyAg
ICByZXR1cm4gSWRsSW50ZXJmYWNlLnByb3RvdHlwZS5nZXRfcmV2ZXJzZV9pbmhlcml0YW5jZV9z
dGFjay5jYWxsKHRoaXMpOworfTsKKwogLy8vIElkbEludGVyZmFjZSAvLy8KLWZ1bmN0aW9uIElk
bEludGVyZmFjZShvYmosIGlzX2NhbGxiYWNrKQotLy9AeworZnVuY3Rpb24gSWRsSW50ZXJmYWNl
KG9iaiwgaXNfY2FsbGJhY2ssIGlzX21peGluKQogewogICAgIC8qKgogICAgICAqIG9iaiBpcyBh
biBvYmplY3QgcHJvZHVjZWQgYnkgdGhlIFdlYklETFBhcnNlci5qcyAiaW50ZXJmYWNlIiBwcm9k
dWN0aW9uLgpAQCAtNjkwLDkgKzEyMDMsOSBAQCBmdW5jdGlvbiBJZGxJbnRlcmZhY2Uob2JqLCBp
c19jYWxsYmFjaykKIAogICAgIC8qKiBBbiBhcnJheSBvZiBJZGxJbnRlcmZhY2VNZW1iZXJzLiAq
LwogICAgIHRoaXMubWVtYmVycyA9IG9iai5tZW1iZXJzLm1hcChmdW5jdGlvbihtKXtyZXR1cm4g
bmV3IElkbEludGVyZmFjZU1lbWJlcihtKTsgfSk7Ci0gICAgaWYgKHRoaXMuaGFzX2V4dGVuZGVk
X2F0dHJpYnV0ZSgiVW5mb3JnZWFibGUiKSkgeworICAgIGlmICh0aGlzLmhhc19leHRlbmRlZF9h
dHRyaWJ1dGUoIkxlZ2FjeVVuZm9yZ2VhYmxlIikpIHsKICAgICAgICAgdGhpcy5tZW1iZXJzCi0g
ICAgICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uKG0pIHsgcmV0dXJuICFtWyJzdGF0aWMiXSAmJiAo
bS50eXBlID09ICJhdHRyaWJ1dGUiIHx8IG0udHlwZSA9PSAib3BlcmF0aW9uIik7IH0pCisgICAg
ICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uKG0pIHsgcmV0dXJuIG0uc3BlY2lhbCAhPT0gInN0YXRp
YyIgJiYgKG0udHlwZSA9PSAiYXR0cmlidXRlIiB8fCBtLnR5cGUgPT0gIm9wZXJhdGlvbiIpOyB9
KQogICAgICAgICAgICAgLmZvckVhY2goZnVuY3Rpb24obSkgeyByZXR1cm4gbS5pc1VuZm9yZ2Vh
YmxlID0gdHJ1ZTsgfSk7CiAgICAgfQogCkBAIC03MDMsMzkgKzEyMTYsMTc0IEBAIGZ1bmN0aW9u
IElkbEludGVyZmFjZShvYmosIGlzX2NhbGxiYWNrKQogICAgIHRoaXMuYmFzZSA9IG9iai5pbmhl
cml0YW5jZTsKIAogICAgIHRoaXMuX2lzX2NhbGxiYWNrID0gaXNfY2FsbGJhY2s7CisgICAgdGhp
cy5faXNfbWl4aW4gPSBpc19taXhpbjsKIH0KLS8vQH0KIElkbEludGVyZmFjZS5wcm90b3R5cGUg
PSBPYmplY3QuY3JlYXRlKElkbE9iamVjdC5wcm90b3R5cGUpOwogSWRsSW50ZXJmYWNlLnByb3Rv
dHlwZS5pc19jYWxsYmFjayA9IGZ1bmN0aW9uKCkKLS8vQHsKIHsKICAgICByZXR1cm4gdGhpcy5f
aXNfY2FsbGJhY2s7CiB9OwotLy9AfQorCitJZGxJbnRlcmZhY2UucHJvdG90eXBlLmlzX21peGlu
ID0gZnVuY3Rpb24oKQoreworICAgIHJldHVybiB0aGlzLl9pc19taXhpbjsKK307CiAKIElkbElu
dGVyZmFjZS5wcm90b3R5cGUuaGFzX2NvbnN0YW50cyA9IGZ1bmN0aW9uKCkKLS8vQHsKIHsKICAg
ICByZXR1cm4gdGhpcy5tZW1iZXJzLnNvbWUoZnVuY3Rpb24obWVtYmVyKSB7CiAgICAgICAgIHJl
dHVybiBtZW1iZXIudHlwZSA9PT0gImNvbnN0IjsKICAgICB9KTsKIH07Ci0vL0B9CisKK0lkbElu
dGVyZmFjZS5wcm90b3R5cGUuZ2V0X3Vuc2NvcGFibGVzID0gZnVuY3Rpb24oKQoreworICAgIHJl
dHVybiB0aGlzLm1lbWJlcnMuZmlsdGVyKGZ1bmN0aW9uKG1lbWJlcikgeworICAgICAgICByZXR1
cm4gbWVtYmVyLmlzVW5zY29wYWJsZTsKKyAgICB9KTsKK307CiAKIElkbEludGVyZmFjZS5wcm90
b3R5cGUuaXNfZ2xvYmFsID0gZnVuY3Rpb24oKQotLy9AewogewogICAgIHJldHVybiB0aGlzLmV4
dEF0dHJzLnNvbWUoZnVuY3Rpb24oYXR0cmlidXRlKSB7Ci0gICAgICAgIHJldHVybiBhdHRyaWJ1
dGUubmFtZSA9PT0gIkdsb2JhbCIgfHwKLSAgICAgICAgICAgICAgIGF0dHJpYnV0ZS5uYW1lID09
PSAiUHJpbWFyeUdsb2JhbCI7CisgICAgICAgIHJldHVybiBhdHRyaWJ1dGUubmFtZSA9PT0gIkds
b2JhbCI7CisgICAgfSk7Cit9OworCisvKioKKyAqIFZhbHVlIG9mIHRoZSBMZWdhY3lOYW1lc3Bh
Y2UgZXh0ZW5kZWQgYXR0cmlidXRlLCBpZiBhbnkuCisgKgorICogaHR0cHM6Ly9oZXljYW0uZ2l0
aHViLmlvL3dlYmlkbC8jTGVnYWN5TmFtZXNwYWNlCisgKi8KK0lkbEludGVyZmFjZS5wcm90b3R5
cGUuZ2V0X2xlZ2FjeV9uYW1lc3BhY2UgPSBmdW5jdGlvbigpCit7CisgICAgdmFyIGxlZ2FjeU5h
bWVzcGFjZSA9IHRoaXMuZXh0QXR0cnMuZmluZChmdW5jdGlvbihhdHRyaWJ1dGUpIHsKKyAgICAg
ICAgcmV0dXJuIGF0dHJpYnV0ZS5uYW1lID09PSAiTGVnYWN5TmFtZXNwYWNlIjsKKyAgICB9KTsK
KyAgICByZXR1cm4gbGVnYWN5TmFtZXNwYWNlID8gbGVnYWN5TmFtZXNwYWNlLnJocy52YWx1ZSA6
IHVuZGVmaW5lZDsKK307CisKK0lkbEludGVyZmFjZS5wcm90b3R5cGUuZ2V0X2ludGVyZmFjZV9v
YmplY3Rfb3duZXIgPSBmdW5jdGlvbigpCit7CisgICAgdmFyIGxlZ2FjeU5hbWVzcGFjZSA9IHRo
aXMuZ2V0X2xlZ2FjeV9uYW1lc3BhY2UoKTsKKyAgICByZXR1cm4gbGVnYWN5TmFtZXNwYWNlID8g
c2VsZltsZWdhY3lOYW1lc3BhY2VdIDogc2VsZjsKK307CisKK0lkbEludGVyZmFjZS5wcm90b3R5
cGUuc2hvdWxkX2hhdmVfaW50ZXJmYWNlX29iamVjdCA9IGZ1bmN0aW9uKCkKK3sKKyAgICAvLyAi
Rm9yIGV2ZXJ5IGludGVyZmFjZSB0aGF0IGlzIGV4cG9zZWQgaW4gYSBnaXZlbiBFQ01BU2NyaXB0
IGdsb2JhbAorICAgIC8vIGVudmlyb25tZW50IGFuZDoKKyAgICAvLyAqIGlzIGEgY2FsbGJhY2sg
aW50ZXJmYWNlIHRoYXQgaGFzIGNvbnN0YW50cyBkZWNsYXJlZCBvbiBpdCwgb3IKKyAgICAvLyAq
IGlzIGEgbm9uLWNhbGxiYWNrIGludGVyZmFjZSB0aGF0IGlzIG5vdCBkZWNsYXJlZCB3aXRoIHRo
ZQorICAgIC8vICAgW0xlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0XSBleHRlbmRlZCBhdHRyaWJ1dGUs
CisgICAgLy8gYSBjb3JyZXNwb25kaW5nIHByb3BlcnR5IE1VU1QgZXhpc3Qgb24gdGhlIEVDTUFT
Y3JpcHQgZ2xvYmFsIG9iamVjdC4KKworICAgIHJldHVybiB0aGlzLmlzX2NhbGxiYWNrKCkgPyB0
aGlzLmhhc19jb25zdGFudHMoKSA6ICF0aGlzLmhhc19leHRlbmRlZF9hdHRyaWJ1dGUoIkxlZ2Fj
eU5vSW50ZXJmYWNlT2JqZWN0Iik7Cit9OworCitJZGxJbnRlcmZhY2UucHJvdG90eXBlLmFzc2Vy
dF9pbnRlcmZhY2Vfb2JqZWN0X2V4aXN0cyA9IGZ1bmN0aW9uKCkKK3sKKyAgICB2YXIgb3duZXIg
PSB0aGlzLmdldF9sZWdhY3lfbmFtZXNwYWNlKCkgfHwgInNlbGYiOworICAgIGFzc2VydF9vd25f
cHJvcGVydHkoc2VsZltvd25lcl0sIHRoaXMubmFtZSwgb3duZXIgKyAiIGRvZXMgbm90IGhhdmUg
b3duIHByb3BlcnR5ICIgKyBmb3JtYXRfdmFsdWUodGhpcy5uYW1lKSk7Cit9OworCitJZGxJbnRl
cmZhY2UucHJvdG90eXBlLmdldF9pbnRlcmZhY2Vfb2JqZWN0ID0gZnVuY3Rpb24oKSB7CisgICAg
aWYgKCF0aGlzLnNob3VsZF9oYXZlX2ludGVyZmFjZV9vYmplY3QoKSkgeworICAgICAgICB2YXIg
cmVhc29uID0gdGhpcy5pc19jYWxsYmFjaygpID8gImxhY2sgb2YgZGVjbGFyZWQgY29uc3RhbnRz
IiA6ICJkZWNsYXJlZCBbTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3RdIGF0dHJpYnV0ZSI7CisgICAg
ICAgIHRocm93IG5ldyBJZGxIYXJuZXNzRXJyb3IodGhpcy5uYW1lICsgIiBoYXMgbm8gaW50ZXJm
YWNlIG9iamVjdCBkdWUgdG8gIiArIHJlYXNvbik7CisgICAgfQorCisgICAgcmV0dXJuIHRoaXMu
Z2V0X2ludGVyZmFjZV9vYmplY3Rfb3duZXIoKVt0aGlzLm5hbWVdOworfTsKKworSWRsSW50ZXJm
YWNlLnByb3RvdHlwZS5nZXRfcXVhbGlmaWVkX25hbWUgPSBmdW5jdGlvbigpIHsKKyAgICAvLyBo
dHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNxdWFsaWZpZWQtbmFtZQorICAgIHZhciBs
ZWdhY3lOYW1lc3BhY2UgPSB0aGlzLmdldF9sZWdhY3lfbmFtZXNwYWNlKCk7CisgICAgaWYgKGxl
Z2FjeU5hbWVzcGFjZSkgeworICAgICAgICByZXR1cm4gbGVnYWN5TmFtZXNwYWNlICsgIi4iICsg
dGhpcy5uYW1lOworICAgIH0KKyAgICByZXR1cm4gdGhpcy5uYW1lOworfTsKKworSWRsSW50ZXJm
YWNlLnByb3RvdHlwZS5oYXNfdG9fanNvbl9yZWd1bGFyX29wZXJhdGlvbiA9IGZ1bmN0aW9uKCkg
eworICAgIHJldHVybiB0aGlzLm1lbWJlcnMuc29tZShmdW5jdGlvbihtKSB7CisgICAgICAgIHJl
dHVybiBtLmlzX3RvX2pzb25fcmVndWxhcl9vcGVyYXRpb24oKTsKKyAgICB9KTsKK307CisKK0lk
bEludGVyZmFjZS5wcm90b3R5cGUuaGFzX2RlZmF1bHRfdG9fanNvbl9yZWd1bGFyX29wZXJhdGlv
biA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiB0aGlzLm1lbWJlcnMuc29tZShmdW5jdGlvbiht
KSB7CisgICAgICAgIHJldHVybiBtLmlzX3RvX2pzb25fcmVndWxhcl9vcGVyYXRpb24oKSAmJiBt
Lmhhc19leHRlbmRlZF9hdHRyaWJ1dGUoIkRlZmF1bHQiKTsKICAgICB9KTsKIH07Ci0vL0B9CisK
Ky8qKgorICogSW1wbGVtZW50YXRpb24gb2YgaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlk
bC8jY3JlYXRlLWFuLWluaGVyaXRhbmNlLXN0YWNrCisgKiB3aXRoIHRoZSBvcmRlciByZXZlcnNl
ZC4KKyAqCisgKiBUaGUgb3JkZXIgaXMgcmV2ZXJzZWQgc28gdGhhdCB0aGUgYmFzZSBjbGFzcyBj
b21lcyBmaXJzdCBpbiB0aGUgbGlzdCwgYmVjYXVzZQorICogdGhpcyBpcyB3aGF0IGFsbCBjYWxs
IHNpdGVzIG5lZWQuCisgKgorICogU28gZ2l2ZW46CisgKgorICogICBBIDogQiB7fTsKKyAqICAg
QiA6IEMge307CisgKiAgIEMge307CisgKgorICogdGhlbiBBLmdldF9yZXZlcnNlX2luaGVyaXRh
bmNlX3N0YWNrKCkgcmV0dXJucyBbQywgQiwgQV0sCisgKiBhbmQgQi5nZXRfcmV2ZXJzZV9pbmhl
cml0YW5jZV9zdGFjaygpIHJldHVybnMgW0MsIEJdLgorICoKKyAqIE5vdGU6IGFzIGRpY3Rpb25h
cnkgaW5oZXJpdGFuY2UgaXMgZXhwcmVzc2VkIGlkZW50aWNhbGx5IGJ5IHRoZSBBU1QsCisgKiB0
aGlzIHdvcmtzIGp1c3QgYXMgd2VsbCBmb3IgZ2V0dGluZyBhIHN0YWNrIG9mIGluaGVyaXRlZCBk
aWN0aW9uYXJpZXMuCisgKi8KK0lkbEludGVyZmFjZS5wcm90b3R5cGUuZ2V0X3JldmVyc2VfaW5o
ZXJpdGFuY2Vfc3RhY2sgPSBmdW5jdGlvbigpIHsKKyAgICBjb25zdCBzdGFjayA9IFt0aGlzXTsK
KyAgICBsZXQgaWRsX2ludGVyZmFjZSA9IHRoaXM7CisgICAgd2hpbGUgKGlkbF9pbnRlcmZhY2Uu
YmFzZSkgeworICAgICAgICBjb25zdCBiYXNlID0gdGhpcy5hcnJheS5tZW1iZXJzW2lkbF9pbnRl
cmZhY2UuYmFzZV07CisgICAgICAgIGlmICghYmFzZSkgeworICAgICAgICAgICAgdGhyb3cgbmV3
IEVycm9yKGlkbF9pbnRlcmZhY2UudHlwZSArICIgIiArIGlkbF9pbnRlcmZhY2UuYmFzZSArICIg
bm90IGZvdW5kIChpbmhlcml0ZWQgYnkgIiArIGlkbF9pbnRlcmZhY2UubmFtZSArICIpIik7Cisg
ICAgICAgIH0gZWxzZSBpZiAoc3RhY2suaW5kZXhPZihiYXNlKSA+IC0xKSB7CisgICAgICAgICAg
ICBzdGFjay51bnNoaWZ0KGJhc2UpOworICAgICAgICAgICAgY29uc3QgZGVwX2NoYWluID0gc3Rh
Y2subWFwKGkgPT4gaS5uYW1lKS5qb2luKCcsJyk7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWRs
SGFybmVzc0Vycm9yKGAke3RoaXMubmFtZX0gaGFzIGEgY2lyY3VsYXIgZGVwZW5kZW5jeTogJHtk
ZXBfY2hhaW59YCk7CisgICAgICAgIH0KKyAgICAgICAgaWRsX2ludGVyZmFjZSA9IGJhc2U7Cisg
ICAgICAgIHN0YWNrLnVuc2hpZnQoaWRsX2ludGVyZmFjZSk7CisgICAgfQorICAgIHJldHVybiBz
dGFjazsKK307CisKKy8qKgorICogSW1wbGVtZW50YXRpb24gb2YKKyAqIGh0dHBzOi8vaGV5Y2Ft
LmdpdGh1Yi5pby93ZWJpZGwvI2RlZmF1bHQtdG9qc29uLW9wZXJhdGlvbgorICogZm9yIHRlc3Rp
bmcgcHVycG9zZXMuCisgKgorICogQ29sbGVjdHMgdGhlIElETCB0eXBlcyBvZiB0aGUgYXR0cmli
dXRlcyB0aGF0IG1lZXQgdGhlIGNyaXRlcmlhCisgKiBmb3IgaW5jbHVzaW9uIGluIHRoZSBkZWZh
dWx0IHRvSlNPTiBvcGVyYXRpb24gZm9yIGVhc3kKKyAqIGNvbXBhcmlzb24gd2l0aCBhY3R1YWwg
dmFsdWUKKyAqLworSWRsSW50ZXJmYWNlLnByb3RvdHlwZS5kZWZhdWx0X3RvX2pzb25fb3BlcmF0
aW9uID0gZnVuY3Rpb24oKSB7CisgICAgY29uc3QgbWFwID0gbmV3IE1hcCgpCisgICAgbGV0IGlz
RGVmYXVsdCA9IGZhbHNlOworICAgIGZvciAoY29uc3QgSSBvZiB0aGlzLmdldF9yZXZlcnNlX2lu
aGVyaXRhbmNlX3N0YWNrKCkpIHsKKyAgICAgICAgaWYgKEkuaGFzX2RlZmF1bHRfdG9fanNvbl9y
ZWd1bGFyX29wZXJhdGlvbigpKSB7CisgICAgICAgICAgICBpc0RlZmF1bHQgPSB0cnVlOworICAg
ICAgICAgICAgZm9yIChjb25zdCBtIG9mIEkubWVtYmVycykgeworICAgICAgICAgICAgICAgIGlm
IChtLnNwZWNpYWwgIT09ICJzdGF0aWMiICYmIG0udHlwZSA9PSAiYXR0cmlidXRlIiAmJiBJLmFy
cmF5LmlzX2pzb25fdHlwZShtLmlkbFR5cGUpKSB7CisgICAgICAgICAgICAgICAgICAgIG1hcC5z
ZXQobS5uYW1lLCBtLmlkbFR5cGUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KyAgICAgICAgfSBlbHNlIGlmIChJLmhhc190b19qc29uX3JlZ3VsYXJfb3BlcmF0aW9uKCkpIHsK
KyAgICAgICAgICAgIGlzRGVmYXVsdCA9IGZhbHNlOworICAgICAgICB9CisgICAgfQorICAgIHJl
dHVybiBpc0RlZmF1bHQgPyBtYXAgOiBudWxsOworfTsKIAogSWRsSW50ZXJmYWNlLnByb3RvdHlw
ZS50ZXN0ID0gZnVuY3Rpb24oKQotLy9AewogewotICAgIGlmICh0aGlzLmhhc19leHRlbmRlZF9h
dHRyaWJ1dGUoIk5vSW50ZXJmYWNlT2JqZWN0IikpCisgICAgaWYgKHRoaXMuaGFzX2V4dGVuZGVk
X2F0dHJpYnV0ZSgiTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QiKSB8fCB0aGlzLmlzX21peGluKCkp
CiAgICAgewogICAgICAgICAvLyBObyB0ZXN0cyB0byBkbyB3aXRob3V0IGFuIGluc3RhbmNlLiAg
VE9ETzogV2Ugc2hvdWxkIHN0aWxsIGJlIGFibGUKICAgICAgICAgLy8gdG8gcnVuIHRlc3RzIG9u
IHRoZSBwcm90b3R5cGUgb2JqZWN0LCBpZiB3ZSBvYnRhaW4gb25lIHRocm91Z2ggc29tZQpAQCAt
NzQzLDEwICsxMzkxLDE2IEBAIElkbEludGVyZmFjZS5wcm90b3R5cGUudGVzdCA9IGZ1bmN0aW9u
KCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICghdGhpcy5leHBvc2VkKSB7Ci0g
ICAgICAgIHRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBhc3NlcnRfZmFsc2UodGhpcy5u
YW1lIGluIHNlbGYpOwotICAgICAgICB9LmJpbmQodGhpcyksIHRoaXMubmFtZSArICIgaW50ZXJm
YWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIG9iamVjdCIpOworICAg
IC8vIElmIHRoZSBpbnRlcmZhY2Ugb2JqZWN0IGlzIG5vdCBleHBvc2VkLCBvbmx5IHRlc3QgdGhh
dC4gTWVtYmVycyBjYW4ndCBiZQorICAgIC8vIHRlc3RlZCBlaXRoZXIsIGJ1dCBvYmplY3RzIGNv
dWxkIHN0aWxsIGJlIHRlc3RlZCBpbiB8dGVzdF9vYmplY3R8LgorICAgIGlmICghdGhpcy5leHBv
c2VkKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLnVudGVzdGVkKQorICAgICAgICB7CisgICAg
ICAgICAgICBzdWJzZXRUZXN0QnlLZXkodGhpcy5uYW1lLCB0ZXN0LCBmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgICAgICBhc3NlcnRfZmFsc2UodGhpcy5uYW1lIGluIHNlbGYpOworICAgICAgICAg
ICAgfS5iaW5kKHRoaXMpLCB0aGlzLm5hbWUgKyAiIGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBw
cm9wZXJ0aWVzIG9mIGludGVyZmFjZSBvYmplY3QiKTsKKyAgICAgICAgfQogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC03NjUsNDQgKzE0MTksMzkgQEAgSWRsSW50ZXJmYWNlLnByb3RvdHlw
ZS50ZXN0ID0gZnVuY3Rpb24oKQogICAgIC8vIGludGVyZmFjZSBhcmUgc3RpbGwgdGVzdGVkLgog
ICAgIHRoaXMudGVzdF9tZW1iZXJzKCk7CiB9OwotLy9AfQorCitJZGxJbnRlcmZhY2UucHJvdG90
eXBlLmNvbnN0cnVjdG9ycyA9IGZ1bmN0aW9uKCkKK3sKKyAgICByZXR1cm4gdGhpcy5tZW1iZXJz
CisgICAgICAgIC5maWx0ZXIoZnVuY3Rpb24obSkgeyByZXR1cm4gbS50eXBlID09ICJjb25zdHJ1
Y3RvciI7IH0pOworfQogCiBJZGxJbnRlcmZhY2UucHJvdG90eXBlLnRlc3Rfc2VsZiA9IGZ1bmN0
aW9uKCkKLS8vQHsKIHsKLSAgICB0ZXN0KGZ1bmN0aW9uKCkKKyAgICBzdWJzZXRUZXN0QnlLZXko
dGhpcy5uYW1lLCB0ZXN0LCBmdW5jdGlvbigpCiAgICAgewotICAgICAgICAvLyBUaGlzIGZ1bmN0
aW9uIHRlc3RzIFdlYklETCBhcyBvZiAyMDE1LTAxLTEzLgotCi0gICAgICAgIC8vICJGb3IgZXZl
cnkgaW50ZXJmYWNlIHRoYXQgaXMgZXhwb3NlZCBpbiBhIGdpdmVuIEVDTUFTY3JpcHQgZ2xvYmFs
Ci0gICAgICAgIC8vIGVudmlyb25tZW50IGFuZDoKLSAgICAgICAgLy8gKiBpcyBhIGNhbGxiYWNr
IGludGVyZmFjZSB0aGF0IGhhcyBjb25zdGFudHMgZGVjbGFyZWQgb24gaXQsIG9yCi0gICAgICAg
IC8vICogaXMgYSBub24tY2FsbGJhY2sgaW50ZXJmYWNlIHRoYXQgaXMgbm90IGRlY2xhcmVkIHdp
dGggdGhlCi0gICAgICAgIC8vICAgW05vSW50ZXJmYWNlT2JqZWN0XSBleHRlbmRlZCBhdHRyaWJ1
dGUsCi0gICAgICAgIC8vIGEgY29ycmVzcG9uZGluZyBwcm9wZXJ0eSBNVVNUIGV4aXN0IG9uIHRo
ZSBFQ01BU2NyaXB0IGdsb2JhbCBvYmplY3QuCisgICAgICAgIGlmICghdGhpcy5zaG91bGRfaGF2
ZV9pbnRlcmZhY2Vfb2JqZWN0KCkpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CiAgICAgICAgIC8vIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eSBpcyB0aGUgaWRlbnRpZmllciBv
ZiB0aGUgaW50ZXJmYWNlLCBhbmQgaXRzCiAgICAgICAgIC8vIHZhbHVlIGlzIGFuIG9iamVjdCBj
YWxsZWQgdGhlIGludGVyZmFjZSBvYmplY3QuCiAgICAgICAgIC8vIFRoZSBwcm9wZXJ0eSBoYXMg
dGhlIGF0dHJpYnV0ZXMgeyBbW1dyaXRhYmxlXV06IHRydWUsCiAgICAgICAgIC8vIFtbRW51bWVy
YWJsZV1dOiBmYWxzZSwgW1tDb25maWd1cmFibGVdXTogdHJ1ZSB9LiIKLSAgICAgICAgaWYgKHRo
aXMuaXNfY2FsbGJhY2soKSAmJiAhdGhpcy5oYXNfY29uc3RhbnRzKCkpIHsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotCiAgICAgICAgIC8vIFRPRE86IFNob3VsZCB3ZSB0ZXN0IGhl
cmUgdGhhdCB0aGUgcHJvcGVydHkgaXMgYWN0dWFsbHkgd3JpdGFibGUKICAgICAgICAgLy8gZXRj
Liwgb3IgdHJ1c3QgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yPwotICAgICAgICBhc3NlcnRfb3du
X3Byb3BlcnR5KHNlbGYsIHRoaXMubmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
c2VsZiBkb2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0eSAiICsgZm9ybWF0X3ZhbHVlKHRoaXMubmFt
ZSkpOwotICAgICAgICB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
c2VsZiwgdGhpcy5uYW1lKTsKLSAgICAgICAgYXNzZXJ0X2ZhbHNlKCJnZXQiIGluIGRlc2MsICJz
ZWxmJ3MgcHJvcGVydHkgIiArIGZvcm1hdF92YWx1ZSh0aGlzLm5hbWUpICsgIiBoYXMgZ2V0dGVy
Iik7Ci0gICAgICAgIGFzc2VydF9mYWxzZSgic2V0IiBpbiBkZXNjLCAic2VsZidzIHByb3BlcnR5
ICIgKyBmb3JtYXRfdmFsdWUodGhpcy5uYW1lKSArICIgaGFzIHNldHRlciIpOwotICAgICAgICBh
c3NlcnRfdHJ1ZShkZXNjLndyaXRhYmxlLCAic2VsZidzIHByb3BlcnR5ICIgKyBmb3JtYXRfdmFs
dWUodGhpcy5uYW1lKSArICIgaXMgbm90IHdyaXRhYmxlIik7Ci0gICAgICAgIGFzc2VydF9mYWxz
ZShkZXNjLmVudW1lcmFibGUsICJzZWxmJ3MgcHJvcGVydHkgIiArIGZvcm1hdF92YWx1ZSh0aGlz
Lm5hbWUpICsgIiBpcyBlbnVtZXJhYmxlIik7Ci0gICAgICAgIGFzc2VydF90cnVlKGRlc2MuY29u
ZmlndXJhYmxlLCAic2VsZidzIHByb3BlcnR5ICIgKyBmb3JtYXRfdmFsdWUodGhpcy5uYW1lKSAr
ICIgaXMgbm90IGNvbmZpZ3VyYWJsZSIpOworICAgICAgICB0aGlzLmFzc2VydF9pbnRlcmZhY2Vf
b2JqZWN0X2V4aXN0cygpOworICAgICAgICB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IodGhpcy5nZXRfaW50ZXJmYWNlX29iamVjdF9vd25lcigpLCB0aGlzLm5hbWUp
OworICAgICAgICBhc3NlcnRfZmFsc2UoImdldCIgaW4gZGVzYywgInNlbGYncyBwcm9wZXJ0eSAi
ICsgZm9ybWF0X3ZhbHVlKHRoaXMubmFtZSkgKyAiIHNob3VsZCBub3QgaGF2ZSBhIGdldHRlciIp
OworICAgICAgICBhc3NlcnRfZmFsc2UoInNldCIgaW4gZGVzYywgInNlbGYncyBwcm9wZXJ0eSAi
ICsgZm9ybWF0X3ZhbHVlKHRoaXMubmFtZSkgKyAiIHNob3VsZCBub3QgaGF2ZSBhIHNldHRlciIp
OworICAgICAgICBhc3NlcnRfdHJ1ZShkZXNjLndyaXRhYmxlLCAic2VsZidzIHByb3BlcnR5ICIg
KyBmb3JtYXRfdmFsdWUodGhpcy5uYW1lKSArICIgc2hvdWxkIGJlIHdyaXRhYmxlIik7CisgICAg
ICAgIGFzc2VydF9mYWxzZShkZXNjLmVudW1lcmFibGUsICJzZWxmJ3MgcHJvcGVydHkgIiArIGZv
cm1hdF92YWx1ZSh0aGlzLm5hbWUpICsgIiBzaG91bGQgbm90IGJlIGVudW1lcmFibGUiKTsKKyAg
ICAgICAgYXNzZXJ0X3RydWUoZGVzYy5jb25maWd1cmFibGUsICJzZWxmJ3MgcHJvcGVydHkgIiAr
IGZvcm1hdF92YWx1ZSh0aGlzLm5hbWUpICsgIiBzaG91bGQgYmUgY29uZmlndXJhYmxlIik7CiAK
ICAgICAgICAgaWYgKHRoaXMuaXNfY2FsbGJhY2soKSkgewogICAgICAgICAgICAgLy8gIlRoZSBp
bnRlcm5hbCBbW1Byb3RvdHlwZV1dIHByb3BlcnR5IG9mIGFuIGludGVyZmFjZSBvYmplY3QgZm9y
CiAgICAgICAgICAgICAvLyBhIGNhbGxiYWNrIGludGVyZmFjZSBtdXN0IGJlIHRoZSBGdW5jdGlv
bi5wcm90b3R5cGUgb2JqZWN0LiIKLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoT2JqZWN0Lmdl
dFByb3RvdHlwZU9mKHNlbGZbdGhpcy5uYW1lXSksIEZ1bmN0aW9uLnByb3RvdHlwZSwKKyAgICAg
ICAgICAgIGFzc2VydF9lcXVhbHMoT2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMuZ2V0X2ludGVy
ZmFjZV9vYmplY3QoKSksIEZ1bmN0aW9uLnByb3RvdHlwZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgInByb3RvdHlwZSBvZiBzZWxmJ3MgcHJvcGVydHkgIiArIGZvcm1hdF92YWx1ZSh0aGlz
Lm5hbWUpICsgIiBpcyBub3QgT2JqZWN0LnByb3RvdHlwZSIpOwogCiAgICAgICAgICAgICByZXR1
cm47CkBAIC04MjIsOCArMTQ3MSw2IEBAIElkbEludGVyZmFjZS5wcm90b3R5cGUudGVzdF9zZWxm
ID0gZnVuY3Rpb24oKQogCiAgICAgICAgIC8vICIqIEl0cyBbW0NvbnN0cnVjdF1dIGludGVybmFs
IHByb3BlcnR5IGlzIHNldCBhcyBkZXNjcmliZWQgaW4KICAgICAgICAgLy8gICAgRUNNQS0yNjIg
c2VjdGlvbiAxOS4yLjIuMy4iCi0gICAgICAgIC8vIFRlc3RlZCBiZWxvdyBpZiBubyBjb25zdHJ1
Y3RvciBpcyBkZWZpbmVkLiAgVE9ETzogdGVzdCBjb25zdHJ1Y3RvcnMKLSAgICAgICAgLy8gaWYg
ZGVmaW5lZC4KIAogICAgICAgICAvLyAiKiBJdHMgQEBoYXNJbnN0YW5jZSBwcm9wZXJ0eSBpcyBz
ZXQgYXMgZGVzY3JpYmVkIGluIEVDTUEtMjYyCiAgICAgICAgIC8vICAgIHNlY3Rpb24gMTkuMi4z
LjgsIHVubGVzcyBvdGhlcndpc2Ugc3BlY2lmaWVkLiIKQEAgLTgzMiwyNCArMTQ3OSwxOSBAQCBJ
ZGxJbnRlcmZhY2UucHJvdG90eXBlLnRlc3Rfc2VsZiA9IGZ1bmN0aW9uKCkKICAgICAgICAgLy8g
RVM2IChyZXYgMzApIDE5LjEuMy42OgogICAgICAgICAvLyAiRWxzZSwgaWYgTyBoYXMgYSBbW0Nh
bGxdXSBpbnRlcm5hbCBtZXRob2QsIHRoZW4gbGV0IGJ1aWx0aW5UYWcgYmUKICAgICAgICAgLy8g
IkZ1bmN0aW9uIi4iCi0gICAgICAgIGFzc2VydF9jbGFzc19zdHJpbmcoc2VsZlt0aGlzLm5hbWVd
LCAiRnVuY3Rpb24iLCAiY2xhc3Mgc3RyaW5nIG9mICIgKyB0aGlzLm5hbWUpOworICAgICAgICBh
c3NlcnRfY2xhc3Nfc3RyaW5nKHRoaXMuZ2V0X2ludGVyZmFjZV9vYmplY3QoKSwgIkZ1bmN0aW9u
IiwgImNsYXNzIHN0cmluZyBvZiAiICsgdGhpcy5uYW1lKTsKIAogICAgICAgICAvLyAiVGhlIFtb
UHJvdG90eXBlXV0gaW50ZXJuYWwgcHJvcGVydHkgb2YgYW4gaW50ZXJmYWNlIG9iamVjdCBmb3Ig
YQogICAgICAgICAvLyBub24tY2FsbGJhY2sgaW50ZXJmYWNlIGlzIGRldGVybWluZWQgYXMgZm9s
bG93czoiCi0gICAgICAgIHZhciBwcm90b3R5cGUgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yoc2Vs
Zlt0aGlzLm5hbWVdKTsKKyAgICAgICAgdmFyIHByb3RvdHlwZSA9IE9iamVjdC5nZXRQcm90b3R5
cGVPZih0aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0KCkpOwogICAgICAgICBpZiAodGhpcy5iYXNl
KSB7CiAgICAgICAgICAgICAvLyAiKiBJZiB0aGUgaW50ZXJmYWNlIGluaGVyaXRzIGZyb20gc29t
ZSBvdGhlciBpbnRlcmZhY2UsIHRoZQogICAgICAgICAgICAgLy8gICAgdmFsdWUgb2YgW1tQcm90
b3R5cGVdXSBpcyB0aGUgaW50ZXJmYWNlIG9iamVjdCBmb3IgdGhhdCBvdGhlcgogICAgICAgICAg
ICAgLy8gICAgaW50ZXJmYWNlLiIKLSAgICAgICAgICAgIHZhciBoYXNfaW50ZXJmYWNlX29iamVj
dCA9Ci0gICAgICAgICAgICAgICAgIXRoaXMuYXJyYXkKLSAgICAgICAgICAgICAgICAgICAgIC5t
ZW1iZXJzW3RoaXMuYmFzZV0KLSAgICAgICAgICAgICAgICAgICAgIC5oYXNfZXh0ZW5kZWRfYXR0
cmlidXRlKCJOb0ludGVyZmFjZU9iamVjdCIpOwotICAgICAgICAgICAgaWYgKGhhc19pbnRlcmZh
Y2Vfb2JqZWN0KSB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0eShzZWxmLCB0
aGlzLmJhc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2hvdWxkIGlu
aGVyaXQgZnJvbSAnICsgdGhpcy5iYXNlICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICcsIGJ1dCBzZWxmIGhhcyBubyBzdWNoIHByb3BlcnR5Jyk7Ci0gICAgICAgICAgICAg
ICAgYXNzZXJ0X2VxdWFscyhwcm90b3R5cGUsIHNlbGZbdGhpcy5iYXNlXSwKKyAgICAgICAgICAg
IHZhciBpbmhlcml0ZWRfaW50ZXJmYWNlID0gdGhpcy5hcnJheS5tZW1iZXJzW3RoaXMuYmFzZV07
CisgICAgICAgICAgICBpZiAoIWluaGVyaXRlZF9pbnRlcmZhY2UuaGFzX2V4dGVuZGVkX2F0dHJp
YnV0ZSgiTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QiKSkgeworICAgICAgICAgICAgICAgIGluaGVy
aXRlZF9pbnRlcmZhY2UuYXNzZXJ0X2ludGVyZmFjZV9vYmplY3RfZXhpc3RzKCk7CisgICAgICAg
ICAgICAgICAgYXNzZXJ0X2VxdWFscyhwcm90b3R5cGUsIGluaGVyaXRlZF9pbnRlcmZhY2UuZ2V0
X2ludGVyZmFjZV9vYmplY3QoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcm90
b3R5cGUgb2YgJyArIHRoaXMubmFtZSArICcgaXMgbm90ICcgKwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdGhpcy5iYXNlKTsKICAgICAgICAgICAgIH0KQEAgLTg2MSw4OCArMTUwMywy
NTIgQEAgSWRsSW50ZXJmYWNlLnByb3RvdHlwZS50ZXN0X3NlbGYgPSBmdW5jdGlvbigpCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJwcm90b3R5cGUgb2Ygc2VsZidzIHByb3BlcnR5ICIgKyBm
b3JtYXRfdmFsdWUodGhpcy5uYW1lKSArICIgaXMgbm90IEZ1bmN0aW9uLnByb3RvdHlwZSIpOwog
ICAgICAgICB9CiAKLSAgICAgICAgaWYgKCF0aGlzLmhhc19leHRlbmRlZF9hdHRyaWJ1dGUoIkNv
bnN0cnVjdG9yIikpIHsKLSAgICAgICAgICAgIC8vICJUaGUgaW50ZXJuYWwgW1tDYWxsXV0gbWV0
aG9kIG9mIHRoZSBpbnRlcmZhY2Ugb2JqZWN0IGJlaGF2ZXMgYXMKLSAgICAgICAgICAgIC8vIGZv
bGxvd3MgLiAuIC4KLSAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAvLyAiSWYgSSB3YXMgbm90
IGRlY2xhcmVkIHdpdGggYSBbQ29uc3RydWN0b3JdIGV4dGVuZGVkIGF0dHJpYnV0ZSwKLSAgICAg
ICAgICAgIC8vIHRoZW4gdGhyb3cgYSBUeXBlRXJyb3IuIgotICAgICAgICAgICAgYXNzZXJ0X3Ro
cm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIHNlbGZb
dGhpcy5uYW1lXSgpOwotICAgICAgICAgICAgfS5iaW5kKHRoaXMpLCAiaW50ZXJmYWNlIG9iamVj
dCBkaWRuJ3QgdGhyb3cgVHlwZUVycm9yIHdoZW4gY2FsbGVkIGFzIGEgZnVuY3Rpb24iKTsKLSAg
ICAgICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsKLSAg
ICAgICAgICAgICAgICBuZXcgc2VsZlt0aGlzLm5hbWVdKCk7Ci0gICAgICAgICAgICB9LmJpbmQo
dGhpcyksICJpbnRlcmZhY2Ugb2JqZWN0IGRpZG4ndCB0aHJvdyBUeXBlRXJyb3Igd2hlbiBjYWxs
ZWQgYXMgYSBjb25zdHJ1Y3RvciIpOworICAgICAgICAvLyBBbHdheXMgdGVzdCBmb3IgW1tDb25z
dHJ1Y3RdXToKKyAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2hleWNhbS93ZWJpZGwvaXNz
dWVzLzY5OAorICAgICAgICBhc3NlcnRfdHJ1ZShpc0NvbnN0cnVjdG9yKHRoaXMuZ2V0X2ludGVy
ZmFjZV9vYmplY3QoKSksICJpbnRlcmZhY2Ugb2JqZWN0IG11c3QgcGFzcyBJc0NvbnN0cnVjdG9y
IGNoZWNrIik7CisKKyAgICAgICAgaWYgKCF0aGlzLmNvbnN0cnVjdG9ycygpLmxlbmd0aCkgewor
ICAgICAgICAgICAgLy8gIklmIEkgd2FzIG5vdCBkZWNsYXJlZCB3aXRoIGEgY29uc3RydWN0b3Ig
b3BlcmF0aW9uLCB0aGVuIHRocm93IGEgVHlwZUVycm9yLiIKKyAgICAgICAgICAgIHZhciBpbnRl
cmZhY2Vfb2JqZWN0ID0gdGhpcy5nZXRfaW50ZXJmYWNlX29iamVjdCgpOworICAgICAgICAgICAg
YXNzZXJ0X3Rocm93c19qcyhnbG9iYWxPZihpbnRlcmZhY2Vfb2JqZWN0KS5UeXBlRXJyb3IsIGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGludGVyZmFjZV9vYmplY3QoKTsKKyAgICAgICAg
ICAgIH0sICJpbnRlcmZhY2Ugb2JqZWN0IGRpZG4ndCB0aHJvdyBUeXBlRXJyb3Igd2hlbiBjYWxs
ZWQgYXMgYSBmdW5jdGlvbiIpOworICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhnbG9iYWxP
ZihpbnRlcmZhY2Vfb2JqZWN0KS5UeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
ICAgIG5ldyBpbnRlcmZhY2Vfb2JqZWN0KCk7CisgICAgICAgICAgICB9LCAiaW50ZXJmYWNlIG9i
amVjdCBkaWRuJ3QgdGhyb3cgVHlwZUVycm9yIHdoZW4gY2FsbGVkIGFzIGEgY29uc3RydWN0b3Ii
KTsKICAgICAgICAgfQogICAgIH0uYmluZCh0aGlzKSwgdGhpcy5uYW1lICsgIiBpbnRlcmZhY2U6
IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2Ugb2JqZWN0Iik7CiAKLSAgICBp
ZiAoIXRoaXMuaXNfY2FsbGJhY2soKSkgewotICAgICAgICB0ZXN0KGZ1bmN0aW9uKCkgeworICAg
IGlmICh0aGlzLnNob3VsZF9oYXZlX2ludGVyZmFjZV9vYmplY3QoKSAmJiAhdGhpcy5pc19jYWxs
YmFjaygpKSB7CisgICAgICAgIHN1YnNldFRlc3RCeUtleSh0aGlzLm5hbWUsIHRlc3QsIGZ1bmN0
aW9uKCkgewogICAgICAgICAgICAgLy8gVGhpcyBmdW5jdGlvbiB0ZXN0cyBXZWJJREwgYXMgb2Yg
MjAxNC0xMC0yNS4KICAgICAgICAgICAgIC8vIGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJp
ZGwvI2VzLWludGVyZmFjZS1jYWxsCiAKLSAgICAgICAgICAgIGFzc2VydF9vd25fcHJvcGVydHko
c2VsZiwgdGhpcy5uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2VsZiBk
b2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0eSAiICsgZm9ybWF0X3ZhbHVlKHRoaXMubmFtZSkpOwor
ICAgICAgICAgICAgdGhpcy5hc3NlcnRfaW50ZXJmYWNlX29iamVjdF9leGlzdHMoKTsKIAogICAg
ICAgICAgICAgLy8gIkludGVyZmFjZSBvYmplY3RzIGZvciBub24tY2FsbGJhY2sgaW50ZXJmYWNl
cyBNVVNUIGhhdmUgYQogICAgICAgICAgICAgLy8gcHJvcGVydHkgbmFtZWQg4oCcbGVuZ3Ro4oCd
IHdpdGggYXR0cmlidXRlcyB7IFtbV3JpdGFibGVdXTogZmFsc2UsCiAgICAgICAgICAgICAvLyBb
W0VudW1lcmFibGVdXTogZmFsc2UsIFtbQ29uZmlndXJhYmxlXV06IHRydWUgfSB3aG9zZSB2YWx1
ZSBpcwogICAgICAgICAgICAgLy8gYSBOdW1iZXIuIgotICAgICAgICAgICAgYXNzZXJ0X293bl9w
cm9wZXJ0eShzZWxmW3RoaXMubmFtZV0sICJsZW5ndGgiKTsKLSAgICAgICAgICAgIHZhciBkZXNj
ID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzZWxmW3RoaXMubmFtZV0sICJsZW5n
dGgiKTsKLSAgICAgICAgICAgIGFzc2VydF9mYWxzZSgiZ2V0IiBpbiBkZXNjLCB0aGlzLm5hbWUg
KyAiLmxlbmd0aCBoYXMgZ2V0dGVyIik7Ci0gICAgICAgICAgICBhc3NlcnRfZmFsc2UoInNldCIg
aW4gZGVzYywgdGhpcy5uYW1lICsgIi5sZW5ndGggaGFzIHNldHRlciIpOwotICAgICAgICAgICAg
YXNzZXJ0X2ZhbHNlKGRlc2Mud3JpdGFibGUsIHRoaXMubmFtZSArICIubGVuZ3RoIGlzIHdyaXRh
YmxlIik7Ci0gICAgICAgICAgICBhc3NlcnRfZmFsc2UoZGVzYy5lbnVtZXJhYmxlLCB0aGlzLm5h
bWUgKyAiLmxlbmd0aCBpcyBlbnVtZXJhYmxlIik7Ci0gICAgICAgICAgICBhc3NlcnRfdHJ1ZShk
ZXNjLmNvbmZpZ3VyYWJsZSwgdGhpcy5uYW1lICsgIi5sZW5ndGggaXMgbm90IGNvbmZpZ3VyYWJs
ZSIpOwotCi0gICAgICAgICAgICB2YXIgY29uc3RydWN0b3JzID0gdGhpcy5leHRBdHRycwotICAg
ICAgICAgICAgICAgIC5maWx0ZXIoZnVuY3Rpb24oYXR0cikgeyByZXR1cm4gYXR0ci5uYW1lID09
ICJDb25zdHJ1Y3RvciI7IH0pOworICAgICAgICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0eSh0aGlz
LmdldF9pbnRlcmZhY2Vfb2JqZWN0KCksICJsZW5ndGgiKTsKKyAgICAgICAgICAgIHZhciBkZXNj
ID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0aGlzLmdldF9pbnRlcmZhY2Vfb2Jq
ZWN0KCksICJsZW5ndGgiKTsKKyAgICAgICAgICAgIGFzc2VydF9mYWxzZSgiZ2V0IiBpbiBkZXNj
LCB0aGlzLm5hbWUgKyAiLmxlbmd0aCBzaG91bGQgbm90IGhhdmUgYSBnZXR0ZXIiKTsKKyAgICAg
ICAgICAgIGFzc2VydF9mYWxzZSgic2V0IiBpbiBkZXNjLCB0aGlzLm5hbWUgKyAiLmxlbmd0aCBz
aG91bGQgbm90IGhhdmUgYSBzZXR0ZXIiKTsKKyAgICAgICAgICAgIGFzc2VydF9mYWxzZShkZXNj
LndyaXRhYmxlLCB0aGlzLm5hbWUgKyAiLmxlbmd0aCBzaG91bGQgbm90IGJlIHdyaXRhYmxlIik7
CisgICAgICAgICAgICBhc3NlcnRfZmFsc2UoZGVzYy5lbnVtZXJhYmxlLCB0aGlzLm5hbWUgKyAi
Lmxlbmd0aCBzaG91bGQgbm90IGJlIGVudW1lcmFibGUiKTsKKyAgICAgICAgICAgIGFzc2VydF90
cnVlKGRlc2MuY29uZmlndXJhYmxlLCB0aGlzLm5hbWUgKyAiLmxlbmd0aCBzaG91bGQgYmUgY29u
ZmlndXJhYmxlIik7CisKKyAgICAgICAgICAgIHZhciBjb25zdHJ1Y3RvcnMgPSB0aGlzLmNvbnN0
cnVjdG9ycygpOwogICAgICAgICAgICAgdmFyIGV4cGVjdGVkX2xlbmd0aCA9IG1pbk92ZXJsb2Fk
TGVuZ3RoKGNvbnN0cnVjdG9ycyk7Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHNlbGZbdGhp
cy5uYW1lXS5sZW5ndGgsIGV4cGVjdGVkX2xlbmd0aCwgIndyb25nIHZhbHVlIGZvciAiICsgdGhp
cy5uYW1lICsgIi5sZW5ndGgiKTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHModGhpcy5nZXRf
aW50ZXJmYWNlX29iamVjdCgpLmxlbmd0aCwgZXhwZWN0ZWRfbGVuZ3RoLCAid3JvbmcgdmFsdWUg
Zm9yICIgKyB0aGlzLm5hbWUgKyAiLmxlbmd0aCIpOwogICAgICAgICB9LmJpbmQodGhpcyksIHRo
aXMubmFtZSArICIgaW50ZXJmYWNlIG9iamVjdCBsZW5ndGgiKTsKICAgICB9CiAKLSAgICBpZiAo
IXRoaXMuaXNfY2FsbGJhY2soKSB8fCB0aGlzLmhhc19jb25zdGFudHMoKSkgewotICAgICAgICB0
ZXN0KGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgLy8gVGhpcyBmdW5jdGlvbiB0ZXN0cyBXZWJJ
REwgYXMgb2YgMjAxNS0xMS0xNy4KLSAgICAgICAgICAgIC8vIGh0dHBzOi8vaGV5Y2FtLmdpdGh1
Yi5pby93ZWJpZGwvI2ludGVyZmFjZS1vYmplY3QKKyAgICBpZiAodGhpcy5zaG91bGRfaGF2ZV9p
bnRlcmZhY2Vfb2JqZWN0KCkpIHsKKyAgICAgICAgc3Vic2V0VGVzdEJ5S2V5KHRoaXMubmFtZSwg
dGVzdCwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAvLyBUaGlzIGZ1bmN0aW9uIHRlc3RzIFdl
YklETCBhcyBvZiAyMDE1LTExLTE3LgorICAgICAgICAgICAgLy8gaHR0cHM6Ly9oZXljYW0uZ2l0
aHViLmlvL3dlYmlkbC8jaW50ZXJmYWNlLW9iamVjdAorCisgICAgICAgICAgICB0aGlzLmFzc2Vy
dF9pbnRlcmZhY2Vfb2JqZWN0X2V4aXN0cygpOworCisgICAgICAgICAgICAvLyAiQWxsIGludGVy
ZmFjZSBvYmplY3RzIG11c3QgaGF2ZSBhIHByb3BlcnR5IG5hbWVkIOKAnG5hbWXigJ0gd2l0aAor
ICAgICAgICAgICAgLy8gYXR0cmlidXRlcyB7IFtbV3JpdGFibGVdXTogZmFsc2UsIFtbRW51bWVy
YWJsZV1dOiBmYWxzZSwKKyAgICAgICAgICAgIC8vIFtbQ29uZmlndXJhYmxlXV06IHRydWUgfSB3
aG9zZSB2YWx1ZSBpcyB0aGUgaWRlbnRpZmllciBvZiB0aGUKKyAgICAgICAgICAgIC8vIGNvcnJl
c3BvbmRpbmcgaW50ZXJmYWNlLiIKKworICAgICAgICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0eSh0
aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0KCksICJuYW1lIik7CisgICAgICAgICAgICB2YXIgZGVz
YyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGhpcy5nZXRfaW50ZXJmYWNlX29i
amVjdCgpLCAibmFtZSIpOworICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKCJnZXQiIGluIGRlc2Ms
IHRoaXMubmFtZSArICIubmFtZSBzaG91bGQgbm90IGhhdmUgYSBnZXR0ZXIiKTsKKyAgICAgICAg
ICAgIGFzc2VydF9mYWxzZSgic2V0IiBpbiBkZXNjLCB0aGlzLm5hbWUgKyAiLm5hbWUgc2hvdWxk
IG5vdCBoYXZlIGEgc2V0dGVyIik7CisgICAgICAgICAgICBhc3NlcnRfZmFsc2UoZGVzYy53cml0
YWJsZSwgdGhpcy5uYW1lICsgIi5uYW1lIHNob3VsZCBub3QgYmUgd3JpdGFibGUiKTsKKyAgICAg
ICAgICAgIGFzc2VydF9mYWxzZShkZXNjLmVudW1lcmFibGUsIHRoaXMubmFtZSArICIubmFtZSBz
aG91bGQgbm90IGJlIGVudW1lcmFibGUiKTsKKyAgICAgICAgICAgIGFzc2VydF90cnVlKGRlc2Mu
Y29uZmlndXJhYmxlLCB0aGlzLm5hbWUgKyAiLm5hbWUgc2hvdWxkIGJlIGNvbmZpZ3VyYWJsZSIp
OworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh0aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0KCku
bmFtZSwgdGhpcy5uYW1lLCAid3JvbmcgdmFsdWUgZm9yICIgKyB0aGlzLm5hbWUgKyAiLm5hbWUi
KTsKKyAgICAgICAgfS5iaW5kKHRoaXMpLCB0aGlzLm5hbWUgKyAiIGludGVyZmFjZSBvYmplY3Qg
bmFtZSIpOworICAgIH0KKworCisgICAgaWYgKHRoaXMuaGFzX2V4dGVuZGVkX2F0dHJpYnV0ZSgi
TGVnYWN5V2luZG93QWxpYXMiKSkgeworICAgICAgICBzdWJzZXRUZXN0QnlLZXkodGhpcy5uYW1l
LCB0ZXN0LCBmdW5jdGlvbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBhbGlhc0F0dHJz
ID0gdGhpcy5leHRBdHRycy5maWx0ZXIoZnVuY3Rpb24obykgeyByZXR1cm4gby5uYW1lID09PSAi
TGVnYWN5V2luZG93QWxpYXMiOyB9KTsKKyAgICAgICAgICAgIGlmIChhbGlhc0F0dHJzLmxlbmd0
aCA+IDEpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWRsSGFybmVzc0Vycm9yKCJJbnZh
bGlkIElETDogbXVsdGlwbGUgTGVnYWN5V2luZG93QWxpYXMgZXh0ZW5kZWQgYXR0cmlidXRlcyBv
biAiICsgdGhpcy5uYW1lKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh0aGlzLmlz
X2NhbGxiYWNrKCkpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWRsSGFybmVzc0Vycm9y
KCJJbnZhbGlkIElETDogTGVnYWN5V2luZG93QWxpYXMgZXh0ZW5kZWQgYXR0cmlidXRlIG9uIG5v
bi1pbnRlcmZhY2UgIiArIHRoaXMubmFtZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBp
ZiAoIXRoaXMuZXhwb3N1cmVTZXQuaGFzKCJXaW5kb3ciKSkgeworICAgICAgICAgICAgICAgIHRo
cm93IG5ldyBJZGxIYXJuZXNzRXJyb3IoIkludmFsaWQgSURMOiBMZWdhY3lXaW5kb3dBbGlhcyBl
eHRlbmRlZCBhdHRyaWJ1dGUgb24gIiArIHRoaXMubmFtZSArICIgd2hpY2ggaXMgbm90IGV4cG9z
ZWQgaW4gV2luZG93Iik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBUT0RPOiB3aGVu
IHRlc3Rpbmcgb2YgW0xlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0XSBpbnRlcmZhY2VzIGlzIHN1cHBv
cnRlZCwKKyAgICAgICAgICAgIC8vIGNoZWNrIHRoYXQgaXQncyBub3Qgc3BlY2lmaWVkIHRvZ2V0
aGVyIHdpdGggTGVnYWN5V2luZG93QWxpYXMuCisKKyAgICAgICAgICAgIC8vIFRPRE86IG1heWJl
IGNoZWNrIHRoYXQgW0xlZ2FjeVdpbmRvd0FsaWFzXcKgaXMgbm90IHNwZWNpZmllZCBvbiBhIHBh
cnRpYWwgaW50ZXJmYWNlLgogCi0gICAgICAgICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KHNlbGYs
IHRoaXMubmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNlbGYgZG9lcyBu
b3QgaGF2ZSBvd24gcHJvcGVydHkgIiArIGZvcm1hdF92YWx1ZSh0aGlzLm5hbWUpKTsKKyAgICAg
ICAgICAgIHZhciByaHMgPSBhbGlhc0F0dHJzWzBdLnJoczsKKyAgICAgICAgICAgIGlmICghcmhz
KSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElkbEhhcm5lc3NFcnJvcigiSW52YWxpZCBJ
REw6IExlZ2FjeVdpbmRvd0FsaWFzIGV4dGVuZGVkIGF0dHJpYnV0ZSBvbiAiICsgdGhpcy5uYW1l
ICsgIiB3aXRob3V0IGlkZW50aWZpZXIiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHZh
ciBhbGlhc2VzOworICAgICAgICAgICAgaWYgKHJocy50eXBlID09PSAiaWRlbnRpZmllci1saXN0
IikgeworICAgICAgICAgICAgICAgIGFsaWFzZXMgPSByaHMudmFsdWUubWFwKGlkID0+IGlkLnZh
bHVlKTsKKyAgICAgICAgICAgIH0gZWxzZSB7IC8vIHJocy50eXBlID09PSBpZGVudGlmaWVyCisg
ICAgICAgICAgICAgICAgYWxpYXNlcyA9IFsgcmhzLnZhbHVlIF07CisgICAgICAgICAgICB9CiAK
LSAgICAgICAgICAgIC8vICJBbGwgaW50ZXJmYWNlIG9iamVjdHMgbXVzdCBoYXZlIGEgcHJvcGVy
dHkgbmFtZWQg4oCcbmFtZeKAnSB3aXRoCi0gICAgICAgICAgICAvLyBhdHRyaWJ1dGVzIHsgW1tX
cml0YWJsZV1dOiBmYWxzZSwgW1tFbnVtZXJhYmxlXV06IGZhbHNlLAotICAgICAgICAgICAgLy8g
W1tDb25maWd1cmFibGVdXTogdHJ1ZSB9IHdob3NlIHZhbHVlIGlzIHRoZSBpZGVudGlmaWVyIG9m
IHRoZQotICAgICAgICAgICAgLy8gY29ycmVzcG9uZGluZyBpbnRlcmZhY2UuIgorICAgICAgICAg
ICAgLy8gT0sgbm93IGFjdHVhbGx5IGNoZWNrIHRoZSBhbGlhc2VzLi4uCisgICAgICAgICAgICB2
YXIgYWxpYXM7CisgICAgICAgICAgICBpZiAoZXhwb3NlZF9pbihleHBvc3VyZV9zZXQodGhpcywg
dGhpcy5leHBvc3VyZVNldCkpICYmICdkb2N1bWVudCcgaW4gc2VsZikgeworICAgICAgICAgICAg
ICAgIGZvciAoYWxpYXMgb2YgYWxpYXNlcykgeworICAgICAgICAgICAgICAgICAgICBhc3NlcnRf
dHJ1ZShhbGlhcyBpbiBzZWxmLCBhbGlhcyArICIgc2hvdWxkIGV4aXN0Iik7CisgICAgICAgICAg
ICAgICAgICAgIGFzc2VydF9lcXVhbHMoc2VsZlthbGlhc10sIHRoaXMuZ2V0X2ludGVyZmFjZV9v
YmplY3QoKSwgInNlbGYuIiArIGFsaWFzICsgIiBzaG91bGQgYmUgdGhlIHNhbWUgdmFsdWUgYXMg
c2VsZi4iICsgdGhpcy5nZXRfcXVhbGlmaWVkX25hbWUoKSk7CisgICAgICAgICAgICAgICAgICAg
IHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzZWxmLCBhbGlhcyk7
CisgICAgICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZGVzYy52YWx1ZSwgdGhpcy5nZXRf
aW50ZXJmYWNlX29iamVjdCgpLCAid3JvbmcgdmFsdWUgaW4gIiArIGFsaWFzICsgIiBwcm9wZXJ0
eSBkZXNjcmlwdG9yIik7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydF90cnVlKGRlc2Mud3Jp
dGFibGUsIGFsaWFzICsgIiBzaG91bGQgYmUgd3JpdGFibGUiKTsKKyAgICAgICAgICAgICAgICAg
ICAgYXNzZXJ0X2ZhbHNlKGRlc2MuZW51bWVyYWJsZSwgYWxpYXMgKyAiIHNob3VsZCBub3QgYmUg
ZW51bWVyYWJsZSIpOworICAgICAgICAgICAgICAgICAgICBhc3NlcnRfdHJ1ZShkZXNjLmNvbmZp
Z3VyYWJsZSwgYWxpYXMgKyAiIHNob3VsZCBiZSBjb25maWd1cmFibGUiKTsKKyAgICAgICAgICAg
ICAgICAgICAgYXNzZXJ0X2ZhbHNlKCdnZXQnIGluIGRlc2MsIGFsaWFzICsgIiBzaG91bGQgbm90
IGhhdmUgYSBnZXR0ZXIiKTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKCdzZXQn
IGluIGRlc2MsIGFsaWFzICsgIiBzaG91bGQgbm90IGhhdmUgYSBzZXR0ZXIiKTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGZvciAoYWxp
YXMgb2YgYWxpYXNlcykgeworICAgICAgICAgICAgICAgICAgICBhc3NlcnRfZmFsc2UoYWxpYXMg
aW4gc2VsZiwgYWxpYXMgKyAiIHNob3VsZCBub3QgZXhpc3QiKTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGFzc2VydF9vd25fcHJvcGVydHkoc2VsZlt0
aGlzLm5hbWVdLCAibmFtZSIpOwotICAgICAgICAgICAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKHNlbGZbdGhpcy5uYW1lXSwgIm5hbWUiKTsKLSAgICAgICAgICAg
IGFzc2VydF9mYWxzZSgiZ2V0IiBpbiBkZXNjLCB0aGlzLm5hbWUgKyAiLm5hbWUgaGFzIGdldHRl
ciIpOwotICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKCJzZXQiIGluIGRlc2MsIHRoaXMubmFtZSAr
ICIubmFtZSBoYXMgc2V0dGVyIik7Ci0gICAgICAgICAgICBhc3NlcnRfZmFsc2UoZGVzYy53cml0
YWJsZSwgdGhpcy5uYW1lICsgIi5uYW1lIGlzIHdyaXRhYmxlIik7Ci0gICAgICAgICAgICBhc3Nl
cnRfZmFsc2UoZGVzYy5lbnVtZXJhYmxlLCB0aGlzLm5hbWUgKyAiLm5hbWUgaXMgZW51bWVyYWJs
ZSIpOwotICAgICAgICAgICAgYXNzZXJ0X3RydWUoZGVzYy5jb25maWd1cmFibGUsIHRoaXMubmFt
ZSArICIubmFtZSBpcyBub3QgY29uZmlndXJhYmxlIik7Ci0gICAgICAgICAgICBhc3NlcnRfZXF1
YWxzKHNlbGZbdGhpcy5uYW1lXS5uYW1lLCB0aGlzLm5hbWUsICJ3cm9uZyB2YWx1ZSBmb3IgIiAr
IHRoaXMubmFtZSArICIubmFtZSIpOwotICAgICAgICB9LmJpbmQodGhpcyksIHRoaXMubmFtZSAr
ICIgaW50ZXJmYWNlIG9iamVjdCBuYW1lIik7CisgICAgICAgIH0uYmluZCh0aGlzKSwgdGhpcy5u
YW1lICsgIiBpbnRlcmZhY2U6IGxlZ2FjeSB3aW5kb3cgYWxpYXMiKTsKICAgICB9CiAKLSAgICAv
LyBUT0RPOiBUZXN0IG5hbWVkIGNvbnN0cnVjdG9ycyBpZiBJIGZpbmQgYW55IGludGVyZmFjZXMg
dGhhdCBoYXZlIHRoZW0uCisgICAgaWYgKHRoaXMuaGFzX2V4dGVuZGVkX2F0dHJpYnV0ZSgiTGVn
YWN5RmFjdG9yeUZ1bmN0aW9uIikpIHsKKyAgICAgICAgdmFyIGNvbnN0cnVjdG9ycyA9IHRoaXMu
ZXh0QXR0cnMKKyAgICAgICAgICAgIC5maWx0ZXIoZnVuY3Rpb24oYXR0cikgeyByZXR1cm4gYXR0
ci5uYW1lID09ICJMZWdhY3lGYWN0b3J5RnVuY3Rpb24iOyB9KTsKKyAgICAgICAgaWYgKGNvbnN0
cnVjdG9ycy5sZW5ndGggIT09IDEpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJZGxIYXJuZXNz
RXJyb3IoIkludGVybmFsIGVycm9yOiBtaXNzaW5nIHN1cHBvcnQgZm9yIG11bHRpcGxlIExlZ2Fj
eUZhY3RvcnlGdW5jdGlvbiBleHRlbmRlZCBhdHRyaWJ1dGVzIik7CisgICAgICAgIH0KKyAgICAg
ICAgdmFyIGNvbnN0cnVjdG9yID0gY29uc3RydWN0b3JzWzBdOworICAgICAgICB2YXIgbWluX2xl
bmd0aCA9IG1pbk92ZXJsb2FkTGVuZ3RoKFtjb25zdHJ1Y3Rvcl0pOworCisgICAgICAgIHN1YnNl
dFRlc3RCeUtleSh0aGlzLm5hbWUsIHRlc3QsIGZ1bmN0aW9uKCkKKyAgICAgICAgeworICAgICAg
ICAgICAgLy8gVGhpcyBmdW5jdGlvbiB0ZXN0cyBXZWJJREwgYXMgb2YgMjAxOS0wMS0xNC4KKwor
ICAgICAgICAgICAgLy8gImZvciBldmVyeSBbTGVnYWN5RmFjdG9yeUZ1bmN0aW9uXSBleHRlbmRl
ZCBhdHRyaWJ1dGUgb24gYW4gZXhwb3NlZAorICAgICAgICAgICAgLy8gaW50ZXJmYWNlLCBhIGNv
cnJlc3BvbmRpbmcgcHJvcGVydHkgbXVzdCBleGlzdCBvbiB0aGUgRUNNQVNjcmlwdAorICAgICAg
ICAgICAgLy8gZ2xvYmFsIG9iamVjdC4gVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5IGlzIHRoZQor
ICAgICAgICAgICAgLy8gW0xlZ2FjeUZhY3RvcnlGdW5jdGlvbl0ncyBpZGVudGlmaWVyLCBhbmQg
aXRzIHZhbHVlIGlzIGFuIG9iamVjdAorICAgICAgICAgICAgLy8gY2FsbGVkIGEgbmFtZWQgY29u
c3RydWN0b3IsIC4uLiAuIFRoZSBwcm9wZXJ0eSBoYXMgdGhlIGF0dHJpYnV0ZXMKKyAgICAgICAg
ICAgIC8vIHsgW1tXcml0YWJsZV1dOiB0cnVlLCBbW0VudW1lcmFibGVdXTogZmFsc2UsCisgICAg
ICAgICAgICAvLyBbW0NvbmZpZ3VyYWJsZV1dOiB0cnVlIH0uIgorICAgICAgICAgICAgdmFyIG5h
bWUgPSBjb25zdHJ1Y3Rvci5yaHMudmFsdWU7CisgICAgICAgICAgICBhc3NlcnRfb3duX3Byb3Bl
cnR5KHNlbGYsIG5hbWUpOworICAgICAgICAgICAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKHNlbGYsIG5hbWUpOworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhk
ZXNjLnZhbHVlLCBzZWxmW25hbWVdLCAid3JvbmcgdmFsdWUgaW4gIiArIG5hbWUgKyAiIHByb3Bl
cnR5IGRlc2NyaXB0b3IiKTsKKyAgICAgICAgICAgIGFzc2VydF90cnVlKGRlc2Mud3JpdGFibGUs
IG5hbWUgKyAiIHNob3VsZCBiZSB3cml0YWJsZSIpOworICAgICAgICAgICAgYXNzZXJ0X2ZhbHNl
KGRlc2MuZW51bWVyYWJsZSwgbmFtZSArICIgc2hvdWxkIG5vdCBiZSBlbnVtZXJhYmxlIik7Cisg
ICAgICAgICAgICBhc3NlcnRfdHJ1ZShkZXNjLmNvbmZpZ3VyYWJsZSwgbmFtZSArICIgc2hvdWxk
IGJlIGNvbmZpZ3VyYWJsZSIpOworICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKCJnZXQiIGluIGRl
c2MsIG5hbWUgKyAiIHNob3VsZCBub3QgaGF2ZSBhIGdldHRlciIpOworICAgICAgICAgICAgYXNz
ZXJ0X2ZhbHNlKCJzZXQiIGluIGRlc2MsIG5hbWUgKyAiIHNob3VsZCBub3QgaGF2ZSBhIHNldHRl
ciIpOworICAgICAgICB9LmJpbmQodGhpcyksIHRoaXMubmFtZSArICIgaW50ZXJmYWNlOiBuYW1l
ZCBjb25zdHJ1Y3RvciIpOworCisgICAgICAgIHN1YnNldFRlc3RCeUtleSh0aGlzLm5hbWUsIHRl
c3QsIGZ1bmN0aW9uKCkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gVGhpcyBmdW5jdGlvbiB0
ZXN0cyBXZWJJREwgYXMgb2YgMjAxOS0wMS0xNC4KKworICAgICAgICAgICAgLy8gIjIuIExldCBG
IGJlICEgQ3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHJlYWxtLCBzdGVwcywKKyAgICAgICAgICAgIC8v
ICAgICByZWFsbS5bW0ludHJpbnNpY3NdXS5bWyVGdW5jdGlvblByb3RvdHlwZSVdXSkuIgorICAg
ICAgICAgICAgdmFyIG5hbWUgPSBjb25zdHJ1Y3Rvci5yaHMudmFsdWU7CisgICAgICAgICAgICB2
YXIgdmFsdWUgPSBzZWxmW25hbWVdOworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2Yg
dmFsdWUsICJmdW5jdGlvbiIsICJ0eXBlIG9mIHZhbHVlIGluICIgKyBuYW1lICsgIiBwcm9wZXJ0
eSBkZXNjcmlwdG9yIik7CisgICAgICAgICAgICBhc3NlcnRfbm90X2VxdWFscyh2YWx1ZSwgdGhp
cy5nZXRfaW50ZXJmYWNlX29iamVjdCgpLCAid3JvbmcgdmFsdWUgaW4gIiArIG5hbWUgKyAiIHBy
b3BlcnR5IGRlc2NyaXB0b3IiKTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoT2JqZWN0Lmdl
dFByb3RvdHlwZU9mKHZhbHVlKSwgRnVuY3Rpb24ucHJvdG90eXBlLCAid3JvbmcgdmFsdWUgZm9y
ICIgKyBuYW1lICsgIidzIHByb3RvdHlwZSIpOworICAgICAgICB9LmJpbmQodGhpcyksIHRoaXMu
bmFtZSArICIgaW50ZXJmYWNlOiBuYW1lZCBjb25zdHJ1Y3RvciBvYmplY3QiKTsKKworICAgICAg
ICBzdWJzZXRUZXN0QnlLZXkodGhpcy5uYW1lLCB0ZXN0LCBmdW5jdGlvbigpCisgICAgICAgIHsK
KyAgICAgICAgICAgIC8vIFRoaXMgZnVuY3Rpb24gdGVzdHMgV2ViSURMIGFzIG9mIDIwMTktMDEt
MTQuCisKKyAgICAgICAgICAgIC8vICI3LiBMZXQgcHJvdG8gYmUgdGhlIGludGVyZmFjZSBwcm90
b3R5cGUgb2JqZWN0IG9mIGludGVyZmFjZSBJCisgICAgICAgICAgICAvLyAgICAgaW4gcmVhbG0u
CisgICAgICAgICAgICAvLyAiOC4gUGVyZm9ybSAhIERlZmluZVByb3BlcnR5T3JUaHJvdyhGLCAi
cHJvdG90eXBlIiwKKyAgICAgICAgICAgIC8vICAgICBQcm9wZXJ0eURlc2NyaXB0b3J7CisgICAg
ICAgICAgICAvLyAgICAgICAgIFtbVmFsdWVdXTogcHJvdG8sIFtbV3JpdGFibGVdXTogZmFsc2Us
CisgICAgICAgICAgICAvLyAgICAgICAgIFtbRW51bWVyYWJsZV1dOiBmYWxzZSwgW1tDb25maWd1
cmFibGVdXTogZmFsc2UKKyAgICAgICAgICAgIC8vICAgICB9KS4iCisgICAgICAgICAgICB2YXIg
bmFtZSA9IGNvbnN0cnVjdG9yLnJocy52YWx1ZTsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZCA9
IHRoaXMuZ2V0X2ludGVyZmFjZV9vYmplY3QoKS5wcm90b3R5cGU7CisgICAgICAgICAgICB2YXIg
ZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc2VsZltuYW1lXSwgInByb3Rv
dHlwZSIpOworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhkZXNjLnZhbHVlLCBleHBlY3RlZCwg
Indyb25nIHZhbHVlIGZvciAiICsgbmFtZSArICIucHJvdG90eXBlIik7CisgICAgICAgICAgICBh
c3NlcnRfZmFsc2UoZGVzYy53cml0YWJsZSwgInByb3RvdHlwZSBzaG91bGQgbm90IGJlIHdyaXRh
YmxlIik7CisgICAgICAgICAgICBhc3NlcnRfZmFsc2UoZGVzYy5lbnVtZXJhYmxlLCAicHJvdG90
eXBlIHNob3VsZCBub3QgYmUgZW51bWVyYWJsZSIpOworICAgICAgICAgICAgYXNzZXJ0X2ZhbHNl
KGRlc2MuY29uZmlndXJhYmxlLCAicHJvdG90eXBlIHNob3VsZCBub3QgYmUgY29uZmlndXJhYmxl
Iik7CisgICAgICAgICAgICBhc3NlcnRfZmFsc2UoImdldCIgaW4gZGVzYywgInByb3RvdHlwZSBz
aG91bGQgbm90IGhhdmUgYSBnZXR0ZXIiKTsKKyAgICAgICAgICAgIGFzc2VydF9mYWxzZSgic2V0
IiBpbiBkZXNjLCAicHJvdG90eXBlIHNob3VsZCBub3QgaGF2ZSBhIHNldHRlciIpOworICAgICAg
ICB9LmJpbmQodGhpcyksIHRoaXMubmFtZSArICIgaW50ZXJmYWNlOiBuYW1lZCBjb25zdHJ1Y3Rv
ciBwcm90b3R5cGUgcHJvcGVydHkiKTsKKworICAgICAgICBzdWJzZXRUZXN0QnlLZXkodGhpcy5u
YW1lLCB0ZXN0LCBmdW5jdGlvbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIFRoaXMgZnVu
Y3Rpb24gdGVzdHMgV2ViSURMIGFzIG9mIDIwMTktMDEtMTQuCisKKyAgICAgICAgICAgIC8vICIz
LiBQZXJmb3JtICEgU2V0RnVuY3Rpb25OYW1lKEYsIGlkKS4iCisgICAgICAgICAgICB2YXIgbmFt
ZSA9IGNvbnN0cnVjdG9yLnJocy52YWx1ZTsKKyAgICAgICAgICAgIHZhciBkZXNjID0gT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzZWxmW25hbWVdLCAibmFtZSIpOworICAgICAgICAg
ICAgYXNzZXJ0X2VxdWFscyhkZXNjLnZhbHVlLCBuYW1lLCAid3JvbmcgdmFsdWUgZm9yICIgKyBu
YW1lICsgIi5uYW1lIik7CisgICAgICAgICAgICBhc3NlcnRfZmFsc2UoZGVzYy53cml0YWJsZSwg
Im5hbWUgc2hvdWxkIG5vdCBiZSB3cml0YWJsZSIpOworICAgICAgICAgICAgYXNzZXJ0X2ZhbHNl
KGRlc2MuZW51bWVyYWJsZSwgIm5hbWUgc2hvdWxkIG5vdCBiZSBlbnVtZXJhYmxlIik7CisgICAg
ICAgICAgICBhc3NlcnRfdHJ1ZShkZXNjLmNvbmZpZ3VyYWJsZSwgIm5hbWUgc2hvdWxkIGJlIGNv
bmZpZ3VyYWJsZSIpOworICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKCJnZXQiIGluIGRlc2MsICJu
YW1lIHNob3VsZCBub3QgaGF2ZSBhIGdldHRlciIpOworICAgICAgICAgICAgYXNzZXJ0X2ZhbHNl
KCJzZXQiIGluIGRlc2MsICJuYW1lIHNob3VsZCBub3QgaGF2ZSBhIHNldHRlciIpOworICAgICAg
ICB9LmJpbmQodGhpcyksIHRoaXMubmFtZSArICIgaW50ZXJmYWNlOiBuYW1lZCBjb25zdHJ1Y3Rv
ciBuYW1lIik7CisKKyAgICAgICAgc3Vic2V0VGVzdEJ5S2V5KHRoaXMubmFtZSwgdGVzdCwgZnVu
Y3Rpb24oKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBUaGlzIGZ1bmN0aW9uIHRlc3RzIFdl
YklETCBhcyBvZiAyMDE5LTAxLTE0LgorCisgICAgICAgICAgICAvLyAiNC4gSW5pdGlhbGl6ZSBT
IHRvIHRoZSBlZmZlY3RpdmUgb3ZlcmxvYWQgc2V0IGZvciBjb25zdHJ1Y3RvcnMKKyAgICAgICAg
ICAgIC8vICAgICB3aXRoIGlkZW50aWZpZXIgaWQgb24gaW50ZXJmYWNlIEkgYW5kIHdpdGggYXJn
dW1lbnQgY291bnQgMC4KKyAgICAgICAgICAgIC8vICI1LiBMZXQgbGVuZ3RoIGJlIHRoZSBsZW5n
dGggb2YgdGhlIHNob3J0ZXN0IGFyZ3VtZW50IGxpc3Qgb2YKKyAgICAgICAgICAgIC8vICAgICB0
aGUgZW50cmllcyBpbiBTLgorICAgICAgICAgICAgLy8gIjYuIFBlcmZvcm0gISBTZXRGdW5jdGlv
bkxlbmd0aChGLCBsZW5ndGgpLiIKKyAgICAgICAgICAgIHZhciBuYW1lID0gY29uc3RydWN0b3Iu
cmhzLnZhbHVlOworICAgICAgICAgICAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKHNlbGZbbmFtZV0sICJsZW5ndGgiKTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVh
bHMoZGVzYy52YWx1ZSwgbWluX2xlbmd0aCwgIndyb25nIHZhbHVlIGZvciAiICsgbmFtZSArICIu
bGVuZ3RoIik7CisgICAgICAgICAgICBhc3NlcnRfZmFsc2UoZGVzYy53cml0YWJsZSwgImxlbmd0
aCBzaG91bGQgbm90IGJlIHdyaXRhYmxlIik7CisgICAgICAgICAgICBhc3NlcnRfZmFsc2UoZGVz
Yy5lbnVtZXJhYmxlLCAibGVuZ3RoIHNob3VsZCBub3QgYmUgZW51bWVyYWJsZSIpOworICAgICAg
ICAgICAgYXNzZXJ0X3RydWUoZGVzYy5jb25maWd1cmFibGUsICJsZW5ndGggc2hvdWxkIGJlIGNv
bmZpZ3VyYWJsZSIpOworICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKCJnZXQiIGluIGRlc2MsICJs
ZW5ndGggc2hvdWxkIG5vdCBoYXZlIGEgZ2V0dGVyIik7CisgICAgICAgICAgICBhc3NlcnRfZmFs
c2UoInNldCIgaW4gZGVzYywgImxlbmd0aCBzaG91bGQgbm90IGhhdmUgYSBzZXR0ZXIiKTsKKyAg
ICAgICAgfS5iaW5kKHRoaXMpLCB0aGlzLm5hbWUgKyAiIGludGVyZmFjZTogbmFtZWQgY29uc3Ry
dWN0b3IgbGVuZ3RoIik7CisKKyAgICAgICAgc3Vic2V0VGVzdEJ5S2V5KHRoaXMubmFtZSwgdGVz
dCwgZnVuY3Rpb24oKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBUaGlzIGZ1bmN0aW9uIHRl
c3RzIFdlYklETCBhcyBvZiAyMDE5LTAxLTE0LgorCisgICAgICAgICAgICAvLyAiMS4gTGV0IHN0
ZXBzIGJlIHRoZSBmb2xsb3dpbmcgc3RlcHM6CisgICAgICAgICAgICAvLyAiICAgIDEuIElmIE5l
d1RhcmdldCBpcyB1bmRlZmluZWQsIHRoZW4gdGhyb3cgYSBUeXBlRXJyb3IuIgorICAgICAgICAg
ICAgdmFyIG5hbWUgPSBjb25zdHJ1Y3Rvci5yaHMudmFsdWU7CisgICAgICAgICAgICB2YXIgYXJn
cyA9IGNvbnN0cnVjdG9yLmFyZ3VtZW50cy5tYXAoZnVuY3Rpb24oYXJnKSB7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIGNyZWF0ZV9zdWl0YWJsZV9vYmplY3QoYXJnLmlkbFR5cGUpOworICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKGdsb2JhbE9mKHNlbGZbbmFt
ZV0pLlR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgc2VsZltuYW1lXSgu
Li5hcmdzKTsKKyAgICAgICAgICAgIH0uYmluZCh0aGlzKSk7CisgICAgICAgIH0uYmluZCh0aGlz
KSwgdGhpcy5uYW1lICsgIiBpbnRlcmZhY2U6IG5hbWVkIGNvbnN0cnVjdG9yIHdpdGhvdXQgJ25l
dyciKTsKKyAgICB9CiAKLSAgICB0ZXN0KGZ1bmN0aW9uKCkKKyAgICBzdWJzZXRUZXN0QnlLZXko
dGhpcy5uYW1lLCB0ZXN0LCBmdW5jdGlvbigpCiAgICAgewogICAgICAgICAvLyBUaGlzIGZ1bmN0
aW9uIHRlc3RzIFdlYklETCBhcyBvZiAyMDE1LTAxLTIxLgogICAgICAgICAvLyBodHRwczovL2hl
eWNhbS5naXRodWIuaW8vd2ViaWRsLyNpbnRlcmZhY2Utb2JqZWN0CiAKLSAgICAgICAgaWYgKHRo
aXMuaXNfY2FsbGJhY2soKSAmJiAhdGhpcy5oYXNfY29uc3RhbnRzKCkpIHsKKyAgICAgICAgaWYg
KCF0aGlzLnNob3VsZF9oYXZlX2ludGVyZmFjZV9vYmplY3QoKSkgewogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0eShzZWxmLCB0aGlz
Lm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgInNlbGYgZG9lcyBub3QgaGF2ZSBv
d24gcHJvcGVydHkgIiArIGZvcm1hdF92YWx1ZSh0aGlzLm5hbWUpKTsKKyAgICAgICAgdGhpcy5h
c3NlcnRfaW50ZXJmYWNlX29iamVjdF9leGlzdHMoKTsKIAogICAgICAgICBpZiAodGhpcy5pc19j
YWxsYmFjaygpKSB7Ci0gICAgICAgICAgICBhc3NlcnRfZmFsc2UoInByb3RvdHlwZSIgaW4gc2Vs
Zlt0aGlzLm5hbWVdLAorICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKCJwcm90b3R5cGUiIGluIHRo
aXMuZ2V0X2ludGVyZmFjZV9vYmplY3QoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlz
Lm5hbWUgKyAnIHNob3VsZCBub3QgaGF2ZSBhICJwcm90b3R5cGUiIHByb3BlcnR5Jyk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTk1NCwxOCArMTc2MCwxOCBAQCBJZGxJbnRl
cmZhY2UucHJvdG90eXBlLnRlc3Rfc2VsZiA9IGZ1bmN0aW9uKCkKICAgICAgICAgLy8gcHJvcGVy
dGllcyB0aGF0IGNvcnJlc3BvbmQgdG8gdGhlIHJlZ3VsYXIgYXR0cmlidXRlcyBhbmQgcmVndWxh
cgogICAgICAgICAvLyBvcGVyYXRpb25zIGRlZmluZWQgb24gdGhlIGludGVyZmFjZSwgYW5kIGlz
IGRlc2NyaWJlZCBpbiBtb3JlIGRldGFpbAogICAgICAgICAvLyBpbiBzZWN0aW9uIDQuNS40IGJl
bG93LiIKLSAgICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0eShzZWxmW3RoaXMubmFtZV0sICJwcm90
b3R5cGUiLAorICAgICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KHRoaXMuZ2V0X2ludGVyZmFjZV9v
YmplY3QoKSwgInByb3RvdHlwZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludGVy
ZmFjZSAiJyArIHRoaXMubmFtZSArICciIGRvZXMgbm90IGhhdmUgb3duIHByb3BlcnR5ICJwcm90
b3R5cGUiJyk7Ci0gICAgICAgIHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihzZWxmW3RoaXMubmFtZV0sICJwcm90b3R5cGUiKTsKLSAgICAgICAgYXNzZXJ0X2ZhbHNl
KCJnZXQiIGluIGRlc2MsIHRoaXMubmFtZSArICIucHJvdG90eXBlIGhhcyBnZXR0ZXIiKTsKLSAg
ICAgICAgYXNzZXJ0X2ZhbHNlKCJzZXQiIGluIGRlc2MsIHRoaXMubmFtZSArICIucHJvdG90eXBl
IGhhcyBzZXR0ZXIiKTsKLSAgICAgICAgYXNzZXJ0X2ZhbHNlKGRlc2Mud3JpdGFibGUsIHRoaXMu
bmFtZSArICIucHJvdG90eXBlIGlzIHdyaXRhYmxlIik7Ci0gICAgICAgIGFzc2VydF9mYWxzZShk
ZXNjLmVudW1lcmFibGUsIHRoaXMubmFtZSArICIucHJvdG90eXBlIGlzIGVudW1lcmFibGUiKTsK
LSAgICAgICAgYXNzZXJ0X2ZhbHNlKGRlc2MuY29uZmlndXJhYmxlLCB0aGlzLm5hbWUgKyAiLnBy
b3RvdHlwZSBpcyBjb25maWd1cmFibGUiKTsKKyAgICAgICAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKHRoaXMuZ2V0X2ludGVyZmFjZV9vYmplY3QoKSwgInByb3Rv
dHlwZSIpOworICAgICAgICBhc3NlcnRfZmFsc2UoImdldCIgaW4gZGVzYywgdGhpcy5uYW1lICsg
Ii5wcm90b3R5cGUgc2hvdWxkIG5vdCBoYXZlIGEgZ2V0dGVyIik7CisgICAgICAgIGFzc2VydF9m
YWxzZSgic2V0IiBpbiBkZXNjLCB0aGlzLm5hbWUgKyAiLnByb3RvdHlwZSBzaG91bGQgbm90IGhh
dmUgYSBzZXR0ZXIiKTsKKyAgICAgICAgYXNzZXJ0X2ZhbHNlKGRlc2Mud3JpdGFibGUsIHRoaXMu
bmFtZSArICIucHJvdG90eXBlIHNob3VsZCBub3QgYmUgd3JpdGFibGUiKTsKKyAgICAgICAgYXNz
ZXJ0X2ZhbHNlKGRlc2MuZW51bWVyYWJsZSwgdGhpcy5uYW1lICsgIi5wcm90b3R5cGUgc2hvdWxk
IG5vdCBiZSBlbnVtZXJhYmxlIik7CisgICAgICAgIGFzc2VydF9mYWxzZShkZXNjLmNvbmZpZ3Vy
YWJsZSwgdGhpcy5uYW1lICsgIi5wcm90b3R5cGUgc2hvdWxkIG5vdCBiZSBjb25maWd1cmFibGUi
KTsKIAogICAgICAgICAvLyBOZXh0LCB0ZXN0IHRoYXQgdGhlIFtbUHJvdG90eXBlXV0gb2YgdGhl
IGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0CiAgICAgICAgIC8vIGlzIGNvcnJlY3QuIChUaGlz
IGlzIG1hZGUgc29tZXdoYXQgZGlmZmljdWx0IGJ5IHRoZSBleGlzdGVuY2Ugb2YKLSAgICAgICAg
Ly8gW05vSW50ZXJmYWNlT2JqZWN0XS4pCisgICAgICAgIC8vIFtMZWdhY3lOb0ludGVyZmFjZU9i
amVjdF0uKQogICAgICAgICAvLyBUT0RPOiBBcnllaCB0aGlua3MgdGhlcmUncyBhdCBsZWFzdCBv
dGhlciBwbGFjZSBpbiB0aGlzIGZpbGUgd2hlcmUKICAgICAgICAgLy8gICAgICAgd2UgdHJ5IHRv
IGZpZ3VyZSBvdXQgaWYgYW4gaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QgaXMKICAgICAgICAg
Ly8gICAgICAgY29ycmVjdC4gQ29uc29saWRhdGUgdGhhdCBjb2RlLgpAQCAtOTczLDE4MSArMTc3
OSwzOTMgQEAgSWRsSW50ZXJmYWNlLnByb3RvdHlwZS50ZXN0X3NlbGYgPSBmdW5jdGlvbigpCiAg
ICAgICAgIC8vICJUaGUgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QgZm9yIGEgZ2l2ZW4gaW50
ZXJmYWNlIEEgbXVzdCBoYXZlIGFuCiAgICAgICAgIC8vIGludGVybmFsIFtbUHJvdG90eXBlXV0g
cHJvcGVydHkgd2hvc2UgdmFsdWUgaXMgcmV0dXJuZWQgZnJvbSB0aGUKICAgICAgICAgLy8gZm9s
bG93aW5nIHN0ZXBzOgotICAgICAgICAvLyAiSWYgQSBpcyBkZWNsYXJlZCB3aXRoIHRoZSBbR2xv
YmFsXSBvciBbUHJpbWFyeUdsb2JhbF0gZXh0ZW5kZWQKKyAgICAgICAgLy8gIklmIEEgaXMgZGVj
bGFyZWQgd2l0aCB0aGUgW0dsb2JhbF0gZXh0ZW5kZWQKICAgICAgICAgLy8gYXR0cmlidXRlLCBh
bmQgQSBzdXBwb3J0cyBuYW1lZCBwcm9wZXJ0aWVzLCB0aGVuIHJldHVybiB0aGUgbmFtZWQKLSAg
ICAgICAgLy8gcHJvcGVydGllcyBvYmplY3QgZm9yIEEsIGFzIGRlZmluZWQgaW4gc2VjdGlvbiA0
LjUuNSBiZWxvdy4KKyAgICAgICAgLy8gcHJvcGVydGllcyBvYmplY3QgZm9yIEEsIGFzIGRlZmlu
ZWQgaW4gwqczLjYuNCBOYW1lZCBwcm9wZXJ0aWVzCisgICAgICAgIC8vIG9iamVjdC4KICAgICAg
ICAgLy8gIk90aGVyd2lzZSwgaWYgQSBpcyBkZWNsYXJlZCB0byBpbmhlcml0IGZyb20gYW5vdGhl
ciBpbnRlcmZhY2UsIHRoZW4KICAgICAgICAgLy8gcmV0dXJuIHRoZSBpbnRlcmZhY2UgcHJvdG90
eXBlIG9iamVjdCBmb3IgdGhlIGluaGVyaXRlZCBpbnRlcmZhY2UuCi0gICAgICAgIC8vICJPdGhl
cndpc2UsIGlmIEEgaXMgZGVjbGFyZWQgd2l0aCB0aGUgW0FycmF5Q2xhc3NdIGV4dGVuZGVkCi0g
ICAgICAgIC8vIGF0dHJpYnV0ZSwgdGhlbiByZXR1cm4gJUFycmF5UHJvdG90eXBlJSAoW0VDTUEt
MjYyXSwgc2VjdGlvbgotICAgICAgICAvLyA2LjEuNy40KS4KLSAgICAgICAgLy8gIk90aGVyd2lz
ZSwgcmV0dXJuICVPYmplY3RQcm90b3R5cGUlIChbRUNNQS0yNjJdLCBzZWN0aW9uIDYuMS43LjQp
LgotICAgICAgICAvLyAoW0VDTUEtMjYyXSwgc2VjdGlvbiAxNS4yLjQpLgorICAgICAgICAvLyAi
T3RoZXJ3aXNlLCByZXR1cm4gJU9iamVjdFByb3RvdHlwZSUuCisgICAgICAgIC8vCisgICAgICAg
IC8vICJJbiB0aGUgRUNNQVNjcmlwdCBiaW5kaW5nLCB0aGUgRE9NRXhjZXB0aW9uIHR5cGUgaGFz
IHNvbWUgYWRkaXRpb25hbAorICAgICAgICAvLyByZXF1aXJlbWVudHM6CisgICAgICAgIC8vCisg
ICAgICAgIC8vICAgICAiVW5saWtlIG5vcm1hbCBpbnRlcmZhY2UgdHlwZXMsIHRoZSBpbnRlcmZh
Y2UgcHJvdG90eXBlIG9iamVjdAorICAgICAgICAvLyAgICAgZm9yIERPTUV4Y2VwdGlvbiBtdXN0
IGhhdmUgYXMgaXRzIFtbUHJvdG90eXBlXV0gdGhlIGludHJpbnNpYworICAgICAgICAvLyAgICAg
b2JqZWN0ICVFcnJvclByb3RvdHlwZSUuIgorICAgICAgICAvLwogICAgICAgICBpZiAodGhpcy5u
YW1lID09PSAiV2luZG93IikgewotICAgICAgICAgICAgYXNzZXJ0X2NsYXNzX3N0cmluZyhPYmpl
Y3QuZ2V0UHJvdG90eXBlT2Yoc2VsZlt0aGlzLm5hbWVdLnByb3RvdHlwZSksCisgICAgICAgICAg
ICBhc3NlcnRfY2xhc3Nfc3RyaW5nKE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzLmdldF9pbnRl
cmZhY2Vfb2JqZWN0KCkucHJvdG90eXBlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ1dpbmRvd1Byb3BlcnRpZXMnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
Q2xhc3MgbmFtZSBmb3IgcHJvdG90eXBlIG9mIFdpbmRvdycgKwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnLnByb3RvdHlwZSBpcyBub3QgIldpbmRvd1Byb3BlcnRpZXMiJyk7CiAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB2YXIgaW5oZXJpdF9pbnRlcmZhY2UsIGluaGVy
aXRfaW50ZXJmYWNlX2hhc19pbnRlcmZhY2Vfb2JqZWN0OworICAgICAgICAgICAgdmFyIGluaGVy
aXRfaW50ZXJmYWNlLCBpbmhlcml0X2ludGVyZmFjZV9pbnRlcmZhY2Vfb2JqZWN0OwogICAgICAg
ICAgICAgaWYgKHRoaXMuYmFzZSkgewogICAgICAgICAgICAgICAgIGluaGVyaXRfaW50ZXJmYWNl
ID0gdGhpcy5iYXNlOwotICAgICAgICAgICAgICAgIGluaGVyaXRfaW50ZXJmYWNlX2hhc19pbnRl
cmZhY2Vfb2JqZWN0ID0KLSAgICAgICAgICAgICAgICAgICAgIXRoaXMuYXJyYXkKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAubWVtYmVyc1tpbmhlcml0X2ludGVyZmFjZV0KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAuaGFzX2V4dGVuZGVkX2F0dHJpYnV0ZSgiTm9JbnRlcmZhY2VPYmplY3Qi
KTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5oYXNfZXh0ZW5kZWRfYXR0cmlidXRlKCdB
cnJheUNsYXNzJykpIHsKLSAgICAgICAgICAgICAgICBpbmhlcml0X2ludGVyZmFjZSA9ICdBcnJh
eSc7Ci0gICAgICAgICAgICAgICAgaW5oZXJpdF9pbnRlcmZhY2VfaGFzX2ludGVyZmFjZV9vYmpl
Y3QgPSB0cnVlOworICAgICAgICAgICAgICAgIHZhciBwYXJlbnQgPSB0aGlzLmFycmF5Lm1lbWJl
cnNbaW5oZXJpdF9pbnRlcmZhY2VdOworICAgICAgICAgICAgICAgIGlmICghcGFyZW50Lmhhc19l
eHRlbmRlZF9hdHRyaWJ1dGUoIkxlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0IikpIHsKKyAgICAgICAg
ICAgICAgICAgICAgcGFyZW50LmFzc2VydF9pbnRlcmZhY2Vfb2JqZWN0X2V4aXN0cygpOworICAg
ICAgICAgICAgICAgICAgICBpbmhlcml0X2ludGVyZmFjZV9pbnRlcmZhY2Vfb2JqZWN0ID0gcGFy
ZW50LmdldF9pbnRlcmZhY2Vfb2JqZWN0KCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfSBlbHNlIGlmICh0aGlzLm5hbWUgPT09ICJET01FeGNlcHRpb24iKSB7CisgICAgICAgICAg
ICAgICAgaW5oZXJpdF9pbnRlcmZhY2UgPSAnRXJyb3InOworICAgICAgICAgICAgICAgIGluaGVy
aXRfaW50ZXJmYWNlX2ludGVyZmFjZV9vYmplY3QgPSBzZWxmLkVycm9yOwogICAgICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgICAgICBpbmhlcml0X2ludGVyZmFjZSA9ICdPYmplY3QnOwot
ICAgICAgICAgICAgICAgIGluaGVyaXRfaW50ZXJmYWNlX2hhc19pbnRlcmZhY2Vfb2JqZWN0ID0g
dHJ1ZTsKKyAgICAgICAgICAgICAgICBpbmhlcml0X2ludGVyZmFjZV9pbnRlcmZhY2Vfb2JqZWN0
ID0gc2VsZi5PYmplY3Q7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoaW5oZXJpdF9p
bnRlcmZhY2VfaGFzX2ludGVyZmFjZV9vYmplY3QpIHsKLSAgICAgICAgICAgICAgICBhc3NlcnRf
b3duX3Byb3BlcnR5KHNlbGYsIGluaGVyaXRfaW50ZXJmYWNlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ3Nob3VsZCBpbmhlcml0IGZyb20gJyArIGluaGVyaXRfaW50ZXJm
YWNlICsgJywgYnV0IHNlbGYgaGFzIG5vIHN1Y2ggcHJvcGVydHknKTsKLSAgICAgICAgICAgICAg
ICBhc3NlcnRfb3duX3Byb3BlcnR5KHNlbGZbaW5oZXJpdF9pbnRlcmZhY2VdLCAncHJvdG90eXBl
JywKKyAgICAgICAgICAgIGlmIChpbmhlcml0X2ludGVyZmFjZV9pbnRlcmZhY2Vfb2JqZWN0KSB7
CisgICAgICAgICAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHMoaW5oZXJpdF9pbnRlcmZhY2VfaW50
ZXJmYWNlX29iamVjdCwgdW5kZWZpbmVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdzaG91bGQgaW5oZXJpdCBmcm9tICcgKyBpbmhlcml0X2ludGVyZmFjZSArICcsIGJ1dCB0
aGVyZSBpcyBubyBzdWNoIHByb3BlcnR5Jyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0X293bl9w
cm9wZXJ0eShpbmhlcml0X2ludGVyZmFjZV9pbnRlcmZhY2Vfb2JqZWN0LCAncHJvdG90eXBlJywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaG91bGQgaW5oZXJpdCBmcm9t
ICcgKyBpbmhlcml0X2ludGVyZmFjZSArICcsIGJ1dCB0aGF0IG9iamVjdCBoYXMgbm8gInByb3Rv
dHlwZSIgcHJvcGVydHknKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKE9iamVjdC5n
ZXRQcm90b3R5cGVPZihzZWxmW3RoaXMubmFtZV0ucHJvdG90eXBlKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNlbGZbaW5oZXJpdF9pbnRlcmZhY2VdLnByb3RvdHlwZSwKKyAgICAg
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzLmdldF9p
bnRlcmZhY2Vfb2JqZWN0KCkucHJvdG90eXBlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGluaGVyaXRfaW50ZXJmYWNlX2ludGVyZmFjZV9vYmplY3QucHJvdG90eXBlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb3RvdHlwZSBvZiAnICsgdGhpcy5uYW1lICsgJy5w
cm90b3R5cGUgaXMgbm90ICcgKyBpbmhlcml0X2ludGVyZmFjZSArICcucHJvdG90eXBlJyk7CiAg
ICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIC8vIFdlIGNhbid0IHRlc3QgdGhh
dCB3ZSBnZXQgdGhlIGNvcnJlY3Qgb2JqZWN0LCBiZWNhdXNlIHRoaXMgaXMgdGhlCiAgICAgICAg
ICAgICAgICAgLy8gb25seSB3YXkgdG8gZ2V0IG91ciBoYW5kcyBvbiBpdC4gV2Ugb25seSB0ZXN0
IHRoYXQgaXRzIGNsYXNzCiAgICAgICAgICAgICAgICAgLy8gc3RyaW5nLCBhdCBsZWFzdCwgaXMg
Y29ycmVjdC4KLSAgICAgICAgICAgICAgICBhc3NlcnRfY2xhc3Nfc3RyaW5nKE9iamVjdC5nZXRQ
cm90b3R5cGVPZihzZWxmW3RoaXMubmFtZV0ucHJvdG90eXBlKSwKKyAgICAgICAgICAgICAgICBh
c3NlcnRfY2xhc3Nfc3RyaW5nKE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzLmdldF9pbnRlcmZh
Y2Vfb2JqZWN0KCkucHJvdG90eXBlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGluaGVyaXRfaW50ZXJmYWNlICsgJ1Byb3RvdHlwZScsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnQ2xhc3MgbmFtZSBmb3IgcHJvdG90eXBlIG9mICcgKyB0aGlzLm5h
bWUgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy5wcm90b3R5cGUgaXMg
bm90ICInICsgaW5oZXJpdF9pbnRlcmZhY2UgKyAnUHJvdG90eXBlIicpOwogICAgICAgICAgICAg
fQogICAgICAgICB9CisKKyAgICAgICAgLy8gIlRoZSBjbGFzcyBzdHJpbmcgb2YgYW4gaW50ZXJm
YWNlIHByb3RvdHlwZSBvYmplY3QgaXMgdGhlCisgICAgICAgIC8vIGNvbmNhdGVuYXRpb24gb2Yg
dGhlIGludGVyZmFjZeKAmXMgcXVhbGlmaWVkIGlkZW50aWZpZXIgYW5kIHRoZSBzdHJpbmcKKyAg
ICAgICAgLy8g4oCcUHJvdG90eXBl4oCdLiIKKworICAgICAgICAvLyBTa2lwIHRoZXNlIHRlc3Rz
IGZvciBub3cgZHVlIHRvIGEgc3BlY2lmaWNhdGlvbiBpc3N1ZSBhYm91dAorICAgICAgICAvLyBw
cm90b3R5cGUgbmFtZS4KKyAgICAgICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL0J1Z3MvUHVibGlj
L3Nob3dfYnVnLmNnaT9pZD0yODI0NAorCisgICAgICAgIC8vIGFzc2VydF9jbGFzc19zdHJpbmco
dGhpcy5nZXRfaW50ZXJmYWNlX29iamVjdCgpLnByb3RvdHlwZSwgdGhpcy5nZXRfcXVhbGlmaWVk
X25hbWUoKSArICJQcm90b3R5cGUiLAorICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICJj
bGFzcyBzdHJpbmcgb2YgIiArIHRoaXMubmFtZSArICIucHJvdG90eXBlIik7CisKKyAgICAgICAg
Ly8gU3RyaW5nKCkgc2hvdWxkIGVuZCB1cCBjYWxsaW5nIHt9LnRvU3RyaW5nIGlmIG5vdGhpbmcg
ZGVmaW5lcyBhCisgICAgICAgIC8vIHN0cmluZ2lmaWVyLgorICAgICAgICBpZiAoIXRoaXMuaGFz
X3N0cmluZ2lmaWVyKCkpIHsKKyAgICAgICAgICAgIC8vIGFzc2VydF9lcXVhbHMoU3RyaW5nKHRo
aXMuZ2V0X2ludGVyZmFjZV9vYmplY3QoKS5wcm90b3R5cGUpLCAiW29iamVjdCAiICsgdGhpcy5n
ZXRfcXVhbGlmaWVkX25hbWUoKSArICJQcm90b3R5cGVdIiwKKyAgICAgICAgICAgIC8vICAgICAg
ICAgIlN0cmluZygiICsgdGhpcy5uYW1lICsgIi5wcm90b3R5cGUpIik7CisgICAgICAgIH0KICAg
ICB9LmJpbmQodGhpcyksIHRoaXMubmFtZSArICIgaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHBy
b3BlcnRpZXMgb2YgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QiKTsKIAotICAgIHRlc3QoZnVu
Y3Rpb24oKQorICAgIC8vICJJZiB0aGUgaW50ZXJmYWNlIGlzIGRlY2xhcmVkIHdpdGggdGhlIFtH
bG9iYWxdCisgICAgLy8gZXh0ZW5kZWQgYXR0cmlidXRlLCBvciB0aGUgaW50ZXJmYWNlIGlzIGlu
IHRoZSBzZXQgb2YgaW5oZXJpdGVkCisgICAgLy8gaW50ZXJmYWNlcyBmb3IgYW55IG90aGVyIGlu
dGVyZmFjZSB0aGF0IGlzIGRlY2xhcmVkIHdpdGggb25lIG9mIHRoZXNlCisgICAgLy8gYXR0cmli
dXRlcywgdGhlbiB0aGUgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QgbXVzdCBiZSBhbiBpbW11
dGFibGUKKyAgICAvLyBwcm90b3R5cGUgZXhvdGljIG9iamVjdC4iCisgICAgLy8gaHR0cHM6Ly9o
ZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jaW50ZXJmYWNlLXByb3RvdHlwZS1vYmplY3QKKyAgICBp
ZiAodGhpcy5pc19nbG9iYWwoKSkgeworICAgICAgICB0aGlzLnRlc3RfaW1tdXRhYmxlX3Byb3Rv
dHlwZSgiaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QiLCB0aGlzLmdldF9pbnRlcmZhY2Vfb2Jq
ZWN0KCkucHJvdG90eXBlKTsKKyAgICB9CisKKyAgICBzdWJzZXRUZXN0QnlLZXkodGhpcy5uYW1l
LCB0ZXN0LCBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBpZiAodGhpcy5pc19jYWxsYmFjaygp
ICYmICF0aGlzLmhhc19jb25zdGFudHMoKSkgeworICAgICAgICBpZiAoIXRoaXMuc2hvdWxkX2hh
dmVfaW50ZXJmYWNlX29iamVjdCgpKSB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IAotICAgICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KHNlbGYsIHRoaXMubmFtZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAic2VsZiBkb2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0eSAiICsg
Zm9ybWF0X3ZhbHVlKHRoaXMubmFtZSkpOworICAgICAgICB0aGlzLmFzc2VydF9pbnRlcmZhY2Vf
b2JqZWN0X2V4aXN0cygpOwogCiAgICAgICAgIGlmICh0aGlzLmlzX2NhbGxiYWNrKCkpIHsKLSAg
ICAgICAgICAgIGFzc2VydF9mYWxzZSgicHJvdG90eXBlIiBpbiBzZWxmW3RoaXMubmFtZV0sCisg
ICAgICAgICAgICBhc3NlcnRfZmFsc2UoInByb3RvdHlwZSIgaW4gdGhpcy5nZXRfaW50ZXJmYWNl
X29iamVjdCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmFtZSArICcgc2hvdWxk
IG5vdCBoYXZlIGEgInByb3RvdHlwZSIgcHJvcGVydHknKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogCi0gICAgICAgIGFzc2VydF9vd25fcHJvcGVydHkoc2VsZlt0aGlzLm5hbWVd
LCAicHJvdG90eXBlIiwKKyAgICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0eSh0aGlzLmdldF9pbnRl
cmZhY2Vfb2JqZWN0KCksICJwcm90b3R5cGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdpbnRlcmZhY2UgIicgKyB0aGlzLm5hbWUgKyAnIiBkb2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0
eSAicHJvdG90eXBlIicpOwogCi0gICAgICAgIC8vICJJZiB0aGUgW05vSW50ZXJmYWNlT2JqZWN0
XSBleHRlbmRlZCBhdHRyaWJ1dGUgd2FzIG5vdCBzcGVjaWZpZWQgb24KLSAgICAgICAgLy8gdGhl
IGludGVyZmFjZSwgdGhlbiB0aGUgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QgbXVzdCBhbHNv
IGhhdmUgYQorICAgICAgICAvLyAiSWYgdGhlIFtMZWdhY3lOb0ludGVyZmFjZU9iamVjdF0gZXh0
ZW5kZWQgYXR0cmlidXRlIHdhcyBub3Qgc3BlY2lmaWVkCisgICAgICAgIC8vIG9uIHRoZSBpbnRl
cmZhY2UsIHRoZW4gdGhlIGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0IG11c3QgYWxzbyBoYXZl
IGEKICAgICAgICAgLy8gcHJvcGVydHkgbmFtZWQg4oCcY29uc3RydWN0b3LigJ0gd2l0aCBhdHRy
aWJ1dGVzIHsgW1tXcml0YWJsZV1dOiB0cnVlLAogICAgICAgICAvLyBbW0VudW1lcmFibGVdXTog
ZmFsc2UsIFtbQ29uZmlndXJhYmxlXV06IHRydWUgfSB3aG9zZSB2YWx1ZSBpcyBhCiAgICAgICAg
IC8vIHJlZmVyZW5jZSB0byB0aGUgaW50ZXJmYWNlIG9iamVjdCBmb3IgdGhlIGludGVyZmFjZS4i
Ci0gICAgICAgIGFzc2VydF9vd25fcHJvcGVydHkoc2VsZlt0aGlzLm5hbWVdLnByb3RvdHlwZSwg
ImNvbnN0cnVjdG9yIiwKKyAgICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0eSh0aGlzLmdldF9pbnRl
cmZhY2Vfb2JqZWN0KCkucHJvdG90eXBlLCAiY29uc3RydWN0b3IiLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRoaXMubmFtZSArICcucHJvdG90eXBlIGRvZXMgbm90IGhhdmUgb3duIHBy
b3BlcnR5ICJjb25zdHJ1Y3RvciInKTsKLSAgICAgICAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKHNlbGZbdGhpcy5uYW1lXS5wcm90b3R5cGUsICJjb25zdHJ1Y3Rv
ciIpOwotICAgICAgICBhc3NlcnRfZmFsc2UoImdldCIgaW4gZGVzYywgdGhpcy5uYW1lICsgIi5w
cm90b3R5cGUuY29uc3RydWN0b3IgaGFzIGdldHRlciIpOwotICAgICAgICBhc3NlcnRfZmFsc2Uo
InNldCIgaW4gZGVzYywgdGhpcy5uYW1lICsgIi5wcm90b3R5cGUuY29uc3RydWN0b3IgaGFzIHNl
dHRlciIpOwotICAgICAgICBhc3NlcnRfdHJ1ZShkZXNjLndyaXRhYmxlLCB0aGlzLm5hbWUgKyAi
LnByb3RvdHlwZS5jb25zdHJ1Y3RvciBpcyBub3Qgd3JpdGFibGUiKTsKLSAgICAgICAgYXNzZXJ0
X2ZhbHNlKGRlc2MuZW51bWVyYWJsZSwgdGhpcy5uYW1lICsgIi5wcm90b3R5cGUuY29uc3RydWN0
b3IgaXMgZW51bWVyYWJsZSIpOwotICAgICAgICBhc3NlcnRfdHJ1ZShkZXNjLmNvbmZpZ3VyYWJs
ZSwgdGhpcy5uYW1lICsgIi5wcm90b3R5cGUuY29uc3RydWN0b3IgaW4gbm90IGNvbmZpZ3VyYWJs
ZSIpOwotICAgICAgICBhc3NlcnRfZXF1YWxzKHNlbGZbdGhpcy5uYW1lXS5wcm90b3R5cGUuY29u
c3RydWN0b3IsIHNlbGZbdGhpcy5uYW1lXSwKKyAgICAgICAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKHRoaXMuZ2V0X2ludGVyZmFjZV9vYmplY3QoKS5wcm90b3R5
cGUsICJjb25zdHJ1Y3RvciIpOworICAgICAgICBhc3NlcnRfZmFsc2UoImdldCIgaW4gZGVzYywg
dGhpcy5uYW1lICsgIi5wcm90b3R5cGUuY29uc3RydWN0b3Igc2hvdWxkIG5vdCBoYXZlIGEgZ2V0
dGVyIik7CisgICAgICAgIGFzc2VydF9mYWxzZSgic2V0IiBpbiBkZXNjLCB0aGlzLm5hbWUgKyAi
LnByb3RvdHlwZS5jb25zdHJ1Y3RvciBzaG91bGQgbm90IGhhdmUgYSBzZXR0ZXIiKTsKKyAgICAg
ICAgYXNzZXJ0X3RydWUoZGVzYy53cml0YWJsZSwgdGhpcy5uYW1lICsgIi5wcm90b3R5cGUuY29u
c3RydWN0b3Igc2hvdWxkIGJlIHdyaXRhYmxlIik7CisgICAgICAgIGFzc2VydF9mYWxzZShkZXNj
LmVudW1lcmFibGUsIHRoaXMubmFtZSArICIucHJvdG90eXBlLmNvbnN0cnVjdG9yIHNob3VsZCBu
b3QgYmUgZW51bWVyYWJsZSIpOworICAgICAgICBhc3NlcnRfdHJ1ZShkZXNjLmNvbmZpZ3VyYWJs
ZSwgdGhpcy5uYW1lICsgIi5wcm90b3R5cGUuY29uc3RydWN0b3Igc2hvdWxkIGJlIGNvbmZpZ3Vy
YWJsZSIpOworICAgICAgICBhc3NlcnRfZXF1YWxzKHRoaXMuZ2V0X2ludGVyZmFjZV9vYmplY3Qo
KS5wcm90b3R5cGUuY29uc3RydWN0b3IsIHRoaXMuZ2V0X2ludGVyZmFjZV9vYmplY3QoKSwKICAg
ICAgICAgICAgICAgICAgICAgICB0aGlzLm5hbWUgKyAnLnByb3RvdHlwZS5jb25zdHJ1Y3RvciBp
cyBub3QgdGhlIHNhbWUgb2JqZWN0IGFzICcgKyB0aGlzLm5hbWUpOwogICAgIH0uYmluZCh0aGlz
KSwgdGhpcy5uYW1lICsgJyBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBp
bnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdFwncyAiY29uc3RydWN0b3IiIHByb3BlcnR5Jyk7CisK
KworICAgIHN1YnNldFRlc3RCeUtleSh0aGlzLm5hbWUsIHRlc3QsIGZ1bmN0aW9uKCkKKyAgICB7
CisgICAgICAgIGlmICghdGhpcy5zaG91bGRfaGF2ZV9pbnRlcmZhY2Vfb2JqZWN0KCkpIHsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuYXNzZXJ0X2ludGVy
ZmFjZV9vYmplY3RfZXhpc3RzKCk7CisKKyAgICAgICAgaWYgKHRoaXMuaXNfY2FsbGJhY2soKSkg
eworICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKCJwcm90b3R5cGUiIGluIHRoaXMuZ2V0X2ludGVy
ZmFjZV9vYmplY3QoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5hbWUgKyAnIHNo
b3VsZCBub3QgaGF2ZSBhICJwcm90b3R5cGUiIHByb3BlcnR5Jyk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKworICAgICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KHRoaXMuZ2V0X2lu
dGVyZmFjZV9vYmplY3QoKSwgInByb3RvdHlwZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ2ludGVyZmFjZSAiJyArIHRoaXMubmFtZSArICciIGRvZXMgbm90IGhhdmUgb3duIHByb3Bl
cnR5ICJwcm90b3R5cGUiJyk7CisKKyAgICAgICAgLy8gSWYgdGhlIGludGVyZmFjZSBoYXMgYW55
IG1lbWJlciBkZWNsYXJlZCB3aXRoIHRoZSBbVW5zY29wYWJsZV0gZXh0ZW5kZWQKKyAgICAgICAg
Ly8gYXR0cmlidXRlLCB0aGVuIHRoZXJlIG11c3QgYmUgYSBwcm9wZXJ0eSBvbiB0aGUgaW50ZXJm
YWNlIHByb3RvdHlwZSBvYmplY3QKKyAgICAgICAgLy8gd2hvc2UgbmFtZSBpcyB0aGUgQEB1bnNj
b3BhYmxlcyBzeW1ib2wsIHdoaWNoIGhhcyB0aGUgYXR0cmlidXRlcworICAgICAgICAvLyB7IFtb
V3JpdGFibGVdXTogZmFsc2UsIFtbRW51bWVyYWJsZV1dOiBmYWxzZSwgW1tDb25maWd1cmFibGVd
XTogdHJ1ZSB9LAorICAgICAgICAvLyBhbmQgd2hvc2UgdmFsdWUgaXMgYW4gb2JqZWN0IGNyZWF0
ZWQgYXMgZm9sbG93cy4uLgorICAgICAgICB2YXIgdW5zY29wYWJsZXMgPSB0aGlzLmdldF91bnNj
b3BhYmxlcygpLm1hcChtID0+IG0ubmFtZSk7CisgICAgICAgIHZhciBwcm90byA9IHRoaXMuZ2V0
X2ludGVyZmFjZV9vYmplY3QoKS5wcm90b3R5cGU7CisgICAgICAgIGlmICh1bnNjb3BhYmxlcy5s
ZW5ndGggIT0gMCkgeworICAgICAgICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0eSgKKyAgICAgICAg
ICAgICAgICBwcm90bywgU3ltYm9sLnVuc2NvcGFibGVzLAorICAgICAgICAgICAgICAgIHRoaXMu
bmFtZSArICcucHJvdG90eXBlIHNob3VsZCBoYXZlIGFuIEBAdW5zY29wYWJsZXMgcHJvcGVydHkn
KTsKKyAgICAgICAgICAgIHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihwcm90bywgU3ltYm9sLnVuc2NvcGFibGVzKTsKKyAgICAgICAgICAgIGFzc2VydF9mYWxzZSgi
Z2V0IiBpbiBkZXNjLAorICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmFtZSArICIucHJv
dG90eXBlW1N5bWJvbC51bnNjb3BhYmxlc10gc2hvdWxkIG5vdCBoYXZlIGEgZ2V0dGVyIik7Cisg
ICAgICAgICAgICBhc3NlcnRfZmFsc2UoInNldCIgaW4gZGVzYywgdGhpcy5uYW1lICsgIi5wcm90
b3R5cGVbU3ltYm9sLnVuc2NvcGFibGVzXSBzaG91bGQgbm90IGhhdmUgYSBzZXR0ZXIiKTsKKyAg
ICAgICAgICAgIGFzc2VydF9mYWxzZShkZXNjLndyaXRhYmxlLCB0aGlzLm5hbWUgKyAiLnByb3Rv
dHlwZVtTeW1ib2wudW5zY29wYWJsZXNdIHNob3VsZCBub3QgYmUgd3JpdGFibGUiKTsKKyAgICAg
ICAgICAgIGFzc2VydF9mYWxzZShkZXNjLmVudW1lcmFibGUsIHRoaXMubmFtZSArICIucHJvdG90
eXBlW1N5bWJvbC51bnNjb3BhYmxlc10gc2hvdWxkIG5vdCBiZSBlbnVtZXJhYmxlIik7CisgICAg
ICAgICAgICBhc3NlcnRfdHJ1ZShkZXNjLmNvbmZpZ3VyYWJsZSwgdGhpcy5uYW1lICsgIi5wcm90
b3R5cGVbU3ltYm9sLnVuc2NvcGFibGVzXSBzaG91bGQgYmUgY29uZmlndXJhYmxlIik7CisgICAg
ICAgICAgICBhc3NlcnRfZXF1YWxzKGRlc2MudmFsdWUsIHByb3RvW1N5bWJvbC51bnNjb3BhYmxl
c10sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmFtZSArICcucHJvdG90eXBlW1N5
bWJvbC51bnNjb3BhYmxlc10gc2hvdWxkIGJlIGluIHRoZSBkZXNjcmlwdG9yJyk7CisgICAgICAg
ICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBkZXNjLnZhbHVlLCAib2JqZWN0IiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGhpcy5uYW1lICsgJy5wcm90b3R5cGVbU3ltYm9sLnVuc2NvcGFi
bGVzXSBzaG91bGQgYmUgYW4gb2JqZWN0Jyk7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKE9i
amVjdC5nZXRQcm90b3R5cGVPZihkZXNjLnZhbHVlKSwgbnVsbCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGhpcy5uYW1lICsgJy5wcm90b3R5cGVbU3ltYm9sLnVuc2NvcGFibGVzXSBzaG91
bGQgaGF2ZSBhIG51bGwgcHJvdG90eXBlJyk7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKE9i
amVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZGVzYy52YWx1ZSkubGVuZ3RoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5hbWUg
KyAnLnByb3RvdHlwZVtTeW1ib2wudW5zY29wYWJsZXNdIHNob3VsZCBoYXZlIHRoZSByaWdodCBu
dW1iZXIgb2Ygc3ltYm9sLW5hbWVkIHByb3BlcnRpZXMnKTsKKworICAgICAgICAgICAgLy8gQ2hl
Y2sgdGhhdCB3ZSBkbyBub3QgaGF2ZSBfZXh0cmFfIHVuc2NvcGFibGVzLiAgQ2hlY2tpbmcgdGhh
dCB3ZQorICAgICAgICAgICAgLy8gaGF2ZSBhbGwgdGhlIG9uZXMgd2Ugc2hvdWxkIHdpbGwgaGFw
cGVuIGluIHRoZSBwZXItbWVtYmVyIHRlc3RzLgorICAgICAgICAgICAgdmFyIG9ic2VydmVkID0g
T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZGVzYy52YWx1ZSk7CisgICAgICAgICAgICBmb3Ig
KHZhciBwcm9wIG9mIG9ic2VydmVkKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X25vdF9lcXVh
bHModW5zY29wYWJsZXMuaW5kZXhPZihwcm9wKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAtMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5hbWUg
KyAnLnByb3RvdHlwZVtTeW1ib2wudW5zY29wYWJsZXNdIGhhcyB1bmV4cGVjdGVkIHByb3BlcnR5
ICInICsgcHJvcCArICciJyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBhc3NlcnRfZXF1YWxzKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGhp
cy5nZXRfaW50ZXJmYWNlX29iamVjdCgpLnByb3RvdHlwZSwgU3ltYm9sLnVuc2NvcGFibGVzKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICB0aGlzLm5hbWUgKyAnLnByb3RvdHlwZSBzaG91bGQgbm90IGhhdmUgQEB1bnNjb3Bh
YmxlcycpOworICAgICAgICB9CisgICAgfS5iaW5kKHRoaXMpLCB0aGlzLm5hbWUgKyAnIGludGVy
ZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFjZSBwcm90b3R5cGUgb2Jq
ZWN0XCdzIEBAdW5zY29wYWJsZXMgcHJvcGVydHknKTsKK307CisKK0lkbEludGVyZmFjZS5wcm90
b3R5cGUudGVzdF9pbW11dGFibGVfcHJvdG90eXBlID0gZnVuY3Rpb24odHlwZSwgb2JqKQorewor
ICAgIGlmICh0eXBlb2YgT2JqZWN0LnNldFByb3RvdHlwZU9mICE9PSAiZnVuY3Rpb24iKSB7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzdWJzZXRUZXN0QnlLZXkodGhpcy5uYW1lLCB0
ZXN0LCBmdW5jdGlvbih0KSB7CisgICAgICAgIHZhciBvcmlnaW5hbFZhbHVlID0gT2JqZWN0Lmdl
dFByb3RvdHlwZU9mKG9iaik7CisgICAgICAgIHZhciBuZXdWYWx1ZSA9IE9iamVjdC5jcmVhdGUo
bnVsbCk7CisKKyAgICAgICAgdC5hZGRfY2xlYW51cChmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
IHRyeSB7CisgICAgICAgICAgICAgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iaiwgb3JpZ2lu
YWxWYWx1ZSk7CisgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHt9CisgICAgICAgIH0pOworCisg
ICAgICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZihvYmosIG5ld1ZhbHVlKTsKKyAgICAgICAgfSk7CisK
KyAgICAgICAgYXNzZXJ0X2VxdWFscygKKyAgICAgICAgICAgICAgICBPYmplY3QuZ2V0UHJvdG90
eXBlT2Yob2JqKSwKKyAgICAgICAgICAgICAgICBvcmlnaW5hbFZhbHVlLAorICAgICAgICAgICAg
ICAgICJvcmlnaW5hbCB2YWx1ZSBub3QgbW9kaWZpZWQiCisgICAgICAgICAgICApOworICAgIH0u
YmluZCh0aGlzKSwgdGhpcy5uYW1lICsgIiBpbnRlcmZhY2U6IGludGVybmFsIFtbU2V0UHJvdG90
eXBlT2ZdXSBtZXRob2QgIiArCisgICAgICAgICJvZiAiICsgdHlwZSArICIgLSBzZXR0aW5nIHRv
IGEgbmV3IHZhbHVlIHZpYSBPYmplY3Quc2V0UHJvdG90eXBlT2YgIiArCisgICAgICAgICJzaG91
bGQgdGhyb3cgYSBUeXBlRXJyb3IiKTsKKworICAgIHN1YnNldFRlc3RCeUtleSh0aGlzLm5hbWUs
IHRlc3QsIGZ1bmN0aW9uKHQpIHsKKyAgICAgICAgdmFyIG9yaWdpbmFsVmFsdWUgPSBPYmplY3Qu
Z2V0UHJvdG90eXBlT2Yob2JqKTsKKyAgICAgICAgdmFyIG5ld1ZhbHVlID0gT2JqZWN0LmNyZWF0
ZShudWxsKTsKKworICAgICAgICB0LmFkZF9jbGVhbnVwKGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgbGV0IHNldHRlciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoCisgICAgICAg
ICAgICAgICAgT2JqZWN0LnByb3RvdHlwZSwgJ19fcHJvdG9fXycKKyAgICAgICAgICAgICkuc2V0
OworCisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIHNldHRlci5jYWxsKG9iaiwg
b3JpZ2luYWxWYWx1ZSk7CisgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHt9CisgICAgICAgIH0p
OworCisgICAgICAgIC8vIFdlIG5lZWQgdG8gZmluZCB0aGUgYWN0dWFsIHNldHRlciBmb3IgdGhl
ICdfX3Byb3RvX18nIHByb3BlcnR5LCBzbyB3ZQorICAgICAgICAvLyBjYW4gZGV0ZXJtaW5lIHRo
ZSByaWdodCBnbG9iYWwgZm9yIGl0LiAgV2FsayB1cCB0aGUgcHJvdG90eXBlIGNoYWluCisgICAg
ICAgIC8vIGxvb2tpbmcgZm9yIHRoYXQgcHJvcGVydHkgdW50aWwgd2UgZmluZCBpdC4KKyAgICAg
ICAgbGV0IHNldHRlcjsKKyAgICAgICAgeworICAgICAgICAgICAgbGV0IGN1ciA9IG9iajsKKyAg
ICAgICAgICAgIHdoaWxlIChjdXIpIHsKKyAgICAgICAgICAgICAgICBjb25zdCBkZXNjID0gT2Jq
ZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihjdXIsICJfX3Byb3RvX18iKTsKKyAgICAgICAg
ICAgICAgICBpZiAoZGVzYykgeworICAgICAgICAgICAgICAgICAgICBzZXR0ZXIgPSBkZXNjLnNl
dDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIGN1ciA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihjdXIpOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICAgIGFzc2VydF90aHJvd3NfanMoZ2xvYmFsT2Yoc2V0dGVyKS5U
eXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgb2JqLl9fcHJvdG9fXyA9IG5ld1Zh
bHVlOworICAgICAgICB9KTsKKworICAgICAgICBhc3NlcnRfZXF1YWxzKAorICAgICAgICAgICAg
ICAgIE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmopLAorICAgICAgICAgICAgICAgIG9yaWdpbmFs
VmFsdWUsCisgICAgICAgICAgICAgICAgIm9yaWdpbmFsIHZhbHVlIG5vdCBtb2RpZmllZCIKKyAg
ICAgICAgICAgICk7CisgICAgfS5iaW5kKHRoaXMpLCB0aGlzLm5hbWUgKyAiIGludGVyZmFjZTog
aW50ZXJuYWwgW1tTZXRQcm90b3R5cGVPZl1dIG1ldGhvZCAiICsKKyAgICAgICAgIm9mICIgKyB0
eXBlICsgIiAtIHNldHRpbmcgdG8gYSBuZXcgdmFsdWUgdmlhIF9fcHJvdG9fXyAiICsKKyAgICAg
ICAgInNob3VsZCB0aHJvdyBhIFR5cGVFcnJvciIpOworCisgICAgc3Vic2V0VGVzdEJ5S2V5KHRo
aXMubmFtZSwgdGVzdCwgZnVuY3Rpb24odCkgeworICAgICAgICB2YXIgb3JpZ2luYWxWYWx1ZSA9
IE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmopOworICAgICAgICB2YXIgbmV3VmFsdWUgPSBPYmpl
Y3QuY3JlYXRlKG51bGwpOworCisgICAgICAgIHQuYWRkX2NsZWFudXAoZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIFJlZmxlY3Quc2V0UHJvdG90eXBlT2Yo
b2JqLCBvcmlnaW5hbFZhbHVlKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge30KKyAgICAg
ICAgfSk7CisKKyAgICAgICAgYXNzZXJ0X2ZhbHNlKFJlZmxlY3Quc2V0UHJvdG90eXBlT2Yob2Jq
LCBuZXdWYWx1ZSkpOworCisgICAgICAgIGFzc2VydF9lcXVhbHMoCisgICAgICAgICAgICAgICAg
T2JqZWN0LmdldFByb3RvdHlwZU9mKG9iaiksCisgICAgICAgICAgICAgICAgb3JpZ2luYWxWYWx1
ZSwKKyAgICAgICAgICAgICAgICAib3JpZ2luYWwgdmFsdWUgbm90IG1vZGlmaWVkIgorICAgICAg
ICAgICAgKTsKKyAgICB9LmJpbmQodGhpcyksIHRoaXMubmFtZSArICIgaW50ZXJmYWNlOiBpbnRl
cm5hbCBbW1NldFByb3RvdHlwZU9mXV0gbWV0aG9kICIgKworICAgICAgICAib2YgIiArIHR5cGUg
KyAiIC0gc2V0dGluZyB0byBhIG5ldyB2YWx1ZSB2aWEgUmVmbGVjdC5zZXRQcm90b3R5cGVPZiAi
ICsKKyAgICAgICAgInNob3VsZCByZXR1cm4gZmFsc2UiKTsKKworICAgIHN1YnNldFRlc3RCeUtl
eSh0aGlzLm5hbWUsIHRlc3QsIGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgb3JpZ2luYWxWYWx1
ZSA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmopOworCisgICAgICAgIE9iamVjdC5zZXRQcm90
b3R5cGVPZihvYmosIG9yaWdpbmFsVmFsdWUpOworICAgIH0uYmluZCh0aGlzKSwgdGhpcy5uYW1l
ICsgIiBpbnRlcmZhY2U6IGludGVybmFsIFtbU2V0UHJvdG90eXBlT2ZdXSBtZXRob2QgIiArCisg
ICAgICAgICJvZiAiICsgdHlwZSArICIgLSBzZXR0aW5nIHRvIGl0cyBvcmlnaW5hbCB2YWx1ZSB2
aWEgT2JqZWN0LnNldFByb3RvdHlwZU9mICIgKworICAgICAgICAic2hvdWxkIG5vdCB0aHJvdyIp
OworCisgICAgc3Vic2V0VGVzdEJ5S2V5KHRoaXMubmFtZSwgdGVzdCwgZnVuY3Rpb24oKSB7Cisg
ICAgICAgIHZhciBvcmlnaW5hbFZhbHVlID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iaik7CisK
KyAgICAgICAgb2JqLl9fcHJvdG9fXyA9IG9yaWdpbmFsVmFsdWU7CisgICAgfS5iaW5kKHRoaXMp
LCB0aGlzLm5hbWUgKyAiIGludGVyZmFjZTogaW50ZXJuYWwgW1tTZXRQcm90b3R5cGVPZl1dIG1l
dGhvZCAiICsKKyAgICAgICAgIm9mICIgKyB0eXBlICsgIiAtIHNldHRpbmcgdG8gaXRzIG9yaWdp
bmFsIHZhbHVlIHZpYSBfX3Byb3RvX18gIiArCisgICAgICAgICJzaG91bGQgbm90IHRocm93Iik7
CisKKyAgICBzdWJzZXRUZXN0QnlLZXkodGhpcy5uYW1lLCB0ZXN0LCBmdW5jdGlvbigpIHsKKyAg
ICAgICAgdmFyIG9yaWdpbmFsVmFsdWUgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqKTsKKwor
ICAgICAgICBhc3NlcnRfdHJ1ZShSZWZsZWN0LnNldFByb3RvdHlwZU9mKG9iaiwgb3JpZ2luYWxW
YWx1ZSkpOworICAgIH0uYmluZCh0aGlzKSwgdGhpcy5uYW1lICsgIiBpbnRlcmZhY2U6IGludGVy
bmFsIFtbU2V0UHJvdG90eXBlT2ZdXSBtZXRob2QgIiArCisgICAgICAgICJvZiAiICsgdHlwZSAr
ICIgLSBzZXR0aW5nIHRvIGl0cyBvcmlnaW5hbCB2YWx1ZSB2aWEgUmVmbGVjdC5zZXRQcm90b3R5
cGVPZiAiICsKKyAgICAgICAgInNob3VsZCByZXR1cm4gdHJ1ZSIpOwogfTsKIAotLy9AfQogSWRs
SW50ZXJmYWNlLnByb3RvdHlwZS50ZXN0X21lbWJlcl9jb25zdCA9IGZ1bmN0aW9uKG1lbWJlcikK
LS8vQHsKIHsKICAgICBpZiAoIXRoaXMuaGFzX2NvbnN0YW50cygpKSB7Ci0gICAgICAgIHRocm93
ICJJbnRlcm5hbCBlcnJvcjogdGVzdF9tZW1iZXJfY29uc3QgY2FsbGVkIHdpdGhvdXQgYW55IGNv
bnN0YW50cyI7CisgICAgICAgIHRocm93IG5ldyBJZGxIYXJuZXNzRXJyb3IoIkludGVybmFsIGVy
cm9yOiB0ZXN0X21lbWJlcl9jb25zdCBjYWxsZWQgd2l0aG91dCBhbnkgY29uc3RhbnRzIik7CiAg
ICAgfQogCi0gICAgdGVzdChmdW5jdGlvbigpCisgICAgc3Vic2V0VGVzdEJ5S2V5KHRoaXMubmFt
ZSwgdGVzdCwgZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0eShz
ZWxmLCB0aGlzLm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgInNlbGYgZG9lcyBu
b3QgaGF2ZSBvd24gcHJvcGVydHkgIiArIGZvcm1hdF92YWx1ZSh0aGlzLm5hbWUpKTsKKyAgICAg
ICAgdGhpcy5hc3NlcnRfaW50ZXJmYWNlX29iamVjdF9leGlzdHMoKTsKIAogICAgICAgICAvLyAi
Rm9yIGVhY2ggY29uc3RhbnQgZGVmaW5lZCBvbiBhbiBpbnRlcmZhY2UgQSwgdGhlcmUgbXVzdCBi
ZQogICAgICAgICAvLyBhIGNvcnJlc3BvbmRpbmcgcHJvcGVydHkgb24gdGhlIGludGVyZmFjZSBv
YmplY3QsIGlmIGl0CiAgICAgICAgIC8vIGV4aXN0cy4iCi0gICAgICAgIGFzc2VydF9vd25fcHJv
cGVydHkoc2VsZlt0aGlzLm5hbWVdLCBtZW1iZXIubmFtZSk7CisgICAgICAgIGFzc2VydF9vd25f
cHJvcGVydHkodGhpcy5nZXRfaW50ZXJmYWNlX29iamVjdCgpLCBtZW1iZXIubmFtZSk7CiAgICAg
ICAgIC8vICJUaGUgdmFsdWUgb2YgdGhlIHByb3BlcnR5IGlzIHRoYXQgd2hpY2ggaXMgb2J0YWlu
ZWQgYnkKICAgICAgICAgLy8gY29udmVydGluZyB0aGUgY29uc3RhbnTigJlzIElETCB2YWx1ZSB0
byBhbiBFQ01BU2NyaXB0CiAgICAgICAgIC8vIHZhbHVlLiIKLSAgICAgICAgYXNzZXJ0X2VxdWFs
cyhzZWxmW3RoaXMubmFtZV1bbWVtYmVyLm5hbWVdLCBjb25zdFZhbHVlKG1lbWJlci52YWx1ZSks
CisgICAgICAgIGFzc2VydF9lcXVhbHModGhpcy5nZXRfaW50ZXJmYWNlX29iamVjdCgpW21lbWJl
ci5uYW1lXSwgY29uc3RWYWx1ZShtZW1iZXIudmFsdWUpLAogICAgICAgICAgICAgICAgICAgICAg
ICJwcm9wZXJ0eSBoYXMgd3JvbmcgdmFsdWUiKTsKICAgICAgICAgLy8gIlRoZSBwcm9wZXJ0eSBo
YXMgYXR0cmlidXRlcyB7IFtbV3JpdGFibGVdXTogZmFsc2UsCiAgICAgICAgIC8vIFtbRW51bWVy
YWJsZV1dOiB0cnVlLCBbW0NvbmZpZ3VyYWJsZV1dOiBmYWxzZSB9LiIKLSAgICAgICAgdmFyIGRl
c2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNlbGZbdGhpcy5uYW1lXSwgbWVt
YmVyLm5hbWUpOwotICAgICAgICBhc3NlcnRfZmFsc2UoImdldCIgaW4gZGVzYywgInByb3BlcnR5
IGhhcyBnZXR0ZXIiKTsKLSAgICAgICAgYXNzZXJ0X2ZhbHNlKCJzZXQiIGluIGRlc2MsICJwcm9w
ZXJ0eSBoYXMgc2V0dGVyIik7Ci0gICAgICAgIGFzc2VydF9mYWxzZShkZXNjLndyaXRhYmxlLCAi
cHJvcGVydHkgaXMgd3JpdGFibGUiKTsKLSAgICAgICAgYXNzZXJ0X3RydWUoZGVzYy5lbnVtZXJh
YmxlLCAicHJvcGVydHkgaXMgbm90IGVudW1lcmFibGUiKTsKLSAgICAgICAgYXNzZXJ0X2ZhbHNl
KGRlc2MuY29uZmlndXJhYmxlLCAicHJvcGVydHkgaXMgY29uZmlndXJhYmxlIik7CisgICAgICAg
IHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0aGlzLmdldF9pbnRl
cmZhY2Vfb2JqZWN0KCksIG1lbWJlci5uYW1lKTsKKyAgICAgICAgYXNzZXJ0X2ZhbHNlKCJnZXQi
IGluIGRlc2MsICJwcm9wZXJ0eSBzaG91bGQgbm90IGhhdmUgYSBnZXR0ZXIiKTsKKyAgICAgICAg
YXNzZXJ0X2ZhbHNlKCJzZXQiIGluIGRlc2MsICJwcm9wZXJ0eSBzaG91bGQgbm90IGhhdmUgYSBz
ZXR0ZXIiKTsKKyAgICAgICAgYXNzZXJ0X2ZhbHNlKGRlc2Mud3JpdGFibGUsICJwcm9wZXJ0eSBz
aG91bGQgbm90IGJlIHdyaXRhYmxlIik7CisgICAgICAgIGFzc2VydF90cnVlKGRlc2MuZW51bWVy
YWJsZSwgInByb3BlcnR5IHNob3VsZCBiZSBlbnVtZXJhYmxlIik7CisgICAgICAgIGFzc2VydF9m
YWxzZShkZXNjLmNvbmZpZ3VyYWJsZSwgInByb3BlcnR5IHNob3VsZCBub3QgYmUgY29uZmlndXJh
YmxlIik7CiAgICAgfS5iaW5kKHRoaXMpLCB0aGlzLm5hbWUgKyAiIGludGVyZmFjZTogY29uc3Rh
bnQgIiArIG1lbWJlci5uYW1lICsgIiBvbiBpbnRlcmZhY2Ugb2JqZWN0Iik7CiAKICAgICAvLyAi
SW4gYWRkaXRpb24sIGEgcHJvcGVydHkgd2l0aCB0aGUgc2FtZSBjaGFyYWN0ZXJpc3RpY3MgbXVz
dAogICAgIC8vIGV4aXN0IG9uIHRoZSBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdC4iCi0gICAg
dGVzdChmdW5jdGlvbigpCisgICAgc3Vic2V0VGVzdEJ5S2V5KHRoaXMubmFtZSwgdGVzdCwgZnVu
Y3Rpb24oKQogICAgIHsKLSAgICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0eShzZWxmLCB0aGlzLm5h
bWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgInNlbGYgZG9lcyBub3QgaGF2ZSBvd24g
cHJvcGVydHkgIiArIGZvcm1hdF92YWx1ZSh0aGlzLm5hbWUpKTsKKyAgICAgICAgdGhpcy5hc3Nl
cnRfaW50ZXJmYWNlX29iamVjdF9leGlzdHMoKTsKIAogICAgICAgICBpZiAodGhpcy5pc19jYWxs
YmFjaygpKSB7Ci0gICAgICAgICAgICBhc3NlcnRfZmFsc2UoInByb3RvdHlwZSIgaW4gc2VsZlt0
aGlzLm5hbWVdLAorICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKCJwcm90b3R5cGUiIGluIHRoaXMu
Z2V0X2ludGVyZmFjZV9vYmplY3QoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5h
bWUgKyAnIHNob3VsZCBub3QgaGF2ZSBhICJwcm90b3R5cGUiIHByb3BlcnR5Jyk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KHNl
bGZbdGhpcy5uYW1lXSwgInByb3RvdHlwZSIsCisgICAgICAgIGFzc2VydF9vd25fcHJvcGVydHko
dGhpcy5nZXRfaW50ZXJmYWNlX29iamVjdCgpLCAicHJvdG90eXBlIiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnaW50ZXJmYWNlICInICsgdGhpcy5uYW1lICsgJyIgZG9lcyBub3QgaGF2
ZSBvd24gcHJvcGVydHkgInByb3RvdHlwZSInKTsKIAotICAgICAgICBhc3NlcnRfb3duX3Byb3Bl
cnR5KHNlbGZbdGhpcy5uYW1lXS5wcm90b3R5cGUsIG1lbWJlci5uYW1lKTsKLSAgICAgICAgYXNz
ZXJ0X2VxdWFscyhzZWxmW3RoaXMubmFtZV0ucHJvdG90eXBlW21lbWJlci5uYW1lXSwgY29uc3RW
YWx1ZShtZW1iZXIudmFsdWUpLAorICAgICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KHRoaXMuZ2V0
X2ludGVyZmFjZV9vYmplY3QoKS5wcm90b3R5cGUsIG1lbWJlci5uYW1lKTsKKyAgICAgICAgYXNz
ZXJ0X2VxdWFscyh0aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0KCkucHJvdG90eXBlW21lbWJlci5u
YW1lXSwgY29uc3RWYWx1ZShtZW1iZXIudmFsdWUpLAogICAgICAgICAgICAgICAgICAgICAgICJw
cm9wZXJ0eSBoYXMgd3JvbmcgdmFsdWUiKTsKLSAgICAgICAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKHNlbGZbdGhpcy5uYW1lXSwgbWVtYmVyLm5hbWUpOwotICAg
ICAgICBhc3NlcnRfZmFsc2UoImdldCIgaW4gZGVzYywgInByb3BlcnR5IGhhcyBnZXR0ZXIiKTsK
LSAgICAgICAgYXNzZXJ0X2ZhbHNlKCJzZXQiIGluIGRlc2MsICJwcm9wZXJ0eSBoYXMgc2V0dGVy
Iik7Ci0gICAgICAgIGFzc2VydF9mYWxzZShkZXNjLndyaXRhYmxlLCAicHJvcGVydHkgaXMgd3Jp
dGFibGUiKTsKLSAgICAgICAgYXNzZXJ0X3RydWUoZGVzYy5lbnVtZXJhYmxlLCAicHJvcGVydHkg
aXMgbm90IGVudW1lcmFibGUiKTsKLSAgICAgICAgYXNzZXJ0X2ZhbHNlKGRlc2MuY29uZmlndXJh
YmxlLCAicHJvcGVydHkgaXMgY29uZmlndXJhYmxlIik7CisgICAgICAgIHZhciBkZXNjID0gT2Jq
ZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0KCks
IG1lbWJlci5uYW1lKTsKKyAgICAgICAgYXNzZXJ0X2ZhbHNlKCJnZXQiIGluIGRlc2MsICJwcm9w
ZXJ0eSBzaG91bGQgbm90IGhhdmUgYSBnZXR0ZXIiKTsKKyAgICAgICAgYXNzZXJ0X2ZhbHNlKCJz
ZXQiIGluIGRlc2MsICJwcm9wZXJ0eSBzaG91bGQgbm90IGhhdmUgYSBzZXR0ZXIiKTsKKyAgICAg
ICAgYXNzZXJ0X2ZhbHNlKGRlc2Mud3JpdGFibGUsICJwcm9wZXJ0eSBzaG91bGQgbm90IGJlIHdy
aXRhYmxlIik7CisgICAgICAgIGFzc2VydF90cnVlKGRlc2MuZW51bWVyYWJsZSwgInByb3BlcnR5
IHNob3VsZCBiZSBlbnVtZXJhYmxlIik7CisgICAgICAgIGFzc2VydF9mYWxzZShkZXNjLmNvbmZp
Z3VyYWJsZSwgInByb3BlcnR5IHNob3VsZCBub3QgYmUgY29uZmlndXJhYmxlIik7CiAgICAgfS5i
aW5kKHRoaXMpLCB0aGlzLm5hbWUgKyAiIGludGVyZmFjZTogY29uc3RhbnQgIiArIG1lbWJlci5u
YW1lICsgIiBvbiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCIpOwogfTsKIAogCi0vL0B9CiBJ
ZGxJbnRlcmZhY2UucHJvdG90eXBlLnRlc3RfbWVtYmVyX2F0dHJpYnV0ZSA9IGZ1bmN0aW9uKG1l
bWJlcikKLS8vQHsKICAgewotICAgIHZhciBhX3Rlc3QgPSBhc3luY190ZXN0KHRoaXMubmFtZSAr
ICIgaW50ZXJmYWNlOiBhdHRyaWJ1dGUgIiArIG1lbWJlci5uYW1lKTsKKyAgICBpZiAoIXNob3Vs
ZFJ1blN1YlRlc3QodGhpcy5uYW1lKSkgeworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHZh
ciBhX3Rlc3QgPSBzdWJzZXRUZXN0QnlLZXkodGhpcy5uYW1lLCBhc3luY190ZXN0LCB0aGlzLm5h
bWUgKyAiIGludGVyZmFjZTogYXR0cmlidXRlICIgKyBtZW1iZXIubmFtZSk7CiAgICAgYV90ZXN0
LnN0ZXAoZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgaWYgKHRoaXMuaXNfY2FsbGJhY2soKSAm
JiAhdGhpcy5oYXNfY29uc3RhbnRzKCkpIHsKLSAgICAgICAgICAgIGFfdGVzdC5kb25lKCkKKyAg
ICAgICAgaWYgKCF0aGlzLnNob3VsZF9oYXZlX2ludGVyZmFjZV9vYmplY3QoKSkgeworICAgICAg
ICAgICAgYV90ZXN0LmRvbmUoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0g
ICAgICAgIGFzc2VydF9vd25fcHJvcGVydHkoc2VsZiwgdGhpcy5uYW1lLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJzZWxmIGRvZXMgbm90IGhhdmUgb3duIHByb3BlcnR5ICIgKyBmb3Jt
YXRfdmFsdWUodGhpcy5uYW1lKSk7Ci0gICAgICAgIGFzc2VydF9vd25fcHJvcGVydHkoc2VsZlt0
aGlzLm5hbWVdLCAicHJvdG90eXBlIiwKKyAgICAgICAgdGhpcy5hc3NlcnRfaW50ZXJmYWNlX29i
amVjdF9leGlzdHMoKTsKKyAgICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0eSh0aGlzLmdldF9pbnRl
cmZhY2Vfb2JqZWN0KCksICJwcm90b3R5cGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdpbnRlcmZhY2UgIicgKyB0aGlzLm5hbWUgKyAnIiBkb2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0
eSAicHJvdG90eXBlIicpOwogCi0gICAgICAgIGlmIChtZW1iZXJbInN0YXRpYyJdKSB7Ci0gICAg
ICAgICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KHNlbGZbdGhpcy5uYW1lXSwgbWVtYmVyLm5hbWUs
CisgICAgICAgIGlmIChtZW1iZXIuc3BlY2lhbCA9PT0gInN0YXRpYyIpIHsKKyAgICAgICAgICAg
IGFzc2VydF9vd25fcHJvcGVydHkodGhpcy5nZXRfaW50ZXJmYWNlX29iamVjdCgpLCBtZW1iZXIu
bmFtZSwKICAgICAgICAgICAgICAgICAiVGhlIGludGVyZmFjZSBvYmplY3QgbXVzdCBoYXZlIGEg
cHJvcGVydHkgIiArCiAgICAgICAgICAgICAgICAgZm9ybWF0X3ZhbHVlKG1lbWJlci5uYW1lKSk7
CiAgICAgICAgICAgICBhX3Rlc3QuZG9uZSgpOwotICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNf
Z2xvYmFsKCkpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHRo
aXMuZG9fbWVtYmVyX3Vuc2NvcGFibGVfYXNzZXJ0cyhtZW1iZXIpOworCisgICAgICAgIGlmICh0
aGlzLmlzX2dsb2JhbCgpKSB7CiAgICAgICAgICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KHNlbGYs
IG1lbWJlci5uYW1lLAogICAgICAgICAgICAgICAgICJUaGUgZ2xvYmFsIG9iamVjdCBtdXN0IGhh
dmUgYSBwcm9wZXJ0eSAiICsKICAgICAgICAgICAgICAgICBmb3JtYXRfdmFsdWUobWVtYmVyLm5h
bWUpKTsKLSAgICAgICAgICAgIGFzc2VydF9mYWxzZShtZW1iZXIubmFtZSBpbiBzZWxmW3RoaXMu
bmFtZV0ucHJvdG90eXBlLAotICAgICAgICAgICAgICAgICJUaGUgcHJvdG90eXBlIG9iamVjdCBt
dXN0IG5vdCBoYXZlIGEgcHJvcGVydHkgIiArCisgICAgICAgICAgICBhc3NlcnRfZmFsc2UobWVt
YmVyLm5hbWUgaW4gdGhpcy5nZXRfaW50ZXJmYWNlX29iamVjdCgpLnByb3RvdHlwZSwKKyAgICAg
ICAgICAgICAgICAiVGhlIHByb3RvdHlwZSBvYmplY3Qgc2hvdWxkIG5vdCBoYXZlIGEgcHJvcGVy
dHkgIiArCiAgICAgICAgICAgICAgICAgZm9ybWF0X3ZhbHVlKG1lbWJlci5uYW1lKSk7CiAKICAg
ICAgICAgICAgIHZhciBnZXR0ZXIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNl
bGYsIG1lbWJlci5uYW1lKS5nZXQ7CkBAIC0xMTc0LDY5ICsyMTkyLDY2IEBAIElkbEludGVyZmFj
ZS5wcm90b3R5cGUudGVzdF9tZW1iZXJfYXR0cmlidXRlID0gZnVuY3Rpb24obWVtYmVyKQogICAg
ICAgICAgICAgLy8gc2luY2UgaXQgd2lsbCBjYWxsIGRvbmUoKSBvbiBhX3Rlc3QuCiAgICAgICAg
ICAgICB0aGlzLmRvX2ludGVyZmFjZV9hdHRyaWJ1dGVfYXNzZXJ0cyhzZWxmLCBtZW1iZXIsIGFf
dGVzdCk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBhc3NlcnRfdHJ1ZShtZW1iZXIu
bmFtZSBpbiBzZWxmW3RoaXMubmFtZV0ucHJvdG90eXBlLAorICAgICAgICAgICAgYXNzZXJ0X3Ry
dWUobWVtYmVyLm5hbWUgaW4gdGhpcy5nZXRfaW50ZXJmYWNlX29iamVjdCgpLnByb3RvdHlwZSwK
ICAgICAgICAgICAgICAgICAiVGhlIHByb3RvdHlwZSBvYmplY3QgbXVzdCBoYXZlIGEgcHJvcGVy
dHkgIiArCiAgICAgICAgICAgICAgICAgZm9ybWF0X3ZhbHVlKG1lbWJlci5uYW1lKSk7CiAKLSAg
ICAgICAgICAgIGlmICghbWVtYmVyLmhhc19leHRlbmRlZF9hdHRyaWJ1dGUoIkxlbmllbnRUaGlz
IikpIHsKKyAgICAgICAgICAgIGlmICghbWVtYmVyLmhhc19leHRlbmRlZF9hdHRyaWJ1dGUoIkxl
Z2FjeUxlbmllbnRUaGlzIikpIHsKICAgICAgICAgICAgICAgICBpZiAobWVtYmVyLmlkbFR5cGUu
Z2VuZXJpYyAhPT0gIlByb21pc2UiKSB7Ci0gICAgICAgICAgICAgICAgICAgIGFzc2VydF90aHJv
d3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IHNlbGZbdGhpcy5uYW1lXS5wcm90b3R5cGVbbWVtYmVyLm5hbWVdOworICAgICAgICAgICAgICAg
ICAgICAvLyB0aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0KCkgcmV0dXJucyBhIHRoaW5nIGluIG91
ciBnbG9iYWwKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3Is
IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRfaW50ZXJmYWNl
X29iamVjdCgpLnByb3RvdHlwZVttZW1iZXIubmFtZV07CiAgICAgICAgICAgICAgICAgICAgIH0u
YmluZCh0aGlzKSwgImdldHRpbmcgcHJvcGVydHkgb24gcHJvdG90eXBlIG9iamVjdCBtdXN0IHRo
cm93IFR5cGVFcnJvciIpOwogICAgICAgICAgICAgICAgICAgICAvLyBkb19pbnRlcmZhY2VfYXR0
cmlidXRlX2Fzc2VydHMgbXVzdCBiZSB0aGUgbGFzdCB0aGluZyB3ZQogICAgICAgICAgICAgICAg
ICAgICAvLyBkbywgc2luY2UgaXQgd2lsbCBjYWxsIGRvbmUoKSBvbiBhX3Rlc3QuCi0gICAgICAg
ICAgICAgICAgICAgIHRoaXMuZG9faW50ZXJmYWNlX2F0dHJpYnV0ZV9hc3NlcnRzKHNlbGZbdGhp
cy5uYW1lXS5wcm90b3R5cGUsIG1lbWJlciwgYV90ZXN0KTsKKyAgICAgICAgICAgICAgICAgICAg
dGhpcy5kb19pbnRlcmZhY2VfYXR0cmlidXRlX2Fzc2VydHModGhpcy5nZXRfaW50ZXJmYWNlX29i
amVjdCgpLnByb3RvdHlwZSwgbWVtYmVyLCBhX3Rlc3QpOwogICAgICAgICAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgICAgIHByb21pc2VfcmVqZWN0cyhhX3Rlc3QsIG5ldyBUeXBl
RXJyb3IoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGZbdGhpcy5u
YW1lXS5wcm90b3R5cGVbbWVtYmVyLm5hbWVdKQotICAgICAgICAgICAgICAgICAgICAgICAgLnRo
ZW4oZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIHByb21pc2VfcmVqZWN0c19qcyhh
X3Rlc3QsIFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRo
aXMuZ2V0X2ludGVyZmFjZV9vYmplY3QoKS5wcm90b3R5cGVbbWVtYmVyLm5hbWVdKQorICAgICAg
ICAgICAgICAgICAgICAgICAgLnRoZW4oYV90ZXN0LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkb19pbnRlcmZhY2VfYXR0cmlidXRlX2Fzc2Vy
dHMgbXVzdCBiZSB0aGUgbGFzdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaW5n
IHdlIGRvLCBzaW5jZSBpdCB3aWxsIGNhbGwgZG9uZSgpIG9uIGFfdGVzdC4KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0aGlzLmRvX2ludGVyZmFjZV9hdHRyaWJ1dGVfYXNzZXJ0cyhzZWxm
W3RoaXMubmFtZV0ucHJvdG90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMu
ZG9faW50ZXJmYWNlX2F0dHJpYnV0ZV9hc3NlcnRzKHRoaXMuZ2V0X2ludGVyZmFjZV9vYmplY3Qo
KS5wcm90b3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbWVtYmVyLCBhX3Rlc3QpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgfS5iaW5kKHRoaXMpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0uYmluZCh0aGlz
KSkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgYXNzZXJ0X2VxdWFscyhzZWxmW3RoaXMubmFtZV0ucHJvdG90eXBlW21lbWJlci5uYW1l
XSwgdW5kZWZpbmVkLAorICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHModGhpcy5nZXRfaW50
ZXJmYWNlX29iamVjdCgpLnByb3RvdHlwZVttZW1iZXIubmFtZV0sIHVuZGVmaW5lZCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJnZXR0aW5nIHByb3BlcnR5IG9uIHByb3RvdHlwZSBv
YmplY3QgbXVzdCByZXR1cm4gdW5kZWZpbmVkIik7CiAgICAgICAgICAgICAgIC8vIGRvX2ludGVy
ZmFjZV9hdHRyaWJ1dGVfYXNzZXJ0cyBtdXN0IGJlIHRoZSBsYXN0IHRoaW5nIHdlIGRvLAogICAg
ICAgICAgICAgICAvLyBzaW5jZSBpdCB3aWxsIGNhbGwgZG9uZSgpIG9uIGFfdGVzdC4KLSAgICAg
ICAgICAgICAgdGhpcy5kb19pbnRlcmZhY2VfYXR0cmlidXRlX2Fzc2VydHMoc2VsZlt0aGlzLm5h
bWVdLnByb3RvdHlwZSwgbWVtYmVyLCBhX3Rlc3QpOworICAgICAgICAgICAgICB0aGlzLmRvX2lu
dGVyZmFjZV9hdHRyaWJ1dGVfYXNzZXJ0cyh0aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0KCkucHJv
dG90eXBlLCBtZW1iZXIsIGFfdGVzdCk7CiAgICAgICAgICAgICB9Ci0KICAgICAgICAgfQogICAg
IH0uYmluZCh0aGlzKSk7CiB9OwogCi0vL0B9CiBJZGxJbnRlcmZhY2UucHJvdG90eXBlLnRlc3Rf
bWVtYmVyX29wZXJhdGlvbiA9IGZ1bmN0aW9uKG1lbWJlcikKLS8vQHsKIHsKLSAgICB2YXIgYV90
ZXN0ID0gYXN5bmNfdGVzdCh0aGlzLm5hbWUgKyAiIGludGVyZmFjZTogb3BlcmF0aW9uICIgKyBt
ZW1iZXIubmFtZSArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIigiICsgbWVtYmVyLmFy
Z3VtZW50cy5tYXAoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKG0p
IHtyZXR1cm4gbS5pZGxUeXBlLmlkbFR5cGU7IH0gKQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICsiKSIpOworICAgIGlmICghc2hvdWxkUnVuU3ViVGVzdCh0aGlzLm5hbWUpKSB7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgdmFyIGFfdGVzdCA9IHN1YnNldFRlc3RCeUtleSh0aGlz
Lm5hbWUsIGFzeW5jX3Rlc3QsIHRoaXMubmFtZSArICIgaW50ZXJmYWNlOiBvcGVyYXRpb24gIiAr
IG1lbWJlcik7CiAgICAgYV90ZXN0LnN0ZXAoZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgLy8g
VGhpcyBmdW5jdGlvbiB0ZXN0cyBXZWJJREwgYXMgb2YgMjAxNS0xMi0yOS4KICAgICAgICAgLy8g
aHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jZXMtb3BlcmF0aW9ucwogCi0gICAgICAg
IGlmICh0aGlzLmlzX2NhbGxiYWNrKCkgJiYgIXRoaXMuaGFzX2NvbnN0YW50cygpKSB7CisgICAg
ICAgIGlmICghdGhpcy5zaG91bGRfaGF2ZV9pbnRlcmZhY2Vfb2JqZWN0KCkpIHsKICAgICAgICAg
ICAgIGFfdGVzdC5kb25lKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAg
ICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KHNlbGYsIHRoaXMubmFtZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAic2VsZiBkb2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0eSAiICsgZm9ybWF0
X3ZhbHVlKHRoaXMubmFtZSkpOworICAgICAgICB0aGlzLmFzc2VydF9pbnRlcmZhY2Vfb2JqZWN0
X2V4aXN0cygpOwogCiAgICAgICAgIGlmICh0aGlzLmlzX2NhbGxiYWNrKCkpIHsKLSAgICAgICAg
ICAgIGFzc2VydF9mYWxzZSgicHJvdG90eXBlIiBpbiBzZWxmW3RoaXMubmFtZV0sCisgICAgICAg
ICAgICBhc3NlcnRfZmFsc2UoInByb3RvdHlwZSIgaW4gdGhpcy5nZXRfaW50ZXJmYWNlX29iamVj
dCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmFtZSArICcgc2hvdWxkIG5vdCBo
YXZlIGEgInByb3RvdHlwZSIgcHJvcGVydHknKTsKICAgICAgICAgICAgIGFfdGVzdC5kb25lKCk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBhc3NlcnRfb3duX3By
b3BlcnR5KHNlbGZbdGhpcy5uYW1lXSwgInByb3RvdHlwZSIsCisgICAgICAgIGFzc2VydF9vd25f
cHJvcGVydHkodGhpcy5nZXRfaW50ZXJmYWNlX29iamVjdCgpLCAicHJvdG90eXBlIiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnaW50ZXJmYWNlICInICsgdGhpcy5uYW1lICsgJyIgZG9l
cyBub3QgaGF2ZSBvd24gcHJvcGVydHkgInByb3RvdHlwZSInKTsKIAogICAgICAgICAvLyAiRm9y
IGVhY2ggdW5pcXVlIGlkZW50aWZpZXIgb2YgYW4gZXhwb3NlZCBvcGVyYXRpb24gZGVmaW5lZCBv
biB0aGUKQEAgLTEyNTAsMTIgKzIyNjUsMTIgQEAgSWRsSW50ZXJmYWNlLnByb3RvdHlwZS50ZXN0
X21lbWJlcl9vcGVyYXRpb24gPSBmdW5jdGlvbihtZW1iZXIpCiAgICAgICAgIHZhciBtZW1iZXJI
b2xkZXJPYmplY3Q7CiAgICAgICAgIC8vICIqIElmIHRoZSBvcGVyYXRpb24gaXMgc3RhdGljLCB0
aGVuIHRoZSBwcm9wZXJ0eSBleGlzdHMgb24gdGhlCiAgICAgICAgIC8vICAgIGludGVyZmFjZSBv
YmplY3QuIgotICAgICAgICBpZiAobWVtYmVyWyJzdGF0aWMiXSkgewotICAgICAgICAgICAgYXNz
ZXJ0X293bl9wcm9wZXJ0eShzZWxmW3RoaXMubmFtZV0sIG1lbWJlci5uYW1lLAorICAgICAgICBp
ZiAobWVtYmVyLnNwZWNpYWwgPT09ICJzdGF0aWMiKSB7CisgICAgICAgICAgICBhc3NlcnRfb3du
X3Byb3BlcnR5KHRoaXMuZ2V0X2ludGVyZmFjZV9vYmplY3QoKSwgbWVtYmVyLm5hbWUsCiAgICAg
ICAgICAgICAgICAgICAgICJpbnRlcmZhY2Ugb2JqZWN0IG1pc3Npbmcgc3RhdGljIG9wZXJhdGlv
biIpOwotICAgICAgICAgICAgbWVtYmVySG9sZGVyT2JqZWN0ID0gc2VsZlt0aGlzLm5hbWVdOwor
ICAgICAgICAgICAgbWVtYmVySG9sZGVyT2JqZWN0ID0gdGhpcy5nZXRfaW50ZXJmYWNlX29iamVj
dCgpOwogICAgICAgICAvLyAiKiBPdGhlcndpc2UsIFsuLi5dIGlmIHRoZSBpbnRlcmZhY2Ugd2Fz
IGRlY2xhcmVkIHdpdGggdGhlIFtHbG9iYWxdCi0gICAgICAgIC8vICAgIG9yIFtQcmltYXJ5R2xv
YmFsXSBleHRlbmRlZCBhdHRyaWJ1dGUsIHRoZW4gdGhlIHByb3BlcnR5IGV4aXN0cworICAgICAg
ICAvLyAgICBleHRlbmRlZCBhdHRyaWJ1dGUsIHRoZW4gdGhlIHByb3BlcnR5IGV4aXN0cwogICAg
ICAgICAvLyAgICBvbiBldmVyeSBvYmplY3QgdGhhdCBpbXBsZW1lbnRzIHRoZSBpbnRlcmZhY2Uu
IgogICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNfZ2xvYmFsKCkpIHsKICAgICAgICAgICAgIGFz
c2VydF9vd25fcHJvcGVydHkoc2VsZiwgbWVtYmVyLm5hbWUsCkBAIC0xMjY0LDE3ICsyMjc5LDQz
IEBAIElkbEludGVyZmFjZS5wcm90b3R5cGUudGVzdF9tZW1iZXJfb3BlcmF0aW9uID0gZnVuY3Rp
b24obWVtYmVyKQogICAgICAgICAvLyAiKiBPdGhlcndpc2UsIHRoZSBwcm9wZXJ0eSBleGlzdHMg
c29sZWx5IG9uIHRoZSBpbnRlcmZhY2XigJlzCiAgICAgICAgIC8vICAgIGludGVyZmFjZSBwcm90
b3R5cGUgb2JqZWN0LiIKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGFzc2VydF9vd25f
cHJvcGVydHkoc2VsZlt0aGlzLm5hbWVdLnByb3RvdHlwZSwgbWVtYmVyLm5hbWUsCisgICAgICAg
ICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KHRoaXMuZ2V0X2ludGVyZmFjZV9vYmplY3QoKS5wcm90
b3R5cGUsIG1lbWJlci5uYW1lLAogICAgICAgICAgICAgICAgICAgICAiaW50ZXJmYWNlIHByb3Rv
dHlwZSBvYmplY3QgbWlzc2luZyBub24tc3RhdGljIG9wZXJhdGlvbiIpOwotICAgICAgICAgICAg
bWVtYmVySG9sZGVyT2JqZWN0ID0gc2VsZlt0aGlzLm5hbWVdLnByb3RvdHlwZTsKKyAgICAgICAg
ICAgIG1lbWJlckhvbGRlck9iamVjdCA9IHRoaXMuZ2V0X2ludGVyZmFjZV9vYmplY3QoKS5wcm90
b3R5cGU7CiAgICAgICAgIH0KKyAgICAgICAgdGhpcy5kb19tZW1iZXJfdW5zY29wYWJsZV9hc3Nl
cnRzKG1lbWJlcik7CiAgICAgICAgIHRoaXMuZG9fbWVtYmVyX29wZXJhdGlvbl9hc3NlcnRzKG1l
bWJlckhvbGRlck9iamVjdCwgbWVtYmVyLCBhX3Rlc3QpOwogICAgIH0uYmluZCh0aGlzKSk7CiB9
OwogCi0vL0B9CitJZGxJbnRlcmZhY2UucHJvdG90eXBlLmRvX21lbWJlcl91bnNjb3BhYmxlX2Fz
c2VydHMgPSBmdW5jdGlvbihtZW1iZXIpCit7CisgICAgLy8gQ2hlY2sgdGhhdCBpZiB0aGUgbWVt
YmVyIGlzIHVuc2NvcGFibGUgdGhlbiBpdCdzIGluIHRoZQorICAgIC8vIEBAdW5zY29wYWJsZXMg
b2JqZWN0IHByb3Blcmx5LgorICAgIGlmICghbWVtYmVyLmlzVW5zY29wYWJsZSkgeworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgdmFyIHVuc2NvcGFibGVzID0gdGhpcy5nZXRfaW50ZXJm
YWNlX29iamVjdCgpLnByb3RvdHlwZVtTeW1ib2wudW5zY29wYWJsZXNdOworICAgIHZhciBwcm9w
ID0gbWVtYmVyLm5hbWU7CisgICAgdmFyIHByb3BEZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvcih1bnNjb3BhYmxlcywgcHJvcCk7CisgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2Yg
cHJvcERlc2MsICJvYmplY3QiLAorICAgICAgICAgICAgICAgICAgdGhpcy5uYW1lICsgJy5wcm90
b3R5cGVbU3ltYm9sLnVuc2NvcGFibGVzXS4nICsgcHJvcCArICcgbXVzdCBleGlzdCcpCisgICAg
YXNzZXJ0X2ZhbHNlKCJnZXQiIGluIHByb3BEZXNjLAorICAgICAgICAgICAgICAgICB0aGlzLm5h
bWUgKyAnLnByb3RvdHlwZVtTeW1ib2wudW5zY29wYWJsZXNdLicgKyBwcm9wICsgJyBtdXN0IGhh
dmUgbm8gZ2V0dGVyJyk7CisgICAgYXNzZXJ0X2ZhbHNlKCJzZXQiIGluIHByb3BEZXNjLAorICAg
ICAgICAgICAgICAgICB0aGlzLm5hbWUgKyAnLnByb3RvdHlwZVtTeW1ib2wudW5zY29wYWJsZXNd
LicgKyBwcm9wICsgJyBtdXN0IGhhdmUgbm8gc2V0dGVyJyk7CisgICAgYXNzZXJ0X3RydWUocHJv
cERlc2Mud3JpdGFibGUsCisgICAgICAgICAgICAgICAgdGhpcy5uYW1lICsgJy5wcm90b3R5cGVb
U3ltYm9sLnVuc2NvcGFibGVzXS4nICsgcHJvcCArICcgbXVzdCBiZSB3cml0YWJsZScpOworICAg
IGFzc2VydF90cnVlKHByb3BEZXNjLmVudW1lcmFibGUsCisgICAgICAgICAgICAgICAgdGhpcy5u
YW1lICsgJy5wcm90b3R5cGVbU3ltYm9sLnVuc2NvcGFibGVzXS4nICsgcHJvcCArICcgbXVzdCBi
ZSBlbnVtZXJhYmxlJyk7CisgICAgYXNzZXJ0X3RydWUocHJvcERlc2MuY29uZmlndXJhYmxlLAor
ICAgICAgICAgICAgICAgIHRoaXMubmFtZSArICcucHJvdG90eXBlW1N5bWJvbC51bnNjb3BhYmxl
c10uJyArIHByb3AgKyAnIG11c3QgYmUgY29uZmlndXJhYmxlJyk7CisgICAgYXNzZXJ0X2VxdWFs
cyhwcm9wRGVzYy52YWx1ZSwgdHJ1ZSwKKyAgICAgICAgICAgICAgICAgIHRoaXMubmFtZSArICcu
cHJvdG90eXBlW1N5bWJvbC51bnNjb3BhYmxlc10uJyArIHByb3AgKyAnIG11c3QgaGF2ZSB0aGUg
dmFsdWUgYHRydWVgJyk7Cit9OworCiBJZGxJbnRlcmZhY2UucHJvdG90eXBlLmRvX21lbWJlcl9v
cGVyYXRpb25fYXNzZXJ0cyA9IGZ1bmN0aW9uKG1lbWJlckhvbGRlck9iamVjdCwgbWVtYmVyLCBh
X3Rlc3QpCi0vL0B7CiB7CiAgICAgdmFyIGRvbmUgPSBhX3Rlc3QuZG9uZS5iaW5kKGFfdGVzdCk7
CiAgICAgdmFyIG9wZXJhdGlvblVuZm9yZ2VhYmxlID0gbWVtYmVyLmlzVW5mb3JnZWFibGU7CkBA
IC0xMjgyLDI3ICsyMzIzLDI5IEBAIElkbEludGVyZmFjZS5wcm90b3R5cGUuZG9fbWVtYmVyX29w
ZXJhdGlvbl9hc3NlcnRzID0gZnVuY3Rpb24obWVtYmVySG9sZGVyT2JqZWN0CiAgICAgLy8gIlRo
ZSBwcm9wZXJ0eSBoYXMgYXR0cmlidXRlcyB7IFtbV3JpdGFibGVdXTogQiwKICAgICAvLyBbW0Vu
dW1lcmFibGVdXTogdHJ1ZSwgW1tDb25maWd1cmFibGVdXTogQiB9LCB3aGVyZSBCIGlzIGZhbHNl
IGlmIHRoZQogICAgIC8vIG9wZXJhdGlvbiBpcyB1bmZvcmdlYWJsZSBvbiB0aGUgaW50ZXJmYWNl
LCBhbmQgdHJ1ZSBvdGhlcndpc2UiLgotICAgIGFzc2VydF9mYWxzZSgiZ2V0IiBpbiBkZXNjLCAi
cHJvcGVydHkgaGFzIGdldHRlciIpOwotICAgIGFzc2VydF9mYWxzZSgic2V0IiBpbiBkZXNjLCAi
cHJvcGVydHkgaGFzIHNldHRlciIpOworICAgIGFzc2VydF9mYWxzZSgiZ2V0IiBpbiBkZXNjLCAi
cHJvcGVydHkgc2hvdWxkIG5vdCBoYXZlIGEgZ2V0dGVyIik7CisgICAgYXNzZXJ0X2ZhbHNlKCJz
ZXQiIGluIGRlc2MsICJwcm9wZXJ0eSBzaG91bGQgbm90IGhhdmUgYSBzZXR0ZXIiKTsKICAgICBh
c3NlcnRfZXF1YWxzKGRlc2Mud3JpdGFibGUsICFvcGVyYXRpb25VbmZvcmdlYWJsZSwKICAgICAg
ICAgICAgICAgICAgICJwcm9wZXJ0eSBzaG91bGQgYmUgd3JpdGFibGUgaWYgYW5kIG9ubHkgaWYg
bm90IHVuZm9yZ2VhYmxlIik7Ci0gICAgYXNzZXJ0X3RydWUoZGVzYy5lbnVtZXJhYmxlLCAicHJv
cGVydHkgaXMgbm90IGVudW1lcmFibGUiKTsKKyAgICBhc3NlcnRfdHJ1ZShkZXNjLmVudW1lcmFi
bGUsICJwcm9wZXJ0eSBzaG91bGQgYmUgZW51bWVyYWJsZSIpOwogICAgIGFzc2VydF9lcXVhbHMo
ZGVzYy5jb25maWd1cmFibGUsICFvcGVyYXRpb25VbmZvcmdlYWJsZSwKICAgICAgICAgICAgICAg
ICAgICJwcm9wZXJ0eSBzaG91bGQgYmUgY29uZmlndXJhYmxlIGlmIGFuZCBvbmx5IGlmIG5vdCB1
bmZvcmdlYWJsZSIpOwogICAgIC8vICJUaGUgdmFsdWUgb2YgdGhlIHByb3BlcnR5IGlzIGEgRnVu
Y3Rpb24gb2JqZWN0IHdob3NlCiAgICAgLy8gYmVoYXZpb3IgaXMgYXMgZm9sbG93cyAuIC4gLiIK
ICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBtZW1iZXJIb2xkZXJPYmplY3RbbWVtYmVyLm5hbWVd
LCAiZnVuY3Rpb24iLAogICAgICAgICAgICAgICAgICAgInByb3BlcnR5IG11c3QgYmUgYSBmdW5j
dGlvbiIpOwotICAgIC8vICJUaGUgdmFsdWUgb2YgdGhlIEZ1bmN0aW9uIG9iamVjdOKAmXMg4oCc
bGVuZ3Ro4oCdIHByb3BlcnR5IGlzCi0gICAgLy8gYSBOdW1iZXIgZGV0ZXJtaW5lZCBhcyBmb2xs
b3dzOgotICAgIC8vICIuIC4gLgotICAgIC8vICJSZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgc2hv
cnRlc3QgYXJndW1lbnQgbGlzdCBvZiB0aGUKLSAgICAvLyBlbnRyaWVzIGluIFMuIgotICAgIGFz
c2VydF9lcXVhbHMobWVtYmVySG9sZGVyT2JqZWN0W21lbWJlci5uYW1lXS5sZW5ndGgsCi0gICAg
ICAgIG1pbk92ZXJsb2FkTGVuZ3RoKHRoaXMubWVtYmVycy5maWx0ZXIoZnVuY3Rpb24obSkgewot
ICAgICAgICAgICAgcmV0dXJuIG0udHlwZSA9PSAib3BlcmF0aW9uIiAmJiBtLm5hbWUgPT0gbWVt
YmVyLm5hbWU7Ci0gICAgICAgIH0pKSwKKworICAgIGNvbnN0IGN0b3JzID0gdGhpcy5tZW1iZXJz
LmZpbHRlcihmdW5jdGlvbihtKSB7CisgICAgICAgIHJldHVybiBtLnR5cGUgPT0gIm9wZXJhdGlv
biIgJiYgbS5uYW1lID09IG1lbWJlci5uYW1lOworICAgIH0pOworICAgIGFzc2VydF9lcXVhbHMo
CisgICAgICAgIG1lbWJlckhvbGRlck9iamVjdFttZW1iZXIubmFtZV0ubGVuZ3RoLAorICAgICAg
ICBtaW5PdmVybG9hZExlbmd0aChjdG9ycyksCiAgICAgICAgICJwcm9wZXJ0eSBoYXMgd3Jvbmcg
Lmxlbmd0aCIpOworICAgIGFzc2VydF9lcXVhbHMoCisgICAgICAgIG1lbWJlckhvbGRlck9iamVj
dFttZW1iZXIubmFtZV0ubmFtZSwKKyAgICAgICAgbWVtYmVyLm5hbWUsCisgICAgICAgICJwcm9w
ZXJ0eSBoYXMgd3JvbmcgLm5hbWUiKTsKIAogICAgIC8vIE1ha2Ugc29tZSBzdWl0YWJsZSBhcmd1
bWVudHMKICAgICB2YXIgYXJncyA9IG1lbWJlci5hcmd1bWVudHMubWFwKGZ1bmN0aW9uKGFyZykg
ewpAQCAtMTMxOSw3ICsyMzYyLDcgQEAgSWRsSW50ZXJmYWNlLnByb3RvdHlwZS5kb19tZW1iZXJf
b3BlcmF0aW9uX2Fzc2VydHMgPSBmdW5jdGlvbihtZW1iZXJIb2xkZXJPYmplY3QKICAgICAvLyBj
aGVjayBmb3IgZ2xvYmFscywgc2luY2Ugb3RoZXJ3aXNlIHdlJ2xsIGludm9rZSB3aW5kb3cuY2xv
c2UoKS4gIEFuZCB3ZQogICAgIC8vIGhhdmUgdG8gc2tpcCB0aGlzIHRlc3QgZm9yIGFueXRoaW5n
IHRoYXQgb24gdGhlIHByb3RvIGNoYWluIG9mICJzZWxmIiwKICAgICAvLyBzaW5jZSB0aGF0IGRv
ZXMgaW4gZmFjdCBoYXZlIGltcGxpY2l0LXRoaXMgYmVoYXZpb3IuCi0gICAgaWYgKCFtZW1iZXJb
InN0YXRpYyJdKSB7CisgICAgaWYgKG1lbWJlci5zcGVjaWFsICE9PSAic3RhdGljIikgewogICAg
ICAgICB2YXIgY2I7CiAgICAgICAgIGlmICghdGhpcy5pc19nbG9iYWwoKSAmJgogICAgICAgICAg
ICAgbWVtYmVySG9sZGVyT2JqZWN0W21lbWJlci5uYW1lXSAhPSBzZWxmW21lbWJlci5uYW1lXSkK
QEAgLTEzNDMsNzEgKzIzODYsMTIyIEBAIElkbEludGVyZmFjZS5wcm90b3R5cGUuZG9fbWVtYmVy
X29wZXJhdGlvbl9hc3NlcnRzID0gZnVuY3Rpb24obWVtYmVySG9sZGVyT2JqZWN0CiAgICAgfQog
fQogCi0vL0B9Ci1JZGxJbnRlcmZhY2UucHJvdG90eXBlLmFkZF9pdGVyYWJsZV9tZW1iZXJzID0g
ZnVuY3Rpb24obWVtYmVyKQotLy9AewotewotICAgIHRoaXMubWVtYmVycy5wdXNoKHt0eXBlOiAi
b3BlcmF0aW9uIiwgbmFtZTogImVudHJpZXMiLCBpZGxUeXBlOiAiaXRlcmF0b3IiLCBhcmd1bWVu
dHM6IFtdfSk7Ci0gICAgdGhpcy5tZW1iZXJzLnB1c2goe3R5cGU6ICJvcGVyYXRpb24iLCBuYW1l
OiAia2V5cyIsIGlkbFR5cGU6ICJpdGVyYXRvciIsIGFyZ3VtZW50czogW119KTsKLSAgICB0aGlz
Lm1lbWJlcnMucHVzaCh7dHlwZTogIm9wZXJhdGlvbiIsIG5hbWU6ICJ2YWx1ZXMiLCBpZGxUeXBl
OiAiaXRlcmF0b3IiLCBhcmd1bWVudHM6IFtdfSk7Ci0gICAgdGhpcy5tZW1iZXJzLnB1c2goe3R5
cGU6ICJvcGVyYXRpb24iLCBuYW1lOiAiZm9yRWFjaCIsIGlkbFR5cGU6ICJ2b2lkIiwgYXJndW1l
bnRzOgotICAgICAgICBbeyBuYW1lOiAiY2FsbGJhY2siLCBpZGxUeXBlOiB7aWRsVHlwZTogImZ1
bmN0aW9uIn19LAotICAgICAgICB7IG5hbWU6ICJ0aGlzVmFsdWUiLCBpZGxUeXBlOiB7aWRsVHlw
ZTogImFueSJ9LCBvcHRpb25hbDogdHJ1ZX1dfSk7CitJZGxJbnRlcmZhY2UucHJvdG90eXBlLnRl
c3RfdG9fanNvbl9vcGVyYXRpb24gPSBmdW5jdGlvbihkZXNjLCBtZW1iZXJIb2xkZXJPYmplY3Qs
IG1lbWJlcikgeworICAgIHZhciBpbnN0YW5jZU5hbWUgPSBtZW1iZXJIb2xkZXJPYmplY3QgJiYg
bWVtYmVySG9sZGVyT2JqZWN0LmNvbnN0cnVjdG9yLm5hbWUKKyAgICAgICAgfHwgbWVtYmVyLm5h
bWUgKyAiIG9iamVjdCI7CisgICAgaWYgKG1lbWJlci5oYXNfZXh0ZW5kZWRfYXR0cmlidXRlKCJE
ZWZhdWx0IikpIHsKKyAgICAgICAgc3Vic2V0VGVzdEJ5S2V5KHRoaXMubmFtZSwgdGVzdCwgZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICB2YXIgbWFwID0gdGhpcy5kZWZhdWx0X3RvX2pzb25fb3Bl
cmF0aW9uKCk7CisgICAgICAgICAgICB2YXIganNvbiA9IG1lbWJlckhvbGRlck9iamVjdC50b0pT
T04oKTsKKyAgICAgICAgICAgIG1hcC5mb3JFYWNoKGZ1bmN0aW9uKHR5cGUsIGspIHsKKyAgICAg
ICAgICAgICAgICBhc3NlcnRfdHJ1ZShrIGluIGpzb24sICJwcm9wZXJ0eSAiICsgSlNPTi5zdHJp
bmdpZnkoaykgKyAiIHNob3VsZCBiZSBwcmVzZW50IGluIHRoZSBvdXRwdXQgb2YgIiArIHRoaXMu
bmFtZSArICIucHJvdG90eXBlLnRvSlNPTigpIik7CisgICAgICAgICAgICAgICAgdmFyIGRlc2Ny
aXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGpzb24sIGspOworICAgICAg
ICAgICAgICAgIGFzc2VydF90cnVlKGRlc2NyaXB0b3Iud3JpdGFibGUsICJwcm9wZXJ0eSAiICsg
ayArICIgc2hvdWxkIGJlIHdyaXRhYmxlIik7CisgICAgICAgICAgICAgICAgYXNzZXJ0X3RydWUo
ZGVzY3JpcHRvci5jb25maWd1cmFibGUsICJwcm9wZXJ0eSAiICsgayArICIgc2hvdWxkIGJlIGNv
bmZpZ3VyYWJsZSIpOworICAgICAgICAgICAgICAgIGFzc2VydF90cnVlKGRlc2NyaXB0b3IuZW51
bWVyYWJsZSwgInByb3BlcnR5ICIgKyBrICsgIiBzaG91bGQgYmUgZW51bWVyYWJsZSIpOworICAg
ICAgICAgICAgICAgIHRoaXMuYXJyYXkuYXNzZXJ0X3R5cGVfaXMoanNvbltrXSwgdHlwZSk7Cisg
ICAgICAgICAgICAgICAgZGVsZXRlIGpzb25ba107CisgICAgICAgICAgICB9LCB0aGlzKTsKKyAg
ICAgICAgfS5iaW5kKHRoaXMpLCB0aGlzLm5hbWUgKyAiIGludGVyZmFjZTogZGVmYXVsdCB0b0pT
T04gb3BlcmF0aW9uIG9uICIgKyBkZXNjKTsKKyAgICB9IGVsc2UgeworICAgICAgICBzdWJzZXRU
ZXN0QnlLZXkodGhpcy5uYW1lLCB0ZXN0LCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFzc2Vy
dF90cnVlKHRoaXMuYXJyYXkuaXNfanNvbl90eXBlKG1lbWJlci5pZGxUeXBlKSwgSlNPTi5zdHJp
bmdpZnkobWVtYmVyLmlkbFR5cGUpICsgIiBpcyBub3QgYW4gYXBwcm9wcmlhdGUgcmV0dXJuIHZh
bHVlIGZvciB0aGUgdG9KU09OIG9wZXJhdGlvbiBvZiAiICsgaW5zdGFuY2VOYW1lKTsKKyAgICAg
ICAgICAgIHRoaXMuYXJyYXkuYXNzZXJ0X3R5cGVfaXMobWVtYmVySG9sZGVyT2JqZWN0LnRvSlNP
TigpLCBtZW1iZXIuaWRsVHlwZSk7CisgICAgICAgIH0uYmluZCh0aGlzKSwgdGhpcy5uYW1lICsg
IiBpbnRlcmZhY2U6IHRvSlNPTiBvcGVyYXRpb24gb24gIiArIGRlc2MpOworICAgIH0KIH07CiAK
LS8vQH0KIElkbEludGVyZmFjZS5wcm90b3R5cGUudGVzdF9tZW1iZXJfaXRlcmFibGUgPSBmdW5j
dGlvbihtZW1iZXIpCi0vL0B7CiB7Ci0gICAgdmFyIGludGVyZmFjZU5hbWUgPSB0aGlzLm5hbWU7
Ci0gICAgdmFyIGlzUGFpckl0ZXJhdG9yID0gbWVtYmVyLmlkbFR5cGUgaW5zdGFuY2VvZiBBcnJh
eTsKLSAgICB0ZXN0KGZ1bmN0aW9uKCkKKyAgICBzdWJzZXRUZXN0QnlLZXkodGhpcy5uYW1lLCB0
ZXN0LCBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB2YXIgZGVzY3JpcHRvciA9IE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc2VsZltpbnRlcmZhY2VOYW1lXS5wcm90b3R5cGUsIFN5
bWJvbC5pdGVyYXRvcik7Ci0gICAgICAgIGFzc2VydF90cnVlKGRlc2NyaXB0b3Iud3JpdGFibGUs
ICJwcm9wZXJ0eSBpcyBub3Qgd3JpdGFibGUiKTsKLSAgICAgICAgYXNzZXJ0X3RydWUoZGVzY3Jp
cHRvci5jb25maWd1cmFibGUsICJwcm9wZXJ0eSBpcyBub3QgY29uZmlndXJhYmxlIik7Ci0gICAg
ICAgIGFzc2VydF9mYWxzZShkZXNjcmlwdG9yLmVudW1lcmFibGUsICJwcm9wZXJ0eSBpcyBlbnVt
ZXJhYmxlIik7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoc2VsZltpbnRlcmZhY2VOYW1lXS5wcm90
b3R5cGVbU3ltYm9sLml0ZXJhdG9yXS5uYW1lLCBpc1BhaXJJdGVyYXRvciA/ICJlbnRyaWVzIiA6
ICJ2YWx1ZXMiLCAiQEBpdGVyYXRvciBmdW5jdGlvbiBkb2VzIG5vdCBoYXZlIHRoZSByaWdodCBu
YW1lIik7Ci0gICAgfSwgIlRlc3RpbmcgU3ltYm9sLml0ZXJhdG9yIHByb3BlcnR5IG9mIGl0ZXJh
YmxlIGludGVyZmFjZSAiICsgaW50ZXJmYWNlTmFtZSk7Ci0KLSAgICBpZiAoaXNQYWlySXRlcmF0
b3IpIHsKLSAgICAgICAgdGVzdChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGFzc2VydF9lcXVh
bHMoc2VsZltpbnRlcmZhY2VOYW1lXS5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXSwgc2VsZltp
bnRlcmZhY2VOYW1lXS5wcm90b3R5cGVbImVudHJpZXMiXSwgImVudHJpZXMgbWV0aG9kIGlzIG5v
dCB0aGUgc2FtZSBhcyBAQGl0ZXJhdG9yIik7Ci0gICAgICAgIH0sICJUZXN0aW5nIHBhaXIgaXRl
cmFibGUgaW50ZXJmYWNlICIgKyBpbnRlcmZhY2VOYW1lKTsKLSAgICB9IGVsc2UgewotICAgICAg
ICB0ZXN0KGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgWyJlbnRyaWVzIiwgImtleXMiLCAidmFs
dWVzIiwgImZvckVhY2giLCBTeW1ib2wuSXRlcmF0b3JdLmZvckVhY2goZnVuY3Rpb24ocHJvcGVy
dHkpIHsKLSAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHNlbGZbaW50ZXJmYWNlTmFtZV0u
cHJvdG90eXBlW3Byb3BlcnR5XSwgQXJyYXkucHJvdG90eXBlW3Byb3BlcnR5XSwgcHJvcGVydHkg
KyAiIGZ1bmN0aW9uIGlzIG5vdCB0aGUgc2FtZSBhcyBBcnJheSBvbmUiKTsKKyAgICAgICAgdmFy
IGlzUGFpckl0ZXJhdG9yID0gbWVtYmVyLmlkbFR5cGUubGVuZ3RoID09PSAyOworICAgICAgICB2
YXIgcHJvdG8gPSB0aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0KCkucHJvdG90eXBlOworICAgICAg
ICB2YXIgaXRlcmF0b3JEZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihwcm90
bywgU3ltYm9sLml0ZXJhdG9yKTsKKworICAgICAgICBhc3NlcnRfdHJ1ZShpdGVyYXRvckRlc2Mu
d3JpdGFibGUsICJAQGl0ZXJhdG9yIHByb3BlcnR5IHNob3VsZCBiZSB3cml0YWJsZSIpOworICAg
ICAgICBhc3NlcnRfdHJ1ZShpdGVyYXRvckRlc2MuY29uZmlndXJhYmxlLCAiQEBpdGVyYXRvciBw
cm9wZXJ0eSBzaG91bGQgYmUgY29uZmlndXJhYmxlIik7CisgICAgICAgIGFzc2VydF9mYWxzZShp
dGVyYXRvckRlc2MuZW51bWVyYWJsZSwgIkBAaXRlcmF0b3IgcHJvcGVydHkgc2hvdWxkIG5vdCBi
ZSBlbnVtZXJhYmxlIik7CisgICAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIGl0ZXJhdG9yRGVz
Yy52YWx1ZSwgImZ1bmN0aW9uIiwgIkBAaXRlcmF0b3IgcHJvcGVydHkgc2hvdWxkIGJlIGEgZnVu
Y3Rpb24iKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhpdGVyYXRvckRlc2MudmFsdWUubGVuZ3Ro
LCAwLCAiQEBpdGVyYXRvciBmdW5jdGlvbiBvYmplY3QgbGVuZ3RoIHNob3VsZCBiZSAwIik7Cisg
ICAgICAgIGFzc2VydF9lcXVhbHMoaXRlcmF0b3JEZXNjLnZhbHVlLm5hbWUsIGlzUGFpckl0ZXJh
dG9yID8gImVudHJpZXMiIDogInZhbHVlcyIsICJAQGl0ZXJhdG9yIGZ1bmN0aW9uIG9iamVjdCBz
aG91bGQgaGF2ZSB0aGUgcmlnaHQgbmFtZSIpOworCisgICAgICAgIGlmIChpc1BhaXJJdGVyYXRv
cikgeworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhwcm90b1siZW50cmllcyJdLCBwcm90b1tT
eW1ib2wuaXRlcmF0b3JdLCAiZW50cmllcyBtZXRob2Qgc2hvdWxkIGJlIHRoZSBzYW1lIGFzIEBA
aXRlcmF0b3IgbWV0aG9kIik7CisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgWyJlbnRy
aWVzIiwgMF0sCisgICAgICAgICAgICAgICAgWyJrZXlzIiwgMF0sCisgICAgICAgICAgICAgICAg
WyJ2YWx1ZXMiLCAwXSwKKyAgICAgICAgICAgICAgICBbImZvckVhY2giLCAxXQorICAgICAgICAg
ICAgXS5mb3JFYWNoKChbcHJvcGVydHksIGxlbmd0aF0pID0+IHsKKyAgICAgICAgICAgICAgICB2
YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocHJvdG8sIHByb3BlcnR5
KTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBkZXNjLnZhbHVlLCAiZnVu
Y3Rpb24iLCBwcm9wZXJ0eSArICIgcHJvcGVydHkgc2hvdWxkIGJlIGEgZnVuY3Rpb24iKTsKKyAg
ICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGRlc2MudmFsdWUubGVuZ3RoLCBsZW5ndGgsIHBy
b3BlcnR5ICsgIiBmdW5jdGlvbiBvYmplY3QgbGVuZ3RoIHNob3VsZCBiZSAiICsgbGVuZ3RoKTsK
KyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGRlc2MudmFsdWUubmFtZSwgcHJvcGVydHks
IHByb3BlcnR5ICsgIiBmdW5jdGlvbiBvYmplY3Qgc2hvdWxkIGhhdmUgdGhlIHJpZ2h0IG5hbWUi
KTsKICAgICAgICAgICAgIH0pOwotICAgICAgICB9LCAiVGVzdGluZyB2YWx1ZSBpdGVyYWJsZSBp
bnRlcmZhY2UgIiArIGludGVyZmFjZU5hbWUpOwotICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIGFzc2VydF9lcXVhbHMocHJvdG9bU3ltYm9sLml0ZXJhdG9yXSwgQXJyYXkucHJv
dG90eXBlW1N5bWJvbC5pdGVyYXRvcl0sICJAQGl0ZXJhdG9yIG1ldGhvZCBzaG91bGQgYmUgdGhl
IHNhbWUgYXMgQXJyYXkgcHJvdG90eXBlJ3MiKTsKKyAgICAgICAgICAgIFsiZW50cmllcyIsICJr
ZXlzIiwgInZhbHVlcyIsICJmb3JFYWNoIiwgU3ltYm9sLml0ZXJhdG9yXS5mb3JFYWNoKHByb3Bl
cnR5ID0+IHsKKyAgICAgICAgICAgICAgICB2YXIgcHJvcGVydHlOYW1lID0gcHJvcGVydHkgPT09
IFN5bWJvbC5pdGVyYXRvciA/ICJAQGl0ZXJhdG9yIiA6IHByb3BlcnR5OworICAgICAgICAgICAg
ICAgIGFzc2VydF9lcXVhbHMocHJvdG9bcHJvcGVydHldLCBBcnJheS5wcm90b3R5cGVbcHJvcGVy
dHldLCBwcm9wZXJ0eU5hbWUgKyAiIG1ldGhvZCBzaG91bGQgYmUgdGhlIHNhbWUgYXMgQXJyYXkg
cHJvdG90eXBlJ3MiKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgfS5iaW5kKHRo
aXMpLCB0aGlzLm5hbWUgKyAiIGludGVyZmFjZTogaXRlcmFibGU8IiArIG1lbWJlci5pZGxUeXBl
Lm1hcChmdW5jdGlvbih0KSB7IHJldHVybiB0LmlkbFR5cGU7IH0pLmpvaW4oIiwgIikgKyAiPiIp
OworfTsKKworSWRsSW50ZXJmYWNlLnByb3RvdHlwZS50ZXN0X21lbWJlcl9hc3luY19pdGVyYWJs
ZSA9IGZ1bmN0aW9uKG1lbWJlcikKK3sKKyAgICBzdWJzZXRUZXN0QnlLZXkodGhpcy5uYW1lLCB0
ZXN0LCBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgaXNQYWlySXRlcmF0b3IgPSBtZW1i
ZXIuaWRsVHlwZS5sZW5ndGggPT09IDI7CisgICAgICAgIHZhciBwcm90byA9IHRoaXMuZ2V0X2lu
dGVyZmFjZV9vYmplY3QoKS5wcm90b3R5cGU7CisgICAgICAgIHZhciBpdGVyYXRvckRlc2MgPSBP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHByb3RvLCBTeW1ib2wuYXN5bmNJdGVyYXRv
cik7CisKKyAgICAgICAgYXNzZXJ0X3RydWUoaXRlcmF0b3JEZXNjLndyaXRhYmxlLCAiQEBhc3lu
Y0l0ZXJhdG9yIHByb3BlcnR5IHNob3VsZCBiZSB3cml0YWJsZSIpOworICAgICAgICBhc3NlcnRf
dHJ1ZShpdGVyYXRvckRlc2MuY29uZmlndXJhYmxlLCAiQEBhc3luY0l0ZXJhdG9yIHByb3BlcnR5
IHNob3VsZCBiZSBjb25maWd1cmFibGUiKTsKKyAgICAgICAgYXNzZXJ0X2ZhbHNlKGl0ZXJhdG9y
RGVzYy5lbnVtZXJhYmxlLCAiQEBhc3luY0l0ZXJhdG9yIHByb3BlcnR5IHNob3VsZCBub3QgYmUg
ZW51bWVyYWJsZSIpOworICAgICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBpdGVyYXRvckRlc2Mu
dmFsdWUsICJmdW5jdGlvbiIsICJAQGFzeW5jSXRlcmF0b3IgcHJvcGVydHkgc2hvdWxkIGJlIGEg
ZnVuY3Rpb24iKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhpdGVyYXRvckRlc2MudmFsdWUubGVu
Z3RoLCAwLCAiQEBhc3luY0l0ZXJhdG9yIGZ1bmN0aW9uIG9iamVjdCBsZW5ndGggc2hvdWxkIGJl
IDAiKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhpdGVyYXRvckRlc2MudmFsdWUubmFtZSwgaXNQ
YWlySXRlcmF0b3IgPyAiZW50cmllcyIgOiAidmFsdWVzIiwgIkBAYXN5bmNJdGVyYXRvciBmdW5j
dGlvbiBvYmplY3Qgc2hvdWxkIGhhdmUgdGhlIHJpZ2h0IG5hbWUiKTsKKworICAgICAgICBpZiAo
aXNQYWlySXRlcmF0b3IpIHsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocHJvdG9bImVudHJp
ZXMiXSwgcHJvdG9bU3ltYm9sLmFzeW5jSXRlcmF0b3JdLCAiZW50cmllcyBtZXRob2Qgc2hvdWxk
IGJlIHRoZSBzYW1lIGFzIEBAYXN5bmNJdGVyYXRvciBtZXRob2QiKTsKKyAgICAgICAgICAgIFsi
ZW50cmllcyIsICJrZXlzIiwgInZhbHVlcyJdLmZvckVhY2gocHJvcGVydHkgPT4geworICAgICAg
ICAgICAgICAgIHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihwcm90
bywgcHJvcGVydHkpOworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIGRlc2Mu
dmFsdWUsICJmdW5jdGlvbiIsIHByb3BlcnR5ICsgIiBwcm9wZXJ0eSBzaG91bGQgYmUgYSBmdW5j
dGlvbiIpOworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZGVzYy52YWx1ZS5sZW5ndGgs
IDAsIHByb3BlcnR5ICsgIiBmdW5jdGlvbiBvYmplY3QgbGVuZ3RoIHNob3VsZCBiZSAwIik7Cisg
ICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhkZXNjLnZhbHVlLm5hbWUsIHByb3BlcnR5LCBw
cm9wZXJ0eSArICIgZnVuY3Rpb24gb2JqZWN0IHNob3VsZCBoYXZlIHRoZSByaWdodCBuYW1lIik7
CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGFzc2VydF9l
cXVhbHMocHJvdG9bInZhbHVlcyJdLCBwcm90b1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0sICJ2YWx1
ZXMgbWV0aG9kIHNob3VsZCBiZSB0aGUgc2FtZSBhcyBAQGFzeW5jSXRlcmF0b3IgbWV0aG9kIik7
CisgICAgICAgICAgICBhc3NlcnRfZmFsc2UoImVudHJpZXMiIGluIHByb3RvLCAic2hvdWxkIG5v
dCBoYXZlIGFuIGVudHJpZXMgbWV0aG9kIik7CisgICAgICAgICAgICBhc3NlcnRfZmFsc2UoImtl
eXMiIGluIHByb3RvLCAic2hvdWxkIG5vdCBoYXZlIGEga2V5cyBtZXRob2QiKTsKKyAgICAgICAg
fQorICAgIH0uYmluZCh0aGlzKSwgdGhpcy5uYW1lICsgIiBpbnRlcmZhY2U6IGFzeW5jIGl0ZXJh
YmxlPCIgKyBtZW1iZXIuaWRsVHlwZS5tYXAoZnVuY3Rpb24odCkgeyByZXR1cm4gdC5pZGxUeXBl
OyB9KS5qb2luKCIsICIpICsgIj4iKTsKIH07CiAKLS8vQH0KIElkbEludGVyZmFjZS5wcm90b3R5
cGUudGVzdF9tZW1iZXJfc3RyaW5naWZpZXIgPSBmdW5jdGlvbihtZW1iZXIpCi0vL0B7CiB7Ci0g
ICAgdGVzdChmdW5jdGlvbigpCisgICAgc3Vic2V0VGVzdEJ5S2V5KHRoaXMubmFtZSwgdGVzdCwg
ZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgaWYgKHRoaXMuaXNfY2FsbGJhY2soKSAmJiAhdGhp
cy5oYXNfY29uc3RhbnRzKCkpIHsKKyAgICAgICAgaWYgKCF0aGlzLnNob3VsZF9oYXZlX2ludGVy
ZmFjZV9vYmplY3QoKSkgewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAg
ICAgYXNzZXJ0X293bl9wcm9wZXJ0eShzZWxmLCB0aGlzLm5hbWUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgInNlbGYgZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVydHkgIiArIGZvcm1hdF92
YWx1ZSh0aGlzLm5hbWUpKTsKKyAgICAgICAgdGhpcy5hc3NlcnRfaW50ZXJmYWNlX29iamVjdF9l
eGlzdHMoKTsKIAogICAgICAgICBpZiAodGhpcy5pc19jYWxsYmFjaygpKSB7Ci0gICAgICAgICAg
ICBhc3NlcnRfZmFsc2UoInByb3RvdHlwZSIgaW4gc2VsZlt0aGlzLm5hbWVdLAorICAgICAgICAg
ICAgYXNzZXJ0X2ZhbHNlKCJwcm90b3R5cGUiIGluIHRoaXMuZ2V0X2ludGVyZmFjZV9vYmplY3Qo
KSwKICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5hbWUgKyAnIHNob3VsZCBub3QgaGF2
ZSBhICJwcm90b3R5cGUiIHByb3BlcnR5Jyk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIAotICAgICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KHNlbGZbdGhpcy5uYW1lXSwgInByb3Rv
dHlwZSIsCisgICAgICAgIGFzc2VydF9vd25fcHJvcGVydHkodGhpcy5nZXRfaW50ZXJmYWNlX29i
amVjdCgpLCAicHJvdG90eXBlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW50ZXJm
YWNlICInICsgdGhpcy5uYW1lICsgJyIgZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVydHkgInByb3Rv
dHlwZSInKTsKIAogICAgICAgICAvLyAiLiAuIC4gdGhlIHByb3BlcnR5IGV4aXN0cyBvbiB0aGUg
aW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QuIgotICAgICAgICB2YXIgaW50ZXJmYWNlUHJvdG90
eXBlT2JqZWN0ID0gc2VsZlt0aGlzLm5hbWVdLnByb3RvdHlwZTsKLSAgICAgICAgYXNzZXJ0X293
bl9wcm9wZXJ0eShzZWxmW3RoaXMubmFtZV0ucHJvdG90eXBlLCAidG9TdHJpbmciLAorICAgICAg
ICB2YXIgaW50ZXJmYWNlUHJvdG90eXBlT2JqZWN0ID0gdGhpcy5nZXRfaW50ZXJmYWNlX29iamVj
dCgpLnByb3RvdHlwZTsKKyAgICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0eShpbnRlcmZhY2VQcm90
b3R5cGVPYmplY3QsICJ0b1N0cmluZyIsCiAgICAgICAgICAgICAgICAgImludGVyZmFjZSBwcm90
b3R5cGUgb2JqZWN0IG1pc3Npbmcgbm9uLXN0YXRpYyBvcGVyYXRpb24iKTsKIAogICAgICAgICB2
YXIgc3RyaW5naWZpZXJVbmZvcmdlYWJsZSA9IG1lbWJlci5pc1VuZm9yZ2VhYmxlOwpAQCAtMTQx
NSwxMSArMjUwOSwxMSBAQCBJZGxJbnRlcmZhY2UucHJvdG90eXBlLnRlc3RfbWVtYmVyX3N0cmlu
Z2lmaWVyID0gZnVuY3Rpb24obWVtYmVyKQogICAgICAgICAvLyAiVGhlIHByb3BlcnR5IGhhcyBh
dHRyaWJ1dGVzIHsgW1tXcml0YWJsZV1dOiBCLAogICAgICAgICAvLyBbW0VudW1lcmFibGVdXTog
dHJ1ZSwgW1tDb25maWd1cmFibGVdXTogQiB9LCB3aGVyZSBCIGlzIGZhbHNlIGlmIHRoZQogICAg
ICAgICAvLyBzdHJpbmdpZmllciBpcyB1bmZvcmdlYWJsZSBvbiB0aGUgaW50ZXJmYWNlLCBhbmQg
dHJ1ZSBvdGhlcndpc2UuIgotICAgICAgICBhc3NlcnRfZmFsc2UoImdldCIgaW4gZGVzYywgInBy
b3BlcnR5IGhhcyBnZXR0ZXIiKTsKLSAgICAgICAgYXNzZXJ0X2ZhbHNlKCJzZXQiIGluIGRlc2Ms
ICJwcm9wZXJ0eSBoYXMgc2V0dGVyIik7CisgICAgICAgIGFzc2VydF9mYWxzZSgiZ2V0IiBpbiBk
ZXNjLCAicHJvcGVydHkgc2hvdWxkIG5vdCBoYXZlIGEgZ2V0dGVyIik7CisgICAgICAgIGFzc2Vy
dF9mYWxzZSgic2V0IiBpbiBkZXNjLCAicHJvcGVydHkgc2hvdWxkIG5vdCBoYXZlIGEgc2V0dGVy
Iik7CiAgICAgICAgIGFzc2VydF9lcXVhbHMoZGVzYy53cml0YWJsZSwgIXN0cmluZ2lmaWVyVW5m
b3JnZWFibGUsCiAgICAgICAgICAgICAgICAgICAgICAgInByb3BlcnR5IHNob3VsZCBiZSB3cml0
YWJsZSBpZiBhbmQgb25seSBpZiBub3QgdW5mb3JnZWFibGUiKTsKLSAgICAgICAgYXNzZXJ0X3Ry
dWUoZGVzYy5lbnVtZXJhYmxlLCAicHJvcGVydHkgaXMgbm90IGVudW1lcmFibGUiKTsKKyAgICAg
ICAgYXNzZXJ0X3RydWUoZGVzYy5lbnVtZXJhYmxlLCAicHJvcGVydHkgc2hvdWxkIGJlIGVudW1l
cmFibGUiKTsKICAgICAgICAgYXNzZXJ0X2VxdWFscyhkZXNjLmNvbmZpZ3VyYWJsZSwgIXN0cmlu
Z2lmaWVyVW5mb3JnZWFibGUsCiAgICAgICAgICAgICAgICAgICAgICAgInByb3BlcnR5IHNob3Vs
ZCBiZSBjb25maWd1cmFibGUgaWYgYW5kIG9ubHkgaWYgbm90IHVuZm9yZ2VhYmxlIik7CiAgICAg
ICAgIC8vICJUaGUgdmFsdWUgb2YgdGhlIHByb3BlcnR5IGlzIGEgRnVuY3Rpb24gb2JqZWN0LCB3
aGljaCBiZWhhdmVzIGFzCkBAIC0xNDMyLDggKzI1MjYsOCBAQCBJZGxJbnRlcmZhY2UucHJvdG90
eXBlLnRlc3RfbWVtYmVyX3N0cmluZ2lmaWVyID0gZnVuY3Rpb24obWVtYmVyKQogICAgICAgICAg
ICAgInByb3BlcnR5IGhhcyB3cm9uZyAubGVuZ3RoIik7CiAKICAgICAgICAgLy8gIkxldCBPIGJl
IHRoZSByZXN1bHQgb2YgY2FsbGluZyBUb09iamVjdCBvbiB0aGUgdGhpcyB2YWx1ZS4iCi0gICAg
ICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsKLSAgICAgICAg
ICAgIHNlbGZbdGhpcy5uYW1lXS5wcm90b3R5cGUudG9TdHJpbmcuYXBwbHkobnVsbCwgW10pOwor
ICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKGdsb2JhbE9mKGludGVyZmFjZVByb3RvdHlwZU9iamVj
dC50b1N0cmluZykuVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGludGVyZmFj
ZVByb3RvdHlwZU9iamVjdC50b1N0cmluZy5hcHBseShudWxsLCBbXSk7CiAgICAgICAgIH0sICJj
YWxsaW5nIHN0cmluZ2lmaWVyIHdpdGggdGhpcyA9IG51bGwgZGlkbid0IHRocm93IFR5cGVFcnJv
ciIpOwogCiAgICAgICAgIC8vICJJZiBPIGlzIG5vdCBhbiBvYmplY3QgdGhhdCBpbXBsZW1lbnRz
IHRoZSBpbnRlcmZhY2Ugb24gd2hpY2ggdGhlCkBAIC0xNDQxLDMzICsyNTM1LDMxIEBAIElkbElu
dGVyZmFjZS5wcm90b3R5cGUudGVzdF9tZW1iZXJfc3RyaW5naWZpZXIgPSBmdW5jdGlvbihtZW1i
ZXIpCiAgICAgICAgIC8vCiAgICAgICAgIC8vIFRPRE86IFRlc3QgYSBwbGF0Zm9ybSBvYmplY3Qg
dGhhdCBpbXBsZW1lbnRzIHNvbWUgb3RoZXIKICAgICAgICAgLy8gaW50ZXJmYWNlLiAgKEhhdmUg
dG8gYmUgc3VyZSB0byBnZXQgaW5oZXJpdGFuY2UgcmlnaHQuKQotICAgICAgICBhc3NlcnRfdGhy
b3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBzZWxmW3RoaXMu
bmFtZV0ucHJvdG90eXBlLnRvU3RyaW5nLmFwcGx5KHt9LCBbXSk7CisgICAgICAgIGFzc2VydF90
aHJvd3NfanMoZ2xvYmFsT2YoaW50ZXJmYWNlUHJvdG90eXBlT2JqZWN0LnRvU3RyaW5nKS5UeXBl
RXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgaW50ZXJmYWNlUHJvdG90eXBlT2JqZWN0
LnRvU3RyaW5nLmFwcGx5KHt9LCBbXSk7CiAgICAgICAgIH0sICJjYWxsaW5nIHN0cmluZ2lmaWVy
IHdpdGggdGhpcyA9IHt9IGRpZG4ndCB0aHJvdyBUeXBlRXJyb3IiKTsKICAgICB9LmJpbmQodGhp
cyksIHRoaXMubmFtZSArICIgaW50ZXJmYWNlOiBzdHJpbmdpZmllciIpOwogfTsKIAotLy9AfQog
SWRsSW50ZXJmYWNlLnByb3RvdHlwZS50ZXN0X21lbWJlcnMgPSBmdW5jdGlvbigpCi0vL0B7CiB7
CiAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLm1lbWJlcnMubGVuZ3RoOyBpKyspCiAgICAg
ewogICAgICAgICB2YXIgbWVtYmVyID0gdGhpcy5tZW1iZXJzW2ldOwotICAgICAgICBzd2l0Y2gg
KG1lbWJlci50eXBlKSB7Ci0gICAgICAgIGNhc2UgIml0ZXJhYmxlIjoKLSAgICAgICAgICAgIHRo
aXMuYWRkX2l0ZXJhYmxlX21lbWJlcnMobWVtYmVyKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAvLyBUT0RPOiBhZGQgc2V0bGlrZSBhbmQgbWFwbGlrZSBoYW5kbGluZy4KLSAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAobWVtYmVyLnVudGVzdGVk
KSB7CisgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgIH0KIAotICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgdGhpcy5tZW1iZXJzLmxlbmd0aDsgaSsrKQotICAgIHsKLSAgICAgICAg
dmFyIG1lbWJlciA9IHRoaXMubWVtYmVyc1tpXTsKLSAgICAgICAgaWYgKG1lbWJlci51bnRlc3Rl
ZCkgeworICAgICAgICBpZiAoIWV4cG9zZWRfaW4oZXhwb3N1cmVfc2V0KG1lbWJlciwgdGhpcy5l
eHBvc3VyZVNldCkpKSB7CisgICAgICAgICAgICBzdWJzZXRUZXN0QnlLZXkodGhpcy5uYW1lLCB0
ZXN0LCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAvLyBJdCdzIG5vdCBleHBvc2VkLCBz
byB3ZSBzaG91bGRuJ3QgZmluZCBpdCBhbnl3aGVyZS4KKyAgICAgICAgICAgICAgICBhc3NlcnRf
ZmFsc2UobWVtYmVyLm5hbWUgaW4gdGhpcy5nZXRfaW50ZXJmYWNlX29iamVjdCgpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiVGhlIGludGVyZmFjZSBvYmplY3QgbXVzdCBub3QgaGF2
ZSBhIHByb3BlcnR5ICIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRfdmFs
dWUobWVtYmVyLm5hbWUpKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZmFsc2UobWVtYmVyLm5h
bWUgaW4gdGhpcy5nZXRfaW50ZXJmYWNlX29iamVjdCgpLnByb3RvdHlwZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIlRoZSBwcm90b3R5cGUgb2JqZWN0IG11c3Qgbm90IGhhdmUgYSBw
cm9wZXJ0eSAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0X3ZhbHVlKG1l
bWJlci5uYW1lKSk7CisgICAgICAgICAgICB9LmJpbmQodGhpcyksIHRoaXMubmFtZSArICIgaW50
ZXJmYWNlOiBtZW1iZXIgIiArIG1lbWJlci5uYW1lKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICB9CiAKQEAgLTE0ODMsNyArMjU3NSw3IEBAIElkbEludGVyZmFjZS5wcm90b3R5cGUu
dGVzdF9tZW1iZXJzID0gZnVuY3Rpb24oKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAg
IHRoaXMudGVzdF9tZW1iZXJfYXR0cmlidXRlKG1lbWJlcik7CiAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBpZiAobWVtYmVyLnN0cmluZ2lmaWVyKSB7CisgICAgICAgICAgICBpZiAobWVtYmVy
LnNwZWNpYWwgPT09ICJzdHJpbmdpZmllciIpIHsKICAgICAgICAgICAgICAgICB0aGlzLnRlc3Rf
bWVtYmVyX3N0cmluZ2lmaWVyKG1lbWJlcik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBi
cmVhazsKQEAgLTE0OTgsMTMgKzI1OTAsMTcgQEAgSWRsSW50ZXJmYWNlLnByb3RvdHlwZS50ZXN0
X21lbWJlcnMgPSBmdW5jdGlvbigpCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAg
ICAgICB0aGlzLnRlc3RfbWVtYmVyX29wZXJhdGlvbihtZW1iZXIpOwogICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIH0gZWxzZSBpZiAobWVtYmVyLnN0cmluZ2lmaWVyKSB7CisgICAgICAg
ICAgICB9IGVsc2UgaWYgKG1lbWJlci5zcGVjaWFsID09PSAic3RyaW5naWZpZXIiKSB7CiAgICAg
ICAgICAgICAgICAgdGhpcy50ZXN0X21lbWJlcl9zdHJpbmdpZmllcihtZW1iZXIpOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSAiaXRlcmFibGUiOgot
ICAgICAgICAgICAgdGhpcy50ZXN0X21lbWJlcl9pdGVyYWJsZShtZW1iZXIpOworICAgICAgICAg
ICAgaWYgKG1lbWJlci5hc3luYykgeworICAgICAgICAgICAgICAgIHRoaXMudGVzdF9tZW1iZXJf
YXN5bmNfaXRlcmFibGUobWVtYmVyKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgdGhpcy50ZXN0X21lbWJlcl9pdGVyYWJsZShtZW1iZXIpOworICAgICAgICAgICAgfQog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAvLyBUT0RP
OiBjaGVjayBtb3JlIG1lbWJlciB0eXBlcy4KQEAgLTE1MTMsOSArMjYwOSw3IEBAIElkbEludGVy
ZmFjZS5wcm90b3R5cGUudGVzdF9tZW1iZXJzID0gZnVuY3Rpb24oKQogICAgIH0KIH07CiAKLS8v
QH0KIElkbEludGVyZmFjZS5wcm90b3R5cGUudGVzdF9vYmplY3QgPSBmdW5jdGlvbihkZXNjKQot
Ly9AewogewogICAgIHZhciBvYmosIGV4Y2VwdGlvbiA9IG51bGw7CiAgICAgdHJ5CkBAIC0xNTI3
LDE4ICsyNjIxLDI1IEBAIElkbEludGVyZmFjZS5wcm90b3R5cGUudGVzdF9vYmplY3QgPSBmdW5j
dGlvbihkZXNjKQogICAgICAgICBleGNlcHRpb24gPSBlOwogICAgIH0KIAotICAgIHZhciBleHBl
Y3RlZF90eXBlb2YgPQotICAgICAgICB0aGlzLm1lbWJlcnMuc29tZShmdW5jdGlvbihtZW1iZXIp
IHsgcmV0dXJuIG1lbWJlci5sZWdhY3ljYWxsZXI7IH0pCi0gICAgICAgID8gImZ1bmN0aW9uIgot
ICAgICAgICA6ICJvYmplY3QiOworICAgIHZhciBleHBlY3RlZF90eXBlb2Y7CisgICAgaWYgKHRo
aXMubmFtZSA9PSAiSFRNTEFsbENvbGxlY3Rpb24iKQorICAgIHsKKyAgICAgICAgLy8gUmVzdWx0
IG9mIFtbSXNIVE1MRERBXV0gc2xvdAorICAgICAgICBleHBlY3RlZF90eXBlb2YgPSAidW5kZWZp
bmVkIjsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgZXhwZWN0ZWRfdHlwZW9mID0g
Im9iamVjdCI7CisgICAgfQogCiAgICAgdGhpcy50ZXN0X3ByaW1hcnlfaW50ZXJmYWNlX29mKGRl
c2MsIG9iaiwgZXhjZXB0aW9uLCBleHBlY3RlZF90eXBlb2YpOworCiAgICAgdmFyIGN1cnJlbnRf
aW50ZXJmYWNlID0gdGhpczsKICAgICB3aGlsZSAoY3VycmVudF9pbnRlcmZhY2UpCiAgICAgewog
ICAgICAgICBpZiAoIShjdXJyZW50X2ludGVyZmFjZS5uYW1lIGluIHRoaXMuYXJyYXkubWVtYmVy
cykpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHRocm93ICJJbnRlcmZhY2UgIiArIGN1cnJlbnRf
aW50ZXJmYWNlLm5hbWUgKyAiIG5vdCBmb3VuZCAoaW5oZXJpdGVkIGJ5ICIgKyB0aGlzLm5hbWUg
KyAiKSI7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWRsSGFybmVzc0Vycm9yKCJJbnRlcmZhY2Ug
IiArIGN1cnJlbnRfaW50ZXJmYWNlLm5hbWUgKyAiIG5vdCBmb3VuZCAoaW5oZXJpdGVkIGJ5ICIg
KyB0aGlzLm5hbWUgKyAiKSIpOwogICAgICAgICB9CiAgICAgICAgIGlmIChjdXJyZW50X2ludGVy
ZmFjZS5wcmV2ZW50X211bHRpcGxlX3Rlc3RpbmcgJiYgY3VycmVudF9pbnRlcmZhY2UuYWxyZWFk
eV90ZXN0ZWQpCiAgICAgICAgIHsKQEAgLTE1NDksMjQgKzI2NTAsNDAgQEAgSWRsSW50ZXJmYWNl
LnByb3RvdHlwZS50ZXN0X29iamVjdCA9IGZ1bmN0aW9uKGRlc2MpCiAgICAgfQogfTsKIAotLy9A
fQogSWRsSW50ZXJmYWNlLnByb3RvdHlwZS50ZXN0X3ByaW1hcnlfaW50ZXJmYWNlX29mID0gZnVu
Y3Rpb24oZGVzYywgb2JqLCBleGNlcHRpb24sIGV4cGVjdGVkX3R5cGVvZikKLS8vQHsKIHsKKyAg
ICAvLyBPbmx5IHRoZSBvYmplY3QgaXRzZWxmLCBub3QgaXRzIG1lbWJlcnMsIGFyZSB0ZXN0ZWQg
aGVyZSwgc28gaWYgdGhlCisgICAgLy8gaW50ZXJmYWNlIGlzIHVudGVzdGVkLCB0aGVyZSBpcyBu
b3RoaW5nIHRvIGRvLgorICAgIGlmICh0aGlzLnVudGVzdGVkKQorICAgIHsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIC8vICJUaGUgaW50ZXJuYWwgW1tTZXRQcm90b3R5cGVPZl1dIG1l
dGhvZCBvZiBldmVyeSBwbGF0Zm9ybSBvYmplY3QgdGhhdAorICAgIC8vIGltcGxlbWVudHMgYW4g
aW50ZXJmYWNlIHdpdGggdGhlIFtHbG9iYWxdIGV4dGVuZGVkCisgICAgLy8gYXR0cmlidXRlIG11
c3QgZXhlY3V0ZSB0aGUgc2FtZSBhbGdvcml0aG0gYXMgaXMgZGVmaW5lZCBmb3IgdGhlCisgICAg
Ly8gW1tTZXRQcm90b3R5cGVPZl1dIGludGVybmFsIG1ldGhvZCBvZiBhbiBpbW11dGFibGUgcHJv
dG90eXBlIGV4b3RpYworICAgIC8vIG9iamVjdC4iCisgICAgLy8gaHR0cHM6Ly9oZXljYW0uZ2l0
aHViLmlvL3dlYmlkbC8jcGxhdGZvcm0tb2JqZWN0LXNldHByb3RvdHlwZW9mCisgICAgaWYgKHRo
aXMuaXNfZ2xvYmFsKCkpCisgICAgeworICAgICAgICB0aGlzLnRlc3RfaW1tdXRhYmxlX3Byb3Rv
dHlwZSgiZ2xvYmFsIHBsYXRmb3JtIG9iamVjdCIsIG9iaik7CisgICAgfQorCisKICAgICAvLyBX
ZSBjYW4ndCBlYXNpbHkgdGVzdCB0aGF0IGl0cyBwcm90b3R5cGUgaXMgY29ycmVjdCBpZiB0aGVy
ZSdzIG5vCiAgICAgLy8gaW50ZXJmYWNlIG9iamVjdCwgb3IgdGhlIG9iamVjdCBpcyBmcm9tIGEg
ZGlmZmVyZW50IGdsb2JhbCBlbnZpcm9ubWVudAogICAgIC8vIChub3QgaW5zdGFuY2VvZiBPYmpl
Y3QpLiAgVE9ETzogdGVzdCBpbiB0aGlzIGNhc2UgdGhhdCBpdHMgcHJvdG90eXBlIGF0CiAgICAg
Ly8gbGVhc3QgbG9va3MgY29ycmVjdCwgZXZlbiBpZiB3ZSBjYW4ndCB0ZXN0IHRoYXQgaXQncyBh
Y3R1YWxseSBjb3JyZWN0LgotICAgIGlmICghdGhpcy5oYXNfZXh0ZW5kZWRfYXR0cmlidXRlKCJO
b0ludGVyZmFjZU9iamVjdCIpCisgICAgaWYgKHRoaXMuc2hvdWxkX2hhdmVfaW50ZXJmYWNlX29i
amVjdCgpCiAgICAgJiYgKHR5cGVvZiBvYmogIT0gZXhwZWN0ZWRfdHlwZW9mIHx8IG9iaiBpbnN0
YW5jZW9mIE9iamVjdCkpCiAgICAgewotICAgICAgICB0ZXN0KGZ1bmN0aW9uKCkKKyAgICAgICAg
c3Vic2V0VGVzdEJ5S2V5KHRoaXMubmFtZSwgdGVzdCwgZnVuY3Rpb24oKQogICAgICAgICB7CiAg
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGV4Y2VwdGlvbiwgbnVsbCwgIlVuZXhwZWN0ZWQgZXhj
ZXB0aW9uIHdoZW4gZXZhbHVhdGluZyBvYmplY3QiKTsKICAgICAgICAgICAgIGFzc2VydF9lcXVh
bHModHlwZW9mIG9iaiwgZXhwZWN0ZWRfdHlwZW9mLCAid3JvbmcgdHlwZW9mIG9iamVjdCIpOwot
ICAgICAgICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0eShzZWxmLCB0aGlzLm5hbWUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJzZWxmIGRvZXMgbm90IGhhdmUgb3duIHByb3BlcnR5
ICIgKyBmb3JtYXRfdmFsdWUodGhpcy5uYW1lKSk7Ci0gICAgICAgICAgICBhc3NlcnRfb3duX3By
b3BlcnR5KHNlbGZbdGhpcy5uYW1lXSwgInByb3RvdHlwZSIsCisgICAgICAgICAgICB0aGlzLmFz
c2VydF9pbnRlcmZhY2Vfb2JqZWN0X2V4aXN0cygpOworICAgICAgICAgICAgYXNzZXJ0X293bl9w
cm9wZXJ0eSh0aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0KCksICJwcm90b3R5cGUiLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnaW50ZXJmYWNlICInICsgdGhpcy5uYW1lICsgJyIg
ZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVydHkgInByb3RvdHlwZSInKTsKIAogICAgICAgICAgICAg
Ly8gIlRoZSB2YWx1ZSBvZiB0aGUgaW50ZXJuYWwgW1tQcm90b3R5cGVdXSBwcm9wZXJ0eSBvZiB0
aGUKQEAgLTE1NzQsMzkgKzI2OTEsNTAgQEAgSWRsSW50ZXJmYWNlLnByb3RvdHlwZS50ZXN0X3By
aW1hcnlfaW50ZXJmYWNlX29mID0gZnVuY3Rpb24oZGVzYywgb2JqLCBleGNlcHRpb24KICAgICAg
ICAgICAgIC8vIGludGVyZmFjZSBmcm9tIHRoZSBwbGF0Zm9ybSBvYmplY3TigJlzIGFzc29jaWF0
ZWQgZ2xvYmFsCiAgICAgICAgICAgICAvLyBlbnZpcm9ubWVudC4iCiAgICAgICAgICAgICBhc3Nl
cnRfZXF1YWxzKE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmopLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZWxmW3RoaXMubmFtZV0ucHJvdG90eXBlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICB0aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0KCkucHJvdG90eXBlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICBkZXNjICsgIidzIHByb3RvdHlwZSBpcyBub3QgIiArIHRoaXMubmFtZSAr
ICIucHJvdG90eXBlIik7CiAgICAgICAgIH0uYmluZCh0aGlzKSwgdGhpcy5uYW1lICsgIiBtdXN0
IGJlIHByaW1hcnkgaW50ZXJmYWNlIG9mICIgKyBkZXNjKTsKICAgICB9CiAKICAgICAvLyAiVGhl
IGNsYXNzIHN0cmluZyBvZiBhIHBsYXRmb3JtIG9iamVjdCB0aGF0IGltcGxlbWVudHMgb25lIG9y
IG1vcmUKLSAgICAvLyBpbnRlcmZhY2VzIG11c3QgYmUgdGhlIGlkZW50aWZpZXIgb2YgdGhlIHBy
aW1hcnkgaW50ZXJmYWNlIG9mIHRoZQorICAgIC8vIGludGVyZmFjZXMgbXVzdCBiZSB0aGUgcXVh
bGlmaWVkIG5hbWUgb2YgdGhlIHByaW1hcnkgaW50ZXJmYWNlIG9mIHRoZQogICAgIC8vIHBsYXRm
b3JtIG9iamVjdC4iCi0gICAgdGVzdChmdW5jdGlvbigpCisgICAgc3Vic2V0VGVzdEJ5S2V5KHRo
aXMubmFtZSwgdGVzdCwgZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgYXNzZXJ0X2VxdWFscyhl
eGNlcHRpb24sIG51bGwsICJVbmV4cGVjdGVkIGV4Y2VwdGlvbiB3aGVuIGV2YWx1YXRpbmcgb2Jq
ZWN0Iik7CiAgICAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIG9iaiwgZXhwZWN0ZWRfdHlwZW9m
LCAid3JvbmcgdHlwZW9mIG9iamVjdCIpOwotICAgICAgICBhc3NlcnRfY2xhc3Nfc3RyaW5nKG9i
aiwgdGhpcy5uYW1lLCAiY2xhc3Mgc3RyaW5nIG9mICIgKyBkZXNjKTsKKyAgICAgICAgYXNzZXJ0
X2NsYXNzX3N0cmluZyhvYmosIHRoaXMuZ2V0X3F1YWxpZmllZF9uYW1lKCksICJjbGFzcyBzdHJp
bmcgb2YgIiArIGRlc2MpOwogICAgICAgICBpZiAoIXRoaXMuaGFzX3N0cmluZ2lmaWVyKCkpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoU3RyaW5nKG9iaiksICJbb2JqZWN0
ICIgKyB0aGlzLm5hbWUgKyAiXSIsICJTdHJpbmcoIiArIGRlc2MgKyAiKSIpOworICAgICAgICAg
ICAgYXNzZXJ0X2VxdWFscyhTdHJpbmcob2JqKSwgIltvYmplY3QgIiArIHRoaXMuZ2V0X3F1YWxp
ZmllZF9uYW1lKCkgKyAiXSIsICJTdHJpbmcoIiArIGRlc2MgKyAiKSIpOwogICAgICAgICB9CiAg
ICAgfS5iaW5kKHRoaXMpLCAiU3RyaW5naWZpY2F0aW9uIG9mICIgKyBkZXNjKTsKIH07CiAKLS8v
QH0KIElkbEludGVyZmFjZS5wcm90b3R5cGUudGVzdF9pbnRlcmZhY2Vfb2YgPSBmdW5jdGlvbihk
ZXNjLCBvYmosIGV4Y2VwdGlvbiwgZXhwZWN0ZWRfdHlwZW9mKQotLy9AewogewogICAgIC8vIFRP
RE86IEluZGV4ZWQgYW5kIG5hbWVkIHByb3BlcnRpZXMsIG1vcmUgY2hlY2tzIG9uIGludGVyZmFj
ZSBtZW1iZXJzCiAgICAgdGhpcy5hbHJlYWR5X3Rlc3RlZCA9IHRydWU7CisgICAgaWYgKCFzaG91
bGRSdW5TdWJUZXN0KHRoaXMubmFtZSkpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5tZW1iZXJzLmxlbmd0aDsgaSsrKQogICAgIHsKICAg
ICAgICAgdmFyIG1lbWJlciA9IHRoaXMubWVtYmVyc1tpXTsKKyAgICAgICAgaWYgKG1lbWJlci51
bnRlc3RlZCkgeworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgaWYg
KCFleHBvc2VkX2luKGV4cG9zdXJlX3NldChtZW1iZXIsIHRoaXMuZXhwb3N1cmVTZXQpKSkgewor
ICAgICAgICAgICAgc3Vic2V0VGVzdEJ5S2V5KHRoaXMubmFtZSwgdGVzdCwgZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhleGNlcHRpb24sIG51bGwsICJVbmV4cGVj
dGVkIGV4Y2VwdGlvbiB3aGVuIGV2YWx1YXRpbmcgb2JqZWN0Iik7CisgICAgICAgICAgICAgICAg
YXNzZXJ0X2ZhbHNlKG1lbWJlci5uYW1lIGluIG9iaik7CisgICAgICAgICAgICB9LmJpbmQodGhp
cyksIHRoaXMubmFtZSArICIgaW50ZXJmYWNlOiAiICsgZGVzYyArICcgbXVzdCBub3QgaGF2ZSBw
cm9wZXJ0eSAiJyArIG1lbWJlci5uYW1lICsgJyInKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICB9CiAgICAgICAgIGlmIChtZW1iZXIudHlwZSA9PSAiYXR0cmlidXRlIiAmJiBtZW1i
ZXIuaXNVbmZvcmdlYWJsZSkKICAgICAgICAgewotICAgICAgICAgICAgdmFyIGFfdGVzdCA9IGFz
eW5jX3Rlc3QodGhpcy5uYW1lICsgIiBpbnRlcmZhY2U6ICIgKyBkZXNjICsgJyBtdXN0IGhhdmUg
b3duIHByb3BlcnR5ICInICsgbWVtYmVyLm5hbWUgKyAnIicpOworICAgICAgICAgICAgdmFyIGFf
dGVzdCA9IHN1YnNldFRlc3RCeUtleSh0aGlzLm5hbWUsIGFzeW5jX3Rlc3QsIHRoaXMubmFtZSAr
ICIgaW50ZXJmYWNlOiAiICsgZGVzYyArICcgbXVzdCBoYXZlIG93biBwcm9wZXJ0eSAiJyArIG1l
bWJlci5uYW1lICsgJyInKTsKICAgICAgICAgICAgIGFfdGVzdC5zdGVwKGZ1bmN0aW9uKCkgewog
ICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZXhjZXB0aW9uLCBudWxsLCAiVW5leHBlY3Rl
ZCBleGNlcHRpb24gd2hlbiBldmFsdWF0aW5nIG9iamVjdCIpOwogICAgICAgICAgICAgICAgIGFz
c2VydF9lcXVhbHModHlwZW9mIG9iaiwgZXhwZWN0ZWRfdHlwZW9mLCAid3JvbmcgdHlwZW9mIG9i
amVjdCIpOwpAQCAtMTYxOCw3ICsyNzQ2LDcgQEAgSWRsSW50ZXJmYWNlLnByb3RvdHlwZS50ZXN0
X2ludGVyZmFjZV9vZiA9IGZ1bmN0aW9uKGRlc2MsIG9iaiwgZXhjZXB0aW9uLCBleHBlY3QKICAg
ICAgICAgICAgICAgICAgbWVtYmVyLm5hbWUgJiYKICAgICAgICAgICAgICAgICAgbWVtYmVyLmlz
VW5mb3JnZWFibGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHZhciBhX3Rlc3QgPSBhc3luY190
ZXN0KHRoaXMubmFtZSArICIgaW50ZXJmYWNlOiAiICsgZGVzYyArICcgbXVzdCBoYXZlIG93biBw
cm9wZXJ0eSAiJyArIG1lbWJlci5uYW1lICsgJyInKTsKKyAgICAgICAgICAgIHZhciBhX3Rlc3Qg
PSBzdWJzZXRUZXN0QnlLZXkodGhpcy5uYW1lLCBhc3luY190ZXN0LCB0aGlzLm5hbWUgKyAiIGlu
dGVyZmFjZTogIiArIGRlc2MgKyAnIG11c3QgaGF2ZSBvd24gcHJvcGVydHkgIicgKyBtZW1iZXIu
bmFtZSArICciJyk7CiAgICAgICAgICAgICBhX3Rlc3Quc3RlcChmdW5jdGlvbigpCiAgICAgICAg
ICAgICB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhleGNlcHRpb24sIG51bGwsICJV
bmV4cGVjdGVkIGV4Y2VwdGlvbiB3aGVuIGV2YWx1YXRpbmcgb2JqZWN0Iik7CkBAIC0xNjMzLDEx
ICsyNzYxLDExIEBAIElkbEludGVyZmFjZS5wcm90b3R5cGUudGVzdF9pbnRlcmZhY2Vfb2YgPSBm
dW5jdGlvbihkZXNjLCBvYmosIGV4Y2VwdGlvbiwgZXhwZWN0CiAgICAgICAgIHx8IG1lbWJlci50
eXBlID09ICJvcGVyYXRpb24iKQogICAgICAgICAmJiBtZW1iZXIubmFtZSkKICAgICAgICAgewot
ICAgICAgICAgICAgdGVzdChmdW5jdGlvbigpCisgICAgICAgICAgICBzdWJzZXRUZXN0QnlLZXko
dGhpcy5uYW1lLCB0ZXN0LCBmdW5jdGlvbigpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg
ICAgYXNzZXJ0X2VxdWFscyhleGNlcHRpb24sIG51bGwsICJVbmV4cGVjdGVkIGV4Y2VwdGlvbiB3
aGVuIGV2YWx1YXRpbmcgb2JqZWN0Iik7CiAgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh0
eXBlb2Ygb2JqLCBleHBlY3RlZF90eXBlb2YsICJ3cm9uZyB0eXBlb2Ygb2JqZWN0Iik7Ci0gICAg
ICAgICAgICAgICAgaWYgKCFtZW1iZXJbInN0YXRpYyJdKSB7CisgICAgICAgICAgICAgICAgaWYg
KG1lbWJlci5zcGVjaWFsICE9PSAic3RhdGljIikgewogICAgICAgICAgICAgICAgICAgICBpZiAo
IXRoaXMuaXNfZ2xvYmFsKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydF9pbmhl
cml0cyhvYmosIG1lbWJlci5uYW1lKTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKQEAg
LTE2NjQsNyArMjc5MiwxNSBAQCBJZGxJbnRlcmZhY2UucHJvdG90eXBlLnRlc3RfaW50ZXJmYWNl
X29mID0gZnVuY3Rpb24oZGVzYywgb2JqLCBleGNlcHRpb24sIGV4cGVjdAogICAgICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aHJvd24pCiAgICAg
ICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5h
cnJheS5hc3NlcnRfdHlwZV9pcyhwcm9wZXJ0eSwgbWVtYmVyLmlkbFR5cGUpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm5hbWUgPT0gIkRvY3VtZW50IiAmJiBtZW1iZXIu
bmFtZSA9PSAiYWxsIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIFJlc3VsdCBvZiBbW0lzSFRNTEREQV1dIHNsb3QKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgcHJvcGVy
dHksICJ1bmRlZmluZWQiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hcnJheS5hc3NlcnRfdHlwZV9p
cyhwcm9wZXJ0eSwgbWVtYmVyLmlkbFR5cGUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgICBpZiAobWVtYmVyLnR5cGUgPT0gIm9wZXJhdGlvbiIpCkBAIC0xNjcy
LDMwICsyODA4LDM0IEBAIElkbEludGVyZmFjZS5wcm90b3R5cGUudGVzdF9pbnRlcmZhY2Vfb2Yg
PSBmdW5jdGlvbihkZXNjLCBvYmosIGV4Y2VwdGlvbiwgZXhwZWN0CiAgICAgICAgICAgICAgICAg
ICAgICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBvYmpbbWVtYmVyLm5hbWVdLCAiZnVuY3Rpb24i
KTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IH0uYmluZCh0aGlzKSwgdGhpcy5uYW1lICsgIiBpbnRlcmZhY2U6ICIgKyBkZXNjICsgJyBtdXN0
IGluaGVyaXQgcHJvcGVydHkgIicgKyBtZW1iZXIubmFtZSArICciIHdpdGggdGhlIHByb3BlciB0
eXBlICgnICsgaSArICcpJyk7CisgICAgICAgICAgICB9LmJpbmQodGhpcyksIHRoaXMubmFtZSAr
ICIgaW50ZXJmYWNlOiAiICsgZGVzYyArICcgbXVzdCBpbmhlcml0IHByb3BlcnR5ICInICsgbWVt
YmVyICsgJyIgd2l0aCB0aGUgcHJvcGVyIHR5cGUnKTsKICAgICAgICAgfQogICAgICAgICAvLyBU
T0RPOiBUaGlzIGlzIHdyb25nIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSBvcGVyYXRpb25zIHdpdGgg
dGhlIHNhbWUKICAgICAgICAgLy8gaWRlbnRpZmllci4KICAgICAgICAgLy8gVE9ETzogVGVzdCBw
YXNzaW5nIGFyZ3VtZW50cyBvZiB0aGUgd3JvbmcgdHlwZS4KICAgICAgICAgaWYgKG1lbWJlci50
eXBlID09ICJvcGVyYXRpb24iICYmIG1lbWJlci5uYW1lICYmIG1lbWJlci5hcmd1bWVudHMubGVu
Z3RoKQogICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgYV90ZXN0ID0gYXN5bmNfdGVzdCggdGhp
cy5uYW1lICsgIiBpbnRlcmZhY2U6IGNhbGxpbmcgIiArIG1lbWJlci5uYW1lICsKLSAgICAgICAg
ICAgICIoIiArIG1lbWJlci5hcmd1bWVudHMubWFwKGZ1bmN0aW9uKG0pIHsgcmV0dXJuIG0uaWRs
VHlwZS5pZGxUeXBlOyB9KSArCi0gICAgICAgICAgICAiKSBvbiAiICsgZGVzYyArICIgd2l0aCB0
b28gZmV3IGFyZ3VtZW50cyBtdXN0IHRocm93IFR5cGVFcnJvciIpOworICAgICAgICAgICAgdmFy
IGRlc2NyaXB0aW9uID0KKyAgICAgICAgICAgICAgICB0aGlzLm5hbWUgKyAiIGludGVyZmFjZTog
Y2FsbGluZyAiICsgbWVtYmVyICsgIiBvbiAiICsgZGVzYyArCisgICAgICAgICAgICAgICAgIiB3
aXRoIHRvbyBmZXcgYXJndW1lbnRzIG11c3QgdGhyb3cgVHlwZUVycm9yIjsKKyAgICAgICAgICAg
IHZhciBhX3Rlc3QgPSBzdWJzZXRUZXN0QnlLZXkodGhpcy5uYW1lLCBhc3luY190ZXN0LCBkZXNj
cmlwdGlvbik7CiAgICAgICAgICAgICBhX3Rlc3Quc3RlcChmdW5jdGlvbigpCiAgICAgICAgICAg
ICB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhleGNlcHRpb24sIG51bGwsICJVbmV4
cGVjdGVkIGV4Y2VwdGlvbiB3aGVuIGV2YWx1YXRpbmcgb2JqZWN0Iik7CiAgICAgICAgICAgICAg
ICAgYXNzZXJ0X2VxdWFscyh0eXBlb2Ygb2JqLCBleHBlY3RlZF90eXBlb2YsICJ3cm9uZyB0eXBl
b2Ygb2JqZWN0Iik7Ci0gICAgICAgICAgICAgICAgaWYgKCFtZW1iZXJbInN0YXRpYyJdKSB7Cisg
ICAgICAgICAgICAgICAgdmFyIGZuOworICAgICAgICAgICAgICAgIGlmIChtZW1iZXIuc3BlY2lh
bCAhPT0gInN0YXRpYyIpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlzX2dsb2Jh
bCgpICYmICFtZW1iZXIuaXNVbmZvcmdlYWJsZSkgewogICAgICAgICAgICAgICAgICAgICAgICAg
YXNzZXJ0X2luaGVyaXRzKG9iaiwgbWVtYmVyLm5hbWUpOwogICAgICAgICAgICAgICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0eShvYmos
IG1lbWJlci5uYW1lKTsKICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICBmbiA9IG9ialttZW1iZXIubmFtZV07CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGFzc2VydF9m
YWxzZShtZW1iZXIubmFtZSBpbiBvYmopOworICAgICAgICAgICAgICAgICAgICBhc3NlcnRfb3du
X3Byb3BlcnR5KG9iai5jb25zdHJ1Y3RvciwgbWVtYmVyLm5hbWUsICJpbnRlcmZhY2Ugb2JqZWN0
IG11c3QgaGF2ZSBzdGF0aWMgb3BlcmF0aW9uIGFzIG93biBwcm9wZXJ0eSIpOworICAgICAgICAg
ICAgICAgICAgICBmbiA9IG9iai5jb25zdHJ1Y3RvclttZW1iZXIubmFtZV07CiAgICAgICAgICAg
ICAgICAgfQogCiAgICAgICAgICAgICAgICAgdmFyIG1pbkxlbmd0aCA9IG1pbk92ZXJsb2FkTGVu
Z3RoKHRoaXMubWVtYmVycy5maWx0ZXIoZnVuY3Rpb24obSkgewpAQCAtMTcwNCw3ICsyODQ0LDcg
QEAgSWRsSW50ZXJmYWNlLnByb3RvdHlwZS50ZXN0X2ludGVyZmFjZV9vZiA9IGZ1bmN0aW9uKGRl
c2MsIG9iaiwgZXhjZXB0aW9uLCBleHBlY3QKICAgICAgICAgICAgICAgICB2YXIgYXJncyA9IFtd
OwogICAgICAgICAgICAgICAgIHZhciBjYiA9IGF3YWl0TkNhbGxiYWNrcyhtaW5MZW5ndGgsIGFf
dGVzdC5kb25lLmJpbmQoYV90ZXN0KSk7CiAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBtaW5MZW5ndGg7IGkrKykgewotICAgICAgICAgICAgICAgICAgICB0aHJvd09yUmVqZWN0
KGFfdGVzdCwgbWVtYmVyLCBvYmpbbWVtYmVyLm5hbWVdLCBvYmosIGFyZ3MsICAiQ2FsbGVkIHdp
dGggIiArIGkgKyAiIGFyZ3VtZW50cyIsIGNiKTsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3dP
clJlamVjdChhX3Rlc3QsIG1lbWJlciwgZm4sIG9iaiwgYXJncywgIkNhbGxlZCB3aXRoICIgKyBp
ICsgIiBhcmd1bWVudHMiLCBjYik7CiAKICAgICAgICAgICAgICAgICAgICAgYXJncy5wdXNoKGNy
ZWF0ZV9zdWl0YWJsZV9vYmplY3QobWVtYmVyLmFyZ3VtZW50c1tpXS5pZGxUeXBlKSk7CiAgICAg
ICAgICAgICAgICAgfQpAQCAtMTcxMywxNCArMjg1MywyMSBAQCBJZGxJbnRlcmZhY2UucHJvdG90
eXBlLnRlc3RfaW50ZXJmYWNlX29mID0gZnVuY3Rpb24oZGVzYywgb2JqLCBleGNlcHRpb24sIGV4
cGVjdAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0uYmluZCh0aGlzKSk7CiAgICAg
ICAgIH0KKworICAgICAgICBpZiAobWVtYmVyLmlzX3RvX2pzb25fcmVndWxhcl9vcGVyYXRpb24o
KSkgeworICAgICAgICAgICAgdGhpcy50ZXN0X3RvX2pzb25fb3BlcmF0aW9uKGRlc2MsIG9iaiwg
bWVtYmVyKTsKKyAgICAgICAgfQogICAgIH0KIH07CiAKLS8vQH0KIElkbEludGVyZmFjZS5wcm90
b3R5cGUuaGFzX3N0cmluZ2lmaWVyID0gZnVuY3Rpb24oKQotLy9AewogewotICAgIGlmICh0aGlz
Lm1lbWJlcnMuc29tZShmdW5jdGlvbihtZW1iZXIpIHsgcmV0dXJuIG1lbWJlci5zdHJpbmdpZmll
cjsgfSkpIHsKKyAgICBpZiAodGhpcy5uYW1lID09PSAiRE9NRXhjZXB0aW9uIikgeworICAgICAg
ICAvLyB0b1N0cmluZyBpcyBpbmhlcml0ZWQgZnJvbSBFcnJvciwgc28gZG9uJ3QgYXNzdW1lIHdl
IGhhdmUgdGhlCisgICAgICAgIC8vIGRlZmF1bHQgc3RyaW5naWZlcgorICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisgICAgaWYgKHRoaXMubWVtYmVycy5zb21lKGZ1bmN0aW9uKG1lbWJlcikg
eyByZXR1cm4gbWVtYmVyLnNwZWNpYWwgPT09ICJzdHJpbmdpZmllciI7IH0pKSB7CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KICAgICBpZiAodGhpcy5iYXNlICYmCkBAIC0xNzMwLDkgKzI4
NzcsNyBAQCBJZGxJbnRlcmZhY2UucHJvdG90eXBlLmhhc19zdHJpbmdpZmllciA9IGZ1bmN0aW9u
KCkKICAgICByZXR1cm4gZmFsc2U7CiB9OwogCi0vL0B9CiBJZGxJbnRlcmZhY2UucHJvdG90eXBl
LmRvX2ludGVyZmFjZV9hdHRyaWJ1dGVfYXNzZXJ0cyA9IGZ1bmN0aW9uKG9iaiwgbWVtYmVyLCBh
X3Rlc3QpCi0vL0B7CiB7CiAgICAgLy8gVGhpcyBmdW5jdGlvbiB0ZXN0cyBXZWJJREwgYXMgb2Yg
MjAxNS0wMS0yNy4KICAgICAvLyBUT0RPOiBDb25zaWRlciBbRXhwb3NlZF0uCkBAIC0xNzQzLDI3
ICsyODg4LDIyIEBAIElkbEludGVyZmFjZS5wcm90b3R5cGUuZG9faW50ZXJmYWNlX2F0dHJpYnV0
ZV9hc3NlcnRzID0gZnVuY3Rpb24ob2JqLCBtZW1iZXIsIGFfCiAKICAgICB2YXIgcGVuZGluZ1By
b21pc2VzID0gW107CiAKLSAgICAvLyAiRm9yIGVhY2ggZXhwb3NlZCBhdHRyaWJ1dGUgb2YgdGhl
IGludGVyZmFjZSwgd2hldGhlciBpdCB3YXMgZGVjbGFyZWQgb24KLSAgICAvLyB0aGUgaW50ZXJm
YWNlIGl0c2VsZiBvciBvbmUgb2YgaXRzIGNvbnNlcXVlbnRpYWwgaW50ZXJmYWNlcywgdGhlcmUg
TVVTVAotICAgIC8vIGV4aXN0IGEgY29ycmVzcG9uZGluZyBwcm9wZXJ0eS4gVGhlIGNoYXJhY3Rl
cmlzdGljcyBvZiB0aGlzIHByb3BlcnR5IGFyZQotICAgIC8vIGFzIGZvbGxvd3M6IgotCiAgICAg
Ly8gIlRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eSBpcyB0aGUgaWRlbnRpZmllciBvZiB0aGUgYXR0
cmlidXRlLiIKICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KG9iaiwgbWVtYmVyLm5hbWUpOwogCiAg
ICAgLy8gIlRoZSBwcm9wZXJ0eSBoYXMgYXR0cmlidXRlcyB7IFtbR2V0XV06IEcsIFtbU2V0XV06
IFMsIFtbRW51bWVyYWJsZV1dOgogICAgIC8vIHRydWUsIFtbQ29uZmlndXJhYmxlXV06IGNvbmZp
Z3VyYWJsZSB9LCB3aGVyZToKICAgICAvLyAiY29uZmlndXJhYmxlIGlzIGZhbHNlIGlmIHRoZSBh
dHRyaWJ1dGUgd2FzIGRlY2xhcmVkIHdpdGggdGhlCi0gICAgLy8gW1VuZm9yZ2VhYmxlXSBleHRl
bmRlZCBhdHRyaWJ1dGUgYW5kIHRydWUgb3RoZXJ3aXNlOworICAgIC8vIFtMZWdhY3lVbmZvcmdl
YWJsZV0gZXh0ZW5kZWQgYXR0cmlidXRlIGFuZCB0cnVlIG90aGVyd2lzZTsKICAgICAvLyAiRyBp
cyB0aGUgYXR0cmlidXRlIGdldHRlciwgZGVmaW5lZCBiZWxvdzsgYW5kCiAgICAgLy8gIlMgaXMg
dGhlIGF0dHJpYnV0ZSBzZXR0ZXIsIGFsc28gZGVmaW5lZCBiZWxvdy4iCiAgICAgdmFyIGRlc2Mg
PSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwgbWVtYmVyLm5hbWUpOwotICAg
IGFzc2VydF9mYWxzZSgidmFsdWUiIGluIGRlc2MsICdwcm9wZXJ0eSBkZXNjcmlwdG9yIGhhcyB2
YWx1ZSBidXQgaXMgc3VwcG9zZWQgdG8gYmUgYWNjZXNzb3InKTsKLSAgICBhc3NlcnRfZmFsc2Uo
IndyaXRhYmxlIiBpbiBkZXNjLCAncHJvcGVydHkgZGVzY3JpcHRvciBoYXMgIndyaXRhYmxlIiBm
aWVsZCBidXQgaXMgc3VwcG9zZWQgdG8gYmUgYWNjZXNzb3InKTsKLSAgICBhc3NlcnRfdHJ1ZShk
ZXNjLmVudW1lcmFibGUsICJwcm9wZXJ0eSBpcyBub3QgZW51bWVyYWJsZSIpOworICAgIGFzc2Vy
dF9mYWxzZSgidmFsdWUiIGluIGRlc2MsICdwcm9wZXJ0eSBkZXNjcmlwdG9yIHNob3VsZCBub3Qg
aGF2ZSBhICJ2YWx1ZSIgZmllbGQnKTsKKyAgICBhc3NlcnRfZmFsc2UoIndyaXRhYmxlIiBpbiBk
ZXNjLCAncHJvcGVydHkgZGVzY3JpcHRvciBzaG91bGQgbm90IGhhdmUgYSAid3JpdGFibGUiIGZp
ZWxkJyk7CisgICAgYXNzZXJ0X3RydWUoZGVzYy5lbnVtZXJhYmxlLCAicHJvcGVydHkgc2hvdWxk
IGJlIGVudW1lcmFibGUiKTsKICAgICBpZiAobWVtYmVyLmlzVW5mb3JnZWFibGUpCiAgICAgewot
ICAgICAgICBhc3NlcnRfZmFsc2UoZGVzYy5jb25maWd1cmFibGUsICJbVW5mb3JnZWFibGVdIHBy
b3BlcnR5IG11c3Qgbm90IGJlIGNvbmZpZ3VyYWJsZSIpOworICAgICAgICBhc3NlcnRfZmFsc2Uo
ZGVzYy5jb25maWd1cmFibGUsICJbTGVnYWN5VW5mb3JnZWFibGVdIHByb3BlcnR5IG11c3Qgbm90
IGJlIGNvbmZpZ3VyYWJsZSIpOwogICAgIH0KICAgICBlbHNlCiAgICAgewpAQCAtMTc3NiwxOSAr
MjkxNiwxOSBAQCBJZGxJbnRlcmZhY2UucHJvdG90eXBlLmRvX2ludGVyZmFjZV9hdHRyaWJ1dGVf
YXNzZXJ0cyA9IGZ1bmN0aW9uKG9iaiwgbWVtYmVyLCBhXwogICAgIGFzc2VydF9lcXVhbHModHlw
ZW9mIGRlc2MuZ2V0LCAiZnVuY3Rpb24iLCAiZ2V0dGVyIG11c3QgYmUgRnVuY3Rpb24iKTsKIAog
ICAgIC8vICJJZiB0aGUgYXR0cmlidXRlIGlzIGEgcmVndWxhciBhdHRyaWJ1dGUsIHRoZW46Igot
ICAgIGlmICghbWVtYmVyWyJzdGF0aWMiXSkgeworICAgIGlmIChtZW1iZXIuc3BlY2lhbCAhPT0g
InN0YXRpYyIpIHsKICAgICAgICAgLy8gIklmIE8gaXMgbm90IGEgcGxhdGZvcm0gb2JqZWN0IHRo
YXQgaW1wbGVtZW50cyBJLCB0aGVuOgotICAgICAgICAvLyAiSWYgdGhlIGF0dHJpYnV0ZSB3YXMg
c3BlY2lmaWVkIHdpdGggdGhlIFtMZW5pZW50VGhpc10gZXh0ZW5kZWQKKyAgICAgICAgLy8gIklm
IHRoZSBhdHRyaWJ1dGUgd2FzIHNwZWNpZmllZCB3aXRoIHRoZSBbTGVnYWN5TGVuaWVudFRoaXNd
IGV4dGVuZGVkCiAgICAgICAgIC8vIGF0dHJpYnV0ZSwgdGhlbiByZXR1cm4gdW5kZWZpbmVkLgog
ICAgICAgICAvLyAiT3RoZXJ3aXNlLCB0aHJvdyBhIFR5cGVFcnJvci4iCi0gICAgICAgIGlmICgh
bWVtYmVyLmhhc19leHRlbmRlZF9hdHRyaWJ1dGUoIkxlbmllbnRUaGlzIikpIHsKKyAgICAgICAg
aWYgKCFtZW1iZXIuaGFzX2V4dGVuZGVkX2F0dHJpYnV0ZSgiTGVnYWN5TGVuaWVudFRoaXMiKSkg
ewogICAgICAgICAgICAgaWYgKG1lbWJlci5pZGxUeXBlLmdlbmVyaWMgIT09ICJQcm9taXNlIikg
ewotICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKGdsb2JhbE9mKGRlc2MuZ2V0
KS5UeXBlRXJyb3IsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICBkZXNjLmdldC5j
YWxsKHt9KTsKICAgICAgICAgICAgICAgICB9LmJpbmQodGhpcyksICJjYWxsaW5nIGdldHRlciBv
biB3cm9uZyBvYmplY3QgdHlwZSBtdXN0IHRocm93IFR5cGVFcnJvciIpOwogICAgICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgICAgICBwZW5kaW5nUHJvbWlzZXMucHVzaCgKLSAgICAgICAg
ICAgICAgICAgICAgcHJvbWlzZV9yZWplY3RzKGFfdGVzdCwgbmV3IFR5cGVFcnJvcigpLCBkZXNj
LmdldC5jYWxsKHt9KSwKKyAgICAgICAgICAgICAgICAgICAgcHJvbWlzZV9yZWplY3RzX2pzKGFf
dGVzdCwgVHlwZUVycm9yLCBkZXNjLmdldC5jYWxsKHt9KSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJjYWxsaW5nIGdldHRlciBvbiB3cm9uZyBvYmplY3QgdHlwZSBtdXN0
IHJlamVjdCB0aGUgcmV0dXJuIHByb21pc2Ugd2l0aCBUeXBlRXJyb3IiKSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0gZWxzZSB7CkBAIC0xODAxLDEwICsyOTQxLDE2IEBAIElkbEludGVyZmFj
ZS5wcm90b3R5cGUuZG9faW50ZXJmYWNlX2F0dHJpYnV0ZV9hc3NlcnRzID0gZnVuY3Rpb24ob2Jq
LCBtZW1iZXIsIGFfCiAgICAgLy8gdmFsdWUgMC4iCiAgICAgYXNzZXJ0X2VxdWFscyhkZXNjLmdl
dC5sZW5ndGgsIDAsICJnZXR0ZXIgbGVuZ3RoIG11c3QgYmUgMCIpOwogCisgICAgLy8gIkxldCBu
YW1lIGJlIHRoZSBzdHJpbmcgImdldCAiIHByZXBlbmRlZCB0byBhdHRyaWJ1dGXigJlzIGlkZW50
aWZpZXIuIgorICAgIC8vICJQZXJmb3JtICEgU2V0RnVuY3Rpb25OYW1lKEYsIG5hbWUpLiIKKyAg
ICBhc3NlcnRfZXF1YWxzKGRlc2MuZ2V0Lm5hbWUsICJnZXQgIiArIG1lbWJlci5uYW1lLAorICAg
ICAgICAiZ2V0dGVyIG11c3QgaGF2ZSB0aGUgbmFtZSAnZ2V0ICIgKyBtZW1iZXIubmFtZSArICIn
Iik7CisKIAogICAgIC8vIFRPRE86IFRlc3QgY2FsbGluZyBzZXR0ZXIgb24gdGhlIGludGVyZmFj
ZSBwcm90b3R5cGUgKHNob3VsZCB0aHJvdwogICAgIC8vIFR5cGVFcnJvciBpbiBtb3N0IGNhc2Vz
KS4KICAgICBpZiAobWVtYmVyLnJlYWRvbmx5CisgICAgJiYgIW1lbWJlci5oYXNfZXh0ZW5kZWRf
YXR0cmlidXRlKCJMZWdhY3lMZW5pZW50U2V0dGVyIikKICAgICAmJiAhbWVtYmVyLmhhc19leHRl
bmRlZF9hdHRyaWJ1dGUoIlB1dEZvcndhcmRzIikKICAgICAmJiAhbWVtYmVyLmhhc19leHRlbmRl
ZF9hdHRyaWJ1dGUoIlJlcGxhY2VhYmxlIikpCiAgICAgewpAQCAtMTgyMCwxNSArMjk2NiwxNSBA
QCBJZGxJbnRlcmZhY2UucHJvdG90eXBlLmRvX2ludGVyZmFjZV9hdHRyaWJ1dGVfYXNzZXJ0cyA9
IGZ1bmN0aW9uKG9iaiwgbWVtYmVyLCBhXwogICAgICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBk
ZXNjLnNldCwgImZ1bmN0aW9uIiwgInNldHRlciBtdXN0IGJlIGZ1bmN0aW9uIGZvciBQdXRGb3J3
YXJkcywgUmVwbGFjZWFibGUsIG9yIG5vbi1yZWFkb25seSBhdHRyaWJ1dGVzIik7CiAKICAgICAg
ICAgLy8gIklmIHRoZSBhdHRyaWJ1dGUgaXMgYSByZWd1bGFyIGF0dHJpYnV0ZSwgdGhlbjoiCi0g
ICAgICAgIGlmICghbWVtYmVyWyJzdGF0aWMiXSkgeworICAgICAgICBpZiAobWVtYmVyLnNwZWNp
YWwgIT09ICJzdGF0aWMiKSB7CiAgICAgICAgICAgICAvLyAiSWYgL3ZhbGlkVGhpcy8gaXMgZmFs
c2UgYW5kIHRoZSBhdHRyaWJ1dGUgd2FzIG5vdCBzcGVjaWZpZWQKLSAgICAgICAgICAgIC8vIHdp
dGggdGhlIFtMZW5pZW50VGhpc10gZXh0ZW5kZWQgYXR0cmlidXRlLCB0aGVuIHRocm93IGEKKyAg
ICAgICAgICAgIC8vIHdpdGggdGhlIFtMZWdhY3lMZW5pZW50VGhpc10gZXh0ZW5kZWQgYXR0cmli
dXRlLCB0aGVuIHRocm93IGEKICAgICAgICAgICAgIC8vIFR5cGVFcnJvci4iCiAgICAgICAgICAg
ICAvLyAiSWYgdGhlIGF0dHJpYnV0ZSBpcyBkZWNsYXJlZCB3aXRoIGEgW1JlcGxhY2VhYmxlXSBl
eHRlbmRlZAogICAgICAgICAgICAgLy8gYXR0cmlidXRlLCB0aGVuOiAuLi4iCiAgICAgICAgICAg
ICAvLyAiSWYgdmFsaWRUaGlzIGlzIGZhbHNlLCB0aGVuIHJldHVybi4iCi0gICAgICAgICAgICBp
ZiAoIW1lbWJlci5oYXNfZXh0ZW5kZWRfYXR0cmlidXRlKCJMZW5pZW50VGhpcyIpKSB7Ci0gICAg
ICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgaWYgKCFtZW1iZXIuaGFzX2V4dGVuZGVkX2F0dHJpYnV0ZSgiTGVnYWN5TGVu
aWVudFRoaXMiKSkgeworICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3NfanMoZ2xvYmFsT2Yo
ZGVzYy5zZXQpLlR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgIGRl
c2Muc2V0LmNhbGwoe30pOwogICAgICAgICAgICAgICAgIH0uYmluZCh0aGlzKSwgImNhbGxpbmcg
c2V0dGVyIG9uIHdyb25nIG9iamVjdCB0eXBlIG11c3QgdGhyb3cgVHlwZUVycm9yIik7CiAgICAg
ICAgICAgICB9IGVsc2UgewpAQCAtMTg0MCwyMiArMjk4NiwyNSBAQCBJZGxJbnRlcmZhY2UucHJv
dG90eXBlLmRvX2ludGVyZmFjZV9hdHRyaWJ1dGVfYXNzZXJ0cyA9IGZ1bmN0aW9uKG9iaiwgbWVt
YmVyLCBhXwogICAgICAgICAvLyAiVGhlIHZhbHVlIG9mIHRoZSBGdW5jdGlvbiBvYmplY3TigJlz
IOKAnGxlbmd0aOKAnSBwcm9wZXJ0eSBpcyB0aGUgTnVtYmVyCiAgICAgICAgIC8vIHZhbHVlIDEu
IgogICAgICAgICBhc3NlcnRfZXF1YWxzKGRlc2Muc2V0Lmxlbmd0aCwgMSwgInNldHRlciBsZW5n
dGggbXVzdCBiZSAxIik7CisKKyAgICAgICAgLy8gIkxldCBuYW1lIGJlIHRoZSBzdHJpbmcgInNl
dCAiIHByZXBlbmRlZCB0byBpZC4iCisgICAgICAgIC8vICJQZXJmb3JtICEgU2V0RnVuY3Rpb25O
YW1lKEYsIG5hbWUpLiIKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhkZXNjLnNldC5uYW1lLCAic2V0
ICIgKyBtZW1iZXIubmFtZSwKKyAgICAgICAgICAgICJUaGUgYXR0cmlidXRlIHNldHRlciBtdXN0
IGhhdmUgdGhlIG5hbWUgJ3NldCAiICsgbWVtYmVyLm5hbWUgKyAiJyIpOwogICAgIH0KIAogICAg
IFByb21pc2UuYWxsKHBlbmRpbmdQcm9taXNlcykudGhlbihhX3Rlc3QuZG9uZS5iaW5kKGFfdGVz
dCkpOwogfQotLy9AfQogCiAvLy8gSWRsSW50ZXJmYWNlTWVtYmVyIC8vLwogZnVuY3Rpb24gSWRs
SW50ZXJmYWNlTWVtYmVyKG9iaikKLS8vQHsKIHsKICAgICAvKioKICAgICAgKiBvYmogaXMgYW4g
b2JqZWN0IHByb2R1Y2VkIGJ5IHRoZSBXZWJJRExQYXJzZXIuanMgImlmTWVtYmVyIiBwcm9kdWN0
aW9uLgogICAgICAqIFdlIGp1c3QgZm9yd2FyZCBhbGwgcHJvcGVydGllcyB0byB0aGlzIG9iamVj
dCB3aXRob3V0IG1vZGlmaWNhdGlvbiwKICAgICAgKiBleGNlcHQgZm9yIHNwZWNpYWwgZXh0QXR0
cnMgaGFuZGxpbmcuCiAgICAgICovCi0gICAgZm9yICh2YXIgayBpbiBvYmopCisgICAgZm9yICh2
YXIgayBpbiBvYmoudG9KU09OKCkpCiAgICAgewogICAgICAgICB0aGlzW2tdID0gb2JqW2tdOwog
ICAgIH0KQEAgLTE4NjQsMTUgKzMwMTMsNTIgQEAgZnVuY3Rpb24gSWRsSW50ZXJmYWNlTWVtYmVy
KG9iaikKICAgICAgICAgdGhpcy5leHRBdHRycyA9IFtdOwogICAgIH0KIAotICAgIHRoaXMuaXNV
bmZvcmdlYWJsZSA9IHRoaXMuaGFzX2V4dGVuZGVkX2F0dHJpYnV0ZSgiVW5mb3JnZWFibGUiKTsK
KyAgICB0aGlzLmlzVW5mb3JnZWFibGUgPSB0aGlzLmhhc19leHRlbmRlZF9hdHRyaWJ1dGUoIkxl
Z2FjeVVuZm9yZ2VhYmxlIik7CisgICAgdGhpcy5pc1Vuc2NvcGFibGUgPSB0aGlzLmhhc19leHRl
bmRlZF9hdHRyaWJ1dGUoIlVuc2NvcGFibGUiKTsKIH0KIAotLy9AfQogSWRsSW50ZXJmYWNlTWVt
YmVyLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoSWRsT2JqZWN0LnByb3RvdHlwZSk7CiAKK0lk
bEludGVyZmFjZU1lbWJlci5wcm90b3R5cGUudG9KU09OID0gZnVuY3Rpb24oKSB7CisgICAgcmV0
dXJuIHRoaXM7Cit9OworCitJZGxJbnRlcmZhY2VNZW1iZXIucHJvdG90eXBlLmlzX3RvX2pzb25f
cmVndWxhcl9vcGVyYXRpb24gPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gdGhpcy50eXBlID09
ICJvcGVyYXRpb24iICYmIHRoaXMuc3BlY2lhbCAhPT0gInN0YXRpYyIgJiYgdGhpcy5uYW1lID09
ICJ0b0pTT04iOworfTsKKworSWRsSW50ZXJmYWNlTWVtYmVyLnByb3RvdHlwZS50b1N0cmluZyA9
IGZ1bmN0aW9uKCkgeworICAgIGZ1bmN0aW9uIGZvcm1hdFR5cGUodHlwZSkgeworICAgICAgICB2
YXIgcmVzdWx0OworICAgICAgICBpZiAodHlwZS5nZW5lcmljKSB7CisgICAgICAgICAgICByZXN1
bHQgPSB0eXBlLmdlbmVyaWMgKyAiPCIgKyB0eXBlLmlkbFR5cGUubWFwKGZvcm1hdFR5cGUpLmpv
aW4oIiwgIikgKyAiPiI7CisgICAgICAgIH0gZWxzZSBpZiAodHlwZS51bmlvbikgeworICAgICAg
ICAgICAgcmVzdWx0ID0gIigiICsgdHlwZS5zdWJ0eXBlLm1hcChmb3JtYXRUeXBlKS5qb2luKCIg
b3IgIikgKyAiKSI7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXN1bHQgPSB0eXBl
LmlkbFR5cGU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHR5cGUubnVsbGFibGUpIHsKKyAgICAg
ICAgICAgIHJlc3VsdCArPSAiPyIKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgIH0KKworICAgIGlmICh0aGlzLnR5cGUgPT09ICJvcGVyYXRpb24iKSB7CisgICAgICAgIHZh
ciBhcmdzID0gdGhpcy5hcmd1bWVudHMubWFwKGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgIHJl
dHVybiBbCisgICAgICAgICAgICAgICAgbS5vcHRpb25hbCA/ICJvcHRpb25hbCAiIDogIiIsCisg
ICAgICAgICAgICAgICAgZm9ybWF0VHlwZShtLmlkbFR5cGUpLAorICAgICAgICAgICAgICAgIG0u
dmFyaWFkaWMgPyAiLi4uIiA6ICIiLAorICAgICAgICAgICAgXS5qb2luKCIiKTsKKyAgICAgICAg
fSkuam9pbigiLCAiKTsKKyAgICAgICAgcmV0dXJuIHRoaXMubmFtZSArICIoIiArIGFyZ3MgKyAi
KSI7CisgICAgfQorCisgICAgcmV0dXJuIHRoaXMubmFtZTsKK30KKwogLy8vIEludGVybmFsIGhl
bHBlciBmdW5jdGlvbnMgLy8vCiBmdW5jdGlvbiBjcmVhdGVfc3VpdGFibGVfb2JqZWN0KHR5cGUp
Ci0vL0B7CiB7CiAgICAgLyoqCiAgICAgICogdHlwZSBpcyBhbiBvYmplY3QgcHJvZHVjZWQgYnkg
dGhlIFdlYklETFBhcnNlci5qcyAidHlwZSIgcHJvZHVjdGlvbi4gIFdlCkBAIC0xOTA4LDEyICsz
MDk0LDEwIEBAIGZ1bmN0aW9uIGNyZWF0ZV9zdWl0YWJsZV9vYmplY3QodHlwZSkKICAgICB9CiAg
ICAgcmV0dXJuIG51bGw7CiB9Ci0vL0B9CiAKIC8vLyBJZGxFbnVtIC8vLwogLy8gVXNlZCBmb3Ig
SWRsQXJyYXkucHJvdG90eXBlLmFzc2VydF90eXBlX2lzCiBmdW5jdGlvbiBJZGxFbnVtKG9iaikK
LS8vQHsKIHsKICAgICAvKioKICAgICAgKiBvYmogaXMgYW4gb2JqZWN0IHByb2R1Y2VkIGJ5IHRo
ZSBXZWJJRExQYXJzZXIuanMgImRpY3Rpb25hcnkiCkBAIC0xOTI3LDE0ICszMTExLDMwIEBAIGZ1
bmN0aW9uIElkbEVudW0ob2JqKQogICAgIHRoaXMudmFsdWVzID0gb2JqLnZhbHVlczsKIAogfQot
Ly9AfQogCiBJZGxFbnVtLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoSWRsT2JqZWN0LnByb3Rv
dHlwZSk7CiAKKy8vLyBJZGxDYWxsYmFjayAvLy8KKy8vIFVzZWQgZm9yIElkbEFycmF5LnByb3Rv
dHlwZS5hc3NlcnRfdHlwZV9pcworZnVuY3Rpb24gSWRsQ2FsbGJhY2sob2JqKQoreworICAgIC8q
KgorICAgICAqIG9iaiBpcyBhbiBvYmplY3QgcHJvZHVjZWQgYnkgdGhlIFdlYklETFBhcnNlci5q
cyAiY2FsbGJhY2siCisgICAgICogcHJvZHVjdGlvbi4KKyAgICAgKi8KKworICAgIC8qKiBTZWxm
LWV4cGxhbmF0b3J5LiAqLworICAgIHRoaXMubmFtZSA9IG9iai5uYW1lOworCisgICAgLyoqIEFy
Z3VtZW50cyBmb3IgdGhlIGNhbGxiYWNrLiAqLworICAgIHRoaXMuYXJndW1lbnRzID0gb2JqLmFy
Z3VtZW50czsKK30KKworSWRsQ2FsbGJhY2sucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShJZGxP
YmplY3QucHJvdG90eXBlKTsKKwogLy8vIElkbFR5cGVkZWYgLy8vCiAvLyBVc2VkIGZvciBJZGxB
cnJheS5wcm90b3R5cGUuYXNzZXJ0X3R5cGVfaXMKIGZ1bmN0aW9uIElkbFR5cGVkZWYob2JqKQot
Ly9AewogewogICAgIC8qKgogICAgICAqIG9iaiBpcyBhbiBvYmplY3QgcHJvZHVjZWQgYnkgdGhl
IFdlYklETFBhcnNlci5qcyAidHlwZWRlZiIKQEAgLTE5NDQsMTMgKzMxNDQsMjY0IEBAIGZ1bmN0
aW9uIElkbFR5cGVkZWYob2JqKQogICAgIC8qKiBTZWxmLWV4cGxhbmF0b3J5LiAqLwogICAgIHRo
aXMubmFtZSA9IG9iai5uYW1lOwogCi0gICAgLyoqIEFuIGFycmF5IG9mIHZhbHVlcyBwcm9kdWNl
ZCBieSB0aGUgInR5cGVkZWYiIHByb2R1Y3Rpb24uICovCi0gICAgdGhpcy52YWx1ZXMgPSBvYmou
dmFsdWVzOworICAgIC8qKiBUaGUgaWRsVHlwZSB0aGF0IHdlIGFyZSBzdXBwb3NlZCB0byBiZSB0
eXBlZGVmZmluZyB0by4gKi8KKyAgICB0aGlzLmlkbFR5cGUgPSBvYmouaWRsVHlwZTsKIAogfQot
Ly9AfQogCiBJZGxUeXBlZGVmLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoSWRsT2JqZWN0LnBy
b3RvdHlwZSk7CiAKKy8vLyBJZGxOYW1lc3BhY2UgLy8vCitmdW5jdGlvbiBJZGxOYW1lc3BhY2Uo
b2JqKQoreworICAgIHRoaXMubmFtZSA9IG9iai5uYW1lOworICAgIHRoaXMuZXh0QXR0cnMgPSBv
YmouZXh0QXR0cnM7CisgICAgdGhpcy51bnRlc3RlZCA9IG9iai51bnRlc3RlZDsKKyAgICAvKiog
QSBiYWNrLXJlZmVyZW5jZSB0byBvdXIgSWRsQXJyYXkuICovCisgICAgdGhpcy5hcnJheSA9IG9i
ai5hcnJheTsKKworICAgIC8qKiBBbiBhcnJheSBvZiBJZGxJbnRlcmZhY2VNZW1iZXJzLiAqLwor
ICAgIHRoaXMubWVtYmVycyA9IG9iai5tZW1iZXJzLm1hcChtID0+IG5ldyBJZGxJbnRlcmZhY2VN
ZW1iZXIobSkpOworfQorCitJZGxOYW1lc3BhY2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShJ
ZGxPYmplY3QucHJvdG90eXBlKTsKKworSWRsTmFtZXNwYWNlLnByb3RvdHlwZS5kb19tZW1iZXJf
b3BlcmF0aW9uX2Fzc2VydHMgPSBmdW5jdGlvbiAobWVtYmVySG9sZGVyT2JqZWN0LCBtZW1iZXIs
IGFfdGVzdCkKK3sKKyAgICB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IobWVtYmVySG9sZGVyT2JqZWN0LCBtZW1iZXIubmFtZSk7CisKKyAgICBhc3NlcnRfZmFsc2Uo
ImdldCIgaW4gZGVzYywgInByb3BlcnR5IHNob3VsZCBub3QgaGF2ZSBhIGdldHRlciIpOworICAg
IGFzc2VydF9mYWxzZSgic2V0IiBpbiBkZXNjLCAicHJvcGVydHkgc2hvdWxkIG5vdCBoYXZlIGEg
c2V0dGVyIik7CisgICAgYXNzZXJ0X2VxdWFscygKKyAgICAgICAgZGVzYy53cml0YWJsZSwKKyAg
ICAgICAgIW1lbWJlci5pc1VuZm9yZ2VhYmxlLAorICAgICAgICAicHJvcGVydHkgc2hvdWxkIGJl
IHdyaXRhYmxlIGlmIGFuZCBvbmx5IGlmIG5vdCB1bmZvcmdlYWJsZSIpOworICAgIGFzc2VydF90
cnVlKGRlc2MuZW51bWVyYWJsZSwgInByb3BlcnR5IHNob3VsZCBiZSBlbnVtZXJhYmxlIik7Cisg
ICAgYXNzZXJ0X2VxdWFscygKKyAgICAgICAgZGVzYy5jb25maWd1cmFibGUsCisgICAgICAgICFt
ZW1iZXIuaXNVbmZvcmdlYWJsZSwKKyAgICAgICAgInByb3BlcnR5IHNob3VsZCBiZSBjb25maWd1
cmFibGUgaWYgYW5kIG9ubHkgaWYgbm90IHVuZm9yZ2VhYmxlIik7CisKKyAgICBhc3NlcnRfZXF1
YWxzKAorICAgICAgICB0eXBlb2YgbWVtYmVySG9sZGVyT2JqZWN0W21lbWJlci5uYW1lXSwKKyAg
ICAgICAgImZ1bmN0aW9uIiwKKyAgICAgICAgICJwcm9wZXJ0eSBtdXN0IGJlIGEgZnVuY3Rpb24i
KTsKKworICAgIGFzc2VydF9lcXVhbHMoCisgICAgICAgIG1lbWJlckhvbGRlck9iamVjdFttZW1i
ZXIubmFtZV0ubGVuZ3RoLAorICAgICAgICBtaW5PdmVybG9hZExlbmd0aCh0aGlzLm1lbWJlcnMu
ZmlsdGVyKGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgIHJldHVybiBtLnR5cGUgPT0gIm9wZXJh
dGlvbiIgJiYgbS5uYW1lID09IG1lbWJlci5uYW1lOworICAgICAgICB9KSksCisgICAgICAgICJv
cGVyYXRpb24gaGFzIHdyb25nIC5sZW5ndGgiKTsKKyAgICBhX3Rlc3QuZG9uZSgpOworfQorCitJ
ZGxOYW1lc3BhY2UucHJvdG90eXBlLnRlc3RfbWVtYmVyX29wZXJhdGlvbiA9IGZ1bmN0aW9uKG1l
bWJlcikKK3sKKyAgICBpZiAoIXNob3VsZFJ1blN1YlRlc3QodGhpcy5uYW1lKSkgeworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIHZhciBhX3Rlc3QgPSBzdWJzZXRUZXN0QnlLZXkoCisgICAg
ICAgIHRoaXMubmFtZSwKKyAgICAgICAgYXN5bmNfdGVzdCwKKyAgICAgICAgdGhpcy5uYW1lICsg
JyBuYW1lc3BhY2U6IG9wZXJhdGlvbiAnICsgbWVtYmVyKTsKKyAgICBhX3Rlc3Quc3RlcChmdW5j
dGlvbigpIHsKKyAgICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0eSgKKyAgICAgICAgICAgIHNlbGZb
dGhpcy5uYW1lXSwKKyAgICAgICAgICAgIG1lbWJlci5uYW1lLAorICAgICAgICAgICAgJ25hbWVz
cGFjZSBvYmplY3QgbWlzc2luZyBvcGVyYXRpb24gJyArIGZvcm1hdF92YWx1ZShtZW1iZXIubmFt
ZSkpOworCisgICAgICAgIHRoaXMuZG9fbWVtYmVyX29wZXJhdGlvbl9hc3NlcnRzKHNlbGZbdGhp
cy5uYW1lXSwgbWVtYmVyLCBhX3Rlc3QpOworICAgIH0uYmluZCh0aGlzKSk7Cit9OworCitJZGxO
YW1lc3BhY2UucHJvdG90eXBlLnRlc3RfbWVtYmVyX2F0dHJpYnV0ZSA9IGZ1bmN0aW9uIChtZW1i
ZXIpCit7CisgICAgaWYgKCFzaG91bGRSdW5TdWJUZXN0KHRoaXMubmFtZSkpIHsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICB2YXIgYV90ZXN0ID0gc3Vic2V0VGVzdEJ5S2V5KAorICAgICAg
ICB0aGlzLm5hbWUsCisgICAgICAgIGFzeW5jX3Rlc3QsCisgICAgICAgIHRoaXMubmFtZSArICcg
bmFtZXNwYWNlOiBhdHRyaWJ1dGUgJyArIG1lbWJlci5uYW1lKTsKKyAgICBhX3Rlc3Quc3RlcChm
dW5jdGlvbigpCisgICAgeworICAgICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KAorICAgICAgICAg
ICAgc2VsZlt0aGlzLm5hbWVdLAorICAgICAgICAgICAgbWVtYmVyLm5hbWUsCisgICAgICAgICAg
ICB0aGlzLm5hbWUgKyAnIGRvZXMgbm90IGhhdmUgcHJvcGVydHkgJyArIGZvcm1hdF92YWx1ZSht
ZW1iZXIubmFtZSkpOworCisgICAgICAgIHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihzZWxmW3RoaXMubmFtZV0sIG1lbWJlci5uYW1lKTsKKyAgICAgICAgYXNzZXJ0
X2VxdWFscyhkZXNjLnNldCwgdW5kZWZpbmVkLCAic2V0dGVyIG11c3QgYmUgdW5kZWZpbmVkIGZv
ciBuYW1lc3BhY2UgbWVtYmVycyIpOworICAgICAgICBhX3Rlc3QuZG9uZSgpOworICAgIH0uYmlu
ZCh0aGlzKSk7Cit9OworCitJZGxOYW1lc3BhY2UucHJvdG90eXBlLnRlc3Rfc2VsZiA9IGZ1bmN0
aW9uICgpCit7CisgICAgLyoqCisgICAgICogVE9ETyhsdWtlYmplcnJpbmcpOiBBc3NlcnQ6Cisg
ICAgICogLSAiTm90ZSB0aGF0IHVubGlrZSBpbnRlcmZhY2VzIG9yIGRpY3Rpb25hcmllcywgbmFt
ZXNwYWNlcyBkbyBub3QgY3JlYXRlIHR5cGVzLiIKKyAgICAgKi8KKworICAgIHN1YnNldFRlc3RC
eUtleSh0aGlzLm5hbWUsIHRlc3QsICgpID0+IHsKKyAgICAgICAgYXNzZXJ0X3RydWUodGhpcy5l
eHRBdHRycy5ldmVyeShvID0+IG8ubmFtZSA9PT0gIkV4cG9zZWQiIHx8IG8ubmFtZSA9PT0gIlNl
Y3VyZUNvbnRleHQiKSwKKyAgICAgICAgICAgICJPbmx5IHRoZSBbRXhwb3NlZF0gYW5kIFtTZWN1
cmVDb250ZXh0XSBleHRlbmRlZCBhdHRyaWJ1dGVzIGFyZSBhcHBsaWNhYmxlIHRvIG5hbWVzcGFj
ZXMiKTsKKyAgICAgICAgYXNzZXJ0X3RydWUodGhpcy5oYXNfZXh0ZW5kZWRfYXR0cmlidXRlKCJF
eHBvc2VkIiksCisgICAgICAgICAgICAiTmFtZXNwYWNlcyBtdXN0IGJlIGFubm90YXRlZCB3aXRo
IHRoZSBbRXhwb3NlZF0gZXh0ZW5kZWQgYXR0cmlidXRlIik7CisgICAgfSwgYCR7dGhpcy5uYW1l
fSBuYW1lc3BhY2U6IGV4dGVuZGVkIGF0dHJpYnV0ZXNgKTsKKworICAgIGNvbnN0IG5hbWVzcGFj
ZU9iamVjdCA9IHNlbGZbdGhpcy5uYW1lXTsKKworICAgIHN1YnNldFRlc3RCeUtleSh0aGlzLm5h
bWUsIHRlc3QsICgpID0+IHsKKyAgICAgICAgY29uc3QgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3Ioc2VsZiwgdGhpcy5uYW1lKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhk
ZXNjLnZhbHVlLCBuYW1lc3BhY2VPYmplY3QsIGB3cm9uZyB2YWx1ZSBmb3IgJHt0aGlzLm5hbWV9
IG5hbWVzcGFjZSBvYmplY3RgKTsKKyAgICAgICAgYXNzZXJ0X3RydWUoZGVzYy53cml0YWJsZSwg
Im5hbWVzcGFjZSBvYmplY3Qgc2hvdWxkIGJlIHdyaXRhYmxlIik7CisgICAgICAgIGFzc2VydF9m
YWxzZShkZXNjLmVudW1lcmFibGUsICJuYW1lc3BhY2Ugb2JqZWN0IHNob3VsZCBub3QgYmUgZW51
bWVyYWJsZSIpOworICAgICAgICBhc3NlcnRfdHJ1ZShkZXNjLmNvbmZpZ3VyYWJsZSwgIm5hbWVz
cGFjZSBvYmplY3Qgc2hvdWxkIGJlIGNvbmZpZ3VyYWJsZSIpOworICAgICAgICBhc3NlcnRfZmFs
c2UoImdldCIgaW4gZGVzYywgIm5hbWVzcGFjZSBvYmplY3Qgc2hvdWxkIG5vdCBoYXZlIGEgZ2V0
dGVyIik7CisgICAgICAgIGFzc2VydF9mYWxzZSgic2V0IiBpbiBkZXNjLCAibmFtZXNwYWNlIG9i
amVjdCBzaG91bGQgbm90IGhhdmUgYSBzZXR0ZXIiKTsKKyAgICB9LCBgJHt0aGlzLm5hbWV9IG5h
bWVzcGFjZTogcHJvcGVydHkgZGVzY3JpcHRvcmApOworCisgICAgc3Vic2V0VGVzdEJ5S2V5KHRo
aXMubmFtZSwgdGVzdCwgKCkgPT4geworICAgICAgICBhc3NlcnRfdHJ1ZShPYmplY3QuaXNFeHRl
bnNpYmxlKG5hbWVzcGFjZU9iamVjdCkpOworICAgIH0sIGAke3RoaXMubmFtZX0gbmFtZXNwYWNl
OiBbW0V4dGVuc2libGVdXSBpcyB0cnVlYCk7CisKKyAgICBzdWJzZXRUZXN0QnlLZXkodGhpcy5u
YW1lLCB0ZXN0LCAoKSA9PiB7CisgICAgICAgIGFzc2VydF90cnVlKG5hbWVzcGFjZU9iamVjdCBp
bnN0YW5jZW9mIE9iamVjdCk7CisKKyAgICAgICAgaWYgKHRoaXMubmFtZSA9PT0gImNvbnNvbGUi
KSB7CisgICAgICAgICAgICAvLyBodHRwczovL2NvbnNvbGUuc3BlYy53aGF0d2cub3JnLyNjb25z
b2xlLW5hbWVzcGFjZQorICAgICAgICAgICAgY29uc3QgbmFtZXNwYWNlUHJvdG90eXBlID0gT2Jq
ZWN0LmdldFByb3RvdHlwZU9mKG5hbWVzcGFjZU9iamVjdCk7CisgICAgICAgICAgICBhc3NlcnRf
ZXF1YWxzKFJlZmxlY3Qub3duS2V5cyhuYW1lc3BhY2VQcm90b3R5cGUpLmxlbmd0aCwgMCk7Cisg
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKE9iamVjdC5nZXRQcm90b3R5cGVPZihuYW1lc3BhY2VQ
cm90b3R5cGUpLCBPYmplY3QucHJvdG90eXBlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIGFzc2VydF9lcXVhbHMoT2JqZWN0LmdldFByb3RvdHlwZU9mKG5hbWVzcGFjZU9iamVjdCks
IE9iamVjdC5wcm90b3R5cGUpOworICAgICAgICB9CisgICAgfSwgYCR7dGhpcy5uYW1lfSBuYW1l
c3BhY2U6IFtbUHJvdG90eXBlXV0gaXMgT2JqZWN0LnByb3RvdHlwZWApOworCisgICAgc3Vic2V0
VGVzdEJ5S2V5KHRoaXMubmFtZSwgdGVzdCwgKCkgPT4geworICAgICAgICBhc3NlcnRfZXF1YWxz
KHR5cGVvZiBuYW1lc3BhY2VPYmplY3QsICJvYmplY3QiKTsKKyAgICB9LCBgJHt0aGlzLm5hbWV9
IG5hbWVzcGFjZTogdHlwZW9mIGlzICJvYmplY3QiYCk7CisKKyAgICBzdWJzZXRUZXN0QnlLZXko
dGhpcy5uYW1lLCB0ZXN0LCAoKSA9PiB7CisgICAgICAgIGFzc2VydF9lcXVhbHMoCisgICAgICAg
ICAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG5hbWVzcGFjZU9iamVjdCwgImxl
bmd0aCIpLAorICAgICAgICAgICAgdW5kZWZpbmVkLAorICAgICAgICAgICAgImxlbmd0aCBwcm9w
ZXJ0eSBtdXN0IGJlIHVuZGVmaW5lZCIKKyAgICAgICAgKTsKKyAgICB9LCBgJHt0aGlzLm5hbWV9
IG5hbWVzcGFjZTogaGFzIG5vIGxlbmd0aCBwcm9wZXJ0eWApOworCisgICAgc3Vic2V0VGVzdEJ5
S2V5KHRoaXMubmFtZSwgdGVzdCwgKCkgPT4geworICAgICAgICBhc3NlcnRfZXF1YWxzKAorICAg
ICAgICAgICAgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuYW1lc3BhY2VPYmplY3Qs
ICJuYW1lIiksCisgICAgICAgICAgICB1bmRlZmluZWQsCisgICAgICAgICAgICAibmFtZSBwcm9w
ZXJ0eSBtdXN0IGJlIHVuZGVmaW5lZCIKKyAgICAgICAgKTsKKyAgICB9LCBgJHt0aGlzLm5hbWV9
IG5hbWVzcGFjZTogaGFzIG5vIG5hbWUgcHJvcGVydHlgKTsKK307CisKK0lkbE5hbWVzcGFjZS5w
cm90b3R5cGUudGVzdCA9IGZ1bmN0aW9uICgpCit7CisgICAgaWYgKCF0aGlzLnVudGVzdGVkKSB7
CisgICAgICAgIHRoaXMudGVzdF9zZWxmKCk7CisgICAgfQorCisgICAgZm9yIChjb25zdCB2IG9m
IE9iamVjdC52YWx1ZXModGhpcy5tZW1iZXJzKSkgeworICAgICAgICBzd2l0Y2ggKHYudHlwZSkg
eworCisgICAgICAgIGNhc2UgJ29wZXJhdGlvbic6CisgICAgICAgICAgICB0aGlzLnRlc3RfbWVt
YmVyX29wZXJhdGlvbih2KTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgJ2F0
dHJpYnV0ZSc6CisgICAgICAgICAgICB0aGlzLnRlc3RfbWVtYmVyX2F0dHJpYnV0ZSh2KTsKKyAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICB0aHJvdyAn
SW52YWxpZCBuYW1lc3BhY2UgbWVtYmVyICcgKyB2Lm5hbWUgKyAnOiAnICsgdi50eXBlICsgJyBu
b3Qgc3VwcG9ydGVkJzsKKyAgICAgICAgfQorICAgIH07Cit9OworCiB9KCkpOworCisvKioKKyAq
IGlkbF90ZXN0IGlzIGEgcHJvbWlzZV90ZXN0IHdyYXBwZXIgdGhhdCBoYW5kbGVzIHRoZSBmZXRj
aGluZyBvZiB0aGUgSURMLAorICogYXZvaWRpbmcgcmVwZXRpdGl2ZSBib2lsZXJwbGF0ZS4KKyAq
CisgKiBAcGFyYW0ge1N0cmluZ3xTdHJpbmdbXX0gc3JjcyBTcGVjIG5hbWUocykgZm9yIHNvdXJj
ZSBpZGwgZmlsZXMgKGZldGNoZWQgZnJvbQorICogICAgICAvaW50ZXJmYWNlcy97bmFtZX0uaWRs
KS4KKyAqIEBwYXJhbSB7U3RyaW5nfFN0cmluZ1tdfSBkZXBzIFNwZWMgbmFtZShzKSBmb3IgZGVw
ZW5kZW5jeSBpZGwgZmlsZXMgKGZldGNoZWQKKyAqICAgICAgZnJvbSAvaW50ZXJmYWNlcy97bmFt
ZX0uaWRsKS4gT3JkZXIgaXMgaW1wb3J0YW50IC0gZGVwZW5kZW5jaWVzIGZyb20KKyAqICAgICAg
ZWFjaCBzb3VyY2Ugd2lsbCBvbmx5IGJlIGluY2x1ZGVkIGlmIHRoZXkncmUgYWxyZWFkeSBrbm93
IHRvIGJlIGEKKyAqICAgICAgZGVwZW5kZW5jeSAoaS5lLiBoYXZlIGFscmVhZHkgYmVlbiBzZWVu
KS4KKyAqIEBwYXJhbSB7RnVuY3Rpb259IHNldHVwX2Z1bmMgRnVuY3Rpb24gZm9yIGV4dHJhIHNl
dHVwIG9mIHRoZSBpZGxfYXJyYXksIHN1Y2gKKyAqICAgICAgYXMgYWRkaW5nIG9iamVjdHMuIERv
IG5vdCBjYWxsIGlkbF9hcnJheS50ZXN0KCkgaW4gdGhlIHNldHVwOyBpdCBpcworICogICAgICBj
YWxsZWQgYnkgdGhpcyBmdW5jdGlvbiAoaWRsX3Rlc3QpLgorICovCitmdW5jdGlvbiBpZGxfdGVz
dChzcmNzLCBkZXBzLCBpZGxfc2V0dXBfZnVuYykgeworICAgIHJldHVybiBwcm9taXNlX3Rlc3Qo
ZnVuY3Rpb24gKHQpIHsKKyAgICAgICAgdmFyIGlkbF9hcnJheSA9IG5ldyBJZGxBcnJheSgpOwor
ICAgICAgICB2YXIgc2V0dXBfZXJyb3IgPSBudWxsOworICAgICAgICBjb25zdCB2YWxpZGF0aW9u
SWdub3JlZCA9IFsKKyAgICAgICAgICAgICJjb25zdHJ1Y3Rvci1tZW1iZXIiLAorICAgICAgICAg
ICAgImRpY3QtYXJnLWRlZmF1bHQiLAorICAgICAgICAgICAgInJlcXVpcmUtZXhwb3NlZCIKKyAg
ICAgICAgXTsKKyAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKAorICAgICAgICAgICAgc3Jjcy5j
b25jYXQoZGVwcykubWFwKGZldGNoX3NwZWMpKQorICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24o
cmVzdWx0cykgeworICAgICAgICAgICAgICAgIGNvbnN0IGFzdEFycmF5ID0gcmVzdWx0cy5tYXAo
cmVzdWx0ID0+CisgICAgICAgICAgICAgICAgICAgIFdlYklETDIucGFyc2UocmVzdWx0LmlkbCwg
eyBzb3VyY2VOYW1lOiByZXN1bHQuc3BlYyB9KQorICAgICAgICAgICAgICAgICk7CisgICAgICAg
ICAgICAgICAgdGVzdCgoKSA9PiB7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbGlkYXRp
b25zID0gV2ViSURMMi52YWxpZGF0ZShhc3RBcnJheSkKKyAgICAgICAgICAgICAgICAgICAgICAg
IC5maWx0ZXIodiA9PiAhdmFsaWRhdGlvbklnbm9yZWQuaW5jbHVkZXModi5ydWxlTmFtZSkpOwor
ICAgICAgICAgICAgICAgICAgICBpZiAodmFsaWRhdGlvbnMubGVuZ3RoKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gdmFsaWRhdGlvbnMubWFwKHYgPT4gdi5tZXNz
YWdlKS5qb2luKCJcblxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJy
b3IobWVzc2FnZSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9LCAi
aWRsX3Rlc3QgdmFsaWRhdGlvbiIpOworICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgc3Jjcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBpZGxfYXJyYXkuaW50
ZXJuYWxfYWRkX2lkbHMoYXN0QXJyYXlbaV0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBmb3IgKHZhciBpID0gc3Jjcy5sZW5ndGg7IGkgPCBzcmNzLmxlbmd0aCArIGRlcHMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgaWRsX2FycmF5LmludGVybmFsX2Fk
ZF9kZXBlbmRlbmN5X2lkbHMoYXN0QXJyYXlbaV0pOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0pCisgICAgICAgICAgICAudGhlbihmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoaWRsX3NldHVwX2Z1bmMpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlkbF9z
ZXR1cF9mdW5jKGlkbF9hcnJheSwgdCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fSkKKyAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbihlKSB7IHNldHVwX2Vycm9yID0gZSB8fCAn
SURMIHNldHVwIGZhaWxlZC4nOyB9KQorICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKCkgewor
ICAgICAgICAgICAgICAgIHZhciBlcnJvciA9IHNldHVwX2Vycm9yOworICAgICAgICAgICAgICAg
IHRyeSB7CisgICAgICAgICAgICAgICAgICAgIGlkbF9hcnJheS50ZXN0KCk7IC8vIFRlc3Qgd2hh
dCB3ZSBjYW4uCisgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgICAg
ICAgICAvLyBJZiB0ZXN0aW5nIGZhaWxzIGhhcmQgaGVyZSwgdGhlIG9yaWdpbmFsIHNldHVwIGVy
cm9yCisgICAgICAgICAgICAgICAgICAgIC8vIGlzIG1vcmUgbGlrZWx5IHRvIGJlIHRoZSByZWFs
IGNhdXNlLgorICAgICAgICAgICAgICAgICAgICBlcnJvciA9IGVycm9yIHx8IGU7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChlcnJvcikgeworICAgICAgICAgICAgICAg
ICAgICB0aHJvdyBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9KTsKKyAg
ICB9LCAnaWRsX3Rlc3Qgc2V0dXAnKTsKK30KKworLyoqCisgKiBmZXRjaF9zcGVjIGlzIGEgc2hv
cnRoYW5kIGZvciBhIFByb21pc2UgdGhhdCBmZXRjaGVzIHRoZSBzcGVjJ3MgY29udGVudC4KKyAq
LworZnVuY3Rpb24gZmV0Y2hfc3BlYyhzcGVjKSB7CisgICAgdmFyIHVybCA9ICcvaW50ZXJmYWNl
cy8nICsgc3BlYyArICcuaWRsJzsKKyAgICByZXR1cm4gZmV0Y2godXJsKS50aGVuKGZ1bmN0aW9u
IChyKSB7CisgICAgICAgIGlmICghci5vaykgeworICAgICAgICAgICAgdGhyb3cgbmV3IElkbEhh
cm5lc3NFcnJvcigiRXJyb3IgZmV0Y2hpbmcgIiArIHVybCArICIuIik7CisgICAgICAgIH0KKyAg
ICAgICAgcmV0dXJuIHIudGV4dCgpOworICAgIH0pLnRoZW4oaWRsID0+ICh7IHNwZWMsIGlkbCB9
KSk7Cit9CiAvLyB2aW06IHNldCBleHBhbmR0YWIgc2hpZnR3aWR0aD00IHRhYnN0b3A9NCBmb2xk
bWFya2VyPUB7LEB9IGZvbGRtZXRob2Q9bWFya2VyOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmNzcyBiL0xheW91dFRlc3RzL3Jlc291cmNlcy90ZXN0aGFy
bmVzcy5jc3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM2NTA4NGYzZjgyMTE2Zjg1
ZjBhNWVjYzVhZDc4OGJmOGNkYTQ3MTIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmNzcworKysg
L2Rldi9udWxsCkBAIC0xLDkyICswLDAgQEAKLWh0bWwgewotICAgIGZvbnQtZmFtaWx5OkRlamFW
dSBTYW5zLCBCaXRzdHJlYW0gVmVyYSBTYW5zLCBBcmlhbCwgU2FuczsKLX0KLQotI2xvZyAud2Fy
bmluZywKLSNsb2cgLndhcm5pbmcgYSB7Ci0gIGNvbG9yOiBibGFjazsKLSAgYmFja2dyb3VuZDog
eWVsbG93OwotfQotCi0jbG9nIC5lcnJvciwKLSNsb2cgLmVycm9yIGEgewotICBjb2xvcjogd2hp
dGU7Ci0gIGJhY2tncm91bmQ6IHJlZDsKLX0KLQotI2xvZyBwcmUgewotICBib3JkZXI6IDFweCBz
b2xpZCBibGFjazsKLSAgcGFkZGluZzogMWVtOwotfQotCi1zZWN0aW9uI3N1bW1hcnkgewotICAg
IG1hcmdpbi1ib3R0b206MWVtOwotfQotCi10YWJsZSNyZXN1bHRzIHsKLSAgICBib3JkZXItY29s
bGFwc2U6Y29sbGFwc2U7Ci0gICAgdGFibGUtbGF5b3V0OmZpeGVkOwotICAgIHdpZHRoOjEwMCU7
Ci19Ci0KLXRhYmxlI3Jlc3VsdHMgdGg6Zmlyc3QtY2hpbGQsCi10YWJsZSNyZXN1bHRzIHRkOmZp
cnN0LWNoaWxkIHsKLSAgICB3aWR0aDo0ZW07Ci19Ci0KLXRhYmxlI3Jlc3VsdHMgdGg6bGFzdC1j
aGlsZCwKLXRhYmxlI3Jlc3VsdHMgdGQ6bGFzdC1jaGlsZCB7Ci0gICAgd2lkdGg6NTAlOwotfQot
Ci10YWJsZSNyZXN1bHRzLmFzc2VydGlvbnMgdGg6bGFzdC1jaGlsZCwKLXRhYmxlI3Jlc3VsdHMu
YXNzZXJ0aW9ucyB0ZDpsYXN0LWNoaWxkIHsKLSAgICB3aWR0aDozNSU7Ci19Ci0KLXRhYmxlI3Jl
c3VsdHMgdGggewotICAgIHBhZGRpbmc6MDsKLSAgICBwYWRkaW5nLWJvdHRvbTowLjVlbTsKLSAg
ICBib3JkZXItYm90dG9tOm1lZGl1bSBzb2xpZCBibGFjazsKLX0KLQotdGFibGUjcmVzdWx0cyB0
ZCB7Ci0gICAgcGFkZGluZzoxZW07Ci0gICAgcGFkZGluZy1ib3R0b206MC41ZW07Ci0gICAgYm9y
ZGVyLWJvdHRvbTp0aGluIHNvbGlkIGJsYWNrOwotfQotCi10ci5wYXNzID4gdGQ6Zmlyc3QtY2hp
bGQgewotICAgIGNvbG9yOmdyZWVuOwotfQotCi10ci5mYWlsID4gdGQ6Zmlyc3QtY2hpbGQgewot
ICAgIGNvbG9yOnJlZDsKLX0KLQotdHIudGltZW91dCA+IHRkOmZpcnN0LWNoaWxkIHsKLSAgICBj
b2xvcjpyZWQ7Ci19Ci0KLXRyLm5vdHJ1biA+IHRkOmZpcnN0LWNoaWxkIHsKLSAgICBjb2xvcjpi
bHVlOwotfQotCi0ucGFzcyA+IHRkOmZpcnN0LWNoaWxkLCAuZmFpbCA+IHRkOmZpcnN0LWNoaWxk
LCAudGltZW91dCA+IHRkOmZpcnN0LWNoaWxkLCAubm90cnVuID4gdGQ6Zmlyc3QtY2hpbGQgewot
ICAgIGZvbnQtdmFyaWFudDpzbWFsbC1jYXBzOwotfQotCi10YWJsZSNyZXN1bHRzIHNwYW4gewot
ICAgIGRpc3BsYXk6YmxvY2s7Ci19Ci0KLXRhYmxlI3Jlc3VsdHMgc3Bhbi5leHBlY3RlZCB7Ci0g
ICAgZm9udC1mYW1pbHk6RGVqYVZ1IFNhbnMgTW9ubywgQml0c3RyZWFtIFZlcmEgU2FucyBNb25v
LCBNb25vc3BhY2U7Ci0gICAgd2hpdGUtc3BhY2U6cHJlOwotfQotCi10YWJsZSNyZXN1bHRzIHNw
YW4uYWN0dWFsIHsKLSAgICBmb250LWZhbWlseTpEZWphVnUgU2FucyBNb25vLCBCaXRzdHJlYW0g
VmVyYSBTYW5zIE1vbm8sIE1vbm9zcGFjZTsKLSAgICB3aGl0ZS1zcGFjZTpwcmU7Ci19Ci0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyBiL0xheW91dFRl
c3RzL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcwppbmRleCAxNTU5MTA0MmFhNGNiMGZkZDc1ZmUz
YmY1NmI5YmRmYjYzZmQxNjFkLi5mODViMTlmZDliZDkwYzM0NzZkZWRjYmU1ODI1YjgyZmI0MGRl
ODJjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMKKysr
IGIvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzCkBAIC0xLDIxICsxLDExIEBA
CiAvKmdsb2JhbCBzZWxmKi8KIC8qanNoaW50IGxhdGVkZWY6IG5vZnVuYyovCi0vKgotRGlzdHJp
YnV0ZWQgdW5kZXIgYm90aCB0aGUgVzNDIFRlc3QgU3VpdGUgTGljZW5zZSBbMV0gYW5kIHRoZSBX
M0MKLTMtY2xhdXNlIEJTRCBMaWNlbnNlIFsyXS4gVG8gY29udHJpYnV0ZSB0byBhIFczQyBUZXN0
IFN1aXRlLCBzZWUgdGhlCi1wb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KLQot
WzFdIGh0dHA6Ly93d3cudzMub3JnL0NvbnNvcnRpdW0vTGVnYWwvMjAwOC8wNC10ZXN0c3VpdGUt
bGljZW5zZQotWzJdIGh0dHA6Ly93d3cudzMub3JnL0NvbnNvcnRpdW0vTGVnYWwvMjAwOC8wMy1i
c2QtbGljZW5zZQotWzNdIGh0dHA6Ly93d3cudzMub3JnLzIwMDQvMTAvMjctdGVzdGNhc2VzCi0q
LwogCiAvKiBEb2N1bWVudGF0aW9uOiBodHRwczovL3dlYi1wbGF0Zm9ybS10ZXN0cy5vcmcvd3Jp
dGluZy10ZXN0cy90ZXN0aGFybmVzcy1hcGkuaHRtbAogICogKC4uL2RvY3MvX3dyaXRpbmctdGVz
dHMvdGVzdGhhcm5lc3MtYXBpLm1kKSAqLwogCiAoZnVuY3Rpb24gKGdsb2JhbF9zY29wZSkKIHsK
LSAgICB2YXIgZGVidWcgPSBmYWxzZTsKICAgICAvLyBkZWZhdWx0IHRpbWVvdXQgaXMgMTAgc2Vj
b25kcywgdGVzdCBjYW4gb3ZlcnJpZGUgaWYgbmVlZGVkCiAgICAgdmFyIHNldHRpbmdzID0gewog
ICAgICAgICBvdXRwdXQ6dHJ1ZSwKQEAgLTI0LDcgKzE0LDggQEAgcG9saWNpZXMgYW5kIGNvbnRy
aWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAgICAgICAibG9uZyI6NjAwMDAKICAgICAgICAgfSwK
ICAgICAgICAgdGVzdF90aW1lb3V0Om51bGwsCi0gICAgICAgIG1lc3NhZ2VfZXZlbnRzOiBbInN0
YXJ0IiwgInRlc3Rfc3RhdGUiLCAicmVzdWx0IiwgImNvbXBsZXRpb24iXQorICAgICAgICBtZXNz
YWdlX2V2ZW50czogWyJzdGFydCIsICJ0ZXN0X3N0YXRlIiwgInJlc3VsdCIsICJjb21wbGV0aW9u
Il0sCisgICAgICAgIGRlYnVnOiBmYWxzZSwKICAgICB9OwogCiAgICAgdmFyIHhodG1sX25zID0g
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiOwpAQCAtODcsMTQgKzc4LDE1IEBAIHBvbGlj
aWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdGVzdDogdGVzdC5zdHJ1Y3R1cmVkX2Nsb25lKCl9KTsKICAg
ICAgICAgICAgICAgICAgICAgIH1dLAogICAgICAgICAgICAgY29tcGxldGlvbjogW2FkZF9jb21w
bGV0aW9uX2NhbGxiYWNrLCByZW1vdmVfY29tcGxldGlvbl9jYWxsYmFjaywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICBmdW5jdGlvbiAodGVzdHMsIGhhcm5lc3Nfc3RhdHVzKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKHRlc3RzLCBoYXJuZXNzX3N0YXR1cywgYXNzZXJ0
cykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgY2xvbmVkX3Rlc3RzID0gbWFw
KHRlc3RzLCBmdW5jdGlvbih0ZXN0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdGVzdC5zdHJ1Y3R1cmVkX2Nsb25lKCk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzX29iai5fZGlzcGF0
Y2goImNvbXBsZXRpb25fY2FsbGJhY2siLCBbdGVzdHMsIGhhcm5lc3Nfc3RhdHVzXSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt0eXBlOiAiY29tcGxl
dGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRl
c3RzOiBjbG9uZWRfdGVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RhdHVzOiBoYXJuZXNzX3N0YXR1cy5zdHJ1Y3R1cmVkX2Nsb25lKCl9KTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM6
IGhhcm5lc3Nfc3RhdHVzLnN0cnVjdHVyZWRfY2xvbmUoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnRzOiBhc3NlcnRzLm1hcChhc3NlcnQg
PT4gYXNzZXJ0LnN0cnVjdHVyZWRfY2xvbmUoKSl9KTsKICAgICAgICAgICAgICAgICAgICAgICAg
ICB9XQogICAgICAgICB9CiAKQEAgLTEzMSwxMSArMTIzLDcgQEAgcG9saWNpZXMgYW5kIGNvbnRy
aWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGFzX3NlbGVj
dG9yKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgd1tzZWxlY3Rvcl0uYXBwbHkodW5kZWZpbmVkLCBjYWxsYmFja19h
cmdzKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkZWJ1ZykgewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGhyb3cgZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9IGNhdGNoIChlKSB7fQogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGlmIChzdXBwb3J0c19wb3N0X21l
c3NhZ2UodykgJiYgdyAhPT0gc2VsZikgewpAQCAtMTkyLDggKzE4MCw4IEBAIHBvbGljaWVzIGFu
ZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAgICAgICAgdGhpc19vYmoub3V0cHV0X2hh
bmRsZXIuc2hvd19zdGF0dXMoKTsKICAgICAgICAgfSk7CiAKLSAgICAgICAgYWRkX2NvbXBsZXRp
b25fY2FsbGJhY2soZnVuY3Rpb24gKHRlc3RzLCBoYXJuZXNzX3N0YXR1cykgewotICAgICAgICAg
ICAgdGhpc19vYmoub3V0cHV0X2hhbmRsZXIuc2hvd19yZXN1bHRzKHRlc3RzLCBoYXJuZXNzX3N0
YXR1cyk7CisgICAgICAgIGFkZF9jb21wbGV0aW9uX2NhbGxiYWNrKGZ1bmN0aW9uICh0ZXN0cywg
aGFybmVzc19zdGF0dXMsIGFzc2VydHNfcnVuKSB7CisgICAgICAgICAgICB0aGlzX29iai5vdXRw
dXRfaGFuZGxlci5zaG93X3Jlc3VsdHModGVzdHMsIGhhcm5lc3Nfc3RhdHVzLCBhc3NlcnRzX3J1
bik7CiAgICAgICAgIH0pOwogICAgICAgICB0aGlzLnNldHVwX21lc3NhZ2VzKHNldHRpbmdzLm1l
c3NhZ2VfZXZlbnRzKTsKICAgICB9OwpAQCAtMzE0LDE0ICszMDIsMTUgQEAgcG9saWNpZXMgYW5k
IGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAg
ICAgICAgICAgIH0pOwogICAgICAgICBhZGRfY29tcGxldGlvbl9jYWxsYmFjaygKLSAgICAgICAg
ICAgICAgICBmdW5jdGlvbih0ZXN0cywgaGFybmVzc19zdGF0dXMpIHsKKyAgICAgICAgICAgICAg
ICBmdW5jdGlvbih0ZXN0cywgaGFybmVzc19zdGF0dXMsIGFzc2VydHMpIHsKICAgICAgICAgICAg
ICAgICAgICAgdGhpc19vYmouX2Rpc3BhdGNoKHsKICAgICAgICAgICAgICAgICAgICAgICAgIHR5
cGU6ICJjb21wbGV0ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0czogbWFwKHRlc3Rz
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKHRlc3QpIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRlc3Quc3RydWN0dXJlZF9jbG9uZSgpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLAotICAgICAgICAgICAgICAgICAgICAgICAg
c3RhdHVzOiBoYXJuZXNzX3N0YXR1cy5zdHJ1Y3R1cmVkX2Nsb25lKCkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHN0YXR1czogaGFybmVzc19zdGF0dXMuc3RydWN0dXJlZF9jbG9uZSgpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0czogYXNzZXJ0cy5tYXAoYXNzZXJ0ID0+IGFzc2Vy
dC5zdHJ1Y3R1cmVkX2Nsb25lKCkpLAogICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAg
ICAgICAgICB9KTsKICAgICB9OwpAQCAtMzk4LDIwICszODcsNyBAQCBwb2xpY2llcyBhbmQgY29u
dHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgc2VsZi5hZGRFdmVudExpc3RlbmVyKCJtZXNz
YWdlIiwKICAgICAgICAgICAgICAgICBmdW5jdGlvbihldmVudCkgewogICAgICAgICAgICAgICAg
ICAgICBpZiAoZXZlbnQuZGF0YSAmJiBldmVudC5kYXRhLnR5cGUgJiYgZXZlbnQuZGF0YS50eXBl
ID09PSAiY29ubmVjdCIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldmVudC5wb3J0
cyAmJiBldmVudC5wb3J0c1swXSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElm
IGEgTWVzc2FnZUNoYW5uZWwgd2FzIHBhc3NlZCwgdGhlbiB1c2UgaXQgdG8KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBzZW5kIHJlc3VsdHMgYmFjayB0byB0aGUgbWFpbiB3aW5kb3cu
ICBUaGlzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWxsb3dzIHRoZSB0ZXN0cyB0
byB3b3JrIGV2ZW4gaWYgdGhlIGJyb3dzZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBkb2VzIG5vdCBmdWxseSBzdXBwb3J0IE1lc3NhZ2VFdmVudC5zb3VyY2UgaW4KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBTZXJ2aWNlV29ya2VycyB5ZXQuCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGhpc19vYmouX2FkZF9tZXNzYWdlX3BvcnQoZXZlbnQucG9ydHNbMF0p
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnBvcnRzWzBdLnN0YXJ0KCk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIElmIHRoZXJlIGlzIG5vIE1lc3NhZ2VDaGFubmVsLCB0aGVuIGF0dGVtcHQgdG8KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1c2UgdGhlIE1lc3NhZ2VFdmVudC5zb3VyY2Ug
dG8gc2VuZCByZXN1bHRzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYmFjayB0byB0
aGUgbWFpbiB3aW5kb3cuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpc19vYmouX2Fk
ZF9tZXNzYWdlX3BvcnQoZXZlbnQuc291cmNlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXNfb2JqLl9hZGRfbWVzc2FnZV9wb3J0KGV2ZW50
LnNvdXJjZSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9LCBmYWxz
ZSk7CiAKQEAgLTUxMywxMSArNDg5LDcgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3Jt
cyBbM10uCiAgICAgICAgICAgICByZXR1cm4gbmV3IERlZGljYXRlZFdvcmtlclRlc3RFbnZpcm9u
bWVudCgpOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKCEoJ2xvY2F0aW9uJyBpbiBnbG9iYWxf
c2NvcGUpKSB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IFNoZWxsVGVzdEVudmlyb25tZW50KCk7
Ci0gICAgICAgIH0KLQotICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIHRlc3Qg
ZW52aXJvbm1lbnQiKTsKKyAgICAgICAgcmV0dXJuIG5ldyBTaGVsbFRlc3RFbnZpcm9ubWVudCgp
OwogICAgIH0KIAogICAgIHZhciB0ZXN0X2Vudmlyb25tZW50ID0gY3JlYXRlX3Rlc3RfZW52aXJv
bm1lbnQoKTsKQEAgLTUzMywyMyArNTA1LDY1IEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24g
Zm9ybXMgWzNdLgogICAgICAgICAgICAgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHdv
cmtlcikgPT0gJ1tvYmplY3QgU2VydmljZVdvcmtlcl0nOwogICAgIH0KIAorICAgIHZhciBzZWVu
X2Z1bmNfbmFtZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7CisKKyAgICBmdW5jdGlvbiBnZXRfdGVz
dF9uYW1lKGZ1bmMsIG5hbWUpCisgICAgeworICAgICAgICBpZiAobmFtZSkgeworICAgICAgICAg
ICAgcmV0dXJuIG5hbWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZnVuYykgeworICAgICAg
ICAgICAgdmFyIGZ1bmNfY29kZSA9IGZ1bmMudG9TdHJpbmcoKTsKKworICAgICAgICAgICAgLy8g
VHJ5IGFuZCBtYXRjaCB3aXRoIGJyYWNrZXRzLCBidXQgZmFsbGJhY2sgdG8gbWF0Y2hpbmcgd2l0
aG91dAorICAgICAgICAgICAgdmFyIGFycm93ID0gZnVuY19jb2RlLm1hdGNoKC9eXChcKVxzKj0+
XHMqKD86eyguKil9XHMqfCguKikpJC8pOworCisgICAgICAgICAgICAvLyBDaGVjayBmb3IgSlMg
bGluZSBzZXBhcmF0b3JzCisgICAgICAgICAgICBpZiAoYXJyb3cgIT09IG51bGwgJiYgIS9bXHUw
MDBBXHUwMDBEXHUyMDI4XHUyMDI5XS8udGVzdChmdW5jX2NvZGUpKSB7CisgICAgICAgICAgICAg
ICAgdmFyIHRyaW1tZWQgPSAoYXJyb3dbMV0gIT09IHVuZGVmaW5lZCA/IGFycm93WzFdIDogYXJy
b3dbMl0pLnRyaW0oKTsKKyAgICAgICAgICAgICAgICAvLyBkcm9wIHRyYWlsaW5nIDsgaWYgdGhl
cmUncyBubyBlYXJsaWVyIG9uZXMKKyAgICAgICAgICAgICAgICB0cmltbWVkID0gdHJpbW1lZC5y
ZXBsYWNlKC9eKFteO10qKSg7XHMqKSskLywgIiQxIik7CisKKyAgICAgICAgICAgICAgICBpZiAo
dHJpbW1lZCkgeworICAgICAgICAgICAgICAgICAgICBsZXQgbmFtZSA9IHRyaW1tZWQ7CisgICAg
ICAgICAgICAgICAgICAgIGlmIChzZWVuX2Z1bmNfbmFtZVt0cmltbWVkXSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gVGhpcyBzdWJ0ZXN0IG5hbWUgYWxyZWFkeSBleGlzdHMsIHNvIGFk
ZCBhIHN1ZmZpeC4KKyAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgKz0gIiAiICsgc2Vlbl9m
dW5jX25hbWVbdHJpbW1lZF07CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBzZWVuX2Z1bmNfbmFtZVt0cmltbWVkXSA9IDA7CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgc2Vlbl9mdW5jX25hbWVbdHJpbW1lZF0g
Kz0gMTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5hbWU7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHRlc3RfZW52aXJv
bm1lbnQubmV4dF9kZWZhdWx0X3Rlc3RfbmFtZSgpOworICAgIH0KKwogICAgIC8qCiAgICAgICog
QVBJIGZ1bmN0aW9ucwogICAgICAqLwogICAgIGZ1bmN0aW9uIHRlc3QoZnVuYywgbmFtZSwgcHJv
cGVydGllcykKICAgICB7Ci0gICAgICAgIHZhciB0ZXN0X25hbWUgPSBuYW1lID8gbmFtZSA6IHRl
c3RfZW52aXJvbm1lbnQubmV4dF9kZWZhdWx0X3Rlc3RfbmFtZSgpOwotICAgICAgICBwcm9wZXJ0
aWVzID0gcHJvcGVydGllcyA/IHByb3BlcnRpZXMgOiB7fTsKKyAgICAgICAgaWYgKHRlc3RzLnBy
b21pc2Vfc2V0dXBfY2FsbGVkKSB7CisgICAgICAgICAgICB0ZXN0cy5zdGF0dXMuc3RhdHVzID0g
dGVzdHMuc3RhdHVzLkVSUk9SOworICAgICAgICAgICAgdGVzdHMuc3RhdHVzLm1lc3NhZ2UgPSAn
YHRlc3RgIGludm9rZWQgYWZ0ZXIgYHByb21pc2Vfc2V0dXBgJzsKKyAgICAgICAgICAgIHRlc3Rz
LmNvbXBsZXRlKCk7CisgICAgICAgIH0KKyAgICAgICAgdmFyIHRlc3RfbmFtZSA9IGdldF90ZXN0
X25hbWUoZnVuYywgbmFtZSk7CiAgICAgICAgIHZhciB0ZXN0X29iaiA9IG5ldyBUZXN0KHRlc3Rf
bmFtZSwgcHJvcGVydGllcyk7CiAgICAgICAgIHZhciB2YWx1ZSA9IHRlc3Rfb2JqLnN0ZXAoZnVu
YywgdGVzdF9vYmosIHRlc3Rfb2JqKTsKIAogICAgICAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5l
ZCkgewotICAgICAgICAgICAgdmFyIG1zZyA9ICJUZXN0IG5hbWVkIFwiIiArIHRlc3RfbmFtZSAr
Ci0gICAgICAgICAgICAgICAgIlwiIGluYXBwcm9wcmlhdGVseSByZXR1cm5lZCBhIHZhbHVlIjsK
KyAgICAgICAgICAgIHZhciBtc2cgPSAnVGVzdCBuYW1lZCAiJyArIHRlc3RfbmFtZSArCisgICAg
ICAgICAgICAgICAgJyIgcGFzc2VkIGEgZnVuY3Rpb24gdG8gYHRlc3RgIHRoYXQgcmV0dXJuZWQg
YSB2YWx1ZS4nOwogCiAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIGlmICh2YWx1
ZSAmJiB2YWx1ZS5oYXNPd25Qcm9wZXJ0eSgidGhlbiIpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IG1zZyArPSAiLCBjb25zaWRlciB1c2luZyBgcHJvbWlzZV90ZXN0YCBpbnN0ZWFkIjsKKyAgICAg
ICAgICAgICAgICBpZiAodmFsdWUgJiYgdHlwZW9mIHZhbHVlLnRoZW4gPT09ICdmdW5jdGlvbicp
IHsKKyAgICAgICAgICAgICAgICAgICAgbXNnICs9ICcgQ29uc2lkZXIgdXNpbmcgYHByb21pc2Vf
dGVzdGAgaW5zdGVhZCB3aGVuICcgKworICAgICAgICAgICAgICAgICAgICAgICAgJ3VzaW5nIFBy
b21pc2VzIG9yIGFzeW5jL2F3YWl0Lic7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fSBjYXRjaCAoZXJyKSB7fQogCkBAIC01NjQsMjIgKzU3OCw1NSBAQCBwb2xpY2llcyBhbmQgY29u
dHJpYnV0aW9uIGZvcm1zIFszXS4KIAogICAgIGZ1bmN0aW9uIGFzeW5jX3Rlc3QoZnVuYywgbmFt
ZSwgcHJvcGVydGllcykKICAgICB7CisgICAgICAgIGlmICh0ZXN0cy5wcm9taXNlX3NldHVwX2Nh
bGxlZCkgeworICAgICAgICAgICAgdGVzdHMuc3RhdHVzLnN0YXR1cyA9IHRlc3RzLnN0YXR1cy5F
UlJPUjsKKyAgICAgICAgICAgIHRlc3RzLnN0YXR1cy5tZXNzYWdlID0gJ2Bhc3luY190ZXN0YCBp
bnZva2VkIGFmdGVyIGBwcm9taXNlX3NldHVwYCc7CisgICAgICAgICAgICB0ZXN0cy5jb21wbGV0
ZSgpOworICAgICAgICB9CiAgICAgICAgIGlmICh0eXBlb2YgZnVuYyAhPT0gImZ1bmN0aW9uIikg
ewogICAgICAgICAgICAgcHJvcGVydGllcyA9IG5hbWU7CiAgICAgICAgICAgICBuYW1lID0gZnVu
YzsKICAgICAgICAgICAgIGZ1bmMgPSBudWxsOwogICAgICAgICB9Ci0gICAgICAgIHZhciB0ZXN0
X25hbWUgPSBuYW1lID8gbmFtZSA6IHRlc3RfZW52aXJvbm1lbnQubmV4dF9kZWZhdWx0X3Rlc3Rf
bmFtZSgpOwotICAgICAgICBwcm9wZXJ0aWVzID0gcHJvcGVydGllcyA/IHByb3BlcnRpZXMgOiB7
fTsKKyAgICAgICAgdmFyIHRlc3RfbmFtZSA9IGdldF90ZXN0X25hbWUoZnVuYywgbmFtZSk7CiAg
ICAgICAgIHZhciB0ZXN0X29iaiA9IG5ldyBUZXN0KHRlc3RfbmFtZSwgcHJvcGVydGllcyk7CiAg
ICAgICAgIGlmIChmdW5jKSB7Ci0gICAgICAgICAgICB0ZXN0X29iai5zdGVwKGZ1bmMsIHRlc3Rf
b2JqLCB0ZXN0X29iaik7CisgICAgICAgICAgICB2YXIgdmFsdWUgPSB0ZXN0X29iai5zdGVwKGZ1
bmMsIHRlc3Rfb2JqLCB0ZXN0X29iaik7CisKKyAgICAgICAgICAgIC8vIFRlc3QgYXV0aG9ycyBz
b21ldGltZXMgcmV0dXJuIHZhbHVlcyB0byBhc3luY190ZXN0LCBleHBlY3RpbmcgdXMKKyAgICAg
ICAgICAgIC8vIHRvIGhhbmRsZSB0aGUgdmFsdWUgc29tZWhvdy4gTWFrZSBkb2luZyBzbyBhIGhh
cm5lc3MgZXJyb3IgdG8gYmUKKyAgICAgICAgICAgIC8vIGNsZWFyIHRoaXMgaXMgaW52YWxpZCwg
YW5kIHBvaW50IGF1dGhvcnMgdG8gcHJvbWlzZV90ZXN0IGlmIGl0CisgICAgICAgICAgICAvLyBt
YXkgYmUgYXBwcm9wcmlhdGUuCisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gTm90ZSB0
aGF0IHdlIG9ubHkgcGVyZm9ybSB0aGlzIGNoZWNrIG9uIHRoZSBpbml0aWFsIGZ1bmN0aW9uCisg
ICAgICAgICAgICAvLyBwYXNzZWQgdG8gYXN5bmNfdGVzdCwgbm90IG9uIGFueSBsYXRlciBzdGVw
cyAtIHdlIGhhdmVuJ3Qgc2VlbiBhCisgICAgICAgICAgICAvLyBjb25zaXN0ZW50IHByb2JsZW0g
d2l0aCB0aG9zZSAoYW5kIGl0J3MgaGFyZGVyIHRvIGNoZWNrKS4KKyAgICAgICAgICAgIGlmICh2
YWx1ZSAhPT0gdW5kZWZpbmVkKSB7CisgICAgICAgICAgICAgICAgdmFyIG1zZyA9ICdUZXN0IG5h
bWVkICInICsgdGVzdF9uYW1lICsKKyAgICAgICAgICAgICAgICAgICAgJyIgcGFzc2VkIGEgZnVu
Y3Rpb24gdG8gYGFzeW5jX3Rlc3RgIHRoYXQgcmV0dXJuZWQgYSB2YWx1ZS4nOworCisgICAgICAg
ICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlICYmIHR5cGVvZiB2
YWx1ZS50aGVuID09PSAnZnVuY3Rpb24nKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtc2cg
Kz0gJyBDb25zaWRlciB1c2luZyBgcHJvbWlzZV90ZXN0YCBpbnN0ZWFkIHdoZW4gJyArCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ3VzaW5nIFByb21pc2VzIG9yIGFzeW5jL2F3YWl0Lic7
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHt9
CisKKyAgICAgICAgICAgICAgICB0ZXN0cy5zZXRfc3RhdHVzKHRlc3RzLnN0YXR1cy5FUlJPUiwg
bXNnKTsKKyAgICAgICAgICAgICAgICB0ZXN0cy5jb21wbGV0ZSgpOworICAgICAgICAgICAgfQog
ICAgICAgICB9CiAgICAgICAgIHJldHVybiB0ZXN0X29iajsKICAgICB9CiAKICAgICBmdW5jdGlv
biBwcm9taXNlX3Rlc3QoZnVuYywgbmFtZSwgcHJvcGVydGllcykgewotICAgICAgICB2YXIgdGVz
dCA9IGFzeW5jX3Rlc3QobmFtZSwgcHJvcGVydGllcyk7CisgICAgICAgIGlmICh0eXBlb2YgZnVu
YyAhPT0gImZ1bmN0aW9uIikgeworICAgICAgICAgICAgcHJvcGVydGllcyA9IG5hbWU7CisgICAg
ICAgICAgICBuYW1lID0gZnVuYzsKKyAgICAgICAgICAgIGZ1bmMgPSBudWxsOworICAgICAgICB9
CisgICAgICAgIHZhciB0ZXN0X25hbWUgPSBnZXRfdGVzdF9uYW1lKGZ1bmMsIG5hbWUpOworICAg
ICAgICB2YXIgdGVzdCA9IG5ldyBUZXN0KHRlc3RfbmFtZSwgcHJvcGVydGllcyk7CiAgICAgICAg
IHRlc3QuX2lzX3Byb21pc2VfdGVzdCA9IHRydWU7CiAKICAgICAgICAgLy8gSWYgdGhlcmUgaXMg
bm8gcHJvbWlzZSB0ZXN0cyBxdWV1ZSBtYWtlIG9uZS4KQEAgLTYyNCwxMCArNjcxLDg3IEBAIHBv
bGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAgICB9KTsKICAgICB9CiAK
LSAgICBmdW5jdGlvbiBwcm9taXNlX3JlamVjdHModGVzdCwgZXhwZWN0ZWQsIHByb21pc2UsIGRl
c2NyaXB0aW9uKSB7Ci0gICAgICAgIHJldHVybiBwcm9taXNlLnRoZW4odGVzdC51bnJlYWNoZWRf
ZnVuYygiU2hvdWxkIGhhdmUgcmVqZWN0ZWQ6ICIgKyBkZXNjcmlwdGlvbikpLmNhdGNoKGZ1bmN0
aW9uKGUpIHsKLSAgICAgICAgICAgIGFzc2VydF90aHJvd3MoZXhwZWN0ZWQsIGZ1bmN0aW9uKCkg
eyB0aHJvdyBlIH0sIGRlc2NyaXB0aW9uKTsKLSAgICAgICAgfSk7CisgICAgLyoqCisgICAgICog
TWFrZSBhIGNvcHkgb2YgYSBQcm9taXNlIGluIHRoZSBjdXJyZW50IHJlYWxtLgorICAgICAqCisg
ICAgICogQHBhcmFtIHtQcm9taXNlfSBwcm9taXNlIHRoZSBnaXZlbiBwcm9taXNlIHRoYXQgbWF5
IGJlIGZyb20gYSBkaWZmZXJlbnQKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVh
bG0KKyAgICAgKiBAcmV0dXJucyB7UHJvbWlzZX0KKyAgICAgKgorICAgICAqIEFuIGFyYml0cmFy
eSBwcm9taXNlIHByb3ZpZGVkIGJ5IHRoZSBjYWxsZXIgbWF5IGhhdmUgb3JpZ2luYXRlZCBpbgor
ICAgICAqIGFub3RoZXIgZnJhbWUgdGhhdCBoYXZlIHNpbmNlIG5hdmlnYXRlZCBhd2F5LCByZW5k
ZXJpbmcgdGhlIGZyYW1lJ3MKKyAgICAgKiBkb2N1bWVudCBpbmFjdGl2ZS4gU3VjaCBhIHByb21p
c2UgY2Fubm90IGJlIHVzZWQgd2l0aCBgYXdhaXRgIG9yCisgICAgICogUHJvbWlzZS5yZXNvbHZl
KCksIGFzIG1pY3JvdGFza3MgYXNzb2NpYXRlZCB3aXRoIGl0IG1heSBiZSBwcmV2ZW50ZWQKKyAg
ICAgKiBmcm9tIGJlaW5nIHJ1bi4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS93aGF0d2cvaHRtbC9p
c3N1ZXMvNTMxOSBmb3IgYQorICAgICAqIHBhcnRpY3VsYXIgY2FzZS4KKyAgICAgKgorICAgICAq
IEluIGZ1bmN0aW9ucyB3ZSBkZWZpbmUgaGVyZSwgdGhlcmUgaXMgYW4gZXhwZWN0YXRpb24gZnJv
bSB0aGUgY2FsbGVyCisgICAgICogdGhhdCB0aGUgcHJvbWlzZSBpcyBmcm9tIHRoZSBjdXJyZW50
IHJlYWxtLCB0aGF0IGNhbiBhbHdheXMgYmUgdXNlZCB3aXRoCisgICAgICogYGF3YWl0YCwgZXRj
LiBXZSB0aGVyZWZvcmUgY3JlYXRlIGEgbmV3IHByb21pc2UgaW4gdGhpcyByZWFsbSB0aGF0Cisg
ICAgICogaW5oZXJpdCB0aGUgdmFsdWUgYW5kIHN0YXR1cyBmcm9tIHRoZSBnaXZlbiBwcm9taXNl
LgorICAgICAqLworCisgICAgZnVuY3Rpb24gYnJpbmdfcHJvbWlzZV90b19jdXJyZW50X3JlYWxt
KHByb21pc2UpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHByb21pc2UudGhlbi5iaW5k
KHByb21pc2UpKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBwcm9taXNlX3JlamVjdHNfanModGVz
dCwgY29uc3RydWN0b3IsIHByb21pc2UsIGRlc2NyaXB0aW9uKSB7CisgICAgICAgIHJldHVybiBi
cmluZ19wcm9taXNlX3RvX2N1cnJlbnRfcmVhbG0ocHJvbWlzZSkKKyAgICAgICAgICAgIC50aGVu
KHRlc3QudW5yZWFjaGVkX2Z1bmMoIlNob3VsZCBoYXZlIHJlamVjdGVkOiAiICsgZGVzY3JpcHRp
b24pKQorICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgICAgICAgICBh
c3NlcnRfdGhyb3dzX2pzX2ltcGwoY29uc3RydWN0b3IsIGZ1bmN0aW9uKCkgeyB0aHJvdyBlIH0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uLCAicHJv
bWlzZV9yZWplY3RzX2pzIik7CisgICAgICAgICAgICB9KTsKKyAgICB9CisKKyAgICAvKioKKyAg
ICAgKiBBc3NlcnQgdGhhdCBhIFByb21pc2UgaXMgcmVqZWN0ZWQgd2l0aCB0aGUgcmlnaHQgRE9N
RXhjZXB0aW9uLgorICAgICAqCisgICAgICogQHBhcmFtIHRlc3QgdGhlIHRlc3QgYXJndW1lbnQg
cGFzc2VkIHRvIHByb21pc2VfdGVzdAorICAgICAqIEBwYXJhbSB7bnVtYmVyfHN0cmluZ30gdHlw
ZS4gIFNlZSBkb2N1bWVudGF0aW9uIGZvciBhc3NlcnRfdGhyb3dzX2RvbS4KKyAgICAgKgorICAg
ICAqIEZvciB0aGUgcmVtYWluaW5nIGFyZ3VtZW50cywgdGhlcmUgYXJlIHR3byB3YXlzIG9mIGNh
bGxpbmcKKyAgICAgKiBwcm9taXNlX3JlamVjdHNfZG9tOgorICAgICAqCisgICAgICogMSkgSWYg
dGhlIERPTUV4Y2VwdGlvbiBpcyBleHBlY3RlZCB0byBjb21lIGZyb20gdGhlIGN1cnJlbnQgZ2xv
YmFsLCB0aGUKKyAgICAgKiB0aGlyZCBhcmd1bWVudCBzaG91bGQgYmUgdGhlIHByb21pc2UgZXhw
ZWN0ZWQgdG8gcmVqZWN0LCBhbmQgYSBmb3VydGgsCisgICAgICogb3B0aW9uYWwsIGFyZ3VtZW50
IGlzIHRoZSBhc3NlcnRpb24gZGVzY3JpcHRpb24uCisgICAgICoKKyAgICAgKiAyKSBJZiB0aGUg
RE9NRXhjZXB0aW9uIGlzIGV4cGVjdGVkIHRvIGNvbWUgZnJvbSBzb21lIG90aGVyIGdsb2JhbCwg
dGhlCisgICAgICogdGhpcmQgYXJndW1lbnQgc2hvdWxkIGJlIHRoZSBET01FeGNlcHRpb24gY29u
c3RydWN0b3IgZnJvbSB0aGF0IGdsb2JhbCwKKyAgICAgKiB0aGUgZm91cnRoIGFyZ3VtZW50IHRo
ZSBwcm9taXNlIGV4cGVjdGVkIHRvIHJlamVjdCwgYW5kIHRoZSBmaWZ0aCwKKyAgICAgKiBvcHRp
b25hbCwgYXJndW1lbnQgdGhlIGFzc2VydGlvbiBkZXNjcmlwdGlvbi4KKyAgICAgKi8KKworICAg
IGZ1bmN0aW9uIHByb21pc2VfcmVqZWN0c19kb20odGVzdCwgdHlwZSwgcHJvbWlzZU9yQ29uc3Ry
dWN0b3IsIGRlc2NyaXB0aW9uT3JQcm9taXNlLCBtYXliZURlc2NyaXB0aW9uKSB7CisgICAgICAg
IGxldCBjb25zdHJ1Y3RvciwgcHJvbWlzZSwgZGVzY3JpcHRpb247CisgICAgICAgIGlmICh0eXBl
b2YgcHJvbWlzZU9yQ29uc3RydWN0b3IgPT09ICJmdW5jdGlvbiIgJiYKKyAgICAgICAgICAgIHBy
b21pc2VPckNvbnN0cnVjdG9yLm5hbWUgPT09ICJET01FeGNlcHRpb24iKSB7CisgICAgICAgICAg
ICBjb25zdHJ1Y3RvciA9IHByb21pc2VPckNvbnN0cnVjdG9yOworICAgICAgICAgICAgcHJvbWlz
ZSA9IGRlc2NyaXB0aW9uT3JQcm9taXNlOworICAgICAgICAgICAgZGVzY3JpcHRpb24gPSBtYXli
ZURlc2NyaXB0aW9uOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgY29uc3RydWN0b3Ig
PSBzZWxmLkRPTUV4Y2VwdGlvbjsKKyAgICAgICAgICAgIHByb21pc2UgPSBwcm9taXNlT3JDb25z
dHJ1Y3RvcjsKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb25PclByb21pc2U7
CisgICAgICAgICAgICBhc3NlcnQobWF5YmVEZXNjcmlwdGlvbiA9PT0gdW5kZWZpbmVkLAorICAg
ICAgICAgICAgICAgICAgICJUb28gbWFueSBhcmdzIHBhc2VkIHRvIG5vLWNvbnN0cnVjdG9yIHZl
cnNpb24gb2YgcHJvbWlzZV9yZWplY3RzX2RvbSIpOworICAgICAgICB9CisgICAgICAgIHJldHVy
biBicmluZ19wcm9taXNlX3RvX2N1cnJlbnRfcmVhbG0ocHJvbWlzZSkKKyAgICAgICAgICAgIC50
aGVuKHRlc3QudW5yZWFjaGVkX2Z1bmMoIlNob3VsZCBoYXZlIHJlamVjdGVkOiAiICsgZGVzY3Jp
cHRpb24pKQorICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgICAgICAg
ICBhc3NlcnRfdGhyb3dzX2RvbV9pbXBsKHR5cGUsIGZ1bmN0aW9uKCkgeyB0aHJvdyBlIH0sIGRl
c2NyaXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInByb21p
c2VfcmVqZWN0c19kb20iLCBjb25zdHJ1Y3Rvcik7CisgICAgICAgICAgICB9KTsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0ZXN0LCBleGNlcHRpb24sIHBy
b21pc2UsIGRlc2NyaXB0aW9uKSB7CisgICAgICAgIHJldHVybiBicmluZ19wcm9taXNlX3RvX2N1
cnJlbnRfcmVhbG0ocHJvbWlzZSkKKyAgICAgICAgICAgIC50aGVuKHRlc3QudW5yZWFjaGVkX2Z1
bmMoIlNob3VsZCBoYXZlIHJlamVjdGVkOiAiICsgZGVzY3JpcHRpb24pKQorICAgICAgICAgICAg
LmNhdGNoKGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2V4YWN0
bHlfaW1wbChleGNlcHRpb24sIGZ1bmN0aW9uKCkgeyB0aHJvdyBlIH0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24sICJwcm9taXNlX3JlamVj
dHNfZXhhY3RseSIpOworICAgICAgICAgICAgfSk7CiAgICAgfQogCiAgICAgLyoqCkBAIC03Njks
OSArODkzLDU2IEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAg
ICB0ZXN0X2Vudmlyb25tZW50Lm9uX25ld19oYXJuZXNzX3Byb3BlcnRpZXMocHJvcGVydGllcyk7
CiAgICAgfQogCisgICAgZnVuY3Rpb24gcHJvbWlzZV9zZXR1cChmdW5jLCBtYXliZV9wcm9wZXJ0
aWVzKQorICAgIHsKKyAgICAgICAgaWYgKHR5cGVvZiBmdW5jICE9PSAiZnVuY3Rpb24iKSB7Cisg
ICAgICAgICAgICB0ZXN0cy5zZXRfc3RhdHVzKHRlc3RzLnN0YXR1cy5FUlJPUiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgInByb21pc2VfdGVzdCBpbnZva2VkIHdpdGhvdXQgYSBmdW5j
dGlvbiIpOworICAgICAgICAgICAgdGVzdHMuY29tcGxldGUoKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorICAgICAgICB0ZXN0cy5wcm9taXNlX3NldHVwX2NhbGxlZCA9IHRydWU7
CisKKyAgICAgICAgaWYgKCF0ZXN0cy5wcm9taXNlX3Rlc3RzKSB7CisgICAgICAgICAgICB0ZXN0
cy5wcm9taXNlX3Rlc3RzID0gUHJvbWlzZS5yZXNvbHZlKCk7CisgICAgICAgIH0KKworICAgICAg
ICB0ZXN0cy5wcm9taXNlX3Rlc3RzID0gdGVzdHMucHJvbWlzZV90ZXN0cworICAgICAgICAgICAg
LnRoZW4oZnVuY3Rpb24oKQorICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICAgIHZhciBwcm9wZXJ0aWVzID0gbWF5YmVfcHJvcGVydGllcyB8fCB7fTsKKyAgICAgICAgICAg
ICAgICAgICAgICB2YXIgcmVzdWx0OworCisgICAgICAgICAgICAgICAgICAgICAgdGVzdHMuc2V0
dXAobnVsbCwgcHJvcGVydGllcyk7CisgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gZnVu
YygpOworICAgICAgICAgICAgICAgICAgICAgIHRlc3RfZW52aXJvbm1lbnQub25fbmV3X2hhcm5l
c3NfcHJvcGVydGllcyhwcm9wZXJ0aWVzKTsKKworICAgICAgICAgICAgICAgICAgICAgIGlmICgh
cmVzdWx0IHx8IHR5cGVvZiByZXN1bHQudGhlbiAhPT0gImZ1bmN0aW9uIikgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICB0aHJvdyAiTm9uLXRoZW5hYmxlIHJldHVybmVkIGJ5IGZ1bmN0aW9u
IHBhc3NlZCB0byBgcHJvbWlzZV9zZXR1cGAiOworICAgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgICAgICAgfSkK
KyAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbihlKQorICAgICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgdGVzdHMuc2V0X3N0YXR1cyh0ZXN0cy5zdGF0dXMuRVJST1Is
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nKGUpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgJiYgZS5zdGFjayk7CisgICAg
ICAgICAgICAgICAgICAgICAgIHRlc3RzLmNvbXBsZXRlKCk7CisgICAgICAgICAgICAgICAgICAg
fSk7CisgICAgfQorCiAgICAgZnVuY3Rpb24gZG9uZSgpIHsKICAgICAgICAgaWYgKHRlc3RzLnRl
c3RzLmxlbmd0aCA9PT0gMCkgewotICAgICAgICAgICAgdGVzdHMuc2V0X2ZpbGVfaXNfdGVzdCgp
OworICAgICAgICAgICAgLy8gYGRvbmVgIGlzIGludm9rZWQgYWZ0ZXIgaGFuZGxpbmcgdW5jYXVn
aHQgZXhjZXB0aW9ucywgc28gaWYgdGhlCisgICAgICAgICAgICAvLyBoYXJuZXNzIHN0YXR1cyBp
cyBhbHJlYWR5IHNldCwgdGhlIGNvcnJlc3BvbmRpbmcgbWVzc2FnZSBpcyBtb3JlCisgICAgICAg
ICAgICAvLyBkZXNjcmlwdGl2ZSB0aGFuIHRoZSBnZW5lcmljIG1lc3NhZ2UgZGVmaW5lZCBoZXJl
LgorICAgICAgICAgICAgaWYgKHRlc3RzLnN0YXR1cy5zdGF0dXMgPT09IG51bGwpIHsKKyAgICAg
ICAgICAgICAgICB0ZXN0cy5zdGF0dXMuc3RhdHVzID0gdGVzdHMuc3RhdHVzLkVSUk9SOworICAg
ICAgICAgICAgICAgIHRlc3RzLnN0YXR1cy5tZXNzYWdlID0gImRvbmUoKSB3YXMgY2FsbGVkIHdp
dGhvdXQgZmlyc3QgZGVmaW5pbmcgYW55IHRlc3RzIjsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgdGVzdHMuY29tcGxldGUoKTsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
ICAgICAgICBpZiAodGVzdHMuZmlsZV9pc190ZXN0KSB7CiAgICAgICAgICAgICAvLyBmaWxlIGlz
IHRlc3QgZmlsZXMgbmV2ZXIgaGF2ZSBhc3luY2hyb25vdXMgY2xlYW51cCBsb2dpYywKQEAgLTc5
NCw2ICs5NjUsMTIgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAg
ICAgICAgICAgICAgfSk7CiAgICAgfQogCisgICAgLyoKKyAgICAgKiBSZWdpc3RlciBhIGZ1bmN0
aW9uIGFzIGEgRE9NIGV2ZW50IGxpc3RlbmVyIHRvIHRoZSBnaXZlbiBvYmplY3QgZm9yIHRoZQor
ICAgICAqIGV2ZW50IGJ1YmJsaW5nIHBoYXNlLgorICAgICAqCisgICAgICogVGhpcyBmdW5jdGlv
biB3YXMgZGVwcmVjYXRlZCBpbiBOb3ZlbWJlciBvZiAyMDE5LgorICAgICAqLwogICAgIGZ1bmN0
aW9uIG9uX2V2ZW50KG9iamVjdCwgZXZlbnQsIGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgb2Jq
ZWN0LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnQsIGNhbGxiYWNrLCBmYWxzZSk7CkBAIC04MTAsOSAr
OTg3LDEyIEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAgIGV4cG9z
ZSh0ZXN0LCAndGVzdCcpOwogICAgIGV4cG9zZShhc3luY190ZXN0LCAnYXN5bmNfdGVzdCcpOwog
ICAgIGV4cG9zZShwcm9taXNlX3Rlc3QsICdwcm9taXNlX3Rlc3QnKTsKLSAgICBleHBvc2UocHJv
bWlzZV9yZWplY3RzLCAncHJvbWlzZV9yZWplY3RzJyk7CisgICAgZXhwb3NlKHByb21pc2VfcmVq
ZWN0c19qcywgJ3Byb21pc2VfcmVqZWN0c19qcycpOworICAgIGV4cG9zZShwcm9taXNlX3JlamVj
dHNfZG9tLCAncHJvbWlzZV9yZWplY3RzX2RvbScpOworICAgIGV4cG9zZShwcm9taXNlX3JlamVj
dHNfZXhhY3RseSwgJ3Byb21pc2VfcmVqZWN0c19leGFjdGx5Jyk7CiAgICAgZXhwb3NlKGdlbmVy
YXRlX3Rlc3RzLCAnZ2VuZXJhdGVfdGVzdHMnKTsKICAgICBleHBvc2Uoc2V0dXAsICdzZXR1cCcp
OworICAgIGV4cG9zZShwcm9taXNlX3NldHVwLCAncHJvbWlzZV9zZXR1cCcpOwogICAgIGV4cG9z
ZShkb25lLCAnZG9uZScpOwogICAgIGV4cG9zZShvbl9ldmVudCwgJ29uX2V2ZW50Jyk7CiAgICAg
ZXhwb3NlKHN0ZXBfdGltZW91dCwgJ3N0ZXBfdGltZW91dCcpOwpAQCAtOTE0LDEyICsxMDk0LDIw
IEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAgICAgICAgc2Vl
bi5wdXNoKHZhbCk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsKSkg
ewotICAgICAgICAgICAgcmV0dXJuICJbIiArIHZhbC5tYXAoZnVuY3Rpb24oeCkge3JldHVybiBm
b3JtYXRfdmFsdWUoeCwgc2Vlbik7fSkuam9pbigiLCAiKSArICJdIjsKKyAgICAgICAgICAgIGxl
dCBvdXRwdXQgPSAiWyI7CisgICAgICAgICAgICBpZiAodmFsLmJlZ2luRWxsaXBzaXMgIT09IHVu
ZGVmaW5lZCkgeworICAgICAgICAgICAgICAgIG91dHB1dCArPSAi4oCmLCAiOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgb3V0cHV0ICs9IHZhbC5tYXAoZnVuY3Rpb24oeCkge3JldHVybiBm
b3JtYXRfdmFsdWUoeCwgc2Vlbik7fSkuam9pbigiLCAiKTsKKyAgICAgICAgICAgIGlmICh2YWwu
ZW5kRWxsaXBzaXMgIT09IHVuZGVmaW5lZCkgeworICAgICAgICAgICAgICAgIG91dHB1dCArPSAi
LCDigKYiOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIG91dHB1dCArICJdIjsK
ICAgICAgICAgfQogCiAgICAgICAgIHN3aXRjaCAodHlwZW9mIHZhbCkgewogICAgICAgICBjYXNl
ICJzdHJpbmciOgotICAgICAgICAgICAgdmFsID0gdmFsLnJlcGxhY2UoIlxcIiwgIlxcXFwiKTsK
KyAgICAgICAgICAgIHZhbCA9IHZhbC5yZXBsYWNlKC9cXC9nLCAiXFxcXCIpOwogICAgICAgICAg
ICAgZm9yICh2YXIgcCBpbiByZXBsYWNlbWVudHMpIHsKICAgICAgICAgICAgICAgICB2YXIgcmVw
bGFjZSA9ICJcXCIgKyByZXBsYWNlbWVudHNbcF07CiAgICAgICAgICAgICAgICAgdmFsID0gdmFs
LnJlcGxhY2UoUmVnRXhwKFN0cmluZy5mcm9tQ2hhckNvZGUocCksICJnIiksIHJlcGxhY2UpOwpA
QCAtOTg0LDE5ICsxMTcyLDUzIEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNd
LgogICAgICAqIEFzc2VydGlvbnMKICAgICAgKi8KIAorICAgIGZ1bmN0aW9uIGV4cG9zZV9hc3Nl
cnQoZiwgbmFtZSkgeworICAgICAgICBmdW5jdGlvbiBhc3NlcnRfd3JhcHBlciguLi5hcmdzKSB7
CisgICAgICAgICAgICBsZXQgc3RhdHVzID0gVGVzdC5zdGF0dXNlcy5USU1FT1VUOworICAgICAg
ICAgICAgbGV0IHN0YWNrID0gbnVsbDsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAg
ICAgaWYgKHNldHRpbmdzLmRlYnVnKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZGVi
dWcoIkFTU0VSVCIsIG5hbWUsIHRlc3RzLmN1cnJlbnRfdGVzdCAmJiB0ZXN0cy5jdXJyZW50X3Rl
c3QubmFtZSwgYXJncyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICh0
ZXN0cy5vdXRwdXQpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdHMuc2V0X2Fzc2VydChuYW1l
LCBhcmdzKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY29uc3QgcnYgPSBm
LmFwcGx5KHVuZGVmaW5lZCwgYXJncyk7CisgICAgICAgICAgICAgICAgc3RhdHVzID0gVGVzdC5z
dGF0dXNlcy5QQVNTOworICAgICAgICAgICAgICAgIHJldHVybiBydjsKKyAgICAgICAgICAgIH0g
Y2F0Y2goZSkgeworICAgICAgICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgQXNzZXJ0aW9uRXJy
b3IpIHsKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVzID0gVGVzdC5zdGF0dXNlcy5GQUlMOwor
ICAgICAgICAgICAgICAgICAgICBzdGFjayA9IGUuc3RhY2s7CisgICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IFRlc3Quc3RhdHVzZXMuRVJST1I7
CisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB0aHJvdyBlOworICAgICAgICAg
ICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAgICAgICBpZiAodGVzdHMub3V0cHV0ICYmICFzdGFj
aykgeworICAgICAgICAgICAgICAgICAgICBzdGFjayA9IGdldF9zdGFjaygpOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAodGVzdHMub3V0cHV0KSB7CisgICAgICAgICAg
ICAgICAgICAgIHRlc3RzLnNldF9hc3NlcnRfc3RhdHVzKHN0YXR1cywgc3RhY2spOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBleHBvc2UoYXNz
ZXJ0X3dyYXBwZXIsIG5hbWUpOworICAgIH0KKwogICAgIGZ1bmN0aW9uIGFzc2VydF90cnVlKGFj
dHVhbCwgZGVzY3JpcHRpb24pCiAgICAgewogICAgICAgICBhc3NlcnQoYWN0dWFsID09PSB0cnVl
LCAiYXNzZXJ0X3RydWUiLCBkZXNjcmlwdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgImV4cGVjdGVkIHRydWUgZ290ICR7YWN0dWFsfSIsIHthY3R1YWw6YWN0dWFsfSk7CiAg
ICAgfQotICAgIGV4cG9zZShhc3NlcnRfdHJ1ZSwgImFzc2VydF90cnVlIik7CisgICAgZXhwb3Nl
X2Fzc2VydChhc3NlcnRfdHJ1ZSwgImFzc2VydF90cnVlIik7CiAKICAgICBmdW5jdGlvbiBhc3Nl
cnRfZmFsc2UoYWN0dWFsLCBkZXNjcmlwdGlvbikKICAgICB7CiAgICAgICAgIGFzc2VydChhY3R1
YWwgPT09IGZhbHNlLCAiYXNzZXJ0X2ZhbHNlIiwgZGVzY3JpcHRpb24sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgZmFsc2UgZ290ICR7YWN0dWFsfSIsIHthY3R1
YWw6YWN0dWFsfSk7CiAgICAgfQotICAgIGV4cG9zZShhc3NlcnRfZmFsc2UsICJhc3NlcnRfZmFs
c2UiKTsKKyAgICBleHBvc2VfYXNzZXJ0KGFzc2VydF9mYWxzZSwgImFzc2VydF9mYWxzZSIpOwog
CiAgICAgZnVuY3Rpb24gc2FtZV92YWx1ZSh4LCB5KSB7CiAgICAgICAgIGlmICh5ICE9PSB5KSB7
CkBAIC0xMDI2LDcgKzEyNDgsNyBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFsz
XS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3Rl
ZCAke2V4cGVjdGVkfSBidXQgZ290ICR7YWN0dWFsfSIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB7ZXhwZWN0ZWQ6ZXhwZWN0ZWQsIGFjdHVhbDphY3R1YWx9
KTsKICAgICB9Ci0gICAgZXhwb3NlKGFzc2VydF9lcXVhbHMsICJhc3NlcnRfZXF1YWxzIik7Cisg
ICAgZXhwb3NlX2Fzc2VydChhc3NlcnRfZXF1YWxzLCAiYXNzZXJ0X2VxdWFscyIpOwogCiAgICAg
ZnVuY3Rpb24gYXNzZXJ0X25vdF9lcXVhbHMoYWN0dWFsLCBleHBlY3RlZCwgZGVzY3JpcHRpb24p
CiAgICAgewpAQCAtMTAzOCw3ICsxMjYwLDcgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBm
b3JtcyBbM10uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ImdvdCBkaXNhbGxvd2VkIHZhbHVlICR7YWN0dWFsfSIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAge2FjdHVhbDphY3R1YWx9KTsKICAgICB9Ci0gICAgZXhw
b3NlKGFzc2VydF9ub3RfZXF1YWxzLCAiYXNzZXJ0X25vdF9lcXVhbHMiKTsKKyAgICBleHBvc2Vf
YXNzZXJ0KGFzc2VydF9ub3RfZXF1YWxzLCAiYXNzZXJ0X25vdF9lcXVhbHMiKTsKIAogICAgIGZ1
bmN0aW9uIGFzc2VydF9pbl9hcnJheShhY3R1YWwsIGV4cGVjdGVkLCBkZXNjcmlwdGlvbikKICAg
ICB7CkBAIC0xMDQ2LDggKzEyNjgsMTAgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3Jt
cyBbM10uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2
YWx1ZSAke2FjdHVhbH0gbm90IGluIGFycmF5ICR7ZXhwZWN0ZWR9IiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2FjdHVhbDphY3R1YWwsIGV4cGVjdGVk
OmV4cGVjdGVkfSk7CiAgICAgfQotICAgIGV4cG9zZShhc3NlcnRfaW5fYXJyYXksICJhc3NlcnRf
aW5fYXJyYXkiKTsKKyAgICBleHBvc2VfYXNzZXJ0KGFzc2VydF9pbl9hcnJheSwgImFzc2VydF9p
bl9hcnJheSIpOwogCisgICAgLy8gVGhpcyBmdW5jdGlvbiB3YXMgZGVwcmVjYXRlZCBpbiBKdWx5
IG9mIDIwMTUuCisgICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVz
dHMvd3B0L2lzc3Vlcy8yMDMzCiAgICAgZnVuY3Rpb24gYXNzZXJ0X29iamVjdF9lcXVhbHMoYWN0
dWFsLCBleHBlY3RlZCwgZGVzY3JpcHRpb24pCiAgICAgewogICAgICAgICAgYXNzZXJ0KHR5cGVv
ZiBhY3R1YWwgPT09ICJvYmplY3QiICYmIGFjdHVhbCAhPT0gbnVsbCwgImFzc2VydF9vYmplY3Rf
ZXF1YWxzIiwgZGVzY3JpcHRpb24sCkBAIC0xMDcwLDcgKzEyOTQsNyBAQCBwb2xpY2llcyBhbmQg
Y29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgICAgICAgICAgIGFzc2VydChzYW1lX3ZhbHVlKGFjdHVhbFtwXSwgZXhwZWN0ZWRbcF0p
LCAiYXNzZXJ0X29iamVjdF9lcXVhbHMiLCBkZXNjcmlwdGlvbiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHJvcGVydHkgJHtwfSBleHBl
Y3RlZCAke2V4cGVjdGVkfSBnb3QgJHthY3R1YWx9IiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cDpwLCBleHBlY3RlZDpleHBlY3RlZCwg
YWN0dWFsOmFjdHVhbH0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHtwOnAsIGV4cGVjdGVkOmV4cGVjdGVkW3BdLCBhY3R1YWw6YWN0dWFs
W3BdfSk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
Zm9yIChwIGluIGV4cGVjdGVkKSB7CkBAIC0xMDgyLDMyICsxMzA2LDY0IEBAIHBvbGljaWVzIGFu
ZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAgICAgfQogICAgICAgICAgY2hlY2tfZXF1
YWwoYWN0dWFsLCBleHBlY3RlZCwgW10pOwogICAgIH0KLSAgICBleHBvc2UoYXNzZXJ0X29iamVj
dF9lcXVhbHMsICJhc3NlcnRfb2JqZWN0X2VxdWFscyIpOworICAgIGV4cG9zZV9hc3NlcnQoYXNz
ZXJ0X29iamVjdF9lcXVhbHMsICJhc3NlcnRfb2JqZWN0X2VxdWFscyIpOwogCiAgICAgZnVuY3Rp
b24gYXNzZXJ0X2FycmF5X2VxdWFscyhhY3R1YWwsIGV4cGVjdGVkLCBkZXNjcmlwdGlvbikKICAg
ICB7CisgICAgICAgIGNvbnN0IG1heF9hcnJheV9sZW5ndGggPSAyMDsKKyAgICAgICAgZnVuY3Rp
b24gc2hvcnRlbl9hcnJheShhcnIsIG9mZnNldCA9IDApIHsKKyAgICAgICAgICAgIC8vIE1ha2Ug
Iiwg4oCmIiBvbmx5IHNob3cgdXAgd2hlbiBpdCB3b3VsZCBsaWtlbHkgcmVkdWNlIHRoZSBsZW5n
dGgsIG5vdCBhY2NvdW50aW5nIGZvcgorICAgICAgICAgICAgLy8gZm9udHMuCisgICAgICAgICAg
ICBpZiAoYXJyLmxlbmd0aCA8IG1heF9hcnJheV9sZW5ndGggKyAyKSB7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIGFycjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIEJ5IGRlZmF1bHQg
d2Ugd2FudCBoYWxmIHRoZSBlbGVtZW50cyBhZnRlciB0aGUgb2Zmc2V0IGFuZCBoYWxmIGJlZm9y
ZQorICAgICAgICAgICAgLy8gQnV0IGlmIHRoYXQgdGFrZXMgdXMgcGFzdCB0aGUgZW5kIG9mIHRo
ZSBhcnJheSwgd2UgaGF2ZSBtb3JlIGJlZm9yZSwgYW5kCisgICAgICAgICAgICAvLyBpZiBpdCB0
YWtlcyB1cyBiZWZvcmUgdGhlIHN0YXJ0IHdlIGhhdmUgbW9yZSBhZnRlci4KKyAgICAgICAgICAg
IGNvbnN0IGxlbmd0aF9hZnRlcl9vZmZzZXQgPSBNYXRoLmZsb29yKG1heF9hcnJheV9sZW5ndGgg
LyAyKTsKKyAgICAgICAgICAgIGxldCB1cHBlcl9ib3VuZCA9IE1hdGgubWluKGxlbmd0aF9hZnRl
cl9vZmZzZXQgKyBvZmZzZXQsIGFyci5sZW5ndGgpOworICAgICAgICAgICAgY29uc3QgbG93ZXJf
Ym91bmQgPSBNYXRoLm1heCh1cHBlcl9ib3VuZCAtIG1heF9hcnJheV9sZW5ndGgsIDApOworCisg
ICAgICAgICAgICBpZiAobG93ZXJfYm91bmQgPT09IDApIHsKKyAgICAgICAgICAgICAgICB1cHBl
cl9ib3VuZCA9IG1heF9hcnJheV9sZW5ndGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGNvbnN0IG91dHB1dCA9IGFyci5zbGljZShsb3dlcl9ib3VuZCwgdXBwZXJfYm91bmQpOworICAg
ICAgICAgICAgaWYgKGxvd2VyX2JvdW5kID4gMCkgeworICAgICAgICAgICAgICAgIG91dHB1dC5i
ZWdpbkVsbGlwc2lzID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh1cHBl
cl9ib3VuZCA8IGFyci5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICBvdXRwdXQuZW5kRWxsaXBz
aXMgPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIG91dHB1dDsKKyAg
ICAgICAgfQorCiAgICAgICAgIGFzc2VydCh0eXBlb2YgYWN0dWFsID09PSAib2JqZWN0IiAmJiBh
Y3R1YWwgIT09IG51bGwgJiYgImxlbmd0aCIgaW4gYWN0dWFsLAogICAgICAgICAgICAgICAgImFz
c2VydF9hcnJheV9lcXVhbHMiLCBkZXNjcmlwdGlvbiwKICAgICAgICAgICAgICAgICJ2YWx1ZSBp
cyAke2FjdHVhbH0sIGV4cGVjdGVkIGFycmF5IiwKICAgICAgICAgICAgICAgIHthY3R1YWw6YWN0
dWFsfSk7CiAgICAgICAgIGFzc2VydChhY3R1YWwubGVuZ3RoID09PSBleHBlY3RlZC5sZW5ndGgs
CiAgICAgICAgICAgICAgICAiYXNzZXJ0X2FycmF5X2VxdWFscyIsIGRlc2NyaXB0aW9uLAotICAg
ICAgICAgICAgICAgImxlbmd0aHMgZGlmZmVyLCBleHBlY3RlZCAke2V4cGVjdGVkfSBnb3QgJHth
Y3R1YWx9IiwKLSAgICAgICAgICAgICAgIHtleHBlY3RlZDpleHBlY3RlZC5sZW5ndGgsIGFjdHVh
bDphY3R1YWwubGVuZ3RofSk7CisgICAgICAgICAgICAgICAibGVuZ3RocyBkaWZmZXIsIGV4cGVj
dGVkIGFycmF5ICR7ZXhwZWN0ZWR9IGxlbmd0aCAke2V4cGVjdGVkTGVuZ3RofSwgZ290ICR7YWN0
dWFsfSBsZW5ndGggJHthY3R1YWxMZW5ndGh9IiwKKyAgICAgICAgICAgICAgIHtleHBlY3RlZDpz
aG9ydGVuX2FycmF5KGV4cGVjdGVkLCBleHBlY3RlZC5sZW5ndGggLSAxKSwgZXhwZWN0ZWRMZW5n
dGg6ZXhwZWN0ZWQubGVuZ3RoLAorICAgICAgICAgICAgICAgIGFjdHVhbDpzaG9ydGVuX2FycmF5
KGFjdHVhbCwgYWN0dWFsLmxlbmd0aCAtIDEpLCBhY3R1YWxMZW5ndGg6YWN0dWFsLmxlbmd0aAor
ICAgICAgICAgICAgICAgfSk7CiAKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhY3R1YWwu
bGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgIGFzc2VydChhY3R1YWwuaGFzT3duUHJvcGVydHko
aSkgPT09IGV4cGVjdGVkLmhhc093blByb3BlcnR5KGkpLAogICAgICAgICAgICAgICAgICAgICJh
c3NlcnRfYXJyYXlfZXF1YWxzIiwgZGVzY3JpcHRpb24sCi0gICAgICAgICAgICAgICAgICAgInBy
b3BlcnR5ICR7aX0sIHByb3BlcnR5IGV4cGVjdGVkIHRvIGJlICR7ZXhwZWN0ZWR9IGJ1dCB3YXMg
JHthY3R1YWx9IiwKKyAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgcHJvcGVydHkgJHtpfSB0
byBiZSAke2V4cGVjdGVkfSBidXQgd2FzICR7YWN0dWFsfSAoZXhwZWN0ZWQgYXJyYXkgJHthcnJh
eUV4cGVjdGVkfSBnb3QgJHthcnJheUFjdHVhbH0pIiwKICAgICAgICAgICAgICAgICAgICB7aTpp
LCBleHBlY3RlZDpleHBlY3RlZC5oYXNPd25Qcm9wZXJ0eShpKSA/ICJwcmVzZW50IiA6ICJtaXNz
aW5nIiwKLSAgICAgICAgICAgICAgICAgICBhY3R1YWw6YWN0dWFsLmhhc093blByb3BlcnR5KGkp
ID8gInByZXNlbnQiIDogIm1pc3NpbmcifSk7CisgICAgICAgICAgICAgICAgICAgIGFjdHVhbDph
Y3R1YWwuaGFzT3duUHJvcGVydHkoaSkgPyAicHJlc2VudCIgOiAibWlzc2luZyIsCisgICAgICAg
ICAgICAgICAgICAgIGFycmF5RXhwZWN0ZWQ6c2hvcnRlbl9hcnJheShleHBlY3RlZCwgaSksIGFy
cmF5QWN0dWFsOnNob3J0ZW5fYXJyYXkoYWN0dWFsLCBpKX0pOwogICAgICAgICAgICAgYXNzZXJ0
KHNhbWVfdmFsdWUoZXhwZWN0ZWRbaV0sIGFjdHVhbFtpXSksCiAgICAgICAgICAgICAgICAgICAg
ImFzc2VydF9hcnJheV9lcXVhbHMiLCBkZXNjcmlwdGlvbiwKLSAgICAgICAgICAgICAgICAgICAi
cHJvcGVydHkgJHtpfSwgZXhwZWN0ZWQgJHtleHBlY3RlZH0gYnV0IGdvdCAke2FjdHVhbH0iLAot
ICAgICAgICAgICAgICAgICAgIHtpOmksIGV4cGVjdGVkOmV4cGVjdGVkW2ldLCBhY3R1YWw6YWN0
dWFsW2ldfSk7CisgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIHByb3BlcnR5ICR7aX0gdG8g
YmUgJHtleHBlY3RlZH0gYnV0IGdvdCAke2FjdHVhbH0gKGV4cGVjdGVkIGFycmF5ICR7YXJyYXlF
eHBlY3RlZH0gZ290ICR7YXJyYXlBY3R1YWx9KSIsCisgICAgICAgICAgICAgICAgICAge2k6aSwg
ZXhwZWN0ZWQ6ZXhwZWN0ZWRbaV0sIGFjdHVhbDphY3R1YWxbaV0sCisgICAgICAgICAgICAgICAg
ICAgIGFycmF5RXhwZWN0ZWQ6c2hvcnRlbl9hcnJheShleHBlY3RlZCwgaSksIGFycmF5QWN0dWFs
OnNob3J0ZW5fYXJyYXkoYWN0dWFsLCBpKX0pOwogICAgICAgICB9CiAgICAgfQotICAgIGV4cG9z
ZShhc3NlcnRfYXJyYXlfZXF1YWxzLCAiYXNzZXJ0X2FycmF5X2VxdWFscyIpOworICAgIGV4cG9z
ZV9hc3NlcnQoYXNzZXJ0X2FycmF5X2VxdWFscywgImFzc2VydF9hcnJheV9lcXVhbHMiKTsKIAog
ICAgIGZ1bmN0aW9uIGFzc2VydF9hcnJheV9hcHByb3hfZXF1YWxzKGFjdHVhbCwgZXhwZWN0ZWQs
IGVwc2lsb24sIGRlc2NyaXB0aW9uKQogICAgIHsKQEAgLTExMjQsNyArMTM4MCw3IEBAIHBvbGlj
aWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAgICAgICAgICAgICAgICJhc3Nl
cnRfYXJyYXlfYXBwcm94X2VxdWFscyIsIGRlc2NyaXB0aW9uLAogICAgICAgICAgICAgICAgICAg
ICJwcm9wZXJ0eSAke2l9LCBwcm9wZXJ0eSBleHBlY3RlZCB0byBiZSAke2V4cGVjdGVkfSBidXQg
d2FzICR7YWN0dWFsfSIsCiAgICAgICAgICAgICAgICAgICAge2k6aSwgZXhwZWN0ZWQ6ZXhwZWN0
ZWQuaGFzT3duUHJvcGVydHkoaSkgPyAicHJlc2VudCIgOiAibWlzc2luZyIsCi0gICAgICAgICAg
ICAgICAgICAgYWN0dWFsOmFjdHVhbC5oYXNPd25Qcm9wZXJ0eShpKSA/ICJwcmVzZW50IiA6ICJt
aXNzaW5nIn0pOworICAgICAgICAgICAgICAgICAgICBhY3R1YWw6YWN0dWFsLmhhc093blByb3Bl
cnR5KGkpID8gInByZXNlbnQiIDogIm1pc3NpbmcifSk7CiAgICAgICAgICAgICBhc3NlcnQodHlw
ZW9mIGFjdHVhbFtpXSA9PT0gIm51bWJlciIsCiAgICAgICAgICAgICAgICAgICAgImFzc2VydF9h
cnJheV9hcHByb3hfZXF1YWxzIiwgZGVzY3JpcHRpb24sCiAgICAgICAgICAgICAgICAgICAgInBy
b3BlcnR5ICR7aX0sIGV4cGVjdGVkIGEgbnVtYmVyIGJ1dCBnb3QgYSAke3R5cGVfYWN0dWFsfSIs
CkBAIC0xMTM1LDcgKzEzOTEsNyBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFsz
XS4KICAgICAgICAgICAgICAgICAgICB7aTppLCBleHBlY3RlZDpleHBlY3RlZFtpXSwgYWN0dWFs
OmFjdHVhbFtpXSwgZXBzaWxvbjplcHNpbG9ufSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgZXhw
b3NlKGFzc2VydF9hcnJheV9hcHByb3hfZXF1YWxzLCAiYXNzZXJ0X2FycmF5X2FwcHJveF9lcXVh
bHMiKTsKKyAgICBleHBvc2VfYXNzZXJ0KGFzc2VydF9hcnJheV9hcHByb3hfZXF1YWxzLCAiYXNz
ZXJ0X2FycmF5X2FwcHJveF9lcXVhbHMiKTsKIAogICAgIGZ1bmN0aW9uIGFzc2VydF9hcHByb3hf
ZXF1YWxzKGFjdHVhbCwgZXhwZWN0ZWQsIGVwc2lsb24sIGRlc2NyaXB0aW9uKQogICAgIHsKQEAg
LTExNDcsMTIgKzE0MDMsMTggQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10u
CiAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgYSBudW1iZXIgYnV0IGdvdCBhICR7dHlwZV9hY3R1
YWx9IiwKICAgICAgICAgICAgICAgIHt0eXBlX2FjdHVhbDp0eXBlb2YgYWN0dWFsfSk7CiAKLSAg
ICAgICAgYXNzZXJ0KE1hdGguYWJzKGFjdHVhbCAtIGV4cGVjdGVkKSA8PSBlcHNpbG9uLAotICAg
ICAgICAgICAgICAgImFzc2VydF9hcHByb3hfZXF1YWxzIiwgZGVzY3JpcHRpb24sCi0gICAgICAg
ICAgICAgICAiZXhwZWN0ZWQgJHtleHBlY3RlZH0gKy8tICR7ZXBzaWxvbn0gYnV0IGdvdCAke2Fj
dHVhbH0iLAotICAgICAgICAgICAgICAge2V4cGVjdGVkOmV4cGVjdGVkLCBhY3R1YWw6YWN0dWFs
LCBlcHNpbG9uOmVwc2lsb259KTsKKyAgICAgICAgLy8gVGhlIGVwc2lsb24gbWF0aCBiZWxvdyBk
b2VzIG5vdCBwbGFjZSBuaWNlIHdpdGggTmFOIGFuZCBJbmZpbml0eQorICAgICAgICAvLyBCdXQg
aW4gdGhpcyBjYXNlIEluZmluaXR5ID0gSW5maW5pdHkgYW5kIE5hTiA9IE5hTgorICAgICAgICBp
ZiAoaXNGaW5pdGUoYWN0dWFsKSB8fCBpc0Zpbml0ZShleHBlY3RlZCkpIHsKKyAgICAgICAgICAg
IGFzc2VydChNYXRoLmFicyhhY3R1YWwgLSBleHBlY3RlZCkgPD0gZXBzaWxvbiwKKyAgICAgICAg
ICAgICAgICAgICAiYXNzZXJ0X2FwcHJveF9lcXVhbHMiLCBkZXNjcmlwdGlvbiwKKyAgICAgICAg
ICAgICAgICAgICAiZXhwZWN0ZWQgJHtleHBlY3RlZH0gKy8tICR7ZXBzaWxvbn0gYnV0IGdvdCAk
e2FjdHVhbH0iLAorICAgICAgICAgICAgICAgICAgIHtleHBlY3RlZDpleHBlY3RlZCwgYWN0dWFs
OmFjdHVhbCwgZXBzaWxvbjplcHNpbG9ufSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICBhc3NlcnRfZXF1YWxzKGFjdHVhbCwgZXhwZWN0ZWQpOworICAgICAgICB9CiAgICAgfQotICAg
IGV4cG9zZShhc3NlcnRfYXBwcm94X2VxdWFscywgImFzc2VydF9hcHByb3hfZXF1YWxzIik7Cisg
ICAgZXhwb3NlX2Fzc2VydChhc3NlcnRfYXBwcm94X2VxdWFscywgImFzc2VydF9hcHByb3hfZXF1
YWxzIik7CiAKICAgICBmdW5jdGlvbiBhc3NlcnRfbGVzc190aGFuKGFjdHVhbCwgZXhwZWN0ZWQs
IGRlc2NyaXB0aW9uKQogICAgIHsKQEAgLTExNjksNyArMTQzMSw3IEBAIHBvbGljaWVzIGFuZCBj
b250cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAgICAgICAgICAgImV4cGVjdGVkIGEgbnVtYmVy
IGxlc3MgdGhhbiAke2V4cGVjdGVkfSBidXQgZ290ICR7YWN0dWFsfSIsCiAgICAgICAgICAgICAg
ICB7ZXhwZWN0ZWQ6ZXhwZWN0ZWQsIGFjdHVhbDphY3R1YWx9KTsKICAgICB9Ci0gICAgZXhwb3Nl
KGFzc2VydF9sZXNzX3RoYW4sICJhc3NlcnRfbGVzc190aGFuIik7CisgICAgZXhwb3NlX2Fzc2Vy
dChhc3NlcnRfbGVzc190aGFuLCAiYXNzZXJ0X2xlc3NfdGhhbiIpOwogCiAgICAgZnVuY3Rpb24g
YXNzZXJ0X2dyZWF0ZXJfdGhhbihhY3R1YWwsIGV4cGVjdGVkLCBkZXNjcmlwdGlvbikKICAgICB7
CkBAIC0xMTg2LDcgKzE0NDgsNyBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFsz
XS4KICAgICAgICAgICAgICAgICJleHBlY3RlZCBhIG51bWJlciBncmVhdGVyIHRoYW4gJHtleHBl
Y3RlZH0gYnV0IGdvdCAke2FjdHVhbH0iLAogICAgICAgICAgICAgICAge2V4cGVjdGVkOmV4cGVj
dGVkLCBhY3R1YWw6YWN0dWFsfSk7CiAgICAgfQotICAgIGV4cG9zZShhc3NlcnRfZ3JlYXRlcl90
aGFuLCAiYXNzZXJ0X2dyZWF0ZXJfdGhhbiIpOworICAgIGV4cG9zZV9hc3NlcnQoYXNzZXJ0X2dy
ZWF0ZXJfdGhhbiwgImFzc2VydF9ncmVhdGVyX3RoYW4iKTsKIAogICAgIGZ1bmN0aW9uIGFzc2Vy
dF9iZXR3ZWVuX2V4Y2x1c2l2ZShhY3R1YWwsIGxvd2VyLCB1cHBlciwgZGVzY3JpcHRpb24pCiAg
ICAgewpAQCAtMTIwNCw3ICsxNDY2LDcgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3Jt
cyBbM10uCiAgICAgICAgICAgICAgICAiYW5kIGxlc3MgdGhhbiAke3VwcGVyfSBidXQgZ290ICR7
YWN0dWFsfSIsCiAgICAgICAgICAgICAgICB7bG93ZXI6bG93ZXIsIHVwcGVyOnVwcGVyLCBhY3R1
YWw6YWN0dWFsfSk7CiAgICAgfQotICAgIGV4cG9zZShhc3NlcnRfYmV0d2Vlbl9leGNsdXNpdmUs
ICJhc3NlcnRfYmV0d2Vlbl9leGNsdXNpdmUiKTsKKyAgICBleHBvc2VfYXNzZXJ0KGFzc2VydF9i
ZXR3ZWVuX2V4Y2x1c2l2ZSwgImFzc2VydF9iZXR3ZWVuX2V4Y2x1c2l2ZSIpOwogCiAgICAgZnVu
Y3Rpb24gYXNzZXJ0X2xlc3NfdGhhbl9lcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBkZXNjcmlwdGlv
bikKICAgICB7CkBAIC0xMjIxLDcgKzE0ODMsNyBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9u
IGZvcm1zIFszXS4KICAgICAgICAgICAgICAgICJleHBlY3RlZCBhIG51bWJlciBsZXNzIHRoYW4g
b3IgZXF1YWwgdG8gJHtleHBlY3RlZH0gYnV0IGdvdCAke2FjdHVhbH0iLAogICAgICAgICAgICAg
ICAge2V4cGVjdGVkOmV4cGVjdGVkLCBhY3R1YWw6YWN0dWFsfSk7CiAgICAgfQotICAgIGV4cG9z
ZShhc3NlcnRfbGVzc190aGFuX2VxdWFsLCAiYXNzZXJ0X2xlc3NfdGhhbl9lcXVhbCIpOworICAg
IGV4cG9zZV9hc3NlcnQoYXNzZXJ0X2xlc3NfdGhhbl9lcXVhbCwgImFzc2VydF9sZXNzX3RoYW5f
ZXF1YWwiKTsKIAogICAgIGZ1bmN0aW9uIGFzc2VydF9ncmVhdGVyX3RoYW5fZXF1YWwoYWN0dWFs
LCBleHBlY3RlZCwgZGVzY3JpcHRpb24pCiAgICAgewpAQCAtMTIzOCw3ICsxNTAwLDcgQEAgcG9s
aWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAgICAgICAgICAiZXhwZWN0
ZWQgYSBudW1iZXIgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICR7ZXhwZWN0ZWR9IGJ1dCBnb3Qg
JHthY3R1YWx9IiwKICAgICAgICAgICAgICAgIHtleHBlY3RlZDpleHBlY3RlZCwgYWN0dWFsOmFj
dHVhbH0pOwogICAgIH0KLSAgICBleHBvc2UoYXNzZXJ0X2dyZWF0ZXJfdGhhbl9lcXVhbCwgImFz
c2VydF9ncmVhdGVyX3RoYW5fZXF1YWwiKTsKKyAgICBleHBvc2VfYXNzZXJ0KGFzc2VydF9ncmVh
dGVyX3RoYW5fZXF1YWwsICJhc3NlcnRfZ3JlYXRlcl90aGFuX2VxdWFsIik7CiAKICAgICBmdW5j
dGlvbiBhc3NlcnRfYmV0d2Vlbl9pbmNsdXNpdmUoYWN0dWFsLCBsb3dlciwgdXBwZXIsIGRlc2Ny
aXB0aW9uKQogICAgIHsKQEAgLTEyNTYsNyArMTUxOCw3IEBAIHBvbGljaWVzIGFuZCBjb250cmli
dXRpb24gZm9ybXMgWzNdLgogICAgICAgICAgICAgICAgImFuZCBsZXNzIHRoYW4gb3IgZXF1YWwg
dG8gJHt1cHBlcn0gYnV0IGdvdCAke2FjdHVhbH0iLAogICAgICAgICAgICAgICAge2xvd2VyOmxv
d2VyLCB1cHBlcjp1cHBlciwgYWN0dWFsOmFjdHVhbH0pOwogICAgIH0KLSAgICBleHBvc2UoYXNz
ZXJ0X2JldHdlZW5faW5jbHVzaXZlLCAiYXNzZXJ0X2JldHdlZW5faW5jbHVzaXZlIik7CisgICAg
ZXhwb3NlX2Fzc2VydChhc3NlcnRfYmV0d2Vlbl9pbmNsdXNpdmUsICJhc3NlcnRfYmV0d2Vlbl9p
bmNsdXNpdmUiKTsKIAogICAgIGZ1bmN0aW9uIGFzc2VydF9yZWdleHBfbWF0Y2goYWN0dWFsLCBl
eHBlY3RlZCwgZGVzY3JpcHRpb24pIHsKICAgICAgICAgLyoKQEAgLTEyNjcsMzMgKzE1MjksMzgg
QEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAgICAgICAgICAi
ZXhwZWN0ZWQgJHtleHBlY3RlZH0gYnV0IGdvdCAke2FjdHVhbH0iLAogICAgICAgICAgICAgICAg
e2V4cGVjdGVkOmV4cGVjdGVkLCBhY3R1YWw6YWN0dWFsfSk7CiAgICAgfQotICAgIGV4cG9zZShh
c3NlcnRfcmVnZXhwX21hdGNoLCAiYXNzZXJ0X3JlZ2V4cF9tYXRjaCIpOworICAgIGV4cG9zZV9h
c3NlcnQoYXNzZXJ0X3JlZ2V4cF9tYXRjaCwgImFzc2VydF9yZWdleHBfbWF0Y2giKTsKIAogICAg
IGZ1bmN0aW9uIGFzc2VydF9jbGFzc19zdHJpbmcob2JqZWN0LCBjbGFzc19zdHJpbmcsIGRlc2Ny
aXB0aW9uKSB7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoe30udG9TdHJpbmcuY2FsbChvYmplY3Qp
LCAiW29iamVjdCAiICsgY2xhc3Nfc3RyaW5nICsgIl0iLAotICAgICAgICAgICAgICAgICAgICAg
IGRlc2NyaXB0aW9uKTsKKyAgICAgICAgdmFyIGFjdHVhbCA9IHt9LnRvU3RyaW5nLmNhbGwob2Jq
ZWN0KTsKKyAgICAgICAgdmFyIGV4cGVjdGVkID0gIltvYmplY3QgIiArIGNsYXNzX3N0cmluZyAr
ICJdIjsKKyAgICAgICAgYXNzZXJ0KHNhbWVfdmFsdWUoYWN0dWFsLCBleHBlY3RlZCksICJhc3Nl
cnRfY2xhc3Nfc3RyaW5nIiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgJHtleHBlY3RlZH0gYnV0IGdvdCAke2FjdHVh
bH0iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2V4cGVj
dGVkOmV4cGVjdGVkLCBhY3R1YWw6YWN0dWFsfSk7CiAgICAgfQotICAgIGV4cG9zZShhc3NlcnRf
Y2xhc3Nfc3RyaW5nLCAiYXNzZXJ0X2NsYXNzX3N0cmluZyIpOwotCisgICAgZXhwb3NlX2Fzc2Vy
dChhc3NlcnRfY2xhc3Nfc3RyaW5nLCAiYXNzZXJ0X2NsYXNzX3N0cmluZyIpOwogCiAgICAgZnVu
Y3Rpb24gYXNzZXJ0X293bl9wcm9wZXJ0eShvYmplY3QsIHByb3BlcnR5X25hbWUsIGRlc2NyaXB0
aW9uKSB7CiAgICAgICAgIGFzc2VydChvYmplY3QuaGFzT3duUHJvcGVydHkocHJvcGVydHlfbmFt
ZSksCiAgICAgICAgICAgICAgICAiYXNzZXJ0X293bl9wcm9wZXJ0eSIsIGRlc2NyaXB0aW9uLAog
ICAgICAgICAgICAgICAgImV4cGVjdGVkIHByb3BlcnR5ICR7cH0gbWlzc2luZyIsIHtwOnByb3Bl
cnR5X25hbWV9KTsKICAgICB9Ci0gICAgZXhwb3NlKGFzc2VydF9vd25fcHJvcGVydHksICJhc3Nl
cnRfb3duX3Byb3BlcnR5Iik7CisgICAgZXhwb3NlX2Fzc2VydChhc3NlcnRfb3duX3Byb3BlcnR5
LCAiYXNzZXJ0X293bl9wcm9wZXJ0eSIpOwogCiAgICAgZnVuY3Rpb24gYXNzZXJ0X25vdF9vd25f
cHJvcGVydHkob2JqZWN0LCBwcm9wZXJ0eV9uYW1lLCBkZXNjcmlwdGlvbikgewogICAgICAgICBh
c3NlcnQoIW9iamVjdC5oYXNPd25Qcm9wZXJ0eShwcm9wZXJ0eV9uYW1lKSwKICAgICAgICAgICAg
ICAgICJhc3NlcnRfbm90X293bl9wcm9wZXJ0eSIsIGRlc2NyaXB0aW9uLAogICAgICAgICAgICAg
ICAgInVuZXhwZWN0ZWQgcHJvcGVydHkgJHtwfSBpcyBmb3VuZCBvbiBvYmplY3QiLCB7cDpwcm9w
ZXJ0eV9uYW1lfSk7CiAgICAgfQotICAgIGV4cG9zZShhc3NlcnRfbm90X293bl9wcm9wZXJ0eSwg
ImFzc2VydF9ub3Rfb3duX3Byb3BlcnR5Iik7CisgICAgZXhwb3NlX2Fzc2VydChhc3NlcnRfbm90
X293bl9wcm9wZXJ0eSwgImFzc2VydF9ub3Rfb3duX3Byb3BlcnR5Iik7CiAKICAgICBmdW5jdGlv
biBfYXNzZXJ0X2luaGVyaXRzKG5hbWUpIHsKICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChvYmpl
Y3QsIHByb3BlcnR5X25hbWUsIGRlc2NyaXB0aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICBh
c3NlcnQodHlwZW9mIG9iamVjdCA9PT0gIm9iamVjdCIgfHwgdHlwZW9mIG9iamVjdCA9PT0gImZ1
bmN0aW9uIiwKKyAgICAgICAgICAgIGFzc2VydCgodHlwZW9mIG9iamVjdCA9PT0gIm9iamVjdCIg
JiYgb2JqZWN0ICE9PSBudWxsKSB8fAorICAgICAgICAgICAgICAgICAgIHR5cGVvZiBvYmplY3Qg
PT09ICJmdW5jdGlvbiIgfHwKKyAgICAgICAgICAgICAgICAgICAvLyBPciBoYXMgW1tJc0hUTUxE
REFdXSBzbG90CisgICAgICAgICAgICAgICAgICAgU3RyaW5nKG9iamVjdCkgPT09ICJbb2JqZWN0
IEhUTUxBbGxDb2xsZWN0aW9uXSIsCiAgICAgICAgICAgICAgICAgICAgbmFtZSwgZGVzY3JpcHRp
b24sCiAgICAgICAgICAgICAgICAgICAgInByb3ZpZGVkIHZhbHVlIGlzIG5vdCBhbiBvYmplY3Qi
KTsKIApAQCAtMTMxMiw4ICsxNTc5LDggQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3Jt
cyBbM10uCiAgICAgICAgICAgICAgICAgICAge3A6cHJvcGVydHlfbmFtZX0pOwogICAgICAgICB9
OwogICAgIH0KLSAgICBleHBvc2UoX2Fzc2VydF9pbmhlcml0cygiYXNzZXJ0X2luaGVyaXRzIiks
ICJhc3NlcnRfaW5oZXJpdHMiKTsKLSAgICBleHBvc2UoX2Fzc2VydF9pbmhlcml0cygiYXNzZXJ0
X2lkbF9hdHRyaWJ1dGUiKSwgImFzc2VydF9pZGxfYXR0cmlidXRlIik7CisgICAgZXhwb3NlX2Fz
c2VydChfYXNzZXJ0X2luaGVyaXRzKCJhc3NlcnRfaW5oZXJpdHMiKSwgImFzc2VydF9pbmhlcml0
cyIpOworICAgIGV4cG9zZV9hc3NlcnQoX2Fzc2VydF9pbmhlcml0cygiYXNzZXJ0X2lkbF9hdHRy
aWJ1dGUiKSwgImFzc2VydF9pZGxfYXR0cmlidXRlIik7CiAKICAgICBmdW5jdGlvbiBhc3NlcnRf
cmVhZG9ubHkob2JqZWN0LCBwcm9wZXJ0eV9uYW1lLCBkZXNjcmlwdGlvbikKICAgICB7CkBAIC0x
MzMwLDUwICsxNTk3LDE1NiBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4K
ICAgICAgICAgICAgICBvYmplY3RbcHJvcGVydHlfbmFtZV0gPSBpbml0aWFsX3ZhbHVlOwogICAg
ICAgICAgfQogICAgIH0KLSAgICBleHBvc2UoYXNzZXJ0X3JlYWRvbmx5LCAiYXNzZXJ0X3JlYWRv
bmx5Iik7CisgICAgZXhwb3NlX2Fzc2VydChhc3NlcnRfcmVhZG9ubHksICJhc3NlcnRfcmVhZG9u
bHkiKTsKIAogICAgIC8qKgotICAgICAqIEFzc2VydCBhbiBFeGNlcHRpb24gd2l0aCB0aGUgZXhw
ZWN0ZWQgY29kZSBpcyB0aHJvd24uCisgICAgICogQXNzZXJ0IGEgSlMgRXJyb3Igd2l0aCB0aGUg
ZXhwZWN0ZWQgY29uc3RydWN0b3IgaXMgdGhyb3duLgogICAgICAqCi0gICAgICogQHBhcmFtIHtv
YmplY3R8bnVtYmVyfHN0cmluZ30gY29kZSBUaGUgZXhwZWN0ZWQgZXhjZXB0aW9uIGNvZGUuCisg
ICAgICogQHBhcmFtIHtvYmplY3R9IGNvbnN0cnVjdG9yIFRoZSBleHBlY3RlZCBleGNlcHRpb24g
Y29uc3RydWN0b3IuCiAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBGdW5jdGlvbiB3aGlj
aCBzaG91bGQgdGhyb3cuCiAgICAgICogQHBhcmFtIHtzdHJpbmd9IGRlc2NyaXB0aW9uIEVycm9y
IGRlc2NyaXB0aW9uIGZvciB0aGUgY2FzZSB0aGF0IHRoZSBlcnJvciBpcyBub3QgdGhyb3duLgog
ICAgICAqLwotICAgIGZ1bmN0aW9uIGFzc2VydF90aHJvd3MoY29kZSwgZnVuYywgZGVzY3JpcHRp
b24pCisgICAgZnVuY3Rpb24gYXNzZXJ0X3Rocm93c19qcyhjb25zdHJ1Y3RvciwgZnVuYywgZGVz
Y3JpcHRpb24pCisgICAgeworICAgICAgICBhc3NlcnRfdGhyb3dzX2pzX2ltcGwoY29uc3RydWN0
b3IsIGZ1bmMsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFz
c2VydF90aHJvd3NfanMiKTsKKyAgICB9CisgICAgZXhwb3NlX2Fzc2VydChhc3NlcnRfdGhyb3dz
X2pzLCAiYXNzZXJ0X3Rocm93c19qcyIpOworCisgICAgLyoqCisgICAgICogTGlrZSBhc3NlcnRf
dGhyb3dzX2pzIGJ1dCBhbGxvd3Mgc3BlY2lmeWluZyB0aGUgYXNzZXJ0aW9uIHR5cGUKKyAgICAg
KiAoYXNzZXJ0X3Rocm93c19qcyBvciBwcm9taXNlX3JlamVjdHNfanMsIGluIHByYWN0aWNlKS4K
KyAgICAgKi8KKyAgICBmdW5jdGlvbiBhc3NlcnRfdGhyb3dzX2pzX2ltcGwoY29uc3RydWN0b3Is
IGZ1bmMsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
c3NlcnRpb25fdHlwZSkKICAgICB7CiAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICBmdW5jLmNh
bGwodGhpcyk7Ci0gICAgICAgICAgICBhc3NlcnQoZmFsc2UsICJhc3NlcnRfdGhyb3dzIiwgZGVz
Y3JpcHRpb24sCisgICAgICAgICAgICBhc3NlcnQoZmFsc2UsIGFzc2VydGlvbl90eXBlLCBkZXNj
cmlwdGlvbiwKICAgICAgICAgICAgICAgICAgICAiJHtmdW5jfSBkaWQgbm90IHRocm93Iiwge2Z1
bmM6ZnVuY30pOwogICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICBpZiAoZSBpbnN0
YW5jZW9mIEFzc2VydGlvbkVycm9yKSB7CiAgICAgICAgICAgICAgICAgdGhyb3cgZTsKICAgICAg
ICAgICAgIH0KIAorICAgICAgICAgICAgLy8gQmFzaWMgc2FuaXR5LWNoZWNrcyBvbiB0aGUgdGhy
b3duIGV4Y2VwdGlvbi4KICAgICAgICAgICAgIGFzc2VydCh0eXBlb2YgZSA9PT0gIm9iamVjdCIs
Ci0gICAgICAgICAgICAgICAgICAgImFzc2VydF90aHJvd3MiLCBkZXNjcmlwdGlvbiwKKyAgICAg
ICAgICAgICAgICAgICBhc3NlcnRpb25fdHlwZSwgZGVzY3JpcHRpb24sCiAgICAgICAgICAgICAg
ICAgICAgIiR7ZnVuY30gdGhyZXcgJHtlfSB3aXRoIHR5cGUgJHt0eXBlfSwgbm90IGFuIG9iamVj
dCIsCiAgICAgICAgICAgICAgICAgICAge2Z1bmM6ZnVuYywgZTplLCB0eXBlOnR5cGVvZiBlfSk7
CiAKICAgICAgICAgICAgIGFzc2VydChlICE9PSBudWxsLAotICAgICAgICAgICAgICAgICAgICJh
c3NlcnRfdGhyb3dzIiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgYXNzZXJ0aW9u
X3R5cGUsIGRlc2NyaXB0aW9uLAogICAgICAgICAgICAgICAgICAgICIke2Z1bmN9IHRocmV3IG51
bGwsIG5vdCBhbiBvYmplY3QiLAogICAgICAgICAgICAgICAgICAgIHtmdW5jOmZ1bmN9KTsKIAot
ICAgICAgICAgICAgaWYgKGNvZGUgPT09IG51bGwpIHsKLSAgICAgICAgICAgICAgICB0aHJvdyBu
ZXcgQXNzZXJ0aW9uRXJyb3IoJ1Rlc3QgYnVnOiBuZWVkIHRvIHBhc3MgZXhjZXB0aW9uIHRvIGFz
c2VydF90aHJvd3MoKScpOworICAgICAgICAgICAgLy8gQmFzaWMgc2FuaXR5LWNoZWNrIG9uIHRo
ZSBwYXNzZWQtaW4gY29uc3RydWN0b3IKKyAgICAgICAgICAgIGFzc2VydCh0eXBlb2YgY29uc3Ry
dWN0b3IgPT0gImZ1bmN0aW9uIiwKKyAgICAgICAgICAgICAgICAgICBhc3NlcnRpb25fdHlwZSwg
ZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgIiR7Y29uc3RydWN0b3J9IGlzIG5vdCBh
IGNvbnN0cnVjdG9yIiwKKyAgICAgICAgICAgICAgICAgICB7Y29uc3RydWN0b3I6Y29uc3RydWN0
b3J9KTsKKyAgICAgICAgICAgIHZhciBvYmogPSBjb25zdHJ1Y3RvcjsKKyAgICAgICAgICAgIHdo
aWxlIChvYmopIHsKKyAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG9iaiA9PT0gImZ1bmN0aW9u
IiAmJgorICAgICAgICAgICAgICAgICAgICBvYmoubmFtZSA9PT0gIkVycm9yIikgeworICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
b2JqID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iaik7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBpZiAodHlwZW9mIGNvZGUgPT09ICJvYmplY3QiKSB7Ci0gICAgICAgICAgICAgICAgYXNz
ZXJ0KCJuYW1lIiBpbiBlICYmIGUubmFtZSA9PSBjb2RlLm5hbWUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICJhc3NlcnRfdGhyb3dzIiwgZGVzY3JpcHRpb24sCi0gICAgICAgICAgICAgICAgICAg
ICAgICIke2Z1bmN9IHRocmV3ICR7YWN0dWFsfSAoJHthY3R1YWxfbmFtZX0pIGV4cGVjdGVkICR7
ZXhwZWN0ZWR9ICgke2V4cGVjdGVkX25hbWV9KSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB7ZnVuYzpmdW5jLCBhY3R1YWw6ZSwgYWN0dWFsX25hbWU6ZS5uYW1lLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkOmNvZGUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfbmFtZTpjb2RlLm5hbWV9KTsK
LSAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBhc3NlcnQob2JqICE9IG51bGws
CisgICAgICAgICAgICAgICAgICAgYXNzZXJ0aW9uX3R5cGUsIGRlc2NyaXB0aW9uLAorICAgICAg
ICAgICAgICAgICAgICIke2NvbnN0cnVjdG9yfSBpcyBub3QgYW4gRXJyb3Igc3VidHlwZSIsCisg
ICAgICAgICAgICAgICAgICAge2NvbnN0cnVjdG9yOmNvbnN0cnVjdG9yfSk7CisKKyAgICAgICAg
ICAgIC8vIEFuZCBjaGVja2luZyB0aGF0IG91ciBleGNlcHRpb24gaXMgcmVhc29uYWJsZQorICAg
ICAgICAgICAgYXNzZXJ0KGUuY29uc3RydWN0b3IgPT09IGNvbnN0cnVjdG9yICYmCisgICAgICAg
ICAgICAgICAgICAgZS5uYW1lID09PSBjb25zdHJ1Y3Rvci5uYW1lLAorICAgICAgICAgICAgICAg
ICAgIGFzc2VydGlvbl90eXBlLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAiJHtm
dW5jfSB0aHJldyAke2FjdHVhbH0gKCR7YWN0dWFsX25hbWV9KSBleHBlY3RlZCBpbnN0YW5jZSBv
ZiAke2V4cGVjdGVkfSAoJHtleHBlY3RlZF9uYW1lfSkiLAorICAgICAgICAgICAgICAgICAgIHtm
dW5jOmZ1bmMsIGFjdHVhbDplLCBhY3R1YWxfbmFtZTplLm5hbWUsCisgICAgICAgICAgICAgICAg
ICAgIGV4cGVjdGVkOmNvbnN0cnVjdG9yLAorICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9u
YW1lOmNvbnN0cnVjdG9yLm5hbWV9KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAg
ICAqIEFzc2VydCBhIERPTUV4Y2VwdGlvbiB3aXRoIHRoZSBleHBlY3RlZCB0eXBlIGlzIHRocm93
bi4KKyAgICAgKgorICAgICAqIEBwYXJhbSB7bnVtYmVyfHN0cmluZ30gdHlwZSBUaGUgZXhwZWN0
ZWQgZXhjZXB0aW9uIG5hbWUgb3IgY29kZS4gIFNlZSB0aGUKKyAgICAgKiAgICAgICAgdGFibGUg
b2YgbmFtZXMgYW5kIGNvZGVzIGF0CisgICAgICogICAgICAgIGh0dHBzOi8vaGV5Y2FtLmdpdGh1
Yi5pby93ZWJpZGwvI2Rmbi1lcnJvci1uYW1lcy10YWJsZQorICAgICAqICAgICAgICBJZiBhIG51
bWJlciBpcyBwYXNzZWQgaXQgc2hvdWxkIGJlIG9uZSBvZiB0aGUgbnVtZXJpYyBjb2RlIHZhbHVl
cworICAgICAqICAgICAgICBpbiB0aGF0IHRhYmxlIChlLmcuIDMsIDQsIGV0YykuICBJZiBhIHN0
cmluZyBpcyBwYXNzZWQgaXQgY2FuCisgICAgICogICAgICAgIGVpdGhlciBiZSBhbiBleGNlcHRp
b24gbmFtZSAoZS5nLiAiSGllcmFyY2h5UmVxdWVzdEVycm9yIiwKKyAgICAgKiAgICAgICAgIldy
b25nRG9jdW1lbnRFcnJvciIpIG9yIHRoZSBuYW1lIG9mIHRoZSBjb3JyZXNwb25kaW5nIGVycm9y
IGNvZGUKKyAgICAgKiAgICAgICAgKGUuZy4gIkhJRVJBUkNIWV9SRVFVRVNUX0VSUiIsICJXUk9O
R19ET0NVTUVOVF9FUlIiKS4KKyAgICAgKgorICAgICAqIEZvciB0aGUgcmVtYWluaW5nIGFyZ3Vt
ZW50cywgdGhlcmUgYXJlIHR3byB3YXlzIG9mIGNhbGxpbmcKKyAgICAgKiBwcm9taXNlX3JlamVj
dHNfZG9tOgorICAgICAqCisgICAgICogMSkgSWYgdGhlIERPTUV4Y2VwdGlvbiBpcyBleHBlY3Rl
ZCB0byBjb21lIGZyb20gdGhlIGN1cnJlbnQgZ2xvYmFsLCB0aGUKKyAgICAgKiBzZWNvbmQgYXJn
dW1lbnQgc2hvdWxkIGJlIHRoZSBmdW5jdGlvbiBleHBlY3RlZCB0byB0aHJvdyBhbmQgYSB0aGly
ZCwKKyAgICAgKiBvcHRpb25hbCwgYXJndW1lbnQgaXMgdGhlIGFzc2VydGlvbiBkZXNjcmlwdGlv
bi4KKyAgICAgKgorICAgICAqIDIpIElmIHRoZSBET01FeGNlcHRpb24gaXMgZXhwZWN0ZWQgdG8g
Y29tZSBmcm9tIHNvbWUgb3RoZXIgZ2xvYmFsLCB0aGUKKyAgICAgKiBzZWNvbmQgYXJndW1lbnQg
c2hvdWxkIGJlIHRoZSBET01FeGNlcHRpb24gY29uc3RydWN0b3IgZnJvbSB0aGF0IGdsb2JhbCwK
KyAgICAgKiB0aGUgdGhpcmQgYXJndW1lbnQgdGhlIGZ1bmN0aW9uIGV4cGVjdGVkIHRvIHRocm93
LCBhbmQgdGhlIGZvdXJ0aCwgb3B0aW9uYWwsCisgICAgICogYXJndW1lbnQgdGhlIGFzc2VydGlv
biBkZXNjcmlwdGlvbi4KKyAgICAgKi8KKyAgICBmdW5jdGlvbiBhc3NlcnRfdGhyb3dzX2RvbSh0
eXBlLCBmdW5jT3JDb25zdHJ1Y3RvciwgZGVzY3JpcHRpb25PckZ1bmMsIG1heWJlRGVzY3JpcHRp
b24pCisgICAgeworICAgICAgICBsZXQgY29uc3RydWN0b3IsIGZ1bmMsIGRlc2NyaXB0aW9uOwor
ICAgICAgICBpZiAoZnVuY09yQ29uc3RydWN0b3IubmFtZSA9PT0gIkRPTUV4Y2VwdGlvbiIpIHsK
KyAgICAgICAgICAgIGNvbnN0cnVjdG9yID0gZnVuY09yQ29uc3RydWN0b3I7CisgICAgICAgICAg
ICBmdW5jID0gZGVzY3JpcHRpb25PckZ1bmM7CisgICAgICAgICAgICBkZXNjcmlwdGlvbiA9IG1h
eWJlRGVzY3JpcHRpb247CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjb25zdHJ1Y3Rv
ciA9IHNlbGYuRE9NRXhjZXB0aW9uOworICAgICAgICAgICAgZnVuYyA9IGZ1bmNPckNvbnN0cnVj
dG9yOworICAgICAgICAgICAgZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbk9yRnVuYzsKKyAgICAg
ICAgICAgIGFzc2VydChtYXliZURlc2NyaXB0aW9uID09PSB1bmRlZmluZWQsCisgICAgICAgICAg
ICAgICAgICAgIlRvbyBtYW55IGFyZ3MgcGFzZWQgdG8gbm8tY29uc3RydWN0b3IgdmVyc2lvbiBv
ZiBhc3NlcnRfdGhyb3dzX2RvbSIpOworICAgICAgICB9CisgICAgICAgIGFzc2VydF90aHJvd3Nf
ZG9tX2ltcGwodHlwZSwgZnVuYywgZGVzY3JpcHRpb24sICJhc3NlcnRfdGhyb3dzX2RvbSIsIGNv
bnN0cnVjdG9yKQorICAgIH0KKyAgICBleHBvc2VfYXNzZXJ0KGFzc2VydF90aHJvd3NfZG9tLCAi
YXNzZXJ0X3Rocm93c19kb20iKTsKKworICAgIC8qKgorICAgICAqIFNpbWlsYXIgdG8gYXNzZXJ0
X3Rocm93c19kb20gYnV0IGFsbG93cyBzcGVjaWZ5aW5nIHRoZSBhc3NlcnRpb24gdHlwZQorICAg
ICAqIChhc3NlcnRfdGhyb3dzX2RvbSBvciBwcm9taXNlX3JlamVjdHNfZG9tLCBpbiBwcmFjdGlj
ZSkuICBUaGUKKyAgICAgKiAiY29uc3RydWN0b3IiIGFyZ3VtZW50IG11c3QgYmUgdGhlIERPTUV4
Y2VwdGlvbiBjb25zdHJ1Y3RvciBmcm9tIHRoZQorICAgICAqIGdsb2JhbCB3ZSBleHBlY3QgdGhl
IGV4Y2VwdGlvbiB0byBjb21lIGZyb20uCisgICAgICovCisgICAgZnVuY3Rpb24gYXNzZXJ0X3Ro
cm93c19kb21faW1wbCh0eXBlLCBmdW5jLCBkZXNjcmlwdGlvbiwgYXNzZXJ0aW9uX3R5cGUsIGNv
bnN0cnVjdG9yKQorICAgIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZ1bmMuY2FsbCh0
aGlzKTsKKyAgICAgICAgICAgIGFzc2VydChmYWxzZSwgYXNzZXJ0aW9uX3R5cGUsIGRlc2NyaXB0
aW9uLAorICAgICAgICAgICAgICAgICAgICIke2Z1bmN9IGRpZCBub3QgdGhyb3ciLCB7ZnVuYzpm
dW5jfSk7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIGlmIChlIGluc3RhbmNl
b2YgQXNzZXJ0aW9uRXJyb3IpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBlOwogICAgICAgICAg
ICAgfQogCi0gICAgICAgICAgICB2YXIgY29kZV9uYW1lX21hcCA9IHsKKyAgICAgICAgICAgIC8v
IEJhc2ljIHNhbml0eS1jaGVja3Mgb24gdGhlIHRocm93biBleGNlcHRpb24uCisgICAgICAgICAg
ICBhc3NlcnQodHlwZW9mIGUgPT09ICJvYmplY3QiLAorICAgICAgICAgICAgICAgICAgIGFzc2Vy
dGlvbl90eXBlLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAiJHtmdW5jfSB0aHJl
dyAke2V9IHdpdGggdHlwZSAke3R5cGV9LCBub3QgYW4gb2JqZWN0IiwKKyAgICAgICAgICAgICAg
ICAgICB7ZnVuYzpmdW5jLCBlOmUsIHR5cGU6dHlwZW9mIGV9KTsKKworICAgICAgICAgICAgYXNz
ZXJ0KGUgIT09IG51bGwsCisgICAgICAgICAgICAgICAgICAgYXNzZXJ0aW9uX3R5cGUsIGRlc2Ny
aXB0aW9uLAorICAgICAgICAgICAgICAgICAgICIke2Z1bmN9IHRocmV3IG51bGwsIG5vdCBhbiBv
YmplY3QiLAorICAgICAgICAgICAgICAgICAgIHtmdW5jOmZ1bmN9KTsKKworICAgICAgICAgICAg
Ly8gU2FuaXR5LWNoZWNrIG91ciB0eXBlCisgICAgICAgICAgICBhc3NlcnQodHlwZW9mIHR5cGUg
PT0gIm51bWJlciIgfHwKKyAgICAgICAgICAgICAgICAgICB0eXBlb2YgdHlwZSA9PSAic3RyaW5n
IiwKKyAgICAgICAgICAgICAgICAgICBhc3NlcnRpb25fdHlwZSwgZGVzY3JpcHRpb24sCisgICAg
ICAgICAgICAgICAgICAgIiR7dHlwZX0gaXMgbm90IGEgbnVtYmVyIG9yIHN0cmluZyIsCisgICAg
ICAgICAgICAgICAgICAge3R5cGU6dHlwZX0pOworCisgICAgICAgICAgICB2YXIgY29kZW5hbWVf
bmFtZV9tYXAgPSB7CiAgICAgICAgICAgICAgICAgSU5ERVhfU0laRV9FUlI6ICdJbmRleFNpemVF
cnJvcicsCiAgICAgICAgICAgICAgICAgSElFUkFSQ0hZX1JFUVVFU1RfRVJSOiAnSGllcmFyY2h5
UmVxdWVzdEVycm9yJywKICAgICAgICAgICAgICAgICBXUk9OR19ET0NVTUVOVF9FUlI6ICdXcm9u
Z0RvY3VtZW50RXJyb3InLApAQCAtMTM5OCw4ICsxNzcxLDYgQEAgcG9saWNpZXMgYW5kIGNvbnRy
aWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAgICAgICAgICAgREFUQV9DTE9ORV9FUlI6ICdEYXRh
Q2xvbmVFcnJvcicKICAgICAgICAgICAgIH07CiAKLSAgICAgICAgICAgIHZhciBuYW1lID0gY29k
ZSBpbiBjb2RlX25hbWVfbWFwID8gY29kZV9uYW1lX21hcFtjb2RlXSA6IGNvZGU7Ci0KICAgICAg
ICAgICAgIHZhciBuYW1lX2NvZGVfbWFwID0gewogICAgICAgICAgICAgICAgIEluZGV4U2l6ZUVy
cm9yOiAxLAogICAgICAgICAgICAgICAgIEhpZXJhcmNoeVJlcXVlc3RFcnJvcjogMywKQEAgLTE0
NDMsMTkgKzE4MTQsMjMgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICB2YXIgcmVxdWly
ZWRfcHJvcHMgPSB7IGNvZGU6IGNvZGUgfTsKKyAgICAgICAgICAgIHZhciByZXF1aXJlZF9wcm9w
cyA9IHt9OworICAgICAgICAgICAgdmFyIG5hbWU7CiAKLSAgICAgICAgICAgIGlmICh0eXBlb2Yg
Y29kZSA9PT0gIm51bWJlciIpIHsKLSAgICAgICAgICAgICAgICBpZiAoY29kZSA9PT0gMCkgewot
ICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRXJyb3IoJ1Rlc3QgYnVnOiBh
bWJpZ3VvdXMgRE9NRXhjZXB0aW9uIGNvZGUgMCBwYXNzZWQgdG8gYXNzZXJ0X3Rocm93cygpJyk7
Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmICghKGNvZGUgaW4gY29kZV9uYW1lX21hcCkpIHsK
LSAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbkVycm9yKCdUZXN0IGJ1Zzog
dW5yZWNvZ25pemVkIERPTUV4Y2VwdGlvbiBjb2RlICInICsgY29kZSArICciIHBhc3NlZCB0byBh
c3NlcnRfdGhyb3dzKCknKTsKKyAgICAgICAgICAgIGlmICh0eXBlb2YgdHlwZSA9PT0gIm51bWJl
ciIpIHsKKyAgICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gMCkgeworICAgICAgICAgICAgICAg
ICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRXJyb3IoJ1Rlc3QgYnVnOiBhbWJpZ3VvdXMgRE9NRXhj
ZXB0aW9uIGNvZGUgMCBwYXNzZWQgdG8gYXNzZXJ0X3Rocm93c19kb20oKScpOworICAgICAgICAg
ICAgICAgIH0gZWxzZSBpZiAoISh0eXBlIGluIGNvZGVfbmFtZV9tYXApKSB7CisgICAgICAgICAg
ICAgICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25FcnJvcignVGVzdCBidWc6IHVucmVjb2duaXpl
ZCBET01FeGNlcHRpb24gY29kZSAiJyArIHR5cGUgKyAnIiBwYXNzZWQgdG8gYXNzZXJ0X3Rocm93
c19kb20oKScpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBuYW1lID0gY29k
ZV9uYW1lX21hcFtjb2RlXTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGNvZGUgPT09
ICJzdHJpbmciKSB7CisgICAgICAgICAgICAgICAgbmFtZSA9IGNvZGVfbmFtZV9tYXBbdHlwZV07
CisgICAgICAgICAgICAgICAgcmVxdWlyZWRfcHJvcHMuY29kZSA9IHR5cGU7CisgICAgICAgICAg
ICB9IGVsc2UgaWYgKHR5cGVvZiB0eXBlID09PSAic3RyaW5nIikgeworICAgICAgICAgICAgICAg
IG5hbWUgPSB0eXBlIGluIGNvZGVuYW1lX25hbWVfbWFwID8gY29kZW5hbWVfbmFtZV9tYXBbdHlw
ZV0gOiB0eXBlOwogICAgICAgICAgICAgICAgIGlmICghKG5hbWUgaW4gbmFtZV9jb2RlX21hcCkp
IHsKLSAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbkVycm9yKCdUZXN0IGJ1
ZzogdW5yZWNvZ25pemVkIERPTUV4Y2VwdGlvbiBjb2RlICInICsgY29kZSArICciIHBhc3NlZCB0
byBhc3NlcnRfdGhyb3dzKCknKTsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEFzc2Vy
dGlvbkVycm9yKCdUZXN0IGJ1ZzogdW5yZWNvZ25pemVkIERPTUV4Y2VwdGlvbiBjb2RlIG5hbWUg
b3IgbmFtZSAiJyArIHR5cGUgKyAnIiBwYXNzZWQgdG8gYXNzZXJ0X3Rocm93c19kb20oKScpOwog
ICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgIHJlcXVpcmVkX3Byb3BzLmNvZGUg
PSBuYW1lX2NvZGVfbWFwW25hbWVdOwogICAgICAgICAgICAgfQogCkBAIC0xNDY3LDI2ICsxODQy
LDY1IEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAgICAgICAg
ICAgIHJlcXVpcmVkX3Byb3BzLm5hbWUgPSBuYW1lOwogICAgICAgICAgICAgfQogCi0gICAgICAg
ICAgICAvL1dlJ2QgbGlrZSB0byB0ZXN0IHRoYXQgZSBpbnN0YW5jZW9mIHRoZSBhcHByb3ByaWF0
ZSBpbnRlcmZhY2UsCi0gICAgICAgICAgICAvL2J1dCB3ZSBjYW4ndCwgYmVjYXVzZSB3ZSBkb24n
dCBrbm93IHdoYXQgd2luZG93IGl0IHdhcyBjcmVhdGVkCi0gICAgICAgICAgICAvL2luLiAgSXQg
bWlnaHQgYmUgYW4gaW5zdGFuY2VvZiB0aGUgYXBwcm9wcmlhdGUgaW50ZXJmYWNlIG9uIHNvbWUK
LSAgICAgICAgICAgIC8vdW5rbm93biBvdGhlciB3aW5kb3cuICBUT0RPOiBXb3JrIGFyb3VuZCB0
aGlzIHNvbWVob3c/Ci0KICAgICAgICAgICAgIGZvciAodmFyIHByb3AgaW4gcmVxdWlyZWRfcHJv
cHMpIHsKICAgICAgICAgICAgICAgICBhc3NlcnQocHJvcCBpbiBlICYmIGVbcHJvcF0gPT0gcmVx
dWlyZWRfcHJvcHNbcHJvcF0sCi0gICAgICAgICAgICAgICAgICAgICAgICJhc3NlcnRfdGhyb3dz
IiwgZGVzY3JpcHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICIke2Z1bmN9IHRocmV3ICR7
ZX0gdGhhdCBpcyBub3QgYSBET01FeGNlcHRpb24gIiArIGNvZGUgKyAiOiBwcm9wZXJ0eSAke3By
b3B9IGlzIGVxdWFsIHRvICR7YWN0dWFsfSwgZXhwZWN0ZWQgJHtleHBlY3RlZH0iLAorICAgICAg
ICAgICAgICAgICAgICAgICBhc3NlcnRpb25fdHlwZSwgZGVzY3JpcHRpb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICIke2Z1bmN9IHRocmV3ICR7ZX0gdGhhdCBpcyBub3QgYSBET01FeGNlcHRp
b24gIiArIHR5cGUgKyAiOiBwcm9wZXJ0eSAke3Byb3B9IGlzIGVxdWFsIHRvICR7YWN0dWFsfSwg
ZXhwZWN0ZWQgJHtleHBlY3RlZH0iLAogICAgICAgICAgICAgICAgICAgICAgICB7ZnVuYzpmdW5j
LCBlOmUsIHByb3A6cHJvcCwgYWN0dWFsOmVbcHJvcF0sIGV4cGVjdGVkOnJlcXVpcmVkX3Byb3Bz
W3Byb3BdfSk7CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIENoZWNrIHRoYXQgdGhl
IGV4Y2VwdGlvbiBpcyBmcm9tIHRoZSByaWdodCBnbG9iYWwuICBUaGlzIGNoZWNrIGlzIGxhc3QK
KyAgICAgICAgICAgIC8vIHNvIG1vcmUgc3BlY2lmaWMsIGFuZCBtb3JlIGluZm9ybWF0aXZlLCBj
aGVja3Mgb24gdGhlIHByb3BlcnRpZXMgY2FuCisgICAgICAgICAgICAvLyBoYXBwZW4gaW4gY2Fz
ZSBhIHRvdGFsbHkgaW5jb3JyZWN0IGV4Y2VwdGlvbiBpcyB0aHJvd24uCisgICAgICAgICAgICBh
c3NlcnQoZS5jb25zdHJ1Y3RvciA9PT0gY29uc3RydWN0b3IsCisgICAgICAgICAgICAgICAgICAg
YXNzZXJ0aW9uX3R5cGUsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAgICAgICIke2Z1bmN9
IHRocmV3IGFuIGV4Y2VwdGlvbiBmcm9tIHRoZSB3cm9uZyBnbG9iYWwiLAorICAgICAgICAgICAg
ICAgICAgIHtmdW5jfSk7CisKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEFz
c2VydCB0aGUgcHJvdmlkZWQgdmFsdWUgaXMgdGhyb3duLgorICAgICAqCisgICAgICogQHBhcmFt
IHt2YWx1ZX0gZXhjZXB0aW9uIFRoZSBleHBlY3RlZCBleGNlcHRpb24uCisgICAgICogQHBhcmFt
IHtGdW5jdGlvbn0gZnVuYyBGdW5jdGlvbiB3aGljaCBzaG91bGQgdGhyb3cuCisgICAgICogQHBh
cmFtIHtzdHJpbmd9IGRlc2NyaXB0aW9uIEVycm9yIGRlc2NyaXB0aW9uIGZvciB0aGUgY2FzZSB0
aGF0IHRoZSBlcnJvciBpcyBub3QgdGhyb3duLgorICAgICAqLworICAgIGZ1bmN0aW9uIGFzc2Vy
dF90aHJvd3NfZXhhY3RseShleGNlcHRpb24sIGZ1bmMsIGRlc2NyaXB0aW9uKQorICAgIHsKKyAg
ICAgICAgYXNzZXJ0X3Rocm93c19leGFjdGx5X2ltcGwoZXhjZXB0aW9uLCBmdW5jLCBkZXNjcmlw
dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFzc2VydF90aHJvd3Nf
ZXhhY3RseSIpOworICAgIH0KKyAgICBleHBvc2VfYXNzZXJ0KGFzc2VydF90aHJvd3NfZXhhY3Rs
eSwgImFzc2VydF90aHJvd3NfZXhhY3RseSIpOworCisgICAgLyoqCisgICAgICogTGlrZSBhc3Nl
cnRfdGhyb3dzX2V4YWN0bHkgYnV0IGFsbG93cyBzcGVjaWZ5aW5nIHRoZSBhc3NlcnRpb24gdHlw
ZQorICAgICAqIChhc3NlcnRfdGhyb3dzX2V4YWN0bHkgb3IgcHJvbWlzZV9yZWplY3RzX2V4YWN0
bHksIGluIHByYWN0aWNlKS4KKyAgICAgKi8KKyAgICBmdW5jdGlvbiBhc3NlcnRfdGhyb3dzX2V4
YWN0bHlfaW1wbChleGNlcHRpb24sIGZ1bmMsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydGlvbl90eXBlKQorICAgIHsKKyAgICAgICAg
dHJ5IHsKKyAgICAgICAgICAgIGZ1bmMuY2FsbCh0aGlzKTsKKyAgICAgICAgICAgIGFzc2VydChm
YWxzZSwgYXNzZXJ0aW9uX3R5cGUsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAgICAgICIk
e2Z1bmN9IGRpZCBub3QgdGhyb3ciLCB7ZnVuYzpmdW5jfSk7CisgICAgICAgIH0gY2F0Y2ggKGUp
IHsKKyAgICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgQXNzZXJ0aW9uRXJyb3IpIHsKKyAgICAg
ICAgICAgICAgICB0aHJvdyBlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBhc3NlcnQo
c2FtZV92YWx1ZShlLCBleGNlcHRpb24pLCBhc3NlcnRpb25fdHlwZSwgZGVzY3JpcHRpb24sCisg
ICAgICAgICAgICAgICAgICAgIiR7ZnVuY30gdGhyZXcgJHtlfSBidXQgd2UgZXhwZWN0ZWQgaXQg
dG8gdGhyb3cgJHtleGNlcHRpb259IiwKKyAgICAgICAgICAgICAgICAgICB7ZnVuYzpmdW5jLCBl
OmUsIGV4Y2VwdGlvbjpleGNlcHRpb259KTsKICAgICAgICAgfQogICAgIH0KLSAgICBleHBvc2Uo
YXNzZXJ0X3Rocm93cywgImFzc2VydF90aHJvd3MiKTsKIAogICAgIGZ1bmN0aW9uIGFzc2VydF91
bnJlYWNoZWQoZGVzY3JpcHRpb24pIHsKICAgICAgICAgIGFzc2VydChmYWxzZSwgImFzc2VydF91
bnJlYWNoZWQiLCBkZXNjcmlwdGlvbiwKICAgICAgICAgICAgICAgICAiUmVhY2hlZCB1bnJlYWNo
YWJsZSBjb2RlIik7CiAgICAgfQotICAgIGV4cG9zZShhc3NlcnRfdW5yZWFjaGVkLCAiYXNzZXJ0
X3VucmVhY2hlZCIpOworICAgIGV4cG9zZV9hc3NlcnQoYXNzZXJ0X3VucmVhY2hlZCwgImFzc2Vy
dF91bnJlYWNoZWQiKTsKIAogICAgIGZ1bmN0aW9uIGFzc2VydF9hbnkoYXNzZXJ0X2Z1bmMsIGFj
dHVhbCwgZXhwZWN0ZWRfYXJyYXkpCiAgICAgewpAQCAtMTUwNyw4ICsxOTIxLDQ4IEBAIHBvbGlj
aWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAgICAgICAgdGhyb3cgbmV3IEFz
c2VydGlvbkVycm9yKGVycm9ycy5qb2luKCJcblxuIikpOwogICAgICAgICB9CiAgICAgfQorICAg
IC8vIEZJWE1FOiBhc3NlcnRfYW55IGNhbm5vdCB1c2UgZXhwb3NlX2Fzc2VydCwgYmVjYXVzZSBh
c3NlcnRfd3JhcHBlciBkb2VzCisgICAgLy8gbm90IHN1cHBvcnQgbmVzdGVkIGFzc2VydCBjYWxs
cyAoZS5nLiB0byBhc3NlcnRfZnVuYykuIFdlIG5lZWQgdG8KKyAgICAvLyBzdXBwb3J0IGJ5cGFz
c2luZyBhc3NlcnRfd3JhcHBlciBmb3IgdGhlIGlubmVyIGFzc2VydHMgaGVyZS4KICAgICBleHBv
c2UoYXNzZXJ0X2FueSwgImFzc2VydF9hbnkiKTsKIAorICAgIC8qKgorICAgICAqIEFzc2VydCB0
aGF0IGEgZmVhdHVyZSBpcyBpbXBsZW1lbnRlZCwgYmFzZWQgb24gYSAndHJ1dGh5JyBjb25kaXRp
b24uCisgICAgICoKKyAgICAgKiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBiZSB1c2VkIHRvIGVhcmx5
LWV4aXQgZnJvbSB0ZXN0cyBpbiB3aGljaCB0aGVyZSBpcworICAgICAqIG5vIHBvaW50IGNvbnRp
bnVpbmcgd2l0aG91dCBzdXBwb3J0IGZvciBhIG5vbi1vcHRpb25hbCBzcGVjIG9yIHNwZWMKKyAg
ICAgKiBmZWF0dXJlLiBGb3IgZXhhbXBsZToKKyAgICAgKgorICAgICAqICAgICBhc3NlcnRfaW1w
bGVtZW50cyh3aW5kb3cuRm9vLCAnRm9vIGlzIG5vdCBzdXBwb3J0ZWQnKTsKKyAgICAgKgorICAg
ICAqIEBwYXJhbSB7b2JqZWN0fSBjb25kaXRpb24gVGhlIHRydXRoeSB2YWx1ZSB0byB0ZXN0Cisg
ICAgICogQHBhcmFtIHtzdHJpbmd9IGRlc2NyaXB0aW9uIEVycm9yIGRlc2NyaXB0aW9uIGZvciB0
aGUgY2FzZSB0aGF0IHRoZSBjb25kaXRpb24gaXMgbm90IHRydXRoeS4KKyAgICAgKi8KKyAgICBm
dW5jdGlvbiBhc3NlcnRfaW1wbGVtZW50cyhjb25kaXRpb24sIGRlc2NyaXB0aW9uKSB7CisgICAg
ICAgIGFzc2VydCghIWNvbmRpdGlvbiwgImFzc2VydF9pbXBsZW1lbnRzIiwgZGVzY3JpcHRpb24p
OworICAgIH0KKyAgICBleHBvc2VfYXNzZXJ0KGFzc2VydF9pbXBsZW1lbnRzLCAiYXNzZXJ0X2lt
cGxlbWVudHMiKQorCisgICAgLyoqCisgICAgICogQXNzZXJ0IHRoYXQgYW4gb3B0aW9uYWwgZmVh
dHVyZSBpcyBpbXBsZW1lbnRlZCwgYmFzZWQgb24gYSAndHJ1dGh5JyBjb25kaXRpb24uCisgICAg
ICoKKyAgICAgKiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBiZSB1c2VkIHRvIGVhcmx5LWV4aXQgZnJv
bSB0ZXN0cyBpbiB3aGljaCB0aGVyZSBpcworICAgICAqIG5vIHBvaW50IGNvbnRpbnVpbmcgd2l0
aG91dCBzdXBwb3J0IGZvciBhbiBleHBsaWNpdGx5IG9wdGlvbmFsIHNwZWMgb3IKKyAgICAgKiBz
cGVjIGZlYXR1cmUuIEZvciBleGFtcGxlOgorICAgICAqCisgICAgICogICAgIGFzc2VydF9pbXBs
ZW1lbnRzX29wdGlvbmFsKHZpZGVvLmNhblBsYXlUeXBlKCJ2aWRlby93ZWJtIiksCisgICAgICog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3ZWJtIHZpZGVvIHBsYXliYWNrIG5vdCBz
dXBwb3J0ZWQiKTsKKyAgICAgKgorICAgICAqIEBwYXJhbSB7b2JqZWN0fSBjb25kaXRpb24gVGhl
IHRydXRoeSB2YWx1ZSB0byB0ZXN0CisgICAgICogQHBhcmFtIHtzdHJpbmd9IGRlc2NyaXB0aW9u
IEVycm9yIGRlc2NyaXB0aW9uIGZvciB0aGUgY2FzZSB0aGF0IHRoZSBjb25kaXRpb24gaXMgbm90
IHRydXRoeS4KKyAgICAgKi8KKyAgICBmdW5jdGlvbiBhc3NlcnRfaW1wbGVtZW50c19vcHRpb25h
bChjb25kaXRpb24sIGRlc2NyaXB0aW9uKSB7CisgICAgICAgIGlmICghY29uZGl0aW9uKSB7Cisg
ICAgICAgICAgICB0aHJvdyBuZXcgT3B0aW9uYWxGZWF0dXJlVW5zdXBwb3J0ZWRFcnJvcihkZXNj
cmlwdGlvbik7CisgICAgICAgIH0KKyAgICB9CisgICAgZXhwb3NlX2Fzc2VydChhc3NlcnRfaW1w
bGVtZW50c19vcHRpb25hbCwgImFzc2VydF9pbXBsZW1lbnRzX29wdGlvbmFsIikKKwogICAgIGZ1
bmN0aW9uIFRlc3QobmFtZSwgcHJvcGVydGllcykKICAgICB7CiAgICAgICAgIGlmICh0ZXN0cy5m
aWxlX2lzX3Rlc3QgJiYgdGVzdHMudGVzdHMubGVuZ3RoKSB7CkBAIC0xNTIzLDcgKzE5NzcsNyBA
QCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgdGhpcy50aW1l
b3V0X2lkID0gbnVsbDsKICAgICAgICAgdGhpcy5pbmRleCA9IG51bGw7CiAKLSAgICAgICAgdGhp
cy5wcm9wZXJ0aWVzID0gcHJvcGVydGllczsKKyAgICAgICAgdGhpcy5wcm9wZXJ0aWVzID0gcHJv
cGVydGllcyB8fCB7fTsKICAgICAgICAgdGhpcy50aW1lb3V0X2xlbmd0aCA9IHNldHRpbmdzLnRl
c3RfdGltZW91dDsKICAgICAgICAgaWYgKHRoaXMudGltZW91dF9sZW5ndGggIT09IG51bGwpIHsK
ICAgICAgICAgICAgIHRoaXMudGltZW91dF9sZW5ndGggKj0gdGVzdHMudGltZW91dF9tdWx0aXBs
aWVyOwpAQCAtMTU1Myw3ICsyMDA3LDggQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3Jt
cyBbM10uCiAgICAgICAgIFBBU1M6MCwKICAgICAgICAgRkFJTDoxLAogICAgICAgICBUSU1FT1VU
OjIsCi0gICAgICAgIE5PVFJVTjozCisgICAgICAgIE5PVFJVTjozLAorICAgICAgICBQUkVDT05E
SVRJT05fRkFJTEVEOjQKICAgICB9OwogCiAgICAgVGVzdC5wcm90b3R5cGUgPSBtZXJnZSh7fSwg
VGVzdC5zdGF0dXNlcyk7CkBAIC0xNTY2LDYgKzIwMjEsMTggQEAgcG9saWNpZXMgYW5kIGNvbnRy
aWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAgIENPTVBMRVRFOjQKICAgICB9OwogCisgICAgVGVz
dC5wcm90b3R5cGUuc3RhdHVzX2Zvcm1hdHMgPSB7CisgICAgICAgIDA6ICJQYXNzIiwKKyAgICAg
ICAgMTogIkZhaWwiLAorICAgICAgICAyOiAiVGltZW91dCIsCisgICAgICAgIDM6ICJOb3QgUnVu
IiwKKyAgICAgICAgNDogIk9wdGlvbmFsIEZlYXR1cmUgVW5zdXBwb3J0ZWQiLAorICAgIH0KKwor
ICAgIFRlc3QucHJvdG90eXBlLmZvcm1hdF9zdGF0dXMgPSBmdW5jdGlvbigpIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMuc3RhdHVzX2Zvcm1hdHNbdGhpcy5zdGF0dXNdOworICAgIH0KKwogICAgIFRl
c3QucHJvdG90eXBlLnN0cnVjdHVyZWRfY2xvbmUgPSBmdW5jdGlvbigpCiAgICAgewogICAgICAg
ICBpZiAoIXRoaXMuX3N0cnVjdHVyZWRfY2xvbmUpIHsKQEAgLTE1OTAsMTEgKzIwNTcsMTYgQEAg
cG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAgIGlmICh0aGlzLnBo
YXNlID4gdGhpcy5waGFzZXMuU1RBUlRFRCkgewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CisKKyAgICAgICAgaWYgKHNldHRpbmdzLmRlYnVnICYmIHRoaXMucGhhc2UgIT09IHRoaXMu
cGhhc2VzLlNUQVJURUQpIHsKKyAgICAgICAgICAgIGNvbnNvbGUubG9nKCJURVNUIFNUQVJUIiwg
dGhpcy5uYW1lKTsKKyAgICAgICAgfQogICAgICAgICB0aGlzLnBoYXNlID0gdGhpcy5waGFzZXMu
U1RBUlRFRDsKICAgICAgICAgLy9JZiB3ZSBkb24ndCBnZXQgYSByZXN1bHQgYmVmb3JlIHRoZSBo
YXJuZXNzIHRpbWVzIG91dCB0aGF0IHdpbGwgYmUgYSB0ZXN0IHRpbWVvdXQKICAgICAgICAgdGhp
cy5zZXRfc3RhdHVzKHRoaXMuVElNRU9VVCwgIlRlc3QgdGltZWQgb3V0Iik7CiAKICAgICAgICAg
dGVzdHMuc3RhcnRlZCA9IHRydWU7CisgICAgICAgIHRlc3RzLmN1cnJlbnRfdGVzdCA9IHRoaXM7
CiAgICAgICAgIHRlc3RzLm5vdGlmeV90ZXN0X3N0YXRlKHRoaXMpOwogCiAgICAgICAgIGlmICh0
aGlzLnRpbWVvdXRfaWQgPT09IG51bGwpIHsKQEAgLTE2MDcsMTggKzIwNzksMjUgQEAgcG9saWNp
ZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAgICAgICB0aGlzX29iaiA9IHRo
aXM7CiAgICAgICAgIH0KIAorICAgICAgICBpZiAoc2V0dGluZ3MuZGVidWcpIHsKKyAgICAgICAg
ICAgIGNvbnNvbGUuZGVidWcoIlRFU1QgU1RFUCIsIHRoaXMubmFtZSk7CisgICAgICAgIH0KKwog
ICAgICAgICB0cnkgewogICAgICAgICAgICAgcmV0dXJuIGZ1bmMuYXBwbHkodGhpc19vYmosIEFy
cmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMikpOwogICAgICAgICB9IGNhdGNo
IChlKSB7CiAgICAgICAgICAgICBpZiAodGhpcy5waGFzZSA+PSB0aGlzLnBoYXNlcy5IQVNfUkVT
VUxUKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQorICAgICAgICAg
ICAgdmFyIHN0YXR1cyA9IGUgaW5zdGFuY2VvZiBPcHRpb25hbEZlYXR1cmVVbnN1cHBvcnRlZEVy
cm9yID8gdGhpcy5QUkVDT05ESVRJT05fRkFJTEVEIDogdGhpcy5GQUlMOwogICAgICAgICAgICAg
dmFyIG1lc3NhZ2UgPSBTdHJpbmcoKHR5cGVvZiBlID09PSAib2JqZWN0IiAmJiBlICE9PSBudWxs
KSA/IGUubWVzc2FnZSA6IGUpOwogICAgICAgICAgICAgdmFyIHN0YWNrID0gZS5zdGFjayA/IGUu
c3RhY2sgOiBudWxsOwogCi0gICAgICAgICAgICB0aGlzLnNldF9zdGF0dXModGhpcy5GQUlMLCBt
ZXNzYWdlLCBzdGFjayk7CisgICAgICAgICAgICB0aGlzLnNldF9zdGF0dXMoc3RhdHVzLCBtZXNz
YWdlLCBzdGFjayk7CiAgICAgICAgICAgICB0aGlzLnBoYXNlID0gdGhpcy5waGFzZXMuSEFTX1JF
U1VMVDsKICAgICAgICAgICAgIHRoaXMuZG9uZSgpOworICAgICAgICB9IGZpbmFsbHkgeworICAg
ICAgICAgICAgdGhpcy5jdXJyZW50X3Rlc3QgPSBudWxsOwogICAgICAgICB9CiAgICAgfTsKIApA
QCAtMTY2OCw2ICsyMTQ3LDEwNSBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFsz
XS4KICAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQodGhpcy5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7
CiAgICAgICAgICAgICByZXR1cm4gZi5hcHBseSh0ZXN0X3RoaXMsIGFyZ3MpOwogICAgICAgICB9
KSwgdGltZW91dCAqIHRlc3RzLnRpbWVvdXRfbXVsdGlwbGllcik7CisgICAgfTsKKworICAgIFRl
c3QucHJvdG90eXBlLnN0ZXBfd2FpdF9mdW5jID0gZnVuY3Rpb24oY29uZCwgZnVuYywgZGVzY3Jp
cHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1l
b3V0PTMwMDAsIGludGVydmFsPTEwMCkgeworICAgICAgICAvKioKKyAgICAgICAgICogUG9sbCBm
b3IgYSBmdW5jdGlvbiB0byByZXR1cm4gdHJ1ZSwgYW5kIGNhbGwgYSBjYWxsYmFjaworICAgICAg
ICAgKiBmdW5jdGlvbiBvbmNlIGl0IGRvZXMsIG9yIGFzc2VydCBpZiBhIHRpbWVvdXQgaXMKKyAg
ICAgICAgICogcmVhY2hlZC4gVGhpcyBpcyBwcmVmZXJyZWQgb3ZlciBhIHNpbXBsZSBzdGVwX3Rp
bWVvdXQKKyAgICAgICAgICogd2hlbmV2ZXIgcG9zc2libGUgc2luY2UgaXQgYWxsb3dzIHRoZSB0
aW1lb3V0IHRvIGJlIGxvbmdlcgorICAgICAgICAgKiB0byByZWR1Y2UgaW50ZXJtaXR0ZW50cyB3
aXRob3V0IGNvbXByb21pc2luZyB0ZXN0IGV4ZWN1dGlvbgorICAgICAgICAgKiBzcGVlZCB3aGVu
IHRoZSBjb25kaXRpb24gaXMgcXVpY2tseSBtZXQuCisgICAgICAgICAqCisgICAgICAgICAqIEBw
YXJhbSB7RnVuY3Rpb259IGNvbmQgQSBmdW5jdGlvbiB0YWtpbmcgbm8gYXJndW1lbnRzIGFuZAor
ICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybmluZyBhIGJvb2xlYW4uIFRo
ZSBjYWxsYmFjayBpcyBjYWxsZWQKKyAgICAgICAgICogICAgICAgICAgICAgICAgICAgICAgICB3
aGVuIHRoaXMgZnVuY3Rpb24gcmV0dXJucyB0cnVlLgorICAgICAgICAgKiBAcGFyYW0ge0Z1bmN0
aW9ufSBmdW5jIEEgZnVuY3Rpb24gdGFraW5nIG5vIGFyZ3VtZW50cyB0byBjYWxsIG9uY2UKKyAg
ICAgICAgICogICAgICAgICAgICAgICAgICAgICAgICB0aGUgY29uZGl0aW9uIGlzIG1ldC4KKyAg
ICAgICAgICogQHBhcmFtIHtzdHJpbmd9IGRlc2NyaXB0aW9uIEVycm9yIG1lc3NhZ2UgdG8gYWRk
IHRvIGFzc2VydCBpbiBjYXNlIG9mCisgICAgICAgICAqICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmYWlsdXJlLgorICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gdGltZW91dCBUaW1lb3V0
IGluIG1zLiBUaGlzIGlzIG11bHRpcGxpZWQgYnkgdGhlIGdsb2JhbAorICAgICAgICAgKiAgICAg
ICAgICAgICAgICAgICAgICAgICB0aW1lb3V0X211bHRpcGxpZXIKKyAgICAgICAgICogQHBhcmFt
IHtudW1iZXJ9IGludGVydmFsIFBvbGxpbmcgaW50ZXJ2YWwgaW4gbXMKKyAgICAgICAgICoKKyAg
ICAgICAgICoqLworCisgICAgICAgIHZhciB0aW1lb3V0X2Z1bGwgPSB0aW1lb3V0ICogdGVzdHMu
dGltZW91dF9tdWx0aXBsaWVyOworICAgICAgICB2YXIgcmVtYWluaW5nID0gTWF0aC5jZWlsKHRp
bWVvdXRfZnVsbCAvIGludGVydmFsKTsKKyAgICAgICAgdmFyIHRlc3RfdGhpcyA9IHRoaXM7CisK
KyAgICAgICAgdmFyIHdhaXRfZm9yX2lubmVyID0gdGVzdF90aGlzLnN0ZXBfZnVuYygoKSA9PiB7
CisgICAgICAgICAgICBpZiAoY29uZCgpKSB7CisgICAgICAgICAgICAgICAgZnVuYygpOworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZihyZW1haW5pbmcgPT09IDApIHsK
KyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KGZhbHNlLCAic3RlcF93YWl0X2Z1bmMiLCBkZXNj
cmlwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaW1lZCBvdXQgd2FpdGluZyBv
biBjb25kaXRpb24iKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmVtYWlu
aW5nLS07CisgICAgICAgICAgICAgICAgc2V0VGltZW91dCh3YWl0X2Zvcl9pbm5lciwgaW50ZXJ2
YWwpOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKworICAgICAgICB3YWl0X2Zvcl9pbm5l
cigpOworICAgIH07CisKKyAgICBUZXN0LnByb3RvdHlwZS5zdGVwX3dhaXRfZnVuY19kb25lID0g
ZnVuY3Rpb24oY29uZCwgZnVuYywgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9MzAwMCwgaW50ZXJ2YWw9MTAwKSB7
CisgICAgICAgIC8qKgorICAgICAgICAgKiBQb2xsIGZvciBhIGZ1bmN0aW9uIHRvIHJldHVybiB0
cnVlLCBhbmQgaW52b2tlIGEgY2FsbGJhY2sKKyAgICAgICAgICogZm9sbG93ZWQgYnkgdGhpcy5k
b25lKCkgb25jZSBpdCBkb2VzLCBvciBhc3NlcnQgaWYgYSB0aW1lb3V0CisgICAgICAgICAqIGlz
IHJlYWNoZWQuIFRoaXMgaXMgcHJlZmVycmVkIG92ZXIgYSBzaW1wbGUgc3RlcF90aW1lb3V0Cisg
ICAgICAgICAqIHdoZW5ldmVyIHBvc3NpYmxlIHNpbmNlIGl0IGFsbG93cyB0aGUgdGltZW91dCB0
byBiZSBsb25nZXIKKyAgICAgICAgICogdG8gcmVkdWNlIGludGVybWl0dGVudHMgd2l0aG91dCBj
b21wcm9taXNpbmcgdGVzdCBleGVjdXRpb24gc3BlZWQKKyAgICAgICAgICogd2hlbiB0aGUgY29u
ZGl0aW9uIGlzIHF1aWNrbHkgbWV0LgorICAgICAgICAgKgorICAgICAgICAgKiBAcGFyYW0ge0Z1
bmN0aW9ufSBjb25kIEEgZnVuY3Rpb24gdGFraW5nIG5vIGFyZ3VtZW50cyBhbmQKKyAgICAgICAg
ICogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5pbmcgYSBib29sZWFuLiBUaGUgY2FsbGJh
Y2sgaXMgY2FsbGVkCisgICAgICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiB0aGlz
IGZ1bmN0aW9uIHJldHVybnMgdHJ1ZS4KKyAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVu
YyBBIGZ1bmN0aW9uIHRha2luZyBubyBhcmd1bWVudHMgdG8gY2FsbCBvbmNlCisgICAgICAgICAq
ICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGNvbmRpdGlvbiBpcyBtZXQuCisgICAgICAgICAq
IEBwYXJhbSB7c3RyaW5nfSBkZXNjcmlwdGlvbiBFcnJvciBtZXNzYWdlIHRvIGFkZCB0byBhc3Nl
cnQgaW4gY2FzZSBvZgorICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFp
bHVyZS4KKyAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IHRpbWVvdXQgVGltZW91dCBpbiBtcy4g
VGhpcyBpcyBtdWx0aXBsaWVkIGJ5IHRoZSBnbG9iYWwKKyAgICAgICAgICogICAgICAgICAgICAg
ICAgICAgICAgICAgdGltZW91dF9tdWx0aXBsaWVyCisgICAgICAgICAqIEBwYXJhbSB7bnVtYmVy
fSBpbnRlcnZhbCBQb2xsaW5nIGludGVydmFsIGluIG1zCisgICAgICAgICAqCisgICAgICAgICAq
Ki8KKworICAgICAgICAgdGhpcy5zdGVwX3dhaXRfZnVuYyhjb25kLCAoKSA9PiB7CisgICAgICAg
ICAgICBpZiAoZnVuYykgeworICAgICAgICAgICAgICAgIGZ1bmMoKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIHRoaXMuZG9uZSgpOworICAgICAgICAgfSwgZGVzY3JpcHRpb24sIHRpbWVv
dXQsIGludGVydmFsKTsKKyAgICB9CisKKyAgICBUZXN0LnByb3RvdHlwZS5zdGVwX3dhaXQgPSBm
dW5jdGlvbihjb25kLCBkZXNjcmlwdGlvbiwgdGltZW91dD0zMDAwLCBpbnRlcnZhbD0xMDApIHsK
KyAgICAgICAgLyoqCisgICAgICAgICAqIFBvbGwgZm9yIGEgZnVuY3Rpb24gdG8gcmV0dXJuIHRy
dWUsIGFuZCByZXNvbHZlIGEgcHJvbWlzZQorICAgICAgICAgKiBvbmNlIGl0IGRvZXMsIG9yIGFz
c2VydCBpZiBhIHRpbWVvdXQgaXMgcmVhY2hlZC4gVGhpcyBpcworICAgICAgICAgKiBwcmVmZXJy
ZWQgb3ZlciBhIHNpbXBsZSBzdGVwX3RpbWVvdXQgd2hlbmV2ZXIgcG9zc2libGUKKyAgICAgICAg
ICogc2luY2UgaXQgYWxsb3dzIHRoZSB0aW1lb3V0IHRvIGJlIGxvbmdlciB0byByZWR1Y2UKKyAg
ICAgICAgICogaW50ZXJtaXR0ZW50cyB3aXRob3V0IGNvbXByb21pc2luZyB0ZXN0IGV4ZWN1dGlv
biBzcGVlZAorICAgICAgICAgKiB3aGVuIHRoZSBjb25kaXRpb24gaXMgcXVpY2tseSBtZXQuCisg
ICAgICAgICAqCisgICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGNvbmQgQSBmdW5jdGlvbiB0
YWtpbmcgbm8gYXJndW1lbnRzIGFuZAorICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybmluZyBhIGJvb2xlYW4uCisgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjcmlw
dGlvbiBFcnJvciBtZXNzYWdlIHRvIGFkZCB0byBhc3NlcnQgaW4gY2FzZSBvZgorICAgICAgICAg
KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFpbHVyZS4KKyAgICAgICAgICogQHBhcmFt
IHtudW1iZXJ9IHRpbWVvdXQgVGltZW91dCBpbiBtcy4gVGhpcyBpcyBtdWx0aXBsaWVkIGJ5IHRo
ZSBnbG9iYWwKKyAgICAgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dF9tdWx0
aXBsaWVyCisgICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBpbnRlcnZhbCBQb2xsaW5nIGludGVy
dmFsIGluIG1zCisgICAgICAgICAqIEByZXR1cm5zIHtQcm9taXNlfSBQcm9taXNlIHJlc29sdmVk
IG9uY2UgY29uZCBpcyBtZXQuCisgICAgICAgICAqCisgICAgICAgICAqKi8KKworICAgICAgICBy
ZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgICAgICAgICB0aGlzLnN0ZXBfd2Fp
dF9mdW5jKGNvbmQsIHJlc29sdmUsIGRlc2NyaXB0aW9uLCB0aW1lb3V0LCBpbnRlcnZhbCk7Cisg
ICAgICAgIH0pOwogICAgIH0KIAogICAgIC8qCkBAIC0xNzM3LDYgKzIzMTUsMTIgQEAgcG9saWNp
ZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAgICAgICBjbGVhclRpbWVvdXQo
dGhpcy50aW1lb3V0X2lkKTsKICAgICAgICAgfQogCisgICAgICAgIGlmIChzZXR0aW5ncy5kZWJ1
ZykgeworICAgICAgICAgICAgY29uc29sZS5sb2coIlRFU1QgRE9ORSIsCisgICAgICAgICAgICAg
ICAgICAgICAgICB0aGlzLnN0YXR1cywKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmFt
ZSwpCisgICAgICAgIH0KKwogICAgICAgICB0aGlzLmNsZWFudXAoKTsKICAgICB9OwogCkBAIC0x
OTM2LDYgKzI1MjAsMTAgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAg
ICAgICAgICAgICAgICAgfSk7CiAgICAgfQogCisgICAgUmVtb3RlVGVzdC5wcm90b3R5cGUuZm9y
bWF0X3N0YXR1cyA9IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gVGVzdC5wcm90b3R5cGUu
c3RhdHVzX2Zvcm1hdHNbdGhpcy5zdGF0dXNdOworICAgIH0KKwogICAgIC8qCiAgICAgICogQSBS
ZW1vdGVDb250ZXh0IGxpc3RlbnMgZm9yIHRlc3QgZXZlbnRzIGZyb20gYSByZW1vdGUgdGVzdCBj
b250ZXh0LCBzdWNoCiAgICAgICogYXMgYW5vdGhlciB3aW5kb3cgb3IgYSB3b3JrZXIuIFRoZXNl
IGV2ZW50cyBhcmUgdGhlbiB1c2VkIHRvIGNvbnN0cnVjdApAQCAtMjA0NCw2ICsyNjMyLDE2IEBA
IHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAgICAgICAgdGVzdHMu
c2V0X3N0YXR1cyhkYXRhLnN0YXR1cy5zdGF0dXMsIGRhdGEuc3RhdHVzLm1lc3NhZ2UsIGRhdGEu
c3RhdHVzLnNhY2spOwogICAgICAgICB9CiAKKyAgICAgICAgZm9yIChsZXQgYXNzZXJ0IG9mIGRh
dGEuYXNzZXJ0cykgeworICAgICAgICAgICAgdmFyIHJlY29yZCA9IG5ldyBBc3NlcnRSZWNvcmQo
KTsKKyAgICAgICAgICAgIHJlY29yZC5hc3NlcnRfbmFtZSA9IGFzc2VydC5hc3NlcnRfbmFtZTsK
KyAgICAgICAgICAgIHJlY29yZC5hcmdzID0gYXNzZXJ0LmFyZ3M7CisgICAgICAgICAgICByZWNv
cmQudGVzdCA9IGFzc2VydC50ZXN0ICE9IG51bGwgPyB0aGlzLnRlc3RzW2Fzc2VydC50ZXN0Lmlu
ZGV4XSA6IG51bGw7CisgICAgICAgICAgICByZWNvcmQuc3RhdHVzID0gYXNzZXJ0LnN0YXR1czsK
KyAgICAgICAgICAgIHJlY29yZC5zdGFjayA9IGFzc2VydC5zdGFjazsKKyAgICAgICAgICAgIHRl
c3RzLmFzc2VydHNfcnVuLnB1c2gocmVjb3JkKTsKKyAgICAgICAgfQorCiAgICAgICAgIHRoaXMu
bWVzc2FnZV90YXJnZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHRoaXMubWVzc2Fn
ZV9oYW5kbGVyKTsKICAgICAgICAgdGhpcy5ydW5uaW5nID0gZmFsc2U7CiAKQEAgLTIwODcsMTEg
KzI2ODUsMjAgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgVGVz
dHNTdGF0dXMuc3RhdHVzZXMgPSB7CiAgICAgICAgIE9LOjAsCiAgICAgICAgIEVSUk9SOjEsCi0g
ICAgICAgIFRJTUVPVVQ6MgorICAgICAgICBUSU1FT1VUOjIsCisgICAgICAgIFBSRUNPTkRJVElP
Tl9GQUlMRUQ6MwogICAgIH07CiAKICAgICBUZXN0c1N0YXR1cy5wcm90b3R5cGUgPSBtZXJnZSh7
fSwgVGVzdHNTdGF0dXMuc3RhdHVzZXMpOwogCisgICAgVGVzdHNTdGF0dXMucHJvdG90eXBlLmZv
cm1hdHMgPSB7CisgICAgICAgIDA6ICJPSyIsCisgICAgICAgIDE6ICJFcnJvciIsCisgICAgICAg
IDI6ICJUaW1lb3V0IiwKKyAgICAgICAgMzogIk9wdGlvbmFsIEZlYXR1cmUgVW5zdXBwb3J0ZWQi
CisgICAgfQorCisKICAgICBUZXN0c1N0YXR1cy5wcm90b3R5cGUuc3RydWN0dXJlZF9jbG9uZSA9
IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fc3RydWN0dXJlZF9jbG9uZSkg
ewpAQCAtMjEwNiw2ICsyNzEzLDI3IEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMg
WzNdLgogICAgICAgICByZXR1cm4gdGhpcy5fc3RydWN0dXJlZF9jbG9uZTsKICAgICB9OwogCisg
ICAgVGVzdHNTdGF0dXMucHJvdG90eXBlLmZvcm1hdF9zdGF0dXMgPSBmdW5jdGlvbigpIHsKKyAg
ICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0c1t0aGlzLnN0YXR1c107CisgICAgfQorCisgICAgZnVu
Y3Rpb24gQXNzZXJ0UmVjb3JkKHRlc3QsIGFzc2VydF9uYW1lLCBhcmdzID0gW10pIHsKKyAgICAg
ICAgdGhpcy5hc3NlcnRfbmFtZSA9IGFzc2VydF9uYW1lOworICAgICAgICB0aGlzLnRlc3QgPSB0
ZXN0OworICAgICAgICAvLyBBdm9pZCBrZWVwaW5nIGNvbXBsZXggb2JqZWN0cyBhbGl2ZQorICAg
ICAgICB0aGlzLmFyZ3MgPSBhcmdzLm1hcCh4ID0+IGZvcm1hdF92YWx1ZSh4KS5yZXBsYWNlKC9c
bi9nLCAiICIpKTsKKyAgICAgICAgdGhpcy5zdGF0dXMgPSBudWxsOworICAgIH0KKworICAgIEFz
c2VydFJlY29yZC5wcm90b3R5cGUuc3RydWN0dXJlZF9jbG9uZSA9IGZ1bmN0aW9uKCkgeworICAg
ICAgICByZXR1cm4geworICAgICAgICAgICAgYXNzZXJ0X25hbWU6IHRoaXMuYXNzZXJ0X25hbWUs
CisgICAgICAgICAgICB0ZXN0OiB0aGlzLnRlc3QgPyB0aGlzLnRlc3Quc3RydWN0dXJlZF9jbG9u
ZSgpIDogbnVsbCwKKyAgICAgICAgICAgIGFyZ3M6IHRoaXMuYXJncywKKyAgICAgICAgICAgIHN0
YXR1czogdGhpcy5zdGF0dXMsCisgICAgICAgIH0KKyAgICB9CisKICAgICBmdW5jdGlvbiBUZXN0
cygpCiAgICAgewogICAgICAgICB0aGlzLnRlc3RzID0gW107CkBAIC0yMTI4LDYgKzI3NTYsMTAg
QEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAgIHRoaXMuYWxs
b3dfdW5jYXVnaHRfZXhjZXB0aW9uID0gZmFsc2U7CiAKICAgICAgICAgdGhpcy5maWxlX2lzX3Rl
c3QgPSBmYWxzZTsKKyAgICAgICAgLy8gVGhpcyB2YWx1ZSBpcyBsYXppbHkgaW5pdGlhbGl6ZWQg
aW4gb3JkZXIgdG8gYXZvaWQgaW50cm9kdWNpbmcgYQorICAgICAgICAvLyBkZXBlbmRlbmN5IG9u
IEVDTUFTY3JpcHQgMjAxNSBQcm9taXNlcyB0byBhbGwgdGVzdHMuCisgICAgICAgIHRoaXMucHJv
bWlzZV90ZXN0cyA9IG51bGw7CisgICAgICAgIHRoaXMucHJvbWlzZV9zZXR1cF9jYWxsZWQgPSBm
YWxzZTsKIAogICAgICAgICB0aGlzLnRpbWVvdXRfbXVsdGlwbGllciA9IDE7CiAgICAgICAgIHRo
aXMudGltZW91dF9sZW5ndGggPSB0ZXN0X2Vudmlyb25tZW50LnRlc3RfdGltZW91dCgpOwpAQCAt
MjEzOCw4ICsyNzcwLDIxIEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgog
ICAgICAgICB0aGlzLnRlc3RfZG9uZV9jYWxsYmFja3MgPSBbXTsKICAgICAgICAgdGhpcy5hbGxf
ZG9uZV9jYWxsYmFja3MgPSBbXTsKIAorICAgICAgICB0aGlzLmhpZGVfdGVzdF9zdGF0ZSA9IGZh
bHNlOwogICAgICAgICB0aGlzLnBlbmRpbmdfcmVtb3RlcyA9IFtdOwogCisgICAgICAgIHRoaXMu
Y3VycmVudF90ZXN0ID0gbnVsbDsKKyAgICAgICAgdGhpcy5hc3NlcnRzX3J1biA9IFtdOworCisg
ICAgICAgIC8vIFRyYWNrIHdoZXRoZXIgb3V0cHV0IGlzIGVuYWJsZWQsIGFuZCB0aHVzIHdoZXRo
ZXIgb3Igbm90IHdlIHNob3VsZAorICAgICAgICAvLyB0cmFjayBhc3NlcnRzLgorICAgICAgICAv
LworICAgICAgICAvLyBPbiB3b3JrZXJzIHdlIGRvbid0IGdldCBwcm9wZXJ0aWVzIHNldCBmcm9t
IHRlc3RoYXJuZXNzcmVwb3J0LmpzLCBzbworICAgICAgICAvLyB3ZSBkb24ndCBrbm93IHdoZXRo
ZXIgb3Igbm90IHRvIHRyYWNrIGFzc2VydHMuIFRvIGF2b2lkIHRoZQorICAgICAgICAvLyByZXN1
bHRpbmcgcGVyZm9ybWFuY2UgaGl0LCB3ZSBhc3N1bWUgd2UgYXJlIG5vdCBtZWFudCB0by4gVGhp
cyBtZWFucworICAgICAgICAvLyB0aGF0IGFzc2VydCB0cmFja2luZyBkb2VzIG5vdCBmdW5jdGlv
biBvbiB3b3JrZXJzLgorICAgICAgICB0aGlzLm91dHB1dCA9IHNldHRpbmdzLm91dHB1dCAmJiAn
ZG9jdW1lbnQnIGluIGdsb2JhbF9zY29wZTsKKwogICAgICAgICB0aGlzLnN0YXR1cyA9IG5ldyBU
ZXN0c1N0YXR1cygpOwogCiAgICAgICAgIHZhciB0aGlzX29iaiA9IHRoaXM7CkBAIC0yMTc4LDEx
ICsyODIzLDE5IEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAg
ICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhp
cy50aW1lb3V0X2lkKTsKICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0g
ZWxzZSBpZiAocCA9PSAic2luZ2xlX3Rlc3QiICYmIHZhbHVlKSB7CisgICAgICAgICAgICAgICAg
ICAgIHRoaXMuc2V0X2ZpbGVfaXNfdGVzdCgpOwogICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAo
cCA9PSAidGltZW91dF9tdWx0aXBsaWVyIikgewogICAgICAgICAgICAgICAgICAgICB0aGlzLnRp
bWVvdXRfbXVsdGlwbGllciA9IHZhbHVlOwogICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy50
aW1lb3V0X2xlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGltZW91dF9s
ZW5ndGggKj0gdGhpcy50aW1lb3V0X211bHRpcGxpZXI7CiAgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHAgPT0gImhpZGVfdGVzdF9zdGF0ZSIpIHsKKyAg
ICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlX3Rlc3Rfc3RhdGUgPSB2YWx1ZTsKKyAgICAgICAg
ICAgICAgICB9IGVsc2UgaWYgKHAgPT0gIm91dHB1dCIpIHsKKyAgICAgICAgICAgICAgICAgICAg
dGhpcy5vdXRwdXQgPSB2YWx1ZTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHAgPT09ICJk
ZWJ1ZyIpIHsKKyAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3MuZGVidWcgPSB2YWx1ZTsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTIxOTEsOSArMjg0
NCwxMCBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgICAg
IHRyeSB7CiAgICAgICAgICAgICAgICAgZnVuYygpOwogICAgICAgICAgICAgfSBjYXRjaCAoZSkg
ewotICAgICAgICAgICAgICAgIHRoaXMuc3RhdHVzLnN0YXR1cyA9IHRoaXMuc3RhdHVzLkVSUk9S
OworICAgICAgICAgICAgICAgIHRoaXMuc3RhdHVzLnN0YXR1cyA9IGUgaW5zdGFuY2VvZiBPcHRp
b25hbEZlYXR1cmVVbnN1cHBvcnRlZEVycm9yID8gdGhpcy5zdGF0dXMuUFJFQ09ORElUSU9OX0ZB
SUxFRCA6IHRoaXMuc3RhdHVzLkVSUk9SOwogICAgICAgICAgICAgICAgIHRoaXMuc3RhdHVzLm1l
c3NhZ2UgPSBTdHJpbmcoZSk7CiAgICAgICAgICAgICAgICAgdGhpcy5zdGF0dXMuc3RhY2sgPSBl
LnN0YWNrID8gZS5zdGFjayA6IG51bGw7CisgICAgICAgICAgICAgICAgdGhpcy5jb21wbGV0ZSgp
OwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIHRoaXMuc2V0X3RpbWVvdXQoKTsK
QEAgLTIyMDYsNyArMjg2MCw3IEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNd
LgogICAgICAgICB0aGlzLndhaXRfZm9yX2ZpbmlzaCA9IHRydWU7CiAgICAgICAgIHRoaXMuZmls
ZV9pc190ZXN0ID0gdHJ1ZTsKICAgICAgICAgLy8gQ3JlYXRlIHRoZSB0ZXN0LCB3aGljaCB3aWxs
IGFkZCBpdCB0byB0aGUgbGlzdCBvZiB0ZXN0cwotICAgICAgICBhc3luY190ZXN0KCk7CisgICAg
ICAgIHRlc3RzLmN1cnJlbnRfdGVzdCA9IGFzeW5jX3Rlc3QoKTsKICAgICB9OwogCiAgICAgVGVz
dHMucHJvdG90eXBlLnNldF9zdGF0dXMgPSBmdW5jdGlvbihzdGF0dXMsIG1lc3NhZ2UsIHN0YWNr
KQpAQCAtMjM3MCw2ICszMDI0LDE2IEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMg
WzNdLgogICAgICAgICAgICAgICAgICAgYWxsX2NvbXBsZXRlKTsKICAgICB9OwogCisgICAgVGVz
dHMucHJvdG90eXBlLnNldF9hc3NlcnQgPSBmdW5jdGlvbihhc3NlcnRfbmFtZSwgYXJncykgewor
ICAgICAgICB0aGlzLmFzc2VydHNfcnVuLnB1c2gobmV3IEFzc2VydFJlY29yZCh0aGlzLmN1cnJl
bnRfdGVzdCwgYXNzZXJ0X25hbWUsIGFyZ3MpKQorICAgIH0KKworICAgIFRlc3RzLnByb3RvdHlw
ZS5zZXRfYXNzZXJ0X3N0YXR1cyA9IGZ1bmN0aW9uKHN0YXR1cywgc3RhY2spIHsKKyAgICAgICAg
bGV0IGFzc2VydF9yZWNvcmQgPSB0aGlzLmFzc2VydHNfcnVuW3RoaXMuYXNzZXJ0c19ydW4ubGVu
Z3RoIC0gMV07CisgICAgICAgIGFzc2VydF9yZWNvcmQuc3RhdHVzID0gc3RhdHVzOworICAgICAg
ICBhc3NlcnRfcmVjb3JkLnN0YWNrID0gc3RhY2s7CisgICAgfQorCiAgICAgLyoqCiAgICAgICog
VXBkYXRlIHRoZSBoYXJuZXNzIHN0YXR1cyB0byByZWZsZWN0IGFuIHVucmVjb3ZlcmFibGUgaGFy
bmVzcyBlcnJvciB0aGF0CiAgICAgICogc2hvdWxkIGNhbmNlbCBhbGwgZnVydGhlciB0ZXN0aW5n
LiBVcGRhdGUgYWxsIHByZXZpb3VzbHktZGVmaW5lZCB0ZXN0cwpAQCAtMjQxMiwyMiArMzA3Niwx
NiBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICB9CiAKICAgICBm
dW5jdGlvbiBzYW5pdGl6ZV91bnBhaXJlZF9zdXJyb2dhdGVzKHN0cikgewotICAgICAgICByZXR1
cm4gc3RyLnJlcGxhY2UoLyhbXHVkODAwLVx1ZGJmZl0pKD8hW1x1ZGMwMC1cdWRmZmZdKS9nLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oXywgdW5wYWlyZWQpCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGNvZGVfdW5pdF9zdHIodW5wYWlyZWQpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
fSkKLSAgICAgICAgICAgICAgICAgIC8vIFRoaXMgcmVwbGFjZW1lbnQgaXMgaW50ZW50aW9uYWxs
eSBpbXBsZW1lbnRlZCB3aXRob3V0IGFuCi0gICAgICAgICAgICAgICAgICAvLyBFUzIwMTggbmVn
YXRpdmUgbG9va2JlaGluZCBhc3NlcnRpb24gdG8gc3VwcG9ydCBydW50aW1lcwotICAgICAgICAg
ICAgICAgICAgLy8gd2hpY2ggZG8gbm90IHlldCBpbXBsZW1lbnQgdGhhdCBsYW5ndWFnZSBmZWF0
dXJlLgotICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoLyhefFteXHVkODAwLVx1ZGJmZl0pKFtc
dWRjMDAtXHVkZmZmXSkvZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKF8s
IHByZXZpb3VzLCB1bnBhaXJlZCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KC9bXHVkYzAwLVx1ZGZmZl0vLnRlc3QocHJldmlvdXMpKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcHJldmlvdXMgPSBjb2RlX3VuaXRfc3RyKHByZXZpb3VzKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHByZXZpb3VzICsgY29kZV91bml0X3N0cih1bnBhaXJlZCk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuIHN0ci5yZXBsYWNlKAorICAgICAg
ICAgICAgLyhbXHVkODAwLVx1ZGJmZl0rKSg/IVtcdWRjMDAtXHVkZmZmXSl8KF58W15cdWQ4MDAt
XHVkYmZmXSkoW1x1ZGMwMC1cdWRmZmZdKykvZywKKyAgICAgICAgICAgIGZ1bmN0aW9uKF8sIGxv
dywgcHJlZml4LCBoaWdoKSB7CisgICAgICAgICAgICAgICAgdmFyIG91dHB1dCA9IHByZWZpeCB8
fCAiIjsgIC8vIHByZWZpeCBtYXkgYmUgdW5kZWZpbmVkCisgICAgICAgICAgICAgICAgdmFyIHN0
cmluZyA9IGxvdyB8fCBoaWdoOyAgLy8gb25seSBvbmUgb2YgdGhlc2UgYWx0ZXJuYXRlcyBjYW4g
bWF0Y2gKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0cmluZy5sZW5ndGg7
IGkrKykgeworICAgICAgICAgICAgICAgICAgICBvdXRwdXQgKz0gY29kZV91bml0X3N0cihzdHJp
bmdbaV0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gb3V0cHV0
OworICAgICAgICAgICAgfSk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gc2FuaXRpemVfYWxsX3Vu
cGFpcmVkX3N1cnJvZ2F0ZXModGVzdHMpIHsKQEAgLTI0NzMsNyArMzEzMSw3IEBAIHBvbGljaWVz
IGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAgICBmb3JFYWNoICh0aGlzLmFsbF9k
b25lX2NhbGxiYWNrcywKICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oY2FsbGJhY2spCiAgICAg
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHRoaXNfb2JqLnRl
c3RzLCB0aGlzX29iai5zdGF0dXMpOworICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sodGhp
c19vYmoudGVzdHMsIHRoaXNfb2JqLnN0YXR1cywgdGhpc19vYmouYXNzZXJ0c19ydW4pOwogICAg
ICAgICAgICAgICAgICB9KTsKICAgICB9OwogCkBAIC0yNDg0LDI0ICszMTQyLDggQEAgcG9saWNp
ZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAgIHZhciBtZXNzYWdlX3BvcnQ7
CiAKICAgICAgICAgaWYgKGlzX3NlcnZpY2Vfd29ya2VyKHdvcmtlcikpIHsKLSAgICAgICAgICAg
IGlmICh3aW5kb3cuTWVzc2FnZUNoYW5uZWwpIHsKLSAgICAgICAgICAgICAgICAvLyBUaGUgU2Vy
dmljZVdvcmtlcidzIGltcGxpY2l0IE1lc3NhZ2VQb3J0IGlzIGN1cnJlbnRseSBub3QKLSAgICAg
ICAgICAgICAgICAvLyByZWxpYWJseSBhY2Nlc3NpYmxlIGZyb20gdGhlIFNlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZSBkdWUgdG8KLSAgICAgICAgICAgICAgICAvLyBCbGluayBzZXR0aW5nIE1lc3Nh
Z2VFdmVudC5zb3VyY2UgdG8gbnVsbCBmb3IgbWVzc2FnZXMgc2VudAotICAgICAgICAgICAgICAg
IC8vIHZpYSBTZXJ2aWNlV29ya2VyLnBvc3RNZXNzYWdlKCkuIFVudGlsIHRoYXQncyByZXNvbHZl
ZCwKLSAgICAgICAgICAgICAgICAvLyBjcmVhdGUgYW4gZXhwbGljaXQgTWVzc2FnZUNoYW5uZWwg
YW5kIHBhc3Mgb25lIGVuZCB0byB0aGUKLSAgICAgICAgICAgICAgICAvLyB3b3JrZXIuCi0gICAg
ICAgICAgICAgICAgdmFyIG1lc3NhZ2VfY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbCgpOwot
ICAgICAgICAgICAgICAgIG1lc3NhZ2VfcG9ydCA9IG1lc3NhZ2VfY2hhbm5lbC5wb3J0MTsKLSAg
ICAgICAgICAgICAgICBtZXNzYWdlX3BvcnQuc3RhcnQoKTsKLSAgICAgICAgICAgICAgICB3b3Jr
ZXIucG9zdE1lc3NhZ2Uoe3R5cGU6ICJjb25uZWN0In0sIFttZXNzYWdlX2NoYW5uZWwucG9ydDJd
KTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgLy8gSWYgTWVzc2FnZUNo
YW5uZWwgaXMgbm90IGF2YWlsYWJsZSwgdGhlbiB0cnkgdGhlCi0gICAgICAgICAgICAgICAgLy8g
U2VydmljZVdvcmtlci5wb3N0TWVzc2FnZSgpIGFwcHJvYWNoIHVzaW5nIE1lc3NhZ2VFdmVudC5z
b3VyY2UKLSAgICAgICAgICAgICAgICAvLyBvbiB0aGUgb3RoZXIgZW5kLgotICAgICAgICAgICAg
ICAgIG1lc3NhZ2VfcG9ydCA9IG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyOwotICAgICAgICAgICAg
ICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7dHlwZTogImNvbm5lY3QifSk7Ci0gICAgICAgICAgICB9
CisgICAgICAgICAgICBtZXNzYWdlX3BvcnQgPSBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlcjsKKyAg
ICAgICAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7dHlwZTogImNvbm5lY3QifSk7CiAgICAgICAg
IH0gZWxzZSBpZiAoaXNfc2hhcmVkX3dvcmtlcih3b3JrZXIpKSB7CiAgICAgICAgICAgICBtZXNz
YWdlX3BvcnQgPSB3b3JrZXIucG9ydDsKICAgICAgICAgICAgIG1lc3NhZ2VfcG9ydC5zdGFydCgp
OwpAQCAtMjcwNCw3ICszMzQ2LDcgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBb
M10uCiAgICAgICAgICAgICB0aGlzLnBoYXNlID0gdGhpcy5IQVZFX1JFU1VMVFM7CiAgICAgICAg
IH0KICAgICAgICAgdmFyIGRvbmVfY291bnQgPSB0ZXN0cy50ZXN0cy5sZW5ndGggLSB0ZXN0cy5u
dW1fcGVuZGluZzsKLSAgICAgICAgaWYgKHRoaXMub3V0cHV0X25vZGUpIHsKKyAgICAgICAgaWYg
KHRoaXMub3V0cHV0X25vZGUgJiYgIXRlc3RzLmhpZGVfdGVzdF9zdGF0ZSkgewogICAgICAgICAg
ICAgaWYgKGRvbmVfY291bnQgPCAxMDAgfHwKICAgICAgICAgICAgICAgICAoZG9uZV9jb3VudCA8
IDEwMDAgJiYgZG9uZV9jb3VudCAlIDEwMCA9PT0gMCkgfHwKICAgICAgICAgICAgICAgICBkb25l
X2NvdW50ICUgMTAwMCA9PT0gMCkgewpAQCAtMjcxNSw3ICszMzU3LDcgQEAgcG9saWNpZXMgYW5k
IGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAgIH0KICAgICB9OwogCi0gICAgT3V0cHV0
LnByb3RvdHlwZS5zaG93X3Jlc3VsdHMgPSBmdW5jdGlvbiAodGVzdHMsIGhhcm5lc3Nfc3RhdHVz
KSB7CisgICAgT3V0cHV0LnByb3RvdHlwZS5zaG93X3Jlc3VsdHMgPSBmdW5jdGlvbiAodGVzdHMs
IGhhcm5lc3Nfc3RhdHVzLCBhc3NlcnRzX3J1bikgewogICAgICAgICBpZiAodGhpcy5waGFzZSA+
PSB0aGlzLkNPTVBMRVRFKSB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTI3
NDQsMjEgKzMzODYsMTAgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAg
ICAgICAgICAgICBoZWFkc1swXS5hcHBlbmRDaGlsZChzdHlsZXNoZWV0KTsKICAgICAgICAgfQog
Ci0gICAgICAgIHZhciBzdGF0dXNfdGV4dF9oYXJuZXNzID0ge307Ci0gICAgICAgIHN0YXR1c190
ZXh0X2hhcm5lc3NbaGFybmVzc19zdGF0dXMuT0tdID0gIk9LIjsKLSAgICAgICAgc3RhdHVzX3Rl
eHRfaGFybmVzc1toYXJuZXNzX3N0YXR1cy5FUlJPUl0gPSAiRXJyb3IiOwotICAgICAgICBzdGF0
dXNfdGV4dF9oYXJuZXNzW2hhcm5lc3Nfc3RhdHVzLlRJTUVPVVRdID0gIlRpbWVvdXQiOwotCi0g
ICAgICAgIHZhciBzdGF0dXNfdGV4dCA9IHt9OwotICAgICAgICBzdGF0dXNfdGV4dFtUZXN0LnBy
b3RvdHlwZS5QQVNTXSA9ICJQYXNzIjsKLSAgICAgICAgc3RhdHVzX3RleHRbVGVzdC5wcm90b3R5
cGUuRkFJTF0gPSAiRmFpbCI7Ci0gICAgICAgIHN0YXR1c190ZXh0W1Rlc3QucHJvdG90eXBlLlRJ
TUVPVVRdID0gIlRpbWVvdXQiOwotICAgICAgICBzdGF0dXNfdGV4dFtUZXN0LnByb3RvdHlwZS5O
T1RSVU5dID0gIk5vdCBSdW4iOwotCiAgICAgICAgIHZhciBzdGF0dXNfbnVtYmVyID0ge307CiAg
ICAgICAgIGZvckVhY2godGVzdHMsCiAgICAgICAgICAgICAgICAgZnVuY3Rpb24odGVzdCkgewot
ICAgICAgICAgICAgICAgICAgICB2YXIgc3RhdHVzID0gc3RhdHVzX3RleHRbdGVzdC5zdGF0dXNd
OworICAgICAgICAgICAgICAgICAgICB2YXIgc3RhdHVzID0gdGVzdC5mb3JtYXRfc3RhdHVzKCk7
CiAgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0dXNfbnVtYmVyLmhhc093blByb3BlcnR5KHN0
YXR1cykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c19udW1iZXJbc3RhdHVzXSAr
PSAxOwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewpAQCAtMjc3NSw4ICszNDA2LDcgQEAg
cG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFsiaDIiLCB7fSwgIlN1bW1hcnkiXSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZnVuY3Rpb24oKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7
Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzdGF0dXMgPSBzdGF0
dXNfdGV4dF9oYXJuZXNzW2hhcm5lc3Nfc3RhdHVzLnN0YXR1c107CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2YXIgc3RhdHVzID0gaGFybmVzc19zdGF0dXMuZm9ybWF0X3N0
YXR1cygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJ2ID0gW1si
c2VjdGlvbiIsIHt9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBbInAiLCB7fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJIYXJuZXNzIHN0YXR1czogIiwKQEAgLTI3OTgsMTMgKzM0MjgsMTQgQEAgcG9saWNp
ZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dmFyIHJ2ID0gW1siZGl2Iiwge31dXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHZhciBpID0gMDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxl
IChzdGF0dXNfdGV4dC5oYXNPd25Qcm9wZXJ0eShpKSkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChzdGF0dXNfbnVtYmVyLmhhc093blByb3BlcnR5KHN0YXR1
c190ZXh0W2ldKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2YXIgc3RhdHVzID0gc3RhdHVzX3RleHRbaV07Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJ2WzBdLnB1c2goWyJkaXYiLCB7ImNsYXNzIjpzdGF0dXNfY2xh
c3Moc3RhdHVzKX0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAo
VGVzdC5wcm90b3R5cGUuc3RhdHVzX2Zvcm1hdHMuaGFzT3duUHJvcGVydHkoaSkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzX251bWJlci5oYXNP
d25Qcm9wZXJ0eShUZXN0LnByb3RvdHlwZS5zdGF0dXNfZm9ybWF0c1tpXSkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXR1cyA9IFRlc3QucHJv
dG90eXBlLnN0YXR1c19mb3JtYXRzW2ldOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBydlswXS5wdXNoKFsiZGl2Iiwge30sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsibGFiZWwiLCB7fSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiaW5w
dXQiLCB7dHlwZToiY2hlY2tib3giLCBjaGVja2VkOiJjaGVja2VkIn1dLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzX251bWJl
cltzdGF0dXNdICsgIiAiICsgc3RhdHVzXV0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzX251bWJlcltzdGF0dXNdICsgIiAi
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgWyJzcGFuIiwgeyJjbGFzcyI6c3RhdHVzX2NsYXNzKHN0YXR1cyl9LCBzdGF0dXNdXV0pOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpKys7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9CkBAIC0yODI0LDEzICszNDU1LDEzIEBAIHBvbGljaWVzIGFuZCBjb250cmli
dXRpb24gZm9ybXMgWzNdLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUu
cHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0X2NsYXNzID0gZWxlbWVudC5wYXJlbnROb2Rl
LmdldEF0dHJpYnV0ZSgiY2xhc3MiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZhciByZXN1bHRfY2xhc3MgPSBlbGVtZW50LnF1ZXJ5U2VsZWN0b3IoInNwYW5bY2xhc3NdIiku
Z2V0QXR0cmlidXRlKCJjbGFzcyIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dmFyIHN0eWxlX2VsZW1lbnQgPSBvdXRwdXRfZG9jdW1lbnQucXVlcnlTZWxlY3Rvcigic3R5bGUj
aGlkZS0iICsgcmVzdWx0X2NsYXNzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZhciBpbnB1dF9lbGVtZW50ID0gZWxlbWVudC5xdWVyeVNlbGVjdG9yKCJpbnB1dCIpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzdHlsZV9lbGVtZW50ICYmICFpbnB1
dF9lbGVtZW50LmNoZWNrZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdHlsZV9lbGVtZW50ID0gb3V0cHV0X2RvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyh4aHRtbF9u
cywgInN0eWxlIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVf
ZWxlbWVudC5pZCA9ICJoaWRlLSIgKyByZXN1bHRfY2xhc3M7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3R5bGVfZWxlbWVudC50ZXh0Q29udGVudCA9ICJ0YWJsZSNyZXN1
bHRzID4gdGJvZHkgPiB0ci4iK3Jlc3VsdF9jbGFzcysie2Rpc3BsYXk6bm9uZX0iOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlX2VsZW1lbnQudGV4dENvbnRlbnQg
PSAidGFibGUjcmVzdWx0cyA+IHRib2R5ID4gdHIub3ZlcmFsbC0iK3Jlc3VsdF9jbGFzcysie2Rp
c3BsYXk6bm9uZX0iOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1
dF9kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHN0eWxlX2VsZW1lbnQpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzdHlsZV9lbGVtZW50ICYmIGlucHV0X2Vs
ZW1lbnQuY2hlY2tlZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
eWxlX2VsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzdHlsZV9lbGVtZW50KTsKQEAgLTI4
NzEsNiArMzUwMiw1MiBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAg
ICAgICAgICAgIHJldHVybiAnJzsKICAgICAgICAgfQogCisgICAgICAgIHZhciBhc3NlcnRzX3J1
bl9ieV90ZXN0ID0gbmV3IE1hcCgpOworICAgICAgICBhc3NlcnRzX3J1bi5mb3JFYWNoKGFzc2Vy
dCA9PiB7CisgICAgICAgICAgICBpZiAoIWFzc2VydHNfcnVuX2J5X3Rlc3QuaGFzKGFzc2VydC50
ZXN0KSkgeworICAgICAgICAgICAgICAgIGFzc2VydHNfcnVuX2J5X3Rlc3Quc2V0KGFzc2VydC50
ZXN0LCBbXSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBhc3NlcnRzX3J1bl9ieV90ZXN0
LmdldChhc3NlcnQudGVzdCkucHVzaChhc3NlcnQpOworICAgICAgICB9KTsKKworICAgICAgICBm
dW5jdGlvbiBnZXRfYXNzZXJ0c19vdXRwdXQodGVzdCkgeworICAgICAgICAgICAgdmFyIGFzc2Vy
dHMgPSBhc3NlcnRzX3J1bl9ieV90ZXN0LmdldCh0ZXN0KTsKKyAgICAgICAgICAgIGlmICghYXNz
ZXJ0cykgeworICAgICAgICAgICAgICAgIHJldHVybiAiTm8gYXNzZXJ0cyByYW4iOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgcnYgPSAiPHRhYmxlPiI7CisgICAgICAgICAgICBydiArPSBh
c3NlcnRzLm1hcChhc3NlcnQgPT4geworICAgICAgICAgICAgICAgIHZhciBvdXRwdXRfZm4gPSAi
PHN0cm9uZz4iICsgZXNjYXBlX2h0bWwoYXNzZXJ0LmFzc2VydF9uYW1lKSArICI8L3N0cm9uZz4o
IjsKKyAgICAgICAgICAgICAgICB2YXIgcHJlZml4X2xlbiA9IG91dHB1dF9mbi5sZW5ndGg7Cisg
ICAgICAgICAgICAgICAgdmFyIG91dHB1dF9hcmdzID0gYXNzZXJ0LmFyZ3M7CisgICAgICAgICAg
ICAgICAgdmFyIG91dHB1dF9sZW4gPSBvdXRwdXRfYXJncy5yZWR1Y2UoKHByZXYsIGN1cnJlbnQp
ID0+IHByZXYrY3VycmVudCwgcHJlZml4X2xlbik7CisgICAgICAgICAgICAgICAgaWYgKG91dHB1
dF9sZW5bb3V0cHV0X2xlbi5sZW5ndGggLSAxXSA+IDUwKSB7CisgICAgICAgICAgICAgICAgICAg
IG91dHB1dF9hcmdzID0gb3V0cHV0X2FyZ3MubWFwKCh4LCBpKSA9PgorICAgICAgICAgICAgICAg
ICAgICAoaSA+IDAgPyAiICAiLnJlcGVhdChwcmVmaXhfbGVuKSA6ICIiICkrIHggKyAoaSA8IG91
dHB1dF9hcmdzLmxlbmd0aCAtIDEgPyAiLFxuIiA6ICIiKSk7CisgICAgICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0X2FyZ3MgPSBvdXRwdXRfYXJncy5tYXAo
KHgsIGkpID0+IHggKyAoaSA8IG91dHB1dF9hcmdzLmxlbmd0aCAtIDEgPyAiLCAiIDogIiIpKTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgb3V0cHV0X2ZuICs9IGVzY2FwZV9o
dG1sKG91dHB1dF9hcmdzLmpvaW4oIiIpKTsKKyAgICAgICAgICAgICAgICBvdXRwdXRfZm4gKz0g
JyknOworICAgICAgICAgICAgICAgIHZhciBvdXRwdXRfbG9jYXRpb247CisgICAgICAgICAgICAg
ICAgaWYgKGFzc2VydC5zdGFjaykgeworICAgICAgICAgICAgICAgICAgICBvdXRwdXRfbG9jYXRp
b24gPSBhc3NlcnQuc3RhY2suc3BsaXQoIlxuIiwgMSlbMF0ucmVwbGFjZSgvQD9cdys6XC9cL1te
ICJcL10rKD86OlxkKyk/L2csICIgIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIHJldHVybiAiPHRyIGNsYXNzPSdvdmVyYWxsLSIgKworICAgICAgICAgICAgICAgICAgICBz
dGF0dXNfY2xhc3MoVGVzdC5wcm90b3R5cGUuc3RhdHVzX2Zvcm1hdHNbYXNzZXJ0LnN0YXR1c10p
ICsgIic+IiArCisgICAgICAgICAgICAgICAgICAgICI8dGQgY2xhc3M9JyIgKworICAgICAgICAg
ICAgICAgICAgICBzdGF0dXNfY2xhc3MoVGVzdC5wcm90b3R5cGUuc3RhdHVzX2Zvcm1hdHNbYXNz
ZXJ0LnN0YXR1c10pICsgIic+IiArCisgICAgICAgICAgICAgICAgICAgIFRlc3QucHJvdG90eXBl
LnN0YXR1c19mb3JtYXRzW2Fzc2VydC5zdGF0dXNdICsgIjwvdGQ+IiArCisgICAgICAgICAgICAg
ICAgICAgICI8dGQ+PHByZT4iICsKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0X2ZuICsKKyAg
ICAgICAgICAgICAgICAgICAgKG91dHB1dF9sb2NhdGlvbiA/ICJcbiIgKyBlc2NhcGVfaHRtbChv
dXRwdXRfbG9jYXRpb24pIDogIiIpICsKKyAgICAgICAgICAgICAgICAgICAgIjwvcHJlPjwvdGQ+
PC90cj4iOworICAgICAgICAgICAgfQorICAgICAgICAgICAgKS5qb2luKCJcbiIpOworICAgICAg
ICAgICAgcnYgKz0gIjwvdGFibGU+IjsKKyAgICAgICAgICAgIHJldHVybiBydjsKKyAgICAgICAg
fQorCiAgICAgICAgIGxvZy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoeGh0
bWxfbnMsICJzZWN0aW9uIikpOwogICAgICAgICB2YXIgYXNzZXJ0aW9ucyA9IGhhc19hc3NlcnRp
b25zKCk7CiAgICAgICAgIHZhciBodG1sID0gIjxoMj5EZXRhaWxzPC9oMj48dGFibGUgaWQ9J3Jl
c3VsdHMnICIgKyAoYXNzZXJ0aW9ucyA/ICJjbGFzcz0nYXNzZXJ0aW9ucyciIDogIiIgKSArICI+
IiArCkBAIC0yODc5LDE5ICszNTU2LDI2IEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9y
bXMgWzNdLgogICAgICAgICAgICAgIjx0aD5NZXNzYWdlPC90aD48L3RyPjwvdGhlYWQ+IiArCiAg
ICAgICAgICAgICAiPHRib2R5PiI7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGVzdHMu
bGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgIGh0bWwgKz0gJzx0ciBjbGFzcz0iJyArCi0gICAg
ICAgICAgICAgICAgZXNjYXBlX2h0bWwoc3RhdHVzX2NsYXNzKHN0YXR1c190ZXh0W3Rlc3RzW2ld
LnN0YXR1c10pKSArCi0gICAgICAgICAgICAgICAgJyI+PHRkPicgKwotICAgICAgICAgICAgICAg
IGVzY2FwZV9odG1sKHN0YXR1c190ZXh0W3Rlc3RzW2ldLnN0YXR1c10pICsKKyAgICAgICAgICAg
IHZhciB0ZXN0ID0gdGVzdHNbaV07CisgICAgICAgICAgICBodG1sICs9ICc8dHIgY2xhc3M9Im92
ZXJhbGwtJyArCisgICAgICAgICAgICAgICAgc3RhdHVzX2NsYXNzKHRlc3QuZm9ybWF0X3N0YXR1
cygpKSArCisgICAgICAgICAgICAgICAgJyI+JyArCisgICAgICAgICAgICAgICAgJzx0ZCBjbGFz
cz0iJyArCisgICAgICAgICAgICAgICAgc3RhdHVzX2NsYXNzKHRlc3QuZm9ybWF0X3N0YXR1cygp
KSArCisgICAgICAgICAgICAgICAgJyI+JyArCisgICAgICAgICAgICAgICAgdGVzdC5mb3JtYXRf
c3RhdHVzKCkgKwogICAgICAgICAgICAgICAgICI8L3RkPjx0ZD4iICsKLSAgICAgICAgICAgICAg
ICBlc2NhcGVfaHRtbCh0ZXN0c1tpXS5uYW1lKSArCisgICAgICAgICAgICAgICAgZXNjYXBlX2h0
bWwodGVzdC5uYW1lKSArCiAgICAgICAgICAgICAgICAgIjwvdGQ+PHRkPiIgKwotICAgICAgICAg
ICAgICAgIChhc3NlcnRpb25zID8gZXNjYXBlX2h0bWwoZ2V0X2Fzc2VydGlvbih0ZXN0c1tpXSkp
ICsgIjwvdGQ+PHRkPiIgOiAiIikgKwotICAgICAgICAgICAgICAgIGVzY2FwZV9odG1sKHRlc3Rz
W2ldLm1lc3NhZ2UgPyB0ZXN0c1tpXS5tZXNzYWdlIDogIiAiKSArCisgICAgICAgICAgICAgICAg
KGFzc2VydGlvbnMgPyBlc2NhcGVfaHRtbChnZXRfYXNzZXJ0aW9uKHRlc3QpKSArICI8L3RkPjx0
ZD4iIDogIiIpICsKKyAgICAgICAgICAgICAgICBlc2NhcGVfaHRtbCh0ZXN0Lm1lc3NhZ2UgPyB0
ZXN0c1tpXS5tZXNzYWdlIDogIiAiKSArCiAgICAgICAgICAgICAgICAgKHRlc3RzW2ldLnN0YWNr
ID8gIjxwcmU+IiArCiAgICAgICAgICAgICAgICAgIGVzY2FwZV9odG1sKHRlc3RzW2ldLnN0YWNr
KSArCi0gICAgICAgICAgICAgICAgICI8L3ByZT4iOiAiIikgKwotICAgICAgICAgICAgICAgICI8
L3RkPjwvdHI+IjsKKyAgICAgICAgICAgICAgICAgIjwvcHJlPiI6ICIiKTsKKyAgICAgICAgICAg
IGlmICghKHRlc3QgaW5zdGFuY2VvZiBSZW1vdGVUZXN0KSkgeworICAgICAgICAgICAgICAgICBo
dG1sICs9ICI8ZGV0YWlscz48c3VtbWFyeT5Bc3NlcnRzIHJ1bjwvc3VtbWFyeT4iICsgZ2V0X2Fz
c2VydHNfb3V0cHV0KHRlc3QpICsgIjwvZGV0YWlscz4iCisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBodG1sICs9ICI8L3RkPjwvdHI+IjsKICAgICAgICAgfQogICAgICAgICBodG1sICs9ICI8
L3Rib2R5PjwvdGFibGU+IjsKICAgICAgICAgdHJ5IHsKQEAgLTMwNzMsOSArMzc1Nyw2IEBAIHBv
bGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAqLwogICAgIGZ1bmN0aW9u
IGFzc2VydChleHBlY3RlZF90cnVlLCBmdW5jdGlvbl9uYW1lLCBkZXNjcmlwdGlvbiwgZXJyb3Is
IHN1YnN0aXR1dGlvbnMpCiAgICAgewotICAgICAgICBpZiAodGVzdHMudGVzdHMubGVuZ3RoID09
PSAwKSB7Ci0gICAgICAgICAgICB0ZXN0cy5zZXRfZmlsZV9pc190ZXN0KCk7Ci0gICAgICAgIH0K
ICAgICAgICAgaWYgKGV4cGVjdGVkX3RydWUgIT09IHRydWUpIHsKICAgICAgICAgICAgIHZhciBt
c2cgPSBtYWtlX21lc3NhZ2UoZnVuY3Rpb25fbmFtZSwgZGVzY3JpcHRpb24sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yLCBzdWJzdGl0dXRpb25zKTsKQEAgLTMwODUs
MTQgKzM3NjYsMTcgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAKICAg
ICBmdW5jdGlvbiBBc3NlcnRpb25FcnJvcihtZXNzYWdlKQogICAgIHsKKyAgICAgICAgaWYgKHR5
cGVvZiBtZXNzYWdlID09ICJzdHJpbmciKSB7CisgICAgICAgICAgICBtZXNzYWdlID0gc2FuaXRp
emVfdW5wYWlyZWRfc3Vycm9nYXRlcyhtZXNzYWdlKTsKKyAgICAgICAgfQogICAgICAgICB0aGlz
Lm1lc3NhZ2UgPSBtZXNzYWdlOwotICAgICAgICB0aGlzLnN0YWNrID0gdGhpcy5nZXRfc3RhY2so
KTsKKyAgICAgICAgdGhpcy5zdGFjayA9IGdldF9zdGFjaygpOwogICAgIH0KICAgICBleHBvc2Uo
QXNzZXJ0aW9uRXJyb3IsICJBc3NlcnRpb25FcnJvciIpOwogCiAgICAgQXNzZXJ0aW9uRXJyb3Iu
cHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShFcnJvci5wcm90b3R5cGUpOwogCi0gICAgQXNzZXJ0
aW9uRXJyb3IucHJvdG90eXBlLmdldF9zdGFjayA9IGZ1bmN0aW9uKCkgeworICAgIGNvbnN0IGdl
dF9zdGFjayA9IGZ1bmN0aW9uKCkgewogICAgICAgICB2YXIgc3RhY2sgPSBuZXcgRXJyb3IoKS5z
dGFjazsKICAgICAgICAgLy8gSUUxMSBkb2VzIG5vdCBpbml0aWFsaXplICdFcnJvci5zdGFjaycg
dW50aWwgdGhlIG9iamVjdCBpcyB0aHJvd24uCiAgICAgICAgIGlmICghc3RhY2spIHsKQEAgLTMx
MzgsNiArMzgyMiwxMyBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAg
ICAgICAgcmV0dXJuIGxpbmVzLnNsaWNlKGkpLmpvaW4oIlxuIik7CiAgICAgfQogCisgICAgZnVu
Y3Rpb24gT3B0aW9uYWxGZWF0dXJlVW5zdXBwb3J0ZWRFcnJvcihtZXNzYWdlKQorICAgIHsKKyAg
ICAgICAgQXNzZXJ0aW9uRXJyb3IuY2FsbCh0aGlzLCBtZXNzYWdlKTsKKyAgICB9CisgICAgT3B0
aW9uYWxGZWF0dXJlVW5zdXBwb3J0ZWRFcnJvci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEFz
c2VydGlvbkVycm9yLnByb3RvdHlwZSk7CisgICAgZXhwb3NlKE9wdGlvbmFsRmVhdHVyZVVuc3Vw
cG9ydGVkRXJyb3IsICJPcHRpb25hbEZlYXR1cmVVbnN1cHBvcnRlZEVycm9yIik7CisKICAgICBm
dW5jdGlvbiBtYWtlX21lc3NhZ2UoZnVuY3Rpb25fbmFtZSwgZGVzY3JpcHRpb24sIGVycm9yLCBz
dWJzdGl0dXRpb25zKQogICAgIHsKICAgICAgICAgZm9yICh2YXIgcCBpbiBzdWJzdGl0dXRpb25z
KSB7CkBAIC0zMzA2LDcgKzM5OTcsNyBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1z
IFszXS4KICAgICBmdW5jdGlvbiBnZXRfdGl0bGUoKQogICAgIHsKICAgICAgICAgaWYgKCdkb2N1
bWVudCcgaW4gZ2xvYmFsX3Njb3BlKSB7Ci0gICAgICAgICAgICAvL0Rvbid0IHVzZSBkb2N1bWVu
dC50aXRsZSB0byB3b3JrIGFyb3VuZCBhbiBPcGVyYSBidWcgaW4gWEhUTUwgZG9jdW1lbnRzCisg
ICAgICAgICAgICAvL0Rvbid0IHVzZSBkb2N1bWVudC50aXRsZSB0byB3b3JrIGFyb3VuZCBhbiBP
cGVyYS9QcmVzdG8gYnVnIGluIFhIVE1MIGRvY3VtZW50cwogICAgICAgICAgICAgdmFyIHRpdGxl
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRpdGxlIilbMF07CiAgICAgICAgICAg
ICBpZiAodGl0bGUgJiYgdGl0bGUuZmlyc3RDaGlsZCAmJiB0aXRsZS5maXJzdENoaWxkLmRhdGEp
IHsKICAgICAgICAgICAgICAgICByZXR1cm4gdGl0bGUuZmlyc3RDaGlsZC5kYXRhOwpAQCAtMzM2
NSwzOCArNDA1Niw1NiBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAg
ICB2YXIgdGVzdHMgPSBuZXcgVGVzdHMoKTsKIAogICAgIGlmIChnbG9iYWxfc2NvcGUuYWRkRXZl
bnRMaXN0ZW5lcikgewotICAgICAgICB2YXIgZXJyb3JfaGFuZGxlciA9IGZ1bmN0aW9uKGUpIHsK
LSAgICAgICAgICAgIGlmICh0ZXN0cy50ZXN0cy5sZW5ndGggPT09IDAgJiYgIXRlc3RzLmFsbG93
X3VuY2F1Z2h0X2V4Y2VwdGlvbikgewotICAgICAgICAgICAgICAgIHRlc3RzLnNldF9maWxlX2lz
X3Rlc3QoKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdmFyIHN0YWNrOwotICAgICAg
ICAgICAgaWYgKGUuZXJyb3IgJiYgZS5lcnJvci5zdGFjaykgewotICAgICAgICAgICAgICAgIHN0
YWNrID0gZS5lcnJvci5zdGFjazsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgc3RhY2sgPSBlLmZpbGVuYW1lICsgIjoiICsgZS5saW5lbm8gKyAiOiIgKyBlLmNvbG5vOwot
ICAgICAgICAgICAgfQotCisgICAgICAgIHZhciBlcnJvcl9oYW5kbGVyID0gZnVuY3Rpb24oZXJy
b3IsIG1lc3NhZ2UsIHN0YWNrKSB7CisgICAgICAgICAgICB2YXIgb3B0aW9uYWxfdW5zdXBwb3J0
ZWQgPSBlcnJvciBpbnN0YW5jZW9mIE9wdGlvbmFsRmVhdHVyZVVuc3VwcG9ydGVkRXJyb3I7CiAg
ICAgICAgICAgICBpZiAodGVzdHMuZmlsZV9pc190ZXN0KSB7CiAgICAgICAgICAgICAgICAgdmFy
IHRlc3QgPSB0ZXN0cy50ZXN0c1swXTsKICAgICAgICAgICAgICAgICBpZiAodGVzdC5waGFzZSA+
PSB0ZXN0LnBoYXNlcy5IQVNfUkVTVUxUKSB7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgdGVzdC5zZXRfc3RhdHVzKHRlc3Qu
RkFJTCwgZS5tZXNzYWdlLCBzdGFjayk7CisgICAgICAgICAgICAgICAgdmFyIHN0YXR1cyA9IG9w
dGlvbmFsX3Vuc3VwcG9ydGVkID8gdGVzdC5QUkVDT05ESVRJT05fRkFJTEVEIDogdGVzdC5GQUlM
OworICAgICAgICAgICAgICAgIHRlc3Quc2V0X3N0YXR1cyhzdGF0dXMsIG1lc3NhZ2UsIHN0YWNr
KTsKICAgICAgICAgICAgICAgICB0ZXN0LnBoYXNlID0gdGVzdC5waGFzZXMuSEFTX1JFU1VMVDsK
LSAgICAgICAgICAgICAgICAvLyBUaGUgZm9sbG93aW5nIGZ1bmN0aW9uIGludm9jYXRpb24gaXMg
c3VwZXJmbHVvdXMuCi0gICAgICAgICAgICAgICAgLy8gVE9ETzogUmVtb3ZlLgotICAgICAgICAg
ICAgICAgIHRlc3QuZG9uZSgpOwogICAgICAgICAgICAgfSBlbHNlIGlmICghdGVzdHMuYWxsb3df
dW5jYXVnaHRfZXhjZXB0aW9uKSB7Ci0gICAgICAgICAgICAgICAgdGVzdHMuc3RhdHVzLnN0YXR1
cyA9IHRlc3RzLnN0YXR1cy5FUlJPUjsKLSAgICAgICAgICAgICAgICB0ZXN0cy5zdGF0dXMubWVz
c2FnZSA9IGUubWVzc2FnZTsKKyAgICAgICAgICAgICAgICB2YXIgc3RhdHVzID0gb3B0aW9uYWxf
dW5zdXBwb3J0ZWQgPyB0ZXN0cy5zdGF0dXMuUFJFQ09ORElUSU9OX0ZBSUxFRCA6IHRlc3RzLnN0
YXR1cy5FUlJPUjsKKyAgICAgICAgICAgICAgICB0ZXN0cy5zdGF0dXMuc3RhdHVzID0gc3RhdHVz
OworICAgICAgICAgICAgICAgIHRlc3RzLnN0YXR1cy5tZXNzYWdlID0gbWVzc2FnZTsKICAgICAg
ICAgICAgICAgICB0ZXN0cy5zdGF0dXMuc3RhY2sgPSBzdGFjazsKICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGRvbmUoKTsKKworICAgICAgICAgICAgLy8gRG8gbm90IHRyYW5zaXRpb24gdG8g
dGhlICJjb21wbGV0ZSIgcGhhc2UgaWYgdGhlIHRlc3QgaGFzIGJlZW4KKyAgICAgICAgICAgIC8v
IGNvbmZpZ3VyZWQgdG8gYWxsb3cgdW5jYXVnaHQgZXhjZXB0aW9ucy4gVGhpcyBnaXZlcyB0aGUg
dGVzdCBhbgorICAgICAgICAgICAgLy8gb3Bwb3J0dW5pdHkgdG8gZGVmaW5lIHN1YnRlc3RzIGJh
c2VkIG9uIHRoZSBleGNlcHRpb24gcmVwb3J0aW5nCisgICAgICAgICAgICAvLyBiZWhhdmlvci4K
KyAgICAgICAgICAgIGlmICghdGVzdHMuYWxsb3dfdW5jYXVnaHRfZXhjZXB0aW9uKSB7CisgICAg
ICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAg
IGFkZEV2ZW50TGlzdGVuZXIoImVycm9yIiwgZXJyb3JfaGFuZGxlciwgZmFsc2UpOwotICAgICAg
ICBhZGRFdmVudExpc3RlbmVyKCJ1bmhhbmRsZWRyZWplY3Rpb24iLCBmdW5jdGlvbihlKXsgZXJy
b3JfaGFuZGxlcihlLnJlYXNvbik7IH0sIGZhbHNlKTsKKyAgICAgICAgYWRkRXZlbnRMaXN0ZW5l
cigiZXJyb3IiLCBmdW5jdGlvbihlKSB7CisgICAgICAgICAgICB2YXIgbWVzc2FnZSA9IGUubWVz
c2FnZTsKKyAgICAgICAgICAgIHZhciBzdGFjazsKKyAgICAgICAgICAgIGlmIChlLmVycm9yICYm
IGUuZXJyb3Iuc3RhY2spIHsKKyAgICAgICAgICAgICAgICBzdGFjayA9IGUuZXJyb3Iuc3RhY2s7
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHN0YWNrID0gZS5maWxlbmFt
ZSArICI6IiArIGUubGluZW5vICsgIjoiICsgZS5jb2xubzsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGVycm9yX2hhbmRsZXIoZS5lcnJvciwgbWVzc2FnZSwgc3RhY2spOworICAgICAgICB9
LCBmYWxzZSk7CisKKyAgICAgICAgYWRkRXZlbnRMaXN0ZW5lcigidW5oYW5kbGVkcmVqZWN0aW9u
IiwgZnVuY3Rpb24oZSkgeworICAgICAgICAgICAgdmFyIG1lc3NhZ2U7CisgICAgICAgICAgICBp
ZiAoZS5yZWFzb24gJiYgZS5yZWFzb24ubWVzc2FnZSkgeworICAgICAgICAgICAgICAgIG1lc3Nh
Z2UgPSAiVW5oYW5kbGVkIHJlamVjdGlvbjogIiArIGUucmVhc29uLm1lc3NhZ2U7CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAiVW5oYW5kbGVkIHJlamVj
dGlvbiI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB2YXIgc3RhY2s7CisgICAgICAgICAg
ICBpZiAoZS5yZWFzb24gJiYgZS5yZWFzb24uc3RhY2spIHsKKyAgICAgICAgICAgICAgICBzdGFj
ayA9IGUucmVhc29uLnN0YWNrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZXJyb3JfaGFu
ZGxlcihlLnJlYXNvbiwgbWVzc2FnZSwgc3RhY2spOworICAgICAgICB9LCBmYWxzZSk7CiAgICAg
fQogCiAgICAgdGVzdF9lbnZpcm9ubWVudC5vbl90ZXN0c19yZWFkeSgpOwpAQCAtMzQzMSw1MCAr
NDE0MCw2MiBAQCB0YWJsZSNyZXN1bHRzIHtcCiAgICAgd2lkdGg6MTAwJTtcCiB9XAogXAotdGFi
bGUjcmVzdWx0cyB0aDpmaXJzdC1jaGlsZCxcCi10YWJsZSNyZXN1bHRzIHRkOmZpcnN0LWNoaWxk
IHtcCi0gICAgd2lkdGg6NGVtO1wKK3RhYmxlI3Jlc3VsdHMgPiB0aGVhZCA+IHRyID4gdGg6Zmly
c3QtY2hpbGQsXAordGFibGUjcmVzdWx0cyA+IHRib2R5ID4gdHIgPiB0ZDpmaXJzdC1jaGlsZCB7
XAorICAgIHdpZHRoOjhlbTtcCiB9XAogXAotdGFibGUjcmVzdWx0cyB0aDpsYXN0LWNoaWxkLFwK
LXRhYmxlI3Jlc3VsdHMgdGQ6bGFzdC1jaGlsZCB7XAordGFibGUjcmVzdWx0cyA+IHRoZWFkID4g
dHIgPiB0aDpsYXN0LWNoaWxkLFwKK3RhYmxlI3Jlc3VsdHMgPiB0aGVhZCA+IHRyID4gdGQ6bGFz
dC1jaGlsZCB7XAogICAgIHdpZHRoOjUwJTtcCiB9XAogXAotdGFibGUjcmVzdWx0cy5hc3NlcnRp
b25zIHRoOmxhc3QtY2hpbGQsXAotdGFibGUjcmVzdWx0cy5hc3NlcnRpb25zIHRkOmxhc3QtY2hp
bGQge1wKK3RhYmxlI3Jlc3VsdHMuYXNzZXJ0aW9ucyA+IHRoZWFkID4gdHIgPiB0aDpsYXN0LWNo
aWxkLFwKK3RhYmxlI3Jlc3VsdHMuYXNzZXJ0aW9ucyA+IHRib2R5ID4gdHIgPiB0ZDpsYXN0LWNo
aWxkIHtcCiAgICAgd2lkdGg6MzUlO1wKIH1cCiBcCi10YWJsZSNyZXN1bHRzIHRoIHtcCit0YWJs
ZSNyZXN1bHRzID4gdGhlYWQgPiA+IHRyID4gdGgge1wKICAgICBwYWRkaW5nOjA7XAogICAgIHBh
ZGRpbmctYm90dG9tOjAuNWVtO1wKICAgICBib3JkZXItYm90dG9tOm1lZGl1bSBzb2xpZCBibGFj
aztcCiB9XAogXAotdGFibGUjcmVzdWx0cyB0ZCB7XAordGFibGUjcmVzdWx0cyA+IHRib2R5ID4g
dHI+IHRkIHtcCiAgICAgcGFkZGluZzoxZW07XAogICAgIHBhZGRpbmctYm90dG9tOjAuNWVtO1wK
ICAgICBib3JkZXItYm90dG9tOnRoaW4gc29saWQgYmxhY2s7XAogfVwKIFwKLXRyLnBhc3MgPiB0
ZDpmaXJzdC1jaGlsZCB7XAorLnBhc3Mge1wKICAgICBjb2xvcjpncmVlbjtcCiB9XAogXAotdHIu
ZmFpbCA+IHRkOmZpcnN0LWNoaWxkIHtcCisuZmFpbCB7XAogICAgIGNvbG9yOnJlZDtcCiB9XAog
XAotdHIudGltZW91dCA+IHRkOmZpcnN0LWNoaWxkIHtcCit0ci50aW1lb3V0IHtcCiAgICAgY29s
b3I6cmVkO1wKIH1cCiBcCi10ci5ub3RydW4gPiB0ZDpmaXJzdC1jaGlsZCB7XAordHIubm90cnVu
IHtcCiAgICAgY29sb3I6Ymx1ZTtcCiB9XAogXAotLnBhc3MgPiB0ZDpmaXJzdC1jaGlsZCwgLmZh
aWwgPiB0ZDpmaXJzdC1jaGlsZCwgLnRpbWVvdXQgPiB0ZDpmaXJzdC1jaGlsZCwgLm5vdHJ1biA+
IHRkOmZpcnN0LWNoaWxkIHtcCit0ci5vcHRpb25hbHVuc3VwcG9ydGVkIHtcCisgICAgY29sb3I6
Ymx1ZTtcCit9XAorXAorLm9rIHtcCisgICAgY29sb3I6Z3JlZW47XAorfVwKK1wKKy5lcnJvciB7
XAorICAgIGNvbG9yOnJlZDtcCit9XAorXAorLnBhc3MsIC5mYWlsLCAudGltZW91dCwgLm5vdHJ1
biwgLm9wdGlvbmFsdW5zdXBwb3J0ZWQgLm9rLCAudGltZW91dCwgLmVycm9yIHtcCiAgICAgZm9u
dC12YXJpYW50OnNtYWxsLWNhcHM7XAogfVwKIFwKQEAgLTM0OTEsMjMgKzQyMTIsNyBAQCB0YWJs
ZSNyZXN1bHRzIHNwYW4uYWN0dWFsIHtcCiAgICAgZm9udC1mYW1pbHk6RGVqYVZ1IFNhbnMgTW9u
bywgQml0c3RyZWFtIFZlcmEgU2FucyBNb25vLCBNb25vc3BhY2U7XAogICAgIHdoaXRlLXNwYWNl
OnByZTtcCiB9XAotXAotc3Bhbi5vayB7XAotICAgIGNvbG9yOmdyZWVuO1wKLX1cCi1cCi10ci5l
cnJvciB7XAotICAgIGNvbG9yOnJlZDtcCi19XAotXAotc3Bhbi50aW1lb3V0IHtcCi0gICAgY29s
b3I6cmVkO1wKLX1cCi1cCi1zcGFuLm9rLCBzcGFuLnRpbWVvdXQsIHNwYW4uZXJyb3Ige1wKLSAg
ICBmb250LXZhcmlhbnQ6c21hbGwtY2FwcztcCi19XAogIjsKIAotfSkodGhpcyk7Cit9KShzZWxm
KTsKIC8vIHZpbTogc2V0IGV4cGFuZHRhYiBzaGlmdHdpZHRoPTQgdGFic3RvcD00OgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbS1jb250cm9sbGVy
LmpzIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbS1jb250cm9sbGVy
LmpzCmluZGV4IGZlODJmYTVhMWEzNmIwNjE3NmY2NDMwMTA2ODYzNjFmM2JiYmM0MGIuLjc4ZmRl
MmI3ZDY3NDk1NGE3Y2I2ZWYwYzcwMjA0YWY4ODg3MDY0NDQgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW0tY29udHJvbGxlci5qcworKysgYi9MYXlv
dXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtLWNvbnRyb2xsZXIuanMKQEAgLTIw
LDcgKzIwLDcgQEAgdGVzdChmdW5jdGlvbigpIHsKICAgICAgICAgdHlwZTogImJ5dGVzIgogICAg
IH0pOwogCi0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCJDYW4gb25seSBjYWxsIFJl
YWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIuZXJyb3Igb24gaW5zdGFuY2VzIG9mIFJlYWRhYmxl
Qnl0ZVN0cmVhbUNvbnRyb2xsZXIiKSwKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvcigi
Q2FuIG9ubHkgY2FsbCBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyLmVycm9yIG9uIGluc3Rh
bmNlcyBvZiBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyIiksCiAgICAgICAgIGZ1bmN0aW9u
KCkgeyBjb250cm9sbGVyLmVycm9yLmFwcGx5KHJzKTsgfSk7CiB9LCAiQ2FsbGluZyBlcnJvcigp
IHdpdGggYSB0aGlzIG9iamVjdCBkaWZmZXJlbnQgZnJvbSBSZWFkYWJsZUJ5dGVTdHJlYW1Db250
cm9sbGVyIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvciIpOwogCkBAIC0zNCw3ICszNCw3IEBAIHRl
c3QoZnVuY3Rpb24oKSB7CiAgICAgICAgIHR5cGU6ICJieXRlcyIKICAgICB9KTsKIAotICAgIGFz
c2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigiQ2FuIG9ubHkgY2FsbCBSZWFkYWJsZUJ5dGVTdHJl
YW1Db250cm9sbGVyLmNsb3NlIG9uIGluc3RhbmNlcyBvZiBSZWFkYWJsZUJ5dGVTdHJlYW1Db250
cm9sbGVyIiksCisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IoIkNhbiBvbmx5IGNhbGwg
UmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlci5jbG9zZSBvbiBpbnN0YW5jZXMgb2YgUmVhZGFi
bGVCeXRlU3RyZWFtQ29udHJvbGxlciIpLAogICAgICAgICBmdW5jdGlvbigpIHsgY29udHJvbGxl
ci5jbG9zZS5hcHBseShycyk7IH0pOwogfSwgIkNhbGxpbmcgY2xvc2UoKSB3aXRoIGEgdGhpcyBv
YmplY3QgZGlmZmVyZW50IGZyb20gUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlciBzaG91bGQg
dGhyb3cgYSBUeXBlRXJyb3IiKTsKIApAQCAtNDgsNyArNDgsNyBAQCB0ZXN0KGZ1bmN0aW9uKCkg
ewogICAgICAgICB0eXBlOiAiYnl0ZXMiCiAgICAgfSk7CiAKLSAgICBhc3NlcnRfdGhyb3dzKG5l
dyBUeXBlRXJyb3IoIkNhbiBvbmx5IGNhbGwgUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlci5l
bnF1ZXVlIG9uIGluc3RhbmNlcyBvZiBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyIiksCisg
ICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IoIkNhbiBvbmx5IGNhbGwgUmVhZGFibGVCeXRl
U3RyZWFtQ29udHJvbGxlci5lbnF1ZXVlIG9uIGluc3RhbmNlcyBvZiBSZWFkYWJsZUJ5dGVTdHJl
YW1Db250cm9sbGVyIiksCiAgICAgICAgIGZ1bmN0aW9uKCkgeyBjb250cm9sbGVyLmVucXVldWUu
YXBwbHkocnMsIG5ldyBJbnQ4QXJyYXkoMSkpOyB9KTsKIH0sICJDYWxsaW5nIGVucXVldWUoKSB3
aXRoIGEgdGhpcyBvYmplY3QgZGlmZmVyZW50IGZyb20gUmVhZGFibGVCeXRlU3RyZWFtQ29udHJv
bGxlciBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3IiKTsKIApAQCAtNjUsNyArNjUsNyBAQCB0ZXN0
KGZ1bmN0aW9uKCkgewogICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShuZXcgSW50OEFycmF5KDIpKTsK
ICAgICBjb250cm9sbGVyLmNsb3NlKCk7CiAKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJy
b3IoIlJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIgaXMgcmVxdWVzdGVkIHRvIGNsb3NlIiks
CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IoIlJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRy
b2xsZXIgaXMgcmVxdWVzdGVkIHRvIGNsb3NlIiksCiAgICAgICAgIGZ1bmN0aW9uKCkgeyBjb250
cm9sbGVyLmVucXVldWUobmV3IEludDhBcnJheSgxKSk7IH0pOwogfSwgIkNhbGxpbmcgZW5xdWV1
ZSgpIHdoZW4gY2xvc2UgaGFzIGJlZW4gcmVxdWVzdGVkIGJ1dCBub3QgeWV0IHBlcmZvcm1lZCBz
aG91bGQgdGhyb3cgYSBUeXBlRXJyb3IiKTsKIApAQCAtODAsNyArODAsNyBAQCB0ZXN0KGZ1bmN0
aW9uKCkgewogICAgIH0pOwogICAgIGNvbnRyb2xsZXIuY2xvc2UoKTsKIAotICAgIGFzc2VydF90
aHJvd3MobmV3IFR5cGVFcnJvcigiUmVhZGFibGVTdHJlYW0gaXMgbm90IHJlYWRhYmxlIiksCisg
ICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IoIlJlYWRhYmxlU3RyZWFtIGlzIG5vdCByZWFk
YWJsZSIpLAogICAgICAgICBmdW5jdGlvbigpIHsKICAgICAgICAgICAgIGNvbnRyb2xsZXIuZW5x
dWV1ZShuZXcgSW50OEFycmF5KDEpKTsKICAgICAgICAgfSk7CkBAIC05OCw3ICs5OCw3IEBAIHRl
c3QoZnVuY3Rpb24oKSB7CiAKICAgICBjb25zdCBpbnZhbGlkQ2h1bmsgPSBmdW5jdGlvbigpIHt9
OwogCi0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCJQcm92aWRlZCBjaHVuayBpcyBu
b3QgYW4gb2JqZWN0IiksCisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IoIlByb3ZpZGVk
IGNodW5rIGlzIG5vdCBhbiBvYmplY3QiKSwKICAgICAgICAgZnVuY3Rpb24oKSB7IGNvbnRyb2xs
ZXIuZW5xdWV1ZShpbnZhbGlkQ2h1bmspOyB9KTsKIH0sICJDYWxsaW5nIGVucXVldWUoKSB3aXRo
IGEgY2h1bmsgdGhhdCBpcyBub3QgYW4gb2JqZWN0IHNob3VsZCB0cmhvdyBhIFR5cGVFcnJvciIp
OwogCkBAIC0xMTQsNyArMTE0LDcgQEAgdGVzdChmdW5jdGlvbigpIHsKIAogICAgIGNvbnN0IGlu
dmFsaWRDaHVuayA9IHt9OwogCi0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCJQcm92
aWRlZCBjaHVuayBpcyBub3QgYW4gb2JqZWN0IiksCisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBl
RXJyb3IoIlByb3ZpZGVkIGNodW5rIGlzIG5vdCBhbiBvYmplY3QiKSwKICAgICAgICAgZnVuY3Rp
b24oKSB7IGNvbnRyb2xsZXIuZW5xdWV1ZShpbnZhbGlkQ2h1bmspOyB9KTsKIH0sICJDYWxsaW5n
IGVucXVldWUoKSB3aXRoIGEgY2h1bmsgdGhhdCBpcyBub3QgYW4gQXJyYXlCdWZmZXJWaWV3IHNo
b3VsZCB0aHJvdyBhIFR5cGVFcnJvciIpOwogCkBAIC0xMjgsNyArMTI4LDcgQEAgdGVzdChmdW5j
dGlvbigpIHsKICAgICAgICAgdHlwZTogImJ5dGVzIgogICAgIH0pOwogCi0gICAgYXNzZXJ0X3Ro
cm93cyhuZXcgVHlwZUVycm9yKCJSZWFkYWJsZVN0cmVhbSBpcyBub3QgcmVhZGFibGUiKSwKKyAg
ICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvcigiUmVhZGFibGVTdHJlYW0gaXMgbm90IHJlYWRh
YmxlIiksCiAgICAgICAgIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgY29udHJvbGxlci5jbG9z
ZSgpOwogICAgICAgICAgICAgY29udHJvbGxlci5lcnJvcigpOwpAQCAtMTQ1LDcgKzE0NSw3IEBA
IHRlc3QoZnVuY3Rpb24oKSB7CiAgICAgICAgIHR5cGU6ICJieXRlcyIKICAgICB9KTsKIAotICAg
IGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigiUmVhZGFibGVTdHJlYW0gaXMgbm90IHJlYWRh
YmxlIiksCisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IoIlJlYWRhYmxlU3RyZWFtIGlz
IG5vdCByZWFkYWJsZSIpLAogICAgICAgICBmdW5jdGlvbigpIHsKICAgICAgICAgICAgIGNvbnRy
b2xsZXIuZXJyb3IoKTsKICAgICAgICAgICAgIGNvbnRyb2xsZXIuZXJyb3IoKTsKQEAgLTE2Miw3
ICsxNjIsNyBAQCB0ZXN0KGZ1bmN0aW9uKCkgewogICAgICAgICB0eXBlOiAiYnl0ZXMiCiAgICAg
fSk7CiAKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoIkNsb3NlIGhhcyBhbHJlYWR5
IGJlZW4gcmVxdWVzdGVkIiksCisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IoIkNsb3Nl
IGhhcyBhbHJlYWR5IGJlZW4gcmVxdWVzdGVkIiksCiAgICAgICAgIGZ1bmN0aW9uKCkgewogICAg
ICAgICAgICAgY29udHJvbGxlci5jbG9zZSgpOwogICAgICAgICAgICAgY29udHJvbGxlci5jbG9z
ZSgpOwpAQCAtMTc5LDcgKzE3OSw3IEBAIHRlc3QoZnVuY3Rpb24oKSB7CiAgICAgICAgIHR5cGU6
ICJieXRlcyIKICAgICB9KTsKIAotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigiUmVh
ZGFibGVTdHJlYW0gaXMgbm90IHJlYWRhYmxlIiksCisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBl
RXJyb3IoIlJlYWRhYmxlU3RyZWFtIGlzIG5vdCByZWFkYWJsZSIpLAogICAgICAgICBmdW5jdGlv
bigpIHsKICAgICAgICAgICAgIGNvbnRyb2xsZXIuZXJyb3IoKTsKICAgICAgICAgICAgIGNvbnRy
b2xsZXIuY2xvc2UoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVhZGFibGUt
c3RyZWFtLWJ5b2ItcmVhZGVyLmpzIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJl
YW0tYnlvYi1yZWFkZXIuanMKaW5kZXggYTk3MTlmN2U4MTRmZWQyNjAzYjBjNzg4ZWY3NTc4Njlj
ODMwYzMzZC4uZjcxMDQ4OTFmOThhNDE2YjJmNTZjM2QzZDQ0YTlkMGZiNDA5ZjZjMSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tYnlvYi1yZWFkZXIuanMK
KysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tYnlvYi1yZWFkZXIuanMK
QEAgLTE0LDE0ICsxNCwxNCBAQCB0ZXN0KGZ1bmN0aW9uKCkgewogdGVzdChmdW5jdGlvbigpIHsK
ICAgICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgpOwogICAgIGNvbnN0IHRtcCA9IDEy
OwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigiQ2FuIG9ubHkgY2FsbCBSZWFkYWJs
ZVN0cmVhbS5nZXRSZWFkZXIgb24gaW5zdGFuY2VzIG9mIFJlYWRhYmxlU3RyZWFtIiksCisgICAg
YXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IoIkNhbiBvbmx5IGNhbGwgUmVhZGFibGVTdHJlYW0u
Z2V0UmVhZGVyIG9uIGluc3RhbmNlcyBvZiBSZWFkYWJsZVN0cmVhbSIpLAogICAgICAgICBmdW5j
dGlvbigpIHsgcnMuZ2V0UmVhZGVyLmFwcGx5KHRtcCk7IH0pOwogfSwgIkNhbGxpbmcgZ2V0UmVh
ZGVyKCkgd2l0aCBhIHRoaXMgb2JqZWN0IGRpZmZlcmVudCBmcm9tIFJlYWRhYmxlU3RyZWFtIHNo
b3VsZCB0aHJvdyBhIFR5cGVFcnJvciIpOwogCiB0ZXN0KGZ1bmN0aW9uKCkgewogICAgIGNvbnN0
IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7CiAKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBl
RXJyb3IoIlJlYWRhYmxlU3RyZWFtQllPQlJlYWRlciBuZWVkcyBhIFJlYWRhYmxlQnl0ZVN0cmVh
bUNvbnRyb2xsZXIiKSwKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvcigiUmVhZGFibGVT
dHJlYW1CWU9CUmVhZGVyIG5lZWRzIGEgUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlciIpLAog
ICAgICAgICBmdW5jdGlvbigpIHsgcnMuZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOyB9KTsK
IH0sICJDYWxsaW5nIGdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KSB3aXRoIGEgUmVhZGFibGVT
dHJlYW0gd2hvc2UgY29udHJvbGxlciBpcyBhIFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xs
ZXIgc2hvdWxkIHRocm93IGEgVHlwZUVycm9yIik7CiAKQEAgLTMxLDcgKzMxLDcgQEAgcHJvbWlz
ZV90ZXN0KGZ1bmN0aW9uKHRlc3QpIHsKICAgICBsZXQgcnAgPSByZWFkZXIuY2FuY2VsLmFwcGx5
KHJzKTsKICAgICBjb25zdCBteUVycm9yPSBuZXcgVHlwZUVycm9yKCJDYW4gb25seSBjYWxsIFJl
YWRhYmxlU3RyZWFtQllPQlJlYWRlci5jYW5jZWwoKSBvbiBpbnN0YW5jZXMgb2YgUmVhZGFibGVT
dHJlYW1CWU9CUmVhZGVyIik7CiAKLSAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHRlc3QsIG15
RXJyb3IsIHJwKTsKKyAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodGVzdCwgbXlF
cnJvciwgcnApOwogfSwgIkNhbGxpbmcgUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyLmNhbmNlbCgp
IHdpdGggYSB0aGlzIG9iamVjdCBkaWZmZXJlbnQgZnJvbSBSZWFkYWJsZVN0cmVhbUJZT0JSZWFk
ZXIgc2hvdWxkIGJlIHJlamVjdGVkIik7CiAKIHByb21pc2VfdGVzdChmdW5jdGlvbih0ZXN0KSB7
CkBAIC00OSw3ICs0OSw3IEBAIHByb21pc2VfdGVzdChmdW5jdGlvbih0ZXN0KSB7CiAgICAgY29u
dHJvbGxlci5lcnJvcihteUVycm9yKTsKICAgICBsZXQgcnAgPSByZWFkZXIuY2FuY2VsKCJTYW1w
bGUgcmVhc29uIik7CiAKLSAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHRlc3QsIG15RXJyb3Is
IHJwKTsKKyAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodGVzdCwgbXlFcnJvciwg
cnApOwogfSwgIkNhbGxpbmcgUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyLmNhbmNlbCgpIG9uIGEg
UmVhZGFibGVTdHJlYW0gdGhhdCBoYXMgYmVlbiBlcnJvcmVkIHNob3VsZCByZXN1bHQgaW4gYSBw
cm9taXNlIHJlamVjdGVkIHdpdGggdGhlIHNhbWUgZXJyb3IiKTsKIAogcHJvbWlzZV90ZXN0KGZ1
bmN0aW9uKHRlc3QpIHsKQEAgLTEyNiw3ICsxMjYsNyBAQCBwcm9taXNlX3Rlc3QoZnVuY3Rpb24o
dGVzdCkgewogICAgIGNvbnN0IG15RXJyb3IgPSBuZXcgVHlwZUVycm9yKCJTYW1wbGUgZXJyb3Ii
KTsKICAgICBjb250cm9sbGVyLmVycm9yKG15RXJyb3IpOwogCi0gICAgcmV0dXJuIHByb21pc2Vf
cmVqZWN0cyh0ZXN0LCBteUVycm9yLCByZWFkZXIuY2xvc2VkKTsKKyAgICByZXR1cm4gcHJvbWlz
ZV9yZWplY3RzX2V4YWN0bHkodGVzdCwgbXlFcnJvciwgcmVhZGVyLmNsb3NlZCk7CiB9LCAiSWYg
Y29udHJvbGxlciBpcyBlcnJvcmVkIGFmdGVyIFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlciBjcmVh
dGlvbiwgUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyLmNsb3NlZCBzaG91bGQgYmUgYSBwcm9taXNl
IHJlamVjdGVkIHdpdGggdGhlIHNhbWUgZXJyb3IiKTsKIAogcHJvbWlzZV90ZXN0KGZ1bmN0aW9u
KHRlc3QpIHsKQEAgLTE0MywxMyArMTQzLDEzIEBAIHByb21pc2VfdGVzdChmdW5jdGlvbih0ZXN0
KSB7CiAgICAgY29udHJvbGxlci5lcnJvcihteUVycm9yKTsKICAgICBjb25zdCByZWFkZXIgPSBy
cy5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicgfSk7CiAKLSAgICByZXR1cm4gcHJvbWlzZV9yZWpl
Y3RzKHRlc3QsIG15RXJyb3IsIHJlYWRlci5jbG9zZWQpOworICAgIHJldHVybiBwcm9taXNlX3Jl
amVjdHNfZXhhY3RseSh0ZXN0LCBteUVycm9yLCByZWFkZXIuY2xvc2VkKTsKIH0sICJJZiBjb250
cm9sbGVyIGhhcyBhbHJlYWR5IGJlZW4gZXJyb3JlZCB3aGVuIFJlYWRhYmxlU3RyZWFtQllPQlJl
YWRlciBpcyBjcmVhdGVkLCBSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIuY2xvc2VkIHNob3VsZCBi
ZSBhIHByb21pc2UgcmVqZWN0ZWQgd2l0aCB0aGUgc2FtZSBlcnJvciIpOwogCiB0ZXN0KGZ1bmN0
aW9uKCkgewogICAgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsgdHlwZTogJ2J5dGVz
JyB9KTsKICAgICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicgfSk7
Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCJDYW4gb25seSBjYWxsIFJlYWRhYmxl
U3RyZWFtQllPQlJlYWRlci5yZWxlYXNlTG9jaygpIG9uIGluc3RhbmNlcyBvZiBSZWFkYWJsZVN0
cmVhbUJZT0JSZWFkZXIiKSwKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvcigiQ2FuIG9u
bHkgY2FsbCBSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIucmVsZWFzZUxvY2soKSBvbiBpbnN0YW5j
ZXMgb2YgUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyIiksCiAgICAgICAgIGZ1bmN0aW9uKCkgeyBy
ZWFkZXIucmVsZWFzZUxvY2suYXBwbHkocnMpOyB9KTsKIH0sICJDYWxsaW5nIFJlYWRhYmxlU3Ry
ZWFtQllPQlJlYWRlci5yZWxlYXNlTG9jaygpIHdpdGggYSB0aGlzIG9iamVjdCBkaWZmZXJlbnQg
ZnJvbSBSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIgc2hvdWxkIGJlIHJlamVjdGVkIik7CiAKQEAg
LTE2Miw3ICsxNjIsNyBAQCBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odGVzdCkgewogICAgIHJlYWRl
ci5yZWxlYXNlTG9jaygpOwogICAgIGNvbnN0IG15RXJyb3IgPSBuZXcgVHlwZUVycm9yKCk7CiAK
LSAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHRlc3QsIG15RXJyb3IsIHJlYWRlci5jbG9zZWQp
OworICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0ZXN0LCBteUVycm9yLCByZWFk
ZXIuY2xvc2VkKTsKIH0sICJDYWxsaW5nIFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlci5yZWxlYXNl
TG9jaygpIG9uIGEgc3RyZWFtIHRoYXQgaXMgcmVhZGFibGUgc2hvdWxkIHJlc3VsdCBpbiBSZWFk
YWJsZVN0cmVhbUJZT0JSZWFkZXIuY2xvc2VkIHByb21pc2UgdG8gYmUgcmVqZWN0ZWQgd2l0aCBh
IFR5cGVFcnJvciIpOwogCiBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odGVzdCkgewpAQCAtMTgwLDcg
KzE4MCw3IEBAIHByb21pc2VfdGVzdChmdW5jdGlvbih0ZXN0KSB7CiAgICAgcmVhZGVyLnJlbGVh
c2VMb2NrKCk7CiAgICAgY29uc3QgbXlFcnJvciA9IG5ldyBUeXBlRXJyb3IoKTsKIAotICAgIHJl
dHVybiBwcm9taXNlX3JlamVjdHModGVzdCwgbXlFcnJvciwgcmVhZGVyLmNsb3NlZCk7CisgICAg
cmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHRlc3QsIG15RXJyb3IsIHJlYWRlci5jbG9z
ZWQpOwogfSwgIkNhbGxpbmcgUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyLnJlbGVhc2VMb2NrKCkg
b24gYSBzdHJlYW0gdGhhdCBpcyBub3QgcmVhZGFibGUgc2hvdWxkIHJlc3VsdCBpbiBSZWFkYWJs
ZVN0cmVhbUJZT0JSZWFkZXIuY2xvc2VkIHByb21pc2UgdG8gYmUgcmVqZWN0ZWQgd2l0aCBhIFR5
cGVFcnJvciIpOwogCiBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odGVzdCkgewpAQCAtMTg5LDcgKzE4
OSw3IEBAIHByb21pc2VfdGVzdChmdW5jdGlvbih0ZXN0KSB7CiAgICAgbGV0IHJwID0gcmVhZGVy
LnJlYWQuYXBwbHkocnMpOwogICAgIGNvbnN0IG15RXJyb3I9IG5ldyBUeXBlRXJyb3IoIkNhbiBv
bmx5IGNhbGwgUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyLnJlYWQoKSBvbiBpbnN0YW5jZXMgb2Yg
UmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyIik7CiAKLSAgICByZXR1cm4gcHJvbWlzZV9yZWplY3Rz
KHRlc3QsIG15RXJyb3IsIHJwKTsKKyAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHko
dGVzdCwgbXlFcnJvciwgcnApOwogfSwgIkNhbGxpbmcgUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVy
LnJlYWQoKSB3aXRoIGEgdGhpcyBvYmplY3QgZGlmZmVyZW50IGZyb20gUmVhZGFibGVTdHJlYW1C
WU9CUmVhZGVyIHNob3VsZCBiZSByZWplY3RlZCIpOwogCiBkb25lKCk7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1ieW9iLXJlcXVlc3QuanMgYi9MYXlv
dXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1ieW9iLXJlcXVlc3QuanMKaW5kZXggZDVh
NmY4ZTc3OGY3YzJkNDlkMzJiMWI0NDJhOGY4OGM3OTE5M2ZiMy4uZmRkZTJjZmVjOGQ0NjcyMzJl
YzEzODRkNWM5N2VjZWI3ZmEyZWNiMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9y
ZWFkYWJsZS1zdHJlYW0tYnlvYi1yZXF1ZXN0LmpzCisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMv
cmVhZGFibGUtc3RyZWFtLWJ5b2ItcmVxdWVzdC5qcwpAQCAtNTYsNyArNTYsNyBAQCB0ZXN0KGZ1
bmN0aW9uKCkgewogICAgIHJzLmdldFJlYWRlcigpLnJlYWQoKTsKICAgICBjb25zdCBieW9iUmVx
ID0gY29udHJvbGxlci5ieW9iUmVxdWVzdDsKIAotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVF
cnJvcigiQ2FuIG9ubHkgY2FsbCBSZWFkYWJsZVN0cmVhbUJZT0JSZXF1ZXN0LnJlc3BvbmQgb24g
aW5zdGFuY2VzIG9mIFJlYWRhYmxlU3RyZWFtQllPQlJlcXVlc3QiKSwKKyAgICBhc3NlcnRfdGhy
b3dzX2pzKFR5cGVFcnJvcigiQ2FuIG9ubHkgY2FsbCBSZWFkYWJsZVN0cmVhbUJZT0JSZXF1ZXN0
LnJlc3BvbmQgb24gaW5zdGFuY2VzIG9mIFJlYWRhYmxlU3RyZWFtQllPQlJlcXVlc3QiKSwKICAg
ICAgICAgZnVuY3Rpb24oKSB7IGJ5b2JSZXEucmVzcG9uZC5hcHBseShycywgMSk7IH0pOwogCiB9
LCAiQ2FsbGluZyByZXNwb25kKCkgd2l0aCBhIHRoaXMgb2JqZWN0IGRpZmZlcmVudCBmcm9tIFJl
YWRhYmxlU3RyZWFtQllPQlJlcXVlc3Qgc2hvdWxkIHRocm93IGEgVHlwZUVycm9yIik7CkBAIC03
NSw3ICs3NSw3IEBAIHRlc3QoZnVuY3Rpb24oKSB7CiAgICAgcnMuZ2V0UmVhZGVyKCkucmVhZCgp
OwogICAgIGNvbnN0IGJ5b2JSZXEgPSBjb250cm9sbGVyLmJ5b2JSZXF1ZXN0OwogCi0gICAgYXNz
ZXJ0X3Rocm93cyhuZXcgUmFuZ2VFcnJvcigiYnl0ZXNXcml0dGVuIGhhcyBhbiBpbmNvcnJlY3Qg
dmFsdWUiKSwKKyAgICBhc3NlcnRfdGhyb3dzX2V4YWN0bHkobmV3IFJhbmdlRXJyb3IoImJ5dGVz
V3JpdHRlbiBoYXMgYW4gaW5jb3JyZWN0IHZhbHVlIiksCiAgICAgICAgIGZ1bmN0aW9uKCkgeyBi
eW9iUmVxLnJlc3BvbmQoLTEpOyB9KTsKIH0sICJDYWxsaW5nIHJlc3BvbmQoKSB3aXRoIGEgbmVn
YXRpdmUgYnl0ZXNXcml0dGVuIHZhbHVlIHNob3VsZCB0aHJvdyBhIFJhbmdlRXJyb3IiKTsKIApA
QCAtOTMsNyArOTMsNyBAQCB0ZXN0KGZ1bmN0aW9uKCkgewogICAgIHJzLmdldFJlYWRlcigpLnJl
YWQoKTsKICAgICBjb25zdCBieW9iUmVxID0gY29udHJvbGxlci5ieW9iUmVxdWVzdDsKIAotICAg
IGFzc2VydF90aHJvd3MobmV3IFJhbmdlRXJyb3IoImJ5dGVzV3JpdHRlbiBoYXMgYW4gaW5jb3Jy
ZWN0IHZhbHVlIiksCisgICAgYXNzZXJ0X3Rocm93c19leGFjdGx5KG5ldyBSYW5nZUVycm9yKCJi
eXRlc1dyaXR0ZW4gaGFzIGFuIGluY29ycmVjdCB2YWx1ZSIpLAogICAgICAgICBmdW5jdGlvbigp
IHsgYnlvYlJlcS5yZXNwb25kKCJhYmMiKTsgfSk7CiB9LCAiQ2FsbGluZyByZXNwb25kKCkgd2l0
aCBhIGJ5dGVzV3JpdHRlbiB2YWx1ZSB3aGljaCBpcyBub3QgYSBudW1iZXIgc2hvdWxkIHRocm93
IGEgUmFuZ2VFcnJvciIpOwogCkBAIC0xMTEsNyArMTExLDcgQEAgdGVzdChmdW5jdGlvbigpIHsK
ICAgICBycy5nZXRSZWFkZXIoKS5yZWFkKCk7CiAgICAgY29uc3QgYnlvYlJlcSA9IGNvbnRyb2xs
ZXIuYnlvYlJlcXVlc3Q7CiAKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBSYW5nZUVycm9yKCJieXRl
c1dyaXR0ZW4gaGFzIGFuIGluY29ycmVjdCB2YWx1ZSIpLAorICAgIGFzc2VydF90aHJvd3NfZXhh
Y3RseShuZXcgUmFuZ2VFcnJvcigiYnl0ZXNXcml0dGVuIGhhcyBhbiBpbmNvcnJlY3QgdmFsdWUi
KSwKICAgICAgICAgZnVuY3Rpb24oKSB7IGJ5b2JSZXEucmVzcG9uZChOdW1iZXIuUE9TSVRJVkVf
SU5GSU5JVFkpOyB9KTsKIH0sICJDYWxsaW5nIHJlc3BvbmQoKSB3aXRoIGEgcG9zaXRpdmUgaW5m
aW5pdHkgYnl0ZXNXcml0dGVuIHZhbHVlIHNob3VsZCB0aHJvdyBhIFJhbmdlRXJyb3IiKTsKIApA
QCAtMTMwLDcgKzEzMCw3IEBAIHRlc3QoZnVuY3Rpb24oKSB7CiAgICAgY29uc3QgYnlvYlJlcSA9
IGNvbnRyb2xsZXIuYnlvYlJlcXVlc3Q7CiAgICAgY29udHJvbGxlci5jbG9zZSgpOwogCi0gICAg
YXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCJieXRlc1dyaXR0ZW4gaXMgZGlmZmVyZW50IGZy
b20gMCBldmVuIHRob3VnaCBzdHJlYW0gaXMgY2xvc2VkIiksCisgICAgYXNzZXJ0X3Rocm93c19q
cyhUeXBlRXJyb3IoImJ5dGVzV3JpdHRlbiBpcyBkaWZmZXJlbnQgZnJvbSAwIGV2ZW4gdGhvdWdo
IHN0cmVhbSBpcyBjbG9zZWQiKSwKICAgICAgICAgZnVuY3Rpb24oKSB7IGJ5b2JSZXEucmVzcG9u
ZCgxKTsgfSk7CiB9LCAiQ2FsbGluZyByZXNwb25kKCkgd2l0aCBhIGJ5dGVzV3JpdHRlbiB2YWx1
ZSBkaWZmZXJlbnQgZnJvbSAwIHdoZW4gc3RyZWFtIGlzIGNsb3NlZCBzaG91bGQgdGhyb3cgYSBU
eXBlRXJyb3IiKTsKIApAQCAtMTY4LDcgKzE2OCw3IEBAIHRlc3QoZnVuY3Rpb24oKSB7CiAKICAg
ICBycy5nZXRSZWFkZXIoKS5yZWFkKCk7CiAgICAgY29uc3QgYnlvYlJlcSA9IGNvbnRyb2xsZXIu
YnlvYlJlcXVlc3Q7Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgUmFuZ2VFcnJvcigiYnl0ZXNXcml0
dGVuIHZhbHVlIGlzIHRvbyBncmVhdCIpLAorICAgIGFzc2VydF90aHJvd3NfZXhhY3RseShuZXcg
UmFuZ2VFcnJvcigiYnl0ZXNXcml0dGVuIHZhbHVlIGlzIHRvbyBncmVhdCIpLAogICAgICAgICBm
dW5jdGlvbigpIHsgYnlvYlJlcS5yZXNwb25kKDE3KTsgfSk7CiAKIH0sICJDYWxsaW5nIHJlc3Bv
bmQoKSB3aXRoIGEgYnl0ZXNXcml0dGVuIHZhbHVlIGdyZWF0ZXIgdGhhbiBhdXRvQWxsb2NhdGVD
aHVua1NpemUgc2hvdWxkIGZhaWwiKTsKQEAgLTIxMiw3ICsyMTIsNyBAQCB0ZXN0KGZ1bmN0aW9u
KCkgewogICAgIHJzLmdldFJlYWRlcigpLnJlYWQoKTsKICAgICBjb25zdCBieW9iUmVxID0gY29u
dHJvbGxlci5ieW9iUmVxdWVzdDsKIAotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigi
Q2FuIG9ubHkgY2FsbCBSZWFkYWJsZVN0cmVhbUJZT0JSZXF1ZXN0LnJlc3BvbmRXaXRoTmV3Vmll
dyBvbiBpbnN0YW5jZXMgb2YgUmVhZGFibGVTdHJlYW1CWU9CUmVxdWVzdCIpLAorICAgIGFzc2Vy
dF90aHJvd3NfanMoVHlwZUVycm9yKCJDYW4gb25seSBjYWxsIFJlYWRhYmxlU3RyZWFtQllPQlJl
cXVlc3QucmVzcG9uZFdpdGhOZXdWaWV3IG9uIGluc3RhbmNlcyBvZiBSZWFkYWJsZVN0cmVhbUJZ
T0JSZXF1ZXN0IiksCiAgICAgICAgIGZ1bmN0aW9uKCkgeyBieW9iUmVxLnJlc3BvbmRXaXRoTmV3
Vmlldy5hcHBseShycywgbmV3IFVpbnQ4QXJyYXkoMSkpOyB9KTsKIAogfSwgIkNhbGxpbmcgcmVz
cG9uZFdpdGhOZXdWaWV3KCkgd2l0aCBhIHRoaXMgb2JqZWN0IGRpZmZlcmVudCBmcm9tIFJlYWRh
YmxlU3RyZWFtQllPQlJlcXVlc3Qgc2hvdWxkIHRocm93IGEgVHlwZUVycm9yIik7CkBAIC0yMzEs
NyArMjMxLDcgQEAgdGVzdChmdW5jdGlvbigpIHsKICAgICBycy5nZXRSZWFkZXIoKS5yZWFkKCk7
CiAgICAgY29uc3QgYnlvYlJlcSA9IGNvbnRyb2xsZXIuYnlvYlJlcXVlc3Q7CiAKLSAgICBhc3Nl
cnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoIlByb3ZpZGVkIHZpZXcgaXMgbm90IGFuIG9iamVjdCIp
LAorICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yKCJQcm92aWRlZCB2aWV3IGlzIG5vdCBh
biBvYmplY3QiKSwKICAgICAgICAgZnVuY3Rpb24oKSB7IGJ5b2JSZXEucmVzcG9uZFdpdGhOZXdW
aWV3KGZ1bmN0aW9uKCkge30pOyB9KTsKIAogfSwgIkNhbGxpbmcgcmVzcG9uZFdpdGhOZXdWaWV3
KCkgd2l0aCBhbiBhcmd1bWVudCB0aGF0IGlzIG5vdCBhbiBvYmplY3Qgc2hvdWxkIHRocm93IGEg
VHlwZUVycm9yIik7CkBAIC0yNTAsNyArMjUwLDcgQEAgdGVzdChmdW5jdGlvbigpIHsKICAgICBy
cy5nZXRSZWFkZXIoKS5yZWFkKCk7CiAgICAgY29uc3QgYnlvYlJlcSA9IGNvbnRyb2xsZXIuYnlv
YlJlcXVlc3Q7CiAKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoIlByb3ZpZGVkIHZp
ZXcgaXMgbm90IGFuIEFycmF5QnVmZmVyVmlldyIpLAorICAgIGFzc2VydF90aHJvd3NfanMoVHlw
ZUVycm9yKCJQcm92aWRlZCB2aWV3IGlzIG5vdCBhbiBBcnJheUJ1ZmZlclZpZXciKSwKICAgICAg
ICAgZnVuY3Rpb24oKSB7IGJ5b2JSZXEucmVzcG9uZFdpdGhOZXdWaWV3KHt9KTsgfSk7CiAKIH0s
ICJDYWxsaW5nIHJlc3BvbmRXaXRoTmV3VmlldygpIHdpdGggYW4gYXJndW1lbnQgdGhhdCBpcyBu
b3QgYW4gQXJyYXlCdWZmZXJWaWV3IHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvciIpOwpAQCAtMjkw
LDcgKzI5MCw3IEBAIHByb21pc2VfdGVzdChmdW5jdGlvbih0ZXN0KSB7CiAKICAgICBjb25zdCBl
cnJvciA9IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIHZhbHVlIGZvciB2aWV3LmJ5dGVMZW5ndGgi
KTsKIAotICAgIHJldHVybiBwcm9taXNlX3JlamVjdHModGVzdCwgZXJyb3IsIHJzLmdldFJlYWRl
cigpLnJlYWQoKSk7CisgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHRlc3QsIGVy
cm9yLCBycy5nZXRSZWFkZXIoKS5yZWFkKCkpOwogfSwgIldoZW4gdXNpbmcgYXV0b0FsbG9jYXRl
Q2h1bmtTaXplLCBjYWxsaW5nIHJlc3BvbmRXaXRoTmV3VmlldygpIHNob3VsZCB0aHJvdyBhIFJh
bmdlRXJyb3IgaWYgdmlldy5ieXRlT2Zmc2V0IGlzIGRpZmZlcmVudCBmcm9tIDAiKTsKIAogcHJv
bWlzZV90ZXN0KGZ1bmN0aW9uKHRlc3QpIHsKQEAgLTMwOCw3ICszMDgsNyBAQCBwcm9taXNlX3Rl
c3QoZnVuY3Rpb24odGVzdCkgewogCiAgICAgY29uc3QgZXJyb3IgPSBuZXcgUmFuZ2VFcnJvcigi
SW52YWxpZCB2YWx1ZSBmb3Igdmlldy5ieXRlT2Zmc2V0Iik7CiAKLSAgICByZXR1cm4gcHJvbWlz
ZV9yZWplY3RzKHRlc3QsIGVycm9yLCBycy5nZXRSZWFkZXIoKS5yZWFkKCkpOworICAgIHJldHVy
biBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0ZXN0LCBlcnJvciwgcnMuZ2V0UmVhZGVyKCkucmVh
ZCgpKTsKIH0sICJXaGVuIHVzaW5nIGF1dG9BbGxvY2F0ZUNodW5rU2l6ZSwgY2FsbGluZyByZXNw
b25kV2l0aE5ld1ZpZXcoKSBzaG91bGQgdGhyb3cgYSBSYW5nZUVycm9yIGlmIHZpZXcuYnl0ZUxl
bmd0aCBpcyBkaWZmZXJlbnQgZnJvbSBhdXRvQWxsb2NhdGVDaHVua1NpemUiKTsKIAogZG9uZSgp
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tZ2V0UmVh
ZGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1nZXRSZWFkZXIu
aHRtbAppbmRleCA2ZmM1ZTRmYjkyMDhhMzlhZWZiYzk0MTU4MGNlMTgwZTdmMDM2MTI0Li42Yzk2
MjJmN2E2OTdmYTg0NGI1MTY5OTMyYTg2ZTI1ZTZjNzhlZDdhIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1nZXRSZWFkZXIuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1nZXRSZWFkZXIuaHRtbApAQCAtMTIsMTIgKzEy
LDEyIEBAIHRlc3QoZnVuY3Rpb24oKSB7CiAKIHRlc3QoZnVuY3Rpb24oKSB7CiAgICAgY29uc3Qg
cnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oKTsKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJy
b3IoKSwgZnVuY3Rpb24oKSB7IHJzLmdldFJlYWRlcih7bW9kZTogJ2J5b2InfSkgfSk7CisgICAg
YXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeyBycy5nZXRSZWFkZXIoe21v
ZGU6ICdieW9iJ30pIH0pOwogfSwgImdldFJlYWRlcih7bW9kZTogJ2J5b2InfSkgc2hvdWxkIHJl
dHVybiBhIFR5cGVFcnJvciBhcyBCWU9CIHJlYWRlciBpcyBub3QgeWV0IGltcGxlbWVudGVkIik7
CiAKIHRlc3QoZnVuY3Rpb24oKSB7CiAgICAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0o
KTsKICAgICAvLyBBbnkgdmFsdWUgZGlmZmVyZW50IGZyb20gdW5kZWZpbmVkIGFuZCAnYnlvYicg
c2hvdWxkIHRocm93IGEgVHlwZUVycm9yLgotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJv
cigpLCBmdW5jdGlvbigpIHsgcnMuZ2V0UmVhZGVyKHttb2RlIDogJ2FNb2RlJ30pIH0pOworICAg
IGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsgcnMuZ2V0UmVhZGVyKHtt
b2RlIDogJ2FNb2RlJ30pIH0pOwogfSwgImdldFJlYWRlcih7bW9kZTogJ2FNb2RlJ30pIHNob3Vs
ZCByZXR1cm4gYSBUeXBlRXJyb3IgYXMgJ2FNb2RlJyBpcyBkaWZmZXJlbnQgZnJvbSB1bmRlZmlu
ZWQgYW5kICdieW9iJyIpOwogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJl
YW1zL3JlYWRhYmxlLXN0cmVhbS1waXBlVGhyb3VnaC5odG1sIGIvTGF5b3V0VGVzdHMvc3RyZWFt
cy9yZWFkYWJsZS1zdHJlYW0tcGlwZVRocm91Z2guaHRtbAppbmRleCA0ZmRkYjU3ODJlMWQ2ODk5
YWFlMzc2MzI5NTljOWYzODVjMGUzNTMyLi4yMWMwZDM4YTYzMjkwNjY1ZTRlODk4NGE5OWEyYWU2
NWJmYWQ4ZWE0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVh
bS1waXBlVGhyb3VnaC5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3Ry
ZWFtLXBpcGVUaHJvdWdoLmh0bWwKQEAgLTExLDEwICsxMSwxMCBAQCB0ZXN0KGZ1bmN0aW9uKCkg
ewogICAgICAgICB3cml0YWJsZTogeyB9CiAgICAgfTsKICAgICB2YXIgb3B0aW9ucyA9IHsgfTsK
LSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7IFJlYWRhYmxl
U3RyZWFtLnByb3RvdHlwZS5waXBlVGhyb3VnaC5jYWxsKHVuZGVmaW5lZCwgaW5wdXQsIG9wdGlv
bnMpOyB9KTsKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7
IFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5waXBlVGhyb3VnaC5jYWxsKG51bGwsIGlucHV0LCBv
cHRpb25zKTsgfSk7Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9u
KCkgeyBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRocm91Z2guY2FsbCgxLCBpbnB1dCwg
b3B0aW9ucyk7IH0pOwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlv
bigpIHsgUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLnBpcGVUaHJvdWdoLmNhbGwoeyAicGlwZVRv
IjogInRlc3QiIH0sIGlucHV0LCBvcHRpb25zKTsgfSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhU
eXBlRXJyb3IsIGZ1bmN0aW9uKCkgeyBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRocm91
Z2guY2FsbCh1bmRlZmluZWQsIGlucHV0LCBvcHRpb25zKTsgfSk7CisgICAgYXNzZXJ0X3Rocm93
c19qcyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeyBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlw
ZVRocm91Z2guY2FsbChudWxsLCBpbnB1dCwgb3B0aW9ucyk7IH0pOworICAgIGFzc2VydF90aHJv
d3NfanMoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsgUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLnBp
cGVUaHJvdWdoLmNhbGwoMSwgaW5wdXQsIG9wdGlvbnMpOyB9KTsKKyAgICBhc3NlcnRfdGhyb3dz
X2pzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7IFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5waXBl
VGhyb3VnaC5jYWxsKHsgInBpcGVUbyI6ICJ0ZXN0IiB9LCBpbnB1dCwgb3B0aW9ucyk7IH0pOwog
fSwgJ1JlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5waXBlVGhyb3VnaCBzaG91bGQgdGhyb3cgd2hl
biAidGhpcyIgaGFzIG5vIHBpcGVUbyBtZXRob2QnKTsKIAogdGVzdChmdW5jdGlvbigpIHsKQEAg
LTI1LDggKzI1LDggQEAgdGVzdChmdW5jdGlvbigpIHsKICAgICAgICAgfQogICAgIH07CiAKLSAg
ICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7IFJlYWRhYmxlU3Ry
ZWFtLnByb3RvdHlwZS5waXBlVGhyb3VnaC5jYWxsKHRoaXNWYWx1ZSwgbnVsbCwgb3B0aW9ucyk7
IH0pOwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsgUmVh
ZGFibGVTdHJlYW0ucHJvdG90eXBlLnBpcGVUaHJvdWdoLmNhbGwodGhpc1ZhbHVlLCB1bmRlZmlu
ZWQsIG9wdGlvbnMpOyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgZnVuY3Rp
b24oKSB7IFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5waXBlVGhyb3VnaC5jYWxsKHRoaXNWYWx1
ZSwgbnVsbCwgb3B0aW9ucyk7IH0pOworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCBm
dW5jdGlvbigpIHsgUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLnBpcGVUaHJvdWdoLmNhbGwodGhp
c1ZhbHVlLCB1bmRlZmluZWQsIG9wdGlvbnMpOyB9KTsKIH0sICdSZWFkYWJsZVN0cmVhbS5wcm90
b3R5cGUucGlwZVRocm91Z2ggc2hvdWxkIHRocm93IHdoZW4gcGFzc2VkIGFyZ3VtZW50IGlzIG5v
dCBhbiBvYmplY3QnKTsKIAogdGVzdChmdW5jdGlvbigpIHsKQEAgLTM4LDcgKzM4LDcgQEAgdGVz
dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgIHRocm93IGVycm9yOwogICAgICAgICB9CiAgICAg
fTsKLSAgICBhc3NlcnRfdGhyb3dzKGVycm9yLCBmdW5jdGlvbigpIHsgUmVhZGFibGVTdHJlYW0u
cHJvdG90eXBlLnBpcGVUaHJvdWdoLmNhbGwodGhpc1dyb25nVmFsdWUsIHsgcmVhZGFibGU6IHsg
fSwgd3JpdGFibGU6IHsgfSB9LCBvcHRpb25zKTsgfSk7CisgICAgYXNzZXJ0X3Rocm93c19leGFj
dGx5KGVycm9yLCBmdW5jdGlvbigpIHsgUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLnBpcGVUaHJv
dWdoLmNhbGwodGhpc1dyb25nVmFsdWUsIHsgcmVhZGFibGU6IHsgfSwgd3JpdGFibGU6IHsgfSB9
LCBvcHRpb25zKTsgfSk7CiAKICAgICB2YXIgdGhpc1ZhbHVlID0gewogICAgICAgICBwaXBlVG86
IGZ1bmN0aW9uKCkgewpAQCAtNTEsNyArNTEsNyBAQCB0ZXN0KGZ1bmN0aW9uKCkgewogICAgICAg
ICAgICAgdGhyb3cgZXJyb3I7CiAgICAgICAgIH0KICAgICB9OwotICAgIGFzc2VydF90aHJvd3Mo
ZXJyb3IsIGZ1bmN0aW9uKCkgeyBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRocm91Z2gu
Y2FsbCh0aGlzVmFsdWUsIHdyb25nSW5wdXQsIG9wdGlvbnMpOyB9KTsKKyAgICBhc3NlcnRfdGhy
b3dzX2V4YWN0bHkoZXJyb3IsIGZ1bmN0aW9uKCkgeyBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUu
cGlwZVRocm91Z2guY2FsbCh0aGlzVmFsdWUsIHdyb25nSW5wdXQsIG9wdGlvbnMpOyB9KTsKIAog
ICAgIHZhciB3cm9uZ0lucHV0MiA9IHsKICAgICAgICAgZ2V0IHJlYWRhYmxlKCkgewpAQCAtNjIs
NiArNjIsNiBAQCB0ZXN0KGZ1bmN0aW9uKCkgewogICAgIHZhciB0aGlzVmFsdWUyID0gewogICAg
ICAgICBwaXBlVG86IGZ1bmN0aW9uKCkgeyB9CiAgICAgfTsKLSAgICBhc3NlcnRfdGhyb3dzKGVy
cm9yLCBmdW5jdGlvbigpIHsgUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLnBpcGVUaHJvdWdoLmNh
bGwodGhpc1ZhbHVlMiwgd3JvbmdJbnB1dDIsIG9wdGlvbnMpOyB9KTsKKyAgICBhc3NlcnRfdGhy
b3dzX2V4YWN0bHkoZXJyb3IsIGZ1bmN0aW9uKCkgeyBSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUu
cGlwZVRocm91Z2guY2FsbCh0aGlzVmFsdWUyLCB3cm9uZ0lucHV0Miwgb3B0aW9ucyk7IH0pOwog
fSwgJ1JlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5waXBlVGhyb3VnaCBzaG91bGQgdGhyb3cgd2hl
biBjYWxsZWQgZ2V0dGVycyBhcmUgdGhyb3dpbmcnKTsKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vYmFkLXN0cmF0ZWdp
ZXMuaHRtbCBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2Jh
ZC1zdHJhdGVnaWVzLmh0bWwKaW5kZXggOTA4YjhhY2NlMzRjNzFjM2MwZjkzNTJhZDJiYTg2Mjlk
MjVjZTkzOC4uZTFlOTUzZTE0MWFlOWVmNGMzOWZlNjZlYjQwOThmMzQ4OWEzOWFlNiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vYmFkLXN0
cmF0ZWdpZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1l
bnRhdGlvbi9iYWQtc3RyYXRlZ2llcy5odG1sCkBAIC03LDcgKzcsNyBAQAogdGVzdChmdW5jdGlv
bigpIHsKICAgICB2YXIgdGhlRXJyb3IgPSBuZXcgRXJyb3IoJ2EgdW5pcXVlIHN0cmluZycpOwog
Ci0gICAgYXNzZXJ0X3Rocm93cyh0aGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgYXNzZXJ0X3Ro
cm93c19leGFjdGx5KHRoZUVycm9yLCBmdW5jdGlvbigpIHsKICAgICAgICAgbmV3IFdyaXRhYmxl
U3RyZWFtKHt9LCB7CiAgICAgICAgICAgICBnZXQgc2l6ZSgpIHsKICAgICAgICAgICAgICAgICB0
aHJvdyB0aGVFcnJvcjsKQEAgLTY0LDcgKzY0LDcgQEAgdGVzdDIuc3RlcChmdW5jdGlvbigpIHsK
ICAgICAgICAgfSk7CiAKICAgICAgICAgdmFyIHdyaXRlRnVuY3Rpb24gPSBmdW5jdGlvbihpLCBy
KSB7Ci0gICAgICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBSYW5nZUVycm9yKCksIGZ1bmN0aW9u
KCkgeyB0aHJvdyByOyB9LCAnd3JpdGUgc2hvdWxkIHJlamVjdCB3aXRoIGEgUmFuZ2VFcnJvciBm
b3IgJyArIGVsZW1lbnRzW2ldKTsKKyAgICAgICAgICAgIGFzc2VydF90aHJvd3NfanMoUmFuZ2VF
cnJvciwgZnVuY3Rpb24oKSB7IHRocm93IHI7IH0sICd3cml0ZSBzaG91bGQgcmVqZWN0IHdpdGgg
YSBSYW5nZUVycm9yIGZvciAnICsgZWxlbWVudHNbaV0pOwogICAgICAgICAgICAgdGhlRXJyb3Jb
aV0gPSByOwogICAgICAgICB9OwogICAgICAgICB3cy53cml0ZSgnYScpLnRoZW4oCkBAIC04Niw3
ICs4Niw3IEBAIHRlc3QyLnN0ZXAoZnVuY3Rpb24oKSB7CiB0ZXN0KGZ1bmN0aW9uKCkgewogICAg
IHZhciB0aGVFcnJvciA9IG5ldyBFcnJvcignYSB1bmlxdWUgc3RyaW5nJyk7CiAKLSAgICBhc3Nl
cnRfdGhyb3dzKHRoZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICBhc3NlcnRfdGhyb3dzX2V4YWN0
bHkodGhlRXJyb3IsIGZ1bmN0aW9uKCkgewogICAgICAgICBuZXcgV3JpdGFibGVTdHJlYW0oe30s
IHsKICAgICAgICAgICAgIHNpemU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgIHJldHVy
biAxOwpAQCAtMTAwLDcgKzEwMCw3IEBAIHRlc3QoZnVuY3Rpb24oKSB7CiAKIHRlc3QoZnVuY3Rp
b24oKSB7CiAgICAgZm9yICh2YXIgaGlnaFdhdGVyTWFyayBvZiBbLTEsIC1JbmZpbml0eV0pIHsK
LSAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgUmFuZ2VFcnJvcigpLCBmdW5jdGlvbigpIHsKKyAg
ICAgICAgYXNzZXJ0X3Rocm93c19qcyhSYW5nZUVycm9yLCBmdW5jdGlvbigpIHsKICAgICAgICAg
ICAgIG5ldyBXcml0YWJsZVN0cmVhbSh7fSwgewogICAgICAgICAgICAgICAgIHNpemU6IGZ1bmN0
aW9uKCkgewogICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKQEAgLTExMSw3ICsxMTEsNyBA
QCB0ZXN0KGZ1bmN0aW9uKCkgewogICAgIH0KIAogICAgIGZvciAodmFyIGhpZ2hXYXRlck1hcmsg
b2YgW05hTiwgJ2ZvbycsIHt9XSkgewotICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBSYW5nZUVy
cm9yKCksIGZ1bmN0aW9uKCkgeworICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFJhbmdlRXJyb3Is
IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgbmV3IFdyaXRhYmxlU3RyZWFtKHt9LCB7CiAgICAg
ICAgICAgICAgICAgc2l6ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgIHJldHVy
biAxOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50
YXRpb24vYmFkLXVuZGVybHlpbmctc2lua3MuaHRtbCBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVm
ZXJlbmNlLWltcGxlbWVudGF0aW9uL2JhZC11bmRlcmx5aW5nLXNpbmtzLmh0bWwKaW5kZXggOWJl
NmZmY2Q1MDhkM2NkZWYzNmI3Y2IwMTgyNjQ1OTg4ZmQ1ZjJhYy4uMzUyN2EzODZjNDVkODFkNDUy
YjAwYzM5NWVkZTY5YjFjMzk0ZjNiOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9y
ZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vYmFkLXVuZGVybHlpbmctc2lua3MuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9iYWQtdW5kZXJseWlu
Zy1zaW5rcy5odG1sCkBAIC04LDcgKzgsNyBAQAogdGVzdChmdW5jdGlvbigpIHsKICAgICB2YXIg
dGhlRXJyb3IgPSBuZXcgRXJyb3IoJ2EgdW5pcXVlIHN0cmluZycpOwogCi0gICAgYXNzZXJ0X3Ro
cm93cyh0aGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgYXNzZXJ0X3Rocm93c19leGFjdGx5KHRo
ZUVycm9yLCBmdW5jdGlvbigpIHsKICAgICAgICAgbmV3IFdyaXRhYmxlU3RyZWFtKHsKICAgICAg
ICAgICAgIGdldCBzdGFydCgpIHsKICAgICAgICAgICAgICAgICB0aHJvdyB0aGVFcnJvcjsKQEAg
LTIwLDcgKzIwLDcgQEAgdGVzdChmdW5jdGlvbigpIHsKIHRlc3QoZnVuY3Rpb24oKSB7CiAgICAg
dmFyIHRoZUVycm9yID0gbmV3IEVycm9yKCdhIHVuaXF1ZSBzdHJpbmcnKTsKIAotICAgIGFzc2Vy
dF90aHJvd3ModGhlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgIGFzc2VydF90aHJvd3NfZXhhY3Rs
eSh0aGVFcnJvciwgZnVuY3Rpb24oKSB7CiAgICAgICAgIG5ldyBXcml0YWJsZVN0cmVhbSh7CiAg
ICAgICAgICAgICBzdGFydDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgdGhyb3cgdGhl
RXJyb3I7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1l
bnRhdGlvbi9icmFuZC1jaGVja3MuaHRtbCBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNl
LWltcGxlbWVudGF0aW9uL2JyYW5kLWNoZWNrcy5odG1sCmluZGV4IDEyNDM5OTRkYWUxMWFiMzVl
ZDliMGQwYjgxZDY3Y2U1YTM0YzBmZmQuLjJmMmUwZDQ4ZTg3MTUxMjJkNTYyNzFlMGZmYzY3YTU0
ODVlZTgyZGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxl
bWVudGF0aW9uL2JyYW5kLWNoZWNrcy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVm
ZXJlbmNlLWltcGxlbWVudGF0aW9uL2JyYW5kLWNoZWNrcy5odG1sCkBAIC0yNiw3ICsyNiw3IEBA
IGZ1bmN0aW9uIGdldHRlclJlamVjdHModGVzdCwgb2JqLCBnZXR0ZXJOYW1lLCB0YXJnZXQsIGVu
ZFRlc3QpIHsKICAgICBnZXR0ZXIuY2FsbCh0YXJnZXQpLnRoZW4oCiAgICAgICAgIHRlc3Quc3Rl
cF9mdW5jKGZ1bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVkKGdldHRlck5hbWUgKyAnIHNob3Vs
ZCBub3QgZnVsZmlsbCcpOyB9KSwKICAgICAgICAgdGVzdC5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkg
ewotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkg
eyB0aHJvdyBlOyB9LCBnZXR0ZXJOYW1lICsgJyBzaG91bGQgcmVqZWN0IHdpdGggYSBUeXBlRXJy
b3InKTsKKyAgICAgICAgICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCBmdW5jdGlvbigp
IHsgdGhyb3cgZTsgfSwgZ2V0dGVyTmFtZSArICcgc2hvdWxkIHJlamVjdCB3aXRoIGEgVHlwZUVy
cm9yJyk7CiAgICAgICAgICAgICBpZiAoZW5kVGVzdCA9PT0gdHJ1ZSkgewogICAgICAgICAgICAg
ICAgIHRlc3QuZG9uZSgpOwogICAgICAgICAgICAgfQpAQCAtMzksNyArMzksNyBAQCBmdW5jdGlv
biBtZXRob2RSZWplY3RzKHRlc3QsIG9iaiwgbWV0aG9kTmFtZSwgdGFyZ2V0LCBlbmRUZXN0KSB7
CiAgICAgbWV0aG9kLmNhbGwodGFyZ2V0KS50aGVuKAogICAgICAgICB0ZXN0LnN0ZXBfZnVuYyhm
dW5jdGlvbigpIHsgYXNzZXJ0X3VucmVhY2hlZChtZXRob2ROYW1lICsgJyBzaG91bGQgbm90IGZ1
bGZpbGwnKTsgfSksCiAgICAgICAgIHRlc3Quc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsKLSAgICAg
ICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsgdGhyb3cg
ZTsgfSwgbWV0aG9kTmFtZSArICcgc2hvdWxkIHJlamVjdCB3aXRoIGEgVHlwZUVycm9yJyk7Cisg
ICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7IHRocm93
IGU7IH0sIG1ldGhvZE5hbWUgKyAnIHNob3VsZCByZWplY3Qgd2l0aCBhIFR5cGVFcnJvcicpOwog
ICAgICAgICAgICAgaWYgKGVuZFRlc3QgPT09IHRydWUpIHsKICAgICAgICAgICAgICAgICB0ZXN0
LmRvbmUoKTsKICAgICAgICAgICAgIH0KQEAgLTQ5LDcgKzQ5LDcgQEAgZnVuY3Rpb24gbWV0aG9k
UmVqZWN0cyh0ZXN0LCBvYmosIG1ldGhvZE5hbWUsIHRhcmdldCwgZW5kVGVzdCkgewogZnVuY3Rp
b24gZ2V0dGVyVGhyb3dzKG9iaiwgZ2V0dGVyTmFtZSwgdGFyZ2V0KSB7CiAgIHZhciBnZXR0ZXIg
PSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwgZ2V0dGVyTmFtZSkuZ2V0Owog
Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgeyBnZXR0ZXIu
Y2FsbCh0YXJnZXQpOyB9LCBnZXR0ZXJOYW1lICsgJyBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3In
KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7IGdldHRlci5j
YWxsKHRhcmdldCk7IH0sIGdldHRlck5hbWUgKyAnIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvcicp
OwogfQogCiB2YXIgdGVzdDEgPSBhc3luY190ZXN0KCdXcml0YWJsZVN0cmVhbS5wcm90b3R5cGUu
Y2xvc2VkIGVuZm9yY2VzIGEgYnJhbmQgY2hlY2snKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3RyYW5zZm9ybS1zdHJlYW0tZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vdHJh
bnNmb3JtLXN0cmVhbS1leHBlY3RlZC50eHQKaW5kZXggMThjYTBiNWM2ZjEyMDJkNmY2M2Q4ZmFl
OTczMTJmNDE0NTBjMDYwZS4uMTIxYzI0ZjhlZDFiMDlkM2ZmNzMyYTBmMzg5ZTI3YzE4Y2I5ZTBi
MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRp
b24vdHJhbnNmb3JtLXN0cmVhbS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFt
cy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vdHJhbnNmb3JtLXN0cmVhbS1leHBlY3RlZC50eHQK
QEAgLTEsNiArMSw2IEBACiAKIFBBU1MgVHJhbnNmb3JtU3RyZWFtIGNhbiBiZSBjb25zdHJ1Y3Rl
ZCB3aXRoIGEgdHJhbnNmb3JtIGZ1bmN0aW9uCi1GQUlMIFRyYW5zZm9ybVN0cmVhbSBjYW5ub3Qg
YmUgY29uc3RydWN0ZWQgd2l0aCBubyB0cmFuc2Zvcm0gZnVuY3Rpb24gYXNzZXJ0X3Rocm93czog
VHJhbnNmb3JtU3RyZWFtIGNhbm5vdCBiZSBjb25zdHJ1Y3RlZCB3aXRoIG5vIGFyZ3VtZW50cyBm
dW5jdGlvbiAiZnVuY3Rpb24gKCkgeyBuZXcgVHJhbnNmb3JtU3RyZWFtKCk7IH0iIGRpZCBub3Qg
dGhyb3cKK0ZBSUwgVHJhbnNmb3JtU3RyZWFtIGNhbm5vdCBiZSBjb25zdHJ1Y3RlZCB3aXRoIG5v
IHRyYW5zZm9ybSBmdW5jdGlvbiBhc3NlcnRfdGhyb3dzX2pzOiBUcmFuc2Zvcm1TdHJlYW0gY2Fu
bm90IGJlIGNvbnN0cnVjdGVkIHdpdGggbm8gYXJndW1lbnRzIGZ1bmN0aW9uICJmdW5jdGlvbiAo
KSB7IG5ldyBUcmFuc2Zvcm1TdHJlYW0oKTsgfSIgZGlkIG5vdCB0aHJvdwogRkFJTCBUcmFuc2Zv
cm1TdHJlYW0gaW5zdGFuY2VzIG11c3QgaGF2ZSB3cml0YWJsZSBhbmQgcmVhZGFibGUgcHJvcGVy
dGllcyBvZiB0aGUgY29ycmVjdCB0eXBlcyBhc3NlcnRfdHJ1ZTogaXQgaGFzIGEgd3JpdGFibGUg
cHJvcGVydHkgZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKIEZBSUwgVHJhbnNmb3JtU3RyZWFtIHdy
aXRhYmxlIHN0YXJ0cyBpbiB0aGUgd3JpdGFibGUgc3RhdGUgYXNzZXJ0X2VxdWFsczogd3JpdGFi
bGUgc3RhcnRzIHdyaXRhYmxlIGV4cGVjdGVkIChzdHJpbmcpICJ3cml0YWJsZSIgYnV0IGdvdCAo
dW5kZWZpbmVkKSB1bmRlZmluZWQKIEZBSUwgUGFzcy10aHJvdWdoIHN5bmMgVHJhbnNmb3JtU3Ry
ZWFtOiBjYW4gcmVhZCBmcm9tIHJlYWRhYmxlIHdoYXQgaXMgcHV0IGludG8gd3JpdGFibGUgdHMu
d3JpdGFibGUud3JpdGUgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAndHMud3JpdGFibGUud3JpdGUo
J2EnKScsICd0cy53cml0YWJsZS53cml0ZScgaXMgdW5kZWZpbmVkKQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vdHJhbnNmb3JtLXN0cmVh
bS5odG1sIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vdHJh
bnNmb3JtLXN0cmVhbS5odG1sCmluZGV4IDNkOTkyZGRmODNhZjExNWI3MjJmZGQ0N2JkOWIwMWU0
ZWM3ODgwNGIuLjY3OTUwYTI4NTk3MjVjZjc1YjM0MWRkMGYyZjg0NTA4MzIxYTkyMTMgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3RyYW5z
Zm9ybS1zdHJlYW0uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBs
ZW1lbnRhdGlvbi90cmFuc2Zvcm0tc3RyZWFtLmh0bWwKQEAgLTEwLDggKzEwLDggQEAgdGVzdChm
dW5jdGlvbigpIHsKIH0sICdUcmFuc2Zvcm1TdHJlYW0gY2FuIGJlIGNvbnN0cnVjdGVkIHdpdGgg
YSB0cmFuc2Zvcm0gZnVuY3Rpb24nKTsKIAogdGVzdChmdW5jdGlvbigpIHsKLSAgICBhc3NlcnRf
dGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7IG5ldyBUcmFuc2Zvcm1TdHJlYW0o
KTsgfSwgJ1RyYW5zZm9ybVN0cmVhbSBjYW5ub3QgYmUgY29uc3RydWN0ZWQgd2l0aCBubyBhcmd1
bWVudHMnKTsKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7
IG5ldyBUcmFuc2Zvcm1TdHJlYW0oe30pOyB9LCAnVHJhbnNmb3JtU3RyZWFtIGNhbm5vdCBiZSBj
b25zdHJ1Y3RlZCB3aXRoIGFuIGVtcHR5IG9iamVjdCcpOworICAgIGFzc2VydF90aHJvd3NfanMo
VHlwZUVycm9yLCBmdW5jdGlvbigpIHsgbmV3IFRyYW5zZm9ybVN0cmVhbSgpOyB9LCAnVHJhbnNm
b3JtU3RyZWFtIGNhbm5vdCBiZSBjb25zdHJ1Y3RlZCB3aXRoIG5vIGFyZ3VtZW50cycpOworICAg
IGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsgbmV3IFRyYW5zZm9ybVN0
cmVhbSh7fSk7IH0sICdUcmFuc2Zvcm1TdHJlYW0gY2Fubm90IGJlIGNvbnN0cnVjdGVkIHdpdGgg
YW4gZW1wdHkgb2JqZWN0Jyk7CiB9LCAnVHJhbnNmb3JtU3RyZWFtIGNhbm5vdCBiZSBjb25zdHJ1
Y3RlZCB3aXRoIG5vIHRyYW5zZm9ybSBmdW5jdGlvbicpOwogCiB0ZXN0KGZ1bmN0aW9uKCkgewpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViYW5pbWF0aW9ucy9mcmFtZS1yYXRlL2FuaW1hdGlv
bi1mcmFtZS1yYXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJhbmltYXRpb25zL2ZyYW1lLXJhdGUv
YW5pbWF0aW9uLWZyYW1lLXJhdGUuaHRtbAppbmRleCBlZjM5NjJkNGFkZDU3ZDgyY2U4NjI4MDYy
YjAzZjE3NmM1MWM3M2E5Li5kYjVkNWIyMTI3YWQ2ZDljOTQ2Y2QzYzE1MzVmMGY4ODEyMjc4ODg5
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJhbmltYXRpb25zL2ZyYW1lLXJhdGUvYW5pbWF0
aW9uLWZyYW1lLXJhdGUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy93ZWJhbmltYXRpb25zL2ZyYW1l
LXJhdGUvYW5pbWF0aW9uLWZyYW1lLXJhdGUuaHRtbApAQCAtMjcsNyArMjcsNyBAQCB0ZXN0KHQg
PT4gewogdGVzdCh0ID0+IHsKICAgICBjb25zdCBhbmltYXRpb24gPSBuZXcgQW5pbWF0aW9uOwog
ICAgIGZvciAobGV0IHZhbHVlIG9mIFsiZGVmYXVsdCIsICIxMjAiLCBudWxsLCB1bmRlZmluZWQs
IFtdLCB7fV0pIHsKLSAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yLCAoKSA9PiBh
bmltYXRpb24uZnJhbWVSYXRlID0gdmFsdWUsIGBTZXR0aW5nIHRoZSB2YWx1ZSAke3ZhbHVlfSB0
aHJvd3NgKTsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IGFuaW1h
dGlvbi5mcmFtZVJhdGUgPSB2YWx1ZSwgYFNldHRpbmcgdGhlIHZhbHVlICR7dmFsdWV9IHRocm93
c2ApOwogICAgICAgICBhc3NlcnRfZXF1YWxzKGFuaW1hdGlvbi5mcmFtZVJhdGUsICJhdXRvIiwg
YFNldHRpbmcgdGhlIGludmFsaWQgdmFsdWUgIiR7dmFsdWV9IiBkb2VzIG5vdCBjaGFuZ2UgdGhl
IHZhbHVlYCk7CiAgICAgfQogfSwgIkludmFsaWQgYW5pbWF0aW9uLmZyYW1lUmF0ZSB2YWx1ZXMi
KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYnJ0Yy9jYWxsaW5nLXBlZXJjb25uZWN0aW9u
LW9uY2UtY2xvc2VkLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJydGMvY2FsbGluZy1wZWVyY29ubmVj
dGlvbi1vbmNlLWNsb3NlZC5odG1sCmluZGV4IGM2YTQxYmQ1NWNiMjY5MDI5MGNhN2IzY2M2MWJk
MDc1MzA4MjczNmIuLjQwYmEyOWZlMTkwNzVmNmZiY2Q2MGUwYjAxODU4YTViZDA3OGYwMDggMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYnJ0Yy9jYWxsaW5nLXBlZXJjb25uZWN0aW9uLW9uY2Ut
Y2xvc2VkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvd2VicnRjL2NhbGxpbmctcGVlcmNvbm5lY3Rp
b24tb25jZS1jbG9zZWQuaHRtbApAQCAtMzAsMjYgKzMwLDI2IEBAIHByb21pc2VfdGVzdCgoKSA9
PiB7CiAKIHByb21pc2VfdGVzdCgodGVzdCkgPT4gewogICAgIHJldHVybiBjbG9zZWRDb25uZWN0
aW9uKCkudGhlbigoY29ubmVjdGlvbikgPT4gewotICAgICAgICByZXR1cm4gcHJvbWlzZV9yZWpl
Y3RzKHRlc3QsICdJbnZhbGlkU3RhdGVFcnJvcicsIGNvbm5lY3Rpb24uY3JlYXRlT2ZmZXIoKSk7
CisgICAgICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZG9tKHRlc3QsICdJbnZhbGlkU3RhdGVF
cnJvcicsIGNvbm5lY3Rpb24uY3JlYXRlT2ZmZXIoKSk7CiAgICAgfSk7CiB9LCAiRW5zdXJpbmcg
Y2xvc2VkIGNvbm5lY3Rpb24gY3JlYXRlT2ZmZXIgZG9lcyBub3QgY3Jhc2giKTsKIAogcHJvbWlz
ZV90ZXN0KCgpID0+IHsKICAgICByZXR1cm4gY2xvc2VkQ29ubmVjdGlvbigpLnRoZW4oKGNvbm5l
Y3Rpb24pID0+IHsKLSAgICAgICAgYXNzZXJ0X3Rocm93cygiSW52YWxpZFN0YXRlRXJyb3IiLCAo
KSA9PiB7ICBjb25uZWN0aW9uLmNyZWF0ZURhdGFDaGFubmVsKCJ0ZXN0Iik7IH0pOworICAgICAg
ICBhc3NlcnRfdGhyb3dzX2RvbSgiSW52YWxpZFN0YXRlRXJyb3IiLCAoKSA9PiB7ICBjb25uZWN0
aW9uLmNyZWF0ZURhdGFDaGFubmVsKCJ0ZXN0Iik7IH0pOwogICAgIH0pOwogfSwgIkVuc3VyaW5n
IGNsb3NlZCBjb25uZWN0aW9uIGNyZWF0ZURhdGFDaGFubmVsIGRvZXMgbm90IGNyYXNoIik7CiAK
IHByb21pc2VfdGVzdCgoKSA9PiB7CiAgICAgcmV0dXJuIGNsb3NlZENvbm5lY3Rpb24oKS50aGVu
KChjb25uZWN0aW9uKSA9PiB7Ci0gICAgICAgIGFzc2VydF90aHJvd3MoIkludmFsaWRTdGF0ZUVy
cm9yIiwgKCkgPT4geyBjb25uZWN0aW9uLmFkZFRyYW5zY2VpdmVyKCJ2aWRlbyIpOyB9KTsKKyAg
ICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkludmFsaWRTdGF0ZUVycm9yIiwgKCkgPT4geyBjb25u
ZWN0aW9uLmFkZFRyYW5zY2VpdmVyKCJ2aWRlbyIpOyB9KTsKICAgICB9KTsKIH0sICJFbnN1cmlu
ZyBjbG9zZWQgY29ubmVjdGlvbiBhZGRUcmFuc2NlaXZlciBkb2VzIG5vdCBjcmFzaCIpOwogCiBw
cm9taXNlX3Rlc3QoKCkgPT4gewogICAgIHJldHVybiBjbG9zZWRDb25uZWN0aW9uKCkudGhlbigo
Y29ubmVjdGlvbikgPT4gewogICAgICAgICByZXR1cm4gbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5n
ZXRVc2VyTWVkaWEoe3ZpZGVvOiB0cnVlfSkudGhlbigoc3RyZWFtKSA9PiB7Ci0gICAgICAgICAg
ICBhc3NlcnRfdGhyb3dzKCJJbnZhbGlkU3RhdGVFcnJvciIsICgpID0+IHsgY29ubmVjdGlvbi5h
ZGRUcmFjayhzdHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXSwgc3RyZWFtKTsgfSk7CisgICAgICAg
ICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiSW52YWxpZFN0YXRlRXJyb3IiLCAoKSA9PiB7IGNvbm5l
Y3Rpb24uYWRkVHJhY2soc3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF0sIHN0cmVhbSk7IH0pOwog
ICAgICAgICB9KTsKICAgICB9KTsKIH0sICJFbnN1cmluZyBjbG9zZWQgY29ubmVjdGlvbiBhZGRU
cmFjayBkb2VzIG5vdCBjcmFzaCIpOwpAQCAtNjIsNyArNjIsNyBAQCBwcm9taXNlX3Rlc3QoKHRl
c3QpID0+IHsKICAgICAgICAgcGMyLmNyZWF0ZURhdGFDaGFubmVsKCJ0ZXN0Iik7CiAgICAgICAg
IHJldHVybiBwYzIuY3JlYXRlT2ZmZXIoKTsKICAgICB9KS50aGVuKChzZHApID0+IHsKLSAgICAg
ICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0ZXN0LCAnSW52YWxpZFN0YXRlRXJyb3InLCBjb25u
ZWN0aW9uLnNldFJlbW90ZURlc2NyaXB0aW9uKHNkcCkpOworICAgICAgICByZXR1cm4gcHJvbWlz
ZV9yZWplY3RzX2RvbSh0ZXN0LCAnSW52YWxpZFN0YXRlRXJyb3InLCBjb25uZWN0aW9uLnNldFJl
bW90ZURlc2NyaXB0aW9uKHNkcCkpOwogICAgIH0pOwogfSwgIkVuc3VyaW5nIGNsb3NlZCBjb25u
ZWN0aW9uIHNldFJlbW90ZURlc2NyaXB0aW9uIGRvZXMgbm90IGNyYXNoIik7CiAKQEAgLTc0LDcg
Kzc0LDcgQEAgcHJvbWlzZV90ZXN0KCh0ZXN0KSA9PiB7CiAgICAgICAgICAgICBzZXRUaW1lb3V0
KCgpID0+IHJlc29sdmUoc2RwKSwgMTAwKTsKICAgICAgICAgfSk7CiAgICAgfSkudGhlbigoc2Rw
KSA9PiB7Ci0gICAgICAgIHJldHVybiBwcm9taXNlX3JlamVjdHModGVzdCwgJ0ludmFsaWRTdGF0
ZUVycm9yJywgbG9jYWxDb25uZWN0aW9uLnNldExvY2FsRGVzY3JpcHRpb24oc2RwKSk7CisgICAg
ICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZG9tKHRlc3QsICdJbnZhbGlkU3RhdGVFcnJvcics
IGxvY2FsQ29ubmVjdGlvbi5zZXRMb2NhbERlc2NyaXB0aW9uKHNkcCkpOwogICAgIH0pOwogfSwg
IkVuc3VyaW5nIGNsb3NlZCBjb25uZWN0aW9uIHNldExvY2FsRGVzY3JpcHRpb24gZG9lcyBub3Qg
Y3Jhc2giKTsKIApAQCAtODcsNyArODcsNyBAQCBwcm9taXNlX3Rlc3QoKHRlc3QpID0+IHsKICAg
ICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgbG9jYWxDb25uZWN0aW9uLmNsb3NlKCk7CiAgICAg
fSkudGhlbigoKSA9PiB7Ci0gICAgICAgIHJldHVybiBwcm9taXNlX3JlamVjdHModGVzdCwgJ0lu
dmFsaWRTdGF0ZUVycm9yJywgbG9jYWxDb25uZWN0aW9uLmNyZWF0ZUFuc3dlcigpKTsKKyAgICAg
ICAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19kb20odGVzdCwgJ0ludmFsaWRTdGF0ZUVycm9yJywg
bG9jYWxDb25uZWN0aW9uLmNyZWF0ZUFuc3dlcigpKTsKICAgICB9KTsKIH0sICJFbnN1cmluZyBj
bG9zZWQgY29ubmVjdGlvbiBjcmVhdGVBbnN3ZXIgZG9lcyBub3QgY3Jhc2giKTsKIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2VicnRjL2RhdGFjaGFubmVsL2NyZWF0aW9uLmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJydGMvZGF0YWNoYW5uZWwvY3JlYXRpb24uaHRtbAppbmRleCAwNjM1OGI2YTUx
MmIxMTJmYjg0YTBhYmIwMDdmMTgyOWZlMGY1NDdkLi40NjdmNWQ3MmZlZTQ5MTBkMzA2YTQ2Y2Vj
OTU5MjM2ZmUyNWI3MGMwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJydGMvZGF0YWNoYW5u
ZWwvY3JlYXRpb24uaHRtbAorKysgYi9MYXlvdXRUZXN0cy93ZWJydGMvZGF0YWNoYW5uZWwvY3Jl
YXRpb24uaHRtbApAQCAtMTQsMjAgKzE0LDIwIEBAIGZvciAodmFyIGNwdHIgPSAwOyBjcHRyIDwg
MTY7ICsrY3B0cikKIAogdGVzdCgoKSA9PiB7CiAgICAgdmFyIHBjID0gbmV3IFJUQ1BlZXJDb25u
ZWN0aW9uKCk7Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yLCAoKSA9PiB7IHBjLmNy
ZWF0ZURhdGFDaGFubmVsKGxvbmdTdHJpbmcpOyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5
cGVFcnJvciwgKCkgPT4geyBwYy5jcmVhdGVEYXRhQ2hhbm5lbChsb25nU3RyaW5nKTsgfSk7CiB9
LCAiQ3JlYXRpbmcgZGF0YSBjaGFubmVsIHdpdGggdmVyeSBsb25nIGxhYmVsIik7CiAKIHRlc3Qo
KCkgPT4gewogICAgIHZhciBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOwogICAgIHBjLmNs
b3NlKCk7Ci0gICAgYXNzZXJ0X3Rocm93cygiSW52YWxpZFN0YXRlRXJyb3IiLCAoKSA9PiB7IHBj
LmNyZWF0ZURhdGFDaGFubmVsKCdzZW5kRGF0YUNoYW5uZWwnKTsgfSk7CisgICAgYXNzZXJ0X3Ro
cm93c19kb20oIkludmFsaWRTdGF0ZUVycm9yIiwgKCkgPT4geyBwYy5jcmVhdGVEYXRhQ2hhbm5l
bCgnc2VuZERhdGFDaGFubmVsJyk7IH0pOwogfSwgIkNyZWF0aW5nIGRhdGEgY2hhbm5lbCBhZnRl
ciBjbG9zaW5nIHRoZSBjb25uZWN0aW9uIik7CiAKIGZ1bmN0aW9uIHRlc3RXcm9uZ0RhdGFDaGFu
bmVsSW5pdChpbml0LCB0aXRsZSkKIHsKICAgICByZXR1cm4gdGVzdCgoKSA9PiB7CiAgICAgICAg
IHZhciBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOwotICAgICAgICBhc3NlcnRfdGhyb3dz
KG5ldyBUeXBlRXJyb3IsICgpID0+IHsgcGMuY3JlYXRlRGF0YUNoYW5uZWwoJ3NlbmREYXRhQ2hh
bm5lbCcsIGluaXQpOyB9KTsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgp
ID0+IHsgcGMuY3JlYXRlRGF0YUNoYW5uZWwoJ3NlbmREYXRhQ2hhbm5lbCcsIGluaXQpOyB9KTsK
ICAgICB9LCAiV3JvbmcgZGF0YSBjaGFubmVsIGluaXQ6ICIgKyB0aXRsZSk7CiB9CiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYnJ0Yy9kYXRhY2hhbm5lbC9kYXRhY2hhbm5lbC1ldmVudC5o
dG1sIGIvTGF5b3V0VGVzdHMvd2VicnRjL2RhdGFjaGFubmVsL2RhdGFjaGFubmVsLWV2ZW50Lmh0
bWwKaW5kZXggYTZjZGQ1YmZjM2FkYzZjNzAxMGRkYmRkYTg5MWM4ZjY1NDhkYzJkMC4uZDgxYjAx
MDJiYjk0MGI2NDg1ODg4NTdmYTgxYWRhODhkY2M5MTFlZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvd2VicnRjL2RhdGFjaGFubmVsL2RhdGFjaGFubmVsLWV2ZW50Lmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvd2VicnRjL2RhdGFjaGFubmVsL2RhdGFjaGFubmVsLWV2ZW50Lmh0bWwKQEAgLTEyLDEx
ICsxMiwxMSBAQCB0ZXN0KCgpID0+IHsKICAgICB2YXIgcGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rp
b24oKTsKICAgICB2YXIgY2hhbm5lbCA9IHBjLmNyZWF0ZURhdGFDaGFubmVsKCJ0ZXN0Iik7CiAK
LSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IsICgpID0+IG5ldyBSVENEYXRhQ2hhbm5l
bEV2ZW50KCkpOwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvciwgKCkgPT4gbmV3IFJU
Q0RhdGFDaGFubmVsRXZlbnQoInRlc3QiKSk7Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVy
cm9yLCAoKSA9PiBuZXcgUlRDRGF0YUNoYW5uZWxFdmVudCgidGVzdCIsIHVuZGVmaW5lZCkpOwot
ICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvciwgKCkgPT4gbmV3IFJUQ0RhdGFDaGFubmVs
RXZlbnQoInRlc3QiLCB7IGNoYW5uZWw6IDEgfSkpOwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5
cGVFcnJvciwgKCkgPT4gbmV3IFJUQ0RhdGFDaGFubmVsRXZlbnQodW5kZWZpbmVkLCB7IGNoYW5u
ZWw6IDEgfSkpOworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBuZXcgUlRD
RGF0YUNoYW5uZWxFdmVudCgpKTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkg
PT4gbmV3IFJUQ0RhdGFDaGFubmVsRXZlbnQoInRlc3QiKSk7CisgICAgYXNzZXJ0X3Rocm93c19q
cyhUeXBlRXJyb3IsICgpID0+IG5ldyBSVENEYXRhQ2hhbm5lbEV2ZW50KCJ0ZXN0IiwgdW5kZWZp
bmVkKSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IG5ldyBSVENEYXRh
Q2hhbm5lbEV2ZW50KCJ0ZXN0IiwgeyBjaGFubmVsOiAxIH0pKTsKKyAgICBhc3NlcnRfdGhyb3dz
X2pzKFR5cGVFcnJvciwgKCkgPT4gbmV3IFJUQ0RhdGFDaGFubmVsRXZlbnQodW5kZWZpbmVkLCB7
IGNoYW5uZWw6IDEgfSkpOwogCiAgICAgdmFyIGV2ZW50ID0gbmV3IFJUQ0RhdGFDaGFubmVsRXZl
bnQoInRlc3QiLCB7IGNoYW5uZWw6IGNoYW5uZWwgfSk7CiAgICAgYXNzZXJ0X2VxdWFscyhldmVu
dC5jaGFubmVsLCBjaGFubmVsLCAiY2hhbm5lbCBwYXNzZWQgaW4gY29uc3RydWN0b3Igc2hvdWxk
IGJlIHVzZWQiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYnJ0Yy9kaXNhYmxlLWVuY3J5
cHRpb24uaHRtbCBiL0xheW91dFRlc3RzL3dlYnJ0Yy9kaXNhYmxlLWVuY3J5cHRpb24uaHRtbApp
bmRleCA2NzQ5YmY5ZDljNzMxZTkyZGI2ODg3MDk1MTBhZjg3MWE1Yjc5NDRlLi4xNWJlNzMxOTlh
NTE4YmI0MTEyYzEyYWM5MjI1ZTEyMjk5NmRmNGNmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93
ZWJydGMvZGlzYWJsZS1lbmNyeXB0aW9uLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvd2VicnRjL2Rp
c2FibGUtZW5jcnlwdGlvbi5odG1sCkBAIC00Myw3ICs0Myw3IEBAIHByb21pc2VfdGVzdChhc3lu
YyAodGVzdCkgPT4gewogICAgIGNvbnN0IG9mZmVyID0gYXdhaXQgcGMxLmNyZWF0ZU9mZmVyKCk7
CiAgICAgYXdhaXQgcGMxLnNldExvY2FsRGVzY3JpcHRpb24ob2ZmZXIpOwogCi0gICAgcmV0dXJu
IHByb21pc2VfcmVqZWN0cyh0ZXN0LCAnSW52YWxpZEFjY2Vzc0Vycm9yJywgcGMyLnNldFJlbW90
ZURlc2NyaXB0aW9uKG9mZmVyKSk7CisgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19kb20odGVz
dCwgJ0ludmFsaWRBY2Nlc3NFcnJvcicsIHBjMi5zZXRSZW1vdGVEZXNjcmlwdGlvbihvZmZlcikp
OwogfSwgIk1ha2Ugc3VyZSBhIHBjIHdpdGggZW5jcnlwdGlvbiBhbmQgYSBwYyB3aXRob3V0IGVu
Y3J5cHRpb24gY2Fubm90IHRhbGsiKTsKICAgICA8L3NjcmlwdD4KICAgPC9ib2R5PgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2VicnRjL3BjLWRldGFjaGVkLWRvY3VtZW50Lmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJydGMvcGMtZGV0YWNoZWQtZG9jdW1lbnQuaHRtbAppbmRleCA5ZmVjZjIyNTQ4
MTE2YTRiOTI4MmRmNTU1MjQ3MmE4YjQ2MWVjOGRlLi4zZDNiNTM3Y2Q2Njk0M2UyYTllNTA3ODE2
OWRjOTUyODliY2IzNGY1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJydGMvcGMtZGV0YWNo
ZWQtZG9jdW1lbnQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy93ZWJydGMvcGMtZGV0YWNoZWQtZG9j
dW1lbnQuaHRtbApAQCAtOSwxNiArOSwxOCBAQCB0ZXN0KCgpID0+IHsKICAgICBmcmFtZS5zZXRB
dHRyaWJ1dGUoInNyYyIsICIvIik7CiAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChmcmFt
ZSk7CiAgICAgdmFyIGNvbnN0cnVjdG9yID0gZnJhbWUuY29udGVudFdpbmRvdy5SVENQZWVyQ29u
bmVjdGlvbjsKKyAgICBjb25zdCBmcmFtZURPTUV4Y2VwdGlvbiA9IGZyYW1lLmNvbnRlbnRXaW5k
b3cuRE9NRXhjZXB0aW9uCiAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChmcmFtZSk7Ci0g
ICAgYXNzZXJ0X3Rocm93cygnTm90U3VwcG9ydGVkRXJyb3InLCAoKSA9PiB7IG5ldyBjb25zdHJ1
Y3RvcigpIH0pOworICAgIGFzc2VydF90aHJvd3NfZG9tKCdOb3RTdXBwb3J0ZWRFcnJvcicsIGZy
YW1lRE9NRXhjZXB0aW9uLCAoKSA9PiB7IG5ldyBjb25zdHJ1Y3RvcigpIH0pOwogfSwgIlBlZXIg
Q29ubmVjdGlvbiBvYmplY3RzIHNob3VsZCBub3QgYmUgY3JlYXRlZCBpbiBkZXRhY2hlZCBkb2N1
bWVudHMiKTsKIHRlc3QoKCkgPT4gewogICAgIHZhciBmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImlmcmFtZSIpOwogICAgIGZyYW1lLnNldEF0dHJpYnV0ZSgic3JjIiwgIi8iKTsKICAg
ICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGZyYW1lKTsKICAgICB2YXIgcGMgPSBuZXcgZnJh
bWUuY29udGVudFdpbmRvdy5SVENQZWVyQ29ubmVjdGlvbigpOworICAgIGNvbnN0IGZyYW1lRE9N
RXhjZXB0aW9uID0gZnJhbWUuY29udGVudFdpbmRvdy5ET01FeGNlcHRpb24KICAgICBkb2N1bWVu
dC5ib2R5LnJlbW92ZUNoaWxkKGZyYW1lKTsKLSAgICBhc3NlcnRfdGhyb3dzKCdJbnZhbGlkU3Rh
dGVFcnJvcicsICgpID0+IHsgcGMuc2V0Q29uZmlndXJhdGlvbih7fSkgfSk7CisgICAgYXNzZXJ0
X3Rocm93c19kb20oJ0ludmFsaWRTdGF0ZUVycm9yJywgZnJhbWVET01FeGNlcHRpb24sICgpID0+
IHsgcGMuc2V0Q29uZmlndXJhdGlvbih7fSkgfSk7CiB9LCAiUGVlciBDb25uZWN0aW9uIG9iamVj
dHMgc2hvdWxkIG5vdCBiZSBjcmVhdGVkIGluIGRldGFjaGVkIGRvY3VtZW50cyAyIik7CiA8L3Nj
cmlwdD4KIDwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYnJ0Yy9zdHVuLXNlcnZl
ci1maWx0ZXJpbmcuaHRtbCBiL0xheW91dFRlc3RzL3dlYnJ0Yy9zdHVuLXNlcnZlci1maWx0ZXJp
bmcuaHRtbAppbmRleCBkMGM5NGZlNjIxZWZiOTY4YzM0MGQ3YWY1MjU2Yzk5YzU2MTgxOTI1Li4y
NTAwZjJjNTE5YjQ4MjdjZmVjYzdmMTFhNTNjNjNmOGVhMjVkMTQ3IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy93ZWJydGMvc3R1bi1zZXJ2ZXItZmlsdGVyaW5nLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvd2VicnRjL3N0dW4tc2VydmVyLWZpbHRlcmluZy5odG1sCkBAIC0zOCw3ICszOCw3IEBAIHRl
c3QoKCkgPT4gewogCiAgICAgbGV0IHN0cmluZzUxMCA9IHN0cmluZzUwOSArICdhJzsKIAotICAg
IGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvciwgKCkgPT4gbmV3IFJUQ1BlZXJDb25uZWN0aW9u
KHtpY2VTZXJ2ZXJzOlt7dXNlcm5hbWU6ICd0ZXN0JywgY3JlZGVudGlhbDogc3RyaW5nNTEwLCB1
cmxzOlsndHVybjpmb28uY29tJ119XX0pKTsKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJy
b3IsICgpID0+IG5ldyBSVENQZWVyQ29ubmVjdGlvbih7aWNlU2VydmVyczpbe3VzZXJuYW1lOiBz
dHJpbmc1MTAsIGNyZWRlbnRpYWw6ICd0ZXN0JywgdXJsczpbJ3R1cm46Zm9vLmNvbSddfV19KSk7
CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IG5ldyBSVENQZWVyQ29ubmVj
dGlvbih7aWNlU2VydmVyczpbe3VzZXJuYW1lOiAndGVzdCcsIGNyZWRlbnRpYWw6IHN0cmluZzUx
MCwgdXJsczpbJ3R1cm46Zm9vLmNvbSddfV19KSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBl
RXJyb3IsICgpID0+IG5ldyBSVENQZWVyQ29ubmVjdGlvbih7aWNlU2VydmVyczpbe3VzZXJuYW1l
OiBzdHJpbmc1MTAsIGNyZWRlbnRpYWw6ICd0ZXN0JywgdXJsczpbJ3R1cm46Zm9vLmNvbSddfV19
KSk7CiB9LCAiUlRDUGVlckNvbm5lY3Rpb24gYW5kIGJpZyBUVVJOIHVzZXJuYW1lL2NyZWRlbnRp
YWwiKTsKIDwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450121</attachid>
            <date>2022-01-27 03:12:16 -0800</date>
            <delta_ts>2022-01-27 23:34:44 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-235398-20220127131213.patch</filename>
            <type>text/plain</type>
            <size>467961</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NTQzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZGM5ZTg3MmU0YzQ0OTZhOTZlZmIz
N2U5MmI2OThiOTQ5NmFmYmJiYi4uNWJhMjRhYmFjMWM4ZDlhN2I3ZWY3OTg3MWJmMzFkODQ2N2Qw
YzY1OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDIyLTAxLTIwICBLaW1tbyBLaW5udW5lbiAg
PGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgVXBkYXRlIExheW91dFRlc3RzL3Jlc291
cmNlcy90ZXN0aGFybmVzcy5qcyB0byAyMDIxLTYtMjQgdmVyc2lvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1Mzk4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICBDb3B5IHRlc3RoYXJuZXNzLmpzLCBmcm9t
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMKKyAgICAgICAgRGVsZXRlIHRlc3RoYXJu
ZXNzLmNzcywgaXQgaXMgbm93IGJ1bmRsZWQgaW4gdGVzdGhhcm5lc3MuanMuCisKKyAgICAgICAg
VXBkYXRlIHRlc3RzIHRvIGFjY29tbW9kYXRlIHRoZSBBUEkgY2hhbmdlOgorICAgICAgICAgLSBh
c3NlcnRfdGhyb3dzX2pzIGNoZWNrIHRoYXQgdGhlIGV4Y2VwdGlvbiBpcyBvZiBhIHBhcnRpY3Vs
YXIgSlMKKyAgICAgICAgICAgZXhjZXB0aW9uIHR5cGUKKyAgICAgICAgIC0gYXNzZXJ0X3Rocm93
c19kb20gY2hlY2sgdGhhdCB0aGUgZXhjZXB0aW9uIGlzIG9mIGEgcGFydGljdWxhcgorICAgICAg
ICAgICBET01FeGNlcHRpb24gdHlwZSBmcm9tIGEgcGFydGljdWxhciBnbG9iYWwgb2JqZWN0Lgor
ICAgICAgICAgLSBhc3NlcnRfdGhyb3dzX2V4YWN0bHkgY2hlY2sgdGhhdCB0aGUgZXhjZXB0aW9u
IGlzIGEgc3BlY2lmaWMKKyAgICAgICAgICAgb2JqZWN0LgorCisgICAgICAgIFByZXZpb3VzbHkg
YXNzZXJ0X3Rocm93cyB3YXMgdXNlZCBhbmQgaXQgaGlkIHVuZXhwZWN0ZWQgZXhjZXB0aW9uIGVy
cm9ycy4KKworICAgICAgICBTYW1lIGZvciBwcm9taXNlX3JlamVjdHNfKgorCisgICAgICAgICog
ZWRpdGluZy90ZXh0LWl0ZXJhdG9yL2NvdW50LW1hdGNoZXMtaW4tZnJhbWVzLmh0bWw6CisgICAg
ICAgICogZWRpdGluZy90ZXh0LWl0ZXJhdG9yL2hpZGRlbi10ZXh0YXJlYS1zZWxlY3Rpb24tcXVp
cmsuaHRtbDoKKyAgICAgICAgKiBmYXN0L2N1c3RvbS1lbGVtZW50cy9kZWZpbmVkLXBzZXVkby1j
bGFzcy5odG1sOgorICAgICAgICBTdG9wIHVzaW5nIHRlc3RoYXJuZXNzLmNzcworCisgICAgICAg
ICogcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmNzczogUmVtb3ZlZC4KKyAgICAgICAgQnVuZGxlZCBp
biAuanMgbm93LgorCisgICAgICAgICogcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzOgorICAgICAg
ICAoV2luZG93VGVzdEVudmlyb25tZW50KToKKyAgICAgICAgKFdpbmRvd1Rlc3RFbnZpcm9ubWVu
dC5wcm90b3R5cGUuX2Rpc3BhdGNoKToKKyAgICAgICAgKFdpbmRvd1Rlc3RFbnZpcm9ubWVudC5w
cm90b3R5cGUub25fdGVzdHNfcmVhZHkpOgorICAgICAgICAoV29ya2VyVGVzdEVudmlyb25tZW50
LnByb3RvdHlwZS5vbl90ZXN0c19yZWFkeSk6CisgICAgICAgIChjcmVhdGVfdGVzdF9lbnZpcm9u
bWVudCk6CisgICAgICAgIChnZXRfdGVzdF9uYW1lKToKKyAgICAgICAgKHRlc3QpOgorICAgICAg
ICAoYXN5bmNfdGVzdCk6CisgICAgICAgIChwcm9taXNlX3Rlc3QpOgorICAgICAgICAocHJvbWlz
ZV9yZWplY3RzX2pzKToKKyAgICAgICAgKHByb21pc2VfcmVqZWN0c19kb20pOgorICAgICAgICAo
cHJvbWlzZV9yZWplY3RzX2V4YWN0bHkpOgorICAgICAgICAocHJvbWlzZV9zZXR1cCk6CisgICAg
ICAgIChkb25lKToKKyAgICAgICAgKGZvcm1hdF92YWx1ZSk6CisKIDIwMjItMDEtMjQgIEtpbW1v
IEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBTdHJlYW1zIHRlc3Rz
IHRyeSB0byBjYWxsIFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5waXBlVGhyb3VnaC5jYWxsIGdl
bmVyaWNhbGx5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2FuaW1hdGlvbi1k
aXJlY3Rpb24tbm9ybWFsLmh0bWwgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2FuaW1hdGlvbi1k
aXJlY3Rpb24tbm9ybWFsLmh0bWwKaW5kZXggM2YyN2M4YjU3N2IyNGE0Mzk4ZDM3YTliZDcwNDVk
MGRhMWQ2ZjNmNi4uZmFhZWI1YjAyMzYwMjMzYTdmZDg1MjM0YjEwZWRjMjQyZDNmM2I3NyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9hbmltYXRpb24tZGlyZWN0aW9uLW5vcm1h
bC5odG1sCisrKyBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvYW5pbWF0aW9uLWRpcmVjdGlvbi1u
b3JtYWwuaHRtbApAQCAtMzQsNyArMzQsNyBAQAogPGJvZHk+CiA8ZGl2IGlkPSJib3giPjwvZGl2
PgogPHNjcmlwdD4KLSAgICBhc3luY190ZXN0KGFzeW5jIHQgPT4geworICAgIHByb21pc2VfdGVz
dChhc3luYyB0ID0+IHsKICAgICAgICAgY29uc3QgZGVsYXkgPSAxMDA7CiAKICAgICAgICAgY29u
c3QgdGVzdCA9IG5ldyBBbmltYXRpb25UZXN0KHsKQEAgLTU2LDggKzU2LDYgQEAKIAogICAgICAg
ICAvLyBGaW5hbGx5LCBjaGVjayB0aGUgdmFsdWVzIHJlY29yZGVkIGVhcmxpZXIgaW4gdGhlIHRl
c3QuCiAgICAgICAgIHRlc3QuY2hlY2tSZWNvcmRlZFZhbHVlcygpOwotCi0gICAgICAgIHQuZG9u
ZSgpOwogICAgIH0sIGBQYXVzaW5nIGFuIGFuaW1hdGlvbiB1c2luZyB0aGUgYW5pbWF0aW9uLXBs
YXktc3RhdGUgcHJvcGVydHkgc3RvcHMgYW5pbWF0aW5nIHN0eWxlcy5gKTsKIDwvc2NyaXB0Pgog
PC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9hbmltYXRpb24tZGly
ZWN0aW9uLXJldmVyc2UuaHRtbCBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvYW5pbWF0aW9uLWRp
cmVjdGlvbi1yZXZlcnNlLmh0bWwKaW5kZXggM2E3YTRmOWM1YmRhZDFlOTM3Y2RlOTNhNDkwZTEy
NWRjODAxMzJiZS4uZWU4NWY5MmJiY2M3ZWFlYTA2Njg5ZWM5ZTAyMTEyNTA2ZWEwNTRiZCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9hbmltYXRpb24tZGlyZWN0aW9uLXJldmVy
c2UuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2FuaW1hdGlvbi1kaXJlY3Rpb24t
cmV2ZXJzZS5odG1sCkBAIC0zNCw3ICszNCw3IEBACiA8Ym9keT4KIDxkaXYgaWQ9ImJveCI+PC9k
aXY+CiA8c2NyaXB0PgotICAgIGFzeW5jX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgcHJvbWlzZV90
ZXN0KGFzeW5jIHQgPT4gewogICAgICAgICBjb25zdCBkZWxheSA9IDEwMDsKIAogICAgICAgICBj
b25zdCB0ZXN0ID0gbmV3IEFuaW1hdGlvblRlc3QoewpAQCAtNTYsOCArNTYsNiBAQAogCiAgICAg
ICAgIC8vIEZpbmFsbHksIGNoZWNrIHRoZSB2YWx1ZXMgcmVjb3JkZWQgZWFybGllciBpbiB0aGUg
dGVzdC4KICAgICAgICAgdGVzdC5jaGVja1JlY29yZGVkVmFsdWVzKCk7Ci0KLSAgICAgICAgdC5k
b25lKCk7CiAgICAgfSwgYFBhdXNpbmcgYW4gYW5pbWF0aW9uIHVzaW5nIHRoZSBhbmltYXRpb24t
cGxheS1zdGF0ZSBwcm9wZXJ0eSBzdG9wcyBhbmltYXRpbmcgc3R5bGVzIHdpdGggYW5pbWF0aW9u
LWRpcmVjdGlvbjogcmV2ZXJzZS5gKTsKIDwvc2NyaXB0PgogPC9ib2R5PgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9jaGFuZ2Uta2V5ZnJhbWVzLW5hbWUuaHRtbCBiL0xheW91
dFRlc3RzL2FuaW1hdGlvbnMvY2hhbmdlLWtleWZyYW1lcy1uYW1lLmh0bWwKaW5kZXggYjcyMDJm
NTk3MmViMGNiMWQxZTQ4OGIxYjU1YzkxYjg5ZWVjOTMzYi4uOTYyZmNiZmE0NTkzMzhiN2MxNzU0
MDAwYWQxZGJiY2EzM2M1Mjk2MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9j
aGFuZ2Uta2V5ZnJhbWVzLW5hbWUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2No
YW5nZS1rZXlmcmFtZXMtbmFtZS5odG1sCkBAIC00NSw3ICs0NSw3IEBACiAgICAgICAgIHJldHVy
biBudWxsOwogICAgIH0KIAotICAgIGFzeW5jX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgcHJvbWlz
ZV90ZXN0KGFzeW5jIHQgPT4gewogICAgICAgICBjb25zdCBkZWxheSA9IDEwMDsKICAgICAgICAg
Y29uc3QgYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJveCIpOwogICAgICAgICBjb25z
dCBwcmV2aW91c0FuaW1hdGlvbk5hbWUgPSAiZm9vIjsKQEAgLTc0LDEwICs3NCw3IEBACiAKICAg
ICAgICAgLy8gTm93LCBjaGVjayB0aGUgcmVjb3JkZWQgdmFsdWVzIHdlcmUgY29ycmVjdC4KICAg
ICAgICAgdGVzdC5jaGVja1JlY29yZGVkVmFsdWVzKCk7Ci0KLSAgICAgICAgdC5kb25lKCk7CiAg
ICAgfSwgYFRlc3QgdGhhdCBkeW5hbWljYWxseSBjaGFuZ2luZyB0aGUgbmFtZSBvZiBhIEBrZXlm
cmFtZXMgcnVsZSBzdGFydHMgYW5pbWF0aW9ucyB1c2luZyB0aGF0IG5hbWUuYCk7Ci0gICAgCiAg
IDwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYW5p
bWF0aW9ucy9wbGF5LXN0YXRlLXBhdXNlZC5odG1sIGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9w
bGF5LXN0YXRlLXBhdXNlZC5odG1sCmluZGV4IDA5NjIxMGI2Y2RiYTU5ZWM2ODBjYmYzNmMxMzM5
NjQ2NDgyY2UwYTEuLjgyNjVlOTVlM2U5ZWI2ODcyOTM0YWE2ZGZhMGEzMjFhZjUyYzA0YjYgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvcGxheS1zdGF0ZS1wYXVzZWQuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL3BsYXktc3RhdGUtcGF1c2VkLmh0bWwKQEAgLTM1
LDcgKzM1LDcgQEAKIDxkaXYgaWQ9ImJveCI+PC9kaXY+CiA8c2NyaXB0PgogCi1hc3luY190ZXN0
KGFzeW5jIHQgPT4geworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4gewogICAgIGNvbnN0IGRlbGF5
ID0gMTAwOwogCiAgICAgY29uc3QgdGVzdCA9IG5ldyBBbmltYXRpb25UZXN0KHsKQEAgLTU3LDgg
KzU3LDYgQEAgYXN5bmNfdGVzdChhc3luYyB0ID0+IHsKIAogICAgIC8vIEZpbmFsbHksIGNoZWNr
IHRoZSB2YWx1ZXMgcmVjb3JkZWQgZWFybGllciBpbiB0aGUgdGVzdC4KICAgICB0ZXN0LmNoZWNr
UmVjb3JkZWRWYWx1ZXMoKTsKLQotICAgIHQuZG9uZSgpOwogfSwgYFBhdXNpbmcgYW4gYW5pbWF0
aW9uIHVzaW5nIHRoZSBhbmltYXRpb24tcGxheS1zdGF0ZSBwcm9wZXJ0eSBzdG9wcyBhbmltYXRp
bmcgc3R5bGVzLmApOwogCiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Nzcy1j
dXN0b20tcHJvcGVydGllcy1hcGkvcmVnaXN0ZXJQcm9wZXJ0eS5odG1sIGIvTGF5b3V0VGVzdHMv
Y3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9yZWdpc3RlclByb3BlcnR5Lmh0bWwKaW5kZXggOTE2
ZDRiNDk0MDM0ZjJiMWRiZmMwYWYyMzViMTQ0MmM5YTEyNDgyNS4uN2I5MjQwMzUyNWQzMjMyMmMw
YzU1OTBhZWE4NjdhODUyNjBjZDVkZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvY3NzLWN1c3Rv
bS1wcm9wZXJ0aWVzLWFwaS9yZWdpc3RlclByb3BlcnR5Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
Y3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9yZWdpc3RlclByb3BlcnR5Lmh0bWwKQEAgLTYsMTIg
KzYsMTIgQEAKIDxzY3JpcHQ+CiAvLyBUZXN0cyBmb3IgZXJyb3IgY2hlY2tpbmcgZHVyaW5nIHBy
b3BlcnR5IHJlZ2lzdHJhdGlvbgogdGVzdChmdW5jdGlvbigpIHsKLSAgICBhc3NlcnRfdGhyb3dz
KG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gQ1NTLnJlZ2lzdGVyUHJvcGVydHkoKSk7Ci0gICAgYXNz
ZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IENTUy5yZWdpc3RlclByb3BlcnR5KHVu
ZGVmaW5lZCkpOwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBDU1Mu
cmVnaXN0ZXJQcm9wZXJ0eSh0cnVlKSk7Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9y
KCksICgpID0+IENTUy5yZWdpc3RlclByb3BlcnR5KDIpKTsKLSAgICBhc3NlcnRfdGhyb3dzKG5l
dyBUeXBlRXJyb3IoKSwgKCkgPT4gQ1NTLnJlZ2lzdGVyUHJvcGVydHkoImNzcyIpKTsKLSAgICBh
c3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gQ1NTLnJlZ2lzdGVyUHJvcGVydHko
bnVsbCkpOworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBDU1MucmVnaXN0
ZXJQcm9wZXJ0eSgpKTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gQ1NT
LnJlZ2lzdGVyUHJvcGVydHkodW5kZWZpbmVkKSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBl
RXJyb3IsICgpID0+IENTUy5yZWdpc3RlclByb3BlcnR5KHRydWUpKTsKKyAgICBhc3NlcnRfdGhy
b3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gQ1NTLnJlZ2lzdGVyUHJvcGVydHkoMikpOworICAgIGFz
c2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSgiY3Nz
IikpOworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBDU1MucmVnaXN0ZXJQ
cm9wZXJ0eShudWxsKSk7CiB9LCAicmVnaXN0ZXJQcm9wZXJ0eSByZXF1aXJlcyBhIERpY3Rpb25h
cnkgdHlwZSIpOwogdGVzdChmdW5jdGlvbigpIHsKICAgICAvLyBWYWxpZCBwcm9wZXJ0eSBuYW1l
cywgc2hvdWxkbid0IHRocm93CkBAIC0xOSwxOSArMTksMTkgQEAgdGVzdChmdW5jdGlvbigpIHsK
ICAgICBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTogJy0tbmFtZTIsIG5vIG5lZWQgZm9yIGVz
Y2FwZXMnLCBpbmhlcml0czogZmFsc2V9KTsKICAgICBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFt
ZTogWyctLW5hbWUnLCAzXSwgaW5oZXJpdHM6IGZhbHNlfSk7CiAgICAgLy8gSW52YWxpZCBwcm9w
ZXJ0eSBuYW1lcwotICAgIGFzc2VydF90aHJvd3MobmV3IFN5bnRheEVycm9yKCksICgpID0+IENT
Uy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiAnbm8tbGVhZGluZy1kYXNoJywgaW5oZXJpdHM6IGZh
bHNlfSkpOwotICAgIGFzc2VydF90aHJvd3MobmV3IFN5bnRheEVycm9yKCksICgpID0+IENTUy5y
ZWdpc3RlclByb3BlcnR5KHtuYW1lOiAnJywgaW5oZXJpdHM6IGZhbHNlfSkpOwotICAgIGFzc2Vy
dF90aHJvd3MobmV3IFN5bnRheEVycm9yKCksICgpID0+IENTUy5yZWdpc3RlclByb3BlcnR5KHtu
YW1lOiAnXFwtLW5hbWUnLCBpbmhlcml0czogZmFsc2V9KSk7CisgICAgYXNzZXJ0X3Rocm93c19k
b20oJ1N5bnRheEVycm9yJywgKCkgPT4gQ1NTLnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6ICduby1s
ZWFkaW5nLWRhc2gnLCBpbmhlcml0czogZmFsc2V9KSk7CisgICAgYXNzZXJ0X3Rocm93c19kb20o
J1N5bnRheEVycm9yJywgKCkgPT4gQ1NTLnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6ICcnLCBpbmhl
cml0czogZmFsc2V9KSk7CisgICAgYXNzZXJ0X3Rocm93c19kb20oJ1N5bnRheEVycm9yJywgKCkg
PT4gQ1NTLnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6ICdcXC0tbmFtZScsIGluaGVyaXRzOiBmYWxz
ZX0pKTsKIH0sICJyZWdpc3RlclByb3BlcnR5IHJlcXVpcmVzIGEgbmFtZSBtYXRjaGluZyA8Y3Vz
dG9tLXByb3BlcnR5LW5hbWU+Iik7CiB0ZXN0KGZ1bmN0aW9uKCkgewogICAgIENTUy5yZWdpc3Rl
clByb3BlcnR5KHtuYW1lOiAnLS1zeW50YXgtdGVzdC0xJywgaW5oZXJpdHM6IGZhbHNlLCBzeW50
YXg6ICcqJ30pOwogICAgIENTUy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiAnLS1zeW50YXgtdGVz
dC0yJywgaW5oZXJpdHM6IGZhbHNlLCBzeW50YXg6ICcgKiAnfSk7CiAgICAgQ1NTLnJlZ2lzdGVy
UHJvcGVydHkoe25hbWU6ICctLXN5bnRheC10ZXN0LTMnLCBpbmhlcml0czogZmFsc2UsIGluaXRp
YWxWYWx1ZTogJzUwMHB4J30pOwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAo
KSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7fSkpOwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5
cGVFcnJvcigpLCAoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTogJy0tbm8taW5oZXJp
dHMnfSkpOwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBDU1MucmVn
aXN0ZXJQcm9wZXJ0eSh7aW5oZXJpdHM6IGZhbHNlfSkpOworICAgIGFzc2VydF90aHJvd3NfanMo
VHlwZUVycm9yLCAoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7fSkpOworICAgIGFzc2VydF90
aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTogJy0t
bm8taW5oZXJpdHMnfSkpOworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBD
U1MucmVnaXN0ZXJQcm9wZXJ0eSh7aW5oZXJpdHM6IGZhbHNlfSkpOwogICAgIC8vIFJlcGVhdGVk
IG5hbWUKLSAgICBhc3NlcnRfdGhyb3dzKERPTUV4Y2VwdGlvbi5JTlZBTElEX01PRElGSUNBVElP
Tl9FUlIsCisgICAgYXNzZXJ0X3Rocm93c19kb20oRE9NRXhjZXB0aW9uLklOVkFMSURfTU9ESUZJ
Q0FUSU9OX0VSUiwKICAgICAgICAgKCkgPT4gQ1NTLnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6ICct
LXN5bnRheC10ZXN0LTMnLCBpbmhlcml0czogZmFsc2UsIGluaXRpYWxWYWx1ZTogJzUwMHB4J30p
KTsKIH0sICJyZWdpc3RlclByb3BlcnR5IGFsd2F5cyBhbGxvd3Mgb21pdHRpbmcgaW5pdGlhbFZh
bHVlIGFuZCBzeW50YXgsIHJlcXVpcmVzIG5hbWUgYW5kIGluaGVyaXRzIik7CiB0ZXN0KGZ1bmN0
aW9uKCkgewpAQCAtNDIsMTEgKzQyLDExIEBAIHRlc3QoZnVuY3Rpb24oKSB7CiAgIENTUy5yZWdp
c3RlclByb3BlcnR5KHtuYW1lOiAnLS1pbml0aWFsdmFsdWUtdGVzdC0wJywgaW5oZXJpdHM6IGZh
bHNlLCBzeW50YXg6ICc8bGVuZ3RoPicsIGluaXRpYWxWYWx1ZTogJ2NhbGMoMTBweCArIDEwaW4p
J30pOwogICBhc3NlcnRfZXF1YWxzKHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsKS5nZXRQcm9w
ZXJ0eVZhbHVlKCctLWluaXRpYWx2YWx1ZS10ZXN0LTAnKS50b1N0cmluZygpLCAnOTcwcHgnKTsK
IAotICBhc3NlcnRfdGhyb3dzKG5ldyBTeW50YXhFcnJvcigpLAorICBhc3NlcnRfdGhyb3dzX2Rv
bSgnU3ludGF4RXJyb3InLAogICAgICgpID0+IENTUy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiAn
LS1pbml0aWFsdmFsdWUtdGVzdC0xJywgaW5oZXJpdHM6IGZhbHNlLCBzeW50YXg6ICc8bGVuZ3Ro
PicsIGluaXRpYWxWYWx1ZTogJzEwZW0nfSkpOwotICBhc3NlcnRfdGhyb3dzKG5ldyBTeW50YXhF
cnJvcigpLAorICBhc3NlcnRfdGhyb3dzX2RvbSgnU3ludGF4RXJyb3InLAogICAgICgpID0+IENT
Uy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiAnLS1pbml0aWFsdmFsdWUtdGVzdC0yJywgaW5oZXJp
dHM6IGZhbHNlLCBzeW50YXg6ICc8bGVuZ3RoPicsIGluaXRpYWxWYWx1ZTogJ2NhbGMoMTBweCAr
IDEwZW0pJ30pKTsKLSAgYXNzZXJ0X3Rocm93cyhuZXcgU3ludGF4RXJyb3IoKSwKKyAgYXNzZXJ0
X3Rocm93c19kb20oJ1N5bnRheEVycm9yJywKICAgICAoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0
eSh7bmFtZTogJy0taW5pdGlhbHZhbHVlLXRlc3QtMycsIGluaGVyaXRzOiBmYWxzZSwgc3ludGF4
OiAnPGxlbmd0aD4nLCBpbml0aWFsVmFsdWU6ICdjYWxjKDEwcHggKyAxMCUpJ30pKTsKIH0sICJy
ZWdpc3RlclByb3BlcnR5IHJlcXVpcmVzIGluaXRpYWxWYWx1ZSB0byBiZSBjb21wdXRhdGlvbmFs
bHkgaW5kZXBlbmRlbnQiKTsKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRp
dGluZy90ZXh0LWl0ZXJhdG9yL2NvdW50LW1hdGNoZXMtaW4tZnJhbWVzLmh0bWwgYi9MYXlvdXRU
ZXN0cy9lZGl0aW5nL3RleHQtaXRlcmF0b3IvY291bnQtbWF0Y2hlcy1pbi1mcmFtZXMuaHRtbApp
bmRleCAxOWRkMDUxZjVjN2JhMTI5YTZjNGY3ZTFjZTdjMmRhMTM1ODg4OWExLi5hYWMzYzNkMjQy
M2YzMzU0MjlhOWQ5YmM2NWJhYjE5MWU5M2ZhYThkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9l
ZGl0aW5nL3RleHQtaXRlcmF0b3IvY291bnQtbWF0Y2hlcy1pbi1mcmFtZXMuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9lZGl0aW5nL3RleHQtaXRlcmF0b3IvY291bnQtbWF0Y2hlcy1pbi1mcmFtZXMu
aHRtbApAQCAtNCw3ICs0LDYgQEAKIDx0aXRsZT5UZXh0IHNlYXJjaCBmcm9tIGZyYW1lczwvdGl0
bGU+CiA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Njcmlw
dD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwv
c2NyaXB0PgotPGxpbmsgcmVsPSdzdHlsZXNoZWV0JyBocmVmPScuLi8uLi9yZXNvdXJjZXMvdGVz
dGhhcm5lc3MuY3NzJz4KIDwvaGVhZD4KIDxib2R5PgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9lZGl0aW5nL3RleHQtaXRlcmF0b3IvaGlkZGVuLXRleHRhcmVhLXNlbGVjdGlvbi1xdWlyay5o
dG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy90ZXh0LWl0ZXJhdG9yL2hpZGRlbi10ZXh0YXJlYS1z
ZWxlY3Rpb24tcXVpcmsuaHRtbAppbmRleCAzYzlhOWUyYWQwYzdjNzEyMmJkNWJkMWZkOGM2N2Mw
OTY3YmM4MmUwLi43MjY2ZWEzYzg2MDc3Y2JjZDE1NWY5ZDgyYjkwZjg5NzMzMTc0MmQ5IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3RleHQtaXRlcmF0b3IvaGlkZGVuLXRleHRhcmVh
LXNlbGVjdGlvbi1xdWlyay5odG1sCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvdGV4dC1pdGVy
YXRvci9oaWRkZW4tdGV4dGFyZWEtc2VsZWN0aW9uLXF1aXJrLmh0bWwKQEAgLTQsNyArNCw2IEBA
CiA8dGl0bGU+U2VsZWN0aW9ucyBpbiBoaWRkZW4gZWxlbWVudHM8L3RpdGxlPgogPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxsaW5r
IHJlbD0nc3R5bGVzaGVldCcgaHJlZj0nLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmNzcyc+
CiA8L2hlYWQ+CiA8Ym9keT4KIDxzdHlsZT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL3dlYmdsL3dlYmdsMi9iaW5kaW5ncy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvd2ViZ2wvd2ViZ2wyL2JpbmRpbmdzLmh0bWwKaW5kZXggYmM1ZmI0NjFhYjBmNjI3OWRmMjNj
NDkxYmZlNWI4ZDFiZWU4NGU3Yy4uNjQwNGY0ZDI2YjY4OGY2NTAzMTg5YzcwNjE2YmVmNjRhODgw
MzQ0ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvd2ViZ2wyL2Jp
bmRpbmdzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvd2ViZ2wyL2Jp
bmRpbmdzLmh0bWwKQEAgLTQ4LDcgKzQ4LDcgQEAgc2V0dXAoZnVuY3Rpb24oKSB7CiAKIGZvciAo
dmFyIFttZXRob2QsIGFyZ3MsIG5hbWVdIG9mIGVycm9yX21ldGhvZHMpIHsKICAgdGVzdChmdW5j
dGlvbigpIHsKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gY29udGV4
dFttZXRob2RdKC4uLmFyZ3MpKTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkg
PT4gY29udGV4dFttZXRob2RdKC4uLmFyZ3MpKTsKICAgfSwgbmFtZSk7CiB9CiA8L3NjcmlwdD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL2RlZmluZWQtcHNl
dWRvLWNsYXNzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9kZWZpbmVk
LXBzZXVkby1jbGFzcy5odG1sCmluZGV4IDA2MjBmY2QzNzBhZjIzYTVhMjk5ZjMwYjI4YmM5MTBi
YTk0YmFhNzUuLjBjMGMzYjA4YTJhYjgxMmY2YmE4NjNjNTAzYTQ2YmM4OWI1ZGZhNWUgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL2RlZmluZWQtcHNldWRvLWNs
YXNzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvZGVmaW5lZC1w
c2V1ZG8tY2xhc3MuaHRtbApAQCAtNiw3ICs2LDYgQEAKIDxsaW5rIHJlbD0iaGVscCIgaHJlZj0i
aHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYmNvbXBvbmVudHMvc3BlYy9jdXN0b20vI3RoZS1kZWZp
bmVkLWVsZW1lbnQtcHNldWRvLWNsYXNzLWRlZmluZWQiPgogPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxsaW5rIHJlbD0nc3R5bGVz
aGVldCcgaHJlZj0nLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmNzcyc+CiA8L2hlYWQ+CiA8
Ym9keT4KIDxkaXYgaWQ9ImxvZyI+PC9kaXY+CkBAIC0xMDUsMjggKzEwNCwzMCBAQCB0ZXN0KGZ1
bmN0aW9uICgpIHsKIAogdGVzdChmdW5jdGlvbiAoKSB7CiAgICAgdmFyIG1hdGNoSW5zaWRlQ29u
c3RydWN0b3IgPSBmYWxzZTsKKyAgICBjb25zdCB0aGVFeGNlcHRpb24gPSB7bmFtZTogJ2JhZCd9
OwogICAgIGNsYXNzIFRocm93c0V4Y2VwdGlvbiBleHRlbmRzIEhUTUxFbGVtZW50IHsKICAgICAg
ICAgY29uc3RydWN0b3IoKSB7CiAgICAgICAgICAgICBzdXBlcigpOwogICAgICAgICAgICAgbWF0
Y2hJbnNpZGVDb25zdHJ1Y3RvciA9IHRoaXMubWF0Y2hlcygnOmRlZmluZWQnKTsKLSAgICAgICAg
ICAgIHRocm93IHtuYW1lOiAnYmFkJ307CisgICAgICAgICAgICB0aHJvdyB0aGVFeGNlcHRpb247
CiAgICAgICAgIH0KICAgICB9OwogICAgIGN1c3RvbUVsZW1lbnRzLmRlZmluZSgndGhyb3dzLWV4
Y2VwdGlvbicsIFRocm93c0V4Y2VwdGlvbik7CiAgICAgdmFyIGluc3RhbmNlOwotICAgIGFzc2Vy
dF90aHJvd3Moe25hbWU6ICdiYWQnfSwgZnVuY3Rpb24gKCkgeyBpbnN0YW5jZSA9IG5ldyBUaHJv
d3NFeGNlcHRpb247IH0pOworICAgIGFzc2VydF90aHJvd3NfZXhhY3RseSh0aGVFeGNlcHRpb24s
IGZ1bmN0aW9uICgpIHsgaW5zdGFuY2UgPSBuZXcgVGhyb3dzRXhjZXB0aW9uOyB9KTsKICAgICBh
c3NlcnRfdHJ1ZShtYXRjaEluc2lkZUNvbnN0cnVjdG9yKTsKIH0sICdUaGUgZGVmaW5lZCBmbGFn
IG9mIGEgY3VzdG9tIGVsZW1lbnQgbXVzdCBiZSBzZXQgaW5zaWRlIGEgY29uc3RydWN0b3Igd2hl
biBjb25zdHJ1Y3RpbmcgYSBjdXN0b20gZWxlbWVudCBzeW5jaHJvbm91c2x5JwogICAgICsgJyBl
dmVuIGlmIHRoZSBjb25zdHJ1Y3RvciB0aHJldyBhbiBleGNlcHRpb24gbGF0ZXInKTsKIAogdGVz
dChmdW5jdGlvbiAoKSB7CiAgICAgdmFyIGluc3RhbmNlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgndGhyb3dzLWV4Y2VwdGlvbi0yJyk7CisgICAgY29uc3QgdGhlRXhjZXB0aW9uID0ge25hbWU6
ICdiYWQnfTsKICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGluc3RhbmNlKTsKICAgICB2
YXIgdW5jYXVnaHRFcnJvcjsKICAgICB3aW5kb3cub25lcnJvciA9IGZ1bmN0aW9uIChtZXNzYWdl
LCB1cmwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZXJyb3IpIHsgdW5jYXVnaHRFcnJvciA9
IGVycm9yOyByZXR1cm4gdHJ1ZTsgfQogICAgIGN1c3RvbUVsZW1lbnRzLmRlZmluZSgndGhyb3dz
LWV4Y2VwdGlvbi0yJywgY2xhc3MgZXh0ZW5kcyBIVE1MRWxlbWVudCB7CiAgICAgICAgIGNvbnN0
cnVjdG9yKCkgewotICAgICAgICAgICAgdGhyb3cge25hbWU6ICdiYWQnfTsKKyAgICAgICAgICAg
IHRocm93IHRoZUV4Y2VwdGlvbjsKICAgICAgICAgfQogICAgIH0pOwogICAgIGFzc2VydF9lcXVh
bHModW5jYXVnaHRFcnJvci5uYW1lLCAnYmFkJyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2N1c3RvbS1lbGVtZW50cy90aHJvdy1vbi1keW5hbWljLW1hcmt1cC1pbnNlcnRpb24tY291
bnRlci1jb25zdHJ1Y3QuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL3Ro
cm93LW9uLWR5bmFtaWMtbWFya3VwLWluc2VydGlvbi1jb3VudGVyLWNvbnN0cnVjdC5odG1sCmlu
ZGV4IDZmM2JhZTgzZjJlZGJjODA1MDEyNDFjY2ZlM2ZkN2U3OTI0OWQyYjEuLmUxMDIzNGIyMzk1
ZjhmMTQ5YjFkNTEwMDVkNTg4ZWNjYzkwNGUwZDcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zh
c3QvY3VzdG9tLWVsZW1lbnRzL3Rocm93LW9uLWR5bmFtaWMtbWFya3VwLWluc2VydGlvbi1jb3Vu
dGVyLWNvbnN0cnVjdC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRz
L3Rocm93LW9uLWR5bmFtaWMtbWFya3VwLWluc2VydGlvbi1jb3VudGVyLWNvbnN0cnVjdC5odG1s
CkBAIC00NSwxMiArNDUsMTIgQEAgYXN5bmMgZnVuY3Rpb24gY29uc3RydWN0X2N1c3RvbV9lbGVt
ZW50X2luX3BhcnNlcih0ZXN0LCBjYWxsX2Z1bmN0aW9uKQogCiBwcm9taXNlX3Rlc3QoYXN5bmMg
ZnVuY3Rpb24gKCkgewogICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGNvbnN0cnVjdF9jdXN0b21f
ZWxlbWVudF9pbl9wYXJzZXIodGhpcywgKGRvY3VtZW50KSA9PiBkb2N1bWVudC5vcGVuKCkpOwot
ICAgIGFzc2VydF90aHJvd3Moe25hbWU6ICdJbnZhbGlkU3RhdGVFcnJvcid9LCAoKSA9PiB7IHRo
cm93IHJlc3VsdC5leGNlcHRpb247IH0sICdNdXN0IHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9y
Jyk7CisgICAgYXNzZXJ0X3Rocm93c19kb20oJ0ludmFsaWRTdGF0ZUVycm9yJywgcmVzdWx0Lndp
bmRvdy5ET01FeGNlcHRpb24sICgpID0+IHsgdGhyb3cgcmVzdWx0LmV4Y2VwdGlvbjsgfSwgJ011
c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3InKTsKIH0sICdkb2N1bWVudC5vcGVuKCkgbXVz
dCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciB3aGVuIHN5bmNocm9ub3VzbHkgY29uc3RydWN0
aW5nIGEgY3VzdG9tIGVsZW1lbnQnKTsKIAogcHJvbWlzZV90ZXN0KGFzeW5jIGZ1bmN0aW9uICgp
IHsKICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBjb25zdHJ1Y3RfY3VzdG9tX2VsZW1lbnRfaW5f
cGFyc2VyKHRoaXMsIChkb2N1bWVudCkgPT4gZG9jdW1lbnQub3BlbigndGV4dC9odG1sJykpOwot
ICAgIGFzc2VydF90aHJvd3Moe25hbWU6ICdJbnZhbGlkU3RhdGVFcnJvcid9LCAoKSA9PiB7IHRo
cm93IHJlc3VsdC5leGNlcHRpb247IH0sICdNdXN0IHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9y
Jyk7CisgICAgYXNzZXJ0X3Rocm93c19kb20oJ0ludmFsaWRTdGF0ZUVycm9yJywgcmVzdWx0Lndp
bmRvdy5ET01FeGNlcHRpb24sICgpID0+IHsgdGhyb3cgcmVzdWx0LmV4Y2VwdGlvbjsgfSwgJ011
c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3InKTsKIH0sICdkb2N1bWVudC5vcGVuKCJ0ZXh0
L2h0bWwiKSBtdXN0IHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yIHdoZW4gc3luY2hyb25vdXNs
eSBjb25zdHJ1Y3RpbmcgYSBjdXN0b20gZWxlbWVudCcpOwogCiAvLyBodHRwczovL2h0bWwuc3Bl
Yy53aGF0d2cub3JnL211bHRpcGFnZS9keW5hbWljLW1hcmt1cC1pbnNlcnRpb24uaHRtbCNkb20t
ZG9jdW1lbnQtb3Blbi13aW5kb3cKQEAgLTYzLDE5ICs2MywxOSBAQCBwcm9taXNlX3Rlc3QoYXN5
bmMgZnVuY3Rpb24gKCkgewogCiBwcm9taXNlX3Rlc3QoYXN5bmMgZnVuY3Rpb24gKCkgewogICAg
IGNvbnN0IHJlc3VsdCA9IGF3YWl0IGNvbnN0cnVjdF9jdXN0b21fZWxlbWVudF9pbl9wYXJzZXIo
dGhpcywgKGRvY3VtZW50KSA9PiBkb2N1bWVudC5jbG9zZSgpKTsKLSAgICBhc3NlcnRfdGhyb3dz
KHtuYW1lOiAnSW52YWxpZFN0YXRlRXJyb3InfSwgKCkgPT4geyB0aHJvdyByZXN1bHQuZXhjZXB0
aW9uOyB9LCAnTXVzdCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvcicpOworICAgIGFzc2VydF90
aHJvd3NfZG9tKCdJbnZhbGlkU3RhdGVFcnJvcicsIHJlc3VsdC53aW5kb3cuRE9NRXhjZXB0aW9u
LCAoKSA9PiB7IHRocm93IHJlc3VsdC5leGNlcHRpb247IH0sICdNdXN0IHRocm93IGFuIEludmFs
aWRTdGF0ZUVycm9yJyk7CiB9LCAnZG9jdW1lbnQuY2xvc2UoKSBtdXN0IHRocm93IGFuIEludmFs
aWRTdGF0ZUVycm9yIHdoZW4gc3luY2hyb25vdXNseSBjb25zdHJ1Y3RpbmcgYSBjdXN0b20gZWxl
bWVudCcpOwogCiBwcm9taXNlX3Rlc3QoYXN5bmMgZnVuY3Rpb24gKCkgewogICAgIGNvbnN0IHJl
c3VsdCA9IGF3YWl0IGNvbnN0cnVjdF9jdXN0b21fZWxlbWVudF9pbl9wYXJzZXIodGhpcywgKGRv
Y3VtZW50KSA9PiBkb2N1bWVudC53cml0ZSgnPGI+c29tZSB0ZXh0PC9iPicpKTsKLSAgICBhc3Nl
cnRfdGhyb3dzKHtuYW1lOiAnSW52YWxpZFN0YXRlRXJyb3InfSwgKCkgPT4geyB0aHJvdyByZXN1
bHQuZXhjZXB0aW9uOyB9LCAnTXVzdCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvcicpOworICAg
IGFzc2VydF90aHJvd3NfZG9tKCdJbnZhbGlkU3RhdGVFcnJvcicsIHJlc3VsdC53aW5kb3cuRE9N
RXhjZXB0aW9uLCAoKSA9PiB7IHRocm93IHJlc3VsdC5leGNlcHRpb247IH0sICdNdXN0IHRocm93
IGFuIEludmFsaWRTdGF0ZUVycm9yJyk7CiAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQuZG9jdW1l
bnQucXVlcnlTZWxlY3RvcignYicpLCBudWxsLCAnTXVzdCBub3QgaW5zZXJ0IG5ldyBjb250ZW50
Jyk7CiAgICAgYXNzZXJ0X2ZhbHNlKHJlc3VsdC5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuaW5u
ZXJIVE1MLmluY2x1ZGVzKCdzb21lIHRleHQnKSwgJ011c3Qgbm90IGluc2VydCBuZXcgY29udGVu
dCcpOwogfSwgJ2RvY3VtZW50LndyaXRlIG11c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3Ig
d2hlbiBzeW5jaHJvbm91c2x5IGNvbnN0cnVjdGluZyBhIGN1c3RvbSBlbGVtZW50Jyk7CiAKIHBy
b21pc2VfdGVzdChhc3luYyBmdW5jdGlvbiAoKSB7CiAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQg
Y29uc3RydWN0X2N1c3RvbV9lbGVtZW50X2luX3BhcnNlcih0aGlzLCAoZG9jdW1lbnQpID0+IGRv
Y3VtZW50LndyaXRlbG4oJzxiPnNvbWUgdGV4dDwvYj4nKSk7Ci0gICAgYXNzZXJ0X3Rocm93cyh7
bmFtZTogJ0ludmFsaWRTdGF0ZUVycm9yJ30sICgpID0+IHsgdGhyb3cgcmVzdWx0LmV4Y2VwdGlv
bjsgfSwgJ011c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3InKTsKKyAgICBhc3NlcnRfdGhy
b3dzX2RvbSgnSW52YWxpZFN0YXRlRXJyb3InLCByZXN1bHQud2luZG93LkRPTUV4Y2VwdGlvbiwg
KCkgPT4geyB0aHJvdyByZXN1bHQuZXhjZXB0aW9uOyB9LCAnTXVzdCB0aHJvdyBhbiBJbnZhbGlk
U3RhdGVFcnJvcicpOwogICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LmRvY3VtZW50LnF1ZXJ5U2Vs
ZWN0b3IoJ2InKSwgbnVsbCwgJ011c3Qgbm90IGluc2VydCBuZXcgY29udGVudCcpOwogICAgIGFz
c2VydF9mYWxzZShyZXN1bHQuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmlubmVySFRNTC5pbmNs
dWRlcygnc29tZSB0ZXh0JyksICdNdXN0IG5vdCBpbnNlcnQgbmV3IGNvbnRlbnQnKTsKIH0sICdk
b2N1bWVudC53cml0ZWxuIG11c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3Igd2hlbiBzeW5j
aHJvbm91c2x5IGNvbnN0cnVjdGluZyBhIGN1c3RvbSBlbGVtZW50Jyk7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy90aHJvdy1vbi1keW5hbWljLW1hcmt1cC1p
bnNlcnRpb24tY291bnRlci1yZWFjdGlvbnMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3VzdG9t
LWVsZW1lbnRzL3Rocm93LW9uLWR5bmFtaWMtbWFya3VwLWluc2VydGlvbi1jb3VudGVyLXJlYWN0
aW9ucy5odG1sCmluZGV4IDA2ZmVlZjY4MmUwY2I4M2RiYWMyMGNiYTY2MjYwYzQxNjc0YjBlMTcu
LmFhNjk5MGU1OTdlZmI4YWY0Y2U5NzAxNzRmYjNhNDU3ZTYxYmI2ODEgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL3Rocm93LW9uLWR5bmFtaWMtbWFya3VwLWlu
c2VydGlvbi1jb3VudGVyLXJlYWN0aW9ucy5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3Vz
dG9tLWVsZW1lbnRzL3Rocm93LW9uLWR5bmFtaWMtbWFya3VwLWluc2VydGlvbi1jb3VudGVyLXJl
YWN0aW9ucy5odG1sCkBAIC00NSwxMiArNDUsMTIgQEAgYXN5bmMgZnVuY3Rpb24gY3VzdG9tX2Vs
ZW1lbnRfcmVhY3Rpb25zX2luX3BhcnNlcih0ZXN0LCBjYWxsX2Z1bmN0aW9uKQogCiBwcm9taXNl
X3Rlc3QoYXN5bmMgZnVuY3Rpb24gKCkgewogICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGN1c3Rv
bV9lbGVtZW50X3JlYWN0aW9uc19pbl9wYXJzZXIodGhpcywgKGRvY3VtZW50KSA9PiBkb2N1bWVu
dC5vcGVuKCkpOwotICAgIGFzc2VydF90aHJvd3Moe25hbWU6ICdJbnZhbGlkU3RhdGVFcnJvcid9
LCAoKSA9PiB7IHRocm93IHJlc3VsdC5leGNlcHRpb247IH0sICdNdXN0IHRocm93IGFuIEludmFs
aWRTdGF0ZUVycm9yJyk7CisgICAgYXNzZXJ0X3Rocm93c19kb20oJ0ludmFsaWRTdGF0ZUVycm9y
JywgcmVzdWx0LndpbmRvdy5ET01FeGNlcHRpb24sICgpID0+IHsgdGhyb3cgcmVzdWx0LmV4Y2Vw
dGlvbjsgfSwgJ011c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3InKTsKIH0sICdkb2N1bWVu
dC5vcGVuKCkgbXVzdCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciB3aGVuIHByb2Nlc3Npbmcg
Y3VzdG9tIGVsZW1lbnQgcmVhY3Rpb25zIGZvciBhIHN5bmNocm9ub3VzIGNvbnN0cnVjdGVkIGN1
c3RvbSBlbGVtZW50Jyk7CiAKIHByb21pc2VfdGVzdChhc3luYyBmdW5jdGlvbiAoKSB7CiAgICAg
Y29uc3QgcmVzdWx0ID0gYXdhaXQgY3VzdG9tX2VsZW1lbnRfcmVhY3Rpb25zX2luX3BhcnNlcih0
aGlzLCAoZG9jdW1lbnQpID0+IGRvY3VtZW50Lm9wZW4oJ3RleHQvaHRtbCcpKTsKLSAgICBhc3Nl
cnRfdGhyb3dzKHtuYW1lOiAnSW52YWxpZFN0YXRlRXJyb3InfSwgKCkgPT4geyB0aHJvdyByZXN1
bHQuZXhjZXB0aW9uOyB9LCAnTXVzdCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvcicpOworICAg
IGFzc2VydF90aHJvd3NfZG9tKCdJbnZhbGlkU3RhdGVFcnJvcicsIHJlc3VsdC53aW5kb3cuRE9N
RXhjZXB0aW9uLCAoKSA9PiB7IHRocm93IHJlc3VsdC5leGNlcHRpb247IH0sICdNdXN0IHRocm93
IGFuIEludmFsaWRTdGF0ZUVycm9yJyk7CiB9LCAnZG9jdW1lbnQub3BlbigidGV4dC9odG1sIikg
bXVzdCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciB3aGVuIHByb2Nlc3NpbmcgY3VzdG9tIGVs
ZW1lbnQgcmVhY3Rpb25zIGZvciBhIHN5bmNocm9ub3VzIGNvbnN0cnVjdGVkIGN1c3RvbSBlbGVt
ZW50Jyk7CiAKIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2R5bmFt
aWMtbWFya3VwLWluc2VydGlvbi5odG1sI2RvbS1kb2N1bWVudC1vcGVuLXdpbmRvdwpAQCAtNjMs
MTkgKzYzLDE5IEBAIHByb21pc2VfdGVzdChhc3luYyBmdW5jdGlvbiAoKSB7CiAKIHByb21pc2Vf
dGVzdChhc3luYyBmdW5jdGlvbiAoKSB7CiAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgY3VzdG9t
X2VsZW1lbnRfcmVhY3Rpb25zX2luX3BhcnNlcih0aGlzLCAoZG9jdW1lbnQpID0+IGRvY3VtZW50
LmNsb3NlKCkpOwotICAgIGFzc2VydF90aHJvd3Moe25hbWU6ICdJbnZhbGlkU3RhdGVFcnJvcid9
LCAoKSA9PiB7IHRocm93IHJlc3VsdC5leGNlcHRpb247IH0sICdNdXN0IHRocm93IGFuIEludmFs
aWRTdGF0ZUVycm9yJyk7CisgICAgYXNzZXJ0X3Rocm93c19kb20oJ0ludmFsaWRTdGF0ZUVycm9y
JywgcmVzdWx0LndpbmRvdy5ET01FeGNlcHRpb24sICgpID0+IHsgdGhyb3cgcmVzdWx0LmV4Y2Vw
dGlvbjsgfSwgJ011c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3InKTsKIH0sICdkb2N1bWVu
dC5jbG9zZSgpIG11c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3Igd2hlbiBwcm9jZXNzaW5n
IGN1c3RvbSBlbGVtZW50IHJlYWN0aW9ucyBmb3IgYSBzeW5jaHJvbm91cyBjb25zdHJ1Y3RlZCBj
dXN0b20gZWxlbWVudCcpOwogCiBwcm9taXNlX3Rlc3QoYXN5bmMgZnVuY3Rpb24gKCkgewogICAg
IGNvbnN0IHJlc3VsdCA9IGF3YWl0IGN1c3RvbV9lbGVtZW50X3JlYWN0aW9uc19pbl9wYXJzZXIo
dGhpcywgKGRvY3VtZW50KSA9PiBkb2N1bWVudC53cml0ZSgnPGI+c29tZSB0ZXh0PC9iPicpKTsK
LSAgICBhc3NlcnRfdGhyb3dzKHtuYW1lOiAnSW52YWxpZFN0YXRlRXJyb3InfSwgKCkgPT4geyB0
aHJvdyByZXN1bHQuZXhjZXB0aW9uOyB9LCAnTXVzdCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJv
cicpOworICAgIGFzc2VydF90aHJvd3NfZG9tKCdJbnZhbGlkU3RhdGVFcnJvcicsIHJlc3VsdC53
aW5kb3cuRE9NRXhjZXB0aW9uLCAoKSA9PiB7IHRocm93IHJlc3VsdC5leGNlcHRpb247IH0sICdN
dXN0IHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yJyk7CiAgICAgYXNzZXJ0X2VxdWFscyhyZXN1
bHQuZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYicpLCBudWxsLCAnTXVzdCBub3QgaW5zZXJ0IG5l
dyBjb250ZW50Jyk7CiAgICAgYXNzZXJ0X2ZhbHNlKHJlc3VsdC5kb2N1bWVudC5kb2N1bWVudEVs
ZW1lbnQuaW5uZXJIVE1MLmluY2x1ZGVzKCdzb21lIHRleHQnKSwgJ011c3Qgbm90IGluc2VydCBu
ZXcgY29udGVudCcpOwogfSwgJ2RvY3VtZW50LndyaXRlIG11c3QgdGhyb3cgYW4gSW52YWxpZFN0
YXRlRXJyb3Igd2hlbiBwcm9jZXNzaW5nIGN1c3RvbSBlbGVtZW50IHJlYWN0aW9ucyBmb3IgYSBz
eW5jaHJvbm91cyBjb25zdHJ1Y3RlZCBjdXN0b20gZWxlbWVudCcpOwogCiBwcm9taXNlX3Rlc3Qo
YXN5bmMgZnVuY3Rpb24gKCkgewogICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGN1c3RvbV9lbGVt
ZW50X3JlYWN0aW9uc19pbl9wYXJzZXIodGhpcywgKGRvY3VtZW50KSA9PiBkb2N1bWVudC53cml0
ZWxuKCc8Yj5zb21lIHRleHQ8L2I+JykpOwotICAgIGFzc2VydF90aHJvd3Moe25hbWU6ICdJbnZh
bGlkU3RhdGVFcnJvcid9LCAoKSA9PiB7IHRocm93IHJlc3VsdC5leGNlcHRpb247IH0sICdNdXN0
IHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yJyk7CisgICAgYXNzZXJ0X3Rocm93c19kb20oJ0lu
dmFsaWRTdGF0ZUVycm9yJywgcmVzdWx0LndpbmRvdy5ET01FeGNlcHRpb24sICgpID0+IHsgdGhy
b3cgcmVzdWx0LmV4Y2VwdGlvbjsgfSwgJ011c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3In
KTsKICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdC5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdiJyks
IG51bGwsICdNdXN0IG5vdCBpbnNlcnQgbmV3IGNvbnRlbnQnKTsKICAgICBhc3NlcnRfZmFsc2Uo
cmVzdWx0LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5pbm5lckhUTUwuaW5jbHVkZXMoJ3NvbWUg
dGV4dCcpLCAnTXVzdCBub3QgaW5zZXJ0IG5ldyBjb250ZW50Jyk7CiB9LCAnZG9jdW1lbnQud3Jp
dGVsbiBtdXN0IHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yIHdoZW4gcHJvY2Vzc2luZyBjdXN0
b20gZWxlbWVudCByZWFjdGlvbnMgZm9yIGEgc3luY2hyb25vdXMgY29uc3RydWN0ZWQgY3VzdG9t
IGVsZW1lbnQnKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2RvY3VtZW50LWFs
bC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vZG9jdW1lbnQtYWxsLmh0bWwKaW5kZXggMTA4
NzMxMDgzYTgxOGVjZTBiZTczMDBiNWVkMzAwMGFhMTUyNzY3ZC4uNzI0MzcwNmRiMjdhNTQ0ZTE0
ZTNmNmJmMTRlMjYyNTIwY2YxNzE0ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20v
ZG9jdW1lbnQtYWxsLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vZG9jdW1lbnQtYWxs
Lmh0bWwKQEAgLTE1Myw3ICsxNTMsNyBAQCB0ZXN0KGZ1bmN0aW9uKCkgewogfSwgImRvY3VtZW50
LmFsbCB3aWxsIHJldHVybiBhIHN1Yi1jb2xsZWN0aW9uIGlmIHRoZSBuYW1lL2lkIGlzIGZvdW5k
IG1vcmUgdGhhbiBvbmNlLCB0aGF0IGlzIGxpdmUiKTsKIAogdGVzdChmdW5jdGlvbigpIHsKLSAg
ICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7IGRvY3VtZW50LmFs
bC5uYW1lZEl0ZW0oKSB9KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgZnVuY3Rp
b24oKSB7IGRvY3VtZW50LmFsbC5uYW1lZEl0ZW0oKSB9KTsKIH0sICJkb2N1bWVudC5hbGwncyBu
YW1lZEl0ZW0gZnVuY3Rpb24gcmVxdWlyZXMgcGFzc2luZyBhbiBhcmd1bWVudCIpOwogCiB0ZXN0
KGZ1bmN0aW9uKCkgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vZWxlbWVudEZy
b21Qb2ludC1wYXJhbWV0ZXJzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9lbGVtZW50RnJv
bVBvaW50LXBhcmFtZXRlcnMuaHRtbAppbmRleCBhZGRkMjZkODkxMzFkYTA5MTdiMTBlNGM5NWU3
ZGM2YTc5ZGE4MTFhLi40MmFmNDFlM2NhYTU3YjBhNTA5OTNhNjk1ZWNhYjg5OWYxOGU3OGYzIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9lbGVtZW50RnJvbVBvaW50LXBhcmFtZXRl
cnMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9lbGVtZW50RnJvbVBvaW50LXBhcmFt
ZXRlcnMuaHRtbApAQCAtNiwyNiArNiwyNiBAQAogPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogdGVzdChmdW5jdGlv
bigpIHsKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7IAor
ICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsgCiAgICAgICAgIGRv
Y3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoKTsKICAgICB9LCAiQ2FsbGVkIHdpdGggbm8gcGFyYW1l
dGVyIik7CiAKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7
IAorICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsgCiAgICAgICAg
IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoMCk7CiAgICAgfSwgIkNhbGxlZCB3aXRoIDEgcGFy
YW1ldGVyIik7CiB9LCAiUGFyYW1ldGVycyBhcmUgbWFuZGF0b3J5LiIpOwogCiB0ZXN0KGZ1bmN0
aW9uKCkgewotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsK
KyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CiAgICAgICAgIGRv
Y3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoMCwgSW5maW5pdHkpOwogICAgIH0sICJQYXNzaW5nIElu
ZmluaXR5IGFzIHNlY29uZCBwYXJhbWV0ZXIgdGhyb3dzIik7Ci0gICAgYXNzZXJ0X3Rocm93cyhu
ZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgeworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVy
cm9yLCBmdW5jdGlvbigpIHsKICAgICAgICAgZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludChJbmZp
bml0eSwgMCk7CiAgICAgfSwgIlBhc3NpbmcgSW5maW5pdHkgYXMgZmlyc3QgcGFyYW1ldGVyIHRo
cm93cyIpOwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsK
KyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CiAgICAgICAgIGRv
Y3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoMCwgTmFOKTsKICAgICB9LCAiUGFzc2luZyBOYU4gYXMg
c2Vjb25kIHBhcmFtZXRlciB0aHJvd3MiKTsKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJy
b3IoKSwgZnVuY3Rpb24oKSB7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsIGZ1bmN0
aW9uKCkgewogICAgICAgICBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KE5hTiwgMCk7CiAgICAg
fSwgIlBhc3NpbmcgTmFOIGFzIGZpcnN0IHBhcmFtZXRlciB0aHJvd3MiKTsKIH0sICJQYXJhbWV0
ZXIgc2hvdWxkIGJlIGZpbml0ZSBmbG9hdGluZyBwb2ludCB2YWx1ZXMuIik7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9yZXBsYWNlYWJsZS1zZXR0ZXItdGhyb3dzLWlmLWRlZmlu
ZW93bnByb3BlcnR5LWZhaWxzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9yZXBsYWNlYWJs
ZS1zZXR0ZXItdGhyb3dzLWlmLWRlZmluZW93bnByb3BlcnR5LWZhaWxzLmh0bWwKaW5kZXggY2Zh
YmZmMzUxYTI1MjU4ZjIxYzBmYmZhYWUzYTc0NjgxOThlNjY4MC4uZGNlYTkzYjUxMTZhNWMyMmZl
YTI0MGJlODgzNzA2NmEwMjk2MWQ3YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20v
cmVwbGFjZWFibGUtc2V0dGVyLXRocm93cy1pZi1kZWZpbmVvd25wcm9wZXJ0eS1mYWlscy5odG1s
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3JlcGxhY2VhYmxlLXNldHRlci10aHJvd3MtaWYt
ZGVmaW5lb3ducHJvcGVydHktZmFpbHMuaHRtbApAQCAtMTEsNyArMTEsNyBAQAogZm9yIChjb25z
dCBrZXkgb2YgWyJzZWxmIiwgInBhcmVudCIsICJvcmlnaW4iLCAiaW5uZXJXaWR0aCJdKSB7CiAg
ICAgdGVzdCgoKSA9PiB7CiAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh3aW5kb3csIGtl
eSwgeyBjb25maWd1cmFibGU6IGZhbHNlIH0pOwotICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBU
eXBlRXJyb3IsICgpID0+IHsgd2luZG93W2tleV0gPSAxOyB9KTsKKyAgICAgICAgYXNzZXJ0X3Ro
cm93c19qcyhUeXBlRXJyb3IsICgpID0+IHsgd2luZG93W2tleV0gPSAxOyB9KTsKIAogICAgICAg
ICBjb25zdCBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3aW5kb3csIGtl
eSk7CiAgICAgICAgIGFzc2VydF9mYWxzZSgidmFsdWUiIGluIGRlc2MpOwpAQCAtMjYsNyArMjYs
NyBAQCBmb3IgKGNvbnN0IGtleSBvZiBbInNjcmVlbiIsICJsZW5ndGgiLCAiZXZlbnQiLCAib3V0
ZXJIZWlnaHQiXSkgewogICAgIHRlc3QoKCkgPT4gewogICAgICAgICBjb25zdCB7IHNldCB9ID0g
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3aW5kb3csIGtleSk7CiAgICAgICAgIE9i
amVjdC5kZWZpbmVQcm9wZXJ0eSh3aW5kb3csIGtleSwgeyB2YWx1ZTogMSwgd3JpdGFibGU6IGZh
bHNlLCBjb25maWd1cmFibGU6IGZhbHNlIH0pOwotICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBU
eXBlRXJyb3IsICgpID0+IHsgc2V0LmNhbGwod2luZG93LCAyKTsgfSk7CisgICAgICAgIGFzc2Vy
dF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiB7IHNldC5jYWxsKHdpbmRvdywgMik7IH0pOwog
CiAgICAgICAgIGNvbnN0IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHdp
bmRvdywga2V5KTsKICAgICAgICAgYXNzZXJ0X2VxdWFscyhkZXNjLnZhbHVlLCAxKTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3dpbmRvdy1vcGVuZXItc2V0dGVyLXRocm93cy1p
Zi1kZWZpbmVvd25wcm9wZXJ0eS1mYWlscy0xLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS93
aW5kb3ctb3BlbmVyLXNldHRlci10aHJvd3MtaWYtZGVmaW5lb3ducHJvcGVydHktZmFpbHMtMS5o
dG1sCmluZGV4IDQyMzM5MWQ1ZGZjMjVmZWY0MWFhNmEzYWUyZTBiMDQzOWZiYjdiNjUuLjU5OWI1
MTI1MWIzZDA1Mjc1MmFkMjU0YmNkYzljNWFkNjMyMjExYmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2Zhc3QvZG9tL3dpbmRvdy1vcGVuZXItc2V0dGVyLXRocm93cy1pZi1kZWZpbmVvd25wcm9w
ZXJ0eS1mYWlscy0xLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vd2luZG93LW9wZW5l
ci1zZXR0ZXItdGhyb3dzLWlmLWRlZmluZW93bnByb3BlcnR5LWZhaWxzLTEuaHRtbApAQCAtMTAs
NyArMTAsNyBAQAogPHNjcmlwdD4KIHRlc3QoKCkgPT4gewogICAgIE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eSh3aW5kb3csICJvcGVuZXIiLCB7IGNvbmZpZ3VyYWJsZTogZmFsc2UgfSk7Ci0gICAgYXNz
ZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yLCAoKSA9PiB7IHdpbmRvdy5vcGVuZXIgPSAxOyB9KTsK
KyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4geyB3aW5kb3cub3BlbmVyID0g
MTsgfSk7CiAKICAgICBjb25zdCBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cih3aW5kb3csICJvcGVuZXIiKTsKICAgICBhc3NlcnRfZmFsc2UoInZhbHVlIiBpbiBkZXNjKTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3dpbmRvdy1vcGVuZXItc2V0dGVyLXRo
cm93cy1pZi1kZWZpbmVvd25wcm9wZXJ0eS1mYWlscy0yLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS93aW5kb3ctb3BlbmVyLXNldHRlci10aHJvd3MtaWYtZGVmaW5lb3ducHJvcGVydHktZmFp
bHMtMi5odG1sCmluZGV4IDY2YWMyOTc5MjlmMDExZTI4YWQ4ODczNDM1ODkzZjA2M2E2OGZjYjUu
Ljk0NmNmM2EzMmFmMmEyMGM0ZTU1YjE4OTE5OTBmMDI4ZmY0Mjc0YmMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL3dpbmRvdy1vcGVuZXItc2V0dGVyLXRocm93cy1pZi1kZWZpbmVv
d25wcm9wZXJ0eS1mYWlscy0yLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vd2luZG93
LW9wZW5lci1zZXR0ZXItdGhyb3dzLWlmLWRlZmluZW93bnByb3BlcnR5LWZhaWxzLTIuaHRtbApA
QCAtMTEsNyArMTEsNyBAQAogdGVzdCgoKSA9PiB7CiAgICAgY29uc3QgeyBzZXQgfSA9IE9iamVj
dC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iod2luZG93LCAib3BlbmVyIik7CiAgICAgT2JqZWN0
LmRlZmluZVByb3BlcnR5KHdpbmRvdywgIm9wZW5lciIsIHsgdmFsdWU6IDEsIHdyaXRhYmxlOiBm
YWxzZSwgY29uZmlndXJhYmxlOiBmYWxzZSB9KTsKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBl
RXJyb3IsICgpID0+IHsgc2V0LmNhbGwod2luZG93LCAyKTsgfSk7CisgICAgYXNzZXJ0X3Rocm93
c19qcyhUeXBlRXJyb3IsICgpID0+IHsgc2V0LmNhbGwod2luZG93LCAyKTsgfSk7CiAKICAgICBj
b25zdCBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3aW5kb3csICJvcGVu
ZXIiKTsKICAgICBhc3NlcnRfZXF1YWxzKGRlc2MudmFsdWUsIDEpOwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvY2xpcGJvYXJkLWV2ZW50LWNvbnN0cnVjdG9yLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9jbGlwYm9hcmQtZXZlbnQtY29uc3RydWN0b3IuaHRtbApp
bmRleCA3NzQ5MzYxNmE3Mzk4Zjc2ZjMwOGQ0OTk0NTUwN2FlNjQxNTlmMmY4Li5hMTNkMDNkNjJi
ZGZlMjMxNTVmZjgxMjBlNDI2ZjdmODg3MTQwZTVhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy9jbGlwYm9hcmQtZXZlbnQtY29uc3RydWN0b3IuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9jbGlwYm9hcmQtZXZlbnQtY29uc3RydWN0b3IuaHRtbApAQCAtOCw3
ICs4LDcgQEAKIDxib2R5PgogPHNjcmlwdD4KIHRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgYXNzZXJ0
X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgeworICAgIGFzc2VydF90aHJvd3Nf
anMoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKICAgICAgICAgbmV3IENsaXBib2FyZEV2ZW50KCk7
CiAgICAgfSk7CiB9LCAiRmlyc3QgcGFyYW1ldGVyIGlzIG1hbmRhdG9yeSIpOwpAQCAtNjQsNyAr
NjQsNyBAQCB0ZXN0KGZ1bmN0aW9uKCkgewogfSwgImJ1YmJsZXMgLyBjYW5jZWxhYmxlIC8gY29t
cG9zZWQgbWVtYmVycyIpOwogCiB0ZXN0KGZ1bmN0aW9uKCkgewotICAgIGFzc2VydF90aHJvd3Mo
bmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVF
cnJvciwgZnVuY3Rpb24oKSB7CiAgICAgICAgIG5ldyBDbGlwYm9hcmRFdmVudCgiZm9vIiwge2Ns
aXBib2FyZERhdGE6IGRvY3VtZW50fSk7CiAgICAgfSk7CiB9LCAiUGFzc2luZyBhIGJhZCB0eXBl
IGZvciBjbGlwYm9hcmREYXRhIG1lbWJlciBzaG91bGQgdGhyb3ciKTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZmlsZXMvd29ya2Vycy9yZXNvdXJjZXMvd29ya2VyLWZpbGUtcmVhZGVy
LXN5bmMtYmFkLXBhcmFtZXRlci5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvd29ya2Vycy9y
ZXNvdXJjZXMvd29ya2VyLWZpbGUtcmVhZGVyLXN5bmMtYmFkLXBhcmFtZXRlci5qcwppbmRleCBj
OTVhZmNkMGZlNWUwZGFhYmU4NTdmOTU4YTZmZWVkODUyZmI1MGI2Li45MTM0NTVkNjZhMmVjZTk4
OTZiYjk3OTA2Y2I0YzUyYjExMjgyNTUyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Zp
bGVzL3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1maWxlLXJlYWRlci1zeW5jLWJhZC1wYXJhbWV0
ZXIuanMKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy93b3JrZXJzL3Jlc291cmNlcy93b3Jr
ZXItZmlsZS1yZWFkZXItc3luYy1iYWQtcGFyYW1ldGVyLmpzCkBAIC0yLDE4ICsyLDE4IEBAIGlm
IChzZWxmLmltcG9ydFNjcmlwdHMpCiAgIHNlbGYuaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vLi4v
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJyk7CiAKIHRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgYXNz
ZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgeyBuZXcgRmlsZVJlYWRlclN5
bmMoKS5yZWFkQXNCaW5hcnlTdHJpbmcobnVsbCk7IH0pOwotICAgIGFzc2VydF90aHJvd3MobmV3
IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsgbmV3IEZpbGVSZWFkZXJTeW5jKCkucmVhZEFzQXJy
YXlCdWZmZXIobnVsbCk7IH0pOwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBm
dW5jdGlvbigpIHsgbmV3IEZpbGVSZWFkZXJTeW5jKCkucmVhZEFzVGV4dChudWxsKTsgfSk7Ci0g
ICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgeyBuZXcgRmlsZVJl
YWRlclN5bmMoKS5yZWFkQXNEYXRhVVJMKG51bGwpOyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pz
KFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7IG5ldyBGaWxlUmVhZGVyU3luYygpLnJlYWRBc0JpbmFy
eVN0cmluZyhudWxsKTsgfSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsIGZ1bmN0
aW9uKCkgeyBuZXcgRmlsZVJlYWRlclN5bmMoKS5yZWFkQXNBcnJheUJ1ZmZlcihudWxsKTsgfSk7
CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeyBuZXcgRmlsZVJl
YWRlclN5bmMoKS5yZWFkQXNUZXh0KG51bGwpOyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5
cGVFcnJvciwgZnVuY3Rpb24oKSB7IG5ldyBGaWxlUmVhZGVyU3luYygpLnJlYWRBc0RhdGFVUkwo
bnVsbCk7IH0pOwogfSwgIlRyeWluZyB0byByZWFkIGEgbnVsbCBwYXJhbWV0ZXIiKTsKIAogCiB0
ZXN0KGZ1bmN0aW9uKCkgewotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5j
dGlvbigpIHsgbmV3IEZpbGVSZWFkZXJTeW5jKCkucmVhZEFzQmluYXJ5U3RyaW5nKHVuZGVmaW5l
ZCk7IH0pOwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsg
bmV3IEZpbGVSZWFkZXJTeW5jKCkucmVhZEFzQXJyYXlCdWZmZXIodW5kZWZpbmVkKTsgfSk7Ci0g
ICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgeyBuZXcgRmlsZVJl
YWRlclN5bmMoKS5yZWFkQXNUZXh0KHVuZGVmaW5lZCk7IH0pOwotICAgIGFzc2VydF90aHJvd3Mo
bmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsgbmV3IEZpbGVSZWFkZXJTeW5jKCkucmVhZEFz
RGF0YVVSTCh1bmRlZmluZWQpOyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwg
ZnVuY3Rpb24oKSB7IG5ldyBGaWxlUmVhZGVyU3luYygpLnJlYWRBc0JpbmFyeVN0cmluZyh1bmRl
ZmluZWQpOyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7
IG5ldyBGaWxlUmVhZGVyU3luYygpLnJlYWRBc0FycmF5QnVmZmVyKHVuZGVmaW5lZCk7IH0pOwor
ICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsgbmV3IEZpbGVSZWFk
ZXJTeW5jKCkucmVhZEFzVGV4dCh1bmRlZmluZWQpOyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pz
KFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7IG5ldyBGaWxlUmVhZGVyU3luYygpLnJlYWRBc0RhdGFV
UkwodW5kZWZpbmVkKTsgfSk7CiB9LCAiVHJ5aW5nIHRvIHJlYWQgYW4gdW5kZWZpbmVkIHBhcmFt
ZXRlciIpOwogCiBkb25lKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL3ho
ci1ibG9iLXJlcXVlc3QuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMveGhyLWJsb2ItcmVx
dWVzdC5odG1sCmluZGV4IGFjZjNhN2QyYjFhNWExOTgxZGQ4NzdiYzFlYjlhYjViYmFkMzA3NzAu
LmYyNmFmZDEyMzc4MDdhNWRjNzE4NmU3NTAzMjA1Nzg2NTkzYTZjNGMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2Zhc3QvZmlsZXMveGhyLWJsb2ItcmVxdWVzdC5odG1sCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZmlsZXMveGhyLWJsb2ItcmVxdWVzdC5odG1sCkBAIC01MCw3ICs1MCw3IEBAIGZ1
bmN0aW9uIHRlc3Rfbm90QWxsb3dlZF9tZXRob2Rfc3luYyhtZXRob2QpIHsKICAgICAgICAgICAg
IGFzc2VydF91bnJlYWNoZWQoJ0V4Y2VwdGlvbiBzaG91bGQgYmUgdGhyb3duIGZvciBzeW5jaHJv
bm91cyAnICsgbWV0aG9kICsgJyBYSFInKTsKICAgICAgICAgfQogCi0gICAgICAgIGFzc2VydF90
aHJvd3MoJ05ldHdvcmtFcnJvcicsICgpID0+IHsgcmVxLnNlbmQoKTsgfSwgJ0V4Y2VwdGlvbiB0
aHJvd24gZm9yIHN5bmNocm9ub3VzICcgKyBtZXRob2QgKyAnIFhIUicpOworICAgICAgICBhc3Nl
cnRfdGhyb3dzX2RvbSgnTmV0d29ya0Vycm9yJywgKCkgPT4geyByZXEuc2VuZCgpOyB9LCAnRXhj
ZXB0aW9uIHRocm93biBmb3Igc3luY2hyb25vdXMgJyArIG1ldGhvZCArICcgWEhSJyk7CiAKICAg
ICAgICAgYXNzZXJ0X2ZhbHNlKG9uRXJyb3IsICdFcnJvciBjYWxsYmFjayBpcyBjYWxsZWQnKTsK
ICAgICB9LCAnU3luY2hyb25vdXMgWEhSIHJlcXVlc3Qgc2hvdWxkIHRocm93IGV4Y2VwdGlvbiB3
aXRoICcgKyBtZXRob2QpOwpAQCAtOTcsNyArOTcsNyBAQCBmdW5jdGlvbiB0ZXN0X21ldGhvZF9h
c3luYyhtZXRob2QsIHNob3VsZExvYWQpIHsKIAogZnVuY3Rpb24gdGVzdF9mb3JiaWRkZW5fbWV0
aG9kKHJlcXVlc3QpIHsKICAgICB0ZXN0KCgpID0+IHsKLSAgICAgICAgYXNzZXJ0X3Rocm93cygn
U2VjdXJpdHlFcnJvcicsICgpID0+IHsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oJ1NlY3Vy
aXR5RXJyb3InLCAoKSA9PiB7CiAgICAgICAgICAgICB2YXIgcmVxID0gbmV3IFhNTEh0dHBSZXF1
ZXN0OwogICAgICAgICAgICAgcmVxLm9wZW4ocmVxdWVzdCwgdXJsKTsKICAgICAgICAgfSkKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFjYXB0dXJlZnJvbWVsZW1lbnQvQ2FudmFz
Q2FwdHVyZU1lZGlhU3RyZWFtLWV4Y2VwdGlvbnMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbWVk
aWFjYXB0dXJlZnJvbWVsZW1lbnQvQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtLWV4Y2VwdGlvbnMu
aHRtbAppbmRleCA2OWY4ZGZlZGNlYTFlMWMyNzc3NDhlMThkOWQyMjJlMWZhMzNkMjQ3Li4xOWRk
YjMwMDk4MzA0OTdjYzVhYTA0NzZlMmQ4MWJiMDM5NDEwM2FjIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9mYXN0L21lZGlhY2FwdHVyZWZyb21lbGVtZW50L0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVh
bS1leGNlcHRpb25zLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYWNhcHR1cmVmcm9t
ZWxlbWVudC9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW0tZXhjZXB0aW9ucy5odG1sCkBAIC02LDcg
KzYsNyBAQAogCiB0ZXN0KGZ1bmN0aW9uKCkgewogICB2YXIgY2FudmFzID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnY2FudmFzJyk7Ci0gIGFzc2VydF90aHJvd3MoIk5vdFN1cHBvcnRlZEVycm9y
IiwgZnVuY3Rpb24oKSB7IGNhbnZhcy5jYXB0dXJlU3RyZWFtKC0wLjUpIH0sCisgIGFzc2VydF90
aHJvd3NfZG9tKCJOb3RTdXBwb3J0ZWRFcnJvciIsIGZ1bmN0aW9uKCkgeyBjYW52YXMuY2FwdHVy
ZVN0cmVhbSgtMC41KSB9LAogICAgICAgICAgICAgICAgICJjYW5ub3QgaGF2ZSBuZWdhdGl2ZSBm
cmFtZSByYXRlIik7CiB9LCAnY2hlY2sgY2FwdHVyZVN0cmVhbSgpIHRocm93cyBFeGNlcHRpb24g
d2l0aCBpbnZhbGlkIGZyYW1lIHJhdGUnKTsKIApAQCAtMjIsNyArMjIsNyBAQCBmdW5jdGlvbiBt
YWtlQXN5bmNUZXN0KCkgewogICAgICAgY3R4LmZpbGxTdHlsZSA9IHBhdHRlcm47CiAgICAgICBj
dHguZmlsbFJlY3QoMCwgMCwgMTAwLCAxMDApOwogCi0gICAgICBhc3NlcnRfdGhyb3dzKCJTZWN1
cml0eUVycm9yIiwgZnVuY3Rpb24oKSB7IGNhbnZhcy5jYXB0dXJlU3RyZWFtKCkgfSwKKyAgICAg
IGFzc2VydF90aHJvd3NfZG9tKCJTZWN1cml0eUVycm9yIiwgZnVuY3Rpb24oKSB7IGNhbnZhcy5j
YXB0dXJlU3RyZWFtKCkgfSwKICAgICAgICAgICAgICAgICAiY2Fubm90IGhhdmUgY3Jvc3Mgb3Jp
Z2luIik7CiAgICAgICB0ZXN0LmRvbmUoKTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvbWVkaWFzZXNzaW9uL21ldGFkYXRhL2FydHdvcmtkb3dubG9hZC5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9tZWRpYXNlc3Npb24vbWV0YWRhdGEvYXJ0d29ya2Rvd25sb2FkLmh0bWwK
aW5kZXggZjZiMTE1MmJkYmU4MTMxMWUyMDRlOWFjOTYxNzY2OTJkYjgyZTliYi4uODQxNjA1OTky
ODFiNDZmMzE3NDE4MmNjZTU2MWJjOWNjYmJhYzBjZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYXNlc3Npb24vbWV0YWRhdGEvYXJ0d29ya2Rvd25sb2FkLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9tZWRpYXNlc3Npb24vbWV0YWRhdGEvYXJ0d29ya2Rvd25sb2FkLmh0bWwK
QEAgLTIwLDE0ICsyMCwxNCBAQCBwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKICAgICBp
ZiAoIXdpbmRvdy5pbnRlcm5hbHMpCiAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdHMoIlRl
c3QgbmVlZHMgaW50ZXJuYWxzIik7CiAKLSAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHRlc3Qs
ICdJbnZhbGlkQWNjZXNzRXJyb3InLCBpbnRlcm5hbHMubG9hZEFydHdvcmtJbWFnZSgiYmFkX2lt
YWdlLmpwZyIpKTsKKyAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2RvbSh0ZXN0LCAnSW52YWxp
ZEFjY2Vzc0Vycm9yJywgaW50ZXJuYWxzLmxvYWRBcnR3b3JrSW1hZ2UoImJhZF9pbWFnZS5qcGci
KSk7CiB9LCAiZW5zdXJlIGxvYWRpbmcgaW52YWxpZCBhcnR3b3JrIGNhdXNlcyBhIGZhaWx1cmUi
KTsKIAogcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CiAgICAgaWYgKCF3aW5kb3cuaW50
ZXJuYWxzKQogICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3RzKCJUZXN0IG5lZWRzIGludGVy
bmFscyIpOwogCi0gICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0ZXN0LCAnSW52YWxpZEFjY2Vz
c0Vycm9yJywgaW50ZXJuYWxzLmxvYWRBcnR3b3JrSW1hZ2UoIiIpKTsKKyAgICByZXR1cm4gcHJv
bWlzZV9yZWplY3RzX2RvbSh0ZXN0LCAnSW52YWxpZEFjY2Vzc0Vycm9yJywgaW50ZXJuYWxzLmxv
YWRBcnR3b3JrSW1hZ2UoIiIpKTsKIH0sICJlbnN1cmUgbG9hZGluZyBhIG5vbi1pbWFnZSBjYXVz
ZXMgYSBmYWlsdXJlIik7CiAKICAgICAgICAgPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L21lZGlhc3RyZWFtL3NjcmVlbmNhcHR1cmUtdXNlci1nZXN0dXJlLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL3NjcmVlbmNhcHR1cmUtdXNlci1nZXN0dXJlLmh0
bWwKaW5kZXggOTU4MjY5NDc5OTA1MThlZWU2MTUxMzE0OTMzZGFiNDNiZjQ0NWEwMy4uNjdhYjBh
MWMxNjIwNDVhYzk3NDVjYzBhYWM2ZjBhZTc2ZWYzOTY0YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvZmFzdC9tZWRpYXN0cmVhbS9zY3JlZW5jYXB0dXJlLXVzZXItZ2VzdHVyZS5odG1sCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vc2NyZWVuY2FwdHVyZS11c2VyLWdlc3R1cmUu
aHRtbApAQCAtMjUsNiArMjUsNiBAQCBwcm9taXNlX3Rlc3QoKCkgPT4gewogCiAKIHByb21pc2Vf
dGVzdCgodGVzdCkgPT4gewotICAgIHJldHVybiBwcm9taXNlX3JlamVjdHModGVzdCwgIkludmFs
aWRBY2Nlc3NFcnJvciIsIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0RGlzcGxheU1lZGlhKHt2
aWRlbyA6IHRydWV9KSk7CisgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19kb20odGVzdCwgIklu
dmFsaWRBY2Nlc3NFcnJvciIsIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0RGlzcGxheU1lZGlh
KHt2aWRlbyA6IHRydWV9KSk7CiB9LCAiRGVueSBnZXREaXNwbGF5TWVkaWEgY2FsbCBpZiBubyB1
c2VyIGdlc3R1cmUiKTsKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmV0Y2gv
ZmV0Y2gtdXJsLXNlcmlhbGl6YXRpb24uaHRtbCBiL0xheW91dFRlc3RzL2ZldGNoL2ZldGNoLXVy
bC1zZXJpYWxpemF0aW9uLmh0bWwKaW5kZXggZGU3OTM2NDEwZWYxNDk3MzJhNjhlYWVjNTFiMDU0
NzU5MDM4OGM4OS4uNjQyMmJkMjA4NDc2MTI5MTQxZWQyM2M4YjI5MjdkMTZmNTZlYmExZiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmV0Y2gvZmV0Y2gtdXJsLXNlcmlhbGl6YXRpb24uaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9mZXRjaC9mZXRjaC11cmwtc2VyaWFsaXphdGlvbi5odG1sCkBAIC0x
Nyw3ICsxNyw3IEBAIGZ1bmN0aW9uIGV4ZWN1dGVUZXN0cyh1cmxzKQogICAgICAgICAgICAgdGVz
dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
YmFzZSIpLnNldEF0dHJpYnV0ZSgiaHJlZiIsIHVybC5iYXNlKTsKICAgICAgICAgICAgICAgICBp
ZiAodXJsLnVzZXJuYW1lIHx8IHVybC5wYXNzd29yZCB8fCB1cmwuZmFpbHVyZSkKLSAgICAgICAg
ICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgeyAg
bmV3IFJlcXVlc3QodXJsLmlucHV0KTsgfSk7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydF90
aHJvd3NfanMoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsgIG5ldyBSZXF1ZXN0KHVybC5pbnB1dCk7
IH0pOwogICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICB2YXIgcmVx
dWVzdCA9IG5ldyBSZXF1ZXN0KHVybC5pbnB1dCk7CiAgICAgICAgICAgICAgICAgICAgIGFzc2Vy
dF9lcXVhbHMocmVxdWVzdC51cmwsIHVybC5ocmVmKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvZmV0Y2gvZmV0Y2hpbmctc2FtZS1yZXNvdXJjZS13aXRoLWRpZmZlcmVudC1v
cHRpb25zLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ZldGNoL2ZldGNoaW5nLXNhbWUt
cmVzb3VyY2Utd2l0aC1kaWZmZXJlbnQtb3B0aW9ucy5odG1sCmluZGV4IGNjZjk1M2UxYzIzYTI5
ZWJhNDFmMDE2YzJmZDRhMDA4MTQzNTNmYTUuLjNiNGVmMmRhYzc1Y2YzNTg5MDI4ZmJlNzRmMTcx
ZmQ5NTNjYjA0ZGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvZmV0Y2gvZmV0
Y2hpbmctc2FtZS1yZXNvdXJjZS13aXRoLWRpZmZlcmVudC1vcHRpb25zLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9mZXRjaC9mZXRjaGluZy1zYW1lLXJlc291cmNlLXdpdGgtZGlm
ZmVyZW50LW9wdGlvbnMuaHRtbApAQCAtMjEsOCArMjEsOCBAQCBwcm9taXNlX3Rlc3QoZnVuY3Rp
b24odCkgewogICAgICAgICAgICAgICAgICAgICBhc3NlcnRfdHJ1ZShhcnJheUJ1ZmZlci5ieXRl
TGVuZ3RoID4gMCk7CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB9KSwKLSAgICAg
ICAgICAgIHByb21pc2VfcmVqZWN0cyh0LCBuZXcgVHlwZUVycm9yKCksIGZldGNoKHVybDEsIHsi
bW9kZSI6ICJjb3JzIiwgImNyZWRlbnRpYWxzIjogImluY2x1ZGUifSkpLAotICAgICAgICAgICAg
cHJvbWlzZV9yZWplY3RzKHQsIG5ldyBUeXBlRXJyb3IoKSwgZmV0Y2godXJsMiwgeyJtb2RlIjog
ImNvcnMiLCAiY3JlZGVudGlhbHMiOiAiaW5jbHVkZSJ9KSksCisgICAgICAgICAgICBwcm9taXNl
X3JlamVjdHNfanModCwgVHlwZUVycm9yLCBmZXRjaCh1cmwxLCB7Im1vZGUiOiAiY29ycyIsICJj
cmVkZW50aWFscyI6ICJpbmNsdWRlIn0pKSwKKyAgICAgICAgICAgIHByb21pc2VfcmVqZWN0c19q
cyh0LCBUeXBlRXJyb3IsIGZldGNoKHVybDIsIHsibW9kZSI6ICJjb3JzIiwgImNyZWRlbnRpYWxz
IjogImluY2x1ZGUifSkpLAogICAgICAgICAgICAgZmV0Y2godXJsMiwgeyJtb2RlIjogImNvcnMi
fSkudGhlbigocmVzcG9uc2UpID0+IHsKICAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJl
c3BvbnNlLnR5cGUsICJjb3JzIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmFy
cmF5QnVmZmVyKCkudGhlbigoYXJyYXlCdWZmZXIpID0+IHsKQEAgLTQ4LDkgKzQ4LDkgQEAgcHJv
bWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocmVzcG9u
c2UudHlwZSwgIm9wYXF1ZSIpOwogICAgICAgICB9KTsKICAgICB9KS50aGVuKCgpID0+IHsKLSAg
ICAgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCBuZXcgVHlwZUVycm9yKCksIGZldGNoKHVy
bDMsIHsibW9kZSI6ICJjb3JzIiwgImNyZWRlbnRpYWxzIjogImluY2x1ZGUifSkpOworICAgICAg
ICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2pzKHQsIFR5cGVFcnJvciwgZmV0Y2godXJsMywgeyJt
b2RlIjogImNvcnMiLCAiY3JlZGVudGlhbHMiOiAiaW5jbHVkZSJ9KSk7CiAgICAgfSkudGhlbigo
KSA9PiB7Ci0gICAgICAgIHJldHVybiBwcm9taXNlX3JlamVjdHModCwgbmV3IFR5cGVFcnJvcigp
LCBmZXRjaCh1cmw0LCB7Im1vZGUiOiAiY29ycyIsICJjcmVkZW50aWFscyI6ICJpbmNsdWRlIn0p
KTsKKyAgICAgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19qcyh0LCBUeXBlRXJyb3IsIGZldGNo
KHVybDQsIHsibW9kZSI6ICJjb3JzIiwgImNyZWRlbnRpYWxzIjogImluY2x1ZGUifSkpOwogICAg
IH0pLnRoZW4oKCkgPT4gewogICAgICAgICByZXR1cm4gZmV0Y2godXJsNCwgeyJtb2RlIjogIm5v
LWNvcnMifSkudGhlbigocmVzcG9uc2UpID0+IHsKICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMo
cmVzcG9uc2UudHlwZSwgIm9wYXF1ZSIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9mZXRjaC9yZWRpcmVjdG1vZGUtYW5kLXByZWxvYWQuaHRtbCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvZmV0Y2gvcmVkaXJlY3Rtb2RlLWFuZC1wcmVsb2FkLmh0bWwKaW5kZXggY2JiNjVm
ZjRmMWZiZGNmNjJhN2NlMWYzYzM1MWYzY2Y3NmQyMjM0Ny4uMzI0YmVhNTU2ZGYzZDI1ZjNmYTlj
ODc2ZDcyMDExMTlhNzMxOTgyZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9m
ZXRjaC9yZWRpcmVjdG1vZGUtYW5kLXByZWxvYWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2ZldGNoL3JlZGlyZWN0bW9kZS1hbmQtcHJlbG9hZC5odG1sCkBAIC0yNiw3ICsyNiw3
IEBAIGZ1bmN0aW9uIHN0YXJ0VGVzdHMoKQogICAgIH0sICJGZXRjaCBzaG91bGQgY2hlY2sgZm9y
IHJlZGlyZWN0aW9ucyBldmVuIGlmIHJlc291cmNlIGlzIHByZWxvYWRlZCAoZGlmZmVyZW50IGZl
dGNoIG1vZGUsIGRpZmZlcmVudCByZWRpcmVjdCBtb2RlKSIpOwogCiAgICAgcHJvbWlzZV90ZXN0
KGZ1bmN0aW9uKHRlc3QpIHsKLSAgICAgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0ZXN0LCBu
ZXcgVHlwZUVycm9yKCksIGZldGNoKHByZWxvYWRVcmwsIHtyZWRpcmVjdDogImVycm9yIiwgbW9k
ZTogImNvcnMiLCBjcmVkZW50aWFsczogImluY2x1ZGUifSkpOworICAgICAgICByZXR1cm4gcHJv
bWlzZV9yZWplY3RzX2pzKHRlc3QsIFR5cGVFcnJvciwgZmV0Y2gocHJlbG9hZFVybCwge3JlZGly
ZWN0OiAiZXJyb3IiLCBtb2RlOiAiY29ycyIsIGNyZWRlbnRpYWxzOiAiaW5jbHVkZSJ9KSk7CiAg
ICAgfSwgIkZldGNoIHNob3VsZCBjaGVjayBmb3IgcmVkaXJlY3Rpb25zIGV2ZW4gaWYgcmVzb3Vy
Y2UgaXMgcHJlbG9hZGVkIChkaWZmZXJlbnQgZmV0Y2ggbW9kZSwgZGlmZmVyZW50IHJlZGlyZWN0
IG1vZGUpIDIiKTsKIH0KICAgICA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvbmF2aWdhdGlvbi9wdXNoc3RhdGUtYXQtdW5pcXVlLW9yaWdpbi1kZW5pZWQucHkg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcHVzaHN0YXRlLWF0LXVuaXF1ZS1v
cmlnaW4tZGVuaWVkLnB5CmluZGV4IDQ3NWVmMjMwMjM5OWU3NjE2ODc2OGJiMWRiMDIxYTcwN2Mz
ZDg5ZWMuLjI4MjI1MTU0N2UzMTc2ZjJiNDQzZWEyOWNlNTQ4ZmE2NTFmNjIxMTAgMTAwNzU1Ci0t
LSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9wdXNoc3RhdGUtYXQtdW5pcXVl
LW9yaWdpbi1kZW5pZWQucHkKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9u
L3B1c2hzdGF0ZS1hdC11bmlxdWUtb3JpZ2luLWRlbmllZC5weQpAQCAtMTAsNyArMTAsNyBAQCBz
eXMuc3Rkb3V0LndyaXRlKAogICAgICc8c2NyaXB0PlxuJwogICAgICd2YXIgb3JpZ2luVVJMID0g
ZG9jdW1lbnQuVVJMO1xuJwogICAgICd0ZXN0KGZ1bmN0aW9uICgpIHtcbicKLSAgICAnICAgIGFz
c2VydF90aHJvd3MoXCdTZWN1cml0eUVycm9yXCcsIGZ1bmN0aW9uICgpIHtcbicKKyAgICAnICAg
IGFzc2VydF90aHJvd3NfZG9tKFwnU2VjdXJpdHlFcnJvclwnLCBmdW5jdGlvbiAoKSB7XG4nCiAg
ICAgJyAgICAgICAgaGlzdG9yeS5wdXNoU3RhdGUobnVsbCwgbnVsbCwgb3JpZ2luVVJMICsgIi9w
YXRoIik7XG4nCiAgICAgJyAgICB9KTtcbicKICAgICAnfSwgXCdwdXNoU3RhdGUgdG8gYSBuZXcg
cGF0aCBpbiB1bmlxdWUgb3JpZ2luIHNob3VsZCBmYWlsIHdpdGggU2VjdXJpdHlFcnJvclwnKTtc
bicKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbm90aWZpY2F0aW9ucy9ub3Rp
ZmljYXRpb24uaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbm90aWZpY2F0aW9ucy9ub3Rp
ZmljYXRpb24uaHRtbAppbmRleCAzOTE4NTkwMDA3MTEzOTVlYWRlMTUxYTc0OGJhMmJkYmI4Mjcw
OGJlLi45M2E4N2NiNDkwYzhmM2UyMGJjZWNmOWY0YTMzMTRhOWJkNzNhODFlIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25vdGlmaWNhdGlvbnMvbm90aWZpY2F0aW9uLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbi5o
dG1sCkBAIC0xMSw3ICsxMSw3IEBACiA8c2NyaXB0PgogCiB0ZXN0KGZ1bmN0aW9uKCkgewotICAg
IGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsgbmV3IE5vdGlmaWNh
dGlvbigpOyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7
IG5ldyBOb3RpZmljYXRpb24oKTsgfSk7CiB9LCAiVGhlIE5vdGlmaWNhdGlvbiBjb25zdHJ1Y3Rv
ciByZXF1aXJlcyBhdCBsZWFzdCBvbmUgYXJndW1lbnQuIik7CiAKIHRlc3QoZnVuY3Rpb24oKSB7
CkBAIC01Myw3ICs1Myw3IEBAIHRlc3QoZnVuY3Rpb24oKSB7CiAgICAgbGV0IG5vdGlmaWNhdGlv
bjMgPSBuZXcgTm90aWZpY2F0aW9uKCJ0ZXN0IHRpdGxlIiwgeyBkaXI6ICJydGwiIH0pOwogICAg
IGFzc2VydF9lcXVhbHMobm90aWZpY2F0aW9uMy5kaXIsICJydGwiKTsKIAotICAgIGFzc2VydF90
aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsgbmV3IE5vdGlmaWNhdGlvbigidGVz
dCB0aXRsZSIsIHsgZGlyOiAiZm9vIiB9KSB9KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVF
cnJvciwgZnVuY3Rpb24oKSB7IG5ldyBOb3RpZmljYXRpb24oInRlc3QgdGl0bGUiLCB7IGRpcjog
ImZvbyIgfSkgfSk7CiB9LCAiVGhlIE5vdGlmaWNhdGlvbk9wdGlvbnMgZGljdGlvbmFyeSBvbmx5
IGFjY2VwdHMgdmFsaWQgTm90aWZpY2F0aW9uRGlyZWN0aW9uIHZhbHVlcy4iKTsKIAogPC9zY3Jp
cHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3Bh
eW1lbnQtYWRkcmVzcy1hdHRyaWJ1dGVzLWFuZC10b0pTT04tbWV0aG9kLmh0dHBzLmh0bWwgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtYWRkcmVzcy1hdHRy
aWJ1dGVzLWFuZC10b0pTT04tbWV0aG9kLmh0dHBzLmh0bWwKaW5kZXggYzYwMzliNTMwY2VmNzJm
ZThiMWVjYWQ5NWVhM2UyYTc0ZmIzMzViZC4uYTQ2ZjliMjBjOGE2Mzc2OTIxNTk1ZTVhNTNkM2M1
MjBjYzI0ODk2NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVx
dWVzdC9wYXltZW50LWFkZHJlc3MtYXR0cmlidXRlcy1hbmQtdG9KU09OLW1ldGhvZC5odHRwcy5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1h
ZGRyZXNzLWF0dHJpYnV0ZXMtYW5kLXRvSlNPTi1tZXRob2QuaHR0cHMuaHRtbApAQCAtMzEsOCAr
MzEsOCBAQCBmdW5jdGlvbiBydW5UZXN0KGJ1dHRvbiwgZXhwZWN0ZWQgPSB7fSkgewogICAgICAg
YWRkci5hZGRyZXNzTGluZSBpbnN0YW5jZW9mIEFycmF5LAogICAgICAgIkV4cGVjdGVkIGFkZHJl
c3NMaW5lIHRvIGJlIGFuIGFycmF5IgogICAgICk7Ci0gICAgYXNzZXJ0X3Rocm93cygKLSAgICAg
IG5ldyBUeXBlRXJyb3IoKSwKKyAgICBhc3NlcnRfdGhyb3dzX2pzKAorICAgICAgVHlwZUVycm9y
LAogICAgICAgKCkgPT4gewogICAgICAgICBhZGRyLmFkZHJlc3NMaW5lLnB1c2goInRoaXMgbXVz
dCB0aHJvdyIpOwogICAgICAgfSwKQEAgLTU5LDggKzU5LDggQEAgZnVuY3Rpb24gcnVuVGVzdChi
dXR0b24sIGV4cGVjdGVkID0ge30pIHsKICAgICB9CiAgICAgYXNzZXJ0X2VxdWFscyhqc29uQWRk
cmVzc0VudHJpZXMubGVuZ3RoLCBleHBlY3RlZEVudHJpZXMubGVuZ3RoKTsKICAgICAvLyBDaGVj
ayB0aGF0IC50b0pTT04oKSBjcmVhdGVkIGEgZnJvemVuIGFycmF5Ci0gICAgYXNzZXJ0X3Rocm93
cygKLSAgICAgIG5ldyBUeXBlRXJyb3IoKSwKKyAgICBhc3NlcnRfdGhyb3dzX2pzKAorICAgICAg
VHlwZUVycm9yLAogICAgICAgKCkgPT4gewogICAgICAgICBqc29uQWRkcmVzcy5hZGRyZXNzTGlu
ZS5wdXNoKCJ0aGlzIG11c3QgdGhyb3ciKTsKICAgICAgIH0sCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtaXMtc2hvd2luZy5odHRwcy5o
dG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LWlzLXNo
b3dpbmcuaHR0cHMuaHRtbAppbmRleCBhODRiOGEyNGRiN2YzZGE2YzIyY2FlMGYyNzI5MTZjYzhm
YjBmOTNlLi42ZDM5ZGM0NGZkMTBhNjhiNmYyYTUxYmZiZWU1YjFiNmVmODg4YzY0IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtaXMtc2hv
d2luZy5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVl
c3QvcGF5bWVudC1pcy1zaG93aW5nLmh0dHBzLmh0bWwKQEAgLTgxLDcgKzgxLDcgQEAKICAgICAg
ICAgICByZXR1cm4gW3JlcXVlc3QyLnNob3coKV0KICAgICAgICAgfQogICAgICAgKTsKLSAgICAg
IGF3YWl0IHByb21pc2VfcmVqZWN0cygKKyAgICAgIGF3YWl0IHByb21pc2VfcmVqZWN0c19kb20o
CiAgICAgICAgIHQsCiAgICAgICAgICdBYm9ydEVycm9yJywKICAgICAgICAgc2hvd1Byb21pc2Uy
LApAQCAtODksNyArODksNyBAQAogICAgICAgKTsKIAogICAgICAgYXdhaXQgcmVxdWVzdDEuYWJv
cnQoKTsKLSAgICAgIGF3YWl0IHByb21pc2VfcmVqZWN0cygKKyAgICAgIGF3YWl0IHByb21pc2Vf
cmVqZWN0c19kb20oCiAgICAgICAgIHQsCiAgICAgICAgICdBYm9ydEVycm9yJywKICAgICAgICAg
c2hvd1Byb21pc2UxLApAQCAtMTAwLDcgKzEwMCw3IEBACiAgICAgICAvLyBpdCB3aWxsIGFnYWlu
IHJlc3VsdCBpbiBwcm9taXNlIHJlamVjdGVkIHdpdGggYW4gSW52YWxpZFN0YXRlRXJyb3IuCiAg
ICAgICAvLyBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS93M2MvcGF5bWVudC1yZXF1ZXN0L3B1bGwv
ODIxCiAgICAgICBjb25zdCBbcmVqZWN0ZWRQcm9taXNlXSA9IGF3YWl0IGFjdGl2YXRlVGhlbihh
c3luYyAoKSA9PiB7IHJldHVybiBbcmVxdWVzdDIuc2hvdygpXSB9KTsKLSAgICAgIGF3YWl0IHBy
b21pc2VfcmVqZWN0cygKKyAgICAgIGF3YWl0IHByb21pc2VfcmVqZWN0c19kb20oCiAgICAgICAg
IHQsCiAgICAgICAgICdJbnZhbGlkU3RhdGVFcnJvcicsCiAgICAgICAgIHJlamVjdGVkUHJvbWlz
ZSwKQEAgLTEzNyw3ICsxMzcsNyBAQAogICAgICAgICB9CiAgICAgICApOwogCi0gICAgICBhd2Fp
dCBwcm9taXNlX3JlamVjdHMoCisgICAgICBhd2FpdCBwcm9taXNlX3JlamVjdHNfZG9tKAogICAg
ICAgICB0LAogICAgICAgICAnQWJvcnRFcnJvcicsCiAgICAgICAgIHdpbmRvd1Nob3dQcm9taXNl
LApAQCAtMTQ2LDkgKzE0NiwxMCBAQAogCiAgICAgICAvLyBDbGVhbnVwCiAgICAgICBhd2FpdCBp
ZnJhbWVSZXF1ZXN0LmFib3J0KCk7Ci0gICAgICBhd2FpdCBwcm9taXNlX3JlamVjdHMoCisgICAg
ICBhd2FpdCBwcm9taXNlX3JlamVjdHNfZG9tKAogICAgICAgICB0LAogICAgICAgICAnQWJvcnRF
cnJvcicsCisgICAgICAgIGlmcmFtZVdpbmRvdy5ET01FeGNlcHRpb24sCiAgICAgICAgIGlmcmFt
ZVNob3dQcm9taXNlLAogICAgICAgICAnYWJvcnQoKSB3YXMgY2FsbGVkJyk7CiAgICAgICBpZnJh
bWUucmVtb3ZlKCk7CkBAIC0xNzcsMTYgKzE3OCwxNyBAQAogICAgICAgICB9CiAgICAgICApOwog
Ci0gICAgICBhd2FpdCBwcm9taXNlX3JlamVjdHMoCisgICAgICBhd2FpdCBwcm9taXNlX3JlamVj
dHNfZG9tKAogICAgICAgICB0LAogICAgICAgICAnQWJvcnRFcnJvcicsCisgICAgICAgIGlmcmFt
ZVdpbmRvdy5ET01FeGNlcHRpb24sCiAgICAgICAgIGlmcmFtZVNob3dQcm9taXNlLAogICAgICAg
ICAnVGhlIHRvcCB3aW5kb3cgaXMgYWxyZWFkeSBzaG93aW5nIGEgcGF5bWVudCByZXF1ZXN0Lics
CiAgICAgICApOwogCiAgICAgICAvLyBDbGVhbnVwCiAgICAgICBhd2FpdCB3aW5kb3dSZXF1ZXN0
LmFib3J0KCk7Ci0gICAgICBhd2FpdCBwcm9taXNlX3JlamVjdHMoCisgICAgICBhd2FpdCBwcm9t
aXNlX3JlamVjdHNfZG9tKAogICAgICAgICB0LAogICAgICAgICAnQWJvcnRFcnJvcicsCiAgICAg
ICAgIHdpbmRvd1Nob3dQcm9taXNlLApAQCAtMjE3LDE1ICsyMTksMTYgQEAKICAgICAgICAgfQog
ICAgICAgKTsKIAotICAgICAgYXdhaXQgcHJvbWlzZV9yZWplY3RzKAorICAgICAgYXdhaXQgcHJv
bWlzZV9yZWplY3RzX2RvbSgKICAgICAgICAgdCwKICAgICAgICAgJ0Fib3J0RXJyb3InLAorICAg
ICAgICBpZnJhbWVXaW5kb3cuRE9NRXhjZXB0aW9uLAogICAgICAgICBpZnJhbWVTaG93UHJvbWlz
ZSwKICAgICAgICAgJ0V4cGVjdGVkIGlmcmFtZVNob3dQcm9taXNlIHRvIHJlamVjdCwgcmVxdWVz
dCBpcyBhbHJlYWR5IHNob3dpbmcuJywKICAgICAgICk7CiAKICAgICAgIGF3YWl0IHdpbmRvd1Jl
cXVlc3QuYWJvcnQoKTsKLSAgICAgIGF3YWl0IHByb21pc2VfcmVqZWN0cygKKyAgICAgIGF3YWl0
IHByb21pc2VfcmVqZWN0c19kb20oCiAgICAgICAgIHQsCiAgICAgICAgICdBYm9ydEVycm9yJywK
ICAgICAgICAgd2luZG93U2hvd1Byb21pc2UsCkBAIC0yNTYsNyArMjU5LDcgQEAKICAgICAgICk7
CiAKICAgICAgIC8vIHdpbmRvd1Nob3dQcm9taXNlIGFuZCBpZnJhbWVSZXF1ZXN0IHdpbGwgYm90
aCByZWplY3QKLSAgICAgIGF3YWl0IHByb21pc2VfcmVqZWN0cygKKyAgICAgIGF3YWl0IHByb21p
c2VfcmVqZWN0c19kb20oCiAgICAgICAgIHQsCiAgICAgICAgICdBYm9ydEVycm9yJywKICAgICAg
ICAgd2luZG93U2hvd1Byb21pc2UsCkBAIC0yNjQsOSArMjY3LDEwIEBACiAgICAgICApOwogCiAg
ICAgICBhd2FpdCBpZnJhbWVSZXF1ZXN0LmFib3J0KCk7Ci0gICAgICBhd2FpdCBwcm9taXNlX3Jl
amVjdHMoCisgICAgICBhd2FpdCBwcm9taXNlX3JlamVjdHNfZG9tKAogICAgICAgICB0LAogICAg
ICAgICAnQWJvcnRFcnJvcicsCisgICAgICAgIGlmcmFtZVdpbmRvdy5ET01FeGNlcHRpb24sCiAg
ICAgICAgIGlmcmFtZVNob3dQcm9taXNlLAogICAgICAgICAnYWJvcnQoKSB3YXMgY2FsbGVkJyk7
CiAgICAgICBpZnJhbWUucmVtb3ZlKCk7CkBAIC0yODQsMTkgKzI4OCwxNCBAQAogICAgICAgLy8g
YW5kIHRoZSByZXF1ZXN0IGlzIHNob3dpbmcgYm9vbGVhbiB0byBiZWNvbWUgZmFsc2UuCiAgICAg
ICBpZnJhbWUuc3JjID0gJ3Jlc291cmNlcy9ibGFuay5odG1sP2FiYz0xMjMnOwogICAgICAgYXdh
aXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiAoaWZyYW1lLm9ubG9hZCA9IHJlc29sdmUpKTsKLSAg
ICAgIGF3YWl0IHByb21pc2VfcmVqZWN0cygKLSAgICAgICAgdCwKLSAgICAgICAgJ0Fib3J0RXJy
b3InLAotICAgICAgICBpZnJhbWVTaG93UHJvbWlzZSwKLSAgICAgICAgJ05hdmlnYXRpbmcgaWZy
YW1lIGF3YXkgbXVzdCBjYXVzZSB0aGUgaWZyYW1lU2hvd1Byb21pc2UgdG8gcmVqZWN0LicsCi0g
ICAgICApOworCiAgICAgICBpZnJhbWUucmVtb3ZlKCk7CiAKICAgICAgIC8vIE5vdyB3ZSBzaG91
bGQgYmUgb2sgdG8gc3BpbiB1cCBhIG5ldyBwYXltZW50IHJlcXVlc3QKICAgICAgIGNvbnN0IHJl
cXVlc3QgPSBuZXcgd2luZG93LlBheW1lbnRSZXF1ZXN0KG1ldGhvZHMsIGRldGFpbHMpOwogICAg
ICAgY29uc3QgW3Nob3dQcm9taXNlXSA9IGF3YWl0IGFjdGl2YXRlVGhlbihhc3luYyAoKSA9PiB7
IHJldHVybiBbcmVxdWVzdC5zaG93KCldIH0pOwogICAgICAgYXdhaXQgcmVxdWVzdC5hYm9ydCgp
OwotICAgICAgYXdhaXQgcHJvbWlzZV9yZWplY3RzKAorICAgICAgYXdhaXQgcHJvbWlzZV9yZWpl
Y3RzX2RvbSgKICAgICAgICAgdCwKICAgICAgICAgJ0Fib3J0RXJyb3InLAogICAgICAgICBzaG93
UHJvbWlzZSwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVl
c3QvcGF5bWVudC1yZXF1ZXN0LWFib3J0LW1ldGhvZC5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LXJlcXVlc3QtYWJvcnQtbWV0aG9kLmh0
dHBzLmh0bWwKaW5kZXggYjRhNzM0MTFkN2U0N2IzY2U2NjRmMzliNDRhN2RmOGQ1YTRkYWQ2Yy4u
OTk4NjZlMzhiYTY4ZjA5MzYxZDg5MmQ1NGM1NGQwZThjZTU1Y2UyZCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LXJlcXVlc3QtYWJvcnQt
bWV0aG9kLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVx
dWVzdC9wYXltZW50LXJlcXVlc3QtYWJvcnQtbWV0aG9kLmh0dHBzLmh0bWwKQEAgLTQxLDE1ICs0
MSwxNSBAQCBjb25zdCBkZWZhdWx0RGV0YWlscyA9IE9iamVjdC5mcmVlemUoewogcHJvbWlzZV90
ZXN0KGFzeW5jIHQgPT4gewogICAvLyByZXF1ZXN0IGlzIGluICJjcmVhdGVkIiBzdGF0ZQogICBj
b25zdCByZXF1ZXN0ID0gbmV3IFBheW1lbnRSZXF1ZXN0KGRlZmF1bHRNZXRob2RzLCBkZWZhdWx0
RGV0YWlscyk7Ci0gIGF3YWl0IHByb21pc2VfcmVqZWN0cyh0LCAiSW52YWxpZFN0YXRlRXJyb3Ii
LCByZXF1ZXN0LmFib3J0KCkpOworICBhd2FpdCBwcm9taXNlX3JlamVjdHNfZG9tKHQsICJJbnZh
bGlkU3RhdGVFcnJvciIsIHJlcXVlc3QuYWJvcnQoKSk7CiB9LCBgVGhyb3dzIGlmIHRoZSBwcm9t
aXNlIFtbc3RhdGVdXSBpcyBub3QgImludGVyYWN0aXZlImApOwogCiBwcm9taXNlX3Rlc3QoYXN5
bmMgdCA9PiB7CiAgIC8vIHJlcXVlc3QgaXMgaW4gImNyZWF0ZWQiIHN0YXRlLgogICBjb25zdCBy
ZXF1ZXN0ID0gbmV3IFBheW1lbnRSZXF1ZXN0KGRlZmF1bHRNZXRob2RzLCBkZWZhdWx0RGV0YWls
cyk7Ci0gIGF3YWl0IHByb21pc2VfcmVqZWN0cyh0LCAiSW52YWxpZFN0YXRlRXJyb3IiLCByZXF1
ZXN0LmFib3J0KCkpOworICBhd2FpdCBwcm9taXNlX3JlamVjdHNfZG9tKHQsICJJbnZhbGlkU3Rh
dGVFcnJvciIsIHJlcXVlc3QuYWJvcnQoKSk7CiAgIC8vIENhbGwgaXQgYWdhaW4sIGZvciBnb29k
IG1lYXN1cmUuCi0gIGF3YWl0IHByb21pc2VfcmVqZWN0cyh0LCAiSW52YWxpZFN0YXRlRXJyb3Ii
LCByZXF1ZXN0LmFib3J0KCkpOworICBhd2FpdCBwcm9taXNlX3JlamVjdHNfZG9tKHQsICJJbnZh
bGlkU3RhdGVFcnJvciIsIHJlcXVlc3QuYWJvcnQoKSk7CiAgIC8vIFRoZSByZXF1ZXN0J3Mgc3Rh
dGUgaXMgImNyZWF0ZWQiLCBzbyBsZXQncyBzaG93IGl0CiAgIC8vIHdoaWNoIGNoYW5nZXMgdGhl
IHN0YXRlIHRvICJpbnRlcmFjdGl2ZS4iLgogICBhd2FpdCBhY3RpdmF0ZVRoZW4oYXN5bmMgKCkg
PT4gewpAQCAtNjIsNyArNjIsNyBAQCBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CiAgICAgfSAK
ICAgfSk7CiAgIC8vIFRoZSByZXF1ZXN0IGlzIG5vdyAiY2xvc2VkIiwgc28uLi4KLSAgYXdhaXQg
cHJvbWlzZV9yZWplY3RzKHQsICJJbnZhbGlkU3RhdGVFcnJvciIsIHJlcXVlc3QuYWJvcnQoKSk7
CisgIGF3YWl0IHByb21pc2VfcmVqZWN0c19kb20odCwgIkludmFsaWRTdGF0ZUVycm9yIiwgcmVx
dWVzdC5hYm9ydCgpKTsKIH0sIGBDYWxsaW5nIGFib3J0IG11c3Qgbm90IGNoYW5nZSB0aGUgW1tz
dGF0ZV1dIHVudGlsIGFmdGVyICJpbnRlcmFjdGl2ZSJgKTsKIAogdXNlcl9hY3RpdmF0aW9uX3Rl
c3QoYXN5bmMgdCA9PiB7CkBAIC03MywxMCArNzMsMTAgQEAgdXNlcl9hY3RpdmF0aW9uX3Rlc3Qo
YXN5bmMgdCA9PiB7CiAgIH0gY2F0Y2ggKGVycikgewogICAgIGFzc2VydF90cnVlKGZhbHNlLCAi
VW5leHBlY3RlZCBwcm9taXNlIHJlamVjdGlvbjogIiArIGVyci5tZXNzYWdlKTsKICAgfQotICBh
d2FpdCBwcm9taXNlX3JlamVjdHModCwgIkFib3J0RXJyb3IiLCBhY2NlcHRQcm9taXNlKTsKKyAg
YXdhaXQgcHJvbWlzZV9yZWplY3RzX2RvbSh0LCAiQWJvcnRFcnJvciIsIGFjY2VwdFByb21pc2Up
OwogICAvLyBBcyByZXF1ZXN0IGlzIG5vdyAiY2xvc2VkIiwgdHJ5aW5nIHRvIHNob3cgaXQgd2ls
bCBmYWlsCiAgIGF3YWl0IGFjdGl2YXRlVGhlbihhc3luYyAoKSA9PiB7Ci0gICAgYXdhaXQgcHJv
bWlzZV9yZWplY3RzKHQsICJJbnZhbGlkU3RhdGVFcnJvciIsIHJlcXVlc3Quc2hvdygpKTsKKyAg
ICBhd2FpdCBwcm9taXNlX3JlamVjdHNfZG9tKHQsICJJbnZhbGlkU3RhdGVFcnJvciIsIHJlcXVl
c3Quc2hvdygpKTsKICAgfSk7CiB9LCAiY2FsbGluZyAuYWJvcnQoKSBjYXVzZXMgYWNjZXB0UHJv
bWlzZSB0byByZWplY3QgYW5kIGNsb3NlcyB0aGUgcmVxdWVzdC4iKTsKIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LXJlcXVlc3QtY2Fu
bWFrZXBheW1lbnQtbWV0aG9kLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Bh
eW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVxdWVzdC1jYW5tYWtlcGF5bWVudC1tZXRob2QuaHR0cHMu
aHRtbAppbmRleCA0MzI3N2VhZTc1Y2MyZmU4ZGE2M2VjMmNmNDg3YjQyZWUwZjE2Y2UxLi5mMWZi
MjViZDBjYjc2MTU1OTVkZWM2MDI3ZDIzOTc5YmQxMjY2YWMzIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVxdWVzdC1jYW5tYWtlcGF5
bWVudC1tZXRob2QuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1l
bnRyZXF1ZXN0L3BheW1lbnQtcmVxdWVzdC1jYW5tYWtlcGF5bWVudC1tZXRob2QuaHR0cHMuaHRt
bApAQCAtNDQsMTMgKzQ0LDEzIEBAIHVzZXJfYWN0aXZhdGlvbl90ZXN0KGFzeW5jIHQgPT4gewog
ICAgICAgYGNhbk1ha2VQYXltZW50UHJvbWlzZSBzaG91bGQgaGF2ZSB0aHJvd24gSW52YWxpZFN0
YXRlRXJyb3JgCiAgICAgKTsKICAgfSBjYXRjaCAoZXJyKSB7Ci0gICAgYXdhaXQgcHJvbWlzZV9y
ZWplY3RzKHQsICJJbnZhbGlkU3RhdGVFcnJvciIsIGNhbk1ha2VQYXltZW50UHJvbWlzZSk7Cisg
ICAgYXdhaXQgcHJvbWlzZV9yZWplY3RzX2RvbSh0LCAiSW52YWxpZFN0YXRlRXJyb3IiLCBjYW5N
YWtlUGF5bWVudFByb21pc2UpOwogICB9IGZpbmFsbHkgewogICAgIGF3YWl0IHJlcXVlc3QuYWJv
cnQoKTsKLSAgICBhd2FpdCBwcm9taXNlX3JlamVjdHModCwgIkFib3J0RXJyb3IiLCBhY2NlcHRQ
cm9taXNlKTsKKyAgICBhd2FpdCBwcm9taXNlX3JlamVjdHNfZG9tKHQsICJBYm9ydEVycm9yIiwg
YWNjZXB0UHJvbWlzZSk7CiAgIH0KICAgLy8gVGhlIHN0YXRlIHNob3VsZCBiZSAiY2xvc2VkIgot
ICBhd2FpdCBwcm9taXNlX3JlamVjdHModCwgIkludmFsaWRTdGF0ZUVycm9yIiwgcmVxdWVzdC5j
YW5NYWtlUGF5bWVudCgpKTsKKyAgYXdhaXQgcHJvbWlzZV9yZWplY3RzX2RvbSh0LCAiSW52YWxp
ZFN0YXRlRXJyb3IiLCByZXF1ZXN0LmNhbk1ha2VQYXltZW50KCkpOwogfSwgJ0lmIHJlcXVlc3Qu
W1tzdGF0ZV1dIGlzICJpbnRlcmFjdGl2ZSIsIHRoZW4gcmV0dXJuIGEgcHJvbWlzZSByZWplY3Rl
ZCB3aXRoIGFuICJJbnZhbGlkU3RhdGVFcnJvciIgRE9NRXhjZXB0aW9uLicpOwogCiAvLyBGSVhN
RTogVGhpcyBjYW4gYmUgcmVtb3ZlZCBpbiBmYXZvciBvZiB0aGUgdGVzdCBpbiBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3BheW1lbnQtcmVxdWVzdCBvbmNlIHdlIHN1cHBvcnQgdGVz
dF9kcml2ZXIuYmxlc3MoKS4KQEAgLTU5LDcgKzU5LDcgQEAgdXNlcl9hY3RpdmF0aW9uX3Rlc3Qo
YXN5bmMgdCA9PiB7CiAgIGNvbnN0IGFjY2VwdFByb21pc2UgPSByZXF1ZXN0LnNob3coKTsgLy8g
U2V0cyBzdGF0ZSB0byAiaW50ZXJhY3RpdmUiCiAgIGFjY2VwdFByb21pc2UuY2F0Y2goKCkgPT4g
e30pOyAvLyBuby1vcCwganVzdCB0byBzaWxlbmNlIHVuaGFuZGxlZCByZWplY3Rpb24gaW4gZGV2
dG9vbHMuCiAgIGF3YWl0IHJlcXVlc3QuYWJvcnQoKTsgLy8gVGhlIHN0YXRlIGlzIG5vdyAiY2xv
c2VkIgotICBhd2FpdCBwcm9taXNlX3JlamVjdHModCwgIkludmFsaWRTdGF0ZUVycm9yIiwgcmVx
dWVzdC5jYW5NYWtlUGF5bWVudCgpKTsKKyAgYXdhaXQgcHJvbWlzZV9yZWplY3RzX2RvbSh0LCAi
SW52YWxpZFN0YXRlRXJyb3IiLCByZXF1ZXN0LmNhbk1ha2VQYXltZW50KCkpOwogICB0cnkgewog
ICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlcXVlc3QuY2FuTWFrZVBheW1lbnQoKTsKICAgICBh
c3NlcnRfdHJ1ZSgKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJl
cXVlc3QvcGF5bWVudC1yZXF1ZXN0LW1lcmNoYW50LXZhbGlkYXRpb24uaHR0cHMuaHRtbCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1yZXF1ZXN0LW1lcmNo
YW50LXZhbGlkYXRpb24uaHR0cHMuaHRtbAppbmRleCBiMDBhZWQzZmNhMzEyNzE2NzE0MDRjYzYw
NDFjODQ5OGQxN2FmOTYxLi42M2Q2NTk5Y2FiMzNmYjQxMTdkZmQ1ODJkMjUxMDY1MzAwOTg5MDM4
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1l
bnQtcmVxdWVzdC1tZXJjaGFudC12YWxpZGF0aW9uLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LXJlcXVlc3QtbWVyY2hhbnQtdmFs
aWRhdGlvbi5odHRwcy5odG1sCkBAIC0zNiwxMCArMzYsMTAgQEAgdXNlcl9hY3RpdmF0aW9uX3Rl
c3QoYXN5bmMgdCA9PiB7CiAgICAgcmVxdWVzdC5vbm1lcmNoYW50dmFsaWRhdGlvbiA9IGV2ZW50
ID0+IHsKICAgICAgICAgYXNzZXJ0X2VxdWFscyhldmVudC52YWxpZGF0aW9uVVJMLCAiaHR0cHM6
Ly93ZWJraXQub3JnLyIpOwogICAgICAgICBldmVudC5jb21wbGV0ZSh7IH0pOwotICAgICAgICBh
c3NlcnRfdGhyb3dzKCJJbnZhbGlkU3RhdGVFcnJvciIsICgpID0+IGV2ZW50LmNvbXBsZXRlKHsg
fSkpOworICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiSW52YWxpZFN0YXRlRXJyb3IiLCAoKSA9
PiBldmVudC5jb21wbGV0ZSh7IH0pKTsKICAgICAgICAgcmVxdWVzdC5hYm9ydCgpOwogICAgIH07
Ci0gICAgYXdhaXQgcHJvbWlzZV9yZWplY3RzKHQsICJBYm9ydEVycm9yIiwgcmVxdWVzdC5zaG93
KCkpOworICAgIGF3YWl0IHByb21pc2VfcmVqZWN0c19kb20odCwgIkFib3J0RXJyb3IiLCByZXF1
ZXN0LnNob3coKSk7CiB9LCAiQ2FsbGluZyBjb21wbGV0ZSgpIHR3aWNlIHRocm93cyBhbiBJbnZh
bGlkU3RhdGVFcnJvci4iKTsKIAogdXNlcl9hY3RpdmF0aW9uX3Rlc3QoYXN5bmMgdCA9PiB7CkBA
IC01MCw5ICs1MCw5IEBAIHVzZXJfYWN0aXZhdGlvbl90ZXN0KGFzeW5jIHQgPT4gewogICAgIHJl
cXVlc3Qub25tZXJjaGFudHZhbGlkYXRpb24gPSBldmVudCA9PiB7CiAgICAgICAgIGFzc2VydF9l
cXVhbHMoZXZlbnQudmFsaWRhdGlvblVSTCwgImh0dHBzOi8vd2Via2l0Lm9yZy8iKTsKICAgICAg
ICAgcmVxdWVzdC5hYm9ydCgpOwotICAgICAgICBhc3NlcnRfdGhyb3dzKCJJbnZhbGlkU3RhdGVF
cnJvciIsICgpID0+IGV2ZW50LmNvbXBsZXRlKHsgfSkpOworICAgICAgICBhc3NlcnRfdGhyb3dz
X2RvbSgiSW52YWxpZFN0YXRlRXJyb3IiLCAoKSA9PiBldmVudC5jb21wbGV0ZSh7IH0pKTsKICAg
ICB9OwotICAgIGF3YWl0IHByb21pc2VfcmVqZWN0cyh0LCAiQWJvcnRFcnJvciIsIHJlcXVlc3Qu
c2hvdygpKTsKKyAgICBhd2FpdCBwcm9taXNlX3JlamVjdHNfZG9tKHQsICJBYm9ydEVycm9yIiwg
cmVxdWVzdC5zaG93KCkpOwogfSwgIkNhbGxpbmcgY29tcGxldGUoKSBhZnRlciBhYm9ydCgpIHRo
cm93cyBhbiBJbnZhbGlkU3RhdGVFcnJvci4iKTsKIAogdXNlcl9hY3RpdmF0aW9uX3Rlc3QoYXN5
bmMgdCA9PiB7CkBAIC02NCw3ICs2NCw3IEBAIHVzZXJfYWN0aXZhdGlvbl90ZXN0KGFzeW5jIHQg
PT4gewogICAgICAgICBhc3NlcnRfZXF1YWxzKGV2ZW50LnZhbGlkYXRpb25VUkwsICJodHRwczov
L3dlYmtpdC5vcmcvIik7CiAgICAgICAgIGV2ZW50LmNvbXBsZXRlKG5ldyBQcm9taXNlKChyZXNv
bHZlLCByZWplY3QpID0+IHJlamVjdCgpKSk7CiAgICAgfTsKLSAgICBhd2FpdCBwcm9taXNlX3Jl
amVjdHModCwgIkFib3J0RXJyb3IiLCByZXF1ZXN0LnNob3coKSk7CisgICAgYXdhaXQgcHJvbWlz
ZV9yZWplY3RzX2RvbSh0LCAiQWJvcnRFcnJvciIsIHJlcXVlc3Quc2hvdygpKTsKIH0sICJDYWxs
aW5nIGNvbXBsZXRlKCkgd2l0aCBhIHByb21pc2UgdGhhdCBpcyByZWplY3RlZCBhYm9ydHMgdGhl
IHJlcXVlc3QuIik7CiAKIHVzZXJfYWN0aXZhdGlvbl90ZXN0KGFzeW5jIHQgPT4gewpAQCAtNzYs
NyArNzYsNyBAQCB1c2VyX2FjdGl2YXRpb25fdGVzdChhc3luYyB0ID0+IHsKICAgICAgICAgYXNz
ZXJ0X2VxdWFscyhldmVudC52YWxpZGF0aW9uVVJMLCAiaHR0cHM6Ly93ZWJraXQub3JnLyIpOwog
ICAgICAgICBldmVudC5jb21wbGV0ZShuZXcgUHJvbWlzZShyZXNvbHZlID0+IHJlc29sdmUoNykp
KTsKICAgICB9OwotICAgIGF3YWl0IHByb21pc2VfcmVqZWN0cyh0LCBuZXcgVHlwZUVycm9yKCks
IHJlcXVlc3Quc2hvdygpKTsKKyAgICBhd2FpdCBwcm9taXNlX3JlamVjdHNfanModCwgVHlwZUVy
cm9yLCByZXF1ZXN0LnNob3coKSk7CiB9LCAiQ2FsbGluZyBjb21wbGV0ZSgpIHdpdGggYSBudW1i
ZXIgYWJvcnRzIHRoZSByZXF1ZXN0IHdpdGggYSBUeXBlRXJyb3IuIik7CiAKIHVzZXJfYWN0aXZh
dGlvbl90ZXN0KGFzeW5jIHQgPT4gewpAQCAtODgsNyArODgsNyBAQCB1c2VyX2FjdGl2YXRpb25f
dGVzdChhc3luYyB0ID0+IHsKICAgICAgICAgYXNzZXJ0X2VxdWFscyhldmVudC52YWxpZGF0aW9u
VVJMLCAiaHR0cHM6Ly93ZWJraXQub3JnLyIpOwogICAgICAgICBldmVudC5jb21wbGV0ZShuZXcg
UHJvbWlzZShyZXNvbHZlID0+IHJlc29sdmUodW5kZWZpbmVkKSkpOwogICAgIH07Ci0gICAgYXdh
aXQgcHJvbWlzZV9yZWplY3RzKHQsIG5ldyBUeXBlRXJyb3IoKSwgcmVxdWVzdC5zaG93KCkpOwor
ICAgIGF3YWl0IHByb21pc2VfcmVqZWN0c19qcyh0LCBUeXBlRXJyb3IsIHJlcXVlc3Quc2hvdygp
KTsKIH0sICJDYWxsaW5nIGNvbXBsZXRlKCkgd2l0aCB1bmRlZmluZWQgYWJvcnRzIHRoZSByZXF1
ZXN0IHdpdGggYSBUeXBlRXJyb3IuIik7CiAKIHVzZXJfYWN0aXZhdGlvbl90ZXN0KGFzeW5jIHQg
PT4gewpAQCAtMTAwLDcgKzEwMCw3IEBAIHVzZXJfYWN0aXZhdGlvbl90ZXN0KGFzeW5jIHQgPT4g
ewogICAgICAgICBhc3NlcnRfZXF1YWxzKGV2ZW50LnZhbGlkYXRpb25VUkwsICJodHRwczovL3dl
YmtpdC5vcmcvIik7CiAgICAgICAgIGV2ZW50LmNvbXBsZXRlKG5ldyBQcm9taXNlKHJlc29sdmUg
PT4gcmVzb2x2ZShudWxsKSkpOwogICAgIH07Ci0gICAgYXdhaXQgcHJvbWlzZV9yZWplY3RzKHQs
IG5ldyBUeXBlRXJyb3IoKSwgcmVxdWVzdC5zaG93KCkpOworICAgIGF3YWl0IHByb21pc2VfcmVq
ZWN0c19qcyh0LCBUeXBlRXJyb3IsIHJlcXVlc3Quc2hvdygpKTsKIH0sICJDYWxsaW5nIGNvbXBs
ZXRlKCkgd2l0aCBudWxsIGFib3J0cyB0aGUgcmVxdWVzdCB3aXRoIGEgVHlwZUVycm9yLiIpOwog
CiB1c2VyX2FjdGl2YXRpb25fdGVzdChhc3luYyB0ID0+IHsKQEAgLTExMiw3ICsxMTIsNyBAQCB1
c2VyX2FjdGl2YXRpb25fdGVzdChhc3luYyB0ID0+IHsKICAgICAgICAgYXNzZXJ0X2VxdWFscyhl
dmVudC52YWxpZGF0aW9uVVJMLCAiaHR0cHM6Ly93ZWJraXQub3JnLyIpOwogICAgICAgICBldmVu
dC5jb21wbGV0ZShuZXcgUHJvbWlzZShyZXNvbHZlID0+IHJlc29sdmUoIiIpKSk7CiAgICAgfTsK
LSAgICBhd2FpdCBwcm9taXNlX3JlamVjdHModCwgbmV3IFR5cGVFcnJvcigpLCByZXF1ZXN0LnNo
b3coKSk7CisgICAgYXdhaXQgcHJvbWlzZV9yZWplY3RzX2pzKHQsIFR5cGVFcnJvciwgcmVxdWVz
dC5zaG93KCkpOwogfSwgIkNhbGxpbmcgY29tcGxldGUoKSB3aXRoIGEgc3RyaW5nIGFib3J0cyB0
aGUgcmVxdWVzdCB3aXRoIGEgVHlwZUVycm9yLiIpOwogCiB1c2VyX2FjdGl2YXRpb25fdGVzdChh
c3luYyB0ID0+IHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJl
cXVlc3QvcGF5bWVudC1yZXF1ZXN0LXNob3ctbWV0aG9kLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVxdWVzdC1zaG93LW1ldGhvZC5o
dHRwcy5odG1sCmluZGV4IDQzMmEwOWZlNGM2ODM4NDFiZDhhYTVhYTM5MTkwMDU0NDQyMDZjYTUu
LjhmZDc4ODRlNTA4MGM3MWQwYzc1NTI1ZDk4ZWFkNDQ5MmRiMmM0ZDcgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1yZXF1ZXN0LXNob3ct
bWV0aG9kLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVx
dWVzdC9wYXltZW50LXJlcXVlc3Qtc2hvdy1tZXRob2QuaHR0cHMuaHRtbApAQCAtNDYsOSArNDYs
OSBAQCB0ZXN0KCgpID0+IHsKIHVzZXJfYWN0aXZhdGlvbl90ZXN0KGFzeW5jIHQgPT4gewogICBj
b25zdCByZXF1ZXN0ID0gbmV3IFBheW1lbnRSZXF1ZXN0KGRlZmF1bHRNZXRob2RzLCBkZWZhdWx0
RGV0YWlscyk7CiAgIGNvbnN0IGFjY2VwdFByb21pc2UgPSByZXF1ZXN0LnNob3coKTsgLy8gU2V0
cyBzdGF0ZSB0byAiaW50ZXJhY3RpdmUiCi0gIGF3YWl0IHByb21pc2VfcmVqZWN0cyh0LCAiU2Vj
dXJpdHlFcnJvciIsIHJlcXVlc3Quc2hvdygpKTsKKyAgYXdhaXQgcHJvbWlzZV9yZWplY3RzX2Rv
bSh0LCAiU2VjdXJpdHlFcnJvciIsIHJlcXVlc3Quc2hvdygpKTsKICAgYXdhaXQgcmVxdWVzdC5h
Ym9ydCgpOwotICBhd2FpdCBwcm9taXNlX3JlamVjdHModCwgIkFib3J0RXJyb3IiLCBhY2NlcHRQ
cm9taXNlKTsKKyAgYXdhaXQgcHJvbWlzZV9yZWplY3RzX2RvbSh0LCAiQWJvcnRFcnJvciIsIGFj
Y2VwdFByb21pc2UpOwogfSwgYFRocm93cyBpZiB0aGUgcHJvbWlzZSBbW3N0YXRlXV0gaXMgbm90
ICJjcmVhdGVkImApOwogCiB1c2VyX2FjdGl2YXRpb25fdGVzdChhc3luYyB0ID0+IHsKQEAgLTU2
LDkgKzU2LDkgQEAgdXNlcl9hY3RpdmF0aW9uX3Rlc3QoYXN5bmMgdCA9PiB7CiAgIGNvbnN0IHJl
cXVlc3QyID0gbmV3IFBheW1lbnRSZXF1ZXN0KGRlZmF1bHRNZXRob2RzLCBkZWZhdWx0RGV0YWls
cyk7CiAgIGNvbnN0IGFjY2VwdFByb21pc2UxID0gcmVxdWVzdDEuc2hvdygpOwogICBjb25zdCBh
Y2NlcHRQcm9taXNlMiA9IHJlcXVlc3QyLnNob3coKTsKLSAgYXdhaXQgcHJvbWlzZV9yZWplY3Rz
KHQsICJTZWN1cml0eUVycm9yIiwgYWNjZXB0UHJvbWlzZTIpOworICBhd2FpdCBwcm9taXNlX3Jl
amVjdHNfZG9tKHQsICJTZWN1cml0eUVycm9yIiwgYWNjZXB0UHJvbWlzZTIpOwogICBhd2FpdCBy
ZXF1ZXN0MS5hYm9ydCgpOwotICBhd2FpdCBwcm9taXNlX3JlamVjdHModCwgIkFib3J0RXJyb3Ii
LCBhY2NlcHRQcm9taXNlMSk7CisgIGF3YWl0IHByb21pc2VfcmVqZWN0c19kb20odCwgIkFib3J0
RXJyb3IiLCBhY2NlcHRQcm9taXNlMSk7CiB9LCBgSWYgdGhlIHVzZXIgYWdlbnQncyAicGF5bWVu
dCByZXF1ZXN0IGlzIHNob3dpbmciIGJvb2xlYW4gaXMgdHJ1ZSwgdGhlbiByZXR1cm4gYSBwcm9t
aXNlIHJlamVjdGVkIHdpdGggYW4gIkFib3J0RXJyb3IiIERPTUV4Y2VwdGlvbi5gKTsKIAogdXNl
cl9hY3RpdmF0aW9uX3Rlc3QoYXN5bmMgdCA9PiB7CkBAIC02Niw3ICs2Niw3IEBAIHVzZXJfYWN0
aXZhdGlvbl90ZXN0KGFzeW5jIHQgPT4gewogICAgIFt7IHN1cHBvcnRlZE1ldGhvZHM6ICJ0aGlz
LWlzLW5vdC1zdXBwb3J0ZWQiIH1dLAogICAgIGRlZmF1bHREZXRhaWxzKTsKICAgY29uc3QgYWNj
ZXB0UHJvbWlzZSA9IHJlcXVlc3Quc2hvdygpOwotICBhd2FpdCBwcm9taXNlX3JlamVjdHModCwg
Ik5vdFN1cHBvcnRlZEVycm9yIiwgYWNjZXB0UHJvbWlzZSk7CisgIGF3YWl0IHByb21pc2VfcmVq
ZWN0c19kb20odCwgIk5vdFN1cHBvcnRlZEVycm9yIiwgYWNjZXB0UHJvbWlzZSk7CiB9LCBgSWYg
cGF5bWVudCBtZXRob2QgY29uc3VsdGF0aW9uIHByb2R1Y2VzIG5vIHN1cHBvcnRlZCBtZXRob2Qg
b2YgcGF5bWVudCwgdGhlbiByZXR1cm4gYSBwcm9taXNlIHJlamVjdGVkIHdpdGggYSAiTm90U3Vw
cG9ydGVkRXJyb3IiIERPTUV4Y2VwdGlvbi5gKTsKIAogdXNlcl9hY3RpdmF0aW9uX3Rlc3QoYXN5
bmMgdCA9PiB7CkBAIC03NCwxNCArNzQsMTQgQEAgdXNlcl9hY3RpdmF0aW9uX3Rlc3QoYXN5bmMg
dCA9PiB7CiAgICAgW3sgc3VwcG9ydGVkTWV0aG9kczogImh0dHBzOi8vYXBwbGUuY29tL2FwcGxl
LXBheSIgfV0sCiAgICAgZGVmYXVsdERldGFpbHMpOwogICBjb25zdCBhY2NlcHRQcm9taXNlID0g
cmVxdWVzdC5zaG93KCk7Ci0gIGF3YWl0IHByb21pc2VfcmVqZWN0cyh0LCBuZXcgVHlwZUVycm9y
LCBhY2NlcHRQcm9taXNlKTsKKyAgYXdhaXQgcHJvbWlzZV9yZWplY3RzX2pzKHQsIFR5cGVFcnJv
ciwgYWNjZXB0UHJvbWlzZSk7CiB9LCBgSWYgZGF0YSBjb252ZXJzaW9uIHJlc3VsdHMgaW4gYW4g
ZXJyb3IsIHRoZW4gcmV0dXJuIGEgcHJvbWlzZSByZWplY3RlZCB3aXRoIGEgIlR5cGVFcnJvciIg
RE9NRXhjZXB0aW9uLmApOwogCiB1c2VyX2FjdGl2YXRpb25fdGVzdChhc3luYyB0ID0+IHsKICAg
Y29uc3QgcmVxdWVzdCA9IG5ldyBQYXltZW50UmVxdWVzdChkZWZhdWx0TWV0aG9kcywgZGVmYXVs
dERldGFpbHMpOwogICBjb25zdCBhY2NlcHRQcm9taXNlID0gcmVxdWVzdC5zaG93KCk7IC8vIFNl
dHMgc3RhdGUgdG8gImludGVyYWN0aXZlIgogICBpbnRlcm5hbHMubW9ja1BheW1lbnRDb29yZGlu
YXRvci5jYW5jZWxQYXltZW50KCk7Ci0gIGF3YWl0IHByb21pc2VfcmVqZWN0cyh0LCAiQWJvcnRF
cnJvciIsIGFjY2VwdFByb21pc2UpOworICBhd2FpdCBwcm9taXNlX3JlamVjdHNfZG9tKHQsICJB
Ym9ydEVycm9yIiwgYWNjZXB0UHJvbWlzZSk7CiB9LCBgSWYgdGhlIHVzZXIgYWJvcnRzIHRoZSBw
YXltZW50IHJlcXVlc3QgYWxnb3JpdGhtLCB0aGVuIHJldHVybiBhIHByb21pc2UgcmVqZWN0ZWQg
d2l0aCBhbiAiQWJvcnRFcnJvciIgRE9NRXhjZXB0aW9uLmApOwogCiB1c2VyX2FjdGl2YXRpb25f
dGVzdChhc3luYyB0ID0+IHsKQEAgLTkyLDcgKzkyLDcgQEAgdXNlcl9hY3RpdmF0aW9uX3Rlc3Qo
YXN5bmMgdCA9PiB7CiAgICAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiByZXNvbHZlKGRlZmF1
bHREZXRhaWxzKSk7CiAgICAgfSk7CiAgIH0pKTsgLy8gU2V0cyBzdGF0ZSB0byAiaW50ZXJhY3Rp
dmUiCi0gIGF3YWl0IHByb21pc2VfcmVqZWN0cyh0LCAiQWJvcnRFcnJvciIsIGFjY2VwdFByb21p
c2UpOworICBhd2FpdCBwcm9taXNlX3JlamVjdHNfZG9tKHQsICJBYm9ydEVycm9yIiwgYWNjZXB0
UHJvbWlzZSk7CiB9LCBgSWYgdGhlIHVzZXIgYWJvcnRzIHRoZSBwYXltZW50IHJlcXVlc3QgYWxn
b3JpdGhtIHdoaWxlIGRldGFpbHMgYXJlIHVwZGF0aW5nLCB0aGVuIHJlamVjdCB0aGUgYWNjZXB0
IHByb21pc2Ugd2l0aCBhbiAiQWJvcnRFcnJvciIgd2hlbiB0aGUgZGV0YWlscyBzZXR0bGUuYCk7
CiAKIHVzZXJfYWN0aXZhdGlvbl90ZXN0KGFzeW5jIHQgPT4gewpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LXJlc3BvbnNlLXJlamVjdHMt
aWYtbm90LWFjdGl2ZS5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50
cmVxdWVzdC9wYXltZW50LXJlc3BvbnNlLXJlamVjdHMtaWYtbm90LWFjdGl2ZS5odHRwcy5odG1s
CmluZGV4IDMyZDEwMWY2NjVkM2Y3OWFiMDZiNjE3ODhmODI5YzQwOWUwYmNjMjkuLjkyZjE1MDU1
MjUyYjU4NGRjYjU0MTYwODIzYmJmNjNmMmQ3M2UwZTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1yZXNwb25zZS1yZWplY3RzLWlmLW5v
dC1hY3RpdmUuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRy
ZXF1ZXN0L3BheW1lbnQtcmVzcG9uc2UtcmVqZWN0cy1pZi1ub3QtYWN0aXZlLmh0dHBzLmh0bWwK
QEAgLTU0LDYgKzU0LDggQEAgZnVuY3Rpb24gbWV0aG9kTm90RnVsbHlBY3RpdmUodGV4dCwgbWV0
aG9kTmFtZSwgLi4uYXJncykgewogICAgICAgaWZyYW1lLAogICAgICAgIi9wYXltZW50LXJlcXVl
c3QvcmVzb3VyY2VzL3BhZ2UxLmh0bWwiCiAgICAgKTsKKyAgICBjb25zdCBpZnJhbWVET01FeGNl
cHRpb24gPSBpZnJhbWUuY29udGVudFdpbmRvdy5ET01FeGNlcHRpb247CisKICAgICAvLyBXZSBu
YXZpZ2F0ZSB0aGUgaWZyYW1lIGFnYWluLCBwdXR0aW5nIHJlc3BvbnNlJ3MgZG9jdW1lbnQgaW50
byBhbiBpbmFjdGl2ZSBzdGF0ZS4KICAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsK
ICAgICAgIGlmcmFtZS5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgcmVzb2x2ZSk7CkBAIC02Miw5
ICs2NCwxMCBAQCBmdW5jdGlvbiBtZXRob2ROb3RGdWxseUFjdGl2ZSh0ZXh0LCBtZXRob2ROYW1l
LCAuLi5hcmdzKSB7CiAgICAgLy8gTm93LCByZXNwb25zZSdzIHJlbGV2YW50IGdsb2JhbCBvYmpl
Y3QncyBkb2N1bWVudCBpcyBubyBsb25nZXIgYWN0aXZlLgogICAgIC8vIFNvLCBwcm9taXNlIG5l
ZWRzIHRvIHJlamVjdCBhcHByb3ByaWF0ZWx5LgogICAgIGNvbnN0IHByb21pc2UgPSByZXNwb25z
ZVttZXRob2ROYW1lXSguLi5hcmdzKTsKLSAgICBhd2FpdCBwcm9taXNlX3JlamVjdHMoCisgICAg
YXdhaXQgcHJvbWlzZV9yZWplY3RzX2RvbSgKICAgICAgIHQsCiAgICAgICAiQWJvcnRFcnJvciIs
CisgICAgICBpZnJhbWVET01FeGNlcHRpb24sCiAgICAgICBwcm9taXNlLAogICAgICAgIkluYWN0
aXZlIGRvY3VtZW50LCBzbyBtdXN0IHRocm93IEFib3J0RXJyb3IiCiAgICAgKTsKQEAgLTg0LDYg
Kzg3LDcgQEAgZnVuY3Rpb24gbWV0aG9kQmVjb21lc05vdEZ1bGx5QWN0aXZlKHRleHQsIG1ldGhv
ZE5hbWUsIC4uLmFyZ3MpIHsKICAgICAgIGlmcmFtZSwKICAgICAgICIvcGF5bWVudC1yZXF1ZXN0
L3Jlc291cmNlcy9wYWdlMS5odG1sIgogICAgICk7CisgICAgY29uc3QgaWZyYW1lRE9NRXhjZXB0
aW9uID0gaWZyYW1lLmNvbnRlbnRXaW5kb3cuRE9NRXhjZXB0aW9uOwogCiAgICAgLy8gd2UgZ2V0
IHRoZSBwcm9taXNlIGZyb20gcGFnZTEuaHRtbCwgd2hpbGUgaXQncyBhY3RpdmUhCiAgICAgY29u
c3QgcHJvbWlzZSA9IHJlc3BvbnNlW21ldGhvZE5hbWVdKC4uLmFyZ3MpOwpAQCAtOTYsOSArMTAw
LDEwIEBAIGZ1bmN0aW9uIG1ldGhvZEJlY29tZXNOb3RGdWxseUFjdGl2ZSh0ZXh0LCBtZXRob2RO
YW1lLCAuLi5hcmdzKSB7CiAKICAgICAvLyBOb3csIHJlc3BvbnNlJ3MgcmVsZXZhbnQgZ2xvYmFs
IG9iamVjdCdzIGRvY3VtZW50IGlzIG5vIGxvbmdlciBhY3RpdmUuCiAgICAgLy8gU28sIHByb21p
c2UgbmVlZHMgdG8gcmVqZWN0IGFwcHJvcHJpYXRlbHkuCi0gICAgYXdhaXQgcHJvbWlzZV9yZWpl
Y3RzKAorICAgIGF3YWl0IHByb21pc2VfcmVqZWN0c19kb20oCiAgICAgICB0LAogICAgICAgIkFi
b3J0RXJyb3IiLAorICAgICAgaWZyYW1lRE9NRXhjZXB0aW9uLAogICAgICAgcHJvbWlzZSwKICAg
ICAgICJJbmFjdGl2ZSBkb2N1bWVudCwgc28gbXVzdCB0aHJvdyBBYm9ydEVycm9yIgogICAgICk7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1l
bnQtcmVzcG9uc2UtcmV0cnktbWV0aG9kLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVzcG9uc2UtcmV0cnktbWV0aG9kLmh0dHBzLmh0
bWwKaW5kZXggNjRhNDExYWM1YjEwZjZiMjM1NGYwMjNiZjViMjdmZjFlYzE3OTY4OS4uY2Y2MDUw
NzdjYjMyZTZjNTE5MjUxZWIzNWFkMTM2Y2M4MjYxNTUzMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LXJlc3BvbnNlLXJldHJ5LW1ldGhv
ZC5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3Qv
cGF5bWVudC1yZXNwb25zZS1yZXRyeS1tZXRob2QuaHR0cHMuaHRtbApAQCAtMjksNyArMjksNyBA
QCBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CiAgIGNvbnN0IHsgcmVzcG9uc2UgfSA9IGF3YWl0
IGdldFBheW1lbnRSZXF1ZXN0UmVzcG9uc2UoKTsKICAgLy8gc2V0cyByZXNwb25zZS5bW2NvbXBs
ZXRlXV0gdG8gdHJ1ZS4KICAgYXdhaXQgcmVzcG9uc2UuY29tcGxldGUoInN1Y2Nlc3MiKTsKLSAg
cmV0dXJuIHByb21pc2VfcmVqZWN0cygKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19kb20oCiAg
ICAgdCwKICAgICAiSW52YWxpZFN0YXRlRXJyb3IiLAogICAgIHJlc3BvbnNlLnJldHJ5KHt9KSwK
QEAgLTQwLDcgKzQwLDcgQEAgcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4gewogcHJvbWlzZV90ZXN0
KGFzeW5jIHQgPT4gewogICBjb25zdCB7IHJlc3BvbnNlIH0gPSBhd2FpdCBnZXRQYXltZW50UmVx
dWVzdFJlc3BvbnNlKCk7CiAgIGNvbnN0IHJldHJ5UHJvbWlzZSA9IHJlc3BvbnNlLnJldHJ5KHt9
KTsKLSAgYXdhaXQgcHJvbWlzZV9yZWplY3RzKAorICBhd2FpdCBwcm9taXNlX3JlamVjdHNfZG9t
KAogICAgIHQsCiAgICAgIkludmFsaWRTdGF0ZUVycm9yIiwKICAgICByZXNwb25zZS5yZXRyeSh7
fSksCkBAIC01NCw3ICs1NCw3IEBAIHByb21pc2VfdGVzdChhc3luYyB0ID0+IHsKIHByb21pc2Vf
dGVzdChhc3luYyB0ID0+IHsKICAgY29uc3QgeyByZXNwb25zZSB9ID0gYXdhaXQgZ2V0UGF5bWVu
dFJlcXVlc3RSZXNwb25zZSgpOwogICBjb25zdCByZXRyeVByb21pc2UgPSByZXNwb25zZS5yZXRy
eSh7fSk7Ci0gIGF3YWl0IHByb21pc2VfcmVqZWN0cygKKyAgYXdhaXQgcHJvbWlzZV9yZWplY3Rz
X2RvbSgKICAgICB0LAogICAgICJJbnZhbGlkU3RhdGVFcnJvciIsCiAgICAgcmVzcG9uc2UuY29t
cGxldGUoInN1Y2Nlc3MiKSwKQEAgLTY4LDcgKzY4LDcgQEAgcHJvbWlzZV90ZXN0KGFzeW5jIHQg
PT4gewogcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4gewogICBjb25zdCB7IHJlc3BvbnNlLCByZXF1
ZXN0IH0gPSBhd2FpdCBnZXRQYXltZW50UmVxdWVzdFJlc3BvbnNlKCk7CiAgIGNvbnN0IHJldHJ5
UHJvbWlzZSA9IHJlc3BvbnNlLnJldHJ5KHt9KTsKLSAgYXdhaXQgcHJvbWlzZV9yZWplY3RzKAor
ICBhd2FpdCBwcm9taXNlX3JlamVjdHNfZG9tKAogICAgIHQsCiAgICAgIkludmFsaWRTdGF0ZUVy
cm9yIiwKICAgICByZXF1ZXN0LmFib3J0KCksCkBAIC05Niw3ICs5Niw3IEBAIHByb21pc2VfdGVz
dChhc3luYyB0ID0+IHsKICAgICAiRXhwZWN0ZWQgdW5kZWZpbmVkIGFzIHRoZSByZXNvbHZlIHZh
bHVlIgogICApOwogICBhd2FpdCByZXNwb25zZS5jb21wbGV0ZSgic3VjY2VzcyIpOwotICBhd2Fp
dCBwcm9taXNlX3JlamVjdHMoCisgIGF3YWl0IHByb21pc2VfcmVqZWN0c19kb20oCiAgICAgdCwK
ICAgICAiSW52YWxpZFN0YXRlRXJyb3IiLAogICAgIHJlc3BvbnNlLnJldHJ5KHt9KSwKQEAgLTEw
OCwxOSArMTA4LDE5IEBAIHByb21pc2VfdGVzdChhc3luYyB0ID0+IHsKICAgY29uc3QgeyByZXNw
b25zZSB9ID0gYXdhaXQgZ2V0UGF5bWVudFJlcXVlc3RSZXNwb25zZSgpOwogICB2YXIgcHJvbWlz
ZSA9IHJlc3BvbnNlLnJldHJ5KHt9KTsKICAgaW50ZXJuYWxzLm1vY2tQYXltZW50Q29vcmRpbmF0
b3IuY2FuY2VsUGF5bWVudCgpOwotICBhd2FpdCBwcm9taXNlX3JlamVjdHMoCisgIGF3YWl0IHBy
b21pc2VfcmVqZWN0c19kb20oCiAgICAgdCwKICAgICAiQWJvcnRFcnJvciIsCiAgICAgcHJvbWlz
ZSwKICAgICAiVGhlIHVzZXIgYWJvcnRpbmcgYSByZXRyeSByZWplY3RzIHdpdGggYSBBYm9ydEVy
cm9yIgogICApOwotICBhd2FpdCBwcm9taXNlX3JlamVjdHMoCisgIGF3YWl0IHByb21pc2VfcmVq
ZWN0c19kb20oCiAgICAgdCwKICAgICAiSW52YWxpZFN0YXRlRXJyb3IiLAogICAgIHJlc3BvbnNl
LnJldHJ5KHt9KSwKICAgICAiQWZ0ZXIgdGhlIHVzZXIgYWJvcnRzLCByZXNwb25zZSBbW2NvbXBs
ZXRlXV0gaXMgdHJ1ZSBzbyByZXRyeSgpIG11c3QgcmVqZWN0IHdpdGggSW52YWxpZFN0YXRlRXJy
b3IiCiAgICk7Ci0gIGF3YWl0IHByb21pc2VfcmVqZWN0cygKKyAgYXdhaXQgcHJvbWlzZV9yZWpl
Y3RzX2RvbSgKICAgICB0LAogICAgICJJbnZhbGlkU3RhdGVFcnJvciIsCiAgICAgcmVzcG9uc2Uu
Y29tcGxldGUoInN1Y2Nlc3MiKSwKQEAgLTE1OCwxMyArMTU4LDEzIEBAIHByb21pc2VfdGVzdChh
c3luYyB0ID0+IHsKICAgY29uc3QgcmV0cnlQcm9taXNlID0gcmVzcG9uc2UucmV0cnkoe30pOwog
ICBpbnRlcm5hbHMubW9ja1BheW1lbnRDb29yZGluYXRvci5jaGFuZ2VTaGlwcGluZ09wdGlvbigi
b3B0aW9uIik7CiAgIGF3YWl0IHNoaXBwaW5nQ2hhbmdlZFByb21pc2U7Ci0gIGF3YWl0IHByb21p
c2VfcmVqZWN0cygKKyAgYXdhaXQgcHJvbWlzZV9yZWplY3RzX2pzKAogICAgIHQsCi0gICAgbmV3
IFR5cGVFcnJvcigpLAorICAgIFR5cGVFcnJvciwKICAgICByZXRyeVByb21pc2UsCiAgICAgInJl
dHJ5KCkgYWJvcnRzIHdpdGggYSBUeXBlRXJyb3IsIGJlY2F1c2UgdG90YWxzJyB2YWx1ZSBpcyBp
bnZhbGlkIgogICApOwotICBhd2FpdCBwcm9taXNlX3JlamVjdHMoCisgIGF3YWl0IHByb21pc2Vf
cmVqZWN0c19kb20oCiAgICAgdCwKICAgICAiSW52YWxpZFN0YXRlRXJyb3IiLAogICAgIHJlc3Bv
bnNlLmNvbXBsZXRlKCJzdWNjZXNzIiksCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3BheW1lbnRyZXF1ZXN0L3JlamVjdHNfaWZfbm90X2FjdGl2ZS5odHRwcy5odG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9yZWplY3RzX2lmX25vdF9hY3RpdmUu
aHR0cHMuaHRtbAppbmRleCA5NmU4ZjZhNDhjMTY2ODQ4ZTgzZWI2ZjNhZjJhZDkxMTJkNGE5Nzg2
Li44ZTExZTgwNzIzNTQyNzJjY2I4MDkxYzRmNDQ3MmI5MzI1M2JlYTQ4IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3JlamVjdHNfaWZfbm90X2FjdGl2
ZS5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3Qv
cmVqZWN0c19pZl9ub3RfYWN0aXZlLmh0dHBzLmh0bWwKQEAgLTYyLDYgKzYyLDcgQEAgcHJvbWlz
ZV90ZXN0KGFzeW5jIHQgPT4gewogICAgIGlmcmFtZSwKICAgICAicmVzb3VyY2VzL3BhZ2UxLmh0
bWwiCiAgICk7CisgIGNvbnN0IGZpcnN0Q3RvciA9IGlmcmFtZS5jb250ZW50V2luZG93LkRPTUV4
Y2VwdGlvbjsKIAogICAvLyBXZSBuYXZpZ2F0ZSB0aGUgaWZyYW1lIGFnYWluLCBwdXR0aW5nIHJl
cXVlc3QxJ3MgZG9jdW1lbnQgaW50byBhbiBpbmFjdGl2ZSBzdGF0ZS4KICAgY29uc3QgcmVxdWVz
dDIgPSBhd2FpdCBnZXRMb2FkZWRQYXltZW50UmVxdWVzdCgKQEAgLTcxLDkgKzcyLDEwIEBAIHBy
b21pc2VfdGVzdChhc3luYyB0ID0+IHsKIAogICAvLyBOb3csIHJlcXVlc3QxJ3MgcmVsZXZhbnQg
Z2xvYmFsIG9iamVjdCdzIGRvY3VtZW50IGlzIG5vIGxvbmdlciBhY3RpdmUuCiAgIC8vIFNvLCBj
YWxsIC5zaG93KCksIGFuZCBtYWtlIHN1cmUgaXQgcmVqZWN0cyBhcHByb3ByaWF0ZWx5LgotICBh
d2FpdCBwcm9taXNlX3JlamVjdHMoCisgIGF3YWl0IHByb21pc2VfcmVqZWN0c19kb20oCiAgICAg
dCwKICAgICAiQWJvcnRFcnJvciIsCisgICAgZmlyc3RDdG9yLAogICAgIHJlcXVlc3QxLnNob3co
KSwKICAgICAiSW5hY3RpdmUgZG9jdW1lbnQsIHNvIG11c3QgdGhyb3cgQWJvcnRFcnJvciIKICAg
KTsKQEAgLTgzLDExICs4NSwxMyBAQCBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CiAgICAgICBy
ZXF1ZXN0Mi5zaG93KCkuY2F0Y2goKGVycm9yKSA9PiB7fSk7CiAgICAgYXdhaXQgcmVxdWVzdDIu
YWJvcnQoKTsKICAgfSk7CisgIGNvbnN0IHNlY29uZEN0b3IgPSBpZnJhbWUuY29udGVudFdpbmRv
dy5ET01FeGNlcHRpb247CiAKICAgYXdhaXQgYWN0aXZhdGVUaGVuKGFzeW5jICgpID0+IHsKLSAg
ICBhd2FpdCBwcm9taXNlX3JlamVjdHMoCisgICAgYXdhaXQgcHJvbWlzZV9yZWplY3RzX2RvbSgK
ICAgICAgIHQsCiAgICAgICAiSW52YWxpZFN0YXRlRXJyb3IiLAorICAgICAgc2Vjb25kQ3RvciwK
ICAgICAgIHJlcXVlc3QyLnNob3coKSwKICAgICAgICJBYm9ydCBhbHJlYWR5IGNhbGxlZCwgc28g
SW52YWxpZFN0YXRlRXJyb3IiCiAgICAgKTsKQEAgLTEyMyw2ICsxMjcsNyBAQCBwcm9taXNlX3Rl
c3QoYXN5bmMgdCA9PiB7CiAgICAgaW5uZXJJZnJhbWUsCiAgICAgInJlc291cmNlcy9wYWdlMi5o
dG1sIgogICApOworICBjb25zdCByZXF1ZXN0V2luZG93ID0gaW5uZXJJZnJhbWUuY29udGVudFdp
bmRvdzsKIAogICAvLyBOYXZpZ2F0ZSB0aGUgb3V0ZXIgaWZyYW1lIHRvIGEgbmV3IGxvY2F0aW9u
LgogICAvLyBXYWl0IGZvciB0aGUgbG9hZCBldmVudCB0byBmaXJlLgpAQCAtMTM0LDkgKzEzOSwx
MCBAQCBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CiAgIC8vIChpdCBpcyB0aGUgYWN0aXZlIGRv
Y3VtZW50IG9mIHRoZSBpbm5lciBpZnJhbWUpLCBidXQgaXMgbm90IGZ1bGx5IGFjdGl2ZQogICAv
LyAoc2luY2UgdGhlIHBhcmVudCBvZiB0aGUgaW5uZXIgaWZyYW1lIGlzIGl0c2VsZiBubyBsb25n
ZXIgYWN0aXZlKS4KICAgLy8gU28sIGNhbGwgcmVxdWVzdC5zaG93KCkgYW5kIG1ha2Ugc3VyZSBp
dCByZWplY3RzIGFwcHJvcHJpYXRlbHkuCi0gIGF3YWl0IHByb21pc2VfcmVqZWN0cygKKyAgYXdh
aXQgcHJvbWlzZV9yZWplY3RzX2RvbSgKICAgICB0LAogICAgICJBYm9ydEVycm9yIiwKKyAgICBy
ZXF1ZXN0V2luZG93LkRPTUV4Y2VwdGlvbiwKICAgICByZXF1ZXN0LnNob3coKSwKICAgICAiQWN0
aXZlLCBidXQgbm90IGZ1bGx5IGFjdGl2ZSwgc28gbXVzdCB0aHJvdyBBYm9ydEVycm9yIgogICAp
OwpAQCAtMTU2LDYgKzE2Miw3IEBAIHByb21pc2VfdGVzdChhc3luYyB0ID0+IHsKICAgICBpZnJh
bWUsCiAgICAgInJlc291cmNlcy9wYWdlMS5odG1sIgogICApOworICBjb25zdCBpZnJhbWVET01F
eGNlcHRpb24gPSBpZnJhbWUuY29udGVudFdpbmRvdy5ET01FeGNlcHRpb247CiAgIC8vIFByZXNl
bnQgdGhlIHBheW1lbnQgc2hlZXQuCiAgIGF3YWl0IGFjdGl2YXRlVGhlbihhc3luYyAoKSA9PiB7
CiAgICAgY29uc3Qgc2hvd1Byb21pc2UgPSByZXF1ZXN0LnNob3coKTsKQEAgLTE2NCw5ICsxNzEs
MTAgQEAgcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4gewogICAgICAgaWZyYW1lLmFkZEV2ZW50TGlz
dGVuZXIoImxvYWQiLCByZXNvbHZlKTsKICAgICAgIGlmcmFtZS5zcmMgPSAicmVzb3VyY2VzL3Bh
Z2UyLmh0bWwiOwogICAgIH0pOwotICAgIGF3YWl0IHByb21pc2VfcmVqZWN0cygKKyAgICBhd2Fp
dCBwcm9taXNlX3JlamVjdHNfZG9tKAogICAgICAgdCwKICAgICAgICJBYm9ydEVycm9yIiwKKyAg
ICAgIGlmcmFtZURPTUV4Y2VwdGlvbiwKICAgICAgIHNob3dQcm9taXNlLAogICAgICAgIlRoZSBp
ZnJhbWUgd2FzIG5hdmlnYXRlZCBhd2F5LCBzbyBzaG93UHJvbWlzZSBtdXN0IHJlamVjdCB3aXRo
IEFib3J0RXJyb3IiCiAgICAgKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
cGF5bWVudHJlcXVlc3QvdXBkYXRlV2l0aC1tZXRob2QtcG1pLWhhbmRsaW5nLmh0dHBzLmh0bWwg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3VwZGF0ZVdpdGgtbWV0aG9k
LXBtaS1oYW5kbGluZy5odHRwcy5odG1sCmluZGV4IDEyYzYwOTY4YWI1OTdmNWM5MTBmODA3ZjEy
OTIyYzk0YzUxODQ2NzQuLjU5ODFjNmVkMjJhYjAyZDJjYjA4ODQ5Zjk0MjFhYmZjODgwNDVjNTMg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvdXBkYXRl
V2l0aC1tZXRob2QtcG1pLWhhbmRsaW5nLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9wYXltZW50cmVxdWVzdC91cGRhdGVXaXRoLW1ldGhvZC1wbWktaGFuZGxpbmcuaHR0
cHMuaHRtbApAQCAtODYsNyArODYsNyBAQCBmdW5jdGlvbiBydW5UZXN0KGJ1dHRvbiwgeyBpbnZh
bGlkTWV0aG9kIH0pIHsKICAgICByZXF1ZXN0Lm9uc2hpcHBpbmdhZGRyZXNzY2hhbmdlID0gbGlz
dGVuZXI7CiAgICAgLy8gcmVxdWVzdC5hZGRFdmVudExpc3RlbmVyKCJzaGlwcGluZ2FkZHJlc3Nj
aGFuZ2UiLCBsaXN0ZW5lciwgeyBvbmNlOiB0cnVlIH0pOwogICAgIGNvbnN0IHNob3dQcm9taXNl
ID0gcmVxdWVzdC5zaG93KCk7Ci0gICAgYXdhaXQgcHJvbWlzZV9yZWplY3RzKHQsIG5ldyBSYW5n
ZUVycm9yKCksIHNob3dQcm9taXNlKTsKKyAgICBhd2FpdCBwcm9taXNlX3JlamVjdHNfanModCwg
UmFuZ2VFcnJvciwgc2hvd1Byb21pc2UpOwogICB9LCBidXR0b24udGV4dENvbnRlbnQudHJpbSgp
KTsKIH0KIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9ieXBhc3NpbmctY29ycy1jaGVja3MtZm9yLWV4dGVuc2lvbi11cmxzLmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2J5cGFzc2luZy1jb3JzLWNoZWNrcy1mb3ItZXh0
ZW5zaW9uLXVybHMuaHRtbAppbmRleCA5ZThkZWExZmY3ZTUwYmQ0ODVmNGFmYmFiMzk5OGE1MGNl
YTc0MzJlLi43NDUzZDcwNDVkMDNjNGJjYmY3YTVlNDQ4MTZiZmU3MjIwOGExMTM4IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2J5cGFzc2luZy1jb3JzLWNoZWNr
cy1mb3ItZXh0ZW5zaW9uLXVybHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L2J5cGFzc2luZy1jb3JzLWNoZWNrcy1mb3ItZXh0ZW5zaW9uLXVybHMuaHRtbApAQCAt
MTYsNyArMTYsNyBAQAogICAgIHRlc3QoKCkgPT4gewogICAgICAgICB4aHIgPSBuZXcgWE1MSHR0
cFJlcXVlc3QoKTsKICAgICAgICAgeGhyLm9wZW4oIkdFVCIsICJzYWZhcmktZXh0ZW5zaW9uOi8v
dGVzdDEiLCBmYWxzZSk7Ci0gICAgICAgIGFzc2VydF90aHJvd3Moe25hbWU6ICJOZXR3b3JrRXJy
b3IifSwgKCkgPT4geyB4aHIuc2VuZCgpIH0pOworICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgi
TmV0d29ya0Vycm9yIiwgKCkgPT4geyB4aHIuc2VuZCgpIH0pOwogICAgIH0sICJCeXBhc3Npbmcg
Q09SUyBvbiBzeW5jaHJvbm91cyBYSFIgLSBzaG91bGQgdHJpZ2dlciBhIENPUlMgZXJyb3IgbWVz
c2FnZSIpOwogCiAgICAgdGVzdCgoKSA9PiB7CkBAIC0yNCwxMSArMjQsMTEgQEAKIAogICAgICAg
ICB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKICAgICAgICAgeGhyLm9wZW4oIkdFVCIsICJz
YWZhcmktZXh0ZW5zaW9uOi8vdGVzdDMiLCBmYWxzZSk7Ci0gICAgICAgIGFzc2VydF90aHJvd3Mo
e25hbWU6ICJOZXR3b3JrRXJyb3IifSwgKCkgPT4geyB4aHIuc2VuZCgpIH0pOworICAgICAgICBh
c3NlcnRfdGhyb3dzX2RvbSgiTmV0d29ya0Vycm9yIiwgKCkgPT4geyB4aHIuc2VuZCgpIH0pOwog
ICAgIH0sICJCeXBhc3NpbmcgQ09SUyBvbiBzeW5jaHJvbm91cyBYSFIgLSBzaG91bGQgbm90IHRy
aWdnZXIgYSBDT1JTIGVycm9yIG1lc3NhZ2UiKTsKIAogICAgIHByb21pc2VfdGVzdCgodGVzdCkg
PT4gewotICAgICAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHRlc3QsIG5ldyBUeXBlRXJyb3Is
IGZldGNoKCJzYWZhcmktZXh0ZW5zaW9uOi8vdGVzdDQiKSk7CisgICAgICAgIHJldHVybiBwcm9t
aXNlX3JlamVjdHNfanModGVzdCwgVHlwZUVycm9yLCBmZXRjaCgic2FmYXJpLWV4dGVuc2lvbjov
L3Rlc3Q0IikpOwogICAgIH0sICJCeXBhc3NpbmcgQ09SUyBvbiBhc3luY2hyb25vdXMgZmV0Y2gg
LSBzaG91bGQgbm90IHRyaWdnZXIgYSBDT1JTIGVycm9yIG1lc3NhZ2UiKTsKIDwvc2NyaXB0Pgog
PC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250
ZW50U2VjdXJpdHlQb2xpY3kvMS4xL2ZyYW1lLWFuY2VzdG9ycy9mcmFtZS1hbmNlc3RvcnMtb3Zl
cnJpZGVzLXhmby5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50
U2VjdXJpdHlQb2xpY3kvMS4xL2ZyYW1lLWFuY2VzdG9ycy9mcmFtZS1hbmNlc3RvcnMtb3ZlcnJp
ZGVzLXhmby5odG1sCmluZGV4IDc2OTYxMTJjOTA5NGE0MmNmOGMwY2RkZTk3NjVmNGY5NmRiMzQ5
MjcuLjhjZWU3NmM5Y2U3NGVmNGVlM2IzYjBjOWQ4OTQyZjBmOWE0OGFiNGQgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5LzEu
MS9mcmFtZS1hbmNlc3RvcnMvZnJhbWUtYW5jZXN0b3JzLW92ZXJyaWRlcy14Zm8uaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS8x
LjEvZnJhbWUtYW5jZXN0b3JzL2ZyYW1lLWFuY2VzdG9ycy1vdmVycmlkZXMteGZvLmh0bWwKQEAg
LTE5LDcgKzE5LDcgQEAKICAgICAgICAgICAgIHZhciBpID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnaWZyYW1lJyk7CiAgICAgICAgICAgICBpLnNyYyA9ICIuLi8uLi9yZXNvdXJjZXMvZnJhbWUt
YW5jZXN0b3JzLWFuZC14LWZyYW1lLW9wdGlvbnMucGw/cG9saWN5PW90aGVyLW9yaWdpbi5jb20m
eGZvPVNBTUVPUklHSU4iOwogICAgICAgICAgICAgaS5vbmxvYWQgPSB0LnN0ZXBfZnVuY19kb25l
KGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzKAorICAgICAgICAg
ICAgICAgIGFzc2VydF90aHJvd3NfZG9tKAogICAgICAgICAgICAgICAgICAgICAiU2VjdXJpdHlF
cnJvciIsCiAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgaS5jb250ZW50V2luZG93
Lm9yaWdpbiB9LAogICAgICAgICAgICAgICAgICAgICAiVGhlIHNhbWUtb3JpZ2luIHBhZ2Ugd2Fz
IGJsb2NrZWQgYW5kIHNhbmRib3hlZC4iKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvc3VicmVzb3VyY2UtaW50ZWdyaXR5L3NyaS1mZXRjaC5qcyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvc3VicmVzb3VyY2UtaW50ZWdyaXR5L3NyaS1mZXRjaC5qcwppbmRleCBjN2Y5OGQw
NDRjOTA3Y2ZhMjM2MTBmNjBhNzVkYTE0NTM4NDk5MzM2Li5kZmNlY2M4OTVmMTgyZjExYWNlZjg5
YTAyNmNmZjFmNzFlNDZmNjZhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N1
YnJlc291cmNlLWludGVncml0eS9zcmktZmV0Y2guanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zdWJyZXNvdXJjZS1pbnRlZ3JpdHkvc3JpLWZldGNoLmpzCkBAIC0yNCw3ICsyNCw3IEBA
IGZ1bmN0aW9uIGludGVncml0eShkZXNjLCB1cmwsIG9wdGlvbnMsIGV4cGVjdGVkRXJyb3IpIHsK
ICAgICAgICAgfSwgZGVzYyk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgcHJvbWlzZV90ZXN0KGZ1
bmN0aW9uKHRlc3QpIHsKLSAgICAgICAgICAgIHJldHVybiBwcm9taXNlX3JlamVjdHModGVzdCwg
ZXhwZWN0ZWRFcnJvciwgZmV0Y2godXJsLCBvcHRpb25zKSk7CisgICAgICAgICAgICByZXR1cm4g
cHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodGVzdCwgZXhwZWN0ZWRFcnJvciwgZmV0Y2godXJsLCBv
cHRpb25zKSk7CiAgICAgICAgIH0sIGRlc2MpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3NlcnZpY2Utd29ya2VyLWNyb3Nzb3Jp
Z2luLWZldGNoLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9z
ZXJ2aWNlLXdvcmtlci1jcm9zc29yaWdpbi1mZXRjaC5odG1sCmluZGV4IGZhZDUwNTdmYTg4Yzc1
MTg1ZTJkOGFiOWQ5ZDc4N2MwZTkxZjQyMTYuLjdiOTBkODYwNzBiMGFhYWRhZDMzZWFlNGJhYmNk
OTA5MGVjYzVkM2YgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZpY2Utd29ya2VyLWNyb3Nzb3JpZ2luLWZldGNoLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2VydmljZS13b3JrZXItY3Jvc3Nvcmln
aW4tZmV0Y2guaHRtbApAQCAtOSw3ICs5LDcgQEAKIHByb21pc2VfdGVzdCh0ZXN0ID0+IHsKICAg
ICAvLyBUcmlnZ2VyaW5nIHBvdGVudGlhbCBwcmVmbGlnaHQgdGhyb3VnaCBjdXN0b20gaGVhZGVy
LgogICAgIHZhciBmZXRjaFByb21pc2UgPSBmZXRjaCgiaHR0cDovL2xvY2FsaG9zdDo4MDgwL3Jl
c291cmNlcy9zcXVhcmUxMDAucG5nLmZyb21zZXJ2aWNld29ya2VyIiwgeyBoZWFkZXJzOiB7ImN1
c3RvbSI6ICJoZWFkZXIifX0pOwotICAgIHJldHVybiBwcm9taXNlX3JlamVjdHModGVzdCwgbmV3
IFR5cGVFcnJvcigpLCBmZXRjaFByb21pc2UpOworICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNf
anModGVzdCwgIlR5cGVFcnJvciIsIGZldGNoUHJvbWlzZSk7CiB9LCAiVGVzdGluZyB1bmludGVy
Y2VwdGVkIGZldGNoIHdpdGggcHJlZmxpZ2h0LCBmZXRjaCBzaG91bGQgZmFpbCIpOwogCiB2YXIg
ZnJhbWU7CkBAIC0yNyw3ICsyNyw3IEBAIHByb21pc2VfdGVzdChhc3luYyB0ZXN0ID0+IHsKIHBy
b21pc2VfdGVzdCh0ZXN0ID0+IHsKICAgICAvLyBUcmlnZ2VyaW5nIHBvdGVudGlhbCBwcmVmbGln
aHQgdGhyb3VnaCBjdXN0b20gaGVhZGVyLgogICAgIHZhciBmZXRjaFByb21pc2UgPSBmcmFtZS5j
b250ZW50V2luZG93LmZldGNoKCJodHRwOi8vbG9jYWxob3N0OjgwODAvcmVzb3VyY2VzL3NxdWFy
ZTEwMC5wbmcuZXJyb3IuZnJvbXNlcnZpY2V3b3JrZXIiLCB7IGhlYWRlcnM6IHsiY3VzdG9tIjog
ImhlYWRlciJ9fSk7Ci0gICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0ZXN0LCBuZXcgVHlwZUVy
cm9yKCksIGZldGNoUHJvbWlzZSk7CisgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19qcyh0ZXN0
LCAiVHlwZUVycm9yIiwgZmV0Y2hQcm9taXNlKTsKIH0sICJUZXN0aW5nIGludGVyY2VwdGVkIGZl
dGNoIHdpdGggcHJlZmxpZ2h0LCBmZXRjaCBzaG91bGQgZmFpbCIpOwogPC9zY3JpcHQ+CiA8L2Jv
ZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Nl
dC1iYWQtaGVhZGVydmFsdWUuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJl
cXVlc3Qvc2V0LWJhZC1oZWFkZXJ2YWx1ZS5odG1sCmluZGV4IDhiYTMwMzMyMmU2MWZiZmI3NzMy
NGFjY2EyOGQ4NTQ3MWM0OTgxODcuLjhjMjgyYzhhMzQ1MGEzNmJhMzFiNTk3YTM3ZTMyZjA4YmU4
YWFlMDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qv
c2V0LWJhZC1oZWFkZXJ2YWx1ZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1s
aHR0cHJlcXVlc3Qvc2V0LWJhZC1oZWFkZXJ2YWx1ZS5odG1sCkBAIC0xMCwyMCArMTAsMjIgQEAK
ICAgPGJvZHk+CiAgICAgPGRpdiBpZD0ibG9nIj48L2Rpdj4KICAgICA8c2NyaXB0PgotICAgICAg
ZnVuY3Rpb24gdHJ5X3ZhbHVlKHZhbHVlLCBleHBlY3RFcnJvcikgeworICAgICAgZnVuY3Rpb24g
dHJ5X3ZhbHVlKHZhbHVlLCBleHBlY3RFcnJvciwgaXNET01FcnJvcikgewogICAgICAgICB0ZXN0
KGZ1bmN0aW9uKCkgewogICAgICAgICAgIHZhciBjbGllbnQgPSBuZXcgWE1MSHR0cFJlcXVlc3Qo
KQogICAgICAgICAgIGNsaWVudC5vcGVuKCJHRVQiLCAiLi4uIikKLSAgICAgICAgICBpZiAoZXhw
ZWN0RXJyb3IpCi0gICAgICAgICAgICAgIGFzc2VydF90aHJvd3MoZXhwZWN0RXJyb3IsIGZ1bmN0
aW9uKCkgeyBjbGllbnQuc2V0UmVxdWVzdEhlYWRlcigieC10ZXN0IiwgdmFsdWUpIH0sICcgZ2l2
ZW4gdmFsdWUgJyArIHZhbHVlKycsICcpCisgICAgICAgICAgaWYgKGV4cGVjdEVycm9yICYmIGlz
RE9NRXJyb3IpCisgICAgICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKGV4cGVjdEVycm9yLCBm
dW5jdGlvbigpIHsgY2xpZW50LnNldFJlcXVlc3RIZWFkZXIoIngtdGVzdCIsIHZhbHVlKSB9LCAn
IGdpdmVuIHZhbHVlICcgKyB2YWx1ZSsnLCAnKQorICAgICAgICAgIGVsc2UgaWYgKGV4cGVjdEVy
cm9yKQorICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKGV4cGVjdEVycm9yLCBmdW5jdGlv
bigpIHsgY2xpZW50LnNldFJlcXVlc3RIZWFkZXIoIngtdGVzdCIsIHZhbHVlKSB9LCAnIGdpdmVu
IHZhbHVlICcgKyB2YWx1ZSsnLCAnKQogICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgY2xp
ZW50LnNldFJlcXVlc3RIZWFkZXIoIngtdGVzdCIsIHZhbHVlKSAgCiAgICAgICAgICAgfSkKICAg
ICAgIH0KIAotICAgICAgdHJ5X3ZhbHVlKCJ0XHJ0Iiwge25hbWU6J1N5bnRheEVycm9yJ30pCi0g
ICAgICB0cnlfdmFsdWUoInRcbnQiLCB7bmFtZTonU3ludGF4RXJyb3InfSkKLSAgICAgIHRyeV92
YWx1ZSgi776D7729776EIiwge25hbWU6J1R5cGVFcnJvcid9KQorICAgICAgdHJ5X3ZhbHVlKCJ0
XHJ0IiwgJ1N5bnRheEVycm9yJywgdHJ1ZSkKKyAgICAgIHRyeV92YWx1ZSgidFxudCIsICdTeW50
YXhFcnJvcicsIHRydWUpCisgICAgICB0cnlfdmFsdWUoIu++g++9ve++hCIsIFR5cGVFcnJvciwg
ZmFsc2UpCiAgICAgICB0cnlfdmFsdWUoInRcYnQiKQogICAgICAgdHJ5X3ZhbHVlKCJ0XHZ0IikK
ICAgICAgIHRyeV92YWx1ZSgidFx0dCIpCkBAIC0zMyw3ICszNSw3IEBACiAgICAgICB0ZXN0KGZ1
bmN0aW9uKCkgewogICAgICAgICB2YXIgY2xpZW50ID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCkKICAg
ICAgICAgY2xpZW50Lm9wZW4oIkdFVCIsICIuLi4iKQotICAgICAgICBhc3NlcnRfdGhyb3dzKHtu
YW1lOidUeXBlRXJyb3InfSwgZnVuY3Rpb24oKSB7IGNsaWVudC5zZXRSZXF1ZXN0SGVhZGVyKCJ4
LXRlc3QiKSB9KQorICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgZnVuY3Rpb24o
KSB7IGNsaWVudC5zZXRSZXF1ZXN0SGVhZGVyKCJ4LXRlc3QiKSB9KQogICAgICAgfSkKICAgICA8
L3NjcmlwdD4KICAgPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2Nsb3NlLWluLXVwZ3JhZGVuZWVkZWQuaHRtbCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9jbG9z
ZS1pbi11cGdyYWRlbmVlZGVkLmh0bWwKaW5kZXggMmUwMGI0ZTg1NmZjMzQ2NTgwNTlhZmNmZWIz
ODE1MzFiMjhiZDE3MS4uMDE1ZWYwYmExOTJmZjRiZTgxOTg5ZTA1ZjA0ODQ2NjAyYWNiZDE4ZiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJy
b3dzaW5nL2Nsb3NlLWluLXVwZ3JhZGVuZWVkZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvY2xvc2UtaW4tdXBncmFkZW5lZWRl
ZC5odG1sCkBAIC0yOSw3ICsyOSw3IEBAIG9wZW5fcnEub25lcnJvciA9IGZ1bmN0aW9uKGUpIHsK
ICAgICBhc3NlcnRfdHJ1ZSghIWRiKQogICAgIGFzc2VydF9lcXVhbHMoZGIudmVyc2lvbiwgMSkK
ICAgICBhc3NlcnRfZXF1YWxzKGRiLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoLCAxKQotICAgIGFz
c2VydF90aHJvd3MoIkludmFsaWRTdGF0ZUVycm9yIiwgZnVuY3Rpb24oKSB7IGRiLnRyYW5zYWN0
aW9uKCdvcycpIH0pCisgICAgYXNzZXJ0X3Rocm93c19kb20oIkludmFsaWRTdGF0ZUVycm9yIiwg
ZnVuY3Rpb24oKSB7IGRiLnRyYW5zYWN0aW9uKCdvcycpIH0pCiAKICAgICB0aGlzLmRvbmUoKQog
fQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRl
LWJyb3dzaW5nL2lkYmN1cnNvci1hZHZhbmNlLWludmFsaWQuaHRtbCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3ItYWR2YW5jZS1p
bnZhbGlkLmh0bWwKaW5kZXggZTI1MDRiOWU0MWU2ODk5MmU3MGI2MTFhNWFkMjk2NDhiYTRmMTY3
Ni4uNDQ4MmQ2OGQyMTU2ZmI4MjU3N2NmNzY3NmNhMzg0N2M4OGZiMmVjNiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1
cnNvci1hZHZhbmNlLWludmFsaWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
SW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yLWFkdmFuY2UtaW52YWxpZC5odG1s
CkBAIC00NiwxMCArNDYsMTAgQEAKICAgICAgICAgICAgICAgICBjdXJzb3IuYWR2YW5jZSgxKTsK
IAogICAgICAgICAgICAgICAgIC8vIFNlY29uZCB0cnkKLSAgICAgICAgICAgICAgICBhc3NlcnRf
dGhyb3dzKCdJbnZhbGlkU3RhdGVFcnJvcicsCisgICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93
c19kb20oJ0ludmFsaWRTdGF0ZUVycm9yJywKICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24o
KSB7IGN1cnNvci5hZHZhbmNlKDEpOyB9LCAnc2Vjb25kIGFkdmFuY2UnKTsKIAotICAgICAgICAg
ICAgICAgIGFzc2VydF90aHJvd3MoJ0ludmFsaWRTdGF0ZUVycm9yJywKKyAgICAgICAgICAgICAg
ICBhc3NlcnRfdGhyb3dzX2RvbSgnSW52YWxpZFN0YXRlRXJyb3InLAogICAgICAgICAgICAgICAg
ICAgICBmdW5jdGlvbigpIHsgY3Vyc29yLmFkdmFuY2UoMyk7IH0sICd0aGlyZCBhZHZhbmNlJyk7
CiAKICAgICAgICAgICAgICAgICBjb3VudCsrOwpAQCAtNjQsMTkgKzY0LDE5IEBACiAgICAgICAg
ICAgICBycS5vbnN1Y2Nlc3MgPSB0aGlzLnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7CiAgICAgICAg
ICAgICAgICAgdmFyIGN1cnNvciA9IGUudGFyZ2V0LnJlc3VsdDsKIAotICAgICAgICAgICAgICAg
IGFzc2VydF90aHJvd3MoeyBuYW1lOiAiVHlwZUVycm9yIiB9LAorICAgICAgICAgICAgICAgIGFz
c2VydF90aHJvd3NfanMoVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigp
IHsgY3Vyc29yLmFkdmFuY2UoZG9jdW1lbnQpOyB9KTsKIAotICAgICAgICAgICAgICAgIGFzc2Vy
dF90aHJvd3MoeyBuYW1lOiAiVHlwZUVycm9yIiB9LAorICAgICAgICAgICAgICAgIGFzc2VydF90
aHJvd3NfanMoVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsgY3Vy
c29yLmFkdmFuY2Uoe30pOyB9KTsKIAotICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3MoeyBu
YW1lOiAiVHlwZUVycm9yIiB9LAorICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3NfanMoVHlw
ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsgY3Vyc29yLmFkdmFuY2Uo
W10pOyB9KTsKIAotICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3MoeyBuYW1lOiAiVHlwZUVy
cm9yIiB9LAorICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLAogICAg
ICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsgY3Vyc29yLmFkdmFuY2UoIiIpOyB9KTsKIAot
ICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3MoeyBuYW1lOiAiVHlwZUVycm9yIiB9LAorICAg
ICAgICAgICAgICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLAogICAgICAgICAgICAgICAg
ICAgICBmdW5jdGlvbigpIHsgY3Vyc29yLmFkdmFuY2UoIjEgMiIpOyB9KTsKIAogICAgICAgICAg
ICAgICAgIHRoaXMuZG9uZSgpOwpAQCAtOTEsMTQgKzkxLDE0IEBACiAgICAgICAgICAgICBycS5v
bnN1Y2Nlc3MgPSB0aGlzLnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAg
dmFyIGN1cnNvciA9IGUudGFyZ2V0LnJlc3VsdDsKIAotICAgICAgICAgICAgICAgIGFzc2VydF90
aHJvd3MoeyBuYW1lOiAiVHlwZUVycm9yIiB9LAorICAgICAgICAgICAgICAgIGFzc2VydF90aHJv
d3NfanMoVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsgY3Vyc29y
LmFkdmFuY2UobnVsbCk7IH0pOwogCi0gICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyh7IG5h
bWU6ICJUeXBlRXJyb3IiIH0sCisgICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBl
RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyBjdXJzb3IuYWR2YW5jZSh1
bmRlZmluZWQpOyB9KTsKIAogICAgICAgICAgICAgICAgIHZhciBteXZhciA9IG51bGw7Ci0gICAg
ICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyh7IG5hbWU6ICJUeXBlRXJyb3IiIH0sCisgICAgICAg
ICAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAg
IGZ1bmN0aW9uKCkgeyBjdXJzb3IuYWR2YW5jZShteXZhcik7IH0pOwogCiAgICAgICAgICAgICAg
ICAgdGhpcy5kb25lKCk7CkBAIC0xMTMsNyArMTEzLDcgQEAKICAgICAgICAgICAgIHJxLm9uc3Vj
Y2VzcyA9IHRoaXMuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICB2YXIg
Y3Vyc29yID0gZS50YXJnZXQucmVzdWx0OwogCi0gICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93
cyh7IG5hbWU6ICJUeXBlRXJyb3IiIH0sCisgICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19q
cyhUeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyBjdXJzb3IuYWR2
YW5jZSgpOyB9KTsKIAogICAgICAgICAgICAgICAgIHRoaXMuZG9uZSgpOwpAQCAtMTI4LDI2ICsx
MjgsMjYgQEAKICAgICAgICAgICAgIHJxLm9uc3VjY2VzcyA9IHRoaXMuc3RlcF9mdW5jKGZ1bmN0
aW9uKGUpIHsKICAgICAgICAgICAgICAgICB2YXIgY3Vyc29yID0gZS50YXJnZXQucmVzdWx0Owog
Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyh7IG5hbWU6ICJUeXBlRXJyb3IiIH0sCisg
ICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsCiAgICAgICAgICAgICAg
ICAgICAgIGZ1bmN0aW9uKCkgeyBjdXJzb3IuYWR2YW5jZSgtMSk7IH0pOwogCi0gICAgICAgICAg
ICAgICAgYXNzZXJ0X3Rocm93cyh7IG5hbWU6ICJUeXBlRXJyb3IiIH0sCisgICAgICAgICAgICAg
ICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgIGZ1bmN0
aW9uKCkgeyBjdXJzb3IuYWR2YW5jZShOYU4pOyB9KTsKIAotICAgICAgICAgICAgICAgIGFzc2Vy
dF90aHJvd3MoeyBuYW1lOiAiVHlwZUVycm9yIiB9LAorICAgICAgICAgICAgICAgIGFzc2VydF90
aHJvd3NfanMoVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsgY3Vy
c29yLmFkdmFuY2UoMCk7IH0pOwogCi0gICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyh7IG5h
bWU6ICJUeXBlRXJyb3IiIH0sCisgICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBl
RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyBjdXJzb3IuYWR2YW5jZSgt
MCk7IH0pOwogCi0gICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyh7IG5hbWU6ICJUeXBlRXJy
b3IiIH0sCisgICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsCiAgICAg
ICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyBjdXJzb3IuYWR2YW5jZShJbmZpbml0eSk7IH0p
OwogCi0gICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyh7IG5hbWU6ICJUeXBlRXJyb3IiIH0s
CisgICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsCiAgICAgICAgICAg
ICAgICAgICAgIGZ1bmN0aW9uKCkgeyBjdXJzb3IuYWR2YW5jZSgtSW5maW5pdHkpOyB9KTsKIAog
ICAgICAgICAgICAgICAgIHZhciBteXZhciA9IC05OTk5OTk7Ci0gICAgICAgICAgICAgICAgYXNz
ZXJ0X3Rocm93cyh7IG5hbWU6ICJUeXBlRXJyb3IiIH0sCisgICAgICAgICAgICAgICAgYXNzZXJ0
X3Rocm93c19qcyhUeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyBj
dXJzb3IuYWR2YW5jZShteXZhcik7IH0pOwogCiAgICAgICAgICAgICAgICAgdGhpcy5kb25lKCk7
CkBAIC0xNjksNyArMTY5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3MoeyBuYW1lOiAiVHlw
ZUVycm9yIiB9LAorICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLAog
ICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsgY3Vyc29yLmFkdmFuY2UoMCk7IH0pOwog
CiAgICAgICAgICAgICAgICAgY3Vyc29yLmFkdmFuY2UoMSk7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2Fk
dmFuY2VfaW5kZXgyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXBy
aXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2FkdmFuY2VfaW5kZXgyLmh0bWwKaW5kZXggMDhmYjA1
ZDM2MjdjMzhjMGUxYzlkODgxNzcyNWVmMThmMjZmMjZhZC4uMTFlMDFiMWUzMzBiYTI0ZWE5ZmZj
ZjYyNTgxMTUzODNhNTM3MDdiYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9hZHZhbmNlX2luZGV4Mi5odG1s
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2lu
Zy9pZGJjdXJzb3JfYWR2YW5jZV9pbmRleDIuaHRtbApAQCAtMzUsNyArMzUsNyBAQAogICAgICAg
ICAgICAgdmFyIGN1cnNvciA9IGUudGFyZ2V0LnJlc3VsdDsKIAogICAgICAgICAgICAgYXNzZXJ0
X3RydWUoY3Vyc29yICE9IG51bGwsICJjdXJzb3IgZXhpc3QiKTsKLSAgICAgICAgICAgIGFzc2Vy
dF90aHJvd3MobmV3IFR5cGVFcnJvcigpLAorICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhU
eXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7IGN1cnNvci5hZHZhbmNlKGRv
Y3VtZW50KTsgfSk7CiAKICAgICAgICAgICAgIHQuZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9h
ZHZhbmNlX2luZGV4My5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1w
cml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9hZHZhbmNlX2luZGV4My5odG1sCmluZGV4IGY4YTFh
ZWYwNzA3YTMwNTJhODFjYjQxZjFhOWY4YmU2NzI5M2EyMDEuLjVjYzQ4NGVjMWE0NDgwMWMxNDk3
YmU2MGMzMjY4MmExY2ZmODk2ZDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfYWR2YW5jZV9pbmRleDMuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Np
bmcvaWRiY3Vyc29yX2FkdmFuY2VfaW5kZXgzLmh0bWwKQEAgLTM1LDcgKzM1LDcgQEAKICAgICAg
ICAgICAgIHZhciBjdXJzb3IgPSBlLnRhcmdldC5yZXN1bHQ7CiAKICAgICAgICAgICAgIGFzc2Vy
dF90cnVlKGN1cnNvciAhPSBudWxsLCAiY3Vyc29yIGV4aXN0Iik7Ci0gICAgICAgICAgICBhc3Nl
cnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwKKyAgICAgICAgICAgIGFzc2VydF90aHJvd3NfanMo
VHlwZUVycm9yLAogICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyBjdXJzb3IuYWR2YW5jZSgt
MSk7IH0pOwogCiAgICAgICAgICAgICB0LmRvbmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfYWR2YW5j
ZV9pbmRleDYuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0
ZS1icm93c2luZy9pZGJjdXJzb3JfYWR2YW5jZV9pbmRleDYuaHRtbAppbmRleCA3NGQ2NTNjMDk5
NTE0NjM4MDZjM2QxMjMzYzcwYTNjYzg4ZDViMmJkLi41MzhmNTM2MTI0YjIwOTZmYmUzYzgwMDhl
ODk2ZGM2MTE2OTVjMDVlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5k
ZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2FkdmFuY2VfaW5kZXg2Lmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lk
YmN1cnNvcl9hZHZhbmNlX2luZGV4Ni5odG1sCkBAIC0yNiw3ICsyNiw3IEBACiAgICAgICAgICAg
ICB2YXIgY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKICAgICAgICAgICAgIGFzc2VydF90
cnVlKGN1cnNvciBpbnN0YW5jZW9mIElEQkN1cnNvcik7CiAKLSAgICAgICAgICAgIGFzc2VydF90
aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFzc2VydF90
aHJvd3NfanMoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICBjdXJzb3Iu
YWR2YW5jZSgwKTsKICAgICAgICAgICAgIH0sICJDYWxsaW5nIGFkdmFuY2UoKSB3aXRoIGNvdW50
IGFyZ3VtZW50IDAgc2hvdWxkIHRocm93IFR5cGVFcnJvci4iKTsKIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNv
cl9hZHZhbmNlX2luZGV4Ny5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWRE
Qi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9hZHZhbmNlX2luZGV4Ny5odG1sCmluZGV4IDYx
N2NkYTA3YWY2YmM5MzhjNTQ2NjJjNGNlNTYzZmRkNWE2MzM4NDkuLjE1Yjg3MGFjNDJjNzM5Zjc0
YjhlNWZhNWRkYWE3NWM3ZGNjNTJkOGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfYWR2YW5jZV9pbmRleDcu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJv
d3NpbmcvaWRiY3Vyc29yX2FkdmFuY2VfaW5kZXg3Lmh0bWwKQEAgLTI3LDcgKzI3LDcgQEAKICAg
ICAgICAgICAgIGFzc2VydF90cnVlKGN1cnNvciBpbnN0YW5jZW9mIElEQkN1cnNvcik7CiAKICAg
ICAgICAgICAgIGV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5hYm9ydCgpOwotICAgICAgICAgICAg
YXNzZXJ0X3Rocm93cygiVHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yIiwgZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiVHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yIiwg
ZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgY3Vyc29yLmFkdmFuY2UoMSk7CiAgICAgICAg
ICAgICB9LCAiQ2FsbGluZyBhZHZhbmNlKCkgc2hvdWxkIHRocm93cyBhbiBleGNlcHRpb24gVHJh
bnNhY3Rpb25JbmFjdGl2ZUVycm9yIHdoZW4gdGhlIHRyYW5zYWN0aW9uIGlzIG5vdCBhY3RpdmUu
Iik7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJp
dmF0ZS1icm93c2luZy9pZGJjdXJzb3JfYWR2YW5jZV9pbmRleDguaHRtbCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfYWR2YW5j
ZV9pbmRleDguaHRtbAppbmRleCAxY2RlOWFmMWE3YTcxZTBiMzZhODMzOWY1NTc0NmMzYWQ3YmQw
YTYyLi4zMWE3YTNmODU2OWVlOThkOGIzODYyZDAwZGFmODgxZDdjYTY3YzViIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRi
Y3Vyc29yX2FkdmFuY2VfaW5kZXg4Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9hZHZhbmNlX2luZGV4OC5odG1s
CkBAIC0yNyw3ICsyNyw3IEBACiAgICAgICAgICAgICBhc3NlcnRfdHJ1ZShjdXJzb3IgaW5zdGFu
Y2VvZiBJREJDdXJzb3IpOwogCiAgICAgICAgICAgICBjdXJzb3IuYWR2YW5jZSgxKTsKLSAgICAg
ICAgICAgIGFzc2VydF90aHJvd3MoIkludmFsaWRTdGF0ZUVycm9yIiwgZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiSW52YWxpZFN0YXRlRXJyb3IiLCBmdW5jdGlv
bigpIHsKICAgICAgICAgICAgICAgICBjdXJzb3IuYWR2YW5jZSgxKTsKICAgICAgICAgICAgIH0s
ICJDYWxsaW5nIGFkdmFuY2UoKSBzaG91bGQgdGhyb3cgRE9NRXhjZXB0aW9uIHdoZW4gdGhlIGN1
cnNvciBpcyBjdXJyZW50bHkgYmVpbmcgaXRlcmF0ZWQuIik7CiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3Jf
YWR2YW5jZV9pbmRleDkuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREIt
cHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfYWR2YW5jZV9pbmRleDkuaHRtbAppbmRleCAwOTFj
MWJjYmM5YjVjMGM0MzVlMzdhMmVjZWE2ZmYzN2ZlZThjMTAxLi44MzlkM2VhOGIyNDBiZTZiZjEy
MDk0ODg5MGE2N2Q5OWRhNWM2MTg1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2FkdmFuY2VfaW5kZXg5Lmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dz
aW5nL2lkYmN1cnNvcl9hZHZhbmNlX2luZGV4OS5odG1sCkBAIC0yNiw3ICsyNiw3IEBACiAgICAg
ICAgICAgICBhc3NlcnRfdHJ1ZShjdXJzb3IgaW5zdGFuY2VvZiBJREJDdXJzb3IsICJjdXJzb3Ig
ZXhpc3QiKTsKIAogICAgICAgICAgICAgZGIuZGVsZXRlT2JqZWN0U3RvcmUoInN0b3JlIik7Ci0g
ICAgICAgICAgICBhc3NlcnRfdGhyb3dzKCJJbnZhbGlkU3RhdGVFcnJvciIsIGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkludmFsaWRTdGF0ZUVycm9yIiwgZnVu
Y3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgY3Vyc29yLmFkdmFuY2UoMSk7CiAgICAgICAgICAg
ICB9LCAiSWYgdGhlIGN1cnNvcidzIHNvdXJjZSBvciBlZmZlY3RpdmUgb2JqZWN0IHN0b3JlIGhh
cyBiZWVuIGRlbGV0ZWQsIHRoZSBpbXBsZW1lbnRhdGlvbiBNVVNUIHRocm93IGEgRE9NRXhjZXB0
aW9uIG9mIHR5cGUgSW52YWxpZFN0YXRlRXJyb3IiKTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9hZHZh
bmNlX29iamVjdHN0b3JlMi5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWRE
Qi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9hZHZhbmNlX29iamVjdHN0b3JlMi5odG1sCmlu
ZGV4IDVhY2Y3ZmY4MDNhMGM2NTFjNTUwNmNhNDc0OTM1N2RkMzQ3YjdiMjguLjYxNDQ5MTgxZWYz
ZmZiNGRkNTU1NWYwMDQwZTkyMjMxOTQ5NmU3YTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfYWR2YW5jZV9v
YmplY3RzdG9yZTIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERC
LXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2FkdmFuY2Vfb2JqZWN0c3RvcmUyLmh0bWwKQEAg
LTI5LDcgKzI5LDcgQEAKICAgICAgICAgICAgIHZhciBjdXJzb3IgPSBldmVudC50YXJnZXQucmVz
dWx0OwogICAgICAgICAgICAgYXNzZXJ0X3RydWUoY3Vyc29yIGluc3RhbmNlb2YgSURCQ3Vyc29y
KTsKIAotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkg
ewogICAgICAgICAgICAgICAgIGN1cnNvci5hZHZhbmNlKDApOwogICAgICAgICAgICAgfSwgIkNh
bGxpbmcgYWR2YW5jZSgpIHdpdGggY291bnQgYXJndW1lbnQgMCBzaG91bGQgdGhyb3cgVHlwZUVy
cm9yLiIpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERC
LXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2FkdmFuY2Vfb2JqZWN0c3RvcmUzLmh0bWwgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vy
c29yX2FkdmFuY2Vfb2JqZWN0c3RvcmUzLmh0bWwKaW5kZXggOThiNTc3NTI0N2Y0ZWU0YmRmM2Ri
YmI1ZDI1N2JmNGIwYmE1NzExOS4uOTU2NmY0NWUyNTkzMjIwYmY5ZWIzYjFkYjkzYjZmOGM3YWNh
ZGNkZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2
YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9hZHZhbmNlX29iamVjdHN0b3JlMy5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJz
b3JfYWR2YW5jZV9vYmplY3RzdG9yZTMuaHRtbApAQCAtMzAsNyArMzAsNyBAQAogICAgICAgICAg
ICAgYXNzZXJ0X3RydWUoY3Vyc29yIGluc3RhbmNlb2YgSURCQ3Vyc29yKTsKIAogICAgICAgICAg
ICAgZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLmFib3J0KCk7Ci0gICAgICAgICAgICBhc3NlcnRf
dGhyb3dzKCJUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3IiLCBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgIGFzc2VydF90aHJvd3NfZG9tKCJUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3IiLCBmdW5jdGlv
bigpIHsKICAgICAgICAgICAgICAgICBjdXJzb3IuYWR2YW5jZSgxKTsKICAgICAgICAgICAgIH0s
ICJDYWxsaW5nIGFkdmFuY2UoKSBzaG91bGQgdGhyb3dzIGFuIGV4Y2VwdGlvbiBUcmFuc2FjdGlv
bkluYWN0aXZlRXJyb3Igd2hlbiB0aGUgdHJhbnNhY3Rpb24gaXMgbm90IGFjdGl2ZSIpOwogCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJv
d3NpbmcvaWRiY3Vyc29yX2FkdmFuY2Vfb2JqZWN0c3RvcmU0Lmh0bWwgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2FkdmFuY2Vf
b2JqZWN0c3RvcmU0Lmh0bWwKaW5kZXggZGFiZjhlODY5NzM3NjFhOGVkYTcwYWFkYjk2NGY1NmEy
YjliY2RhOS4uMWM4OTQ3ZjA4NzI2ZGY1YTJkMDFhNjhhMzM5MjU3YTJlODkzZTNjOSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5n
L2lkYmN1cnNvcl9hZHZhbmNlX29iamVjdHN0b3JlNC5odG1sCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfYWR2YW5jZV9v
YmplY3RzdG9yZTQuaHRtbApAQCAtMzAsNyArMzAsNyBAQAogICAgICAgICAgICAgYXNzZXJ0X3Ry
dWUoY3Vyc29yIGluc3RhbmNlb2YgSURCQ3Vyc29yKTsKIAogICAgICAgICAgICAgY3Vyc29yLmFk
dmFuY2UoMSk7Ci0gICAgICAgICAgICBhc3NlcnRfdGhyb3dzKCJJbnZhbGlkU3RhdGVFcnJvciIs
IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkludmFsaWRTdGF0
ZUVycm9yIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgY3Vyc29yLmFkdmFuY2UoMSk7
CiAgICAgICAgICAgICB9LCAiQ2FsbGluZyBhZHZhbmNlKCkgc2hvdWxkIHRocm93IERPTUV4Y2Vw
dGlvbiB3aGVuIHRoZSBjdXJzb3IgaXMgY3VycmVudGx5IGJlaW5nIGl0ZXJhdGVkLiIpOwogCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJv
d3NpbmcvaWRiY3Vyc29yX2FkdmFuY2Vfb2JqZWN0c3RvcmU1Lmh0bWwgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2FkdmFuY2Vf
b2JqZWN0c3RvcmU1Lmh0bWwKaW5kZXggZmY2MWY2ZjM2NmEzNjg3ZWMzODkyZjIxNTg3NTc3MDcw
YTJhMWUxMS4uYzY3MzgyYTQ0YzkzYzQ0NGYzMWRjYzg4OWRiZDE0YjJjYzA0ZWExZCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5n
L2lkYmN1cnNvcl9hZHZhbmNlX29iamVjdHN0b3JlNS5odG1sCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfYWR2YW5jZV9v
YmplY3RzdG9yZTUuaHRtbApAQCAtMjUsNyArMjUsNyBAQAogICAgICAgICAgICAgYXNzZXJ0X3Ry
dWUoY3Vyc29yIGluc3RhbmNlb2YgSURCQ3Vyc29yLCAiY3Vyc29yIGV4aXN0Iik7CiAKICAgICAg
ICAgICAgIGRiLmRlbGV0ZU9iamVjdFN0b3JlKCJzdG9yZSIpOwotICAgICAgICAgICAgYXNzZXJ0
X3Rocm93cygiSW52YWxpZFN0YXRlRXJyb3IiLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFz
c2VydF90aHJvd3NfZG9tKCJJbnZhbGlkU3RhdGVFcnJvciIsIGZ1bmN0aW9uKCkgewogICAgICAg
ICAgICAgICAgIGN1cnNvci5hZHZhbmNlKDEpOwogICAgICAgICAgICAgfSwgIklmIHRoZSBjdXJz
b3IncyBzb3VyY2Ugb3IgZWZmZWN0aXZlIG9iamVjdCBzdG9yZSBoYXMgYmVlbiBkZWxldGVkLCB0
aGUgaW1wbGVtZW50YXRpb24gTVVTVCB0aHJvdyBhIERPTUV4Y2VwdGlvbiBvZiB0eXBlIEludmFs
aWRTdGF0ZUVycm9yIik7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9J
bmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfY29udGludWVfaW5kZXgyLmh0bWwg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRi
Y3Vyc29yX2NvbnRpbnVlX2luZGV4Mi5odG1sCmluZGV4IDNhODg5OGNkNmY3NTMyNWI1ZmY1NDM4
NDNjZDExOWIyNWE4OTE4NTIuLmVhNjc1YmRiNmRjOWRkNmUzMjE4NDk4MmIyMzJlZTZlMzJhMTcz
ODkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0
ZS1icm93c2luZy9pZGJjdXJzb3JfY29udGludWVfaW5kZXgyLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9jb250
aW51ZV9pbmRleDIuaHRtbApAQCAtMzUsNyArMzUsNyBAQAogICAgICAgICBjdXJzb3JfcnEub25z
dWNjZXNzID0gdC5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgdmFyIGN1cnNv
ciA9IGUudGFyZ2V0LnJlc3VsdDsKIAotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygiRGF0YUVy
cm9yIiwKKyAgICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJEYXRhRXJyb3IiLAogICAgICAg
ICAgICAgICAgIGZ1bmN0aW9uKCkgeyBjdXJzb3IuY29udGludWUoZG9jdW1lbnQpOyB9KTsKIAog
ICAgICAgICAgICAgYXNzZXJ0X3RydWUoY3Vyc29yIGluc3RhbmNlb2YgSURCQ3Vyc29yV2l0aFZh
bHVlLCAiY3Vyc29yIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5k
ZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2NvbnRpbnVlX2luZGV4My5odG1sIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1
cnNvcl9jb250aW51ZV9pbmRleDMuaHRtbAppbmRleCA1NWVlZmEzNzIxZjQ1MTQyZGUyNzdmNzhk
NTI4YTk5Mjk3ODJiMGE5Li4xODEwNTc0ZTllNWFkNzMxNzExOWM5MWY0OTg3NDFlZDgwNzg3MGJm
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUt
YnJvd3NpbmcvaWRiY3Vyc29yX2NvbnRpbnVlX2luZGV4My5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfY29udGlu
dWVfaW5kZXgzLmh0bWwKQEAgLTQwLDcgKzQwLDcgQEAKICAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgLy8gRmlyc3QgdGltZSBjaGVja3Mga2V5IGVxdWFsLCBzZWNvbmQgdGltZSBjaGVja3Mg
a2V5IGxlc3MgdGhhbgotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygiRGF0YUVycm9yIiwKKyAg
ICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJEYXRhRXJyb3IiLAogICAgICAgICAgICAgICAg
IGZ1bmN0aW9uKCkgeyBjdXJzb3IuY29udGludWUocmVjb3Jkc1swXS5pS2V5KTsgfSk7CiAKICAg
ICAgICAgICAgIGN1cnNvci5jb250aW51ZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9jb250aW51ZV9p
bmRleDQuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1i
cm93c2luZy9pZGJjdXJzb3JfY29udGludWVfaW5kZXg0Lmh0bWwKaW5kZXggZDQxNmM5ZjU4ZWRk
ZDBkNDE1ZWY0MWU5MzAxMWEwNzFlOGFjZGEwYS4uMzU1NDZiNDE1MDIyZWEwYjViY2MzZDc3YWMz
NmYxNGEwZmY1NjA2YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4
ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9jb250aW51ZV9pbmRleDQuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRi
Y3Vyc29yX2NvbnRpbnVlX2luZGV4NC5odG1sCkBAIC00Nyw3ICs0Nyw3IEBACiAgICAgICAgICAg
ICBjYXNlIDE6CiAgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyZWNvcmQucEtleSwgcmVj
b3Jkc1sxXS5wS2V5LCAic2Vjb25kIHBLZXkiKTsKICAgICAgICAgICAgICAgICBhc3NlcnRfZXF1
YWxzKHJlY29yZC5pS2V5LCByZWNvcmRzWzFdLmlLZXksICJzZWNvbmQgaUtleSIpOwotICAgICAg
ICAgICAgICAgIGFzc2VydF90aHJvd3MoIkRhdGFFcnJvciIsCisgICAgICAgICAgICAgICAgYXNz
ZXJ0X3Rocm93c19kb20oIkRhdGFFcnJvciIsCiAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9u
KCkgeyBjdXJzb3IuY29udGludWUoImluZGV4S2V5XzIiKTsgfSk7CiAgICAgICAgICAgICAgICAg
dC5kb25lKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2NvbnRp
bnVlX2luZGV4Ny5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2
YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9jb250aW51ZV9pbmRleDcuaHRtbAppbmRleCA1YWU2MDk4
YWYwZGExOGJiN2M2MTNkMjMxOGU4YWExMzNkNTA5ZGY5Li4zZmUyMDkyYWVhZjdmMmE3OGZiMGQz
Y2I3MjkwNGIyYmNhZDVmMDc5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
SW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2NvbnRpbnVlX2luZGV4Ny5odG1s
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2lu
Zy9pZGJjdXJzb3JfY29udGludWVfaW5kZXg3Lmh0bWwKQEAgLTI3LDcgKzI3LDcgQEAKICAgICAg
ICAgICAgIGFzc2VydF90cnVlKGN1cnNvciBpbnN0YW5jZW9mIElEQkN1cnNvcik7CiAKICAgICAg
ICAgICAgIGV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5hYm9ydCgpOwotICAgICAgICAgICAgYXNz
ZXJ0X3Rocm93cygiVHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yIiwgZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiVHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yIiwgZnVu
Y3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgY3Vyc29yLmNvbnRpbnVlKCk7CiAgICAgICAgICAg
ICB9LCAiQ2FsbGluZyBjb250aW51ZSgpIHNob3VsZCB0aHJvd3MgYW4gZXhjZXB0aW9uIFRyYW5z
YWN0aW9uSW5hY3RpdmVFcnJvciB3aGVuIHRoZSB0cmFuc2FjdGlvbiBpcyBub3QgYWN0aXZlLiIp
OwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZh
dGUtYnJvd3NpbmcvaWRiY3Vyc29yX2NvbnRpbnVlX2luZGV4OC5odG1sIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9jb250aW51
ZV9pbmRleDguaHRtbAppbmRleCA2ZWU1N2Y1YmQyNGQyZjczNDc0NGZhZWM5MjA5YjlkNmZjYjE2
MzJiLi4yZjdhYzIxODEwZDQ5NDgzNTk5ZTIzMjgyNzhlZjczODJjZDJiNGZiIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRi
Y3Vyc29yX2NvbnRpbnVlX2luZGV4OC5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfY29udGludWVfaW5kZXg4Lmh0
bWwKQEAgLTI3LDcgKzI3LDcgQEAKICAgICAgICAgICAgIGFzc2VydF90cnVlKGN1cnNvciBpbnN0
YW5jZW9mIElEQkN1cnNvcik7CiAKICAgICAgICAgICAgIGRiLmRlbGV0ZU9iamVjdFN0b3JlKCJz
dG9yZSIpOwotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygiSW52YWxpZFN0YXRlRXJyb3IiLCBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlkU3RhdGVF
cnJvciIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgIGN1cnNvci5jb250aW51ZSgpOwog
ICAgICAgICAgICAgfSwgIklmIHRoZSBjdXJzb3IncyBzb3VyY2Ugb3IgZWZmZWN0aXZlIG9iamVj
dCBzdG9yZSBoYXMgYmVlbiBkZWxldGVkLCB0aGUgaW1wbGVtZW50YXRpb24gTVVTVCB0aHJvdyBh
IERPTUV4Y2VwdGlvbiBvZiB0eXBlIEludmFsaWRTdGF0ZUVycm9yIik7CiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJj
dXJzb3JfY29udGludWVfaW52YWxpZC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0lu
ZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9jb250aW51ZV9pbnZhbGlkLmh0bWwK
aW5kZXggNjU3YTZhMDJjMDZlMzU4MGZkMjQ1YmYxMjY2N2IyYjhmM2U1ZTIwNS4uNWE5YzQwZjYy
ZjQ2ZTcwMzAyOGUxZWEyMWEyZjFkN2Q2ZjUzMzIyNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9jb250aW51
ZV9pbnZhbGlkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1w
cml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9jb250aW51ZV9pbnZhbGlkLmh0bWwKQEAgLTM5LDEw
ICszOSwxMCBAQAogICAgICAgICAgICAgY3Vyc29yLmNvbnRpbnVlKHVuZGVmaW5lZCk7CiAKICAg
ICAgICAgICAgIC8vIFNlY29uZCB0cnkKLSAgICAgICAgICAgIGFzc2VydF90aHJvd3MoJ0ludmFs
aWRTdGF0ZUVycm9yJywKKyAgICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCdJbnZhbGlkU3Rh
dGVFcnJvcicsCiAgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7IGN1cnNvci5jb250aW51ZSgp
OyB9LCAnc2Vjb25kIGNvbnRpbnVlJyk7CiAKLSAgICAgICAgICAgIGFzc2VydF90aHJvd3MoJ0lu
dmFsaWRTdGF0ZUVycm9yJywKKyAgICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCdJbnZhbGlk
U3RhdGVFcnJvcicsCiAgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7IGN1cnNvci5jb250aW51
ZSgzKTsgfSwgJ3RoaXJkIGNvbnRpbnVlJyk7CiAKICAgICAgICAgICAgIGNvdW50Kys7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Np
bmcvaWRiY3Vyc29yX2NvbnRpbnVlX29iamVjdHN0b3JlMi5odG1sIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9jb250aW51ZV9v
YmplY3RzdG9yZTIuaHRtbAppbmRleCA0NGU0MzhmZTk3ODg1MmQzNTE0MWZhMzk2ZmRhMDk5ZjMx
YzliMGQwLi41ZmFiMThjZTY2MTAxNmM0NmQ5ZmIzZDEyZjZmZTZhZDFmMWMzY2U3IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Npbmcv
aWRiY3Vyc29yX2NvbnRpbnVlX29iamVjdHN0b3JlMi5odG1sCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfY29udGludWVf
b2JqZWN0c3RvcmUyLmh0bWwKQEAgLTI5LDcgKzI5LDcgQEAKICAgICAgICAgICAgIHZhciBjdXJz
b3IgPSBlLnRhcmdldC5yZXN1bHQ7CiAKICAgICAgICAgICAgIGFzc2VydF90cnVlKGN1cnNvciBp
bnN0YW5jZW9mIElEQkN1cnNvciwgImN1cnNvciBleGlzdHMiKTsKLSAgICAgICAgICAgIGFzc2Vy
dF90aHJvd3MoIkRhdGFFcnJvciIsCisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiRGF0
YUVycm9yIiwKICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsgY3Vyc29yLmNvbnRpbnVlKGRv
Y3VtZW50KTsgfSk7CiAKICAgICAgICAgICAgIHQuZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9j
b250aW51ZV9vYmplY3RzdG9yZTMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRl
eGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfY29udGludWVfb2JqZWN0c3RvcmUzLmh0
bWwKaW5kZXggYzgwNDJlNGE0ZGZmMzAwMmJmOTEyZWUzNTBjZjFlNjZhODJlNjBhOS4uNzQwYWI1
ZGM1YTQ2Y2IwMzM4MTFkNDBlNDA1NWE5MTI5MmZjY2U0MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9jb250
aW51ZV9vYmplY3RzdG9yZTMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5k
ZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2NvbnRpbnVlX29iamVjdHN0b3JlMy5o
dG1sCkBAIC0yOSw3ICsyOSw3IEBACiAgICAgICAgICAgICB2YXIgY3Vyc29yID0gZS50YXJnZXQu
cmVzdWx0OwogCiAgICAgICAgICAgICBhc3NlcnRfdHJ1ZShjdXJzb3IgaW5zdGFuY2VvZiBJREJD
dXJzb3IsICJjdXJzb3IgZXhpc3QiKTsKLSAgICAgICAgICAgIGFzc2VydF90aHJvd3MoIkRhdGFF
cnJvciIsCisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiRGF0YUVycm9yIiwKICAgICAg
ICAgICAgICAgICBmdW5jdGlvbigpIHsgY3Vyc29yLmNvbnRpbnVlKHJlY29yZHNbMF0ucEtleSk7
IH0pOwogCiAgICAgICAgICAgICB0LmRvbmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfY29udGludWVf
b2JqZWN0c3RvcmU0Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXBy
aXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2NvbnRpbnVlX29iamVjdHN0b3JlNC5odG1sCmluZGV4
IDYwZDkxZDliMTIyNjJmMTQzZmJhZWMzMzJkYjYyNzMxMjg1YjNmMGIuLmFhMGZkYjA3MjRhZDM4
NjdmZjZkZTRiZGZhMmJiMjFjMjcxZThlNzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfY29udGludWVfb2Jq
ZWN0c3RvcmU0Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1w
cml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9jb250aW51ZV9vYmplY3RzdG9yZTQuaHRtbApAQCAt
NDAsNyArNDAsNyBAQAogCiAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAgYXNz
ZXJ0X2VxdWFscyhjdXJzb3IudmFsdWUucEtleSwgcmVjb3Jkc1sxXS5wS2V5LCAic2Vjb25kIGN1
cnNvciBwa2V5Iik7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygiRGF0YUVycm9yIiwK
KyAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiRGF0YUVycm9yIiwKICAgICAgICAg
ICAgICAgICAgICAgZnVuY3Rpb24oKSB7IGN1cnNvci5jb250aW51ZShyZWNvcmRzWzJdLnBLZXkp
OyB9KTsKICAgICAgICAgICAgICAgICB0LmRvbmUoKTsKICAgICAgICAgICAgICAgICBicmVhazsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1i
cm93c2luZy9pZGJjdXJzb3JfY29udGludWVfb2JqZWN0c3RvcmU1Lmh0bWwgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2NvbnRp
bnVlX29iamVjdHN0b3JlNS5odG1sCmluZGV4IDAyNjMxNWNiZDAzNTc2YWMyYzI1ZDI4YjVhOTk5
ZmU3YTExNTcyYzUuLmQ2ZjhmM2Q2NmZkNWM1NzRmMDgzMTVmZjY5M2JlYzY5ODVjM2UyOTIgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93
c2luZy9pZGJjdXJzb3JfY29udGludWVfb2JqZWN0c3RvcmU1Lmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9jb250
aW51ZV9vYmplY3RzdG9yZTUuaHRtbApAQCAtMzEsNyArMzEsNyBAQAogICAgICAgICAgICAgYXNz
ZXJ0X3RydWUoY3Vyc29yIGluc3RhbmNlb2YgSURCQ3Vyc29yLCAiY3Vyc29yIGV4aXN0cyIpOwog
CiAgICAgICAgICAgICBlLnRhcmdldC50cmFuc2FjdGlvbi5hYm9ydCgpOwotICAgICAgICAgICAg
YXNzZXJ0X3Rocm93cygiVHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yIiwgZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiVHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yIiwg
ZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgY3Vyc29yLmNvbnRpbnVlKCk7CiAgICAgICAg
ICAgICB9LCAiQ2FsbGluZyBjb250aW51ZSgpIHNob3VsZCB0aHJvd3MgYW4gZXhjZXB0aW9uIFRy
YW5zYWN0aW9uSW5hY3RpdmVFcnJvciB3aGVuIHRoZSB0cmFuc2FjdGlvbiBpcyBub3QgYWN0aXZl
LiIpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXBy
aXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2NvbnRpbnVlX29iamVjdHN0b3JlNi5odG1sIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNv
cl9jb250aW51ZV9vYmplY3RzdG9yZTYuaHRtbAppbmRleCBiNTY5NTU5ZjhlOTY4ZWUyOTJkYThm
Y2M0MThiODcwYWFhMmEzYjJkLi5iZjQzNjM4Yjk3YWQwY2UwMDcxOWY4MGVkNTkwZWUzZWRhYTRm
ODE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZh
dGUtYnJvd3NpbmcvaWRiY3Vyc29yX2NvbnRpbnVlX29iamVjdHN0b3JlNi5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJz
b3JfY29udGludWVfb2JqZWN0c3RvcmU2Lmh0bWwKQEAgLTI3LDcgKzI3LDcgQEAKICAgICAgICAg
ICAgIGFzc2VydF90cnVlKGN1cnNvciBpbnN0YW5jZW9mIElEQkN1cnNvciwgImN1cnNvciBleGlz
dHMiKTsKIAogICAgICAgICAgICAgZGIuZGVsZXRlT2JqZWN0U3RvcmUoInRlc3QiKTsKLSAgICAg
ICAgICAgIGFzc2VydF90aHJvd3MoIkludmFsaWRTdGF0ZUVycm9yIiwgZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiSW52YWxpZFN0YXRlRXJyb3IiLCBmdW5jdGlv
bigpIHsKICAgICAgICAgICAgICAgICBjdXJzb3IuY29udGludWUoKTsKICAgICAgICAgICAgIH0s
ICJJZiB0aGUgY3Vyc29yJ3Mgc291cmNlIG9yIGVmZmVjdGl2ZSBvYmplY3Qgc3RvcmUgaGFzIGJl
ZW4gZGVsZXRlZCwgdGhlIGltcGxlbWVudGF0aW9uIE1VU1QgdGhyb3cgYSBET01FeGNlcHRpb24g
b2YgdHlwZSBJbnZhbGlkU3RhdGVFcnJvciIpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2RlbGV0ZV9p
bmRleDIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1i
cm93c2luZy9pZGJjdXJzb3JfZGVsZXRlX2luZGV4Mi5odG1sCmluZGV4IDEzM2Y5MTI0NDg4OGY0
YjA5NmY0NjNhMDQ4NDMzYzU0ODc1MzExOGMuLjEwYWQ4YmI1ZjVkNGFjNDk0MDgxZDZjYzU0YTkw
NDE5ZjdkNDJhM2EgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVk
REItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfZGVsZXRlX2luZGV4Mi5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJz
b3JfZGVsZXRlX2luZGV4Mi5odG1sCkBAIC0zMiw3ICszMiw3IEBACiAgICAgICAgICAgICB2YXIg
Y3Vyc29yID0gZS50YXJnZXQucmVzdWx0OwogCiAgICAgICAgICAgICBhc3NlcnRfdHJ1ZShjdXJz
b3IgaW5zdGFuY2VvZiBJREJDdXJzb3IsICJjdXJzb3IgZXhpc3QiKTsKLSAgICAgICAgICAgIGFz
c2VydF90aHJvd3MoJ1JlYWRPbmx5RXJyb3InLCBmdW5jdGlvbigpIHsgY3Vyc29yLmRlbGV0ZSgp
OyB9KTsKKyAgICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCdSZWFkT25seUVycm9yJywgZnVu
Y3Rpb24oKSB7IGN1cnNvci5kZWxldGUoKTsgfSk7CiAgICAgICAgICAgICB0LmRvbmUoKTsKICAg
ICAgICAgfSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0lu
ZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9kZWxldGVfaW5kZXgzLmh0bWwgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vy
c29yX2RlbGV0ZV9pbmRleDMuaHRtbAppbmRleCBjMWMzMDQ0YjNmNWMwYmZjZjU1ZmNjMWIwNWMx
MTQ5MmFhZWE0YWRmLi43YTZlYjIyNDJiMGJhZTAxNWJiNDJlN2I2NjhjMzAwMzQ0NDBjNTc5IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJv
d3NpbmcvaWRiY3Vyc29yX2RlbGV0ZV9pbmRleDMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2RlbGV0ZV9pbmRl
eDMuaHRtbApAQCAtMzAsNyArMzAsNyBAQAogICAgICAgICB9KTsKIAogICAgICAgICBlLnRhcmdl
dC50cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gdC5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgewotICAg
ICAgICAgICAgYXNzZXJ0X3Rocm93cygnVHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yJywgZnVuY3Rp
b24oKSB7IHdpbmRvdy5jdXJzb3IuZGVsZXRlKCk7IH0pCisgICAgICAgICAgICBhc3NlcnRfdGhy
b3dzX2RvbSgnVHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yJywgZnVuY3Rpb24oKSB7IHdpbmRvdy5j
dXJzb3IuZGVsZXRlKCk7IH0pCiAgICAgICAgICAgICB0LmRvbmUoKTsKICAgICAgICAgfSk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2
YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9kZWxldGVfaW5kZXg0Lmh0bWwgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2RlbGV0ZV9p
bmRleDQuaHRtbAppbmRleCBmZjZlNTc2NzQwOWQ3ZDZmY2Y3YmE4YjhmN2VjMzk1MjM2NGI0ODg0
Li4wMDlmODQwOWI0NTdhMmI3OWRmOGNiMjkyMDYyN2FhYWFiNWM3YzAyIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vy
c29yX2RlbGV0ZV9pbmRleDQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5k
ZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2RlbGV0ZV9pbmRleDQuaHRtbApAQCAt
MjcsNyArMjcsNyBAQAogICAgICAgICAgICAgYXNzZXJ0X3RydWUoY3Vyc29yIGluc3RhbmNlb2Yg
SURCQ3Vyc29yLCAiY3Vyc29yIGV4aXN0Iik7CiAKICAgICAgICAgICAgIGRiLmRlbGV0ZU9iamVj
dFN0b3JlKCJzdG9yZSIpOwotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygiSW52YWxpZFN0YXRl
RXJyb3IiLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZh
bGlkU3RhdGVFcnJvciIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgIGN1cnNvci5kZWxl
dGUoKTsKICAgICAgICAgICAgIH0sICJJZiB0aGUgY3Vyc29yJ3Mgc291cmNlIG9yIGVmZmVjdGl2
ZSBvYmplY3Qgc3RvcmUgaGFzIGJlZW4gZGVsZXRlZCwgdGhlIGltcGxlbWVudGF0aW9uIE1VU1Qg
dGhyb3cgYSBET01FeGNlcHRpb24gb2YgdHlwZSBJbnZhbGlkU3RhdGVFcnJvciIpOwogCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Np
bmcvaWRiY3Vyc29yX2RlbGV0ZV9pbmRleDUuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfZGVsZXRlX2luZGV4NS5odG1s
CmluZGV4IDRmYzBlMjk2N2Q2MmMzNzBkY2I2NGRjMDc1ZGE5MWRhZDVhZmIxM2EuLjM2MDBhODJh
ZDQ1ODI5OTliNDIwODdhZWMzMzI0NDUxYTNkNDZmYmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfZGVsZXRl
X2luZGV4NS5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJp
dmF0ZS1icm93c2luZy9pZGJjdXJzb3JfZGVsZXRlX2luZGV4NS5odG1sCkBAIC0yOCw3ICsyOCw3
IEBACiAgICAgICAgICAgICBhc3NlcnRfdHJ1ZShjdXJzb3IgaW5zdGFuY2VvZiBJREJDdXJzb3Is
ICJjdXJzb3IgZXhpc3QiKTsKIAogICAgICAgICAgICAgY3Vyc29yLmNvbnRpbnVlKCk7Ci0gICAg
ICAgICAgICBhc3NlcnRfdGhyb3dzKCJJbnZhbGlkU3RhdGVFcnJvciIsIGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkludmFsaWRTdGF0ZUVycm9yIiwgZnVuY3Rp
b24oKSB7CiAgICAgICAgICAgICAgICAgY3Vyc29yLmRlbGV0ZSgpOwogICAgICAgICAgICAgfSk7
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0
ZS1icm93c2luZy9pZGJjdXJzb3JfZGVsZXRlX29iamVjdHN0b3JlMi5odG1sIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9kZWxl
dGVfb2JqZWN0c3RvcmUyLmh0bWwKaW5kZXggY2M1N2U5OWY2OTVkNjlmNjlhNDQyODI3YzZjNjU3
OGE2YzI1MzMzYS4uNzc1OWM3MmU5MTY5YmE5YjhjZjM0NDZmOTE2ODA1MDc3OTFjM2NkMiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dz
aW5nL2lkYmN1cnNvcl9kZWxldGVfb2JqZWN0c3RvcmUyLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9kZWxldGVf
b2JqZWN0c3RvcmUyLmh0bWwKQEAgLTMwLDcgKzMwLDcgQEAKICAgICAgICAgICAgIHZhciBjdXJz
b3IgPSBlLnRhcmdldC5yZXN1bHQ7CiAKICAgICAgICAgICAgIGFzc2VydF90cnVlKGN1cnNvciAh
PSBudWxsLCAiY3Vyc29yIGV4aXN0Iik7Ci0gICAgICAgICAgICBhc3NlcnRfdGhyb3dzKCdSZWFk
T25seUVycm9yJywgZnVuY3Rpb24oKSB7IGN1cnNvci5kZWxldGUoKTsgfSk7CisgICAgICAgICAg
ICBhc3NlcnRfdGhyb3dzX2RvbSgnUmVhZE9ubHlFcnJvcicsIGZ1bmN0aW9uKCkgeyBjdXJzb3Iu
ZGVsZXRlKCk7IH0pOwogICAgICAgICAgICAgdC5kb25lKCk7CiAgICAgICAgIH0pOwogICAgIH0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1i
cm93c2luZy9pZGJjdXJzb3JfZGVsZXRlX29iamVjdHN0b3JlMy5odG1sIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9kZWxldGVf
b2JqZWN0c3RvcmUzLmh0bWwKaW5kZXggYjJmZDgyMDFhZGMzMDI4OWY4NjA4NTZjZTllYTUzMzhi
NzJjZDJmOS4uZjgyNWI4YTQxMmVkYzhkZmEwZTY4NzM5MTBjYzg2ZjQ4ZGE4ZjczMCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5n
L2lkYmN1cnNvcl9kZWxldGVfb2JqZWN0c3RvcmUzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9kZWxldGVfb2Jq
ZWN0c3RvcmUzLmh0bWwKQEAgLTI5LDcgKzI5LDcgQEAKICAgICAgICAgfSk7CiAKICAgICAgICAg
ZS50YXJnZXQudHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IHQuc3RlcF9mdW5jKGZ1bmN0aW9uKGUp
IHsKLSAgICAgICAgICAgIGFzc2VydF90aHJvd3MoJ1RyYW5zYWN0aW9uSW5hY3RpdmVFcnJvcics
IGZ1bmN0aW9uKCkgeyB3aW5kb3cuY3Vyc29yLmRlbGV0ZSgpOyB9KQorICAgICAgICAgICAgYXNz
ZXJ0X3Rocm93c19kb20oJ1RyYW5zYWN0aW9uSW5hY3RpdmVFcnJvcicsIGZ1bmN0aW9uKCkgeyB3
aW5kb3cuY3Vyc29yLmRlbGV0ZSgpOyB9KQogICAgICAgICAgICAgdC5kb25lKCk7CiAgICAgICAg
IH0pOwogICAgIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVk
REItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfZGVsZXRlX29iamVjdHN0b3JlNC5odG1sIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1
cnNvcl9kZWxldGVfb2JqZWN0c3RvcmU0Lmh0bWwKaW5kZXggYjk3NzVjOGYxNjYzMmEzYzM2YWFi
MjZhMTliYTk3ZGQ3NjIzNDc5YS4uMTdiMThkMGFmNTE1OWIyYmUxZWVmYWNhYTczMTY1OWEwMzVh
OTI4MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2
YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9kZWxldGVfb2JqZWN0c3RvcmU0Lmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNv
cl9kZWxldGVfb2JqZWN0c3RvcmU0Lmh0bWwKQEAgLTI2LDcgKzI2LDcgQEAKICAgICAgICAgICAg
IGFzc2VydF90cnVlKGN1cnNvciBpbnN0YW5jZW9mIElEQkN1cnNvciwgImN1cnNvciBleGlzdCIp
OwogCiAgICAgICAgICAgICBkYi5kZWxldGVPYmplY3RTdG9yZSgic3RvcmUiKTsKLSAgICAgICAg
ICAgIGFzc2VydF90aHJvd3MoIkludmFsaWRTdGF0ZUVycm9yIiwgZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiSW52YWxpZFN0YXRlRXJyb3IiLCBmdW5jdGlvbigp
IHsKICAgICAgICAgICAgICAgICBjdXJzb3IuZGVsZXRlKCk7CiAgICAgICAgICAgICB9LCAiSWYg
dGhlIGN1cnNvcidzIHNvdXJjZSBvciBlZmZlY3RpdmUgb2JqZWN0IHN0b3JlIGhhcyBiZWVuIGRl
bGV0ZWQsIHRoZSBpbXBsZW1lbnRhdGlvbiBNVVNUIHRocm93IGEgRE9NRXhjZXB0aW9uIG9mIHR5
cGUgSW52YWxpZFN0YXRlRXJyb3IiKTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9kZWxldGVfb2JqZWN0
c3RvcmU1Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUt
YnJvd3NpbmcvaWRiY3Vyc29yX2RlbGV0ZV9vYmplY3RzdG9yZTUuaHRtbAppbmRleCA3N2ZhNWYy
MzNjZWVmYmVkNDRhOGMxMGVjZWZlOGIwMDVlMjExODlmLi5kZDgyODZmMDhkMzdjNDg1MTZiNzRj
NDY3N2ExZDhkNDk2YTdjNGMxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
SW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2RlbGV0ZV9vYmplY3RzdG9yZTUu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJv
d3NpbmcvaWRiY3Vyc29yX2RlbGV0ZV9vYmplY3RzdG9yZTUuaHRtbApAQCAtMzAsNyArMzAsNyBA
QAogICAgICAgICAgICAgYXNzZXJ0X3RydWUoY3Vyc29yIGluc3RhbmNlb2YgSURCQ3Vyc29yLCAi
Y3Vyc29yIGV4aXN0Iik7CiAKICAgICAgICAgICAgIGN1cnNvci5jb250aW51ZSgpOwotICAgICAg
ICAgICAgYXNzZXJ0X3Rocm93cygiSW52YWxpZFN0YXRlRXJyb3IiLCBmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlkU3RhdGVFcnJvciIsIGZ1bmN0aW9u
KCkgewogICAgICAgICAgICAgICAgIGN1cnNvci5kZWxldGUoKTsKICAgICAgICAgICAgIH0pOwog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUt
YnJvd3NpbmcvaWRiY3Vyc29yX3VwZGF0ZV9pbmRleDIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfdXBkYXRlX2luZGV4
Mi5odG1sCmluZGV4IDdkMDAwMWNiYjkxODk3YjQ2MWZhNDBjNGZmYzlmOWE5ZjUzNjIyNjcuLmEy
YzIwNjRjZmIzNzQ2YjBkMWI5MzQxOTQyOGM5ZmYzMGQwMTFiNTUgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3Jf
dXBkYXRlX2luZGV4Mi5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVk
REItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfdXBkYXRlX2luZGV4Mi5odG1sCkBAIC0zMCw3
ICszMCw3IEBACiAKICAgICAgICAgY3Vyc29yX3JxLm9uc3VjY2VzcyA9IHQuc3RlcF9mdW5jKGZ1
bmN0aW9uKGUpIHsKICAgICAgICAgICAgIHZhciBjdXJzb3IgPSBlLnRhcmdldC5yZXN1bHQ7Ci0g
ICAgICAgICAgICBhc3NlcnRfdGhyb3dzKCdSZWFkT25seUVycm9yJywgZnVuY3Rpb24oKSB7IGN1
cnNvci51cGRhdGUoY3Vyc29yLnZhbHVlKTsgfSk7CisgICAgICAgICAgICBhc3NlcnRfdGhyb3dz
X2RvbSgnUmVhZE9ubHlFcnJvcicsIGZ1bmN0aW9uKCkgeyBjdXJzb3IudXBkYXRlKGN1cnNvci52
YWx1ZSk7IH0pOwogICAgICAgICAgICAgdC5kb25lKCk7CiAgICAgICAgIH0pOwogICAgIH0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93
c2luZy9pZGJjdXJzb3JfdXBkYXRlX2luZGV4My5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl91cGRhdGVfaW5kZXgzLmh0
bWwKaW5kZXggMGRlNjZjYmM2YzMwN2RmM2Y3MWQ4N2UzMzRiMGU0MjYwZGEwNzE3OC4uNTRmZDIy
ODdiYTZjYjgyOTNkZWY0ODI1ZDVhN2I3NGFmODE2M2Q4ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl91cGRh
dGVfaW5kZXgzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1w
cml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl91cGRhdGVfaW5kZXgzLmh0bWwKQEAgLTMxLDcgKzMx
LDcgQEAKICAgICAgICAgfSk7CiAKICAgICAgICAgZS50YXJnZXQudHJhbnNhY3Rpb24ub25jb21w
bGV0ZSA9IHQuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIGFzc2VydF90aHJv
d3MoJ1RyYW5zYWN0aW9uSW5hY3RpdmVFcnJvcicsIGZ1bmN0aW9uKCkgeyB3aW5kb3cuY3Vyc29y
LnVwZGF0ZSh3aW5kb3cucmVjb3JkKTsgfSkKKyAgICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9t
KCdUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3InLCBmdW5jdGlvbigpIHsgd2luZG93LmN1cnNvci51
cGRhdGUod2luZG93LnJlY29yZCk7IH0pCiAgICAgICAgICAgICB0LmRvbmUoKTsKICAgICAgICAg
fSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWRE
Qi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl91cGRhdGVfaW5kZXg0Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX3Vw
ZGF0ZV9pbmRleDQuaHRtbAppbmRleCAyYWQyOTQ1OGNkNzg5N2ZkNGFkZDhjYzViNDNkZmJjOTdi
Nzg3ZWRmLi5kMWYxN2QyYzgzNzE2MDdhYTg4YTE1ODJmNmFjNzk5YTBmMjIyMTIyIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Npbmcv
aWRiY3Vyc29yX3VwZGF0ZV9pbmRleDQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX3VwZGF0ZV9pbmRleDQuaHRt
bApAQCAtMjgsNyArMjgsNyBAQAogCiAgICAgICAgICAgICBkYi5kZWxldGVPYmplY3RTdG9yZSgi
c3RvcmUiKTsKICAgICAgICAgICAgIGN1cnNvci52YWx1ZS5pS2V5ICs9ICJfdXBkYXRlZCI7Ci0g
ICAgICAgICAgICBhc3NlcnRfdGhyb3dzKCJJbnZhbGlkU3RhdGVFcnJvciIsIGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkludmFsaWRTdGF0ZUVycm9yIiwgZnVu
Y3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgY3Vyc29yLnVwZGF0ZShjdXJzb3IudmFsdWUpOwog
ICAgICAgICAgICAgfSwgIklmIHRoZSBjdXJzb3IncyBzb3VyY2Ugb3IgZWZmZWN0aXZlIG9iamVj
dCBzdG9yZSBoYXMgYmVlbiBkZWxldGVkLCB0aGUgaW1wbGVtZW50YXRpb24gTVVTVCB0aHJvdyBh
IERPTUV4Y2VwdGlvbiBvZiB0eXBlIEludmFsaWRTdGF0ZUVycm9yIik7CiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJj
dXJzb3JfdXBkYXRlX2luZGV4NS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4
ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl91cGRhdGVfaW5kZXg1Lmh0bWwKaW5kZXgg
YzgyNTNlNTRiMTEwNzVmNzI1NDYxMTc0NWRkYTdkNGUyNmFlMDk2MS4uZmQ0ZjI4ZmM2NzczYjYy
MjBhMjg3NjA5ZDBiMzg2OTdiY2ZkYjI5MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl91cGRhdGVfaW5kZXg1
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJy
b3dzaW5nL2lkYmN1cnNvcl91cGRhdGVfaW5kZXg1Lmh0bWwKQEAgLTM1LDcgKzM1LDcgQEAKIAog
ICAgICAgICAgICAgdmFyIHJlY29yZCA9IGN1cnNvci52YWx1ZTsKICAgICAgICAgICAgIHJlY29y
ZC5kYXRhID0gZG9jdW1lbnQ7Ci0gICAgICAgICAgICBhc3NlcnRfdGhyb3dzKCdEYXRhQ2xvbmVF
cnJvcicsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oJ0RhdGFD
bG9uZUVycm9yJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgY3Vyc29yLnVwZGF0ZShy
ZWNvcmQpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB0LmRvbmUoKTsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9p
ZGJjdXJzb3JfdXBkYXRlX2luZGV4Ni5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0lu
ZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl91cGRhdGVfaW5kZXg2Lmh0bWwKaW5k
ZXggZTIyOGQ3OWIzZjU5ZDlmNmU0NDlhNjg4NTZlN2RjMzExOGVkMGUxNS4uZWQ3Mjk4YTNiY2U0
MmUzOTMwNWZlNDA2ZjM5OTMwNGRhMmYxOGY1OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl91cGRhdGVfaW5k
ZXg2Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRl
LWJyb3dzaW5nL2lkYmN1cnNvcl91cGRhdGVfaW5kZXg2Lmh0bWwKQEAgLTMzLDcgKzMzLDcgQEAK
ICAgICAgICAgICAgIHZhciBjdXJzb3IgPSBlLnRhcmdldC5yZXN1bHQ7CiAgICAgICAgICAgICBh
c3NlcnRfdHJ1ZShjdXJzb3IgaW5zdGFuY2VvZiBJREJDdXJzb3IpOwogCi0gICAgICAgICAgICBh
c3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7IGN1cnNvci51cGRhdGUo
KTsgfSk7CisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgZnVuY3Rpb24o
KSB7IGN1cnNvci51cGRhdGUoKTsgfSk7CiAgICAgICAgICAgICB0LmRvbmUoKTsKICAgICAgICAg
fSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWRE
Qi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl91cGRhdGVfaW5kZXg3Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX3Vw
ZGF0ZV9pbmRleDcuaHRtbAppbmRleCA3MjcwZWJlZWM4N2Y5MjJjODU0MTI3NTgyMDNkMTM0Nzlj
ZWFkODU5Li40N2FmOWRkMTAxZDI3YjZmMGFlNjIxMTI3NzZkYTJmNmJiOTRiY2ZiIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Npbmcv
aWRiY3Vyc29yX3VwZGF0ZV9pbmRleDcuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX3VwZGF0ZV9pbmRleDcuaHRt
bApAQCAtMzMsNyArMzMsNyBAQAogICAgICAgICAgICAgdmFyIGN1cnNvciA9IGUudGFyZ2V0LnJl
c3VsdDsKICAgICAgICAgICAgIGFzc2VydF90cnVlKGN1cnNvciBpbnN0YW5jZW9mIElEQkN1cnNv
cik7CiAKLSAgICAgICAgICAgIGFzc2VydF90aHJvd3MoJ0RhdGFFcnJvcicsIGZ1bmN0aW9uKCkg
eyBjdXJzb3IudXBkYXRlKG51bGwpOyB9KTsKKyAgICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9t
KCdEYXRhRXJyb3InLCBmdW5jdGlvbigpIHsgY3Vyc29yLnVwZGF0ZShudWxsKTsgfSk7CiAgICAg
ICAgICAgICB0LmRvbmUoKTsKICAgICAgICAgfSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl91
cGRhdGVfb2JqZWN0c3RvcmUyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhl
ZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX3VwZGF0ZV9vYmplY3RzdG9yZTIuaHRtbApp
bmRleCA2ZWE5MzU4YTc1OTY2NGUyNjg2Yzk1ZDEyODk2NTMxNWFlMjNkNTAyLi44NTZjYjUwZDU0
Yzg1ZDQ2NmI1MGY1ZmE4MDBlNDJhYWRlYjc3ZjNiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX3VwZGF0ZV9v
YmplY3RzdG9yZTIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERC
LXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX3VwZGF0ZV9vYmplY3RzdG9yZTIuaHRtbApAQCAt
MjgsNyArMjgsNyBAQAogCiAgICAgICAgIGN1cnNvcl9ycS5vbnN1Y2Nlc3MgPSB0LnN0ZXBfZnVu
YyhmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICB2YXIgY3Vyc29yID0gZS50YXJnZXQucmVzdWx0
OwotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygnUmVhZE9ubHlFcnJvcicsIGZ1bmN0aW9uKCkg
eyBjdXJzb3IudXBkYXRlKGN1cnNvci52YWx1ZSk7IH0pOworICAgICAgICAgICAgYXNzZXJ0X3Ro
cm93c19kb20oJ1JlYWRPbmx5RXJyb3InLCBmdW5jdGlvbigpIHsgY3Vyc29yLnVwZGF0ZShjdXJz
b3IudmFsdWUpOyB9KTsKICAgICAgICAgICAgIHQuZG9uZSgpOwogICAgICAgICB9KTsKICAgICB9
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUt
YnJvd3NpbmcvaWRiY3Vyc29yX3VwZGF0ZV9vYmplY3RzdG9yZTMuaHRtbCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfdXBkYXRl
X29iamVjdHN0b3JlMy5odG1sCmluZGV4IGQyODVkNzQ0MDEzZjIzYzQwMzk2YTVhMDVmODQ5OGRi
OWQwMDE4ZGQuLjQ3ZmEwYjdhYTUwZTY0OTEzMjBhNzAwOTk1NTljOGI0YWIwY2JkMjkgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2lu
Zy9pZGJjdXJzb3JfdXBkYXRlX29iamVjdHN0b3JlMy5odG1sCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfdXBkYXRlX29i
amVjdHN0b3JlMy5odG1sCkBAIC0zMCw3ICszMCw3IEBACiAgICAgICAgIH0pOwogCiAgICAgICAg
IGUudGFyZ2V0LnRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSB0LnN0ZXBfZnVuYyhmdW5jdGlvbihl
KSB7Ci0gICAgICAgICAgICBhc3NlcnRfdGhyb3dzKCdUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3In
LCBmdW5jdGlvbigpIHsgd2luZG93LmN1cnNvci51cGRhdGUod2luZG93LnJlY29yZCk7IH0pCisg
ICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgnVHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yJywg
ZnVuY3Rpb24oKSB7IHdpbmRvdy5jdXJzb3IudXBkYXRlKHdpbmRvdy5yZWNvcmQpOyB9KQogICAg
ICAgICAgICAgdC5kb25lKCk7CiAgICAgICAgIH0pOwogICAgIH0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3Jf
dXBkYXRlX29iamVjdHN0b3JlNS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4
ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl91cGRhdGVfb2JqZWN0c3RvcmU1Lmh0bWwK
aW5kZXggMzk2NGRiOTc4MDkyZGM3ZmVjYzk4Yzc5ZmI5MGE2OTk4YmY5ZTQ0MS4uZDY5NWZmMWRj
MzJmYTczOGFkNjYyZjg1NzdlMmQwYzYwNDU2ZTA5MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl91cGRhdGVf
b2JqZWN0c3RvcmU1Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWRE
Qi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl91cGRhdGVfb2JqZWN0c3RvcmU1Lmh0bWwKQEAg
LTI5LDcgKzI5LDcgQEAKIAogICAgICAgICAgICAgZGIuZGVsZXRlT2JqZWN0U3RvcmUoInRlc3Qi
KTsKICAgICAgICAgICAgIGN1cnNvci52YWx1ZSArPSAiX3VwZGF0ZWQiOwotICAgICAgICAgICAg
YXNzZXJ0X3Rocm93cygiSW52YWxpZFN0YXRlRXJyb3IiLCBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlkU3RhdGVFcnJvciIsIGZ1bmN0aW9uKCkgewog
ICAgICAgICAgICAgICAgIGN1cnNvci51cGRhdGUoY3Vyc29yLnZhbHVlKTsKICAgICAgICAgICAg
IH0sICJJZiB0aGUgY3Vyc29yJ3Mgc291cmNlIG9yIGVmZmVjdGl2ZSBvYmplY3Qgc3RvcmUgaGFz
IGJlZW4gZGVsZXRlZCwgdGhlIGltcGxlbWVudGF0aW9uIE1VU1QgdGhyb3cgYSBET01FeGNlcHRp
b24gb2YgdHlwZSBJbnZhbGlkU3RhdGVFcnJvciIpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX3VwZGF0
ZV9vYmplY3RzdG9yZTYuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREIt
cHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfdXBkYXRlX29iamVjdHN0b3JlNi5odG1sCmluZGV4
IGQ0ODIzNGMyODg2NjhjNTI1NzBkY2JmOTI0NGZjNzI2ODBjNjI4YmIuLjdiZDQ3NmU5Mjc4Njdi
ZDFmYWVmMjRhYjEzYzg5MTY1NDEyY2E1ZTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfdXBkYXRlX29iamVj
dHN0b3JlNi5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJp
dmF0ZS1icm93c2luZy9pZGJjdXJzb3JfdXBkYXRlX29iamVjdHN0b3JlNi5odG1sCkBAIC0zMyw3
ICszMyw3IEBACiAKICAgICAgICAgICAgIHZhciByZWNvcmQgPSBjdXJzb3IudmFsdWU7CiAgICAg
ICAgICAgICByZWNvcmQuZGF0YSA9IGRvY3VtZW50OwotICAgICAgICAgICAgYXNzZXJ0X3Rocm93
cygnRGF0YUNsb25lRXJyb3InLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFzc2VydF90aHJv
d3NfZG9tKCdEYXRhQ2xvbmVFcnJvcicsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgIGN1
cnNvci51cGRhdGUocmVjb3JkKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgdC5kb25l
KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZh
dGUtYnJvd3NpbmcvaWRiY3Vyc29yX3VwZGF0ZV9vYmplY3RzdG9yZTcuaHRtbCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfdXBk
YXRlX29iamVjdHN0b3JlNy5odG1sCmluZGV4IGRiOTgwNjNlMDk5N2I0YzIzNjdiMjNkNGJjMmRh
ZTljZjEyNTU3YzguLjRhMDAzY2FiNTI4NThjMWQ1NWExZmEyZWFkMTg3ZmY3MzdkNDgzZDggMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93
c2luZy9pZGJjdXJzb3JfdXBkYXRlX29iamVjdHN0b3JlNy5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfdXBkYXRl
X29iamVjdHN0b3JlNy5odG1sCkBAIC0zMSw3ICszMSw3IEBACiAgICAgICAgICAgICB2YXIgY3Vy
c29yID0gZS50YXJnZXQucmVzdWx0OwogICAgICAgICAgICAgYXNzZXJ0X3RydWUoY3Vyc29yIGlu
c3RhbmNlb2YgSURCQ3Vyc29yKTsKIAotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlw
ZUVycm9yKCksIGZ1bmN0aW9uKCkgeyBjdXJzb3IudXBkYXRlKCk7IH0pOworICAgICAgICAgICAg
YXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeyBjdXJzb3IudXBkYXRlKCk7
IH0pOwogICAgICAgICAgICAgdC5kb25lKCk7CiAgICAgICAgIH0pOwogICAgIH0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9p
ZGJjdXJzb3JfdXBkYXRlX29iamVjdHN0b3JlOC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl91cGRhdGVfb2JqZWN0c3Rv
cmU4Lmh0bWwKaW5kZXggOTQ4YzU0OTE2OWIwNTI4MjVlOGVlNmM2NjMxNjlmOTk0OTBlY2YwMS4u
ZGEzNmRkZTg5MmJmYzJlZDc2N2EwODg3MjE4MzhjNjhiMjYxYTMzYSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNv
cl91cGRhdGVfb2JqZWN0c3RvcmU4Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl91cGRhdGVfb2JqZWN0c3RvcmU4
Lmh0bWwKQEAgLTMxLDcgKzMxLDcgQEAKICAgICAgICAgICAgIHZhciBjdXJzb3IgPSBlLnRhcmdl
dC5yZXN1bHQ7CiAgICAgICAgICAgICBhc3NlcnRfdHJ1ZShjdXJzb3IgaW5zdGFuY2VvZiBJREJD
dXJzb3IpOwogCi0gICAgICAgICAgICBhc3NlcnRfdGhyb3dzKCdEYXRhRXJyb3InLCBmdW5jdGlv
bigpIHsgY3Vyc29yLnVwZGF0ZShudWxsKTsgfSk7CisgICAgICAgICAgICBhc3NlcnRfdGhyb3dz
X2RvbSgnRGF0YUVycm9yJywgZnVuY3Rpb24oKSB7IGN1cnNvci51cGRhdGUobnVsbCk7IH0pOwog
ICAgICAgICAgICAgdC5kb25lKCk7CiAgICAgICAgIH0pOwogICAgIH0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJkYXRh
YmFzZV9jcmVhdGVPYmplY3RTdG9yZTExLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
SW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiZGF0YWJhc2VfY3JlYXRlT2JqZWN0U3RvcmUx
MS5odG1sCmluZGV4IGIyZTIzM2E2ZTY2ZTE3ODAxNTk4NmIzNmQyOTU3ZTEzMGU1MWNmNTUuLjE3
MDdmODE2NjdkYmYwMzAzNTk3YzBlZTc3ZjYwNjgxMjUyMTZlYTMgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJkYXRhYmFz
ZV9jcmVhdGVPYmplY3RTdG9yZTExLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmRhdGFiYXNlX2NyZWF0ZU9iamVjdFN0b3Jl
MTEuaHRtbApAQCAtMTQsNyArMTQsNyBAQCB2YXIgdCA9IGFzeW5jX3Rlc3QoKSwKIG9wZW5fcnEu
b251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24gKGUpIHsKICAgICB2YXIgZGIgPSBlLnRhcmdldC5y
ZXN1bHQ7CiAgICAgZGIuY3JlYXRlT2JqZWN0U3RvcmUoInN0b3JlIik7Ci0gICAgYXNzZXJ0X3Ro
cm93cygiQ29uc3RyYWludEVycm9yIiwgZnVuY3Rpb24oKXsKKyAgICBhc3NlcnRfdGhyb3dzX2Rv
bSgiQ29uc3RyYWludEVycm9yIiwgZnVuY3Rpb24oKXsKICAgICAgICAgZGIuY3JlYXRlT2JqZWN0
U3RvcmUoInN0b3JlIiwgewogICAgICAgICAgICAga2V5UGF0aDogImtleTEiLAogICAgICAgICB9
KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0
ZS1icm93c2luZy9pZGJkYXRhYmFzZV9jcmVhdGVPYmplY3RTdG9yZTMuaHRtbCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJkYXRhYmFzZV9j
cmVhdGVPYmplY3RTdG9yZTMuaHRtbAppbmRleCBhZDEwZTkwZDhiOWViOTI0ZTA0NTU2MzA3NTdk
M2QxZDA5MjdkMjJkLi44NjY1MDk0MjZiYmVlZWJkMDgzNjY4NDkwODA1MjIyNGJkYWE4NWZiIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJv
d3NpbmcvaWRiZGF0YWJhc2VfY3JlYXRlT2JqZWN0U3RvcmUzLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmRhdGFiYXNlX2Ny
ZWF0ZU9iamVjdFN0b3JlMy5odG1sCkBAIC0xMyw3ICsxMyw3IEBAIHZhciB0ID0gYXN5bmNfdGVz
dCgpLAogb3Blbl9ycS5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbigpIHt9CiBvcGVuX3JxLm9u
c3VjY2VzcyA9IGZ1bmN0aW9uIChlKSB7CiAgICAgdmFyIGRiID0gZS50YXJnZXQucmVzdWx0Ci0g
ICAgYXNzZXJ0X3Rocm93cygKKyAgICBhc3NlcnRfdGhyb3dzX2RvbSgKICAgICAgICAgJ0ludmFs
aWRTdGF0ZUVycm9yJywKICAgICAgICAgZnVuY3Rpb24oKSB7IGRiLmNyZWF0ZU9iamVjdFN0b3Jl
KCdmYWlscycpIH0pCiAgICAgdC5kb25lKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiZGF0YWJhc2VfY3JlYXRlT2Jq
ZWN0U3RvcmU0Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZh
dGUtYnJvd3NpbmcvaWRiZGF0YWJhc2VfY3JlYXRlT2JqZWN0U3RvcmU0Lmh0bWwKaW5kZXggYmJj
N2ZmZWY1YzAyZDYyZTkxZmM3MDVkNGExZTliMWE1ZDUzN2YxZS4uNGNkNjk5OTdiNTBhNDljYjAw
YTJjOGQ4MDFiOWM3NDEyNGQzYTBiMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmRhdGFiYXNlX2NyZWF0ZU9iamVjdFN0
b3JlNC5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0
ZS1icm93c2luZy9pZGJkYXRhYmFzZV9jcmVhdGVPYmplY3RTdG9yZTQuaHRtbApAQCAtMTMsNyAr
MTMsNyBAQCB2YXIgdCA9IGFzeW5jX3Rlc3QoKSwKIG9wZW5fcnEub251cGdyYWRlbmVlZGVkID0g
ZnVuY3Rpb24oZSkgewogICAgIHZhciBkYiA9IGUudGFyZ2V0LnJlc3VsdAogICAgIGRiLmNyZWF0
ZU9iamVjdFN0b3JlKCJkdXBlIikKLSAgICBhc3NlcnRfdGhyb3dzKAorICAgIGFzc2VydF90aHJv
d3NfZG9tKAogICAgICAgICAnQ29uc3RyYWludEVycm9yJywKICAgICAgICAgZnVuY3Rpb24oKSB7
IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCJkdXBlIikgfSkKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmRhdGFiYXNlX2Ny
ZWF0ZU9iamVjdFN0b3JlNi5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWRE
Qi1wcml2YXRlLWJyb3dzaW5nL2lkYmRhdGFiYXNlX2NyZWF0ZU9iamVjdFN0b3JlNi5odG1sCmlu
ZGV4IDFlM2Y0MDA4OTgxOTNmMmQ0NTU3YzQ3ZjlkNTBkZGI4OTRlNDhlZmQuLjY0Y2YxOTc3MDAz
N2M1YzUyNTM1ODVmOTJjNWVhMTkwYmNkZjk5ZTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJkYXRhYmFzZV9jcmVhdGVP
YmplY3RTdG9yZTYuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERC
LXByaXZhdGUtYnJvd3NpbmcvaWRiZGF0YWJhc2VfY3JlYXRlT2JqZWN0U3RvcmU2Lmh0bWwKQEAg
LTEzLDExICsxMywxMSBAQCB2YXIgdCA9IGFzeW5jX3Rlc3QoKSwKIG9wZW5fcnEub251cGdyYWRl
bmVlZGVkID0gZnVuY3Rpb24oZSkgewogICAgIHZhciBkYiA9IGUudGFyZ2V0LnJlc3VsdAogCi0g
ICAgYXNzZXJ0X3Rocm93cygnU3ludGF4RXJyb3InLCBmdW5jdGlvbigpIHsKKyAgICBhc3NlcnRf
dGhyb3dzX2RvbSgnU3ludGF4RXJyb3InLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgIGRiLmNy
ZWF0ZU9iamVjdFN0b3JlKCJpbnZhbGlka2V5cGF0aCIsIHsga2V5UGF0aDogIkludmFsaWQgS2V5
cGF0aCIgfSkKICAgICAgICAgfSkKIAotICAgIGFzc2VydF90aHJvd3MoJ1N5bnRheEVycm9yJywg
ZnVuY3Rpb24oKSB7CisgICAgYXNzZXJ0X3Rocm93c19kb20oJ1N5bnRheEVycm9yJywgZnVuY3Rp
b24oKSB7CiAgICAgICAgICAgICBkYi5jcmVhdGVPYmplY3RTdG9yZSgiaW52YWxpZGtleXBhdGgi
LCB7IGF1dG9JbmNyZW1lbnQ6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGtleVBhdGg6ICJJbnZhbGlkIEtleXBhdGgiIH0pCiAgICAg
ICAgIH0pCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXBy
aXZhdGUtYnJvd3NpbmcvaWRiZGF0YWJhc2VfY3JlYXRlT2JqZWN0U3RvcmU5LWludmFsaWRwYXJh
bWV0ZXJzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUt
YnJvd3NpbmcvaWRiZGF0YWJhc2VfY3JlYXRlT2JqZWN0U3RvcmU5LWludmFsaWRwYXJhbWV0ZXJz
Lmh0bWwKaW5kZXggYjY3ZjFlZjFiYzdhODViYTcwMjZmYzdhYjhjY2RjN2I3YjIwMWYzZS4uMDRi
NTlmZmU1NzIyYzkxNmE5Yzk3NjYxMzc2MTI2NjRiZGM5YWJiNyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmRhdGFiYXNl
X2NyZWF0ZU9iamVjdFN0b3JlOS1pbnZhbGlkcGFyYW1ldGVycy5odG1sCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJkYXRhYmFzZV9j
cmVhdGVPYmplY3RTdG9yZTktaW52YWxpZHBhcmFtZXRlcnMuaHRtbApAQCAtMTEsNyArMTEsNyBA
QAogICAgICAgICB2YXIgdCA9IGFzeW5jX3Rlc3QoZG9jdW1lbnQudGl0bGUgKyAiIC0gIiArIGRl
c2MpOwogCiAgICAgICAgIGNyZWF0ZWRiKHQpLm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGUp
IHsKLSAgICAgICAgICAgIGFzc2VydF90aHJvd3MoZXhjZXB0aW9uLCBmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKGV4Y2VwdGlvbiwgZnVuY3Rpb24oKSB7CiAgICAg
ICAgICAgICAgICAgZS50YXJnZXQucmVzdWx0LmNyZWF0ZU9iamVjdFN0b3JlKCJzdG9yZSIsIHBh
cmFtcyk7CiAgICAgICAgICAgICB9KTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmRhdGFiYXNlX2RlbGV0ZU9iamVj
dFN0b3JlMi5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRl
LWJyb3dzaW5nL2lkYmRhdGFiYXNlX2RlbGV0ZU9iamVjdFN0b3JlMi5odG1sCmluZGV4IGU0YTg3
ZWNiOWQwZTkxYjYzNWI0ZTZjMDY4MzllMDUxOWJmZTBhYzUuLjhjMGZmZDg1NDBhMGVlM2E3NmMy
ZGZjMmIyNDRjZDVjNzNkYWY4OWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJkYXRhYmFzZV9kZWxldGVPYmplY3RTdG9y
ZTIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUt
YnJvd3NpbmcvaWRiZGF0YWJhc2VfZGVsZXRlT2JqZWN0U3RvcmUyLmh0bWwKQEAgLTE3LDcgKzE3
LDcgQEAgb3Blbl9ycS5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihlKQogCiAgICAgZS50YXJn
ZXQudHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IHQuc3RlcF9mdW5jKGZ1bmN0aW9uIChlKQogICAg
IHsKLSAgICAgICAgYXNzZXJ0X3Rocm93cygnSW52YWxpZFN0YXRlRXJyb3InLAorICAgICAgICBh
c3NlcnRfdGhyb3dzX2RvbSgnSW52YWxpZFN0YXRlRXJyb3InLAogICAgICAgICAgICAgZnVuY3Rp
b24oKSB7IGRiLmRlbGV0ZU9iamVjdFN0b3JlKCJkZWxldGVfb3V0c2lkZSIpOyB9KTsKICAgICAg
ICAgdC5kb25lKCk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiZGF0YWJhc2VfZGVsZXRlT2JqZWN0U3Rv
cmUzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJv
d3NpbmcvaWRiZGF0YWJhc2VfZGVsZXRlT2JqZWN0U3RvcmUzLmh0bWwKaW5kZXggMDQ5N2MxNjll
NTlhZjEzMjE0YTcwNjllY2RmZjY5MDViYjkzMjk1NC4uOGM2NzA4YzEzZTJiYmJjMGI1ZDlmYTBh
MDE5N2VmNDc3MmMwNjhmYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0lu
ZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmRhdGFiYXNlX2RlbGV0ZU9iamVjdFN0b3JlMy5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93
c2luZy9pZGJkYXRhYmFzZV9kZWxldGVPYmplY3RTdG9yZTMuaHRtbApAQCAtMTMsNyArMTMsNyBA
QCB2YXIgdCA9IGFzeW5jX3Rlc3QoKSwKIG9wZW5fcnEub251cGdyYWRlbmVlZGVkID0gZnVuY3Rp
b24oZSkKIHsKICAgICB2YXIgZGIgPSBlLnRhcmdldC5yZXN1bHQ7Ci0gICAgYXNzZXJ0X3Rocm93
cygnTm90Rm91bmRFcnJvcicsCisgICAgYXNzZXJ0X3Rocm93c19kb20oJ05vdEZvdW5kRXJyb3In
LAogICAgICAgICBmdW5jdGlvbigpIHsgZGIuZGVsZXRlT2JqZWN0U3RvcmUoJ3doYXRldmVyJyk7
IH0pOwogICAgIHQuZG9uZSgpOwogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmRhdGFiYXNlX2RlbGV0ZU9iamVjdFN0
b3JlNC1ub3RfcmV1c2VkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERC
LXByaXZhdGUtYnJvd3NpbmcvaWRiZGF0YWJhc2VfZGVsZXRlT2JqZWN0U3RvcmU0LW5vdF9yZXVz
ZWQuaHRtbAppbmRleCAzZGE3ODlhNjRmYTYzMDEwYTQ0NWYwMTNmNmZiZjUxZTE2MmE3NTRjLi44
MTI4ODhlOWY1OTA0Zjk4ZDI3MjQ4ZTU0NmM4ZGNmODRjY2M1YjU2IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiZGF0YWJh
c2VfZGVsZXRlT2JqZWN0U3RvcmU0LW5vdF9yZXVzZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiZGF0YWJhc2VfZGVsZXRl
T2JqZWN0U3RvcmU0LW5vdF9yZXVzZWQuaHRtbApAQCAtMjksNyArMjksNyBAQCBvcGVuX3JxLm9u
dXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGUpIHsKICAgICBhc3NlcnRfZmFsc2Uob2JqU3RvcmUy
LmluZGV4TmFtZXMuY29udGFpbnMoImlkeCIpLCAiaW5kZXggZXhpc3Qgb24gbmV3IG9ianN0b3Jl
Iik7CiAgICAgYXNzZXJ0X2VxdWFscyhvYmpTdG9yZTIua2V5UGF0aCwgbnVsbCwgImtleVBhdGgi
KTsKIAotICAgIGFzc2VydF90aHJvd3MoIk5vdEZvdW5kRXJyb3IiLCBmdW5jdGlvbigpIHsgb2Jq
U3RvcmUyLmluZGV4KCJpZHgiKTsgfSk7CisgICAgYXNzZXJ0X3Rocm93c19kb20oIk5vdEZvdW5k
RXJyb3IiLCBmdW5jdGlvbigpIHsgb2JqU3RvcmUyLmluZGV4KCJpZHgiKTsgfSk7CiB9CiAKIG9w
ZW5fcnEub25zdWNjZXNzID0gZnVuY3Rpb24oZSkgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmRhdGFiYXNlX3RyYW5z
YWN0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUt
YnJvd3NpbmcvaWRiZGF0YWJhc2VfdHJhbnNhY3Rpb24uaHRtbAppbmRleCBjOGMyYzlmNTk0YjQz
MjRkNjFlZjQxMjBiNDYzNDk1NzU0MDM0NGIxLi41MGIwMTVmYjczMmU5NTgzZWJlMWY2YzFmMmI4
ZThlNDUwNDdhMzQ4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhl
ZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiZGF0YWJhc2VfdHJhbnNhY3Rpb24uaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiZGF0
YWJhc2VfdHJhbnNhY3Rpb24uaHRtbApAQCAtMTUsNyArMTUsNyBAQCBvcGVuX3JxLm9udXBncmFk
ZW5lZWRlZCA9IGZ1bmN0aW9uKCkge307CiBvcGVuX3JxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGUp
IHsKICAgICBkYiA9IGUudGFyZ2V0LnJlc3VsdDsKIAotICAgIGFzc2VydF90aHJvd3MoJ05vdEZv
dW5kRXJyb3InLCBmdW5jdGlvbigpIHsgZGIudHJhbnNhY3Rpb24oJ25vbi1leGlzdGluZycpOyB9
KTsKKyAgICBhc3NlcnRfdGhyb3dzX2RvbSgnTm90Rm91bmRFcnJvcicsIGZ1bmN0aW9uKCkgeyBk
Yi50cmFuc2FjdGlvbignbm9uLWV4aXN0aW5nJyk7IH0pOwogICAgIHQuZG9uZSgpOwogfTsKIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJy
b3dzaW5nL2lkYmRhdGFiYXNlX3RyYW5zYWN0aW9uMy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmRhdGFiYXNlX3RyYW5zYWN0aW9u
My5odG1sCmluZGV4IDEwODdhZWNjOGRlZWEwOGYyN2YzYWM1OWI2ZTRkNTRlMDBjZjAzMGQuLjVh
NGU3M2NkM2NhOGMzZjI2YmM1NGIzZmM0MjExNDljNDdjYTBmY2EgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJkYXRhYmFz
ZV90cmFuc2FjdGlvbjMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhl
ZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiZGF0YWJhc2VfdHJhbnNhY3Rpb24zLmh0bWwKQEAgLTE4
LDcgKzE4LDcgQEAKICAgICBvcGVuX3JxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGUpIHsKICAgICAg
ICAgZGIuY2xvc2UoKTsKIAotICAgICAgICBhc3NlcnRfdGhyb3dzKCdJbnZhbGlkU3RhdGVFcnJv
cicsCisgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCdJbnZhbGlkU3RhdGVFcnJvcicsCiAgICAg
ICAgICAgICBmdW5jdGlvbigpIHsgZGIudHJhbnNhY3Rpb24oJ3Rlc3QnKTsgfSk7CiAKICAgICAg
ICAgdC5kb25lKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhl
ZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiZGF0YWJhc2VfdHJhbnNhY3Rpb240Lmh0bWwgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiZGF0YWJh
c2VfdHJhbnNhY3Rpb240Lmh0bWwKaW5kZXggMjEyMGYwNzlkYmYwY2Q0MjdkOTdjMDE3MmViN2M0
ZGVhZTc0ZDM2OC4uM2ZhYjQwZjNlZWM5ZWY2YWJiZGMxZDc0ZjhiY2U3YTBlYjBhMDYxMSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dz
aW5nL2lkYmRhdGFiYXNlX3RyYW5zYWN0aW9uNC5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJkYXRhYmFzZV90cmFuc2FjdGlv
bjQuaHRtbApAQCAtMTYsNyArMTYsNyBAQAogICAgIH07CiAKICAgICBvcGVuX3JxLm9uc3VjY2Vz
cyA9IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgYXNzZXJ0X3Rocm93cyh7IG5hbWU6ICdUeXBlRXJy
b3InIH0sCisgICAgICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLAogICAgICAgICAgICAg
ZnVuY3Rpb24oKSB7IGRiLnRyYW5zYWN0aW9uKCd0ZXN0JywgJ3doYXRldmVyJyk7IH0pOwogCiAg
ICAgICAgIHQuZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0lu
ZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmRhdGFiYXNlX3RyYW5zYWN0aW9uNS5odG1sIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmRh
dGFiYXNlX3RyYW5zYWN0aW9uNS5odG1sCmluZGV4IGNlZjZkMmE0MGU3YTg0OWU5YTYxODg5ODU0
N2UyMGY0Y2Y5NmZiMDIuLmQwZDI4OTI4MGVhZjk2OWRmYjZjYjY5OTI1MGU2MjM5MWQ5ODUyNjcg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1i
cm93c2luZy9pZGJkYXRhYmFzZV90cmFuc2FjdGlvbjUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiZGF0YWJhc2VfdHJhbnNh
Y3Rpb241Lmh0bWwKQEAgLTE1LDcgKzE1LDcgQEAgdmFyIGRiLAogb3Blbl9ycS5vbnVwZ3JhZGVu
ZWVkZWQgPSBmdW5jdGlvbigpIHt9Owogb3Blbl9ycS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihlKSB7
CiAgICAgZGIgPSBlLnRhcmdldC5yZXN1bHQ7Ci0gICAgYXNzZXJ0X3Rocm93cygnSW52YWxpZEFj
Y2Vzc0Vycm9yJywgZnVuY3Rpb24oKSB7IGRiLnRyYW5zYWN0aW9uKFtdKTsgfSk7CisgICAgYXNz
ZXJ0X3Rocm93c19kb20oJ0ludmFsaWRBY2Nlc3NFcnJvcicsIGZ1bmN0aW9uKCkgeyBkYi50cmFu
c2FjdGlvbihbXSk7IH0pOwogICAgIHQuZG9uZSgpOwogfTsKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lk
YmZhY3RvcnlfY21wMi5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1w
cml2YXRlLWJyb3dzaW5nL2lkYmZhY3RvcnlfY21wMi5odG1sCmluZGV4IDg5MzlkZDJkMzE0Mzhk
MDI5ZWYzNmJmNWU5NGUyNzI2M2MwNzk5ZWYuLmJlYzI4MTVkMDlhMjkxODExZWI2OTQ4MDI4NGJh
MjUxZDk4OTg2ZTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVk
REItcHJpdmF0ZS1icm93c2luZy9pZGJmYWN0b3J5X2NtcDIuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiZmFjdG9yeV9jbXAy
Lmh0bWwKQEAgLTksMzEgKzksMzEgQEAKIDxkaXYgaWQ9bG9nPjwvZGl2PgogPHNjcmlwdD4KICAg
ICB0ZXN0KCBmdW5jdGlvbigpIHsKLSAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9y
KCksIGZ1bmN0aW9uKCkgeworICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgZnVu
Y3Rpb24oKSB7CiAgICAgICAgICAgICBpbmRleGVkREIuY21wKCk7CiAgICAgICAgIH0pOwogICAg
IH0sICJJREJGYWN0b3J5LmNtcCgpIC0gbm8gYXJndW1lbnQiKTsKIAogICAgIHRlc3QoIGZ1bmN0
aW9uKCkgewotICAgICAgICBhc3NlcnRfdGhyb3dzKCJEYXRhRXJyb3IiLCBmdW5jdGlvbigpIHsK
KyAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkRhdGFFcnJvciIsIGZ1bmN0aW9uKCkgewogICAg
ICAgICAgICAgaW5kZXhlZERCLmNtcChudWxsLCBudWxsKTsKICAgICAgICAgfSk7Ci0gICAgICAg
IGFzc2VydF90aHJvd3MoIkRhdGFFcnJvciIsIGZ1bmN0aW9uKCkgeworICAgICAgICBhc3NlcnRf
dGhyb3dzX2RvbSgiRGF0YUVycm9yIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICBpbmRleGVk
REIuY21wKDEsIG51bGwpOwogICAgICAgICB9KTsKLSAgICAgICAgYXNzZXJ0X3Rocm93cygiRGF0
YUVycm9yIiwgZnVuY3Rpb24oKSB7CisgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJEYXRhRXJy
b3IiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgIGluZGV4ZWREQi5jbXAobnVsbCwgMSk7CiAg
ICAgICAgIH0pOwogICAgIH0sICJJREJGYWN0b3J5LmNtcCgpIC0gbnVsbCIpOwogCiAgICAgdGVz
dCggZnVuY3Rpb24oKSB7Ci0gICAgICAgIGFzc2VydF90aHJvd3MoIkRhdGFFcnJvciIsIGZ1bmN0
aW9uKCkgeworICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiRGF0YUVycm9yIiwgZnVuY3Rpb24o
KSB7CiAgICAgICAgICAgICBpbmRleGVkREIuY21wKE5hTiwgTmFOKTsKICAgICAgICAgfSk7Ci0g
ICAgICAgIGFzc2VydF90aHJvd3MoIkRhdGFFcnJvciIsIGZ1bmN0aW9uKCkgeworICAgICAgICBh
c3NlcnRfdGhyb3dzX2RvbSgiRGF0YUVycm9yIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICBp
bmRleGVkREIuY21wKDEsIE5hTik7CiAgICAgICAgIH0pOwotICAgICAgICBhc3NlcnRfdGhyb3dz
KCJEYXRhRXJyb3IiLCBmdW5jdGlvbigpIHsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkRh
dGFFcnJvciIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgaW5kZXhlZERCLmNtcChOYU4sIDEp
OwogICAgICAgICB9KTsKICAgICB9LCAiSURCRmFjdG9yeS5jbXAoKSAtIE5hTiIpOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5n
L2lkYmZhY3Rvcnlfb3BlbjkuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVk
REItcHJpdmF0ZS1icm93c2luZy9pZGJmYWN0b3J5X29wZW45Lmh0bWwKaW5kZXggYmQ0NDdlMjQ3
ZjdjZjE1ZWE5YmNhY2VkM2JmNTA1MDQ3ZDk5OGRjYS4uYjQxYTAzMzczYWJiNmY1NzU3NmQ1NjM1
M2YyMjlhMTU5NTA0ZThmYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0lu
ZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmZhY3Rvcnlfb3BlbjkuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiZmFjdG9y
eV9vcGVuOS5odG1sCkBAIC05LDcgKzksNyBAQCBmdW5jdGlvbiBzaG91bGRfdGhyb3codmFsLCBu
YW1lKSB7CiAgICAgICAgIG5hbWUgPSAoKHR5cGVvZiB2YWwgPT0gIm9iamVjdCIgJiYgdmFsKSA/
ICJvYmplY3QiIDogZm9ybWF0X3ZhbHVlKHZhbCkpCiAgICAgfQogICAgIHRlc3QoZnVuY3Rpb24o
KSB7Ci0gICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7Cisg
ICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CiAgICAgICAgIHdp
bmRvdy5pbmRleGVkREIub3BlbigndGVzdCcsIHZhbCk7CiAgICAgICB9KTsKICAgICB9LCAiQ2Fs
bGluZyBvcGVuKCkgd2l0aCB2ZXJzaW9uIGFyZ3VtZW50ICIgKyBuYW1lICsgIiBzaG91bGQgdGhy
b3cgVHlwZUVycm9yLiIpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5k
ZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiaW5kZXgtbXVsdGllbnRyeS1hcnJheWtleXBhdGgu
aHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2lu
Zy9pZGJpbmRleC1tdWx0aWVudHJ5LWFycmF5a2V5cGF0aC5odG1sCmluZGV4IDdkZWRmYmY5YTgz
YTU5NmU4Nzc3YTJiMDJlODU3YWNkMDdlMzgzYjQuLmY1MTA2YWZlMTJlYThiYjAxMzQxZThmNWNm
ZjgzMTAwZDk2MGI2YWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRl
eGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJpbmRleC1tdWx0aWVudHJ5LWFycmF5a2V5cGF0aC5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93
c2luZy9pZGJpbmRleC1tdWx0aWVudHJ5LWFycmF5a2V5cGF0aC5odG1sCkBAIC0xMiw3ICsxMiw3
IEBACiAgICAgY3JlYXRlZGIoYXN5bmNfdGVzdChkb2N1bWVudC50aXRsZSwge3RpbWVvdXQ6IDEw
MDAwfSkpLm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgdmFyIHN0b3Jl
ID0gZS50YXJnZXQucmVzdWx0LmNyZWF0ZU9iamVjdFN0b3JlKCJzdG9yZSIpOwogCi0gICAgICAg
IGFzc2VydF90aHJvd3MoJ0ludmFsaWRBY2Nlc3NFcnJvcicsIGZ1bmN0aW9uKCkgeworICAgICAg
ICBhc3NlcnRfdGhyb3dzX2RvbSgnSW52YWxpZEFjY2Vzc0Vycm9yJywgZnVuY3Rpb24oKSB7CiAg
ICAgICAgICAgICBzdG9yZS5jcmVhdGVJbmRleCgnYWN0b3JzJywgWyduYW1lJ10sIHsgbXVsdGlF
bnRyeTogdHJ1ZSB9KQogICAgICAgICB9KTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmluZGV4X2NvdW50NC5odG1s
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lk
YmluZGV4X2NvdW50NC5odG1sCmluZGV4IGU1OTQ4ZWM1ZGVmMDNmNDdhNDA1MzJiNTA1ZGI5NmUx
Y2ExZjllZjguLjkxOWNmNWQ0ZmI3OTJjYjc0YjNjZWZkZWM0NWMxMTQwYzE5NTgzOWUgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2lu
Zy9pZGJpbmRleF9jb3VudDQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5k
ZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiaW5kZXhfY291bnQ0Lmh0bWwKQEAgLTI3LDcgKzI3
LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAub2JqZWN0U3RvcmUoInN0b3JlIikKICAgICAg
ICAgICAgICAgICAgICAgICAuaW5kZXgoImluZGV4Iik7CiAKLSAgICAgICAgYXNzZXJ0X3Rocm93
cygiRGF0YUVycm9yIiwgZnVuY3Rpb24oKSB7CisgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJE
YXRhRXJyb3IiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgIGluZGV4LmNvdW50KE5hTik7CiAg
ICAgICAgIH0pOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhl
ZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiaW5kZXhfZ2V0NS5odG1sIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmluZGV4X2dldDUuaHRtbApp
bmRleCAwMTUyNDkyNjIyNGEwNjkzMmFlZjYxOGFkNTMxMzhlZjcyZjhmOWI0Li5jZDA0M2Q5MTY2
MmExMzhjNTYyN2M5OTZiNzcwNjFlZWFhMjMwNjY1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiaW5kZXhfZ2V0NS5odG1s
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2lu
Zy9pZGJpbmRleF9nZXQ1Lmh0bWwKQEAgLTE3LDcgKzE3LDcgQEAKIAogICAgICAgICB2YXIgaW5k
ZXggPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgidGVzdCIsIHsga2V5UGF0aDogImtleSIgfSkKICAg
ICAgICAgICAgICAgICAgICAgICAuY3JlYXRlSW5kZXgoImluZGV4IiwgImluZGV4ZWRQcm9wZXJ0
eSIpOwotICAgICAgICBhc3NlcnRfdGhyb3dzKCJEYXRhRXJyb3IiLGZ1bmN0aW9uKCl7CisgICAg
ICAgIGFzc2VydF90aHJvd3NfZG9tKCJEYXRhRXJyb3IiLGZ1bmN0aW9uKCl7CiAgICAgICAgICAg
ICBpbmRleC5nZXQoTmFOKTsKICAgICAgICAgfSk7CiAgICAgICAgIHQuZG9uZSgpOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5n
L2lkYmluZGV4X2dldDYuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREIt
cHJpdmF0ZS1icm93c2luZy9pZGJpbmRleF9nZXQ2Lmh0bWwKaW5kZXggYTViNzYzZWQ1ZTNkYjM3
NjY5NDQ5MDBjMzY2ZGYxZjBhNTRjMzUxZC4uMTQ0Yjk2OTM1Y2ZkMDI4ZGRiNGY5Y2ZlMzljY2Fi
NGRkZWE5YzIyOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWRE
Qi1wcml2YXRlLWJyb3dzaW5nL2lkYmluZGV4X2dldDYuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiaW5kZXhfZ2V0Ni5odG1s
CkBAIC0yMCw3ICsyMCw3IEBACiAgICAgICAgIHN0b3JlLmFkZCh7IGtleTogMSwgaW5kZXhlZFBy
b3BlcnR5OiAiZGF0YSIgfSk7CiAgICAgICAgIHN0b3JlLmRlbGV0ZUluZGV4KCJpbmRleCIpOwog
Ci0gICAgICAgIGFzc2VydF90aHJvd3MoIkludmFsaWRTdGF0ZUVycm9yIiwgZnVuY3Rpb24oKXsK
KyAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkludmFsaWRTdGF0ZUVycm9yIiwgZnVuY3Rpb24o
KXsKICAgICAgICAgICAgIGluZGV4LmdldCgiZGF0YSIpOwogICAgICAgICB9KTsKICAgICAgICAg
dC5kb25lKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERC
LXByaXZhdGUtYnJvd3NpbmcvaWRiaW5kZXhfZ2V0Ny5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmluZGV4X2dldDcuaHRtbAppbmRl
eCA4OTczNWVhZDg0ZGY1ZjQxNTljNGEyM2U2NzNhNTIyNWMxMGNkZWY0Li4zNWU2YTVkYTM4N2E3
ZDdlZjVkYjNmNDgxYTJlN2FhMDU5MTUzZGQ3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiaW5kZXhfZ2V0Ny5odG1sCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9p
ZGJpbmRleF9nZXQ3Lmh0bWwKQEAgLTIwLDcgKzIwLDcgQEAKIAogICAgICAgICBlLnRhcmdldC50
cmFuc2FjdGlvbi5hYm9ydCgpOwogCi0gICAgICAgIGFzc2VydF90aHJvd3MoIkludmFsaWRTdGF0
ZUVycm9yIiwgZnVuY3Rpb24oKXsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkludmFsaWRT
dGF0ZUVycm9yIiwgZnVuY3Rpb24oKXsKICAgICAgICAgICAgIGluZGV4LmdldCgiZGF0YSIpOwog
ICAgICAgICB9KTsKICAgICAgICAgdC5kb25lKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiaW5kZXhfZ2V0S2V5NS5o
dG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5n
L2lkYmluZGV4X2dldEtleTUuaHRtbAppbmRleCA4MTJjM2NkNDhkZDZhNjIzNzIyYjZmY2RiOWM3
ZjViMTQyYmY5Yzk0Li44ZWRhNTc5MDU4ZmMyZmFhNzQyYmQ2YTNjMGRjMTkxNmQyOWI1MWU1IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJv
d3NpbmcvaWRiaW5kZXhfZ2V0S2V5NS5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJpbmRleF9nZXRLZXk1Lmh0bWwKQEAgLTE3
LDcgKzE3LDcgQEAKIAogICAgICAgICB2YXIgaW5kZXggPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgi
dGVzdCIsIHsga2V5UGF0aDogImtleSIgfSkKICAgICAgICAgICAgICAgICAgICAgICAuY3JlYXRl
SW5kZXgoImluZGV4IiwgImluZGV4ZWRQcm9wZXJ0eSIpOwotICAgICAgICBhc3NlcnRfdGhyb3dz
KCJEYXRhRXJyb3IiLGZ1bmN0aW9uKCl7CisgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJEYXRh
RXJyb3IiLGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICBpbmRleC5nZXRLZXkoTmFOKTsKICAgICAg
ICAgfSk7CiAgICAgICAgIHQuZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmluZGV4X2dldEtleTYuaHRtbCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJp
bmRleF9nZXRLZXk2Lmh0bWwKaW5kZXggZjBjOGU4ODA1ZTZlNmVjYWZlMjdhYmNiNWJiZWVmNjZj
ZmI1Y2Q2OS4uMzZhN2Y3MTdiOTk3MmUyNzcxNzAxNzBjNjQ0NzUyMmI5MzE3ZjI0OCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5n
L2lkYmluZGV4X2dldEtleTYuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5k
ZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiaW5kZXhfZ2V0S2V5Ni5odG1sCkBAIC0yMCw3ICsy
MCw3IEBACiAgICAgICAgIHN0b3JlLmFkZCh7IGtleTogMSwgaW5kZXhlZFByb3BlcnR5OiAiZGF0
YSIgfSk7CiAgICAgICAgIHN0b3JlLmRlbGV0ZUluZGV4KCJpbmRleCIpOwogCi0gICAgICAgIGFz
c2VydF90aHJvd3MoIkludmFsaWRTdGF0ZUVycm9yIiwgZnVuY3Rpb24oKXsKKyAgICAgICAgYXNz
ZXJ0X3Rocm93c19kb20oIkludmFsaWRTdGF0ZUVycm9yIiwgZnVuY3Rpb24oKXsKICAgICAgICAg
ICAgIGluZGV4LmdldEtleSgiZGF0YSIpOwogICAgICAgICB9KTsKICAgICAgICAgdC5kb25lKCk7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUt
YnJvd3NpbmcvaWRiaW5kZXhfZ2V0S2V5Ny5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmluZGV4X2dldEtleTcuaHRtbAppbmRleCAy
ZGUwODA3OTk3Yjc1MTJjZjRlOTYyMDYzNTI5NTA2NTBjNzU4OTE5Li5iNzBiMzg0ZjQ0ZTIyNjg1
ZDM5ZTk2YWU2NGUyMGQwYzQ4NzdjYjI2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiaW5kZXhfZ2V0S2V5Ny5odG1sCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9p
ZGJpbmRleF9nZXRLZXk3Lmh0bWwKQEAgLTIwLDcgKzIwLDcgQEAKIAogICAgICAgICBlLnRhcmdl
dC50cmFuc2FjdGlvbi5hYm9ydCgpOwogCi0gICAgICAgIGFzc2VydF90aHJvd3MoIkludmFsaWRT
dGF0ZUVycm9yIiwgZnVuY3Rpb24oKXsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkludmFs
aWRTdGF0ZUVycm9yIiwgZnVuY3Rpb24oKXsKICAgICAgICAgICAgIGluZGV4LmdldEtleSgiZGF0
YSIpOwogICAgICAgICB9KTsKICAgICAgICAgdC5kb25lKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiaW5kZXhfb3Bl
bkN1cnNvci5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRl
LWJyb3dzaW5nL2lkYmluZGV4X29wZW5DdXJzb3IuaHRtbAppbmRleCBmOWZiNjhhNTE4M2NkM2Zk
N2ZlYTUzYmQ2NDFmZDQ0NzhiNjgwNTg2Li5hM2IwZDAxOWRjY2RjMzhiZTM3ODI2YTViZDZjNTkx
M2M0NjkzZjQzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERC
LXByaXZhdGUtYnJvd3NpbmcvaWRiaW5kZXhfb3BlbkN1cnNvci5odG1sCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJpbmRleF9vcGVu
Q3Vyc29yLmh0bWwKQEAgLTIwLDcgKzIwLDcgQEAKICAgICAgICAgc3RvcmUuYWRkKHsga2V5OiAx
LCBpbmRleGVkUHJvcGVydHk6ICJkYXRhIiB9KTsKICAgICAgICAgc3RvcmUuZGVsZXRlSW5kZXgo
ImluZGV4Iik7CiAKLSAgICAgICAgYXNzZXJ0X3Rocm93cygiSW52YWxpZFN0YXRlRXJyb3IiLCBm
dW5jdGlvbigpeworICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiSW52YWxpZFN0YXRlRXJyb3Ii
LCBmdW5jdGlvbigpewogICAgICAgICAgICAgaW5kZXgub3BlbkN1cnNvcigpOwogICAgICAgICB9
KTsKICAgICAgICAgdC5kb25lKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiaW5kZXhfb3BlbkN1cnNvcjIuaHRtbCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJp
bmRleF9vcGVuQ3Vyc29yMi5odG1sCmluZGV4IDAxMzhhY2I1ZWZlNjlkNDI4OTQzZmU3MDA4YjBi
ZDBhNTM0ODcwYjEuLjM1OWRjYTExYmFkMzE4NmZiYmUzYTcwYTU0YWRjYmEzZGM4YjdjMzggMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93
c2luZy9pZGJpbmRleF9vcGVuQ3Vyc29yMi5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJpbmRleF9vcGVuQ3Vyc29yMi5odG1s
CkBAIC0yMCw3ICsyMCw3IEBACiAKICAgICAgICAgZS50YXJnZXQudHJhbnNhY3Rpb24uYWJvcnQo
KTsKIAotICAgICAgICBhc3NlcnRfdGhyb3dzKCJJbnZhbGlkU3RhdGVFcnJvciIsIGZ1bmN0aW9u
KCl7CisgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlkU3RhdGVFcnJvciIsIGZ1bmN0
aW9uKCl7CiAgICAgICAgICAgICBpbmRleC5vcGVuQ3Vyc29yKCk7CiAgICAgICAgIH0pOwogICAg
ICAgICB0LmRvbmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRl
eGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJpbmRleF9vcGVuS2V5Q3Vyc29yLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiaW5kZXhf
b3BlbktleUN1cnNvci5odG1sCmluZGV4IDc1NTVlMDY0ZmIyYTFhMjJjMTdhOTVmODRiMTQxYmQ1
NjlmOTQ0ZTUuLjhkZWE1ODE0YTliMzUwNGY2NGNjYjk5ZDkyZGZiODUxNjZiZGE2ZmEgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2lu
Zy9pZGJpbmRleF9vcGVuS2V5Q3Vyc29yLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmluZGV4X29wZW5LZXlDdXJzb3IuaHRt
bApAQCAtMTksNyArMTksNyBAQAogCiAgICAgICAgIHN0b3JlLmFkZCh7IGtleTogMSwgaW5kZXhl
ZFByb3BlcnR5OiAiZGF0YSIgfSk7CiAKLSAgICAgICAgYXNzZXJ0X3Rocm93cygiRGF0YUVycm9y
IiwgZnVuY3Rpb24oKXsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkRhdGFFcnJvciIsIGZ1
bmN0aW9uKCl7CiAgICAgICAgICAgICBpbmRleC5vcGVuS2V5Q3Vyc29yKE5hTik7CiAgICAgICAg
IH0pOwogICAgICAgICB0LmRvbmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJpbmRleF9vcGVuS2V5Q3Vyc29yMi5o
dG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5n
L2lkYmluZGV4X29wZW5LZXlDdXJzb3IyLmh0bWwKaW5kZXggZDYzMmQxOTFjMDg1MDBiNTMwMmQ3
NWQ2MTFjYjFkNWQwODdlYzFmYS4uZGFiYzE2ZTM1MTJkMDIwNzU4OWJhMDM1ZGNhMjBiNDlhODkw
ZjNlOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2
YXRlLWJyb3dzaW5nL2lkYmluZGV4X29wZW5LZXlDdXJzb3IyLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmluZGV4X29wZW5L
ZXlDdXJzb3IyLmh0bWwKQEAgLTIwLDcgKzIwLDcgQEAKICAgICAgICAgc3RvcmUuYWRkKHsga2V5
OiAxLCBpbmRleGVkUHJvcGVydHk6ICJkYXRhIiB9KTsKICAgICAgICAgc3RvcmUuZGVsZXRlSW5k
ZXgoImluZGV4Iik7CiAKLSAgICAgICAgYXNzZXJ0X3Rocm93cygiSW52YWxpZFN0YXRlRXJyb3Ii
LCBmdW5jdGlvbigpeworICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiSW52YWxpZFN0YXRlRXJy
b3IiLCBmdW5jdGlvbigpewogICAgICAgICAgICAgaW5kZXgub3BlbktleUN1cnNvcigpOwogICAg
ICAgICB9KTsKICAgICAgICAgdC5kb25lKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiaW5kZXhfb3BlbktleUN1cnNv
cjMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93
c2luZy9pZGJpbmRleF9vcGVuS2V5Q3Vyc29yMy5odG1sCmluZGV4IDRhMmIyZjFhYmUxZmRjY2Zm
YjA0OWYwM2U0OGFjZGQzZTVhMjE2ZDEuLjJmMTBjZGFhZTc5M2VhN2MzMDJkMTIxODAyOTA4YjA2
ZDg4OWE0YTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREIt
cHJpdmF0ZS1icm93c2luZy9pZGJpbmRleF9vcGVuS2V5Q3Vyc29yMy5odG1sCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJpbmRleF9v
cGVuS2V5Q3Vyc29yMy5odG1sCkBAIC0yMCw3ICsyMCw3IEBACiAKICAgICAgICAgZS50YXJnZXQu
dHJhbnNhY3Rpb24uYWJvcnQoKTsKIAotICAgICAgICBhc3NlcnRfdGhyb3dzKCJJbnZhbGlkU3Rh
dGVFcnJvciIsIGZ1bmN0aW9uKCl7CisgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlk
U3RhdGVFcnJvciIsIGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICBpbmRleC5vcGVuS2V5Q3Vyc29y
KCk7CiAgICAgICAgIH0pOwogICAgICAgICB0LmRvbmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJrZXlyYW5nZV9p
bmNvcnJlY3QuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0
ZS1icm93c2luZy9pZGJrZXlyYW5nZV9pbmNvcnJlY3QuaHRtbAppbmRleCAxZTE5NzkxNDJlZmQ2
ODJlMDZkMmUxNzI3NTVmZDQwYmNkYzJiNjcyLi4yNDJkMWEzY2QxODBhYzNiYzgzYTZlMDA3NzE2
MzVlNjQ1Y2VmYzY4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhl
ZERCLXByaXZhdGUtYnJvd3NpbmcvaWRia2V5cmFuZ2VfaW5jb3JyZWN0Lmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmtleXJh
bmdlX2luY29ycmVjdC5odG1sCkBAIC0xNiwyNCArMTYsMjQgQEAKIAogICAgICAgICAgICAgLy8g
VHlwZUVycm9yOiBib3VuZCByZXF1aXJlcyBtb3JlIHRoYW4gMCBhcmd1bWVudHMKICAgICAgICAg
ICAgIHRlc3QoIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3MobmV3
IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dz
X2pzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgIElEQktleVJh
bmdlLmJvdW5kKCk7CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB9LCAiSURCS2V5
UmFuZ2UuYm91bmQoKSAtIGJvdW5kIHJlcXVpcmVzIG1vcmUgdGhhbiAwIGFyZ3VtZW50cy4iKTsK
IAogICAgICAgICAgICAgLy8gTnVsbCBwYXJhbWV0ZXJzCiAgICAgICAgICAgICB0ZXN0KCBmdW5j
dGlvbigpIHsKLSAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzKCJEYXRhRXJyb3IiLCBmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiRGF0YUVycm9yIiwg
ZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgIElEQktleVJhbmdlLmJvdW5kKG51bGws
IG51bGwpOwogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgfSwgIklEQktleVJhbmdl
LmJvdW5kKG51bGwsIG51bGwpIC0gbnVsbCBwYXJhbWV0ZXJzIGFyZSBpbmNvcnJlY3QuIik7CiAK
ICAgICAgICAgICAgIC8vIC8vIE51bGwgcGFyYW1ldGVyCiAgICAgICAgICAgICB0ZXN0KCBmdW5j
dGlvbigpIHsKLSAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzKCJEYXRhRXJyb3IiLCBmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiRGF0YUVycm9yIiwg
ZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgIElEQktleVJhbmdlLmJvdW5kKDEsIG51
bGwpOwogICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3Mo
IkRhdGFFcnJvciIsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3Nf
ZG9tKCJEYXRhRXJyb3IiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgSURCS2V5
UmFuZ2UuYm91bmQobnVsbCwgMSk7CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB9
LCAiSURCS2V5UmFuZ2UuYm91bmQoMSwgbnVsbCAvIG51bGwsIDEpIC0gbnVsbCBwYXJhbWV0ZXIg
aXMgaW5jb3JyZWN0LiIpOwpAQCAtNDIsMjMgKzQyLDIzIEBACiAgICAgICAgICAgICB0ZXN0KCBm
dW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICB2YXIgbG93ZXJCYWQgPSBNYXRoLmZsb29yKE1h
dGgucmFuZG9tKCkqMzEpICsgNTsKICAgICAgICAgICAgICAgICB2YXIgdXBwZXIgPSBsb3dlckJh
ZCAtIDE7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygiRGF0YUVycm9yIiwgZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkRhdGFFcnJvciIsIGZ1
bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICBJREJLZXlSYW5nZS5ib3VuZChsb3dlckJh
ZCwgdXBwZXIpOwogICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIGFzc2VydF90
aHJvd3MoIkRhdGFFcnJvciIsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGFzc2VydF90
aHJvd3NfZG9tKCJEYXRhRXJyb3IiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAg
SURCS2V5UmFuZ2UuYm91bmQoJ2InLCAnYScpOwogICAgICAgICAgICAgICAgIH0pOwogICAgICAg
ICAgICAgfSwgIklEQktleVJhbmdlLmJvdW5kKGxvd2VyLCB1cHBlciAvIGxvd2VyID4gdXBwZXIp
IC0gICdsb3dlcicgaXMgZ3JlYXRlciB0aGFuICd1cHBlcicuIgogICAgICAgICAgICAgKTsKIAog
ICAgICAgICAgICAgdGVzdCggZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X3Ro
cm93cygiRGF0YUVycm9yIiwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X3Ro
cm93c19kb20oIkRhdGFFcnJvciIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICBJ
REJLZXlSYW5nZS5ib3VuZCgnYScsIDEpOwogICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAg
ICAgICAgIGFzc2VydF90aHJvd3MoIkRhdGFFcnJvciIsIGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJEYXRhRXJyb3IiLCBmdW5jdGlvbigpIHsKICAgICAg
ICAgICAgICAgICAgICAgSURCS2V5UmFuZ2UuYm91bmQobmV3IERhdGUoKSwgMSk7CiAgICAgICAg
ICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygiRGF0YUVycm9yIiwg
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkRhdGFFcnJv
ciIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICBJREJLZXlSYW5nZS5ib3VuZChb
MSwgMl0sIDEpOwogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgfSwgIklEQktleVJh
bmdlLmJvdW5kKERPTVN0cmluZy9EYXRlL0FycmF5LCAxKSAtIEEgRE9NU3RyaW5nLCBEYXRlIGFu
ZCBBcnJheSBhcmUgZ3JlYXRlciB0aGFuIGEgZmxvYXQuIik7CkBAIC02NywxNyArNjcsMTcgQEAK
ICAgICAgICAgICAgIC8vIFJlZmVyZW5jZUVycm9yOiB0aGUgdmFyaWFibGUgaXMgbm90IGRlZmlu
ZWQKICAgICAgICAgICAgIHRlc3QoIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgIHZhciBn
b29kVmFyaWFibGUgPSAxOwotICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3MobmV3IFJlZmVy
ZW5jZUVycm9yKCksIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3Nf
anMoUmVmZXJlbmNlRXJyb3IsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICBJREJL
ZXlSYW5nZS5ib3VuZChub0V4aXN0aW5nVmFyaWFibGUsIDEpOwogICAgICAgICAgICAgICAgIH0p
OwotICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3MobmV3IFJlZmVyZW5jZUVycm9yKCksIGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3NfanMoUmVmZXJlbmNlRXJy
b3IsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICBJREJLZXlSYW5nZS5ib3VuZChn
b29kVmFyaWFibGUsIG5vRXhpc3RpbmdWYXJpYWJsZSk7CiAgICAgICAgICAgICAgICAgfSk7CiAg
ICAgICAgICAgICB9LCAiSURCS2V5UmFuZ2UuYm91bmQobm9FeGlzdGluZ1ZhcmlhYmxlLCAxIC8g
Z29vZFZhcmlhYmxlLCBub0V4aXN0aW5nVmFyaWFibGUpIC0gbm9FeGlzdGluZ1ZhcmlhYmxlIGlz
IG5vdCBkZWZpbmVkLiIpOwogCiAgICAgICAgICAgICAvLyBWYWxpZCB0eXBlIGtleSBlcnJvcgog
ICAgICAgICAgICAgdGVzdCggZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X3Ro
cm93cygiRGF0YUVycm9yIiwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X3Ro
cm93c19kb20oIkRhdGFFcnJvciIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICBJ
REJLZXlSYW5nZS5ib3VuZCh0cnVlLCAxKTsKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAg
ICAgIH0sICJJREJLZXlSYW5nZS5ib3VuZCh0cnVlLCAxKSAtIGJvb2xlYW4gaXMgbm90IGEgdmFs
aWQga2V5IHR5cGUuIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5k
ZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfYWRkMTAuaHRtbCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3Rz
dG9yZV9hZGQxMC5odG1sCmluZGV4IDA4ZjcxNmQzMWRiZmJkOWRkYzdmOGE5NGE5ODYxMTc2MGM0
N2Y3ZmEuLmY4NGY5YzVjYzQ4MTI3YmQzNTNlMmFkZjhmNWVmMzM4YjQzNDRjYTIgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9p
ZGJvYmplY3RzdG9yZV9hZGQxMC5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9J
bmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9hZGQxMC5odG1sCkBAIC0x
OCw3ICsxOCw3IEBACiAgICAgICAgIHZhciBycSwKICAgICAgICAgICBvYmpTdG9yZSA9IGRiLmNy
ZWF0ZU9iamVjdFN0b3JlKCJzdG9yZSIpOwogCi0gICAgICAgIGFzc2VydF90aHJvd3MoIkRhdGFF
cnJvciIsCisgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJEYXRhRXJyb3IiLAogICAgICAgICAg
ICAgZnVuY3Rpb24oKSB7IHJxID0gb2JqU3RvcmUuYWRkKHJlY29yZCk7IH0pOwogCiAgICAgICAg
IGFzc2VydF9lcXVhbHMocnEsIHVuZGVmaW5lZCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfYWRk
MTEuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93
c2luZy9pZGJvYmplY3RzdG9yZV9hZGQxMS5odG1sCmluZGV4IGVlNmE0ZTQwYmEyMWU1OTBjN2E4
ZjBiMzRmNDEyZmM4NTViM2M3MDQuLjJhZDY0YjlmZWM5Y2I1NzE4MWYxMmYwY2NmOTFiOWU0NTRi
Y2JmZWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJp
dmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9hZGQxMS5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9h
ZGQxMS5odG1sCkBAIC0xOCw3ICsxOCw3IEBACiAgICAgICAgIHZhciBycSwKICAgICAgICAgICBv
YmpTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCJzdG9yZSIsIHsga2V5UGF0aDogImtleSIg
fSk7CiAKLSAgICAgICAgYXNzZXJ0X3Rocm93cygiRGF0YUVycm9yIiwKKyAgICAgICAgYXNzZXJ0
X3Rocm93c19kb20oIkRhdGFFcnJvciIsCiAgICAgICAgICAgICBmdW5jdGlvbigpIHsgcnEgPSBv
YmpTdG9yZS5hZGQocmVjb3JkKTsgfSk7CiAKICAgICAgICAgYXNzZXJ0X2VxdWFscyhycSwgdW5k
ZWZpbmVkKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREIt
cHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9hZGQxMi5odG1sIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2Fk
ZDEyLmh0bWwKaW5kZXggZTE0Y2RhN2I1NTgyYzBlYTViZDc5ZWZlYjE2NjEyZGU2OTI0YjEyMS4u
M2FmMDgxZjM2NjZjZjZlNjJkOTQ1OTU1NWU2NzA3YjRjZTM3ZWM3ZSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVj
dHN0b3JlX2FkZDEyLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWRE
Qi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2FkZDEyLmh0bWwKQEAgLTE4LDcgKzE4
LDcgQEAKICAgICAgICAgdmFyIHJxLAogICAgICAgICAgIG9ialN0b3JlID0gZGIuY3JlYXRlT2Jq
ZWN0U3RvcmUoInN0b3JlIiwgeyBrZXlQYXRoOiAia2V5IiB9KTsKIAotICAgICAgICBhc3NlcnRf
dGhyb3dzKCJEYXRhRXJyb3IiLAorICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiRGF0YUVycm9y
IiwKICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyBycSA9IG9ialN0b3JlLmFkZChyZWNvcmQpOyB9
KTsKIAogICAgICAgICBhc3NlcnRfZXF1YWxzKHJxLCB1bmRlZmluZWQpOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9i
amVjdHN0b3JlX2FkZDEzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERC
LXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfYWRkMTMuaHRtbAppbmRleCAzZjRiMzBk
M2FmYzE4MjdhMTEyNTE4MDg3MDc4OTU4OWFiODI2NjUzLi5hNmFkMmYzMDljZTE1MGZmN2ViZjIw
M2FmMDg2OWFiN2E2NDUyN2Q5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
SW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfYWRkMTMuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRi
b2JqZWN0c3RvcmVfYWRkMTMuaHRtbApAQCAtMTgsNyArMTgsNyBAQAogICAgICAgICB2YXIgcnEs
CiAgICAgICAgICAgb2JqU3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgic3RvcmUiKTsKIAot
ICAgICAgICBhc3NlcnRfdGhyb3dzKCJEYXRhRXJyb3IiLAorICAgICAgICBhc3NlcnRfdGhyb3dz
X2RvbSgiRGF0YUVycm9yIiwKICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyBycSA9IG9ialN0b3Jl
LmFkZChyZWNvcmQsIHsgdmFsdWU6IDEgfSk7IH0pOwogCiAgICAgICAgIGFzc2VydF9lcXVhbHMo
cnEsIHVuZGVmaW5lZCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5k
ZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfYWRkMTUuaHRtbCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3Rz
dG9yZV9hZGQxNS5odG1sCmluZGV4IGMzMjJjYTdkYTBiMThjZjZjMDU0YTE3YmU3N2EzMjNkZGIy
ZmQ2MWIuLjBkZjcxMzQyNDM0ODA4YzA3MDI1Mzg4ZWRlOGNkZmZmMGZiMTk0ZmYgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9p
ZGJvYmplY3RzdG9yZV9hZGQxNS5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9J
bmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9hZGQxNS5odG1sCkBAIC0y
MSw3ICsyMSw3IEBACiAgICAgICAgIHZhciB0eG4gPSBkYi50cmFuc2FjdGlvbigic3RvcmUiKTsK
ICAgICAgICAgdmFyIG9zdG9yZSA9IHR4bi5vYmplY3RTdG9yZSgic3RvcmUiKTsKICAgICAgICAg
dC5zdGVwKGZ1bmN0aW9uKCl7Ci0gICAgICAgICAgICBhc3NlcnRfdGhyb3dzKCJSZWFkT25seUVy
cm9yIiwgZnVuY3Rpb24oKXsKKyAgICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJSZWFkT25s
eUVycm9yIiwgZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICBvc3RvcmUuYWRkKHsgcEtleTog
InByaW1hcnlLZXlfMCJ9KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9p
ZGJvYmplY3RzdG9yZV9hZGQxNi5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4
ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2FkZDE2Lmh0bWwKaW5kZXggMGQx
MmUwNDNmNzJhN2ZkZDMyYzBmNmNiOGI0Njk1NmMwMWVmMDIxNC4uZGQ2NWQ5MDQ2NzA3NmQwNzI5
ZTBmYjI4ZGJmYmQ1YzBiNTdiYWEzYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2FkZDE2Lmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5n
L2lkYm9iamVjdHN0b3JlX2FkZDE2Lmh0bWwKQEAgLTIxLDcgKzIxLDcgQEAKIAogICAgIG9wZW5f
cnEub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7CiAgICAgICAgIHQuc3RlcChmdW5jdGlv
bigpewotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygiSW52YWxpZFN0YXRlRXJyb3IiLCBmdW5j
dGlvbigpeworICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkludmFsaWRTdGF0ZUVycm9y
IiwgZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICBvc3RvcmUuYWRkKHsgcEtleTogInByaW1h
cnlLZXlfMCJ9KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmpl
Y3RzdG9yZV9hZGQ5Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXBy
aXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfYWRkOS5odG1sCmluZGV4IGM5MzA0YTAzMTBh
NzA5NzFlY2JmNTY2OGMwOWU4ZTNhMWNmYmQwYjMuLjhlMjgyMDBlNmNlZjFhMjAxNTYzMDcyOTcx
N2U5ZGIxMWMzZGRkZTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRl
eGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9hZGQ5Lmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVj
dHN0b3JlX2FkZDkuaHRtbApAQCAtMTYsNyArMTYsNyBAQAogICAgICAgICAgIGRiID0gZS50YXJn
ZXQucmVzdWx0LAogICAgICAgICAgIG9ialN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoInN0
b3JlIiwgeyBrZXlQYXRoOiAia2V5IiB9KTsKIAotICAgICAgICBhc3NlcnRfdGhyb3dzKCJEYXRh
RXJyb3IiLAorICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiRGF0YUVycm9yIiwKICAgICAgICAg
ICAgIGZ1bmN0aW9uKCkgeyBycSA9IG9ialN0b3JlLmFkZChyZWNvcmQsIDEpOyB9KTsKIAogICAg
ICAgICBhc3NlcnRfZXF1YWxzKHJxLCB1bmRlZmluZWQpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3Jl
X2NsZWFyMy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRl
LWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2NsZWFyMy5odG1sCmluZGV4IGQ1NTA5YWM5NjE2YjFi
MzRmMWE3ZjNhYTU3YmIwMmFkZWMwODhlZGUuLjExNzFkYjZlNzc5NGFiNjhiOWRhZGFhNGMzZWM4
ZTYwYzczYmM3ZjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVk
REItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9jbGVhcjMuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0
c3RvcmVfY2xlYXIzLmh0bWwKQEAgLTI2LDcgKzI2LDcgQEAKICAgICAgICAgdmFyIHR4biA9IGRi
LnRyYW5zYWN0aW9uKCJzdG9yZSIpOwogICAgICAgICB2YXIgb3N0b3JlID0gdHhuLm9iamVjdFN0
b3JlKCJzdG9yZSIpOwogICAgICAgICB0LnN0ZXAoZnVuY3Rpb24oKXsKLSAgICAgICAgICAgIGFz
c2VydF90aHJvd3MoIlJlYWRPbmx5RXJyb3IiLCBmdW5jdGlvbigpeworICAgICAgICAgICAgYXNz
ZXJ0X3Rocm93c19kb20oIlJlYWRPbmx5RXJyb3IiLCBmdW5jdGlvbigpewogICAgICAgICAgICAg
ICAgIG9zdG9yZS5jbGVhcigpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5n
L2lkYm9iamVjdHN0b3JlX2NsZWFyNC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0lu
ZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2NsZWFyNC5odG1sCmluZGV4
IDI3NTI1MmIwNGM5MzI2MzgwZjc2MTRlYTZiOGQ1M2NiYWFkNmUwMjUuLjcxMWI5YmU5OTkyNjQz
OWZlOTJiYzFiYTBiNDdjYWJkOTFjYjAxZDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9jbGVhcjQu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJv
d3NpbmcvaWRib2JqZWN0c3RvcmVfY2xlYXI0Lmh0bWwKQEAgLTIxLDcgKzIxLDcgQEAKIAogICAg
IG9wZW5fcnEub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7CiAgICAgICAgIHQuc3RlcChm
dW5jdGlvbigpewotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygiSW52YWxpZFN0YXRlRXJyb3Ii
LCBmdW5jdGlvbigpeworICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkludmFsaWRTdGF0
ZUVycm9yIiwgZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICBvc3RvcmUuY2xlYXIoKTsKICAg
ICAgICAgICAgIH0pOwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9jb3VudDQu
aHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2lu
Zy9pZGJvYmplY3RzdG9yZV9jb3VudDQuaHRtbAppbmRleCA5MWRhOGFjOGU1MjI5ZjMxZGZhMWNh
YzY3ZWIyMDQ3NDA1MDZiMjM2Li45ZjRjODhjZDQ0MTc4ZWJiZWJiMmFiYjZlMmM2MjhkNDYwMGFl
ZGQ0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZh
dGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfY291bnQ0Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2Nv
dW50NC5odG1sCkBAIC0yMSw3ICsyMSw3IEBACiAKICAgICBvcGVuX3JxLm9uc3VjY2VzcyA9IGZ1
bmN0aW9uIChldmVudCkgewogICAgICAgICB0LnN0ZXAoZnVuY3Rpb24oKXsKLSAgICAgICAgICAg
IGFzc2VydF90aHJvd3MoIkludmFsaWRTdGF0ZUVycm9yIiwgZnVuY3Rpb24oKXsKKyAgICAgICAg
ICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlkU3RhdGVFcnJvciIsIGZ1bmN0aW9uKCl7CiAg
ICAgICAgICAgICAgICAgb3N0b3JlLmNvdW50KCk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAg
fSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZh
dGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfY3JlYXRlSW5kZXgxMC5odG1sIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3Jl
X2NyZWF0ZUluZGV4MTAuaHRtbAppbmRleCBlNjBlMTE5NzliOTJmZjE1MzljNjk1MWI0YWE5MWE3
OTBkNjU0MjhhLi4wNzEyNGYwYzA4Yzg0YmY1YzY2YTYzMzkyOWNhYjhhNjhiZmVmMWM4IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Np
bmcvaWRib2JqZWN0c3RvcmVfY3JlYXRlSW5kZXgxMC5odG1sCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9jcmVh
dGVJbmRleDEwLmh0bWwKQEAgLTE1LDcgKzE1LDcgQEAgb3Blbl9ycS5vbnVwZ3JhZGVuZWVkZWQg
PSBmdW5jdGlvbiAoZSkgewogICAgIHZhciBkYiA9IGUudGFyZ2V0LnJlc3VsdDsKICAgICB2YXIg
b3N0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoInN0b3JlIik7CiAgICAgb3N0b3JlLmNyZWF0
ZUluZGV4KCJhIiwgImEiKTsKLSAgICBhc3NlcnRfdGhyb3dzKCJDb25zdHJhaW50RXJyb3IiLCBm
dW5jdGlvbigpeworICAgIGFzc2VydF90aHJvd3NfZG9tKCJDb25zdHJhaW50RXJyb3IiLCBmdW5j
dGlvbigpewogICAgICAgICBvc3RvcmUuY3JlYXRlSW5kZXgoImEiLCAiYSIpOwogICAgIH0pOwog
ICAgIHQuZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4
ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2NyZWF0ZUluZGV4MTEuaHRtbCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJv
YmplY3RzdG9yZV9jcmVhdGVJbmRleDExLmh0bWwKaW5kZXggZDQ0ZDI0NTA2ZmJkNmQ5NGFlNzQy
MTA2NmM1MzEzYjMxNDFkNTE1Mi4uMzgxNDUyMzA3MWNlZGZmOTQ1ZGY4MGJiNzRiN2UzODhmMjQ4
ZjMzNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2
YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2NyZWF0ZUluZGV4MTEuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0
c3RvcmVfY3JlYXRlSW5kZXgxMS5odG1sCkBAIC0xNCw3ICsxNCw3IEBAIHZhciB0ID0gYXN5bmNf
dGVzdCgpLAogb3Blbl9ycS5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbiAoZSkgewogICAgIHZh
ciBkYiA9IGUudGFyZ2V0LnJlc3VsdDsKICAgICB2YXIgb3N0b3JlID0gZGIuY3JlYXRlT2JqZWN0
U3RvcmUoInN0b3JlIik7Ci0gICAgYXNzZXJ0X3Rocm93cygiU3ludGF4RXJyb3IiLCBmdW5jdGlv
bigpeworICAgIGFzc2VydF90aHJvd3NfZG9tKCJTeW50YXhFcnJvciIsIGZ1bmN0aW9uKCl7CiAg
ICAgICAgIG9zdG9yZS5jcmVhdGVJbmRleCgiYWIiLCAiLiIpOwogICAgIH0pOwogICAgIHQuZG9u
ZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2
YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2NyZWF0ZUluZGV4MTIuaHRtbCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9y
ZV9jcmVhdGVJbmRleDEyLmh0bWwKaW5kZXggNDhhNmQ2YTc3OTBjZGNiOGEyNjI3Y2UwYTZkOTE2
N2FlZWQ0MjhkOC4uMjc3ZmY5NGY3YThlMjZmMDVjMTllMzQ0NmIzZTE5ZjJiODc0YTUzOSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dz
aW5nL2lkYm9iamVjdHN0b3JlX2NyZWF0ZUluZGV4MTIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfY3Jl
YXRlSW5kZXgxMi5odG1sCkBAIC0yMSw3ICsyMSw3IEBACiAKICAgICBvcGVuX3JxLm9uc3VjY2Vz
cyA9IGZ1bmN0aW9uIChldmVudCkgewogICAgICAgICB0LnN0ZXAoZnVuY3Rpb24oKXsKLSAgICAg
ICAgICAgIGFzc2VydF90aHJvd3MoIkludmFsaWRTdGF0ZUVycm9yIiwgZnVuY3Rpb24oKXsKKyAg
ICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlkU3RhdGVFcnJvciIsIGZ1bmN0aW9u
KCl7CiAgICAgICAgICAgICAgICAgb3N0b3JlLmNyZWF0ZUluZGV4KCJpbmRleCIsICJpbmRleGVk
UHJvcGVydHkiKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmpl
Y3RzdG9yZV9jcmVhdGVJbmRleDEzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5k
ZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfY3JlYXRlSW5kZXgxMy5odG1s
CmluZGV4IGY1MTIzMWM1MjU3ODNlOTZjMjBkMmU0ZWMzNzFjNTZjYWZhYzBlZDkuLjYxNWE5MDEy
ZGNmMDE3ZGIwYzcyMGYyNjY5ZjMzMzMxZmI2MzZiNzcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9j
cmVhdGVJbmRleDEzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWRE
Qi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2NyZWF0ZUluZGV4MTMuaHRtbApAQCAt
MjEsNyArMjEsNyBAQAogICAgICAgICB2YXIgdHhuID0gZGIudHJhbnNhY3Rpb24oInN0b3JlIiwg
InJlYWR3cml0ZSIpOwogICAgICAgICBvc3RvcmUgPSB0eG4ub2JqZWN0U3RvcmUoInN0b3JlIik7
CiAgICAgICAgIHQuc3RlcChmdW5jdGlvbigpewotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygi
SW52YWxpZFN0YXRlRXJyb3IiLCBmdW5jdGlvbigpeworICAgICAgICAgICAgYXNzZXJ0X3Rocm93
c19kb20oIkludmFsaWRTdGF0ZUVycm9yIiwgZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICBv
c3RvcmUuY3JlYXRlSW5kZXgoImluZGV4IiwgImluZGV4ZWRQcm9wZXJ0eSIpOwogICAgICAgICAg
ICAgfSk7CiAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2RlbGV0ZTYuaHRtbCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJv
YmplY3RzdG9yZV9kZWxldGU2Lmh0bWwKaW5kZXggMjI1NGUwNDMyNWY5M2E0ZjRmN2U2NmNlYmYw
ZTkwYTg1MTFiYjA1Zi4uMTVjNzQ4OTUyYjllZWNkYzQyN2ExYmQ4ZTk5YTlkNzdkOGJlNThkMiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJy
b3dzaW5nL2lkYm9iamVjdHN0b3JlX2RlbGV0ZTYuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfZGVsZXRl
Ni5odG1sCkBAIC0yNiw3ICsyNiw3IEBACiAgICAgICAgIHZhciB0eG4gPSBkYi50cmFuc2FjdGlv
bigic3RvcmUiKTsKICAgICAgICAgdmFyIG9zdG9yZSA9IHR4bi5vYmplY3RTdG9yZSgic3RvcmUi
KTsKICAgICAgICAgdC5zdGVwKGZ1bmN0aW9uKCl7Ci0gICAgICAgICAgICBhc3NlcnRfdGhyb3dz
KCJSZWFkT25seUVycm9yIiwgZnVuY3Rpb24oKXsKKyAgICAgICAgICAgIGFzc2VydF90aHJvd3Nf
ZG9tKCJSZWFkT25seUVycm9yIiwgZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICBvc3RvcmUu
ZGVsZXRlKCJwcmltYXJ5S2V5XzAiKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93
c2luZy9pZGJvYmplY3RzdG9yZV9kZWxldGU3Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfZGVsZXRlNy5odG1s
CmluZGV4IGJmMTU3Yjk3NDE0YWEzMDc5NzgyNjAxMzkxZjllY2JiN2MxNDFmOTQuLjA2MWQ2YmRk
NDEwZGNlY2VmMGYxOTAzOTlmNjg0YTlhYTY0ZDM5NTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9k
ZWxldGU3Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2
YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2RlbGV0ZTcuaHRtbApAQCAtMjMsNyArMjMsNyBA
QAogCiAgICAgb3Blbl9ycS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQpIHsKICAgICAgICAg
dC5zdGVwKGZ1bmN0aW9uKCl7Ci0gICAgICAgICAgICBhc3NlcnRfdGhyb3dzKCJJbnZhbGlkU3Rh
dGVFcnJvciIsIGZ1bmN0aW9uKCl7CisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiSW52
YWxpZFN0YXRlRXJyb3IiLCBmdW5jdGlvbigpewogICAgICAgICAgICAgICAgIG9zdG9yZS5kZWxl
dGUoInByaW1hcnlLZXlfMCIpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5n
L2lkYm9iamVjdHN0b3JlX2RlbGV0ZUluZGV4Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfZGVsZXRlSW5kZXgu
aHRtbAppbmRleCBkZjJmN2ZhZGM5NjdjNTg4NDNiMDVlNmEwMWE3ZDU4YzI1NWQ4ZmYxLi5iZGE0
MjM1NDJlMjYxYWI1YTVmYWQyOTg4ZmYwOWIwMmJhYjNmYWExIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3Rv
cmVfZGVsZXRlSW5kZXguaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhl
ZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfZGVsZXRlSW5kZXguaHRtbApAQCAt
MzIsNyArMzIsNyBAQAogICAgICAgICAgICAgICBvYmpTdG9yZSA9IGRiLnRyYW5zYWN0aW9uKCJ0
ZXN0IikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5vYmplY3RTdG9yZSgidGVzdCIpOwog
Ci0gICAgICAgICAgICBhc3NlcnRfdGhyb3dzKCdOb3RGb3VuZEVycm9yJywKKyAgICAgICAgICAg
IGFzc2VydF90aHJvd3NfZG9tKCdOb3RGb3VuZEVycm9yJywKICAgICAgICAgICAgICAgICBmdW5j
dGlvbigpIHsgaW5kZXggPSBvYmpTdG9yZS5pbmRleCgiaW5kZXgiKSB9KTsKICAgICAgICAgICAg
IGFzc2VydF9lcXVhbHMoaW5kZXgsIHVuZGVmaW5lZCk7CiAgICAgICAgICAgICB0LmRvbmUoKTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1i
cm93c2luZy9pZGJvYmplY3RzdG9yZV9kZWxldGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfZGVsZXRlZC5o
dG1sCmluZGV4IGNlNzJiYmE2ZGIxMTMwN2U2NzViNjNlZjYzZGM3NDM1MzYwZDYxZGQuLjhlMmZj
NWNiNzZiMDUyNjhlYjM0M2E0MThlYTc0MDBkM2NiZGI5NDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9y
ZV9kZWxldGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1w
cml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2RlbGV0ZWQuaHRtbApAQCAtMjgsMTYgKzI4
LDE2IEBACiAgICAgICAgIGRiLmRlbGV0ZU9iamVjdFN0b3JlKCJzdG9yZSIpOwogICAgICAgICBh
c3NlcnRfZXF1YWxzKGRiLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoLCAwLCAib2JqZWN0U3RvcmVO
YW1lcy5sZW5ndGggYWZ0ZXIgZGVsZXRlIik7CiAKLSAgICAgICAgYXNzZXJ0X3Rocm93cyhET01F
eGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIsIGZ1bmN0aW9uKCkgeyBvYmpTdG9yZS5hZGQoMik7
IH0pOwotICAgICAgICBhc3NlcnRfdGhyb3dzKERPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VS
UiwgZnVuY3Rpb24oKSB7IG9ialN0b3JlLnB1dCgzKTsgfSk7Ci0gICAgICAgIGFzc2VydF90aHJv
d3MoRE9NRXhjZXB0aW9uLklOVkFMSURfU1RBVEVfRVJSLCBmdW5jdGlvbigpIHsgb2JqU3RvcmUu
Z2V0KDEpOyB9KTsKLSAgICAgICAgYXNzZXJ0X3Rocm93cyhET01FeGNlcHRpb24uSU5WQUxJRF9T
VEFURV9FUlIsIGZ1bmN0aW9uKCkgeyBvYmpTdG9yZS5jbGVhcigpOyB9KTsKLSAgICAgICAgYXNz
ZXJ0X3Rocm93cyhET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIsIGZ1bmN0aW9uKCkgeyBv
YmpTdG9yZS5jb3VudCgpOyB9KTsKLSAgICAgICAgYXNzZXJ0X3Rocm93cyhET01FeGNlcHRpb24u
SU5WQUxJRF9TVEFURV9FUlIsIGZ1bmN0aW9uKCkgeyBvYmpTdG9yZS5kZWxldGUoMSk7IH0pOwot
ICAgICAgICBhc3NlcnRfdGhyb3dzKERPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUiwgZnVu
Y3Rpb24oKSB7IG9ialN0b3JlLm9wZW5DdXJzb3IoKTsgfSk7Ci0gICAgICAgIGFzc2VydF90aHJv
d3MoRE9NRXhjZXB0aW9uLklOVkFMSURfU1RBVEVfRVJSLCBmdW5jdGlvbigpIHsgb2JqU3RvcmUu
aW5kZXgoImlkeCIpOyB9KTsKLSAgICAgICAgYXNzZXJ0X3Rocm93cyhET01FeGNlcHRpb24uSU5W
QUxJRF9TVEFURV9FUlIsIGZ1bmN0aW9uKCkgeyBvYmpTdG9yZS5kZWxldGVJbmRleCgiaWR4Iik7
IH0pOwotICAgICAgICBhc3NlcnRfdGhyb3dzKERPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VS
UiwgZnVuY3Rpb24oKSB7IG9ialN0b3JlLmNyZWF0ZUluZGV4KCJpZHgyIiwgImEiKTsgfSk7Cisg
ICAgICAgIGFzc2VydF90aHJvd3NfZG9tKERPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUiwg
ZnVuY3Rpb24oKSB7IG9ialN0b3JlLmFkZCgyKTsgfSk7CisgICAgICAgIGFzc2VydF90aHJvd3Nf
ZG9tKERPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUiwgZnVuY3Rpb24oKSB7IG9ialN0b3Jl
LnB1dCgzKTsgfSk7CisgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKERPTUV4Y2VwdGlvbi5JTlZB
TElEX1NUQVRFX0VSUiwgZnVuY3Rpb24oKSB7IG9ialN0b3JlLmdldCgxKTsgfSk7CisgICAgICAg
IGFzc2VydF90aHJvd3NfZG9tKERPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUiwgZnVuY3Rp
b24oKSB7IG9ialN0b3JlLmNsZWFyKCk7IH0pOworICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbShE
T01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIsIGZ1bmN0aW9uKCkgeyBvYmpTdG9yZS5jb3Vu
dCgpOyB9KTsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oRE9NRXhjZXB0aW9uLklOVkFMSURf
U1RBVEVfRVJSLCBmdW5jdGlvbigpIHsgb2JqU3RvcmUuZGVsZXRlKDEpOyB9KTsKKyAgICAgICAg
YXNzZXJ0X3Rocm93c19kb20oRE9NRXhjZXB0aW9uLklOVkFMSURfU1RBVEVfRVJSLCBmdW5jdGlv
bigpIHsgb2JqU3RvcmUub3BlbkN1cnNvcigpOyB9KTsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19k
b20oRE9NRXhjZXB0aW9uLklOVkFMSURfU1RBVEVfRVJSLCBmdW5jdGlvbigpIHsgb2JqU3RvcmUu
aW5kZXgoImlkeCIpOyB9KTsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oRE9NRXhjZXB0aW9u
LklOVkFMSURfU1RBVEVfRVJSLCBmdW5jdGlvbigpIHsgb2JqU3RvcmUuZGVsZXRlSW5kZXgoImlk
eCIpOyB9KTsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oRE9NRXhjZXB0aW9uLklOVkFMSURf
U1RBVEVfRVJSLCBmdW5jdGlvbigpIHsgb2JqU3RvcmUuY3JlYXRlSW5kZXgoImlkeDIiLCAiYSIp
OyB9KTsKICAgICB9CiAKICAgICBvcGVuX3JxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgewpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dz
aW5nL2lkYm9iamVjdHN0b3JlX2dldDYuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9J
bmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9nZXQ2Lmh0bWwKaW5kZXgg
NWE3YjU0NzdiOGE1NThjMDJlZDdiMmIxMmMzMDhlNzQ1NjIwNzFjNS4uZmE1ZmM2YmZjNmJkNTQz
OTBlNzU4MDg5YzNjYjQ5ZDM3OGQyOTRhNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2dldDYuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Np
bmcvaWRib2JqZWN0c3RvcmVfZ2V0Ni5odG1sCkBAIC0yMCw3ICsyMCw3IEBACiAgICAgICAgIHZh
ciBzdG9yZSA9IGRiLnRyYW5zYWN0aW9uKCJzdG9yZSIpCiAgICAgICAgICAgICAgICAgICAgICAg
Lm9iamVjdFN0b3JlKCJzdG9yZSIpOwogICAgICAgICBzdG9yZS50cmFuc2FjdGlvbi5hYm9ydCgp
OwotICAgICAgICBhc3NlcnRfdGhyb3dzKCJUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3IiLCBmdW5j
dGlvbiAoKSB7CisgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJUcmFuc2FjdGlvbkluYWN0aXZl
RXJyb3IiLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBzdG9yZS5nZXQoMSk7CiAgICAgICAg
IH0sICJ0aHJvdyBUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3Igb24gYWJvcnRlZCB0cmFuc2FjdGlv
bi4iKTsKICAgICAgICAgdC5kb25lKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfZ2V0Ny5odG1s
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lk
Ym9iamVjdHN0b3JlX2dldDcuaHRtbAppbmRleCA3OTU2MTBjOWVlYTJmYjhkM2E3NzM1ZGUxMjlh
MGFlNjFlZTcyYTE1Li5hYWRlOWFhNGM4ZmI5NWYwNjRhOTdlNzdjMjFmMmI1MGM1ZTZjYWQ0IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJv
d3NpbmcvaWRib2JqZWN0c3RvcmVfZ2V0Ny5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9nZXQ3Lmh0bWwK
QEAgLTE5LDcgKzE5LDcgQEAKICAgICBvcGVuX3JxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGUpIHsK
ICAgICAgICAgdmFyIHN0b3JlID0gZGIudHJhbnNhY3Rpb24oInN0b3JlIikKICAgICAgICAgICAg
ICAgICAgICAgICAub2JqZWN0U3RvcmUoInN0b3JlIikKLSAgICAgICAgYXNzZXJ0X3Rocm93cygi
RGF0YUVycm9yIiwgZnVuY3Rpb24gKCkgeworICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiRGF0
YUVycm9yIiwgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgc3RvcmUuZ2V0KG51bGwpCiAgICAg
ICAgIH0sICJ0aHJvdyBEYXRhRXJyb3Igd2hlbiB1c2luZyBpbnZhbGlkIGtleS4iKTsKICAgICAg
ICAgdC5kb25lKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhl
ZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfb3BlbkN1cnNvcl9pbnZhbGlkLmh0
bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Npbmcv
aWRib2JqZWN0c3RvcmVfb3BlbkN1cnNvcl9pbnZhbGlkLmh0bWwKaW5kZXggY2ZiMzMzMzA5MjQ0
ZDgyNTBlNjk1ZTFiOTIxN2FhMGJhN2QzNjViYy4uOWJjMjg3MzQyNDI3ZjlmYjNiNDRlZjA1M2Fm
NDkxNTBiZjA4ZWJkZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4
ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX29wZW5DdXJzb3JfaW52YWxpZC5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93
c2luZy9pZGJvYmplY3RzdG9yZV9vcGVuQ3Vyc29yX2ludmFsaWQuaHRtbApAQCAtMjgsMTMgKzI4
LDEzIEBACiAgICAgICAgIGFzeW5jX3Rlc3QoZG9jdW1lbnQudGl0bGUgKyAiIC0gcGFzcyBzb21l
dGhpbmcgb3RoZXIgdGhhbiBudW1iZXIiKS5zdGVwKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAg
IHZhciBpZHggPSBkYi50cmFuc2FjdGlvbigidGVzdCIpLm9iamVjdFN0b3JlKCJ0ZXN0IikuaW5k
ZXgoImluZGV4Iik7CiAKLSAgICAgICAgICAgIGFzc2VydF90aHJvd3MoIkRhdGFFcnJvciIsCisg
ICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiRGF0YUVycm9yIiwKICAgICAgICAgICAgICAg
ICBmdW5jdGlvbigpIHsgaWR4Lm9wZW5DdXJzb3IoeyBsb3dlcjogImEiIH0pOyB9KTsKIAotICAg
ICAgICAgICAgYXNzZXJ0X3Rocm93cygiRGF0YUVycm9yIiwKKyAgICAgICAgICAgIGFzc2VydF90
aHJvd3NfZG9tKCJEYXRhRXJyb3IiLAogICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyBpZHgu
b3BlbkN1cnNvcih7IGxvd2VyOiAiYSIsIGxvd2VyT3BlbjogZmFsc2UgfSk7IH0pOwogCi0gICAg
ICAgICAgICBhc3NlcnRfdGhyb3dzKCJEYXRhRXJyb3IiLAorICAgICAgICAgICAgYXNzZXJ0X3Ro
cm93c19kb20oIkRhdGFFcnJvciIsCiAgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7IGlkeC5v
cGVuQ3Vyc29yKHsgbG93ZXI6ICJhIiwgbG93ZXJPcGVuOiBmYWxzZSwgdXBwZXI6IG51bGwsIHVw
cGVyT3BlbjogZmFsc2UgfSk7IH0pOwogCiAgICAgICAgICAgICB0aGlzLmRvbmUoKTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2lu
Zy9pZGJvYmplY3RzdG9yZV9wdXQxMC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0lu
ZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX3B1dDEwLmh0bWwKaW5kZXgg
NGQyOWJhMzlmNzRmYTEyMGUyMjRiZmJjOGYyZDMyZjU1ZWZlZWQ0MS4uOWI2YWYxNzQ0ZDMwNzZi
YjM4OTE4MWI4NzRjY2U2MmY4MGUxMTJlMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX3B1dDEwLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dz
aW5nL2lkYm9iamVjdHN0b3JlX3B1dDEwLmh0bWwKQEAgLTE4LDcgKzE4LDcgQEAKICAgICAgICAg
dmFyIHJxLAogICAgICAgICAgIG9ialN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoInN0b3Jl
IiwgeyBrZXlQYXRoOiAia2V5IiB9KTsKIAotICAgICAgICBhc3NlcnRfdGhyb3dzKCJEYXRhRXJy
b3IiLAorICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiRGF0YUVycm9yIiwKICAgICAgICAgICAg
IGZ1bmN0aW9uKCkgeyBycSA9IG9ialN0b3JlLnB1dChyZWNvcmQpOyB9KTsKIAogICAgICAgICBh
c3NlcnRfZXF1YWxzKHJxLCB1bmRlZmluZWQpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX3B1dDEx
Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Np
bmcvaWRib2JqZWN0c3RvcmVfcHV0MTEuaHRtbAppbmRleCAyZmVkNDMzOWM2M2FlNTA1OGFlMDUz
MGU1YmRjM2VkMzFmNDYzMTMxLi41NDY0MzUzY2YzYWVmOTEyOGRlMjY2ODMyYTE5MTc4OGU2Njli
MWIwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZh
dGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfcHV0MTEuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfcHV0
MTEuaHRtbApAQCAtMTgsNyArMTgsNyBAQAogICAgICAgICB2YXIgcnEsCiAgICAgICAgICAgb2Jq
U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgic3RvcmUiLCB7IGtleVBhdGg6ICJrZXkiIH0p
OwogCi0gICAgICAgIGFzc2VydF90aHJvd3MoIkRhdGFFcnJvciIsCisgICAgICAgIGFzc2VydF90
aHJvd3NfZG9tKCJEYXRhRXJyb3IiLAogICAgICAgICAgICAgZnVuY3Rpb24oKSB7IHJxID0gb2Jq
U3RvcmUucHV0KHJlY29yZCk7IH0pOwogCiAgICAgICAgIGFzc2VydF9lcXVhbHMocnEsIHVuZGVm
aW5lZCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXBy
aXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfcHV0MTIuaHRtbCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9wdXQx
Mi5odG1sCmluZGV4IGRkNWVhZmU4Y2I4NTkyMDBkNGM3ZTUxZDI2NDYyYTg1NTdhMjRlZTIuLjZl
ZTNjNGI1ZWYzYjM5YmViYTg0MzdlZjVkYmI3Mzg2OWZkOTA2ZjcgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3Rz
dG9yZV9wdXQxMi5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREIt
cHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9wdXQxMi5odG1sCkBAIC0xOCw3ICsxOCw3
IEBACiAgICAgICAgIHZhciBycSwKICAgICAgICAgICBvYmpTdG9yZSA9IGRiLmNyZWF0ZU9iamVj
dFN0b3JlKCJzdG9yZSIsIHsga2V5UGF0aDogImtleSIgfSk7CiAKLSAgICAgICAgYXNzZXJ0X3Ro
cm93cygiRGF0YUVycm9yIiwKKyAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkRhdGFFcnJvciIs
CiAgICAgICAgICAgICBmdW5jdGlvbigpIHsgcnEgPSBvYmpTdG9yZS5wdXQocmVjb3JkKTsgfSk7
CiAKICAgICAgICAgYXNzZXJ0X2VxdWFscyhycSwgdW5kZWZpbmVkKTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmpl
Y3RzdG9yZV9wdXQxMy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1w
cml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX3B1dDEzLmh0bWwKaW5kZXggMDdiOTAzYWYx
YzAxNTI4YWVlZGY3NWQwNTU5N2VjNjM5ZTBjNzUwZS4uZWM5YTlmMGM1MjAyZDhhYjU2YmZlNGY5
YTg1NWY4ZDQ1NDc1NGI5NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0lu
ZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX3B1dDEzLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9i
amVjdHN0b3JlX3B1dDEzLmh0bWwKQEAgLTE4LDcgKzE4LDcgQEAKICAgICAgICAgdmFyIHJxLAog
ICAgICAgICAgIG9ialN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoInN0b3JlIik7CiAKLSAg
ICAgICAgYXNzZXJ0X3Rocm93cygiRGF0YUVycm9yIiwKKyAgICAgICAgYXNzZXJ0X3Rocm93c19k
b20oIkRhdGFFcnJvciIsCiAgICAgICAgICAgICBmdW5jdGlvbigpIHsgcnEgPSBvYmpTdG9yZS5w
dXQocmVjb3JkLCB7IHZhbHVlOiAxIH0pOyB9KTsKIAogICAgICAgICBhc3NlcnRfZXF1YWxzKHJx
LCB1bmRlZmluZWQpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4
ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX3B1dDE1Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3Rv
cmVfcHV0MTUuaHRtbAppbmRleCA2NWZkNzE2NmU4MDMzYTVkOTg3YTQ5ZGNhNDFhMDllMTg2YmFj
OTYxLi41NDUyZmY3MTgzMTZiNzQ4ZjYzZmEzNDY5M2JiMTViZjM0YTMxYTM4IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRi
b2JqZWN0c3RvcmVfcHV0MTUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5k
ZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfcHV0MTUuaHRtbApAQCAtMjEs
NyArMjEsNyBAQAogICAgICAgICB2YXIgdHhuID0gZGIudHJhbnNhY3Rpb24oInN0b3JlIik7CiAg
ICAgICAgIHZhciBvc3RvcmUgPSB0eG4ub2JqZWN0U3RvcmUoInN0b3JlIik7CiAgICAgICAgIHQu
c3RlcChmdW5jdGlvbigpewotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygiUmVhZE9ubHlFcnJv
ciIsIGZ1bmN0aW9uKCl7CisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiUmVhZE9ubHlF
cnJvciIsIGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgb3N0b3JlLnB1dCh7cEtleTogInBy
aW1hcnlLZXlfMCJ9KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJv
YmplY3RzdG9yZV9wdXQxNi5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWRE
Qi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX3B1dDE2Lmh0bWwKaW5kZXggMTRkYzg2
ODFjZDMyNjc3YTc1YmY1NmJkMjRiODVjOTJlYzIzOTNjOC4uMGU5MWNkZWNlMGJiMjhjMTA4MDE2
OWVlNzEzODg0NDM2Y2IxODQ0MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX3B1dDE2Lmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lk
Ym9iamVjdHN0b3JlX3B1dDE2Lmh0bWwKQEAgLTIxLDcgKzIxLDcgQEAKIAogICAgIG9wZW5fcnEu
b25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7CiAgICAgICAgIHQuc3RlcChmdW5jdGlvbigp
ewotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygiSW52YWxpZFN0YXRlRXJyb3IiLCBmdW5jdGlv
bigpeworICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkludmFsaWRTdGF0ZUVycm9yIiwg
ZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICBvc3RvcmUucHV0KHtwS2V5OiAicHJpbWFyeUtl
eV8wIn0pOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0
b3JlX3B1dDkuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0
ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9wdXQ5Lmh0bWwKaW5kZXggNzc5YWVkN2YxNjc2ZWEy
OTQ3NDA1OTlhNWFhNDhjMTYyZjFlNWViYy4uMjNhZTliOTYwNTMyNzRiNzkyNjIwNDVmZjE2NzBh
NDY5ZTdmMzI3MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWRE
Qi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX3B1dDkuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3Rv
cmVfcHV0OS5odG1sCkBAIC0xNiw3ICsxNiw3IEBACiAgICAgICAgICAgZGIgPSBlLnRhcmdldC5y
ZXN1bHQsCiAgICAgICAgICAgb2JqU3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgic3RvcmUi
LCB7IGtleVBhdGg6ICJrZXkiIH0pOwogCi0gICAgICAgIGFzc2VydF90aHJvd3MoIkRhdGFFcnJv
ciIsCisgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJEYXRhRXJyb3IiLAogICAgICAgICAgICAg
ZnVuY3Rpb24oKSB7IHJxID0gb2JqU3RvcmUucHV0KHJlY29yZCwgMSk7IH0pOwogCiAgICAgICAg
IGFzc2VydF9lcXVhbHMocnEsIHVuZGVmaW5lZCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Npbmcva2V5X2ludmFsaWQuaHRtbCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9rZXlf
aW52YWxpZC5odG1sCmluZGV4IGY3MmRhMzc1OWI1NGJkN2M1Zjg0NTQxN2Y0NjllYTE1YTU2OTcx
M2EuLjY2M2QyMTYwOTlhMGIzNDQ2NGI1ZTA2YjI3ZjhlNjNhYjBlZGJjMmIgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9rZXlf
aW52YWxpZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJp
dmF0ZS1icm93c2luZy9rZXlfaW52YWxpZC5odG1sCkBAIC0zMiwxMyArMzIsMTMgQEAKICAgICAg
ICAgLy8gc2V0IHRoZSBjdXJyZW50IHRlc3QsIGFuZCBydW4gaXQKICAgICAgICAgZGIuc2V0VGVz
dCh0KS5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICBvYmpTdG9y
ZSA9IG9ialN0b3JlIHx8IGUudGFyZ2V0LnJlc3VsdC5jcmVhdGVPYmplY3RTdG9yZSgic3RvcmUi
KTsKLSAgICAgICAgICAgIGFzc2VydF90aHJvd3MoJ0RhdGFFcnJvcicsIGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oJ0RhdGFFcnJvcicsIGZ1bmN0aW9uKCkgewog
ICAgICAgICAgICAgICAgIG9ialN0b3JlLmFkZCgidmFsdWUiLCBrZXkpOwogICAgICAgICAgICAg
fSk7CiAKICAgICAgICAgICAgIGlmIChpc19jbG9uZWFibGUoa2V5KSkgewogICAgICAgICAgICAg
ICAgIG9ialN0b3JlMiA9IG9ialN0b3JlMiB8fCBlLnRhcmdldC5yZXN1bHQuY3JlYXRlT2JqZWN0
U3RvcmUoInN0b3JlMiIsIHsga2V5UGF0aDogWyJ4IiwgImtleXBhdGgiXSB9KTsKLSAgICAgICAg
ICAgICAgICBhc3NlcnRfdGhyb3dzKCdEYXRhRXJyb3InLCBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgnRGF0YUVycm9yJywgZnVuY3Rpb24oKSB7CiAgICAg
ICAgICAgICAgICAgICAgIG9ialN0b3JlMi5hZGQoeyB4OiAidmFsdWUiLCBrZXlwYXRoOiBrZXkg
fSk7CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Npbmcva2V5cGF0aF9p
bnZhbGlkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUt
YnJvd3Npbmcva2V5cGF0aF9pbnZhbGlkLmh0bWwKaW5kZXggY2MxZDQ0NDE2ZmJlYWQyZWVmYmE3
ZTRkMTFlYTA3NzRlNWYyMjkwMi4uM2NiZmJlODBlMmExNWE1NmE0MTkxMDhlNWI1NzA0MzhlOTMz
Yjg0YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2
YXRlLWJyb3dzaW5nL2tleXBhdGhfaW52YWxpZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9rZXlwYXRoX2ludmFsaWQuaHRtbApA
QCAtMjAsMTIgKzIwLDEyIEBACiAKICAgICAgICAgb3BlbnJxLm9udXBncmFkZW5lZWRlZCA9IGZ1
bmN0aW9uKGUpIHsKICAgICAgICAgICAgIHZhciBkYiA9IGUudGFyZ2V0LnJlc3VsdDsKLSAgICAg
ICAgICAgIGFzc2VydF90aHJvd3MoJ1N5bnRheEVycm9yJywgZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICBhc3NlcnRfdGhyb3dzX2RvbSgnU3ludGF4RXJyb3InLCBmdW5jdGlvbigpIHsKICAgICAg
ICAgICAgICAgICAgICAgZGIuY3JlYXRlT2JqZWN0U3RvcmUoc3RvcmVfbmFtZSwgeyBrZXlQYXRo
OiBrZXlwYXRoIH0pCiAgICAgICAgICAgICAgICAgfSwgImNyZWF0ZU9iamVjdFN0b3JlIHdpdGgg
a2V5UGF0aCIpOwogCiAgICAgICAgICAgICBzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKHN0
b3JlX25hbWUpOwotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygnU3ludGF4RXJyb3InLCBmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCdTeW50YXhFcnJvcicsIGZ1
bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICBzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXgn
LCBrZXlwYXRoKTsKICAgICAgICAgICAgICAgICB9LCAiY3JlYXRlSW5kZXggd2l0aCBrZXlQYXRo
Iik7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJp
dmF0ZS1icm93c2luZy90cmFuc2FjdGlvbi1jcmVhdGVfaW5fdmVyc2lvbmNoYW5nZS5odG1sIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL3RyYW5z
YWN0aW9uLWNyZWF0ZV9pbl92ZXJzaW9uY2hhbmdlLmh0bWwKaW5kZXggMDAyNzkxNmQyZTUwNTgy
NjhhMDM5M2RhOTc2YTk2MWRhZTdlNmU0Ni4uMDRhMWYxN2U5ZjY4NTIxZjc0YTZmMDY3Yzg5MTdi
YmYwMWI5NDkyMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWRE
Qi1wcml2YXRlLWJyb3dzaW5nL3RyYW5zYWN0aW9uLWNyZWF0ZV9pbl92ZXJzaW9uY2hhbmdlLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dz
aW5nL3RyYW5zYWN0aW9uLWNyZWF0ZV9pbl92ZXJzaW9uY2hhbmdlLmh0bWwKQEAgLTE3LDE0ICsx
NywxNCBAQAogICAgICAgICAgICAgLmFkZCgidmVyc2lvbmNoYW5nZTEiLCAxKQogICAgICAgICAg
ICAgLmFkZEV2ZW50TGlzdGVuZXIoInN1Y2Nlc3MiLCBsb2coInZlcnNpb25jaGFuZ2VfYWRkLnN1
Y2Nlc3MiKSkKIAotICAgICAgICBhc3NlcnRfdGhyb3dzKCdJbnZhbGlkU3RhdGVFcnJvcicsIGZ1
bmN0aW9uKCkgeyBkYi50cmFuc2FjdGlvbigic3RvcmUiKSB9KQorICAgICAgICBhc3NlcnRfdGhy
b3dzX2RvbSgnSW52YWxpZFN0YXRlRXJyb3InLCBmdW5jdGlvbigpIHsgZGIudHJhbnNhY3Rpb24o
InN0b3JlIikgfSkKIAogICAgICAgICBlLnRhcmdldC50cmFuc2FjdGlvbgogICAgICAgICAgICAg
Lm9iamVjdFN0b3JlKCJzdG9yZSIpCiAgICAgICAgICAgICAuY291bnQoMikKICAgICAgICAgICAg
IC5hZGRFdmVudExpc3RlbmVyKCJzdWNjZXNzIiwgbG9nKCJ2ZXJzaW9uY2hhbmdlX2NvdW50LnN1
Y2Nlc3MiKSkKIAotICAgICAgICBhc3NlcnRfdGhyb3dzKCdJbnZhbGlkU3RhdGVFcnJvcicsIGZ1
bmN0aW9uKCkgeyBkYi50cmFuc2FjdGlvbigic3RvcmUiLCAicmVhZHdyaXRlIikgfSkKKyAgICAg
ICAgYXNzZXJ0X3Rocm93c19kb20oJ0ludmFsaWRTdGF0ZUVycm9yJywgZnVuY3Rpb24oKSB7IGRi
LnRyYW5zYWN0aW9uKCJzdG9yZSIsICJyZWFkd3JpdGUiKSB9KQogCiAgICAgICAgIG9wZW5fcnEu
dHJhbnNhY3Rpb24KICAgICAgICAgICAgIC5vYmplY3RTdG9yZSgic3RvcmUiKQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW50ZXJzZWN0aW9uLW9ic2VydmVyL2ludGVyc2VjdGlvbi1vYnNlcnZl
ci1pbnRlcmZhY2UuaHRtbCBiL0xheW91dFRlc3RzL2ludGVyc2VjdGlvbi1vYnNlcnZlci9pbnRl
cnNlY3Rpb24tb2JzZXJ2ZXItaW50ZXJmYWNlLmh0bWwKaW5kZXggMDliMTM0MzBmZTQxYTlkNWEy
N2Y5Nzc3MjhjZDBlOWY0OGJhNWQxOC4uYzJkMjkxOWIxYWU5N2YyNjBkMmE5Y2NiOGZkNThhNTVj
YjMwOWRjNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW50ZXJzZWN0aW9uLW9ic2VydmVyL2lu
dGVyc2VjdGlvbi1vYnNlcnZlci1pbnRlcmZhY2UuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnRl
cnNlY3Rpb24tb2JzZXJ2ZXIvaW50ZXJzZWN0aW9uLW9ic2VydmVyLWludGVyZmFjZS5odG1sCkBA
IC01OCwzMiArNTgsMzIgQEAKICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhvYnNlcnZlci50
aHJlc2hvbGRzLCBbTnVtYmVyLk1JTl9WQUxVRV0pOwogICAgIH0sJ1NtYWxsUG9zaXRpdmVUaHJl
c2hvbGQnKTsKICAgICB0ZXN0KGZ1bmN0aW9uKCkgewotICAgICAgICBhc3NlcnRfdGhyb3dzKFJh
bmdlRXJyb3IoKSwgZnVuY3Rpb24oKSB7CisgICAgICAgIGFzc2VydF90aHJvd3NfanMoUmFuZ2VF
cnJvciwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIo
ZnVuY3Rpb24oKSB7fSwgIHsgdGhyZXNob2xkOiAtTnVtYmVyLk1JTl9WQUxVRSB9KTsKICAgICAg
ICAgfSkKICAgICB9LCdTbWFsbE5lZ2F0aXZlVGhyZXNob2xkJyk7CiAgICAgdGVzdChmdW5jdGlv
bigpIHsKLSAgICAgICAgYXNzZXJ0X3Rocm93cyhSYW5nZUVycm9yKCksIGZ1bmN0aW9uKCkgewor
ICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFJhbmdlRXJyb3IsIGZ1bmN0aW9uKCkgewogICAgICAg
ICAgICAgbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGZ1bmN0aW9uKCkge30sICB7IHRocmVzaG9s
ZDogTnVtYmVyLk1BWF9WQUxVRSB9KTsKICAgICAgICAgfSkKICAgICB9LCdMYXJnZVBvc2l0aXZl
VGhyZXNob2xkJyk7CiAgICAgdGVzdChmdW5jdGlvbigpIHsKLSAgICAgICAgYXNzZXJ0X3Rocm93
cyhSYW5nZUVycm9yKCksIGZ1bmN0aW9uKCkgeworICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFJh
bmdlRXJyb3IsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgbmV3IEludGVyc2VjdGlvbk9ic2Vy
dmVyKGZ1bmN0aW9uKCkge30sICB7IHRocmVzaG9sZDogLU51bWJlci5NQVhfVkFMVUUgfSk7CiAg
ICAgICAgIH0pCiAgICAgfSwnTGFyZ2VOZWdhdGl2ZVRocmVzaG9sZCcpOwogICAgIHRlc3QoZnVu
Y3Rpb24oKSB7Ci0gICAgICAgIGFzc2VydF90aHJvd3MoVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkg
eworICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CiAgICAg
ICAgICAgICBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24oKSB7fSwgIHsgdGhyZXNo
b2xkOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkgfSk7CiAgICAgICAgIH0pCiAgICAgfSwnUG9z
aXRpdmVJbmZpbml0eVRocmVzaG9sZCcpOwogICAgIHRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgICAg
IGFzc2VydF90aHJvd3MoVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgeworICAgICAgICBhc3NlcnRf
dGhyb3dzX2pzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICBuZXcgSW50ZXJz
ZWN0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24oKSB7fSwgIHsgdGhyZXNob2xkOiBOdW1iZXIuTkVHQVRJ
VkVfSU5GSU5JVFkgfSk7CiAgICAgICAgIH0pCiAgICAgfSwnTmVnYXRpdmVJbmZpbml0eVRocmVz
aG9sZCcpOwogICAgIHRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgICAgIGFzc2VydF90aHJvd3MoVHlw
ZUVycm9yKCksIGZ1bmN0aW9uKCkgeworICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJv
ciwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoZnVu
Y3Rpb24oKSB7fSwgIHsgdGhyZXNob2xkOiBOdW1iZXIuTmFOIH0pOwogICAgICAgICB9KQogICAg
IH0sJ05hTlRocmVzaG9sZCcpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL2RvbS1n
ZXR0ZXJzLXR5cGUtY2hlY2suaHRtbCBiL0xheW91dFRlc3RzL2pzL2RvbS9kb20tZ2V0dGVycy10
eXBlLWNoZWNrLmh0bWwKaW5kZXggN2ZlNDMyNDY4YTY5NjQ4MzA3OTJlMWIwMTgxZjU5MWZjMDZm
OWVhMS4uZmFlMTVmN2RlNmQ5ZmQ2MGFiYWRiYTNmN2RkZmQ1ZjVlYTRmMWEwYiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvanMvZG9tL2RvbS1nZXR0ZXJzLXR5cGUtY2hlY2suaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9qcy9kb20vZG9tLWdldHRlcnMtdHlwZS1jaGVjay5odG1sCkBAIC0xNiwxMCAr
MTYsMTAgQEAKICAgICB9LCAiRE9NIGdldHRlciBzaG91bGQgYmUgYSBmdW5jdGlvbiIpOwogCiAg
ICAgdGVzdCgoKSA9PiB7Ci0gICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAo
KSA9PiB7IGdldHRlcigpOyB9LCAiRE9NIGdldHRlciB0aHJvd3MgYW4gZXJyb3Igd2l0aCB1bmRl
ZmluZWQiKTsKLSAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IHsg
Z2V0dGVyLmNhbGwobnVsbCk7IH0sICJET00gZ2V0dGVyIHRocm93cyBhbiBlcnJvciB3aXRoIG51
bGwiKTsKLSAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IHsgZ2V0
dGVyLmNhbGwoe30pOyB9LCAiRE9NIGdldHRlciB0aHJvd3MgYW4gZXJyb3Igd2l0aCB1bnJlbGF0
ZWQgb2JqZWN0Iik7Ci0gICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9
PiB7IGdldHRlci5jYWxsKGRvY3VtZW50LmNyZWF0ZVRleHQoIkhlbGxvIikpOyB9LCAiRE9NIGdl
dHRlciB0aHJvd3MgYW4gZXJyb3Igd2l0aCB1bnJlbGF0ZWQgRE9NIG9iamVjdCIpOworICAgICAg
ICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4geyBnZXR0ZXIoKTsgfSwgIkRPTSBn
ZXR0ZXIgdGhyb3dzIGFuIGVycm9yIHdpdGggdW5kZWZpbmVkIik7CisgICAgICAgIGFzc2VydF90
aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiB7IGdldHRlci5jYWxsKG51bGwpOyB9LCAiRE9NIGdl
dHRlciB0aHJvd3MgYW4gZXJyb3Igd2l0aCBudWxsIik7CisgICAgICAgIGFzc2VydF90aHJvd3Nf
anMoVHlwZUVycm9yLCAoKSA9PiB7IGdldHRlci5jYWxsKHt9KTsgfSwgIkRPTSBnZXR0ZXIgdGhy
b3dzIGFuIGVycm9yIHdpdGggdW5yZWxhdGVkIG9iamVjdCIpOworICAgICAgICBhc3NlcnRfdGhy
b3dzX2pzKFR5cGVFcnJvciwgKCkgPT4geyBnZXR0ZXIuY2FsbChkb2N1bWVudC5jcmVhdGVUZXh0
KCJIZWxsbyIpKTsgfSwgIkRPTSBnZXR0ZXIgdGhyb3dzIGFuIGVycm9yIHdpdGggdW5yZWxhdGVk
IERPTSBvYmplY3QiKTsKICAgICB9LCAiRE9NIGdldHRlciB0aHJvd3MgYW4gZXJyb3Igd2l0aCB1
bnJlbGF0ZWQgdmFsdWVzIik7CiAKICAgICB0ZXN0KCgpID0+IHsKQEAgLTMyLDE0ICszMiwxNCBA
QAogICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCAic2Nyb2xsVG9wIiwgewog
ICAgICAgICAgICAgZ2V0OiBnZXR0ZXIKICAgICAgICAgfSk7Ci0gICAgICAgIGFzc2VydF90aHJv
d3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiB7IG9iamVjdC5zY3JvbGxUb3A7IH0pOworICAgICAg
ICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4geyBvYmplY3Quc2Nyb2xsVG9wOyB9
KTsKICAgICB9LCAiRE9NIGdldHRlciBhY2Nlc3MgdGhyb3dzIGFuIGVycm9yIHdpdGggdW5yZWxh
dGVkIG9iamVjdCIpOwogCiAgICAgdGVzdCgoKSA9PiB7CiAgICAgICAgIHZhciBvYmplY3QgPSB7
CiAgICAgICAgICAgICBfX3Byb3RvX186IEVsZW1lbnQucHJvdG90eXBlCiAgICAgICAgIH07Ci0g
ICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiB7IG9iamVjdC5zY3Jv
bGxUb3A7IH0pOworICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4geyBv
YmplY3Quc2Nyb2xsVG9wOyB9KTsKICAgICB9LCAiRE9NIGdldHRlciBhY2Nlc3MgdGhyb3VnaCBF
bGVtZW50LnByb3RvdHlwZSB0aHJvd3MgYW4gZXJyb3Igd2l0aCB1bnJlbGF0ZWQgb2JqZWN0Iik7
CiA8L3NjcmlwdD4KIDwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS9sZWdh
Y3ktcGxhdGZvcm0tb2JqZWN0LWRlZmluZU93blByb3BlcnR5Lmh0bWwgYi9MYXlvdXRUZXN0cy9q
cy9kb20vbGVnYWN5LXBsYXRmb3JtLW9iamVjdC1kZWZpbmVPd25Qcm9wZXJ0eS5odG1sCmluZGV4
IGQ0YTkyYmM3MjMyZmUwNWRiMTkwYzc2MmRjYWI0MjBkMzE4ZmIyNjUuLjQ1ZmY1ZWFjN2UyYjNl
MTFmZGQ3ZGVkOGUxODYwMDkwZTU0OTFhMGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL2Rv
bS9sZWdhY3ktcGxhdGZvcm0tb2JqZWN0LWRlZmluZU93blByb3BlcnR5Lmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvanMvZG9tL2xlZ2FjeS1wbGF0Zm9ybS1vYmplY3QtZGVmaW5lT3duUHJvcGVydHku
aHRtbApAQCAtNTIsNyArNTIsNyBAQAogICAgICAgICBlbGVtZW50LmRhdGFzZXRbImEiXSA9ICJ2
YWx1ZTEiOwogICAgICAgICBlbGVtZW50LmRhdGFzZXRbImIiXSA9ICJ2YWx1ZTIiOwogICAgICAg
ICAKLSAgICAgICAgYXNzZXJ0X3Rocm93cygiU3ludGF4RXJyb3IiLCAoKSA9PiB7CisgICAgICAg
IGFzc2VydF90aHJvd3NfZG9tKCJTeW50YXhFcnJvciIsICgpID0+IHsKICAgICAgICAgICAgIE9i
amVjdC5kZWZpbmVQcm9wZXJ0eShlbGVtZW50LmRhdGFzZXQsICItaW52YWxpZCIsIHsgdmFsdWU6
ICJ2YWx1ZTMiIH0pOyAgICAgICAgICAgIAogICAgICAgICB9KTsKICAgICAgICAgYXNzZXJ0X25v
dF9lcXVhbHMoZWxlbWVudC5kYXRhc2V0WyItaW52YWxpZCJdLCAndmFsdWUzJyk7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vcG9zdC1tZXNzYWdlLXN5bWJvbC5odG1sIGIvTGF5b3V0
VGVzdHMvanMvZG9tL3Bvc3QtbWVzc2FnZS1zeW1ib2wuaHRtbAppbmRleCA3YTFjZTAwYzM5ZDRl
YzhmZWQyNjRkNmU3M2E1OTM0NTc1YjI3NmFkLi5iY2I2NjhhNTQxOGNkM2VhZDYwZTQ1MWM2NjQ3
MWY5ZjY2NGJhMTAwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9kb20vcG9zdC1tZXNzYWdl
LXN5bWJvbC5odG1sCisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9wb3N0LW1lc3NhZ2Utc3ltYm9s
Lmh0bWwKQEAgLTcsMTYgKzcsMTYgQEAKIDxib2R5PgogPHNjcmlwdD4KIHRlc3QoKCkgPT4gewot
ICAgIGFzc2VydF90aHJvd3MoIkRBVEFfQ0xPTkVfRVJSIiwgKCkgPT4geworICAgIGFzc2VydF90
aHJvd3NfZG9tKCJEQVRBX0NMT05FX0VSUiIsICgpID0+IHsKICAgICAgICAgd2luZG93LnBvc3RN
ZXNzYWdlKFN5bWJvbCgiQ29jb2EiKSwgIioiKTsKICAgICB9KTsKLSAgICBhc3NlcnRfdGhyb3dz
KCJEQVRBX0NMT05FX0VSUiIsICgpID0+IHsKKyAgICBhc3NlcnRfdGhyb3dzX2RvbSgiREFUQV9D
TE9ORV9FUlIiLCAoKSA9PiB7CiAgICAgICAgIHdpbmRvdy5wb3N0TWVzc2FnZSh7MDogU3ltYm9s
KCJDb2NvYSIpfSwgIioiKTsKICAgICB9KTsKLSAgICBhc3NlcnRfdGhyb3dzKCJEQVRBX0NMT05F
X0VSUiIsICgpID0+IHsKKyAgICBhc3NlcnRfdGhyb3dzX2RvbSgiREFUQV9DTE9ORV9FUlIiLCAo
KSA9PiB7CiAgICAgICAgIHdpbmRvdy5wb3N0TWVzc2FnZSh7aGVsbG86IFN5bWJvbCgiQ29jb2Ei
KX0sICIqIik7CiAgICAgfSk7Ci0gICAgYXNzZXJ0X3Rocm93cygiREFUQV9DTE9ORV9FUlIiLCAo
KSA9PiB7CisgICAgYXNzZXJ0X3Rocm93c19kb20oIkRBVEFfQ0xPTkVfRVJSIiwgKCkgPT4gewog
ICAgICAgICB3aW5kb3cucG9zdE1lc3NhZ2UoW1N5bWJvbCgiQ29jb2EiKV0sICIqIik7CiAgICAg
fSk7CiB9LCAiVGVzdHMgdGhhdCBwb3N0aW5nIGEgbWVzc2FnZSB0aGF0IGNvbnRhaW5zIFN5bWJv
bHMgZmFpbHMuIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vcXVldWUtbWljcm90
YXNrLXdpbmRvdy5odG1sIGIvTGF5b3V0VGVzdHMvanMvZG9tL3F1ZXVlLW1pY3JvdGFzay13aW5k
b3cuaHRtbAppbmRleCA0YjVlNGY5NDUzYjUxZTYzNjY5OTU3YzYwYzVmMTA1NmEwMmNlOGQ0Li43
YTVjMTM3ZjI0ZjA0N2E4ZDdmYmYzNDc3MWIwMWYzYTEyOWNkZjU5IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9qcy9kb20vcXVldWUtbWljcm90YXNrLXdpbmRvdy5odG1sCisrKyBiL0xheW91dFRl
c3RzL2pzL2RvbS9xdWV1ZS1taWNyb3Rhc2std2luZG93Lmh0bWwKQEAgLTc3LDMxICs3NywzMSBA
QCBwcm9taXNlX3Rlc3QoKCkgPT4gewogfSwgYHF1ZXVlTWljcm90YXNrIGFuZCBQcm9taXNlIHVz
ZXMgdGhlIHNhbWUgTWljcm90YXNrIHF1ZXVlYCk7CiAKIHRlc3QoKCkgPT4gewotICAgIGFzc2Vy
dF90aHJvd3MobmV3IFR5cGVFcnJvciwgKCkgPT4geworICAgIGFzc2VydF90aHJvd3NfanMoVHlw
ZUVycm9yLCAoKSA9PiB7CiAgICAgICAgIHNlbGYucXVldWVNaWNyb3Rhc2soKTsKICAgICB9KTsK
LSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IsICgpID0+IHsKKyAgICBhc3NlcnRfdGhy
b3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gewogICAgICAgICBzZWxmLnF1ZXVlTWljcm90YXNrKG51
bGwpOwogICAgIH0pOwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvciwgKCkgPT4gewor
ICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiB7CiAgICAgICAgIHNlbGYucXVl
dWVNaWNyb3Rhc2sodW5kZWZpbmVkKTsKICAgICB9KTsKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBU
eXBlRXJyb3IsICgpID0+IHsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4g
ewogICAgICAgICBzZWxmLnF1ZXVlTWljcm90YXNrKDQyKTsKICAgICB9KTsKLSAgICBhc3NlcnRf
dGhyb3dzKG5ldyBUeXBlRXJyb3IsICgpID0+IHsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVF
cnJvciwgKCkgPT4gewogICAgICAgICBzZWxmLnF1ZXVlTWljcm90YXNrKCI0MiIpOwogICAgIH0p
OwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvciwgKCkgPT4geworICAgIGFzc2VydF90
aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiB7CiAgICAgICAgIHNlbGYucXVldWVNaWNyb3Rhc2so
dHJ1ZSk7CiAgICAgfSk7Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yLCAoKSA9PiB7
CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IHsKICAgICAgICAgc2VsZi5x
dWV1ZU1pY3JvdGFzayhTeW1ib2woIjQyIikpOwogICAgIH0pOwotICAgIGFzc2VydF90aHJvd3Mo
bmV3IFR5cGVFcnJvciwgKCkgPT4geworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAo
KSA9PiB7CiAgICAgICAgIHNlbGYucXVldWVNaWNyb3Rhc2soe30pOwogICAgIH0pOwotICAgIGFz
c2VydF90aHJvd3MobmV3IFR5cGVFcnJvciwgKCkgPT4geworICAgIGFzc2VydF90aHJvd3NfanMo
VHlwZUVycm9yLCAoKSA9PiB7CiAgICAgICAgIHNlbGYucXVldWVNaWNyb3Rhc2soeyBoYW5kbGVF
dmVudCgpIHsgfSB9KTsKICAgICB9KTsKIH0sIGBxdWV1ZU1pY3JvdGFzayBzaG91bGQgcmVqZWN0
IG5vbi1mdW5jdGlvbiBhcmd1bWVudHNgKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlh
L3RyYWNrL29wZXJhL2ludGVyZmFjZXMvVGV4dFRyYWNrQ3VlL3ZlcnRpY2FsLmh0bWwgYi9MYXlv
dXRUZXN0cy9tZWRpYS90cmFjay9vcGVyYS9pbnRlcmZhY2VzL1RleHRUcmFja0N1ZS92ZXJ0aWNh
bC5odG1sCmluZGV4IDUwODQ1YWViZjEyOTRlZjFmY2FkNmQ0ODc4NTVlMTUzOGNkZjM1NmIuLjhk
MjEwNWM4OTJhMTM2NTUzOWZiM2M4YTg2N2E0NjU5YzZiZGVjNTIgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL21lZGlhL3RyYWNrL29wZXJhL2ludGVyZmFjZXMvVGV4dFRyYWNrQ3VlL3ZlcnRpY2Fs
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svb3BlcmEvaW50ZXJmYWNlcy9UZXh0
VHJhY2tDdWUvdmVydGljYWwuaHRtbApAQCAtMjYsNyArMjYsNyBAQCB0ZXN0KGZ1bmN0aW9uKCl7
CiAgICAgYXNzZXJ0X2VxdWFscyhjMS52ZXJ0aWNhbCwgJ3JsJyk7CiAgICAgYzEudmVydGljYWwg
PSAnbHInOwogICAgIGFzc2VydF9lcXVhbHMoYzEudmVydGljYWwsICdscicpOwotICAgIGFzc2Vy
dF90aHJvd3MoJ1NZTlRBWF9FUlInLCBmdW5jdGlvbigpIHsKKyAgICBhc3NlcnRfdGhyb3dzX2Rv
bSgnU1lOVEFYX0VSUicsIGZ1bmN0aW9uKCkgewogICAgICAgICBjMS52ZXJ0aWNhbCA9ICdybFx1
MDAwMCc7CiAgICAgfSk7CiB9LCBkb2N1bWVudC50aXRsZSsnLCBzY3JpcHQtY3JlYXRlZCBjdWUn
KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL29wZXJhL3Jlc291cmNlcy9p
ZGxoYXJuZXNzLmpzIGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svb3BlcmEvcmVzb3VyY2VzL2lk
bGhhcm5lc3MuanMKaW5kZXggYjYyN2I0MGY4ZmNhOGQ4M2NhZGM5NmQzNzgxZTEwMWQzM2U3MmQ3
OC4uNzAwNzBhMWNjYzA0OGVlYmM0NDJhNDM0MWZmMWM5NDJjOWM4ZjJhNyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svb3BlcmEvcmVzb3VyY2VzL2lkbGhhcm5lc3MuanMKKysr
IGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svb3BlcmEvcmVzb3VyY2VzL2lkbGhhcm5lc3MuanMK
QEAgLTk0NCwxMSArOTQ0LDExIEBAIElkbEV4Y2VwdGlvbi5wcm90b3R5cGUudGVzdF9tZW1iZXJz
ID0gZnVuY3Rpb24oKQogICAgICAgICAgICAgICAgIC8vIHRoZSBleGNlcHRpb24gb24gd2hpY2gg
dGhlIGV4Y2VwdGlvbiBmaWVsZCB3YXMgZGVjbGFyZWQsCiAgICAgICAgICAgICAgICAgLy8gdGhl
biB0aHJvdyBhIFR5cGVFcnJvci4iCiAgICAgICAgICAgICAgICAgLy8gVE9ETzogVGVzdCBvbiBh
IHBsYXRmb3JtIG9iamVjdCByZXByZXNlbnRpbmcgYW4gZXhjZXB0aW9uLgotICAgICAgICAgICAg
ICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpCisgICAgICAgICAg
ICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkKICAgICAgICAgICAg
ICAgICB7CiAgICAgICAgICAgICAgICAgICAgIHdpbmRvd1t0aGlzLm5hbWVdLnByb3RvdHlwZVtt
ZW1iZXIubmFtZV07CiAgICAgICAgICAgICAgICAgfS5iaW5kKHRoaXMpLCAiZ2V0dGluZyBwcm9w
ZXJ0eSBvbiBwcm90b3R5cGUgb2JqZWN0IG11c3QgdGhyb3cgVHlwZUVycm9yIik7Ci0gICAgICAg
ICAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkKKyAgICAg
ICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgZnVuY3Rpb24oKQogICAgICAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgZGVzYy5nZXQuY2FsbCh7fSk7CiAgICAg
ICAgICAgICAgICAgfS5iaW5kKHRoaXMpLCAiY2FsbGluZyBnZXR0ZXIgb24gd3Jvbmcgb2JqZWN0
IHR5cGUgbXVzdCB0aHJvdyBUeXBlRXJyb3IiKTsKQEAgLTEwODMsMTEgKzEwODMsMTEgQEAgSWRs
SW50ZXJmYWNlLnByb3RvdHlwZS50ZXN0X3NlbGYgPSBmdW5jdGlvbigpCiAgICAgICAgICAgICAv
LwogICAgICAgICAgICAgLy8gIklmIEkgd2FzIG5vdCBkZWNsYXJlZCB3aXRoIGEgW0NvbnN0cnVj
dG9yXSBleHRlbmRlZCBhdHRyaWJ1dGUsCiAgICAgICAgICAgICAvLyB0aGVuIHRocm93IGEgVHlw
ZUVycm9yLiIKLSAgICAgICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5j
dGlvbigpCisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgZnVuY3Rpb24o
KQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHdpbmRvd1t0aGlzLm5hbWVdKCk7CiAg
ICAgICAgICAgICB9LmJpbmQodGhpcyksICJpbnRlcmZhY2Ugb2JqZWN0IGRpZG4ndCB0aHJvdyBU
eXBlRXJyb3Igd2hlbiBjYWxsZWQgYXMgYSBmdW5jdGlvbiIpOwotICAgICAgICAgICAgYXNzZXJ0
X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkKKyAgICAgICAgICAgIGFzc2VydF90
aHJvd3NfanMoVHlwZUVycm9yLCBmdW5jdGlvbigpCiAgICAgICAgICAgICB7CiAgICAgICAgICAg
ICAgICAgbmV3IHdpbmRvd1t0aGlzLm5hbWVdKCk7CiAgICAgICAgICAgICB9LmJpbmQodGhpcyks
ICJpbnRlcmZhY2Ugb2JqZWN0IGRpZG4ndCB0aHJvdyBUeXBlRXJyb3Igd2hlbiBjYWxsZWQgYXMg
YSBjb25zdHJ1Y3RvciIpOwpAQCAtMTMxMSw3ICsxMzExLDcgQEAgSWRsSW50ZXJmYWNlLnByb3Rv
dHlwZS50ZXN0X21lbWJlcnMgPSBmdW5jdGlvbigpCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnaW50ZXJmYWNlICInICsgdGhpcy5uYW1lICsgJyIgZG9lcyBub3QgaGF2ZSBv
d24gcHJvcGVydHkgInByb3RvdHlwZSInKTsKIAogICAgICAgICAgICAgICAgIC8vIFRPRE86IE5l
ZWRzIHRvIHRlc3QgZm9yIExlbmllbnRUaGlzLgotICAgICAgICAgICAgICAgIGFzc2VydF90aHJv
d3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnRf
dGhyb3dzX2pzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgIHdp
bmRvd1t0aGlzLm5hbWVdLnByb3RvdHlwZVttZW1iZXIubmFtZV07CiAgICAgICAgICAgICAgICAg
fS5iaW5kKHRoaXMpLCAiZ2V0dGluZyBwcm9wZXJ0eSBvbiBwcm90b3R5cGUgb2JqZWN0IG11c3Qg
dGhyb3cgVHlwZUVycm9yIik7CiAKQEAgLTEzODQsNyArMTM4NCw3IEBAIElkbEludGVyZmFjZS5w
cm90b3R5cGUudGVzdF9tZW1iZXJzID0gZnVuY3Rpb24oKQogICAgICAgICAgICAgICAgIC8vCiAg
ICAgICAgICAgICAgICAgLy8gVE9ETzogV2UgY3VycmVudGx5IGlnbm9yZSB0aGUgc3RhdGljIGFu
ZCBbSW1wbGljaXRUaGlzXQogICAgICAgICAgICAgICAgIC8vIGNhc2VzLgotICAgICAgICAgICAg
ICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CiAgICAgICAg
ICAgICAgICAgICAgIHdpbmRvd1t0aGlzLm5hbWVdLnByb3RvdHlwZVttZW1iZXIubmFtZV0uYXBw
bHkobnVsbCwgYXJncyk7CiAgICAgICAgICAgICAgICAgfSwgImNhbGxpbmcgb3BlcmF0aW9uIHdp
dGggdGhpcyA9IG51bGwgZGlkbid0IHRocm93IFR5cGVFcnJvciIpOwogCkBAIC0xMzkzLDcgKzEz
OTMsNyBAQCBJZGxJbnRlcmZhY2UucHJvdG90eXBlLnRlc3RfbWVtYmVycyA9IGZ1bmN0aW9uKCkK
ICAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgIC8vIFRPRE86IFRlc3QgYSBwbGF0
Zm9ybSBvYmplY3QgdGhhdCBpbXBsZW1lbnRzIHNvbWUgb3RoZXIKICAgICAgICAgICAgICAgICAv
LyBpbnRlcmZhY2UuICAoSGF2ZSB0byBiZSBzdXJlIHRvIGdldCBpbmhlcml0YW5jZSByaWdodC4p
Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCBmdW5jdGlv
bigpIHsKICAgICAgICAgICAgICAgICAgICAgd2luZG93W3RoaXMubmFtZV0ucHJvdG90eXBlW21l
bWJlci5uYW1lXS5hcHBseSh7fSwgYXJncyk7CiAgICAgICAgICAgICAgICAgfSwgImNhbGxpbmcg
b3BlcmF0aW9uIHdpdGggdGhpcyA9IHt9IGRpZG4ndCB0aHJvdyBUeXBlRXJyb3IiKTsKICAgICAg
ICAgICAgIH0uYmluZCh0aGlzKSwgdGhpcy5uYW1lICsgIiBpbnRlcmZhY2U6IG9wZXJhdGlvbiAi
ICsgbWVtYmVyLm5hbWUgKwpAQCAtMTU2NSw3ICsxNTY1LDcgQEAgSWRsSW50ZXJmYWNlLnByb3Rv
dHlwZS50ZXN0X2ludGVyZmFjZV9vZiA9IGZ1bmN0aW9uKGRlc2MsIG9iaiwgZXhjZXB0aW9uLCBl
eHBlY3QKICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X3Ro
cm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkKKyAgICAgICAgICAgICAgICAgICAgYXNz
ZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkKICAgICAgICAgICAgICAgICAgICAg
ewogICAgICAgICAgICAgICAgICAgICAgICAgb2JqW21lbWJlci5uYW1lXS5hcHBseShvYmosIGFy
Z3MpOwogICAgICAgICAgICAgICAgICAgICB9LmJpbmQodGhpcyksICJDYWxsZWQgd2l0aCAiICsg
aSArICIgYXJndW1lbnRzIik7CkBAIC0xNjM0LDcgKzE2MzQsNyBAQCBmdW5jdGlvbiBkb19pbnRl
cmZhY2VfYXR0cmlidXRlX2Fzc2VydHMob2JqLCBtZW1iZXIpCiAgICAgYXNzZXJ0X2VxdWFscyh0
eXBlb2YgZGVzYy5nZXQsICJmdW5jdGlvbiIsICJnZXR0ZXIgbXVzdCBiZSBGdW5jdGlvbiIpOwog
ICAgIGFzc2VydF9lcXVhbHMoZGVzYy5nZXQubGVuZ3RoLCAwLCAiZ2V0dGVyIGxlbmd0aCBtdXN0
IGJlIDAiKTsKICAgICAvLyBUT0RPOiBBY2NvdW50IGZvciBMZW5pZW50VGhpcwotICAgIGFzc2Vy
dF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpCisgICAgYXNzZXJ0X3Rocm93c19q
cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIGRlc2MuZ2V0LmNhbGwoe30p
OwogICAgIH0uYmluZCh0aGlzKSwgImNhbGxpbmcgZ2V0dGVyIG9uIHdyb25nIG9iamVjdCB0eXBl
IG11c3QgdGhyb3cgVHlwZUVycm9yIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS90
cmFjay90ZXh0dHJhY2tjdWUvdGV4dHRyYWNrY3VlLWNvbnN0cnVjdG9yLmh0bWwgYi9MYXlvdXRU
ZXN0cy9tZWRpYS90cmFjay90ZXh0dHJhY2tjdWUvdGV4dHRyYWNrY3VlLWNvbnN0cnVjdG9yLmh0
bWwKaW5kZXggNGI1NDBlNDZmZTA0ZTEyZDIwZGU1YjRkOGY5NDYyZWJjZTM4MTkzMC4uOWUzYTY2
ZWVlMzBkYjAyOThiY2MxODQwMWJjZDgwMDJjMGU4M2E0NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvbWVkaWEvdHJhY2svdGV4dHRyYWNrY3VlL3RleHR0cmFja2N1ZS1jb25zdHJ1Y3Rvci5odG1s
CisrKyBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RleHR0cmFja2N1ZS90ZXh0dHJhY2tjdWUt
Y29uc3RydWN0b3IuaHRtbApAQCAtNywxMyArNywxMyBAQCBpZiAod2luZG93LmludGVybmFscykK
ICAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0R2VuZXJpY0N1ZUFQSUVuYWJsZWQodHJ1ZSk7CiAK
IHRlc3QoIHRlc3QgPT4gewotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvciwgXyA9PiB7
IG5ldyBUZXh0VHJhY2tDdWUoMCwgMTAsICIiKSB9KTsKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBU
eXBlRXJyb3IsIF8gPT4geyBuZXcgVGV4dFRyYWNrQ3VlKDAsIDEwLCB7IH0pIH0pOwotICAgIGFz
c2VydF90aHJvd3MobmV3IFR5cGVFcnJvciwgXyA9PiB7IG5ldyBUZXh0VHJhY2tDdWUoMCwgMTAs
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKSB9KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pz
KFR5cGVFcnJvciwgXyA9PiB7IG5ldyBUZXh0VHJhY2tDdWUoMCwgMTAsICIiKSB9KTsKKyAgICBh
c3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgXyA9PiB7IG5ldyBUZXh0VHJhY2tDdWUoMCwgMTAs
IHsgfSkgfSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsIF8gPT4geyBuZXcgVGV4
dFRyYWNrQ3VlKDAsIDEwLCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSkgfSk7CiB9LCAn
VGV4dFRyYWNrQ3VlIHNob3VsZCB0aHJvdyAiVHlwZUVycm9yIiBpZiB0aGUgY3VlIG5vZGUgaXMg
bm90IGEgZG9jdW1lbnRGcmFnbWVudCcpOwogCiB0ZXN0KCB0ZXN0ID0+IHsKLSAgICBhc3NlcnRf
dGhyb3dzKCJJbnZhbGlkTm9kZVR5cGVFcnJvciIsIF8gPT4geyBuZXcgVGV4dFRyYWNrQ3VlKDAs
IDEwLCBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkpIH0pOworICAgIGFzc2VydF90
aHJvd3NfZG9tKCJJbnZhbGlkTm9kZVR5cGVFcnJvciIsIF8gPT4geyBuZXcgVGV4dFRyYWNrQ3Vl
KDAsIDEwLCBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkpIH0pOwogfSwgJ1RleHRU
cmFja0N1ZSBzaG91bGQgdGhyb3cgIkludmFsaWROb2RlVHlwZUVycm9yIiBpZiBwYXNzZWQgYW4g
aW52YWxpZCBkb2N1bWVudEZyYWdtZW50Jyk7CiAKIGZ1bmN0aW9uIGNyZWF0ZVZhbGlkQ3VlRnJh
Z21lbnQoKQpAQCAtMzYsNyArMzYsNyBAQCB0ZXN0KCB0ZXN0ID0+IHsKICAgICBsZXQgdmFsaWRD
dWUgPSBuZXcgVGV4dFRyYWNrQ3VlKDAsIDEwLCBmcmFnbWVudCk7CiAKICAgICBmcmFnbWVudC5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0YWJsZScpKTsKLSAgICBhc3NlcnRf
dGhyb3dzKCJJbnZhbGlkTm9kZVR5cGVFcnJvciIsIF8gPT4geyBuZXcgVGV4dFRyYWNrQ3VlKDAs
IDEwLCBmcmFnbWVudCkgfSk7CisgICAgYXNzZXJ0X3Rocm93c19kb20oIkludmFsaWROb2RlVHlw
ZUVycm9yIiwgXyA9PiB7IG5ldyBUZXh0VHJhY2tDdWUoMCwgMTAsIGZyYWdtZW50KSB9KTsKIAog
fSwgYFRleHRUcmFja0N1ZSBzaG91bGQgdGhyb3cgIkludmFsaWROb2RlVHlwZUVycm9yIiBpZiBk
b2N1bWVudEZyYWdtZW50IGhhcyBhbiBpbnZhbGlkIG5vZGVgKTsKIApAQCAtNDUsMTEgKzQ1LDEx
IEBAIHRlc3QoIHRlc3QgPT4gewogICAgIGxldCB2YWxpZEN1ZSA9IG5ldyBUZXh0VHJhY2tDdWUo
MCwgMTAsIGZyYWdtZW50KTsKIAogICAgIGZyYWdtZW50LmZpcnN0Q2hpbGQucmVtb3ZlQXR0cmli
dXRlKCdjdWViYWNrZ3JvdW5kJykKLSAgICBhc3NlcnRfdGhyb3dzKCJJbnZhbGlkU3RhdGVFcnJv
ciIsIF8gPT4geyBuZXcgVGV4dFRyYWNrQ3VlKDAsIDEwLCBmcmFnbWVudCkgfSk7CisgICAgYXNz
ZXJ0X3Rocm93c19kb20oIkludmFsaWRTdGF0ZUVycm9yIiwgXyA9PiB7IG5ldyBUZXh0VHJhY2tD
dWUoMCwgMTAsIGZyYWdtZW50KSB9KTsKIAogICAgIGZyYWdtZW50ID0gY3JlYXRlVmFsaWRDdWVG
cmFnbWVudCgpOwogICAgIGZyYWdtZW50LmZpcnN0Q2hpbGQuZmlyc3RDaGlsZC5yZW1vdmVBdHRy
aWJ1dGUoJ2N1ZScpCi0gICAgYXNzZXJ0X3Rocm93cygiSW52YWxpZFN0YXRlRXJyb3IiLCBfID0+
IHsgbmV3IFRleHRUcmFja0N1ZSgwLCAxMCwgZnJhZ21lbnQpIH0pOworICAgIGFzc2VydF90aHJv
d3NfZG9tKCJJbnZhbGlkU3RhdGVFcnJvciIsIF8gPT4geyBuZXcgVGV4dFRyYWNrQ3VlKDAsIDEw
LCBmcmFnbWVudCkgfSk7CiB9LCBgVGV4dFRyYWNrQ3VlIHNob3VsZCB0aHJvdyAiSW52YWxpZFN0
YXRlRXJyb3IiIGlmIGRvY3VtZW50RnJhZ21lbnQgZG9lc24ndCBoYXZlICdjdWViYWNrZ3JvdW5k
JyBhbmQgJ2N1ZScgbm9kZXNgKTsKIAogdGVzdCggdGVzdCA9PiB7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9tZWRpYS90cmFjay93M2MvaW50ZXJmYWNlcy9UZXh0VHJhY2tDdWUvYWxpZ24uaHRt
bCBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3czYy9pbnRlcmZhY2VzL1RleHRUcmFja0N1ZS9h
bGlnbi5odG1sCmluZGV4IGJlNzBkYzMzNDdhM2I3MWVjNjdkZDkzMGY4MjBlMWI2MDRlMTg5YWYu
LjJmMmNjYzc5OWZhMmFjMzE1OTBhMGNlNTkxODgyZWMwOWZkMTAxNjkgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL21lZGlhL3RyYWNrL3czYy9pbnRlcmZhY2VzL1RleHRUcmFja0N1ZS9hbGlnbi5o
dG1sCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3czYy9pbnRlcmZhY2VzL1RleHRUcmFj
a0N1ZS9hbGlnbi5odG1sCkBAIC0yMSw3ICsyMSw3IEBAIHRlc3QoZnVuY3Rpb24oKXsKICAgICBh
c3NlcnRfZXF1YWxzKGMxLmFsaWduLCAnc3RhcnQnKTsKICAgICBjMS5hbGlnbiA9ICdlbmQnOwog
ICAgIGFzc2VydF9lcXVhbHMoYzEuYWxpZ24sICdlbmQnKTsKLSAgICBhc3NlcnRfdGhyb3dzKCdT
WU5UQVhfRVJSJywgZnVuY3Rpb24oKSB7CisgICAgYXNzZXJ0X3Rocm93c19kb20oJ1NZTlRBWF9F
UlInLCBmdW5jdGlvbigpIHsKICAgICAgICAgYzEuYWxpZ24gPSAnc3RhcnRcdTAwMDAnOwogICAg
IH0pOwogfSwgZG9jdW1lbnQudGl0bGUrJywgc2NyaXB0LWNyZWF0ZWQgY3VlJyk7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy9wb2ludGVyLWV2ZW50cy1pbXBsaWNp
dC1jYXB0dXJlLXJlbGVhc2UtZXhjZXB0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9wb2ludGVyZXZl
bnRzL2lvcy9wb2ludGVyLWV2ZW50cy1pbXBsaWNpdC1jYXB0dXJlLXJlbGVhc2UtZXhjZXB0aW9u
Lmh0bWwKaW5kZXggNGQ0OGUyZjlhZDg1YzI2YmZhOGFlYmNiNGNmNjMzMmUzYmFjNzcyOC4uNDZi
NjQyM2FmYmJmZjE0YzhkZDc1YjYzY2E4NjQ5NjQzZGIzYzNmYSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvcG9pbnRlci1ldmVudHMtaW1wbGljaXQtY2FwdHVyZS1y
ZWxlYXNlLWV4Y2VwdGlvbi5odG1sCisrKyBiL0xheW91dFRlc3RzL3BvaW50ZXJldmVudHMvaW9z
L3BvaW50ZXItZXZlbnRzLWltcGxpY2l0LWNhcHR1cmUtcmVsZWFzZS1leGNlcHRpb24uaHRtbApA
QCAtMTUsNyArMTUsNyBAQAogdGFyZ2V0X3Rlc3QoKHRhcmdldCwgdGVzdCkgPT4gewogICAgIHRh
cmdldC5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVyZG93biIsIGV2ZW50ID0+IHsKICAgICAgICAg
YXNzZXJ0X3RydWUodGFyZ2V0Lmhhc1BvaW50ZXJDYXB0dXJlKGV2ZW50LnBvaW50ZXJJZCkpOwot
ICAgICAgICBhc3NlcnRfdGhyb3dzKCJOb3RGb3VuZEVycm9yIiwgKCkgPT4gdGFyZ2V0LnJlbGVh
c2VQb2ludGVyQ2FwdHVyZShldmVudC5wb2ludGVySWQgKyAxKSk7CisgICAgICAgIGFzc2VydF90
aHJvd3NfZG9tKCJOb3RGb3VuZEVycm9yIiwgKCkgPT4gdGFyZ2V0LnJlbGVhc2VQb2ludGVyQ2Fw
dHVyZShldmVudC5wb2ludGVySWQgKyAxKSk7CiAgICAgICAgIGFzc2VydF90cnVlKHRhcmdldC5o
YXNQb2ludGVyQ2FwdHVyZShldmVudC5wb2ludGVySWQpKTsKICAgICB9KTsKICAgICB1aS50YXAo
eyB4OiA1MCwgeTogNTAgfSkudGhlbigoKSA9PiB0ZXN0LmRvbmUoKSk7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy9wb2ludGVyLWV2ZW50cy1zZXQtcG9pbnRlci1j
YXB0dXJlLWV4Y2VwdGlvbnMuaHRtbCBiL0xheW91dFRlc3RzL3BvaW50ZXJldmVudHMvaW9zL3Bv
aW50ZXItZXZlbnRzLXNldC1wb2ludGVyLWNhcHR1cmUtZXhjZXB0aW9ucy5odG1sCmluZGV4IGUz
MjU2MTUxZTJhMWM2N2MxNzhlZWU3NmJkMjdkNWM4MzZlMmY4YzguLjRmZDAwOGQ4YTFhYWNhOTIx
MjllY2ZhN2MzMDJkZGRkMDJkNGE5YjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BvaW50ZXJl
dmVudHMvaW9zL3BvaW50ZXItZXZlbnRzLXNldC1wb2ludGVyLWNhcHR1cmUtZXhjZXB0aW9ucy5o
dG1sCisrKyBiL0xheW91dFRlc3RzL3BvaW50ZXJldmVudHMvaW9zL3BvaW50ZXItZXZlbnRzLXNl
dC1wb2ludGVyLWNhcHR1cmUtZXhjZXB0aW9ucy5odG1sCkBAIC0xMywxMSArMTMsMTEgQEAKICd1
c2Ugc3RyaWN0JzsKIAogdGFyZ2V0X3Rlc3QoKHRhcmdldCwgdGVzdCkgPT4gewotICAgIGFzc2Vy
dF90aHJvd3MoIk5vdEZvdW5kRXJyb3IiLCAoKSA9PiBkb2N1bWVudC5ib2R5LnNldFBvaW50ZXJD
YXB0dXJlKDEwKSwgIkNhbGxpbmcgc2V0UG9pbnRlckNhcHR1cmUoKSB3aXRoIGFuIGludmFsaWQg
cG9pbnRlciBpZCB0aHJvd3MgYSBOb3RGb3VuZEVycm9yIGV4Y2VwdGlvbi4iKTsKKyAgICBhc3Nl
cnRfdGhyb3dzX2RvbSgiTm90Rm91bmRFcnJvciIsICgpID0+IGRvY3VtZW50LmJvZHkuc2V0UG9p
bnRlckNhcHR1cmUoMTApLCAiQ2FsbGluZyBzZXRQb2ludGVyQ2FwdHVyZSgpIHdpdGggYW4gaW52
YWxpZCBwb2ludGVyIGlkIHRocm93cyBhIE5vdEZvdW5kRXJyb3IgZXhjZXB0aW9uLiIpOwogCiAg
ICAgdGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoInBvaW50ZXJkb3duIiwgZXZlbnQgPT4gewogICAg
ICAgICBhc3NlcnRfdHJ1ZSh0YXJnZXQuaGFzUG9pbnRlckNhcHR1cmUoZXZlbnQucG9pbnRlcklk
KSk7Ci0gICAgICAgIGFzc2VydF90aHJvd3MoIkludmFsaWRTdGF0ZUVycm9yIiwgKCkgPT4gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iikuc2V0UG9pbnRlckNhcHR1cmUoZXZlbnQucG9pbnRl
cklkKSwgIkNhbGxpbmcgc2V0UG9pbnRlckNhcHR1cmUoKSB3aXRoIGEgdmFsaWQgcG9pbnRlciBp
ZCBvbiBhIGRpc2Nvbm5lY3RlZCBlbGVtZW50IHRocm93cyBhbiBJbnZhbGlkU3RhdGVFcnJvciBl
eGNlcHRpb24uIik7CisgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlkU3RhdGVFcnJv
ciIsICgpID0+IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLnNldFBvaW50ZXJDYXB0dXJl
KGV2ZW50LnBvaW50ZXJJZCksICJDYWxsaW5nIHNldFBvaW50ZXJDYXB0dXJlKCkgd2l0aCBhIHZh
bGlkIHBvaW50ZXIgaWQgb24gYSBkaXNjb25uZWN0ZWQgZWxlbWVudCB0aHJvd3MgYW4gSW52YWxp
ZFN0YXRlRXJyb3IgZXhjZXB0aW9uLiIpOwogICAgIH0pOwogICAgIHVpLnRhcCh7IHg6IDUwLCB5
OiA1MCB9KS50aGVuKCgpID0+IHRlc3QuZG9uZSgpKTsKIH0sICJUaGUgc2V0UG9pbnRlckNhcHR1
cmUoKSBtZXRob2QgY2FuIHRocm93LiIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcG9pbnRl
cmV2ZW50cy9wb2ludGVyLWlkLWNyYXNoLmh0bWwgYi9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRz
L3BvaW50ZXItaWQtY3Jhc2guaHRtbAppbmRleCA3MDYzZGI0Zjg5ZTM1NmZkYzgxZWM0MDRhNjRi
YjI5OWVjZjRiYmFlLi4yZGRjZTcwODMwMWNhYWVjN2MyNmI1NjgzYmRmNGNmYmFkN2ZkZjY0IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL3BvaW50ZXItaWQtY3Jhc2guaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL3BvaW50ZXItaWQtY3Jhc2guaHRtbApA
QCAtMTQsOCArMTQsOCBAQCB0ZXN0KCgpID0+IHsKICAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1l
bnQuYm9keS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7CiAgICAg
Zm9yIChsZXQgdmFsdWUgb2YgWzAsIE51bWJlci5NQVhfVkFMVUUsIE51bWJlci5NSU5fVkFMVUUs
IE51bWJlci5NQVhfVkFMVUUgKyAxLCBOdW1iZXIuTUlOX1ZBTFVFIC0gMV0pIHsKICAgICAgICAg
ZWxlbWVudC5oYXNQb2ludGVyQ2FwdHVyZSh2YWx1ZSk7Ci0gICAgICAgIGFzc2VydF90aHJvd3Mo
Ik5vdEZvdW5kRXJyb3IiLCAoKSA9PiBlbGVtZW50LnNldFBvaW50ZXJDYXB0dXJlKHZhbHVlKSkK
LSAgICAgICAgYXNzZXJ0X3Rocm93cygiTm90Rm91bmRFcnJvciIsICgpID0+IGVsZW1lbnQucmVs
ZWFzZVBvaW50ZXJDYXB0dXJlKHZhbHVlKSkKKyAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIk5v
dEZvdW5kRXJyb3IiLCAoKSA9PiBlbGVtZW50LnNldFBvaW50ZXJDYXB0dXJlKHZhbHVlKSkKKyAg
ICAgICAgYXNzZXJ0X3Rocm93c19kb20oIk5vdEZvdW5kRXJyb3IiLCAoKSA9PiBlbGVtZW50LnJl
bGVhc2VQb2ludGVyQ2FwdHVyZSh2YWx1ZSkpCiAgICAgfQogICAgIGVsZW1lbnQucmVtb3ZlKCk7
CiB9LCAiQ2hlY2tpbmcgMCBjYW4gYmUgdXNlZCBhcyBhIFBvaW50ZXIgSUQuIik7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvaWRsaGFybmVzcy5qcyBiL0xheW91dFRlc3RzL3Jl
c291cmNlcy9pZGxoYXJuZXNzLmpzCmluZGV4IDI1YjlhZjVjM2U3OWRjY2QwYjEyMjIzNWI5MGQ2
MDAwNmEzNjNkZWUuLjZhZWMwMmUzYWJlMDZiMjBkMTFiYjQ2YmZkNWI3NDIzMjY4NTFjODYgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Jlc291cmNlcy9pZGxoYXJuZXNzLmpzCisrKyBiL0xheW91
dFRlc3RzL3Jlc291cmNlcy9pZGxoYXJuZXNzLmpzCkBAIC0xLDE0ICsxLDQgQEAKLS8qCi1EaXN0
cmlidXRlZCB1bmRlciBib3RoIHRoZSBXM0MgVGVzdCBTdWl0ZSBMaWNlbnNlIFsxXSBhbmQgdGhl
IFczQwotMy1jbGF1c2UgQlNEIExpY2Vuc2UgWzJdLiBUbyBjb250cmlidXRlIHRvIGEgVzNDIFRl
c3QgU3VpdGUsIHNlZSB0aGUKLXBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgot
Ci1bMV0gaHR0cDovL3d3dy53My5vcmcvQ29uc29ydGl1bS9MZWdhbC8yMDA4LzA0LXRlc3RzdWl0
ZS1saWNlbnNlCi1bMl0gaHR0cDovL3d3dy53My5vcmcvQ29uc29ydGl1bS9MZWdhbC8yMDA4LzAz
LWJzZC1saWNlbnNlCi1bM10gaHR0cDovL3d3dy53My5vcmcvMjAwNC8xMC8yNy10ZXN0Y2FzZXMK
LSovCi0KLS8qIEZvciB1c2VyIGRvY3VtZW50YXRpb24gc2VlIGRvY3MvaWRsaGFybmVzcy5tZCAq
LworLyogRm9yIHVzZXIgZG9jdW1lbnRhdGlvbiBzZWUgZG9jcy9fd3JpdGluZy10ZXN0cy9pZGxo
YXJuZXNzLm1kICovCiAKIC8qKgogICogTm90ZXMgZm9yIHBlb3BsZSB3aG8gd2FudCB0byBlZGl0
IHRoaXMgZmlsZSAobm90IGp1c3QgdXNlIGl0IGFzIGEgbGlicmFyeSk6CkBAIC00OCwyMCArMzgs
MzAgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgKi8KIChmdW5jdGlv
bigpewogInVzZSBzdHJpY3QiOworLy8gU3VwcG9ydCBzdWJzZXRUZXN0QnlLZXkgZnJvbSAvY29t
bW9uL3N1YnNldC10ZXN0cy1ieS1rZXkuanMsIGJ1dCBtYWtlIGl0IG9wdGlvbmFsCitpZiAoISgn
c3Vic2V0VGVzdEJ5S2V5JyBpbiBzZWxmKSkgeworICAgIHNlbGYuc3Vic2V0VGVzdEJ5S2V5ID0g
ZnVuY3Rpb24oa2V5LCBjYWxsYmFjaywgLi4uYXJncykgeworICAgICAgcmV0dXJuIGNhbGxiYWNr
KC4uLmFyZ3MpOworICAgIH0KKyAgICBzZWxmLnNob3VsZFJ1blN1YlRlc3QgPSAoKSA9PiB0cnVl
OworfQogLy8vIEhlbHBlcnMgLy8vCiBmdW5jdGlvbiBjb25zdFZhbHVlIChjbnQpCi0vL0B7CiB7
CiAgICAgaWYgKGNudC50eXBlID09PSAibnVsbCIpIHJldHVybiBudWxsOwogICAgIGlmIChjbnQu
dHlwZSA9PT0gIk5hTiIpIHJldHVybiBOYU47CiAgICAgaWYgKGNudC50eXBlID09PSAiSW5maW5p
dHkiKSByZXR1cm4gY250Lm5lZ2F0aXZlID8gLUluZmluaXR5IDogSW5maW5pdHk7CisgICAgaWYg
KGNudC50eXBlID09PSAibnVtYmVyIikgcmV0dXJuICtjbnQudmFsdWU7CiAgICAgcmV0dXJuIGNu
dC52YWx1ZTsKIH0KIAotLy9AfQogZnVuY3Rpb24gbWluT3ZlcmxvYWRMZW5ndGgob3ZlcmxvYWRz
KQotLy9AewogeworICAgIC8vICJUaGUgdmFsdWUgb2YgdGhlIEZ1bmN0aW9uIG9iamVjdOKAmXMg
4oCcbGVuZ3Ro4oCdIHByb3BlcnR5IGlzCisgICAgLy8gYSBOdW1iZXIgZGV0ZXJtaW5lZCBhcyBm
b2xsb3dzOgorICAgIC8vICIuIC4gLgorICAgIC8vICJSZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUg
c2hvcnRlc3QgYXJndW1lbnQgbGlzdCBvZiB0aGUKKyAgICAvLyBlbnRyaWVzIGluIFMuIgogICAg
IGlmICghb3ZlcmxvYWRzLmxlbmd0aCkgewogICAgICAgICByZXR1cm4gMDsKICAgICB9CkBAIC03
NCwxOCArNzQsNDMgQEAgZnVuY3Rpb24gbWluT3ZlcmxvYWRMZW5ndGgob3ZlcmxvYWRzKQogICAg
IC5yZWR1Y2UoZnVuY3Rpb24obSwgbikgeyByZXR1cm4gTWF0aC5taW4obSwgbik7IH0pOwogfQog
Ci0vL0B9Ci1mdW5jdGlvbiB0aHJvd09yUmVqZWN0KGFfdGVzdCwgb3BlcmF0aW9uLCBmbiwgb2Jq
LCBhcmdzLCAgbWVzc2FnZSwgY2IpCi0vL0B7CisvLyBBIGhlbHBlciB0byBnZXQgdGhlIGdsb2Jh
bCBvZiBhIEZ1bmN0aW9uIG9iamVjdC4gIFRoaXMgaXMgbmVlZGVkIHRvIGRldGVybWluZQorLy8g
d2hpY2ggZ2xvYmFsIGV4Y2VwdGlvbnMgdGhlIGZ1bmN0aW9uIHRocm93cyB3aWxsIGNvbWUgZnJv
bS4KK2Z1bmN0aW9uIGdsb2JhbE9mKGZ1bmMpCit7CisgICAgdHJ5IHsKKyAgICAgICAgLy8gVXNl
IHRoZSBmYWN0IHRoYXQgLmNvbnN0cnVjdG9yIGZvciBhIEZ1bmN0aW9uIG9iamVjdCBpcyBub3Jt
YWxseSB0aGUKKyAgICAgICAgLy8gRnVuY3Rpb24gY29uc3RydWN0b3IsIHdoaWNoIGNhbiBiZSB1
c2VkIHRvIG1pbnQgYSBuZXcgZnVuY3Rpb24gaW4gdGhlCisgICAgICAgIC8vIHJpZ2h0IGdsb2Jh
bC4KKyAgICAgICAgcmV0dXJuIGZ1bmMuY29uc3RydWN0b3IoInJldHVybiB0aGlzOyIpKCk7Cisg
ICAgfSBjYXRjaCAoZSkgeworICAgIH0KKyAgICAvLyBJZiB0aGUgYWJvdmUgZmFpbHMsIGJlY2F1
c2Ugc29tZW9uZSBnYXZlIHVzIGEgbm9uLWZ1bmN0aW9uLCBvciBhIGZ1bmN0aW9uCisgICAgLy8g
d2l0aCBhIHdlaXJkIHByb3RvIGNoYWluIG9yIHdlaXJkIC5jb25zdHJ1Y3RvciBwcm9wZXJ0eSwg
anVzdCBmYWxsIGJhY2sKKyAgICAvLyB0byAnc2VsZicuCisgICAgcmV0dXJuIHNlbGY7Cit9CisK
Ky8vIGh0dHBzOi8vZXNkaXNjdXNzLm9yZy90b3BpYy9pc2NvbnN0cnVjdG9yI2NvbnRlbnQtMTEK
K2Z1bmN0aW9uIGlzQ29uc3RydWN0b3IobykgeworICAgIHRyeSB7CisgICAgICAgIG5ldyAobmV3
IFByb3h5KG8sIHtjb25zdHJ1Y3Q6ICgpID0+ICh7fSl9KSk7CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0gY2F0Y2goZSkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitm
dW5jdGlvbiB0aHJvd09yUmVqZWN0KGFfdGVzdCwgb3BlcmF0aW9uLCBmbiwgb2JqLCBhcmdzLCBt
ZXNzYWdlLCBjYikKIHsKICAgICBpZiAob3BlcmF0aW9uLmlkbFR5cGUuZ2VuZXJpYyAhPT0gIlBy
b21pc2UiKSB7Ci0gICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlv
bigpIHsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhnbG9iYWxPZihmbikuVHlwZUVycm9yLCBm
dW5jdGlvbigpIHsKICAgICAgICAgICAgIGZuLmFwcGx5KG9iaiwgYXJncyk7CiAgICAgICAgIH0s
IG1lc3NhZ2UpOwogICAgICAgICBjYigpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHRyeSB7Ci0g
ICAgICAgICAgICBwcm9taXNlX3JlamVjdHMoYV90ZXN0LCBuZXcgVHlwZUVycm9yKCksIGZuLmFw
cGx5KG9iaiwgYXJncykpLnRoZW4oY2IsIGNiKTsKKyAgICAgICAgICAgIHByb21pc2VfcmVqZWN0
c19qcyhhX3Rlc3QsIFR5cGVFcnJvciwgZm4uYXBwbHkob2JqLCBhcmdzKSwgbWVzc2FnZSkudGhl
bihjYiwgY2IpOwogICAgICAgICB9IGNhdGNoIChlKXsKICAgICAgICAgICAgIGFfdGVzdC5zdGVw
KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgIGFzc2VydF91bnJlYWNoZWQoIlRocm93cyBc
IiIgKyBlICsgIlwiIGluc3RlYWQgb2YgcmVqZWN0aW5nIHByb21pc2UiKTsKQEAgLTk1LDkgKzEy
MCw3IEBAIGZ1bmN0aW9uIHRocm93T3JSZWplY3QoYV90ZXN0LCBvcGVyYXRpb24sIGZuLCBvYmos
IGFyZ3MsICBtZXNzYWdlLCBjYikKICAgICB9CiB9CiAKLS8vQH0KIGZ1bmN0aW9uIGF3YWl0TkNh
bGxiYWNrcyhuLCBjYiwgY3R4KQotLy9AewogewogICAgIHZhciBjb3VudGVyID0gMDsKICAgICBy
ZXR1cm4gZnVuY3Rpb24oKSB7CkBAIC0xMDgsMjQgKzEzMSwyNyBAQCBmdW5jdGlvbiBhd2FpdE5D
YWxsYmFja3MobiwgY2IsIGN0eCkKICAgICB9OwogfQogCi0vL0B9Ci12YXIgZnJvdW5kID0KLS8v
QHsKLShmdW5jdGlvbigpewotICAgIGlmIChNYXRoLmZyb3VuZCkgcmV0dXJuIE1hdGguZnJvdW5k
OworLy8vIElkbEhhcm5lc3NFcnJvciAvLy8KKy8vIEVudHJ5IHBvaW50CitzZWxmLklkbEhhcm5l
c3NFcnJvciA9IGZ1bmN0aW9uKG1lc3NhZ2UpCit7CisgICAgLyoqCisgICAgICogTWVzc2FnZSB0
byBiZSBwcmludGVkIGFzIHRoZSBlcnJvcidzIHRvU3RyaW5nIGludm9jYXRpb24uCisgICAgICov
CisgICAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZTsKK307CisKK0lkbEhhcm5lc3NFcnJvci5wcm90
b3R5cGUgPSBPYmplY3QuY3JlYXRlKEVycm9yLnByb3RvdHlwZSk7CisKK0lkbEhhcm5lc3NFcnJv
ci5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpCit7CisgICAgcmV0dXJuIHRoaXMubWVz
c2FnZTsKK307CiAKLSAgICB2YXIgYXJyID0gbmV3IEZsb2F0MzJBcnJheSgxKTsKLSAgICByZXR1
cm4gZnVuY3Rpb24gZnJvdW5kKG4pIHsKLSAgICAgICAgYXJyWzBdID0gbjsKLSAgICAgICAgcmV0
dXJuIGFyclswXTsKLSAgICB9OwotfSkoKTsKLS8vQH0KIAogLy8vIElkbEFycmF5IC8vLwogLy8g
RW50cnkgcG9pbnQKIHNlbGYuSWRsQXJyYXkgPSBmdW5jdGlvbigpCi0vL0B7CiB7CiAgICAgLyoq
CiAgICAgICogQSBtYXAgZnJvbSBzdHJpbmdzIHRvIHRoZSBjb3JyZXNwb25kaW5nIG5hbWVkIElk
bE9iamVjdCwgc3VjaCBhcwpAQCAtMTQ4LDkyICsxNzQsMjc5IEBAIHNlbGYuSWRsQXJyYXkgPSBm
dW5jdGlvbigpCiAKICAgICAvKioKICAgICAgKiBXaGVuIGFkZGluZyBtdWx0aXBsZSBjb2xsZWN0
aW9ucyBvZiBJRExzIG9uZSBhdCBhIHRpbWUsIGFuIGVhcmxpZXIgb25lCi0gICAgICogbWlnaHQg
Y29udGFpbiBhIHBhcnRpYWwgaW50ZXJmYWNlIG9yIGltcGxlbWVudHMgc3RhdGVtZW50IHRoYXQg
ZGVwZW5kcworICAgICAqIG1pZ2h0IGNvbnRhaW4gYSBwYXJ0aWFsIGludGVyZmFjZSBvciBpbmNs
dWRlcyBzdGF0ZW1lbnQgdGhhdCBkZXBlbmRzCiAgICAgICogb24gYSBsYXRlciBvbmUuICBTYXZl
IHRoZXNlIHVwIGFuZCBoYW5kbGUgdGhlbSByaWdodCBiZWZvcmUgd2UgcnVuCiAgICAgICogdGVz
dHMuCiAgICAgICoKLSAgICAgKiAucGFydGlhbHMgaXMgc2ltcGx5IGFuIGFycmF5IG9mIG9iamVj
dHMgZnJvbSBXZWJJRExQYXJzZXIuanMnCi0gICAgICogInBhcnRpYWxpbnRlcmZhY2UiIHByb2R1
Y3Rpb24uICAuaW1wbGVtZW50cyBtYXBzIHN0cmluZ3MgdG8gYXJyYXlzIG9mCi0gICAgICogc3Ry
aW5ncywgc3VjaCB0aGF0Ci0gICAgICoKLSAgICAgKiAgIEEgaW1wbGVtZW50cyBCOwotICAgICAq
ICAgQSBpbXBsZW1lbnRzIEM7Ci0gICAgICogICBEIGltcGxlbWVudHMgRTsKLSAgICAgKgotICAg
ICAqIHJlc3VsdHMgaW4geyBBOiBbIkIiLCAiQyJdLCBEOiBbIkUiXSB9LgorICAgICAqIEJvdGgg
dGhpcy5wYXJ0aWFscyBhbmQgdGhpcy5pbmNsdWRlcyB3aWxsIGJlIHRoZSBvYmplY3RzIGFzIHBh
cnNlZCBieQorICAgICAqIFdlYklETFBhcnNlci5qcywgbm90IHdyYXBwZWQgaW4gSWRsSW50ZXJm
YWNlIG9yIHNpbWlsYXIuCiAgICAgICovCiAgICAgdGhpcy5wYXJ0aWFscyA9IFtdOwotICAgIHRo
aXNbImltcGxlbWVudHMiXSA9IHt9OworICAgIHRoaXMuaW5jbHVkZXMgPSBbXTsKKworICAgIC8q
KgorICAgICAqIFJlY29yZCBvZiBza2lwcGVkIElETCBpdGVtcywgaW4gY2FzZSB3ZSBsYXRlciBy
ZWFsaXplIHRoYXQgdGhleSBhcmUgYQorICAgICAqIGRlcGVuZGVuY3kgKHRvIHJldHJvYWN0aXZl
bHkgcHJvY2VzcyB0aGVtKS4KKyAgICAgKi8KKyAgICB0aGlzLnNraXBwZWQgPSBuZXcgTWFwKCk7
CiB9OwogCi0vL0B9Ci1JZGxBcnJheS5wcm90b3R5cGUuYWRkX2lkbHMgPSBmdW5jdGlvbihyYXdf
aWRscykKLS8vQHsKK0lkbEFycmF5LnByb3RvdHlwZS5hZGRfaWRscyA9IGZ1bmN0aW9uKHJhd19p
ZGxzLCBvcHRpb25zKQogewogICAgIC8qKiBFbnRyeSBwb2ludC4gIFNlZSBkb2N1bWVudGF0aW9u
IGF0IGJlZ2lubmluZyBvZiBmaWxlLiAqLwotICAgIHRoaXMuaW50ZXJuYWxfYWRkX2lkbHMoV2Vi
SURMMi5wYXJzZShyYXdfaWRscykpOworICAgIHRoaXMuaW50ZXJuYWxfYWRkX2lkbHMoV2ViSURM
Mi5wYXJzZShyYXdfaWRscyksIG9wdGlvbnMpOwogfTsKIAotLy9AfQotSWRsQXJyYXkucHJvdG90
eXBlLmFkZF91bnRlc3RlZF9pZGxzID0gZnVuY3Rpb24ocmF3X2lkbHMpCi0vL0B7CitJZGxBcnJh
eS5wcm90b3R5cGUuYWRkX3VudGVzdGVkX2lkbHMgPSBmdW5jdGlvbihyYXdfaWRscywgb3B0aW9u
cykKIHsKICAgICAvKiogRW50cnkgcG9pbnQuICBTZWUgZG9jdW1lbnRhdGlvbiBhdCBiZWdpbm5p
bmcgb2YgZmlsZS4gKi8KICAgICB2YXIgcGFyc2VkX2lkbHMgPSBXZWJJREwyLnBhcnNlKHJhd19p
ZGxzKTsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhcnNlZF9pZGxzLmxlbmd0aDsgaSsrKQot
ICAgIHsKKyAgICB0aGlzLm1hcmtfYXNfdW50ZXN0ZWQocGFyc2VkX2lkbHMpOworICAgIHRoaXMu
aW50ZXJuYWxfYWRkX2lkbHMocGFyc2VkX2lkbHMsIG9wdGlvbnMpOworfTsKKworSWRsQXJyYXku
cHJvdG90eXBlLm1hcmtfYXNfdW50ZXN0ZWQgPSBmdW5jdGlvbiAocGFyc2VkX2lkbHMpCit7Cisg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXJzZWRfaWRscy5sZW5ndGg7IGkrKykgewogICAgICAg
ICBwYXJzZWRfaWRsc1tpXS51bnRlc3RlZCA9IHRydWU7Ci0gICAgICAgIGlmICgibWVtYmVycyIg
aW4gcGFyc2VkX2lkbHNbaV0pCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZvciAodmFyIGogPSAw
OyBqIDwgcGFyc2VkX2lkbHNbaV0ubWVtYmVycy5sZW5ndGg7IGorKykKLSAgICAgICAgICAgIHsK
KyAgICAgICAgaWYgKCJtZW1iZXJzIiBpbiBwYXJzZWRfaWRsc1tpXSkgeworICAgICAgICAgICAg
Zm9yICh2YXIgaiA9IDA7IGogPCBwYXJzZWRfaWRsc1tpXS5tZW1iZXJzLmxlbmd0aDsgaisrKSB7
CiAgICAgICAgICAgICAgICAgcGFyc2VkX2lkbHNbaV0ubWVtYmVyc1tqXS51bnRlc3RlZCA9IHRy
dWU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgdGhpcy5pbnRlcm5hbF9h
ZGRfaWRscyhwYXJzZWRfaWRscyk7CiB9OwogCi0vL0B9Ci1JZGxBcnJheS5wcm90b3R5cGUuaW50
ZXJuYWxfYWRkX2lkbHMgPSBmdW5jdGlvbihwYXJzZWRfaWRscykKLS8vQHsKK0lkbEFycmF5LnBy
b3RvdHlwZS5pc19leGNsdWRlZF9ieV9vcHRpb25zID0gZnVuY3Rpb24gKG5hbWUsIG9wdGlvbnMp
Cit7CisgICAgcmV0dXJuIG9wdGlvbnMgJiYKKyAgICAgICAgKG9wdGlvbnMuZXhjZXB0ICYmIG9w
dGlvbnMuZXhjZXB0LmluY2x1ZGVzKG5hbWUpCisgICAgICAgICB8fCBvcHRpb25zLm9ubHkgJiYg
IW9wdGlvbnMub25seS5pbmNsdWRlcyhuYW1lKSk7Cit9OworCitJZGxBcnJheS5wcm90b3R5cGUu
YWRkX2RlcGVuZGVuY3lfaWRscyA9IGZ1bmN0aW9uKHJhd19pZGxzLCBvcHRpb25zKQoreworICAg
IHJldHVybiB0aGlzLmludGVybmFsX2FkZF9kZXBlbmRlbmN5X2lkbHMoV2ViSURMMi5wYXJzZShy
YXdfaWRscyksIG9wdGlvbnMpOworfTsKKworSWRsQXJyYXkucHJvdG90eXBlLmludGVybmFsX2Fk
ZF9kZXBlbmRlbmN5X2lkbHMgPSBmdW5jdGlvbihwYXJzZWRfaWRscywgb3B0aW9ucykKK3sKKyAg
ICBjb25zdCBuZXdfb3B0aW9ucyA9IHsgb25seTogW10gfQorCisgICAgY29uc3QgYWxsX2RlcHMg
PSBuZXcgU2V0KCk7CisgICAgT2JqZWN0LnZhbHVlcyh0aGlzLm1lbWJlcnMpLmZvckVhY2godiA9
PiB7CisgICAgICAgIGlmICh2LmJhc2UpIHsKKyAgICAgICAgICAgIGFsbF9kZXBzLmFkZCh2LmJh
c2UpOworICAgICAgICB9CisgICAgfSk7CisgICAgLy8gQWRkIGJvdGggJ0EnIGFuZCAnQicgZm9y
IGVhY2ggJ0EgaW5jbHVkZXMgQicgZW50cnkuCisgICAgdGhpcy5pbmNsdWRlcy5mb3JFYWNoKGkg
PT4geworICAgICAgICBhbGxfZGVwcy5hZGQoaS50YXJnZXQpOworICAgICAgICBhbGxfZGVwcy5h
ZGQoaS5pbmNsdWRlcyk7CisgICAgfSk7CisgICAgdGhpcy5wYXJ0aWFscy5mb3JFYWNoKHAgPT4g
YWxsX2RlcHMuYWRkKHAubmFtZSkpOworICAgIC8vIEFkZCAnVHlwZU9mVHlwZScgZm9yIGVhY2gg
InR5cGVkZWYgVHlwZU9mVHlwZSBNeVR5cGU7IiBlbnRyeS4KKyAgICBPYmplY3QuZW50cmllcyh0
aGlzLm1lbWJlcnMpLmZvckVhY2goKFtrLCB2XSkgPT4geworICAgICAgICBpZiAodiBpbnN0YW5j
ZW9mIElkbFR5cGVkZWYpIHsKKyAgICAgICAgICAgIGxldCBkZWZzID0gdi5pZGxUeXBlLnVuaW9u
CisgICAgICAgICAgICAgICAgPyB2LmlkbFR5cGUuaWRsVHlwZS5tYXAodCA9PiB0LmlkbFR5cGUp
CisgICAgICAgICAgICAgICAgOiBbdi5pZGxUeXBlLmlkbFR5cGVdOworICAgICAgICAgICAgZGVm
cy5mb3JFYWNoKGQgPT4gYWxsX2RlcHMuYWRkKGQpKTsKKyAgICAgICAgfQorICAgIH0pOworCisg
ICAgLy8gQWRkIHRoZSBhdHRyaWJ1dGUgaWRsVHlwZXMgb2YgYWxsIHRoZSBuZXN0ZWQgbWVtYmVy
cyBvZiBpZGxzLgorICAgIGNvbnN0IGF0dHJEZXBzID0gcGFyc2VkSWRscyA9PiB7CisgICAgICAg
IHJldHVybiBwYXJzZWRJZGxzLnJlZHVjZSgoZGVwcywgcGFyc2VkKSA9PiB7CisgICAgICAgICAg
ICBpZiAocGFyc2VkLm1lbWJlcnMpIHsKKyAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF0dHIg
b2YgT2JqZWN0LnZhbHVlcyhwYXJzZWQubWVtYmVycykuZmlsdGVyKG0gPT4gbS50eXBlID09PSAn
YXR0cmlidXRlJykpIHsKKyAgICAgICAgICAgICAgICAgICAgbGV0IGF0dHJUeXBlID0gYXR0ci5p
ZGxUeXBlOworICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayBmb3IgZ2VuZXJpYyBtZW1iZXJz
IChlLmcuIEZyb3plbkFycmF5PE15VHlwZT4pCisgICAgICAgICAgICAgICAgICAgIGlmIChhdHRy
VHlwZS5nZW5lcmljKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBkZXBzLmFkZChhdHRyVHlw
ZS5nZW5lcmljKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJUeXBlID0gYXR0clR5cGUu
aWRsVHlwZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBkZXBz
LmFkZChhdHRyVHlwZS5pZGxUeXBlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBpZiAocGFyc2VkLmJhc2UgaW4gdGhpcy5tZW1iZXJzKSB7CisgICAgICAg
ICAgICAgICAgYXR0ckRlcHMoW3RoaXMubWVtYmVyc1twYXJzZWQuYmFzZV1dKS5mb3JFYWNoKGRl
cCA9PiBkZXBzLmFkZChkZXApKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBk
ZXBzOworICAgICAgICB9LCBuZXcgU2V0KCkpOworICAgIH07CisKKyAgICBjb25zdCB0ZXN0ZWRN
ZW1iZXJzID0gT2JqZWN0LnZhbHVlcyh0aGlzLm1lbWJlcnMpLmZpbHRlcihtID0+ICFtLnVudGVz
dGVkICYmIG0ubWVtYmVycyk7CisgICAgYXR0ckRlcHModGVzdGVkTWVtYmVycykuZm9yRWFjaChk
ZXAgPT4gYWxsX2RlcHMuYWRkKGRlcCkpOworCisgICAgY29uc3QgdGVzdGVkUGFydGlhbHMgPSB0
aGlzLnBhcnRpYWxzLmZpbHRlcihtID0+ICFtLnVudGVzdGVkICYmIG0ubWVtYmVycyk7CisgICAg
YXR0ckRlcHModGVzdGVkUGFydGlhbHMpLmZvckVhY2goZGVwID0+IGFsbF9kZXBzLmFkZChkZXAp
KTsKKworCisgICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5leGNlcHQgJiYgb3B0aW9ucy5vbmx5
KSB7CisgICAgICAgIHRocm93IG5ldyBJZGxIYXJuZXNzRXJyb3IoIlRoZSBvbmx5IGFuZCBleGNl
cHQgb3B0aW9ucyBjYW4ndCBiZSB1c2VkIHRvZ2V0aGVyLiIpOworICAgIH0KKworICAgIGNvbnN0
IGRlZmluZWRfb3JfdW50ZXN0ZWQgPSBuYW1lID0+IHsKKyAgICAgICAgLy8gTk9URTogRGVwcyBh
cmUgdW50ZXN0ZWQsIHNvIHdlJ3JlIGxlbmllbnQsIGFuZCBza2lwIHJlLWVuY291bnRlcmVkIGRl
ZmluaXRpb25zLgorICAgICAgICAvLyBlLmcuIGZvciAnaWRsJyBjb250YWluaW5nIEE6QiwgQjpD
LCBDOkQKKyAgICAgICAgLy8gICAgICBhcnJheS5hZGRfaWRscyhpZGwsIHtvbmx5OiBbJ0EnLCdC
J119KS4KKyAgICAgICAgLy8gICAgICBhcnJheS5hZGRfZGVwZW5kZW5jeV9pZGxzKGlkbCk7Cisg
ICAgICAgIC8vIEIgd291bGQgYmUgZW5jb3VudGVyZWQgYXMgdGVzdGVkLCBhbmQgZW5jb3VudGVy
ZWQgYXMgYSBkZXAsIHNvIHdlIGlnbm9yZS4KKyAgICAgICAgcmV0dXJuIG5hbWUgaW4gdGhpcy5t
ZW1iZXJzCisgICAgICAgICAgICB8fCB0aGlzLmlzX2V4Y2x1ZGVkX2J5X29wdGlvbnMobmFtZSwg
b3B0aW9ucyk7CisgICAgfQorICAgIC8vIE1hcHMgbmFtZSAtPiBbcGFyc2VkX2lkbCwgLi4uXQor
ICAgIGNvbnN0IHByb2Nlc3MgPSBmdW5jdGlvbihwYXJzZWQpIHsKKyAgICAgICAgdmFyIGRlcHMg
PSBbXTsKKyAgICAgICAgaWYgKHBhcnNlZC5uYW1lKSB7CisgICAgICAgICAgICBkZXBzLnB1c2go
cGFyc2VkLm5hbWUpOworICAgICAgICB9IGVsc2UgaWYgKHBhcnNlZC50eXBlID09PSAiaW5jbHVk
ZXMiKSB7CisgICAgICAgICAgICBkZXBzLnB1c2gocGFyc2VkLnRhcmdldCk7CisgICAgICAgICAg
ICBkZXBzLnB1c2gocGFyc2VkLmluY2x1ZGVzKTsKKyAgICAgICAgfQorCisgICAgICAgIGRlcHMg
PSBkZXBzLmZpbHRlcihmdW5jdGlvbihuYW1lKSB7CisgICAgICAgICAgICBpZiAoIW5hbWUKKyAg
ICAgICAgICAgICAgICB8fCBuYW1lID09PSBwYXJzZWQubmFtZSAmJiBkZWZpbmVkX29yX3VudGVz
dGVkKG5hbWUpCisgICAgICAgICAgICAgICAgfHwgIWFsbF9kZXBzLmhhcyhuYW1lKSkgeworICAg
ICAgICAgICAgICAgIC8vIEZsYWcgYXMgc2tpcHBlZCwgaWYgaXQncyBub3QgYWxyZWFkeSBwcm9j
ZXNzZWQsIHNvIHdlIGNhbgorICAgICAgICAgICAgICAgIC8vIGNvbWUgYmFjayB0byBpdCBsYXRl
ciBpZiB3ZSByZXRyb3NwZWN0aXZlbHkgY2FsbCBpdCBhIGRlcC4KKyAgICAgICAgICAgICAgICBp
ZiAobmFtZSAmJiAhKG5hbWUgaW4gdGhpcy5tZW1iZXJzKSkgeworICAgICAgICAgICAgICAgICAg
ICB0aGlzLnNraXBwZWQuaGFzKG5hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICA/IHRoaXMu
c2tpcHBlZC5nZXQobmFtZSkucHVzaChwYXJzZWQpCisgICAgICAgICAgICAgICAgICAgICAgICA6
IHRoaXMuc2tpcHBlZC5zZXQobmFtZSwgW3BhcnNlZF0pOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgfS5iaW5kKHRoaXMpKTsKKworICAgICAgICBkZXBzLmZvckVh
Y2goZnVuY3Rpb24obmFtZSkgeworICAgICAgICAgICAgaWYgKCFuZXdfb3B0aW9ucy5vbmx5Lmlu
Y2x1ZGVzKG5hbWUpKSB7CisgICAgICAgICAgICAgICAgbmV3X29wdGlvbnMub25seS5wdXNoKG5h
bWUpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjb25zdCBmb2xsb3dfdXAgPSBuZXcg
U2V0KCk7CisgICAgICAgICAgICBmb3IgKGNvbnN0IGRlcF90eXBlIG9mIFsiaW5oZXJpdGFuY2Ui
LCAiaW5jbHVkZXMiXSkgeworICAgICAgICAgICAgICAgIGlmIChwYXJzZWRbZGVwX3R5cGVdKSB7
CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGluaGVyaXRpbmcgPSBwYXJzZWRbZGVwX3R5cGVd
OworICAgICAgICAgICAgICAgICAgICBjb25zdCBpbmhlcml0b3IgPSBwYXJzZWQubmFtZSB8fCBw
YXJzZWQudGFyZ2V0OworICAgICAgICAgICAgICAgICAgICBjb25zdCBkZXBzID0gW2luaGVyaXRp
bmddOworICAgICAgICAgICAgICAgICAgICAvLyBGb3IgQSBpbmNsdWRlcyBCLCB3ZSBjYW4gaWdu
b3JlIEEsIHVubGVzcyBCIChvciBzb21lIG9mIGl0cworICAgICAgICAgICAgICAgICAgICAvLyBt
ZW1iZXJzKSBpcyBiZWluZyB0ZXN0ZWQuCisgICAgICAgICAgICAgICAgICAgIGlmIChkZXBfdHlw
ZSAhPT0gImluY2x1ZGVzIgorICAgICAgICAgICAgICAgICAgICAgICAgfHwgaW5oZXJpdGluZyBp
biB0aGlzLm1lbWJlcnMgJiYgIXRoaXMubWVtYmVyc1tpbmhlcml0aW5nXS51bnRlc3RlZAorICAg
ICAgICAgICAgICAgICAgICAgICAgfHwgdGhpcy5wYXJ0aWFscy5zb21lKGZ1bmN0aW9uKHApIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHAubmFtZSA9PT0gaW5oZXJp
dGluZzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgZGVwcy5wdXNoKGluaGVyaXRvcik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBkZXAgb2YgZGVwcykgeworICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCFuZXdfb3B0aW9ucy5vbmx5LmluY2x1ZGVzKGRlcCkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBuZXdfb3B0aW9ucy5vbmx5LnB1c2goZGVwKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGFsbF9kZXBzLmFk
ZChkZXApOworICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93X3VwLmFkZChkZXApOworICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBmb3IgKGNvbnN0IGRlZmVycmVkIG9mIGZvbGxvd191cCkgeworICAgICAgICAg
ICAgICAgIGlmICh0aGlzLnNraXBwZWQuaGFzKGRlZmVycmVkKSkgeworICAgICAgICAgICAgICAg
ICAgICBjb25zdCBuZXh0ID0gdGhpcy5za2lwcGVkLmdldChkZWZlcnJlZCk7CisgICAgICAgICAg
ICAgICAgICAgIHRoaXMuc2tpcHBlZC5kZWxldGUoZGVmZXJyZWQpOworICAgICAgICAgICAgICAg
ICAgICBuZXh0LmZvckVhY2gocHJvY2Vzcyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfQorICAgICAgICB9LmJpbmQodGhpcykpOworICAgIH0uYmluZCh0aGlzKTsKKworICAgIGZv
ciAobGV0IHBhcnNlZCBvZiBwYXJzZWRfaWRscykgeworICAgICAgICBwcm9jZXNzKHBhcnNlZCk7
CisgICAgfQorCisgICAgdGhpcy5tYXJrX2FzX3VudGVzdGVkKHBhcnNlZF9pZGxzKTsKKworICAg
IGlmIChuZXdfb3B0aW9ucy5vbmx5Lmxlbmd0aCkgeworICAgICAgICB0aGlzLmludGVybmFsX2Fk
ZF9pZGxzKHBhcnNlZF9pZGxzLCBuZXdfb3B0aW9ucyk7CisgICAgfQorfQorCitJZGxBcnJheS5w
cm90b3R5cGUuaW50ZXJuYWxfYWRkX2lkbHMgPSBmdW5jdGlvbihwYXJzZWRfaWRscywgb3B0aW9u
cykKIHsKICAgICAvKioKICAgICAgKiBJbnRlcm5hbCBoZWxwZXIgY2FsbGVkIGJ5IGFkZF9pZGxz
KCkgYW5kIGFkZF91bnRlc3RlZF9pZGxzKCkuCisgICAgICoKICAgICAgKiBwYXJzZWRfaWRscyBp
cyBhbiBhcnJheSBvZiBvYmplY3RzIHRoYXQgY29tZSBmcm9tIFdlYklETFBhcnNlci5qcydzCiAg
ICAgICogImRlZmluaXRpb25zIiBwcm9kdWN0aW9uLiAgVGhlIGFkZF91bnRlc3RlZF9pZGxzKCkg
ZW50cnkgcG9pbnQKICAgICAgKiBhZGRpdGlvbmFsbHkgc2V0cyBhbiAudW50ZXN0ZWQgcHJvcGVy
dHkgb24gZWFjaCBvYmplY3QgKGFuZCBpdHMKICAgICAgKiAubWVtYmVycykgc28gdGhhdCB0aGV5
J2xsIGJlIHNraXBwZWQgYnkgdGVzdCgpIC0tIHRoZXknbGwgb25seSBiZQogICAgICAqIHVzZWQg
Zm9yIGJhc2UgaW50ZXJmYWNlcyBvZiB0ZXN0ZWQgaW50ZXJmYWNlcywgcmV0dXJuIHR5cGVzLCBl
dGMuCisgICAgICoKKyAgICAgKiBvcHRpb25zIGlzIGEgZGljdGlvbmFyeSB0aGF0IGNhbiBoYXZl
IGFuIG9ubHkgb3IgZXhjZXB0IG1lbWJlciB3aGljaCBhcmUKKyAgICAgKiBhcnJheXMuIElmIG9u
bHkgaXMgZ2l2ZW4gdGhlbiBvbmx5IG1lbWJlcnMsIHBhcnRpYWxzIGFuZCBpbnRlcmZhY2UKKyAg
ICAgKiB0YXJnZXRzIGxpc3RlZCB3aWxsIGJlIGFkZGVkLCBhbmQgaWYgZXhjZXB0IGlzIGdpdmVu
IG9ubHkgdGhvc2UgdGhhdAorICAgICAqIGFyZW4ndCBsaXN0ZWQgd2lsbCBiZSBhZGRlZC4gT25s
eSBvbmUgb2Ygb25seSBhbmQgZXhjZXB0IGNhbiBiZSB1c2VkLgogICAgICAqLworCisgICAgaWYg
KG9wdGlvbnMgJiYgb3B0aW9ucy5vbmx5ICYmIG9wdGlvbnMuZXhjZXB0KQorICAgIHsKKyAgICAg
ICAgdGhyb3cgbmV3IElkbEhhcm5lc3NFcnJvcigiVGhlIG9ubHkgYW5kIGV4Y2VwdCBvcHRpb25z
IGNhbid0IGJlIHVzZWQgdG9nZXRoZXIuIik7CisgICAgfQorCisgICAgdmFyIHNob3VsZF9za2lw
ID0gbmFtZSA9PiB7CisgICAgICAgIHJldHVybiB0aGlzLmlzX2V4Y2x1ZGVkX2J5X29wdGlvbnMo
bmFtZSwgb3B0aW9ucyk7CisgICAgfQorCiAgICAgcGFyc2VkX2lkbHMuZm9yRWFjaChmdW5jdGlv
bihwYXJzZWRfaWRsKQogICAgIHsKLSAgICAgICAgaWYgKHBhcnNlZF9pZGwudHlwZSA9PSAiaW50
ZXJmYWNlIiAmJiBwYXJzZWRfaWRsLnBhcnRpYWwpCisgICAgICAgIHZhciBwYXJ0aWFsX3R5cGVz
ID0gWworICAgICAgICAgICAgImludGVyZmFjZSIsCisgICAgICAgICAgICAiaW50ZXJmYWNlIG1p
eGluIiwKKyAgICAgICAgICAgICJkaWN0aW9uYXJ5IiwKKyAgICAgICAgICAgICJuYW1lc3BhY2Ui
LAorICAgICAgICBdOworICAgICAgICBpZiAocGFyc2VkX2lkbC5wYXJ0aWFsICYmIHBhcnRpYWxf
dHlwZXMuaW5jbHVkZXMocGFyc2VkX2lkbC50eXBlKSkKICAgICAgICAgeworICAgICAgICAgICAg
aWYgKHNob3VsZF9za2lwKHBhcnNlZF9pZGwubmFtZSkpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQogICAgICAgICAgICAgdGhpcy5wYXJ0aWFs
cy5wdXNoKHBhcnNlZF9pZGwpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAg
ICAgICAgaWYgKHBhcnNlZF9pZGwudHlwZSA9PSAiaW1wbGVtZW50cyIpCisgICAgICAgIGlmIChw
YXJzZWRfaWRsLnR5cGUgPT0gImluY2x1ZGVzIikKICAgICAgICAgewotICAgICAgICAgICAgaWYg
KCEocGFyc2VkX2lkbC50YXJnZXQgaW4gdGhpc1siaW1wbGVtZW50cyJdKSkKKyAgICAgICAgICAg
IGlmIChzaG91bGRfc2tpcChwYXJzZWRfaWRsLnRhcmdldCkpCiAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgdGhpc1siaW1wbGVtZW50cyJdW3BhcnNlZF9pZGwudGFyZ2V0XSA9IFtdOwor
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRoaXNb
ImltcGxlbWVudHMiXVtwYXJzZWRfaWRsLnRhcmdldF0ucHVzaChwYXJzZWRfaWRsWyJpbXBsZW1l
bnRzIl0pOworICAgICAgICAgICAgdGhpcy5pbmNsdWRlcy5wdXNoKHBhcnNlZF9pZGwpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgcGFyc2VkX2lkbC5hcnJheSA9
IHRoaXM7CisgICAgICAgIGlmIChzaG91bGRfc2tpcChwYXJzZWRfaWRsLm5hbWUpKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICAgICAgaWYgKHBhcnNlZF9p
ZGwubmFtZSBpbiB0aGlzLm1lbWJlcnMpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHRocm93ICJE
dXBsaWNhdGUgaWRlbnRpZmllciAiICsgcGFyc2VkX2lkbC5uYW1lOworICAgICAgICAgICAgdGhy
b3cgbmV3IElkbEhhcm5lc3NFcnJvcigiRHVwbGljYXRlIGlkZW50aWZpZXIgIiArIHBhcnNlZF9p
ZGwubmFtZSk7CiAgICAgICAgIH0KKwogICAgICAgICBzd2l0Y2gocGFyc2VkX2lkbC50eXBlKQog
ICAgICAgICB7CiAgICAgICAgIGNhc2UgImludGVyZmFjZSI6CiAgICAgICAgICAgICB0aGlzLm1l
bWJlcnNbcGFyc2VkX2lkbC5uYW1lXSA9Ci0gICAgICAgICAgICAgICAgbmV3IElkbEludGVyZmFj
ZShwYXJzZWRfaWRsLCAvKiBpc19jYWxsYmFjayA9ICovIGZhbHNlKTsKKyAgICAgICAgICAgICAg
ICBuZXcgSWRsSW50ZXJmYWNlKHBhcnNlZF9pZGwsIC8qIGlzX2NhbGxiYWNrID0gKi8gZmFsc2Us
IC8qIGlzX21peGluID0gKi8gZmFsc2UpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
Y2FzZSAiaW50ZXJmYWNlIG1peGluIjoKKyAgICAgICAgICAgIHRoaXMubWVtYmVyc1twYXJzZWRf
aWRsLm5hbWVdID0KKyAgICAgICAgICAgICAgICBuZXcgSWRsSW50ZXJmYWNlKHBhcnNlZF9pZGws
IC8qIGlzX2NhbGxiYWNrID0gKi8gZmFsc2UsIC8qIGlzX21peGluID0gKi8gdHJ1ZSk7CiAgICAg
ICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlICJkaWN0aW9uYXJ5IjoKQEAgLTI0Nyw4ICs0
NjAsNyBAQCBJZGxBcnJheS5wcm90b3R5cGUuaW50ZXJuYWxfYWRkX2lkbHMgPSBmdW5jdGlvbihw
YXJzZWRfaWRscykKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgImNhbGxiYWNr
IjoKLSAgICAgICAgICAgIC8vIFRPRE8KLSAgICAgICAgICAgIGNvbnNvbGUubG9nKCJjYWxsYmFj
ayBub3QgeWV0IHN1cHBvcnRlZCIpOworICAgICAgICAgICAgdGhpcy5tZW1iZXJzW3BhcnNlZF9p
ZGwubmFtZV0gPSBuZXcgSWRsQ2FsbGJhY2socGFyc2VkX2lkbCk7CiAgICAgICAgICAgICBicmVh
azsKIAogICAgICAgICBjYXNlICJlbnVtIjoKQEAgLTI1Nyw3ICs0NjksMTEgQEAgSWRsQXJyYXku
cHJvdG90eXBlLmludGVybmFsX2FkZF9pZGxzID0gZnVuY3Rpb24ocGFyc2VkX2lkbHMpCiAKICAg
ICAgICAgY2FzZSAiY2FsbGJhY2sgaW50ZXJmYWNlIjoKICAgICAgICAgICAgIHRoaXMubWVtYmVy
c1twYXJzZWRfaWRsLm5hbWVdID0KLSAgICAgICAgICAgICAgICBuZXcgSWRsSW50ZXJmYWNlKHBh
cnNlZF9pZGwsIC8qIGlzX2NhbGxiYWNrID0gKi8gdHJ1ZSk7CisgICAgICAgICAgICAgICAgbmV3
IElkbEludGVyZmFjZShwYXJzZWRfaWRsLCAvKiBpc19jYWxsYmFjayA9ICovIHRydWUsIC8qIGlz
X21peGluID0gKi8gZmFsc2UpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAi
bmFtZXNwYWNlIjoKKyAgICAgICAgICAgIHRoaXMubWVtYmVyc1twYXJzZWRfaWRsLm5hbWVdID0g
bmV3IElkbE5hbWVzcGFjZShwYXJzZWRfaWRsKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAg
ICAgIGRlZmF1bHQ6CkBAIC0yNjYsOSArNDgyLDcgQEAgSWRsQXJyYXkucHJvdG90eXBlLmludGVy
bmFsX2FkZF9pZGxzID0gZnVuY3Rpb24ocGFyc2VkX2lkbHMpCiAgICAgfS5iaW5kKHRoaXMpKTsK
IH07CiAKLS8vQH0KIElkbEFycmF5LnByb3RvdHlwZS5hZGRfb2JqZWN0cyA9IGZ1bmN0aW9uKGRp
Y3QpCi0vL0B7CiB7CiAgICAgLyoqIEVudHJ5IHBvaW50LiAgU2VlIGRvY3VtZW50YXRpb24gYXQg
YmVnaW5uaW5nIG9mIGZpbGUuICovCiAgICAgZm9yICh2YXIgayBpbiBkaWN0KQpAQCAtMjg0LDEx
MSArNDk4LDIyMyBAQCBJZGxBcnJheS5wcm90b3R5cGUuYWRkX29iamVjdHMgPSBmdW5jdGlvbihk
aWN0KQogICAgIH0KIH07CiAKLS8vQH0KIElkbEFycmF5LnByb3RvdHlwZS5wcmV2ZW50X211bHRp
cGxlX3Rlc3RpbmcgPSBmdW5jdGlvbihuYW1lKQotLy9AewogewogICAgIC8qKiBFbnRyeSBwb2lu
dC4gIFNlZSBkb2N1bWVudGF0aW9uIGF0IGJlZ2lubmluZyBvZiBmaWxlLiAqLwogICAgIHRoaXMu
bWVtYmVyc1tuYW1lXS5wcmV2ZW50X211bHRpcGxlX3Rlc3RpbmcgPSB0cnVlOwogfTsKIAotLy9A
fQotSWRsQXJyYXkucHJvdG90eXBlLnJlY3Vyc2l2ZWx5X2dldF9pbXBsZW1lbnRzID0gZnVuY3Rp
b24oaW50ZXJmYWNlX25hbWUpCi0vL0B7CitJZGxBcnJheS5wcm90b3R5cGUuaXNfanNvbl90eXBl
ID0gZnVuY3Rpb24odHlwZSkKIHsKICAgICAvKioKLSAgICAgKiBIZWxwZXIgZnVuY3Rpb24gZm9y
IHRlc3QoKS4gIFJldHVybnMgYW4gYXJyYXkgb2YgdGhpbmdzIHRoYXQgaW1wbGVtZW50Ci0gICAg
ICogaW50ZXJmYWNlX25hbWUsIHNvIGlmIHRoZSBJREwgY29udGFpbnMKLSAgICAgKgotICAgICAq
ICAgQSBpbXBsZW1lbnRzIEI7Ci0gICAgICogICBCIGltcGxlbWVudHMgQzsKLSAgICAgKiAgIEIg
aW1wbGVtZW50cyBEOwotICAgICAqCi0gICAgICogdGhlbiByZWN1cnNpdmVseV9nZXRfaW1wbGVt
ZW50cygiQSIpIHNob3VsZCByZXR1cm4gWyJCIiwgIkMiLCAiRCJdLgorICAgICAqIENoZWNrcyB3
aGV0aGVyIHR5cGUgaXMgYSBKU09OIHR5cGUgYXMgcGVyCisgICAgICogaHR0cHM6Ly9oZXljYW0u
Z2l0aHViLmlvL3dlYmlkbC8jZGZuLWpzb24tdHlwZXMKICAgICAgKi8KLSAgICB2YXIgcmV0ID0g
dGhpc1siaW1wbGVtZW50cyJdW2ludGVyZmFjZV9uYW1lXTsKLSAgICBpZiAocmV0ID09PSB1bmRl
ZmluZWQpCi0gICAgewotICAgICAgICByZXR1cm4gW107CisKKyAgICB2YXIgaWRsVHlwZSA9IHR5
cGUuaWRsVHlwZTsKKworICAgIGlmICh0eXBlLmdlbmVyaWMgPT0gIlByb21pc2UiKSB7IHJldHVy
biBmYWxzZTsgfQorCisgICAgLy8gIG51bGxhYmxlIGFuZCBhbm5vdGF0ZWQgdHlwZXMgZG9uJ3Qg
bmVlZCB0byBiZSBoYW5kbGVkIHNlcGFyYXRlbHksCisgICAgLy8gIGFzIHdlYmlkbDIgZG9lc24n
dCByZXByZXNlbnQgdGhlbSB3cmFwcGVkLXVwIChhcyB0aGV5J3JlIGRlc2NyaWJlZAorICAgIC8v
ICBpbiBXZWJJREwpLgorCisgICAgLy8gdW5pb24gYW5kIHJlY29yZCB0eXBlcworICAgIGlmICh0
eXBlLnVuaW9uIHx8IHR5cGUuZ2VuZXJpYyA9PSAicmVjb3JkIikgeworICAgICAgICByZXR1cm4g
aWRsVHlwZS5ldmVyeSh0aGlzLmlzX2pzb25fdHlwZSwgdGhpcyk7CisgICAgfQorCisgICAgLy8g
c2VxdWVuY2UgdHlwZXMKKyAgICBpZiAodHlwZS5nZW5lcmljID09ICJzZXF1ZW5jZSIgfHwgdHlw
ZS5nZW5lcmljID09ICJGcm96ZW5BcnJheSIpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuaXNfanNv
bl90eXBlKGlkbFR5cGVbMF0pOwogICAgIH0KLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXNb
ImltcGxlbWVudHMiXVtpbnRlcmZhY2VfbmFtZV0ubGVuZ3RoOyBpKyspCisKKyAgICBpZiAodHlw
ZW9mIGlkbFR5cGUgIT0gInN0cmluZyIpIHsgdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIHR5
cGUgIiArIEpTT04uc3RyaW5naWZ5KGlkbFR5cGUpKTsgfQorCisgICAgc3dpdGNoIChpZGxUeXBl
KQogICAgIHsKLSAgICAgICAgcmV0ID0gcmV0LmNvbmNhdCh0aGlzLnJlY3Vyc2l2ZWx5X2dldF9p
bXBsZW1lbnRzKHJldFtpXSkpOwotICAgICAgICBpZiAocmV0LmluZGV4T2YocmV0W2ldKSAhPSBy
ZXQubGFzdEluZGV4T2YocmV0W2ldKSkKLSAgICAgICAgewotICAgICAgICAgICAgdGhyb3cgIkNp
cmN1bGFyIGltcGxlbWVudHMgc3RhdGVtZW50cyBpbnZvbHZpbmcgIiArIHJldFtpXTsKLSAgICAg
ICAgfQorICAgICAgIC8vICBOdW1lcmljIHR5cGVzCisgICAgICAgY2FzZSAiYnl0ZSI6CisgICAg
ICAgY2FzZSAib2N0ZXQiOgorICAgICAgIGNhc2UgInNob3J0IjoKKyAgICAgICBjYXNlICJ1bnNp
Z25lZCBzaG9ydCI6CisgICAgICAgY2FzZSAibG9uZyI6CisgICAgICAgY2FzZSAidW5zaWduZWQg
bG9uZyI6CisgICAgICAgY2FzZSAibG9uZyBsb25nIjoKKyAgICAgICBjYXNlICJ1bnNpZ25lZCBs
b25nIGxvbmciOgorICAgICAgIGNhc2UgImZsb2F0IjoKKyAgICAgICBjYXNlICJkb3VibGUiOgor
ICAgICAgIGNhc2UgInVucmVzdHJpY3RlZCBmbG9hdCI6CisgICAgICAgY2FzZSAidW5yZXN0cmlj
dGVkIGRvdWJsZSI6CisgICAgICAgLy8gYm9vbGVhbgorICAgICAgIGNhc2UgImJvb2xlYW4iOgor
ICAgICAgIC8vIHN0cmluZyB0eXBlcworICAgICAgIGNhc2UgIkRPTVN0cmluZyI6CisgICAgICAg
Y2FzZSAiQnl0ZVN0cmluZyI6CisgICAgICAgY2FzZSAiVVNWU3RyaW5nIjoKKyAgICAgICAvLyBv
YmplY3QgdHlwZQorICAgICAgIGNhc2UgIm9iamVjdCI6CisgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgIGNhc2UgIkVycm9yIjoKKyAgICAgICBjYXNlICJET01FeGNlcHRpb24iOgorICAg
ICAgIGNhc2UgIkludDhBcnJheSI6CisgICAgICAgY2FzZSAiSW50MTZBcnJheSI6CisgICAgICAg
Y2FzZSAiSW50MzJBcnJheSI6CisgICAgICAgY2FzZSAiVWludDhBcnJheSI6CisgICAgICAgY2Fz
ZSAiVWludDE2QXJyYXkiOgorICAgICAgIGNhc2UgIlVpbnQzMkFycmF5IjoKKyAgICAgICBjYXNl
ICJVaW50OENsYW1wZWRBcnJheSI6CisgICAgICAgY2FzZSAiRmxvYXQzMkFycmF5IjoKKyAgICAg
ICBjYXNlICJGbG9hdDY0QXJyYXkiOgorICAgICAgIGNhc2UgIkFycmF5QnVmZmVyIjoKKyAgICAg
ICBjYXNlICJEYXRhVmlldyI6CisgICAgICAgY2FzZSAiYW55IjoKKyAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgIHZhciB0aGluZyA9IHRoaXMubWVt
YmVyc1tpZGxUeXBlXTsKKyAgICAgICAgICAgaWYgKCF0aGluZykgeyB0aHJvdyBuZXcgRXJyb3Io
IlR5cGUgIiArIGlkbFR5cGUgKyAiIG5vdCBmb3VuZCIpOyB9CisgICAgICAgICAgIGlmICh0aGlu
ZyBpbnN0YW5jZW9mIElkbEVudW0pIHsgcmV0dXJuIHRydWU7IH0KKworICAgICAgICAgICBpZiAo
dGhpbmcgaW5zdGFuY2VvZiBJZGxUeXBlZGVmKSB7CisgICAgICAgICAgICAgICByZXR1cm4gdGhp
cy5pc19qc29uX3R5cGUodGhpbmcuaWRsVHlwZSk7CisgICAgICAgICAgIH0KKworICAgICAgICAg
ICAvLyAgZGljdGlvbmFyaWVzIHdoZXJlIGFsbCBvZiB0aGVpciBtZW1iZXJzIGFyZSBKU09OIHR5
cGVzCisgICAgICAgICAgIGlmICh0aGluZyBpbnN0YW5jZW9mIElkbERpY3Rpb25hcnkpIHsKKyAg
ICAgICAgICAgICAgIGNvbnN0IG1hcCA9IG5ldyBNYXAoKTsKKyAgICAgICAgICAgICAgIGZvciAo
Y29uc3QgZGljdCBvZiB0aGluZy5nZXRfcmV2ZXJzZV9pbmhlcml0YW5jZV9zdGFjaygpKSB7Cisg
ICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBtIG9mIGRpY3QubWVtYmVycykgeworICAgICAg
ICAgICAgICAgICAgICAgICBtYXAuc2V0KG0ubmFtZSwgbS5pZGxUeXBlKTsKKyAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICByZXR1cm4gQXJyYXku
ZnJvbShtYXAudmFsdWVzKCkpLmV2ZXJ5KHRoaXMuaXNfanNvbl90eXBlLCB0aGlzKTsKKyAgICAg
ICAgICAgfQorCisgICAgICAgICAgIC8vICBpbnRlcmZhY2UgdHlwZXMgdGhhdCBoYXZlIGEgdG9K
U09OIG9wZXJhdGlvbiBkZWNsYXJlZCBvbiB0aGVtc2VsdmVzIG9yCisgICAgICAgICAgIC8vICBv
bmUgb2YgdGhlaXIgaW5oZXJpdGVkIGludGVyZmFjZXMuCisgICAgICAgICAgIGlmICh0aGluZyBp
bnN0YW5jZW9mIElkbEludGVyZmFjZSkgeworICAgICAgICAgICAgICAgdmFyIGJhc2U7CisgICAg
ICAgICAgICAgICB3aGlsZSAodGhpbmcpCisgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgaWYgKHRoaW5nLmhhc190b19qc29uX3JlZ3VsYXJfb3BlcmF0aW9uKCkpIHsgcmV0dXJu
IHRydWU7IH0KKyAgICAgICAgICAgICAgICAgICB2YXIgbWl4aW5zID0gdGhpcy5pbmNsdWRlc1t0
aGluZy5uYW1lXTsKKyAgICAgICAgICAgICAgICAgICBpZiAobWl4aW5zKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgIG1peGlucyA9IG1peGlucy5tYXAoZnVuY3Rpb24oaWQpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZhciBtaXhpbiA9IHRoaXMubWVtYmVyc1tpZF07CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoIW1peGluKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJJbnRlcmZhY2UgIiArIGlkICsgIiBub3QgZm91bmQg
KGltcGxlbWVudGVkIGJ5ICIgKyB0aGluZy5uYW1lICsgIikiKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtaXhpbjsKKyAg
ICAgICAgICAgICAgICAgICAgICAgfSwgdGhpcyk7CisgICAgICAgICAgICAgICAgICAgICAgIGlm
IChtaXhpbnMuc29tZShmdW5jdGlvbihtKSB7IHJldHVybiBtLmhhc190b19qc29uX3JlZ3VsYXJf
b3BlcmF0aW9uKCkgfSApKSB7IHJldHVybiB0cnVlOyB9CisgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgIGlmICghdGhpbmcuYmFzZSkgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICAgICAgICAgICAgICAgICBiYXNlID0gdGhpcy5tZW1iZXJzW3RoaW5nLmJhc2VdOworICAgICAg
ICAgICAgICAgICAgIGlmICghYmFzZSkgeworICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoIkludGVyZmFjZSAiICsgdGhpbmcuYmFzZSArICIgbm90IGZvdW5kIChpbmhlcml0
ZWQgYnkgIiArIHRoaW5nLm5hbWUgKyAiKSIpOworICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICB0aGluZyA9IGJhc2U7CisgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgIH0KKyAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KLSAgICByZXR1cm4gcmV0OwogfTsKIAorZnVuY3Rpb24gZXhwb3N1cmVfc2V0KG9i
amVjdCwgZGVmYXVsdF9zZXQpIHsKKyAgICB2YXIgZXhwb3NlZCA9IG9iamVjdC5leHRBdHRycyAm
JiBvYmplY3QuZXh0QXR0cnMuZmlsdGVyKGEgPT4gYS5uYW1lID09PSAiRXhwb3NlZCIpOworICAg
IGlmIChleHBvc2VkICYmIGV4cG9zZWQubGVuZ3RoID4gMSkgeworICAgICAgICB0aHJvdyBuZXcg
SWRsSGFybmVzc0Vycm9yKAorICAgICAgICAgICAgYE11bHRpcGxlICdFeHBvc2VkJyBleHRlbmRl
ZCBhdHRyaWJ1dGVzIG9uICR7b2JqZWN0Lm5hbWV9YCk7CisgICAgfQorCisgICAgbGV0IHJlc3Vs
dCA9IGRlZmF1bHRfc2V0IHx8IFsiV2luZG93Il07CisgICAgaWYgKHJlc3VsdCAmJiAhKHJlc3Vs
dCBpbnN0YW5jZW9mIFNldCkpIHsKKyAgICAgICAgcmVzdWx0ID0gbmV3IFNldChyZXN1bHQpOwor
ICAgIH0KKyAgICBpZiAoZXhwb3NlZCAmJiBleHBvc2VkLmxlbmd0aCkgeworICAgICAgICBjb25z
dCB7IHJocyB9ID0gZXhwb3NlZFswXTsKKyAgICAgICAgLy8gQ291bGQgYmUgYSBsaXN0IG9yIGEg
c3RyaW5nLgorICAgICAgICBjb25zdCBzZXQgPSByaHMudHlwZSA9PT0gImlkZW50aWZpZXItbGlz
dCIgPworICAgICAgICAgICAgcmhzLnZhbHVlLm1hcChpZCA9PiBpZC52YWx1ZSkgOgorICAgICAg
ICAgICAgWyByaHMudmFsdWUgXTsKKyAgICAgICAgcmVzdWx0ID0gbmV3IFNldChzZXQpOworICAg
IH0KKyAgICBpZiAocmVzdWx0ICYmIHJlc3VsdC5oYXMoIldvcmtlciIpKSB7CisgICAgICAgIHJl
c3VsdC5kZWxldGUoIldvcmtlciIpOworICAgICAgICByZXN1bHQuYWRkKCJEZWRpY2F0ZWRXb3Jr
ZXIiKTsKKyAgICAgICAgcmVzdWx0LmFkZCgiU2VydmljZVdvcmtlciIpOworICAgICAgICByZXN1
bHQuYWRkKCJTaGFyZWRXb3JrZXIiKTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwog
ZnVuY3Rpb24gZXhwb3NlZF9pbihnbG9iYWxzKSB7Ci0gICAgaWYgKCdkb2N1bWVudCcgaW4gc2Vs
ZikgewotICAgICAgICByZXR1cm4gZ2xvYmFscy5pbmRleE9mKCJXaW5kb3ciKSA+PSAwOworICAg
IGlmICgnV2luZG93JyBpbiBzZWxmKSB7CisgICAgICAgIHJldHVybiBnbG9iYWxzLmhhcygiV2lu
ZG93Iik7CiAgICAgfQogICAgIGlmICgnRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUnIGluIHNl
bGYgJiYKICAgICAgICAgc2VsZiBpbnN0YW5jZW9mIERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3Bl
KSB7Ci0gICAgICAgIHJldHVybiBnbG9iYWxzLmluZGV4T2YoIldvcmtlciIpID49IDAgfHwKLSAg
ICAgICAgICAgICAgIGdsb2JhbHMuaW5kZXhPZigiRGVkaWNhdGVkV29ya2VyIikgPj0gMDsKKyAg
ICAgICAgcmV0dXJuIGdsb2JhbHMuaGFzKCJEZWRpY2F0ZWRXb3JrZXIiKTsKICAgICB9CiAgICAg
aWYgKCdTaGFyZWRXb3JrZXJHbG9iYWxTY29wZScgaW4gc2VsZiAmJgogICAgICAgICBzZWxmIGlu
c3RhbmNlb2YgU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUpIHsKLSAgICAgICAgcmV0dXJuIGdsb2Jh
bHMuaW5kZXhPZigiV29ya2VyIikgPj0gMCB8fAotICAgICAgICAgICAgICAgZ2xvYmFscy5pbmRl
eE9mKCJTaGFyZWRXb3JrZXIiKSA+PSAwOworICAgICAgICByZXR1cm4gZ2xvYmFscy5oYXMoIlNo
YXJlZFdvcmtlciIpOwogICAgIH0KICAgICBpZiAoJ1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZScg
aW4gc2VsZiAmJgogICAgICAgICBzZWxmIGluc3RhbmNlb2YgU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlKSB7Ci0gICAgICAgIHJldHVybiBnbG9iYWxzLmluZGV4T2YoIldvcmtlciIpID49IDAgfHwK
LSAgICAgICAgICAgICAgIGdsb2JhbHMuaW5kZXhPZigiU2VydmljZVdvcmtlciIpID49IDA7Cisg
ICAgICAgIHJldHVybiBnbG9iYWxzLmhhcygiU2VydmljZVdvcmtlciIpOworICAgIH0KKyAgICB0
aHJvdyBuZXcgSWRsSGFybmVzc0Vycm9yKCJVbmV4cGVjdGVkIGdsb2JhbCBvYmplY3QiKTsKK30K
KworLyoqCisgKiBBc3NlcnRzIHRoYXQgdGhlIGdpdmVuIGVycm9yIG1lc3NhZ2UgaXMgdGhyb3du
IGZvciB0aGUgZ2l2ZW4gZnVuY3Rpb24uCisgKiBAcGFyYW0ge3N0cmluZ3xJZGxIYXJuZXNzRXJy
b3J9IGVycm9yIEV4cGVjdGVkIEVycm9yIG1lc3NhZ2UuCisgKiBAcGFyYW0ge0Z1bmN0aW9ufSBp
ZGxBcnJheUZ1bmMgRnVuY3Rpb24gb3BlcmF0aW5nIG9uIGFuIElkbEFycmF5IHRoYXQgc2hvdWxk
IHRocm93LgorICovCitJZGxBcnJheS5wcm90b3R5cGUuYXNzZXJ0X3Rocm93cyA9IGZ1bmN0aW9u
KGVycm9yLCBpZGxBcnJheUZ1bmMpCit7CisgICAgdHJ5IHsKKyAgICAgICAgaWRsQXJyYXlGdW5j
LmNhbGwodGhpcywgdGhpcyk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBpZiAoZSBpbnN0
YW5jZW9mIEFzc2VydGlvbkVycm9yKSB7CisgICAgICAgICAgICB0aHJvdyBlOworICAgICAgICB9
CisgICAgICAgIC8vIEFzc2VydGlvbnMgZm9yIGJlaGF2aW91ciBvZiB0aGUgaWRsaGFybmVzcy5q
cyBlbmdpbmUuCisgICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIElkbEhhcm5lc3NFcnJvcikg
eworICAgICAgICAgICAgZXJyb3IgPSBlcnJvci5tZXNzYWdlOworICAgICAgICB9CisgICAgICAg
IGlmIChlLm1lc3NhZ2UgIT09IGVycm9yKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWRsSGFy
bmVzc0Vycm9yKGAke2lkbEFycmF5RnVuY30gdGhyZXcgIiR7ZX0iLCBub3QgdGhlIGV4cGVjdGVk
IElkbEhhcm5lc3NFcnJvciAiJHtlcnJvcn0iYCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJu
OwogICAgIH0KLSAgICB0aHJvdyAiVW5leHBlY3RlZCBnbG9iYWwgb2JqZWN0IjsKKyAgICB0aHJv
dyBuZXcgSWRsSGFybmVzc0Vycm9yKGAke2lkbEFycmF5RnVuY30gZGlkIG5vdCB0aHJvdyB0aGUg
ZXhwZWN0ZWQgSWRsSGFybmVzc0Vycm9yYCk7CiB9CiAKLS8vQH0KIElkbEFycmF5LnByb3RvdHlw
ZS50ZXN0ID0gZnVuY3Rpb24oKQotLy9AewogewogICAgIC8qKiBFbnRyeSBwb2ludC4gIFNlZSBk
b2N1bWVudGF0aW9uIGF0IGJlZ2lubmluZyBvZiBmaWxlLiAqLwogCi0gICAgLy8gRmlyc3QgbWVy
Z2UgaW4gYWxsIHRoZSBwYXJ0aWFsIGludGVyZmFjZXMgYW5kIGltcGxlbWVudHMgc3RhdGVtZW50
cyB3ZQotICAgIC8vIGVuY291bnRlcmVkLgotICAgIHRoaXMucGFydGlhbHMuZm9yRWFjaChmdW5j
dGlvbihwYXJzZWRfaWRsKQotICAgIHsKLSAgICAgICAgaWYgKCEocGFyc2VkX2lkbC5uYW1lIGlu
IHRoaXMubWVtYmVycykKLSAgICAgICAgfHwgISh0aGlzLm1lbWJlcnNbcGFyc2VkX2lkbC5uYW1l
XSBpbnN0YW5jZW9mIElkbEludGVyZmFjZSkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRocm93
ICJQYXJ0aWFsIGludGVyZmFjZSAiICsgcGFyc2VkX2lkbC5uYW1lICsgIiB3aXRoIG5vIG9yaWdp
bmFsIGludGVyZmFjZSI7CisgICAgLy8gRmlyc3QgbWVyZ2UgaW4gYWxsIHBhcnRpYWwgZGVmaW5p
dGlvbnMgYW5kIGludGVyZmFjZSBtaXhpbnMuCisgICAgdGhpcy5tZXJnZV9wYXJ0aWFscygpOwor
ICAgIHRoaXMubWVyZ2VfbWl4aW5zKCk7CisKKyAgICAvLyBBc3NlcnQgQiBkZWZpbmVkIGZvciBB
IDogQgorICAgIGZvciAoY29uc3QgbWVtYmVyIG9mIE9iamVjdC52YWx1ZXModGhpcy5tZW1iZXJz
KS5maWx0ZXIobSA9PiBtLmJhc2UpKSB7CisgICAgICAgIGNvbnN0IGxocyA9IG1lbWJlci5uYW1l
OworICAgICAgICBjb25zdCByaHMgPSBtZW1iZXIuYmFzZTsKKyAgICAgICAgaWYgKCEocmhzIGlu
IHRoaXMubWVtYmVycykpIHRocm93IG5ldyBJZGxIYXJuZXNzRXJyb3IoYCR7bGhzfSBpbmhlcml0
cyAke3Joc30sIGJ1dCAke3Joc30gaXMgdW5kZWZpbmVkLmApOworICAgICAgICBjb25zdCBsaHNf
aXNfaW50ZXJmYWNlID0gdGhpcy5tZW1iZXJzW2xoc10gaW5zdGFuY2VvZiBJZGxJbnRlcmZhY2U7
CisgICAgICAgIGNvbnN0IHJoc19pc19pbnRlcmZhY2UgPSB0aGlzLm1lbWJlcnNbcmhzXSBpbnN0
YW5jZW9mIElkbEludGVyZmFjZTsKKyAgICAgICAgaWYgKHJoc19pc19pbnRlcmZhY2UgIT0gbGhz
X2lzX2ludGVyZmFjZSkgeworICAgICAgICAgICAgaWYgKCFsaHNfaXNfaW50ZXJmYWNlKSB0aHJv
dyBuZXcgSWRsSGFybmVzc0Vycm9yKGAke2xoc30gaW5oZXJpdHMgJHtyaHN9LCBidXQgJHtsaHN9
IGlzIG5vdCBhbiBpbnRlcmZhY2UuYCk7CisgICAgICAgICAgICBpZiAoIXJoc19pc19pbnRlcmZh
Y2UpIHRocm93IG5ldyBJZGxIYXJuZXNzRXJyb3IoYCR7bGhzfSBpbmhlcml0cyAke3Joc30sIGJ1
dCAke3Joc30gaXMgbm90IGFuIGludGVyZmFjZS5gKTsKICAgICAgICAgfQotICAgICAgICBpZiAo
cGFyc2VkX2lkbC5leHRBdHRycykKLSAgICAgICAgewotICAgICAgICAgICAgcGFyc2VkX2lkbC5l
eHRBdHRycy5mb3JFYWNoKGZ1bmN0aW9uKGV4dEF0dHIpCi0gICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgdGhpcy5tZW1iZXJzW3BhcnNlZF9pZGwubmFtZV0uZXh0QXR0cnMucHVzaChleHRB
dHRyKTsKLSAgICAgICAgICAgIH0uYmluZCh0aGlzKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcGFy
c2VkX2lkbC5tZW1iZXJzLmZvckVhY2goZnVuY3Rpb24obWVtYmVyKQotICAgICAgICB7Ci0gICAg
ICAgICAgICB0aGlzLm1lbWJlcnNbcGFyc2VkX2lkbC5uYW1lXS5tZW1iZXJzLnB1c2gobmV3IElk
bEludGVyZmFjZU1lbWJlcihtZW1iZXIpKTsKLSAgICAgICAgfS5iaW5kKHRoaXMpKTsKLSAgICB9
LmJpbmQodGhpcykpOwotICAgIHRoaXMucGFydGlhbHMgPSBbXTsKLQotICAgIGZvciAodmFyIGxo
cyBpbiB0aGlzWyJpbXBsZW1lbnRzIl0pCi0gICAgewotICAgICAgICB0aGlzLnJlY3Vyc2l2ZWx5
X2dldF9pbXBsZW1lbnRzKGxocykuZm9yRWFjaChmdW5jdGlvbihyaHMpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIHZhciBlcnJTdHIgPSBsaHMgKyAiIGltcGxlbWVudHMgIiArIHJocyArICIsIGJ1
dCAiOwotICAgICAgICAgICAgaWYgKCEobGhzIGluIHRoaXMubWVtYmVycykpIHRocm93IGVyclN0
ciArIGxocyArICIgaXMgdW5kZWZpbmVkLiI7Ci0gICAgICAgICAgICBpZiAoISh0aGlzLm1lbWJl
cnNbbGhzXSBpbnN0YW5jZW9mIElkbEludGVyZmFjZSkpIHRocm93IGVyclN0ciArIGxocyArICIg
aXMgbm90IGFuIGludGVyZmFjZS4iOwotICAgICAgICAgICAgaWYgKCEocmhzIGluIHRoaXMubWVt
YmVycykpIHRocm93IGVyclN0ciArIHJocyArICIgaXMgdW5kZWZpbmVkLiI7Ci0gICAgICAgICAg
ICBpZiAoISh0aGlzLm1lbWJlcnNbcmhzXSBpbnN0YW5jZW9mIElkbEludGVyZmFjZSkpIHRocm93
IGVyclN0ciArIHJocyArICIgaXMgbm90IGFuIGludGVyZmFjZS4iOwotICAgICAgICAgICAgdGhp
cy5tZW1iZXJzW3Joc10ubWVtYmVycy5mb3JFYWNoKGZ1bmN0aW9uKG1lbWJlcikKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICB0aGlzLm1lbWJlcnNbbGhzXS5tZW1iZXJzLnB1c2gobmV3
IElkbEludGVyZmFjZU1lbWJlcihtZW1iZXIpKTsKLSAgICAgICAgICAgIH0uYmluZCh0aGlzKSk7
Ci0gICAgICAgIH0uYmluZCh0aGlzKSk7CisgICAgICAgIC8vIENoZWNrIGZvciBjaXJjdWxhciBk
ZXBlbmRlbmNpZXMuCisgICAgICAgIG1lbWJlci5nZXRfcmV2ZXJzZV9pbmhlcml0YW5jZV9zdGFj
aygpOwogICAgIH0KLSAgICB0aGlzWyJpbXBsZW1lbnRzIl0gPSB7fTsKIAogICAgIE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMubWVtYmVycykuZm9yRWFjaChmdW5jdGlvbihtZW1iZXJO
YW1lKSB7CiAgICAgICAgIHZhciBtZW1iZXIgPSB0aGlzLm1lbWJlcnNbbWVtYmVyTmFtZV07CkBA
IC0zOTYsMTUgKzcyMiw5IEBAIElkbEFycmF5LnByb3RvdHlwZS50ZXN0ID0gZnVuY3Rpb24oKQog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgdmFyIGV4cG9zZWQgPSBt
ZW1iZXIuZXh0QXR0cnMuZmlsdGVyKGZ1bmN0aW9uKGEpIHsgcmV0dXJuIGEubmFtZSA9PSAiRXhw
b3NlZCIgfSk7Ci0gICAgICAgIGlmIChleHBvc2VkLmxlbmd0aCA+IDEpIHsKLSAgICAgICAgICAg
IHRocm93ICJVbmV4cGVjdGVkIEV4cG9zZWQgZXh0ZW5kZWQgYXR0cmlidXRlcyBvbiAiICsgbWVt
YmVyTmFtZSArICI6ICIgKyBleHBvc2VkOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIGdsb2Jh
bHMgPSBleHBvc2VkLmxlbmd0aCA9PT0gMQotICAgICAgICAgICAgICAgICAgICA/IGV4cG9zZWRb
MF0ucmhzLnZhbHVlCi0gICAgICAgICAgICAgICAgICAgIDogWyJXaW5kb3ciXTsKKyAgICAgICAg
dmFyIGdsb2JhbHMgPSBleHBvc3VyZV9zZXQobWVtYmVyKTsKICAgICAgICAgbWVtYmVyLmV4cG9z
ZWQgPSBleHBvc2VkX2luKGdsb2JhbHMpOworICAgICAgICBtZW1iZXIuZXhwb3N1cmVTZXQgPSBn
bG9iYWxzOwogICAgIH0uYmluZCh0aGlzKSk7CiAKICAgICAvLyBOb3cgcnVuIHRlc3QoKSBvbiBl
dmVyeSBtZW1iZXIsIGFuZCB0ZXN0X29iamVjdCgpIGZvciBldmVyeSBvYmplY3QuCkBAIC00MTMs
MTggKzczMywxOTQgQEAgSWRsQXJyYXkucHJvdG90eXBlLnRlc3QgPSBmdW5jdGlvbigpCiAgICAg
ICAgIHRoaXMubWVtYmVyc1tuYW1lXS50ZXN0KCk7CiAgICAgICAgIGlmIChuYW1lIGluIHRoaXMu
b2JqZWN0cykKICAgICAgICAgewotICAgICAgICAgICAgdGhpcy5vYmplY3RzW25hbWVdLmZvckVh
Y2goZnVuY3Rpb24oc3RyKQorICAgICAgICAgICAgY29uc3Qgb2JqZWN0cyA9IHRoaXMub2JqZWN0
c1tuYW1lXTsKKyAgICAgICAgICAgIGlmICghb2JqZWN0cyB8fCAhQXJyYXkuaXNBcnJheShvYmpl
Y3RzKSkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBJZGxIYXJuZXNzRXJyb3IoYEludmFs
aWQgb3IgZW1wdHkgb2JqZWN0cyBmb3IgbWVtYmVyICR7bmFtZX1gKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIG9iamVjdHMuZm9yRWFjaChmdW5jdGlvbihzdHIpCiAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgaWYgKCF0aGlzLm1lbWJlcnNbbmFtZV0gfHwgISh0aGlzLm1lbWJl
cnNbbmFtZV0gaW5zdGFuY2VvZiBJZGxJbnRlcmZhY2UpKSB7CisgICAgICAgICAgICAgICAgICAg
IHRocm93IG5ldyBJZGxIYXJuZXNzRXJyb3IoYEludmFsaWQgb2JqZWN0IG1lbWJlciBuYW1lICR7
bmFtZX1gKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgdGhpcy5tZW1iZXJz
W25hbWVdLnRlc3Rfb2JqZWN0KHN0cik7CiAgICAgICAgICAgICB9LmJpbmQodGhpcykpOwogICAg
ICAgICB9CiAgICAgfQogfTsKIAotLy9AfQorSWRsQXJyYXkucHJvdG90eXBlLm1lcmdlX3BhcnRp
YWxzID0gZnVuY3Rpb24oKQoreworICAgIGNvbnN0IHRlc3RlZFBhcnRpYWxzID0gbmV3IE1hcCgp
OworICAgIHRoaXMucGFydGlhbHMuZm9yRWFjaChmdW5jdGlvbihwYXJzZWRfaWRsKQorICAgIHsK
KyAgICAgICAgY29uc3Qgb3JpZ2luYWxFeGlzdHMgPSBwYXJzZWRfaWRsLm5hbWUgaW4gdGhpcy5t
ZW1iZXJzCisgICAgICAgICAgICAmJiAodGhpcy5tZW1iZXJzW3BhcnNlZF9pZGwubmFtZV0gaW5z
dGFuY2VvZiBJZGxJbnRlcmZhY2UKKyAgICAgICAgICAgICAgICB8fCB0aGlzLm1lbWJlcnNbcGFy
c2VkX2lkbC5uYW1lXSBpbnN0YW5jZW9mIElkbERpY3Rpb25hcnkKKyAgICAgICAgICAgICAgICB8
fCB0aGlzLm1lbWJlcnNbcGFyc2VkX2lkbC5uYW1lXSBpbnN0YW5jZW9mIElkbE5hbWVzcGFjZSk7
CisKKyAgICAgICAgLy8gRW5zdXJlIHVuaXF1ZSB0ZXN0IG5hbWUgaW4gY2FzZSBvZiBtdWx0aXBs
ZSBwYXJ0aWFscy4KKyAgICAgICAgbGV0IHBhcnRpYWxUZXN0TmFtZSA9IHBhcnNlZF9pZGwubmFt
ZTsKKyAgICAgICAgbGV0IHBhcnRpYWxUZXN0Q291bnQgPSAxOworICAgICAgICBpZiAodGVzdGVk
UGFydGlhbHMuaGFzKHBhcnNlZF9pZGwubmFtZSkpIHsKKyAgICAgICAgICAgIHBhcnRpYWxUZXN0
Q291bnQgKz0gdGVzdGVkUGFydGlhbHMuZ2V0KHBhcnNlZF9pZGwubmFtZSk7CisgICAgICAgICAg
ICBwYXJ0aWFsVGVzdE5hbWUgPSBgJHtwYXJ0aWFsVGVzdE5hbWV9WyR7cGFydGlhbFRlc3RDb3Vu
dH1dYDsKKyAgICAgICAgfQorICAgICAgICB0ZXN0ZWRQYXJ0aWFscy5zZXQocGFyc2VkX2lkbC5u
YW1lLCBwYXJ0aWFsVGVzdENvdW50KTsKKworICAgICAgICBpZiAoIXBhcnNlZF9pZGwudW50ZXN0
ZWQpIHsKKyAgICAgICAgICAgIHRlc3QoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGFz
c2VydF90cnVlKG9yaWdpbmFsRXhpc3RzLCBgT3JpZ2luYWwgJHtwYXJzZWRfaWRsLnR5cGV9IHNo
b3VsZCBiZSBkZWZpbmVkYCk7CisKKyAgICAgICAgICAgICAgICB2YXIgZXhwZWN0ZWQ7CisgICAg
ICAgICAgICAgICAgc3dpdGNoIChwYXJzZWRfaWRsLnR5cGUpIHsKKyAgICAgICAgICAgICAgICAg
ICAgY2FzZSAnZGljdGlvbmFyeSc6IGV4cGVjdGVkID0gSWRsRGljdGlvbmFyeTsgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgICAgIGNhc2UgJ25hbWVzcGFjZSc6IGV4cGVjdGVkID0gSWRsTmFtZXNw
YWNlOyBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW50ZXJmYWNlJzoKKyAgICAg
ICAgICAgICAgICAgICAgY2FzZSAnaW50ZXJmYWNlIG1peGluJzoKKyAgICAgICAgICAgICAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkID0gSWRsSW50ZXJm
YWNlOyBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYXNzZXJ0X3Ry
dWUoCisgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9m
KHRoaXMubWVtYmVyc1twYXJzZWRfaWRsLm5hbWVdKSwKKyAgICAgICAgICAgICAgICAgICAgYE9y
aWdpbmFsICR7cGFyc2VkX2lkbC5uYW1lfSBkZWZpbml0aW9uIHNob3VsZCBoYXZlIHR5cGUgJHtw
YXJzZWRfaWRsLnR5cGV9YCk7CisgICAgICAgICAgICB9LmJpbmQodGhpcyksIGBQYXJ0aWFsICR7
cGFyc2VkX2lkbC50eXBlfSAke3BhcnRpYWxUZXN0TmFtZX06IG9yaWdpbmFsICR7cGFyc2VkX2lk
bC50eXBlfSBkZWZpbmVkYCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFvcmlnaW5hbEV4aXN0
cykgeworICAgICAgICAgICAgLy8gTm90IGdvb2QuLiBidXQga2VlcCBjYWxtIGFuZCBjYXJyeSBv
bi4KKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChwYXJzZWRf
aWRsLmV4dEF0dHJzKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBTcGVjaWFsLWNhc2UgIkV4
cG9zZWQiLiBNdXN0IGJlIGEgc3Vic2V0IG9mIG9yaWdpbmFsIGludGVyZmFjZSdzIGV4cG9zdXJl
LgorICAgICAgICAgICAgLy8gRXhwb3NlZCBvbiBhIHBhcnRpYWwgaXMgdGhlIGVxdWl2YWxlbnQg
b2YgaGF2aW5nIHRoZSBzYW1lIEV4cG9zZWQgb24gYWxsIG5lc3RlZCBtZW1iZXJzLgorICAgICAg
ICAgICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9oZXljYW0vd2ViaWRsL2lzc3Vlcy8xNTQg
Zm9yIGRpc2NyZXBlbmN5IGJldHdlZW4gRXhwb3NlZCBhbmQKKyAgICAgICAgICAgIC8vIG90aGVy
IGV4dGVuZGVkIGF0dHJpYnV0ZXMgb24gcGFydGlhbCBpbnRlcmZhY2VzLgorICAgICAgICAgICAg
Y29uc3QgZXhwb3N1cmVBdHRyID0gcGFyc2VkX2lkbC5leHRBdHRycy5maW5kKGEgPT4gYS5uYW1l
ID09PSAiRXhwb3NlZCIpOworICAgICAgICAgICAgaWYgKGV4cG9zdXJlQXR0cikgeworICAgICAg
ICAgICAgICAgIGlmICghcGFyc2VkX2lkbC51bnRlc3RlZCkgeworICAgICAgICAgICAgICAgICAg
ICB0ZXN0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcnRp
YWxFeHBvc3VyZSA9IGV4cG9zdXJlX3NldChwYXJzZWRfaWRsKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IG1lbWJlckV4cG9zdXJlID0gZXhwb3N1cmVfc2V0KHRoaXMubWVtYmVyc1tw
YXJzZWRfaWRsLm5hbWVdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpYWxFeHBvc3Vy
ZS5mb3JFYWNoKG5hbWUgPT4geworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbWVt
YmVyRXhwb3N1cmUgfHwgIW1lbWJlckV4cG9zdXJlLmhhcyhuYW1lKSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWRsSGFybmVzc0Vycm9yKAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYFBhcnRpYWwgJHtwYXJzZWRfaWRsLm5hbWV9ICR7
cGFyc2VkX2lkbC50eXBlfSBpcyBleHBvc2VkIHRvICcke25hbWV9JywgdGhlIG9yaWdpbmFsICR7
cGFyc2VkX2lkbC50eXBlfSBpcyBub3QuYCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgIH0uYmlu
ZCh0aGlzKSwgYFBhcnRpYWwgJHtwYXJzZWRfaWRsLnR5cGV9ICR7cGFydGlhbFRlc3ROYW1lfTog
dmFsaWQgZXhwb3N1cmUgc2V0YCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IHBhcnNlZF9pZGwubWVtYmVycy5mb3JFYWNoKGZ1bmN0aW9uIChtZW1iZXIpIHsKKyAgICAgICAg
ICAgICAgICAgICAgbWVtYmVyLmV4dEF0dHJzLnB1c2goZXhwb3N1cmVBdHRyKTsKKyAgICAgICAg
ICAgICAgICB9LmJpbmQodGhpcykpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBwYXJz
ZWRfaWRsLmV4dEF0dHJzLmZvckVhY2goZnVuY3Rpb24oZXh0QXR0cikKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAvLyAiRXhwb3NlZCIgYWxyZWFkeSBoYW5kbGVkIGFib3ZlLgorICAg
ICAgICAgICAgICAgIGlmIChleHRBdHRyLm5hbWUgPT09ICJFeHBvc2VkIikgeworICAgICAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHRo
aXMubWVtYmVyc1twYXJzZWRfaWRsLm5hbWVdLmV4dEF0dHJzLnB1c2goZXh0QXR0cik7CisgICAg
ICAgICAgICB9LmJpbmQodGhpcykpOworICAgICAgICB9CisgICAgICAgIGlmIChwYXJzZWRfaWRs
Lm1lbWJlcnMubGVuZ3RoKSB7CisgICAgICAgICAgICB0ZXN0KGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgICAgICAgICB2YXIgY2xhc2ggPSBwYXJzZWRfaWRsLm1lbWJlcnMuZmluZChmdW5jdGlvbiht
ZW1iZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubWVtYmVyc1twYXJzZWRf
aWRsLm5hbWVdLm1lbWJlcnMuZmluZChmdW5jdGlvbihtKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gdGhpcy5hcmVfZHVwbGljYXRlX21lbWJlcnMobSwgbWVtYmVyKTsKKyAgICAg
ICAgICAgICAgICAgICAgfS5iaW5kKHRoaXMpKTsKKyAgICAgICAgICAgICAgICB9LmJpbmQodGhp
cykpOworICAgICAgICAgICAgICAgIHBhcnNlZF9pZGwubWVtYmVycy5mb3JFYWNoKGZ1bmN0aW9u
KG1lbWJlcikKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHRoaXMubWVt
YmVyc1twYXJzZWRfaWRsLm5hbWVdLm1lbWJlcnMucHVzaChuZXcgSWRsSW50ZXJmYWNlTWVtYmVy
KG1lbWJlcikpOworICAgICAgICAgICAgICAgIH0uYmluZCh0aGlzKSk7CisgICAgICAgICAgICAg
ICAgYXNzZXJ0X3RydWUoIWNsYXNoLCAibWVtYmVyICIgKyAoY2xhc2ggJiYgY2xhc2gubmFtZSkg
KyAiIGlzIHVuaXF1ZSIpOworICAgICAgICAgICAgfS5iaW5kKHRoaXMpLCBgUGFydGlhbCAke3Bh
cnNlZF9pZGwudHlwZX0gJHtwYXJ0aWFsVGVzdE5hbWV9OiBtZW1iZXIgbmFtZXMgYXJlIHVuaXF1
ZWApOworICAgICAgICB9CisgICAgfS5iaW5kKHRoaXMpKTsKKyAgICB0aGlzLnBhcnRpYWxzID0g
W107Cit9CisKK0lkbEFycmF5LnByb3RvdHlwZS5tZXJnZV9taXhpbnMgPSBmdW5jdGlvbigpCit7
CisgICAgZm9yIChjb25zdCBwYXJzZWRfaWRsIG9mIHRoaXMuaW5jbHVkZXMpCisgICAgeworICAg
ICAgICBjb25zdCBsaHMgPSBwYXJzZWRfaWRsLnRhcmdldDsKKyAgICAgICAgY29uc3QgcmhzID0g
cGFyc2VkX2lkbC5pbmNsdWRlczsKKworICAgICAgICB2YXIgZXJyU3RyID0gbGhzICsgIiBpbmNs
dWRlcyAiICsgcmhzICsgIiwgYnV0ICI7CisgICAgICAgIGlmICghKGxocyBpbiB0aGlzLm1lbWJl
cnMpKSB0aHJvdyBlcnJTdHIgKyBsaHMgKyAiIGlzIHVuZGVmaW5lZC4iOworICAgICAgICBpZiAo
ISh0aGlzLm1lbWJlcnNbbGhzXSBpbnN0YW5jZW9mIElkbEludGVyZmFjZSkpIHRocm93IGVyclN0
ciArIGxocyArICIgaXMgbm90IGFuIGludGVyZmFjZS4iOworICAgICAgICBpZiAoIShyaHMgaW4g
dGhpcy5tZW1iZXJzKSkgdGhyb3cgZXJyU3RyICsgcmhzICsgIiBpcyB1bmRlZmluZWQuIjsKKyAg
ICAgICAgaWYgKCEodGhpcy5tZW1iZXJzW3Joc10gaW5zdGFuY2VvZiBJZGxJbnRlcmZhY2UpKSB0
aHJvdyBlcnJTdHIgKyByaHMgKyAiIGlzIG5vdCBhbiBpbnRlcmZhY2UuIjsKKworICAgICAgICBp
ZiAodGhpcy5tZW1iZXJzW3Joc10ubWVtYmVycy5sZW5ndGgpIHsKKyAgICAgICAgICAgIHRlc3Qo
ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHZhciBjbGFzaCA9IHRoaXMubWVtYmVyc1ty
aHNdLm1lbWJlcnMuZmluZChmdW5jdGlvbihtZW1iZXIpIHsKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHRoaXMubWVtYmVyc1tsaHNdLm1lbWJlcnMuZmluZChmdW5jdGlvbihtKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hcmVfZHVwbGljYXRlX21lbWJlcnMobSwg
bWVtYmVyKTsKKyAgICAgICAgICAgICAgICAgICAgfS5iaW5kKHRoaXMpKTsKKyAgICAgICAgICAg
ICAgICB9LmJpbmQodGhpcykpOworICAgICAgICAgICAgICAgIHRoaXMubWVtYmVyc1tyaHNdLm1l
bWJlcnMuZm9yRWFjaChmdW5jdGlvbihtZW1iZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgYXNz
ZXJ0X3RydWUoCisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1lbWJlcnNbbGhzXS5tZW1i
ZXJzLmV2ZXJ5KG0gPT4gIXRoaXMuYXJlX2R1cGxpY2F0ZV9tZW1iZXJzKG0sIG1lbWJlcikpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIm1lbWJlciAiICsgbWVtYmVyLm5hbWUgKyAiIGlzIHVu
aXF1ZSIpOworICAgICAgICAgICAgICAgICAgICB0aGlzLm1lbWJlcnNbbGhzXS5tZW1iZXJzLnB1
c2gobmV3IElkbEludGVyZmFjZU1lbWJlcihtZW1iZXIpKTsKKyAgICAgICAgICAgICAgICB9LmJp
bmQodGhpcykpOworICAgICAgICAgICAgICAgIGFzc2VydF90cnVlKCFjbGFzaCwgIm1lbWJlciAi
ICsgKGNsYXNoICYmIGNsYXNoLm5hbWUpICsgIiBpcyB1bmlxdWUiKTsKKyAgICAgICAgICAgIH0u
YmluZCh0aGlzKSwgbGhzICsgIiBpbmNsdWRlcyAiICsgcmhzICsgIjogbWVtYmVyIG5hbWVzIGFy
ZSB1bmlxdWUiKTsKKyAgICAgICAgfQorICAgIH0KKyAgICB0aGlzLmluY2x1ZGVzID0gW107Cit9
CisKK0lkbEFycmF5LnByb3RvdHlwZS5hcmVfZHVwbGljYXRlX21lbWJlcnMgPSBmdW5jdGlvbiht
MSwgbTIpIHsKKyAgICBpZiAobTEubmFtZSAhPT0gbTIubmFtZSkgeworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorICAgIGlmIChtMS50eXBlID09PSAnb3BlcmF0aW9uJyAmJiBtMi50eXBl
ID09PSAnb3BlcmF0aW9uJworICAgICAgICAmJiBtMS5hcmd1bWVudHMubGVuZ3RoICE9PSBtMi5h
cmd1bWVudHMubGVuZ3RoKSB7CisgICAgICAgIC8vIE1ldGhvZCBvdmVybG9hZC4gVE9ETzogRGVl
cCBjb21wYXJpc29uIG9mIGFyZ3VtZW50cy4KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwogSWRsQXJyYXkucHJvdG90eXBlLmFzc2VydF90eXBlX2lz
ID0gZnVuY3Rpb24odmFsdWUsIHR5cGUpCi0vL0B7CiB7CisgICAgaWYgKHR5cGUuaWRsVHlwZSBp
biB0aGlzLm1lbWJlcnMKKyAgICAmJiB0aGlzLm1lbWJlcnNbdHlwZS5pZGxUeXBlXSBpbnN0YW5j
ZW9mIElkbFR5cGVkZWYpIHsKKyAgICAgICAgdGhpcy5hc3NlcnRfdHlwZV9pcyh2YWx1ZSwgdGhp
cy5tZW1iZXJzW3R5cGUuaWRsVHlwZV0uaWRsVHlwZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBpZiAodHlwZS5udWxsYWJsZSAmJiB2YWx1ZSA9PT0gbnVsbCkKKyAgICB7CisgICAg
ICAgIC8vIFRoaXMgaXMgZmluZQorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKHR5
cGUudW5pb24pIHsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0eXBlLmlkbFR5cGUubGVu
Z3RoOyBpKyspIHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgdGhpcy5hc3Nl
cnRfdHlwZV9pcyh2YWx1ZSwgdHlwZS5pZGxUeXBlW2ldKTsKKyAgICAgICAgICAgICAgICAvLyBO
byBBc3NlcnRpb25FcnJvciwgc28gd2UgbWF0Y2ggb25lIHR5cGUgaW4gdGhlIHVuaW9uCisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAg
ICAgICAgaWYgKGUgaW5zdGFuY2VvZiBBc3NlcnRpb25FcnJvcikgeworICAgICAgICAgICAgICAg
ICAgICAvLyBXZSBkaWRuJ3QgbWF0Y2ggdGhpcyB0eXBlLCBsZXQncyB0cnkgc29tZSBvdGhlcnMK
KyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIHRocm93IGU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgLy8g
VE9ETzogSXMgdGhlcmUgYSBuaWNlIHdheSB0byBsaXN0IHRoZSB1bmlvbidzIHR5cGVzIGluIHRo
ZSBtZXNzYWdlPworICAgICAgICBhc3NlcnRfdHJ1ZShmYWxzZSwgIkF0dHJpYnV0ZSBoYXMgdmFs
dWUgIiArIGZvcm1hdF92YWx1ZSh2YWx1ZSkKKyAgICAgICAgICAgICAgICAgICAgKyAiIHdoaWNo
IGRvZXNuJ3QgbWF0Y2ggYW55IG9mIHRoZSB0eXBlcyBpbiB0aGUgdW5pb24iKTsKKworICAgIH0K
KwogICAgIC8qKgogICAgICAqIEhlbHBlciBmdW5jdGlvbiB0aGF0IHRlc3RzIHRoYXQgdmFsdWUg
aXMgYW4gaW5zdGFuY2Ugb2YgdHlwZSBhY2NvcmRpbmcKICAgICAgKiB0byB0aGUgcnVsZXMgb2Yg
V2ViSURMLiAgdmFsdWUgaXMgYW55IEphdmFTY3JpcHQgdmFsdWUsIGFuZCB0eXBlIGlzIGFuCkBA
IC00MzgsNDMgKzkzNCw0OSBAQCBJZGxBcnJheS5wcm90b3R5cGUuYXNzZXJ0X3R5cGVfaXMgPSBm
dW5jdGlvbih2YWx1ZSwgdHlwZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICh0
eXBlLm51bGxhYmxlICYmIHZhbHVlID09PSBudWxsKQotICAgIHsKLSAgICAgICAgLy8gVGhpcyBp
cyBmaW5lCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICBpZiAodHlwZS5hcnJheSkKICAg
ICB7CiAgICAgICAgIC8vIFRPRE86IG5vdCBzdXBwb3J0ZWQgeWV0CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBpZiAodHlwZS5zZXF1ZW5jZSkKKyAgICBpZiAodHlwZS5nZW5lcmljID09
PSAic2VxdWVuY2UiKQogICAgIHsKLSAgICAgICAgYXNzZXJ0X3RydWUoQXJyYXkuaXNBcnJheSh2
YWx1ZSksICJpcyBub3QgYXJyYXkiKTsKKyAgICAgICAgYXNzZXJ0X3RydWUoQXJyYXkuaXNBcnJh
eSh2YWx1ZSksICJzaG91bGQgYmUgYW4gQXJyYXkiKTsKICAgICAgICAgaWYgKCF2YWx1ZS5sZW5n
dGgpCiAgICAgICAgIHsKICAgICAgICAgICAgIC8vIE5vdGhpbmcgd2UgY2FuIGRvLgogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIHRoaXMuYXNzZXJ0X3R5cGVfaXModmFs
dWVbMF0sIHR5cGUuaWRsVHlwZS5pZGxUeXBlKTsKKyAgICAgICAgdGhpcy5hc3NlcnRfdHlwZV9p
cyh2YWx1ZVswXSwgdHlwZS5pZGxUeXBlWzBdKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAog
ICAgIGlmICh0eXBlLmdlbmVyaWMgPT09ICJQcm9taXNlIikgewotICAgICAgICBhc3NlcnRfdHJ1
ZSgidGhlbiIgaW4gdmFsdWUsICJBdHRyaWJ1dGUgd2l0aCBhIFByb21pc2UgdHlwZSBoYXMgYSB0
aGVuIHByb3BlcnR5Iik7CisgICAgICAgIGFzc2VydF90cnVlKCJ0aGVuIiBpbiB2YWx1ZSwgIkF0
dHJpYnV0ZSB3aXRoIGEgUHJvbWlzZSB0eXBlIHNob3VsZCBoYXZlIGEgdGhlbiBwcm9wZXJ0eSIp
OwogICAgICAgICAvLyBUT0RPOiBJZGVhbGx5LCB3ZSB3b3VsZCBjaGVjayBvbiBwcm9qZWN0IGZ1
bGZpbGxtZW50CiAgICAgICAgIC8vIHRoYXQgd2UgZ2V0IHRoZSByaWdodCB0eXBlCiAgICAgICAg
IC8vIGJ1dCB0aGF0IHdvdWxkIHJlcXVpcmUgbWFraW5nIHRoZSB0eXBlIGNoZWNrIGFzeW5jCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICB0eXBlID0gdHlwZS5pZGxUeXBlOworICAgIGlm
ICh0eXBlLmdlbmVyaWMgPT09ICJGcm96ZW5BcnJheSIpIHsKKyAgICAgICAgYXNzZXJ0X3RydWUo
QXJyYXkuaXNBcnJheSh2YWx1ZSksICJWYWx1ZSBzaG91bGQgYmUgYXJyYXkiKTsKKyAgICAgICAg
YXNzZXJ0X3RydWUoT2JqZWN0LmlzRnJvemVuKHZhbHVlKSwgIlZhbHVlIHNob3VsZCBiZSBmcm96
ZW4iKTsKKyAgICAgICAgaWYgKCF2YWx1ZS5sZW5ndGgpCisgICAgICAgIHsKKyAgICAgICAgICAg
IC8vIE5vdGhpbmcgd2UgY2FuIGRvLgorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisg
ICAgICAgIHRoaXMuYXNzZXJ0X3R5cGVfaXModmFsdWVbMF0sIHR5cGUuaWRsVHlwZVswXSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB0eXBlID0gQXJyYXkuaXNBcnJheSh0eXBlLmlk
bFR5cGUpID8gdHlwZS5pZGxUeXBlWzBdIDogdHlwZS5pZGxUeXBlOwogCiAgICAgc3dpdGNoKHR5
cGUpCiAgICAgewotICAgICAgICBjYXNlICJ2b2lkIjoKKyAgICAgICAgY2FzZSAidW5kZWZpbmVk
IjoKICAgICAgICAgICAgIGFzc2VydF9lcXVhbHModmFsdWUsIHVuZGVmaW5lZCk7CiAgICAgICAg
ICAgICByZXR1cm47CiAKQEAgLTQ4NCwzOCArOTg2LDM4IEBAIElkbEFycmF5LnByb3RvdHlwZS5h
c3NlcnRfdHlwZV9pcyA9IGZ1bmN0aW9uKHZhbHVlLCB0eXBlKQogCiAgICAgICAgIGNhc2UgImJ5
dGUiOgogICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgdmFsdWUsICJudW1iZXIiKTsK
LSAgICAgICAgICAgIGFzc2VydF9lcXVhbHModmFsdWUsIE1hdGguZmxvb3IodmFsdWUpLCAibm90
IGFuIGludGVnZXIiKTsKLSAgICAgICAgICAgIGFzc2VydF90cnVlKC0xMjggPD0gdmFsdWUgJiYg
dmFsdWUgPD0gMTI3LCAiYnl0ZSAiICsgdmFsdWUgKyAiIG5vdCBpbiByYW5nZSBbLTEyOCwgMTI3
XSIpOworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh2YWx1ZSwgTWF0aC5mbG9vcih2YWx1ZSks
ICJzaG91bGQgYmUgYW4gaW50ZWdlciIpOworICAgICAgICAgICAgYXNzZXJ0X3RydWUoLTEyOCA8
PSB2YWx1ZSAmJiB2YWx1ZSA8PSAxMjcsICJieXRlICIgKyB2YWx1ZSArICIgc2hvdWxkIGJlIGlu
IHJhbmdlIFstMTI4LCAxMjddIik7CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgY2Fz
ZSAib2N0ZXQiOgogICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgdmFsdWUsICJudW1i
ZXIiKTsKLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHModmFsdWUsIE1hdGguZmxvb3IodmFsdWUp
LCAibm90IGFuIGludGVnZXIiKTsKLSAgICAgICAgICAgIGFzc2VydF90cnVlKDAgPD0gdmFsdWUg
JiYgdmFsdWUgPD0gMjU1LCAib2N0ZXQgIiArIHZhbHVlICsgIiBub3QgaW4gcmFuZ2UgWzAsIDI1
NV0iKTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHModmFsdWUsIE1hdGguZmxvb3IodmFsdWUp
LCAic2hvdWxkIGJlIGFuIGludGVnZXIiKTsKKyAgICAgICAgICAgIGFzc2VydF90cnVlKDAgPD0g
dmFsdWUgJiYgdmFsdWUgPD0gMjU1LCAib2N0ZXQgIiArIHZhbHVlICsgIiBzaG91bGQgYmUgaW4g
cmFuZ2UgWzAsIDI1NV0iKTsKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBjYXNlICJz
aG9ydCI6CiAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiB2YWx1ZSwgIm51bWJlciIp
OwotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh2YWx1ZSwgTWF0aC5mbG9vcih2YWx1ZSksICJu
b3QgYW4gaW50ZWdlciIpOwotICAgICAgICAgICAgYXNzZXJ0X3RydWUoLTMyNzY4IDw9IHZhbHVl
ICYmIHZhbHVlIDw9IDMyNzY3LCAic2hvcnQgIiArIHZhbHVlICsgIiBub3QgaW4gcmFuZ2UgWy0z
Mjc2OCwgMzI3NjddIik7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHZhbHVlLCBNYXRoLmZs
b29yKHZhbHVlKSwgInNob3VsZCBiZSBhbiBpbnRlZ2VyIik7CisgICAgICAgICAgICBhc3NlcnRf
dHJ1ZSgtMzI3NjggPD0gdmFsdWUgJiYgdmFsdWUgPD0gMzI3NjcsICJzaG9ydCAiICsgdmFsdWUg
KyAiIHNob3VsZCBiZSBpbiByYW5nZSBbLTMyNzY4LCAzMjc2N10iKTsKICAgICAgICAgICAgIHJl
dHVybjsKIAogICAgICAgICBjYXNlICJ1bnNpZ25lZCBzaG9ydCI6CiAgICAgICAgICAgICBhc3Nl
cnRfZXF1YWxzKHR5cGVvZiB2YWx1ZSwgIm51bWJlciIpOwotICAgICAgICAgICAgYXNzZXJ0X2Vx
dWFscyh2YWx1ZSwgTWF0aC5mbG9vcih2YWx1ZSksICJub3QgYW4gaW50ZWdlciIpOwotICAgICAg
ICAgICAgYXNzZXJ0X3RydWUoMCA8PSB2YWx1ZSAmJiB2YWx1ZSA8PSA2NTUzNSwgInVuc2lnbmVk
IHNob3J0ICIgKyB2YWx1ZSArICIgbm90IGluIHJhbmdlIFswLCA2NTUzNV0iKTsKKyAgICAgICAg
ICAgIGFzc2VydF9lcXVhbHModmFsdWUsIE1hdGguZmxvb3IodmFsdWUpLCAic2hvdWxkIGJlIGFu
IGludGVnZXIiKTsKKyAgICAgICAgICAgIGFzc2VydF90cnVlKDAgPD0gdmFsdWUgJiYgdmFsdWUg
PD0gNjU1MzUsICJ1bnNpZ25lZCBzaG9ydCAiICsgdmFsdWUgKyAiIHNob3VsZCBiZSBpbiByYW5n
ZSBbMCwgNjU1MzVdIik7CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgY2FzZSAibG9u
ZyI6CiAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiB2YWx1ZSwgIm51bWJlciIpOwot
ICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh2YWx1ZSwgTWF0aC5mbG9vcih2YWx1ZSksICJub3Qg
YW4gaW50ZWdlciIpOwotICAgICAgICAgICAgYXNzZXJ0X3RydWUoLTIxNDc0ODM2NDggPD0gdmFs
dWUgJiYgdmFsdWUgPD0gMjE0NzQ4MzY0NywgImxvbmcgIiArIHZhbHVlICsgIiBub3QgaW4gcmFu
Z2UgWy0yMTQ3NDgzNjQ4LCAyMTQ3NDgzNjQ3XSIpOworICAgICAgICAgICAgYXNzZXJ0X2VxdWFs
cyh2YWx1ZSwgTWF0aC5mbG9vcih2YWx1ZSksICJzaG91bGQgYmUgYW4gaW50ZWdlciIpOworICAg
ICAgICAgICAgYXNzZXJ0X3RydWUoLTIxNDc0ODM2NDggPD0gdmFsdWUgJiYgdmFsdWUgPD0gMjE0
NzQ4MzY0NywgImxvbmcgIiArIHZhbHVlICsgIiBzaG91bGQgYmUgaW4gcmFuZ2UgWy0yMTQ3NDgz
NjQ4LCAyMTQ3NDgzNjQ3XSIpOwogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGNhc2Ug
InVuc2lnbmVkIGxvbmciOgogICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgdmFsdWUs
ICJudW1iZXIiKTsKLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHModmFsdWUsIE1hdGguZmxvb3Io
dmFsdWUpLCAibm90IGFuIGludGVnZXIiKTsKLSAgICAgICAgICAgIGFzc2VydF90cnVlKDAgPD0g
dmFsdWUgJiYgdmFsdWUgPD0gNDI5NDk2NzI5NSwgInVuc2lnbmVkIGxvbmcgIiArIHZhbHVlICsg
IiBub3QgaW4gcmFuZ2UgWzAsIDQyOTQ5NjcyOTVdIik7CisgICAgICAgICAgICBhc3NlcnRfZXF1
YWxzKHZhbHVlLCBNYXRoLmZsb29yKHZhbHVlKSwgInNob3VsZCBiZSBhbiBpbnRlZ2VyIik7Cisg
ICAgICAgICAgICBhc3NlcnRfdHJ1ZSgwIDw9IHZhbHVlICYmIHZhbHVlIDw9IDQyOTQ5NjcyOTUs
ICJ1bnNpZ25lZCBsb25nICIgKyB2YWx1ZSArICIgc2hvdWxkIGJlIGluIHJhbmdlIFswLCA0Mjk0
OTY3Mjk1XSIpOwogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGNhc2UgImxvbmcgbG9u
ZyI6CkBAIC01MjUsMTIgKzEwMjcsMTIgQEAgSWRsQXJyYXkucHJvdG90eXBlLmFzc2VydF90eXBl
X2lzID0gZnVuY3Rpb24odmFsdWUsIHR5cGUpCiAgICAgICAgIGNhc2UgInVuc2lnbmVkIGxvbmcg
bG9uZyI6CiAgICAgICAgIGNhc2UgIkRPTVRpbWVTdGFtcCI6CiAgICAgICAgICAgICBhc3NlcnRf
ZXF1YWxzKHR5cGVvZiB2YWx1ZSwgIm51bWJlciIpOwotICAgICAgICAgICAgYXNzZXJ0X3RydWUo
MCA8PSB2YWx1ZSwgInVuc2lnbmVkIGxvbmcgbG9uZyBpcyBuZWdhdGl2ZSIpOworICAgICAgICAg
ICAgYXNzZXJ0X3RydWUoMCA8PSB2YWx1ZSwgInVuc2lnbmVkIGxvbmcgbG9uZyBzaG91bGQgYmUg
cG9zaXRpdmUiKTsKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBjYXNlICJmbG9hdCI6
CiAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiB2YWx1ZSwgIm51bWJlciIpOwotICAg
ICAgICAgICAgYXNzZXJ0X2VxdWFscyh2YWx1ZSwgZnJvdW5kKHZhbHVlKSwgImZsb2F0IHJvdW5k
ZWQgdG8gMzItYml0IGZsb2F0IHNob3VsZCBiZSBpdHNlbGYiKTsKKyAgICAgICAgICAgIGFzc2Vy
dF9lcXVhbHModmFsdWUsIE1hdGguZnJvdW5kKHZhbHVlKSwgImZsb2F0IHJvdW5kZWQgdG8gMzIt
Yml0IGZsb2F0IHNob3VsZCBiZSBpdHNlbGYiKTsKICAgICAgICAgICAgIGFzc2VydF9ub3RfZXF1
YWxzKHZhbHVlLCBJbmZpbml0eSk7CiAgICAgICAgICAgICBhc3NlcnRfbm90X2VxdWFscyh2YWx1
ZSwgLUluZmluaXR5KTsKICAgICAgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKHZhbHVlLCBOYU4p
OwpAQCAtNTQ2LDcgKzEwNDgsNyBAQCBJZGxBcnJheS5wcm90b3R5cGUuYXNzZXJ0X3R5cGVfaXMg
PSBmdW5jdGlvbih2YWx1ZSwgdHlwZSkKIAogICAgICAgICBjYXNlICJ1bnJlc3RyaWN0ZWQgZmxv
YXQiOgogICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgdmFsdWUsICJudW1iZXIiKTsK
LSAgICAgICAgICAgIGFzc2VydF9lcXVhbHModmFsdWUsIGZyb3VuZCh2YWx1ZSksICJ1bnJlc3Ry
aWN0ZWQgZmxvYXQgcm91bmRlZCB0byAzMi1iaXQgZmxvYXQgc2hvdWxkIGJlIGl0c2VsZiIpOwor
ICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh2YWx1ZSwgTWF0aC5mcm91bmQodmFsdWUpLCAidW5y
ZXN0cmljdGVkIGZsb2F0IHJvdW5kZWQgdG8gMzItYml0IGZsb2F0IHNob3VsZCBiZSBpdHNlbGYi
KTsKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBjYXNlICJ1bnJlc3RyaWN0ZWQgZG91
YmxlIjoKQEAgLTU2NywxNCArMTA2OSwyNiBAQCBJZGxBcnJheS5wcm90b3R5cGUuYXNzZXJ0X3R5
cGVfaXMgPSBmdW5jdGlvbih2YWx1ZSwgdHlwZSkKICAgICAgICAgICAgIGFzc2VydF9yZWdleHBf
bWF0Y2godmFsdWUsIC9eKFtceDAwLVx1ZDdmZlx1ZTAwMC1cdWZmZmZdfFtcdWQ4MDAtXHVkYmZm
XVtcdWRjMDAtXHVkZmZmXSkqJC8pOwogICAgICAgICAgICAgcmV0dXJuOwogCisgICAgICAgIGNh
c2UgIkFycmF5QnVmZmVyVmlldyI6CisgICAgICAgICAgICBhc3NlcnRfdHJ1ZShBcnJheUJ1ZmZl
ci5pc1ZpZXcodmFsdWUpKTsKKyAgICAgICAgICAgIHJldHVybjsKKwogICAgICAgICBjYXNlICJv
YmplY3QiOgotICAgICAgICAgICAgYXNzZXJ0X3RydWUodHlwZW9mIHZhbHVlID09ICJvYmplY3Qi
IHx8IHR5cGVvZiB2YWx1ZSA9PSAiZnVuY3Rpb24iLCAid3JvbmcgdHlwZTogbm90IG9iamVjdCBv
ciBmdW5jdGlvbiIpOworICAgICAgICAgICAgYXNzZXJ0X2luX2FycmF5KHR5cGVvZiB2YWx1ZSwg
WyJvYmplY3QiLCAiZnVuY3Rpb24iXSwgIndyb25nIHR5cGU6IG5vdCBvYmplY3Qgb3IgZnVuY3Rp
b24iKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICAvLyBUaGlzIGlzIGEgY2F0
Y2gtYWxsIGZvciBhbnkgSURMIHR5cGUgbmFtZSB3aGljaCBmb2xsb3dzIEpTIGNsYXNzCisgICAg
Ly8gc2VtYW50aWNzLiBUaGlzIGluY2x1ZGVzIHNvbWUgbm9uLWludGVyZmFjZSBJREwgdHlwZXMg
KGUuZy4gSW50OEFycmF5LAorICAgIC8vIEZ1bmN0aW9uLCAuLi4pLCBhcyB3ZWxsIGFzIGFueSBp
bnRlcmZhY2UgdHlwZXMgdGhhdCBhcmUgbm90IGluIHRoZSBJREwKKyAgICAvLyB0aGF0IGlzIGZl
ZCB0byB0aGUgaGFybmVzcy4gSWYgYW4gSURMIHR5cGUgZG9lcyBub3QgZm9sbG93IEpTIGNsYXNz
CisgICAgLy8gc2VtYW50aWNzIHRoZW4gaXQgc2hvdWxkIGdvIGluIHRoZSBzd2l0Y2ggc3RhdGVt
ZW50IGFib3ZlLiBJZiBhbiBJREwKKyAgICAvLyB0eXBlIG5lZWRzIGZ1bGwgY2hlY2tpbmcsIHRo
ZW4gdGhlIHRlc3Qgc2hvdWxkIGluY2x1ZGUgaXQgaW4gdGhlIElETCBpdAorICAgIC8vIGZlZWRz
IHRvIHRoZSBoYXJuZXNzLgogICAgIGlmICghKHR5cGUgaW4gdGhpcy5tZW1iZXJzKSkKICAgICB7
Ci0gICAgICAgIHRocm93ICJVbnJlY29nbml6ZWQgdHlwZSAiICsgdHlwZTsKKyAgICAgICAgYXNz
ZXJ0X3RydWUodmFsdWUgaW5zdGFuY2VvZiBzZWxmW3R5cGVdLCAid3JvbmcgdHlwZTogbm90IGEg
IiArIHR5cGUpOworICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKHRoaXMubWVtYmVy
c1t0eXBlXSBpbnN0YW5jZW9mIElkbEludGVyZmFjZSkKQEAgLTU4MiwxNCArMTA5NiwxNCBAQCBJ
ZGxBcnJheS5wcm90b3R5cGUuYXNzZXJ0X3R5cGVfaXMgPSBmdW5jdGlvbih2YWx1ZSwgdHlwZSkK
ICAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBydW4gdGhlIGZ1bGwKICAgICAgICAgLy8gSWRs
SW50ZXJmYWNlLnByb3RvdHlwZS50ZXN0X2luc3RhbmNlX29mLCBiZWNhdXNlIHRoYXQgY291bGQg
cmVzdWx0CiAgICAgICAgIC8vIGluIGFuIGluZmluaXRlIGxvb3AuICBUT0RPOiBUaGlzIG1lYW5z
IHdlIGRvbid0IGhhdmUgdGVzdHMgZm9yCi0gICAgICAgIC8vIE5vSW50ZXJmYWNlT2JqZWN0IGlu
dGVyZmFjZXMsIGFuZCB3ZSBhbHNvIGNhbid0IHRlc3Qgb2JqZWN0cyB0aGF0Ci0gICAgICAgIC8v
IGNvbWUgZnJvbSBhbm90aGVyIHNlbGYuCi0gICAgICAgIGFzc2VydF90cnVlKHR5cGVvZiB2YWx1
ZSA9PSAib2JqZWN0IiB8fCB0eXBlb2YgdmFsdWUgPT0gImZ1bmN0aW9uIiwgIndyb25nIHR5cGU6
IG5vdCBvYmplY3Qgb3IgZnVuY3Rpb24iKTsKKyAgICAgICAgLy8gTGVnYWN5Tm9JbnRlcmZhY2VP
YmplY3QgaW50ZXJmYWNlcywgYW5kIHdlIGFsc28gY2FuJ3QgdGVzdCBvYmplY3RzCisgICAgICAg
IC8vIHRoYXQgY29tZSBmcm9tIGFub3RoZXIgc2VsZi4KKyAgICAgICAgYXNzZXJ0X2luX2FycmF5
KHR5cGVvZiB2YWx1ZSwgWyJvYmplY3QiLCAiZnVuY3Rpb24iXSwgIndyb25nIHR5cGU6IG5vdCBv
YmplY3Qgb3IgZnVuY3Rpb24iKTsKICAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0
Ci0gICAgICAgICYmICF0aGlzLm1lbWJlcnNbdHlwZV0uaGFzX2V4dGVuZGVkX2F0dHJpYnV0ZSgi
Tm9JbnRlcmZhY2VPYmplY3QiKQorICAgICAgICAmJiAhdGhpcy5tZW1iZXJzW3R5cGVdLmhhc19l
eHRlbmRlZF9hdHRyaWJ1dGUoIkxlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0IikKICAgICAgICAgJiYg
dHlwZSBpbiBzZWxmKQogICAgICAgICB7Ci0gICAgICAgICAgICBhc3NlcnRfdHJ1ZSh2YWx1ZSBp
bnN0YW5jZW9mIHNlbGZbdHlwZV0sICJub3QgaW5zdGFuY2VvZiAiICsgdHlwZSk7CisgICAgICAg
ICAgICBhc3NlcnRfdHJ1ZSh2YWx1ZSBpbnN0YW5jZW9mIHNlbGZbdHlwZV0sICJpbnN0YW5jZW9m
ICIgKyB0eXBlKTsKICAgICAgICAgfQogICAgIH0KICAgICBlbHNlIGlmICh0aGlzLm1lbWJlcnNb
dHlwZV0gaW5zdGFuY2VvZiBJZGxFbnVtKQpAQCAtNjAwLDIxICsxMTE0LDE5IEBAIElkbEFycmF5
LnByb3RvdHlwZS5hc3NlcnRfdHlwZV9pcyA9IGZ1bmN0aW9uKHZhbHVlLCB0eXBlKQogICAgIHsK
ICAgICAgICAgLy8gVE9ETzogVGVzdCB3aGVuIHdlIGFjdHVhbGx5IGhhdmUgc29tZXRoaW5nIHRv
IHRlc3QgdGhpcyBvbgogICAgIH0KLSAgICBlbHNlIGlmICh0aGlzLm1lbWJlcnNbdHlwZV0gaW5z
dGFuY2VvZiBJZGxUeXBlZGVmKQorICAgIGVsc2UgaWYgKHRoaXMubWVtYmVyc1t0eXBlXSBpbnN0
YW5jZW9mIElkbENhbGxiYWNrKQogICAgIHsKLSAgICAgICAgLy8gVE9ETzogVGVzdCB3aGVuIHdl
IGFjdHVhbGx5IGhhdmUgc29tZXRoaW5nIHRvIHRlc3QgdGhpcyBvbgorICAgICAgICBhc3NlcnRf
ZXF1YWxzKHR5cGVvZiB2YWx1ZSwgImZ1bmN0aW9uIik7CiAgICAgfQogICAgIGVsc2UKICAgICB7
Ci0gICAgICAgIHRocm93ICJUeXBlICIgKyB0eXBlICsgIiBpc24ndCBhbiBpbnRlcmZhY2Ugb3Ig
ZGljdGlvbmFyeSI7CisgICAgICAgIHRocm93IG5ldyBJZGxIYXJuZXNzRXJyb3IoIlR5cGUgIiAr
IHR5cGUgKyAiIGlzbid0IGFuIGludGVyZmFjZSwgY2FsbGJhY2sgb3IgZGljdGlvbmFyeSIpOwog
ICAgIH0KIH07Ci0vL0B9CiAKIC8vLyBJZGxPYmplY3QgLy8vCiBmdW5jdGlvbiBJZGxPYmplY3Qo
KSB7fQogSWRsT2JqZWN0LnByb3RvdHlwZS50ZXN0ID0gZnVuY3Rpb24oKQotLy9AewogewogICAg
IC8qKgogICAgICAqIEJ5IGRlZmF1bHQsIHRoaXMgZG9lcyBub3RoaW5nLCBzbyBubyBhY3R1YWwg
dGVzdHMgYXJlIHJ1biBmb3IgSWRsT2JqZWN0cwpAQCAtNjIyLDkgKzExMzQsNyBAQCBJZGxPYmpl
Y3QucHJvdG90eXBlLnRlc3QgPSBmdW5jdGlvbigpCiAgICAgICovCiB9OwogCi0vL0B9CiBJZGxP
YmplY3QucHJvdG90eXBlLmhhc19leHRlbmRlZF9hdHRyaWJ1dGUgPSBmdW5jdGlvbihuYW1lKQot
Ly9AewogewogICAgIC8qKgogICAgICAqIFRoaXMgaXMgb25seSBtZWFuaW5nZnVsIGZvciB0aGlu
Z3MgdGhhdCBzdXBwb3J0IGV4dGVuZGVkIGF0dHJpYnV0ZXMsCkBAIC02MzYsMTIgKzExNDYsMTAg
QEAgSWRsT2JqZWN0LnByb3RvdHlwZS5oYXNfZXh0ZW5kZWRfYXR0cmlidXRlID0gZnVuY3Rpb24o
bmFtZSkKICAgICB9KTsKIH07CiAKLS8vQH0KIAogLy8vIElkbERpY3Rpb25hcnkgLy8vCiAvLyBV
c2VkIGZvciBJZGxBcnJheS5wcm90b3R5cGUuYXNzZXJ0X3R5cGVfaXMKIGZ1bmN0aW9uIElkbERp
Y3Rpb25hcnkob2JqKQotLy9AewogewogICAgIC8qKgogICAgICAqIG9iaiBpcyBhbiBvYmplY3Qg
cHJvZHVjZWQgYnkgdGhlIFdlYklETFBhcnNlci5qcyAiZGljdGlvbmFyeSIKQEAgLTY1MSw2ICsx
MTU5LDkgQEAgZnVuY3Rpb24gSWRsRGljdGlvbmFyeShvYmopCiAgICAgLyoqIFNlbGYtZXhwbGFu
YXRvcnkuICovCiAgICAgdGhpcy5uYW1lID0gb2JqLm5hbWU7CiAKKyAgICAvKiogQSBiYWNrLXJl
ZmVyZW5jZSB0byBvdXIgSWRsQXJyYXkuICovCisgICAgdGhpcy5hcnJheSA9IG9iai5hcnJheTsK
KwogICAgIC8qKiBBbiBhcnJheSBvZiBvYmplY3RzIHByb2R1Y2VkIGJ5IHRoZSAiZGljdGlvbmFy
eU1lbWJlciIgcHJvZHVjdGlvbi4gKi8KICAgICB0aGlzLm1lbWJlcnMgPSBvYmoubWVtYmVyczsK
IApAQCAtNjYxLDEyICsxMTcyLDE0IEBAIGZ1bmN0aW9uIElkbERpY3Rpb25hcnkob2JqKQogICAg
IHRoaXMuYmFzZSA9IG9iai5pbmhlcml0YW5jZTsKIH0KIAotLy9AfQogSWRsRGljdGlvbmFyeS5w
cm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKElkbE9iamVjdC5wcm90b3R5cGUpOwogCitJZGxEaWN0
aW9uYXJ5LnByb3RvdHlwZS5nZXRfcmV2ZXJzZV9pbmhlcml0YW5jZV9zdGFjayA9IGZ1bmN0aW9u
KCkgeworICAgIHJldHVybiBJZGxJbnRlcmZhY2UucHJvdG90eXBlLmdldF9yZXZlcnNlX2luaGVy
aXRhbmNlX3N0YWNrLmNhbGwodGhpcyk7Cit9OworCiAvLy8gSWRsSW50ZXJmYWNlIC8vLwotZnVu
Y3Rpb24gSWRsSW50ZXJmYWNlKG9iaiwgaXNfY2FsbGJhY2spCi0vL0B7CitmdW5jdGlvbiBJZGxJ
bnRlcmZhY2Uob2JqLCBpc19jYWxsYmFjaywgaXNfbWl4aW4pCiB7CiAgICAgLyoqCiAgICAgICog
b2JqIGlzIGFuIG9iamVjdCBwcm9kdWNlZCBieSB0aGUgV2ViSURMUGFyc2VyLmpzICJpbnRlcmZh
Y2UiIHByb2R1Y3Rpb24uCkBAIC02OTAsOSArMTIwMyw5IEBAIGZ1bmN0aW9uIElkbEludGVyZmFj
ZShvYmosIGlzX2NhbGxiYWNrKQogCiAgICAgLyoqIEFuIGFycmF5IG9mIElkbEludGVyZmFjZU1l
bWJlcnMuICovCiAgICAgdGhpcy5tZW1iZXJzID0gb2JqLm1lbWJlcnMubWFwKGZ1bmN0aW9uKG0p
e3JldHVybiBuZXcgSWRsSW50ZXJmYWNlTWVtYmVyKG0pOyB9KTsKLSAgICBpZiAodGhpcy5oYXNf
ZXh0ZW5kZWRfYXR0cmlidXRlKCJVbmZvcmdlYWJsZSIpKSB7CisgICAgaWYgKHRoaXMuaGFzX2V4
dGVuZGVkX2F0dHJpYnV0ZSgiTGVnYWN5VW5mb3JnZWFibGUiKSkgewogICAgICAgICB0aGlzLm1l
bWJlcnMKLSAgICAgICAgICAgIC5maWx0ZXIoZnVuY3Rpb24obSkgeyByZXR1cm4gIW1bInN0YXRp
YyJdICYmIChtLnR5cGUgPT0gImF0dHJpYnV0ZSIgfHwgbS50eXBlID09ICJvcGVyYXRpb24iKTsg
fSkKKyAgICAgICAgICAgIC5maWx0ZXIoZnVuY3Rpb24obSkgeyByZXR1cm4gbS5zcGVjaWFsICE9
PSAic3RhdGljIiAmJiAobS50eXBlID09ICJhdHRyaWJ1dGUiIHx8IG0udHlwZSA9PSAib3BlcmF0
aW9uIik7IH0pCiAgICAgICAgICAgICAuZm9yRWFjaChmdW5jdGlvbihtKSB7IHJldHVybiBtLmlz
VW5mb3JnZWFibGUgPSB0cnVlOyB9KTsKICAgICB9CiAKQEAgLTcwMywzOSArMTIxNiwxNzQgQEAg
ZnVuY3Rpb24gSWRsSW50ZXJmYWNlKG9iaiwgaXNfY2FsbGJhY2spCiAgICAgdGhpcy5iYXNlID0g
b2JqLmluaGVyaXRhbmNlOwogCiAgICAgdGhpcy5faXNfY2FsbGJhY2sgPSBpc19jYWxsYmFjazsK
KyAgICB0aGlzLl9pc19taXhpbiA9IGlzX21peGluOwogfQotLy9AfQogSWRsSW50ZXJmYWNlLnBy
b3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoSWRsT2JqZWN0LnByb3RvdHlwZSk7CiBJZGxJbnRlcmZh
Y2UucHJvdG90eXBlLmlzX2NhbGxiYWNrID0gZnVuY3Rpb24oKQotLy9AewogewogICAgIHJldHVy
biB0aGlzLl9pc19jYWxsYmFjazsKIH07Ci0vL0B9CisKK0lkbEludGVyZmFjZS5wcm90b3R5cGUu
aXNfbWl4aW4gPSBmdW5jdGlvbigpCit7CisgICAgcmV0dXJuIHRoaXMuX2lzX21peGluOworfTsK
IAogSWRsSW50ZXJmYWNlLnByb3RvdHlwZS5oYXNfY29uc3RhbnRzID0gZnVuY3Rpb24oKQotLy9A
ewogewogICAgIHJldHVybiB0aGlzLm1lbWJlcnMuc29tZShmdW5jdGlvbihtZW1iZXIpIHsKICAg
ICAgICAgcmV0dXJuIG1lbWJlci50eXBlID09PSAiY29uc3QiOwogICAgIH0pOwogfTsKLS8vQH0K
KworSWRsSW50ZXJmYWNlLnByb3RvdHlwZS5nZXRfdW5zY29wYWJsZXMgPSBmdW5jdGlvbigpCit7
CisgICAgcmV0dXJuIHRoaXMubWVtYmVycy5maWx0ZXIoZnVuY3Rpb24obWVtYmVyKSB7CisgICAg
ICAgIHJldHVybiBtZW1iZXIuaXNVbnNjb3BhYmxlOworICAgIH0pOworfTsKIAogSWRsSW50ZXJm
YWNlLnByb3RvdHlwZS5pc19nbG9iYWwgPSBmdW5jdGlvbigpCi0vL0B7CiB7CiAgICAgcmV0dXJu
IHRoaXMuZXh0QXR0cnMuc29tZShmdW5jdGlvbihhdHRyaWJ1dGUpIHsKLSAgICAgICAgcmV0dXJu
IGF0dHJpYnV0ZS5uYW1lID09PSAiR2xvYmFsIiB8fAotICAgICAgICAgICAgICAgYXR0cmlidXRl
Lm5hbWUgPT09ICJQcmltYXJ5R2xvYmFsIjsKKyAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZS5uYW1l
ID09PSAiR2xvYmFsIjsKKyAgICB9KTsKK307CisKKy8qKgorICogVmFsdWUgb2YgdGhlIExlZ2Fj
eU5hbWVzcGFjZSBleHRlbmRlZCBhdHRyaWJ1dGUsIGlmIGFueS4KKyAqCisgKiBodHRwczovL2hl
eWNhbS5naXRodWIuaW8vd2ViaWRsLyNMZWdhY3lOYW1lc3BhY2UKKyAqLworSWRsSW50ZXJmYWNl
LnByb3RvdHlwZS5nZXRfbGVnYWN5X25hbWVzcGFjZSA9IGZ1bmN0aW9uKCkKK3sKKyAgICB2YXIg
bGVnYWN5TmFtZXNwYWNlID0gdGhpcy5leHRBdHRycy5maW5kKGZ1bmN0aW9uKGF0dHJpYnV0ZSkg
eworICAgICAgICByZXR1cm4gYXR0cmlidXRlLm5hbWUgPT09ICJMZWdhY3lOYW1lc3BhY2UiOwor
ICAgIH0pOworICAgIHJldHVybiBsZWdhY3lOYW1lc3BhY2UgPyBsZWdhY3lOYW1lc3BhY2Uucmhz
LnZhbHVlIDogdW5kZWZpbmVkOworfTsKKworSWRsSW50ZXJmYWNlLnByb3RvdHlwZS5nZXRfaW50
ZXJmYWNlX29iamVjdF9vd25lciA9IGZ1bmN0aW9uKCkKK3sKKyAgICB2YXIgbGVnYWN5TmFtZXNw
YWNlID0gdGhpcy5nZXRfbGVnYWN5X25hbWVzcGFjZSgpOworICAgIHJldHVybiBsZWdhY3lOYW1l
c3BhY2UgPyBzZWxmW2xlZ2FjeU5hbWVzcGFjZV0gOiBzZWxmOworfTsKKworSWRsSW50ZXJmYWNl
LnByb3RvdHlwZS5zaG91bGRfaGF2ZV9pbnRlcmZhY2Vfb2JqZWN0ID0gZnVuY3Rpb24oKQorewor
ICAgIC8vICJGb3IgZXZlcnkgaW50ZXJmYWNlIHRoYXQgaXMgZXhwb3NlZCBpbiBhIGdpdmVuIEVD
TUFTY3JpcHQgZ2xvYmFsCisgICAgLy8gZW52aXJvbm1lbnQgYW5kOgorICAgIC8vICogaXMgYSBj
YWxsYmFjayBpbnRlcmZhY2UgdGhhdCBoYXMgY29uc3RhbnRzIGRlY2xhcmVkIG9uIGl0LCBvcgor
ICAgIC8vICogaXMgYSBub24tY2FsbGJhY2sgaW50ZXJmYWNlIHRoYXQgaXMgbm90IGRlY2xhcmVk
IHdpdGggdGhlCisgICAgLy8gICBbTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3RdIGV4dGVuZGVkIGF0
dHJpYnV0ZSwKKyAgICAvLyBhIGNvcnJlc3BvbmRpbmcgcHJvcGVydHkgTVVTVCBleGlzdCBvbiB0
aGUgRUNNQVNjcmlwdCBnbG9iYWwgb2JqZWN0LgorCisgICAgcmV0dXJuIHRoaXMuaXNfY2FsbGJh
Y2soKSA/IHRoaXMuaGFzX2NvbnN0YW50cygpIDogIXRoaXMuaGFzX2V4dGVuZGVkX2F0dHJpYnV0
ZSgiTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QiKTsKK307CisKK0lkbEludGVyZmFjZS5wcm90b3R5
cGUuYXNzZXJ0X2ludGVyZmFjZV9vYmplY3RfZXhpc3RzID0gZnVuY3Rpb24oKQoreworICAgIHZh
ciBvd25lciA9IHRoaXMuZ2V0X2xlZ2FjeV9uYW1lc3BhY2UoKSB8fCAic2VsZiI7CisgICAgYXNz
ZXJ0X293bl9wcm9wZXJ0eShzZWxmW293bmVyXSwgdGhpcy5uYW1lLCBvd25lciArICIgZG9lcyBu
b3QgaGF2ZSBvd24gcHJvcGVydHkgIiArIGZvcm1hdF92YWx1ZSh0aGlzLm5hbWUpKTsKK307CisK
K0lkbEludGVyZmFjZS5wcm90b3R5cGUuZ2V0X2ludGVyZmFjZV9vYmplY3QgPSBmdW5jdGlvbigp
IHsKKyAgICBpZiAoIXRoaXMuc2hvdWxkX2hhdmVfaW50ZXJmYWNlX29iamVjdCgpKSB7CisgICAg
ICAgIHZhciByZWFzb24gPSB0aGlzLmlzX2NhbGxiYWNrKCkgPyAibGFjayBvZiBkZWNsYXJlZCBj
b25zdGFudHMiIDogImRlY2xhcmVkIFtMZWdhY3lOb0ludGVyZmFjZU9iamVjdF0gYXR0cmlidXRl
IjsKKyAgICAgICAgdGhyb3cgbmV3IElkbEhhcm5lc3NFcnJvcih0aGlzLm5hbWUgKyAiIGhhcyBu
byBpbnRlcmZhY2Ugb2JqZWN0IGR1ZSB0byAiICsgcmVhc29uKTsKKyAgICB9CisKKyAgICByZXR1
cm4gdGhpcy5nZXRfaW50ZXJmYWNlX29iamVjdF9vd25lcigpW3RoaXMubmFtZV07Cit9OworCitJ
ZGxJbnRlcmZhY2UucHJvdG90eXBlLmdldF9xdWFsaWZpZWRfbmFtZSA9IGZ1bmN0aW9uKCkgewor
ICAgIC8vIGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI3F1YWxpZmllZC1uYW1lCisg
ICAgdmFyIGxlZ2FjeU5hbWVzcGFjZSA9IHRoaXMuZ2V0X2xlZ2FjeV9uYW1lc3BhY2UoKTsKKyAg
ICBpZiAobGVnYWN5TmFtZXNwYWNlKSB7CisgICAgICAgIHJldHVybiBsZWdhY3lOYW1lc3BhY2Ug
KyAiLiIgKyB0aGlzLm5hbWU7CisgICAgfQorICAgIHJldHVybiB0aGlzLm5hbWU7Cit9OworCitJ
ZGxJbnRlcmZhY2UucHJvdG90eXBlLmhhc190b19qc29uX3JlZ3VsYXJfb3BlcmF0aW9uID0gZnVu
Y3Rpb24oKSB7CisgICAgcmV0dXJuIHRoaXMubWVtYmVycy5zb21lKGZ1bmN0aW9uKG0pIHsKKyAg
ICAgICAgcmV0dXJuIG0uaXNfdG9fanNvbl9yZWd1bGFyX29wZXJhdGlvbigpOworICAgIH0pOwor
fTsKKworSWRsSW50ZXJmYWNlLnByb3RvdHlwZS5oYXNfZGVmYXVsdF90b19qc29uX3JlZ3VsYXJf
b3BlcmF0aW9uID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIHRoaXMubWVtYmVycy5zb21lKGZ1
bmN0aW9uKG0pIHsKKyAgICAgICAgcmV0dXJuIG0uaXNfdG9fanNvbl9yZWd1bGFyX29wZXJhdGlv
bigpICYmIG0uaGFzX2V4dGVuZGVkX2F0dHJpYnV0ZSgiRGVmYXVsdCIpOwogICAgIH0pOwogfTsK
LS8vQH0KKworLyoqCisgKiBJbXBsZW1lbnRhdGlvbiBvZiBodHRwczovL2hleWNhbS5naXRodWIu
aW8vd2ViaWRsLyNjcmVhdGUtYW4taW5oZXJpdGFuY2Utc3RhY2sKKyAqIHdpdGggdGhlIG9yZGVy
IHJldmVyc2VkLgorICoKKyAqIFRoZSBvcmRlciBpcyByZXZlcnNlZCBzbyB0aGF0IHRoZSBiYXNl
IGNsYXNzIGNvbWVzIGZpcnN0IGluIHRoZSBsaXN0LCBiZWNhdXNlCisgKiB0aGlzIGlzIHdoYXQg
YWxsIGNhbGwgc2l0ZXMgbmVlZC4KKyAqCisgKiBTbyBnaXZlbjoKKyAqCisgKiAgIEEgOiBCIHt9
OworICogICBCIDogQyB7fTsKKyAqICAgQyB7fTsKKyAqCisgKiB0aGVuIEEuZ2V0X3JldmVyc2Vf
aW5oZXJpdGFuY2Vfc3RhY2soKSByZXR1cm5zIFtDLCBCLCBBXSwKKyAqIGFuZCBCLmdldF9yZXZl
cnNlX2luaGVyaXRhbmNlX3N0YWNrKCkgcmV0dXJucyBbQywgQl0uCisgKgorICogTm90ZTogYXMg
ZGljdGlvbmFyeSBpbmhlcml0YW5jZSBpcyBleHByZXNzZWQgaWRlbnRpY2FsbHkgYnkgdGhlIEFT
VCwKKyAqIHRoaXMgd29ya3MganVzdCBhcyB3ZWxsIGZvciBnZXR0aW5nIGEgc3RhY2sgb2YgaW5o
ZXJpdGVkIGRpY3Rpb25hcmllcy4KKyAqLworSWRsSW50ZXJmYWNlLnByb3RvdHlwZS5nZXRfcmV2
ZXJzZV9pbmhlcml0YW5jZV9zdGFjayA9IGZ1bmN0aW9uKCkgeworICAgIGNvbnN0IHN0YWNrID0g
W3RoaXNdOworICAgIGxldCBpZGxfaW50ZXJmYWNlID0gdGhpczsKKyAgICB3aGlsZSAoaWRsX2lu
dGVyZmFjZS5iYXNlKSB7CisgICAgICAgIGNvbnN0IGJhc2UgPSB0aGlzLmFycmF5Lm1lbWJlcnNb
aWRsX2ludGVyZmFjZS5iYXNlXTsKKyAgICAgICAgaWYgKCFiYXNlKSB7CisgICAgICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoaWRsX2ludGVyZmFjZS50eXBlICsgIiAiICsgaWRsX2ludGVyZmFjZS5i
YXNlICsgIiBub3QgZm91bmQgKGluaGVyaXRlZCBieSAiICsgaWRsX2ludGVyZmFjZS5uYW1lICsg
IikiKTsKKyAgICAgICAgfSBlbHNlIGlmIChzdGFjay5pbmRleE9mKGJhc2UpID4gLTEpIHsKKyAg
ICAgICAgICAgIHN0YWNrLnVuc2hpZnQoYmFzZSk7CisgICAgICAgICAgICBjb25zdCBkZXBfY2hh
aW4gPSBzdGFjay5tYXAoaSA9PiBpLm5hbWUpLmpvaW4oJywnKTsKKyAgICAgICAgICAgIHRocm93
IG5ldyBJZGxIYXJuZXNzRXJyb3IoYCR7dGhpcy5uYW1lfSBoYXMgYSBjaXJjdWxhciBkZXBlbmRl
bmN5OiAke2RlcF9jaGFpbn1gKTsKKyAgICAgICAgfQorICAgICAgICBpZGxfaW50ZXJmYWNlID0g
YmFzZTsKKyAgICAgICAgc3RhY2sudW5zaGlmdChpZGxfaW50ZXJmYWNlKTsKKyAgICB9CisgICAg
cmV0dXJuIHN0YWNrOworfTsKKworLyoqCisgKiBJbXBsZW1lbnRhdGlvbiBvZgorICogaHR0cHM6
Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jZGVmYXVsdC10b2pzb24tb3BlcmF0aW9uCisgKiBm
b3IgdGVzdGluZyBwdXJwb3Nlcy4KKyAqCisgKiBDb2xsZWN0cyB0aGUgSURMIHR5cGVzIG9mIHRo
ZSBhdHRyaWJ1dGVzIHRoYXQgbWVldCB0aGUgY3JpdGVyaWEKKyAqIGZvciBpbmNsdXNpb24gaW4g
dGhlIGRlZmF1bHQgdG9KU09OIG9wZXJhdGlvbiBmb3IgZWFzeQorICogY29tcGFyaXNvbiB3aXRo
IGFjdHVhbCB2YWx1ZQorICovCitJZGxJbnRlcmZhY2UucHJvdG90eXBlLmRlZmF1bHRfdG9fanNv
bl9vcGVyYXRpb24gPSBmdW5jdGlvbigpIHsKKyAgICBjb25zdCBtYXAgPSBuZXcgTWFwKCkKKyAg
ICBsZXQgaXNEZWZhdWx0ID0gZmFsc2U7CisgICAgZm9yIChjb25zdCBJIG9mIHRoaXMuZ2V0X3Jl
dmVyc2VfaW5oZXJpdGFuY2Vfc3RhY2soKSkgeworICAgICAgICBpZiAoSS5oYXNfZGVmYXVsdF90
b19qc29uX3JlZ3VsYXJfb3BlcmF0aW9uKCkpIHsKKyAgICAgICAgICAgIGlzRGVmYXVsdCA9IHRy
dWU7CisgICAgICAgICAgICBmb3IgKGNvbnN0IG0gb2YgSS5tZW1iZXJzKSB7CisgICAgICAgICAg
ICAgICAgaWYgKG0uc3BlY2lhbCAhPT0gInN0YXRpYyIgJiYgbS50eXBlID09ICJhdHRyaWJ1dGUi
ICYmIEkuYXJyYXkuaXNfanNvbl90eXBlKG0uaWRsVHlwZSkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgbWFwLnNldChtLm5hbWUsIG0uaWRsVHlwZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKEkuaGFzX3RvX2pzb25fcmVndWxhcl9vcGVyYXRp
b24oKSkgeworICAgICAgICAgICAgaXNEZWZhdWx0ID0gZmFsc2U7CisgICAgICAgIH0KKyAgICB9
CisgICAgcmV0dXJuIGlzRGVmYXVsdCA/IG1hcCA6IG51bGw7Cit9OwogCiBJZGxJbnRlcmZhY2Uu
cHJvdG90eXBlLnRlc3QgPSBmdW5jdGlvbigpCi0vL0B7CiB7Ci0gICAgaWYgKHRoaXMuaGFzX2V4
dGVuZGVkX2F0dHJpYnV0ZSgiTm9JbnRlcmZhY2VPYmplY3QiKSkKKyAgICBpZiAodGhpcy5oYXNf
ZXh0ZW5kZWRfYXR0cmlidXRlKCJMZWdhY3lOb0ludGVyZmFjZU9iamVjdCIpIHx8IHRoaXMuaXNf
bWl4aW4oKSkKICAgICB7CiAgICAgICAgIC8vIE5vIHRlc3RzIHRvIGRvIHdpdGhvdXQgYW4gaW5z
dGFuY2UuICBUT0RPOiBXZSBzaG91bGQgc3RpbGwgYmUgYWJsZQogICAgICAgICAvLyB0byBydW4g
dGVzdHMgb24gdGhlIHByb3RvdHlwZSBvYmplY3QsIGlmIHdlIG9idGFpbiBvbmUgdGhyb3VnaCBz
b21lCkBAIC03NDMsMTAgKzEzOTEsMTYgQEAgSWRsSW50ZXJmYWNlLnByb3RvdHlwZS50ZXN0ID0g
ZnVuY3Rpb24oKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKCF0aGlzLmV4cG9z
ZWQpIHsKLSAgICAgICAgdGVzdChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGFzc2VydF9mYWxz
ZSh0aGlzLm5hbWUgaW4gc2VsZik7Ci0gICAgICAgIH0uYmluZCh0aGlzKSwgdGhpcy5uYW1lICsg
IiBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2Ugb2JqZWN0
Iik7CisgICAgLy8gSWYgdGhlIGludGVyZmFjZSBvYmplY3QgaXMgbm90IGV4cG9zZWQsIG9ubHkg
dGVzdCB0aGF0LiBNZW1iZXJzIGNhbid0IGJlCisgICAgLy8gdGVzdGVkIGVpdGhlciwgYnV0IG9i
amVjdHMgY291bGQgc3RpbGwgYmUgdGVzdGVkIGluIHx0ZXN0X29iamVjdHwuCisgICAgaWYgKCF0
aGlzLmV4cG9zZWQpCisgICAgeworICAgICAgICBpZiAoIXRoaXMudW50ZXN0ZWQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHN1YnNldFRlc3RCeUtleSh0aGlzLm5hbWUsIHRlc3QsIGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgICAgIGFzc2VydF9mYWxzZSh0aGlzLm5hbWUgaW4gc2VsZik7Cisg
ICAgICAgICAgICB9LmJpbmQodGhpcyksIHRoaXMubmFtZSArICIgaW50ZXJmYWNlOiBleGlzdGVu
Y2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIG9iamVjdCIpOworICAgICAgICB9CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTc2NSw0NCArMTQxOSwzOSBAQCBJZGxJbnRlcmZhY2Uu
cHJvdG90eXBlLnRlc3QgPSBmdW5jdGlvbigpCiAgICAgLy8gaW50ZXJmYWNlIGFyZSBzdGlsbCB0
ZXN0ZWQuCiAgICAgdGhpcy50ZXN0X21lbWJlcnMoKTsKIH07Ci0vL0B9CisKK0lkbEludGVyZmFj
ZS5wcm90b3R5cGUuY29uc3RydWN0b3JzID0gZnVuY3Rpb24oKQoreworICAgIHJldHVybiB0aGlz
Lm1lbWJlcnMKKyAgICAgICAgLmZpbHRlcihmdW5jdGlvbihtKSB7IHJldHVybiBtLnR5cGUgPT0g
ImNvbnN0cnVjdG9yIjsgfSk7Cit9CiAKIElkbEludGVyZmFjZS5wcm90b3R5cGUudGVzdF9zZWxm
ID0gZnVuY3Rpb24oKQotLy9AewogewotICAgIHRlc3QoZnVuY3Rpb24oKQorICAgIHN1YnNldFRl
c3RCeUtleSh0aGlzLm5hbWUsIHRlc3QsIGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIC8vIFRo
aXMgZnVuY3Rpb24gdGVzdHMgV2ViSURMIGFzIG9mIDIwMTUtMDEtMTMuCi0KLSAgICAgICAgLy8g
IkZvciBldmVyeSBpbnRlcmZhY2UgdGhhdCBpcyBleHBvc2VkIGluIGEgZ2l2ZW4gRUNNQVNjcmlw
dCBnbG9iYWwKLSAgICAgICAgLy8gZW52aXJvbm1lbnQgYW5kOgotICAgICAgICAvLyAqIGlzIGEg
Y2FsbGJhY2sgaW50ZXJmYWNlIHRoYXQgaGFzIGNvbnN0YW50cyBkZWNsYXJlZCBvbiBpdCwgb3IK
LSAgICAgICAgLy8gKiBpcyBhIG5vbi1jYWxsYmFjayBpbnRlcmZhY2UgdGhhdCBpcyBub3QgZGVj
bGFyZWQgd2l0aCB0aGUKLSAgICAgICAgLy8gICBbTm9JbnRlcmZhY2VPYmplY3RdIGV4dGVuZGVk
IGF0dHJpYnV0ZSwKLSAgICAgICAgLy8gYSBjb3JyZXNwb25kaW5nIHByb3BlcnR5IE1VU1QgZXhp
c3Qgb24gdGhlIEVDTUFTY3JpcHQgZ2xvYmFsIG9iamVjdC4KKyAgICAgICAgaWYgKCF0aGlzLnNo
b3VsZF9oYXZlX2ludGVyZmFjZV9vYmplY3QoKSkgeworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKICAgICAgICAgLy8gVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5IGlzIHRoZSBpZGVu
dGlmaWVyIG9mIHRoZSBpbnRlcmZhY2UsIGFuZCBpdHMKICAgICAgICAgLy8gdmFsdWUgaXMgYW4g
b2JqZWN0IGNhbGxlZCB0aGUgaW50ZXJmYWNlIG9iamVjdC4KICAgICAgICAgLy8gVGhlIHByb3Bl
cnR5IGhhcyB0aGUgYXR0cmlidXRlcyB7IFtbV3JpdGFibGVdXTogdHJ1ZSwKICAgICAgICAgLy8g
W1tFbnVtZXJhYmxlXV06IGZhbHNlLCBbW0NvbmZpZ3VyYWJsZV1dOiB0cnVlIH0uIgotICAgICAg
ICBpZiAodGhpcy5pc19jYWxsYmFjaygpICYmICF0aGlzLmhhc19jb25zdGFudHMoKSkgewotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KICAgICAgICAgLy8gVE9ETzogU2hvdWxkIHdl
IHRlc3QgaGVyZSB0aGF0IHRoZSBwcm9wZXJ0eSBpcyBhY3R1YWxseSB3cml0YWJsZQogICAgICAg
ICAvLyBldGMuLCBvciB0cnVzdCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I/Ci0gICAgICAgIGFz
c2VydF9vd25fcHJvcGVydHkoc2VsZiwgdGhpcy5uYW1lLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJzZWxmIGRvZXMgbm90IGhhdmUgb3duIHByb3BlcnR5ICIgKyBmb3JtYXRfdmFsdWUo
dGhpcy5uYW1lKSk7Ci0gICAgICAgIHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihzZWxmLCB0aGlzLm5hbWUpOwotICAgICAgICBhc3NlcnRfZmFsc2UoImdldCIgaW4g
ZGVzYywgInNlbGYncyBwcm9wZXJ0eSAiICsgZm9ybWF0X3ZhbHVlKHRoaXMubmFtZSkgKyAiIGhh
cyBnZXR0ZXIiKTsKLSAgICAgICAgYXNzZXJ0X2ZhbHNlKCJzZXQiIGluIGRlc2MsICJzZWxmJ3Mg
cHJvcGVydHkgIiArIGZvcm1hdF92YWx1ZSh0aGlzLm5hbWUpICsgIiBoYXMgc2V0dGVyIik7Ci0g
ICAgICAgIGFzc2VydF90cnVlKGRlc2Mud3JpdGFibGUsICJzZWxmJ3MgcHJvcGVydHkgIiArIGZv
cm1hdF92YWx1ZSh0aGlzLm5hbWUpICsgIiBpcyBub3Qgd3JpdGFibGUiKTsKLSAgICAgICAgYXNz
ZXJ0X2ZhbHNlKGRlc2MuZW51bWVyYWJsZSwgInNlbGYncyBwcm9wZXJ0eSAiICsgZm9ybWF0X3Zh
bHVlKHRoaXMubmFtZSkgKyAiIGlzIGVudW1lcmFibGUiKTsKLSAgICAgICAgYXNzZXJ0X3RydWUo
ZGVzYy5jb25maWd1cmFibGUsICJzZWxmJ3MgcHJvcGVydHkgIiArIGZvcm1hdF92YWx1ZSh0aGlz
Lm5hbWUpICsgIiBpcyBub3QgY29uZmlndXJhYmxlIik7CisgICAgICAgIHRoaXMuYXNzZXJ0X2lu
dGVyZmFjZV9vYmplY3RfZXhpc3RzKCk7CisgICAgICAgIHZhciBkZXNjID0gT2JqZWN0LmdldE93
blByb3BlcnR5RGVzY3JpcHRvcih0aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0X293bmVyKCksIHRo
aXMubmFtZSk7CisgICAgICAgIGFzc2VydF9mYWxzZSgiZ2V0IiBpbiBkZXNjLCAic2VsZidzIHBy
b3BlcnR5ICIgKyBmb3JtYXRfdmFsdWUodGhpcy5uYW1lKSArICIgc2hvdWxkIG5vdCBoYXZlIGEg
Z2V0dGVyIik7CisgICAgICAgIGFzc2VydF9mYWxzZSgic2V0IiBpbiBkZXNjLCAic2VsZidzIHBy
b3BlcnR5ICIgKyBmb3JtYXRfdmFsdWUodGhpcy5uYW1lKSArICIgc2hvdWxkIG5vdCBoYXZlIGEg
c2V0dGVyIik7CisgICAgICAgIGFzc2VydF90cnVlKGRlc2Mud3JpdGFibGUsICJzZWxmJ3MgcHJv
cGVydHkgIiArIGZvcm1hdF92YWx1ZSh0aGlzLm5hbWUpICsgIiBzaG91bGQgYmUgd3JpdGFibGUi
KTsKKyAgICAgICAgYXNzZXJ0X2ZhbHNlKGRlc2MuZW51bWVyYWJsZSwgInNlbGYncyBwcm9wZXJ0
eSAiICsgZm9ybWF0X3ZhbHVlKHRoaXMubmFtZSkgKyAiIHNob3VsZCBub3QgYmUgZW51bWVyYWJs
ZSIpOworICAgICAgICBhc3NlcnRfdHJ1ZShkZXNjLmNvbmZpZ3VyYWJsZSwgInNlbGYncyBwcm9w
ZXJ0eSAiICsgZm9ybWF0X3ZhbHVlKHRoaXMubmFtZSkgKyAiIHNob3VsZCBiZSBjb25maWd1cmFi
bGUiKTsKIAogICAgICAgICBpZiAodGhpcy5pc19jYWxsYmFjaygpKSB7CiAgICAgICAgICAgICAv
LyAiVGhlIGludGVybmFsIFtbUHJvdG90eXBlXV0gcHJvcGVydHkgb2YgYW4gaW50ZXJmYWNlIG9i
amVjdCBmb3IKICAgICAgICAgICAgIC8vIGEgY2FsbGJhY2sgaW50ZXJmYWNlIG11c3QgYmUgdGhl
IEZ1bmN0aW9uLnByb3RvdHlwZSBvYmplY3QuIgotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhP
YmplY3QuZ2V0UHJvdG90eXBlT2Yoc2VsZlt0aGlzLm5hbWVdKSwgRnVuY3Rpb24ucHJvdG90eXBl
LAorICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhPYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcy5n
ZXRfaW50ZXJmYWNlX29iamVjdCgpKSwgRnVuY3Rpb24ucHJvdG90eXBlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAicHJvdG90eXBlIG9mIHNlbGYncyBwcm9wZXJ0eSAiICsgZm9ybWF0X3Zh
bHVlKHRoaXMubmFtZSkgKyAiIGlzIG5vdCBPYmplY3QucHJvdG90eXBlIik7CiAKICAgICAgICAg
ICAgIHJldHVybjsKQEAgLTgyMiw4ICsxNDcxLDYgQEAgSWRsSW50ZXJmYWNlLnByb3RvdHlwZS50
ZXN0X3NlbGYgPSBmdW5jdGlvbigpCiAKICAgICAgICAgLy8gIiogSXRzIFtbQ29uc3RydWN0XV0g
aW50ZXJuYWwgcHJvcGVydHkgaXMgc2V0IGFzIGRlc2NyaWJlZCBpbgogICAgICAgICAvLyAgICBF
Q01BLTI2MiBzZWN0aW9uIDE5LjIuMi4zLiIKLSAgICAgICAgLy8gVGVzdGVkIGJlbG93IGlmIG5v
IGNvbnN0cnVjdG9yIGlzIGRlZmluZWQuICBUT0RPOiB0ZXN0IGNvbnN0cnVjdG9ycwotICAgICAg
ICAvLyBpZiBkZWZpbmVkLgogCiAgICAgICAgIC8vICIqIEl0cyBAQGhhc0luc3RhbmNlIHByb3Bl
cnR5IGlzIHNldCBhcyBkZXNjcmliZWQgaW4gRUNNQS0yNjIKICAgICAgICAgLy8gICAgc2VjdGlv
biAxOS4yLjMuOCwgdW5sZXNzIG90aGVyd2lzZSBzcGVjaWZpZWQuIgpAQCAtODMyLDI0ICsxNDc5
LDE5IEBAIElkbEludGVyZmFjZS5wcm90b3R5cGUudGVzdF9zZWxmID0gZnVuY3Rpb24oKQogICAg
ICAgICAvLyBFUzYgKHJldiAzMCkgMTkuMS4zLjY6CiAgICAgICAgIC8vICJFbHNlLCBpZiBPIGhh
cyBhIFtbQ2FsbF1dIGludGVybmFsIG1ldGhvZCwgdGhlbiBsZXQgYnVpbHRpblRhZyBiZQogICAg
ICAgICAvLyAiRnVuY3Rpb24iLiIKLSAgICAgICAgYXNzZXJ0X2NsYXNzX3N0cmluZyhzZWxmW3Ro
aXMubmFtZV0sICJGdW5jdGlvbiIsICJjbGFzcyBzdHJpbmcgb2YgIiArIHRoaXMubmFtZSk7Cisg
ICAgICAgIGFzc2VydF9jbGFzc19zdHJpbmcodGhpcy5nZXRfaW50ZXJmYWNlX29iamVjdCgpLCAi
RnVuY3Rpb24iLCAiY2xhc3Mgc3RyaW5nIG9mICIgKyB0aGlzLm5hbWUpOwogCiAgICAgICAgIC8v
ICJUaGUgW1tQcm90b3R5cGVdXSBpbnRlcm5hbCBwcm9wZXJ0eSBvZiBhbiBpbnRlcmZhY2Ugb2Jq
ZWN0IGZvciBhCiAgICAgICAgIC8vIG5vbi1jYWxsYmFjayBpbnRlcmZhY2UgaXMgZGV0ZXJtaW5l
ZCBhcyBmb2xsb3dzOiIKLSAgICAgICAgdmFyIHByb3RvdHlwZSA9IE9iamVjdC5nZXRQcm90b3R5
cGVPZihzZWxmW3RoaXMubmFtZV0pOworICAgICAgICB2YXIgcHJvdG90eXBlID0gT2JqZWN0Lmdl
dFByb3RvdHlwZU9mKHRoaXMuZ2V0X2ludGVyZmFjZV9vYmplY3QoKSk7CiAgICAgICAgIGlmICh0
aGlzLmJhc2UpIHsKICAgICAgICAgICAgIC8vICIqIElmIHRoZSBpbnRlcmZhY2UgaW5oZXJpdHMg
ZnJvbSBzb21lIG90aGVyIGludGVyZmFjZSwgdGhlCiAgICAgICAgICAgICAvLyAgICB2YWx1ZSBv
ZiBbW1Byb3RvdHlwZV1dIGlzIHRoZSBpbnRlcmZhY2Ugb2JqZWN0IGZvciB0aGF0IG90aGVyCiAg
ICAgICAgICAgICAvLyAgICBpbnRlcmZhY2UuIgotICAgICAgICAgICAgdmFyIGhhc19pbnRlcmZh
Y2Vfb2JqZWN0ID0KLSAgICAgICAgICAgICAgICAhdGhpcy5hcnJheQotICAgICAgICAgICAgICAg
ICAgICAgLm1lbWJlcnNbdGhpcy5iYXNlXQotICAgICAgICAgICAgICAgICAgICAgLmhhc19leHRl
bmRlZF9hdHRyaWJ1dGUoIk5vSW50ZXJmYWNlT2JqZWN0Iik7Ci0gICAgICAgICAgICBpZiAoaGFz
X2ludGVyZmFjZV9vYmplY3QpIHsKLSAgICAgICAgICAgICAgICBhc3NlcnRfb3duX3Byb3BlcnR5
KHNlbGYsIHRoaXMuYmFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdz
aG91bGQgaW5oZXJpdCBmcm9tICcgKyB0aGlzLmJhc2UgKwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJywgYnV0IHNlbGYgaGFzIG5vIHN1Y2ggcHJvcGVydHknKTsKLSAgICAg
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHByb3RvdHlwZSwgc2VsZlt0aGlzLmJhc2VdLAorICAg
ICAgICAgICAgdmFyIGluaGVyaXRlZF9pbnRlcmZhY2UgPSB0aGlzLmFycmF5Lm1lbWJlcnNbdGhp
cy5iYXNlXTsKKyAgICAgICAgICAgIGlmICghaW5oZXJpdGVkX2ludGVyZmFjZS5oYXNfZXh0ZW5k
ZWRfYXR0cmlidXRlKCJMZWdhY3lOb0ludGVyZmFjZU9iamVjdCIpKSB7CisgICAgICAgICAgICAg
ICAgaW5oZXJpdGVkX2ludGVyZmFjZS5hc3NlcnRfaW50ZXJmYWNlX29iamVjdF9leGlzdHMoKTsK
KyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHByb3RvdHlwZSwgaW5oZXJpdGVkX2ludGVy
ZmFjZS5nZXRfaW50ZXJmYWNlX29iamVjdCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ3Byb3RvdHlwZSBvZiAnICsgdGhpcy5uYW1lICsgJyBpcyBub3QgJyArCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0aGlzLmJhc2UpOwogICAgICAgICAgICAgfQpAQCAtODYxLDg4
ICsxNTAzLDI1MiBAQCBJZGxJbnRlcmZhY2UucHJvdG90eXBlLnRlc3Rfc2VsZiA9IGZ1bmN0aW9u
KCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgInByb3RvdHlwZSBvZiBzZWxmJ3MgcHJvcGVy
dHkgIiArIGZvcm1hdF92YWx1ZSh0aGlzLm5hbWUpICsgIiBpcyBub3QgRnVuY3Rpb24ucHJvdG90
eXBlIik7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIXRoaXMuaGFzX2V4dGVuZGVkX2F0dHJp
YnV0ZSgiQ29uc3RydWN0b3IiKSkgewotICAgICAgICAgICAgLy8gIlRoZSBpbnRlcm5hbCBbW0Nh
bGxdXSBtZXRob2Qgb2YgdGhlIGludGVyZmFjZSBvYmplY3QgYmVoYXZlcyBhcwotICAgICAgICAg
ICAgLy8gZm9sbG93cyAuIC4gLgotICAgICAgICAgICAgLy8KLSAgICAgICAgICAgIC8vICJJZiBJ
IHdhcyBub3QgZGVjbGFyZWQgd2l0aCBhIFtDb25zdHJ1Y3Rvcl0gZXh0ZW5kZWQgYXR0cmlidXRl
LAotICAgICAgICAgICAgLy8gdGhlbiB0aHJvdyBhIFR5cGVFcnJvci4iCi0gICAgICAgICAgICBh
c3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAg
ICAgc2VsZlt0aGlzLm5hbWVdKCk7Ci0gICAgICAgICAgICB9LmJpbmQodGhpcyksICJpbnRlcmZh
Y2Ugb2JqZWN0IGRpZG4ndCB0aHJvdyBUeXBlRXJyb3Igd2hlbiBjYWxsZWQgYXMgYSBmdW5jdGlv
biIpOwotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9u
KCkgewotICAgICAgICAgICAgICAgIG5ldyBzZWxmW3RoaXMubmFtZV0oKTsKLSAgICAgICAgICAg
IH0uYmluZCh0aGlzKSwgImludGVyZmFjZSBvYmplY3QgZGlkbid0IHRocm93IFR5cGVFcnJvciB3
aGVuIGNhbGxlZCBhcyBhIGNvbnN0cnVjdG9yIik7CisgICAgICAgIC8vIEFsd2F5cyB0ZXN0IGZv
ciBbW0NvbnN0cnVjdF1dOgorICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vaGV5Y2FtL3dl
YmlkbC9pc3N1ZXMvNjk4CisgICAgICAgIGFzc2VydF90cnVlKGlzQ29uc3RydWN0b3IodGhpcy5n
ZXRfaW50ZXJmYWNlX29iamVjdCgpKSwgImludGVyZmFjZSBvYmplY3QgbXVzdCBwYXNzIElzQ29u
c3RydWN0b3IgY2hlY2siKTsKKworICAgICAgICBpZiAoIXRoaXMuY29uc3RydWN0b3JzKCkubGVu
Z3RoKSB7CisgICAgICAgICAgICAvLyAiSWYgSSB3YXMgbm90IGRlY2xhcmVkIHdpdGggYSBjb25z
dHJ1Y3RvciBvcGVyYXRpb24sIHRoZW4gdGhyb3cgYSBUeXBlRXJyb3IuIgorICAgICAgICAgICAg
dmFyIGludGVyZmFjZV9vYmplY3QgPSB0aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0KCk7CisgICAg
ICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKGdsb2JhbE9mKGludGVyZmFjZV9vYmplY3QpLlR5cGVF
cnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgaW50ZXJmYWNlX29iamVjdCgpOwor
ICAgICAgICAgICAgfSwgImludGVyZmFjZSBvYmplY3QgZGlkbid0IHRocm93IFR5cGVFcnJvciB3
aGVuIGNhbGxlZCBhcyBhIGZ1bmN0aW9uIik7CisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2pz
KGdsb2JhbE9mKGludGVyZmFjZV9vYmplY3QpLlR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICAgICAgbmV3IGludGVyZmFjZV9vYmplY3QoKTsKKyAgICAgICAgICAgIH0sICJpbnRl
cmZhY2Ugb2JqZWN0IGRpZG4ndCB0aHJvdyBUeXBlRXJyb3Igd2hlbiBjYWxsZWQgYXMgYSBjb25z
dHJ1Y3RvciIpOwogICAgICAgICB9CiAgICAgfS5iaW5kKHRoaXMpLCB0aGlzLm5hbWUgKyAiIGlu
dGVyZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFjZSBvYmplY3QiKTsK
IAotICAgIGlmICghdGhpcy5pc19jYWxsYmFjaygpKSB7Ci0gICAgICAgIHRlc3QoZnVuY3Rpb24o
KSB7CisgICAgaWYgKHRoaXMuc2hvdWxkX2hhdmVfaW50ZXJmYWNlX29iamVjdCgpICYmICF0aGlz
LmlzX2NhbGxiYWNrKCkpIHsKKyAgICAgICAgc3Vic2V0VGVzdEJ5S2V5KHRoaXMubmFtZSwgdGVz
dCwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAvLyBUaGlzIGZ1bmN0aW9uIHRlc3RzIFdlYklE
TCBhcyBvZiAyMDE0LTEwLTI1LgogICAgICAgICAgICAgLy8gaHR0cHM6Ly9oZXljYW0uZ2l0aHVi
LmlvL3dlYmlkbC8jZXMtaW50ZXJmYWNlLWNhbGwKIAotICAgICAgICAgICAgYXNzZXJ0X293bl9w
cm9wZXJ0eShzZWxmLCB0aGlzLm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJzZWxmIGRvZXMgbm90IGhhdmUgb3duIHByb3BlcnR5ICIgKyBmb3JtYXRfdmFsdWUodGhpcy5u
YW1lKSk7CisgICAgICAgICAgICB0aGlzLmFzc2VydF9pbnRlcmZhY2Vfb2JqZWN0X2V4aXN0cygp
OwogCiAgICAgICAgICAgICAvLyAiSW50ZXJmYWNlIG9iamVjdHMgZm9yIG5vbi1jYWxsYmFjayBp
bnRlcmZhY2VzIE1VU1QgaGF2ZSBhCiAgICAgICAgICAgICAvLyBwcm9wZXJ0eSBuYW1lZCDigJxs
ZW5ndGjigJ0gd2l0aCBhdHRyaWJ1dGVzIHsgW1tXcml0YWJsZV1dOiBmYWxzZSwKICAgICAgICAg
ICAgIC8vIFtbRW51bWVyYWJsZV1dOiBmYWxzZSwgW1tDb25maWd1cmFibGVdXTogdHJ1ZSB9IHdo
b3NlIHZhbHVlIGlzCiAgICAgICAgICAgICAvLyBhIE51bWJlci4iCi0gICAgICAgICAgICBhc3Nl
cnRfb3duX3Byb3BlcnR5KHNlbGZbdGhpcy5uYW1lXSwgImxlbmd0aCIpOwotICAgICAgICAgICAg
dmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNlbGZbdGhpcy5uYW1l
XSwgImxlbmd0aCIpOwotICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKCJnZXQiIGluIGRlc2MsIHRo
aXMubmFtZSArICIubGVuZ3RoIGhhcyBnZXR0ZXIiKTsKLSAgICAgICAgICAgIGFzc2VydF9mYWxz
ZSgic2V0IiBpbiBkZXNjLCB0aGlzLm5hbWUgKyAiLmxlbmd0aCBoYXMgc2V0dGVyIik7Ci0gICAg
ICAgICAgICBhc3NlcnRfZmFsc2UoZGVzYy53cml0YWJsZSwgdGhpcy5uYW1lICsgIi5sZW5ndGgg
aXMgd3JpdGFibGUiKTsKLSAgICAgICAgICAgIGFzc2VydF9mYWxzZShkZXNjLmVudW1lcmFibGUs
IHRoaXMubmFtZSArICIubGVuZ3RoIGlzIGVudW1lcmFibGUiKTsKLSAgICAgICAgICAgIGFzc2Vy
dF90cnVlKGRlc2MuY29uZmlndXJhYmxlLCB0aGlzLm5hbWUgKyAiLmxlbmd0aCBpcyBub3QgY29u
ZmlndXJhYmxlIik7Ci0KLSAgICAgICAgICAgIHZhciBjb25zdHJ1Y3RvcnMgPSB0aGlzLmV4dEF0
dHJzCi0gICAgICAgICAgICAgICAgLmZpbHRlcihmdW5jdGlvbihhdHRyKSB7IHJldHVybiBhdHRy
Lm5hbWUgPT0gIkNvbnN0cnVjdG9yIjsgfSk7CisgICAgICAgICAgICBhc3NlcnRfb3duX3Byb3Bl
cnR5KHRoaXMuZ2V0X2ludGVyZmFjZV9vYmplY3QoKSwgImxlbmd0aCIpOworICAgICAgICAgICAg
dmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRoaXMuZ2V0X2ludGVy
ZmFjZV9vYmplY3QoKSwgImxlbmd0aCIpOworICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKCJnZXQi
IGluIGRlc2MsIHRoaXMubmFtZSArICIubGVuZ3RoIHNob3VsZCBub3QgaGF2ZSBhIGdldHRlciIp
OworICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKCJzZXQiIGluIGRlc2MsIHRoaXMubmFtZSArICIu
bGVuZ3RoIHNob3VsZCBub3QgaGF2ZSBhIHNldHRlciIpOworICAgICAgICAgICAgYXNzZXJ0X2Zh
bHNlKGRlc2Mud3JpdGFibGUsIHRoaXMubmFtZSArICIubGVuZ3RoIHNob3VsZCBub3QgYmUgd3Jp
dGFibGUiKTsKKyAgICAgICAgICAgIGFzc2VydF9mYWxzZShkZXNjLmVudW1lcmFibGUsIHRoaXMu
bmFtZSArICIubGVuZ3RoIHNob3VsZCBub3QgYmUgZW51bWVyYWJsZSIpOworICAgICAgICAgICAg
YXNzZXJ0X3RydWUoZGVzYy5jb25maWd1cmFibGUsIHRoaXMubmFtZSArICIubGVuZ3RoIHNob3Vs
ZCBiZSBjb25maWd1cmFibGUiKTsKKworICAgICAgICAgICAgdmFyIGNvbnN0cnVjdG9ycyA9IHRo
aXMuY29uc3RydWN0b3JzKCk7CiAgICAgICAgICAgICB2YXIgZXhwZWN0ZWRfbGVuZ3RoID0gbWlu
T3ZlcmxvYWRMZW5ndGgoY29uc3RydWN0b3JzKTsKLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHMo
c2VsZlt0aGlzLm5hbWVdLmxlbmd0aCwgZXhwZWN0ZWRfbGVuZ3RoLCAid3JvbmcgdmFsdWUgZm9y
ICIgKyB0aGlzLm5hbWUgKyAiLmxlbmd0aCIpOworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh0
aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0KCkubGVuZ3RoLCBleHBlY3RlZF9sZW5ndGgsICJ3cm9u
ZyB2YWx1ZSBmb3IgIiArIHRoaXMubmFtZSArICIubGVuZ3RoIik7CiAgICAgICAgIH0uYmluZCh0
aGlzKSwgdGhpcy5uYW1lICsgIiBpbnRlcmZhY2Ugb2JqZWN0IGxlbmd0aCIpOwogICAgIH0KIAot
ICAgIGlmICghdGhpcy5pc19jYWxsYmFjaygpIHx8IHRoaXMuaGFzX2NvbnN0YW50cygpKSB7Ci0g
ICAgICAgIHRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAvLyBUaGlzIGZ1bmN0aW9uIHRl
c3RzIFdlYklETCBhcyBvZiAyMDE1LTExLTE3LgotICAgICAgICAgICAgLy8gaHR0cHM6Ly9oZXlj
YW0uZ2l0aHViLmlvL3dlYmlkbC8jaW50ZXJmYWNlLW9iamVjdAorICAgIGlmICh0aGlzLnNob3Vs
ZF9oYXZlX2ludGVyZmFjZV9vYmplY3QoKSkgeworICAgICAgICBzdWJzZXRUZXN0QnlLZXkodGhp
cy5uYW1lLCB0ZXN0LCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIC8vIFRoaXMgZnVuY3Rpb24g
dGVzdHMgV2ViSURMIGFzIG9mIDIwMTUtMTEtMTcuCisgICAgICAgICAgICAvLyBodHRwczovL2hl
eWNhbS5naXRodWIuaW8vd2ViaWRsLyNpbnRlcmZhY2Utb2JqZWN0CisKKyAgICAgICAgICAgIHRo
aXMuYXNzZXJ0X2ludGVyZmFjZV9vYmplY3RfZXhpc3RzKCk7CisKKyAgICAgICAgICAgIC8vICJB
bGwgaW50ZXJmYWNlIG9iamVjdHMgbXVzdCBoYXZlIGEgcHJvcGVydHkgbmFtZWQg4oCcbmFtZeKA
nSB3aXRoCisgICAgICAgICAgICAvLyBhdHRyaWJ1dGVzIHsgW1tXcml0YWJsZV1dOiBmYWxzZSwg
W1tFbnVtZXJhYmxlXV06IGZhbHNlLAorICAgICAgICAgICAgLy8gW1tDb25maWd1cmFibGVdXTog
dHJ1ZSB9IHdob3NlIHZhbHVlIGlzIHRoZSBpZGVudGlmaWVyIG9mIHRoZQorICAgICAgICAgICAg
Ly8gY29ycmVzcG9uZGluZyBpbnRlcmZhY2UuIgorCisgICAgICAgICAgICBhc3NlcnRfb3duX3By
b3BlcnR5KHRoaXMuZ2V0X2ludGVyZmFjZV9vYmplY3QoKSwgIm5hbWUiKTsKKyAgICAgICAgICAg
IHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0aGlzLmdldF9pbnRl
cmZhY2Vfb2JqZWN0KCksICJuYW1lIik7CisgICAgICAgICAgICBhc3NlcnRfZmFsc2UoImdldCIg
aW4gZGVzYywgdGhpcy5uYW1lICsgIi5uYW1lIHNob3VsZCBub3QgaGF2ZSBhIGdldHRlciIpOwor
ICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKCJzZXQiIGluIGRlc2MsIHRoaXMubmFtZSArICIubmFt
ZSBzaG91bGQgbm90IGhhdmUgYSBzZXR0ZXIiKTsKKyAgICAgICAgICAgIGFzc2VydF9mYWxzZShk
ZXNjLndyaXRhYmxlLCB0aGlzLm5hbWUgKyAiLm5hbWUgc2hvdWxkIG5vdCBiZSB3cml0YWJsZSIp
OworICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKGRlc2MuZW51bWVyYWJsZSwgdGhpcy5uYW1lICsg
Ii5uYW1lIHNob3VsZCBub3QgYmUgZW51bWVyYWJsZSIpOworICAgICAgICAgICAgYXNzZXJ0X3Ry
dWUoZGVzYy5jb25maWd1cmFibGUsIHRoaXMubmFtZSArICIubmFtZSBzaG91bGQgYmUgY29uZmln
dXJhYmxlIik7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHRoaXMuZ2V0X2ludGVyZmFjZV9v
YmplY3QoKS5uYW1lLCB0aGlzLm5hbWUsICJ3cm9uZyB2YWx1ZSBmb3IgIiArIHRoaXMubmFtZSAr
ICIubmFtZSIpOworICAgICAgICB9LmJpbmQodGhpcyksIHRoaXMubmFtZSArICIgaW50ZXJmYWNl
IG9iamVjdCBuYW1lIik7CisgICAgfQorCisKKyAgICBpZiAodGhpcy5oYXNfZXh0ZW5kZWRfYXR0
cmlidXRlKCJMZWdhY3lXaW5kb3dBbGlhcyIpKSB7CisgICAgICAgIHN1YnNldFRlc3RCeUtleSh0
aGlzLm5hbWUsIHRlc3QsIGZ1bmN0aW9uKCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGFs
aWFzQXR0cnMgPSB0aGlzLmV4dEF0dHJzLmZpbHRlcihmdW5jdGlvbihvKSB7IHJldHVybiBvLm5h
bWUgPT09ICJMZWdhY3lXaW5kb3dBbGlhcyI7IH0pOworICAgICAgICAgICAgaWYgKGFsaWFzQXR0
cnMubGVuZ3RoID4gMSkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBJZGxIYXJuZXNzRXJy
b3IoIkludmFsaWQgSURMOiBtdWx0aXBsZSBMZWdhY3lXaW5kb3dBbGlhcyBleHRlbmRlZCBhdHRy
aWJ1dGVzIG9uICIgKyB0aGlzLm5hbWUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYg
KHRoaXMuaXNfY2FsbGJhY2soKSkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBJZGxIYXJu
ZXNzRXJyb3IoIkludmFsaWQgSURMOiBMZWdhY3lXaW5kb3dBbGlhcyBleHRlbmRlZCBhdHRyaWJ1
dGUgb24gbm9uLWludGVyZmFjZSAiICsgdGhpcy5uYW1lKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGlmICghdGhpcy5leHBvc3VyZVNldC5oYXMoIldpbmRvdyIpKSB7CisgICAgICAgICAg
ICAgICAgdGhyb3cgbmV3IElkbEhhcm5lc3NFcnJvcigiSW52YWxpZCBJREw6IExlZ2FjeVdpbmRv
d0FsaWFzIGV4dGVuZGVkIGF0dHJpYnV0ZSBvbiAiICsgdGhpcy5uYW1lICsgIiB3aGljaCBpcyBu
b3QgZXhwb3NlZCBpbiBXaW5kb3ciKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIFRP
RE86IHdoZW4gdGVzdGluZyBvZiBbTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3RdIGludGVyZmFjZXMg
aXMgc3VwcG9ydGVkLAorICAgICAgICAgICAgLy8gY2hlY2sgdGhhdCBpdCdzIG5vdCBzcGVjaWZp
ZWQgdG9nZXRoZXIgd2l0aCBMZWdhY3lXaW5kb3dBbGlhcy4KKworICAgICAgICAgICAgLy8gVE9E
TzogbWF5YmUgY2hlY2sgdGhhdCBbTGVnYWN5V2luZG93QWxpYXNdwqBpcyBub3Qgc3BlY2lmaWVk
IG9uIGEgcGFydGlhbCBpbnRlcmZhY2UuCiAKLSAgICAgICAgICAgIGFzc2VydF9vd25fcHJvcGVy
dHkoc2VsZiwgdGhpcy5uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2Vs
ZiBkb2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0eSAiICsgZm9ybWF0X3ZhbHVlKHRoaXMubmFtZSkp
OworICAgICAgICAgICAgdmFyIHJocyA9IGFsaWFzQXR0cnNbMF0ucmhzOworICAgICAgICAgICAg
aWYgKCFyaHMpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWRsSGFybmVzc0Vycm9yKCJJ
bnZhbGlkIElETDogTGVnYWN5V2luZG93QWxpYXMgZXh0ZW5kZWQgYXR0cmlidXRlIG9uICIgKyB0
aGlzLm5hbWUgKyAiIHdpdGhvdXQgaWRlbnRpZmllciIpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgdmFyIGFsaWFzZXM7CisgICAgICAgICAgICBpZiAocmhzLnR5cGUgPT09ICJpZGVudGlm
aWVyLWxpc3QiKSB7CisgICAgICAgICAgICAgICAgYWxpYXNlcyA9IHJocy52YWx1ZS5tYXAoaWQg
PT4gaWQudmFsdWUpOworICAgICAgICAgICAgfSBlbHNlIHsgLy8gcmhzLnR5cGUgPT09IGlkZW50
aWZpZXIKKyAgICAgICAgICAgICAgICBhbGlhc2VzID0gWyByaHMudmFsdWUgXTsKKyAgICAgICAg
ICAgIH0KIAotICAgICAgICAgICAgLy8gIkFsbCBpbnRlcmZhY2Ugb2JqZWN0cyBtdXN0IGhhdmUg
YSBwcm9wZXJ0eSBuYW1lZCDigJxuYW1l4oCdIHdpdGgKLSAgICAgICAgICAgIC8vIGF0dHJpYnV0
ZXMgeyBbW1dyaXRhYmxlXV06IGZhbHNlLCBbW0VudW1lcmFibGVdXTogZmFsc2UsCi0gICAgICAg
ICAgICAvLyBbW0NvbmZpZ3VyYWJsZV1dOiB0cnVlIH0gd2hvc2UgdmFsdWUgaXMgdGhlIGlkZW50
aWZpZXIgb2YgdGhlCi0gICAgICAgICAgICAvLyBjb3JyZXNwb25kaW5nIGludGVyZmFjZS4iCisg
ICAgICAgICAgICAvLyBPSyBub3cgYWN0dWFsbHkgY2hlY2sgdGhlIGFsaWFzZXMuLi4KKyAgICAg
ICAgICAgIHZhciBhbGlhczsKKyAgICAgICAgICAgIGlmIChleHBvc2VkX2luKGV4cG9zdXJlX3Nl
dCh0aGlzLCB0aGlzLmV4cG9zdXJlU2V0KSkgJiYgJ2RvY3VtZW50JyBpbiBzZWxmKSB7CisgICAg
ICAgICAgICAgICAgZm9yIChhbGlhcyBvZiBhbGlhc2VzKSB7CisgICAgICAgICAgICAgICAgICAg
IGFzc2VydF90cnVlKGFsaWFzIGluIHNlbGYsIGFsaWFzICsgIiBzaG91bGQgZXhpc3QiKTsKKyAg
ICAgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhzZWxmW2FsaWFzXSwgdGhpcy5nZXRfaW50
ZXJmYWNlX29iamVjdCgpLCAic2VsZi4iICsgYWxpYXMgKyAiIHNob3VsZCBiZSB0aGUgc2FtZSB2
YWx1ZSBhcyBzZWxmLiIgKyB0aGlzLmdldF9xdWFsaWZpZWRfbmFtZSgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNlbGYs
IGFsaWFzKTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhkZXNjLnZhbHVlLCB0
aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0KCksICJ3cm9uZyB2YWx1ZSBpbiAiICsgYWxpYXMgKyAi
IHByb3BlcnR5IGRlc2NyaXB0b3IiKTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X3RydWUo
ZGVzYy53cml0YWJsZSwgYWxpYXMgKyAiIHNob3VsZCBiZSB3cml0YWJsZSIpOworICAgICAgICAg
ICAgICAgICAgICBhc3NlcnRfZmFsc2UoZGVzYy5lbnVtZXJhYmxlLCBhbGlhcyArICIgc2hvdWxk
IG5vdCBiZSBlbnVtZXJhYmxlIik7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydF90cnVlKGRl
c2MuY29uZmlndXJhYmxlLCBhbGlhcyArICIgc2hvdWxkIGJlIGNvbmZpZ3VyYWJsZSIpOworICAg
ICAgICAgICAgICAgICAgICBhc3NlcnRfZmFsc2UoJ2dldCcgaW4gZGVzYywgYWxpYXMgKyAiIHNo
b3VsZCBub3QgaGF2ZSBhIGdldHRlciIpOworICAgICAgICAgICAgICAgICAgICBhc3NlcnRfZmFs
c2UoJ3NldCcgaW4gZGVzYywgYWxpYXMgKyAiIHNob3VsZCBub3QgaGF2ZSBhIHNldHRlciIpOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
Zm9yIChhbGlhcyBvZiBhbGlhc2VzKSB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydF9mYWxz
ZShhbGlhcyBpbiBzZWxmLCBhbGlhcyArICIgc2hvdWxkIG5vdCBleGlzdCIpOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0
eShzZWxmW3RoaXMubmFtZV0sICJuYW1lIik7Ci0gICAgICAgICAgICB2YXIgZGVzYyA9IE9iamVj
dC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc2VsZlt0aGlzLm5hbWVdLCAibmFtZSIpOwotICAg
ICAgICAgICAgYXNzZXJ0X2ZhbHNlKCJnZXQiIGluIGRlc2MsIHRoaXMubmFtZSArICIubmFtZSBo
YXMgZ2V0dGVyIik7Ci0gICAgICAgICAgICBhc3NlcnRfZmFsc2UoInNldCIgaW4gZGVzYywgdGhp
cy5uYW1lICsgIi5uYW1lIGhhcyBzZXR0ZXIiKTsKLSAgICAgICAgICAgIGFzc2VydF9mYWxzZShk
ZXNjLndyaXRhYmxlLCB0aGlzLm5hbWUgKyAiLm5hbWUgaXMgd3JpdGFibGUiKTsKLSAgICAgICAg
ICAgIGFzc2VydF9mYWxzZShkZXNjLmVudW1lcmFibGUsIHRoaXMubmFtZSArICIubmFtZSBpcyBl
bnVtZXJhYmxlIik7Ci0gICAgICAgICAgICBhc3NlcnRfdHJ1ZShkZXNjLmNvbmZpZ3VyYWJsZSwg
dGhpcy5uYW1lICsgIi5uYW1lIGlzIG5vdCBjb25maWd1cmFibGUiKTsKLSAgICAgICAgICAgIGFz
c2VydF9lcXVhbHMoc2VsZlt0aGlzLm5hbWVdLm5hbWUsIHRoaXMubmFtZSwgIndyb25nIHZhbHVl
IGZvciAiICsgdGhpcy5uYW1lICsgIi5uYW1lIik7Ci0gICAgICAgIH0uYmluZCh0aGlzKSwgdGhp
cy5uYW1lICsgIiBpbnRlcmZhY2Ugb2JqZWN0IG5hbWUiKTsKKyAgICAgICAgfS5iaW5kKHRoaXMp
LCB0aGlzLm5hbWUgKyAiIGludGVyZmFjZTogbGVnYWN5IHdpbmRvdyBhbGlhcyIpOwogICAgIH0K
IAotICAgIC8vIFRPRE86IFRlc3QgbmFtZWQgY29uc3RydWN0b3JzIGlmIEkgZmluZCBhbnkgaW50
ZXJmYWNlcyB0aGF0IGhhdmUgdGhlbS4KKyAgICBpZiAodGhpcy5oYXNfZXh0ZW5kZWRfYXR0cmli
dXRlKCJMZWdhY3lGYWN0b3J5RnVuY3Rpb24iKSkgeworICAgICAgICB2YXIgY29uc3RydWN0b3Jz
ID0gdGhpcy5leHRBdHRycworICAgICAgICAgICAgLmZpbHRlcihmdW5jdGlvbihhdHRyKSB7IHJl
dHVybiBhdHRyLm5hbWUgPT0gIkxlZ2FjeUZhY3RvcnlGdW5jdGlvbiI7IH0pOworICAgICAgICBp
ZiAoY29uc3RydWN0b3JzLmxlbmd0aCAhPT0gMSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElk
bEhhcm5lc3NFcnJvcigiSW50ZXJuYWwgZXJyb3I6IG1pc3Npbmcgc3VwcG9ydCBmb3IgbXVsdGlw
bGUgTGVnYWN5RmFjdG9yeUZ1bmN0aW9uIGV4dGVuZGVkIGF0dHJpYnV0ZXMiKTsKKyAgICAgICAg
fQorICAgICAgICB2YXIgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcnNbMF07CisgICAgICAgIHZh
ciBtaW5fbGVuZ3RoID0gbWluT3ZlcmxvYWRMZW5ndGgoW2NvbnN0cnVjdG9yXSk7CisKKyAgICAg
ICAgc3Vic2V0VGVzdEJ5S2V5KHRoaXMubmFtZSwgdGVzdCwgZnVuY3Rpb24oKQorICAgICAgICB7
CisgICAgICAgICAgICAvLyBUaGlzIGZ1bmN0aW9uIHRlc3RzIFdlYklETCBhcyBvZiAyMDE5LTAx
LTE0LgorCisgICAgICAgICAgICAvLyAiZm9yIGV2ZXJ5IFtMZWdhY3lGYWN0b3J5RnVuY3Rpb25d
IGV4dGVuZGVkIGF0dHJpYnV0ZSBvbiBhbiBleHBvc2VkCisgICAgICAgICAgICAvLyBpbnRlcmZh
Y2UsIGEgY29ycmVzcG9uZGluZyBwcm9wZXJ0eSBtdXN0IGV4aXN0IG9uIHRoZSBFQ01BU2NyaXB0
CisgICAgICAgICAgICAvLyBnbG9iYWwgb2JqZWN0LiBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkg
aXMgdGhlCisgICAgICAgICAgICAvLyBbTGVnYWN5RmFjdG9yeUZ1bmN0aW9uXSdzIGlkZW50aWZp
ZXIsIGFuZCBpdHMgdmFsdWUgaXMgYW4gb2JqZWN0CisgICAgICAgICAgICAvLyBjYWxsZWQgYSBu
YW1lZCBjb25zdHJ1Y3RvciwgLi4uIC4gVGhlIHByb3BlcnR5IGhhcyB0aGUgYXR0cmlidXRlcwor
ICAgICAgICAgICAgLy8geyBbW1dyaXRhYmxlXV06IHRydWUsIFtbRW51bWVyYWJsZV1dOiBmYWxz
ZSwKKyAgICAgICAgICAgIC8vIFtbQ29uZmlndXJhYmxlXV06IHRydWUgfS4iCisgICAgICAgICAg
ICB2YXIgbmFtZSA9IGNvbnN0cnVjdG9yLnJocy52YWx1ZTsKKyAgICAgICAgICAgIGFzc2VydF9v
d25fcHJvcGVydHkoc2VsZiwgbmFtZSk7CisgICAgICAgICAgICB2YXIgZGVzYyA9IE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc2VsZiwgbmFtZSk7CisgICAgICAgICAgICBhc3NlcnRf
ZXF1YWxzKGRlc2MudmFsdWUsIHNlbGZbbmFtZV0sICJ3cm9uZyB2YWx1ZSBpbiAiICsgbmFtZSAr
ICIgcHJvcGVydHkgZGVzY3JpcHRvciIpOworICAgICAgICAgICAgYXNzZXJ0X3RydWUoZGVzYy53
cml0YWJsZSwgbmFtZSArICIgc2hvdWxkIGJlIHdyaXRhYmxlIik7CisgICAgICAgICAgICBhc3Nl
cnRfZmFsc2UoZGVzYy5lbnVtZXJhYmxlLCBuYW1lICsgIiBzaG91bGQgbm90IGJlIGVudW1lcmFi
bGUiKTsKKyAgICAgICAgICAgIGFzc2VydF90cnVlKGRlc2MuY29uZmlndXJhYmxlLCBuYW1lICsg
IiBzaG91bGQgYmUgY29uZmlndXJhYmxlIik7CisgICAgICAgICAgICBhc3NlcnRfZmFsc2UoImdl
dCIgaW4gZGVzYywgbmFtZSArICIgc2hvdWxkIG5vdCBoYXZlIGEgZ2V0dGVyIik7CisgICAgICAg
ICAgICBhc3NlcnRfZmFsc2UoInNldCIgaW4gZGVzYywgbmFtZSArICIgc2hvdWxkIG5vdCBoYXZl
IGEgc2V0dGVyIik7CisgICAgICAgIH0uYmluZCh0aGlzKSwgdGhpcy5uYW1lICsgIiBpbnRlcmZh
Y2U6IG5hbWVkIGNvbnN0cnVjdG9yIik7CisKKyAgICAgICAgc3Vic2V0VGVzdEJ5S2V5KHRoaXMu
bmFtZSwgdGVzdCwgZnVuY3Rpb24oKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBUaGlzIGZ1
bmN0aW9uIHRlc3RzIFdlYklETCBhcyBvZiAyMDE5LTAxLTE0LgorCisgICAgICAgICAgICAvLyAi
Mi4gTGV0IEYgYmUgISBDcmVhdGVCdWlsdGluRnVuY3Rpb24ocmVhbG0sIHN0ZXBzLAorICAgICAg
ICAgICAgLy8gICAgIHJlYWxtLltbSW50cmluc2ljc11dLltbJUZ1bmN0aW9uUHJvdG90eXBlJV1d
KS4iCisgICAgICAgICAgICB2YXIgbmFtZSA9IGNvbnN0cnVjdG9yLnJocy52YWx1ZTsKKyAgICAg
ICAgICAgIHZhciB2YWx1ZSA9IHNlbGZbbmFtZV07CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxz
KHR5cGVvZiB2YWx1ZSwgImZ1bmN0aW9uIiwgInR5cGUgb2YgdmFsdWUgaW4gIiArIG5hbWUgKyAi
IHByb3BlcnR5IGRlc2NyaXB0b3IiKTsKKyAgICAgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKHZh
bHVlLCB0aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0KCksICJ3cm9uZyB2YWx1ZSBpbiAiICsgbmFt
ZSArICIgcHJvcGVydHkgZGVzY3JpcHRvciIpOworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhP
YmplY3QuZ2V0UHJvdG90eXBlT2YodmFsdWUpLCBGdW5jdGlvbi5wcm90b3R5cGUsICJ3cm9uZyB2
YWx1ZSBmb3IgIiArIG5hbWUgKyAiJ3MgcHJvdG90eXBlIik7CisgICAgICAgIH0uYmluZCh0aGlz
KSwgdGhpcy5uYW1lICsgIiBpbnRlcmZhY2U6IG5hbWVkIGNvbnN0cnVjdG9yIG9iamVjdCIpOwor
CisgICAgICAgIHN1YnNldFRlc3RCeUtleSh0aGlzLm5hbWUsIHRlc3QsIGZ1bmN0aW9uKCkKKyAg
ICAgICAgeworICAgICAgICAgICAgLy8gVGhpcyBmdW5jdGlvbiB0ZXN0cyBXZWJJREwgYXMgb2Yg
MjAxOS0wMS0xNC4KKworICAgICAgICAgICAgLy8gIjcuIExldCBwcm90byBiZSB0aGUgaW50ZXJm
YWNlIHByb3RvdHlwZSBvYmplY3Qgb2YgaW50ZXJmYWNlIEkKKyAgICAgICAgICAgIC8vICAgICBp
biByZWFsbS4KKyAgICAgICAgICAgIC8vICI4LiBQZXJmb3JtICEgRGVmaW5lUHJvcGVydHlPclRo
cm93KEYsICJwcm90b3R5cGUiLAorICAgICAgICAgICAgLy8gICAgIFByb3BlcnR5RGVzY3JpcHRv
cnsKKyAgICAgICAgICAgIC8vICAgICAgICAgW1tWYWx1ZV1dOiBwcm90bywgW1tXcml0YWJsZV1d
OiBmYWxzZSwKKyAgICAgICAgICAgIC8vICAgICAgICAgW1tFbnVtZXJhYmxlXV06IGZhbHNlLCBb
W0NvbmZpZ3VyYWJsZV1dOiBmYWxzZQorICAgICAgICAgICAgLy8gICAgIH0pLiIKKyAgICAgICAg
ICAgIHZhciBuYW1lID0gY29uc3RydWN0b3IucmhzLnZhbHVlOworICAgICAgICAgICAgdmFyIGV4
cGVjdGVkID0gdGhpcy5nZXRfaW50ZXJmYWNlX29iamVjdCgpLnByb3RvdHlwZTsKKyAgICAgICAg
ICAgIHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzZWxmW25hbWVd
LCAicHJvdG90eXBlIik7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGRlc2MudmFsdWUsIGV4
cGVjdGVkLCAid3JvbmcgdmFsdWUgZm9yICIgKyBuYW1lICsgIi5wcm90b3R5cGUiKTsKKyAgICAg
ICAgICAgIGFzc2VydF9mYWxzZShkZXNjLndyaXRhYmxlLCAicHJvdG90eXBlIHNob3VsZCBub3Qg
YmUgd3JpdGFibGUiKTsKKyAgICAgICAgICAgIGFzc2VydF9mYWxzZShkZXNjLmVudW1lcmFibGUs
ICJwcm90b3R5cGUgc2hvdWxkIG5vdCBiZSBlbnVtZXJhYmxlIik7CisgICAgICAgICAgICBhc3Nl
cnRfZmFsc2UoZGVzYy5jb25maWd1cmFibGUsICJwcm90b3R5cGUgc2hvdWxkIG5vdCBiZSBjb25m
aWd1cmFibGUiKTsKKyAgICAgICAgICAgIGFzc2VydF9mYWxzZSgiZ2V0IiBpbiBkZXNjLCAicHJv
dG90eXBlIHNob3VsZCBub3QgaGF2ZSBhIGdldHRlciIpOworICAgICAgICAgICAgYXNzZXJ0X2Zh
bHNlKCJzZXQiIGluIGRlc2MsICJwcm90b3R5cGUgc2hvdWxkIG5vdCBoYXZlIGEgc2V0dGVyIik7
CisgICAgICAgIH0uYmluZCh0aGlzKSwgdGhpcy5uYW1lICsgIiBpbnRlcmZhY2U6IG5hbWVkIGNv
bnN0cnVjdG9yIHByb3RvdHlwZSBwcm9wZXJ0eSIpOworCisgICAgICAgIHN1YnNldFRlc3RCeUtl
eSh0aGlzLm5hbWUsIHRlc3QsIGZ1bmN0aW9uKCkKKyAgICAgICAgeworICAgICAgICAgICAgLy8g
VGhpcyBmdW5jdGlvbiB0ZXN0cyBXZWJJREwgYXMgb2YgMjAxOS0wMS0xNC4KKworICAgICAgICAg
ICAgLy8gIjMuIFBlcmZvcm0gISBTZXRGdW5jdGlvbk5hbWUoRiwgaWQpLiIKKyAgICAgICAgICAg
IHZhciBuYW1lID0gY29uc3RydWN0b3IucmhzLnZhbHVlOworICAgICAgICAgICAgdmFyIGRlc2Mg
PSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNlbGZbbmFtZV0sICJuYW1lIik7Cisg
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGRlc2MudmFsdWUsIG5hbWUsICJ3cm9uZyB2YWx1ZSBm
b3IgIiArIG5hbWUgKyAiLm5hbWUiKTsKKyAgICAgICAgICAgIGFzc2VydF9mYWxzZShkZXNjLndy
aXRhYmxlLCAibmFtZSBzaG91bGQgbm90IGJlIHdyaXRhYmxlIik7CisgICAgICAgICAgICBhc3Nl
cnRfZmFsc2UoZGVzYy5lbnVtZXJhYmxlLCAibmFtZSBzaG91bGQgbm90IGJlIGVudW1lcmFibGUi
KTsKKyAgICAgICAgICAgIGFzc2VydF90cnVlKGRlc2MuY29uZmlndXJhYmxlLCAibmFtZSBzaG91
bGQgYmUgY29uZmlndXJhYmxlIik7CisgICAgICAgICAgICBhc3NlcnRfZmFsc2UoImdldCIgaW4g
ZGVzYywgIm5hbWUgc2hvdWxkIG5vdCBoYXZlIGEgZ2V0dGVyIik7CisgICAgICAgICAgICBhc3Nl
cnRfZmFsc2UoInNldCIgaW4gZGVzYywgIm5hbWUgc2hvdWxkIG5vdCBoYXZlIGEgc2V0dGVyIik7
CisgICAgICAgIH0uYmluZCh0aGlzKSwgdGhpcy5uYW1lICsgIiBpbnRlcmZhY2U6IG5hbWVkIGNv
bnN0cnVjdG9yIG5hbWUiKTsKKworICAgICAgICBzdWJzZXRUZXN0QnlLZXkodGhpcy5uYW1lLCB0
ZXN0LCBmdW5jdGlvbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIFRoaXMgZnVuY3Rpb24g
dGVzdHMgV2ViSURMIGFzIG9mIDIwMTktMDEtMTQuCisKKyAgICAgICAgICAgIC8vICI0LiBJbml0
aWFsaXplIFMgdG8gdGhlIGVmZmVjdGl2ZSBvdmVybG9hZCBzZXQgZm9yIGNvbnN0cnVjdG9ycwor
ICAgICAgICAgICAgLy8gICAgIHdpdGggaWRlbnRpZmllciBpZCBvbiBpbnRlcmZhY2UgSSBhbmQg
d2l0aCBhcmd1bWVudCBjb3VudCAwLgorICAgICAgICAgICAgLy8gIjUuIExldCBsZW5ndGggYmUg
dGhlIGxlbmd0aCBvZiB0aGUgc2hvcnRlc3QgYXJndW1lbnQgbGlzdCBvZgorICAgICAgICAgICAg
Ly8gICAgIHRoZSBlbnRyaWVzIGluIFMuCisgICAgICAgICAgICAvLyAiNi4gUGVyZm9ybSAhIFNl
dEZ1bmN0aW9uTGVuZ3RoKEYsIGxlbmd0aCkuIgorICAgICAgICAgICAgdmFyIG5hbWUgPSBjb25z
dHJ1Y3Rvci5yaHMudmFsdWU7CisgICAgICAgICAgICB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3Ioc2VsZltuYW1lXSwgImxlbmd0aCIpOworICAgICAgICAgICAgYXNz
ZXJ0X2VxdWFscyhkZXNjLnZhbHVlLCBtaW5fbGVuZ3RoLCAid3JvbmcgdmFsdWUgZm9yICIgKyBu
YW1lICsgIi5sZW5ndGgiKTsKKyAgICAgICAgICAgIGFzc2VydF9mYWxzZShkZXNjLndyaXRhYmxl
LCAibGVuZ3RoIHNob3VsZCBub3QgYmUgd3JpdGFibGUiKTsKKyAgICAgICAgICAgIGFzc2VydF9m
YWxzZShkZXNjLmVudW1lcmFibGUsICJsZW5ndGggc2hvdWxkIG5vdCBiZSBlbnVtZXJhYmxlIik7
CisgICAgICAgICAgICBhc3NlcnRfdHJ1ZShkZXNjLmNvbmZpZ3VyYWJsZSwgImxlbmd0aCBzaG91
bGQgYmUgY29uZmlndXJhYmxlIik7CisgICAgICAgICAgICBhc3NlcnRfZmFsc2UoImdldCIgaW4g
ZGVzYywgImxlbmd0aCBzaG91bGQgbm90IGhhdmUgYSBnZXR0ZXIiKTsKKyAgICAgICAgICAgIGFz
c2VydF9mYWxzZSgic2V0IiBpbiBkZXNjLCAibGVuZ3RoIHNob3VsZCBub3QgaGF2ZSBhIHNldHRl
ciIpOworICAgICAgICB9LmJpbmQodGhpcyksIHRoaXMubmFtZSArICIgaW50ZXJmYWNlOiBuYW1l
ZCBjb25zdHJ1Y3RvciBsZW5ndGgiKTsKKworICAgICAgICBzdWJzZXRUZXN0QnlLZXkodGhpcy5u
YW1lLCB0ZXN0LCBmdW5jdGlvbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIFRoaXMgZnVu
Y3Rpb24gdGVzdHMgV2ViSURMIGFzIG9mIDIwMTktMDEtMTQuCisKKyAgICAgICAgICAgIC8vICIx
LiBMZXQgc3RlcHMgYmUgdGhlIGZvbGxvd2luZyBzdGVwczoKKyAgICAgICAgICAgIC8vICIgICAg
MS4gSWYgTmV3VGFyZ2V0IGlzIHVuZGVmaW5lZCwgdGhlbiB0aHJvdyBhIFR5cGVFcnJvci4iCisg
ICAgICAgICAgICB2YXIgbmFtZSA9IGNvbnN0cnVjdG9yLnJocy52YWx1ZTsKKyAgICAgICAgICAg
IHZhciBhcmdzID0gY29uc3RydWN0b3IuYXJndW1lbnRzLm1hcChmdW5jdGlvbihhcmcpIHsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlX3N1aXRhYmxlX29iamVjdChhcmcuaWRsVHlwZSk7
CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGFzc2VydF90aHJvd3NfanMoZ2xvYmFsT2Yo
c2VsZltuYW1lXSkuVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBzZWxm
W25hbWVdKC4uLmFyZ3MpOworICAgICAgICAgICAgfS5iaW5kKHRoaXMpKTsKKyAgICAgICAgfS5i
aW5kKHRoaXMpLCB0aGlzLm5hbWUgKyAiIGludGVyZmFjZTogbmFtZWQgY29uc3RydWN0b3Igd2l0
aG91dCAnbmV3JyIpOworICAgIH0KIAotICAgIHRlc3QoZnVuY3Rpb24oKQorICAgIHN1YnNldFRl
c3RCeUtleSh0aGlzLm5hbWUsIHRlc3QsIGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIC8vIFRo
aXMgZnVuY3Rpb24gdGVzdHMgV2ViSURMIGFzIG9mIDIwMTUtMDEtMjEuCiAgICAgICAgIC8vIGh0
dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2ludGVyZmFjZS1vYmplY3QKIAotICAgICAg
ICBpZiAodGhpcy5pc19jYWxsYmFjaygpICYmICF0aGlzLmhhc19jb25zdGFudHMoKSkgeworICAg
ICAgICBpZiAoIXRoaXMuc2hvdWxkX2hhdmVfaW50ZXJmYWNlX29iamVjdCgpKSB7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KHNl
bGYsIHRoaXMubmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2VsZiBkb2VzIG5v
dCBoYXZlIG93biBwcm9wZXJ0eSAiICsgZm9ybWF0X3ZhbHVlKHRoaXMubmFtZSkpOworICAgICAg
ICB0aGlzLmFzc2VydF9pbnRlcmZhY2Vfb2JqZWN0X2V4aXN0cygpOwogCiAgICAgICAgIGlmICh0
aGlzLmlzX2NhbGxiYWNrKCkpIHsKLSAgICAgICAgICAgIGFzc2VydF9mYWxzZSgicHJvdG90eXBl
IiBpbiBzZWxmW3RoaXMubmFtZV0sCisgICAgICAgICAgICBhc3NlcnRfZmFsc2UoInByb3RvdHlw
ZSIgaW4gdGhpcy5nZXRfaW50ZXJmYWNlX29iamVjdCgpLAogICAgICAgICAgICAgICAgICAgICAg
ICAgIHRoaXMubmFtZSArICcgc2hvdWxkIG5vdCBoYXZlIGEgInByb3RvdHlwZSIgcHJvcGVydHkn
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtOTU0LDE4ICsxNzYwLDE4IEBA
IElkbEludGVyZmFjZS5wcm90b3R5cGUudGVzdF9zZWxmID0gZnVuY3Rpb24oKQogICAgICAgICAv
LyBwcm9wZXJ0aWVzIHRoYXQgY29ycmVzcG9uZCB0byB0aGUgcmVndWxhciBhdHRyaWJ1dGVzIGFu
ZCByZWd1bGFyCiAgICAgICAgIC8vIG9wZXJhdGlvbnMgZGVmaW5lZCBvbiB0aGUgaW50ZXJmYWNl
LCBhbmQgaXMgZGVzY3JpYmVkIGluIG1vcmUgZGV0YWlsCiAgICAgICAgIC8vIGluIHNlY3Rpb24g
NC41LjQgYmVsb3cuIgotICAgICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KHNlbGZbdGhpcy5uYW1l
XSwgInByb3RvdHlwZSIsCisgICAgICAgIGFzc2VydF9vd25fcHJvcGVydHkodGhpcy5nZXRfaW50
ZXJmYWNlX29iamVjdCgpLCAicHJvdG90eXBlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnaW50ZXJmYWNlICInICsgdGhpcy5uYW1lICsgJyIgZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVy
dHkgInByb3RvdHlwZSInKTsKLSAgICAgICAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKHNlbGZbdGhpcy5uYW1lXSwgInByb3RvdHlwZSIpOwotICAgICAgICBhc3Nl
cnRfZmFsc2UoImdldCIgaW4gZGVzYywgdGhpcy5uYW1lICsgIi5wcm90b3R5cGUgaGFzIGdldHRl
ciIpOwotICAgICAgICBhc3NlcnRfZmFsc2UoInNldCIgaW4gZGVzYywgdGhpcy5uYW1lICsgIi5w
cm90b3R5cGUgaGFzIHNldHRlciIpOwotICAgICAgICBhc3NlcnRfZmFsc2UoZGVzYy53cml0YWJs
ZSwgdGhpcy5uYW1lICsgIi5wcm90b3R5cGUgaXMgd3JpdGFibGUiKTsKLSAgICAgICAgYXNzZXJ0
X2ZhbHNlKGRlc2MuZW51bWVyYWJsZSwgdGhpcy5uYW1lICsgIi5wcm90b3R5cGUgaXMgZW51bWVy
YWJsZSIpOwotICAgICAgICBhc3NlcnRfZmFsc2UoZGVzYy5jb25maWd1cmFibGUsIHRoaXMubmFt
ZSArICIucHJvdG90eXBlIGlzIGNvbmZpZ3VyYWJsZSIpOworICAgICAgICB2YXIgZGVzYyA9IE9i
amVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGhpcy5nZXRfaW50ZXJmYWNlX29iamVjdCgp
LCAicHJvdG90eXBlIik7CisgICAgICAgIGFzc2VydF9mYWxzZSgiZ2V0IiBpbiBkZXNjLCB0aGlz
Lm5hbWUgKyAiLnByb3RvdHlwZSBzaG91bGQgbm90IGhhdmUgYSBnZXR0ZXIiKTsKKyAgICAgICAg
YXNzZXJ0X2ZhbHNlKCJzZXQiIGluIGRlc2MsIHRoaXMubmFtZSArICIucHJvdG90eXBlIHNob3Vs
ZCBub3QgaGF2ZSBhIHNldHRlciIpOworICAgICAgICBhc3NlcnRfZmFsc2UoZGVzYy53cml0YWJs
ZSwgdGhpcy5uYW1lICsgIi5wcm90b3R5cGUgc2hvdWxkIG5vdCBiZSB3cml0YWJsZSIpOworICAg
ICAgICBhc3NlcnRfZmFsc2UoZGVzYy5lbnVtZXJhYmxlLCB0aGlzLm5hbWUgKyAiLnByb3RvdHlw
ZSBzaG91bGQgbm90IGJlIGVudW1lcmFibGUiKTsKKyAgICAgICAgYXNzZXJ0X2ZhbHNlKGRlc2Mu
Y29uZmlndXJhYmxlLCB0aGlzLm5hbWUgKyAiLnByb3RvdHlwZSBzaG91bGQgbm90IGJlIGNvbmZp
Z3VyYWJsZSIpOwogCiAgICAgICAgIC8vIE5leHQsIHRlc3QgdGhhdCB0aGUgW1tQcm90b3R5cGVd
XSBvZiB0aGUgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QKICAgICAgICAgLy8gaXMgY29ycmVj
dC4gKFRoaXMgaXMgbWFkZSBzb21ld2hhdCBkaWZmaWN1bHQgYnkgdGhlIGV4aXN0ZW5jZSBvZgot
ICAgICAgICAvLyBbTm9JbnRlcmZhY2VPYmplY3RdLikKKyAgICAgICAgLy8gW0xlZ2FjeU5vSW50
ZXJmYWNlT2JqZWN0XS4pCiAgICAgICAgIC8vIFRPRE86IEFyeWVoIHRoaW5rcyB0aGVyZSdzIGF0
IGxlYXN0IG90aGVyIHBsYWNlIGluIHRoaXMgZmlsZSB3aGVyZQogICAgICAgICAvLyAgICAgICB3
ZSB0cnkgdG8gZmlndXJlIG91dCBpZiBhbiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCBpcwog
ICAgICAgICAvLyAgICAgICBjb3JyZWN0LiBDb25zb2xpZGF0ZSB0aGF0IGNvZGUuCkBAIC05NzMs
MTgxICsxNzc5LDM5MyBAQCBJZGxJbnRlcmZhY2UucHJvdG90eXBlLnRlc3Rfc2VsZiA9IGZ1bmN0
aW9uKCkKICAgICAgICAgLy8gIlRoZSBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCBmb3IgYSBn
aXZlbiBpbnRlcmZhY2UgQSBtdXN0IGhhdmUgYW4KICAgICAgICAgLy8gaW50ZXJuYWwgW1tQcm90
b3R5cGVdXSBwcm9wZXJ0eSB3aG9zZSB2YWx1ZSBpcyByZXR1cm5lZCBmcm9tIHRoZQogICAgICAg
ICAvLyBmb2xsb3dpbmcgc3RlcHM6Ci0gICAgICAgIC8vICJJZiBBIGlzIGRlY2xhcmVkIHdpdGgg
dGhlIFtHbG9iYWxdIG9yIFtQcmltYXJ5R2xvYmFsXSBleHRlbmRlZAorICAgICAgICAvLyAiSWYg
QSBpcyBkZWNsYXJlZCB3aXRoIHRoZSBbR2xvYmFsXSBleHRlbmRlZAogICAgICAgICAvLyBhdHRy
aWJ1dGUsIGFuZCBBIHN1cHBvcnRzIG5hbWVkIHByb3BlcnRpZXMsIHRoZW4gcmV0dXJuIHRoZSBu
YW1lZAotICAgICAgICAvLyBwcm9wZXJ0aWVzIG9iamVjdCBmb3IgQSwgYXMgZGVmaW5lZCBpbiBz
ZWN0aW9uIDQuNS41IGJlbG93LgorICAgICAgICAvLyBwcm9wZXJ0aWVzIG9iamVjdCBmb3IgQSwg
YXMgZGVmaW5lZCBpbiDCpzMuNi40IE5hbWVkIHByb3BlcnRpZXMKKyAgICAgICAgLy8gb2JqZWN0
LgogICAgICAgICAvLyAiT3RoZXJ3aXNlLCBpZiBBIGlzIGRlY2xhcmVkIHRvIGluaGVyaXQgZnJv
bSBhbm90aGVyIGludGVyZmFjZSwgdGhlbgogICAgICAgICAvLyByZXR1cm4gdGhlIGludGVyZmFj
ZSBwcm90b3R5cGUgb2JqZWN0IGZvciB0aGUgaW5oZXJpdGVkIGludGVyZmFjZS4KLSAgICAgICAg
Ly8gIk90aGVyd2lzZSwgaWYgQSBpcyBkZWNsYXJlZCB3aXRoIHRoZSBbQXJyYXlDbGFzc10gZXh0
ZW5kZWQKLSAgICAgICAgLy8gYXR0cmlidXRlLCB0aGVuIHJldHVybiAlQXJyYXlQcm90b3R5cGUl
IChbRUNNQS0yNjJdLCBzZWN0aW9uCi0gICAgICAgIC8vIDYuMS43LjQpLgotICAgICAgICAvLyAi
T3RoZXJ3aXNlLCByZXR1cm4gJU9iamVjdFByb3RvdHlwZSUgKFtFQ01BLTI2Ml0sIHNlY3Rpb24g
Ni4xLjcuNCkuCi0gICAgICAgIC8vIChbRUNNQS0yNjJdLCBzZWN0aW9uIDE1LjIuNCkuCisgICAg
ICAgIC8vICJPdGhlcndpc2UsIHJldHVybiAlT2JqZWN0UHJvdG90eXBlJS4KKyAgICAgICAgLy8K
KyAgICAgICAgLy8gIkluIHRoZSBFQ01BU2NyaXB0IGJpbmRpbmcsIHRoZSBET01FeGNlcHRpb24g
dHlwZSBoYXMgc29tZSBhZGRpdGlvbmFsCisgICAgICAgIC8vIHJlcXVpcmVtZW50czoKKyAgICAg
ICAgLy8KKyAgICAgICAgLy8gICAgICJVbmxpa2Ugbm9ybWFsIGludGVyZmFjZSB0eXBlcywgdGhl
IGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0CisgICAgICAgIC8vICAgICBmb3IgRE9NRXhjZXB0
aW9uIG11c3QgaGF2ZSBhcyBpdHMgW1tQcm90b3R5cGVdXSB0aGUgaW50cmluc2ljCisgICAgICAg
IC8vICAgICBvYmplY3QgJUVycm9yUHJvdG90eXBlJS4iCisgICAgICAgIC8vCiAgICAgICAgIGlm
ICh0aGlzLm5hbWUgPT09ICJXaW5kb3ciKSB7Ci0gICAgICAgICAgICBhc3NlcnRfY2xhc3Nfc3Ry
aW5nKE9iamVjdC5nZXRQcm90b3R5cGVPZihzZWxmW3RoaXMubmFtZV0ucHJvdG90eXBlKSwKKyAg
ICAgICAgICAgIGFzc2VydF9jbGFzc19zdHJpbmcoT2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMu
Z2V0X2ludGVyZmFjZV9vYmplY3QoKS5wcm90b3R5cGUpLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnV2luZG93UHJvcGVydGllcycsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdDbGFzcyBuYW1lIGZvciBwcm90b3R5cGUgb2YgV2luZG93JyArCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICcucHJvdG90eXBlIGlzIG5vdCAiV2luZG93UHJvcGVydGll
cyInKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHZhciBpbmhlcml0X2ludGVyZmFj
ZSwgaW5oZXJpdF9pbnRlcmZhY2VfaGFzX2ludGVyZmFjZV9vYmplY3Q7CisgICAgICAgICAgICB2
YXIgaW5oZXJpdF9pbnRlcmZhY2UsIGluaGVyaXRfaW50ZXJmYWNlX2ludGVyZmFjZV9vYmplY3Q7
CiAgICAgICAgICAgICBpZiAodGhpcy5iYXNlKSB7CiAgICAgICAgICAgICAgICAgaW5oZXJpdF9p
bnRlcmZhY2UgPSB0aGlzLmJhc2U7Ci0gICAgICAgICAgICAgICAgaW5oZXJpdF9pbnRlcmZhY2Vf
aGFzX2ludGVyZmFjZV9vYmplY3QgPQotICAgICAgICAgICAgICAgICAgICAhdGhpcy5hcnJheQot
ICAgICAgICAgICAgICAgICAgICAgICAgIC5tZW1iZXJzW2luaGVyaXRfaW50ZXJmYWNlXQotICAg
ICAgICAgICAgICAgICAgICAgICAgIC5oYXNfZXh0ZW5kZWRfYXR0cmlidXRlKCJOb0ludGVyZmFj
ZU9iamVjdCIpOwotICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmhhc19leHRlbmRlZF9hdHRy
aWJ1dGUoJ0FycmF5Q2xhc3MnKSkgewotICAgICAgICAgICAgICAgIGluaGVyaXRfaW50ZXJmYWNl
ID0gJ0FycmF5JzsKLSAgICAgICAgICAgICAgICBpbmhlcml0X2ludGVyZmFjZV9oYXNfaW50ZXJm
YWNlX29iamVjdCA9IHRydWU7CisgICAgICAgICAgICAgICAgdmFyIHBhcmVudCA9IHRoaXMuYXJy
YXkubWVtYmVyc1tpbmhlcml0X2ludGVyZmFjZV07CisgICAgICAgICAgICAgICAgaWYgKCFwYXJl
bnQuaGFzX2V4dGVuZGVkX2F0dHJpYnV0ZSgiTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QiKSkgewor
ICAgICAgICAgICAgICAgICAgICBwYXJlbnQuYXNzZXJ0X2ludGVyZmFjZV9vYmplY3RfZXhpc3Rz
KCk7CisgICAgICAgICAgICAgICAgICAgIGluaGVyaXRfaW50ZXJmYWNlX2ludGVyZmFjZV9vYmpl
Y3QgPSBwYXJlbnQuZ2V0X2ludGVyZmFjZV9vYmplY3QoKTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMubmFtZSA9PT0gIkRPTUV4Y2VwdGlvbiIpIHsKKyAg
ICAgICAgICAgICAgICBpbmhlcml0X2ludGVyZmFjZSA9ICdFcnJvcic7CisgICAgICAgICAgICAg
ICAgaW5oZXJpdF9pbnRlcmZhY2VfaW50ZXJmYWNlX29iamVjdCA9IHNlbGYuRXJyb3I7CiAgICAg
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGluaGVyaXRfaW50ZXJmYWNlID0gJ09i
amVjdCc7Ci0gICAgICAgICAgICAgICAgaW5oZXJpdF9pbnRlcmZhY2VfaGFzX2ludGVyZmFjZV9v
YmplY3QgPSB0cnVlOworICAgICAgICAgICAgICAgIGluaGVyaXRfaW50ZXJmYWNlX2ludGVyZmFj
ZV9vYmplY3QgPSBzZWxmLk9iamVjdDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChp
bmhlcml0X2ludGVyZmFjZV9oYXNfaW50ZXJmYWNlX29iamVjdCkgewotICAgICAgICAgICAgICAg
IGFzc2VydF9vd25fcHJvcGVydHkoc2VsZiwgaW5oZXJpdF9pbnRlcmZhY2UsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnc2hvdWxkIGluaGVyaXQgZnJvbSAnICsgaW5oZXJp
dF9pbnRlcmZhY2UgKyAnLCBidXQgc2VsZiBoYXMgbm8gc3VjaCBwcm9wZXJ0eScpOwotICAgICAg
ICAgICAgICAgIGFzc2VydF9vd25fcHJvcGVydHkoc2VsZltpbmhlcml0X2ludGVyZmFjZV0sICdw
cm90b3R5cGUnLAorICAgICAgICAgICAgaWYgKGluaGVyaXRfaW50ZXJmYWNlX2ludGVyZmFjZV9v
YmplY3QpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhpbmhlcml0X2ludGVy
ZmFjZV9pbnRlcmZhY2Vfb2JqZWN0LCB1bmRlZmluZWQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ3Nob3VsZCBpbmhlcml0IGZyb20gJyArIGluaGVyaXRfaW50ZXJmYWNlICsg
JywgYnV0IHRoZXJlIGlzIG5vIHN1Y2ggcHJvcGVydHknKTsKKyAgICAgICAgICAgICAgICBhc3Nl
cnRfb3duX3Byb3BlcnR5KGluaGVyaXRfaW50ZXJmYWNlX2ludGVyZmFjZV9vYmplY3QsICdwcm90
b3R5cGUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Nob3VsZCBpbmhl
cml0IGZyb20gJyArIGluaGVyaXRfaW50ZXJmYWNlICsgJywgYnV0IHRoYXQgb2JqZWN0IGhhcyBu
byAicHJvdG90eXBlIiBwcm9wZXJ0eScpOwotICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMo
T2JqZWN0LmdldFByb3RvdHlwZU9mKHNlbGZbdGhpcy5uYW1lXS5wcm90b3R5cGUpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZltpbmhlcml0X2ludGVyZmFjZV0ucHJvdG90eXBl
LAorICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoT2JqZWN0LmdldFByb3RvdHlwZU9mKHRo
aXMuZ2V0X2ludGVyZmFjZV9vYmplY3QoKS5wcm90b3R5cGUpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW5oZXJpdF9pbnRlcmZhY2VfaW50ZXJmYWNlX29iamVjdC5wcm90b3R5cGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvdG90eXBlIG9mICcgKyB0aGlzLm5h
bWUgKyAnLnByb3RvdHlwZSBpcyBub3QgJyArIGluaGVyaXRfaW50ZXJmYWNlICsgJy5wcm90b3R5
cGUnKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8gV2UgY2FuJ3Qg
dGVzdCB0aGF0IHdlIGdldCB0aGUgY29ycmVjdCBvYmplY3QsIGJlY2F1c2UgdGhpcyBpcyB0aGUK
ICAgICAgICAgICAgICAgICAvLyBvbmx5IHdheSB0byBnZXQgb3VyIGhhbmRzIG9uIGl0LiBXZSBv
bmx5IHRlc3QgdGhhdCBpdHMgY2xhc3MKICAgICAgICAgICAgICAgICAvLyBzdHJpbmcsIGF0IGxl
YXN0LCBpcyBjb3JyZWN0LgotICAgICAgICAgICAgICAgIGFzc2VydF9jbGFzc19zdHJpbmcoT2Jq
ZWN0LmdldFByb3RvdHlwZU9mKHNlbGZbdGhpcy5uYW1lXS5wcm90b3R5cGUpLAorICAgICAgICAg
ICAgICAgIGFzc2VydF9jbGFzc19zdHJpbmcoT2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMuZ2V0
X2ludGVyZmFjZV9vYmplY3QoKS5wcm90b3R5cGUpLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW5oZXJpdF9pbnRlcmZhY2UgKyAnUHJvdG90eXBlJywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdDbGFzcyBuYW1lIGZvciBwcm90b3R5cGUgb2YgJyAr
IHRoaXMubmFtZSArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLnByb3Rv
dHlwZSBpcyBub3QgIicgKyBpbmhlcml0X2ludGVyZmFjZSArICdQcm90b3R5cGUiJyk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KKworICAgICAgICAvLyAiVGhlIGNsYXNzIHN0cmluZyBvZiBh
biBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCBpcyB0aGUKKyAgICAgICAgLy8gY29uY2F0ZW5h
dGlvbiBvZiB0aGUgaW50ZXJmYWNl4oCZcyBxdWFsaWZpZWQgaWRlbnRpZmllciBhbmQgdGhlIHN0
cmluZworICAgICAgICAvLyDigJxQcm90b3R5cGXigJ0uIgorCisgICAgICAgIC8vIFNraXAgdGhl
c2UgdGVzdHMgZm9yIG5vdyBkdWUgdG8gYSBzcGVjaWZpY2F0aW9uIGlzc3VlIGFib3V0CisgICAg
ICAgIC8vIHByb3RvdHlwZSBuYW1lLgorICAgICAgICAvLyBodHRwczovL3d3dy53My5vcmcvQnVn
cy9QdWJsaWMvc2hvd19idWcuY2dpP2lkPTI4MjQ0CisKKyAgICAgICAgLy8gYXNzZXJ0X2NsYXNz
X3N0cmluZyh0aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0KCkucHJvdG90eXBlLCB0aGlzLmdldF9x
dWFsaWZpZWRfbmFtZSgpICsgIlByb3RvdHlwZSIsCisgICAgICAgIC8vICAgICAgICAgICAgICAg
ICAgICAgImNsYXNzIHN0cmluZyBvZiAiICsgdGhpcy5uYW1lICsgIi5wcm90b3R5cGUiKTsKKwor
ICAgICAgICAvLyBTdHJpbmcoKSBzaG91bGQgZW5kIHVwIGNhbGxpbmcge30udG9TdHJpbmcgaWYg
bm90aGluZyBkZWZpbmVzIGEKKyAgICAgICAgLy8gc3RyaW5naWZpZXIuCisgICAgICAgIGlmICgh
dGhpcy5oYXNfc3RyaW5naWZpZXIoKSkgeworICAgICAgICAgICAgLy8gYXNzZXJ0X2VxdWFscyhT
dHJpbmcodGhpcy5nZXRfaW50ZXJmYWNlX29iamVjdCgpLnByb3RvdHlwZSksICJbb2JqZWN0ICIg
KyB0aGlzLmdldF9xdWFsaWZpZWRfbmFtZSgpICsgIlByb3RvdHlwZV0iLAorICAgICAgICAgICAg
Ly8gICAgICAgICAiU3RyaW5nKCIgKyB0aGlzLm5hbWUgKyAiLnByb3RvdHlwZSkiKTsKKyAgICAg
ICAgfQogICAgIH0uYmluZCh0aGlzKSwgdGhpcy5uYW1lICsgIiBpbnRlcmZhY2U6IGV4aXN0ZW5j
ZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCIpOwogCi0gICAg
dGVzdChmdW5jdGlvbigpCisgICAgLy8gIklmIHRoZSBpbnRlcmZhY2UgaXMgZGVjbGFyZWQgd2l0
aCB0aGUgW0dsb2JhbF0KKyAgICAvLyBleHRlbmRlZCBhdHRyaWJ1dGUsIG9yIHRoZSBpbnRlcmZh
Y2UgaXMgaW4gdGhlIHNldCBvZiBpbmhlcml0ZWQKKyAgICAvLyBpbnRlcmZhY2VzIGZvciBhbnkg
b3RoZXIgaW50ZXJmYWNlIHRoYXQgaXMgZGVjbGFyZWQgd2l0aCBvbmUgb2YgdGhlc2UKKyAgICAv
LyBhdHRyaWJ1dGVzLCB0aGVuIHRoZSBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCBtdXN0IGJl
IGFuIGltbXV0YWJsZQorICAgIC8vIHByb3RvdHlwZSBleG90aWMgb2JqZWN0LiIKKyAgICAvLyBo
dHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNpbnRlcmZhY2UtcHJvdG90eXBlLW9iamVj
dAorICAgIGlmICh0aGlzLmlzX2dsb2JhbCgpKSB7CisgICAgICAgIHRoaXMudGVzdF9pbW11dGFi
bGVfcHJvdG90eXBlKCJpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCIsIHRoaXMuZ2V0X2ludGVy
ZmFjZV9vYmplY3QoKS5wcm90b3R5cGUpOworICAgIH0KKworICAgIHN1YnNldFRlc3RCeUtleSh0
aGlzLm5hbWUsIHRlc3QsIGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIGlmICh0aGlzLmlzX2Nh
bGxiYWNrKCkgJiYgIXRoaXMuaGFzX2NvbnN0YW50cygpKSB7CisgICAgICAgIGlmICghdGhpcy5z
aG91bGRfaGF2ZV9pbnRlcmZhY2Vfb2JqZWN0KCkpIHsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCi0gICAgICAgIGFzc2VydF9vd25fcHJvcGVydHkoc2VsZiwgdGhpcy5uYW1lLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZWxmIGRvZXMgbm90IGhhdmUgb3duIHByb3Bl
cnR5ICIgKyBmb3JtYXRfdmFsdWUodGhpcy5uYW1lKSk7CisgICAgICAgIHRoaXMuYXNzZXJ0X2lu
dGVyZmFjZV9vYmplY3RfZXhpc3RzKCk7CiAKICAgICAgICAgaWYgKHRoaXMuaXNfY2FsbGJhY2so
KSkgewotICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKCJwcm90b3R5cGUiIGluIHNlbGZbdGhpcy5u
YW1lXSwKKyAgICAgICAgICAgIGFzc2VydF9mYWxzZSgicHJvdG90eXBlIiBpbiB0aGlzLmdldF9p
bnRlcmZhY2Vfb2JqZWN0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uYW1lICsg
JyBzaG91bGQgbm90IGhhdmUgYSAicHJvdG90eXBlIiBwcm9wZXJ0eScpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0eShzZWxmW3Ro
aXMubmFtZV0sICJwcm90b3R5cGUiLAorICAgICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KHRoaXMu
Z2V0X2ludGVyZmFjZV9vYmplY3QoKSwgInByb3RvdHlwZSIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ2ludGVyZmFjZSAiJyArIHRoaXMubmFtZSArICciIGRvZXMgbm90IGhhdmUgb3du
IHByb3BlcnR5ICJwcm90b3R5cGUiJyk7CiAKLSAgICAgICAgLy8gIklmIHRoZSBbTm9JbnRlcmZh
Y2VPYmplY3RdIGV4dGVuZGVkIGF0dHJpYnV0ZSB3YXMgbm90IHNwZWNpZmllZCBvbgotICAgICAg
ICAvLyB0aGUgaW50ZXJmYWNlLCB0aGVuIHRoZSBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCBt
dXN0IGFsc28gaGF2ZSBhCisgICAgICAgIC8vICJJZiB0aGUgW0xlZ2FjeU5vSW50ZXJmYWNlT2Jq
ZWN0XSBleHRlbmRlZCBhdHRyaWJ1dGUgd2FzIG5vdCBzcGVjaWZpZWQKKyAgICAgICAgLy8gb24g
dGhlIGludGVyZmFjZSwgdGhlbiB0aGUgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QgbXVzdCBh
bHNvIGhhdmUgYQogICAgICAgICAvLyBwcm9wZXJ0eSBuYW1lZCDigJxjb25zdHJ1Y3RvcuKAnSB3
aXRoIGF0dHJpYnV0ZXMgeyBbW1dyaXRhYmxlXV06IHRydWUsCiAgICAgICAgIC8vIFtbRW51bWVy
YWJsZV1dOiBmYWxzZSwgW1tDb25maWd1cmFibGVdXTogdHJ1ZSB9IHdob3NlIHZhbHVlIGlzIGEK
ICAgICAgICAgLy8gcmVmZXJlbmNlIHRvIHRoZSBpbnRlcmZhY2Ugb2JqZWN0IGZvciB0aGUgaW50
ZXJmYWNlLiIKLSAgICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0eShzZWxmW3RoaXMubmFtZV0ucHJv
dG90eXBlLCAiY29uc3RydWN0b3IiLAorICAgICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KHRoaXMu
Z2V0X2ludGVyZmFjZV9vYmplY3QoKS5wcm90b3R5cGUsICJjb25zdHJ1Y3RvciIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdGhpcy5uYW1lICsgJy5wcm90b3R5cGUgZG9lcyBub3QgaGF2
ZSBvd24gcHJvcGVydHkgImNvbnN0cnVjdG9yIicpOwotICAgICAgICB2YXIgZGVzYyA9IE9iamVj
dC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc2VsZlt0aGlzLm5hbWVdLnByb3RvdHlwZSwgImNv
bnN0cnVjdG9yIik7Ci0gICAgICAgIGFzc2VydF9mYWxzZSgiZ2V0IiBpbiBkZXNjLCB0aGlzLm5h
bWUgKyAiLnByb3RvdHlwZS5jb25zdHJ1Y3RvciBoYXMgZ2V0dGVyIik7Ci0gICAgICAgIGFzc2Vy
dF9mYWxzZSgic2V0IiBpbiBkZXNjLCB0aGlzLm5hbWUgKyAiLnByb3RvdHlwZS5jb25zdHJ1Y3Rv
ciBoYXMgc2V0dGVyIik7Ci0gICAgICAgIGFzc2VydF90cnVlKGRlc2Mud3JpdGFibGUsIHRoaXMu
bmFtZSArICIucHJvdG90eXBlLmNvbnN0cnVjdG9yIGlzIG5vdCB3cml0YWJsZSIpOwotICAgICAg
ICBhc3NlcnRfZmFsc2UoZGVzYy5lbnVtZXJhYmxlLCB0aGlzLm5hbWUgKyAiLnByb3RvdHlwZS5j
b25zdHJ1Y3RvciBpcyBlbnVtZXJhYmxlIik7Ci0gICAgICAgIGFzc2VydF90cnVlKGRlc2MuY29u
ZmlndXJhYmxlLCB0aGlzLm5hbWUgKyAiLnByb3RvdHlwZS5jb25zdHJ1Y3RvciBpbiBub3QgY29u
ZmlndXJhYmxlIik7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoc2VsZlt0aGlzLm5hbWVdLnByb3Rv
dHlwZS5jb25zdHJ1Y3Rvciwgc2VsZlt0aGlzLm5hbWVdLAorICAgICAgICB2YXIgZGVzYyA9IE9i
amVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGhpcy5nZXRfaW50ZXJmYWNlX29iamVjdCgp
LnByb3RvdHlwZSwgImNvbnN0cnVjdG9yIik7CisgICAgICAgIGFzc2VydF9mYWxzZSgiZ2V0IiBp
biBkZXNjLCB0aGlzLm5hbWUgKyAiLnByb3RvdHlwZS5jb25zdHJ1Y3RvciBzaG91bGQgbm90IGhh
dmUgYSBnZXR0ZXIiKTsKKyAgICAgICAgYXNzZXJ0X2ZhbHNlKCJzZXQiIGluIGRlc2MsIHRoaXMu
bmFtZSArICIucHJvdG90eXBlLmNvbnN0cnVjdG9yIHNob3VsZCBub3QgaGF2ZSBhIHNldHRlciIp
OworICAgICAgICBhc3NlcnRfdHJ1ZShkZXNjLndyaXRhYmxlLCB0aGlzLm5hbWUgKyAiLnByb3Rv
dHlwZS5jb25zdHJ1Y3RvciBzaG91bGQgYmUgd3JpdGFibGUiKTsKKyAgICAgICAgYXNzZXJ0X2Zh
bHNlKGRlc2MuZW51bWVyYWJsZSwgdGhpcy5uYW1lICsgIi5wcm90b3R5cGUuY29uc3RydWN0b3Ig
c2hvdWxkIG5vdCBiZSBlbnVtZXJhYmxlIik7CisgICAgICAgIGFzc2VydF90cnVlKGRlc2MuY29u
ZmlndXJhYmxlLCB0aGlzLm5hbWUgKyAiLnByb3RvdHlwZS5jb25zdHJ1Y3RvciBzaG91bGQgYmUg
Y29uZmlndXJhYmxlIik7CisgICAgICAgIGFzc2VydF9lcXVhbHModGhpcy5nZXRfaW50ZXJmYWNl
X29iamVjdCgpLnByb3RvdHlwZS5jb25zdHJ1Y3RvciwgdGhpcy5nZXRfaW50ZXJmYWNlX29iamVj
dCgpLAogICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmFtZSArICcucHJvdG90eXBlLmNvbnN0
cnVjdG9yIGlzIG5vdCB0aGUgc2FtZSBvYmplY3QgYXMgJyArIHRoaXMubmFtZSk7CiAgICAgfS5i
aW5kKHRoaXMpLCB0aGlzLm5hbWUgKyAnIGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0
aWVzIG9mIGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0XCdzICJjb25zdHJ1Y3RvciIgcHJvcGVy
dHknKTsKKworCisgICAgc3Vic2V0VGVzdEJ5S2V5KHRoaXMubmFtZSwgdGVzdCwgZnVuY3Rpb24o
KQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLnNob3VsZF9oYXZlX2ludGVyZmFjZV9vYmplY3Qo
KSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5hc3Nl
cnRfaW50ZXJmYWNlX29iamVjdF9leGlzdHMoKTsKKworICAgICAgICBpZiAodGhpcy5pc19jYWxs
YmFjaygpKSB7CisgICAgICAgICAgICBhc3NlcnRfZmFsc2UoInByb3RvdHlwZSIgaW4gdGhpcy5n
ZXRfaW50ZXJmYWNlX29iamVjdCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmFt
ZSArICcgc2hvdWxkIG5vdCBoYXZlIGEgInByb3RvdHlwZSIgcHJvcGVydHknKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGFzc2VydF9vd25fcHJvcGVydHkodGhp
cy5nZXRfaW50ZXJmYWNlX29iamVjdCgpLCAicHJvdG90eXBlIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnaW50ZXJmYWNlICInICsgdGhpcy5uYW1lICsgJyIgZG9lcyBub3QgaGF2ZSBv
d24gcHJvcGVydHkgInByb3RvdHlwZSInKTsKKworICAgICAgICAvLyBJZiB0aGUgaW50ZXJmYWNl
IGhhcyBhbnkgbWVtYmVyIGRlY2xhcmVkIHdpdGggdGhlIFtVbnNjb3BhYmxlXSBleHRlbmRlZAor
ICAgICAgICAvLyBhdHRyaWJ1dGUsIHRoZW4gdGhlcmUgbXVzdCBiZSBhIHByb3BlcnR5IG9uIHRo
ZSBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdAorICAgICAgICAvLyB3aG9zZSBuYW1lIGlzIHRo
ZSBAQHVuc2NvcGFibGVzIHN5bWJvbCwgd2hpY2ggaGFzIHRoZSBhdHRyaWJ1dGVzCisgICAgICAg
IC8vIHsgW1tXcml0YWJsZV1dOiBmYWxzZSwgW1tFbnVtZXJhYmxlXV06IGZhbHNlLCBbW0NvbmZp
Z3VyYWJsZV1dOiB0cnVlIH0sCisgICAgICAgIC8vIGFuZCB3aG9zZSB2YWx1ZSBpcyBhbiBvYmpl
Y3QgY3JlYXRlZCBhcyBmb2xsb3dzLi4uCisgICAgICAgIHZhciB1bnNjb3BhYmxlcyA9IHRoaXMu
Z2V0X3Vuc2NvcGFibGVzKCkubWFwKG0gPT4gbS5uYW1lKTsKKyAgICAgICAgdmFyIHByb3RvID0g
dGhpcy5nZXRfaW50ZXJmYWNlX29iamVjdCgpLnByb3RvdHlwZTsKKyAgICAgICAgaWYgKHVuc2Nv
cGFibGVzLmxlbmd0aCAhPSAwKSB7CisgICAgICAgICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KAor
ICAgICAgICAgICAgICAgIHByb3RvLCBTeW1ib2wudW5zY29wYWJsZXMsCisgICAgICAgICAgICAg
ICAgdGhpcy5uYW1lICsgJy5wcm90b3R5cGUgc2hvdWxkIGhhdmUgYW4gQEB1bnNjb3BhYmxlcyBw
cm9wZXJ0eScpOworICAgICAgICAgICAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKHByb3RvLCBTeW1ib2wudW5zY29wYWJsZXMpOworICAgICAgICAgICAgYXNzZXJ0
X2ZhbHNlKCJnZXQiIGluIGRlc2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uYW1l
ICsgIi5wcm90b3R5cGVbU3ltYm9sLnVuc2NvcGFibGVzXSBzaG91bGQgbm90IGhhdmUgYSBnZXR0
ZXIiKTsKKyAgICAgICAgICAgIGFzc2VydF9mYWxzZSgic2V0IiBpbiBkZXNjLCB0aGlzLm5hbWUg
KyAiLnByb3RvdHlwZVtTeW1ib2wudW5zY29wYWJsZXNdIHNob3VsZCBub3QgaGF2ZSBhIHNldHRl
ciIpOworICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKGRlc2Mud3JpdGFibGUsIHRoaXMubmFtZSAr
ICIucHJvdG90eXBlW1N5bWJvbC51bnNjb3BhYmxlc10gc2hvdWxkIG5vdCBiZSB3cml0YWJsZSIp
OworICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKGRlc2MuZW51bWVyYWJsZSwgdGhpcy5uYW1lICsg
Ii5wcm90b3R5cGVbU3ltYm9sLnVuc2NvcGFibGVzXSBzaG91bGQgbm90IGJlIGVudW1lcmFibGUi
KTsKKyAgICAgICAgICAgIGFzc2VydF90cnVlKGRlc2MuY29uZmlndXJhYmxlLCB0aGlzLm5hbWUg
KyAiLnByb3RvdHlwZVtTeW1ib2wudW5zY29wYWJsZXNdIHNob3VsZCBiZSBjb25maWd1cmFibGUi
KTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZGVzYy52YWx1ZSwgcHJvdG9bU3ltYm9sLnVu
c2NvcGFibGVzXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uYW1lICsgJy5wcm90
b3R5cGVbU3ltYm9sLnVuc2NvcGFibGVzXSBzaG91bGQgYmUgaW4gdGhlIGRlc2NyaXB0b3InKTsK
KyAgICAgICAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIGRlc2MudmFsdWUsICJvYmplY3QiLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5hbWUgKyAnLnByb3RvdHlwZVtTeW1ib2wu
dW5zY29wYWJsZXNdIHNob3VsZCBiZSBhbiBvYmplY3QnKTsKKyAgICAgICAgICAgIGFzc2VydF9l
cXVhbHMoT2JqZWN0LmdldFByb3RvdHlwZU9mKGRlc2MudmFsdWUpLCBudWxsLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICB0aGlzLm5hbWUgKyAnLnByb3RvdHlwZVtTeW1ib2wudW5zY29wYWJs
ZXNdIHNob3VsZCBoYXZlIGEgbnVsbCBwcm90b3R5cGUnKTsKKyAgICAgICAgICAgIGFzc2VydF9l
cXVhbHMoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhkZXNjLnZhbHVlKS5sZW5ndGgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHRo
aXMubmFtZSArICcucHJvdG90eXBlW1N5bWJvbC51bnNjb3BhYmxlc10gc2hvdWxkIGhhdmUgdGhl
IHJpZ2h0IG51bWJlciBvZiBzeW1ib2wtbmFtZWQgcHJvcGVydGllcycpOworCisgICAgICAgICAg
ICAvLyBDaGVjayB0aGF0IHdlIGRvIG5vdCBoYXZlIF9leHRyYV8gdW5zY29wYWJsZXMuICBDaGVj
a2luZyB0aGF0IHdlCisgICAgICAgICAgICAvLyBoYXZlIGFsbCB0aGUgb25lcyB3ZSBzaG91bGQg
d2lsbCBoYXBwZW4gaW4gdGhlIHBlci1tZW1iZXIgdGVzdHMuCisgICAgICAgICAgICB2YXIgb2Jz
ZXJ2ZWQgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhkZXNjLnZhbHVlKTsKKyAgICAgICAg
ICAgIGZvciAodmFyIHByb3Agb2Ygb2JzZXJ2ZWQpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnRf
bm90X2VxdWFscyh1bnNjb3BhYmxlcy5pbmRleE9mKHByb3ApLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC0xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRo
aXMubmFtZSArICcucHJvdG90eXBlW1N5bWJvbC51bnNjb3BhYmxlc10gaGFzIHVuZXhwZWN0ZWQg
cHJvcGVydHkgIicgKyBwcm9wICsgJyInKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcih0aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0KCkucHJvdG90eXBlLCBTeW1ib2wudW5zY29w
YWJsZXMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRoaXMubmFtZSArICcucHJvdG90eXBlIHNob3VsZCBub3QgaGF2ZSBA
QHVuc2NvcGFibGVzJyk7CisgICAgICAgIH0KKyAgICB9LmJpbmQodGhpcyksIHRoaXMubmFtZSAr
ICcgaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIHByb3Rv
dHlwZSBvYmplY3RcJ3MgQEB1bnNjb3BhYmxlcyBwcm9wZXJ0eScpOworfTsKKworSWRsSW50ZXJm
YWNlLnByb3RvdHlwZS50ZXN0X2ltbXV0YWJsZV9wcm90b3R5cGUgPSBmdW5jdGlvbih0eXBlLCBv
YmopCit7CisgICAgaWYgKHR5cGVvZiBPYmplY3Quc2V0UHJvdG90eXBlT2YgIT09ICJmdW5jdGlv
biIpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHN1YnNldFRlc3RCeUtleSh0aGlz
Lm5hbWUsIHRlc3QsIGZ1bmN0aW9uKHQpIHsKKyAgICAgICAgdmFyIG9yaWdpbmFsVmFsdWUgPSBP
YmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqKTsKKyAgICAgICAgdmFyIG5ld1ZhbHVlID0gT2JqZWN0
LmNyZWF0ZShudWxsKTsKKworICAgICAgICB0LmFkZF9jbGVhbnVwKGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2Jq
LCBvcmlnaW5hbFZhbHVlKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge30KKyAgICAgICAg
fSk7CisKKyAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iaiwgbmV3VmFsdWUpOworICAgICAg
ICB9KTsKKworICAgICAgICBhc3NlcnRfZXF1YWxzKAorICAgICAgICAgICAgICAgIE9iamVjdC5n
ZXRQcm90b3R5cGVPZihvYmopLAorICAgICAgICAgICAgICAgIG9yaWdpbmFsVmFsdWUsCisgICAg
ICAgICAgICAgICAgIm9yaWdpbmFsIHZhbHVlIG5vdCBtb2RpZmllZCIKKyAgICAgICAgICAgICk7
CisgICAgfS5iaW5kKHRoaXMpLCB0aGlzLm5hbWUgKyAiIGludGVyZmFjZTogaW50ZXJuYWwgW1tT
ZXRQcm90b3R5cGVPZl1dIG1ldGhvZCAiICsKKyAgICAgICAgIm9mICIgKyB0eXBlICsgIiAtIHNl
dHRpbmcgdG8gYSBuZXcgdmFsdWUgdmlhIE9iamVjdC5zZXRQcm90b3R5cGVPZiAiICsKKyAgICAg
ICAgInNob3VsZCB0aHJvdyBhIFR5cGVFcnJvciIpOworCisgICAgc3Vic2V0VGVzdEJ5S2V5KHRo
aXMubmFtZSwgdGVzdCwgZnVuY3Rpb24odCkgeworICAgICAgICB2YXIgb3JpZ2luYWxWYWx1ZSA9
IE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmopOworICAgICAgICB2YXIgbmV3VmFsdWUgPSBPYmpl
Y3QuY3JlYXRlKG51bGwpOworCisgICAgICAgIHQuYWRkX2NsZWFudXAoZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICBsZXQgc2V0dGVyID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcigK
KyAgICAgICAgICAgICAgICBPYmplY3QucHJvdG90eXBlLCAnX19wcm90b19fJworICAgICAgICAg
ICAgKS5zZXQ7CisKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgc2V0dGVyLmNh
bGwob2JqLCBvcmlnaW5hbFZhbHVlKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge30KKyAg
ICAgICAgfSk7CisKKyAgICAgICAgLy8gV2UgbmVlZCB0byBmaW5kIHRoZSBhY3R1YWwgc2V0dGVy
IGZvciB0aGUgJ19fcHJvdG9fXycgcHJvcGVydHksIHNvIHdlCisgICAgICAgIC8vIGNhbiBkZXRl
cm1pbmUgdGhlIHJpZ2h0IGdsb2JhbCBmb3IgaXQuICBXYWxrIHVwIHRoZSBwcm90b3R5cGUgY2hh
aW4KKyAgICAgICAgLy8gbG9va2luZyBmb3IgdGhhdCBwcm9wZXJ0eSB1bnRpbCB3ZSBmaW5kIGl0
LgorICAgICAgICBsZXQgc2V0dGVyOworICAgICAgICB7CisgICAgICAgICAgICBsZXQgY3VyID0g
b2JqOworICAgICAgICAgICAgd2hpbGUgKGN1cikgeworICAgICAgICAgICAgICAgIGNvbnN0IGRl
c2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGN1ciwgIl9fcHJvdG9fXyIpOwor
ICAgICAgICAgICAgICAgIGlmIChkZXNjKSB7CisgICAgICAgICAgICAgICAgICAgIHNldHRlciA9
IGRlc2Muc2V0OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgY3VyID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKGN1cik7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhnbG9iYWxPZihz
ZXR0ZXIpLlR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBvYmouX19wcm90b19f
ID0gbmV3VmFsdWU7CisgICAgICAgIH0pOworCisgICAgICAgIGFzc2VydF9lcXVhbHMoCisgICAg
ICAgICAgICAgICAgT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iaiksCisgICAgICAgICAgICAgICAg
b3JpZ2luYWxWYWx1ZSwKKyAgICAgICAgICAgICAgICAib3JpZ2luYWwgdmFsdWUgbm90IG1vZGlm
aWVkIgorICAgICAgICAgICAgKTsKKyAgICB9LmJpbmQodGhpcyksIHRoaXMubmFtZSArICIgaW50
ZXJmYWNlOiBpbnRlcm5hbCBbW1NldFByb3RvdHlwZU9mXV0gbWV0aG9kICIgKworICAgICAgICAi
b2YgIiArIHR5cGUgKyAiIC0gc2V0dGluZyB0byBhIG5ldyB2YWx1ZSB2aWEgX19wcm90b19fICIg
KworICAgICAgICAic2hvdWxkIHRocm93IGEgVHlwZUVycm9yIik7CisKKyAgICBzdWJzZXRUZXN0
QnlLZXkodGhpcy5uYW1lLCB0ZXN0LCBmdW5jdGlvbih0KSB7CisgICAgICAgIHZhciBvcmlnaW5h
bFZhbHVlID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iaik7CisgICAgICAgIHZhciBuZXdWYWx1
ZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7CisKKyAgICAgICAgdC5hZGRfY2xlYW51cChmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgUmVmbGVjdC5zZXRQcm90
b3R5cGVPZihvYmosIG9yaWdpbmFsVmFsdWUpOworICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7
fQorICAgICAgICB9KTsKKworICAgICAgICBhc3NlcnRfZmFsc2UoUmVmbGVjdC5zZXRQcm90b3R5
cGVPZihvYmosIG5ld1ZhbHVlKSk7CisKKyAgICAgICAgYXNzZXJ0X2VxdWFscygKKyAgICAgICAg
ICAgICAgICBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqKSwKKyAgICAgICAgICAgICAgICBvcmln
aW5hbFZhbHVlLAorICAgICAgICAgICAgICAgICJvcmlnaW5hbCB2YWx1ZSBub3QgbW9kaWZpZWQi
CisgICAgICAgICAgICApOworICAgIH0uYmluZCh0aGlzKSwgdGhpcy5uYW1lICsgIiBpbnRlcmZh
Y2U6IGludGVybmFsIFtbU2V0UHJvdG90eXBlT2ZdXSBtZXRob2QgIiArCisgICAgICAgICJvZiAi
ICsgdHlwZSArICIgLSBzZXR0aW5nIHRvIGEgbmV3IHZhbHVlIHZpYSBSZWZsZWN0LnNldFByb3Rv
dHlwZU9mICIgKworICAgICAgICAic2hvdWxkIHJldHVybiBmYWxzZSIpOworCisgICAgc3Vic2V0
VGVzdEJ5S2V5KHRoaXMubmFtZSwgdGVzdCwgZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBvcmln
aW5hbFZhbHVlID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iaik7CisKKyAgICAgICAgT2JqZWN0
LnNldFByb3RvdHlwZU9mKG9iaiwgb3JpZ2luYWxWYWx1ZSk7CisgICAgfS5iaW5kKHRoaXMpLCB0
aGlzLm5hbWUgKyAiIGludGVyZmFjZTogaW50ZXJuYWwgW1tTZXRQcm90b3R5cGVPZl1dIG1ldGhv
ZCAiICsKKyAgICAgICAgIm9mICIgKyB0eXBlICsgIiAtIHNldHRpbmcgdG8gaXRzIG9yaWdpbmFs
IHZhbHVlIHZpYSBPYmplY3Quc2V0UHJvdG90eXBlT2YgIiArCisgICAgICAgICJzaG91bGQgbm90
IHRocm93Iik7CisKKyAgICBzdWJzZXRUZXN0QnlLZXkodGhpcy5uYW1lLCB0ZXN0LCBmdW5jdGlv
bigpIHsKKyAgICAgICAgdmFyIG9yaWdpbmFsVmFsdWUgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yo
b2JqKTsKKworICAgICAgICBvYmouX19wcm90b19fID0gb3JpZ2luYWxWYWx1ZTsKKyAgICB9LmJp
bmQodGhpcyksIHRoaXMubmFtZSArICIgaW50ZXJmYWNlOiBpbnRlcm5hbCBbW1NldFByb3RvdHlw
ZU9mXV0gbWV0aG9kICIgKworICAgICAgICAib2YgIiArIHR5cGUgKyAiIC0gc2V0dGluZyB0byBp
dHMgb3JpZ2luYWwgdmFsdWUgdmlhIF9fcHJvdG9fXyAiICsKKyAgICAgICAgInNob3VsZCBub3Qg
dGhyb3ciKTsKKworICAgIHN1YnNldFRlc3RCeUtleSh0aGlzLm5hbWUsIHRlc3QsIGZ1bmN0aW9u
KCkgeworICAgICAgICB2YXIgb3JpZ2luYWxWYWx1ZSA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihv
YmopOworCisgICAgICAgIGFzc2VydF90cnVlKFJlZmxlY3Quc2V0UHJvdG90eXBlT2Yob2JqLCBv
cmlnaW5hbFZhbHVlKSk7CisgICAgfS5iaW5kKHRoaXMpLCB0aGlzLm5hbWUgKyAiIGludGVyZmFj
ZTogaW50ZXJuYWwgW1tTZXRQcm90b3R5cGVPZl1dIG1ldGhvZCAiICsKKyAgICAgICAgIm9mICIg
KyB0eXBlICsgIiAtIHNldHRpbmcgdG8gaXRzIG9yaWdpbmFsIHZhbHVlIHZpYSBSZWZsZWN0LnNl
dFByb3RvdHlwZU9mICIgKworICAgICAgICAic2hvdWxkIHJldHVybiB0cnVlIik7CiB9OwogCi0v
L0B9CiBJZGxJbnRlcmZhY2UucHJvdG90eXBlLnRlc3RfbWVtYmVyX2NvbnN0ID0gZnVuY3Rpb24o
bWVtYmVyKQotLy9AewogewogICAgIGlmICghdGhpcy5oYXNfY29uc3RhbnRzKCkpIHsKLSAgICAg
ICAgdGhyb3cgIkludGVybmFsIGVycm9yOiB0ZXN0X21lbWJlcl9jb25zdCBjYWxsZWQgd2l0aG91
dCBhbnkgY29uc3RhbnRzIjsKKyAgICAgICAgdGhyb3cgbmV3IElkbEhhcm5lc3NFcnJvcigiSW50
ZXJuYWwgZXJyb3I6IHRlc3RfbWVtYmVyX2NvbnN0IGNhbGxlZCB3aXRob3V0IGFueSBjb25zdGFu
dHMiKTsKICAgICB9CiAKLSAgICB0ZXN0KGZ1bmN0aW9uKCkKKyAgICBzdWJzZXRUZXN0QnlLZXko
dGhpcy5uYW1lLCB0ZXN0LCBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBhc3NlcnRfb3duX3By
b3BlcnR5KHNlbGYsIHRoaXMubmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2Vs
ZiBkb2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0eSAiICsgZm9ybWF0X3ZhbHVlKHRoaXMubmFtZSkp
OworICAgICAgICB0aGlzLmFzc2VydF9pbnRlcmZhY2Vfb2JqZWN0X2V4aXN0cygpOwogCiAgICAg
ICAgIC8vICJGb3IgZWFjaCBjb25zdGFudCBkZWZpbmVkIG9uIGFuIGludGVyZmFjZSBBLCB0aGVy
ZSBtdXN0IGJlCiAgICAgICAgIC8vIGEgY29ycmVzcG9uZGluZyBwcm9wZXJ0eSBvbiB0aGUgaW50
ZXJmYWNlIG9iamVjdCwgaWYgaXQKICAgICAgICAgLy8gZXhpc3RzLiIKLSAgICAgICAgYXNzZXJ0
X293bl9wcm9wZXJ0eShzZWxmW3RoaXMubmFtZV0sIG1lbWJlci5uYW1lKTsKKyAgICAgICAgYXNz
ZXJ0X293bl9wcm9wZXJ0eSh0aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0KCksIG1lbWJlci5uYW1l
KTsKICAgICAgICAgLy8gIlRoZSB2YWx1ZSBvZiB0aGUgcHJvcGVydHkgaXMgdGhhdCB3aGljaCBp
cyBvYnRhaW5lZCBieQogICAgICAgICAvLyBjb252ZXJ0aW5nIHRoZSBjb25zdGFudOKAmXMgSURM
IHZhbHVlIHRvIGFuIEVDTUFTY3JpcHQKICAgICAgICAgLy8gdmFsdWUuIgotICAgICAgICBhc3Nl
cnRfZXF1YWxzKHNlbGZbdGhpcy5uYW1lXVttZW1iZXIubmFtZV0sIGNvbnN0VmFsdWUobWVtYmVy
LnZhbHVlKSwKKyAgICAgICAgYXNzZXJ0X2VxdWFscyh0aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0
KClbbWVtYmVyLm5hbWVdLCBjb25zdFZhbHVlKG1lbWJlci52YWx1ZSksCiAgICAgICAgICAgICAg
ICAgICAgICAgInByb3BlcnR5IGhhcyB3cm9uZyB2YWx1ZSIpOwogICAgICAgICAvLyAiVGhlIHBy
b3BlcnR5IGhhcyBhdHRyaWJ1dGVzIHsgW1tXcml0YWJsZV1dOiBmYWxzZSwKICAgICAgICAgLy8g
W1tFbnVtZXJhYmxlXV06IHRydWUsIFtbQ29uZmlndXJhYmxlXV06IGZhbHNlIH0uIgotICAgICAg
ICB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc2VsZlt0aGlzLm5h
bWVdLCBtZW1iZXIubmFtZSk7Ci0gICAgICAgIGFzc2VydF9mYWxzZSgiZ2V0IiBpbiBkZXNjLCAi
cHJvcGVydHkgaGFzIGdldHRlciIpOwotICAgICAgICBhc3NlcnRfZmFsc2UoInNldCIgaW4gZGVz
YywgInByb3BlcnR5IGhhcyBzZXR0ZXIiKTsKLSAgICAgICAgYXNzZXJ0X2ZhbHNlKGRlc2Mud3Jp
dGFibGUsICJwcm9wZXJ0eSBpcyB3cml0YWJsZSIpOwotICAgICAgICBhc3NlcnRfdHJ1ZShkZXNj
LmVudW1lcmFibGUsICJwcm9wZXJ0eSBpcyBub3QgZW51bWVyYWJsZSIpOwotICAgICAgICBhc3Nl
cnRfZmFsc2UoZGVzYy5jb25maWd1cmFibGUsICJwcm9wZXJ0eSBpcyBjb25maWd1cmFibGUiKTsK
KyAgICAgICAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRoaXMu
Z2V0X2ludGVyZmFjZV9vYmplY3QoKSwgbWVtYmVyLm5hbWUpOworICAgICAgICBhc3NlcnRfZmFs
c2UoImdldCIgaW4gZGVzYywgInByb3BlcnR5IHNob3VsZCBub3QgaGF2ZSBhIGdldHRlciIpOwor
ICAgICAgICBhc3NlcnRfZmFsc2UoInNldCIgaW4gZGVzYywgInByb3BlcnR5IHNob3VsZCBub3Qg
aGF2ZSBhIHNldHRlciIpOworICAgICAgICBhc3NlcnRfZmFsc2UoZGVzYy53cml0YWJsZSwgInBy
b3BlcnR5IHNob3VsZCBub3QgYmUgd3JpdGFibGUiKTsKKyAgICAgICAgYXNzZXJ0X3RydWUoZGVz
Yy5lbnVtZXJhYmxlLCAicHJvcGVydHkgc2hvdWxkIGJlIGVudW1lcmFibGUiKTsKKyAgICAgICAg
YXNzZXJ0X2ZhbHNlKGRlc2MuY29uZmlndXJhYmxlLCAicHJvcGVydHkgc2hvdWxkIG5vdCBiZSBj
b25maWd1cmFibGUiKTsKICAgICB9LmJpbmQodGhpcyksIHRoaXMubmFtZSArICIgaW50ZXJmYWNl
OiBjb25zdGFudCAiICsgbWVtYmVyLm5hbWUgKyAiIG9uIGludGVyZmFjZSBvYmplY3QiKTsKIAog
ICAgIC8vICJJbiBhZGRpdGlvbiwgYSBwcm9wZXJ0eSB3aXRoIHRoZSBzYW1lIGNoYXJhY3Rlcmlz
dGljcyBtdXN0CiAgICAgLy8gZXhpc3Qgb24gdGhlIGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0
LiIKLSAgICB0ZXN0KGZ1bmN0aW9uKCkKKyAgICBzdWJzZXRUZXN0QnlLZXkodGhpcy5uYW1lLCB0
ZXN0LCBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KHNlbGYs
IHRoaXMubmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2VsZiBkb2VzIG5vdCBo
YXZlIG93biBwcm9wZXJ0eSAiICsgZm9ybWF0X3ZhbHVlKHRoaXMubmFtZSkpOworICAgICAgICB0
aGlzLmFzc2VydF9pbnRlcmZhY2Vfb2JqZWN0X2V4aXN0cygpOwogCiAgICAgICAgIGlmICh0aGlz
LmlzX2NhbGxiYWNrKCkpIHsKLSAgICAgICAgICAgIGFzc2VydF9mYWxzZSgicHJvdG90eXBlIiBp
biBzZWxmW3RoaXMubmFtZV0sCisgICAgICAgICAgICBhc3NlcnRfZmFsc2UoInByb3RvdHlwZSIg
aW4gdGhpcy5nZXRfaW50ZXJmYWNlX29iamVjdCgpLAogICAgICAgICAgICAgICAgICAgICAgICAg
IHRoaXMubmFtZSArICcgc2hvdWxkIG5vdCBoYXZlIGEgInByb3RvdHlwZSIgcHJvcGVydHknKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGFzc2VydF9vd25fcHJv
cGVydHkoc2VsZlt0aGlzLm5hbWVdLCAicHJvdG90eXBlIiwKKyAgICAgICAgYXNzZXJ0X293bl9w
cm9wZXJ0eSh0aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0KCksICJwcm90b3R5cGUiLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICdpbnRlcmZhY2UgIicgKyB0aGlzLm5hbWUgKyAnIiBkb2Vz
IG5vdCBoYXZlIG93biBwcm9wZXJ0eSAicHJvdG90eXBlIicpOwogCi0gICAgICAgIGFzc2VydF9v
d25fcHJvcGVydHkoc2VsZlt0aGlzLm5hbWVdLnByb3RvdHlwZSwgbWVtYmVyLm5hbWUpOwotICAg
ICAgICBhc3NlcnRfZXF1YWxzKHNlbGZbdGhpcy5uYW1lXS5wcm90b3R5cGVbbWVtYmVyLm5hbWVd
LCBjb25zdFZhbHVlKG1lbWJlci52YWx1ZSksCisgICAgICAgIGFzc2VydF9vd25fcHJvcGVydHko
dGhpcy5nZXRfaW50ZXJmYWNlX29iamVjdCgpLnByb3RvdHlwZSwgbWVtYmVyLm5hbWUpOworICAg
ICAgICBhc3NlcnRfZXF1YWxzKHRoaXMuZ2V0X2ludGVyZmFjZV9vYmplY3QoKS5wcm90b3R5cGVb
bWVtYmVyLm5hbWVdLCBjb25zdFZhbHVlKG1lbWJlci52YWx1ZSksCiAgICAgICAgICAgICAgICAg
ICAgICAgInByb3BlcnR5IGhhcyB3cm9uZyB2YWx1ZSIpOwotICAgICAgICB2YXIgZGVzYyA9IE9i
amVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc2VsZlt0aGlzLm5hbWVdLCBtZW1iZXIubmFt
ZSk7Ci0gICAgICAgIGFzc2VydF9mYWxzZSgiZ2V0IiBpbiBkZXNjLCAicHJvcGVydHkgaGFzIGdl
dHRlciIpOwotICAgICAgICBhc3NlcnRfZmFsc2UoInNldCIgaW4gZGVzYywgInByb3BlcnR5IGhh
cyBzZXR0ZXIiKTsKLSAgICAgICAgYXNzZXJ0X2ZhbHNlKGRlc2Mud3JpdGFibGUsICJwcm9wZXJ0
eSBpcyB3cml0YWJsZSIpOwotICAgICAgICBhc3NlcnRfdHJ1ZShkZXNjLmVudW1lcmFibGUsICJw
cm9wZXJ0eSBpcyBub3QgZW51bWVyYWJsZSIpOwotICAgICAgICBhc3NlcnRfZmFsc2UoZGVzYy5j
b25maWd1cmFibGUsICJwcm9wZXJ0eSBpcyBjb25maWd1cmFibGUiKTsKKyAgICAgICAgdmFyIGRl
c2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRoaXMuZ2V0X2ludGVyZmFjZV9v
YmplY3QoKSwgbWVtYmVyLm5hbWUpOworICAgICAgICBhc3NlcnRfZmFsc2UoImdldCIgaW4gZGVz
YywgInByb3BlcnR5IHNob3VsZCBub3QgaGF2ZSBhIGdldHRlciIpOworICAgICAgICBhc3NlcnRf
ZmFsc2UoInNldCIgaW4gZGVzYywgInByb3BlcnR5IHNob3VsZCBub3QgaGF2ZSBhIHNldHRlciIp
OworICAgICAgICBhc3NlcnRfZmFsc2UoZGVzYy53cml0YWJsZSwgInByb3BlcnR5IHNob3VsZCBu
b3QgYmUgd3JpdGFibGUiKTsKKyAgICAgICAgYXNzZXJ0X3RydWUoZGVzYy5lbnVtZXJhYmxlLCAi
cHJvcGVydHkgc2hvdWxkIGJlIGVudW1lcmFibGUiKTsKKyAgICAgICAgYXNzZXJ0X2ZhbHNlKGRl
c2MuY29uZmlndXJhYmxlLCAicHJvcGVydHkgc2hvdWxkIG5vdCBiZSBjb25maWd1cmFibGUiKTsK
ICAgICB9LmJpbmQodGhpcyksIHRoaXMubmFtZSArICIgaW50ZXJmYWNlOiBjb25zdGFudCAiICsg
bWVtYmVyLm5hbWUgKyAiIG9uIGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0Iik7CiB9OwogCiAK
LS8vQH0KIElkbEludGVyZmFjZS5wcm90b3R5cGUudGVzdF9tZW1iZXJfYXR0cmlidXRlID0gZnVu
Y3Rpb24obWVtYmVyKQotLy9AewogICB7Ci0gICAgdmFyIGFfdGVzdCA9IGFzeW5jX3Rlc3QodGhp
cy5uYW1lICsgIiBpbnRlcmZhY2U6IGF0dHJpYnV0ZSAiICsgbWVtYmVyLm5hbWUpOworICAgIGlm
ICghc2hvdWxkUnVuU3ViVGVzdCh0aGlzLm5hbWUpKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgdmFyIGFfdGVzdCA9IHN1YnNldFRlc3RCeUtleSh0aGlzLm5hbWUsIGFzeW5jX3Rlc3Qs
IHRoaXMubmFtZSArICIgaW50ZXJmYWNlOiBhdHRyaWJ1dGUgIiArIG1lbWJlci5uYW1lKTsKICAg
ICBhX3Rlc3Quc3RlcChmdW5jdGlvbigpCiAgICAgewotICAgICAgICBpZiAodGhpcy5pc19jYWxs
YmFjaygpICYmICF0aGlzLmhhc19jb25zdGFudHMoKSkgewotICAgICAgICAgICAgYV90ZXN0LmRv
bmUoKQorICAgICAgICBpZiAoIXRoaXMuc2hvdWxkX2hhdmVfaW50ZXJmYWNlX29iamVjdCgpKSB7
CisgICAgICAgICAgICBhX3Rlc3QuZG9uZSgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKLSAgICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0eShzZWxmLCB0aGlzLm5hbWUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgInNlbGYgZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVydHkg
IiArIGZvcm1hdF92YWx1ZSh0aGlzLm5hbWUpKTsKLSAgICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0
eShzZWxmW3RoaXMubmFtZV0sICJwcm90b3R5cGUiLAorICAgICAgICB0aGlzLmFzc2VydF9pbnRl
cmZhY2Vfb2JqZWN0X2V4aXN0cygpOworICAgICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KHRoaXMu
Z2V0X2ludGVyZmFjZV9vYmplY3QoKSwgInByb3RvdHlwZSIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ2ludGVyZmFjZSAiJyArIHRoaXMubmFtZSArICciIGRvZXMgbm90IGhhdmUgb3du
IHByb3BlcnR5ICJwcm90b3R5cGUiJyk7CiAKLSAgICAgICAgaWYgKG1lbWJlclsic3RhdGljIl0p
IHsKLSAgICAgICAgICAgIGFzc2VydF9vd25fcHJvcGVydHkoc2VsZlt0aGlzLm5hbWVdLCBtZW1i
ZXIubmFtZSwKKyAgICAgICAgaWYgKG1lbWJlci5zcGVjaWFsID09PSAic3RhdGljIikgeworICAg
ICAgICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0eSh0aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0KCks
IG1lbWJlci5uYW1lLAogICAgICAgICAgICAgICAgICJUaGUgaW50ZXJmYWNlIG9iamVjdCBtdXN0
IGhhdmUgYSBwcm9wZXJ0eSAiICsKICAgICAgICAgICAgICAgICBmb3JtYXRfdmFsdWUobWVtYmVy
Lm5hbWUpKTsKICAgICAgICAgICAgIGFfdGVzdC5kb25lKCk7Ci0gICAgICAgIH0gZWxzZSBpZiAo
dGhpcy5pc19nbG9iYWwoKSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAg
ICAgICAgdGhpcy5kb19tZW1iZXJfdW5zY29wYWJsZV9hc3NlcnRzKG1lbWJlcik7CisKKyAgICAg
ICAgaWYgKHRoaXMuaXNfZ2xvYmFsKCkpIHsKICAgICAgICAgICAgIGFzc2VydF9vd25fcHJvcGVy
dHkoc2VsZiwgbWVtYmVyLm5hbWUsCiAgICAgICAgICAgICAgICAgIlRoZSBnbG9iYWwgb2JqZWN0
IG11c3QgaGF2ZSBhIHByb3BlcnR5ICIgKwogICAgICAgICAgICAgICAgIGZvcm1hdF92YWx1ZSht
ZW1iZXIubmFtZSkpOwotICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKG1lbWJlci5uYW1lIGluIHNl
bGZbdGhpcy5uYW1lXS5wcm90b3R5cGUsCi0gICAgICAgICAgICAgICAgIlRoZSBwcm90b3R5cGUg
b2JqZWN0IG11c3Qgbm90IGhhdmUgYSBwcm9wZXJ0eSAiICsKKyAgICAgICAgICAgIGFzc2VydF9m
YWxzZShtZW1iZXIubmFtZSBpbiB0aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0KCkucHJvdG90eXBl
LAorICAgICAgICAgICAgICAgICJUaGUgcHJvdG90eXBlIG9iamVjdCBzaG91bGQgbm90IGhhdmUg
YSBwcm9wZXJ0eSAiICsKICAgICAgICAgICAgICAgICBmb3JtYXRfdmFsdWUobWVtYmVyLm5hbWUp
KTsKIAogICAgICAgICAgICAgdmFyIGdldHRlciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3Ioc2VsZiwgbWVtYmVyLm5hbWUpLmdldDsKQEAgLTExNzQsNjkgKzIxOTIsNjYgQEAgSWRs
SW50ZXJmYWNlLnByb3RvdHlwZS50ZXN0X21lbWJlcl9hdHRyaWJ1dGUgPSBmdW5jdGlvbihtZW1i
ZXIpCiAgICAgICAgICAgICAvLyBzaW5jZSBpdCB3aWxsIGNhbGwgZG9uZSgpIG9uIGFfdGVzdC4K
ICAgICAgICAgICAgIHRoaXMuZG9faW50ZXJmYWNlX2F0dHJpYnV0ZV9hc3NlcnRzKHNlbGYsIG1l
bWJlciwgYV90ZXN0KTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGFzc2VydF90cnVl
KG1lbWJlci5uYW1lIGluIHNlbGZbdGhpcy5uYW1lXS5wcm90b3R5cGUsCisgICAgICAgICAgICBh
c3NlcnRfdHJ1ZShtZW1iZXIubmFtZSBpbiB0aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0KCkucHJv
dG90eXBlLAogICAgICAgICAgICAgICAgICJUaGUgcHJvdG90eXBlIG9iamVjdCBtdXN0IGhhdmUg
YSBwcm9wZXJ0eSAiICsKICAgICAgICAgICAgICAgICBmb3JtYXRfdmFsdWUobWVtYmVyLm5hbWUp
KTsKIAotICAgICAgICAgICAgaWYgKCFtZW1iZXIuaGFzX2V4dGVuZGVkX2F0dHJpYnV0ZSgiTGVu
aWVudFRoaXMiKSkgeworICAgICAgICAgICAgaWYgKCFtZW1iZXIuaGFzX2V4dGVuZGVkX2F0dHJp
YnV0ZSgiTGVnYWN5TGVuaWVudFRoaXMiKSkgewogICAgICAgICAgICAgICAgIGlmIChtZW1iZXIu
aWRsVHlwZS5nZW5lcmljICE9PSAiUHJvbWlzZSIpIHsKLSAgICAgICAgICAgICAgICAgICAgYXNz
ZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgc2VsZlt0aGlzLm5hbWVdLnByb3RvdHlwZVttZW1iZXIubmFtZV07CisgICAgICAg
ICAgICAgICAgICAgIC8vIHRoaXMuZ2V0X2ludGVyZmFjZV9vYmplY3QoKSByZXR1cm5zIGEgdGhp
bmcgaW4gb3VyIGdsb2JhbAorICAgICAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5
cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdldF9p
bnRlcmZhY2Vfb2JqZWN0KCkucHJvdG90eXBlW21lbWJlci5uYW1lXTsKICAgICAgICAgICAgICAg
ICAgICAgfS5iaW5kKHRoaXMpLCAiZ2V0dGluZyBwcm9wZXJ0eSBvbiBwcm90b3R5cGUgb2JqZWN0
IG11c3QgdGhyb3cgVHlwZUVycm9yIik7CiAgICAgICAgICAgICAgICAgICAgIC8vIGRvX2ludGVy
ZmFjZV9hdHRyaWJ1dGVfYXNzZXJ0cyBtdXN0IGJlIHRoZSBsYXN0IHRoaW5nIHdlCiAgICAgICAg
ICAgICAgICAgICAgIC8vIGRvLCBzaW5jZSBpdCB3aWxsIGNhbGwgZG9uZSgpIG9uIGFfdGVzdC4K
LSAgICAgICAgICAgICAgICAgICAgdGhpcy5kb19pbnRlcmZhY2VfYXR0cmlidXRlX2Fzc2VydHMo
c2VsZlt0aGlzLm5hbWVdLnByb3RvdHlwZSwgbWVtYmVyLCBhX3Rlc3QpOworICAgICAgICAgICAg
ICAgICAgICB0aGlzLmRvX2ludGVyZmFjZV9hdHRyaWJ1dGVfYXNzZXJ0cyh0aGlzLmdldF9pbnRl
cmZhY2Vfb2JqZWN0KCkucHJvdG90eXBlLCBtZW1iZXIsIGFfdGVzdCk7CiAgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgcHJvbWlzZV9yZWplY3RzKGFfdGVzdCwg
bmV3IFR5cGVFcnJvcigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vs
Zlt0aGlzLm5hbWVdLnByb3RvdHlwZVttZW1iZXIubmFtZV0pCi0gICAgICAgICAgICAgICAgICAg
ICAgICAudGhlbihmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgcHJvbWlzZV9yZWpl
Y3RzX2pzKGFfdGVzdCwgVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdGhpcy5nZXRfaW50ZXJmYWNlX29iamVjdCgpLnByb3RvdHlwZVttZW1iZXIubmFtZV0p
CisgICAgICAgICAgICAgICAgICAgICAgICAudGhlbihhX3Rlc3Quc3RlcF9mdW5jKGZ1bmN0aW9u
KCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvX2ludGVyZmFjZV9hdHRyaWJ1
dGVfYXNzZXJ0cyBtdXN0IGJlIHRoZSBsYXN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gdGhpbmcgd2UgZG8sIHNpbmNlIGl0IHdpbGwgY2FsbCBkb25lKCkgb24gYV90ZXN0LgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZG9faW50ZXJmYWNlX2F0dHJpYnV0ZV9hc3Nl
cnRzKHNlbGZbdGhpcy5uYW1lXS5wcm90b3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGhpcy5kb19pbnRlcmZhY2VfYXR0cmlidXRlX2Fzc2VydHModGhpcy5nZXRfaW50ZXJmYWNl
X29iamVjdCgpLnByb3RvdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1iZXIsIGFfdGVzdCk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICB9LmJpbmQodGhpcykpOworICAgICAgICAgICAgICAgICAgICAgICAgfS5i
aW5kKHRoaXMpKSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHNlbGZbdGhpcy5uYW1lXS5wcm90b3R5cGVbbWVt
YmVyLm5hbWVdLCB1bmRlZmluZWQsCisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh0aGlz
LmdldF9pbnRlcmZhY2Vfb2JqZWN0KCkucHJvdG90eXBlW21lbWJlci5uYW1lXSwgdW5kZWZpbmVk
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdldHRpbmcgcHJvcGVydHkgb24gcHJv
dG90eXBlIG9iamVjdCBtdXN0IHJldHVybiB1bmRlZmluZWQiKTsKICAgICAgICAgICAgICAgLy8g
ZG9faW50ZXJmYWNlX2F0dHJpYnV0ZV9hc3NlcnRzIG11c3QgYmUgdGhlIGxhc3QgdGhpbmcgd2Ug
ZG8sCiAgICAgICAgICAgICAgIC8vIHNpbmNlIGl0IHdpbGwgY2FsbCBkb25lKCkgb24gYV90ZXN0
LgotICAgICAgICAgICAgICB0aGlzLmRvX2ludGVyZmFjZV9hdHRyaWJ1dGVfYXNzZXJ0cyhzZWxm
W3RoaXMubmFtZV0ucHJvdG90eXBlLCBtZW1iZXIsIGFfdGVzdCk7CisgICAgICAgICAgICAgIHRo
aXMuZG9faW50ZXJmYWNlX2F0dHJpYnV0ZV9hc3NlcnRzKHRoaXMuZ2V0X2ludGVyZmFjZV9vYmpl
Y3QoKS5wcm90b3R5cGUsIG1lbWJlciwgYV90ZXN0KTsKICAgICAgICAgICAgIH0KLQogICAgICAg
ICB9CiAgICAgfS5iaW5kKHRoaXMpKTsKIH07CiAKLS8vQH0KIElkbEludGVyZmFjZS5wcm90b3R5
cGUudGVzdF9tZW1iZXJfb3BlcmF0aW9uID0gZnVuY3Rpb24obWVtYmVyKQotLy9AewogewotICAg
IHZhciBhX3Rlc3QgPSBhc3luY190ZXN0KHRoaXMubmFtZSArICIgaW50ZXJmYWNlOiBvcGVyYXRp
b24gIiArIG1lbWJlci5uYW1lICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKCIgKyBt
ZW1iZXIuYXJndW1lbnRzLm1hcCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVu
Y3Rpb24obSkge3JldHVybiBtLmlkbFR5cGUuaWRsVHlwZTsgfSApCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKyIpIik7CisgICAgaWYgKCFzaG91bGRSdW5TdWJUZXN0KHRoaXMubmFtZSkp
IHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICB2YXIgYV90ZXN0ID0gc3Vic2V0VGVzdEJ5
S2V5KHRoaXMubmFtZSwgYXN5bmNfdGVzdCwgdGhpcy5uYW1lICsgIiBpbnRlcmZhY2U6IG9wZXJh
dGlvbiAiICsgbWVtYmVyKTsKICAgICBhX3Rlc3Quc3RlcChmdW5jdGlvbigpCiAgICAgewogICAg
ICAgICAvLyBUaGlzIGZ1bmN0aW9uIHRlc3RzIFdlYklETCBhcyBvZiAyMDE1LTEyLTI5LgogICAg
ICAgICAvLyBodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNlcy1vcGVyYXRpb25zCiAK
LSAgICAgICAgaWYgKHRoaXMuaXNfY2FsbGJhY2soKSAmJiAhdGhpcy5oYXNfY29uc3RhbnRzKCkp
IHsKKyAgICAgICAgaWYgKCF0aGlzLnNob3VsZF9oYXZlX2ludGVyZmFjZV9vYmplY3QoKSkgewog
ICAgICAgICAgICAgYV90ZXN0LmRvbmUoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCi0gICAgICAgIGFzc2VydF9vd25fcHJvcGVydHkoc2VsZiwgdGhpcy5uYW1lLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJzZWxmIGRvZXMgbm90IGhhdmUgb3duIHByb3BlcnR5ICIg
KyBmb3JtYXRfdmFsdWUodGhpcy5uYW1lKSk7CisgICAgICAgIHRoaXMuYXNzZXJ0X2ludGVyZmFj
ZV9vYmplY3RfZXhpc3RzKCk7CiAKICAgICAgICAgaWYgKHRoaXMuaXNfY2FsbGJhY2soKSkgewot
ICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKCJwcm90b3R5cGUiIGluIHNlbGZbdGhpcy5uYW1lXSwK
KyAgICAgICAgICAgIGFzc2VydF9mYWxzZSgicHJvdG90eXBlIiBpbiB0aGlzLmdldF9pbnRlcmZh
Y2Vfb2JqZWN0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uYW1lICsgJyBzaG91
bGQgbm90IGhhdmUgYSAicHJvdG90eXBlIiBwcm9wZXJ0eScpOwogICAgICAgICAgICAgYV90ZXN0
LmRvbmUoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGFzc2Vy
dF9vd25fcHJvcGVydHkoc2VsZlt0aGlzLm5hbWVdLCAicHJvdG90eXBlIiwKKyAgICAgICAgYXNz
ZXJ0X293bl9wcm9wZXJ0eSh0aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0KCksICJwcm90b3R5cGUi
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbnRlcmZhY2UgIicgKyB0aGlzLm5hbWUg
KyAnIiBkb2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0eSAicHJvdG90eXBlIicpOwogCiAgICAgICAg
IC8vICJGb3IgZWFjaCB1bmlxdWUgaWRlbnRpZmllciBvZiBhbiBleHBvc2VkIG9wZXJhdGlvbiBk
ZWZpbmVkIG9uIHRoZQpAQCAtMTI1MCwxMiArMjI2NSwxMiBAQCBJZGxJbnRlcmZhY2UucHJvdG90
eXBlLnRlc3RfbWVtYmVyX29wZXJhdGlvbiA9IGZ1bmN0aW9uKG1lbWJlcikKICAgICAgICAgdmFy
IG1lbWJlckhvbGRlck9iamVjdDsKICAgICAgICAgLy8gIiogSWYgdGhlIG9wZXJhdGlvbiBpcyBz
dGF0aWMsIHRoZW4gdGhlIHByb3BlcnR5IGV4aXN0cyBvbiB0aGUKICAgICAgICAgLy8gICAgaW50
ZXJmYWNlIG9iamVjdC4iCi0gICAgICAgIGlmIChtZW1iZXJbInN0YXRpYyJdKSB7Ci0gICAgICAg
ICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KHNlbGZbdGhpcy5uYW1lXSwgbWVtYmVyLm5hbWUsCisg
ICAgICAgIGlmIChtZW1iZXIuc3BlY2lhbCA9PT0gInN0YXRpYyIpIHsKKyAgICAgICAgICAgIGFz
c2VydF9vd25fcHJvcGVydHkodGhpcy5nZXRfaW50ZXJmYWNlX29iamVjdCgpLCBtZW1iZXIubmFt
ZSwKICAgICAgICAgICAgICAgICAgICAgImludGVyZmFjZSBvYmplY3QgbWlzc2luZyBzdGF0aWMg
b3BlcmF0aW9uIik7Ci0gICAgICAgICAgICBtZW1iZXJIb2xkZXJPYmplY3QgPSBzZWxmW3RoaXMu
bmFtZV07CisgICAgICAgICAgICBtZW1iZXJIb2xkZXJPYmplY3QgPSB0aGlzLmdldF9pbnRlcmZh
Y2Vfb2JqZWN0KCk7CiAgICAgICAgIC8vICIqIE90aGVyd2lzZSwgWy4uLl0gaWYgdGhlIGludGVy
ZmFjZSB3YXMgZGVjbGFyZWQgd2l0aCB0aGUgW0dsb2JhbF0KLSAgICAgICAgLy8gICAgb3IgW1By
aW1hcnlHbG9iYWxdIGV4dGVuZGVkIGF0dHJpYnV0ZSwgdGhlbiB0aGUgcHJvcGVydHkgZXhpc3Rz
CisgICAgICAgIC8vICAgIGV4dGVuZGVkIGF0dHJpYnV0ZSwgdGhlbiB0aGUgcHJvcGVydHkgZXhp
c3RzCiAgICAgICAgIC8vICAgIG9uIGV2ZXJ5IG9iamVjdCB0aGF0IGltcGxlbWVudHMgdGhlIGlu
dGVyZmFjZS4iCiAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc19nbG9iYWwoKSkgewogICAgICAg
ICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0eShzZWxmLCBtZW1iZXIubmFtZSwKQEAgLTEyNjQsMTcg
KzIyNzksNDMgQEAgSWRsSW50ZXJmYWNlLnByb3RvdHlwZS50ZXN0X21lbWJlcl9vcGVyYXRpb24g
PSBmdW5jdGlvbihtZW1iZXIpCiAgICAgICAgIC8vICIqIE90aGVyd2lzZSwgdGhlIHByb3BlcnR5
IGV4aXN0cyBzb2xlbHkgb24gdGhlIGludGVyZmFjZeKAmXMKICAgICAgICAgLy8gICAgaW50ZXJm
YWNlIHByb3RvdHlwZSBvYmplY3QuIgogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgYXNz
ZXJ0X293bl9wcm9wZXJ0eShzZWxmW3RoaXMubmFtZV0ucHJvdG90eXBlLCBtZW1iZXIubmFtZSwK
KyAgICAgICAgICAgIGFzc2VydF9vd25fcHJvcGVydHkodGhpcy5nZXRfaW50ZXJmYWNlX29iamVj
dCgpLnByb3RvdHlwZSwgbWVtYmVyLm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICJpbnRlcmZh
Y2UgcHJvdG90eXBlIG9iamVjdCBtaXNzaW5nIG5vbi1zdGF0aWMgb3BlcmF0aW9uIik7Ci0gICAg
ICAgICAgICBtZW1iZXJIb2xkZXJPYmplY3QgPSBzZWxmW3RoaXMubmFtZV0ucHJvdG90eXBlOwor
ICAgICAgICAgICAgbWVtYmVySG9sZGVyT2JqZWN0ID0gdGhpcy5nZXRfaW50ZXJmYWNlX29iamVj
dCgpLnByb3RvdHlwZTsKICAgICAgICAgfQorICAgICAgICB0aGlzLmRvX21lbWJlcl91bnNjb3Bh
YmxlX2Fzc2VydHMobWVtYmVyKTsKICAgICAgICAgdGhpcy5kb19tZW1iZXJfb3BlcmF0aW9uX2Fz
c2VydHMobWVtYmVySG9sZGVyT2JqZWN0LCBtZW1iZXIsIGFfdGVzdCk7CiAgICAgfS5iaW5kKHRo
aXMpKTsKIH07CiAKLS8vQH0KK0lkbEludGVyZmFjZS5wcm90b3R5cGUuZG9fbWVtYmVyX3Vuc2Nv
cGFibGVfYXNzZXJ0cyA9IGZ1bmN0aW9uKG1lbWJlcikKK3sKKyAgICAvLyBDaGVjayB0aGF0IGlm
IHRoZSBtZW1iZXIgaXMgdW5zY29wYWJsZSB0aGVuIGl0J3MgaW4gdGhlCisgICAgLy8gQEB1bnNj
b3BhYmxlcyBvYmplY3QgcHJvcGVybHkuCisgICAgaWYgKCFtZW1iZXIuaXNVbnNjb3BhYmxlKSB7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB2YXIgdW5zY29wYWJsZXMgPSB0aGlzLmdl
dF9pbnRlcmZhY2Vfb2JqZWN0KCkucHJvdG90eXBlW1N5bWJvbC51bnNjb3BhYmxlc107CisgICAg
dmFyIHByb3AgPSBtZW1iZXIubmFtZTsKKyAgICB2YXIgcHJvcERlc2MgPSBPYmplY3QuZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKHVuc2NvcGFibGVzLCBwcm9wKTsKKyAgICBhc3NlcnRfZXF1YWxz
KHR5cGVvZiBwcm9wRGVzYywgIm9iamVjdCIsCisgICAgICAgICAgICAgICAgICB0aGlzLm5hbWUg
KyAnLnByb3RvdHlwZVtTeW1ib2wudW5zY29wYWJsZXNdLicgKyBwcm9wICsgJyBtdXN0IGV4aXN0
JykKKyAgICBhc3NlcnRfZmFsc2UoImdldCIgaW4gcHJvcERlc2MsCisgICAgICAgICAgICAgICAg
IHRoaXMubmFtZSArICcucHJvdG90eXBlW1N5bWJvbC51bnNjb3BhYmxlc10uJyArIHByb3AgKyAn
IG11c3QgaGF2ZSBubyBnZXR0ZXInKTsKKyAgICBhc3NlcnRfZmFsc2UoInNldCIgaW4gcHJvcERl
c2MsCisgICAgICAgICAgICAgICAgIHRoaXMubmFtZSArICcucHJvdG90eXBlW1N5bWJvbC51bnNj
b3BhYmxlc10uJyArIHByb3AgKyAnIG11c3QgaGF2ZSBubyBzZXR0ZXInKTsKKyAgICBhc3NlcnRf
dHJ1ZShwcm9wRGVzYy53cml0YWJsZSwKKyAgICAgICAgICAgICAgICB0aGlzLm5hbWUgKyAnLnBy
b3RvdHlwZVtTeW1ib2wudW5zY29wYWJsZXNdLicgKyBwcm9wICsgJyBtdXN0IGJlIHdyaXRhYmxl
Jyk7CisgICAgYXNzZXJ0X3RydWUocHJvcERlc2MuZW51bWVyYWJsZSwKKyAgICAgICAgICAgICAg
ICB0aGlzLm5hbWUgKyAnLnByb3RvdHlwZVtTeW1ib2wudW5zY29wYWJsZXNdLicgKyBwcm9wICsg
JyBtdXN0IGJlIGVudW1lcmFibGUnKTsKKyAgICBhc3NlcnRfdHJ1ZShwcm9wRGVzYy5jb25maWd1
cmFibGUsCisgICAgICAgICAgICAgICAgdGhpcy5uYW1lICsgJy5wcm90b3R5cGVbU3ltYm9sLnVu
c2NvcGFibGVzXS4nICsgcHJvcCArICcgbXVzdCBiZSBjb25maWd1cmFibGUnKTsKKyAgICBhc3Nl
cnRfZXF1YWxzKHByb3BEZXNjLnZhbHVlLCB0cnVlLAorICAgICAgICAgICAgICAgICAgdGhpcy5u
YW1lICsgJy5wcm90b3R5cGVbU3ltYm9sLnVuc2NvcGFibGVzXS4nICsgcHJvcCArICcgbXVzdCBo
YXZlIHRoZSB2YWx1ZSBgdHJ1ZWAnKTsKK307CisKIElkbEludGVyZmFjZS5wcm90b3R5cGUuZG9f
bWVtYmVyX29wZXJhdGlvbl9hc3NlcnRzID0gZnVuY3Rpb24obWVtYmVySG9sZGVyT2JqZWN0LCBt
ZW1iZXIsIGFfdGVzdCkKLS8vQHsKIHsKICAgICB2YXIgZG9uZSA9IGFfdGVzdC5kb25lLmJpbmQo
YV90ZXN0KTsKICAgICB2YXIgb3BlcmF0aW9uVW5mb3JnZWFibGUgPSBtZW1iZXIuaXNVbmZvcmdl
YWJsZTsKQEAgLTEyODIsMjcgKzIzMjMsMjkgQEAgSWRsSW50ZXJmYWNlLnByb3RvdHlwZS5kb19t
ZW1iZXJfb3BlcmF0aW9uX2Fzc2VydHMgPSBmdW5jdGlvbihtZW1iZXJIb2xkZXJPYmplY3QKICAg
ICAvLyAiVGhlIHByb3BlcnR5IGhhcyBhdHRyaWJ1dGVzIHsgW1tXcml0YWJsZV1dOiBCLAogICAg
IC8vIFtbRW51bWVyYWJsZV1dOiB0cnVlLCBbW0NvbmZpZ3VyYWJsZV1dOiBCIH0sIHdoZXJlIEIg
aXMgZmFsc2UgaWYgdGhlCiAgICAgLy8gb3BlcmF0aW9uIGlzIHVuZm9yZ2VhYmxlIG9uIHRoZSBp
bnRlcmZhY2UsIGFuZCB0cnVlIG90aGVyd2lzZSIuCi0gICAgYXNzZXJ0X2ZhbHNlKCJnZXQiIGlu
IGRlc2MsICJwcm9wZXJ0eSBoYXMgZ2V0dGVyIik7Ci0gICAgYXNzZXJ0X2ZhbHNlKCJzZXQiIGlu
IGRlc2MsICJwcm9wZXJ0eSBoYXMgc2V0dGVyIik7CisgICAgYXNzZXJ0X2ZhbHNlKCJnZXQiIGlu
IGRlc2MsICJwcm9wZXJ0eSBzaG91bGQgbm90IGhhdmUgYSBnZXR0ZXIiKTsKKyAgICBhc3NlcnRf
ZmFsc2UoInNldCIgaW4gZGVzYywgInByb3BlcnR5IHNob3VsZCBub3QgaGF2ZSBhIHNldHRlciIp
OwogICAgIGFzc2VydF9lcXVhbHMoZGVzYy53cml0YWJsZSwgIW9wZXJhdGlvblVuZm9yZ2VhYmxl
LAogICAgICAgICAgICAgICAgICAgInByb3BlcnR5IHNob3VsZCBiZSB3cml0YWJsZSBpZiBhbmQg
b25seSBpZiBub3QgdW5mb3JnZWFibGUiKTsKLSAgICBhc3NlcnRfdHJ1ZShkZXNjLmVudW1lcmFi
bGUsICJwcm9wZXJ0eSBpcyBub3QgZW51bWVyYWJsZSIpOworICAgIGFzc2VydF90cnVlKGRlc2Mu
ZW51bWVyYWJsZSwgInByb3BlcnR5IHNob3VsZCBiZSBlbnVtZXJhYmxlIik7CiAgICAgYXNzZXJ0
X2VxdWFscyhkZXNjLmNvbmZpZ3VyYWJsZSwgIW9wZXJhdGlvblVuZm9yZ2VhYmxlLAogICAgICAg
ICAgICAgICAgICAgInByb3BlcnR5IHNob3VsZCBiZSBjb25maWd1cmFibGUgaWYgYW5kIG9ubHkg
aWYgbm90IHVuZm9yZ2VhYmxlIik7CiAgICAgLy8gIlRoZSB2YWx1ZSBvZiB0aGUgcHJvcGVydHkg
aXMgYSBGdW5jdGlvbiBvYmplY3Qgd2hvc2UKICAgICAvLyBiZWhhdmlvciBpcyBhcyBmb2xsb3dz
IC4gLiAuIgogICAgIGFzc2VydF9lcXVhbHModHlwZW9mIG1lbWJlckhvbGRlck9iamVjdFttZW1i
ZXIubmFtZV0sICJmdW5jdGlvbiIsCiAgICAgICAgICAgICAgICAgICAicHJvcGVydHkgbXVzdCBi
ZSBhIGZ1bmN0aW9uIik7Ci0gICAgLy8gIlRoZSB2YWx1ZSBvZiB0aGUgRnVuY3Rpb24gb2JqZWN0
4oCZcyDigJxsZW5ndGjigJ0gcHJvcGVydHkgaXMKLSAgICAvLyBhIE51bWJlciBkZXRlcm1pbmVk
IGFzIGZvbGxvd3M6Ci0gICAgLy8gIi4gLiAuCi0gICAgLy8gIlJldHVybiB0aGUgbGVuZ3RoIG9m
IHRoZSBzaG9ydGVzdCBhcmd1bWVudCBsaXN0IG9mIHRoZQotICAgIC8vIGVudHJpZXMgaW4gUy4i
Ci0gICAgYXNzZXJ0X2VxdWFscyhtZW1iZXJIb2xkZXJPYmplY3RbbWVtYmVyLm5hbWVdLmxlbmd0
aCwKLSAgICAgICAgbWluT3ZlcmxvYWRMZW5ndGgodGhpcy5tZW1iZXJzLmZpbHRlcihmdW5jdGlv
bihtKSB7Ci0gICAgICAgICAgICByZXR1cm4gbS50eXBlID09ICJvcGVyYXRpb24iICYmIG0ubmFt
ZSA9PSBtZW1iZXIubmFtZTsKLSAgICAgICAgfSkpLAorCisgICAgY29uc3QgY3RvcnMgPSB0aGlz
Lm1lbWJlcnMuZmlsdGVyKGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgcmV0dXJuIG0udHlwZSA9PSAi
b3BlcmF0aW9uIiAmJiBtLm5hbWUgPT0gbWVtYmVyLm5hbWU7CisgICAgfSk7CisgICAgYXNzZXJ0
X2VxdWFscygKKyAgICAgICAgbWVtYmVySG9sZGVyT2JqZWN0W21lbWJlci5uYW1lXS5sZW5ndGgs
CisgICAgICAgIG1pbk92ZXJsb2FkTGVuZ3RoKGN0b3JzKSwKICAgICAgICAgInByb3BlcnR5IGhh
cyB3cm9uZyAubGVuZ3RoIik7CisgICAgYXNzZXJ0X2VxdWFscygKKyAgICAgICAgbWVtYmVySG9s
ZGVyT2JqZWN0W21lbWJlci5uYW1lXS5uYW1lLAorICAgICAgICBtZW1iZXIubmFtZSwKKyAgICAg
ICAgInByb3BlcnR5IGhhcyB3cm9uZyAubmFtZSIpOwogCiAgICAgLy8gTWFrZSBzb21lIHN1aXRh
YmxlIGFyZ3VtZW50cwogICAgIHZhciBhcmdzID0gbWVtYmVyLmFyZ3VtZW50cy5tYXAoZnVuY3Rp
b24oYXJnKSB7CkBAIC0xMzE5LDcgKzIzNjIsNyBAQCBJZGxJbnRlcmZhY2UucHJvdG90eXBlLmRv
X21lbWJlcl9vcGVyYXRpb25fYXNzZXJ0cyA9IGZ1bmN0aW9uKG1lbWJlckhvbGRlck9iamVjdAog
ICAgIC8vIGNoZWNrIGZvciBnbG9iYWxzLCBzaW5jZSBvdGhlcndpc2Ugd2UnbGwgaW52b2tlIHdp
bmRvdy5jbG9zZSgpLiAgQW5kIHdlCiAgICAgLy8gaGF2ZSB0byBza2lwIHRoaXMgdGVzdCBmb3Ig
YW55dGhpbmcgdGhhdCBvbiB0aGUgcHJvdG8gY2hhaW4gb2YgInNlbGYiLAogICAgIC8vIHNpbmNl
IHRoYXQgZG9lcyBpbiBmYWN0IGhhdmUgaW1wbGljaXQtdGhpcyBiZWhhdmlvci4KLSAgICBpZiAo
IW1lbWJlclsic3RhdGljIl0pIHsKKyAgICBpZiAobWVtYmVyLnNwZWNpYWwgIT09ICJzdGF0aWMi
KSB7CiAgICAgICAgIHZhciBjYjsKICAgICAgICAgaWYgKCF0aGlzLmlzX2dsb2JhbCgpICYmCiAg
ICAgICAgICAgICBtZW1iZXJIb2xkZXJPYmplY3RbbWVtYmVyLm5hbWVdICE9IHNlbGZbbWVtYmVy
Lm5hbWVdKQpAQCAtMTM0Myw3MSArMjM4NiwxMjIgQEAgSWRsSW50ZXJmYWNlLnByb3RvdHlwZS5k
b19tZW1iZXJfb3BlcmF0aW9uX2Fzc2VydHMgPSBmdW5jdGlvbihtZW1iZXJIb2xkZXJPYmplY3QK
ICAgICB9CiB9CiAKLS8vQH0KLUlkbEludGVyZmFjZS5wcm90b3R5cGUuYWRkX2l0ZXJhYmxlX21l
bWJlcnMgPSBmdW5jdGlvbihtZW1iZXIpCi0vL0B7Ci17Ci0gICAgdGhpcy5tZW1iZXJzLnB1c2go
e3R5cGU6ICJvcGVyYXRpb24iLCBuYW1lOiAiZW50cmllcyIsIGlkbFR5cGU6ICJpdGVyYXRvciIs
IGFyZ3VtZW50czogW119KTsKLSAgICB0aGlzLm1lbWJlcnMucHVzaCh7dHlwZTogIm9wZXJhdGlv
biIsIG5hbWU6ICJrZXlzIiwgaWRsVHlwZTogIml0ZXJhdG9yIiwgYXJndW1lbnRzOiBbXX0pOwot
ICAgIHRoaXMubWVtYmVycy5wdXNoKHt0eXBlOiAib3BlcmF0aW9uIiwgbmFtZTogInZhbHVlcyIs
IGlkbFR5cGU6ICJpdGVyYXRvciIsIGFyZ3VtZW50czogW119KTsKLSAgICB0aGlzLm1lbWJlcnMu
cHVzaCh7dHlwZTogIm9wZXJhdGlvbiIsIG5hbWU6ICJmb3JFYWNoIiwgaWRsVHlwZTogInZvaWQi
LCBhcmd1bWVudHM6Ci0gICAgICAgIFt7IG5hbWU6ICJjYWxsYmFjayIsIGlkbFR5cGU6IHtpZGxU
eXBlOiAiZnVuY3Rpb24ifX0sCi0gICAgICAgIHsgbmFtZTogInRoaXNWYWx1ZSIsIGlkbFR5cGU6
IHtpZGxUeXBlOiAiYW55In0sIG9wdGlvbmFsOiB0cnVlfV19KTsKK0lkbEludGVyZmFjZS5wcm90
b3R5cGUudGVzdF90b19qc29uX29wZXJhdGlvbiA9IGZ1bmN0aW9uKGRlc2MsIG1lbWJlckhvbGRl
ck9iamVjdCwgbWVtYmVyKSB7CisgICAgdmFyIGluc3RhbmNlTmFtZSA9IG1lbWJlckhvbGRlck9i
amVjdCAmJiBtZW1iZXJIb2xkZXJPYmplY3QuY29uc3RydWN0b3IubmFtZQorICAgICAgICB8fCBt
ZW1iZXIubmFtZSArICIgb2JqZWN0IjsKKyAgICBpZiAobWVtYmVyLmhhc19leHRlbmRlZF9hdHRy
aWJ1dGUoIkRlZmF1bHQiKSkgeworICAgICAgICBzdWJzZXRUZXN0QnlLZXkodGhpcy5uYW1lLCB0
ZXN0LCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHZhciBtYXAgPSB0aGlzLmRlZmF1bHRfdG9f
anNvbl9vcGVyYXRpb24oKTsKKyAgICAgICAgICAgIHZhciBqc29uID0gbWVtYmVySG9sZGVyT2Jq
ZWN0LnRvSlNPTigpOworICAgICAgICAgICAgbWFwLmZvckVhY2goZnVuY3Rpb24odHlwZSwgaykg
eworICAgICAgICAgICAgICAgIGFzc2VydF90cnVlKGsgaW4ganNvbiwgInByb3BlcnR5ICIgKyBK
U09OLnN0cmluZ2lmeShrKSArICIgc2hvdWxkIGJlIHByZXNlbnQgaW4gdGhlIG91dHB1dCBvZiAi
ICsgdGhpcy5uYW1lICsgIi5wcm90b3R5cGUudG9KU09OKCkiKTsKKyAgICAgICAgICAgICAgICB2
YXIgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoanNvbiwgayk7
CisgICAgICAgICAgICAgICAgYXNzZXJ0X3RydWUoZGVzY3JpcHRvci53cml0YWJsZSwgInByb3Bl
cnR5ICIgKyBrICsgIiBzaG91bGQgYmUgd3JpdGFibGUiKTsKKyAgICAgICAgICAgICAgICBhc3Nl
cnRfdHJ1ZShkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSwgInByb3BlcnR5ICIgKyBrICsgIiBzaG91
bGQgYmUgY29uZmlndXJhYmxlIik7CisgICAgICAgICAgICAgICAgYXNzZXJ0X3RydWUoZGVzY3Jp
cHRvci5lbnVtZXJhYmxlLCAicHJvcGVydHkgIiArIGsgKyAiIHNob3VsZCBiZSBlbnVtZXJhYmxl
Iik7CisgICAgICAgICAgICAgICAgdGhpcy5hcnJheS5hc3NlcnRfdHlwZV9pcyhqc29uW2tdLCB0
eXBlKTsKKyAgICAgICAgICAgICAgICBkZWxldGUganNvbltrXTsKKyAgICAgICAgICAgIH0sIHRo
aXMpOworICAgICAgICB9LmJpbmQodGhpcyksIHRoaXMubmFtZSArICIgaW50ZXJmYWNlOiBkZWZh
dWx0IHRvSlNPTiBvcGVyYXRpb24gb24gIiArIGRlc2MpOworICAgIH0gZWxzZSB7CisgICAgICAg
IHN1YnNldFRlc3RCeUtleSh0aGlzLm5hbWUsIHRlc3QsIGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgYXNzZXJ0X3RydWUodGhpcy5hcnJheS5pc19qc29uX3R5cGUobWVtYmVyLmlkbFR5cGUpLCBK
U09OLnN0cmluZ2lmeShtZW1iZXIuaWRsVHlwZSkgKyAiIGlzIG5vdCBhbiBhcHByb3ByaWF0ZSBy
ZXR1cm4gdmFsdWUgZm9yIHRoZSB0b0pTT04gb3BlcmF0aW9uIG9mICIgKyBpbnN0YW5jZU5hbWUp
OworICAgICAgICAgICAgdGhpcy5hcnJheS5hc3NlcnRfdHlwZV9pcyhtZW1iZXJIb2xkZXJPYmpl
Y3QudG9KU09OKCksIG1lbWJlci5pZGxUeXBlKTsKKyAgICAgICAgfS5iaW5kKHRoaXMpLCB0aGlz
Lm5hbWUgKyAiIGludGVyZmFjZTogdG9KU09OIG9wZXJhdGlvbiBvbiAiICsgZGVzYyk7CisgICAg
fQogfTsKIAotLy9AfQogSWRsSW50ZXJmYWNlLnByb3RvdHlwZS50ZXN0X21lbWJlcl9pdGVyYWJs
ZSA9IGZ1bmN0aW9uKG1lbWJlcikKLS8vQHsKIHsKLSAgICB2YXIgaW50ZXJmYWNlTmFtZSA9IHRo
aXMubmFtZTsKLSAgICB2YXIgaXNQYWlySXRlcmF0b3IgPSBtZW1iZXIuaWRsVHlwZSBpbnN0YW5j
ZW9mIEFycmF5OwotICAgIHRlc3QoZnVuY3Rpb24oKQorICAgIHN1YnNldFRlc3RCeUtleSh0aGlz
Lm5hbWUsIHRlc3QsIGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHZhciBkZXNjcmlwdG9yID0g
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzZWxmW2ludGVyZmFjZU5hbWVdLnByb3Rv
dHlwZSwgU3ltYm9sLml0ZXJhdG9yKTsKLSAgICAgICAgYXNzZXJ0X3RydWUoZGVzY3JpcHRvci53
cml0YWJsZSwgInByb3BlcnR5IGlzIG5vdCB3cml0YWJsZSIpOwotICAgICAgICBhc3NlcnRfdHJ1
ZShkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSwgInByb3BlcnR5IGlzIG5vdCBjb25maWd1cmFibGUi
KTsKLSAgICAgICAgYXNzZXJ0X2ZhbHNlKGRlc2NyaXB0b3IuZW51bWVyYWJsZSwgInByb3BlcnR5
IGlzIGVudW1lcmFibGUiKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhzZWxmW2ludGVyZmFjZU5h
bWVdLnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdLm5hbWUsIGlzUGFpckl0ZXJhdG9yID8gImVu
dHJpZXMiIDogInZhbHVlcyIsICJAQGl0ZXJhdG9yIGZ1bmN0aW9uIGRvZXMgbm90IGhhdmUgdGhl
IHJpZ2h0IG5hbWUiKTsKLSAgICB9LCAiVGVzdGluZyBTeW1ib2wuaXRlcmF0b3IgcHJvcGVydHkg
b2YgaXRlcmFibGUgaW50ZXJmYWNlICIgKyBpbnRlcmZhY2VOYW1lKTsKLQotICAgIGlmIChpc1Bh
aXJJdGVyYXRvcikgewotICAgICAgICB0ZXN0KGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgYXNz
ZXJ0X2VxdWFscyhzZWxmW2ludGVyZmFjZU5hbWVdLnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3Jd
LCBzZWxmW2ludGVyZmFjZU5hbWVdLnByb3RvdHlwZVsiZW50cmllcyJdLCAiZW50cmllcyBtZXRo
b2QgaXMgbm90IHRoZSBzYW1lIGFzIEBAaXRlcmF0b3IiKTsKLSAgICAgICAgfSwgIlRlc3Rpbmcg
cGFpciBpdGVyYWJsZSBpbnRlcmZhY2UgIiArIGludGVyZmFjZU5hbWUpOwotICAgIH0gZWxzZSB7
Ci0gICAgICAgIHRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBbImVudHJpZXMiLCAia2V5
cyIsICJ2YWx1ZXMiLCAiZm9yRWFjaCIsIFN5bWJvbC5JdGVyYXRvcl0uZm9yRWFjaChmdW5jdGlv
bihwcm9wZXJ0eSkgewotICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoc2VsZltpbnRlcmZh
Y2VOYW1lXS5wcm90b3R5cGVbcHJvcGVydHldLCBBcnJheS5wcm90b3R5cGVbcHJvcGVydHldLCBw
cm9wZXJ0eSArICIgZnVuY3Rpb24gaXMgbm90IHRoZSBzYW1lIGFzIEFycmF5IG9uZSIpOworICAg
ICAgICB2YXIgaXNQYWlySXRlcmF0b3IgPSBtZW1iZXIuaWRsVHlwZS5sZW5ndGggPT09IDI7Cisg
ICAgICAgIHZhciBwcm90byA9IHRoaXMuZ2V0X2ludGVyZmFjZV9vYmplY3QoKS5wcm90b3R5cGU7
CisgICAgICAgIHZhciBpdGVyYXRvckRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKHByb3RvLCBTeW1ib2wuaXRlcmF0b3IpOworCisgICAgICAgIGFzc2VydF90cnVlKGl0ZXJh
dG9yRGVzYy53cml0YWJsZSwgIkBAaXRlcmF0b3IgcHJvcGVydHkgc2hvdWxkIGJlIHdyaXRhYmxl
Iik7CisgICAgICAgIGFzc2VydF90cnVlKGl0ZXJhdG9yRGVzYy5jb25maWd1cmFibGUsICJAQGl0
ZXJhdG9yIHByb3BlcnR5IHNob3VsZCBiZSBjb25maWd1cmFibGUiKTsKKyAgICAgICAgYXNzZXJ0
X2ZhbHNlKGl0ZXJhdG9yRGVzYy5lbnVtZXJhYmxlLCAiQEBpdGVyYXRvciBwcm9wZXJ0eSBzaG91
bGQgbm90IGJlIGVudW1lcmFibGUiKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgaXRl
cmF0b3JEZXNjLnZhbHVlLCAiZnVuY3Rpb24iLCAiQEBpdGVyYXRvciBwcm9wZXJ0eSBzaG91bGQg
YmUgYSBmdW5jdGlvbiIpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGl0ZXJhdG9yRGVzYy52YWx1
ZS5sZW5ndGgsIDAsICJAQGl0ZXJhdG9yIGZ1bmN0aW9uIG9iamVjdCBsZW5ndGggc2hvdWxkIGJl
IDAiKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhpdGVyYXRvckRlc2MudmFsdWUubmFtZSwgaXNQ
YWlySXRlcmF0b3IgPyAiZW50cmllcyIgOiAidmFsdWVzIiwgIkBAaXRlcmF0b3IgZnVuY3Rpb24g
b2JqZWN0IHNob3VsZCBoYXZlIHRoZSByaWdodCBuYW1lIik7CisKKyAgICAgICAgaWYgKGlzUGFp
ckl0ZXJhdG9yKSB7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHByb3RvWyJlbnRyaWVzIl0s
IHByb3RvW1N5bWJvbC5pdGVyYXRvcl0sICJlbnRyaWVzIG1ldGhvZCBzaG91bGQgYmUgdGhlIHNh
bWUgYXMgQEBpdGVyYXRvciBtZXRob2QiKTsKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAg
ICBbImVudHJpZXMiLCAwXSwKKyAgICAgICAgICAgICAgICBbImtleXMiLCAwXSwKKyAgICAgICAg
ICAgICAgICBbInZhbHVlcyIsIDBdLAorICAgICAgICAgICAgICAgIFsiZm9yRWFjaCIsIDFdCisg
ICAgICAgICAgICBdLmZvckVhY2goKFtwcm9wZXJ0eSwgbGVuZ3RoXSkgPT4geworICAgICAgICAg
ICAgICAgIHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihwcm90bywg
cHJvcGVydHkpOworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIGRlc2MudmFs
dWUsICJmdW5jdGlvbiIsIHByb3BlcnR5ICsgIiBwcm9wZXJ0eSBzaG91bGQgYmUgYSBmdW5jdGlv
biIpOworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZGVzYy52YWx1ZS5sZW5ndGgsIGxl
bmd0aCwgcHJvcGVydHkgKyAiIGZ1bmN0aW9uIG9iamVjdCBsZW5ndGggc2hvdWxkIGJlICIgKyBs
ZW5ndGgpOworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZGVzYy52YWx1ZS5uYW1lLCBw
cm9wZXJ0eSwgcHJvcGVydHkgKyAiIGZ1bmN0aW9uIG9iamVjdCBzaG91bGQgaGF2ZSB0aGUgcmln
aHQgbmFtZSIpOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0sICJUZXN0aW5nIHZhbHVlIGl0
ZXJhYmxlIGludGVyZmFjZSAiICsgaW50ZXJmYWNlTmFtZSk7Ci0gICAgfQorICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhwcm90b1tTeW1ib2wuaXRlcmF0b3JdLCBB
cnJheS5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXSwgIkBAaXRlcmF0b3IgbWV0aG9kIHNob3Vs
ZCBiZSB0aGUgc2FtZSBhcyBBcnJheSBwcm90b3R5cGUncyIpOworICAgICAgICAgICAgWyJlbnRy
aWVzIiwgImtleXMiLCAidmFsdWVzIiwgImZvckVhY2giLCBTeW1ib2wuaXRlcmF0b3JdLmZvckVh
Y2gocHJvcGVydHkgPT4geworICAgICAgICAgICAgICAgIHZhciBwcm9wZXJ0eU5hbWUgPSBwcm9w
ZXJ0eSA9PT0gU3ltYm9sLml0ZXJhdG9yID8gIkBAaXRlcmF0b3IiIDogcHJvcGVydHk7CisgICAg
ICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhwcm90b1twcm9wZXJ0eV0sIEFycmF5LnByb3RvdHlw
ZVtwcm9wZXJ0eV0sIHByb3BlcnR5TmFtZSArICIgbWV0aG9kIHNob3VsZCBiZSB0aGUgc2FtZSBh
cyBBcnJheSBwcm90b3R5cGUncyIpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICB9
LmJpbmQodGhpcyksIHRoaXMubmFtZSArICIgaW50ZXJmYWNlOiBpdGVyYWJsZTwiICsgbWVtYmVy
LmlkbFR5cGUubWFwKGZ1bmN0aW9uKHQpIHsgcmV0dXJuIHQuaWRsVHlwZTsgfSkuam9pbigiLCAi
KSArICI+Iik7Cit9OworCitJZGxJbnRlcmZhY2UucHJvdG90eXBlLnRlc3RfbWVtYmVyX2FzeW5j
X2l0ZXJhYmxlID0gZnVuY3Rpb24obWVtYmVyKQoreworICAgIHN1YnNldFRlc3RCeUtleSh0aGlz
Lm5hbWUsIHRlc3QsIGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBpc1BhaXJJdGVyYXRv
ciA9IG1lbWJlci5pZGxUeXBlLmxlbmd0aCA9PT0gMjsKKyAgICAgICAgdmFyIHByb3RvID0gdGhp
cy5nZXRfaW50ZXJmYWNlX29iamVjdCgpLnByb3RvdHlwZTsKKyAgICAgICAgdmFyIGl0ZXJhdG9y
RGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocHJvdG8sIFN5bWJvbC5hc3lu
Y0l0ZXJhdG9yKTsKKworICAgICAgICBhc3NlcnRfdHJ1ZShpdGVyYXRvckRlc2Mud3JpdGFibGUs
ICJAQGFzeW5jSXRlcmF0b3IgcHJvcGVydHkgc2hvdWxkIGJlIHdyaXRhYmxlIik7CisgICAgICAg
IGFzc2VydF90cnVlKGl0ZXJhdG9yRGVzYy5jb25maWd1cmFibGUsICJAQGFzeW5jSXRlcmF0b3Ig
cHJvcGVydHkgc2hvdWxkIGJlIGNvbmZpZ3VyYWJsZSIpOworICAgICAgICBhc3NlcnRfZmFsc2Uo
aXRlcmF0b3JEZXNjLmVudW1lcmFibGUsICJAQGFzeW5jSXRlcmF0b3IgcHJvcGVydHkgc2hvdWxk
IG5vdCBiZSBlbnVtZXJhYmxlIik7CisgICAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIGl0ZXJh
dG9yRGVzYy52YWx1ZSwgImZ1bmN0aW9uIiwgIkBAYXN5bmNJdGVyYXRvciBwcm9wZXJ0eSBzaG91
bGQgYmUgYSBmdW5jdGlvbiIpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGl0ZXJhdG9yRGVzYy52
YWx1ZS5sZW5ndGgsIDAsICJAQGFzeW5jSXRlcmF0b3IgZnVuY3Rpb24gb2JqZWN0IGxlbmd0aCBz
aG91bGQgYmUgMCIpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGl0ZXJhdG9yRGVzYy52YWx1ZS5u
YW1lLCBpc1BhaXJJdGVyYXRvciA/ICJlbnRyaWVzIiA6ICJ2YWx1ZXMiLCAiQEBhc3luY0l0ZXJh
dG9yIGZ1bmN0aW9uIG9iamVjdCBzaG91bGQgaGF2ZSB0aGUgcmlnaHQgbmFtZSIpOworCisgICAg
ICAgIGlmIChpc1BhaXJJdGVyYXRvcikgeworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhwcm90
b1siZW50cmllcyJdLCBwcm90b1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0sICJlbnRyaWVzIG1ldGhv
ZCBzaG91bGQgYmUgdGhlIHNhbWUgYXMgQEBhc3luY0l0ZXJhdG9yIG1ldGhvZCIpOworICAgICAg
ICAgICAgWyJlbnRyaWVzIiwgImtleXMiLCAidmFsdWVzIl0uZm9yRWFjaChwcm9wZXJ0eSA9PiB7
CisgICAgICAgICAgICAgICAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKHByb3RvLCBwcm9wZXJ0eSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh0eXBl
b2YgZGVzYy52YWx1ZSwgImZ1bmN0aW9uIiwgcHJvcGVydHkgKyAiIHByb3BlcnR5IHNob3VsZCBi
ZSBhIGZ1bmN0aW9uIik7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhkZXNjLnZhbHVl
Lmxlbmd0aCwgMCwgcHJvcGVydHkgKyAiIGZ1bmN0aW9uIG9iamVjdCBsZW5ndGggc2hvdWxkIGJl
IDAiKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGRlc2MudmFsdWUubmFtZSwgcHJv
cGVydHksIHByb3BlcnR5ICsgIiBmdW5jdGlvbiBvYmplY3Qgc2hvdWxkIGhhdmUgdGhlIHJpZ2h0
IG5hbWUiKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
YXNzZXJ0X2VxdWFscyhwcm90b1sidmFsdWVzIl0sIHByb3RvW1N5bWJvbC5hc3luY0l0ZXJhdG9y
XSwgInZhbHVlcyBtZXRob2Qgc2hvdWxkIGJlIHRoZSBzYW1lIGFzIEBAYXN5bmNJdGVyYXRvciBt
ZXRob2QiKTsKKyAgICAgICAgICAgIGFzc2VydF9mYWxzZSgiZW50cmllcyIgaW4gcHJvdG8sICJz
aG91bGQgbm90IGhhdmUgYW4gZW50cmllcyBtZXRob2QiKTsKKyAgICAgICAgICAgIGFzc2VydF9m
YWxzZSgia2V5cyIgaW4gcHJvdG8sICJzaG91bGQgbm90IGhhdmUgYSBrZXlzIG1ldGhvZCIpOwor
ICAgICAgICB9CisgICAgfS5iaW5kKHRoaXMpLCB0aGlzLm5hbWUgKyAiIGludGVyZmFjZTogYXN5
bmMgaXRlcmFibGU8IiArIG1lbWJlci5pZGxUeXBlLm1hcChmdW5jdGlvbih0KSB7IHJldHVybiB0
LmlkbFR5cGU7IH0pLmpvaW4oIiwgIikgKyAiPiIpOwogfTsKIAotLy9AfQogSWRsSW50ZXJmYWNl
LnByb3RvdHlwZS50ZXN0X21lbWJlcl9zdHJpbmdpZmllciA9IGZ1bmN0aW9uKG1lbWJlcikKLS8v
QHsKIHsKLSAgICB0ZXN0KGZ1bmN0aW9uKCkKKyAgICBzdWJzZXRUZXN0QnlLZXkodGhpcy5uYW1l
LCB0ZXN0LCBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBpZiAodGhpcy5pc19jYWxsYmFjaygp
ICYmICF0aGlzLmhhc19jb25zdGFudHMoKSkgeworICAgICAgICBpZiAoIXRoaXMuc2hvdWxkX2hh
dmVfaW50ZXJmYWNlX29iamVjdCgpKSB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IAotICAgICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KHNlbGYsIHRoaXMubmFtZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAic2VsZiBkb2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0eSAiICsg
Zm9ybWF0X3ZhbHVlKHRoaXMubmFtZSkpOworICAgICAgICB0aGlzLmFzc2VydF9pbnRlcmZhY2Vf
b2JqZWN0X2V4aXN0cygpOwogCiAgICAgICAgIGlmICh0aGlzLmlzX2NhbGxiYWNrKCkpIHsKLSAg
ICAgICAgICAgIGFzc2VydF9mYWxzZSgicHJvdG90eXBlIiBpbiBzZWxmW3RoaXMubmFtZV0sCisg
ICAgICAgICAgICBhc3NlcnRfZmFsc2UoInByb3RvdHlwZSIgaW4gdGhpcy5nZXRfaW50ZXJmYWNl
X29iamVjdCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmFtZSArICcgc2hvdWxk
IG5vdCBoYXZlIGEgInByb3RvdHlwZSIgcHJvcGVydHknKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogCi0gICAgICAgIGFzc2VydF9vd25fcHJvcGVydHkoc2VsZlt0aGlzLm5hbWVd
LCAicHJvdG90eXBlIiwKKyAgICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0eSh0aGlzLmdldF9pbnRl
cmZhY2Vfb2JqZWN0KCksICJwcm90b3R5cGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdpbnRlcmZhY2UgIicgKyB0aGlzLm5hbWUgKyAnIiBkb2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0
eSAicHJvdG90eXBlIicpOwogCiAgICAgICAgIC8vICIuIC4gLiB0aGUgcHJvcGVydHkgZXhpc3Rz
IG9uIHRoZSBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdC4iCi0gICAgICAgIHZhciBpbnRlcmZh
Y2VQcm90b3R5cGVPYmplY3QgPSBzZWxmW3RoaXMubmFtZV0ucHJvdG90eXBlOwotICAgICAgICBh
c3NlcnRfb3duX3Byb3BlcnR5KHNlbGZbdGhpcy5uYW1lXS5wcm90b3R5cGUsICJ0b1N0cmluZyIs
CisgICAgICAgIHZhciBpbnRlcmZhY2VQcm90b3R5cGVPYmplY3QgPSB0aGlzLmdldF9pbnRlcmZh
Y2Vfb2JqZWN0KCkucHJvdG90eXBlOworICAgICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KGludGVy
ZmFjZVByb3RvdHlwZU9iamVjdCwgInRvU3RyaW5nIiwKICAgICAgICAgICAgICAgICAiaW50ZXJm
YWNlIHByb3RvdHlwZSBvYmplY3QgbWlzc2luZyBub24tc3RhdGljIG9wZXJhdGlvbiIpOwogCiAg
ICAgICAgIHZhciBzdHJpbmdpZmllclVuZm9yZ2VhYmxlID0gbWVtYmVyLmlzVW5mb3JnZWFibGU7
CkBAIC0xNDE1LDExICsyNTA5LDExIEBAIElkbEludGVyZmFjZS5wcm90b3R5cGUudGVzdF9tZW1i
ZXJfc3RyaW5naWZpZXIgPSBmdW5jdGlvbihtZW1iZXIpCiAgICAgICAgIC8vICJUaGUgcHJvcGVy
dHkgaGFzIGF0dHJpYnV0ZXMgeyBbW1dyaXRhYmxlXV06IEIsCiAgICAgICAgIC8vIFtbRW51bWVy
YWJsZV1dOiB0cnVlLCBbW0NvbmZpZ3VyYWJsZV1dOiBCIH0sIHdoZXJlIEIgaXMgZmFsc2UgaWYg
dGhlCiAgICAgICAgIC8vIHN0cmluZ2lmaWVyIGlzIHVuZm9yZ2VhYmxlIG9uIHRoZSBpbnRlcmZh
Y2UsIGFuZCB0cnVlIG90aGVyd2lzZS4iCi0gICAgICAgIGFzc2VydF9mYWxzZSgiZ2V0IiBpbiBk
ZXNjLCAicHJvcGVydHkgaGFzIGdldHRlciIpOwotICAgICAgICBhc3NlcnRfZmFsc2UoInNldCIg
aW4gZGVzYywgInByb3BlcnR5IGhhcyBzZXR0ZXIiKTsKKyAgICAgICAgYXNzZXJ0X2ZhbHNlKCJn
ZXQiIGluIGRlc2MsICJwcm9wZXJ0eSBzaG91bGQgbm90IGhhdmUgYSBnZXR0ZXIiKTsKKyAgICAg
ICAgYXNzZXJ0X2ZhbHNlKCJzZXQiIGluIGRlc2MsICJwcm9wZXJ0eSBzaG91bGQgbm90IGhhdmUg
YSBzZXR0ZXIiKTsKICAgICAgICAgYXNzZXJ0X2VxdWFscyhkZXNjLndyaXRhYmxlLCAhc3RyaW5n
aWZpZXJVbmZvcmdlYWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAicHJvcGVydHkgc2hvdWxk
IGJlIHdyaXRhYmxlIGlmIGFuZCBvbmx5IGlmIG5vdCB1bmZvcmdlYWJsZSIpOwotICAgICAgICBh
c3NlcnRfdHJ1ZShkZXNjLmVudW1lcmFibGUsICJwcm9wZXJ0eSBpcyBub3QgZW51bWVyYWJsZSIp
OworICAgICAgICBhc3NlcnRfdHJ1ZShkZXNjLmVudW1lcmFibGUsICJwcm9wZXJ0eSBzaG91bGQg
YmUgZW51bWVyYWJsZSIpOwogICAgICAgICBhc3NlcnRfZXF1YWxzKGRlc2MuY29uZmlndXJhYmxl
LCAhc3RyaW5naWZpZXJVbmZvcmdlYWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAicHJvcGVy
dHkgc2hvdWxkIGJlIGNvbmZpZ3VyYWJsZSBpZiBhbmQgb25seSBpZiBub3QgdW5mb3JnZWFibGUi
KTsKICAgICAgICAgLy8gIlRoZSB2YWx1ZSBvZiB0aGUgcHJvcGVydHkgaXMgYSBGdW5jdGlvbiBv
YmplY3QsIHdoaWNoIGJlaGF2ZXMgYXMKQEAgLTE0MzIsOCArMjUyNiw4IEBAIElkbEludGVyZmFj
ZS5wcm90b3R5cGUudGVzdF9tZW1iZXJfc3RyaW5naWZpZXIgPSBmdW5jdGlvbihtZW1iZXIpCiAg
ICAgICAgICAgICAicHJvcGVydHkgaGFzIHdyb25nIC5sZW5ndGgiKTsKIAogICAgICAgICAvLyAi
TGV0IE8gYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIFRvT2JqZWN0IG9uIHRoZSB0aGlzIHZhbHVl
LiIKLSAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgewot
ICAgICAgICAgICAgc2VsZlt0aGlzLm5hbWVdLnByb3RvdHlwZS50b1N0cmluZy5hcHBseShudWxs
LCBbXSk7CisgICAgICAgIGFzc2VydF90aHJvd3NfanMoZ2xvYmFsT2YoaW50ZXJmYWNlUHJvdG90
eXBlT2JqZWN0LnRvU3RyaW5nKS5UeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
aW50ZXJmYWNlUHJvdG90eXBlT2JqZWN0LnRvU3RyaW5nLmFwcGx5KG51bGwsIFtdKTsKICAgICAg
ICAgfSwgImNhbGxpbmcgc3RyaW5naWZpZXIgd2l0aCB0aGlzID0gbnVsbCBkaWRuJ3QgdGhyb3cg
VHlwZUVycm9yIik7CiAKICAgICAgICAgLy8gIklmIE8gaXMgbm90IGFuIG9iamVjdCB0aGF0IGlt
cGxlbWVudHMgdGhlIGludGVyZmFjZSBvbiB3aGljaCB0aGUKQEAgLTE0NDEsMzMgKzI1MzUsMzEg
QEAgSWRsSW50ZXJmYWNlLnByb3RvdHlwZS50ZXN0X21lbWJlcl9zdHJpbmdpZmllciA9IGZ1bmN0
aW9uKG1lbWJlcikKICAgICAgICAgLy8KICAgICAgICAgLy8gVE9ETzogVGVzdCBhIHBsYXRmb3Jt
IG9iamVjdCB0aGF0IGltcGxlbWVudHMgc29tZSBvdGhlcgogICAgICAgICAvLyBpbnRlcmZhY2Uu
ICAoSGF2ZSB0byBiZSBzdXJlIHRvIGdldCBpbmhlcml0YW5jZSByaWdodC4pCi0gICAgICAgIGFz
c2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHNl
bGZbdGhpcy5uYW1lXS5wcm90b3R5cGUudG9TdHJpbmcuYXBwbHkoe30sIFtdKTsKKyAgICAgICAg
YXNzZXJ0X3Rocm93c19qcyhnbG9iYWxPZihpbnRlcmZhY2VQcm90b3R5cGVPYmplY3QudG9TdHJp
bmcpLlR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBpbnRlcmZhY2VQcm90b3R5
cGVPYmplY3QudG9TdHJpbmcuYXBwbHkoe30sIFtdKTsKICAgICAgICAgfSwgImNhbGxpbmcgc3Ry
aW5naWZpZXIgd2l0aCB0aGlzID0ge30gZGlkbid0IHRocm93IFR5cGVFcnJvciIpOwogICAgIH0u
YmluZCh0aGlzKSwgdGhpcy5uYW1lICsgIiBpbnRlcmZhY2U6IHN0cmluZ2lmaWVyIik7CiB9Owog
Ci0vL0B9CiBJZGxJbnRlcmZhY2UucHJvdG90eXBlLnRlc3RfbWVtYmVycyA9IGZ1bmN0aW9uKCkK
LS8vQHsKIHsKICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubWVtYmVycy5sZW5ndGg7IGkr
KykKICAgICB7CiAgICAgICAgIHZhciBtZW1iZXIgPSB0aGlzLm1lbWJlcnNbaV07Ci0gICAgICAg
IHN3aXRjaCAobWVtYmVyLnR5cGUpIHsKLSAgICAgICAgY2FzZSAiaXRlcmFibGUiOgotICAgICAg
ICAgICAgdGhpcy5hZGRfaXRlcmFibGVfbWVtYmVycyhtZW1iZXIpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIC8vIFRPRE86IGFkZCBzZXRsaWtlIGFuZCBtYXBsaWtlIGhhbmRsaW5nLgot
ICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmIChtZW1iZXIu
dW50ZXN0ZWQpIHsKKyAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgfQogCi0g
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLm1lbWJlcnMubGVuZ3RoOyBpKyspCi0gICAgewot
ICAgICAgICB2YXIgbWVtYmVyID0gdGhpcy5tZW1iZXJzW2ldOwotICAgICAgICBpZiAobWVtYmVy
LnVudGVzdGVkKSB7CisgICAgICAgIGlmICghZXhwb3NlZF9pbihleHBvc3VyZV9zZXQobWVtYmVy
LCB0aGlzLmV4cG9zdXJlU2V0KSkpIHsKKyAgICAgICAgICAgIHN1YnNldFRlc3RCeUtleSh0aGlz
Lm5hbWUsIHRlc3QsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIC8vIEl0J3Mgbm90IGV4
cG9zZWQsIHNvIHdlIHNob3VsZG4ndCBmaW5kIGl0IGFueXdoZXJlLgorICAgICAgICAgICAgICAg
IGFzc2VydF9mYWxzZShtZW1iZXIubmFtZSBpbiB0aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0KCks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgaW50ZXJmYWNlIG9iamVjdCBtdXN0
IG5vdCBoYXZlIGEgcHJvcGVydHkgIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZv
cm1hdF92YWx1ZShtZW1iZXIubmFtZSkpOworICAgICAgICAgICAgICAgIGFzc2VydF9mYWxzZSht
ZW1iZXIubmFtZSBpbiB0aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0KCkucHJvdG90eXBlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIHByb3RvdHlwZSBvYmplY3QgbXVzdCBub3Qg
aGF2ZSBhIHByb3BlcnR5ICIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRf
dmFsdWUobWVtYmVyLm5hbWUpKTsKKyAgICAgICAgICAgIH0uYmluZCh0aGlzKSwgdGhpcy5uYW1l
ICsgIiBpbnRlcmZhY2U6IG1lbWJlciAiICsgbWVtYmVyLm5hbWUpOwogICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgIH0KIApAQCAtMTQ4Myw3ICsyNTc1LDcgQEAgSWRsSW50ZXJmYWNlLnBy
b3RvdHlwZS50ZXN0X21lbWJlcnMgPSBmdW5jdGlvbigpCiAgICAgICAgICAgICB7CiAgICAgICAg
ICAgICAgICAgdGhpcy50ZXN0X21lbWJlcl9hdHRyaWJ1dGUobWVtYmVyKTsKICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGlmIChtZW1iZXIuc3RyaW5naWZpZXIpIHsKKyAgICAgICAgICAgIGlm
IChtZW1iZXIuc3BlY2lhbCA9PT0gInN0cmluZ2lmaWVyIikgewogICAgICAgICAgICAgICAgIHRo
aXMudGVzdF9tZW1iZXJfc3RyaW5naWZpZXIobWVtYmVyKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtMTQ5OCwxMyArMjU5MCwxNyBAQCBJZGxJbnRlcmZhY2UucHJvdG90
eXBlLnRlc3RfbWVtYmVycyA9IGZ1bmN0aW9uKCkKICAgICAgICAgICAgICAgICB7CiAgICAgICAg
ICAgICAgICAgICAgIHRoaXMudGVzdF9tZW1iZXJfb3BlcmF0aW9uKG1lbWJlcik7CiAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIGlmIChtZW1iZXIuc3RyaW5naWZpZXIpIHsK
KyAgICAgICAgICAgIH0gZWxzZSBpZiAobWVtYmVyLnNwZWNpYWwgPT09ICJzdHJpbmdpZmllciIp
IHsKICAgICAgICAgICAgICAgICB0aGlzLnRlc3RfbWVtYmVyX3N0cmluZ2lmaWVyKG1lbWJlcik7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlICJpdGVy
YWJsZSI6Ci0gICAgICAgICAgICB0aGlzLnRlc3RfbWVtYmVyX2l0ZXJhYmxlKG1lbWJlcik7Cisg
ICAgICAgICAgICBpZiAobWVtYmVyLmFzeW5jKSB7CisgICAgICAgICAgICAgICAgdGhpcy50ZXN0
X21lbWJlcl9hc3luY19pdGVyYWJsZShtZW1iZXIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICB0aGlzLnRlc3RfbWVtYmVyX2l0ZXJhYmxlKG1lbWJlcik7CisgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAg
IC8vIFRPRE86IGNoZWNrIG1vcmUgbWVtYmVyIHR5cGVzLgpAQCAtMTUxMyw5ICsyNjA5LDcgQEAg
SWRsSW50ZXJmYWNlLnByb3RvdHlwZS50ZXN0X21lbWJlcnMgPSBmdW5jdGlvbigpCiAgICAgfQog
fTsKIAotLy9AfQogSWRsSW50ZXJmYWNlLnByb3RvdHlwZS50ZXN0X29iamVjdCA9IGZ1bmN0aW9u
KGRlc2MpCi0vL0B7CiB7CiAgICAgdmFyIG9iaiwgZXhjZXB0aW9uID0gbnVsbDsKICAgICB0cnkK
QEAgLTE1MjcsMTggKzI2MjEsMjUgQEAgSWRsSW50ZXJmYWNlLnByb3RvdHlwZS50ZXN0X29iamVj
dCA9IGZ1bmN0aW9uKGRlc2MpCiAgICAgICAgIGV4Y2VwdGlvbiA9IGU7CiAgICAgfQogCi0gICAg
dmFyIGV4cGVjdGVkX3R5cGVvZiA9Ci0gICAgICAgIHRoaXMubWVtYmVycy5zb21lKGZ1bmN0aW9u
KG1lbWJlcikgeyByZXR1cm4gbWVtYmVyLmxlZ2FjeWNhbGxlcjsgfSkKLSAgICAgICAgPyAiZnVu
Y3Rpb24iCi0gICAgICAgIDogIm9iamVjdCI7CisgICAgdmFyIGV4cGVjdGVkX3R5cGVvZjsKKyAg
ICBpZiAodGhpcy5uYW1lID09ICJIVE1MQWxsQ29sbGVjdGlvbiIpCisgICAgeworICAgICAgICAv
LyBSZXN1bHQgb2YgW1tJc0hUTUxEREFdXSBzbG90CisgICAgICAgIGV4cGVjdGVkX3R5cGVvZiA9
ICJ1bmRlZmluZWQiOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBleHBlY3RlZF90
eXBlb2YgPSAib2JqZWN0IjsKKyAgICB9CiAKICAgICB0aGlzLnRlc3RfcHJpbWFyeV9pbnRlcmZh
Y2Vfb2YoZGVzYywgb2JqLCBleGNlcHRpb24sIGV4cGVjdGVkX3R5cGVvZik7CisKICAgICB2YXIg
Y3VycmVudF9pbnRlcmZhY2UgPSB0aGlzOwogICAgIHdoaWxlIChjdXJyZW50X2ludGVyZmFjZSkK
ICAgICB7CiAgICAgICAgIGlmICghKGN1cnJlbnRfaW50ZXJmYWNlLm5hbWUgaW4gdGhpcy5hcnJh
eS5tZW1iZXJzKSkKICAgICAgICAgewotICAgICAgICAgICAgdGhyb3cgIkludGVyZmFjZSAiICsg
Y3VycmVudF9pbnRlcmZhY2UubmFtZSArICIgbm90IGZvdW5kIChpbmhlcml0ZWQgYnkgIiArIHRo
aXMubmFtZSArICIpIjsKKyAgICAgICAgICAgIHRocm93IG5ldyBJZGxIYXJuZXNzRXJyb3IoIklu
dGVyZmFjZSAiICsgY3VycmVudF9pbnRlcmZhY2UubmFtZSArICIgbm90IGZvdW5kIChpbmhlcml0
ZWQgYnkgIiArIHRoaXMubmFtZSArICIpIik7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGN1cnJl
bnRfaW50ZXJmYWNlLnByZXZlbnRfbXVsdGlwbGVfdGVzdGluZyAmJiBjdXJyZW50X2ludGVyZmFj
ZS5hbHJlYWR5X3Rlc3RlZCkKICAgICAgICAgewpAQCAtMTU0OSwyNCArMjY1MCw0MCBAQCBJZGxJ
bnRlcmZhY2UucHJvdG90eXBlLnRlc3Rfb2JqZWN0ID0gZnVuY3Rpb24oZGVzYykKICAgICB9CiB9
OwogCi0vL0B9CiBJZGxJbnRlcmZhY2UucHJvdG90eXBlLnRlc3RfcHJpbWFyeV9pbnRlcmZhY2Vf
b2YgPSBmdW5jdGlvbihkZXNjLCBvYmosIGV4Y2VwdGlvbiwgZXhwZWN0ZWRfdHlwZW9mKQotLy9A
ewogeworICAgIC8vIE9ubHkgdGhlIG9iamVjdCBpdHNlbGYsIG5vdCBpdHMgbWVtYmVycywgYXJl
IHRlc3RlZCBoZXJlLCBzbyBpZiB0aGUKKyAgICAvLyBpbnRlcmZhY2UgaXMgdW50ZXN0ZWQsIHRo
ZXJlIGlzIG5vdGhpbmcgdG8gZG8uCisgICAgaWYgKHRoaXMudW50ZXN0ZWQpCisgICAgeworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gIlRoZSBpbnRlcm5hbCBbW1NldFByb3RvdHlw
ZU9mXV0gbWV0aG9kIG9mIGV2ZXJ5IHBsYXRmb3JtIG9iamVjdCB0aGF0CisgICAgLy8gaW1wbGVt
ZW50cyBhbiBpbnRlcmZhY2Ugd2l0aCB0aGUgW0dsb2JhbF0gZXh0ZW5kZWQKKyAgICAvLyBhdHRy
aWJ1dGUgbXVzdCBleGVjdXRlIHRoZSBzYW1lIGFsZ29yaXRobSBhcyBpcyBkZWZpbmVkIGZvciB0
aGUKKyAgICAvLyBbW1NldFByb3RvdHlwZU9mXV0gaW50ZXJuYWwgbWV0aG9kIG9mIGFuIGltbXV0
YWJsZSBwcm90b3R5cGUgZXhvdGljCisgICAgLy8gb2JqZWN0LiIKKyAgICAvLyBodHRwczovL2hl
eWNhbS5naXRodWIuaW8vd2ViaWRsLyNwbGF0Zm9ybS1vYmplY3Qtc2V0cHJvdG90eXBlb2YKKyAg
ICBpZiAodGhpcy5pc19nbG9iYWwoKSkKKyAgICB7CisgICAgICAgIHRoaXMudGVzdF9pbW11dGFi
bGVfcHJvdG90eXBlKCJnbG9iYWwgcGxhdGZvcm0gb2JqZWN0Iiwgb2JqKTsKKyAgICB9CisKKwog
ICAgIC8vIFdlIGNhbid0IGVhc2lseSB0ZXN0IHRoYXQgaXRzIHByb3RvdHlwZSBpcyBjb3JyZWN0
IGlmIHRoZXJlJ3Mgbm8KICAgICAvLyBpbnRlcmZhY2Ugb2JqZWN0LCBvciB0aGUgb2JqZWN0IGlz
IGZyb20gYSBkaWZmZXJlbnQgZ2xvYmFsIGVudmlyb25tZW50CiAgICAgLy8gKG5vdCBpbnN0YW5j
ZW9mIE9iamVjdCkuICBUT0RPOiB0ZXN0IGluIHRoaXMgY2FzZSB0aGF0IGl0cyBwcm90b3R5cGUg
YXQKICAgICAvLyBsZWFzdCBsb29rcyBjb3JyZWN0LCBldmVuIGlmIHdlIGNhbid0IHRlc3QgdGhh
dCBpdCdzIGFjdHVhbGx5IGNvcnJlY3QuCi0gICAgaWYgKCF0aGlzLmhhc19leHRlbmRlZF9hdHRy
aWJ1dGUoIk5vSW50ZXJmYWNlT2JqZWN0IikKKyAgICBpZiAodGhpcy5zaG91bGRfaGF2ZV9pbnRl
cmZhY2Vfb2JqZWN0KCkKICAgICAmJiAodHlwZW9mIG9iaiAhPSBleHBlY3RlZF90eXBlb2YgfHwg
b2JqIGluc3RhbmNlb2YgT2JqZWN0KSkKICAgICB7Ci0gICAgICAgIHRlc3QoZnVuY3Rpb24oKQor
ICAgICAgICBzdWJzZXRUZXN0QnlLZXkodGhpcy5uYW1lLCB0ZXN0LCBmdW5jdGlvbigpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZXhjZXB0aW9uLCBudWxsLCAiVW5leHBl
Y3RlZCBleGNlcHRpb24gd2hlbiBldmFsdWF0aW5nIG9iamVjdCIpOwogICAgICAgICAgICAgYXNz
ZXJ0X2VxdWFscyh0eXBlb2Ygb2JqLCBleHBlY3RlZF90eXBlb2YsICJ3cm9uZyB0eXBlb2Ygb2Jq
ZWN0Iik7Ci0gICAgICAgICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KHNlbGYsIHRoaXMubmFtZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNlbGYgZG9lcyBub3QgaGF2ZSBvd24g
cHJvcGVydHkgIiArIGZvcm1hdF92YWx1ZSh0aGlzLm5hbWUpKTsKLSAgICAgICAgICAgIGFzc2Vy
dF9vd25fcHJvcGVydHkoc2VsZlt0aGlzLm5hbWVdLCAicHJvdG90eXBlIiwKKyAgICAgICAgICAg
IHRoaXMuYXNzZXJ0X2ludGVyZmFjZV9vYmplY3RfZXhpc3RzKCk7CisgICAgICAgICAgICBhc3Nl
cnRfb3duX3Byb3BlcnR5KHRoaXMuZ2V0X2ludGVyZmFjZV9vYmplY3QoKSwgInByb3RvdHlwZSIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbnRlcmZhY2UgIicgKyB0aGlzLm5h
bWUgKyAnIiBkb2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0eSAicHJvdG90eXBlIicpOwogCiAgICAg
ICAgICAgICAvLyAiVGhlIHZhbHVlIG9mIHRoZSBpbnRlcm5hbCBbW1Byb3RvdHlwZV1dIHByb3Bl
cnR5IG9mIHRoZQpAQCAtMTU3NCwzOSArMjY5MSw1MCBAQCBJZGxJbnRlcmZhY2UucHJvdG90eXBl
LnRlc3RfcHJpbWFyeV9pbnRlcmZhY2Vfb2YgPSBmdW5jdGlvbihkZXNjLCBvYmosIGV4Y2VwdGlv
bgogICAgICAgICAgICAgLy8gaW50ZXJmYWNlIGZyb20gdGhlIHBsYXRmb3JtIG9iamVjdOKAmXMg
YXNzb2NpYXRlZCBnbG9iYWwKICAgICAgICAgICAgIC8vIGVudmlyb25tZW50LiIKICAgICAgICAg
ICAgIGFzc2VydF9lcXVhbHMoT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iaiksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgIHNlbGZbdGhpcy5uYW1lXS5wcm90b3R5cGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRoaXMuZ2V0X2ludGVyZmFjZV9vYmplY3QoKS5wcm90b3R5cGUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRlc2MgKyAiJ3MgcHJvdG90eXBlIGlzIG5vdCAiICsgdGhp
cy5uYW1lICsgIi5wcm90b3R5cGUiKTsKICAgICAgICAgfS5iaW5kKHRoaXMpLCB0aGlzLm5hbWUg
KyAiIG11c3QgYmUgcHJpbWFyeSBpbnRlcmZhY2Ugb2YgIiArIGRlc2MpOwogICAgIH0KIAogICAg
IC8vICJUaGUgY2xhc3Mgc3RyaW5nIG9mIGEgcGxhdGZvcm0gb2JqZWN0IHRoYXQgaW1wbGVtZW50
cyBvbmUgb3IgbW9yZQotICAgIC8vIGludGVyZmFjZXMgbXVzdCBiZSB0aGUgaWRlbnRpZmllciBv
ZiB0aGUgcHJpbWFyeSBpbnRlcmZhY2Ugb2YgdGhlCisgICAgLy8gaW50ZXJmYWNlcyBtdXN0IGJl
IHRoZSBxdWFsaWZpZWQgbmFtZSBvZiB0aGUgcHJpbWFyeSBpbnRlcmZhY2Ugb2YgdGhlCiAgICAg
Ly8gcGxhdGZvcm0gb2JqZWN0LiIKLSAgICB0ZXN0KGZ1bmN0aW9uKCkKKyAgICBzdWJzZXRUZXN0
QnlLZXkodGhpcy5uYW1lLCB0ZXN0LCBmdW5jdGlvbigpCiAgICAgewogICAgICAgICBhc3NlcnRf
ZXF1YWxzKGV4Y2VwdGlvbiwgbnVsbCwgIlVuZXhwZWN0ZWQgZXhjZXB0aW9uIHdoZW4gZXZhbHVh
dGluZyBvYmplY3QiKTsKICAgICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2Ygb2JqLCBleHBlY3Rl
ZF90eXBlb2YsICJ3cm9uZyB0eXBlb2Ygb2JqZWN0Iik7Ci0gICAgICAgIGFzc2VydF9jbGFzc19z
dHJpbmcob2JqLCB0aGlzLm5hbWUsICJjbGFzcyBzdHJpbmcgb2YgIiArIGRlc2MpOworICAgICAg
ICBhc3NlcnRfY2xhc3Nfc3RyaW5nKG9iaiwgdGhpcy5nZXRfcXVhbGlmaWVkX25hbWUoKSwgImNs
YXNzIHN0cmluZyBvZiAiICsgZGVzYyk7CiAgICAgICAgIGlmICghdGhpcy5oYXNfc3RyaW5naWZp
ZXIoKSkKICAgICAgICAgewotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhTdHJpbmcob2JqKSwg
IltvYmplY3QgIiArIHRoaXMubmFtZSArICJdIiwgIlN0cmluZygiICsgZGVzYyArICIpIik7Cisg
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKFN0cmluZyhvYmopLCAiW29iamVjdCAiICsgdGhpcy5n
ZXRfcXVhbGlmaWVkX25hbWUoKSArICJdIiwgIlN0cmluZygiICsgZGVzYyArICIpIik7CiAgICAg
ICAgIH0KICAgICB9LmJpbmQodGhpcyksICJTdHJpbmdpZmljYXRpb24gb2YgIiArIGRlc2MpOwog
fTsKIAotLy9AfQogSWRsSW50ZXJmYWNlLnByb3RvdHlwZS50ZXN0X2ludGVyZmFjZV9vZiA9IGZ1
bmN0aW9uKGRlc2MsIG9iaiwgZXhjZXB0aW9uLCBleHBlY3RlZF90eXBlb2YpCi0vL0B7CiB7CiAg
ICAgLy8gVE9ETzogSW5kZXhlZCBhbmQgbmFtZWQgcHJvcGVydGllcywgbW9yZSBjaGVja3Mgb24g
aW50ZXJmYWNlIG1lbWJlcnMKICAgICB0aGlzLmFscmVhZHlfdGVzdGVkID0gdHJ1ZTsKKyAgICBp
ZiAoIXNob3VsZFJ1blN1YlRlc3QodGhpcy5uYW1lKSkgeworICAgICAgICByZXR1cm47CisgICAg
fQogCiAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLm1lbWJlcnMubGVuZ3RoOyBpKyspCiAg
ICAgewogICAgICAgICB2YXIgbWVtYmVyID0gdGhpcy5tZW1iZXJzW2ldOworICAgICAgICBpZiAo
bWVtYmVyLnVudGVzdGVkKSB7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAg
ICAgICBpZiAoIWV4cG9zZWRfaW4oZXhwb3N1cmVfc2V0KG1lbWJlciwgdGhpcy5leHBvc3VyZVNl
dCkpKSB7CisgICAgICAgICAgICBzdWJzZXRUZXN0QnlLZXkodGhpcy5uYW1lLCB0ZXN0LCBmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGV4Y2VwdGlvbiwgbnVsbCwg
IlVuZXhwZWN0ZWQgZXhjZXB0aW9uIHdoZW4gZXZhbHVhdGluZyBvYmplY3QiKTsKKyAgICAgICAg
ICAgICAgICBhc3NlcnRfZmFsc2UobWVtYmVyLm5hbWUgaW4gb2JqKTsKKyAgICAgICAgICAgIH0u
YmluZCh0aGlzKSwgdGhpcy5uYW1lICsgIiBpbnRlcmZhY2U6ICIgKyBkZXNjICsgJyBtdXN0IG5v
dCBoYXZlIHByb3BlcnR5ICInICsgbWVtYmVyLm5hbWUgKyAnIicpOworICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgIH0KICAgICAgICAgaWYgKG1lbWJlci50eXBlID09ICJhdHRyaWJ1dGUi
ICYmIG1lbWJlci5pc1VuZm9yZ2VhYmxlKQogICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgYV90
ZXN0ID0gYXN5bmNfdGVzdCh0aGlzLm5hbWUgKyAiIGludGVyZmFjZTogIiArIGRlc2MgKyAnIG11
c3QgaGF2ZSBvd24gcHJvcGVydHkgIicgKyBtZW1iZXIubmFtZSArICciJyk7CisgICAgICAgICAg
ICB2YXIgYV90ZXN0ID0gc3Vic2V0VGVzdEJ5S2V5KHRoaXMubmFtZSwgYXN5bmNfdGVzdCwgdGhp
cy5uYW1lICsgIiBpbnRlcmZhY2U6ICIgKyBkZXNjICsgJyBtdXN0IGhhdmUgb3duIHByb3BlcnR5
ICInICsgbWVtYmVyLm5hbWUgKyAnIicpOwogICAgICAgICAgICAgYV90ZXN0LnN0ZXAoZnVuY3Rp
b24oKSB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhleGNlcHRpb24sIG51bGwsICJV
bmV4cGVjdGVkIGV4Y2VwdGlvbiB3aGVuIGV2YWx1YXRpbmcgb2JqZWN0Iik7CiAgICAgICAgICAg
ICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2Ygb2JqLCBleHBlY3RlZF90eXBlb2YsICJ3cm9uZyB0
eXBlb2Ygb2JqZWN0Iik7CkBAIC0xNjE4LDcgKzI3NDYsNyBAQCBJZGxJbnRlcmZhY2UucHJvdG90
eXBlLnRlc3RfaW50ZXJmYWNlX29mID0gZnVuY3Rpb24oZGVzYywgb2JqLCBleGNlcHRpb24sIGV4
cGVjdAogICAgICAgICAgICAgICAgICBtZW1iZXIubmFtZSAmJgogICAgICAgICAgICAgICAgICBt
ZW1iZXIuaXNVbmZvcmdlYWJsZSkKICAgICAgICAgewotICAgICAgICAgICAgdmFyIGFfdGVzdCA9
IGFzeW5jX3Rlc3QodGhpcy5uYW1lICsgIiBpbnRlcmZhY2U6ICIgKyBkZXNjICsgJyBtdXN0IGhh
dmUgb3duIHByb3BlcnR5ICInICsgbWVtYmVyLm5hbWUgKyAnIicpOworICAgICAgICAgICAgdmFy
IGFfdGVzdCA9IHN1YnNldFRlc3RCeUtleSh0aGlzLm5hbWUsIGFzeW5jX3Rlc3QsIHRoaXMubmFt
ZSArICIgaW50ZXJmYWNlOiAiICsgZGVzYyArICcgbXVzdCBoYXZlIG93biBwcm9wZXJ0eSAiJyAr
IG1lbWJlci5uYW1lICsgJyInKTsKICAgICAgICAgICAgIGFfdGVzdC5zdGVwKGZ1bmN0aW9uKCkK
ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGV4Y2VwdGlvbiwg
bnVsbCwgIlVuZXhwZWN0ZWQgZXhjZXB0aW9uIHdoZW4gZXZhbHVhdGluZyBvYmplY3QiKTsKQEAg
LTE2MzMsMTEgKzI3NjEsMTEgQEAgSWRsSW50ZXJmYWNlLnByb3RvdHlwZS50ZXN0X2ludGVyZmFj
ZV9vZiA9IGZ1bmN0aW9uKGRlc2MsIG9iaiwgZXhjZXB0aW9uLCBleHBlY3QKICAgICAgICAgfHwg
bWVtYmVyLnR5cGUgPT0gIm9wZXJhdGlvbiIpCiAgICAgICAgICYmIG1lbWJlci5uYW1lKQogICAg
ICAgICB7Ci0gICAgICAgICAgICB0ZXN0KGZ1bmN0aW9uKCkKKyAgICAgICAgICAgIHN1YnNldFRl
c3RCeUtleSh0aGlzLm5hbWUsIHRlc3QsIGZ1bmN0aW9uKCkKICAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGV4Y2VwdGlvbiwgbnVsbCwgIlVuZXhwZWN0ZWQgZXhj
ZXB0aW9uIHdoZW4gZXZhbHVhdGluZyBvYmplY3QiKTsKICAgICAgICAgICAgICAgICBhc3NlcnRf
ZXF1YWxzKHR5cGVvZiBvYmosIGV4cGVjdGVkX3R5cGVvZiwgIndyb25nIHR5cGVvZiBvYmplY3Qi
KTsKLSAgICAgICAgICAgICAgICBpZiAoIW1lbWJlclsic3RhdGljIl0pIHsKKyAgICAgICAgICAg
ICAgICBpZiAobWVtYmVyLnNwZWNpYWwgIT09ICJzdGF0aWMiKSB7CiAgICAgICAgICAgICAgICAg
ICAgIGlmICghdGhpcy5pc19nbG9iYWwoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgYXNz
ZXJ0X2luaGVyaXRzKG9iaiwgbWVtYmVyLm5hbWUpOwogICAgICAgICAgICAgICAgICAgICB9IGVs
c2UgewpAQCAtMTY2NCw3ICsyNzkyLDE1IEBAIElkbEludGVyZmFjZS5wcm90b3R5cGUudGVzdF9p
bnRlcmZhY2Vfb2YgPSBmdW5jdGlvbihkZXNjLCBvYmosIGV4Y2VwdGlvbiwgZXhwZWN0CiAgICAg
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRocm93
bikKICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0aGlzLmFycmF5LmFzc2VydF90eXBlX2lzKHByb3BlcnR5LCBtZW1iZXIuaWRsVHlwZSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubmFtZSA9PSAiRG9jdW1lbnQiICYm
IG1lbWJlci5uYW1lID09ICJhbGwiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVzdWx0IG9mIFtbSXNIVE1MRERBXV0g
c2xvdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHR5cGVv
ZiBwcm9wZXJ0eSwgInVuZGVmaW5lZCIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFycmF5LmFzc2Vy
dF90eXBlX2lzKHByb3BlcnR5LCBtZW1iZXIuaWRsVHlwZSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgICAgIGlmIChtZW1iZXIudHlwZSA9PSAib3BlcmF0aW9uIikK
QEAgLTE2NzIsMzAgKzI4MDgsMzQgQEAgSWRsSW50ZXJmYWNlLnByb3RvdHlwZS50ZXN0X2ludGVy
ZmFjZV9vZiA9IGZ1bmN0aW9uKGRlc2MsIG9iaiwgZXhjZXB0aW9uLCBleHBlY3QKICAgICAgICAg
ICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIG9ialttZW1iZXIubmFtZV0sICJm
dW5jdGlvbiIpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgfS5iaW5kKHRoaXMpLCB0aGlzLm5hbWUgKyAiIGludGVyZmFjZTogIiArIGRlc2Mg
KyAnIG11c3QgaW5oZXJpdCBwcm9wZXJ0eSAiJyArIG1lbWJlci5uYW1lICsgJyIgd2l0aCB0aGUg
cHJvcGVyIHR5cGUgKCcgKyBpICsgJyknKTsKKyAgICAgICAgICAgIH0uYmluZCh0aGlzKSwgdGhp
cy5uYW1lICsgIiBpbnRlcmZhY2U6ICIgKyBkZXNjICsgJyBtdXN0IGluaGVyaXQgcHJvcGVydHkg
IicgKyBtZW1iZXIgKyAnIiB3aXRoIHRoZSBwcm9wZXIgdHlwZScpOwogICAgICAgICB9CiAgICAg
ICAgIC8vIFRPRE86IFRoaXMgaXMgd3JvbmcgaWYgdGhlcmUgYXJlIG11bHRpcGxlIG9wZXJhdGlv
bnMgd2l0aCB0aGUgc2FtZQogICAgICAgICAvLyBpZGVudGlmaWVyLgogICAgICAgICAvLyBUT0RP
OiBUZXN0IHBhc3NpbmcgYXJndW1lbnRzIG9mIHRoZSB3cm9uZyB0eXBlLgogICAgICAgICBpZiAo
bWVtYmVyLnR5cGUgPT0gIm9wZXJhdGlvbiIgJiYgbWVtYmVyLm5hbWUgJiYgbWVtYmVyLmFyZ3Vt
ZW50cy5sZW5ndGgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHZhciBhX3Rlc3QgPSBhc3luY190
ZXN0KCB0aGlzLm5hbWUgKyAiIGludGVyZmFjZTogY2FsbGluZyAiICsgbWVtYmVyLm5hbWUgKwot
ICAgICAgICAgICAgIigiICsgbWVtYmVyLmFyZ3VtZW50cy5tYXAoZnVuY3Rpb24obSkgeyByZXR1
cm4gbS5pZGxUeXBlLmlkbFR5cGU7IH0pICsKLSAgICAgICAgICAgICIpIG9uICIgKyBkZXNjICsg
IiB3aXRoIHRvbyBmZXcgYXJndW1lbnRzIG11c3QgdGhyb3cgVHlwZUVycm9yIik7CisgICAgICAg
ICAgICB2YXIgZGVzY3JpcHRpb24gPQorICAgICAgICAgICAgICAgIHRoaXMubmFtZSArICIgaW50
ZXJmYWNlOiBjYWxsaW5nICIgKyBtZW1iZXIgKyAiIG9uICIgKyBkZXNjICsKKyAgICAgICAgICAg
ICAgICAiIHdpdGggdG9vIGZldyBhcmd1bWVudHMgbXVzdCB0aHJvdyBUeXBlRXJyb3IiOworICAg
ICAgICAgICAgdmFyIGFfdGVzdCA9IHN1YnNldFRlc3RCeUtleSh0aGlzLm5hbWUsIGFzeW5jX3Rl
c3QsIGRlc2NyaXB0aW9uKTsKICAgICAgICAgICAgIGFfdGVzdC5zdGVwKGZ1bmN0aW9uKCkKICAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGV4Y2VwdGlvbiwgbnVs
bCwgIlVuZXhwZWN0ZWQgZXhjZXB0aW9uIHdoZW4gZXZhbHVhdGluZyBvYmplY3QiKTsKICAgICAg
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBvYmosIGV4cGVjdGVkX3R5cGVvZiwgIndy
b25nIHR5cGVvZiBvYmplY3QiKTsKLSAgICAgICAgICAgICAgICBpZiAoIW1lbWJlclsic3RhdGlj
Il0pIHsKKyAgICAgICAgICAgICAgICB2YXIgZm47CisgICAgICAgICAgICAgICAgaWYgKG1lbWJl
ci5zcGVjaWFsICE9PSAic3RhdGljIikgewogICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMu
aXNfZ2xvYmFsKCkgJiYgIW1lbWJlci5pc1VuZm9yZ2VhYmxlKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBhc3NlcnRfaW5oZXJpdHMob2JqLCBtZW1iZXIubmFtZSk7CiAgICAgICAgICAgICAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnRfb3duX3Byb3Bl
cnR5KG9iaiwgbWVtYmVyLm5hbWUpOwogICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgIGZuID0gb2JqW21lbWJlci5uYW1lXTsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAg
YXNzZXJ0X2ZhbHNlKG1lbWJlci5uYW1lIGluIG9iaik7CisgICAgICAgICAgICAgICAgICAgIGFz
c2VydF9vd25fcHJvcGVydHkob2JqLmNvbnN0cnVjdG9yLCBtZW1iZXIubmFtZSwgImludGVyZmFj
ZSBvYmplY3QgbXVzdCBoYXZlIHN0YXRpYyBvcGVyYXRpb24gYXMgb3duIHByb3BlcnR5Iik7Cisg
ICAgICAgICAgICAgICAgICAgIGZuID0gb2JqLmNvbnN0cnVjdG9yW21lbWJlci5uYW1lXTsKICAg
ICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICB2YXIgbWluTGVuZ3RoID0gbWluT3Zl
cmxvYWRMZW5ndGgodGhpcy5tZW1iZXJzLmZpbHRlcihmdW5jdGlvbihtKSB7CkBAIC0xNzA0LDcg
KzI4NDQsNyBAQCBJZGxJbnRlcmZhY2UucHJvdG90eXBlLnRlc3RfaW50ZXJmYWNlX29mID0gZnVu
Y3Rpb24oZGVzYywgb2JqLCBleGNlcHRpb24sIGV4cGVjdAogICAgICAgICAgICAgICAgIHZhciBh
cmdzID0gW107CiAgICAgICAgICAgICAgICAgdmFyIGNiID0gYXdhaXROQ2FsbGJhY2tzKG1pbkxl
bmd0aCwgYV90ZXN0LmRvbmUuYmluZChhX3Rlc3QpKTsKICAgICAgICAgICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IG1pbkxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRocm93
T3JSZWplY3QoYV90ZXN0LCBtZW1iZXIsIG9ialttZW1iZXIubmFtZV0sIG9iaiwgYXJncywgICJD
YWxsZWQgd2l0aCAiICsgaSArICIgYXJndW1lbnRzIiwgY2IpOworICAgICAgICAgICAgICAgICAg
ICB0aHJvd09yUmVqZWN0KGFfdGVzdCwgbWVtYmVyLCBmbiwgb2JqLCBhcmdzLCAiQ2FsbGVkIHdp
dGggIiArIGkgKyAiIGFyZ3VtZW50cyIsIGNiKTsKIAogICAgICAgICAgICAgICAgICAgICBhcmdz
LnB1c2goY3JlYXRlX3N1aXRhYmxlX29iamVjdChtZW1iZXIuYXJndW1lbnRzW2ldLmlkbFR5cGUp
KTsKICAgICAgICAgICAgICAgICB9CkBAIC0xNzEzLDE0ICsyODUzLDIxIEBAIElkbEludGVyZmFj
ZS5wcm90b3R5cGUudGVzdF9pbnRlcmZhY2Vfb2YgPSBmdW5jdGlvbihkZXNjLCBvYmosIGV4Y2Vw
dGlvbiwgZXhwZWN0CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfS5iaW5kKHRoaXMp
KTsKICAgICAgICAgfQorCisgICAgICAgIGlmIChtZW1iZXIuaXNfdG9fanNvbl9yZWd1bGFyX29w
ZXJhdGlvbigpKSB7CisgICAgICAgICAgICB0aGlzLnRlc3RfdG9fanNvbl9vcGVyYXRpb24oZGVz
Yywgb2JqLCBtZW1iZXIpOworICAgICAgICB9CiAgICAgfQogfTsKIAotLy9AfQogSWRsSW50ZXJm
YWNlLnByb3RvdHlwZS5oYXNfc3RyaW5naWZpZXIgPSBmdW5jdGlvbigpCi0vL0B7CiB7Ci0gICAg
aWYgKHRoaXMubWVtYmVycy5zb21lKGZ1bmN0aW9uKG1lbWJlcikgeyByZXR1cm4gbWVtYmVyLnN0
cmluZ2lmaWVyOyB9KSkgeworICAgIGlmICh0aGlzLm5hbWUgPT09ICJET01FeGNlcHRpb24iKSB7
CisgICAgICAgIC8vIHRvU3RyaW5nIGlzIGluaGVyaXRlZCBmcm9tIEVycm9yLCBzbyBkb24ndCBh
c3N1bWUgd2UgaGF2ZSB0aGUKKyAgICAgICAgLy8gZGVmYXVsdCBzdHJpbmdpZmVyCisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKyAgICBpZiAodGhpcy5tZW1iZXJzLnNvbWUoZnVuY3Rpb24o
bWVtYmVyKSB7IHJldHVybiBtZW1iZXIuc3BlY2lhbCA9PT0gInN0cmluZ2lmaWVyIjsgfSkpIHsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIGlmICh0aGlzLmJhc2UgJiYKQEAgLTE3
MzAsOSArMjg3Nyw3IEBAIElkbEludGVyZmFjZS5wcm90b3R5cGUuaGFzX3N0cmluZ2lmaWVyID0g
ZnVuY3Rpb24oKQogICAgIHJldHVybiBmYWxzZTsKIH07CiAKLS8vQH0KIElkbEludGVyZmFjZS5w
cm90b3R5cGUuZG9faW50ZXJmYWNlX2F0dHJpYnV0ZV9hc3NlcnRzID0gZnVuY3Rpb24ob2JqLCBt
ZW1iZXIsIGFfdGVzdCkKLS8vQHsKIHsKICAgICAvLyBUaGlzIGZ1bmN0aW9uIHRlc3RzIFdlYklE
TCBhcyBvZiAyMDE1LTAxLTI3LgogICAgIC8vIFRPRE86IENvbnNpZGVyIFtFeHBvc2VkXS4KQEAg
LTE3NDMsMjcgKzI4ODgsMjIgQEAgSWRsSW50ZXJmYWNlLnByb3RvdHlwZS5kb19pbnRlcmZhY2Vf
YXR0cmlidXRlX2Fzc2VydHMgPSBmdW5jdGlvbihvYmosIG1lbWJlciwgYV8KIAogICAgIHZhciBw
ZW5kaW5nUHJvbWlzZXMgPSBbXTsKIAotICAgIC8vICJGb3IgZWFjaCBleHBvc2VkIGF0dHJpYnV0
ZSBvZiB0aGUgaW50ZXJmYWNlLCB3aGV0aGVyIGl0IHdhcyBkZWNsYXJlZCBvbgotICAgIC8vIHRo
ZSBpbnRlcmZhY2UgaXRzZWxmIG9yIG9uZSBvZiBpdHMgY29uc2VxdWVudGlhbCBpbnRlcmZhY2Vz
LCB0aGVyZSBNVVNUCi0gICAgLy8gZXhpc3QgYSBjb3JyZXNwb25kaW5nIHByb3BlcnR5LiBUaGUg
Y2hhcmFjdGVyaXN0aWNzIG9mIHRoaXMgcHJvcGVydHkgYXJlCi0gICAgLy8gYXMgZm9sbG93czoi
Ci0KICAgICAvLyAiVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5IGlzIHRoZSBpZGVudGlmaWVyIG9m
IHRoZSBhdHRyaWJ1dGUuIgogICAgIGFzc2VydF9vd25fcHJvcGVydHkob2JqLCBtZW1iZXIubmFt
ZSk7CiAKICAgICAvLyAiVGhlIHByb3BlcnR5IGhhcyBhdHRyaWJ1dGVzIHsgW1tHZXRdXTogRywg
W1tTZXRdXTogUywgW1tFbnVtZXJhYmxlXV06CiAgICAgLy8gdHJ1ZSwgW1tDb25maWd1cmFibGVd
XTogY29uZmlndXJhYmxlIH0sIHdoZXJlOgogICAgIC8vICJjb25maWd1cmFibGUgaXMgZmFsc2Ug
aWYgdGhlIGF0dHJpYnV0ZSB3YXMgZGVjbGFyZWQgd2l0aCB0aGUKLSAgICAvLyBbVW5mb3JnZWFi
bGVdIGV4dGVuZGVkIGF0dHJpYnV0ZSBhbmQgdHJ1ZSBvdGhlcndpc2U7CisgICAgLy8gW0xlZ2Fj
eVVuZm9yZ2VhYmxlXSBleHRlbmRlZCBhdHRyaWJ1dGUgYW5kIHRydWUgb3RoZXJ3aXNlOwogICAg
IC8vICJHIGlzIHRoZSBhdHRyaWJ1dGUgZ2V0dGVyLCBkZWZpbmVkIGJlbG93OyBhbmQKICAgICAv
LyAiUyBpcyB0aGUgYXR0cmlidXRlIHNldHRlciwgYWxzbyBkZWZpbmVkIGJlbG93LiIKICAgICB2
YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBtZW1iZXIubmFt
ZSk7Ci0gICAgYXNzZXJ0X2ZhbHNlKCJ2YWx1ZSIgaW4gZGVzYywgJ3Byb3BlcnR5IGRlc2NyaXB0
b3IgaGFzIHZhbHVlIGJ1dCBpcyBzdXBwb3NlZCB0byBiZSBhY2Nlc3NvcicpOwotICAgIGFzc2Vy
dF9mYWxzZSgid3JpdGFibGUiIGluIGRlc2MsICdwcm9wZXJ0eSBkZXNjcmlwdG9yIGhhcyAid3Jp
dGFibGUiIGZpZWxkIGJ1dCBpcyBzdXBwb3NlZCB0byBiZSBhY2Nlc3NvcicpOwotICAgIGFzc2Vy
dF90cnVlKGRlc2MuZW51bWVyYWJsZSwgInByb3BlcnR5IGlzIG5vdCBlbnVtZXJhYmxlIik7Cisg
ICAgYXNzZXJ0X2ZhbHNlKCJ2YWx1ZSIgaW4gZGVzYywgJ3Byb3BlcnR5IGRlc2NyaXB0b3Igc2hv
dWxkIG5vdCBoYXZlIGEgInZhbHVlIiBmaWVsZCcpOworICAgIGFzc2VydF9mYWxzZSgid3JpdGFi
bGUiIGluIGRlc2MsICdwcm9wZXJ0eSBkZXNjcmlwdG9yIHNob3VsZCBub3QgaGF2ZSBhICJ3cml0
YWJsZSIgZmllbGQnKTsKKyAgICBhc3NlcnRfdHJ1ZShkZXNjLmVudW1lcmFibGUsICJwcm9wZXJ0
eSBzaG91bGQgYmUgZW51bWVyYWJsZSIpOwogICAgIGlmIChtZW1iZXIuaXNVbmZvcmdlYWJsZSkK
ICAgICB7Ci0gICAgICAgIGFzc2VydF9mYWxzZShkZXNjLmNvbmZpZ3VyYWJsZSwgIltVbmZvcmdl
YWJsZV0gcHJvcGVydHkgbXVzdCBub3QgYmUgY29uZmlndXJhYmxlIik7CisgICAgICAgIGFzc2Vy
dF9mYWxzZShkZXNjLmNvbmZpZ3VyYWJsZSwgIltMZWdhY3lVbmZvcmdlYWJsZV0gcHJvcGVydHkg
bXVzdCBub3QgYmUgY29uZmlndXJhYmxlIik7CiAgICAgfQogICAgIGVsc2UKICAgICB7CkBAIC0x
Nzc2LDE5ICsyOTE2LDE5IEBAIElkbEludGVyZmFjZS5wcm90b3R5cGUuZG9faW50ZXJmYWNlX2F0
dHJpYnV0ZV9hc3NlcnRzID0gZnVuY3Rpb24ob2JqLCBtZW1iZXIsIGFfCiAgICAgYXNzZXJ0X2Vx
dWFscyh0eXBlb2YgZGVzYy5nZXQsICJmdW5jdGlvbiIsICJnZXR0ZXIgbXVzdCBiZSBGdW5jdGlv
biIpOwogCiAgICAgLy8gIklmIHRoZSBhdHRyaWJ1dGUgaXMgYSByZWd1bGFyIGF0dHJpYnV0ZSwg
dGhlbjoiCi0gICAgaWYgKCFtZW1iZXJbInN0YXRpYyJdKSB7CisgICAgaWYgKG1lbWJlci5zcGVj
aWFsICE9PSAic3RhdGljIikgewogICAgICAgICAvLyAiSWYgTyBpcyBub3QgYSBwbGF0Zm9ybSBv
YmplY3QgdGhhdCBpbXBsZW1lbnRzIEksIHRoZW46Ci0gICAgICAgIC8vICJJZiB0aGUgYXR0cmli
dXRlIHdhcyBzcGVjaWZpZWQgd2l0aCB0aGUgW0xlbmllbnRUaGlzXSBleHRlbmRlZAorICAgICAg
ICAvLyAiSWYgdGhlIGF0dHJpYnV0ZSB3YXMgc3BlY2lmaWVkIHdpdGggdGhlIFtMZWdhY3lMZW5p
ZW50VGhpc10gZXh0ZW5kZWQKICAgICAgICAgLy8gYXR0cmlidXRlLCB0aGVuIHJldHVybiB1bmRl
ZmluZWQuCiAgICAgICAgIC8vICJPdGhlcndpc2UsIHRocm93IGEgVHlwZUVycm9yLiIKLSAgICAg
ICAgaWYgKCFtZW1iZXIuaGFzX2V4dGVuZGVkX2F0dHJpYnV0ZSgiTGVuaWVudFRoaXMiKSkgewor
ICAgICAgICBpZiAoIW1lbWJlci5oYXNfZXh0ZW5kZWRfYXR0cmlidXRlKCJMZWdhY3lMZW5pZW50
VGhpcyIpKSB7CiAgICAgICAgICAgICBpZiAobWVtYmVyLmlkbFR5cGUuZ2VuZXJpYyAhPT0gIlBy
b21pc2UiKSB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCks
IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3NfanMoZ2xvYmFsT2Yo
ZGVzYy5nZXQpLlR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgIGRl
c2MuZ2V0LmNhbGwoe30pOwogICAgICAgICAgICAgICAgIH0uYmluZCh0aGlzKSwgImNhbGxpbmcg
Z2V0dGVyIG9uIHdyb25nIG9iamVjdCB0eXBlIG11c3QgdGhyb3cgVHlwZUVycm9yIik7CiAgICAg
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIHBlbmRpbmdQcm9taXNlcy5wdXNoKAot
ICAgICAgICAgICAgICAgICAgICBwcm9taXNlX3JlamVjdHMoYV90ZXN0LCBuZXcgVHlwZUVycm9y
KCksIGRlc2MuZ2V0LmNhbGwoe30pLAorICAgICAgICAgICAgICAgICAgICBwcm9taXNlX3JlamVj
dHNfanMoYV90ZXN0LCBUeXBlRXJyb3IsIGRlc2MuZ2V0LmNhbGwoe30pLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgImNhbGxpbmcgZ2V0dGVyIG9uIHdyb25nIG9iamVjdCB0
eXBlIG11c3QgcmVqZWN0IHRoZSByZXR1cm4gcHJvbWlzZSB3aXRoIFR5cGVFcnJvciIpKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKQEAgLTE4MDEsMTAgKzI5NDEsMTYgQEAgSWRs
SW50ZXJmYWNlLnByb3RvdHlwZS5kb19pbnRlcmZhY2VfYXR0cmlidXRlX2Fzc2VydHMgPSBmdW5j
dGlvbihvYmosIG1lbWJlciwgYV8KICAgICAvLyB2YWx1ZSAwLiIKICAgICBhc3NlcnRfZXF1YWxz
KGRlc2MuZ2V0Lmxlbmd0aCwgMCwgImdldHRlciBsZW5ndGggbXVzdCBiZSAwIik7CiAKKyAgICAv
LyAiTGV0IG5hbWUgYmUgdGhlIHN0cmluZyAiZ2V0ICIgcHJlcGVuZGVkIHRvIGF0dHJpYnV0ZeKA
mXMgaWRlbnRpZmllci4iCisgICAgLy8gIlBlcmZvcm0gISBTZXRGdW5jdGlvbk5hbWUoRiwgbmFt
ZSkuIgorICAgIGFzc2VydF9lcXVhbHMoZGVzYy5nZXQubmFtZSwgImdldCAiICsgbWVtYmVyLm5h
bWUsCisgICAgICAgICJnZXR0ZXIgbXVzdCBoYXZlIHRoZSBuYW1lICdnZXQgIiArIG1lbWJlci5u
YW1lICsgIiciKTsKKwogCiAgICAgLy8gVE9ETzogVGVzdCBjYWxsaW5nIHNldHRlciBvbiB0aGUg
aW50ZXJmYWNlIHByb3RvdHlwZSAoc2hvdWxkIHRocm93CiAgICAgLy8gVHlwZUVycm9yIGluIG1v
c3QgY2FzZXMpLgogICAgIGlmIChtZW1iZXIucmVhZG9ubHkKKyAgICAmJiAhbWVtYmVyLmhhc19l
eHRlbmRlZF9hdHRyaWJ1dGUoIkxlZ2FjeUxlbmllbnRTZXR0ZXIiKQogICAgICYmICFtZW1iZXIu
aGFzX2V4dGVuZGVkX2F0dHJpYnV0ZSgiUHV0Rm9yd2FyZHMiKQogICAgICYmICFtZW1iZXIuaGFz
X2V4dGVuZGVkX2F0dHJpYnV0ZSgiUmVwbGFjZWFibGUiKSkKICAgICB7CkBAIC0xODIwLDE1ICsy
OTY2LDE1IEBAIElkbEludGVyZmFjZS5wcm90b3R5cGUuZG9faW50ZXJmYWNlX2F0dHJpYnV0ZV9h
c3NlcnRzID0gZnVuY3Rpb24ob2JqLCBtZW1iZXIsIGFfCiAgICAgICAgIGFzc2VydF9lcXVhbHMo
dHlwZW9mIGRlc2Muc2V0LCAiZnVuY3Rpb24iLCAic2V0dGVyIG11c3QgYmUgZnVuY3Rpb24gZm9y
IFB1dEZvcndhcmRzLCBSZXBsYWNlYWJsZSwgb3Igbm9uLXJlYWRvbmx5IGF0dHJpYnV0ZXMiKTsK
IAogICAgICAgICAvLyAiSWYgdGhlIGF0dHJpYnV0ZSBpcyBhIHJlZ3VsYXIgYXR0cmlidXRlLCB0
aGVuOiIKLSAgICAgICAgaWYgKCFtZW1iZXJbInN0YXRpYyJdKSB7CisgICAgICAgIGlmIChtZW1i
ZXIuc3BlY2lhbCAhPT0gInN0YXRpYyIpIHsKICAgICAgICAgICAgIC8vICJJZiAvdmFsaWRUaGlz
LyBpcyBmYWxzZSBhbmQgdGhlIGF0dHJpYnV0ZSB3YXMgbm90IHNwZWNpZmllZAotICAgICAgICAg
ICAgLy8gd2l0aCB0aGUgW0xlbmllbnRUaGlzXSBleHRlbmRlZCBhdHRyaWJ1dGUsIHRoZW4gdGhy
b3cgYQorICAgICAgICAgICAgLy8gd2l0aCB0aGUgW0xlZ2FjeUxlbmllbnRUaGlzXSBleHRlbmRl
ZCBhdHRyaWJ1dGUsIHRoZW4gdGhyb3cgYQogICAgICAgICAgICAgLy8gVHlwZUVycm9yLiIKICAg
ICAgICAgICAgIC8vICJJZiB0aGUgYXR0cmlidXRlIGlzIGRlY2xhcmVkIHdpdGggYSBbUmVwbGFj
ZWFibGVdIGV4dGVuZGVkCiAgICAgICAgICAgICAvLyBhdHRyaWJ1dGUsIHRoZW46IC4uLiIKICAg
ICAgICAgICAgIC8vICJJZiB2YWxpZFRoaXMgaXMgZmFsc2UsIHRoZW4gcmV0dXJuLiIKLSAgICAg
ICAgICAgIGlmICghbWVtYmVyLmhhc19leHRlbmRlZF9hdHRyaWJ1dGUoIkxlbmllbnRUaGlzIikp
IHsKLSAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICBpZiAoIW1lbWJlci5oYXNfZXh0ZW5kZWRfYXR0cmlidXRlKCJM
ZWdhY3lMZW5pZW50VGhpcyIpKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhn
bG9iYWxPZihkZXNjLnNldCkuVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAg
ICAgICAgZGVzYy5zZXQuY2FsbCh7fSk7CiAgICAgICAgICAgICAgICAgfS5iaW5kKHRoaXMpLCAi
Y2FsbGluZyBzZXR0ZXIgb24gd3Jvbmcgb2JqZWN0IHR5cGUgbXVzdCB0aHJvdyBUeXBlRXJyb3Ii
KTsKICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC0xODQwLDIyICsyOTg2LDI1IEBAIElkbEludGVy
ZmFjZS5wcm90b3R5cGUuZG9faW50ZXJmYWNlX2F0dHJpYnV0ZV9hc3NlcnRzID0gZnVuY3Rpb24o
b2JqLCBtZW1iZXIsIGFfCiAgICAgICAgIC8vICJUaGUgdmFsdWUgb2YgdGhlIEZ1bmN0aW9uIG9i
amVjdOKAmXMg4oCcbGVuZ3Ro4oCdIHByb3BlcnR5IGlzIHRoZSBOdW1iZXIKICAgICAgICAgLy8g
dmFsdWUgMS4iCiAgICAgICAgIGFzc2VydF9lcXVhbHMoZGVzYy5zZXQubGVuZ3RoLCAxLCAic2V0
dGVyIGxlbmd0aCBtdXN0IGJlIDEiKTsKKworICAgICAgICAvLyAiTGV0IG5hbWUgYmUgdGhlIHN0
cmluZyAic2V0ICIgcHJlcGVuZGVkIHRvIGlkLiIKKyAgICAgICAgLy8gIlBlcmZvcm0gISBTZXRG
dW5jdGlvbk5hbWUoRiwgbmFtZSkuIgorICAgICAgICBhc3NlcnRfZXF1YWxzKGRlc2Muc2V0Lm5h
bWUsICJzZXQgIiArIG1lbWJlci5uYW1lLAorICAgICAgICAgICAgIlRoZSBhdHRyaWJ1dGUgc2V0
dGVyIG11c3QgaGF2ZSB0aGUgbmFtZSAnc2V0ICIgKyBtZW1iZXIubmFtZSArICInIik7CiAgICAg
fQogCiAgICAgUHJvbWlzZS5hbGwocGVuZGluZ1Byb21pc2VzKS50aGVuKGFfdGVzdC5kb25lLmJp
bmQoYV90ZXN0KSk7CiB9Ci0vL0B9CiAKIC8vLyBJZGxJbnRlcmZhY2VNZW1iZXIgLy8vCiBmdW5j
dGlvbiBJZGxJbnRlcmZhY2VNZW1iZXIob2JqKQotLy9AewogewogICAgIC8qKgogICAgICAqIG9i
aiBpcyBhbiBvYmplY3QgcHJvZHVjZWQgYnkgdGhlIFdlYklETFBhcnNlci5qcyAiaWZNZW1iZXIi
IHByb2R1Y3Rpb24uCiAgICAgICogV2UganVzdCBmb3J3YXJkIGFsbCBwcm9wZXJ0aWVzIHRvIHRo
aXMgb2JqZWN0IHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICAgICAqIGV4Y2VwdCBmb3Igc3BlY2lh
bCBleHRBdHRycyBoYW5kbGluZy4KICAgICAgKi8KLSAgICBmb3IgKHZhciBrIGluIG9iaikKKyAg
ICBmb3IgKHZhciBrIGluIG9iai50b0pTT04oKSkKICAgICB7CiAgICAgICAgIHRoaXNba10gPSBv
Ympba107CiAgICAgfQpAQCAtMTg2NCwxNSArMzAxMyw1MiBAQCBmdW5jdGlvbiBJZGxJbnRlcmZh
Y2VNZW1iZXIob2JqKQogICAgICAgICB0aGlzLmV4dEF0dHJzID0gW107CiAgICAgfQogCi0gICAg
dGhpcy5pc1VuZm9yZ2VhYmxlID0gdGhpcy5oYXNfZXh0ZW5kZWRfYXR0cmlidXRlKCJVbmZvcmdl
YWJsZSIpOworICAgIHRoaXMuaXNVbmZvcmdlYWJsZSA9IHRoaXMuaGFzX2V4dGVuZGVkX2F0dHJp
YnV0ZSgiTGVnYWN5VW5mb3JnZWFibGUiKTsKKyAgICB0aGlzLmlzVW5zY29wYWJsZSA9IHRoaXMu
aGFzX2V4dGVuZGVkX2F0dHJpYnV0ZSgiVW5zY29wYWJsZSIpOwogfQogCi0vL0B9CiBJZGxJbnRl
cmZhY2VNZW1iZXIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShJZGxPYmplY3QucHJvdG90eXBl
KTsKIAorSWRsSW50ZXJmYWNlTWVtYmVyLnByb3RvdHlwZS50b0pTT04gPSBmdW5jdGlvbigpIHsK
KyAgICByZXR1cm4gdGhpczsKK307CisKK0lkbEludGVyZmFjZU1lbWJlci5wcm90b3R5cGUuaXNf
dG9fanNvbl9yZWd1bGFyX29wZXJhdGlvbiA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiB0aGlz
LnR5cGUgPT0gIm9wZXJhdGlvbiIgJiYgdGhpcy5zcGVjaWFsICE9PSAic3RhdGljIiAmJiB0aGlz
Lm5hbWUgPT0gInRvSlNPTiI7Cit9OworCitJZGxJbnRlcmZhY2VNZW1iZXIucHJvdG90eXBlLnRv
U3RyaW5nID0gZnVuY3Rpb24oKSB7CisgICAgZnVuY3Rpb24gZm9ybWF0VHlwZSh0eXBlKSB7Cisg
ICAgICAgIHZhciByZXN1bHQ7CisgICAgICAgIGlmICh0eXBlLmdlbmVyaWMpIHsKKyAgICAgICAg
ICAgIHJlc3VsdCA9IHR5cGUuZ2VuZXJpYyArICI8IiArIHR5cGUuaWRsVHlwZS5tYXAoZm9ybWF0
VHlwZSkuam9pbigiLCAiKSArICI+IjsKKyAgICAgICAgfSBlbHNlIGlmICh0eXBlLnVuaW9uKSB7
CisgICAgICAgICAgICByZXN1bHQgPSAiKCIgKyB0eXBlLnN1YnR5cGUubWFwKGZvcm1hdFR5cGUp
LmpvaW4oIiBvciAiKSArICIpIjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJlc3Vs
dCA9IHR5cGUuaWRsVHlwZTsKKyAgICAgICAgfQorICAgICAgICBpZiAodHlwZS5udWxsYWJsZSkg
eworICAgICAgICAgICAgcmVzdWx0ICs9ICI/IgorICAgICAgICB9CisgICAgICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgfQorCisgICAgaWYgKHRoaXMudHlwZSA9PT0gIm9wZXJhdGlvbiIpIHsKKyAg
ICAgICAgdmFyIGFyZ3MgPSB0aGlzLmFyZ3VtZW50cy5tYXAoZnVuY3Rpb24obSkgeworICAgICAg
ICAgICAgcmV0dXJuIFsKKyAgICAgICAgICAgICAgICBtLm9wdGlvbmFsID8gIm9wdGlvbmFsICIg
OiAiIiwKKyAgICAgICAgICAgICAgICBmb3JtYXRUeXBlKG0uaWRsVHlwZSksCisgICAgICAgICAg
ICAgICAgbS52YXJpYWRpYyA/ICIuLi4iIDogIiIsCisgICAgICAgICAgICBdLmpvaW4oIiIpOwor
ICAgICAgICB9KS5qb2luKCIsICIpOworICAgICAgICByZXR1cm4gdGhpcy5uYW1lICsgIigiICsg
YXJncyArICIpIjsKKyAgICB9CisKKyAgICByZXR1cm4gdGhpcy5uYW1lOworfQorCiAvLy8gSW50
ZXJuYWwgaGVscGVyIGZ1bmN0aW9ucyAvLy8KIGZ1bmN0aW9uIGNyZWF0ZV9zdWl0YWJsZV9vYmpl
Y3QodHlwZSkKLS8vQHsKIHsKICAgICAvKioKICAgICAgKiB0eXBlIGlzIGFuIG9iamVjdCBwcm9k
dWNlZCBieSB0aGUgV2ViSURMUGFyc2VyLmpzICJ0eXBlIiBwcm9kdWN0aW9uLiAgV2UKQEAgLTE5
MDgsMTIgKzMwOTQsMTAgQEAgZnVuY3Rpb24gY3JlYXRlX3N1aXRhYmxlX29iamVjdCh0eXBlKQog
ICAgIH0KICAgICByZXR1cm4gbnVsbDsKIH0KLS8vQH0KIAogLy8vIElkbEVudW0gLy8vCiAvLyBV
c2VkIGZvciBJZGxBcnJheS5wcm90b3R5cGUuYXNzZXJ0X3R5cGVfaXMKIGZ1bmN0aW9uIElkbEVu
dW0ob2JqKQotLy9AewogewogICAgIC8qKgogICAgICAqIG9iaiBpcyBhbiBvYmplY3QgcHJvZHVj
ZWQgYnkgdGhlIFdlYklETFBhcnNlci5qcyAiZGljdGlvbmFyeSIKQEAgLTE5MjcsMTQgKzMxMTEs
MzAgQEAgZnVuY3Rpb24gSWRsRW51bShvYmopCiAgICAgdGhpcy52YWx1ZXMgPSBvYmoudmFsdWVz
OwogCiB9Ci0vL0B9CiAKIElkbEVudW0ucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShJZGxPYmpl
Y3QucHJvdG90eXBlKTsKIAorLy8vIElkbENhbGxiYWNrIC8vLworLy8gVXNlZCBmb3IgSWRsQXJy
YXkucHJvdG90eXBlLmFzc2VydF90eXBlX2lzCitmdW5jdGlvbiBJZGxDYWxsYmFjayhvYmopCit7
CisgICAgLyoqCisgICAgICogb2JqIGlzIGFuIG9iamVjdCBwcm9kdWNlZCBieSB0aGUgV2ViSURM
UGFyc2VyLmpzICJjYWxsYmFjayIKKyAgICAgKiBwcm9kdWN0aW9uLgorICAgICAqLworCisgICAg
LyoqIFNlbGYtZXhwbGFuYXRvcnkuICovCisgICAgdGhpcy5uYW1lID0gb2JqLm5hbWU7CisKKyAg
ICAvKiogQXJndW1lbnRzIGZvciB0aGUgY2FsbGJhY2suICovCisgICAgdGhpcy5hcmd1bWVudHMg
PSBvYmouYXJndW1lbnRzOworfQorCitJZGxDYWxsYmFjay5wcm90b3R5cGUgPSBPYmplY3QuY3Jl
YXRlKElkbE9iamVjdC5wcm90b3R5cGUpOworCiAvLy8gSWRsVHlwZWRlZiAvLy8KIC8vIFVzZWQg
Zm9yIElkbEFycmF5LnByb3RvdHlwZS5hc3NlcnRfdHlwZV9pcwogZnVuY3Rpb24gSWRsVHlwZWRl
ZihvYmopCi0vL0B7CiB7CiAgICAgLyoqCiAgICAgICogb2JqIGlzIGFuIG9iamVjdCBwcm9kdWNl
ZCBieSB0aGUgV2ViSURMUGFyc2VyLmpzICJ0eXBlZGVmIgpAQCAtMTk0NCwxMyArMzE0NCwyNjQg
QEAgZnVuY3Rpb24gSWRsVHlwZWRlZihvYmopCiAgICAgLyoqIFNlbGYtZXhwbGFuYXRvcnkuICov
CiAgICAgdGhpcy5uYW1lID0gb2JqLm5hbWU7CiAKLSAgICAvKiogQW4gYXJyYXkgb2YgdmFsdWVz
IHByb2R1Y2VkIGJ5IHRoZSAidHlwZWRlZiIgcHJvZHVjdGlvbi4gKi8KLSAgICB0aGlzLnZhbHVl
cyA9IG9iai52YWx1ZXM7CisgICAgLyoqIFRoZSBpZGxUeXBlIHRoYXQgd2UgYXJlIHN1cHBvc2Vk
IHRvIGJlIHR5cGVkZWZmaW5nIHRvLiAqLworICAgIHRoaXMuaWRsVHlwZSA9IG9iai5pZGxUeXBl
OwogCiB9Ci0vL0B9CiAKIElkbFR5cGVkZWYucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShJZGxP
YmplY3QucHJvdG90eXBlKTsKIAorLy8vIElkbE5hbWVzcGFjZSAvLy8KK2Z1bmN0aW9uIElkbE5h
bWVzcGFjZShvYmopCit7CisgICAgdGhpcy5uYW1lID0gb2JqLm5hbWU7CisgICAgdGhpcy5leHRB
dHRycyA9IG9iai5leHRBdHRyczsKKyAgICB0aGlzLnVudGVzdGVkID0gb2JqLnVudGVzdGVkOwor
ICAgIC8qKiBBIGJhY2stcmVmZXJlbmNlIHRvIG91ciBJZGxBcnJheS4gKi8KKyAgICB0aGlzLmFy
cmF5ID0gb2JqLmFycmF5OworCisgICAgLyoqIEFuIGFycmF5IG9mIElkbEludGVyZmFjZU1lbWJl
cnMuICovCisgICAgdGhpcy5tZW1iZXJzID0gb2JqLm1lbWJlcnMubWFwKG0gPT4gbmV3IElkbElu
dGVyZmFjZU1lbWJlcihtKSk7Cit9CisKK0lkbE5hbWVzcGFjZS5wcm90b3R5cGUgPSBPYmplY3Qu
Y3JlYXRlKElkbE9iamVjdC5wcm90b3R5cGUpOworCitJZGxOYW1lc3BhY2UucHJvdG90eXBlLmRv
X21lbWJlcl9vcGVyYXRpb25fYXNzZXJ0cyA9IGZ1bmN0aW9uIChtZW1iZXJIb2xkZXJPYmplY3Qs
IG1lbWJlciwgYV90ZXN0KQoreworICAgIHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihtZW1iZXJIb2xkZXJPYmplY3QsIG1lbWJlci5uYW1lKTsKKworICAgIGFzc2Vy
dF9mYWxzZSgiZ2V0IiBpbiBkZXNjLCAicHJvcGVydHkgc2hvdWxkIG5vdCBoYXZlIGEgZ2V0dGVy
Iik7CisgICAgYXNzZXJ0X2ZhbHNlKCJzZXQiIGluIGRlc2MsICJwcm9wZXJ0eSBzaG91bGQgbm90
IGhhdmUgYSBzZXR0ZXIiKTsKKyAgICBhc3NlcnRfZXF1YWxzKAorICAgICAgICBkZXNjLndyaXRh
YmxlLAorICAgICAgICAhbWVtYmVyLmlzVW5mb3JnZWFibGUsCisgICAgICAgICJwcm9wZXJ0eSBz
aG91bGQgYmUgd3JpdGFibGUgaWYgYW5kIG9ubHkgaWYgbm90IHVuZm9yZ2VhYmxlIik7CisgICAg
YXNzZXJ0X3RydWUoZGVzYy5lbnVtZXJhYmxlLCAicHJvcGVydHkgc2hvdWxkIGJlIGVudW1lcmFi
bGUiKTsKKyAgICBhc3NlcnRfZXF1YWxzKAorICAgICAgICBkZXNjLmNvbmZpZ3VyYWJsZSwKKyAg
ICAgICAgIW1lbWJlci5pc1VuZm9yZ2VhYmxlLAorICAgICAgICAicHJvcGVydHkgc2hvdWxkIGJl
IGNvbmZpZ3VyYWJsZSBpZiBhbmQgb25seSBpZiBub3QgdW5mb3JnZWFibGUiKTsKKworICAgIGFz
c2VydF9lcXVhbHMoCisgICAgICAgIHR5cGVvZiBtZW1iZXJIb2xkZXJPYmplY3RbbWVtYmVyLm5h
bWVdLAorICAgICAgICAiZnVuY3Rpb24iLAorICAgICAgICAgInByb3BlcnR5IG11c3QgYmUgYSBm
dW5jdGlvbiIpOworCisgICAgYXNzZXJ0X2VxdWFscygKKyAgICAgICAgbWVtYmVySG9sZGVyT2Jq
ZWN0W21lbWJlci5uYW1lXS5sZW5ndGgsCisgICAgICAgIG1pbk92ZXJsb2FkTGVuZ3RoKHRoaXMu
bWVtYmVycy5maWx0ZXIoZnVuY3Rpb24obSkgeworICAgICAgICAgICAgcmV0dXJuIG0udHlwZSA9
PSAib3BlcmF0aW9uIiAmJiBtLm5hbWUgPT0gbWVtYmVyLm5hbWU7CisgICAgICAgIH0pKSwKKyAg
ICAgICAgIm9wZXJhdGlvbiBoYXMgd3JvbmcgLmxlbmd0aCIpOworICAgIGFfdGVzdC5kb25lKCk7
Cit9CisKK0lkbE5hbWVzcGFjZS5wcm90b3R5cGUudGVzdF9tZW1iZXJfb3BlcmF0aW9uID0gZnVu
Y3Rpb24obWVtYmVyKQoreworICAgIGlmICghc2hvdWxkUnVuU3ViVGVzdCh0aGlzLm5hbWUpKSB7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgdmFyIGFfdGVzdCA9IHN1YnNldFRlc3RCeUtl
eSgKKyAgICAgICAgdGhpcy5uYW1lLAorICAgICAgICBhc3luY190ZXN0LAorICAgICAgICB0aGlz
Lm5hbWUgKyAnIG5hbWVzcGFjZTogb3BlcmF0aW9uICcgKyBtZW1iZXIpOworICAgIGFfdGVzdC5z
dGVwKGZ1bmN0aW9uKCkgeworICAgICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KAorICAgICAgICAg
ICAgc2VsZlt0aGlzLm5hbWVdLAorICAgICAgICAgICAgbWVtYmVyLm5hbWUsCisgICAgICAgICAg
ICAnbmFtZXNwYWNlIG9iamVjdCBtaXNzaW5nIG9wZXJhdGlvbiAnICsgZm9ybWF0X3ZhbHVlKG1l
bWJlci5uYW1lKSk7CisKKyAgICAgICAgdGhpcy5kb19tZW1iZXJfb3BlcmF0aW9uX2Fzc2VydHMo
c2VsZlt0aGlzLm5hbWVdLCBtZW1iZXIsIGFfdGVzdCk7CisgICAgfS5iaW5kKHRoaXMpKTsKK307
CisKK0lkbE5hbWVzcGFjZS5wcm90b3R5cGUudGVzdF9tZW1iZXJfYXR0cmlidXRlID0gZnVuY3Rp
b24gKG1lbWJlcikKK3sKKyAgICBpZiAoIXNob3VsZFJ1blN1YlRlc3QodGhpcy5uYW1lKSkgewor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIHZhciBhX3Rlc3QgPSBzdWJzZXRUZXN0QnlLZXko
CisgICAgICAgIHRoaXMubmFtZSwKKyAgICAgICAgYXN5bmNfdGVzdCwKKyAgICAgICAgdGhpcy5u
YW1lICsgJyBuYW1lc3BhY2U6IGF0dHJpYnV0ZSAnICsgbWVtYmVyLm5hbWUpOworICAgIGFfdGVz
dC5zdGVwKGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGFzc2VydF9vd25fcHJvcGVydHkoCisg
ICAgICAgICAgICBzZWxmW3RoaXMubmFtZV0sCisgICAgICAgICAgICBtZW1iZXIubmFtZSwKKyAg
ICAgICAgICAgIHRoaXMubmFtZSArICcgZG9lcyBub3QgaGF2ZSBwcm9wZXJ0eSAnICsgZm9ybWF0
X3ZhbHVlKG1lbWJlci5uYW1lKSk7CisKKyAgICAgICAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKHNlbGZbdGhpcy5uYW1lXSwgbWVtYmVyLm5hbWUpOworICAgICAg
ICBhc3NlcnRfZXF1YWxzKGRlc2Muc2V0LCB1bmRlZmluZWQsICJzZXR0ZXIgbXVzdCBiZSB1bmRl
ZmluZWQgZm9yIG5hbWVzcGFjZSBtZW1iZXJzIik7CisgICAgICAgIGFfdGVzdC5kb25lKCk7Cisg
ICAgfS5iaW5kKHRoaXMpKTsKK307CisKK0lkbE5hbWVzcGFjZS5wcm90b3R5cGUudGVzdF9zZWxm
ID0gZnVuY3Rpb24gKCkKK3sKKyAgICAvKioKKyAgICAgKiBUT0RPKGx1a2ViamVycmluZyk6IEFz
c2VydDoKKyAgICAgKiAtICJOb3RlIHRoYXQgdW5saWtlIGludGVyZmFjZXMgb3IgZGljdGlvbmFy
aWVzLCBuYW1lc3BhY2VzIGRvIG5vdCBjcmVhdGUgdHlwZXMuIgorICAgICAqLworCisgICAgc3Vi
c2V0VGVzdEJ5S2V5KHRoaXMubmFtZSwgdGVzdCwgKCkgPT4geworICAgICAgICBhc3NlcnRfdHJ1
ZSh0aGlzLmV4dEF0dHJzLmV2ZXJ5KG8gPT4gby5uYW1lID09PSAiRXhwb3NlZCIgfHwgby5uYW1l
ID09PSAiU2VjdXJlQ29udGV4dCIpLAorICAgICAgICAgICAgIk9ubHkgdGhlIFtFeHBvc2VkXSBh
bmQgW1NlY3VyZUNvbnRleHRdIGV4dGVuZGVkIGF0dHJpYnV0ZXMgYXJlIGFwcGxpY2FibGUgdG8g
bmFtZXNwYWNlcyIpOworICAgICAgICBhc3NlcnRfdHJ1ZSh0aGlzLmhhc19leHRlbmRlZF9hdHRy
aWJ1dGUoIkV4cG9zZWQiKSwKKyAgICAgICAgICAgICJOYW1lc3BhY2VzIG11c3QgYmUgYW5ub3Rh
dGVkIHdpdGggdGhlIFtFeHBvc2VkXSBleHRlbmRlZCBhdHRyaWJ1dGUiKTsKKyAgICB9LCBgJHt0
aGlzLm5hbWV9IG5hbWVzcGFjZTogZXh0ZW5kZWQgYXR0cmlidXRlc2ApOworCisgICAgY29uc3Qg
bmFtZXNwYWNlT2JqZWN0ID0gc2VsZlt0aGlzLm5hbWVdOworCisgICAgc3Vic2V0VGVzdEJ5S2V5
KHRoaXMubmFtZSwgdGVzdCwgKCkgPT4geworICAgICAgICBjb25zdCBkZXNjID0gT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihzZWxmLCB0aGlzLm5hbWUpOworICAgICAgICBhc3NlcnRf
ZXF1YWxzKGRlc2MudmFsdWUsIG5hbWVzcGFjZU9iamVjdCwgYHdyb25nIHZhbHVlIGZvciAke3Ro
aXMubmFtZX0gbmFtZXNwYWNlIG9iamVjdGApOworICAgICAgICBhc3NlcnRfdHJ1ZShkZXNjLndy
aXRhYmxlLCAibmFtZXNwYWNlIG9iamVjdCBzaG91bGQgYmUgd3JpdGFibGUiKTsKKyAgICAgICAg
YXNzZXJ0X2ZhbHNlKGRlc2MuZW51bWVyYWJsZSwgIm5hbWVzcGFjZSBvYmplY3Qgc2hvdWxkIG5v
dCBiZSBlbnVtZXJhYmxlIik7CisgICAgICAgIGFzc2VydF90cnVlKGRlc2MuY29uZmlndXJhYmxl
LCAibmFtZXNwYWNlIG9iamVjdCBzaG91bGQgYmUgY29uZmlndXJhYmxlIik7CisgICAgICAgIGFz
c2VydF9mYWxzZSgiZ2V0IiBpbiBkZXNjLCAibmFtZXNwYWNlIG9iamVjdCBzaG91bGQgbm90IGhh
dmUgYSBnZXR0ZXIiKTsKKyAgICAgICAgYXNzZXJ0X2ZhbHNlKCJzZXQiIGluIGRlc2MsICJuYW1l
c3BhY2Ugb2JqZWN0IHNob3VsZCBub3QgaGF2ZSBhIHNldHRlciIpOworICAgIH0sIGAke3RoaXMu
bmFtZX0gbmFtZXNwYWNlOiBwcm9wZXJ0eSBkZXNjcmlwdG9yYCk7CisKKyAgICBzdWJzZXRUZXN0
QnlLZXkodGhpcy5uYW1lLCB0ZXN0LCAoKSA9PiB7CisgICAgICAgIGFzc2VydF90cnVlKE9iamVj
dC5pc0V4dGVuc2libGUobmFtZXNwYWNlT2JqZWN0KSk7CisgICAgfSwgYCR7dGhpcy5uYW1lfSBu
YW1lc3BhY2U6IFtbRXh0ZW5zaWJsZV1dIGlzIHRydWVgKTsKKworICAgIHN1YnNldFRlc3RCeUtl
eSh0aGlzLm5hbWUsIHRlc3QsICgpID0+IHsKKyAgICAgICAgYXNzZXJ0X3RydWUobmFtZXNwYWNl
T2JqZWN0IGluc3RhbmNlb2YgT2JqZWN0KTsKKworICAgICAgICBpZiAodGhpcy5uYW1lID09PSAi
Y29uc29sZSIpIHsKKyAgICAgICAgICAgIC8vIGh0dHBzOi8vY29uc29sZS5zcGVjLndoYXR3Zy5v
cmcvI2NvbnNvbGUtbmFtZXNwYWNlCisgICAgICAgICAgICBjb25zdCBuYW1lc3BhY2VQcm90b3R5
cGUgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YobmFtZXNwYWNlT2JqZWN0KTsKKyAgICAgICAgICAg
IGFzc2VydF9lcXVhbHMoUmVmbGVjdC5vd25LZXlzKG5hbWVzcGFjZVByb3RvdHlwZSkubGVuZ3Ro
LCAwKTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoT2JqZWN0LmdldFByb3RvdHlwZU9mKG5h
bWVzcGFjZVByb3RvdHlwZSksIE9iamVjdC5wcm90b3R5cGUpOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhPYmplY3QuZ2V0UHJvdG90eXBlT2YobmFtZXNwYWNl
T2JqZWN0KSwgT2JqZWN0LnByb3RvdHlwZSk7CisgICAgICAgIH0KKyAgICB9LCBgJHt0aGlzLm5h
bWV9IG5hbWVzcGFjZTogW1tQcm90b3R5cGVdXSBpcyBPYmplY3QucHJvdG90eXBlYCk7CisKKyAg
ICBzdWJzZXRUZXN0QnlLZXkodGhpcy5uYW1lLCB0ZXN0LCAoKSA9PiB7CisgICAgICAgIGFzc2Vy
dF9lcXVhbHModHlwZW9mIG5hbWVzcGFjZU9iamVjdCwgIm9iamVjdCIpOworICAgIH0sIGAke3Ro
aXMubmFtZX0gbmFtZXNwYWNlOiB0eXBlb2YgaXMgIm9iamVjdCJgKTsKKworICAgIHN1YnNldFRl
c3RCeUtleSh0aGlzLm5hbWUsIHRlc3QsICgpID0+IHsKKyAgICAgICAgYXNzZXJ0X2VxdWFscygK
KyAgICAgICAgICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobmFtZXNwYWNlT2Jq
ZWN0LCAibGVuZ3RoIiksCisgICAgICAgICAgICB1bmRlZmluZWQsCisgICAgICAgICAgICAibGVu
Z3RoIHByb3BlcnR5IG11c3QgYmUgdW5kZWZpbmVkIgorICAgICAgICApOworICAgIH0sIGAke3Ro
aXMubmFtZX0gbmFtZXNwYWNlOiBoYXMgbm8gbGVuZ3RoIHByb3BlcnR5YCk7CisKKyAgICBzdWJz
ZXRUZXN0QnlLZXkodGhpcy5uYW1lLCB0ZXN0LCAoKSA9PiB7CisgICAgICAgIGFzc2VydF9lcXVh
bHMoCisgICAgICAgICAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG5hbWVzcGFj
ZU9iamVjdCwgIm5hbWUiKSwKKyAgICAgICAgICAgIHVuZGVmaW5lZCwKKyAgICAgICAgICAgICJu
YW1lIHByb3BlcnR5IG11c3QgYmUgdW5kZWZpbmVkIgorICAgICAgICApOworICAgIH0sIGAke3Ro
aXMubmFtZX0gbmFtZXNwYWNlOiBoYXMgbm8gbmFtZSBwcm9wZXJ0eWApOworfTsKKworSWRsTmFt
ZXNwYWNlLnByb3RvdHlwZS50ZXN0ID0gZnVuY3Rpb24gKCkKK3sKKyAgICBpZiAoIXRoaXMudW50
ZXN0ZWQpIHsKKyAgICAgICAgdGhpcy50ZXN0X3NlbGYoKTsKKyAgICB9CisKKyAgICBmb3IgKGNv
bnN0IHYgb2YgT2JqZWN0LnZhbHVlcyh0aGlzLm1lbWJlcnMpKSB7CisgICAgICAgIHN3aXRjaCAo
di50eXBlKSB7CisKKyAgICAgICAgY2FzZSAnb3BlcmF0aW9uJzoKKyAgICAgICAgICAgIHRoaXMu
dGVzdF9tZW1iZXJfb3BlcmF0aW9uKHYpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
Y2FzZSAnYXR0cmlidXRlJzoKKyAgICAgICAgICAgIHRoaXMudGVzdF9tZW1iZXJfYXR0cmlidXRl
KHYpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
IHRocm93ICdJbnZhbGlkIG5hbWVzcGFjZSBtZW1iZXIgJyArIHYubmFtZSArICc6ICcgKyB2LnR5
cGUgKyAnIG5vdCBzdXBwb3J0ZWQnOworICAgICAgICB9CisgICAgfTsKK307CisKIH0oKSk7CisK
Ky8qKgorICogaWRsX3Rlc3QgaXMgYSBwcm9taXNlX3Rlc3Qgd3JhcHBlciB0aGF0IGhhbmRsZXMg
dGhlIGZldGNoaW5nIG9mIHRoZSBJREwsCisgKiBhdm9pZGluZyByZXBldGl0aXZlIGJvaWxlcnBs
YXRlLgorICoKKyAqIEBwYXJhbSB7U3RyaW5nfFN0cmluZ1tdfSBzcmNzIFNwZWMgbmFtZShzKSBm
b3Igc291cmNlIGlkbCBmaWxlcyAoZmV0Y2hlZCBmcm9tCisgKiAgICAgIC9pbnRlcmZhY2VzL3tu
YW1lfS5pZGwpLgorICogQHBhcmFtIHtTdHJpbmd8U3RyaW5nW119IGRlcHMgU3BlYyBuYW1lKHMp
IGZvciBkZXBlbmRlbmN5IGlkbCBmaWxlcyAoZmV0Y2hlZAorICogICAgICBmcm9tIC9pbnRlcmZh
Y2VzL3tuYW1lfS5pZGwpLiBPcmRlciBpcyBpbXBvcnRhbnQgLSBkZXBlbmRlbmNpZXMgZnJvbQor
ICogICAgICBlYWNoIHNvdXJjZSB3aWxsIG9ubHkgYmUgaW5jbHVkZWQgaWYgdGhleSdyZSBhbHJl
YWR5IGtub3cgdG8gYmUgYQorICogICAgICBkZXBlbmRlbmN5IChpLmUuIGhhdmUgYWxyZWFkeSBi
ZWVuIHNlZW4pLgorICogQHBhcmFtIHtGdW5jdGlvbn0gc2V0dXBfZnVuYyBGdW5jdGlvbiBmb3Ig
ZXh0cmEgc2V0dXAgb2YgdGhlIGlkbF9hcnJheSwgc3VjaAorICogICAgICBhcyBhZGRpbmcgb2Jq
ZWN0cy4gRG8gbm90IGNhbGwgaWRsX2FycmF5LnRlc3QoKSBpbiB0aGUgc2V0dXA7IGl0IGlzCisg
KiAgICAgIGNhbGxlZCBieSB0aGlzIGZ1bmN0aW9uIChpZGxfdGVzdCkuCisgKi8KK2Z1bmN0aW9u
IGlkbF90ZXN0KHNyY3MsIGRlcHMsIGlkbF9zZXR1cF9mdW5jKSB7CisgICAgcmV0dXJuIHByb21p
c2VfdGVzdChmdW5jdGlvbiAodCkgeworICAgICAgICB2YXIgaWRsX2FycmF5ID0gbmV3IElkbEFy
cmF5KCk7CisgICAgICAgIHZhciBzZXR1cF9lcnJvciA9IG51bGw7CisgICAgICAgIGNvbnN0IHZh
bGlkYXRpb25JZ25vcmVkID0gWworICAgICAgICAgICAgImNvbnN0cnVjdG9yLW1lbWJlciIsCisg
ICAgICAgICAgICAiZGljdC1hcmctZGVmYXVsdCIsCisgICAgICAgICAgICAicmVxdWlyZS1leHBv
c2VkIgorICAgICAgICBdOworICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoCisgICAgICAgICAg
ICBzcmNzLmNvbmNhdChkZXBzKS5tYXAoZmV0Y2hfc3BlYykpCisgICAgICAgICAgICAudGhlbihm
dW5jdGlvbihyZXN1bHRzKSB7CisgICAgICAgICAgICAgICAgY29uc3QgYXN0QXJyYXkgPSByZXN1
bHRzLm1hcChyZXN1bHQgPT4KKyAgICAgICAgICAgICAgICAgICAgV2ViSURMMi5wYXJzZShyZXN1
bHQuaWRsLCB7IHNvdXJjZU5hbWU6IHJlc3VsdC5zcGVjIH0pCisgICAgICAgICAgICAgICAgKTsK
KyAgICAgICAgICAgICAgICB0ZXN0KCgpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgY29uc3Qg
dmFsaWRhdGlvbnMgPSBXZWJJREwyLnZhbGlkYXRlKGFzdEFycmF5KQorICAgICAgICAgICAgICAg
ICAgICAgICAgLmZpbHRlcih2ID0+ICF2YWxpZGF0aW9uSWdub3JlZC5pbmNsdWRlcyh2LnJ1bGVO
YW1lKSk7CisgICAgICAgICAgICAgICAgICAgIGlmICh2YWxpZGF0aW9ucy5sZW5ndGgpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSB2YWxpZGF0aW9ucy5tYXAodiA9
PiB2Lm1lc3NhZ2UpLmpvaW4oIlxuXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93
IG5ldyBFcnJvcihtZXNzYWdlKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIH0sICJpZGxfdGVzdCB2YWxpZGF0aW9uIik7CisgICAgICAgICAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBzcmNzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIGlkbF9h
cnJheS5pbnRlcm5hbF9hZGRfaWRscyhhc3RBcnJheVtpXSk7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSBzcmNzLmxlbmd0aDsgaSA8IHNyY3MubGVuZ3Ro
ICsgZGVwcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBpZGxfYXJyYXkuaW50
ZXJuYWxfYWRkX2RlcGVuZGVuY3lfaWRscyhhc3RBcnJheVtpXSk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfSkKKyAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgICAgIGlmIChpZGxfc2V0dXBfZnVuYykgeworICAgICAgICAgICAgICAgICAgICByZXR1
cm4gaWRsX3NldHVwX2Z1bmMoaWRsX2FycmF5LCB0KTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9KQorICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uKGUpIHsgc2V0dXBfZXJyb3Ig
PSBlIHx8ICdJREwgc2V0dXAgZmFpbGVkLic7IH0pCisgICAgICAgICAgICAudGhlbihmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICAgICAgdmFyIGVycm9yID0gc2V0dXBfZXJyb3I7CisgICAgICAg
ICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgaWRsX2FycmF5LnRlc3QoKTsgLy8g
VGVzdCB3aGF0IHdlIGNhbi4KKyAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAg
ICAgICAgICAgICAgIC8vIElmIHRlc3RpbmcgZmFpbHMgaGFyZCBoZXJlLCB0aGUgb3JpZ2luYWwg
c2V0dXAgZXJyb3IKKyAgICAgICAgICAgICAgICAgICAgLy8gaXMgbW9yZSBsaWtlbHkgdG8gYmUg
dGhlIHJlYWwgY2F1c2UuCisgICAgICAgICAgICAgICAgICAgIGVycm9yID0gZXJyb3IgfHwgZTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGVycm9yKSB7CisgICAgICAg
ICAgICAgICAgICAgIHRocm93IGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0pOworICAgIH0sICdpZGxfdGVzdCBzZXR1cCcpOworfQorCisvKioKKyAqIGZldGNoX3NwZWMg
aXMgYSBzaG9ydGhhbmQgZm9yIGEgUHJvbWlzZSB0aGF0IGZldGNoZXMgdGhlIHNwZWMncyBjb250
ZW50LgorICovCitmdW5jdGlvbiBmZXRjaF9zcGVjKHNwZWMpIHsKKyAgICB2YXIgdXJsID0gJy9p
bnRlcmZhY2VzLycgKyBzcGVjICsgJy5pZGwnOworICAgIHJldHVybiBmZXRjaCh1cmwpLnRoZW4o
ZnVuY3Rpb24gKHIpIHsKKyAgICAgICAgaWYgKCFyLm9rKSB7CisgICAgICAgICAgICB0aHJvdyBu
ZXcgSWRsSGFybmVzc0Vycm9yKCJFcnJvciBmZXRjaGluZyAiICsgdXJsICsgIi4iKTsKKyAgICAg
ICAgfQorICAgICAgICByZXR1cm4gci50ZXh0KCk7CisgICAgfSkudGhlbihpZGwgPT4gKHsgc3Bl
YywgaWRsIH0pKTsKK30KIC8vIHZpbTogc2V0IGV4cGFuZHRhYiBzaGlmdHdpZHRoPTQgdGFic3Rv
cD00IGZvbGRtYXJrZXI9QHssQH0gZm9sZG1ldGhvZD1tYXJrZXI6CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuY3NzIGIvTGF5b3V0VGVzdHMvcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzLmNzcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzY1MDg0ZjNm
ODIxMTZmODVmMGE1ZWNjNWFkNzg4YmY4Y2RhNDcxMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvdGVzdGhhcm5lc3Mu
Y3NzCisrKyAvZGV2L251bGwKQEAgLTEsOTIgKzAsMCBAQAotaHRtbCB7Ci0gICAgZm9udC1mYW1p
bHk6RGVqYVZ1IFNhbnMsIEJpdHN0cmVhbSBWZXJhIFNhbnMsIEFyaWFsLCBTYW5zOwotfQotCi0j
bG9nIC53YXJuaW5nLAotI2xvZyAud2FybmluZyBhIHsKLSAgY29sb3I6IGJsYWNrOwotICBiYWNr
Z3JvdW5kOiB5ZWxsb3c7Ci19Ci0KLSNsb2cgLmVycm9yLAotI2xvZyAuZXJyb3IgYSB7Ci0gIGNv
bG9yOiB3aGl0ZTsKLSAgYmFja2dyb3VuZDogcmVkOwotfQotCi0jbG9nIHByZSB7Ci0gIGJvcmRl
cjogMXB4IHNvbGlkIGJsYWNrOwotICBwYWRkaW5nOiAxZW07Ci19Ci0KLXNlY3Rpb24jc3VtbWFy
eSB7Ci0gICAgbWFyZ2luLWJvdHRvbToxZW07Ci19Ci0KLXRhYmxlI3Jlc3VsdHMgewotICAgIGJv
cmRlci1jb2xsYXBzZTpjb2xsYXBzZTsKLSAgICB0YWJsZS1sYXlvdXQ6Zml4ZWQ7Ci0gICAgd2lk
dGg6MTAwJTsKLX0KLQotdGFibGUjcmVzdWx0cyB0aDpmaXJzdC1jaGlsZCwKLXRhYmxlI3Jlc3Vs
dHMgdGQ6Zmlyc3QtY2hpbGQgewotICAgIHdpZHRoOjRlbTsKLX0KLQotdGFibGUjcmVzdWx0cyB0
aDpsYXN0LWNoaWxkLAotdGFibGUjcmVzdWx0cyB0ZDpsYXN0LWNoaWxkIHsKLSAgICB3aWR0aDo1
MCU7Ci19Ci0KLXRhYmxlI3Jlc3VsdHMuYXNzZXJ0aW9ucyB0aDpsYXN0LWNoaWxkLAotdGFibGUj
cmVzdWx0cy5hc3NlcnRpb25zIHRkOmxhc3QtY2hpbGQgewotICAgIHdpZHRoOjM1JTsKLX0KLQot
dGFibGUjcmVzdWx0cyB0aCB7Ci0gICAgcGFkZGluZzowOwotICAgIHBhZGRpbmctYm90dG9tOjAu
NWVtOwotICAgIGJvcmRlci1ib3R0b206bWVkaXVtIHNvbGlkIGJsYWNrOwotfQotCi10YWJsZSNy
ZXN1bHRzIHRkIHsKLSAgICBwYWRkaW5nOjFlbTsKLSAgICBwYWRkaW5nLWJvdHRvbTowLjVlbTsK
LSAgICBib3JkZXItYm90dG9tOnRoaW4gc29saWQgYmxhY2s7Ci19Ci0KLXRyLnBhc3MgPiB0ZDpm
aXJzdC1jaGlsZCB7Ci0gICAgY29sb3I6Z3JlZW47Ci19Ci0KLXRyLmZhaWwgPiB0ZDpmaXJzdC1j
aGlsZCB7Ci0gICAgY29sb3I6cmVkOwotfQotCi10ci50aW1lb3V0ID4gdGQ6Zmlyc3QtY2hpbGQg
ewotICAgIGNvbG9yOnJlZDsKLX0KLQotdHIubm90cnVuID4gdGQ6Zmlyc3QtY2hpbGQgewotICAg
IGNvbG9yOmJsdWU7Ci19Ci0KLS5wYXNzID4gdGQ6Zmlyc3QtY2hpbGQsIC5mYWlsID4gdGQ6Zmly
c3QtY2hpbGQsIC50aW1lb3V0ID4gdGQ6Zmlyc3QtY2hpbGQsIC5ub3RydW4gPiB0ZDpmaXJzdC1j
aGlsZCB7Ci0gICAgZm9udC12YXJpYW50OnNtYWxsLWNhcHM7Ci19Ci0KLXRhYmxlI3Jlc3VsdHMg
c3BhbiB7Ci0gICAgZGlzcGxheTpibG9jazsKLX0KLQotdGFibGUjcmVzdWx0cyBzcGFuLmV4cGVj
dGVkIHsKLSAgICBmb250LWZhbWlseTpEZWphVnUgU2FucyBNb25vLCBCaXRzdHJlYW0gVmVyYSBT
YW5zIE1vbm8sIE1vbm9zcGFjZTsKLSAgICB3aGl0ZS1zcGFjZTpwcmU7Ci19Ci0KLXRhYmxlI3Jl
c3VsdHMgc3Bhbi5hY3R1YWwgewotICAgIGZvbnQtZmFtaWx5OkRlamFWdSBTYW5zIE1vbm8sIEJp
dHN0cmVhbSBWZXJhIFNhbnMgTW9ubywgTW9ub3NwYWNlOwotICAgIHdoaXRlLXNwYWNlOnByZTsK
LX0KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIGIv
TGF5b3V0VGVzdHMvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzCmluZGV4IDE1NTkxMDQyYWE0Y2Iw
ZmRkNzVmZTNiZjU2YjliZGZiNjNmZDE2MWQuLmY4NWIxOWZkOWJkOTBjMzQ3NmRlZGNiZTU4MjVi
ODJmYjQwZGU4MmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Jlc291cmNlcy90ZXN0aGFybmVz
cy5qcworKysgYi9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMKQEAgLTEsMjEg
KzEsMTEgQEAKIC8qZ2xvYmFsIHNlbGYqLwogLypqc2hpbnQgbGF0ZWRlZjogbm9mdW5jKi8KLS8q
Ci1EaXN0cmlidXRlZCB1bmRlciBib3RoIHRoZSBXM0MgVGVzdCBTdWl0ZSBMaWNlbnNlIFsxXSBh
bmQgdGhlIFczQwotMy1jbGF1c2UgQlNEIExpY2Vuc2UgWzJdLiBUbyBjb250cmlidXRlIHRvIGEg
VzNDIFRlc3QgU3VpdGUsIHNlZSB0aGUKLXBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMg
WzNdLgotCi1bMV0gaHR0cDovL3d3dy53My5vcmcvQ29uc29ydGl1bS9MZWdhbC8yMDA4LzA0LXRl
c3RzdWl0ZS1saWNlbnNlCi1bMl0gaHR0cDovL3d3dy53My5vcmcvQ29uc29ydGl1bS9MZWdhbC8y
MDA4LzAzLWJzZC1saWNlbnNlCi1bM10gaHR0cDovL3d3dy53My5vcmcvMjAwNC8xMC8yNy10ZXN0
Y2FzZXMKLSovCiAKIC8qIERvY3VtZW50YXRpb246IGh0dHBzOi8vd2ViLXBsYXRmb3JtLXRlc3Rz
Lm9yZy93cml0aW5nLXRlc3RzL3Rlc3RoYXJuZXNzLWFwaS5odG1sCiAgKiAoLi4vZG9jcy9fd3Jp
dGluZy10ZXN0cy90ZXN0aGFybmVzcy1hcGkubWQpICovCiAKIChmdW5jdGlvbiAoZ2xvYmFsX3Nj
b3BlKQogewotICAgIHZhciBkZWJ1ZyA9IGZhbHNlOwogICAgIC8vIGRlZmF1bHQgdGltZW91dCBp
cyAxMCBzZWNvbmRzLCB0ZXN0IGNhbiBvdmVycmlkZSBpZiBuZWVkZWQKICAgICB2YXIgc2V0dGlu
Z3MgPSB7CiAgICAgICAgIG91dHB1dDp0cnVlLApAQCAtMjQsNyArMTQsOCBAQCBwb2xpY2llcyBh
bmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgICAgICJsb25nIjo2MDAwMAogICAg
ICAgICB9LAogICAgICAgICB0ZXN0X3RpbWVvdXQ6bnVsbCwKLSAgICAgICAgbWVzc2FnZV9ldmVu
dHM6IFsic3RhcnQiLCAidGVzdF9zdGF0ZSIsICJyZXN1bHQiLCAiY29tcGxldGlvbiJdCisgICAg
ICAgIG1lc3NhZ2VfZXZlbnRzOiBbInN0YXJ0IiwgInRlc3Rfc3RhdGUiLCAicmVzdWx0IiwgImNv
bXBsZXRpb24iXSwKKyAgICAgICAgZGVidWc6IGZhbHNlLAogICAgIH07CiAKICAgICB2YXIgeGh0
bWxfbnMgPSAiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI7CkBAIC04NywxNCArNzgsMTUg
QEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0OiB0ZXN0LnN0cnVjdHVyZWRfY2xvbmUo
KX0pOwogICAgICAgICAgICAgICAgICAgICAgfV0sCiAgICAgICAgICAgICBjb21wbGV0aW9uOiBb
YWRkX2NvbXBsZXRpb25fY2FsbGJhY2ssIHJlbW92ZV9jb21wbGV0aW9uX2NhbGxiYWNrLAotICAg
ICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICh0ZXN0cywgaGFybmVzc19zdGF0dXMpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAodGVzdHMsIGhhcm5lc3Nfc3RhdHVz
LCBhc3NlcnRzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjbG9uZWRfdGVz
dHMgPSBtYXAodGVzdHMsIGZ1bmN0aW9uKHRlc3QpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB0ZXN0LnN0cnVjdHVyZWRfY2xvbmUoKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXNfb2Jq
Ll9kaXNwYXRjaCgiY29tcGxldGlvbl9jYWxsYmFjayIsIFt0ZXN0cywgaGFybmVzc19zdGF0dXNd
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3R5cGU6
ICJjb21wbGV0ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdGVzdHM6IGNsb25lZF90ZXN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IGhhcm5lc3Nfc3RhdHVzLnN0cnVjdHVyZWRfY2xv
bmUoKX0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0YXR1czogaGFybmVzc19zdGF0dXMuc3RydWN0dXJlZF9jbG9uZSgpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydHM6IGFzc2VydHMubWFw
KGFzc2VydCA9PiBhc3NlcnQuc3RydWN0dXJlZF9jbG9uZSgpKX0pOwogICAgICAgICAgICAgICAg
ICAgICAgICAgIH1dCiAgICAgICAgIH0KIApAQCAtMTMxLDExICsxMjMsNyBAQCBwb2xpY2llcyBh
bmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgICAgICAgICAgICAgICAgIGlmICho
YXNfc2VsZWN0b3IpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB3W3NlbGVjdG9yXS5hcHBseSh1bmRlZmluZWQsIGNh
bGxiYWNrX2FyZ3MpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRlYnVnKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBlOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9CiAgICAgICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgaWYgKHN1cHBvcnRz
X3Bvc3RfbWVzc2FnZSh3KSAmJiB3ICE9PSBzZWxmKSB7CkBAIC0xOTIsOCArMTgwLDggQEAgcG9s
aWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAgICAgICB0aGlzX29iai5v
dXRwdXRfaGFuZGxlci5zaG93X3N0YXR1cygpOwogICAgICAgICB9KTsKIAotICAgICAgICBhZGRf
Y29tcGxldGlvbl9jYWxsYmFjayhmdW5jdGlvbiAodGVzdHMsIGhhcm5lc3Nfc3RhdHVzKSB7Ci0g
ICAgICAgICAgICB0aGlzX29iai5vdXRwdXRfaGFuZGxlci5zaG93X3Jlc3VsdHModGVzdHMsIGhh
cm5lc3Nfc3RhdHVzKTsKKyAgICAgICAgYWRkX2NvbXBsZXRpb25fY2FsbGJhY2soZnVuY3Rpb24g
KHRlc3RzLCBoYXJuZXNzX3N0YXR1cywgYXNzZXJ0c19ydW4pIHsKKyAgICAgICAgICAgIHRoaXNf
b2JqLm91dHB1dF9oYW5kbGVyLnNob3dfcmVzdWx0cyh0ZXN0cywgaGFybmVzc19zdGF0dXMsIGFz
c2VydHNfcnVuKTsKICAgICAgICAgfSk7CiAgICAgICAgIHRoaXMuc2V0dXBfbWVzc2FnZXMoc2V0
dGluZ3MubWVzc2FnZV9ldmVudHMpOwogICAgIH07CkBAIC0zMTQsMTQgKzMwMiwxNSBAQCBwb2xp
Y2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgICAgICAgICAgICAgfSk7
CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgIGFkZF9jb21wbGV0aW9uX2NhbGxiYWNrKAot
ICAgICAgICAgICAgICAgIGZ1bmN0aW9uKHRlc3RzLCBoYXJuZXNzX3N0YXR1cykgeworICAgICAg
ICAgICAgICAgIGZ1bmN0aW9uKHRlc3RzLCBoYXJuZXNzX3N0YXR1cywgYXNzZXJ0cykgewogICAg
ICAgICAgICAgICAgICAgICB0aGlzX29iai5fZGlzcGF0Y2goewogICAgICAgICAgICAgICAgICAg
ICAgICAgdHlwZTogImNvbXBsZXRlIiwKICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RzOiBt
YXAodGVzdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24odGVzdCkgewog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGVzdC5zdHJ1Y3R1cmVkX2Ns
b25lKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksCi0gICAgICAgICAgICAgICAg
ICAgICAgICBzdGF0dXM6IGhhcm5lc3Nfc3RhdHVzLnN0cnVjdHVyZWRfY2xvbmUoKQorICAgICAg
ICAgICAgICAgICAgICAgICAgc3RhdHVzOiBoYXJuZXNzX3N0YXR1cy5zdHJ1Y3R1cmVkX2Nsb25l
KCksCisgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnRzOiBhc3NlcnRzLm1hcChhc3NlcnQg
PT4gYXNzZXJ0LnN0cnVjdHVyZWRfY2xvbmUoKSksCiAgICAgICAgICAgICAgICAgICAgIH0pOwog
ICAgICAgICAgICAgICAgIH0pOwogICAgIH07CkBAIC0zOTgsMjAgKzM4Nyw3IEBAIHBvbGljaWVz
IGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAgICBzZWxmLmFkZEV2ZW50TGlzdGVu
ZXIoIm1lc3NhZ2UiLAogICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgICAg
ICAgICAgICAgICAgIGlmIChldmVudC5kYXRhICYmIGV2ZW50LmRhdGEudHlwZSAmJiBldmVudC5k
YXRhLnR5cGUgPT09ICJjb25uZWN0IikgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2
ZW50LnBvcnRzICYmIGV2ZW50LnBvcnRzWzBdKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gSWYgYSBNZXNzYWdlQ2hhbm5lbCB3YXMgcGFzc2VkLCB0aGVuIHVzZSBpdCB0bwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNlbmQgcmVzdWx0cyBiYWNrIHRvIHRoZSBtYWlu
IHdpbmRvdy4gIFRoaXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbGxvd3MgdGhl
IHRlc3RzIHRvIHdvcmsgZXZlbiBpZiB0aGUgYnJvd3NlcgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIGRvZXMgbm90IGZ1bGx5IHN1cHBvcnQgTWVzc2FnZUV2ZW50LnNvdXJjZSBpbgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNlcnZpY2VXb3JrZXJzIHlldC4KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0aGlzX29iai5fYWRkX21lc3NhZ2VfcG9ydChldmVudC5w
b3J0c1swXSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucG9ydHNbMF0uc3Rh
cnQoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gTWVzc2FnZUNoYW5uZWwsIHRoZW4gYXR0ZW1w
dCB0bwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVzZSB0aGUgTWVzc2FnZUV2ZW50
LnNvdXJjZSB0byBzZW5kIHJlc3VsdHMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBi
YWNrIHRvIHRoZSBtYWluIHdpbmRvdy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlz
X29iai5fYWRkX21lc3NhZ2VfcG9ydChldmVudC5zb3VyY2UpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgdGhpc19vYmouX2FkZF9tZXNzYWdlX3Bv
cnQoZXZlbnQuc291cmNlKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IH0sIGZhbHNlKTsKIApAQCAtNTEzLDExICs0ODksNyBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0
aW9uIGZvcm1zIFszXS4KICAgICAgICAgICAgIHJldHVybiBuZXcgRGVkaWNhdGVkV29ya2VyVGVz
dEVudmlyb25tZW50KCk7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoISgnbG9jYXRpb24nIGlu
IGdsb2JhbF9zY29wZSkpIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgU2hlbGxUZXN0RW52aXJv
bm1lbnQoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0
ZWQgdGVzdCBlbnZpcm9ubWVudCIpOworICAgICAgICByZXR1cm4gbmV3IFNoZWxsVGVzdEVudmly
b25tZW50KCk7CiAgICAgfQogCiAgICAgdmFyIHRlc3RfZW52aXJvbm1lbnQgPSBjcmVhdGVfdGVz
dF9lbnZpcm9ubWVudCgpOwpAQCAtNTMzLDIzICs1MDUsNjUgQEAgcG9saWNpZXMgYW5kIGNvbnRy
aWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAgICAgICBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5n
LmNhbGwod29ya2VyKSA9PSAnW29iamVjdCBTZXJ2aWNlV29ya2VyXSc7CiAgICAgfQogCisgICAg
dmFyIHNlZW5fZnVuY19uYW1lID0gT2JqZWN0LmNyZWF0ZShudWxsKTsKKworICAgIGZ1bmN0aW9u
IGdldF90ZXN0X25hbWUoZnVuYywgbmFtZSkKKyAgICB7CisgICAgICAgIGlmIChuYW1lKSB7Cisg
ICAgICAgICAgICByZXR1cm4gbmFtZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChmdW5jKSB7
CisgICAgICAgICAgICB2YXIgZnVuY19jb2RlID0gZnVuYy50b1N0cmluZygpOworCisgICAgICAg
ICAgICAvLyBUcnkgYW5kIG1hdGNoIHdpdGggYnJhY2tldHMsIGJ1dCBmYWxsYmFjayB0byBtYXRj
aGluZyB3aXRob3V0CisgICAgICAgICAgICB2YXIgYXJyb3cgPSBmdW5jX2NvZGUubWF0Y2goL15c
KFwpXHMqPT5ccyooPzp7KC4qKX1ccyp8KC4qKSkkLyk7CisKKyAgICAgICAgICAgIC8vIENoZWNr
IGZvciBKUyBsaW5lIHNlcGFyYXRvcnMKKyAgICAgICAgICAgIGlmIChhcnJvdyAhPT0gbnVsbCAm
JiAhL1tcdTAwMEFcdTAwMERcdTIwMjhcdTIwMjldLy50ZXN0KGZ1bmNfY29kZSkpIHsKKyAgICAg
ICAgICAgICAgICB2YXIgdHJpbW1lZCA9IChhcnJvd1sxXSAhPT0gdW5kZWZpbmVkID8gYXJyb3db
MV0gOiBhcnJvd1syXSkudHJpbSgpOworICAgICAgICAgICAgICAgIC8vIGRyb3AgdHJhaWxpbmcg
OyBpZiB0aGVyZSdzIG5vIGVhcmxpZXIgb25lcworICAgICAgICAgICAgICAgIHRyaW1tZWQgPSB0
cmltbWVkLnJlcGxhY2UoL14oW147XSopKDtccyopKyQvLCAiJDEiKTsKKworICAgICAgICAgICAg
ICAgIGlmICh0cmltbWVkKSB7CisgICAgICAgICAgICAgICAgICAgIGxldCBuYW1lID0gdHJpbW1l
ZDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHNlZW5fZnVuY19uYW1lW3RyaW1tZWRdKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIHN1YnRlc3QgbmFtZSBhbHJlYWR5IGV4aXN0
cywgc28gYWRkIGEgc3VmZml4LgorICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSArPSAiICIg
KyBzZWVuX2Z1bmNfbmFtZVt0cmltbWVkXTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHNlZW5fZnVuY19uYW1lW3RyaW1tZWRdID0gMDsKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBzZWVuX2Z1bmNfbmFtZVt0
cmltbWVkXSArPSAxOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmFtZTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gdGVz
dF9lbnZpcm9ubWVudC5uZXh0X2RlZmF1bHRfdGVzdF9uYW1lKCk7CisgICAgfQorCiAgICAgLyoK
ICAgICAgKiBBUEkgZnVuY3Rpb25zCiAgICAgICovCiAgICAgZnVuY3Rpb24gdGVzdChmdW5jLCBu
YW1lLCBwcm9wZXJ0aWVzKQogICAgIHsKLSAgICAgICAgdmFyIHRlc3RfbmFtZSA9IG5hbWUgPyBu
YW1lIDogdGVzdF9lbnZpcm9ubWVudC5uZXh0X2RlZmF1bHRfdGVzdF9uYW1lKCk7Ci0gICAgICAg
IHByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzID8gcHJvcGVydGllcyA6IHt9OworICAgICAgICBpZiAo
dGVzdHMucHJvbWlzZV9zZXR1cF9jYWxsZWQpIHsKKyAgICAgICAgICAgIHRlc3RzLnN0YXR1cy5z
dGF0dXMgPSB0ZXN0cy5zdGF0dXMuRVJST1I7CisgICAgICAgICAgICB0ZXN0cy5zdGF0dXMubWVz
c2FnZSA9ICdgdGVzdGAgaW52b2tlZCBhZnRlciBgcHJvbWlzZV9zZXR1cGAnOworICAgICAgICAg
ICAgdGVzdHMuY29tcGxldGUoKTsKKyAgICAgICAgfQorICAgICAgICB2YXIgdGVzdF9uYW1lID0g
Z2V0X3Rlc3RfbmFtZShmdW5jLCBuYW1lKTsKICAgICAgICAgdmFyIHRlc3Rfb2JqID0gbmV3IFRl
c3QodGVzdF9uYW1lLCBwcm9wZXJ0aWVzKTsKICAgICAgICAgdmFyIHZhbHVlID0gdGVzdF9vYmou
c3RlcChmdW5jLCB0ZXN0X29iaiwgdGVzdF9vYmopOwogCiAgICAgICAgIGlmICh2YWx1ZSAhPT0g
dW5kZWZpbmVkKSB7Ci0gICAgICAgICAgICB2YXIgbXNnID0gIlRlc3QgbmFtZWQgXCIiICsgdGVz
dF9uYW1lICsKLSAgICAgICAgICAgICAgICAiXCIgaW5hcHByb3ByaWF0ZWx5IHJldHVybmVkIGEg
dmFsdWUiOworICAgICAgICAgICAgdmFyIG1zZyA9ICdUZXN0IG5hbWVkICInICsgdGVzdF9uYW1l
ICsKKyAgICAgICAgICAgICAgICAnIiBwYXNzZWQgYSBmdW5jdGlvbiB0byBgdGVzdGAgdGhhdCBy
ZXR1cm5lZCBhIHZhbHVlLic7CiAKICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAg
aWYgKHZhbHVlICYmIHZhbHVlLmhhc093blByb3BlcnR5KCJ0aGVuIikpIHsKLSAgICAgICAgICAg
ICAgICAgICAgbXNnICs9ICIsIGNvbnNpZGVyIHVzaW5nIGBwcm9taXNlX3Rlc3RgIGluc3RlYWQi
OworICAgICAgICAgICAgICAgIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUudGhlbiA9PT0gJ2Z1
bmN0aW9uJykgeworICAgICAgICAgICAgICAgICAgICBtc2cgKz0gJyBDb25zaWRlciB1c2luZyBg
cHJvbWlzZV90ZXN0YCBpbnN0ZWFkIHdoZW4gJyArCisgICAgICAgICAgICAgICAgICAgICAgICAn
dXNpbmcgUHJvbWlzZXMgb3IgYXN5bmMvYXdhaXQuJzsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB9IGNhdGNoIChlcnIpIHt9CiAKQEAgLTU2NCwyMiArNTc4LDU1IEBAIHBvbGljaWVz
IGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogCiAgICAgZnVuY3Rpb24gYXN5bmNfdGVzdChm
dW5jLCBuYW1lLCBwcm9wZXJ0aWVzKQogICAgIHsKKyAgICAgICAgaWYgKHRlc3RzLnByb21pc2Vf
c2V0dXBfY2FsbGVkKSB7CisgICAgICAgICAgICB0ZXN0cy5zdGF0dXMuc3RhdHVzID0gdGVzdHMu
c3RhdHVzLkVSUk9SOworICAgICAgICAgICAgdGVzdHMuc3RhdHVzLm1lc3NhZ2UgPSAnYGFzeW5j
X3Rlc3RgIGludm9rZWQgYWZ0ZXIgYHByb21pc2Vfc2V0dXBgJzsKKyAgICAgICAgICAgIHRlc3Rz
LmNvbXBsZXRlKCk7CisgICAgICAgIH0KICAgICAgICAgaWYgKHR5cGVvZiBmdW5jICE9PSAiZnVu
Y3Rpb24iKSB7CiAgICAgICAgICAgICBwcm9wZXJ0aWVzID0gbmFtZTsKICAgICAgICAgICAgIG5h
bWUgPSBmdW5jOwogICAgICAgICAgICAgZnVuYyA9IG51bGw7CiAgICAgICAgIH0KLSAgICAgICAg
dmFyIHRlc3RfbmFtZSA9IG5hbWUgPyBuYW1lIDogdGVzdF9lbnZpcm9ubWVudC5uZXh0X2RlZmF1
bHRfdGVzdF9uYW1lKCk7Ci0gICAgICAgIHByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzID8gcHJvcGVy
dGllcyA6IHt9OworICAgICAgICB2YXIgdGVzdF9uYW1lID0gZ2V0X3Rlc3RfbmFtZShmdW5jLCBu
YW1lKTsKICAgICAgICAgdmFyIHRlc3Rfb2JqID0gbmV3IFRlc3QodGVzdF9uYW1lLCBwcm9wZXJ0
aWVzKTsKICAgICAgICAgaWYgKGZ1bmMpIHsKLSAgICAgICAgICAgIHRlc3Rfb2JqLnN0ZXAoZnVu
YywgdGVzdF9vYmosIHRlc3Rfb2JqKTsKKyAgICAgICAgICAgIHZhciB2YWx1ZSA9IHRlc3Rfb2Jq
LnN0ZXAoZnVuYywgdGVzdF9vYmosIHRlc3Rfb2JqKTsKKworICAgICAgICAgICAgLy8gVGVzdCBh
dXRob3JzIHNvbWV0aW1lcyByZXR1cm4gdmFsdWVzIHRvIGFzeW5jX3Rlc3QsIGV4cGVjdGluZyB1
cworICAgICAgICAgICAgLy8gdG8gaGFuZGxlIHRoZSB2YWx1ZSBzb21laG93LiBNYWtlIGRvaW5n
IHNvIGEgaGFybmVzcyBlcnJvciB0byBiZQorICAgICAgICAgICAgLy8gY2xlYXIgdGhpcyBpcyBp
bnZhbGlkLCBhbmQgcG9pbnQgYXV0aG9ycyB0byBwcm9taXNlX3Rlc3QgaWYgaXQKKyAgICAgICAg
ICAgIC8vIG1heSBiZSBhcHByb3ByaWF0ZS4KKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAv
LyBOb3RlIHRoYXQgd2Ugb25seSBwZXJmb3JtIHRoaXMgY2hlY2sgb24gdGhlIGluaXRpYWwgZnVu
Y3Rpb24KKyAgICAgICAgICAgIC8vIHBhc3NlZCB0byBhc3luY190ZXN0LCBub3Qgb24gYW55IGxh
dGVyIHN0ZXBzIC0gd2UgaGF2ZW4ndCBzZWVuIGEKKyAgICAgICAgICAgIC8vIGNvbnNpc3RlbnQg
cHJvYmxlbSB3aXRoIHRob3NlIChhbmQgaXQncyBoYXJkZXIgdG8gY2hlY2spLgorICAgICAgICAg
ICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHsKKyAgICAgICAgICAgICAgICB2YXIgbXNnID0g
J1Rlc3QgbmFtZWQgIicgKyB0ZXN0X25hbWUgKworICAgICAgICAgICAgICAgICAgICAnIiBwYXNz
ZWQgYSBmdW5jdGlvbiB0byBgYXN5bmNfdGVzdGAgdGhhdCByZXR1cm5lZCBhIHZhbHVlLic7CisK
KyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUgJiYg
dHlwZW9mIHZhbHVlLnRoZW4gPT09ICdmdW5jdGlvbicpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIG1zZyArPSAnIENvbnNpZGVyIHVzaW5nIGBwcm9taXNlX3Rlc3RgIGluc3RlYWQgd2hlbiAn
ICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAndXNpbmcgUHJvbWlzZXMgb3IgYXN5bmMv
YXdhaXQuJzsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gY2F0Y2gg
KGVycikge30KKworICAgICAgICAgICAgICAgIHRlc3RzLnNldF9zdGF0dXModGVzdHMuc3RhdHVz
LkVSUk9SLCBtc2cpOworICAgICAgICAgICAgICAgIHRlc3RzLmNvbXBsZXRlKCk7CisgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHRlc3Rfb2JqOwogICAgIH0KIAogICAg
IGZ1bmN0aW9uIHByb21pc2VfdGVzdChmdW5jLCBuYW1lLCBwcm9wZXJ0aWVzKSB7Ci0gICAgICAg
IHZhciB0ZXN0ID0gYXN5bmNfdGVzdChuYW1lLCBwcm9wZXJ0aWVzKTsKKyAgICAgICAgaWYgKHR5
cGVvZiBmdW5jICE9PSAiZnVuY3Rpb24iKSB7CisgICAgICAgICAgICBwcm9wZXJ0aWVzID0gbmFt
ZTsKKyAgICAgICAgICAgIG5hbWUgPSBmdW5jOworICAgICAgICAgICAgZnVuYyA9IG51bGw7Cisg
ICAgICAgIH0KKyAgICAgICAgdmFyIHRlc3RfbmFtZSA9IGdldF90ZXN0X25hbWUoZnVuYywgbmFt
ZSk7CisgICAgICAgIHZhciB0ZXN0ID0gbmV3IFRlc3QodGVzdF9uYW1lLCBwcm9wZXJ0aWVzKTsK
ICAgICAgICAgdGVzdC5faXNfcHJvbWlzZV90ZXN0ID0gdHJ1ZTsKIAogICAgICAgICAvLyBJZiB0
aGVyZSBpcyBubyBwcm9taXNlIHRlc3RzIHF1ZXVlIG1ha2Ugb25lLgpAQCAtNjI0LDEwICs2NzEs
ODcgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAgIH0pOwog
ICAgIH0KIAotICAgIGZ1bmN0aW9uIHByb21pc2VfcmVqZWN0cyh0ZXN0LCBleHBlY3RlZCwgcHJv
bWlzZSwgZGVzY3JpcHRpb24pIHsKLSAgICAgICAgcmV0dXJuIHByb21pc2UudGhlbih0ZXN0LnVu
cmVhY2hlZF9mdW5jKCJTaG91bGQgaGF2ZSByZWplY3RlZDogIiArIGRlc2NyaXB0aW9uKSkuY2F0
Y2goZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyhleHBlY3RlZCwgZnVu
Y3Rpb24oKSB7IHRocm93IGUgfSwgZGVzY3JpcHRpb24pOwotICAgICAgICB9KTsKKyAgICAvKioK
KyAgICAgKiBNYWtlIGEgY29weSBvZiBhIFByb21pc2UgaW4gdGhlIGN1cnJlbnQgcmVhbG0uCisg
ICAgICoKKyAgICAgKiBAcGFyYW0ge1Byb21pc2V9IHByb21pc2UgdGhlIGdpdmVuIHByb21pc2Ug
dGhhdCBtYXkgYmUgZnJvbSBhIGRpZmZlcmVudAorICAgICAqICAgICAgICAgICAgICAgICAgICAg
ICAgICByZWFsbQorICAgICAqIEByZXR1cm5zIHtQcm9taXNlfQorICAgICAqCisgICAgICogQW4g
YXJiaXRyYXJ5IHByb21pc2UgcHJvdmlkZWQgYnkgdGhlIGNhbGxlciBtYXkgaGF2ZSBvcmlnaW5h
dGVkIGluCisgICAgICogYW5vdGhlciBmcmFtZSB0aGF0IGhhdmUgc2luY2UgbmF2aWdhdGVkIGF3
YXksIHJlbmRlcmluZyB0aGUgZnJhbWUncworICAgICAqIGRvY3VtZW50IGluYWN0aXZlLiBTdWNo
IGEgcHJvbWlzZSBjYW5ub3QgYmUgdXNlZCB3aXRoIGBhd2FpdGAgb3IKKyAgICAgKiBQcm9taXNl
LnJlc29sdmUoKSwgYXMgbWljcm90YXNrcyBhc3NvY2lhdGVkIHdpdGggaXQgbWF5IGJlIHByZXZl
bnRlZAorICAgICAqIGZyb20gYmVpbmcgcnVuLiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3doYXR3
Zy9odG1sL2lzc3Vlcy81MzE5IGZvciBhCisgICAgICogcGFydGljdWxhciBjYXNlLgorICAgICAq
CisgICAgICogSW4gZnVuY3Rpb25zIHdlIGRlZmluZSBoZXJlLCB0aGVyZSBpcyBhbiBleHBlY3Rh
dGlvbiBmcm9tIHRoZSBjYWxsZXIKKyAgICAgKiB0aGF0IHRoZSBwcm9taXNlIGlzIGZyb20gdGhl
IGN1cnJlbnQgcmVhbG0sIHRoYXQgY2FuIGFsd2F5cyBiZSB1c2VkIHdpdGgKKyAgICAgKiBgYXdh
aXRgLCBldGMuIFdlIHRoZXJlZm9yZSBjcmVhdGUgYSBuZXcgcHJvbWlzZSBpbiB0aGlzIHJlYWxt
IHRoYXQKKyAgICAgKiBpbmhlcml0IHRoZSB2YWx1ZSBhbmQgc3RhdHVzIGZyb20gdGhlIGdpdmVu
IHByb21pc2UuCisgICAgICovCisKKyAgICBmdW5jdGlvbiBicmluZ19wcm9taXNlX3RvX2N1cnJl
bnRfcmVhbG0ocHJvbWlzZSkgeworICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocHJvbWlzZS50
aGVuLmJpbmQocHJvbWlzZSkpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHByb21pc2VfcmVqZWN0
c19qcyh0ZXN0LCBjb25zdHJ1Y3RvciwgcHJvbWlzZSwgZGVzY3JpcHRpb24pIHsKKyAgICAgICAg
cmV0dXJuIGJyaW5nX3Byb21pc2VfdG9fY3VycmVudF9yZWFsbShwcm9taXNlKQorICAgICAgICAg
ICAgLnRoZW4odGVzdC51bnJlYWNoZWRfZnVuYygiU2hvdWxkIGhhdmUgcmVqZWN0ZWQ6ICIgKyBk
ZXNjcmlwdGlvbikpCisgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24oZSkgeworICAgICAgICAg
ICAgICAgIGFzc2VydF90aHJvd3NfanNfaW1wbChjb25zdHJ1Y3RvciwgZnVuY3Rpb24oKSB7IHRo
cm93IGUgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRp
b24sICJwcm9taXNlX3JlamVjdHNfanMiKTsKKyAgICAgICAgICAgIH0pOworICAgIH0KKworICAg
IC8qKgorICAgICAqIEFzc2VydCB0aGF0IGEgUHJvbWlzZSBpcyByZWplY3RlZCB3aXRoIHRoZSBy
aWdodCBET01FeGNlcHRpb24uCisgICAgICoKKyAgICAgKiBAcGFyYW0gdGVzdCB0aGUgdGVzdCBh
cmd1bWVudCBwYXNzZWQgdG8gcHJvbWlzZV90ZXN0CisgICAgICogQHBhcmFtIHtudW1iZXJ8c3Ry
aW5nfSB0eXBlLiAgU2VlIGRvY3VtZW50YXRpb24gZm9yIGFzc2VydF90aHJvd3NfZG9tLgorICAg
ICAqCisgICAgICogRm9yIHRoZSByZW1haW5pbmcgYXJndW1lbnRzLCB0aGVyZSBhcmUgdHdvIHdh
eXMgb2YgY2FsbGluZworICAgICAqIHByb21pc2VfcmVqZWN0c19kb206CisgICAgICoKKyAgICAg
KiAxKSBJZiB0aGUgRE9NRXhjZXB0aW9uIGlzIGV4cGVjdGVkIHRvIGNvbWUgZnJvbSB0aGUgY3Vy
cmVudCBnbG9iYWwsIHRoZQorICAgICAqIHRoaXJkIGFyZ3VtZW50IHNob3VsZCBiZSB0aGUgcHJv
bWlzZSBleHBlY3RlZCB0byByZWplY3QsIGFuZCBhIGZvdXJ0aCwKKyAgICAgKiBvcHRpb25hbCwg
YXJndW1lbnQgaXMgdGhlIGFzc2VydGlvbiBkZXNjcmlwdGlvbi4KKyAgICAgKgorICAgICAqIDIp
IElmIHRoZSBET01FeGNlcHRpb24gaXMgZXhwZWN0ZWQgdG8gY29tZSBmcm9tIHNvbWUgb3RoZXIg
Z2xvYmFsLCB0aGUKKyAgICAgKiB0aGlyZCBhcmd1bWVudCBzaG91bGQgYmUgdGhlIERPTUV4Y2Vw
dGlvbiBjb25zdHJ1Y3RvciBmcm9tIHRoYXQgZ2xvYmFsLAorICAgICAqIHRoZSBmb3VydGggYXJn
dW1lbnQgdGhlIHByb21pc2UgZXhwZWN0ZWQgdG8gcmVqZWN0LCBhbmQgdGhlIGZpZnRoLAorICAg
ICAqIG9wdGlvbmFsLCBhcmd1bWVudCB0aGUgYXNzZXJ0aW9uIGRlc2NyaXB0aW9uLgorICAgICAq
LworCisgICAgZnVuY3Rpb24gcHJvbWlzZV9yZWplY3RzX2RvbSh0ZXN0LCB0eXBlLCBwcm9taXNl
T3JDb25zdHJ1Y3RvciwgZGVzY3JpcHRpb25PclByb21pc2UsIG1heWJlRGVzY3JpcHRpb24pIHsK
KyAgICAgICAgbGV0IGNvbnN0cnVjdG9yLCBwcm9taXNlLCBkZXNjcmlwdGlvbjsKKyAgICAgICAg
aWYgKHR5cGVvZiBwcm9taXNlT3JDb25zdHJ1Y3RvciA9PT0gImZ1bmN0aW9uIiAmJgorICAgICAg
ICAgICAgcHJvbWlzZU9yQ29uc3RydWN0b3IubmFtZSA9PT0gIkRPTUV4Y2VwdGlvbiIpIHsKKyAg
ICAgICAgICAgIGNvbnN0cnVjdG9yID0gcHJvbWlzZU9yQ29uc3RydWN0b3I7CisgICAgICAgICAg
ICBwcm9taXNlID0gZGVzY3JpcHRpb25PclByb21pc2U7CisgICAgICAgICAgICBkZXNjcmlwdGlv
biA9IG1heWJlRGVzY3JpcHRpb247CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjb25z
dHJ1Y3RvciA9IHNlbGYuRE9NRXhjZXB0aW9uOworICAgICAgICAgICAgcHJvbWlzZSA9IHByb21p
c2VPckNvbnN0cnVjdG9yOworICAgICAgICAgICAgZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbk9y
UHJvbWlzZTsKKyAgICAgICAgICAgIGFzc2VydChtYXliZURlc2NyaXB0aW9uID09PSB1bmRlZmlu
ZWQsCisgICAgICAgICAgICAgICAgICAgIlRvbyBtYW55IGFyZ3MgcGFzZWQgdG8gbm8tY29uc3Ry
dWN0b3IgdmVyc2lvbiBvZiBwcm9taXNlX3JlamVjdHNfZG9tIik7CisgICAgICAgIH0KKyAgICAg
ICAgcmV0dXJuIGJyaW5nX3Byb21pc2VfdG9fY3VycmVudF9yZWFsbShwcm9taXNlKQorICAgICAg
ICAgICAgLnRoZW4odGVzdC51bnJlYWNoZWRfZnVuYygiU2hvdWxkIGhhdmUgcmVqZWN0ZWQ6ICIg
KyBkZXNjcmlwdGlvbikpCisgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24oZSkgeworICAgICAg
ICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9tX2ltcGwodHlwZSwgZnVuY3Rpb24oKSB7IHRocm93
IGUgfSwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAicHJvbWlzZV9yZWplY3RzX2RvbSIsIGNvbnN0cnVjdG9yKTsKKyAgICAgICAgICAgIH0pOwor
ICAgIH0KKworICAgIGZ1bmN0aW9uIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHRlc3QsIGV4Y2Vw
dGlvbiwgcHJvbWlzZSwgZGVzY3JpcHRpb24pIHsKKyAgICAgICAgcmV0dXJuIGJyaW5nX3Byb21p
c2VfdG9fY3VycmVudF9yZWFsbShwcm9taXNlKQorICAgICAgICAgICAgLnRoZW4odGVzdC51bnJl
YWNoZWRfZnVuYygiU2hvdWxkIGhhdmUgcmVqZWN0ZWQ6ICIgKyBkZXNjcmlwdGlvbikpCisgICAg
ICAgICAgICAuY2F0Y2goZnVuY3Rpb24oZSkgeworICAgICAgICAgICAgICAgIGFzc2VydF90aHJv
d3NfZXhhY3RseV9pbXBsKGV4Y2VwdGlvbiwgZnVuY3Rpb24oKSB7IHRocm93IGUgfSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiwgInByb21p
c2VfcmVqZWN0c19leGFjdGx5Iik7CisgICAgICAgICAgICB9KTsKICAgICB9CiAKICAgICAvKioK
QEAgLTc2OSw5ICs4OTMsNTYgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10u
CiAgICAgICAgIHRlc3RfZW52aXJvbm1lbnQub25fbmV3X2hhcm5lc3NfcHJvcGVydGllcyhwcm9w
ZXJ0aWVzKTsKICAgICB9CiAKKyAgICBmdW5jdGlvbiBwcm9taXNlX3NldHVwKGZ1bmMsIG1heWJl
X3Byb3BlcnRpZXMpCisgICAgeworICAgICAgICBpZiAodHlwZW9mIGZ1bmMgIT09ICJmdW5jdGlv
biIpIHsKKyAgICAgICAgICAgIHRlc3RzLnNldF9zdGF0dXModGVzdHMuc3RhdHVzLkVSUk9SLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHJvbWlzZV90ZXN0IGludm9rZWQgd2l0aG91
dCBhIGZ1bmN0aW9uIik7CisgICAgICAgICAgICB0ZXN0cy5jb21wbGV0ZSgpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHRlc3RzLnByb21pc2Vfc2V0dXBfY2FsbGVk
ID0gdHJ1ZTsKKworICAgICAgICBpZiAoIXRlc3RzLnByb21pc2VfdGVzdHMpIHsKKyAgICAgICAg
ICAgIHRlc3RzLnByb21pc2VfdGVzdHMgPSBQcm9taXNlLnJlc29sdmUoKTsKKyAgICAgICAgfQor
CisgICAgICAgIHRlc3RzLnByb21pc2VfdGVzdHMgPSB0ZXN0cy5wcm9taXNlX3Rlc3RzCisgICAg
ICAgICAgICAudGhlbihmdW5jdGlvbigpCisgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgICAgdmFyIHByb3BlcnRpZXMgPSBtYXliZV9wcm9wZXJ0aWVzIHx8IHt9OworICAg
ICAgICAgICAgICAgICAgICAgIHZhciByZXN1bHQ7CisKKyAgICAgICAgICAgICAgICAgICAgICB0
ZXN0cy5zZXR1cChudWxsLCBwcm9wZXJ0aWVzKTsKKyAgICAgICAgICAgICAgICAgICAgICByZXN1
bHQgPSBmdW5jKCk7CisgICAgICAgICAgICAgICAgICAgICAgdGVzdF9lbnZpcm9ubWVudC5vbl9u
ZXdfaGFybmVzc19wcm9wZXJ0aWVzKHByb3BlcnRpZXMpOworCisgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCFyZXN1bHQgfHwgdHlwZW9mIHJlc3VsdC50aGVuICE9PSAiZnVuY3Rpb24iKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93ICJOb24tdGhlbmFibGUgcmV0dXJuZWQgYnkg
ZnVuY3Rpb24gcGFzc2VkIHRvIGBwcm9taXNlX3NldHVwYCI7CisgICAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICAg
ICAgICB9KQorICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uKGUpCisgICAgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICAgICB0ZXN0cy5zZXRfc3RhdHVzKHRlc3RzLnN0YXR1
cy5FUlJPUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmco
ZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSAmJiBlLnN0YWNr
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgdGVzdHMuY29tcGxldGUoKTsKKyAgICAgICAgICAg
ICAgICAgICB9KTsKKyAgICB9CisKICAgICBmdW5jdGlvbiBkb25lKCkgewogICAgICAgICBpZiAo
dGVzdHMudGVzdHMubGVuZ3RoID09PSAwKSB7Ci0gICAgICAgICAgICB0ZXN0cy5zZXRfZmlsZV9p
c190ZXN0KCk7CisgICAgICAgICAgICAvLyBgZG9uZWAgaXMgaW52b2tlZCBhZnRlciBoYW5kbGlu
ZyB1bmNhdWdodCBleGNlcHRpb25zLCBzbyBpZiB0aGUKKyAgICAgICAgICAgIC8vIGhhcm5lc3Mg
c3RhdHVzIGlzIGFscmVhZHkgc2V0LCB0aGUgY29ycmVzcG9uZGluZyBtZXNzYWdlIGlzIG1vcmUK
KyAgICAgICAgICAgIC8vIGRlc2NyaXB0aXZlIHRoYW4gdGhlIGdlbmVyaWMgbWVzc2FnZSBkZWZp
bmVkIGhlcmUuCisgICAgICAgICAgICBpZiAodGVzdHMuc3RhdHVzLnN0YXR1cyA9PT0gbnVsbCkg
eworICAgICAgICAgICAgICAgIHRlc3RzLnN0YXR1cy5zdGF0dXMgPSB0ZXN0cy5zdGF0dXMuRVJS
T1I7CisgICAgICAgICAgICAgICAgdGVzdHMuc3RhdHVzLm1lc3NhZ2UgPSAiZG9uZSgpIHdhcyBj
YWxsZWQgd2l0aG91dCBmaXJzdCBkZWZpbmluZyBhbnkgdGVzdHMiOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICB0ZXN0cy5jb21wbGV0ZSgpOworICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAgICAgICAgIGlmICh0ZXN0cy5maWxlX2lzX3Rlc3QpIHsKICAgICAgICAgICAgIC8v
IGZpbGUgaXMgdGVzdCBmaWxlcyBuZXZlciBoYXZlIGFzeW5jaHJvbm91cyBjbGVhbnVwIGxvZ2lj
LApAQCAtNzk0LDYgKzk2NSwxMiBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFsz
XS4KICAgICAgICAgICAgICAgICB9KTsKICAgICB9CiAKKyAgICAvKgorICAgICAqIFJlZ2lzdGVy
IGEgZnVuY3Rpb24gYXMgYSBET00gZXZlbnQgbGlzdGVuZXIgdG8gdGhlIGdpdmVuIG9iamVjdCBm
b3IgdGhlCisgICAgICogZXZlbnQgYnViYmxpbmcgcGhhc2UuCisgICAgICoKKyAgICAgKiBUaGlz
IGZ1bmN0aW9uIHdhcyBkZXByZWNhdGVkIGluIE5vdmVtYmVyIG9mIDIwMTkuCisgICAgICovCiAg
ICAgZnVuY3Rpb24gb25fZXZlbnQob2JqZWN0LCBldmVudCwgY2FsbGJhY2spCiAgICAgewogICAg
ICAgICBvYmplY3QuYWRkRXZlbnRMaXN0ZW5lcihldmVudCwgY2FsbGJhY2ssIGZhbHNlKTsKQEAg
LTgxMCw5ICs5ODcsMTIgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAg
ICAgZXhwb3NlKHRlc3QsICd0ZXN0Jyk7CiAgICAgZXhwb3NlKGFzeW5jX3Rlc3QsICdhc3luY190
ZXN0Jyk7CiAgICAgZXhwb3NlKHByb21pc2VfdGVzdCwgJ3Byb21pc2VfdGVzdCcpOwotICAgIGV4
cG9zZShwcm9taXNlX3JlamVjdHMsICdwcm9taXNlX3JlamVjdHMnKTsKKyAgICBleHBvc2UocHJv
bWlzZV9yZWplY3RzX2pzLCAncHJvbWlzZV9yZWplY3RzX2pzJyk7CisgICAgZXhwb3NlKHByb21p
c2VfcmVqZWN0c19kb20sICdwcm9taXNlX3JlamVjdHNfZG9tJyk7CisgICAgZXhwb3NlKHByb21p
c2VfcmVqZWN0c19leGFjdGx5LCAncHJvbWlzZV9yZWplY3RzX2V4YWN0bHknKTsKICAgICBleHBv
c2UoZ2VuZXJhdGVfdGVzdHMsICdnZW5lcmF0ZV90ZXN0cycpOwogICAgIGV4cG9zZShzZXR1cCwg
J3NldHVwJyk7CisgICAgZXhwb3NlKHByb21pc2Vfc2V0dXAsICdwcm9taXNlX3NldHVwJyk7CiAg
ICAgZXhwb3NlKGRvbmUsICdkb25lJyk7CiAgICAgZXhwb3NlKG9uX2V2ZW50LCAnb25fZXZlbnQn
KTsKICAgICBleHBvc2Uoc3RlcF90aW1lb3V0LCAnc3RlcF90aW1lb3V0Jyk7CkBAIC05MTQsMTIg
KzEwOTQsMjAgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAg
ICAgICBzZWVuLnB1c2godmFsKTsKICAgICAgICAgfQogICAgICAgICBpZiAoQXJyYXkuaXNBcnJh
eSh2YWwpKSB7Ci0gICAgICAgICAgICByZXR1cm4gIlsiICsgdmFsLm1hcChmdW5jdGlvbih4KSB7
cmV0dXJuIGZvcm1hdF92YWx1ZSh4LCBzZWVuKTt9KS5qb2luKCIsICIpICsgIl0iOworICAgICAg
ICAgICAgbGV0IG91dHB1dCA9ICJbIjsKKyAgICAgICAgICAgIGlmICh2YWwuYmVnaW5FbGxpcHNp
cyAhPT0gdW5kZWZpbmVkKSB7CisgICAgICAgICAgICAgICAgb3V0cHV0ICs9ICLigKYsICI7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBvdXRwdXQgKz0gdmFsLm1hcChmdW5jdGlvbih4KSB7
cmV0dXJuIGZvcm1hdF92YWx1ZSh4LCBzZWVuKTt9KS5qb2luKCIsICIpOworICAgICAgICAgICAg
aWYgKHZhbC5lbmRFbGxpcHNpcyAhPT0gdW5kZWZpbmVkKSB7CisgICAgICAgICAgICAgICAgb3V0
cHV0ICs9ICIsIOKApiI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gb3V0cHV0
ICsgIl0iOwogICAgICAgICB9CiAKICAgICAgICAgc3dpdGNoICh0eXBlb2YgdmFsKSB7CiAgICAg
ICAgIGNhc2UgInN0cmluZyI6Ci0gICAgICAgICAgICB2YWwgPSB2YWwucmVwbGFjZSgiXFwiLCAi
XFxcXCIpOworICAgICAgICAgICAgdmFsID0gdmFsLnJlcGxhY2UoL1xcL2csICJcXFxcIik7CiAg
ICAgICAgICAgICBmb3IgKHZhciBwIGluIHJlcGxhY2VtZW50cykgewogICAgICAgICAgICAgICAg
IHZhciByZXBsYWNlID0gIlxcIiArIHJlcGxhY2VtZW50c1twXTsKICAgICAgICAgICAgICAgICB2
YWwgPSB2YWwucmVwbGFjZShSZWdFeHAoU3RyaW5nLmZyb21DaGFyQ29kZShwKSwgImciKSwgcmVw
bGFjZSk7CkBAIC05ODQsMTkgKzExNzIsNTMgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBm
b3JtcyBbM10uCiAgICAgICogQXNzZXJ0aW9ucwogICAgICAqLwogCisgICAgZnVuY3Rpb24gZXhw
b3NlX2Fzc2VydChmLCBuYW1lKSB7CisgICAgICAgIGZ1bmN0aW9uIGFzc2VydF93cmFwcGVyKC4u
LmFyZ3MpIHsKKyAgICAgICAgICAgIGxldCBzdGF0dXMgPSBUZXN0LnN0YXR1c2VzLlRJTUVPVVQ7
CisgICAgICAgICAgICBsZXQgc3RhY2sgPSBudWxsOworICAgICAgICAgICAgdHJ5IHsKKyAgICAg
ICAgICAgICAgICBpZiAoc2V0dGluZ3MuZGVidWcpIHsKKyAgICAgICAgICAgICAgICAgICAgY29u
c29sZS5kZWJ1ZygiQVNTRVJUIiwgbmFtZSwgdGVzdHMuY3VycmVudF90ZXN0ICYmIHRlc3RzLmN1
cnJlbnRfdGVzdC5uYW1lLCBhcmdzKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgaWYgKHRlc3RzLm91dHB1dCkgeworICAgICAgICAgICAgICAgICAgICB0ZXN0cy5zZXRfYXNz
ZXJ0KG5hbWUsIGFyZ3MpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjb25z
dCBydiA9IGYuYXBwbHkodW5kZWZpbmVkLCBhcmdzKTsKKyAgICAgICAgICAgICAgICBzdGF0dXMg
PSBUZXN0LnN0YXR1c2VzLlBBU1M7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJ2OworICAgICAg
ICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBBc3Nl
cnRpb25FcnJvcikgeworICAgICAgICAgICAgICAgICAgICBzdGF0dXMgPSBUZXN0LnN0YXR1c2Vz
LkZBSUw7CisgICAgICAgICAgICAgICAgICAgIHN0YWNrID0gZS5zdGFjazsKKyAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVzID0gVGVzdC5zdGF0dXNl
cy5FUlJPUjsKKyAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHRocm93IGU7Cisg
ICAgICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICAgICAgICAgIGlmICh0ZXN0cy5vdXRwdXQg
JiYgIXN0YWNrKSB7CisgICAgICAgICAgICAgICAgICAgIHN0YWNrID0gZ2V0X3N0YWNrKCk7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICh0ZXN0cy5vdXRwdXQpIHsKKyAg
ICAgICAgICAgICAgICAgICAgdGVzdHMuc2V0X2Fzc2VydF9zdGF0dXMoc3RhdHVzLCBzdGFjayk7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGV4
cG9zZShhc3NlcnRfd3JhcHBlciwgbmFtZSk7CisgICAgfQorCiAgICAgZnVuY3Rpb24gYXNzZXJ0
X3RydWUoYWN0dWFsLCBkZXNjcmlwdGlvbikKICAgICB7CiAgICAgICAgIGFzc2VydChhY3R1YWwg
PT09IHRydWUsICJhc3NlcnRfdHJ1ZSIsIGRlc2NyaXB0aW9uLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiZXhwZWN0ZWQgdHJ1ZSBnb3QgJHthY3R1YWx9Iiwge2FjdHVhbDphY3R1
YWx9KTsKICAgICB9Ci0gICAgZXhwb3NlKGFzc2VydF90cnVlLCAiYXNzZXJ0X3RydWUiKTsKKyAg
ICBleHBvc2VfYXNzZXJ0KGFzc2VydF90cnVlLCAiYXNzZXJ0X3RydWUiKTsKIAogICAgIGZ1bmN0
aW9uIGFzc2VydF9mYWxzZShhY3R1YWwsIGRlc2NyaXB0aW9uKQogICAgIHsKICAgICAgICAgYXNz
ZXJ0KGFjdHVhbCA9PT0gZmFsc2UsICJhc3NlcnRfZmFsc2UiLCBkZXNjcmlwdGlvbiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCBmYWxzZSBnb3QgJHthY3R1YWx9
Iiwge2FjdHVhbDphY3R1YWx9KTsKICAgICB9Ci0gICAgZXhwb3NlKGFzc2VydF9mYWxzZSwgImFz
c2VydF9mYWxzZSIpOworICAgIGV4cG9zZV9hc3NlcnQoYXNzZXJ0X2ZhbHNlLCAiYXNzZXJ0X2Zh
bHNlIik7CiAKICAgICBmdW5jdGlvbiBzYW1lX3ZhbHVlKHgsIHkpIHsKICAgICAgICAgaWYgKHkg
IT09IHkpIHsKQEAgLTEwMjYsNyArMTI0OCw3IEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24g
Zm9ybXMgWzNdLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ImV4cGVjdGVkICR7ZXhwZWN0ZWR9IGJ1dCBnb3QgJHthY3R1YWx9IiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtleHBlY3RlZDpleHBlY3RlZCwgYWN0dWFs
OmFjdHVhbH0pOwogICAgIH0KLSAgICBleHBvc2UoYXNzZXJ0X2VxdWFscywgImFzc2VydF9lcXVh
bHMiKTsKKyAgICBleHBvc2VfYXNzZXJ0KGFzc2VydF9lcXVhbHMsICJhc3NlcnRfZXF1YWxzIik7
CiAKICAgICBmdW5jdGlvbiBhc3NlcnRfbm90X2VxdWFscyhhY3R1YWwsIGV4cGVjdGVkLCBkZXNj
cmlwdGlvbikKICAgICB7CkBAIC0xMDM4LDcgKzEyNjAsNyBAQCBwb2xpY2llcyBhbmQgY29udHJp
YnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiZ290IGRpc2FsbG93ZWQgdmFsdWUgJHthY3R1YWx9IiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7YWN0dWFsOmFjdHVhbH0pOwogICAgIH0K
LSAgICBleHBvc2UoYXNzZXJ0X25vdF9lcXVhbHMsICJhc3NlcnRfbm90X2VxdWFscyIpOworICAg
IGV4cG9zZV9hc3NlcnQoYXNzZXJ0X25vdF9lcXVhbHMsICJhc3NlcnRfbm90X2VxdWFscyIpOwog
CiAgICAgZnVuY3Rpb24gYXNzZXJ0X2luX2FycmF5KGFjdHVhbCwgZXhwZWN0ZWQsIGRlc2NyaXB0
aW9uKQogICAgIHsKQEAgLTEwNDYsOCArMTI2OCwxMCBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0
aW9uIGZvcm1zIFszXS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgInZhbHVlICR7YWN0dWFsfSBub3QgaW4gYXJyYXkgJHtleHBlY3RlZH0iLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7YWN0dWFsOmFjdHVhbCwg
ZXhwZWN0ZWQ6ZXhwZWN0ZWR9KTsKICAgICB9Ci0gICAgZXhwb3NlKGFzc2VydF9pbl9hcnJheSwg
ImFzc2VydF9pbl9hcnJheSIpOworICAgIGV4cG9zZV9hc3NlcnQoYXNzZXJ0X2luX2FycmF5LCAi
YXNzZXJ0X2luX2FycmF5Iik7CiAKKyAgICAvLyBUaGlzIGZ1bmN0aW9uIHdhcyBkZXByZWNhdGVk
IGluIEp1bHkgb2YgMjAxNS4KKyAgICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0
Zm9ybS10ZXN0cy93cHQvaXNzdWVzLzIwMzMKICAgICBmdW5jdGlvbiBhc3NlcnRfb2JqZWN0X2Vx
dWFscyhhY3R1YWwsIGV4cGVjdGVkLCBkZXNjcmlwdGlvbikKICAgICB7CiAgICAgICAgICBhc3Nl
cnQodHlwZW9mIGFjdHVhbCA9PT0gIm9iamVjdCIgJiYgYWN0dWFsICE9PSBudWxsLCAiYXNzZXJ0
X29iamVjdF9lcXVhbHMiLCBkZXNjcmlwdGlvbiwKQEAgLTEwNzAsNyArMTI5NCw3IEBAIHBvbGlj
aWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAgICAgICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KHNhbWVfdmFsdWUoYWN0dWFsW3BdLCBleHBl
Y3RlZFtwXSksICJhc3NlcnRfb2JqZWN0X2VxdWFscyIsIGRlc2NyaXB0aW9uLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwcm9wZXJ0eSAk
e3B9IGV4cGVjdGVkICR7ZXhwZWN0ZWR9IGdvdCAke2FjdHVhbH0iLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtwOnAsIGV4cGVjdGVkOmV4
cGVjdGVkLCBhY3R1YWw6YWN0dWFsfSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAge3A6cCwgZXhwZWN0ZWQ6ZXhwZWN0ZWRbcF0sIGFjdHVh
bDphY3R1YWxbcF19KTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICBmb3IgKHAgaW4gZXhwZWN0ZWQpIHsKQEAgLTEwODIsMzIgKzEzMDYsNjQgQEAgcG9s
aWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAgICB9CiAgICAgICAgICBj
aGVja19lcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBbXSk7CiAgICAgfQotICAgIGV4cG9zZShhc3Nl
cnRfb2JqZWN0X2VxdWFscywgImFzc2VydF9vYmplY3RfZXF1YWxzIik7CisgICAgZXhwb3NlX2Fz
c2VydChhc3NlcnRfb2JqZWN0X2VxdWFscywgImFzc2VydF9vYmplY3RfZXF1YWxzIik7CiAKICAg
ICBmdW5jdGlvbiBhc3NlcnRfYXJyYXlfZXF1YWxzKGFjdHVhbCwgZXhwZWN0ZWQsIGRlc2NyaXB0
aW9uKQogICAgIHsKKyAgICAgICAgY29uc3QgbWF4X2FycmF5X2xlbmd0aCA9IDIwOworICAgICAg
ICBmdW5jdGlvbiBzaG9ydGVuX2FycmF5KGFyciwgb2Zmc2V0ID0gMCkgeworICAgICAgICAgICAg
Ly8gTWFrZSAiLCDigKYiIG9ubHkgc2hvdyB1cCB3aGVuIGl0IHdvdWxkIGxpa2VseSByZWR1Y2Ug
dGhlIGxlbmd0aCwgbm90IGFjY291bnRpbmcgZm9yCisgICAgICAgICAgICAvLyBmb250cy4KKyAg
ICAgICAgICAgIGlmIChhcnIubGVuZ3RoIDwgbWF4X2FycmF5X2xlbmd0aCArIDIpIHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gYXJyOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gQnkg
ZGVmYXVsdCB3ZSB3YW50IGhhbGYgdGhlIGVsZW1lbnRzIGFmdGVyIHRoZSBvZmZzZXQgYW5kIGhh
bGYgYmVmb3JlCisgICAgICAgICAgICAvLyBCdXQgaWYgdGhhdCB0YWtlcyB1cyBwYXN0IHRoZSBl
bmQgb2YgdGhlIGFycmF5LCB3ZSBoYXZlIG1vcmUgYmVmb3JlLCBhbmQKKyAgICAgICAgICAgIC8v
IGlmIGl0IHRha2VzIHVzIGJlZm9yZSB0aGUgc3RhcnQgd2UgaGF2ZSBtb3JlIGFmdGVyLgorICAg
ICAgICAgICAgY29uc3QgbGVuZ3RoX2FmdGVyX29mZnNldCA9IE1hdGguZmxvb3IobWF4X2FycmF5
X2xlbmd0aCAvIDIpOworICAgICAgICAgICAgbGV0IHVwcGVyX2JvdW5kID0gTWF0aC5taW4obGVu
Z3RoX2FmdGVyX29mZnNldCArIG9mZnNldCwgYXJyLmxlbmd0aCk7CisgICAgICAgICAgICBjb25z
dCBsb3dlcl9ib3VuZCA9IE1hdGgubWF4KHVwcGVyX2JvdW5kIC0gbWF4X2FycmF5X2xlbmd0aCwg
MCk7CisKKyAgICAgICAgICAgIGlmIChsb3dlcl9ib3VuZCA9PT0gMCkgeworICAgICAgICAgICAg
ICAgIHVwcGVyX2JvdW5kID0gbWF4X2FycmF5X2xlbmd0aDsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgY29uc3Qgb3V0cHV0ID0gYXJyLnNsaWNlKGxvd2VyX2JvdW5kLCB1cHBlcl9ib3Vu
ZCk7CisgICAgICAgICAgICBpZiAobG93ZXJfYm91bmQgPiAwKSB7CisgICAgICAgICAgICAgICAg
b3V0cHV0LmJlZ2luRWxsaXBzaXMgPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
aWYgKHVwcGVyX2JvdW5kIDwgYXJyLmxlbmd0aCkgeworICAgICAgICAgICAgICAgIG91dHB1dC5l
bmRFbGxpcHNpcyA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gb3V0
cHV0OworICAgICAgICB9CisKICAgICAgICAgYXNzZXJ0KHR5cGVvZiBhY3R1YWwgPT09ICJvYmpl
Y3QiICYmIGFjdHVhbCAhPT0gbnVsbCAmJiAibGVuZ3RoIiBpbiBhY3R1YWwsCiAgICAgICAgICAg
ICAgICAiYXNzZXJ0X2FycmF5X2VxdWFscyIsIGRlc2NyaXB0aW9uLAogICAgICAgICAgICAgICAg
InZhbHVlIGlzICR7YWN0dWFsfSwgZXhwZWN0ZWQgYXJyYXkiLAogICAgICAgICAgICAgICAge2Fj
dHVhbDphY3R1YWx9KTsKICAgICAgICAgYXNzZXJ0KGFjdHVhbC5sZW5ndGggPT09IGV4cGVjdGVk
Lmxlbmd0aCwKICAgICAgICAgICAgICAgICJhc3NlcnRfYXJyYXlfZXF1YWxzIiwgZGVzY3JpcHRp
b24sCi0gICAgICAgICAgICAgICAibGVuZ3RocyBkaWZmZXIsIGV4cGVjdGVkICR7ZXhwZWN0ZWR9
IGdvdCAke2FjdHVhbH0iLAotICAgICAgICAgICAgICAge2V4cGVjdGVkOmV4cGVjdGVkLmxlbmd0
aCwgYWN0dWFsOmFjdHVhbC5sZW5ndGh9KTsKKyAgICAgICAgICAgICAgICJsZW5ndGhzIGRpZmZl
ciwgZXhwZWN0ZWQgYXJyYXkgJHtleHBlY3RlZH0gbGVuZ3RoICR7ZXhwZWN0ZWRMZW5ndGh9LCBn
b3QgJHthY3R1YWx9IGxlbmd0aCAke2FjdHVhbExlbmd0aH0iLAorICAgICAgICAgICAgICAge2V4
cGVjdGVkOnNob3J0ZW5fYXJyYXkoZXhwZWN0ZWQsIGV4cGVjdGVkLmxlbmd0aCAtIDEpLCBleHBl
Y3RlZExlbmd0aDpleHBlY3RlZC5sZW5ndGgsCisgICAgICAgICAgICAgICAgYWN0dWFsOnNob3J0
ZW5fYXJyYXkoYWN0dWFsLCBhY3R1YWwubGVuZ3RoIC0gMSksIGFjdHVhbExlbmd0aDphY3R1YWwu
bGVuZ3RoCisgICAgICAgICAgICAgICB9KTsKIAogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGFjdHVhbC5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgYXNzZXJ0KGFjdHVhbC5oYXNPd25Q
cm9wZXJ0eShpKSA9PT0gZXhwZWN0ZWQuaGFzT3duUHJvcGVydHkoaSksCiAgICAgICAgICAgICAg
ICAgICAgImFzc2VydF9hcnJheV9lcXVhbHMiLCBkZXNjcmlwdGlvbiwKLSAgICAgICAgICAgICAg
ICAgICAicHJvcGVydHkgJHtpfSwgcHJvcGVydHkgZXhwZWN0ZWQgdG8gYmUgJHtleHBlY3RlZH0g
YnV0IHdhcyAke2FjdHVhbH0iLAorICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCBwcm9wZXJ0
eSAke2l9IHRvIGJlICR7ZXhwZWN0ZWR9IGJ1dCB3YXMgJHthY3R1YWx9IChleHBlY3RlZCBhcnJh
eSAke2FycmF5RXhwZWN0ZWR9IGdvdCAke2FycmF5QWN0dWFsfSkiLAogICAgICAgICAgICAgICAg
ICAgIHtpOmksIGV4cGVjdGVkOmV4cGVjdGVkLmhhc093blByb3BlcnR5KGkpID8gInByZXNlbnQi
IDogIm1pc3NpbmciLAotICAgICAgICAgICAgICAgICAgIGFjdHVhbDphY3R1YWwuaGFzT3duUHJv
cGVydHkoaSkgPyAicHJlc2VudCIgOiAibWlzc2luZyJ9KTsKKyAgICAgICAgICAgICAgICAgICAg
YWN0dWFsOmFjdHVhbC5oYXNPd25Qcm9wZXJ0eShpKSA/ICJwcmVzZW50IiA6ICJtaXNzaW5nIiwK
KyAgICAgICAgICAgICAgICAgICAgYXJyYXlFeHBlY3RlZDpzaG9ydGVuX2FycmF5KGV4cGVjdGVk
LCBpKSwgYXJyYXlBY3R1YWw6c2hvcnRlbl9hcnJheShhY3R1YWwsIGkpfSk7CiAgICAgICAgICAg
ICBhc3NlcnQoc2FtZV92YWx1ZShleHBlY3RlZFtpXSwgYWN0dWFsW2ldKSwKICAgICAgICAgICAg
ICAgICAgICAiYXNzZXJ0X2FycmF5X2VxdWFscyIsIGRlc2NyaXB0aW9uLAotICAgICAgICAgICAg
ICAgICAgICJwcm9wZXJ0eSAke2l9LCBleHBlY3RlZCAke2V4cGVjdGVkfSBidXQgZ290ICR7YWN0
dWFsfSIsCi0gICAgICAgICAgICAgICAgICAge2k6aSwgZXhwZWN0ZWQ6ZXhwZWN0ZWRbaV0sIGFj
dHVhbDphY3R1YWxbaV19KTsKKyAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgcHJvcGVydHkg
JHtpfSB0byBiZSAke2V4cGVjdGVkfSBidXQgZ290ICR7YWN0dWFsfSAoZXhwZWN0ZWQgYXJyYXkg
JHthcnJheUV4cGVjdGVkfSBnb3QgJHthcnJheUFjdHVhbH0pIiwKKyAgICAgICAgICAgICAgICAg
ICB7aTppLCBleHBlY3RlZDpleHBlY3RlZFtpXSwgYWN0dWFsOmFjdHVhbFtpXSwKKyAgICAgICAg
ICAgICAgICAgICAgYXJyYXlFeHBlY3RlZDpzaG9ydGVuX2FycmF5KGV4cGVjdGVkLCBpKSwgYXJy
YXlBY3R1YWw6c2hvcnRlbl9hcnJheShhY3R1YWwsIGkpfSk7CiAgICAgICAgIH0KICAgICB9Ci0g
ICAgZXhwb3NlKGFzc2VydF9hcnJheV9lcXVhbHMsICJhc3NlcnRfYXJyYXlfZXF1YWxzIik7Cisg
ICAgZXhwb3NlX2Fzc2VydChhc3NlcnRfYXJyYXlfZXF1YWxzLCAiYXNzZXJ0X2FycmF5X2VxdWFs
cyIpOwogCiAgICAgZnVuY3Rpb24gYXNzZXJ0X2FycmF5X2FwcHJveF9lcXVhbHMoYWN0dWFsLCBl
eHBlY3RlZCwgZXBzaWxvbiwgZGVzY3JpcHRpb24pCiAgICAgewpAQCAtMTEyNCw3ICsxMzgwLDcg
QEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAgICAgICAgICAg
ICAgImFzc2VydF9hcnJheV9hcHByb3hfZXF1YWxzIiwgZGVzY3JpcHRpb24sCiAgICAgICAgICAg
ICAgICAgICAgInByb3BlcnR5ICR7aX0sIHByb3BlcnR5IGV4cGVjdGVkIHRvIGJlICR7ZXhwZWN0
ZWR9IGJ1dCB3YXMgJHthY3R1YWx9IiwKICAgICAgICAgICAgICAgICAgICB7aTppLCBleHBlY3Rl
ZDpleHBlY3RlZC5oYXNPd25Qcm9wZXJ0eShpKSA/ICJwcmVzZW50IiA6ICJtaXNzaW5nIiwKLSAg
ICAgICAgICAgICAgICAgICBhY3R1YWw6YWN0dWFsLmhhc093blByb3BlcnR5KGkpID8gInByZXNl
bnQiIDogIm1pc3NpbmcifSk7CisgICAgICAgICAgICAgICAgICAgIGFjdHVhbDphY3R1YWwuaGFz
T3duUHJvcGVydHkoaSkgPyAicHJlc2VudCIgOiAibWlzc2luZyJ9KTsKICAgICAgICAgICAgIGFz
c2VydCh0eXBlb2YgYWN0dWFsW2ldID09PSAibnVtYmVyIiwKICAgICAgICAgICAgICAgICAgICAi
YXNzZXJ0X2FycmF5X2FwcHJveF9lcXVhbHMiLCBkZXNjcmlwdGlvbiwKICAgICAgICAgICAgICAg
ICAgICAicHJvcGVydHkgJHtpfSwgZXhwZWN0ZWQgYSBudW1iZXIgYnV0IGdvdCBhICR7dHlwZV9h
Y3R1YWx9IiwKQEAgLTExMzUsNyArMTM5MSw3IEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24g
Zm9ybXMgWzNdLgogICAgICAgICAgICAgICAgICAgIHtpOmksIGV4cGVjdGVkOmV4cGVjdGVkW2ld
LCBhY3R1YWw6YWN0dWFsW2ldLCBlcHNpbG9uOmVwc2lsb259KTsKICAgICAgICAgfQogICAgIH0K
LSAgICBleHBvc2UoYXNzZXJ0X2FycmF5X2FwcHJveF9lcXVhbHMsICJhc3NlcnRfYXJyYXlfYXBw
cm94X2VxdWFscyIpOworICAgIGV4cG9zZV9hc3NlcnQoYXNzZXJ0X2FycmF5X2FwcHJveF9lcXVh
bHMsICJhc3NlcnRfYXJyYXlfYXBwcm94X2VxdWFscyIpOwogCiAgICAgZnVuY3Rpb24gYXNzZXJ0
X2FwcHJveF9lcXVhbHMoYWN0dWFsLCBleHBlY3RlZCwgZXBzaWxvbiwgZGVzY3JpcHRpb24pCiAg
ICAgewpAQCAtMTE0NywxMiArMTQwMywxOCBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZv
cm1zIFszXS4KICAgICAgICAgICAgICAgICJleHBlY3RlZCBhIG51bWJlciBidXQgZ290IGEgJHt0
eXBlX2FjdHVhbH0iLAogICAgICAgICAgICAgICAge3R5cGVfYWN0dWFsOnR5cGVvZiBhY3R1YWx9
KTsKIAotICAgICAgICBhc3NlcnQoTWF0aC5hYnMoYWN0dWFsIC0gZXhwZWN0ZWQpIDw9IGVwc2ls
b24sCi0gICAgICAgICAgICAgICAiYXNzZXJ0X2FwcHJveF9lcXVhbHMiLCBkZXNjcmlwdGlvbiwK
LSAgICAgICAgICAgICAgICJleHBlY3RlZCAke2V4cGVjdGVkfSArLy0gJHtlcHNpbG9ufSBidXQg
Z290ICR7YWN0dWFsfSIsCi0gICAgICAgICAgICAgICB7ZXhwZWN0ZWQ6ZXhwZWN0ZWQsIGFjdHVh
bDphY3R1YWwsIGVwc2lsb246ZXBzaWxvbn0pOworICAgICAgICAvLyBUaGUgZXBzaWxvbiBtYXRo
IGJlbG93IGRvZXMgbm90IHBsYWNlIG5pY2Ugd2l0aCBOYU4gYW5kIEluZmluaXR5CisgICAgICAg
IC8vIEJ1dCBpbiB0aGlzIGNhc2UgSW5maW5pdHkgPSBJbmZpbml0eSBhbmQgTmFOID0gTmFOCisg
ICAgICAgIGlmIChpc0Zpbml0ZShhY3R1YWwpIHx8IGlzRmluaXRlKGV4cGVjdGVkKSkgeworICAg
ICAgICAgICAgYXNzZXJ0KE1hdGguYWJzKGFjdHVhbCAtIGV4cGVjdGVkKSA8PSBlcHNpbG9uLAor
ICAgICAgICAgICAgICAgICAgICJhc3NlcnRfYXBwcm94X2VxdWFscyIsIGRlc2NyaXB0aW9uLAor
ICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCAke2V4cGVjdGVkfSArLy0gJHtlcHNpbG9ufSBi
dXQgZ290ICR7YWN0dWFsfSIsCisgICAgICAgICAgICAgICAgICAge2V4cGVjdGVkOmV4cGVjdGVk
LCBhY3R1YWw6YWN0dWFsLCBlcHNpbG9uOmVwc2lsb259KTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIGFzc2VydF9lcXVhbHMoYWN0dWFsLCBleHBlY3RlZCk7CisgICAgICAgIH0KICAg
ICB9Ci0gICAgZXhwb3NlKGFzc2VydF9hcHByb3hfZXF1YWxzLCAiYXNzZXJ0X2FwcHJveF9lcXVh
bHMiKTsKKyAgICBleHBvc2VfYXNzZXJ0KGFzc2VydF9hcHByb3hfZXF1YWxzLCAiYXNzZXJ0X2Fw
cHJveF9lcXVhbHMiKTsKIAogICAgIGZ1bmN0aW9uIGFzc2VydF9sZXNzX3RoYW4oYWN0dWFsLCBl
eHBlY3RlZCwgZGVzY3JpcHRpb24pCiAgICAgewpAQCAtMTE2OSw3ICsxNDMxLDcgQEAgcG9saWNp
ZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAgICAgICAgICAiZXhwZWN0ZWQg
YSBudW1iZXIgbGVzcyB0aGFuICR7ZXhwZWN0ZWR9IGJ1dCBnb3QgJHthY3R1YWx9IiwKICAgICAg
ICAgICAgICAgIHtleHBlY3RlZDpleHBlY3RlZCwgYWN0dWFsOmFjdHVhbH0pOwogICAgIH0KLSAg
ICBleHBvc2UoYXNzZXJ0X2xlc3NfdGhhbiwgImFzc2VydF9sZXNzX3RoYW4iKTsKKyAgICBleHBv
c2VfYXNzZXJ0KGFzc2VydF9sZXNzX3RoYW4sICJhc3NlcnRfbGVzc190aGFuIik7CiAKICAgICBm
dW5jdGlvbiBhc3NlcnRfZ3JlYXRlcl90aGFuKGFjdHVhbCwgZXhwZWN0ZWQsIGRlc2NyaXB0aW9u
KQogICAgIHsKQEAgLTExODYsNyArMTQ0OCw3IEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24g
Zm9ybXMgWzNdLgogICAgICAgICAgICAgICAgImV4cGVjdGVkIGEgbnVtYmVyIGdyZWF0ZXIgdGhh
biAke2V4cGVjdGVkfSBidXQgZ290ICR7YWN0dWFsfSIsCiAgICAgICAgICAgICAgICB7ZXhwZWN0
ZWQ6ZXhwZWN0ZWQsIGFjdHVhbDphY3R1YWx9KTsKICAgICB9Ci0gICAgZXhwb3NlKGFzc2VydF9n
cmVhdGVyX3RoYW4sICJhc3NlcnRfZ3JlYXRlcl90aGFuIik7CisgICAgZXhwb3NlX2Fzc2VydChh
c3NlcnRfZ3JlYXRlcl90aGFuLCAiYXNzZXJ0X2dyZWF0ZXJfdGhhbiIpOwogCiAgICAgZnVuY3Rp
b24gYXNzZXJ0X2JldHdlZW5fZXhjbHVzaXZlKGFjdHVhbCwgbG93ZXIsIHVwcGVyLCBkZXNjcmlw
dGlvbikKICAgICB7CkBAIC0xMjA0LDcgKzE0NjYsNyBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0
aW9uIGZvcm1zIFszXS4KICAgICAgICAgICAgICAgICJhbmQgbGVzcyB0aGFuICR7dXBwZXJ9IGJ1
dCBnb3QgJHthY3R1YWx9IiwKICAgICAgICAgICAgICAgIHtsb3dlcjpsb3dlciwgdXBwZXI6dXBw
ZXIsIGFjdHVhbDphY3R1YWx9KTsKICAgICB9Ci0gICAgZXhwb3NlKGFzc2VydF9iZXR3ZWVuX2V4
Y2x1c2l2ZSwgImFzc2VydF9iZXR3ZWVuX2V4Y2x1c2l2ZSIpOworICAgIGV4cG9zZV9hc3NlcnQo
YXNzZXJ0X2JldHdlZW5fZXhjbHVzaXZlLCAiYXNzZXJ0X2JldHdlZW5fZXhjbHVzaXZlIik7CiAK
ICAgICBmdW5jdGlvbiBhc3NlcnRfbGVzc190aGFuX2VxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIGRl
c2NyaXB0aW9uKQogICAgIHsKQEAgLTEyMjEsNyArMTQ4Myw3IEBAIHBvbGljaWVzIGFuZCBjb250
cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAgICAgICAgICAgImV4cGVjdGVkIGEgbnVtYmVyIGxl
c3MgdGhhbiBvciBlcXVhbCB0byAke2V4cGVjdGVkfSBidXQgZ290ICR7YWN0dWFsfSIsCiAgICAg
ICAgICAgICAgICB7ZXhwZWN0ZWQ6ZXhwZWN0ZWQsIGFjdHVhbDphY3R1YWx9KTsKICAgICB9Ci0g
ICAgZXhwb3NlKGFzc2VydF9sZXNzX3RoYW5fZXF1YWwsICJhc3NlcnRfbGVzc190aGFuX2VxdWFs
Iik7CisgICAgZXhwb3NlX2Fzc2VydChhc3NlcnRfbGVzc190aGFuX2VxdWFsLCAiYXNzZXJ0X2xl
c3NfdGhhbl9lcXVhbCIpOwogCiAgICAgZnVuY3Rpb24gYXNzZXJ0X2dyZWF0ZXJfdGhhbl9lcXVh
bChhY3R1YWwsIGV4cGVjdGVkLCBkZXNjcmlwdGlvbikKICAgICB7CkBAIC0xMjM4LDcgKzE1MDAs
NyBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgICAgICAg
ICJleHBlY3RlZCBhIG51bWJlciBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJHtleHBlY3RlZH0g
YnV0IGdvdCAke2FjdHVhbH0iLAogICAgICAgICAgICAgICAge2V4cGVjdGVkOmV4cGVjdGVkLCBh
Y3R1YWw6YWN0dWFsfSk7CiAgICAgfQotICAgIGV4cG9zZShhc3NlcnRfZ3JlYXRlcl90aGFuX2Vx
dWFsLCAiYXNzZXJ0X2dyZWF0ZXJfdGhhbl9lcXVhbCIpOworICAgIGV4cG9zZV9hc3NlcnQoYXNz
ZXJ0X2dyZWF0ZXJfdGhhbl9lcXVhbCwgImFzc2VydF9ncmVhdGVyX3RoYW5fZXF1YWwiKTsKIAog
ICAgIGZ1bmN0aW9uIGFzc2VydF9iZXR3ZWVuX2luY2x1c2l2ZShhY3R1YWwsIGxvd2VyLCB1cHBl
ciwgZGVzY3JpcHRpb24pCiAgICAgewpAQCAtMTI1Niw3ICsxNTE4LDcgQEAgcG9saWNpZXMgYW5k
IGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAgICAgICAgICAiYW5kIGxlc3MgdGhhbiBv
ciBlcXVhbCB0byAke3VwcGVyfSBidXQgZ290ICR7YWN0dWFsfSIsCiAgICAgICAgICAgICAgICB7
bG93ZXI6bG93ZXIsIHVwcGVyOnVwcGVyLCBhY3R1YWw6YWN0dWFsfSk7CiAgICAgfQotICAgIGV4
cG9zZShhc3NlcnRfYmV0d2Vlbl9pbmNsdXNpdmUsICJhc3NlcnRfYmV0d2Vlbl9pbmNsdXNpdmUi
KTsKKyAgICBleHBvc2VfYXNzZXJ0KGFzc2VydF9iZXR3ZWVuX2luY2x1c2l2ZSwgImFzc2VydF9i
ZXR3ZWVuX2luY2x1c2l2ZSIpOwogCiAgICAgZnVuY3Rpb24gYXNzZXJ0X3JlZ2V4cF9tYXRjaChh
Y3R1YWwsIGV4cGVjdGVkLCBkZXNjcmlwdGlvbikgewogICAgICAgICAvKgpAQCAtMTI2NywzMyAr
MTUyOSwzOCBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAg
ICAgICAgICJleHBlY3RlZCAke2V4cGVjdGVkfSBidXQgZ290ICR7YWN0dWFsfSIsCiAgICAgICAg
ICAgICAgICB7ZXhwZWN0ZWQ6ZXhwZWN0ZWQsIGFjdHVhbDphY3R1YWx9KTsKICAgICB9Ci0gICAg
ZXhwb3NlKGFzc2VydF9yZWdleHBfbWF0Y2gsICJhc3NlcnRfcmVnZXhwX21hdGNoIik7CisgICAg
ZXhwb3NlX2Fzc2VydChhc3NlcnRfcmVnZXhwX21hdGNoLCAiYXNzZXJ0X3JlZ2V4cF9tYXRjaCIp
OwogCiAgICAgZnVuY3Rpb24gYXNzZXJ0X2NsYXNzX3N0cmluZyhvYmplY3QsIGNsYXNzX3N0cmlu
ZywgZGVzY3JpcHRpb24pIHsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyh7fS50b1N0cmluZy5jYWxs
KG9iamVjdCksICJbb2JqZWN0ICIgKyBjbGFzc19zdHJpbmcgKyAiXSIsCi0gICAgICAgICAgICAg
ICAgICAgICAgZGVzY3JpcHRpb24pOworICAgICAgICB2YXIgYWN0dWFsID0ge30udG9TdHJpbmcu
Y2FsbChvYmplY3QpOworICAgICAgICB2YXIgZXhwZWN0ZWQgPSAiW29iamVjdCAiICsgY2xhc3Nf
c3RyaW5nICsgIl0iOworICAgICAgICBhc3NlcnQoc2FtZV92YWx1ZShhY3R1YWwsIGV4cGVjdGVk
KSwgImFzc2VydF9jbGFzc19zdHJpbmciLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCAke2V4cGVjdGVkfSBidXQgZ290
ICR7YWN0dWFsfSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB7ZXhwZWN0ZWQ6ZXhwZWN0ZWQsIGFjdHVhbDphY3R1YWx9KTsKICAgICB9Ci0gICAgZXhwb3Nl
KGFzc2VydF9jbGFzc19zdHJpbmcsICJhc3NlcnRfY2xhc3Nfc3RyaW5nIik7Ci0KKyAgICBleHBv
c2VfYXNzZXJ0KGFzc2VydF9jbGFzc19zdHJpbmcsICJhc3NlcnRfY2xhc3Nfc3RyaW5nIik7CiAK
ICAgICBmdW5jdGlvbiBhc3NlcnRfb3duX3Byb3BlcnR5KG9iamVjdCwgcHJvcGVydHlfbmFtZSwg
ZGVzY3JpcHRpb24pIHsKICAgICAgICAgYXNzZXJ0KG9iamVjdC5oYXNPd25Qcm9wZXJ0eShwcm9w
ZXJ0eV9uYW1lKSwKICAgICAgICAgICAgICAgICJhc3NlcnRfb3duX3Byb3BlcnR5IiwgZGVzY3Jp
cHRpb24sCiAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgcHJvcGVydHkgJHtwfSBtaXNzaW5nIiwg
e3A6cHJvcGVydHlfbmFtZX0pOwogICAgIH0KLSAgICBleHBvc2UoYXNzZXJ0X293bl9wcm9wZXJ0
eSwgImFzc2VydF9vd25fcHJvcGVydHkiKTsKKyAgICBleHBvc2VfYXNzZXJ0KGFzc2VydF9vd25f
cHJvcGVydHksICJhc3NlcnRfb3duX3Byb3BlcnR5Iik7CiAKICAgICBmdW5jdGlvbiBhc3NlcnRf
bm90X293bl9wcm9wZXJ0eShvYmplY3QsIHByb3BlcnR5X25hbWUsIGRlc2NyaXB0aW9uKSB7CiAg
ICAgICAgIGFzc2VydCghb2JqZWN0Lmhhc093blByb3BlcnR5KHByb3BlcnR5X25hbWUpLAogICAg
ICAgICAgICAgICAgImFzc2VydF9ub3Rfb3duX3Byb3BlcnR5IiwgZGVzY3JpcHRpb24sCiAgICAg
ICAgICAgICAgICAidW5leHBlY3RlZCBwcm9wZXJ0eSAke3B9IGlzIGZvdW5kIG9uIG9iamVjdCIs
IHtwOnByb3BlcnR5X25hbWV9KTsKICAgICB9Ci0gICAgZXhwb3NlKGFzc2VydF9ub3Rfb3duX3By
b3BlcnR5LCAiYXNzZXJ0X25vdF9vd25fcHJvcGVydHkiKTsKKyAgICBleHBvc2VfYXNzZXJ0KGFz
c2VydF9ub3Rfb3duX3Byb3BlcnR5LCAiYXNzZXJ0X25vdF9vd25fcHJvcGVydHkiKTsKIAogICAg
IGZ1bmN0aW9uIF9hc3NlcnRfaW5oZXJpdHMobmFtZSkgewogICAgICAgICByZXR1cm4gZnVuY3Rp
b24gKG9iamVjdCwgcHJvcGVydHlfbmFtZSwgZGVzY3JpcHRpb24pCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIGFzc2VydCh0eXBlb2Ygb2JqZWN0ID09PSAib2JqZWN0IiB8fCB0eXBlb2Ygb2JqZWN0
ID09PSAiZnVuY3Rpb24iLAorICAgICAgICAgICAgYXNzZXJ0KCh0eXBlb2Ygb2JqZWN0ID09PSAi
b2JqZWN0IiAmJiBvYmplY3QgIT09IG51bGwpIHx8CisgICAgICAgICAgICAgICAgICAgdHlwZW9m
IG9iamVjdCA9PT0gImZ1bmN0aW9uIiB8fAorICAgICAgICAgICAgICAgICAgIC8vIE9yIGhhcyBb
W0lzSFRNTEREQV1dIHNsb3QKKyAgICAgICAgICAgICAgICAgICBTdHJpbmcob2JqZWN0KSA9PT0g
IltvYmplY3QgSFRNTEFsbENvbGxlY3Rpb25dIiwKICAgICAgICAgICAgICAgICAgICBuYW1lLCBk
ZXNjcmlwdGlvbiwKICAgICAgICAgICAgICAgICAgICAicHJvdmlkZWQgdmFsdWUgaXMgbm90IGFu
IG9iamVjdCIpOwogCkBAIC0xMzEyLDggKzE1NzksOCBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0
aW9uIGZvcm1zIFszXS4KICAgICAgICAgICAgICAgICAgICB7cDpwcm9wZXJ0eV9uYW1lfSk7CiAg
ICAgICAgIH07CiAgICAgfQotICAgIGV4cG9zZShfYXNzZXJ0X2luaGVyaXRzKCJhc3NlcnRfaW5o
ZXJpdHMiKSwgImFzc2VydF9pbmhlcml0cyIpOwotICAgIGV4cG9zZShfYXNzZXJ0X2luaGVyaXRz
KCJhc3NlcnRfaWRsX2F0dHJpYnV0ZSIpLCAiYXNzZXJ0X2lkbF9hdHRyaWJ1dGUiKTsKKyAgICBl
eHBvc2VfYXNzZXJ0KF9hc3NlcnRfaW5oZXJpdHMoImFzc2VydF9pbmhlcml0cyIpLCAiYXNzZXJ0
X2luaGVyaXRzIik7CisgICAgZXhwb3NlX2Fzc2VydChfYXNzZXJ0X2luaGVyaXRzKCJhc3NlcnRf
aWRsX2F0dHJpYnV0ZSIpLCAiYXNzZXJ0X2lkbF9hdHRyaWJ1dGUiKTsKIAogICAgIGZ1bmN0aW9u
IGFzc2VydF9yZWFkb25seShvYmplY3QsIHByb3BlcnR5X25hbWUsIGRlc2NyaXB0aW9uKQogICAg
IHsKQEAgLTEzMzAsNTAgKzE1OTcsMTU2IEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9y
bXMgWzNdLgogICAgICAgICAgICAgIG9iamVjdFtwcm9wZXJ0eV9uYW1lXSA9IGluaXRpYWxfdmFs
dWU7CiAgICAgICAgICB9CiAgICAgfQotICAgIGV4cG9zZShhc3NlcnRfcmVhZG9ubHksICJhc3Nl
cnRfcmVhZG9ubHkiKTsKKyAgICBleHBvc2VfYXNzZXJ0KGFzc2VydF9yZWFkb25seSwgImFzc2Vy
dF9yZWFkb25seSIpOwogCiAgICAgLyoqCi0gICAgICogQXNzZXJ0IGFuIEV4Y2VwdGlvbiB3aXRo
IHRoZSBleHBlY3RlZCBjb2RlIGlzIHRocm93bi4KKyAgICAgKiBBc3NlcnQgYSBKUyBFcnJvciB3
aXRoIHRoZSBleHBlY3RlZCBjb25zdHJ1Y3RvciBpcyB0aHJvd24uCiAgICAgICoKLSAgICAgKiBA
cGFyYW0ge29iamVjdHxudW1iZXJ8c3RyaW5nfSBjb2RlIFRoZSBleHBlY3RlZCBleGNlcHRpb24g
Y29kZS4KKyAgICAgKiBAcGFyYW0ge29iamVjdH0gY29uc3RydWN0b3IgVGhlIGV4cGVjdGVkIGV4
Y2VwdGlvbiBjb25zdHJ1Y3Rvci4KICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIEZ1bmN0
aW9uIHdoaWNoIHNob3VsZCB0aHJvdy4KICAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzY3JpcHRp
b24gRXJyb3IgZGVzY3JpcHRpb24gZm9yIHRoZSBjYXNlIHRoYXQgdGhlIGVycm9yIGlzIG5vdCB0
aHJvd24uCiAgICAgICovCi0gICAgZnVuY3Rpb24gYXNzZXJ0X3Rocm93cyhjb2RlLCBmdW5jLCBk
ZXNjcmlwdGlvbikKKyAgICBmdW5jdGlvbiBhc3NlcnRfdGhyb3dzX2pzKGNvbnN0cnVjdG9yLCBm
dW5jLCBkZXNjcmlwdGlvbikKKyAgICB7CisgICAgICAgIGFzc2VydF90aHJvd3NfanNfaW1wbChj
b25zdHJ1Y3RvciwgZnVuYywgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiYXNzZXJ0X3Rocm93c19qcyIpOworICAgIH0KKyAgICBleHBvc2VfYXNzZXJ0KGFzc2Vy
dF90aHJvd3NfanMsICJhc3NlcnRfdGhyb3dzX2pzIik7CisKKyAgICAvKioKKyAgICAgKiBMaWtl
IGFzc2VydF90aHJvd3NfanMgYnV0IGFsbG93cyBzcGVjaWZ5aW5nIHRoZSBhc3NlcnRpb24gdHlw
ZQorICAgICAqIChhc3NlcnRfdGhyb3dzX2pzIG9yIHByb21pc2VfcmVqZWN0c19qcywgaW4gcHJh
Y3RpY2UpLgorICAgICAqLworICAgIGZ1bmN0aW9uIGFzc2VydF90aHJvd3NfanNfaW1wbChjb25z
dHJ1Y3RvciwgZnVuYywgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFzc2VydGlvbl90eXBlKQogICAgIHsKICAgICAgICAgdHJ5IHsKICAgICAgICAgICAg
IGZ1bmMuY2FsbCh0aGlzKTsKLSAgICAgICAgICAgIGFzc2VydChmYWxzZSwgImFzc2VydF90aHJv
d3MiLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgIGFzc2VydChmYWxzZSwgYXNzZXJ0aW9uX3R5
cGUsIGRlc2NyaXB0aW9uLAogICAgICAgICAgICAgICAgICAgICIke2Z1bmN9IGRpZCBub3QgdGhy
b3ciLCB7ZnVuYzpmdW5jfSk7CiAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgIGlm
IChlIGluc3RhbmNlb2YgQXNzZXJ0aW9uRXJyb3IpIHsKICAgICAgICAgICAgICAgICB0aHJvdyBl
OwogICAgICAgICAgICAgfQogCisgICAgICAgICAgICAvLyBCYXNpYyBzYW5pdHktY2hlY2tzIG9u
IHRoZSB0aHJvd24gZXhjZXB0aW9uLgogICAgICAgICAgICAgYXNzZXJ0KHR5cGVvZiBlID09PSAi
b2JqZWN0IiwKLSAgICAgICAgICAgICAgICAgICAiYXNzZXJ0X3Rocm93cyIsIGRlc2NyaXB0aW9u
LAorICAgICAgICAgICAgICAgICAgIGFzc2VydGlvbl90eXBlLCBkZXNjcmlwdGlvbiwKICAgICAg
ICAgICAgICAgICAgICAiJHtmdW5jfSB0aHJldyAke2V9IHdpdGggdHlwZSAke3R5cGV9LCBub3Qg
YW4gb2JqZWN0IiwKICAgICAgICAgICAgICAgICAgICB7ZnVuYzpmdW5jLCBlOmUsIHR5cGU6dHlw
ZW9mIGV9KTsKIAogICAgICAgICAgICAgYXNzZXJ0KGUgIT09IG51bGwsCi0gICAgICAgICAgICAg
ICAgICAgImFzc2VydF90aHJvd3MiLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICAgICBh
c3NlcnRpb25fdHlwZSwgZGVzY3JpcHRpb24sCiAgICAgICAgICAgICAgICAgICAgIiR7ZnVuY30g
dGhyZXcgbnVsbCwgbm90IGFuIG9iamVjdCIsCiAgICAgICAgICAgICAgICAgICAge2Z1bmM6ZnVu
Y30pOwogCi0gICAgICAgICAgICBpZiAoY29kZSA9PT0gbnVsbCkgewotICAgICAgICAgICAgICAg
IHRocm93IG5ldyBBc3NlcnRpb25FcnJvcignVGVzdCBidWc6IG5lZWQgdG8gcGFzcyBleGNlcHRp
b24gdG8gYXNzZXJ0X3Rocm93cygpJyk7CisgICAgICAgICAgICAvLyBCYXNpYyBzYW5pdHktY2hl
Y2sgb24gdGhlIHBhc3NlZC1pbiBjb25zdHJ1Y3RvcgorICAgICAgICAgICAgYXNzZXJ0KHR5cGVv
ZiBjb25zdHJ1Y3RvciA9PSAiZnVuY3Rpb24iLAorICAgICAgICAgICAgICAgICAgIGFzc2VydGlv
bl90eXBlLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAiJHtjb25zdHJ1Y3Rvcn0g
aXMgbm90IGEgY29uc3RydWN0b3IiLAorICAgICAgICAgICAgICAgICAgIHtjb25zdHJ1Y3Rvcjpj
b25zdHJ1Y3Rvcn0pOworICAgICAgICAgICAgdmFyIG9iaiA9IGNvbnN0cnVjdG9yOworICAgICAg
ICAgICAgd2hpbGUgKG9iaikgeworICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygb2JqID09PSAi
ZnVuY3Rpb24iICYmCisgICAgICAgICAgICAgICAgICAgIG9iai5uYW1lID09PSAiRXJyb3IiKSB7
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBvYmogPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqKTsKICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIGlmICh0eXBlb2YgY29kZSA9PT0gIm9iamVjdCIpIHsKLSAgICAgICAgICAg
ICAgICBhc3NlcnQoIm5hbWUiIGluIGUgJiYgZS5uYW1lID09IGNvZGUubmFtZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgImFzc2VydF90aHJvd3MiLCBkZXNjcmlwdGlvbiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIiR7ZnVuY30gdGhyZXcgJHthY3R1YWx9ICgke2FjdHVhbF9uYW1lfSkgZXhw
ZWN0ZWQgJHtleHBlY3RlZH0gKCR7ZXhwZWN0ZWRfbmFtZX0pIiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHtmdW5jOmZ1bmMsIGFjdHVhbDplLCBhY3R1YWxfbmFtZTplLm5h
bWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQ6Y29kZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9uYW1lOmNvZGUu
bmFtZX0pOwotICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGFzc2VydChvYmog
IT0gbnVsbCwKKyAgICAgICAgICAgICAgICAgICBhc3NlcnRpb25fdHlwZSwgZGVzY3JpcHRpb24s
CisgICAgICAgICAgICAgICAgICAgIiR7Y29uc3RydWN0b3J9IGlzIG5vdCBhbiBFcnJvciBzdWJ0
eXBlIiwKKyAgICAgICAgICAgICAgICAgICB7Y29uc3RydWN0b3I6Y29uc3RydWN0b3J9KTsKKwor
ICAgICAgICAgICAgLy8gQW5kIGNoZWNraW5nIHRoYXQgb3VyIGV4Y2VwdGlvbiBpcyByZWFzb25h
YmxlCisgICAgICAgICAgICBhc3NlcnQoZS5jb25zdHJ1Y3RvciA9PT0gY29uc3RydWN0b3IgJiYK
KyAgICAgICAgICAgICAgICAgICBlLm5hbWUgPT09IGNvbnN0cnVjdG9yLm5hbWUsCisgICAgICAg
ICAgICAgICAgICAgYXNzZXJ0aW9uX3R5cGUsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAg
ICAgICIke2Z1bmN9IHRocmV3ICR7YWN0dWFsfSAoJHthY3R1YWxfbmFtZX0pIGV4cGVjdGVkIGlu
c3RhbmNlIG9mICR7ZXhwZWN0ZWR9ICgke2V4cGVjdGVkX25hbWV9KSIsCisgICAgICAgICAgICAg
ICAgICAge2Z1bmM6ZnVuYywgYWN0dWFsOmUsIGFjdHVhbF9uYW1lOmUubmFtZSwKKyAgICAgICAg
ICAgICAgICAgICAgZXhwZWN0ZWQ6Y29uc3RydWN0b3IsCisgICAgICAgICAgICAgICAgICAgIGV4
cGVjdGVkX25hbWU6Y29uc3RydWN0b3IubmFtZX0pOworICAgICAgICB9CisgICAgfQorCisgICAg
LyoqCisgICAgICogQXNzZXJ0IGEgRE9NRXhjZXB0aW9uIHdpdGggdGhlIGV4cGVjdGVkIHR5cGUg
aXMgdGhyb3duLgorICAgICAqCisgICAgICogQHBhcmFtIHtudW1iZXJ8c3RyaW5nfSB0eXBlIFRo
ZSBleHBlY3RlZCBleGNlcHRpb24gbmFtZSBvciBjb2RlLiAgU2VlIHRoZQorICAgICAqICAgICAg
ICB0YWJsZSBvZiBuYW1lcyBhbmQgY29kZXMgYXQKKyAgICAgKiAgICAgICAgaHR0cHM6Ly9oZXlj
YW0uZ2l0aHViLmlvL3dlYmlkbC8jZGZuLWVycm9yLW5hbWVzLXRhYmxlCisgICAgICogICAgICAg
IElmIGEgbnVtYmVyIGlzIHBhc3NlZCBpdCBzaG91bGQgYmUgb25lIG9mIHRoZSBudW1lcmljIGNv
ZGUgdmFsdWVzCisgICAgICogICAgICAgIGluIHRoYXQgdGFibGUgKGUuZy4gMywgNCwgZXRjKS4g
IElmIGEgc3RyaW5nIGlzIHBhc3NlZCBpdCBjYW4KKyAgICAgKiAgICAgICAgZWl0aGVyIGJlIGFu
IGV4Y2VwdGlvbiBuYW1lIChlLmcuICJIaWVyYXJjaHlSZXF1ZXN0RXJyb3IiLAorICAgICAqICAg
ICAgICAiV3JvbmdEb2N1bWVudEVycm9yIikgb3IgdGhlIG5hbWUgb2YgdGhlIGNvcnJlc3BvbmRp
bmcgZXJyb3IgY29kZQorICAgICAqICAgICAgICAoZS5nLiAiSElFUkFSQ0hZX1JFUVVFU1RfRVJS
IiwgIldST05HX0RPQ1VNRU5UX0VSUiIpLgorICAgICAqCisgICAgICogRm9yIHRoZSByZW1haW5p
bmcgYXJndW1lbnRzLCB0aGVyZSBhcmUgdHdvIHdheXMgb2YgY2FsbGluZworICAgICAqIHByb21p
c2VfcmVqZWN0c19kb206CisgICAgICoKKyAgICAgKiAxKSBJZiB0aGUgRE9NRXhjZXB0aW9uIGlz
IGV4cGVjdGVkIHRvIGNvbWUgZnJvbSB0aGUgY3VycmVudCBnbG9iYWwsIHRoZQorICAgICAqIHNl
Y29uZCBhcmd1bWVudCBzaG91bGQgYmUgdGhlIGZ1bmN0aW9uIGV4cGVjdGVkIHRvIHRocm93IGFu
ZCBhIHRoaXJkLAorICAgICAqIG9wdGlvbmFsLCBhcmd1bWVudCBpcyB0aGUgYXNzZXJ0aW9uIGRl
c2NyaXB0aW9uLgorICAgICAqCisgICAgICogMikgSWYgdGhlIERPTUV4Y2VwdGlvbiBpcyBleHBl
Y3RlZCB0byBjb21lIGZyb20gc29tZSBvdGhlciBnbG9iYWwsIHRoZQorICAgICAqIHNlY29uZCBh
cmd1bWVudCBzaG91bGQgYmUgdGhlIERPTUV4Y2VwdGlvbiBjb25zdHJ1Y3RvciBmcm9tIHRoYXQg
Z2xvYmFsLAorICAgICAqIHRoZSB0aGlyZCBhcmd1bWVudCB0aGUgZnVuY3Rpb24gZXhwZWN0ZWQg
dG8gdGhyb3csIGFuZCB0aGUgZm91cnRoLCBvcHRpb25hbCwKKyAgICAgKiBhcmd1bWVudCB0aGUg
YXNzZXJ0aW9uIGRlc2NyaXB0aW9uLgorICAgICAqLworICAgIGZ1bmN0aW9uIGFzc2VydF90aHJv
d3NfZG9tKHR5cGUsIGZ1bmNPckNvbnN0cnVjdG9yLCBkZXNjcmlwdGlvbk9yRnVuYywgbWF5YmVE
ZXNjcmlwdGlvbikKKyAgICB7CisgICAgICAgIGxldCBjb25zdHJ1Y3RvciwgZnVuYywgZGVzY3Jp
cHRpb247CisgICAgICAgIGlmIChmdW5jT3JDb25zdHJ1Y3Rvci5uYW1lID09PSAiRE9NRXhjZXB0
aW9uIikgeworICAgICAgICAgICAgY29uc3RydWN0b3IgPSBmdW5jT3JDb25zdHJ1Y3RvcjsKKyAg
ICAgICAgICAgIGZ1bmMgPSBkZXNjcmlwdGlvbk9yRnVuYzsKKyAgICAgICAgICAgIGRlc2NyaXB0
aW9uID0gbWF5YmVEZXNjcmlwdGlvbjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGNv
bnN0cnVjdG9yID0gc2VsZi5ET01FeGNlcHRpb247CisgICAgICAgICAgICBmdW5jID0gZnVuY09y
Q29uc3RydWN0b3I7CisgICAgICAgICAgICBkZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uT3JGdW5j
OworICAgICAgICAgICAgYXNzZXJ0KG1heWJlRGVzY3JpcHRpb24gPT09IHVuZGVmaW5lZCwKKyAg
ICAgICAgICAgICAgICAgICAiVG9vIG1hbnkgYXJncyBwYXNlZCB0byBuby1jb25zdHJ1Y3RvciB2
ZXJzaW9uIG9mIGFzc2VydF90aHJvd3NfZG9tIik7CisgICAgICAgIH0KKyAgICAgICAgYXNzZXJ0
X3Rocm93c19kb21faW1wbCh0eXBlLCBmdW5jLCBkZXNjcmlwdGlvbiwgImFzc2VydF90aHJvd3Nf
ZG9tIiwgY29uc3RydWN0b3IpCisgICAgfQorICAgIGV4cG9zZV9hc3NlcnQoYXNzZXJ0X3Rocm93
c19kb20sICJhc3NlcnRfdGhyb3dzX2RvbSIpOworCisgICAgLyoqCisgICAgICogU2ltaWxhciB0
byBhc3NlcnRfdGhyb3dzX2RvbSBidXQgYWxsb3dzIHNwZWNpZnlpbmcgdGhlIGFzc2VydGlvbiB0
eXBlCisgICAgICogKGFzc2VydF90aHJvd3NfZG9tIG9yIHByb21pc2VfcmVqZWN0c19kb20sIGlu
IHByYWN0aWNlKS4gIFRoZQorICAgICAqICJjb25zdHJ1Y3RvciIgYXJndW1lbnQgbXVzdCBiZSB0
aGUgRE9NRXhjZXB0aW9uIGNvbnN0cnVjdG9yIGZyb20gdGhlCisgICAgICogZ2xvYmFsIHdlIGV4
cGVjdCB0aGUgZXhjZXB0aW9uIHRvIGNvbWUgZnJvbS4KKyAgICAgKi8KKyAgICBmdW5jdGlvbiBh
c3NlcnRfdGhyb3dzX2RvbV9pbXBsKHR5cGUsIGZ1bmMsIGRlc2NyaXB0aW9uLCBhc3NlcnRpb25f
dHlwZSwgY29uc3RydWN0b3IpCisgICAgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgZnVu
Yy5jYWxsKHRoaXMpOworICAgICAgICAgICAgYXNzZXJ0KGZhbHNlLCBhc3NlcnRpb25fdHlwZSwg
ZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgIiR7ZnVuY30gZGlkIG5vdCB0aHJvdyIs
IHtmdW5jOmZ1bmN9KTsKKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgaWYgKGUg
aW5zdGFuY2VvZiBBc3NlcnRpb25FcnJvcikgeworICAgICAgICAgICAgICAgIHRocm93IGU7CiAg
ICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHZhciBjb2RlX25hbWVfbWFwID0geworICAgICAg
ICAgICAgLy8gQmFzaWMgc2FuaXR5LWNoZWNrcyBvbiB0aGUgdGhyb3duIGV4Y2VwdGlvbi4KKyAg
ICAgICAgICAgIGFzc2VydCh0eXBlb2YgZSA9PT0gIm9iamVjdCIsCisgICAgICAgICAgICAgICAg
ICAgYXNzZXJ0aW9uX3R5cGUsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAgICAgICIke2Z1
bmN9IHRocmV3ICR7ZX0gd2l0aCB0eXBlICR7dHlwZX0sIG5vdCBhbiBvYmplY3QiLAorICAgICAg
ICAgICAgICAgICAgIHtmdW5jOmZ1bmMsIGU6ZSwgdHlwZTp0eXBlb2YgZX0pOworCisgICAgICAg
ICAgICBhc3NlcnQoZSAhPT0gbnVsbCwKKyAgICAgICAgICAgICAgICAgICBhc3NlcnRpb25fdHlw
ZSwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgIiR7ZnVuY30gdGhyZXcgbnVsbCwg
bm90IGFuIG9iamVjdCIsCisgICAgICAgICAgICAgICAgICAge2Z1bmM6ZnVuY30pOworCisgICAg
ICAgICAgICAvLyBTYW5pdHktY2hlY2sgb3VyIHR5cGUKKyAgICAgICAgICAgIGFzc2VydCh0eXBl
b2YgdHlwZSA9PSAibnVtYmVyIiB8fAorICAgICAgICAgICAgICAgICAgIHR5cGVvZiB0eXBlID09
ICJzdHJpbmciLAorICAgICAgICAgICAgICAgICAgIGFzc2VydGlvbl90eXBlLCBkZXNjcmlwdGlv
biwKKyAgICAgICAgICAgICAgICAgICAiJHt0eXBlfSBpcyBub3QgYSBudW1iZXIgb3Igc3RyaW5n
IiwKKyAgICAgICAgICAgICAgICAgICB7dHlwZTp0eXBlfSk7CisKKyAgICAgICAgICAgIHZhciBj
b2RlbmFtZV9uYW1lX21hcCA9IHsKICAgICAgICAgICAgICAgICBJTkRFWF9TSVpFX0VSUjogJ0lu
ZGV4U2l6ZUVycm9yJywKICAgICAgICAgICAgICAgICBISUVSQVJDSFlfUkVRVUVTVF9FUlI6ICdI
aWVyYXJjaHlSZXF1ZXN0RXJyb3InLAogICAgICAgICAgICAgICAgIFdST05HX0RPQ1VNRU5UX0VS
UjogJ1dyb25nRG9jdW1lbnRFcnJvcicsCkBAIC0xMzk4LDggKzE3NzEsNiBAQCBwb2xpY2llcyBh
bmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgICAgICAgICBEQVRBX0NMT05FX0VS
UjogJ0RhdGFDbG9uZUVycm9yJwogICAgICAgICAgICAgfTsKIAotICAgICAgICAgICAgdmFyIG5h
bWUgPSBjb2RlIGluIGNvZGVfbmFtZV9tYXAgPyBjb2RlX25hbWVfbWFwW2NvZGVdIDogY29kZTsK
LQogICAgICAgICAgICAgdmFyIG5hbWVfY29kZV9tYXAgPSB7CiAgICAgICAgICAgICAgICAgSW5k
ZXhTaXplRXJyb3I6IDEsCiAgICAgICAgICAgICAgICAgSGllcmFyY2h5UmVxdWVzdEVycm9yOiAz
LApAQCAtMTQ0MywxOSArMTgxNCwyMyBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1z
IFszXS4KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHZh
ciByZXF1aXJlZF9wcm9wcyA9IHsgY29kZTogY29kZSB9OworICAgICAgICAgICAgdmFyIHJlcXVp
cmVkX3Byb3BzID0ge307CisgICAgICAgICAgICB2YXIgbmFtZTsKIAotICAgICAgICAgICAgaWYg
KHR5cGVvZiBjb2RlID09PSAibnVtYmVyIikgewotICAgICAgICAgICAgICAgIGlmIChjb2RlID09
PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25FcnJvcignVGVz
dCBidWc6IGFtYmlndW91cyBET01FeGNlcHRpb24gY29kZSAwIHBhc3NlZCB0byBhc3NlcnRfdGhy
b3dzKCknKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCEoY29kZSBpbiBjb2RlX25hbWVf
bWFwKSkgewotICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRXJyb3IoJ1Rl
c3QgYnVnOiB1bnJlY29nbml6ZWQgRE9NRXhjZXB0aW9uIGNvZGUgIicgKyBjb2RlICsgJyIgcGFz
c2VkIHRvIGFzc2VydF90aHJvd3MoKScpOworICAgICAgICAgICAgaWYgKHR5cGVvZiB0eXBlID09
PSAibnVtYmVyIikgeworICAgICAgICAgICAgICAgIGlmICh0eXBlID09PSAwKSB7CisgICAgICAg
ICAgICAgICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25FcnJvcignVGVzdCBidWc6IGFtYmlndW91
cyBET01FeGNlcHRpb24gY29kZSAwIHBhc3NlZCB0byBhc3NlcnRfdGhyb3dzX2RvbSgpJyk7Cisg
ICAgICAgICAgICAgICAgfSBlbHNlIGlmICghKHR5cGUgaW4gY29kZV9uYW1lX21hcCkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbkVycm9yKCdUZXN0IGJ1ZzogdW5y
ZWNvZ25pemVkIERPTUV4Y2VwdGlvbiBjb2RlICInICsgdHlwZSArICciIHBhc3NlZCB0byBhc3Nl
cnRfdGhyb3dzX2RvbSgpJyk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIG5h
bWUgPSBjb2RlX25hbWVfbWFwW2NvZGVdOwotICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2Yg
Y29kZSA9PT0gInN0cmluZyIpIHsKKyAgICAgICAgICAgICAgICBuYW1lID0gY29kZV9uYW1lX21h
cFt0eXBlXTsKKyAgICAgICAgICAgICAgICByZXF1aXJlZF9wcm9wcy5jb2RlID0gdHlwZTsKKyAg
ICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHR5cGUgPT09ICJzdHJpbmciKSB7CisgICAgICAg
ICAgICAgICAgbmFtZSA9IHR5cGUgaW4gY29kZW5hbWVfbmFtZV9tYXAgPyBjb2RlbmFtZV9uYW1l
X21hcFt0eXBlXSA6IHR5cGU7CiAgICAgICAgICAgICAgICAgaWYgKCEobmFtZSBpbiBuYW1lX2Nv
ZGVfbWFwKSkgewotICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRXJyb3Io
J1Rlc3QgYnVnOiB1bnJlY29nbml6ZWQgRE9NRXhjZXB0aW9uIGNvZGUgIicgKyBjb2RlICsgJyIg
cGFzc2VkIHRvIGFzc2VydF90aHJvd3MoKScpOworICAgICAgICAgICAgICAgICAgICB0aHJvdyBu
ZXcgQXNzZXJ0aW9uRXJyb3IoJ1Rlc3QgYnVnOiB1bnJlY29nbml6ZWQgRE9NRXhjZXB0aW9uIGNv
ZGUgbmFtZSBvciBuYW1lICInICsgdHlwZSArICciIHBhc3NlZCB0byBhc3NlcnRfdGhyb3dzX2Rv
bSgpJyk7CiAgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgcmVxdWlyZWRfcHJv
cHMuY29kZSA9IG5hbWVfY29kZV9tYXBbbmFtZV07CiAgICAgICAgICAgICB9CiAKQEAgLTE0Njcs
MjYgKzE4NDIsNjUgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAg
ICAgICAgICAgICAgcmVxdWlyZWRfcHJvcHMubmFtZSA9IG5hbWU7CiAgICAgICAgICAgICB9CiAK
LSAgICAgICAgICAgIC8vV2UnZCBsaWtlIHRvIHRlc3QgdGhhdCBlIGluc3RhbmNlb2YgdGhlIGFw
cHJvcHJpYXRlIGludGVyZmFjZSwKLSAgICAgICAgICAgIC8vYnV0IHdlIGNhbid0LCBiZWNhdXNl
IHdlIGRvbid0IGtub3cgd2hhdCB3aW5kb3cgaXQgd2FzIGNyZWF0ZWQKLSAgICAgICAgICAgIC8v
aW4uICBJdCBtaWdodCBiZSBhbiBpbnN0YW5jZW9mIHRoZSBhcHByb3ByaWF0ZSBpbnRlcmZhY2Ug
b24gc29tZQotICAgICAgICAgICAgLy91bmtub3duIG90aGVyIHdpbmRvdy4gIFRPRE86IFdvcmsg
YXJvdW5kIHRoaXMgc29tZWhvdz8KLQogICAgICAgICAgICAgZm9yICh2YXIgcHJvcCBpbiByZXF1
aXJlZF9wcm9wcykgewogICAgICAgICAgICAgICAgIGFzc2VydChwcm9wIGluIGUgJiYgZVtwcm9w
XSA9PSByZXF1aXJlZF9wcm9wc1twcm9wXSwKLSAgICAgICAgICAgICAgICAgICAgICAgImFzc2Vy
dF90aHJvd3MiLCBkZXNjcmlwdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgIiR7ZnVuY30g
dGhyZXcgJHtlfSB0aGF0IGlzIG5vdCBhIERPTUV4Y2VwdGlvbiAiICsgY29kZSArICI6IHByb3Bl
cnR5ICR7cHJvcH0gaXMgZXF1YWwgdG8gJHthY3R1YWx9LCBleHBlY3RlZCAke2V4cGVjdGVkfSIs
CisgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydGlvbl90eXBlLCBkZXNjcmlwdGlvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIiR7ZnVuY30gdGhyZXcgJHtlfSB0aGF0IGlzIG5vdCBhIERP
TUV4Y2VwdGlvbiAiICsgdHlwZSArICI6IHByb3BlcnR5ICR7cHJvcH0gaXMgZXF1YWwgdG8gJHth
Y3R1YWx9LCBleHBlY3RlZCAke2V4cGVjdGVkfSIsCiAgICAgICAgICAgICAgICAgICAgICAgIHtm
dW5jOmZ1bmMsIGU6ZSwgcHJvcDpwcm9wLCBhY3R1YWw6ZVtwcm9wXSwgZXhwZWN0ZWQ6cmVxdWly
ZWRfcHJvcHNbcHJvcF19KTsKICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gQ2hlY2sg
dGhhdCB0aGUgZXhjZXB0aW9uIGlzIGZyb20gdGhlIHJpZ2h0IGdsb2JhbC4gIFRoaXMgY2hlY2sg
aXMgbGFzdAorICAgICAgICAgICAgLy8gc28gbW9yZSBzcGVjaWZpYywgYW5kIG1vcmUgaW5mb3Jt
YXRpdmUsIGNoZWNrcyBvbiB0aGUgcHJvcGVydGllcyBjYW4KKyAgICAgICAgICAgIC8vIGhhcHBl
biBpbiBjYXNlIGEgdG90YWxseSBpbmNvcnJlY3QgZXhjZXB0aW9uIGlzIHRocm93bi4KKyAgICAg
ICAgICAgIGFzc2VydChlLmNvbnN0cnVjdG9yID09PSBjb25zdHJ1Y3RvciwKKyAgICAgICAgICAg
ICAgICAgICBhc3NlcnRpb25fdHlwZSwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAg
IiR7ZnVuY30gdGhyZXcgYW4gZXhjZXB0aW9uIGZyb20gdGhlIHdyb25nIGdsb2JhbCIsCisgICAg
ICAgICAgICAgICAgICAge2Z1bmN9KTsKKworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisg
ICAgICogQXNzZXJ0IHRoZSBwcm92aWRlZCB2YWx1ZSBpcyB0aHJvd24uCisgICAgICoKKyAgICAg
KiBAcGFyYW0ge3ZhbHVlfSBleGNlcHRpb24gVGhlIGV4cGVjdGVkIGV4Y2VwdGlvbi4KKyAgICAg
KiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIEZ1bmN0aW9uIHdoaWNoIHNob3VsZCB0aHJvdy4KKyAg
ICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzY3JpcHRpb24gRXJyb3IgZGVzY3JpcHRpb24gZm9yIHRo
ZSBjYXNlIHRoYXQgdGhlIGVycm9yIGlzIG5vdCB0aHJvd24uCisgICAgICovCisgICAgZnVuY3Rp
b24gYXNzZXJ0X3Rocm93c19leGFjdGx5KGV4Y2VwdGlvbiwgZnVuYywgZGVzY3JpcHRpb24pCisg
ICAgeworICAgICAgICBhc3NlcnRfdGhyb3dzX2V4YWN0bHlfaW1wbChleGNlcHRpb24sIGZ1bmMs
IGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXNzZXJ0
X3Rocm93c19leGFjdGx5Iik7CisgICAgfQorICAgIGV4cG9zZV9hc3NlcnQoYXNzZXJ0X3Rocm93
c19leGFjdGx5LCAiYXNzZXJ0X3Rocm93c19leGFjdGx5Iik7CisKKyAgICAvKioKKyAgICAgKiBM
aWtlIGFzc2VydF90aHJvd3NfZXhhY3RseSBidXQgYWxsb3dzIHNwZWNpZnlpbmcgdGhlIGFzc2Vy
dGlvbiB0eXBlCisgICAgICogKGFzc2VydF90aHJvd3NfZXhhY3RseSBvciBwcm9taXNlX3JlamVj
dHNfZXhhY3RseSwgaW4gcHJhY3RpY2UpLgorICAgICAqLworICAgIGZ1bmN0aW9uIGFzc2VydF90
aHJvd3NfZXhhY3RseV9pbXBsKGV4Y2VwdGlvbiwgZnVuYywgZGVzY3JpcHRpb24sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0aW9uX3R5cGUpCisgICAgewor
ICAgICAgICB0cnkgeworICAgICAgICAgICAgZnVuYy5jYWxsKHRoaXMpOworICAgICAgICAgICAg
YXNzZXJ0KGZhbHNlLCBhc3NlcnRpb25fdHlwZSwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAg
ICAgICAgIiR7ZnVuY30gZGlkIG5vdCB0aHJvdyIsIHtmdW5jOmZ1bmN9KTsKKyAgICAgICAgfSBj
YXRjaCAoZSkgeworICAgICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBBc3NlcnRpb25FcnJvcikg
eworICAgICAgICAgICAgICAgIHRocm93IGU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGFzc2VydChzYW1lX3ZhbHVlKGUsIGV4Y2VwdGlvbiksIGFzc2VydGlvbl90eXBlLCBkZXNjcmlw
dGlvbiwKKyAgICAgICAgICAgICAgICAgICAiJHtmdW5jfSB0aHJldyAke2V9IGJ1dCB3ZSBleHBl
Y3RlZCBpdCB0byB0aHJvdyAke2V4Y2VwdGlvbn0iLAorICAgICAgICAgICAgICAgICAgIHtmdW5j
OmZ1bmMsIGU6ZSwgZXhjZXB0aW9uOmV4Y2VwdGlvbn0pOwogICAgICAgICB9CiAgICAgfQotICAg
IGV4cG9zZShhc3NlcnRfdGhyb3dzLCAiYXNzZXJ0X3Rocm93cyIpOwogCiAgICAgZnVuY3Rpb24g
YXNzZXJ0X3VucmVhY2hlZChkZXNjcmlwdGlvbikgewogICAgICAgICAgYXNzZXJ0KGZhbHNlLCAi
YXNzZXJ0X3VucmVhY2hlZCIsIGRlc2NyaXB0aW9uLAogICAgICAgICAgICAgICAgICJSZWFjaGVk
IHVucmVhY2hhYmxlIGNvZGUiKTsKICAgICB9Ci0gICAgZXhwb3NlKGFzc2VydF91bnJlYWNoZWQs
ICJhc3NlcnRfdW5yZWFjaGVkIik7CisgICAgZXhwb3NlX2Fzc2VydChhc3NlcnRfdW5yZWFjaGVk
LCAiYXNzZXJ0X3VucmVhY2hlZCIpOwogCiAgICAgZnVuY3Rpb24gYXNzZXJ0X2FueShhc3NlcnRf
ZnVuYywgYWN0dWFsLCBleHBlY3RlZF9hcnJheSkKICAgICB7CkBAIC0xNTA3LDggKzE5MjEsNDgg
QEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAgICAgICB0aHJv
dyBuZXcgQXNzZXJ0aW9uRXJyb3IoZXJyb3JzLmpvaW4oIlxuXG4iKSk7CiAgICAgICAgIH0KICAg
ICB9CisgICAgLy8gRklYTUU6IGFzc2VydF9hbnkgY2Fubm90IHVzZSBleHBvc2VfYXNzZXJ0LCBi
ZWNhdXNlIGFzc2VydF93cmFwcGVyIGRvZXMKKyAgICAvLyBub3Qgc3VwcG9ydCBuZXN0ZWQgYXNz
ZXJ0IGNhbGxzIChlLmcuIHRvIGFzc2VydF9mdW5jKS4gV2UgbmVlZCB0bworICAgIC8vIHN1cHBv
cnQgYnlwYXNzaW5nIGFzc2VydF93cmFwcGVyIGZvciB0aGUgaW5uZXIgYXNzZXJ0cyBoZXJlLgog
ICAgIGV4cG9zZShhc3NlcnRfYW55LCAiYXNzZXJ0X2FueSIpOwogCisgICAgLyoqCisgICAgICog
QXNzZXJ0IHRoYXQgYSBmZWF0dXJlIGlzIGltcGxlbWVudGVkLCBiYXNlZCBvbiBhICd0cnV0aHkn
IGNvbmRpdGlvbi4KKyAgICAgKgorICAgICAqIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIHVzZWQg
dG8gZWFybHktZXhpdCBmcm9tIHRlc3RzIGluIHdoaWNoIHRoZXJlIGlzCisgICAgICogbm8gcG9p
bnQgY29udGludWluZyB3aXRob3V0IHN1cHBvcnQgZm9yIGEgbm9uLW9wdGlvbmFsIHNwZWMgb3Ig
c3BlYworICAgICAqIGZlYXR1cmUuIEZvciBleGFtcGxlOgorICAgICAqCisgICAgICogICAgIGFz
c2VydF9pbXBsZW1lbnRzKHdpbmRvdy5Gb28sICdGb28gaXMgbm90IHN1cHBvcnRlZCcpOworICAg
ICAqCisgICAgICogQHBhcmFtIHtvYmplY3R9IGNvbmRpdGlvbiBUaGUgdHJ1dGh5IHZhbHVlIHRv
IHRlc3QKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzY3JpcHRpb24gRXJyb3IgZGVzY3JpcHRp
b24gZm9yIHRoZSBjYXNlIHRoYXQgdGhlIGNvbmRpdGlvbiBpcyBub3QgdHJ1dGh5LgorICAgICAq
LworICAgIGZ1bmN0aW9uIGFzc2VydF9pbXBsZW1lbnRzKGNvbmRpdGlvbiwgZGVzY3JpcHRpb24p
IHsKKyAgICAgICAgYXNzZXJ0KCEhY29uZGl0aW9uLCAiYXNzZXJ0X2ltcGxlbWVudHMiLCBkZXNj
cmlwdGlvbik7CisgICAgfQorICAgIGV4cG9zZV9hc3NlcnQoYXNzZXJ0X2ltcGxlbWVudHMsICJh
c3NlcnRfaW1wbGVtZW50cyIpCisKKyAgICAvKioKKyAgICAgKiBBc3NlcnQgdGhhdCBhbiBvcHRp
b25hbCBmZWF0dXJlIGlzIGltcGxlbWVudGVkLCBiYXNlZCBvbiBhICd0cnV0aHknIGNvbmRpdGlv
bi4KKyAgICAgKgorICAgICAqIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIHVzZWQgdG8gZWFybHkt
ZXhpdCBmcm9tIHRlc3RzIGluIHdoaWNoIHRoZXJlIGlzCisgICAgICogbm8gcG9pbnQgY29udGlu
dWluZyB3aXRob3V0IHN1cHBvcnQgZm9yIGFuIGV4cGxpY2l0bHkgb3B0aW9uYWwgc3BlYyBvcgor
ICAgICAqIHNwZWMgZmVhdHVyZS4gRm9yIGV4YW1wbGU6CisgICAgICoKKyAgICAgKiAgICAgYXNz
ZXJ0X2ltcGxlbWVudHNfb3B0aW9uYWwodmlkZW8uY2FuUGxheVR5cGUoInZpZGVvL3dlYm0iKSwK
KyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndlYm0gdmlkZW8gcGxheWJh
Y2sgbm90IHN1cHBvcnRlZCIpOworICAgICAqCisgICAgICogQHBhcmFtIHtvYmplY3R9IGNvbmRp
dGlvbiBUaGUgdHJ1dGh5IHZhbHVlIHRvIHRlc3QKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGVz
Y3JpcHRpb24gRXJyb3IgZGVzY3JpcHRpb24gZm9yIHRoZSBjYXNlIHRoYXQgdGhlIGNvbmRpdGlv
biBpcyBub3QgdHJ1dGh5LgorICAgICAqLworICAgIGZ1bmN0aW9uIGFzc2VydF9pbXBsZW1lbnRz
X29wdGlvbmFsKGNvbmRpdGlvbiwgZGVzY3JpcHRpb24pIHsKKyAgICAgICAgaWYgKCFjb25kaXRp
b24pIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBPcHRpb25hbEZlYXR1cmVVbnN1cHBvcnRlZEVy
cm9yKGRlc2NyaXB0aW9uKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBleHBvc2VfYXNzZXJ0KGFz
c2VydF9pbXBsZW1lbnRzX29wdGlvbmFsLCAiYXNzZXJ0X2ltcGxlbWVudHNfb3B0aW9uYWwiKQor
CiAgICAgZnVuY3Rpb24gVGVzdChuYW1lLCBwcm9wZXJ0aWVzKQogICAgIHsKICAgICAgICAgaWYg
KHRlc3RzLmZpbGVfaXNfdGVzdCAmJiB0ZXN0cy50ZXN0cy5sZW5ndGgpIHsKQEAgLTE1MjMsNyAr
MTk3Nyw3IEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAgICB0
aGlzLnRpbWVvdXRfaWQgPSBudWxsOwogICAgICAgICB0aGlzLmluZGV4ID0gbnVsbDsKIAotICAg
ICAgICB0aGlzLnByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzOworICAgICAgICB0aGlzLnByb3BlcnRp
ZXMgPSBwcm9wZXJ0aWVzIHx8IHt9OwogICAgICAgICB0aGlzLnRpbWVvdXRfbGVuZ3RoID0gc2V0
dGluZ3MudGVzdF90aW1lb3V0OwogICAgICAgICBpZiAodGhpcy50aW1lb3V0X2xlbmd0aCAhPT0g
bnVsbCkgewogICAgICAgICAgICAgdGhpcy50aW1lb3V0X2xlbmd0aCAqPSB0ZXN0cy50aW1lb3V0
X211bHRpcGxpZXI7CkBAIC0xNTUzLDcgKzIwMDcsOCBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0
aW9uIGZvcm1zIFszXS4KICAgICAgICAgUEFTUzowLAogICAgICAgICBGQUlMOjEsCiAgICAgICAg
IFRJTUVPVVQ6MiwKLSAgICAgICAgTk9UUlVOOjMKKyAgICAgICAgTk9UUlVOOjMsCisgICAgICAg
IFBSRUNPTkRJVElPTl9GQUlMRUQ6NAogICAgIH07CiAKICAgICBUZXN0LnByb3RvdHlwZSA9IG1l
cmdlKHt9LCBUZXN0LnN0YXR1c2VzKTsKQEAgLTE1NjYsNiArMjAyMSwxOCBAQCBwb2xpY2llcyBh
bmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgQ09NUExFVEU6NAogICAgIH07CiAK
KyAgICBUZXN0LnByb3RvdHlwZS5zdGF0dXNfZm9ybWF0cyA9IHsKKyAgICAgICAgMDogIlBhc3Mi
LAorICAgICAgICAxOiAiRmFpbCIsCisgICAgICAgIDI6ICJUaW1lb3V0IiwKKyAgICAgICAgMzog
Ik5vdCBSdW4iLAorICAgICAgICA0OiAiT3B0aW9uYWwgRmVhdHVyZSBVbnN1cHBvcnRlZCIsCisg
ICAgfQorCisgICAgVGVzdC5wcm90b3R5cGUuZm9ybWF0X3N0YXR1cyA9IGZ1bmN0aW9uKCkgewor
ICAgICAgICByZXR1cm4gdGhpcy5zdGF0dXNfZm9ybWF0c1t0aGlzLnN0YXR1c107CisgICAgfQor
CiAgICAgVGVzdC5wcm90b3R5cGUuc3RydWN0dXJlZF9jbG9uZSA9IGZ1bmN0aW9uKCkKICAgICB7
CiAgICAgICAgIGlmICghdGhpcy5fc3RydWN0dXJlZF9jbG9uZSkgewpAQCAtMTU5MCwxMSArMjA1
NywxNiBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgaWYg
KHRoaXMucGhhc2UgPiB0aGlzLnBoYXNlcy5TVEFSVEVEKSB7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KKworICAgICAgICBpZiAoc2V0dGluZ3MuZGVidWcgJiYgdGhpcy5waGFzZSAh
PT0gdGhpcy5waGFzZXMuU1RBUlRFRCkgeworICAgICAgICAgICAgY29uc29sZS5sb2coIlRFU1Qg
U1RBUlQiLCB0aGlzLm5hbWUpOworICAgICAgICB9CiAgICAgICAgIHRoaXMucGhhc2UgPSB0aGlz
LnBoYXNlcy5TVEFSVEVEOwogICAgICAgICAvL0lmIHdlIGRvbid0IGdldCBhIHJlc3VsdCBiZWZv
cmUgdGhlIGhhcm5lc3MgdGltZXMgb3V0IHRoYXQgd2lsbCBiZSBhIHRlc3QgdGltZW91dAogICAg
ICAgICB0aGlzLnNldF9zdGF0dXModGhpcy5USU1FT1VULCAiVGVzdCB0aW1lZCBvdXQiKTsKIAog
ICAgICAgICB0ZXN0cy5zdGFydGVkID0gdHJ1ZTsKKyAgICAgICAgdGVzdHMuY3VycmVudF90ZXN0
ID0gdGhpczsKICAgICAgICAgdGVzdHMubm90aWZ5X3Rlc3Rfc3RhdGUodGhpcyk7CiAKICAgICAg
ICAgaWYgKHRoaXMudGltZW91dF9pZCA9PT0gbnVsbCkgewpAQCAtMTYwNywxOCArMjA3OSwyNSBA
QCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgICAgIHRoaXNf
b2JqID0gdGhpczsKICAgICAgICAgfQogCisgICAgICAgIGlmIChzZXR0aW5ncy5kZWJ1Zykgewor
ICAgICAgICAgICAgY29uc29sZS5kZWJ1ZygiVEVTVCBTVEVQIiwgdGhpcy5uYW1lKTsKKyAgICAg
ICAgfQorCiAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlz
X29iaiwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAyKSk7CiAgICAgICAg
IH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgIGlmICh0aGlzLnBoYXNlID49IHRoaXMucGhhc2Vz
LkhBU19SRVNVTFQpIHsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB2YXIgc3RhdHVzID0gZSBpbnN0YW5jZW9mIE9wdGlvbmFsRmVhdHVyZVVuc3Vw
cG9ydGVkRXJyb3IgPyB0aGlzLlBSRUNPTkRJVElPTl9GQUlMRUQgOiB0aGlzLkZBSUw7CiAgICAg
ICAgICAgICB2YXIgbWVzc2FnZSA9IFN0cmluZygodHlwZW9mIGUgPT09ICJvYmplY3QiICYmIGUg
IT09IG51bGwpID8gZS5tZXNzYWdlIDogZSk7CiAgICAgICAgICAgICB2YXIgc3RhY2sgPSBlLnN0
YWNrID8gZS5zdGFjayA6IG51bGw7CiAKLSAgICAgICAgICAgIHRoaXMuc2V0X3N0YXR1cyh0aGlz
LkZBSUwsIG1lc3NhZ2UsIHN0YWNrKTsKKyAgICAgICAgICAgIHRoaXMuc2V0X3N0YXR1cyhzdGF0
dXMsIG1lc3NhZ2UsIHN0YWNrKTsKICAgICAgICAgICAgIHRoaXMucGhhc2UgPSB0aGlzLnBoYXNl
cy5IQVNfUkVTVUxUOwogICAgICAgICAgICAgdGhpcy5kb25lKCk7CisgICAgICAgIH0gZmluYWxs
eSB7CisgICAgICAgICAgICB0aGlzLmN1cnJlbnRfdGVzdCA9IG51bGw7CiAgICAgICAgIH0KICAg
ICB9OwogCkBAIC0xNjY4LDYgKzIxNDcsMTA1IEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24g
Zm9ybXMgWzNdLgogICAgICAgICByZXR1cm4gc2V0VGltZW91dCh0aGlzLnN0ZXBfZnVuYyhmdW5j
dGlvbigpIHsKICAgICAgICAgICAgIHJldHVybiBmLmFwcGx5KHRlc3RfdGhpcywgYXJncyk7CiAg
ICAgICAgIH0pLCB0aW1lb3V0ICogdGVzdHMudGltZW91dF9tdWx0aXBsaWVyKTsKKyAgICB9Owor
CisgICAgVGVzdC5wcm90b3R5cGUuc3RlcF93YWl0X2Z1bmMgPSBmdW5jdGlvbihjb25kLCBmdW5j
LCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRpbWVvdXQ9MzAwMCwgaW50ZXJ2YWw9MTAwKSB7CisgICAgICAgIC8qKgorICAgICAgICAg
KiBQb2xsIGZvciBhIGZ1bmN0aW9uIHRvIHJldHVybiB0cnVlLCBhbmQgY2FsbCBhIGNhbGxiYWNr
CisgICAgICAgICAqIGZ1bmN0aW9uIG9uY2UgaXQgZG9lcywgb3IgYXNzZXJ0IGlmIGEgdGltZW91
dCBpcworICAgICAgICAgKiByZWFjaGVkLiBUaGlzIGlzIHByZWZlcnJlZCBvdmVyIGEgc2ltcGxl
IHN0ZXBfdGltZW91dAorICAgICAgICAgKiB3aGVuZXZlciBwb3NzaWJsZSBzaW5jZSBpdCBhbGxv
d3MgdGhlIHRpbWVvdXQgdG8gYmUgbG9uZ2VyCisgICAgICAgICAqIHRvIHJlZHVjZSBpbnRlcm1p
dHRlbnRzIHdpdGhvdXQgY29tcHJvbWlzaW5nIHRlc3QgZXhlY3V0aW9uCisgICAgICAgICAqIHNw
ZWVkIHdoZW4gdGhlIGNvbmRpdGlvbiBpcyBxdWlja2x5IG1ldC4KKyAgICAgICAgICoKKyAgICAg
ICAgICogQHBhcmFtIHtGdW5jdGlvbn0gY29uZCBBIGZ1bmN0aW9uIHRha2luZyBubyBhcmd1bWVu
dHMgYW5kCisgICAgICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuaW5nIGEgYm9v
bGVhbi4gVGhlIGNhbGxiYWNrIGlzIGNhbGxlZAorICAgICAgICAgKiAgICAgICAgICAgICAgICAg
ICAgICAgIHdoZW4gdGhpcyBmdW5jdGlvbiByZXR1cm5zIHRydWUuCisgICAgICAgICAqIEBwYXJh
bSB7RnVuY3Rpb259IGZ1bmMgQSBmdW5jdGlvbiB0YWtpbmcgbm8gYXJndW1lbnRzIHRvIGNhbGwg
b25jZQorICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBjb25kaXRpb24gaXMg
bWV0LgorICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzY3JpcHRpb24gRXJyb3IgbWVzc2Fn
ZSB0byBhZGQgdG8gYXNzZXJ0IGluIGNhc2Ugb2YKKyAgICAgICAgICogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZhaWx1cmUuCisgICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0aW1lb3V0
IFRpbWVvdXQgaW4gbXMuIFRoaXMgaXMgbXVsdGlwbGllZCBieSB0aGUgZ2xvYmFsCisgICAgICAg
ICAqICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXRfbXVsdGlwbGllcgorICAgICAgICAg
KiBAcGFyYW0ge251bWJlcn0gaW50ZXJ2YWwgUG9sbGluZyBpbnRlcnZhbCBpbiBtcworICAgICAg
ICAgKgorICAgICAgICAgKiovCisKKyAgICAgICAgdmFyIHRpbWVvdXRfZnVsbCA9IHRpbWVvdXQg
KiB0ZXN0cy50aW1lb3V0X211bHRpcGxpZXI7CisgICAgICAgIHZhciByZW1haW5pbmcgPSBNYXRo
LmNlaWwodGltZW91dF9mdWxsIC8gaW50ZXJ2YWwpOworICAgICAgICB2YXIgdGVzdF90aGlzID0g
dGhpczsKKworICAgICAgICB2YXIgd2FpdF9mb3JfaW5uZXIgPSB0ZXN0X3RoaXMuc3RlcF9mdW5j
KCgpID0+IHsKKyAgICAgICAgICAgIGlmIChjb25kKCkpIHsKKyAgICAgICAgICAgICAgICBmdW5j
KCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmKHJlbWFpbmluZyA9
PT0gMCkgeworICAgICAgICAgICAgICAgICAgICBhc3NlcnQoZmFsc2UsICJzdGVwX3dhaXRfZnVu
YyIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRpbWVkIG91dCB3
YWl0aW5nIG9uIGNvbmRpdGlvbiIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICByZW1haW5pbmctLTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KHdhaXRfZm9yX2lubmVy
LCBpbnRlcnZhbCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworCisgICAgICAgIHdhaXRf
Zm9yX2lubmVyKCk7CisgICAgfTsKKworICAgIFRlc3QucHJvdG90eXBlLnN0ZXBfd2FpdF9mdW5j
X2RvbmUgPSBmdW5jdGlvbihjb25kLCBmdW5jLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dD0zMDAwLCBpbnRlcnZh
bD0xMDApIHsKKyAgICAgICAgLyoqCisgICAgICAgICAqIFBvbGwgZm9yIGEgZnVuY3Rpb24gdG8g
cmV0dXJuIHRydWUsIGFuZCBpbnZva2UgYSBjYWxsYmFjaworICAgICAgICAgKiBmb2xsb3dlZCBi
eSB0aGlzLmRvbmUoKSBvbmNlIGl0IGRvZXMsIG9yIGFzc2VydCBpZiBhIHRpbWVvdXQKKyAgICAg
ICAgICogaXMgcmVhY2hlZC4gVGhpcyBpcyBwcmVmZXJyZWQgb3ZlciBhIHNpbXBsZSBzdGVwX3Rp
bWVvdXQKKyAgICAgICAgICogd2hlbmV2ZXIgcG9zc2libGUgc2luY2UgaXQgYWxsb3dzIHRoZSB0
aW1lb3V0IHRvIGJlIGxvbmdlcgorICAgICAgICAgKiB0byByZWR1Y2UgaW50ZXJtaXR0ZW50cyB3
aXRob3V0IGNvbXByb21pc2luZyB0ZXN0IGV4ZWN1dGlvbiBzcGVlZAorICAgICAgICAgKiB3aGVu
IHRoZSBjb25kaXRpb24gaXMgcXVpY2tseSBtZXQuCisgICAgICAgICAqCisgICAgICAgICAqIEBw
YXJhbSB7RnVuY3Rpb259IGNvbmQgQSBmdW5jdGlvbiB0YWtpbmcgbm8gYXJndW1lbnRzIGFuZAor
ICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybmluZyBhIGJvb2xlYW4uIFRo
ZSBjYWxsYmFjayBpcyBjYWxsZWQKKyAgICAgICAgICogICAgICAgICAgICAgICAgICAgICAgICB3
aGVuIHRoaXMgZnVuY3Rpb24gcmV0dXJucyB0cnVlLgorICAgICAgICAgKiBAcGFyYW0ge0Z1bmN0
aW9ufSBmdW5jIEEgZnVuY3Rpb24gdGFraW5nIG5vIGFyZ3VtZW50cyB0byBjYWxsIG9uY2UKKyAg
ICAgICAgICogICAgICAgICAgICAgICAgICAgICAgICB0aGUgY29uZGl0aW9uIGlzIG1ldC4KKyAg
ICAgICAgICogQHBhcmFtIHtzdHJpbmd9IGRlc2NyaXB0aW9uIEVycm9yIG1lc3NhZ2UgdG8gYWRk
IHRvIGFzc2VydCBpbiBjYXNlIG9mCisgICAgICAgICAqICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmYWlsdXJlLgorICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gdGltZW91dCBUaW1lb3V0
IGluIG1zLiBUaGlzIGlzIG11bHRpcGxpZWQgYnkgdGhlIGdsb2JhbAorICAgICAgICAgKiAgICAg
ICAgICAgICAgICAgICAgICAgICB0aW1lb3V0X211bHRpcGxpZXIKKyAgICAgICAgICogQHBhcmFt
IHtudW1iZXJ9IGludGVydmFsIFBvbGxpbmcgaW50ZXJ2YWwgaW4gbXMKKyAgICAgICAgICoKKyAg
ICAgICAgICoqLworCisgICAgICAgICB0aGlzLnN0ZXBfd2FpdF9mdW5jKGNvbmQsICgpID0+IHsK
KyAgICAgICAgICAgIGlmIChmdW5jKSB7CisgICAgICAgICAgICAgICAgZnVuYygpOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgdGhpcy5kb25lKCk7CisgICAgICAgICB9LCBkZXNjcmlwdGlv
biwgdGltZW91dCwgaW50ZXJ2YWwpOworICAgIH0KKworICAgIFRlc3QucHJvdG90eXBlLnN0ZXBf
d2FpdCA9IGZ1bmN0aW9uKGNvbmQsIGRlc2NyaXB0aW9uLCB0aW1lb3V0PTMwMDAsIGludGVydmFs
PTEwMCkgeworICAgICAgICAvKioKKyAgICAgICAgICogUG9sbCBmb3IgYSBmdW5jdGlvbiB0byBy
ZXR1cm4gdHJ1ZSwgYW5kIHJlc29sdmUgYSBwcm9taXNlCisgICAgICAgICAqIG9uY2UgaXQgZG9l
cywgb3IgYXNzZXJ0IGlmIGEgdGltZW91dCBpcyByZWFjaGVkLiBUaGlzIGlzCisgICAgICAgICAq
IHByZWZlcnJlZCBvdmVyIGEgc2ltcGxlIHN0ZXBfdGltZW91dCB3aGVuZXZlciBwb3NzaWJsZQor
ICAgICAgICAgKiBzaW5jZSBpdCBhbGxvd3MgdGhlIHRpbWVvdXQgdG8gYmUgbG9uZ2VyIHRvIHJl
ZHVjZQorICAgICAgICAgKiBpbnRlcm1pdHRlbnRzIHdpdGhvdXQgY29tcHJvbWlzaW5nIHRlc3Qg
ZXhlY3V0aW9uIHNwZWVkCisgICAgICAgICAqIHdoZW4gdGhlIGNvbmRpdGlvbiBpcyBxdWlja2x5
IG1ldC4KKyAgICAgICAgICoKKyAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gY29uZCBBIGZ1
bmN0aW9uIHRha2luZyBubyBhcmd1bWVudHMgYW5kCisgICAgICAgICAqICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuaW5nIGEgYm9vbGVhbi4KKyAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9
IGRlc2NyaXB0aW9uIEVycm9yIG1lc3NhZ2UgdG8gYWRkIHRvIGFzc2VydCBpbiBjYXNlIG9mCisg
ICAgICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWlsdXJlLgorICAgICAgICAg
KiBAcGFyYW0ge251bWJlcn0gdGltZW91dCBUaW1lb3V0IGluIG1zLiBUaGlzIGlzIG11bHRpcGxp
ZWQgYnkgdGhlIGdsb2JhbAorICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICB0aW1l
b3V0X211bHRpcGxpZXIKKyAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IGludGVydmFsIFBvbGxp
bmcgaW50ZXJ2YWwgaW4gbXMKKyAgICAgICAgICogQHJldHVybnMge1Byb21pc2V9IFByb21pc2Ug
cmVzb2x2ZWQgb25jZSBjb25kIGlzIG1ldC4KKyAgICAgICAgICoKKyAgICAgICAgICoqLworCisg
ICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICAgICAgICAgIHRoaXMu
c3RlcF93YWl0X2Z1bmMoY29uZCwgcmVzb2x2ZSwgZGVzY3JpcHRpb24sIHRpbWVvdXQsIGludGVy
dmFsKTsKKyAgICAgICAgfSk7CiAgICAgfQogCiAgICAgLyoKQEAgLTE3MzcsNiArMjMxNSwxMiBA
QCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgICAgIGNsZWFy
VGltZW91dCh0aGlzLnRpbWVvdXRfaWQpOwogICAgICAgICB9CiAKKyAgICAgICAgaWYgKHNldHRp
bmdzLmRlYnVnKSB7CisgICAgICAgICAgICBjb25zb2xlLmxvZygiVEVTVCBET05FIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdHVzLAorICAgICAgICAgICAgICAgICAgICAgICAg
dGhpcy5uYW1lLCkKKyAgICAgICAgfQorCiAgICAgICAgIHRoaXMuY2xlYW51cCgpOwogICAgIH07
CiAKQEAgLTE5MzYsNiArMjUyMCwxMCBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1z
IFszXS4KICAgICAgICAgICAgICAgICB9KTsKICAgICB9CiAKKyAgICBSZW1vdGVUZXN0LnByb3Rv
dHlwZS5mb3JtYXRfc3RhdHVzID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiBUZXN0LnBy
b3RvdHlwZS5zdGF0dXNfZm9ybWF0c1t0aGlzLnN0YXR1c107CisgICAgfQorCiAgICAgLyoKICAg
ICAgKiBBIFJlbW90ZUNvbnRleHQgbGlzdGVucyBmb3IgdGVzdCBldmVudHMgZnJvbSBhIHJlbW90
ZSB0ZXN0IGNvbnRleHQsIHN1Y2gKICAgICAgKiBhcyBhbm90aGVyIHdpbmRvdyBvciBhIHdvcmtl
ci4gVGhlc2UgZXZlbnRzIGFyZSB0aGVuIHVzZWQgdG8gY29uc3RydWN0CkBAIC0yMDQ0LDYgKzI2
MzIsMTYgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAgICAg
ICB0ZXN0cy5zZXRfc3RhdHVzKGRhdGEuc3RhdHVzLnN0YXR1cywgZGF0YS5zdGF0dXMubWVzc2Fn
ZSwgZGF0YS5zdGF0dXMuc2Fjayk7CiAgICAgICAgIH0KIAorICAgICAgICBmb3IgKGxldCBhc3Nl
cnQgb2YgZGF0YS5hc3NlcnRzKSB7CisgICAgICAgICAgICB2YXIgcmVjb3JkID0gbmV3IEFzc2Vy
dFJlY29yZCgpOworICAgICAgICAgICAgcmVjb3JkLmFzc2VydF9uYW1lID0gYXNzZXJ0LmFzc2Vy
dF9uYW1lOworICAgICAgICAgICAgcmVjb3JkLmFyZ3MgPSBhc3NlcnQuYXJnczsKKyAgICAgICAg
ICAgIHJlY29yZC50ZXN0ID0gYXNzZXJ0LnRlc3QgIT0gbnVsbCA/IHRoaXMudGVzdHNbYXNzZXJ0
LnRlc3QuaW5kZXhdIDogbnVsbDsKKyAgICAgICAgICAgIHJlY29yZC5zdGF0dXMgPSBhc3NlcnQu
c3RhdHVzOworICAgICAgICAgICAgcmVjb3JkLnN0YWNrID0gYXNzZXJ0LnN0YWNrOworICAgICAg
ICAgICAgdGVzdHMuYXNzZXJ0c19ydW4ucHVzaChyZWNvcmQpOworICAgICAgICB9CisKICAgICAg
ICAgdGhpcy5tZXNzYWdlX3RhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgdGhp
cy5tZXNzYWdlX2hhbmRsZXIpOwogICAgICAgICB0aGlzLnJ1bm5pbmcgPSBmYWxzZTsKIApAQCAt
MjA4NywxMSArMjY4NSwyMCBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4K
ICAgICBUZXN0c1N0YXR1cy5zdGF0dXNlcyA9IHsKICAgICAgICAgT0s6MCwKICAgICAgICAgRVJS
T1I6MSwKLSAgICAgICAgVElNRU9VVDoyCisgICAgICAgIFRJTUVPVVQ6MiwKKyAgICAgICAgUFJF
Q09ORElUSU9OX0ZBSUxFRDozCiAgICAgfTsKIAogICAgIFRlc3RzU3RhdHVzLnByb3RvdHlwZSA9
IG1lcmdlKHt9LCBUZXN0c1N0YXR1cy5zdGF0dXNlcyk7CiAKKyAgICBUZXN0c1N0YXR1cy5wcm90
b3R5cGUuZm9ybWF0cyA9IHsKKyAgICAgICAgMDogIk9LIiwKKyAgICAgICAgMTogIkVycm9yIiwK
KyAgICAgICAgMjogIlRpbWVvdXQiLAorICAgICAgICAzOiAiT3B0aW9uYWwgRmVhdHVyZSBVbnN1
cHBvcnRlZCIKKyAgICB9CisKKwogICAgIFRlc3RzU3RhdHVzLnByb3RvdHlwZS5zdHJ1Y3R1cmVk
X2Nsb25lID0gZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9zdHJ1Y3R1cmVk
X2Nsb25lKSB7CkBAIC0yMTA2LDYgKzI3MTMsMjcgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlv
biBmb3JtcyBbM10uCiAgICAgICAgIHJldHVybiB0aGlzLl9zdHJ1Y3R1cmVkX2Nsb25lOwogICAg
IH07CiAKKyAgICBUZXN0c1N0YXR1cy5wcm90b3R5cGUuZm9ybWF0X3N0YXR1cyA9IGZ1bmN0aW9u
KCkgeworICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXRzW3RoaXMuc3RhdHVzXTsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiBBc3NlcnRSZWNvcmQodGVzdCwgYXNzZXJ0X25hbWUsIGFyZ3MgPSBbXSkg
eworICAgICAgICB0aGlzLmFzc2VydF9uYW1lID0gYXNzZXJ0X25hbWU7CisgICAgICAgIHRoaXMu
dGVzdCA9IHRlc3Q7CisgICAgICAgIC8vIEF2b2lkIGtlZXBpbmcgY29tcGxleCBvYmplY3RzIGFs
aXZlCisgICAgICAgIHRoaXMuYXJncyA9IGFyZ3MubWFwKHggPT4gZm9ybWF0X3ZhbHVlKHgpLnJl
cGxhY2UoL1xuL2csICIgIikpOworICAgICAgICB0aGlzLnN0YXR1cyA9IG51bGw7CisgICAgfQor
CisgICAgQXNzZXJ0UmVjb3JkLnByb3RvdHlwZS5zdHJ1Y3R1cmVkX2Nsb25lID0gZnVuY3Rpb24o
KSB7CisgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICBhc3NlcnRfbmFtZTogdGhpcy5hc3Nl
cnRfbmFtZSwKKyAgICAgICAgICAgIHRlc3Q6IHRoaXMudGVzdCA/IHRoaXMudGVzdC5zdHJ1Y3R1
cmVkX2Nsb25lKCkgOiBudWxsLAorICAgICAgICAgICAgYXJnczogdGhpcy5hcmdzLAorICAgICAg
ICAgICAgc3RhdHVzOiB0aGlzLnN0YXR1cywKKyAgICAgICAgfQorICAgIH0KKwogICAgIGZ1bmN0
aW9uIFRlc3RzKCkKICAgICB7CiAgICAgICAgIHRoaXMudGVzdHMgPSBbXTsKQEAgLTIxMjgsNiAr
Mjc1NiwxMCBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAg
dGhpcy5hbGxvd191bmNhdWdodF9leGNlcHRpb24gPSBmYWxzZTsKIAogICAgICAgICB0aGlzLmZp
bGVfaXNfdGVzdCA9IGZhbHNlOworICAgICAgICAvLyBUaGlzIHZhbHVlIGlzIGxhemlseSBpbml0
aWFsaXplZCBpbiBvcmRlciB0byBhdm9pZCBpbnRyb2R1Y2luZyBhCisgICAgICAgIC8vIGRlcGVu
ZGVuY3kgb24gRUNNQVNjcmlwdCAyMDE1IFByb21pc2VzIHRvIGFsbCB0ZXN0cy4KKyAgICAgICAg
dGhpcy5wcm9taXNlX3Rlc3RzID0gbnVsbDsKKyAgICAgICAgdGhpcy5wcm9taXNlX3NldHVwX2Nh
bGxlZCA9IGZhbHNlOwogCiAgICAgICAgIHRoaXMudGltZW91dF9tdWx0aXBsaWVyID0gMTsKICAg
ICAgICAgdGhpcy50aW1lb3V0X2xlbmd0aCA9IHRlc3RfZW52aXJvbm1lbnQudGVzdF90aW1lb3V0
KCk7CkBAIC0yMTM4LDggKzI3NzAsMjEgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3Jt
cyBbM10uCiAgICAgICAgIHRoaXMudGVzdF9kb25lX2NhbGxiYWNrcyA9IFtdOwogICAgICAgICB0
aGlzLmFsbF9kb25lX2NhbGxiYWNrcyA9IFtdOwogCisgICAgICAgIHRoaXMuaGlkZV90ZXN0X3N0
YXRlID0gZmFsc2U7CiAgICAgICAgIHRoaXMucGVuZGluZ19yZW1vdGVzID0gW107CiAKKyAgICAg
ICAgdGhpcy5jdXJyZW50X3Rlc3QgPSBudWxsOworICAgICAgICB0aGlzLmFzc2VydHNfcnVuID0g
W107CisKKyAgICAgICAgLy8gVHJhY2sgd2hldGhlciBvdXRwdXQgaXMgZW5hYmxlZCwgYW5kIHRo
dXMgd2hldGhlciBvciBub3Qgd2Ugc2hvdWxkCisgICAgICAgIC8vIHRyYWNrIGFzc2VydHMuCisg
ICAgICAgIC8vCisgICAgICAgIC8vIE9uIHdvcmtlcnMgd2UgZG9uJ3QgZ2V0IHByb3BlcnRpZXMg
c2V0IGZyb20gdGVzdGhhcm5lc3NyZXBvcnQuanMsIHNvCisgICAgICAgIC8vIHdlIGRvbid0IGtu
b3cgd2hldGhlciBvciBub3QgdG8gdHJhY2sgYXNzZXJ0cy4gVG8gYXZvaWQgdGhlCisgICAgICAg
IC8vIHJlc3VsdGluZyBwZXJmb3JtYW5jZSBoaXQsIHdlIGFzc3VtZSB3ZSBhcmUgbm90IG1lYW50
IHRvLiBUaGlzIG1lYW5zCisgICAgICAgIC8vIHRoYXQgYXNzZXJ0IHRyYWNraW5nIGRvZXMgbm90
IGZ1bmN0aW9uIG9uIHdvcmtlcnMuCisgICAgICAgIHRoaXMub3V0cHV0ID0gc2V0dGluZ3Mub3V0
cHV0ICYmICdkb2N1bWVudCcgaW4gZ2xvYmFsX3Njb3BlOworCiAgICAgICAgIHRoaXMuc3RhdHVz
ID0gbmV3IFRlc3RzU3RhdHVzKCk7CiAKICAgICAgICAgdmFyIHRoaXNfb2JqID0gdGhpczsKQEAg
LTIxNzgsMTEgKzI4MjMsMTkgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10u
CiAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyVGlt
ZW91dCh0aGlzLnRpbWVvdXRfaWQpOwogICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgfSBlbHNlIGlmIChwID09ICJzaW5nbGVfdGVzdCIgJiYgdmFsdWUpIHsKKyAgICAgICAg
ICAgICAgICAgICAgdGhpcy5zZXRfZmlsZV9pc190ZXN0KCk7CiAgICAgICAgICAgICAgICAgfSBl
bHNlIGlmIChwID09ICJ0aW1lb3V0X211bHRpcGxpZXIiKSB7CiAgICAgICAgICAgICAgICAgICAg
IHRoaXMudGltZW91dF9tdWx0aXBsaWVyID0gdmFsdWU7CiAgICAgICAgICAgICAgICAgICAgIGlm
ICh0aGlzLnRpbWVvdXRfbGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50
aW1lb3V0X2xlbmd0aCAqPSB0aGlzLnRpbWVvdXRfbXVsdGlwbGllcjsKICAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocCA9PSAiaGlkZV90ZXN0X3N0YXRl
IikgeworICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGVfdGVzdF9zdGF0ZSA9IHZhbHVlOwor
ICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocCA9PSAib3V0cHV0IikgeworICAgICAgICAgICAg
ICAgICAgICB0aGlzLm91dHB1dCA9IHZhbHVlOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAo
cCA9PT0gImRlYnVnIikgeworICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncy5kZWJ1ZyA9IHZh
bHVlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMjE5
MSw5ICsyODQ0LDEwIEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAg
ICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICBmdW5jKCk7CiAgICAgICAgICAgICB9IGNh
dGNoIChlKSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5zdGF0dXMuc3RhdHVzID0gdGhpcy5zdGF0
dXMuRVJST1I7CisgICAgICAgICAgICAgICAgdGhpcy5zdGF0dXMuc3RhdHVzID0gZSBpbnN0YW5j
ZW9mIE9wdGlvbmFsRmVhdHVyZVVuc3VwcG9ydGVkRXJyb3IgPyB0aGlzLnN0YXR1cy5QUkVDT05E
SVRJT05fRkFJTEVEIDogdGhpcy5zdGF0dXMuRVJST1I7CiAgICAgICAgICAgICAgICAgdGhpcy5z
dGF0dXMubWVzc2FnZSA9IFN0cmluZyhlKTsKICAgICAgICAgICAgICAgICB0aGlzLnN0YXR1cy5z
dGFjayA9IGUuc3RhY2sgPyBlLnN0YWNrIDogbnVsbDsKKyAgICAgICAgICAgICAgICB0aGlzLmNv
bXBsZXRlKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgdGhpcy5zZXRfdGlt
ZW91dCgpOwpAQCAtMjIwNiw3ICsyODYwLDcgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBm
b3JtcyBbM10uCiAgICAgICAgIHRoaXMud2FpdF9mb3JfZmluaXNoID0gdHJ1ZTsKICAgICAgICAg
dGhpcy5maWxlX2lzX3Rlc3QgPSB0cnVlOwogICAgICAgICAvLyBDcmVhdGUgdGhlIHRlc3QsIHdo
aWNoIHdpbGwgYWRkIGl0IHRvIHRoZSBsaXN0IG9mIHRlc3RzCi0gICAgICAgIGFzeW5jX3Rlc3Qo
KTsKKyAgICAgICAgdGVzdHMuY3VycmVudF90ZXN0ID0gYXN5bmNfdGVzdCgpOwogICAgIH07CiAK
ICAgICBUZXN0cy5wcm90b3R5cGUuc2V0X3N0YXR1cyA9IGZ1bmN0aW9uKHN0YXR1cywgbWVzc2Fn
ZSwgc3RhY2spCkBAIC0yMzcwLDYgKzMwMjQsMTYgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlv
biBmb3JtcyBbM10uCiAgICAgICAgICAgICAgICAgICBhbGxfY29tcGxldGUpOwogICAgIH07CiAK
KyAgICBUZXN0cy5wcm90b3R5cGUuc2V0X2Fzc2VydCA9IGZ1bmN0aW9uKGFzc2VydF9uYW1lLCBh
cmdzKSB7CisgICAgICAgIHRoaXMuYXNzZXJ0c19ydW4ucHVzaChuZXcgQXNzZXJ0UmVjb3JkKHRo
aXMuY3VycmVudF90ZXN0LCBhc3NlcnRfbmFtZSwgYXJncykpCisgICAgfQorCisgICAgVGVzdHMu
cHJvdG90eXBlLnNldF9hc3NlcnRfc3RhdHVzID0gZnVuY3Rpb24oc3RhdHVzLCBzdGFjaykgewor
ICAgICAgICBsZXQgYXNzZXJ0X3JlY29yZCA9IHRoaXMuYXNzZXJ0c19ydW5bdGhpcy5hc3NlcnRz
X3J1bi5sZW5ndGggLSAxXTsKKyAgICAgICAgYXNzZXJ0X3JlY29yZC5zdGF0dXMgPSBzdGF0dXM7
CisgICAgICAgIGFzc2VydF9yZWNvcmQuc3RhY2sgPSBzdGFjazsKKyAgICB9CisKICAgICAvKioK
ICAgICAgKiBVcGRhdGUgdGhlIGhhcm5lc3Mgc3RhdHVzIHRvIHJlZmxlY3QgYW4gdW5yZWNvdmVy
YWJsZSBoYXJuZXNzIGVycm9yIHRoYXQKICAgICAgKiBzaG91bGQgY2FuY2VsIGFsbCBmdXJ0aGVy
IHRlc3RpbmcuIFVwZGF0ZSBhbGwgcHJldmlvdXNseS1kZWZpbmVkIHRlc3RzCkBAIC0yNDEyLDIy
ICszMDc2LDE2IEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAgIH0K
IAogICAgIGZ1bmN0aW9uIHNhbml0aXplX3VucGFpcmVkX3N1cnJvZ2F0ZXMoc3RyKSB7Ci0gICAg
ICAgIHJldHVybiBzdHIucmVwbGFjZSgvKFtcdWQ4MDAtXHVkYmZmXSkoPyFbXHVkYzAwLVx1ZGZm
Zl0pL2csCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbihfLCB1bnBhaXJlZCkK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gY29kZV91bml0X3N0cih1bnBhaXJlZCk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICB9KQotICAgICAgICAgICAgICAgICAgLy8gVGhpcyByZXBsYWNlbWVudCBpcyBpbnRl
bnRpb25hbGx5IGltcGxlbWVudGVkIHdpdGhvdXQgYW4KLSAgICAgICAgICAgICAgICAgIC8vIEVT
MjAxOCBuZWdhdGl2ZSBsb29rYmVoaW5kIGFzc2VydGlvbiB0byBzdXBwb3J0IHJ1bnRpbWVzCi0g
ICAgICAgICAgICAgICAgICAvLyB3aGljaCBkbyBub3QgeWV0IGltcGxlbWVudCB0aGF0IGxhbmd1
YWdlIGZlYXR1cmUuCi0gICAgICAgICAgICAgICAgICAucmVwbGFjZSgvKF58W15cdWQ4MDAtXHVk
YmZmXSkoW1x1ZGMwMC1cdWRmZmZdKS9nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVu
Y3Rpb24oXywgcHJldmlvdXMsIHVucGFpcmVkKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoL1tcdWRjMDAtXHVkZmZmXS8udGVzdChwcmV2aW91cykpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91cyA9IGNvZGVfdW5pdF9zdHIocHJldmlvdXMp
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gcHJldmlvdXMgKyBjb2RlX3VuaXRfc3RyKHVucGFpcmVkKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICByZXR1cm4gc3RyLnJlcGxhY2Uo
CisgICAgICAgICAgICAvKFtcdWQ4MDAtXHVkYmZmXSspKD8hW1x1ZGMwMC1cdWRmZmZdKXwoXnxb
Xlx1ZDgwMC1cdWRiZmZdKShbXHVkYzAwLVx1ZGZmZl0rKS9nLAorICAgICAgICAgICAgZnVuY3Rp
b24oXywgbG93LCBwcmVmaXgsIGhpZ2gpIHsKKyAgICAgICAgICAgICAgICB2YXIgb3V0cHV0ID0g
cHJlZml4IHx8ICIiOyAgLy8gcHJlZml4IG1heSBiZSB1bmRlZmluZWQKKyAgICAgICAgICAgICAg
ICB2YXIgc3RyaW5nID0gbG93IHx8IGhpZ2g7ICAvLyBvbmx5IG9uZSBvZiB0aGVzZSBhbHRlcm5h
dGVzIGNhbiBtYXRjaAorICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyaW5n
Lmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIG91dHB1dCArPSBjb2RlX3VuaXRf
c3RyKHN0cmluZ1tpXSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVy
biBvdXRwdXQ7CisgICAgICAgICAgICB9KTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBzYW5pdGl6
ZV9hbGxfdW5wYWlyZWRfc3Vycm9nYXRlcyh0ZXN0cykgewpAQCAtMjQ3Myw3ICszMTMxLDcgQEAg
cG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAgIGZvckVhY2ggKHRo
aXMuYWxsX2RvbmVfY2FsbGJhY2tzLAogICAgICAgICAgICAgICAgICBmdW5jdGlvbihjYWxsYmFj
aykKICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sodGhp
c19vYmoudGVzdHMsIHRoaXNfb2JqLnN0YXR1cyk7CisgICAgICAgICAgICAgICAgICAgICBjYWxs
YmFjayh0aGlzX29iai50ZXN0cywgdGhpc19vYmouc3RhdHVzLCB0aGlzX29iai5hc3NlcnRzX3J1
bik7CiAgICAgICAgICAgICAgICAgIH0pOwogICAgIH07CiAKQEAgLTI0ODQsMjQgKzMxNDIsOCBA
QCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgdmFyIG1lc3Nh
Z2VfcG9ydDsKIAogICAgICAgICBpZiAoaXNfc2VydmljZV93b3JrZXIod29ya2VyKSkgewotICAg
ICAgICAgICAgaWYgKHdpbmRvdy5NZXNzYWdlQ2hhbm5lbCkgewotICAgICAgICAgICAgICAgIC8v
IFRoZSBTZXJ2aWNlV29ya2VyJ3MgaW1wbGljaXQgTWVzc2FnZVBvcnQgaXMgY3VycmVudGx5IG5v
dAotICAgICAgICAgICAgICAgIC8vIHJlbGlhYmx5IGFjY2Vzc2libGUgZnJvbSB0aGUgU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlIGR1ZSB0bwotICAgICAgICAgICAgICAgIC8vIEJsaW5rIHNldHRp
bmcgTWVzc2FnZUV2ZW50LnNvdXJjZSB0byBudWxsIGZvciBtZXNzYWdlcyBzZW50Ci0gICAgICAg
ICAgICAgICAgLy8gdmlhIFNlcnZpY2VXb3JrZXIucG9zdE1lc3NhZ2UoKS4gVW50aWwgdGhhdCdz
IHJlc29sdmVkLAotICAgICAgICAgICAgICAgIC8vIGNyZWF0ZSBhbiBleHBsaWNpdCBNZXNzYWdl
Q2hhbm5lbCBhbmQgcGFzcyBvbmUgZW5kIHRvIHRoZQotICAgICAgICAgICAgICAgIC8vIHdvcmtl
ci4KLSAgICAgICAgICAgICAgICB2YXIgbWVzc2FnZV9jaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFu
bmVsKCk7Ci0gICAgICAgICAgICAgICAgbWVzc2FnZV9wb3J0ID0gbWVzc2FnZV9jaGFubmVsLnBv
cnQxOwotICAgICAgICAgICAgICAgIG1lc3NhZ2VfcG9ydC5zdGFydCgpOwotICAgICAgICAgICAg
ICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7dHlwZTogImNvbm5lY3QifSwgW21lc3NhZ2VfY2hhbm5l
bC5wb3J0Ml0pOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAvLyBJZiBN
ZXNzYWdlQ2hhbm5lbCBpcyBub3QgYXZhaWxhYmxlLCB0aGVuIHRyeSB0aGUKLSAgICAgICAgICAg
ICAgICAvLyBTZXJ2aWNlV29ya2VyLnBvc3RNZXNzYWdlKCkgYXBwcm9hY2ggdXNpbmcgTWVzc2Fn
ZUV2ZW50LnNvdXJjZQotICAgICAgICAgICAgICAgIC8vIG9uIHRoZSBvdGhlciBlbmQuCi0gICAg
ICAgICAgICAgICAgbWVzc2FnZV9wb3J0ID0gbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXI7Ci0gICAg
ICAgICAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKHt0eXBlOiAiY29ubmVjdCJ9KTsKLSAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIG1lc3NhZ2VfcG9ydCA9IG5hdmlnYXRvci5zZXJ2aWNlV29y
a2VyOworICAgICAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKHt0eXBlOiAiY29ubmVjdCJ9KTsK
ICAgICAgICAgfSBlbHNlIGlmIChpc19zaGFyZWRfd29ya2VyKHdvcmtlcikpIHsKICAgICAgICAg
ICAgIG1lc3NhZ2VfcG9ydCA9IHdvcmtlci5wb3J0OwogICAgICAgICAgICAgbWVzc2FnZV9wb3J0
LnN0YXJ0KCk7CkBAIC0yNzA0LDcgKzMzNDYsNyBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9u
IGZvcm1zIFszXS4KICAgICAgICAgICAgIHRoaXMucGhhc2UgPSB0aGlzLkhBVkVfUkVTVUxUUzsK
ICAgICAgICAgfQogICAgICAgICB2YXIgZG9uZV9jb3VudCA9IHRlc3RzLnRlc3RzLmxlbmd0aCAt
IHRlc3RzLm51bV9wZW5kaW5nOwotICAgICAgICBpZiAodGhpcy5vdXRwdXRfbm9kZSkgeworICAg
ICAgICBpZiAodGhpcy5vdXRwdXRfbm9kZSAmJiAhdGVzdHMuaGlkZV90ZXN0X3N0YXRlKSB7CiAg
ICAgICAgICAgICBpZiAoZG9uZV9jb3VudCA8IDEwMCB8fAogICAgICAgICAgICAgICAgIChkb25l
X2NvdW50IDwgMTAwMCAmJiBkb25lX2NvdW50ICUgMTAwID09PSAwKSB8fAogICAgICAgICAgICAg
ICAgIGRvbmVfY291bnQgJSAxMDAwID09PSAwKSB7CkBAIC0yNzE1LDcgKzMzNTcsNyBAQCBwb2xp
Y2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgfQogICAgIH07CiAKLSAg
ICBPdXRwdXQucHJvdG90eXBlLnNob3dfcmVzdWx0cyA9IGZ1bmN0aW9uICh0ZXN0cywgaGFybmVz
c19zdGF0dXMpIHsKKyAgICBPdXRwdXQucHJvdG90eXBlLnNob3dfcmVzdWx0cyA9IGZ1bmN0aW9u
ICh0ZXN0cywgaGFybmVzc19zdGF0dXMsIGFzc2VydHNfcnVuKSB7CiAgICAgICAgIGlmICh0aGlz
LnBoYXNlID49IHRoaXMuQ09NUExFVEUpIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQpAQCAtMjc0NCwyMSArMzM4NiwxMCBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1z
IFszXS4KICAgICAgICAgICAgIGhlYWRzWzBdLmFwcGVuZENoaWxkKHN0eWxlc2hlZXQpOwogICAg
ICAgICB9CiAKLSAgICAgICAgdmFyIHN0YXR1c190ZXh0X2hhcm5lc3MgPSB7fTsKLSAgICAgICAg
c3RhdHVzX3RleHRfaGFybmVzc1toYXJuZXNzX3N0YXR1cy5PS10gPSAiT0siOwotICAgICAgICBz
dGF0dXNfdGV4dF9oYXJuZXNzW2hhcm5lc3Nfc3RhdHVzLkVSUk9SXSA9ICJFcnJvciI7Ci0gICAg
ICAgIHN0YXR1c190ZXh0X2hhcm5lc3NbaGFybmVzc19zdGF0dXMuVElNRU9VVF0gPSAiVGltZW91
dCI7Ci0KLSAgICAgICAgdmFyIHN0YXR1c190ZXh0ID0ge307Ci0gICAgICAgIHN0YXR1c190ZXh0
W1Rlc3QucHJvdG90eXBlLlBBU1NdID0gIlBhc3MiOwotICAgICAgICBzdGF0dXNfdGV4dFtUZXN0
LnByb3RvdHlwZS5GQUlMXSA9ICJGYWlsIjsKLSAgICAgICAgc3RhdHVzX3RleHRbVGVzdC5wcm90
b3R5cGUuVElNRU9VVF0gPSAiVGltZW91dCI7Ci0gICAgICAgIHN0YXR1c190ZXh0W1Rlc3QucHJv
dG90eXBlLk5PVFJVTl0gPSAiTm90IFJ1biI7Ci0KICAgICAgICAgdmFyIHN0YXR1c19udW1iZXIg
PSB7fTsKICAgICAgICAgZm9yRWFjaCh0ZXN0cywKICAgICAgICAgICAgICAgICBmdW5jdGlvbih0
ZXN0KSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBzdGF0dXMgPSBzdGF0dXNfdGV4dFt0ZXN0
LnN0YXR1c107CisgICAgICAgICAgICAgICAgICAgIHZhciBzdGF0dXMgPSB0ZXN0LmZvcm1hdF9z
dGF0dXMoKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXR1c19udW1iZXIuaGFzT3duUHJv
cGVydHkoc3RhdHVzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzX251bWJlcltz
dGF0dXNdICs9IDE7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC0yNzc1LDggKzM0
MDYsNyBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgWyJoMiIsIHt9LCAiU3VtbWFyeSJdLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigpCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXR1
cyA9IHN0YXR1c190ZXh0X2hhcm5lc3NbaGFybmVzc19zdGF0dXMuc3RhdHVzXTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzdGF0dXMgPSBoYXJuZXNzX3N0YXR1cy5m
b3JtYXRfc3RhdHVzKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIg
cnYgPSBbWyJzZWN0aW9uIiwge30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFsicCIsIHt9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIkhhcm5lc3Mgc3RhdHVzOiAiLApAQCAtMjc5OCwxMyArMzQyOCwxNCBA
QCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2YXIgcnYgPSBbWyJkaXYiLCB7fV1dOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdmFyIGkgPSAwOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgd2hpbGUgKHN0YXR1c190ZXh0Lmhhc093blByb3BlcnR5KGkpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXR1c19udW1iZXIuaGFzT3duUHJvcGVy
dHkoc3RhdHVzX3RleHRbaV0pKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZhciBzdGF0dXMgPSBzdGF0dXNfdGV4dFtpXTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcnZbMF0ucHVzaChbImRpdiIsIHsiY2xhc3MiOnN0
YXR1c19jbGFzcyhzdGF0dXMpfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHdoaWxlIChUZXN0LnByb3RvdHlwZS5zdGF0dXNfZm9ybWF0cy5oYXNPd25Qcm9wZXJ0eShpKSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0dXNfbnVt
YmVyLmhhc093blByb3BlcnR5KFRlc3QucHJvdG90eXBlLnN0YXR1c19mb3JtYXRzW2ldKSkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc3RhdHVzID0g
VGVzdC5wcm90b3R5cGUuc3RhdHVzX2Zvcm1hdHNbaV07CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJ2WzBdLnB1c2goWyJkaXYiLCB7fSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJsYWJlbCIsIHt9
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgWyJpbnB1dCIsIHt0eXBlOiJjaGVja2JveCIsIGNoZWNrZWQ6ImNoZWNrZWQifV0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0
dXNfbnVtYmVyW3N0YXR1c10gKyAiICIgKyBzdGF0dXNdXSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXNfbnVtYmVyW3N0YXR1
c10gKyAiICIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBbInNwYW4iLCB7ImNsYXNzIjpzdGF0dXNfY2xhc3Moc3RhdHVzKX0sIHN0YXR1
c11dXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkrKzsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KQEAgLTI4MjQsMTMgKzM0NTUsMTMgQEAgcG9saWNpZXMgYW5k
IGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXN1bHRfY2xhc3MgPSBlbGVtZW50LnBh
cmVudE5vZGUuZ2V0QXR0cmlidXRlKCJjbGFzcyIpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyIHJlc3VsdF9jbGFzcyA9IGVsZW1lbnQucXVlcnlTZWxlY3Rvcigic3Bhbltj
bGFzc10iKS5nZXRBdHRyaWJ1dGUoImNsYXNzIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2YXIgc3R5bGVfZWxlbWVudCA9IG91dHB1dF9kb2N1bWVudC5xdWVyeVNlbGVjdG9y
KCJzdHlsZSNoaWRlLSIgKyByZXN1bHRfY2xhc3MpOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyIGlucHV0X2VsZW1lbnQgPSBlbGVtZW50LnF1ZXJ5U2VsZWN0b3IoImlucHV0
Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXN0eWxlX2VsZW1lbnQg
JiYgIWlucHV0X2VsZW1lbnQuY2hlY2tlZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0eWxlX2VsZW1lbnQgPSBvdXRwdXRfZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KHhodG1sX25zLCAic3R5bGUiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdHlsZV9lbGVtZW50LmlkID0gImhpZGUtIiArIHJlc3VsdF9jbGFzczsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZV9lbGVtZW50LnRleHRDb250ZW50ID0gInRh
YmxlI3Jlc3VsdHMgPiB0Ym9keSA+IHRyLiIrcmVzdWx0X2NsYXNzKyJ7ZGlzcGxheTpub25lfSI7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVfZWxlbWVudC50ZXh0
Q29udGVudCA9ICJ0YWJsZSNyZXN1bHRzID4gdGJvZHkgPiB0ci5vdmVyYWxsLSIrcmVzdWx0X2Ns
YXNzKyJ7ZGlzcGxheTpub25lfSI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgb3V0cHV0X2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoc3R5bGVfZWxlbWVudCk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHN0eWxlX2VsZW1lbnQgJiYg
aW5wdXRfZWxlbWVudC5jaGVja2VkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3R5bGVfZWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHN0eWxlX2VsZW1lbnQp
OwpAQCAtMjg3MSw2ICszNTAyLDUyIEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMg
WzNdLgogICAgICAgICAgICAgcmV0dXJuICcnOwogICAgICAgICB9CiAKKyAgICAgICAgdmFyIGFz
c2VydHNfcnVuX2J5X3Rlc3QgPSBuZXcgTWFwKCk7CisgICAgICAgIGFzc2VydHNfcnVuLmZvckVh
Y2goYXNzZXJ0ID0+IHsKKyAgICAgICAgICAgIGlmICghYXNzZXJ0c19ydW5fYnlfdGVzdC5oYXMo
YXNzZXJ0LnRlc3QpKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0c19ydW5fYnlfdGVzdC5zZXQo
YXNzZXJ0LnRlc3QsIFtdKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGFzc2VydHNfcnVu
X2J5X3Rlc3QuZ2V0KGFzc2VydC50ZXN0KS5wdXNoKGFzc2VydCk7CisgICAgICAgIH0pOworCisg
ICAgICAgIGZ1bmN0aW9uIGdldF9hc3NlcnRzX291dHB1dCh0ZXN0KSB7CisgICAgICAgICAgICB2
YXIgYXNzZXJ0cyA9IGFzc2VydHNfcnVuX2J5X3Rlc3QuZ2V0KHRlc3QpOworICAgICAgICAgICAg
aWYgKCFhc3NlcnRzKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuICJObyBhc3NlcnRzIHJhbiI7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBydiA9ICI8dGFibGU+IjsKKyAgICAgICAgICAg
IHJ2ICs9IGFzc2VydHMubWFwKGFzc2VydCA9PiB7CisgICAgICAgICAgICAgICAgdmFyIG91dHB1
dF9mbiA9ICI8c3Ryb25nPiIgKyBlc2NhcGVfaHRtbChhc3NlcnQuYXNzZXJ0X25hbWUpICsgIjwv
c3Ryb25nPigiOworICAgICAgICAgICAgICAgIHZhciBwcmVmaXhfbGVuID0gb3V0cHV0X2ZuLmxl
bmd0aDsKKyAgICAgICAgICAgICAgICB2YXIgb3V0cHV0X2FyZ3MgPSBhc3NlcnQuYXJnczsKKyAg
ICAgICAgICAgICAgICB2YXIgb3V0cHV0X2xlbiA9IG91dHB1dF9hcmdzLnJlZHVjZSgocHJldiwg
Y3VycmVudCkgPT4gcHJlditjdXJyZW50LCBwcmVmaXhfbGVuKTsKKyAgICAgICAgICAgICAgICBp
ZiAob3V0cHV0X2xlbltvdXRwdXRfbGVuLmxlbmd0aCAtIDFdID4gNTApIHsKKyAgICAgICAgICAg
ICAgICAgICAgb3V0cHV0X2FyZ3MgPSBvdXRwdXRfYXJncy5tYXAoKHgsIGkpID0+CisgICAgICAg
ICAgICAgICAgICAgIChpID4gMCA/ICIgICIucmVwZWF0KHByZWZpeF9sZW4pIDogIiIgKSsgeCAr
IChpIDwgb3V0cHV0X2FyZ3MubGVuZ3RoIC0gMSA/ICIsXG4iIDogIiIpKTsKKyAgICAgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBvdXRwdXRfYXJncyA9IG91dHB1dF9h
cmdzLm1hcCgoeCwgaSkgPT4geCArIChpIDwgb3V0cHV0X2FyZ3MubGVuZ3RoIC0gMSA/ICIsICIg
OiAiIikpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBvdXRwdXRfZm4gKz0g
ZXNjYXBlX2h0bWwob3V0cHV0X2FyZ3Muam9pbigiIikpOworICAgICAgICAgICAgICAgIG91dHB1
dF9mbiArPSAnKSc7CisgICAgICAgICAgICAgICAgdmFyIG91dHB1dF9sb2NhdGlvbjsKKyAgICAg
ICAgICAgICAgICBpZiAoYXNzZXJ0LnN0YWNrKSB7CisgICAgICAgICAgICAgICAgICAgIG91dHB1
dF9sb2NhdGlvbiA9IGFzc2VydC5zdGFjay5zcGxpdCgiXG4iLCAxKVswXS5yZXBsYWNlKC9AP1x3
KzpcL1wvW14gIlwvXSsoPzo6XGQrKT8vZywgIiAiKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgcmV0dXJuICI8dHIgY2xhc3M9J292ZXJhbGwtIiArCisgICAgICAgICAgICAg
ICAgICAgIHN0YXR1c19jbGFzcyhUZXN0LnByb3RvdHlwZS5zdGF0dXNfZm9ybWF0c1thc3NlcnQu
c3RhdHVzXSkgKyAiJz4iICsKKyAgICAgICAgICAgICAgICAgICAgIjx0ZCBjbGFzcz0nIiArCisg
ICAgICAgICAgICAgICAgICAgIHN0YXR1c19jbGFzcyhUZXN0LnByb3RvdHlwZS5zdGF0dXNfZm9y
bWF0c1thc3NlcnQuc3RhdHVzXSkgKyAiJz4iICsKKyAgICAgICAgICAgICAgICAgICAgVGVzdC5w
cm90b3R5cGUuc3RhdHVzX2Zvcm1hdHNbYXNzZXJ0LnN0YXR1c10gKyAiPC90ZD4iICsKKyAgICAg
ICAgICAgICAgICAgICAgIjx0ZD48cHJlPiIgKworICAgICAgICAgICAgICAgICAgICBvdXRwdXRf
Zm4gKworICAgICAgICAgICAgICAgICAgICAob3V0cHV0X2xvY2F0aW9uID8gIlxuIiArIGVzY2Fw
ZV9odG1sKG91dHB1dF9sb2NhdGlvbikgOiAiIikgKworICAgICAgICAgICAgICAgICAgICAiPC9w
cmU+PC90ZD48L3RyPiI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICApLmpvaW4oIlxuIik7
CisgICAgICAgICAgICBydiArPSAiPC90YWJsZT4iOworICAgICAgICAgICAgcmV0dXJuIHJ2Owor
ICAgICAgICB9CisKICAgICAgICAgbG9nLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUyh4aHRtbF9ucywgInNlY3Rpb24iKSk7CiAgICAgICAgIHZhciBhc3NlcnRpb25zID0gaGFz
X2Fzc2VydGlvbnMoKTsKICAgICAgICAgdmFyIGh0bWwgPSAiPGgyPkRldGFpbHM8L2gyPjx0YWJs
ZSBpZD0ncmVzdWx0cycgIiArIChhc3NlcnRpb25zID8gImNsYXNzPSdhc3NlcnRpb25zJyIgOiAi
IiApICsgIj4iICsKQEAgLTI4NzksMTkgKzM1NTYsMjYgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1
dGlvbiBmb3JtcyBbM10uCiAgICAgICAgICAgICAiPHRoPk1lc3NhZ2U8L3RoPjwvdHI+PC90aGVh
ZD4iICsKICAgICAgICAgICAgICI8dGJvZHk+IjsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCB0ZXN0cy5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgaHRtbCArPSAnPHRyIGNsYXNzPSIn
ICsKLSAgICAgICAgICAgICAgICBlc2NhcGVfaHRtbChzdGF0dXNfY2xhc3Moc3RhdHVzX3RleHRb
dGVzdHNbaV0uc3RhdHVzXSkpICsKLSAgICAgICAgICAgICAgICAnIj48dGQ+JyArCi0gICAgICAg
ICAgICAgICAgZXNjYXBlX2h0bWwoc3RhdHVzX3RleHRbdGVzdHNbaV0uc3RhdHVzXSkgKworICAg
ICAgICAgICAgdmFyIHRlc3QgPSB0ZXN0c1tpXTsKKyAgICAgICAgICAgIGh0bWwgKz0gJzx0ciBj
bGFzcz0ib3ZlcmFsbC0nICsKKyAgICAgICAgICAgICAgICBzdGF0dXNfY2xhc3ModGVzdC5mb3Jt
YXRfc3RhdHVzKCkpICsKKyAgICAgICAgICAgICAgICAnIj4nICsKKyAgICAgICAgICAgICAgICAn
PHRkIGNsYXNzPSInICsKKyAgICAgICAgICAgICAgICBzdGF0dXNfY2xhc3ModGVzdC5mb3JtYXRf
c3RhdHVzKCkpICsKKyAgICAgICAgICAgICAgICAnIj4nICsKKyAgICAgICAgICAgICAgICB0ZXN0
LmZvcm1hdF9zdGF0dXMoKSArCiAgICAgICAgICAgICAgICAgIjwvdGQ+PHRkPiIgKwotICAgICAg
ICAgICAgICAgIGVzY2FwZV9odG1sKHRlc3RzW2ldLm5hbWUpICsKKyAgICAgICAgICAgICAgICBl
c2NhcGVfaHRtbCh0ZXN0Lm5hbWUpICsKICAgICAgICAgICAgICAgICAiPC90ZD48dGQ+IiArCi0g
ICAgICAgICAgICAgICAgKGFzc2VydGlvbnMgPyBlc2NhcGVfaHRtbChnZXRfYXNzZXJ0aW9uKHRl
c3RzW2ldKSkgKyAiPC90ZD48dGQ+IiA6ICIiKSArCi0gICAgICAgICAgICAgICAgZXNjYXBlX2h0
bWwodGVzdHNbaV0ubWVzc2FnZSA/IHRlc3RzW2ldLm1lc3NhZ2UgOiAiICIpICsKKyAgICAgICAg
ICAgICAgICAoYXNzZXJ0aW9ucyA/IGVzY2FwZV9odG1sKGdldF9hc3NlcnRpb24odGVzdCkpICsg
IjwvdGQ+PHRkPiIgOiAiIikgKworICAgICAgICAgICAgICAgIGVzY2FwZV9odG1sKHRlc3QubWVz
c2FnZSA/IHRlc3RzW2ldLm1lc3NhZ2UgOiAiICIpICsKICAgICAgICAgICAgICAgICAodGVzdHNb
aV0uc3RhY2sgPyAiPHByZT4iICsKICAgICAgICAgICAgICAgICAgZXNjYXBlX2h0bWwodGVzdHNb
aV0uc3RhY2spICsKLSAgICAgICAgICAgICAgICAgIjwvcHJlPiI6ICIiKSArCi0gICAgICAgICAg
ICAgICAgIjwvdGQ+PC90cj4iOworICAgICAgICAgICAgICAgICAiPC9wcmU+IjogIiIpOworICAg
ICAgICAgICAgaWYgKCEodGVzdCBpbnN0YW5jZW9mIFJlbW90ZVRlc3QpKSB7CisgICAgICAgICAg
ICAgICAgIGh0bWwgKz0gIjxkZXRhaWxzPjxzdW1tYXJ5PkFzc2VydHMgcnVuPC9zdW1tYXJ5PiIg
KyBnZXRfYXNzZXJ0c19vdXRwdXQodGVzdCkgKyAiPC9kZXRhaWxzPiIKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGh0bWwgKz0gIjwvdGQ+PC90cj4iOwogICAgICAgICB9CiAgICAgICAgIGh0
bWwgKz0gIjwvdGJvZHk+PC90YWJsZT4iOwogICAgICAgICB0cnkgewpAQCAtMzA3Myw5ICszNzU3
LDYgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICovCiAgICAg
ZnVuY3Rpb24gYXNzZXJ0KGV4cGVjdGVkX3RydWUsIGZ1bmN0aW9uX25hbWUsIGRlc2NyaXB0aW9u
LCBlcnJvciwgc3Vic3RpdHV0aW9ucykKICAgICB7Ci0gICAgICAgIGlmICh0ZXN0cy50ZXN0cy5s
ZW5ndGggPT09IDApIHsKLSAgICAgICAgICAgIHRlc3RzLnNldF9maWxlX2lzX3Rlc3QoKTsKLSAg
ICAgICAgfQogICAgICAgICBpZiAoZXhwZWN0ZWRfdHJ1ZSAhPT0gdHJ1ZSkgewogICAgICAgICAg
ICAgdmFyIG1zZyA9IG1ha2VfbWVzc2FnZShmdW5jdGlvbl9uYW1lLCBkZXNjcmlwdGlvbiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IsIHN1YnN0aXR1dGlvbnMpOwpA
QCAtMzA4NSwxNCArMzc2NiwxNyBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFsz
XS4KIAogICAgIGZ1bmN0aW9uIEFzc2VydGlvbkVycm9yKG1lc3NhZ2UpCiAgICAgeworICAgICAg
ICBpZiAodHlwZW9mIG1lc3NhZ2UgPT0gInN0cmluZyIpIHsKKyAgICAgICAgICAgIG1lc3NhZ2Ug
PSBzYW5pdGl6ZV91bnBhaXJlZF9zdXJyb2dhdGVzKG1lc3NhZ2UpOworICAgICAgICB9CiAgICAg
ICAgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2U7Ci0gICAgICAgIHRoaXMuc3RhY2sgPSB0aGlzLmdl
dF9zdGFjaygpOworICAgICAgICB0aGlzLnN0YWNrID0gZ2V0X3N0YWNrKCk7CiAgICAgfQogICAg
IGV4cG9zZShBc3NlcnRpb25FcnJvciwgIkFzc2VydGlvbkVycm9yIik7CiAKICAgICBBc3NlcnRp
b25FcnJvci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEVycm9yLnByb3RvdHlwZSk7CiAKLSAg
ICBBc3NlcnRpb25FcnJvci5wcm90b3R5cGUuZ2V0X3N0YWNrID0gZnVuY3Rpb24oKSB7CisgICAg
Y29uc3QgZ2V0X3N0YWNrID0gZnVuY3Rpb24oKSB7CiAgICAgICAgIHZhciBzdGFjayA9IG5ldyBF
cnJvcigpLnN0YWNrOwogICAgICAgICAvLyBJRTExIGRvZXMgbm90IGluaXRpYWxpemUgJ0Vycm9y
LnN0YWNrJyB1bnRpbCB0aGUgb2JqZWN0IGlzIHRocm93bi4KICAgICAgICAgaWYgKCFzdGFjaykg
ewpAQCAtMzEzOCw2ICszODIyLDEzIEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMg
WzNdLgogICAgICAgICByZXR1cm4gbGluZXMuc2xpY2UoaSkuam9pbigiXG4iKTsKICAgICB9CiAK
KyAgICBmdW5jdGlvbiBPcHRpb25hbEZlYXR1cmVVbnN1cHBvcnRlZEVycm9yKG1lc3NhZ2UpCisg
ICAgeworICAgICAgICBBc3NlcnRpb25FcnJvci5jYWxsKHRoaXMsIG1lc3NhZ2UpOworICAgIH0K
KyAgICBPcHRpb25hbEZlYXR1cmVVbnN1cHBvcnRlZEVycm9yLnByb3RvdHlwZSA9IE9iamVjdC5j
cmVhdGUoQXNzZXJ0aW9uRXJyb3IucHJvdG90eXBlKTsKKyAgICBleHBvc2UoT3B0aW9uYWxGZWF0
dXJlVW5zdXBwb3J0ZWRFcnJvciwgIk9wdGlvbmFsRmVhdHVyZVVuc3VwcG9ydGVkRXJyb3IiKTsK
KwogICAgIGZ1bmN0aW9uIG1ha2VfbWVzc2FnZShmdW5jdGlvbl9uYW1lLCBkZXNjcmlwdGlvbiwg
ZXJyb3IsIHN1YnN0aXR1dGlvbnMpCiAgICAgewogICAgICAgICBmb3IgKHZhciBwIGluIHN1YnN0
aXR1dGlvbnMpIHsKQEAgLTMzMDYsNyArMzk5Nyw3IEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRp
b24gZm9ybXMgWzNdLgogICAgIGZ1bmN0aW9uIGdldF90aXRsZSgpCiAgICAgewogICAgICAgICBp
ZiAoJ2RvY3VtZW50JyBpbiBnbG9iYWxfc2NvcGUpIHsKLSAgICAgICAgICAgIC8vRG9uJ3QgdXNl
IGRvY3VtZW50LnRpdGxlIHRvIHdvcmsgYXJvdW5kIGFuIE9wZXJhIGJ1ZyBpbiBYSFRNTCBkb2N1
bWVudHMKKyAgICAgICAgICAgIC8vRG9uJ3QgdXNlIGRvY3VtZW50LnRpdGxlIHRvIHdvcmsgYXJv
dW5kIGFuIE9wZXJhL1ByZXN0byBidWcgaW4gWEhUTUwgZG9jdW1lbnRzCiAgICAgICAgICAgICB2
YXIgdGl0bGUgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGl0bGUiKVswXTsKICAg
ICAgICAgICAgIGlmICh0aXRsZSAmJiB0aXRsZS5maXJzdENoaWxkICYmIHRpdGxlLmZpcnN0Q2hp
bGQuZGF0YSkgewogICAgICAgICAgICAgICAgIHJldHVybiB0aXRsZS5maXJzdENoaWxkLmRhdGE7
CkBAIC0zMzY1LDM4ICs0MDU2LDU2IEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMg
WzNdLgogICAgIHZhciB0ZXN0cyA9IG5ldyBUZXN0cygpOwogCiAgICAgaWYgKGdsb2JhbF9zY29w
ZS5hZGRFdmVudExpc3RlbmVyKSB7Ci0gICAgICAgIHZhciBlcnJvcl9oYW5kbGVyID0gZnVuY3Rp
b24oZSkgewotICAgICAgICAgICAgaWYgKHRlc3RzLnRlc3RzLmxlbmd0aCA9PT0gMCAmJiAhdGVz
dHMuYWxsb3dfdW5jYXVnaHRfZXhjZXB0aW9uKSB7Ci0gICAgICAgICAgICAgICAgdGVzdHMuc2V0
X2ZpbGVfaXNfdGVzdCgpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB2YXIgc3RhY2s7
Ci0gICAgICAgICAgICBpZiAoZS5lcnJvciAmJiBlLmVycm9yLnN0YWNrKSB7Ci0gICAgICAgICAg
ICAgICAgc3RhY2sgPSBlLmVycm9yLnN0YWNrOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgICAgICBzdGFjayA9IGUuZmlsZW5hbWUgKyAiOiIgKyBlLmxpbmVubyArICI6IiArIGUu
Y29sbm87Ci0gICAgICAgICAgICB9Ci0KKyAgICAgICAgdmFyIGVycm9yX2hhbmRsZXIgPSBmdW5j
dGlvbihlcnJvciwgbWVzc2FnZSwgc3RhY2spIHsKKyAgICAgICAgICAgIHZhciBvcHRpb25hbF91
bnN1cHBvcnRlZCA9IGVycm9yIGluc3RhbmNlb2YgT3B0aW9uYWxGZWF0dXJlVW5zdXBwb3J0ZWRF
cnJvcjsKICAgICAgICAgICAgIGlmICh0ZXN0cy5maWxlX2lzX3Rlc3QpIHsKICAgICAgICAgICAg
ICAgICB2YXIgdGVzdCA9IHRlc3RzLnRlc3RzWzBdOwogICAgICAgICAgICAgICAgIGlmICh0ZXN0
LnBoYXNlID49IHRlc3QucGhhc2VzLkhBU19SRVNVTFQpIHsKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB0ZXN0LnNldF9zdGF0
dXModGVzdC5GQUlMLCBlLm1lc3NhZ2UsIHN0YWNrKTsKKyAgICAgICAgICAgICAgICB2YXIgc3Rh
dHVzID0gb3B0aW9uYWxfdW5zdXBwb3J0ZWQgPyB0ZXN0LlBSRUNPTkRJVElPTl9GQUlMRUQgOiB0
ZXN0LkZBSUw7CisgICAgICAgICAgICAgICAgdGVzdC5zZXRfc3RhdHVzKHN0YXR1cywgbWVzc2Fn
ZSwgc3RhY2spOwogICAgICAgICAgICAgICAgIHRlc3QucGhhc2UgPSB0ZXN0LnBoYXNlcy5IQVNf
UkVTVUxUOwotICAgICAgICAgICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb24gaW52b2Nh
dGlvbiBpcyBzdXBlcmZsdW91cy4KLSAgICAgICAgICAgICAgICAvLyBUT0RPOiBSZW1vdmUuCi0g
ICAgICAgICAgICAgICAgdGVzdC5kb25lKCk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKCF0ZXN0
cy5hbGxvd191bmNhdWdodF9leGNlcHRpb24pIHsKLSAgICAgICAgICAgICAgICB0ZXN0cy5zdGF0
dXMuc3RhdHVzID0gdGVzdHMuc3RhdHVzLkVSUk9SOwotICAgICAgICAgICAgICAgIHRlc3RzLnN0
YXR1cy5tZXNzYWdlID0gZS5tZXNzYWdlOworICAgICAgICAgICAgICAgIHZhciBzdGF0dXMgPSBv
cHRpb25hbF91bnN1cHBvcnRlZCA/IHRlc3RzLnN0YXR1cy5QUkVDT05ESVRJT05fRkFJTEVEIDog
dGVzdHMuc3RhdHVzLkVSUk9SOworICAgICAgICAgICAgICAgIHRlc3RzLnN0YXR1cy5zdGF0dXMg
PSBzdGF0dXM7CisgICAgICAgICAgICAgICAgdGVzdHMuc3RhdHVzLm1lc3NhZ2UgPSBtZXNzYWdl
OwogICAgICAgICAgICAgICAgIHRlc3RzLnN0YXR1cy5zdGFjayA9IHN0YWNrOwogICAgICAgICAg
ICAgfQotICAgICAgICAgICAgZG9uZSgpOworCisgICAgICAgICAgICAvLyBEbyBub3QgdHJhbnNp
dGlvbiB0byB0aGUgImNvbXBsZXRlIiBwaGFzZSBpZiB0aGUgdGVzdCBoYXMgYmVlbgorICAgICAg
ICAgICAgLy8gY29uZmlndXJlZCB0byBhbGxvdyB1bmNhdWdodCBleGNlcHRpb25zLiBUaGlzIGdp
dmVzIHRoZSB0ZXN0IGFuCisgICAgICAgICAgICAvLyBvcHBvcnR1bml0eSB0byBkZWZpbmUgc3Vi
dGVzdHMgYmFzZWQgb24gdGhlIGV4Y2VwdGlvbiByZXBvcnRpbmcKKyAgICAgICAgICAgIC8vIGJl
aGF2aW9yLgorICAgICAgICAgICAgaWYgKCF0ZXN0cy5hbGxvd191bmNhdWdodF9leGNlcHRpb24p
IHsKKyAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH07CiAK
LSAgICAgICAgYWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLCBlcnJvcl9oYW5kbGVyLCBmYWxzZSk7
Ci0gICAgICAgIGFkZEV2ZW50TGlzdGVuZXIoInVuaGFuZGxlZHJlamVjdGlvbiIsIGZ1bmN0aW9u
KGUpeyBlcnJvcl9oYW5kbGVyKGUucmVhc29uKTsgfSwgZmFsc2UpOworICAgICAgICBhZGRFdmVu
dExpc3RlbmVyKCJlcnJvciIsIGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgICAgIHZhciBtZXNzYWdl
ID0gZS5tZXNzYWdlOworICAgICAgICAgICAgdmFyIHN0YWNrOworICAgICAgICAgICAgaWYgKGUu
ZXJyb3IgJiYgZS5lcnJvci5zdGFjaykgeworICAgICAgICAgICAgICAgIHN0YWNrID0gZS5lcnJv
ci5zdGFjazsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgc3RhY2sgPSBl
LmZpbGVuYW1lICsgIjoiICsgZS5saW5lbm8gKyAiOiIgKyBlLmNvbG5vOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgZXJyb3JfaGFuZGxlcihlLmVycm9yLCBtZXNzYWdlLCBzdGFjayk7Cisg
ICAgICAgIH0sIGZhbHNlKTsKKworICAgICAgICBhZGRFdmVudExpc3RlbmVyKCJ1bmhhbmRsZWRy
ZWplY3Rpb24iLCBmdW5jdGlvbihlKSB7CisgICAgICAgICAgICB2YXIgbWVzc2FnZTsKKyAgICAg
ICAgICAgIGlmIChlLnJlYXNvbiAmJiBlLnJlYXNvbi5tZXNzYWdlKSB7CisgICAgICAgICAgICAg
ICAgbWVzc2FnZSA9ICJVbmhhbmRsZWQgcmVqZWN0aW9uOiAiICsgZS5yZWFzb24ubWVzc2FnZTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbWVzc2FnZSA9ICJVbmhhbmRs
ZWQgcmVqZWN0aW9uIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHZhciBzdGFjazsKKyAg
ICAgICAgICAgIGlmIChlLnJlYXNvbiAmJiBlLnJlYXNvbi5zdGFjaykgeworICAgICAgICAgICAg
ICAgIHN0YWNrID0gZS5yZWFzb24uc3RhY2s7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBl
cnJvcl9oYW5kbGVyKGUucmVhc29uLCBtZXNzYWdlLCBzdGFjayk7CisgICAgICAgIH0sIGZhbHNl
KTsKICAgICB9CiAKICAgICB0ZXN0X2Vudmlyb25tZW50Lm9uX3Rlc3RzX3JlYWR5KCk7CkBAIC0z
NDMxLDUwICs0MTQwLDYyIEBAIHRhYmxlI3Jlc3VsdHMge1wKICAgICB3aWR0aDoxMDAlO1wKIH1c
CiBcCi10YWJsZSNyZXN1bHRzIHRoOmZpcnN0LWNoaWxkLFwKLXRhYmxlI3Jlc3VsdHMgdGQ6Zmly
c3QtY2hpbGQge1wKLSAgICB3aWR0aDo0ZW07XAordGFibGUjcmVzdWx0cyA+IHRoZWFkID4gdHIg
PiB0aDpmaXJzdC1jaGlsZCxcCit0YWJsZSNyZXN1bHRzID4gdGJvZHkgPiB0ciA+IHRkOmZpcnN0
LWNoaWxkIHtcCisgICAgd2lkdGg6OGVtO1wKIH1cCiBcCi10YWJsZSNyZXN1bHRzIHRoOmxhc3Qt
Y2hpbGQsXAotdGFibGUjcmVzdWx0cyB0ZDpsYXN0LWNoaWxkIHtcCit0YWJsZSNyZXN1bHRzID4g
dGhlYWQgPiB0ciA+IHRoOmxhc3QtY2hpbGQsXAordGFibGUjcmVzdWx0cyA+IHRoZWFkID4gdHIg
PiB0ZDpsYXN0LWNoaWxkIHtcCiAgICAgd2lkdGg6NTAlO1wKIH1cCiBcCi10YWJsZSNyZXN1bHRz
LmFzc2VydGlvbnMgdGg6bGFzdC1jaGlsZCxcCi10YWJsZSNyZXN1bHRzLmFzc2VydGlvbnMgdGQ6
bGFzdC1jaGlsZCB7XAordGFibGUjcmVzdWx0cy5hc3NlcnRpb25zID4gdGhlYWQgPiB0ciA+IHRo
Omxhc3QtY2hpbGQsXAordGFibGUjcmVzdWx0cy5hc3NlcnRpb25zID4gdGJvZHkgPiB0ciA+IHRk
Omxhc3QtY2hpbGQge1wKICAgICB3aWR0aDozNSU7XAogfVwKIFwKLXRhYmxlI3Jlc3VsdHMgdGgg
e1wKK3RhYmxlI3Jlc3VsdHMgPiB0aGVhZCA+ID4gdHIgPiB0aCB7XAogICAgIHBhZGRpbmc6MDtc
CiAgICAgcGFkZGluZy1ib3R0b206MC41ZW07XAogICAgIGJvcmRlci1ib3R0b206bWVkaXVtIHNv
bGlkIGJsYWNrO1wKIH1cCiBcCi10YWJsZSNyZXN1bHRzIHRkIHtcCit0YWJsZSNyZXN1bHRzID4g
dGJvZHkgPiB0cj4gdGQge1wKICAgICBwYWRkaW5nOjFlbTtcCiAgICAgcGFkZGluZy1ib3R0b206
MC41ZW07XAogICAgIGJvcmRlci1ib3R0b206dGhpbiBzb2xpZCBibGFjaztcCiB9XAogXAotdHIu
cGFzcyA+IHRkOmZpcnN0LWNoaWxkIHtcCisucGFzcyB7XAogICAgIGNvbG9yOmdyZWVuO1wKIH1c
CiBcCi10ci5mYWlsID4gdGQ6Zmlyc3QtY2hpbGQge1wKKy5mYWlsIHtcCiAgICAgY29sb3I6cmVk
O1wKIH1cCiBcCi10ci50aW1lb3V0ID4gdGQ6Zmlyc3QtY2hpbGQge1wKK3RyLnRpbWVvdXQge1wK
ICAgICBjb2xvcjpyZWQ7XAogfVwKIFwKLXRyLm5vdHJ1biA+IHRkOmZpcnN0LWNoaWxkIHtcCit0
ci5ub3RydW4ge1wKICAgICBjb2xvcjpibHVlO1wKIH1cCiBcCi0ucGFzcyA+IHRkOmZpcnN0LWNo
aWxkLCAuZmFpbCA+IHRkOmZpcnN0LWNoaWxkLCAudGltZW91dCA+IHRkOmZpcnN0LWNoaWxkLCAu
bm90cnVuID4gdGQ6Zmlyc3QtY2hpbGQge1wKK3RyLm9wdGlvbmFsdW5zdXBwb3J0ZWQge1wKKyAg
ICBjb2xvcjpibHVlO1wKK31cCitcCisub2sge1wKKyAgICBjb2xvcjpncmVlbjtcCit9XAorXAor
LmVycm9yIHtcCisgICAgY29sb3I6cmVkO1wKK31cCitcCisucGFzcywgLmZhaWwsIC50aW1lb3V0
LCAubm90cnVuLCAub3B0aW9uYWx1bnN1cHBvcnRlZCAub2ssIC50aW1lb3V0LCAuZXJyb3Ige1wK
ICAgICBmb250LXZhcmlhbnQ6c21hbGwtY2FwcztcCiB9XAogXApAQCAtMzQ5MSwyMyArNDIxMiw3
IEBAIHRhYmxlI3Jlc3VsdHMgc3Bhbi5hY3R1YWwge1wKICAgICBmb250LWZhbWlseTpEZWphVnUg
U2FucyBNb25vLCBCaXRzdHJlYW0gVmVyYSBTYW5zIE1vbm8sIE1vbm9zcGFjZTtcCiAgICAgd2hp
dGUtc3BhY2U6cHJlO1wKIH1cCi1cCi1zcGFuLm9rIHtcCi0gICAgY29sb3I6Z3JlZW47XAotfVwK
LVwKLXRyLmVycm9yIHtcCi0gICAgY29sb3I6cmVkO1wKLX1cCi1cCi1zcGFuLnRpbWVvdXQge1wK
LSAgICBjb2xvcjpyZWQ7XAotfVwKLVwKLXNwYW4ub2ssIHNwYW4udGltZW91dCwgc3Bhbi5lcnJv
ciB7XAotICAgIGZvbnQtdmFyaWFudDpzbWFsbC1jYXBzO1wKLX1cCiAiOwogCi19KSh0aGlzKTsK
K30pKHNlbGYpOwogLy8gdmltOiBzZXQgZXhwYW5kdGFiIHNoaWZ0d2lkdGg9NCB0YWJzdG9wPTQ6
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtLWNv
bnRyb2xsZXIuanMgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtLWNv
bnRyb2xsZXIuanMKaW5kZXggZmU4MmZhNWExYTM2YjA2MTc2ZjY0MzAxMDY4NjM2MWYzYmJiYzQw
Yi4uNzhmZGUyYjdkNjc0OTU0YTdjYjZlZjBjNzAyMDRhZjg4ODcwNjQ0NCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbS1jb250cm9sbGVyLmpzCisr
KyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW0tY29udHJvbGxlci5q
cwpAQCAtMjAsNyArMjAsNyBAQCB0ZXN0KGZ1bmN0aW9uKCkgewogICAgICAgICB0eXBlOiAiYnl0
ZXMiCiAgICAgfSk7CiAKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoIkNhbiBvbmx5
IGNhbGwgUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlci5lcnJvciBvbiBpbnN0YW5jZXMgb2Yg
UmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlciIpLAorICAgIGFzc2VydF90aHJvd3NfanMoVHlw
ZUVycm9yKCJDYW4gb25seSBjYWxsIFJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIuZXJyb3Ig
b24gaW5zdGFuY2VzIG9mIFJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIiKSwKICAgICAgICAg
ZnVuY3Rpb24oKSB7IGNvbnRyb2xsZXIuZXJyb3IuYXBwbHkocnMpOyB9KTsKIH0sICJDYWxsaW5n
IGVycm9yKCkgd2l0aCBhIHRoaXMgb2JqZWN0IGRpZmZlcmVudCBmcm9tIFJlYWRhYmxlQnl0ZVN0
cmVhbUNvbnRyb2xsZXIgc2hvdWxkIHRocm93IGEgVHlwZUVycm9yIik7CiAKQEAgLTM0LDcgKzM0
LDcgQEAgdGVzdChmdW5jdGlvbigpIHsKICAgICAgICAgdHlwZTogImJ5dGVzIgogICAgIH0pOwog
Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCJDYW4gb25seSBjYWxsIFJlYWRhYmxl
Qnl0ZVN0cmVhbUNvbnRyb2xsZXIuY2xvc2Ugb24gaW5zdGFuY2VzIG9mIFJlYWRhYmxlQnl0ZVN0
cmVhbUNvbnRyb2xsZXIiKSwKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvcigiQ2FuIG9u
bHkgY2FsbCBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyLmNsb3NlIG9uIGluc3RhbmNlcyBv
ZiBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyIiksCiAgICAgICAgIGZ1bmN0aW9uKCkgeyBj
b250cm9sbGVyLmNsb3NlLmFwcGx5KHJzKTsgfSk7CiB9LCAiQ2FsbGluZyBjbG9zZSgpIHdpdGgg
YSB0aGlzIG9iamVjdCBkaWZmZXJlbnQgZnJvbSBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVy
IHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvciIpOwogCkBAIC00OCw3ICs0OCw3IEBAIHRlc3QoZnVu
Y3Rpb24oKSB7CiAgICAgICAgIHR5cGU6ICJieXRlcyIKICAgICB9KTsKIAotICAgIGFzc2VydF90
aHJvd3MobmV3IFR5cGVFcnJvcigiQ2FuIG9ubHkgY2FsbCBSZWFkYWJsZUJ5dGVTdHJlYW1Db250
cm9sbGVyLmVucXVldWUgb24gaW5zdGFuY2VzIG9mIFJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xs
ZXIiKSwKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvcigiQ2FuIG9ubHkgY2FsbCBSZWFk
YWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyLmVucXVldWUgb24gaW5zdGFuY2VzIG9mIFJlYWRhYmxl
Qnl0ZVN0cmVhbUNvbnRyb2xsZXIiKSwKICAgICAgICAgZnVuY3Rpb24oKSB7IGNvbnRyb2xsZXIu
ZW5xdWV1ZS5hcHBseShycywgbmV3IEludDhBcnJheSgxKSk7IH0pOwogfSwgIkNhbGxpbmcgZW5x
dWV1ZSgpIHdpdGggYSB0aGlzIG9iamVjdCBkaWZmZXJlbnQgZnJvbSBSZWFkYWJsZUJ5dGVTdHJl
YW1Db250cm9sbGVyIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvciIpOwogCkBAIC02NSw3ICs2NSw3
IEBAIHRlc3QoZnVuY3Rpb24oKSB7CiAgICAgY29udHJvbGxlci5lbnF1ZXVlKG5ldyBJbnQ4QXJy
YXkoMikpOwogICAgIGNvbnRyb2xsZXIuY2xvc2UoKTsKIAotICAgIGFzc2VydF90aHJvd3MobmV3
IFR5cGVFcnJvcigiUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlciBpcyByZXF1ZXN0ZWQgdG8g
Y2xvc2UiKSwKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvcigiUmVhZGFibGVCeXRlU3Ry
ZWFtQ29udHJvbGxlciBpcyByZXF1ZXN0ZWQgdG8gY2xvc2UiKSwKICAgICAgICAgZnVuY3Rpb24o
KSB7IGNvbnRyb2xsZXIuZW5xdWV1ZShuZXcgSW50OEFycmF5KDEpKTsgfSk7CiB9LCAiQ2FsbGlu
ZyBlbnF1ZXVlKCkgd2hlbiBjbG9zZSBoYXMgYmVlbiByZXF1ZXN0ZWQgYnV0IG5vdCB5ZXQgcGVy
Zm9ybWVkIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvciIpOwogCkBAIC04MCw3ICs4MCw3IEBAIHRl
c3QoZnVuY3Rpb24oKSB7CiAgICAgfSk7CiAgICAgY29udHJvbGxlci5jbG9zZSgpOwogCi0gICAg
YXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCJSZWFkYWJsZVN0cmVhbSBpcyBub3QgcmVhZGFi
bGUiKSwKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvcigiUmVhZGFibGVTdHJlYW0gaXMg
bm90IHJlYWRhYmxlIiksCiAgICAgICAgIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgY29udHJv
bGxlci5lbnF1ZXVlKG5ldyBJbnQ4QXJyYXkoMSkpOwogICAgICAgICB9KTsKQEAgLTk4LDcgKzk4
LDcgQEAgdGVzdChmdW5jdGlvbigpIHsKIAogICAgIGNvbnN0IGludmFsaWRDaHVuayA9IGZ1bmN0
aW9uKCkge307CiAKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoIlByb3ZpZGVkIGNo
dW5rIGlzIG5vdCBhbiBvYmplY3QiKSwKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvcigi
UHJvdmlkZWQgY2h1bmsgaXMgbm90IGFuIG9iamVjdCIpLAogICAgICAgICBmdW5jdGlvbigpIHsg
Y29udHJvbGxlci5lbnF1ZXVlKGludmFsaWRDaHVuayk7IH0pOwogfSwgIkNhbGxpbmcgZW5xdWV1
ZSgpIHdpdGggYSBjaHVuayB0aGF0IGlzIG5vdCBhbiBvYmplY3Qgc2hvdWxkIHRyaG93IGEgVHlw
ZUVycm9yIik7CiAKQEAgLTExNCw3ICsxMTQsNyBAQCB0ZXN0KGZ1bmN0aW9uKCkgewogCiAgICAg
Y29uc3QgaW52YWxpZENodW5rID0ge307CiAKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJy
b3IoIlByb3ZpZGVkIGNodW5rIGlzIG5vdCBhbiBvYmplY3QiKSwKKyAgICBhc3NlcnRfdGhyb3dz
X2pzKFR5cGVFcnJvcigiUHJvdmlkZWQgY2h1bmsgaXMgbm90IGFuIG9iamVjdCIpLAogICAgICAg
ICBmdW5jdGlvbigpIHsgY29udHJvbGxlci5lbnF1ZXVlKGludmFsaWRDaHVuayk7IH0pOwogfSwg
IkNhbGxpbmcgZW5xdWV1ZSgpIHdpdGggYSBjaHVuayB0aGF0IGlzIG5vdCBhbiBBcnJheUJ1ZmZl
clZpZXcgc2hvdWxkIHRocm93IGEgVHlwZUVycm9yIik7CiAKQEAgLTEyOCw3ICsxMjgsNyBAQCB0
ZXN0KGZ1bmN0aW9uKCkgewogICAgICAgICB0eXBlOiAiYnl0ZXMiCiAgICAgfSk7CiAKLSAgICBh
c3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoIlJlYWRhYmxlU3RyZWFtIGlzIG5vdCByZWFkYWJs
ZSIpLAorICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yKCJSZWFkYWJsZVN0cmVhbSBpcyBu
b3QgcmVhZGFibGUiKSwKICAgICAgICAgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICBjb250cm9s
bGVyLmNsb3NlKCk7CiAgICAgICAgICAgICBjb250cm9sbGVyLmVycm9yKCk7CkBAIC0xNDUsNyAr
MTQ1LDcgQEAgdGVzdChmdW5jdGlvbigpIHsKICAgICAgICAgdHlwZTogImJ5dGVzIgogICAgIH0p
OwogCi0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCJSZWFkYWJsZVN0cmVhbSBpcyBu
b3QgcmVhZGFibGUiKSwKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvcigiUmVhZGFibGVT
dHJlYW0gaXMgbm90IHJlYWRhYmxlIiksCiAgICAgICAgIGZ1bmN0aW9uKCkgewogICAgICAgICAg
ICAgY29udHJvbGxlci5lcnJvcigpOwogICAgICAgICAgICAgY29udHJvbGxlci5lcnJvcigpOwpA
QCAtMTYyLDcgKzE2Miw3IEBAIHRlc3QoZnVuY3Rpb24oKSB7CiAgICAgICAgIHR5cGU6ICJieXRl
cyIKICAgICB9KTsKIAotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigiQ2xvc2UgaGFz
IGFscmVhZHkgYmVlbiByZXF1ZXN0ZWQiKSwKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJv
cigiQ2xvc2UgaGFzIGFscmVhZHkgYmVlbiByZXF1ZXN0ZWQiKSwKICAgICAgICAgZnVuY3Rpb24o
KSB7CiAgICAgICAgICAgICBjb250cm9sbGVyLmNsb3NlKCk7CiAgICAgICAgICAgICBjb250cm9s
bGVyLmNsb3NlKCk7CkBAIC0xNzksNyArMTc5LDcgQEAgdGVzdChmdW5jdGlvbigpIHsKICAgICAg
ICAgdHlwZTogImJ5dGVzIgogICAgIH0pOwogCi0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVy
cm9yKCJSZWFkYWJsZVN0cmVhbSBpcyBub3QgcmVhZGFibGUiKSwKKyAgICBhc3NlcnRfdGhyb3dz
X2pzKFR5cGVFcnJvcigiUmVhZGFibGVTdHJlYW0gaXMgbm90IHJlYWRhYmxlIiksCiAgICAgICAg
IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgY29udHJvbGxlci5lcnJvcigpOwogICAgICAgICAg
ICAgY29udHJvbGxlci5jbG9zZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9y
ZWFkYWJsZS1zdHJlYW0tYnlvYi1yZWFkZXIuanMgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRh
YmxlLXN0cmVhbS1ieW9iLXJlYWRlci5qcwppbmRleCBhOTcxOWY3ZTgxNGZlZDI2MDNiMGM3ODhl
Zjc1Nzg2OWM4MzBjMzNkLi5mNzEwNDg5MWY5OGE0MTZiMmY1NmMzZDNkNDRhOWQwZmI0MDlmNmMx
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1ieW9iLXJl
YWRlci5qcworKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1ieW9iLXJl
YWRlci5qcwpAQCAtMTQsMTQgKzE0LDE0IEBAIHRlc3QoZnVuY3Rpb24oKSB7CiB0ZXN0KGZ1bmN0
aW9uKCkgewogICAgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7CiAgICAgY29uc3Qg
dG1wID0gMTI7Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCJDYW4gb25seSBjYWxs
IFJlYWRhYmxlU3RyZWFtLmdldFJlYWRlciBvbiBpbnN0YW5jZXMgb2YgUmVhZGFibGVTdHJlYW0i
KSwKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvcigiQ2FuIG9ubHkgY2FsbCBSZWFkYWJs
ZVN0cmVhbS5nZXRSZWFkZXIgb24gaW5zdGFuY2VzIG9mIFJlYWRhYmxlU3RyZWFtIiksCiAgICAg
ICAgIGZ1bmN0aW9uKCkgeyBycy5nZXRSZWFkZXIuYXBwbHkodG1wKTsgfSk7CiB9LCAiQ2FsbGlu
ZyBnZXRSZWFkZXIoKSB3aXRoIGEgdGhpcyBvYmplY3QgZGlmZmVyZW50IGZyb20gUmVhZGFibGVT
dHJlYW0gc2hvdWxkIHRocm93IGEgVHlwZUVycm9yIik7CiAKIHRlc3QoZnVuY3Rpb24oKSB7CiAg
ICAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oKTsKIAotICAgIGFzc2VydF90aHJvd3Mo
bmV3IFR5cGVFcnJvcigiUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyIG5lZWRzIGEgUmVhZGFibGVC
eXRlU3RyZWFtQ29udHJvbGxlciIpLAorICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yKCJS
ZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIgbmVlZHMgYSBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9s
bGVyIiksCiAgICAgICAgIGZ1bmN0aW9uKCkgeyBycy5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicg
fSk7IH0pOwogfSwgIkNhbGxpbmcgZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pIHdpdGggYSBS
ZWFkYWJsZVN0cmVhbSB3aG9zZSBjb250cm9sbGVyIGlzIGEgUmVhZGFibGVTdHJlYW1EZWZhdWx0
Q29udHJvbGxlciBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3IiKTsKIApAQCAtMzEsNyArMzEsNyBA
QCBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odGVzdCkgewogICAgIGxldCBycCA9IHJlYWRlci5jYW5j
ZWwuYXBwbHkocnMpOwogICAgIGNvbnN0IG15RXJyb3I9IG5ldyBUeXBlRXJyb3IoIkNhbiBvbmx5
IGNhbGwgUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyLmNhbmNlbCgpIG9uIGluc3RhbmNlcyBvZiBS
ZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIiKTsKIAotICAgIHJldHVybiBwcm9taXNlX3JlamVjdHMo
dGVzdCwgbXlFcnJvciwgcnApOworICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0
ZXN0LCBteUVycm9yLCBycCk7CiB9LCAiQ2FsbGluZyBSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIu
Y2FuY2VsKCkgd2l0aCBhIHRoaXMgb2JqZWN0IGRpZmZlcmVudCBmcm9tIFJlYWRhYmxlU3RyZWFt
QllPQlJlYWRlciBzaG91bGQgYmUgcmVqZWN0ZWQiKTsKIAogcHJvbWlzZV90ZXN0KGZ1bmN0aW9u
KHRlc3QpIHsKQEAgLTQ5LDcgKzQ5LDcgQEAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHRlc3QpIHsK
ICAgICBjb250cm9sbGVyLmVycm9yKG15RXJyb3IpOwogICAgIGxldCBycCA9IHJlYWRlci5jYW5j
ZWwoIlNhbXBsZSByZWFzb24iKTsKIAotICAgIHJldHVybiBwcm9taXNlX3JlamVjdHModGVzdCwg
bXlFcnJvciwgcnApOworICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0ZXN0LCBt
eUVycm9yLCBycCk7CiB9LCAiQ2FsbGluZyBSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIuY2FuY2Vs
KCkgb24gYSBSZWFkYWJsZVN0cmVhbSB0aGF0IGhhcyBiZWVuIGVycm9yZWQgc2hvdWxkIHJlc3Vs
dCBpbiBhIHByb21pc2UgcmVqZWN0ZWQgd2l0aCB0aGUgc2FtZSBlcnJvciIpOwogCiBwcm9taXNl
X3Rlc3QoZnVuY3Rpb24odGVzdCkgewpAQCAtMTI2LDcgKzEyNiw3IEBAIHByb21pc2VfdGVzdChm
dW5jdGlvbih0ZXN0KSB7CiAgICAgY29uc3QgbXlFcnJvciA9IG5ldyBUeXBlRXJyb3IoIlNhbXBs
ZSBlcnJvciIpOwogICAgIGNvbnRyb2xsZXIuZXJyb3IobXlFcnJvcik7CiAKLSAgICByZXR1cm4g
cHJvbWlzZV9yZWplY3RzKHRlc3QsIG15RXJyb3IsIHJlYWRlci5jbG9zZWQpOworICAgIHJldHVy
biBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0ZXN0LCBteUVycm9yLCByZWFkZXIuY2xvc2VkKTsK
IH0sICJJZiBjb250cm9sbGVyIGlzIGVycm9yZWQgYWZ0ZXIgUmVhZGFibGVTdHJlYW1CWU9CUmVh
ZGVyIGNyZWF0aW9uLCBSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIuY2xvc2VkIHNob3VsZCBiZSBh
IHByb21pc2UgcmVqZWN0ZWQgd2l0aCB0aGUgc2FtZSBlcnJvciIpOwogCiBwcm9taXNlX3Rlc3Qo
ZnVuY3Rpb24odGVzdCkgewpAQCAtMTQzLDEzICsxNDMsMTMgQEAgcHJvbWlzZV90ZXN0KGZ1bmN0
aW9uKHRlc3QpIHsKICAgICBjb250cm9sbGVyLmVycm9yKG15RXJyb3IpOwogICAgIGNvbnN0IHJl
YWRlciA9IHJzLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsKIAotICAgIHJldHVybiBwcm9t
aXNlX3JlamVjdHModGVzdCwgbXlFcnJvciwgcmVhZGVyLmNsb3NlZCk7CisgICAgcmV0dXJuIHBy
b21pc2VfcmVqZWN0c19leGFjdGx5KHRlc3QsIG15RXJyb3IsIHJlYWRlci5jbG9zZWQpOwogfSwg
IklmIGNvbnRyb2xsZXIgaGFzIGFscmVhZHkgYmVlbiBlcnJvcmVkIHdoZW4gUmVhZGFibGVTdHJl
YW1CWU9CUmVhZGVyIGlzIGNyZWF0ZWQsIFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlci5jbG9zZWQg
c2hvdWxkIGJlIGEgcHJvbWlzZSByZWplY3RlZCB3aXRoIHRoZSBzYW1lIGVycm9yIik7CiAKIHRl
c3QoZnVuY3Rpb24oKSB7CiAgICAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeyB0eXBl
OiAnYnl0ZXMnIH0pOwogICAgIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcih7IG1vZGU6ICdi
eW9iJyB9KTsKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoIkNhbiBvbmx5IGNhbGwg
UmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyLnJlbGVhc2VMb2NrKCkgb24gaW5zdGFuY2VzIG9mIFJl
YWRhYmxlU3RyZWFtQllPQlJlYWRlciIpLAorICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9y
KCJDYW4gb25seSBjYWxsIFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlci5yZWxlYXNlTG9jaygpIG9u
IGluc3RhbmNlcyBvZiBSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIiKSwKICAgICAgICAgZnVuY3Rp
b24oKSB7IHJlYWRlci5yZWxlYXNlTG9jay5hcHBseShycyk7IH0pOwogfSwgIkNhbGxpbmcgUmVh
ZGFibGVTdHJlYW1CWU9CUmVhZGVyLnJlbGVhc2VMb2NrKCkgd2l0aCBhIHRoaXMgb2JqZWN0IGRp
ZmZlcmVudCBmcm9tIFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlciBzaG91bGQgYmUgcmVqZWN0ZWQi
KTsKIApAQCAtMTYyLDcgKzE2Miw3IEBAIHByb21pc2VfdGVzdChmdW5jdGlvbih0ZXN0KSB7CiAg
ICAgcmVhZGVyLnJlbGVhc2VMb2NrKCk7CiAgICAgY29uc3QgbXlFcnJvciA9IG5ldyBUeXBlRXJy
b3IoKTsKIAotICAgIHJldHVybiBwcm9taXNlX3JlamVjdHModGVzdCwgbXlFcnJvciwgcmVhZGVy
LmNsb3NlZCk7CisgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHRlc3QsIG15RXJy
b3IsIHJlYWRlci5jbG9zZWQpOwogfSwgIkNhbGxpbmcgUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVy
LnJlbGVhc2VMb2NrKCkgb24gYSBzdHJlYW0gdGhhdCBpcyByZWFkYWJsZSBzaG91bGQgcmVzdWx0
IGluIFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlci5jbG9zZWQgcHJvbWlzZSB0byBiZSByZWplY3Rl
ZCB3aXRoIGEgVHlwZUVycm9yIik7CiAKIHByb21pc2VfdGVzdChmdW5jdGlvbih0ZXN0KSB7CkBA
IC0xODAsNyArMTgwLDcgQEAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHRlc3QpIHsKICAgICByZWFk
ZXIucmVsZWFzZUxvY2soKTsKICAgICBjb25zdCBteUVycm9yID0gbmV3IFR5cGVFcnJvcigpOwog
Ci0gICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0ZXN0LCBteUVycm9yLCByZWFkZXIuY2xvc2Vk
KTsKKyAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodGVzdCwgbXlFcnJvciwgcmVh
ZGVyLmNsb3NlZCk7CiB9LCAiQ2FsbGluZyBSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIucmVsZWFz
ZUxvY2soKSBvbiBhIHN0cmVhbSB0aGF0IGlzIG5vdCByZWFkYWJsZSBzaG91bGQgcmVzdWx0IGlu
IFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlci5jbG9zZWQgcHJvbWlzZSB0byBiZSByZWplY3RlZCB3
aXRoIGEgVHlwZUVycm9yIik7CiAKIHByb21pc2VfdGVzdChmdW5jdGlvbih0ZXN0KSB7CkBAIC0x
ODksNyArMTg5LDcgQEAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHRlc3QpIHsKICAgICBsZXQgcnAg
PSByZWFkZXIucmVhZC5hcHBseShycyk7CiAgICAgY29uc3QgbXlFcnJvcj0gbmV3IFR5cGVFcnJv
cigiQ2FuIG9ubHkgY2FsbCBSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIucmVhZCgpIG9uIGluc3Rh
bmNlcyBvZiBSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIiKTsKIAotICAgIHJldHVybiBwcm9taXNl
X3JlamVjdHModGVzdCwgbXlFcnJvciwgcnApOworICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNf
ZXhhY3RseSh0ZXN0LCBteUVycm9yLCBycCk7CiB9LCAiQ2FsbGluZyBSZWFkYWJsZVN0cmVhbUJZ
T0JSZWFkZXIucmVhZCgpIHdpdGggYSB0aGlzIG9iamVjdCBkaWZmZXJlbnQgZnJvbSBSZWFkYWJs
ZVN0cmVhbUJZT0JSZWFkZXIgc2hvdWxkIGJlIHJlamVjdGVkIik7CiAKIGRvbmUoKTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtLWJ5b2ItcmVxdWVzdC5q
cyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtLWJ5b2ItcmVxdWVzdC5qcwpp
bmRleCBkNWE2ZjhlNzc4ZjdjMmQ0OWQzMmIxYjQ0MmE4Zjg4Yzc5MTkzZmIzLi5mZGRlMmNmZWM4
ZDQ2NzIzMmVjMTM4NGQ1Yzk3ZWNlYjdmYTJlY2IxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9z
dHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1ieW9iLXJlcXVlc3QuanMKKysrIGIvTGF5b3V0VGVzdHMv
c3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tYnlvYi1yZXF1ZXN0LmpzCkBAIC01Niw3ICs1Niw3IEBA
IHRlc3QoZnVuY3Rpb24oKSB7CiAgICAgcnMuZ2V0UmVhZGVyKCkucmVhZCgpOwogICAgIGNvbnN0
IGJ5b2JSZXEgPSBjb250cm9sbGVyLmJ5b2JSZXF1ZXN0OwogCi0gICAgYXNzZXJ0X3Rocm93cyhu
ZXcgVHlwZUVycm9yKCJDYW4gb25seSBjYWxsIFJlYWRhYmxlU3RyZWFtQllPQlJlcXVlc3QucmVz
cG9uZCBvbiBpbnN0YW5jZXMgb2YgUmVhZGFibGVTdHJlYW1CWU9CUmVxdWVzdCIpLAorICAgIGFz
c2VydF90aHJvd3NfanMoVHlwZUVycm9yKCJDYW4gb25seSBjYWxsIFJlYWRhYmxlU3RyZWFtQllP
QlJlcXVlc3QucmVzcG9uZCBvbiBpbnN0YW5jZXMgb2YgUmVhZGFibGVTdHJlYW1CWU9CUmVxdWVz
dCIpLAogICAgICAgICBmdW5jdGlvbigpIHsgYnlvYlJlcS5yZXNwb25kLmFwcGx5KHJzLCAxKTsg
fSk7CiAKIH0sICJDYWxsaW5nIHJlc3BvbmQoKSB3aXRoIGEgdGhpcyBvYmplY3QgZGlmZmVyZW50
IGZyb20gUmVhZGFibGVTdHJlYW1CWU9CUmVxdWVzdCBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3Ii
KTsKQEAgLTc1LDcgKzc1LDcgQEAgdGVzdChmdW5jdGlvbigpIHsKICAgICBycy5nZXRSZWFkZXIo
KS5yZWFkKCk7CiAgICAgY29uc3QgYnlvYlJlcSA9IGNvbnRyb2xsZXIuYnlvYlJlcXVlc3Q7CiAK
LSAgICBhc3NlcnRfdGhyb3dzKG5ldyBSYW5nZUVycm9yKCJieXRlc1dyaXR0ZW4gaGFzIGFuIGlu
Y29ycmVjdCB2YWx1ZSIpLAorICAgIGFzc2VydF90aHJvd3NfZXhhY3RseShuZXcgUmFuZ2VFcnJv
cigiYnl0ZXNXcml0dGVuIGhhcyBhbiBpbmNvcnJlY3QgdmFsdWUiKSwKICAgICAgICAgZnVuY3Rp
b24oKSB7IGJ5b2JSZXEucmVzcG9uZCgtMSk7IH0pOwogfSwgIkNhbGxpbmcgcmVzcG9uZCgpIHdp
dGggYSBuZWdhdGl2ZSBieXRlc1dyaXR0ZW4gdmFsdWUgc2hvdWxkIHRocm93IGEgUmFuZ2VFcnJv
ciIpOwogCkBAIC05Myw3ICs5Myw3IEBAIHRlc3QoZnVuY3Rpb24oKSB7CiAgICAgcnMuZ2V0UmVh
ZGVyKCkucmVhZCgpOwogICAgIGNvbnN0IGJ5b2JSZXEgPSBjb250cm9sbGVyLmJ5b2JSZXF1ZXN0
OwogCi0gICAgYXNzZXJ0X3Rocm93cyhuZXcgUmFuZ2VFcnJvcigiYnl0ZXNXcml0dGVuIGhhcyBh
biBpbmNvcnJlY3QgdmFsdWUiKSwKKyAgICBhc3NlcnRfdGhyb3dzX2V4YWN0bHkobmV3IFJhbmdl
RXJyb3IoImJ5dGVzV3JpdHRlbiBoYXMgYW4gaW5jb3JyZWN0IHZhbHVlIiksCiAgICAgICAgIGZ1
bmN0aW9uKCkgeyBieW9iUmVxLnJlc3BvbmQoImFiYyIpOyB9KTsKIH0sICJDYWxsaW5nIHJlc3Bv
bmQoKSB3aXRoIGEgYnl0ZXNXcml0dGVuIHZhbHVlIHdoaWNoIGlzIG5vdCBhIG51bWJlciBzaG91
bGQgdGhyb3cgYSBSYW5nZUVycm9yIik7CiAKQEAgLTExMSw3ICsxMTEsNyBAQCB0ZXN0KGZ1bmN0
aW9uKCkgewogICAgIHJzLmdldFJlYWRlcigpLnJlYWQoKTsKICAgICBjb25zdCBieW9iUmVxID0g
Y29udHJvbGxlci5ieW9iUmVxdWVzdDsKIAotICAgIGFzc2VydF90aHJvd3MobmV3IFJhbmdlRXJy
b3IoImJ5dGVzV3JpdHRlbiBoYXMgYW4gaW5jb3JyZWN0IHZhbHVlIiksCisgICAgYXNzZXJ0X3Ro
cm93c19leGFjdGx5KG5ldyBSYW5nZUVycm9yKCJieXRlc1dyaXR0ZW4gaGFzIGFuIGluY29ycmVj
dCB2YWx1ZSIpLAogICAgICAgICBmdW5jdGlvbigpIHsgYnlvYlJlcS5yZXNwb25kKE51bWJlci5Q
T1NJVElWRV9JTkZJTklUWSk7IH0pOwogfSwgIkNhbGxpbmcgcmVzcG9uZCgpIHdpdGggYSBwb3Np
dGl2ZSBpbmZpbml0eSBieXRlc1dyaXR0ZW4gdmFsdWUgc2hvdWxkIHRocm93IGEgUmFuZ2VFcnJv
ciIpOwogCkBAIC0xMzAsNyArMTMwLDcgQEAgdGVzdChmdW5jdGlvbigpIHsKICAgICBjb25zdCBi
eW9iUmVxID0gY29udHJvbGxlci5ieW9iUmVxdWVzdDsKICAgICBjb250cm9sbGVyLmNsb3NlKCk7
CiAKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoImJ5dGVzV3JpdHRlbiBpcyBkaWZm
ZXJlbnQgZnJvbSAwIGV2ZW4gdGhvdWdoIHN0cmVhbSBpcyBjbG9zZWQiKSwKKyAgICBhc3NlcnRf
dGhyb3dzX2pzKFR5cGVFcnJvcigiYnl0ZXNXcml0dGVuIGlzIGRpZmZlcmVudCBmcm9tIDAgZXZl
biB0aG91Z2ggc3RyZWFtIGlzIGNsb3NlZCIpLAogICAgICAgICBmdW5jdGlvbigpIHsgYnlvYlJl
cS5yZXNwb25kKDEpOyB9KTsKIH0sICJDYWxsaW5nIHJlc3BvbmQoKSB3aXRoIGEgYnl0ZXNXcml0
dGVuIHZhbHVlIGRpZmZlcmVudCBmcm9tIDAgd2hlbiBzdHJlYW0gaXMgY2xvc2VkIHNob3VsZCB0
aHJvdyBhIFR5cGVFcnJvciIpOwogCkBAIC0xNjgsNyArMTY4LDcgQEAgdGVzdChmdW5jdGlvbigp
IHsKIAogICAgIHJzLmdldFJlYWRlcigpLnJlYWQoKTsKICAgICBjb25zdCBieW9iUmVxID0gY29u
dHJvbGxlci5ieW9iUmVxdWVzdDsKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBSYW5nZUVycm9yKCJi
eXRlc1dyaXR0ZW4gdmFsdWUgaXMgdG9vIGdyZWF0IiksCisgICAgYXNzZXJ0X3Rocm93c19leGFj
dGx5KG5ldyBSYW5nZUVycm9yKCJieXRlc1dyaXR0ZW4gdmFsdWUgaXMgdG9vIGdyZWF0IiksCiAg
ICAgICAgIGZ1bmN0aW9uKCkgeyBieW9iUmVxLnJlc3BvbmQoMTcpOyB9KTsKIAogfSwgIkNhbGxp
bmcgcmVzcG9uZCgpIHdpdGggYSBieXRlc1dyaXR0ZW4gdmFsdWUgZ3JlYXRlciB0aGFuIGF1dG9B
bGxvY2F0ZUNodW5rU2l6ZSBzaG91bGQgZmFpbCIpOwpAQCAtMjEyLDcgKzIxMiw3IEBAIHRlc3Qo
ZnVuY3Rpb24oKSB7CiAgICAgcnMuZ2V0UmVhZGVyKCkucmVhZCgpOwogICAgIGNvbnN0IGJ5b2JS
ZXEgPSBjb250cm9sbGVyLmJ5b2JSZXF1ZXN0OwogCi0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlw
ZUVycm9yKCJDYW4gb25seSBjYWxsIFJlYWRhYmxlU3RyZWFtQllPQlJlcXVlc3QucmVzcG9uZFdp
dGhOZXdWaWV3IG9uIGluc3RhbmNlcyBvZiBSZWFkYWJsZVN0cmVhbUJZT0JSZXF1ZXN0IiksCisg
ICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IoIkNhbiBvbmx5IGNhbGwgUmVhZGFibGVTdHJl
YW1CWU9CUmVxdWVzdC5yZXNwb25kV2l0aE5ld1ZpZXcgb24gaW5zdGFuY2VzIG9mIFJlYWRhYmxl
U3RyZWFtQllPQlJlcXVlc3QiKSwKICAgICAgICAgZnVuY3Rpb24oKSB7IGJ5b2JSZXEucmVzcG9u
ZFdpdGhOZXdWaWV3LmFwcGx5KHJzLCBuZXcgVWludDhBcnJheSgxKSk7IH0pOwogCiB9LCAiQ2Fs
bGluZyByZXNwb25kV2l0aE5ld1ZpZXcoKSB3aXRoIGEgdGhpcyBvYmplY3QgZGlmZmVyZW50IGZy
b20gUmVhZGFibGVTdHJlYW1CWU9CUmVxdWVzdCBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3IiKTsK
QEAgLTIzMSw3ICsyMzEsNyBAQCB0ZXN0KGZ1bmN0aW9uKCkgewogICAgIHJzLmdldFJlYWRlcigp
LnJlYWQoKTsKICAgICBjb25zdCBieW9iUmVxID0gY29udHJvbGxlci5ieW9iUmVxdWVzdDsKIAot
ICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigiUHJvdmlkZWQgdmlldyBpcyBub3QgYW4g
b2JqZWN0IiksCisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IoIlByb3ZpZGVkIHZpZXcg
aXMgbm90IGFuIG9iamVjdCIpLAogICAgICAgICBmdW5jdGlvbigpIHsgYnlvYlJlcS5yZXNwb25k
V2l0aE5ld1ZpZXcoZnVuY3Rpb24oKSB7fSk7IH0pOwogCiB9LCAiQ2FsbGluZyByZXNwb25kV2l0
aE5ld1ZpZXcoKSB3aXRoIGFuIGFyZ3VtZW50IHRoYXQgaXMgbm90IGFuIG9iamVjdCBzaG91bGQg
dGhyb3cgYSBUeXBlRXJyb3IiKTsKQEAgLTI1MCw3ICsyNTAsNyBAQCB0ZXN0KGZ1bmN0aW9uKCkg
ewogICAgIHJzLmdldFJlYWRlcigpLnJlYWQoKTsKICAgICBjb25zdCBieW9iUmVxID0gY29udHJv
bGxlci5ieW9iUmVxdWVzdDsKIAotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigiUHJv
dmlkZWQgdmlldyBpcyBub3QgYW4gQXJyYXlCdWZmZXJWaWV3IiksCisgICAgYXNzZXJ0X3Rocm93
c19qcyhUeXBlRXJyb3IoIlByb3ZpZGVkIHZpZXcgaXMgbm90IGFuIEFycmF5QnVmZmVyVmlldyIp
LAogICAgICAgICBmdW5jdGlvbigpIHsgYnlvYlJlcS5yZXNwb25kV2l0aE5ld1ZpZXcoe30pOyB9
KTsKIAogfSwgIkNhbGxpbmcgcmVzcG9uZFdpdGhOZXdWaWV3KCkgd2l0aCBhbiBhcmd1bWVudCB0
aGF0IGlzIG5vdCBhbiBBcnJheUJ1ZmZlclZpZXcgc2hvdWxkIHRocm93IGEgVHlwZUVycm9yIik7
CkBAIC0yOTAsNyArMjkwLDcgQEAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHRlc3QpIHsKIAogICAg
IGNvbnN0IGVycm9yID0gbmV3IFJhbmdlRXJyb3IoIkludmFsaWQgdmFsdWUgZm9yIHZpZXcuYnl0
ZUxlbmd0aCIpOwogCi0gICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0ZXN0LCBlcnJvciwgcnMu
Z2V0UmVhZGVyKCkucmVhZCgpKTsKKyAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHko
dGVzdCwgZXJyb3IsIHJzLmdldFJlYWRlcigpLnJlYWQoKSk7CiB9LCAiV2hlbiB1c2luZyBhdXRv
QWxsb2NhdGVDaHVua1NpemUsIGNhbGxpbmcgcmVzcG9uZFdpdGhOZXdWaWV3KCkgc2hvdWxkIHRo
cm93IGEgUmFuZ2VFcnJvciBpZiB2aWV3LmJ5dGVPZmZzZXQgaXMgZGlmZmVyZW50IGZyb20gMCIp
OwogCiBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odGVzdCkgewpAQCAtMzA4LDcgKzMwOCw3IEBAIHBy
b21pc2VfdGVzdChmdW5jdGlvbih0ZXN0KSB7CiAKICAgICBjb25zdCBlcnJvciA9IG5ldyBSYW5n
ZUVycm9yKCJJbnZhbGlkIHZhbHVlIGZvciB2aWV3LmJ5dGVPZmZzZXQiKTsKIAotICAgIHJldHVy
biBwcm9taXNlX3JlamVjdHModGVzdCwgZXJyb3IsIHJzLmdldFJlYWRlcigpLnJlYWQoKSk7Cisg
ICAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHRlc3QsIGVycm9yLCBycy5nZXRSZWFk
ZXIoKS5yZWFkKCkpOwogfSwgIldoZW4gdXNpbmcgYXV0b0FsbG9jYXRlQ2h1bmtTaXplLCBjYWxs
aW5nIHJlc3BvbmRXaXRoTmV3VmlldygpIHNob3VsZCB0aHJvdyBhIFJhbmdlRXJyb3IgaWYgdmll
dy5ieXRlTGVuZ3RoIGlzIGRpZmZlcmVudCBmcm9tIGF1dG9BbGxvY2F0ZUNodW5rU2l6ZSIpOwog
CiBkb25lKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVh
bS1nZXRSZWFkZXIuaHRtbCBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtLWdl
dFJlYWRlci5odG1sCmluZGV4IDZmYzVlNGZiOTIwOGEzOWFlZmJjOTQxNTgwY2UxODBlN2YwMzYx
MjQuLjZjOTYyMmY3YTY5N2ZhODQ0YjUxNjk5MzJhODZlMjVlNmM3OGVkN2EgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtLWdldFJlYWRlci5odG1sCisrKyBi
L0xheW91dFRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtLWdldFJlYWRlci5odG1sCkBAIC0x
MiwxMiArMTIsMTIgQEAgdGVzdChmdW5jdGlvbigpIHsKIAogdGVzdChmdW5jdGlvbigpIHsKICAg
ICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgpOwotICAgIGFzc2VydF90aHJvd3MobmV3
IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsgcnMuZ2V0UmVhZGVyKHttb2RlOiAnYnlvYid9KSB9
KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7IHJzLmdldFJl
YWRlcih7bW9kZTogJ2J5b2InfSkgfSk7CiB9LCAiZ2V0UmVhZGVyKHttb2RlOiAnYnlvYid9KSBz
aG91bGQgcmV0dXJuIGEgVHlwZUVycm9yIGFzIEJZT0IgcmVhZGVyIGlzIG5vdCB5ZXQgaW1wbGVt
ZW50ZWQiKTsKIAogdGVzdChmdW5jdGlvbigpIHsKICAgICBjb25zdCBycyA9IG5ldyBSZWFkYWJs
ZVN0cmVhbSgpOwogICAgIC8vIEFueSB2YWx1ZSBkaWZmZXJlbnQgZnJvbSB1bmRlZmluZWQgYW5k
ICdieW9iJyBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3IuCi0gICAgYXNzZXJ0X3Rocm93cyhuZXcg
VHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgeyBycy5nZXRSZWFkZXIoe21vZGUgOiAnYU1vZGUnfSkg
fSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeyBycy5nZXRS
ZWFkZXIoe21vZGUgOiAnYU1vZGUnfSkgfSk7CiB9LCAiZ2V0UmVhZGVyKHttb2RlOiAnYU1vZGUn
fSkgc2hvdWxkIHJldHVybiBhIFR5cGVFcnJvciBhcyAnYU1vZGUnIGlzIGRpZmZlcmVudCBmcm9t
IHVuZGVmaW5lZCBhbmQgJ2J5b2InIik7CiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2JhZC1zdHJhdGVnaWVzLmh0bWwg
Yi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9iYWQtc3RyYXRl
Z2llcy5odG1sCmluZGV4IDkwOGI4YWNjZTM0YzcxYzNjMGY5MzUyYWQyYmE4NjI5ZDI1Y2U5Mzgu
LmUxZTk1M2UxNDFhZTllZjRjMzlmZTY2ZWI0MDk4ZjM0ODlhMzlhZTYgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2JhZC1zdHJhdGVnaWVz
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24v
YmFkLXN0cmF0ZWdpZXMuaHRtbApAQCAtNyw3ICs3LDcgQEAKIHRlc3QoZnVuY3Rpb24oKSB7CiAg
ICAgdmFyIHRoZUVycm9yID0gbmV3IEVycm9yKCdhIHVuaXF1ZSBzdHJpbmcnKTsKIAotICAgIGFz
c2VydF90aHJvd3ModGhlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgIGFzc2VydF90aHJvd3NfZXhh
Y3RseSh0aGVFcnJvciwgZnVuY3Rpb24oKSB7CiAgICAgICAgIG5ldyBXcml0YWJsZVN0cmVhbSh7
fSwgewogICAgICAgICAgICAgZ2V0IHNpemUoKSB7CiAgICAgICAgICAgICAgICAgdGhyb3cgdGhl
RXJyb3I7CkBAIC02NCw3ICs2NCw3IEBAIHRlc3QyLnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgICAg
IH0pOwogCiAgICAgICAgIHZhciB3cml0ZUZ1bmN0aW9uID0gZnVuY3Rpb24oaSwgcikgewotICAg
ICAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgUmFuZ2VFcnJvcigpLCBmdW5jdGlvbigpIHsgdGhy
b3cgcjsgfSwgJ3dyaXRlIHNob3VsZCByZWplY3Qgd2l0aCBhIFJhbmdlRXJyb3IgZm9yICcgKyBl
bGVtZW50c1tpXSk7CisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFJhbmdlRXJyb3IsIGZ1
bmN0aW9uKCkgeyB0aHJvdyByOyB9LCAnd3JpdGUgc2hvdWxkIHJlamVjdCB3aXRoIGEgUmFuZ2VF
cnJvciBmb3IgJyArIGVsZW1lbnRzW2ldKTsKICAgICAgICAgICAgIHRoZUVycm9yW2ldID0gcjsK
ICAgICAgICAgfTsKICAgICAgICAgd3Mud3JpdGUoJ2EnKS50aGVuKApAQCAtODYsNyArODYsNyBA
QCB0ZXN0Mi5zdGVwKGZ1bmN0aW9uKCkgewogdGVzdChmdW5jdGlvbigpIHsKICAgICB2YXIgdGhl
RXJyb3IgPSBuZXcgRXJyb3IoJ2EgdW5pcXVlIHN0cmluZycpOwogCi0gICAgYXNzZXJ0X3Rocm93
cyh0aGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgYXNzZXJ0X3Rocm93c19leGFjdGx5KHRoZUVy
cm9yLCBmdW5jdGlvbigpIHsKICAgICAgICAgbmV3IFdyaXRhYmxlU3RyZWFtKHt9LCB7CiAgICAg
ICAgICAgICBzaXplOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICByZXR1cm4gMTsKQEAg
LTEwMCw3ICsxMDAsNyBAQCB0ZXN0KGZ1bmN0aW9uKCkgewogCiB0ZXN0KGZ1bmN0aW9uKCkgewog
ICAgIGZvciAodmFyIGhpZ2hXYXRlck1hcmsgb2YgWy0xLCAtSW5maW5pdHldKSB7Ci0gICAgICAg
IGFzc2VydF90aHJvd3MobmV3IFJhbmdlRXJyb3IoKSwgZnVuY3Rpb24oKSB7CisgICAgICAgIGFz
c2VydF90aHJvd3NfanMoUmFuZ2VFcnJvciwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICBuZXcg
V3JpdGFibGVTdHJlYW0oe30sIHsKICAgICAgICAgICAgICAgICBzaXplOiBmdW5jdGlvbigpIHsK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CkBAIC0xMTEsNyArMTExLDcgQEAgdGVzdChm
dW5jdGlvbigpIHsKICAgICB9CiAKICAgICBmb3IgKHZhciBoaWdoV2F0ZXJNYXJrIG9mIFtOYU4s
ICdmb28nLCB7fV0pIHsKLSAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgUmFuZ2VFcnJvcigpLCBm
dW5jdGlvbigpIHsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhSYW5nZUVycm9yLCBmdW5jdGlv
bigpIHsKICAgICAgICAgICAgIG5ldyBXcml0YWJsZVN0cmVhbSh7fSwgewogICAgICAgICAgICAg
ICAgIHNpemU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2Jh
ZC11bmRlcmx5aW5nLXNpbmtzLmh0bWwgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1p
bXBsZW1lbnRhdGlvbi9iYWQtdW5kZXJseWluZy1zaW5rcy5odG1sCmluZGV4IDliZTZmZmNkNTA4
ZDNjZGVmMzZiN2NiMDE4MjY0NTk4OGZkNWYyYWMuLjM1MjdhMzg2YzQ1ZDgxZDQ1MmIwMGMzOTVl
ZGU2OWIxYzM5NGYzYjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNl
LWltcGxlbWVudGF0aW9uL2JhZC11bmRlcmx5aW5nLXNpbmtzLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vYmFkLXVuZGVybHlpbmctc2lua3Mu
aHRtbApAQCAtOCw3ICs4LDcgQEAKIHRlc3QoZnVuY3Rpb24oKSB7CiAgICAgdmFyIHRoZUVycm9y
ID0gbmV3IEVycm9yKCdhIHVuaXF1ZSBzdHJpbmcnKTsKIAotICAgIGFzc2VydF90aHJvd3ModGhl
RXJyb3IsIGZ1bmN0aW9uKCkgeworICAgIGFzc2VydF90aHJvd3NfZXhhY3RseSh0aGVFcnJvciwg
ZnVuY3Rpb24oKSB7CiAgICAgICAgIG5ldyBXcml0YWJsZVN0cmVhbSh7CiAgICAgICAgICAgICBn
ZXQgc3RhcnQoKSB7CiAgICAgICAgICAgICAgICAgdGhyb3cgdGhlRXJyb3I7CkBAIC0yMCw3ICsy
MCw3IEBAIHRlc3QoZnVuY3Rpb24oKSB7CiB0ZXN0KGZ1bmN0aW9uKCkgewogICAgIHZhciB0aGVF
cnJvciA9IG5ldyBFcnJvcignYSB1bmlxdWUgc3RyaW5nJyk7CiAKLSAgICBhc3NlcnRfdGhyb3dz
KHRoZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICBhc3NlcnRfdGhyb3dzX2V4YWN0bHkodGhlRXJy
b3IsIGZ1bmN0aW9uKCkgewogICAgICAgICBuZXcgV3JpdGFibGVTdHJlYW0oewogICAgICAgICAg
ICAgc3RhcnQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgIHRocm93IHRoZUVycm9yOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24v
dHJhbnNmb3JtLXN0cmVhbS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVy
ZW5jZS1pbXBsZW1lbnRhdGlvbi90cmFuc2Zvcm0tc3RyZWFtLWV4cGVjdGVkLnR4dAppbmRleCAx
OGNhMGI1YzZmMTIwMmQ2ZjYzZDhmYWU5NzMxMmY0MTQ1MGMwNjBlLi4xMjFjMjRmOGVkMWIwOWQz
ZmY3MzJhMGYzODllMjdjMThjYjllMGIxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1z
L3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi90cmFuc2Zvcm0tc3RyZWFtLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi90cmFuc2Zv
cm0tc3RyZWFtLWV4cGVjdGVkLnR4dApAQCAtMSw2ICsxLDYgQEAKIAogUEFTUyBUcmFuc2Zvcm1T
dHJlYW0gY2FuIGJlIGNvbnN0cnVjdGVkIHdpdGggYSB0cmFuc2Zvcm0gZnVuY3Rpb24KLUZBSUwg
VHJhbnNmb3JtU3RyZWFtIGNhbm5vdCBiZSBjb25zdHJ1Y3RlZCB3aXRoIG5vIHRyYW5zZm9ybSBm
dW5jdGlvbiBhc3NlcnRfdGhyb3dzOiBUcmFuc2Zvcm1TdHJlYW0gY2Fubm90IGJlIGNvbnN0cnVj
dGVkIHdpdGggbm8gYXJndW1lbnRzIGZ1bmN0aW9uICJmdW5jdGlvbiAoKSB7IG5ldyBUcmFuc2Zv
cm1TdHJlYW0oKTsgfSIgZGlkIG5vdCB0aHJvdworRkFJTCBUcmFuc2Zvcm1TdHJlYW0gY2Fubm90
IGJlIGNvbnN0cnVjdGVkIHdpdGggbm8gdHJhbnNmb3JtIGZ1bmN0aW9uIGFzc2VydF90aHJvd3Nf
anM6IFRyYW5zZm9ybVN0cmVhbSBjYW5ub3QgYmUgY29uc3RydWN0ZWQgd2l0aCBubyBhcmd1bWVu
dHMgZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsgbmV3IFRyYW5zZm9ybVN0cmVhbSgpOyB9IiBkaWQg
bm90IHRocm93CiBGQUlMIFRyYW5zZm9ybVN0cmVhbSBpbnN0YW5jZXMgbXVzdCBoYXZlIHdyaXRh
YmxlIGFuZCByZWFkYWJsZSBwcm9wZXJ0aWVzIG9mIHRoZSBjb3JyZWN0IHR5cGVzIGFzc2VydF90
cnVlOiBpdCBoYXMgYSB3cml0YWJsZSBwcm9wZXJ0eSBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQog
RkFJTCBUcmFuc2Zvcm1TdHJlYW0gd3JpdGFibGUgc3RhcnRzIGluIHRoZSB3cml0YWJsZSBzdGF0
ZSBhc3NlcnRfZXF1YWxzOiB3cml0YWJsZSBzdGFydHMgd3JpdGFibGUgZXhwZWN0ZWQgKHN0cmlu
ZykgIndyaXRhYmxlIiBidXQgZ290ICh1bmRlZmluZWQpIHVuZGVmaW5lZAogRkFJTCBQYXNzLXRo
cm91Z2ggc3luYyBUcmFuc2Zvcm1TdHJlYW06IGNhbiByZWFkIGZyb20gcmVhZGFibGUgd2hhdCBp
cyBwdXQgaW50byB3cml0YWJsZSB0cy53cml0YWJsZS53cml0ZSBpcyBub3QgYSBmdW5jdGlvbi4g
KEluICd0cy53cml0YWJsZS53cml0ZSgnYScpJywgJ3RzLndyaXRhYmxlLndyaXRlJyBpcyB1bmRl
ZmluZWQpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1l
bnRhdGlvbi90cmFuc2Zvcm0tc3RyZWFtLmh0bWwgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVy
ZW5jZS1pbXBsZW1lbnRhdGlvbi90cmFuc2Zvcm0tc3RyZWFtLmh0bWwKaW5kZXggM2Q5OTJkZGY4
M2FmMTE1YjcyMmZkZDQ3YmQ5YjAxZTRlYzc4ODA0Yi4uNjc5NTBhMjg1OTcyNWNmNzViMzQxZGQw
ZjJmODQ1MDgzMjFhOTIxMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVu
Y2UtaW1wbGVtZW50YXRpb24vdHJhbnNmb3JtLXN0cmVhbS5odG1sCisrKyBiL0xheW91dFRlc3Rz
L3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3RyYW5zZm9ybS1zdHJlYW0uaHRtbApA
QCAtMTAsOCArMTAsOCBAQCB0ZXN0KGZ1bmN0aW9uKCkgewogfSwgJ1RyYW5zZm9ybVN0cmVhbSBj
YW4gYmUgY29uc3RydWN0ZWQgd2l0aCBhIHRyYW5zZm9ybSBmdW5jdGlvbicpOwogCiB0ZXN0KGZ1
bmN0aW9uKCkgewotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigp
IHsgbmV3IFRyYW5zZm9ybVN0cmVhbSgpOyB9LCAnVHJhbnNmb3JtU3RyZWFtIGNhbm5vdCBiZSBj
b25zdHJ1Y3RlZCB3aXRoIG5vIGFyZ3VtZW50cycpOwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5
cGVFcnJvcigpLCBmdW5jdGlvbigpIHsgbmV3IFRyYW5zZm9ybVN0cmVhbSh7fSk7IH0sICdUcmFu
c2Zvcm1TdHJlYW0gY2Fubm90IGJlIGNvbnN0cnVjdGVkIHdpdGggYW4gZW1wdHkgb2JqZWN0Jyk7
CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeyBuZXcgVHJhbnNm
b3JtU3RyZWFtKCk7IH0sICdUcmFuc2Zvcm1TdHJlYW0gY2Fubm90IGJlIGNvbnN0cnVjdGVkIHdp
dGggbm8gYXJndW1lbnRzJyk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsIGZ1bmN0
aW9uKCkgeyBuZXcgVHJhbnNmb3JtU3RyZWFtKHt9KTsgfSwgJ1RyYW5zZm9ybVN0cmVhbSBjYW5u
b3QgYmUgY29uc3RydWN0ZWQgd2l0aCBhbiBlbXB0eSBvYmplY3QnKTsKIH0sICdUcmFuc2Zvcm1T
dHJlYW0gY2Fubm90IGJlIGNvbnN0cnVjdGVkIHdpdGggbm8gdHJhbnNmb3JtIGZ1bmN0aW9uJyk7
CiAKIHRlc3QoZnVuY3Rpb24oKSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJhbmltYXRp
b25zL2FjY2VsZXJhdGVkLWFuaW1hdGlvbi1zaW5nbGUta2V5ZnJhbWUuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmFuaW1hdGlvbnMvYWNjZWxlcmF0ZWQtYW5pbWF0aW9uLXNpbmdsZS1rZXlmcmFtZS5o
dG1sCmluZGV4IGYzZjUzYTk5ZjBkNjMxZjYxZGRjNDMxZjdjMDQ1ZTNkYmQ5MzUxYTIuLjVhN2Jl
MDliODAxODg3NDQyMWE3Yjg2MTE1Y2U0YjQ5YWVhOTlhZTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3dlYmFuaW1hdGlvbnMvYWNjZWxlcmF0ZWQtYW5pbWF0aW9uLXNpbmdsZS1rZXlmcmFtZS5o
dG1sCisrKyBiL0xheW91dFRlc3RzL3dlYmFuaW1hdGlvbnMvYWNjZWxlcmF0ZWQtYW5pbWF0aW9u
LXNpbmdsZS1rZXlmcmFtZS5odG1sCkBAIC0xNyw3ICsxNyw3IEBACiA8ZGl2IGlkPSJ0YXJnZXQi
PjwvZGl2PgogPHNjcmlwdD4KIAotYXN5bmNfdGVzdChhc3luYyB0ID0+IHsKK3Byb21pc2VfdGVz
dChhc3luYyB0ID0+IHsKICAgICAvLyBTdGFydCBhbiBhbmltYXRpb24gd2l0aCBhbiBpbXBsaWNp
dCBmcm9tIGtleWZyYW1lLgogICAgIGNvbnN0IGFuaW1hdGlvbiA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJ0YXJnZXQiKS5hbmltYXRlKHsgdHJhbnNmb3JtOiAidHJhbnNsYXRlWCg2MDBweCki
IH0sIHsgZHVyYXRpb246IDEwMDAgKiAxMDAwIH0pOwogCkBAIC0yNyw3ICsyNyw2IEBAIGFzeW5j
X3Rlc3QoYXN5bmMgdCA9PiB7CiAgICAgYXdhaXQgbmV3IFByb21pc2UocmVxdWVzdEFuaW1hdGlv
bkZyYW1lKTsKIAogICAgIGFzc2VydF9lcXVhbHMoaW50ZXJuYWxzLmFjY2VsZXJhdGVkQW5pbWF0
aW9uc0ZvckVsZW1lbnQodGFyZ2V0KS5sZW5ndGgsIDEsICJUaGVyZSBzaG91bGQgYmUgYW4gYWNj
ZWxlcmF0ZWQgYW5pbWF0aW9uLiIpOwotICAgIHQuZG9uZSgpOwogfSwgIkEgdHJhbnNmb3JtIGFu
aW1hdGlvbiB3aXRoIGEgc2luZ2xlIGtleWZyYW1lIHNob3VsZCBiZSBhYmxlIHRvIHJ1biBhY2Nl
bGVyYXRlZC4iKTsKIAogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJhbmlt
YXRpb25zL2ZyYW1lLXJhdGUvYW5pbWF0aW9uLWZyYW1lLXJhdGUuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmFuaW1hdGlvbnMvZnJhbWUtcmF0ZS9hbmltYXRpb24tZnJhbWUtcmF0ZS5odG1sCmluZGV4
IGVmMzk2MmQ0YWRkNTdkODJjZTg2MjgwNjJiMDNmMTc2YzUxYzczYTkuLmRiNWQ1YjIxMjdhZDZk
OWM5NDZjZDNjMTUzNWYwZjg4MTIyNzg4ODkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYmFu
aW1hdGlvbnMvZnJhbWUtcmF0ZS9hbmltYXRpb24tZnJhbWUtcmF0ZS5odG1sCisrKyBiL0xheW91
dFRlc3RzL3dlYmFuaW1hdGlvbnMvZnJhbWUtcmF0ZS9hbmltYXRpb24tZnJhbWUtcmF0ZS5odG1s
CkBAIC0yNyw3ICsyNyw3IEBAIHRlc3QodCA9PiB7CiB0ZXN0KHQgPT4gewogICAgIGNvbnN0IGFu
aW1hdGlvbiA9IG5ldyBBbmltYXRpb247CiAgICAgZm9yIChsZXQgdmFsdWUgb2YgWyJkZWZhdWx0
IiwgIjEyMCIsIG51bGwsIHVuZGVmaW5lZCwgW10sIHt9XSkgewotICAgICAgICBhc3NlcnRfdGhy
b3dzKG5ldyBUeXBlRXJyb3IsICgpID0+IGFuaW1hdGlvbi5mcmFtZVJhdGUgPSB2YWx1ZSwgYFNl
dHRpbmcgdGhlIHZhbHVlICR7dmFsdWV9IHRocm93c2ApOworICAgICAgICBhc3NlcnRfdGhyb3dz
X2pzKFR5cGVFcnJvciwgKCkgPT4gYW5pbWF0aW9uLmZyYW1lUmF0ZSA9IHZhbHVlLCBgU2V0dGlu
ZyB0aGUgdmFsdWUgJHt2YWx1ZX0gdGhyb3dzYCk7CiAgICAgICAgIGFzc2VydF9lcXVhbHMoYW5p
bWF0aW9uLmZyYW1lUmF0ZSwgImF1dG8iLCBgU2V0dGluZyB0aGUgaW52YWxpZCB2YWx1ZSAiJHt2
YWx1ZX0iIGRvZXMgbm90IGNoYW5nZSB0aGUgdmFsdWVgKTsKICAgICB9CiB9LCAiSW52YWxpZCBh
bmltYXRpb24uZnJhbWVSYXRlIHZhbHVlcyIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
YW5pbWF0aW9ucy9zY2hlZHVsaW5nLW9mLWFuaW1hdGlvbi13aXRoLXN0ZXBzLXRpbWluZy1mdW5j
dGlvbi1vbi1lZmZlY3QuaHRtbCBiL0xheW91dFRlc3RzL3dlYmFuaW1hdGlvbnMvc2NoZWR1bGlu
Zy1vZi1hbmltYXRpb24td2l0aC1zdGVwcy10aW1pbmctZnVuY3Rpb24tb24tZWZmZWN0Lmh0bWwK
aW5kZXggZjRiN2YwODU4NGIxZDg2N2EzOWNmMTgxNzU5MTYyYjNmYWYwMjdjYy4uYzI2NzhmNTQw
ZDk0MjZhODViYTkyNTIxMzUzYWZlYjU1MDUwNjA5YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
d2ViYW5pbWF0aW9ucy9zY2hlZHVsaW5nLW9mLWFuaW1hdGlvbi13aXRoLXN0ZXBzLXRpbWluZy1m
dW5jdGlvbi1vbi1lZmZlY3QuaHRtbAorKysgYi9MYXlvdXRUZXN0cy93ZWJhbmltYXRpb25zL3Nj
aGVkdWxpbmctb2YtYW5pbWF0aW9uLXdpdGgtc3RlcHMtdGltaW5nLWZ1bmN0aW9uLW9uLWVmZmVj
dC5odG1sCkBAIC0zLDE1ICszLDEzIEBACiA8ZGl2PjwvZGl2PgogPHNjcmlwdD4KIAotYXN5bmNf
dGVzdChhc3luYyB0ID0+IHsKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKICAgICBjb25zdCBh
bmltYXRpb24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJkaXYiKS5hbmltYXRlKHsgbWFyZ2lu
TGVmdDogIjEwMHB4IiB9LCB7IGR1cmF0aW9uOiAxMDAwLCBlYXNpbmc6ICJzdGVwcygxMCkiIH0p
OwogCiAgICAgYXdhaXQgYW5pbWF0aW9uLnJlYWR5OwotICAgIAorCiAgICAgYW5pbWF0aW9uLmN1
cnJlbnRUaW1lID0gMjI1OwogICAgIGFzc2VydF9lcXVhbHMoaW50ZXJuYWxzLnRpbWVUb05leHRB
bmltYXRpb25UaWNrKGFuaW1hdGlvbiksIDc1LCAiQ29tcHV0aW5nIHRoZSB0aW1lIHVudGlsIHRo
ZSBuZXh0IHRpY2sgd2hlbiBwYXJ0bHkgdGhyb3VnaCBhIHN0ZXBzIGludGVydmFsLiIpOwotICAg
IAotICAgIHQuZG9uZSgpOwogfSwgIkNvbXB1dGluZyB0aGUgdGltZSB1bnRpbCB0aGUgbmV4dCB0
aWNrIGZvciBhbiBlZmZlY3Qgd2l0aCBhIHN0ZXBzKCkgZWFzaW5nLiIpOwogCiA8L3NjcmlwdD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmFuaW1hdGlvbnMvc2NoZWR1bGluZy1vZi1hbmlt
YXRpb24td2l0aC1zdGVwcy10aW1pbmctZnVuY3Rpb24tb24ta2V5ZnJhbWUuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmFuaW1hdGlvbnMvc2NoZWR1bGluZy1vZi1hbmltYXRpb24td2l0aC1zdGVwcy10
aW1pbmctZnVuY3Rpb24tb24ta2V5ZnJhbWUuaHRtbAppbmRleCAzOWZjYmRlMzBhMTYyZDhiYmM2
OWVhMTg2NTU4NGU3MzE0ODg0ZTIxLi5jOTM4ZTlhZTYwMmIzYTQ2NzkzM2UxNjdkYWNjYzRiMjNk
YTIyY2QyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJhbmltYXRpb25zL3NjaGVkdWxpbmct
b2YtYW5pbWF0aW9uLXdpdGgtc3RlcHMtdGltaW5nLWZ1bmN0aW9uLW9uLWtleWZyYW1lLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViYW5pbWF0aW9ucy9zY2hlZHVsaW5nLW9mLWFuaW1hdGlvbi13
aXRoLXN0ZXBzLXRpbWluZy1mdW5jdGlvbi1vbi1rZXlmcmFtZS5odG1sCkBAIC0zLDE4ICszLDE2
IEBACiA8ZGl2PjwvZGl2PgogPHNjcmlwdD4KIAotYXN5bmNfdGVzdChhc3luYyB0ID0+IHsKK3By
b21pc2VfdGVzdChhc3luYyB0ID0+IHsKICAgICBjb25zdCBhbmltYXRpb24gPSBkb2N1bWVudC5x
dWVyeVNlbGVjdG9yKCJkaXYiKS5hbmltYXRlKHsKICAgICAgICAgbWFyZ2luTGVmdDogWyIwIiwg
IjI1MHB4IiwgIjUwMHB4IiwgIjc1MHB4IiwgIjEwMDBweCJdLAogICAgICAgICBlYXNpbmc6IFsi
bGluZWFyIiwgImxpbmVhciIsICJzdGVwcygxMCkiLCAibGluZWFyIl0KICAgICB9LCAxMDAwKTsK
IAogICAgIGF3YWl0IGFuaW1hdGlvbi5yZWFkeTsKLSAgICAKKwogICAgIGFuaW1hdGlvbi5jdXJy
ZW50VGltZSA9IDUzNTsKICAgICBhc3NlcnRfZXF1YWxzKGludGVybmFscy50aW1lVG9OZXh0QW5p
bWF0aW9uVGljayhhbmltYXRpb24pLCAxNSk7Ci0KLSAgICB0LmRvbmUoKTsKIH0sICJDb21wdXRp
bmcgdGhlIHRpbWUgdW50aWwgdGhlIG5leHQgdGljayBmb3IgYSBrZXlmcmFtZSB3aXRoIGEgc3Rl
cHMoKSB0aW1pbmcgZnVuY3Rpb24uIik7CiAKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViYW5pbWF0aW9ucy9zY2hlZHVsaW5nLW9mLWNzcy1hbmltYXRpb24td2l0aC1leHBs
aWNpdC1zdGVwcy10aW1pbmctZnVuY3Rpb24tb24tc29tZS1rZXlmcmFtZXMuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmFuaW1hdGlvbnMvc2NoZWR1bGluZy1vZi1jc3MtYW5pbWF0aW9uLXdpdGgtZXhw
bGljaXQtc3RlcHMtdGltaW5nLWZ1bmN0aW9uLW9uLXNvbWUta2V5ZnJhbWVzLmh0bWwKaW5kZXgg
OTFlMmZjZGFmMTc0YzNmODc4YjUwZmI0YTc0MzZkNWNlMTE0MzVkMS4uNjQzNjM0YWIxMjE3Nzli
ZGQwMTVhMTE0NzRhYTkyZTdkZTIxNWZiNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2ViYW5p
bWF0aW9ucy9zY2hlZHVsaW5nLW9mLWNzcy1hbmltYXRpb24td2l0aC1leHBsaWNpdC1zdGVwcy10
aW1pbmctZnVuY3Rpb24tb24tc29tZS1rZXlmcmFtZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJhbmltYXRpb25zL3NjaGVkdWxpbmctb2YtY3NzLWFuaW1hdGlvbi13aXRoLWV4cGxpY2l0LXN0
ZXBzLXRpbWluZy1mdW5jdGlvbi1vbi1zb21lLWtleWZyYW1lcy5odG1sCkBAIC0xNiw3ICsxNiw3
IEBACiA8ZGl2PjwvZGl2PgogPHNjcmlwdD4KIAotYXN5bmNfdGVzdChhc3luYyB0ID0+IHsKK3By
b21pc2VfdGVzdChhc3luYyB0ID0+IHsKICAgICBjb25zdCBhbmltYXRpb24gPSBkb2N1bWVudC5x
dWVyeVNlbGVjdG9yKCJkaXYiKS5nZXRBbmltYXRpb25zKClbMF07CiAKICAgICBhd2FpdCBhbmlt
YXRpb24ucmVhZHk7CkBAIC0zMiw4ICszMiw2IEBAIGFzeW5jX3Rlc3QoYXN5bmMgdCA9PiB7CiAK
ICAgICBhbmltYXRpb24uY3VycmVudFRpbWUgPSA3ODA7CiAgICAgYXNzZXJ0X2VxdWFscyhpbnRl
cm5hbHMudGltZVRvTmV4dEFuaW1hdGlvblRpY2soYW5pbWF0aW9uKSwgMjAsICJQcm9ncmVzcyBj
b250YWluZWQgaW4gdGhlIGludGVydmFsIGZvciBhbiBpbXBsaWNpdCAxMDAlIGtleWZyYW1lLiIp
OwotCi0gICAgdC5kb25lKCk7CiB9LCAiQ29tcHV0aW5nIHRoZSB0aW1lIHVudGlsIHRoZSBuZXh0
IHRpY2sgZm9yIGEgQ1NTIEFuaW1hdGlvbiB3aXRoIGltcGxpY2l0IGFuZCBleHBsaWNpdCBzdGVw
cygpIHRpbWluZyBmdW5jdGlvbnMuIik7CiAKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViYW5pbWF0aW9ucy9zY2hlZHVsaW5nLW9mLWNzcy1hbmltYXRpb24td2l0aC1pbXBs
aWNpdC1zdGVwcy10aW1pbmctZnVuY3Rpb24uaHRtbCBiL0xheW91dFRlc3RzL3dlYmFuaW1hdGlv
bnMvc2NoZWR1bGluZy1vZi1jc3MtYW5pbWF0aW9uLXdpdGgtaW1wbGljaXQtc3RlcHMtdGltaW5n
LWZ1bmN0aW9uLmh0bWwKaW5kZXggYmM5MDQ3MDdjNzBlMjZkZDAyOWI3OGUyZGZhZjU5Y2QyZmRh
NzMwMy4uODEyYzY3NTdmMDhlNzdlN2JmMTMwZDM4YmQ4ODNjYWFhNWYzNTgzMiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvd2ViYW5pbWF0aW9ucy9zY2hlZHVsaW5nLW9mLWNzcy1hbmltYXRpb24t
d2l0aC1pbXBsaWNpdC1zdGVwcy10aW1pbmctZnVuY3Rpb24uaHRtbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJhbmltYXRpb25zL3NjaGVkdWxpbmctb2YtY3NzLWFuaW1hdGlvbi13aXRoLWltcGxpY2l0
LXN0ZXBzLXRpbWluZy1mdW5jdGlvbi5odG1sCkBAIC0xNCwxOCArMTQsMTYgQEAKIDxkaXY+PC9k
aXY+CiA8c2NyaXB0PgogCi1hc3luY190ZXN0KGFzeW5jIHQgPT4geworcHJvbWlzZV90ZXN0KGFz
eW5jIHQgPT4gewogICAgIGNvbnN0IGFuaW1hdGlvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Io
ImRpdiIpLmdldEFuaW1hdGlvbnMoKVswXTsKIAogICAgIGF3YWl0IGFuaW1hdGlvbi5yZWFkeTsK
LSAgICAKKwogICAgIGFuaW1hdGlvbi5jdXJyZW50VGltZSA9IDEwOwogICAgIGFzc2VydF9lcXVh
bHMoaW50ZXJuYWxzLnRpbWVUb05leHRBbmltYXRpb25UaWNrKGFuaW1hdGlvbiksIDQwLCAiUHJv
Z3Jlc3MgY29udGFpbmVkIGluIHRoZSBpbnRlcnZhbCBmb3IgYW4gaW1wbGljaXQgMCUga2V5ZnJh
bWUuIik7CiAKICAgICBhbmltYXRpb24uY3VycmVudFRpbWUgPSA5MjA7CiAgICAgYXNzZXJ0X2Vx
dWFscyhpbnRlcm5hbHMudGltZVRvTmV4dEFuaW1hdGlvblRpY2soYW5pbWF0aW9uKSwgMzAsICJQ
cm9ncmVzcyBjb250YWluZWQgaW4gdGhlIGludGVydmFsIGZvciBhbiBpbXBsaWNpdCAxMDAlIGtl
eWZyYW1lLiIpOwotCi0gICAgdC5kb25lKCk7CiB9LCAiQ29tcHV0aW5nIHRoZSB0aW1lIHVudGls
IHRoZSBuZXh0IHRpY2sgZm9yIGEgQ1NTIEFuaW1hdGlvbiB3aXRoIGltcGxpY2l0IHN0ZXBzKCkg
dGltaW5nIGZ1bmN0aW9ucy4iKTsKIAogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJydGMvY2FsbGluZy1wZWVyY29ubmVjdGlvbi1vbmNlLWNsb3NlZC5odG1sIGIvTGF5b3V0
VGVzdHMvd2VicnRjL2NhbGxpbmctcGVlcmNvbm5lY3Rpb24tb25jZS1jbG9zZWQuaHRtbAppbmRl
eCBjNmE0MWJkNTVjYjI2OTAyOTBjYTdiM2NjNjFiZDA3NTMwODI3MzZiLi40MGJhMjlmZTE5MDc1
ZjZmYmNkNjBlMGIwMTg1OGE1YmQwNzhmMDA4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJy
dGMvY2FsbGluZy1wZWVyY29ubmVjdGlvbi1vbmNlLWNsb3NlZC5odG1sCisrKyBiL0xheW91dFRl
c3RzL3dlYnJ0Yy9jYWxsaW5nLXBlZXJjb25uZWN0aW9uLW9uY2UtY2xvc2VkLmh0bWwKQEAgLTMw
LDI2ICszMCwyNiBAQCBwcm9taXNlX3Rlc3QoKCkgPT4gewogCiBwcm9taXNlX3Rlc3QoKHRlc3Qp
ID0+IHsKICAgICByZXR1cm4gY2xvc2VkQ29ubmVjdGlvbigpLnRoZW4oKGNvbm5lY3Rpb24pID0+
IHsKLSAgICAgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0ZXN0LCAnSW52YWxpZFN0YXRlRXJy
b3InLCBjb25uZWN0aW9uLmNyZWF0ZU9mZmVyKCkpOworICAgICAgICByZXR1cm4gcHJvbWlzZV9y
ZWplY3RzX2RvbSh0ZXN0LCAnSW52YWxpZFN0YXRlRXJyb3InLCBjb25uZWN0aW9uLmNyZWF0ZU9m
ZmVyKCkpOwogICAgIH0pOwogfSwgIkVuc3VyaW5nIGNsb3NlZCBjb25uZWN0aW9uIGNyZWF0ZU9m
ZmVyIGRvZXMgbm90IGNyYXNoIik7CiAKIHByb21pc2VfdGVzdCgoKSA9PiB7CiAgICAgcmV0dXJu
IGNsb3NlZENvbm5lY3Rpb24oKS50aGVuKChjb25uZWN0aW9uKSA9PiB7Ci0gICAgICAgIGFzc2Vy
dF90aHJvd3MoIkludmFsaWRTdGF0ZUVycm9yIiwgKCkgPT4geyAgY29ubmVjdGlvbi5jcmVhdGVE
YXRhQ2hhbm5lbCgidGVzdCIpOyB9KTsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkludmFs
aWRTdGF0ZUVycm9yIiwgKCkgPT4geyAgY29ubmVjdGlvbi5jcmVhdGVEYXRhQ2hhbm5lbCgidGVz
dCIpOyB9KTsKICAgICB9KTsKIH0sICJFbnN1cmluZyBjbG9zZWQgY29ubmVjdGlvbiBjcmVhdGVE
YXRhQ2hhbm5lbCBkb2VzIG5vdCBjcmFzaCIpOwogCiBwcm9taXNlX3Rlc3QoKCkgPT4gewogICAg
IHJldHVybiBjbG9zZWRDb25uZWN0aW9uKCkudGhlbigoY29ubmVjdGlvbikgPT4gewotICAgICAg
ICBhc3NlcnRfdGhyb3dzKCJJbnZhbGlkU3RhdGVFcnJvciIsICgpID0+IHsgY29ubmVjdGlvbi5h
ZGRUcmFuc2NlaXZlcigidmlkZW8iKTsgfSk7CisgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJJ
bnZhbGlkU3RhdGVFcnJvciIsICgpID0+IHsgY29ubmVjdGlvbi5hZGRUcmFuc2NlaXZlcigidmlk
ZW8iKTsgfSk7CiAgICAgfSk7CiB9LCAiRW5zdXJpbmcgY2xvc2VkIGNvbm5lY3Rpb24gYWRkVHJh
bnNjZWl2ZXIgZG9lcyBub3QgY3Jhc2giKTsKIAogcHJvbWlzZV90ZXN0KCgpID0+IHsKICAgICBy
ZXR1cm4gY2xvc2VkQ29ubmVjdGlvbigpLnRoZW4oKGNvbm5lY3Rpb24pID0+IHsKICAgICAgICAg
cmV0dXJuIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHt2aWRlbzogdHJ1ZX0p
LnRoZW4oKHN0cmVhbSkgPT4gewotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygiSW52YWxpZFN0
YXRlRXJyb3IiLCAoKSA9PiB7IGNvbm5lY3Rpb24uYWRkVHJhY2soc3RyZWFtLmdldFZpZGVvVHJh
Y2tzKClbMF0sIHN0cmVhbSk7IH0pOworICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIklu
dmFsaWRTdGF0ZUVycm9yIiwgKCkgPT4geyBjb25uZWN0aW9uLmFkZFRyYWNrKHN0cmVhbS5nZXRW
aWRlb1RyYWNrcygpWzBdLCBzdHJlYW0pOyB9KTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9LCAi
RW5zdXJpbmcgY2xvc2VkIGNvbm5lY3Rpb24gYWRkVHJhY2sgZG9lcyBub3QgY3Jhc2giKTsKQEAg
LTYyLDcgKzYyLDcgQEAgcHJvbWlzZV90ZXN0KCh0ZXN0KSA9PiB7CiAgICAgICAgIHBjMi5jcmVh
dGVEYXRhQ2hhbm5lbCgidGVzdCIpOwogICAgICAgICByZXR1cm4gcGMyLmNyZWF0ZU9mZmVyKCk7
CiAgICAgfSkudGhlbigoc2RwKSA9PiB7Ci0gICAgICAgIHJldHVybiBwcm9taXNlX3JlamVjdHMo
dGVzdCwgJ0ludmFsaWRTdGF0ZUVycm9yJywgY29ubmVjdGlvbi5zZXRSZW1vdGVEZXNjcmlwdGlv
bihzZHApKTsKKyAgICAgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19kb20odGVzdCwgJ0ludmFs
aWRTdGF0ZUVycm9yJywgY29ubmVjdGlvbi5zZXRSZW1vdGVEZXNjcmlwdGlvbihzZHApKTsKICAg
ICB9KTsKIH0sICJFbnN1cmluZyBjbG9zZWQgY29ubmVjdGlvbiBzZXRSZW1vdGVEZXNjcmlwdGlv
biBkb2VzIG5vdCBjcmFzaCIpOwogCkBAIC03NCw3ICs3NCw3IEBAIHByb21pc2VfdGVzdCgodGVz
dCkgPT4gewogICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiByZXNvbHZlKHNkcCksIDEwMCk7
CiAgICAgICAgIH0pOwogICAgIH0pLnRoZW4oKHNkcCkgPT4gewotICAgICAgICByZXR1cm4gcHJv
bWlzZV9yZWplY3RzKHRlc3QsICdJbnZhbGlkU3RhdGVFcnJvcicsIGxvY2FsQ29ubmVjdGlvbi5z
ZXRMb2NhbERlc2NyaXB0aW9uKHNkcCkpOworICAgICAgICByZXR1cm4gcHJvbWlzZV9yZWplY3Rz
X2RvbSh0ZXN0LCAnSW52YWxpZFN0YXRlRXJyb3InLCBsb2NhbENvbm5lY3Rpb24uc2V0TG9jYWxE
ZXNjcmlwdGlvbihzZHApKTsKICAgICB9KTsKIH0sICJFbnN1cmluZyBjbG9zZWQgY29ubmVjdGlv
biBzZXRMb2NhbERlc2NyaXB0aW9uIGRvZXMgbm90IGNyYXNoIik7CiAKQEAgLTg3LDcgKzg3LDcg
QEAgcHJvbWlzZV90ZXN0KCh0ZXN0KSA9PiB7CiAgICAgfSkudGhlbigoKSA9PiB7CiAgICAgICAg
IGxvY2FsQ29ubmVjdGlvbi5jbG9zZSgpOwogICAgIH0pLnRoZW4oKCkgPT4gewotICAgICAgICBy
ZXR1cm4gcHJvbWlzZV9yZWplY3RzKHRlc3QsICdJbnZhbGlkU3RhdGVFcnJvcicsIGxvY2FsQ29u
bmVjdGlvbi5jcmVhdGVBbnN3ZXIoKSk7CisgICAgICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNf
ZG9tKHRlc3QsICdJbnZhbGlkU3RhdGVFcnJvcicsIGxvY2FsQ29ubmVjdGlvbi5jcmVhdGVBbnN3
ZXIoKSk7CiAgICAgfSk7CiB9LCAiRW5zdXJpbmcgY2xvc2VkIGNvbm5lY3Rpb24gY3JlYXRlQW5z
d2VyIGRvZXMgbm90IGNyYXNoIik7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYnJ0Yy9k
YXRhY2hhbm5lbC9jcmVhdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvd2VicnRjL2RhdGFjaGFubmVs
L2NyZWF0aW9uLmh0bWwKaW5kZXggMDYzNThiNmE1MTJiMTEyZmI4NGEwYWJiMDA3ZjE4MjlmZTBm
NTQ3ZC4uNDY3ZjVkNzJmZWU0OTEwZDMwNmE0NmNlYzk1OTIzNmZlMjViNzBjMCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvd2VicnRjL2RhdGFjaGFubmVsL2NyZWF0aW9uLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvd2VicnRjL2RhdGFjaGFubmVsL2NyZWF0aW9uLmh0bWwKQEAgLTE0LDIwICsxNCwy
MCBAQCBmb3IgKHZhciBjcHRyID0gMDsgY3B0ciA8IDE2OyArK2NwdHIpCiAKIHRlc3QoKCkgPT4g
ewogICAgIHZhciBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOwotICAgIGFzc2VydF90aHJv
d3MobmV3IFR5cGVFcnJvciwgKCkgPT4geyBwYy5jcmVhdGVEYXRhQ2hhbm5lbChsb25nU3RyaW5n
KTsgfSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IHsgcGMuY3JlYXRl
RGF0YUNoYW5uZWwobG9uZ1N0cmluZyk7IH0pOwogfSwgIkNyZWF0aW5nIGRhdGEgY2hhbm5lbCB3
aXRoIHZlcnkgbG9uZyBsYWJlbCIpOwogCiB0ZXN0KCgpID0+IHsKICAgICB2YXIgcGMgPSBuZXcg
UlRDUGVlckNvbm5lY3Rpb24oKTsKICAgICBwYy5jbG9zZSgpOwotICAgIGFzc2VydF90aHJvd3Mo
IkludmFsaWRTdGF0ZUVycm9yIiwgKCkgPT4geyBwYy5jcmVhdGVEYXRhQ2hhbm5lbCgnc2VuZERh
dGFDaGFubmVsJyk7IH0pOworICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlkU3RhdGVFcnJv
ciIsICgpID0+IHsgcGMuY3JlYXRlRGF0YUNoYW5uZWwoJ3NlbmREYXRhQ2hhbm5lbCcpOyB9KTsK
IH0sICJDcmVhdGluZyBkYXRhIGNoYW5uZWwgYWZ0ZXIgY2xvc2luZyB0aGUgY29ubmVjdGlvbiIp
OwogCiBmdW5jdGlvbiB0ZXN0V3JvbmdEYXRhQ2hhbm5lbEluaXQoaW5pdCwgdGl0bGUpCiB7CiAg
ICAgcmV0dXJuIHRlc3QoKCkgPT4gewogICAgICAgICB2YXIgcGMgPSBuZXcgUlRDUGVlckNvbm5l
Y3Rpb24oKTsKLSAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yLCAoKSA9PiB7IHBj
LmNyZWF0ZURhdGFDaGFubmVsKCdzZW5kRGF0YUNoYW5uZWwnLCBpbml0KTsgfSk7CisgICAgICAg
IGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiB7IHBjLmNyZWF0ZURhdGFDaGFubmVs
KCdzZW5kRGF0YUNoYW5uZWwnLCBpbml0KTsgfSk7CiAgICAgfSwgIldyb25nIGRhdGEgY2hhbm5l
bCBpbml0OiAiICsgdGl0bGUpOwogfQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJydGMv
ZGF0YWNoYW5uZWwvZGF0YWNoYW5uZWwtZXZlbnQuaHRtbCBiL0xheW91dFRlc3RzL3dlYnJ0Yy9k
YXRhY2hhbm5lbC9kYXRhY2hhbm5lbC1ldmVudC5odG1sCmluZGV4IGE2Y2RkNWJmYzNhZGM2Yzcw
MTBkZGJkZGE4OTFjOGY2NTQ4ZGMyZDAuLmQ4MWIwMTAyYmI5NDBiNjQ4NTg4ODU3ZmE4MWFkYTg4
ZGNjOTExZWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYnJ0Yy9kYXRhY2hhbm5lbC9kYXRh
Y2hhbm5lbC1ldmVudC5odG1sCisrKyBiL0xheW91dFRlc3RzL3dlYnJ0Yy9kYXRhY2hhbm5lbC9k
YXRhY2hhbm5lbC1ldmVudC5odG1sCkBAIC0xMiwxMSArMTIsMTEgQEAgdGVzdCgoKSA9PiB7CiAg
ICAgdmFyIHBjID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CiAgICAgdmFyIGNoYW5uZWwgPSBw
Yy5jcmVhdGVEYXRhQ2hhbm5lbCgidGVzdCIpOwogCi0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlw
ZUVycm9yLCAoKSA9PiBuZXcgUlRDRGF0YUNoYW5uZWxFdmVudCgpKTsKLSAgICBhc3NlcnRfdGhy
b3dzKG5ldyBUeXBlRXJyb3IsICgpID0+IG5ldyBSVENEYXRhQ2hhbm5lbEV2ZW50KCJ0ZXN0Iikp
OwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvciwgKCkgPT4gbmV3IFJUQ0RhdGFDaGFu
bmVsRXZlbnQoInRlc3QiLCB1bmRlZmluZWQpKTsKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBl
RXJyb3IsICgpID0+IG5ldyBSVENEYXRhQ2hhbm5lbEV2ZW50KCJ0ZXN0IiwgeyBjaGFubmVsOiAx
IH0pKTsKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IsICgpID0+IG5ldyBSVENEYXRh
Q2hhbm5lbEV2ZW50KHVuZGVmaW5lZCwgeyBjaGFubmVsOiAxIH0pKTsKKyAgICBhc3NlcnRfdGhy
b3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gbmV3IFJUQ0RhdGFDaGFubmVsRXZlbnQoKSk7CisgICAg
YXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IG5ldyBSVENEYXRhQ2hhbm5lbEV2ZW50
KCJ0ZXN0IikpOworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBuZXcgUlRD
RGF0YUNoYW5uZWxFdmVudCgidGVzdCIsIHVuZGVmaW5lZCkpOworICAgIGFzc2VydF90aHJvd3Nf
anMoVHlwZUVycm9yLCAoKSA9PiBuZXcgUlRDRGF0YUNoYW5uZWxFdmVudCgidGVzdCIsIHsgY2hh
bm5lbDogMSB9KSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IG5ldyBS
VENEYXRhQ2hhbm5lbEV2ZW50KHVuZGVmaW5lZCwgeyBjaGFubmVsOiAxIH0pKTsKIAogICAgIHZh
ciBldmVudCA9IG5ldyBSVENEYXRhQ2hhbm5lbEV2ZW50KCJ0ZXN0IiwgeyBjaGFubmVsOiBjaGFu
bmVsIH0pOwogICAgIGFzc2VydF9lcXVhbHMoZXZlbnQuY2hhbm5lbCwgY2hhbm5lbCwgImNoYW5u
ZWwgcGFzc2VkIGluIGNvbnN0cnVjdG9yIHNob3VsZCBiZSB1c2VkIik7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJydGMvZGlzYWJsZS1lbmNyeXB0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJydGMvZGlzYWJsZS1lbmNyeXB0aW9uLmh0bWwKaW5kZXggNjc0OWJmOWQ5YzczMWU5MmRiNjg4
NzA5NTEwYWY4NzFhNWI3OTQ0ZS4uMTViZTczMTk5YTUxOGJiNDExMmMxMmFjOTIyNWUxMjI5OTZk
ZjRjZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2VicnRjL2Rpc2FibGUtZW5jcnlwdGlvbi5o
dG1sCisrKyBiL0xheW91dFRlc3RzL3dlYnJ0Yy9kaXNhYmxlLWVuY3J5cHRpb24uaHRtbApAQCAt
NDMsNyArNDMsNyBAQCBwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKICAgICBjb25zdCBv
ZmZlciA9IGF3YWl0IHBjMS5jcmVhdGVPZmZlcigpOwogICAgIGF3YWl0IHBjMS5zZXRMb2NhbERl
c2NyaXB0aW9uKG9mZmVyKTsKIAotICAgIHJldHVybiBwcm9taXNlX3JlamVjdHModGVzdCwgJ0lu
dmFsaWRBY2Nlc3NFcnJvcicsIHBjMi5zZXRSZW1vdGVEZXNjcmlwdGlvbihvZmZlcikpOworICAg
IHJldHVybiBwcm9taXNlX3JlamVjdHNfZG9tKHRlc3QsICdJbnZhbGlkQWNjZXNzRXJyb3InLCBw
YzIuc2V0UmVtb3RlRGVzY3JpcHRpb24ob2ZmZXIpKTsKIH0sICJNYWtlIHN1cmUgYSBwYyB3aXRo
IGVuY3J5cHRpb24gYW5kIGEgcGMgd2l0aG91dCBlbmNyeXB0aW9uIGNhbm5vdCB0YWxrIik7CiAg
ICAgPC9zY3JpcHQ+CiAgIDwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYnJ0Yy9w
Yy1kZXRhY2hlZC1kb2N1bWVudC5odG1sIGIvTGF5b3V0VGVzdHMvd2VicnRjL3BjLWRldGFjaGVk
LWRvY3VtZW50Lmh0bWwKaW5kZXggOWZlY2YyMjU0ODExNmE0YjkyODJkZjU1NTI0NzJhOGI0NjFl
YzhkZS4uM2QzYjUzN2NkNjY5NDNlMmE5ZTUwNzgxNjlkYzk1Mjg5YmNiMzRmNSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvd2VicnRjL3BjLWRldGFjaGVkLWRvY3VtZW50Lmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvd2VicnRjL3BjLWRldGFjaGVkLWRvY3VtZW50Lmh0bWwKQEAgLTksMTYgKzksMTgg
QEAgdGVzdCgoKSA9PiB7CiAgICAgZnJhbWUuc2V0QXR0cmlidXRlKCJzcmMiLCAiLyIpOwogICAg
IGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZnJhbWUpOwogICAgIHZhciBjb25zdHJ1Y3RvciA9
IGZyYW1lLmNvbnRlbnRXaW5kb3cuUlRDUGVlckNvbm5lY3Rpb247CisgICAgY29uc3QgZnJhbWVE
T01FeGNlcHRpb24gPSBmcmFtZS5jb250ZW50V2luZG93LkRPTUV4Y2VwdGlvbgogICAgIGRvY3Vt
ZW50LmJvZHkucmVtb3ZlQ2hpbGQoZnJhbWUpOwotICAgIGFzc2VydF90aHJvd3MoJ05vdFN1cHBv
cnRlZEVycm9yJywgKCkgPT4geyBuZXcgY29uc3RydWN0b3IoKSB9KTsKKyAgICBhc3NlcnRfdGhy
b3dzX2RvbSgnTm90U3VwcG9ydGVkRXJyb3InLCBmcmFtZURPTUV4Y2VwdGlvbiwgKCkgPT4geyBu
ZXcgY29uc3RydWN0b3IoKSB9KTsKIH0sICJQZWVyIENvbm5lY3Rpb24gb2JqZWN0cyBzaG91bGQg
bm90IGJlIGNyZWF0ZWQgaW4gZGV0YWNoZWQgZG9jdW1lbnRzIik7CiB0ZXN0KCgpID0+IHsKICAg
ICB2YXIgZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsKICAgICBmcmFt
ZS5zZXRBdHRyaWJ1dGUoInNyYyIsICIvIik7CiAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGls
ZChmcmFtZSk7CiAgICAgdmFyIHBjID0gbmV3IGZyYW1lLmNvbnRlbnRXaW5kb3cuUlRDUGVlckNv
bm5lY3Rpb24oKTsKKyAgICBjb25zdCBmcmFtZURPTUV4Y2VwdGlvbiA9IGZyYW1lLmNvbnRlbnRX
aW5kb3cuRE9NRXhjZXB0aW9uCiAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChmcmFtZSk7
Ci0gICAgYXNzZXJ0X3Rocm93cygnSW52YWxpZFN0YXRlRXJyb3InLCAoKSA9PiB7IHBjLnNldENv
bmZpZ3VyYXRpb24oe30pIH0pOworICAgIGFzc2VydF90aHJvd3NfZG9tKCdJbnZhbGlkU3RhdGVF
cnJvcicsIGZyYW1lRE9NRXhjZXB0aW9uLCAoKSA9PiB7IHBjLnNldENvbmZpZ3VyYXRpb24oe30p
IH0pOwogfSwgIlBlZXIgQ29ubmVjdGlvbiBvYmplY3RzIHNob3VsZCBub3QgYmUgY3JlYXRlZCBp
biBkZXRhY2hlZCBkb2N1bWVudHMgMiIpOwogPC9zY3JpcHQ+CiA8L2JvZHk+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJydGMvc3R1bi1zZXJ2ZXItZmlsdGVyaW5nLmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJydGMvc3R1bi1zZXJ2ZXItZmlsdGVyaW5nLmh0bWwKaW5kZXggZDBjOTRmZTYyMWVm
Yjk2OGMzNDBkN2FmNTI1NmM5OWM1NjE4MTkyNS4uMjUwMGYyYzUxOWI0ODI3Y2ZlY2M3ZjExYTUz
YzYzZjhlYTI1ZDE0NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2VicnRjL3N0dW4tc2VydmVy
LWZpbHRlcmluZy5odG1sCisrKyBiL0xheW91dFRlc3RzL3dlYnJ0Yy9zdHVuLXNlcnZlci1maWx0
ZXJpbmcuaHRtbApAQCAtMzgsNyArMzgsNyBAQCB0ZXN0KCgpID0+IHsKIAogICAgIGxldCBzdHJp
bmc1MTAgPSBzdHJpbmc1MDkgKyAnYSc7CiAKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJy
b3IsICgpID0+IG5ldyBSVENQZWVyQ29ubmVjdGlvbih7aWNlU2VydmVyczpbe3VzZXJuYW1lOiAn
dGVzdCcsIGNyZWRlbnRpYWw6IHN0cmluZzUxMCwgdXJsczpbJ3R1cm46Zm9vLmNvbSddfV19KSk7
Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yLCAoKSA9PiBuZXcgUlRDUGVlckNvbm5l
Y3Rpb24oe2ljZVNlcnZlcnM6W3t1c2VybmFtZTogc3RyaW5nNTEwLCBjcmVkZW50aWFsOiAndGVz
dCcsIHVybHM6Wyd0dXJuOmZvby5jb20nXX1dfSkpOworICAgIGFzc2VydF90aHJvd3NfanMoVHlw
ZUVycm9yLCAoKSA9PiBuZXcgUlRDUGVlckNvbm5lY3Rpb24oe2ljZVNlcnZlcnM6W3t1c2VybmFt
ZTogJ3Rlc3QnLCBjcmVkZW50aWFsOiBzdHJpbmc1MTAsIHVybHM6Wyd0dXJuOmZvby5jb20nXX1d
fSkpOworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBuZXcgUlRDUGVlckNv
bm5lY3Rpb24oe2ljZVNlcnZlcnM6W3t1c2VybmFtZTogc3RyaW5nNTEwLCBjcmVkZW50aWFsOiAn
dGVzdCcsIHVybHM6Wyd0dXJuOmZvby5jb20nXX1dfSkpOwogfSwgIlJUQ1BlZXJDb25uZWN0aW9u
IGFuZCBiaWcgVFVSTiB1c2VybmFtZS9jcmVkZW50aWFsIik7CiA8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450207</attachid>
            <date>2022-01-27 23:34:52 -0800</date>
            <delta_ts>2022-01-28 02:27:52 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-235398-20220128093449.patch</filename>
            <type>text/plain</type>
            <size>641964</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NTQzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZGM5ZTg3MmU0YzQ0OTZhOTZlZmIz
N2U5MmI2OThiOTQ5NmFmYmJiYi4uNWJhMjRhYmFjMWM4ZDlhN2I3ZWY3OTg3MWJmMzFkODQ2N2Qw
YzY1OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDIyLTAxLTIwICBLaW1tbyBLaW5udW5lbiAg
PGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgVXBkYXRlIExheW91dFRlc3RzL3Jlc291
cmNlcy90ZXN0aGFybmVzcy5qcyB0byAyMDIxLTYtMjQgdmVyc2lvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1Mzk4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICBDb3B5IHRlc3RoYXJuZXNzLmpzLCBmcm9t
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMKKyAgICAgICAgRGVsZXRlIHRlc3RoYXJu
ZXNzLmNzcywgaXQgaXMgbm93IGJ1bmRsZWQgaW4gdGVzdGhhcm5lc3MuanMuCisKKyAgICAgICAg
VXBkYXRlIHRlc3RzIHRvIGFjY29tbW9kYXRlIHRoZSBBUEkgY2hhbmdlOgorICAgICAgICAgLSBh
c3NlcnRfdGhyb3dzX2pzIGNoZWNrIHRoYXQgdGhlIGV4Y2VwdGlvbiBpcyBvZiBhIHBhcnRpY3Vs
YXIgSlMKKyAgICAgICAgICAgZXhjZXB0aW9uIHR5cGUKKyAgICAgICAgIC0gYXNzZXJ0X3Rocm93
c19kb20gY2hlY2sgdGhhdCB0aGUgZXhjZXB0aW9uIGlzIG9mIGEgcGFydGljdWxhcgorICAgICAg
ICAgICBET01FeGNlcHRpb24gdHlwZSBmcm9tIGEgcGFydGljdWxhciBnbG9iYWwgb2JqZWN0Lgor
ICAgICAgICAgLSBhc3NlcnRfdGhyb3dzX2V4YWN0bHkgY2hlY2sgdGhhdCB0aGUgZXhjZXB0aW9u
IGlzIGEgc3BlY2lmaWMKKyAgICAgICAgICAgb2JqZWN0LgorCisgICAgICAgIFByZXZpb3VzbHkg
YXNzZXJ0X3Rocm93cyB3YXMgdXNlZCBhbmQgaXQgaGlkIHVuZXhwZWN0ZWQgZXhjZXB0aW9uIGVy
cm9ycy4KKworICAgICAgICBTYW1lIGZvciBwcm9taXNlX3JlamVjdHNfKgorCisgICAgICAgICog
ZWRpdGluZy90ZXh0LWl0ZXJhdG9yL2NvdW50LW1hdGNoZXMtaW4tZnJhbWVzLmh0bWw6CisgICAg
ICAgICogZWRpdGluZy90ZXh0LWl0ZXJhdG9yL2hpZGRlbi10ZXh0YXJlYS1zZWxlY3Rpb24tcXVp
cmsuaHRtbDoKKyAgICAgICAgKiBmYXN0L2N1c3RvbS1lbGVtZW50cy9kZWZpbmVkLXBzZXVkby1j
bGFzcy5odG1sOgorICAgICAgICBTdG9wIHVzaW5nIHRlc3RoYXJuZXNzLmNzcworCisgICAgICAg
ICogcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmNzczogUmVtb3ZlZC4KKyAgICAgICAgQnVuZGxlZCBp
biAuanMgbm93LgorCisgICAgICAgICogcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzOgorICAgICAg
ICAoV2luZG93VGVzdEVudmlyb25tZW50KToKKyAgICAgICAgKFdpbmRvd1Rlc3RFbnZpcm9ubWVu
dC5wcm90b3R5cGUuX2Rpc3BhdGNoKToKKyAgICAgICAgKFdpbmRvd1Rlc3RFbnZpcm9ubWVudC5w
cm90b3R5cGUub25fdGVzdHNfcmVhZHkpOgorICAgICAgICAoV29ya2VyVGVzdEVudmlyb25tZW50
LnByb3RvdHlwZS5vbl90ZXN0c19yZWFkeSk6CisgICAgICAgIChjcmVhdGVfdGVzdF9lbnZpcm9u
bWVudCk6CisgICAgICAgIChnZXRfdGVzdF9uYW1lKToKKyAgICAgICAgKHRlc3QpOgorICAgICAg
ICAoYXN5bmNfdGVzdCk6CisgICAgICAgIChwcm9taXNlX3Rlc3QpOgorICAgICAgICAocHJvbWlz
ZV9yZWplY3RzX2pzKToKKyAgICAgICAgKHByb21pc2VfcmVqZWN0c19kb20pOgorICAgICAgICAo
cHJvbWlzZV9yZWplY3RzX2V4YWN0bHkpOgorICAgICAgICAocHJvbWlzZV9zZXR1cCk6CisgICAg
ICAgIChkb25lKToKKyAgICAgICAgKGZvcm1hdF92YWx1ZSk6CisKIDIwMjItMDEtMjQgIEtpbW1v
IEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBTdHJlYW1zIHRlc3Rz
IHRyeSB0byBjYWxsIFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5waXBlVGhyb3VnaC5jYWxsIGdl
bmVyaWNhbGx5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2FuaW1hdGlvbi1k
aXJlY3Rpb24tbm9ybWFsLmh0bWwgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2FuaW1hdGlvbi1k
aXJlY3Rpb24tbm9ybWFsLmh0bWwKaW5kZXggM2YyN2M4YjU3N2IyNGE0Mzk4ZDM3YTliZDcwNDVk
MGRhMWQ2ZjNmNi4uZmFhZWI1YjAyMzYwMjMzYTdmZDg1MjM0YjEwZWRjMjQyZDNmM2I3NyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9hbmltYXRpb24tZGlyZWN0aW9uLW5vcm1h
bC5odG1sCisrKyBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvYW5pbWF0aW9uLWRpcmVjdGlvbi1u
b3JtYWwuaHRtbApAQCAtMzQsNyArMzQsNyBAQAogPGJvZHk+CiA8ZGl2IGlkPSJib3giPjwvZGl2
PgogPHNjcmlwdD4KLSAgICBhc3luY190ZXN0KGFzeW5jIHQgPT4geworICAgIHByb21pc2VfdGVz
dChhc3luYyB0ID0+IHsKICAgICAgICAgY29uc3QgZGVsYXkgPSAxMDA7CiAKICAgICAgICAgY29u
c3QgdGVzdCA9IG5ldyBBbmltYXRpb25UZXN0KHsKQEAgLTU2LDggKzU2LDYgQEAKIAogICAgICAg
ICAvLyBGaW5hbGx5LCBjaGVjayB0aGUgdmFsdWVzIHJlY29yZGVkIGVhcmxpZXIgaW4gdGhlIHRl
c3QuCiAgICAgICAgIHRlc3QuY2hlY2tSZWNvcmRlZFZhbHVlcygpOwotCi0gICAgICAgIHQuZG9u
ZSgpOwogICAgIH0sIGBQYXVzaW5nIGFuIGFuaW1hdGlvbiB1c2luZyB0aGUgYW5pbWF0aW9uLXBs
YXktc3RhdGUgcHJvcGVydHkgc3RvcHMgYW5pbWF0aW5nIHN0eWxlcy5gKTsKIDwvc2NyaXB0Pgog
PC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9hbmltYXRpb24tZGly
ZWN0aW9uLXJldmVyc2UuaHRtbCBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvYW5pbWF0aW9uLWRp
cmVjdGlvbi1yZXZlcnNlLmh0bWwKaW5kZXggM2E3YTRmOWM1YmRhZDFlOTM3Y2RlOTNhNDkwZTEy
NWRjODAxMzJiZS4uZWU4NWY5MmJiY2M3ZWFlYTA2Njg5ZWM5ZTAyMTEyNTA2ZWEwNTRiZCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9hbmltYXRpb24tZGlyZWN0aW9uLXJldmVy
c2UuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2FuaW1hdGlvbi1kaXJlY3Rpb24t
cmV2ZXJzZS5odG1sCkBAIC0zNCw3ICszNCw3IEBACiA8Ym9keT4KIDxkaXYgaWQ9ImJveCI+PC9k
aXY+CiA8c2NyaXB0PgotICAgIGFzeW5jX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgcHJvbWlzZV90
ZXN0KGFzeW5jIHQgPT4gewogICAgICAgICBjb25zdCBkZWxheSA9IDEwMDsKIAogICAgICAgICBj
b25zdCB0ZXN0ID0gbmV3IEFuaW1hdGlvblRlc3QoewpAQCAtNTYsOCArNTYsNiBAQAogCiAgICAg
ICAgIC8vIEZpbmFsbHksIGNoZWNrIHRoZSB2YWx1ZXMgcmVjb3JkZWQgZWFybGllciBpbiB0aGUg
dGVzdC4KICAgICAgICAgdGVzdC5jaGVja1JlY29yZGVkVmFsdWVzKCk7Ci0KLSAgICAgICAgdC5k
b25lKCk7CiAgICAgfSwgYFBhdXNpbmcgYW4gYW5pbWF0aW9uIHVzaW5nIHRoZSBhbmltYXRpb24t
cGxheS1zdGF0ZSBwcm9wZXJ0eSBzdG9wcyBhbmltYXRpbmcgc3R5bGVzIHdpdGggYW5pbWF0aW9u
LWRpcmVjdGlvbjogcmV2ZXJzZS5gKTsKIDwvc2NyaXB0PgogPC9ib2R5PgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9jaGFuZ2Uta2V5ZnJhbWVzLW5hbWUuaHRtbCBiL0xheW91
dFRlc3RzL2FuaW1hdGlvbnMvY2hhbmdlLWtleWZyYW1lcy1uYW1lLmh0bWwKaW5kZXggYjcyMDJm
NTk3MmViMGNiMWQxZTQ4OGIxYjU1YzkxYjg5ZWVjOTMzYi4uOTYyZmNiZmE0NTkzMzhiN2MxNzU0
MDAwYWQxZGJiY2EzM2M1Mjk2MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9j
aGFuZ2Uta2V5ZnJhbWVzLW5hbWUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2No
YW5nZS1rZXlmcmFtZXMtbmFtZS5odG1sCkBAIC00NSw3ICs0NSw3IEBACiAgICAgICAgIHJldHVy
biBudWxsOwogICAgIH0KIAotICAgIGFzeW5jX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgcHJvbWlz
ZV90ZXN0KGFzeW5jIHQgPT4gewogICAgICAgICBjb25zdCBkZWxheSA9IDEwMDsKICAgICAgICAg
Y29uc3QgYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJveCIpOwogICAgICAgICBjb25z
dCBwcmV2aW91c0FuaW1hdGlvbk5hbWUgPSAiZm9vIjsKQEAgLTc0LDEwICs3NCw3IEBACiAKICAg
ICAgICAgLy8gTm93LCBjaGVjayB0aGUgcmVjb3JkZWQgdmFsdWVzIHdlcmUgY29ycmVjdC4KICAg
ICAgICAgdGVzdC5jaGVja1JlY29yZGVkVmFsdWVzKCk7Ci0KLSAgICAgICAgdC5kb25lKCk7CiAg
ICAgfSwgYFRlc3QgdGhhdCBkeW5hbWljYWxseSBjaGFuZ2luZyB0aGUgbmFtZSBvZiBhIEBrZXlm
cmFtZXMgcnVsZSBzdGFydHMgYW5pbWF0aW9ucyB1c2luZyB0aGF0IG5hbWUuYCk7Ci0gICAgCiAg
IDwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYW5p
bWF0aW9ucy9wbGF5LXN0YXRlLXBhdXNlZC5odG1sIGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9w
bGF5LXN0YXRlLXBhdXNlZC5odG1sCmluZGV4IDA5NjIxMGI2Y2RiYTU5ZWM2ODBjYmYzNmMxMzM5
NjQ2NDgyY2UwYTEuLjgyNjVlOTVlM2U5ZWI2ODcyOTM0YWE2ZGZhMGEzMjFhZjUyYzA0YjYgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvcGxheS1zdGF0ZS1wYXVzZWQuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL3BsYXktc3RhdGUtcGF1c2VkLmh0bWwKQEAgLTM1
LDcgKzM1LDcgQEAKIDxkaXYgaWQ9ImJveCI+PC9kaXY+CiA8c2NyaXB0PgogCi1hc3luY190ZXN0
KGFzeW5jIHQgPT4geworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4gewogICAgIGNvbnN0IGRlbGF5
ID0gMTAwOwogCiAgICAgY29uc3QgdGVzdCA9IG5ldyBBbmltYXRpb25UZXN0KHsKQEAgLTU3LDgg
KzU3LDYgQEAgYXN5bmNfdGVzdChhc3luYyB0ID0+IHsKIAogICAgIC8vIEZpbmFsbHksIGNoZWNr
IHRoZSB2YWx1ZXMgcmVjb3JkZWQgZWFybGllciBpbiB0aGUgdGVzdC4KICAgICB0ZXN0LmNoZWNr
UmVjb3JkZWRWYWx1ZXMoKTsKLQotICAgIHQuZG9uZSgpOwogfSwgYFBhdXNpbmcgYW4gYW5pbWF0
aW9uIHVzaW5nIHRoZSBhbmltYXRpb24tcGxheS1zdGF0ZSBwcm9wZXJ0eSBzdG9wcyBhbmltYXRp
bmcgc3R5bGVzLmApOwogCiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Nzcy1j
dXN0b20tcHJvcGVydGllcy1hcGkvcmVnaXN0ZXJQcm9wZXJ0eS5odG1sIGIvTGF5b3V0VGVzdHMv
Y3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9yZWdpc3RlclByb3BlcnR5Lmh0bWwKaW5kZXggOTE2
ZDRiNDk0MDM0ZjJiMWRiZmMwYWYyMzViMTQ0MmM5YTEyNDgyNS4uN2I5MjQwMzUyNWQzMjMyMmMw
YzU1OTBhZWE4NjdhODUyNjBjZDVkZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvY3NzLWN1c3Rv
bS1wcm9wZXJ0aWVzLWFwaS9yZWdpc3RlclByb3BlcnR5Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
Y3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9yZWdpc3RlclByb3BlcnR5Lmh0bWwKQEAgLTYsMTIg
KzYsMTIgQEAKIDxzY3JpcHQ+CiAvLyBUZXN0cyBmb3IgZXJyb3IgY2hlY2tpbmcgZHVyaW5nIHBy
b3BlcnR5IHJlZ2lzdHJhdGlvbgogdGVzdChmdW5jdGlvbigpIHsKLSAgICBhc3NlcnRfdGhyb3dz
KG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gQ1NTLnJlZ2lzdGVyUHJvcGVydHkoKSk7Ci0gICAgYXNz
ZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IENTUy5yZWdpc3RlclByb3BlcnR5KHVu
ZGVmaW5lZCkpOwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBDU1Mu
cmVnaXN0ZXJQcm9wZXJ0eSh0cnVlKSk7Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9y
KCksICgpID0+IENTUy5yZWdpc3RlclByb3BlcnR5KDIpKTsKLSAgICBhc3NlcnRfdGhyb3dzKG5l
dyBUeXBlRXJyb3IoKSwgKCkgPT4gQ1NTLnJlZ2lzdGVyUHJvcGVydHkoImNzcyIpKTsKLSAgICBh
c3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gQ1NTLnJlZ2lzdGVyUHJvcGVydHko
bnVsbCkpOworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBDU1MucmVnaXN0
ZXJQcm9wZXJ0eSgpKTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gQ1NT
LnJlZ2lzdGVyUHJvcGVydHkodW5kZWZpbmVkKSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBl
RXJyb3IsICgpID0+IENTUy5yZWdpc3RlclByb3BlcnR5KHRydWUpKTsKKyAgICBhc3NlcnRfdGhy
b3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gQ1NTLnJlZ2lzdGVyUHJvcGVydHkoMikpOworICAgIGFz
c2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSgiY3Nz
IikpOworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBDU1MucmVnaXN0ZXJQ
cm9wZXJ0eShudWxsKSk7CiB9LCAicmVnaXN0ZXJQcm9wZXJ0eSByZXF1aXJlcyBhIERpY3Rpb25h
cnkgdHlwZSIpOwogdGVzdChmdW5jdGlvbigpIHsKICAgICAvLyBWYWxpZCBwcm9wZXJ0eSBuYW1l
cywgc2hvdWxkbid0IHRocm93CkBAIC0xOSwxOSArMTksMTkgQEAgdGVzdChmdW5jdGlvbigpIHsK
ICAgICBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTogJy0tbmFtZTIsIG5vIG5lZWQgZm9yIGVz
Y2FwZXMnLCBpbmhlcml0czogZmFsc2V9KTsKICAgICBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFt
ZTogWyctLW5hbWUnLCAzXSwgaW5oZXJpdHM6IGZhbHNlfSk7CiAgICAgLy8gSW52YWxpZCBwcm9w
ZXJ0eSBuYW1lcwotICAgIGFzc2VydF90aHJvd3MobmV3IFN5bnRheEVycm9yKCksICgpID0+IENT
Uy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiAnbm8tbGVhZGluZy1kYXNoJywgaW5oZXJpdHM6IGZh
bHNlfSkpOwotICAgIGFzc2VydF90aHJvd3MobmV3IFN5bnRheEVycm9yKCksICgpID0+IENTUy5y
ZWdpc3RlclByb3BlcnR5KHtuYW1lOiAnJywgaW5oZXJpdHM6IGZhbHNlfSkpOwotICAgIGFzc2Vy
dF90aHJvd3MobmV3IFN5bnRheEVycm9yKCksICgpID0+IENTUy5yZWdpc3RlclByb3BlcnR5KHtu
YW1lOiAnXFwtLW5hbWUnLCBpbmhlcml0czogZmFsc2V9KSk7CisgICAgYXNzZXJ0X3Rocm93c19k
b20oJ1N5bnRheEVycm9yJywgKCkgPT4gQ1NTLnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6ICduby1s
ZWFkaW5nLWRhc2gnLCBpbmhlcml0czogZmFsc2V9KSk7CisgICAgYXNzZXJ0X3Rocm93c19kb20o
J1N5bnRheEVycm9yJywgKCkgPT4gQ1NTLnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6ICcnLCBpbmhl
cml0czogZmFsc2V9KSk7CisgICAgYXNzZXJ0X3Rocm93c19kb20oJ1N5bnRheEVycm9yJywgKCkg
PT4gQ1NTLnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6ICdcXC0tbmFtZScsIGluaGVyaXRzOiBmYWxz
ZX0pKTsKIH0sICJyZWdpc3RlclByb3BlcnR5IHJlcXVpcmVzIGEgbmFtZSBtYXRjaGluZyA8Y3Vz
dG9tLXByb3BlcnR5LW5hbWU+Iik7CiB0ZXN0KGZ1bmN0aW9uKCkgewogICAgIENTUy5yZWdpc3Rl
clByb3BlcnR5KHtuYW1lOiAnLS1zeW50YXgtdGVzdC0xJywgaW5oZXJpdHM6IGZhbHNlLCBzeW50
YXg6ICcqJ30pOwogICAgIENTUy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiAnLS1zeW50YXgtdGVz
dC0yJywgaW5oZXJpdHM6IGZhbHNlLCBzeW50YXg6ICcgKiAnfSk7CiAgICAgQ1NTLnJlZ2lzdGVy
UHJvcGVydHkoe25hbWU6ICctLXN5bnRheC10ZXN0LTMnLCBpbmhlcml0czogZmFsc2UsIGluaXRp
YWxWYWx1ZTogJzUwMHB4J30pOwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAo
KSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7fSkpOwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5
cGVFcnJvcigpLCAoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTogJy0tbm8taW5oZXJp
dHMnfSkpOwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBDU1MucmVn
aXN0ZXJQcm9wZXJ0eSh7aW5oZXJpdHM6IGZhbHNlfSkpOworICAgIGFzc2VydF90aHJvd3NfanMo
VHlwZUVycm9yLCAoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7fSkpOworICAgIGFzc2VydF90
aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTogJy0t
bm8taW5oZXJpdHMnfSkpOworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBD
U1MucmVnaXN0ZXJQcm9wZXJ0eSh7aW5oZXJpdHM6IGZhbHNlfSkpOwogICAgIC8vIFJlcGVhdGVk
IG5hbWUKLSAgICBhc3NlcnRfdGhyb3dzKERPTUV4Y2VwdGlvbi5JTlZBTElEX01PRElGSUNBVElP
Tl9FUlIsCisgICAgYXNzZXJ0X3Rocm93c19kb20oRE9NRXhjZXB0aW9uLklOVkFMSURfTU9ESUZJ
Q0FUSU9OX0VSUiwKICAgICAgICAgKCkgPT4gQ1NTLnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6ICct
LXN5bnRheC10ZXN0LTMnLCBpbmhlcml0czogZmFsc2UsIGluaXRpYWxWYWx1ZTogJzUwMHB4J30p
KTsKIH0sICJyZWdpc3RlclByb3BlcnR5IGFsd2F5cyBhbGxvd3Mgb21pdHRpbmcgaW5pdGlhbFZh
bHVlIGFuZCBzeW50YXgsIHJlcXVpcmVzIG5hbWUgYW5kIGluaGVyaXRzIik7CiB0ZXN0KGZ1bmN0
aW9uKCkgewpAQCAtNDIsMTEgKzQyLDExIEBAIHRlc3QoZnVuY3Rpb24oKSB7CiAgIENTUy5yZWdp
c3RlclByb3BlcnR5KHtuYW1lOiAnLS1pbml0aWFsdmFsdWUtdGVzdC0wJywgaW5oZXJpdHM6IGZh
bHNlLCBzeW50YXg6ICc8bGVuZ3RoPicsIGluaXRpYWxWYWx1ZTogJ2NhbGMoMTBweCArIDEwaW4p
J30pOwogICBhc3NlcnRfZXF1YWxzKHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsKS5nZXRQcm9w
ZXJ0eVZhbHVlKCctLWluaXRpYWx2YWx1ZS10ZXN0LTAnKS50b1N0cmluZygpLCAnOTcwcHgnKTsK
IAotICBhc3NlcnRfdGhyb3dzKG5ldyBTeW50YXhFcnJvcigpLAorICBhc3NlcnRfdGhyb3dzX2Rv
bSgnU3ludGF4RXJyb3InLAogICAgICgpID0+IENTUy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiAn
LS1pbml0aWFsdmFsdWUtdGVzdC0xJywgaW5oZXJpdHM6IGZhbHNlLCBzeW50YXg6ICc8bGVuZ3Ro
PicsIGluaXRpYWxWYWx1ZTogJzEwZW0nfSkpOwotICBhc3NlcnRfdGhyb3dzKG5ldyBTeW50YXhF
cnJvcigpLAorICBhc3NlcnRfdGhyb3dzX2RvbSgnU3ludGF4RXJyb3InLAogICAgICgpID0+IENT
Uy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiAnLS1pbml0aWFsdmFsdWUtdGVzdC0yJywgaW5oZXJp
dHM6IGZhbHNlLCBzeW50YXg6ICc8bGVuZ3RoPicsIGluaXRpYWxWYWx1ZTogJ2NhbGMoMTBweCAr
IDEwZW0pJ30pKTsKLSAgYXNzZXJ0X3Rocm93cyhuZXcgU3ludGF4RXJyb3IoKSwKKyAgYXNzZXJ0
X3Rocm93c19kb20oJ1N5bnRheEVycm9yJywKICAgICAoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0
eSh7bmFtZTogJy0taW5pdGlhbHZhbHVlLXRlc3QtMycsIGluaGVyaXRzOiBmYWxzZSwgc3ludGF4
OiAnPGxlbmd0aD4nLCBpbml0aWFsVmFsdWU6ICdjYWxjKDEwcHggKyAxMCUpJ30pKTsKIH0sICJy
ZWdpc3RlclByb3BlcnR5IHJlcXVpcmVzIGluaXRpYWxWYWx1ZSB0byBiZSBjb21wdXRhdGlvbmFs
bHkgaW5kZXBlbmRlbnQiKTsKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRp
dGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pZGwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pZGwtZXhwZWN0ZWQudHh0CmluZGV4
IDc3NjRkMDNjMDIxODJmZGYxYWViMTBhNDU0NDhjMGUyMjg2MmMwZTAuLmJiNmI2YzM4YWRjMDA4
OWFhNzQ5MzljNWZjYjQzYzRiOTJkNzMyMmUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRp
bmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaWRsLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWlkbC1leHBlY3RlZC50eHQKQEAg
LTEsMjYgKzEsMjcgQEAKLUNPTlNPTEUgTUVTU0FHRTogY2FsbGJhY2sgbm90IHlldCBzdXBwb3J0
ZWQKIAogUEFTUyBEYXRhVHJhbnNmZXIgaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRp
ZXMgb2YgaW50ZXJmYWNlIG9iamVjdAogUEFTUyBEYXRhVHJhbnNmZXIgaW50ZXJmYWNlIG9iamVj
dCBsZW5ndGgKIFBBU1MgRGF0YVRyYW5zZmVyIGludGVyZmFjZSBvYmplY3QgbmFtZQogUEFTUyBE
YXRhVHJhbnNmZXIgaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJm
YWNlIHByb3RvdHlwZSBvYmplY3QKIFBBU1MgRGF0YVRyYW5zZmVyIGludGVyZmFjZTogZXhpc3Rl
bmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0J3MgImNvbnN0
cnVjdG9yIiBwcm9wZXJ0eQorUEFTUyBEYXRhVHJhbnNmZXIgaW50ZXJmYWNlOiBleGlzdGVuY2Ug
YW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QncyBAQHVuc2NvcGFi
bGVzIHByb3BlcnR5CiBQQVNTIERhdGFUcmFuc2ZlciBpbnRlcmZhY2U6IGF0dHJpYnV0ZSBkcm9w
RWZmZWN0CiBQQVNTIERhdGFUcmFuc2ZlciBpbnRlcmZhY2U6IGF0dHJpYnV0ZSBlZmZlY3RBbGxv
d2VkCiBQQVNTIERhdGFUcmFuc2ZlciBpbnRlcmZhY2U6IGF0dHJpYnV0ZSBpdGVtcwotUEFTUyBE
YXRhVHJhbnNmZXIgaW50ZXJmYWNlOiBvcGVyYXRpb24gc2V0RHJhZ0ltYWdlKEVsZW1lbnQsbG9u
Zyxsb25nKQorUEFTUyBEYXRhVHJhbnNmZXIgaW50ZXJmYWNlOiBvcGVyYXRpb24gc2V0RHJhZ0lt
YWdlKEVsZW1lbnQsIGxvbmcsIGxvbmcpCiBQQVNTIERhdGFUcmFuc2ZlciBpbnRlcmZhY2U6IGF0
dHJpYnV0ZSB0eXBlcwogUEFTUyBEYXRhVHJhbnNmZXIgaW50ZXJmYWNlOiBvcGVyYXRpb24gZ2V0
RGF0YShET01TdHJpbmcpCi1QQVNTIERhdGFUcmFuc2ZlciBpbnRlcmZhY2U6IG9wZXJhdGlvbiBz
ZXREYXRhKERPTVN0cmluZyxET01TdHJpbmcpCi1QQVNTIERhdGFUcmFuc2ZlciBpbnRlcmZhY2U6
IG9wZXJhdGlvbiBjbGVhckRhdGEoRE9NU3RyaW5nKQorUEFTUyBEYXRhVHJhbnNmZXIgaW50ZXJm
YWNlOiBvcGVyYXRpb24gc2V0RGF0YShET01TdHJpbmcsIERPTVN0cmluZykKK1BBU1MgRGF0YVRy
YW5zZmVyIGludGVyZmFjZTogb3BlcmF0aW9uIGNsZWFyRGF0YShvcHRpb25hbCBET01TdHJpbmcp
CiBQQVNTIERhdGFUcmFuc2ZlciBpbnRlcmZhY2U6IGF0dHJpYnV0ZSBmaWxlcwogUEFTUyBEYXRh
VHJhbnNmZXJJdGVtTGlzdCBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBp
bnRlcmZhY2Ugb2JqZWN0CiBQQVNTIERhdGFUcmFuc2Zlckl0ZW1MaXN0IGludGVyZmFjZSBvYmpl
Y3QgbGVuZ3RoCiBQQVNTIERhdGFUcmFuc2Zlckl0ZW1MaXN0IGludGVyZmFjZSBvYmplY3QgbmFt
ZQogUEFTUyBEYXRhVHJhbnNmZXJJdGVtTGlzdCBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJv
cGVydGllcyBvZiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdAogUEFTUyBEYXRhVHJhbnNmZXJJ
dGVtTGlzdCBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2Ug
cHJvdG90eXBlIG9iamVjdCdzICJjb25zdHJ1Y3RvciIgcHJvcGVydHkKK1BBU1MgRGF0YVRyYW5z
ZmVySXRlbUxpc3QgaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJm
YWNlIHByb3RvdHlwZSBvYmplY3QncyBAQHVuc2NvcGFibGVzIHByb3BlcnR5CiBQQVNTIERhdGFU
cmFuc2Zlckl0ZW1MaXN0IGludGVyZmFjZTogYXR0cmlidXRlIGxlbmd0aAotUEFTUyBEYXRhVHJh
bnNmZXJJdGVtTGlzdCBpbnRlcmZhY2U6IG9wZXJhdGlvbiBhZGQoRE9NU3RyaW5nLERPTVN0cmlu
ZykKK1BBU1MgRGF0YVRyYW5zZmVySXRlbUxpc3QgaW50ZXJmYWNlOiBvcGVyYXRpb24gYWRkKERP
TVN0cmluZywgRE9NU3RyaW5nKQogUEFTUyBEYXRhVHJhbnNmZXJJdGVtTGlzdCBpbnRlcmZhY2U6
IG9wZXJhdGlvbiBhZGQoRmlsZSkKIFBBU1MgRGF0YVRyYW5zZmVySXRlbUxpc3QgaW50ZXJmYWNl
OiBvcGVyYXRpb24gcmVtb3ZlKHVuc2lnbmVkIGxvbmcpCiBQQVNTIERhdGFUcmFuc2Zlckl0ZW1M
aXN0IGludGVyZmFjZTogb3BlcmF0aW9uIGNsZWFyKCkKQEAgLTI5LDggKzMwLDEwIEBAIFBBU1Mg
RGF0YVRyYW5zZmVySXRlbSBpbnRlcmZhY2Ugb2JqZWN0IGxlbmd0aAogUEFTUyBEYXRhVHJhbnNm
ZXJJdGVtIGludGVyZmFjZSBvYmplY3QgbmFtZQogUEFTUyBEYXRhVHJhbnNmZXJJdGVtIGludGVy
ZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFjZSBwcm90b3R5cGUgb2Jq
ZWN0CiBQQVNTIERhdGFUcmFuc2Zlckl0ZW0gaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3Bl
cnRpZXMgb2YgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QncyAiY29uc3RydWN0b3IiIHByb3Bl
cnR5CitQQVNTIERhdGFUcmFuc2Zlckl0ZW0gaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3Bl
cnRpZXMgb2YgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QncyBAQHVuc2NvcGFibGVzIHByb3Bl
cnR5CiBQQVNTIERhdGFUcmFuc2Zlckl0ZW0gaW50ZXJmYWNlOiBhdHRyaWJ1dGUga2luZAogUEFT
UyBEYXRhVHJhbnNmZXJJdGVtIGludGVyZmFjZTogYXR0cmlidXRlIHR5cGUKLVBBU1MgRGF0YVRy
YW5zZmVySXRlbSBpbnRlcmZhY2U6IG9wZXJhdGlvbiBnZXRBc1N0cmluZyhGdW5jdGlvblN0cmlu
Z0NhbGxiYWNrKQorUEFTUyBEYXRhVHJhbnNmZXJJdGVtIGludGVyZmFjZTogb3BlcmF0aW9uIGdl
dEFzU3RyaW5nKFN0cmluZ0NhbGxiYWNrPykKIFBBU1MgRGF0YVRyYW5zZmVySXRlbSBpbnRlcmZh
Y2U6IG9wZXJhdGlvbiBnZXRBc0ZpbGUoKQorUEFTUyBEYXRhVHJhbnNmZXJJdGVtIGludGVyZmFj
ZTogb3BlcmF0aW9uIHdlYmtpdEdldEFzRW50cnkoKQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWlkbC5odG1sIGIvTGF5b3V0VGVzdHMv
ZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pZGwuaHRtbAppbmRleCA1NDM4ZTJiZDYy
MDg1NzRmZjI5MTdhYmNiZTkxOTJkNDcxZDE4YjEwLi45M2Y0N2FjZjkyMTA0MGQxMTVjN2JjYzEz
Zjc3ODMzODViMDIyOWQxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9h
cmQvZGF0YXRyYW5zZmVyLWlkbC5odG1sCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVi
b2FyZC9kYXRhdHJhbnNmZXItaWRsLmh0bWwKQEAgLTgsMjAgKzgsMjEgQEAKIDwvaGVhZD4KIDxi
b2R5PgogPHNjcmlwdCBpZD0iZGF0YXRyYW5zZmVyLWlkbCIgdHlwZT0idGV4dC9wbGFpbiI+Ci1b
Q29uc3RydWN0b3IsIEV4cG9zZWQ9KFdpbmRvdyldCitbRXhwb3NlZD1XaW5kb3ddCiBpbnRlcmZh
Y2UgRGF0YVRyYW5zZmVyIHsKKyAgICBjb25zdHJ1Y3RvcigpOworCiAgICAgYXR0cmlidXRlIERP
TVN0cmluZyBkcm9wRWZmZWN0OwogICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgZWZmZWN0QWxsb3dl
ZDsKIAogICAgIFtTYW1lT2JqZWN0XSByZWFkb25seSBhdHRyaWJ1dGUgRGF0YVRyYW5zZmVySXRl
bUxpc3QgaXRlbXM7CiAKLSAgICB2b2lkIHNldERyYWdJbWFnZShFbGVtZW50IGltYWdlLCBsb25n
IHgsIGxvbmcgeSk7CisgICAgdW5kZWZpbmVkIHNldERyYWdJbWFnZShFbGVtZW50IGltYWdlLCBs
b25nIHgsIGxvbmcgeSk7CiAKLSAgICAvKiBvbGQgaW50ZXJmYWNlICovCiAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIEZyb3plbkFycmF5PERPTVN0cmluZz4gdHlwZXM7CiAgICAgRE9NU3RyaW5nIGdl
dERhdGEoRE9NU3RyaW5nIGZvcm1hdCk7Ci0gICAgdm9pZCBzZXREYXRhKERPTVN0cmluZyBmb3Jt
YXQsIERPTVN0cmluZyBkYXRhKTsKLSAgICB2b2lkIGNsZWFyRGF0YShvcHRpb25hbCBET01TdHJp
bmcgZm9ybWF0KTsKKyAgICB1bmRlZmluZWQgc2V0RGF0YShET01TdHJpbmcgZm9ybWF0LCBET01T
dHJpbmcgZGF0YSk7CisgICAgdW5kZWZpbmVkIGNsZWFyRGF0YShvcHRpb25hbCBET01TdHJpbmcg
Zm9ybWF0KTsKICAgICBbU2FtZU9iamVjdF0gcmVhZG9ubHkgYXR0cmlidXRlIEZpbGVMaXN0IGZp
bGVzOwogfTsKIDwvc2NyaXB0PgpAQCAtMzYsMTQgKzM3LDE5IEBAIGludGVyZmFjZSBEYXRhVHJh
bnNmZXJJdGVtTGlzdCB7CiB9OwogPC9zY3JpcHQ+CiA8c2NyaXB0IGlkPSJkYXRhdHJhbnNmZXJp
dGVtLWlkbCIgdHlwZT0idGV4dC9wbGFpbiI+CitbRXhwb3NlZD1XaW5kb3ddCiBpbnRlcmZhY2Ug
RGF0YVRyYW5zZmVySXRlbSB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBraW5k
OwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgdHlwZTsKLSAgICB2b2lkIGdldEFz
U3RyaW5nKEZ1bmN0aW9uU3RyaW5nQ2FsbGJhY2s/IGNhbGxiYWNrKTsKLSAgICBGaWxlPyBnZXRB
c0ZpbGUoKTsKKworICAgIHVuZGVmaW5lZCBnZXRBc1N0cmluZyhTdHJpbmdDYWxsYmFjaz8gY2Fs
bGJhY2spOworICAgIEZpbGUgZ2V0QXNGaWxlKCk7CisKKyAgICAvLyBodHRwczovL3dpY2cuZ2l0
aHViLmlvL2VudHJpZXMtYXBpLyNodG1sLWRhdGEKKyAgICBGaWxlU3lzdGVtRW50cnk/IHdlYmtp
dEdldEFzRW50cnkoKTsKIH07CiAKLWNhbGxiYWNrIEZ1bmN0aW9uU3RyaW5nQ2FsbGJhY2sgPSB2
b2lkIChET01TdHJpbmcgZGF0YSk7CitjYWxsYmFjayBTdHJpbmdDYWxsYmFjayA9IHZvaWQgKERP
TVN0cmluZyBkYXRhKTsKIDwvc2NyaXB0PgogPHNjcmlwdD4KIHZhciBpZGxzQXJyYXkgPSBuZXcg
SWRsQXJyYXkoKTsKQEAgLTUzLDYgKzU5LDcgQEAgdmFyIGlkbCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJkYXRhdHJhbnNmZXItaWRsIikudGV4dENvbnRlbnQKIAogaWRsc0FycmF5LmFkZF9p
ZGxzKGlkbCk7CiBpZGxzQXJyYXkuYWRkX3VudGVzdGVkX2lkbHMoImludGVyZmFjZSBFbGVtZW50
IHt9OyIpOworaWRsc0FycmF5LmFkZF91bnRlc3RlZF9pZGxzKCJpbnRlcmZhY2UgRmlsZVN5c3Rl
bUVudHJ5IHt9OyIpOwogaWRsc0FycmF5LnRlc3QoKTsKIDwvc2NyaXB0PgogPC9ib2R5PgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy90ZXh0LWl0ZXJhdG9yL2NvdW50LW1hdGNoZXMt
aW4tZnJhbWVzLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3RleHQtaXRlcmF0b3IvY291bnQt
bWF0Y2hlcy1pbi1mcmFtZXMuaHRtbAppbmRleCAxOWRkMDUxZjVjN2JhMTI5YTZjNGY3ZTFjZTdj
MmRhMTM1ODg4OWExLi5hYWMzYzNkMjQyM2YzMzU0MjlhOWQ5YmM2NWJhYjE5MWU5M2ZhYThkIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3RleHQtaXRlcmF0b3IvY291bnQtbWF0Y2hl
cy1pbi1mcmFtZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3RleHQtaXRlcmF0b3Iv
Y291bnQtbWF0Y2hlcy1pbi1mcmFtZXMuaHRtbApAQCAtNCw3ICs0LDYgQEAKIDx0aXRsZT5UZXh0
IHNlYXJjaCBmcm9tIGZyYW1lczwvdGl0bGU+CiA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
dGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPGxpbmsgcmVsPSdzdHlsZXNoZWV0JyBo
cmVmPScuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuY3NzJz4KIDwvaGVhZD4KIDxib2R5Pgog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3RleHQtaXRlcmF0b3IvaGlkZGVuLXRl
eHRhcmVhLXNlbGVjdGlvbi1xdWlyay5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy90ZXh0LWl0
ZXJhdG9yL2hpZGRlbi10ZXh0YXJlYS1zZWxlY3Rpb24tcXVpcmsuaHRtbAppbmRleCAzYzlhOWUy
YWQwYzdjNzEyMmJkNWJkMWZkOGM2N2MwOTY3YmM4MmUwLi43MjY2ZWEzYzg2MDc3Y2JjZDE1NWY5
ZDgyYjkwZjg5NzMzMTc0MmQ5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3RleHQt
aXRlcmF0b3IvaGlkZGVuLXRleHRhcmVhLXNlbGVjdGlvbi1xdWlyay5odG1sCisrKyBiL0xheW91
dFRlc3RzL2VkaXRpbmcvdGV4dC1pdGVyYXRvci9oaWRkZW4tdGV4dGFyZWEtc2VsZWN0aW9uLXF1
aXJrLmh0bWwKQEAgLTQsNyArNCw2IEBACiA8dGl0bGU+U2VsZWN0aW9ucyBpbiBoaWRkZW4gZWxl
bWVudHM8L3RpdGxlPgogPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5q
cyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVw
b3J0LmpzIj48L3NjcmlwdD4KLTxsaW5rIHJlbD0nc3R5bGVzaGVldCcgaHJlZj0nLi4vLi4vcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmNzcyc+CiA8L2hlYWQ+CiA8Ym9keT4KIDxzdHlsZT4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3dlYmdsMi9iaW5kaW5ncy5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvd2ViZ2wyL2JpbmRpbmdzLmh0bWwKaW5k
ZXggYmM1ZmI0NjFhYjBmNjI3OWRmMjNjNDkxYmZlNWI4ZDFiZWU4NGU3Yy4uNjQwNGY0ZDI2YjY4
OGY2NTAzMTg5YzcwNjE2YmVmNjRhODgwMzQ0ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvd2ViZ2wvd2ViZ2wyL2JpbmRpbmdzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvd2ViZ2wvd2ViZ2wyL2JpbmRpbmdzLmh0bWwKQEAgLTQ4LDcgKzQ4LDcgQEAgc2V0
dXAoZnVuY3Rpb24oKSB7CiAKIGZvciAodmFyIFttZXRob2QsIGFyZ3MsIG5hbWVdIG9mIGVycm9y
X21ldGhvZHMpIHsKICAgdGVzdChmdW5jdGlvbigpIHsKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBU
eXBlRXJyb3IoKSwgKCkgPT4gY29udGV4dFttZXRob2RdKC4uLmFyZ3MpKTsKKyAgICBhc3NlcnRf
dGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gY29udGV4dFttZXRob2RdKC4uLmFyZ3MpKTsKICAg
fSwgbmFtZSk7CiB9CiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3Vz
dG9tLWVsZW1lbnRzL2RlZmluZWQtcHNldWRvLWNsYXNzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2N1c3RvbS1lbGVtZW50cy9kZWZpbmVkLXBzZXVkby1jbGFzcy5odG1sCmluZGV4IDA2MjBmY2Qz
NzBhZjIzYTVhMjk5ZjMwYjI4YmM5MTBiYTk0YmFhNzUuLjBjMGMzYjA4YTJhYjgxMmY2YmE4NjNj
NTAzYTQ2YmM4OWI1ZGZhNWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVs
ZW1lbnRzL2RlZmluZWQtcHNldWRvLWNsYXNzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9j
dXN0b20tZWxlbWVudHMvZGVmaW5lZC1wc2V1ZG8tY2xhc3MuaHRtbApAQCAtNiw3ICs2LDYgQEAK
IDxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYmNvbXBvbmVu
dHMvc3BlYy9jdXN0b20vI3RoZS1kZWZpbmVkLWVsZW1lbnQtcHNldWRvLWNsYXNzLWRlZmluZWQi
PgogPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+
CiA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Nj
cmlwdD4KLTxsaW5rIHJlbD0nc3R5bGVzaGVldCcgaHJlZj0nLi4vLi4vcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzLmNzcyc+CiA8L2hlYWQ+CiA8Ym9keT4KIDxkaXYgaWQ9ImxvZyI+PC9kaXY+CkBAIC0x
MDUsMjggKzEwNCwzMCBAQCB0ZXN0KGZ1bmN0aW9uICgpIHsKIAogdGVzdChmdW5jdGlvbiAoKSB7
CiAgICAgdmFyIG1hdGNoSW5zaWRlQ29uc3RydWN0b3IgPSBmYWxzZTsKKyAgICBjb25zdCB0aGVF
eGNlcHRpb24gPSB7bmFtZTogJ2JhZCd9OwogICAgIGNsYXNzIFRocm93c0V4Y2VwdGlvbiBleHRl
bmRzIEhUTUxFbGVtZW50IHsKICAgICAgICAgY29uc3RydWN0b3IoKSB7CiAgICAgICAgICAgICBz
dXBlcigpOwogICAgICAgICAgICAgbWF0Y2hJbnNpZGVDb25zdHJ1Y3RvciA9IHRoaXMubWF0Y2hl
cygnOmRlZmluZWQnKTsKLSAgICAgICAgICAgIHRocm93IHtuYW1lOiAnYmFkJ307CisgICAgICAg
ICAgICB0aHJvdyB0aGVFeGNlcHRpb247CiAgICAgICAgIH0KICAgICB9OwogICAgIGN1c3RvbUVs
ZW1lbnRzLmRlZmluZSgndGhyb3dzLWV4Y2VwdGlvbicsIFRocm93c0V4Y2VwdGlvbik7CiAgICAg
dmFyIGluc3RhbmNlOwotICAgIGFzc2VydF90aHJvd3Moe25hbWU6ICdiYWQnfSwgZnVuY3Rpb24g
KCkgeyBpbnN0YW5jZSA9IG5ldyBUaHJvd3NFeGNlcHRpb247IH0pOworICAgIGFzc2VydF90aHJv
d3NfZXhhY3RseSh0aGVFeGNlcHRpb24sIGZ1bmN0aW9uICgpIHsgaW5zdGFuY2UgPSBuZXcgVGhy
b3dzRXhjZXB0aW9uOyB9KTsKICAgICBhc3NlcnRfdHJ1ZShtYXRjaEluc2lkZUNvbnN0cnVjdG9y
KTsKIH0sICdUaGUgZGVmaW5lZCBmbGFnIG9mIGEgY3VzdG9tIGVsZW1lbnQgbXVzdCBiZSBzZXQg
aW5zaWRlIGEgY29uc3RydWN0b3Igd2hlbiBjb25zdHJ1Y3RpbmcgYSBjdXN0b20gZWxlbWVudCBz
eW5jaHJvbm91c2x5JwogICAgICsgJyBldmVuIGlmIHRoZSBjb25zdHJ1Y3RvciB0aHJldyBhbiBl
eGNlcHRpb24gbGF0ZXInKTsKIAogdGVzdChmdW5jdGlvbiAoKSB7CiAgICAgdmFyIGluc3RhbmNl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGhyb3dzLWV4Y2VwdGlvbi0yJyk7CisgICAgY29u
c3QgdGhlRXhjZXB0aW9uID0ge25hbWU6ICdiYWQnfTsKICAgICBkb2N1bWVudC5ib2R5LmFwcGVu
ZENoaWxkKGluc3RhbmNlKTsKICAgICB2YXIgdW5jYXVnaHRFcnJvcjsKICAgICB3aW5kb3cub25l
cnJvciA9IGZ1bmN0aW9uIChtZXNzYWdlLCB1cmwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwg
ZXJyb3IpIHsgdW5jYXVnaHRFcnJvciA9IGVycm9yOyByZXR1cm4gdHJ1ZTsgfQogICAgIGN1c3Rv
bUVsZW1lbnRzLmRlZmluZSgndGhyb3dzLWV4Y2VwdGlvbi0yJywgY2xhc3MgZXh0ZW5kcyBIVE1M
RWxlbWVudCB7CiAgICAgICAgIGNvbnN0cnVjdG9yKCkgewotICAgICAgICAgICAgdGhyb3cge25h
bWU6ICdiYWQnfTsKKyAgICAgICAgICAgIHRocm93IHRoZUV4Y2VwdGlvbjsKICAgICAgICAgfQog
ICAgIH0pOwogICAgIGFzc2VydF9lcXVhbHModW5jYXVnaHRFcnJvci5uYW1lLCAnYmFkJyk7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy90aHJvdy1vbi1keW5h
bWljLW1hcmt1cC1pbnNlcnRpb24tY291bnRlci1jb25zdHJ1Y3QuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvY3VzdG9tLWVsZW1lbnRzL3Rocm93LW9uLWR5bmFtaWMtbWFya3VwLWluc2VydGlvbi1j
b3VudGVyLWNvbnN0cnVjdC5odG1sCmluZGV4IDZmM2JhZTgzZjJlZGJjODA1MDEyNDFjY2ZlM2Zk
N2U3OTI0OWQyYjEuLmUxMDIzNGIyMzk1ZjhmMTQ5YjFkNTEwMDVkNTg4ZWNjYzkwNGUwZDcgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL3Rocm93LW9uLWR5bmFt
aWMtbWFya3VwLWluc2VydGlvbi1jb3VudGVyLWNvbnN0cnVjdC5odG1sCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL3Rocm93LW9uLWR5bmFtaWMtbWFya3VwLWluc2VydGlv
bi1jb3VudGVyLWNvbnN0cnVjdC5odG1sCkBAIC00NSwxMiArNDUsMTIgQEAgYXN5bmMgZnVuY3Rp
b24gY29uc3RydWN0X2N1c3RvbV9lbGVtZW50X2luX3BhcnNlcih0ZXN0LCBjYWxsX2Z1bmN0aW9u
KQogCiBwcm9taXNlX3Rlc3QoYXN5bmMgZnVuY3Rpb24gKCkgewogICAgIGNvbnN0IHJlc3VsdCA9
IGF3YWl0IGNvbnN0cnVjdF9jdXN0b21fZWxlbWVudF9pbl9wYXJzZXIodGhpcywgKGRvY3VtZW50
KSA9PiBkb2N1bWVudC5vcGVuKCkpOwotICAgIGFzc2VydF90aHJvd3Moe25hbWU6ICdJbnZhbGlk
U3RhdGVFcnJvcid9LCAoKSA9PiB7IHRocm93IHJlc3VsdC5leGNlcHRpb247IH0sICdNdXN0IHRo
cm93IGFuIEludmFsaWRTdGF0ZUVycm9yJyk7CisgICAgYXNzZXJ0X3Rocm93c19kb20oJ0ludmFs
aWRTdGF0ZUVycm9yJywgcmVzdWx0LndpbmRvdy5ET01FeGNlcHRpb24sICgpID0+IHsgdGhyb3cg
cmVzdWx0LmV4Y2VwdGlvbjsgfSwgJ011c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3InKTsK
IH0sICdkb2N1bWVudC5vcGVuKCkgbXVzdCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciB3aGVu
IHN5bmNocm9ub3VzbHkgY29uc3RydWN0aW5nIGEgY3VzdG9tIGVsZW1lbnQnKTsKIAogcHJvbWlz
ZV90ZXN0KGFzeW5jIGZ1bmN0aW9uICgpIHsKICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBjb25z
dHJ1Y3RfY3VzdG9tX2VsZW1lbnRfaW5fcGFyc2VyKHRoaXMsIChkb2N1bWVudCkgPT4gZG9jdW1l
bnQub3BlbigndGV4dC9odG1sJykpOwotICAgIGFzc2VydF90aHJvd3Moe25hbWU6ICdJbnZhbGlk
U3RhdGVFcnJvcid9LCAoKSA9PiB7IHRocm93IHJlc3VsdC5leGNlcHRpb247IH0sICdNdXN0IHRo
cm93IGFuIEludmFsaWRTdGF0ZUVycm9yJyk7CisgICAgYXNzZXJ0X3Rocm93c19kb20oJ0ludmFs
aWRTdGF0ZUVycm9yJywgcmVzdWx0LndpbmRvdy5ET01FeGNlcHRpb24sICgpID0+IHsgdGhyb3cg
cmVzdWx0LmV4Y2VwdGlvbjsgfSwgJ011c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3InKTsK
IH0sICdkb2N1bWVudC5vcGVuKCJ0ZXh0L2h0bWwiKSBtdXN0IHRocm93IGFuIEludmFsaWRTdGF0
ZUVycm9yIHdoZW4gc3luY2hyb25vdXNseSBjb25zdHJ1Y3RpbmcgYSBjdXN0b20gZWxlbWVudCcp
OwogCiAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9keW5hbWljLW1h
cmt1cC1pbnNlcnRpb24uaHRtbCNkb20tZG9jdW1lbnQtb3Blbi13aW5kb3cKQEAgLTYzLDE5ICs2
MywxOSBAQCBwcm9taXNlX3Rlc3QoYXN5bmMgZnVuY3Rpb24gKCkgewogCiBwcm9taXNlX3Rlc3Qo
YXN5bmMgZnVuY3Rpb24gKCkgewogICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGNvbnN0cnVjdF9j
dXN0b21fZWxlbWVudF9pbl9wYXJzZXIodGhpcywgKGRvY3VtZW50KSA9PiBkb2N1bWVudC5jbG9z
ZSgpKTsKLSAgICBhc3NlcnRfdGhyb3dzKHtuYW1lOiAnSW52YWxpZFN0YXRlRXJyb3InfSwgKCkg
PT4geyB0aHJvdyByZXN1bHQuZXhjZXB0aW9uOyB9LCAnTXVzdCB0aHJvdyBhbiBJbnZhbGlkU3Rh
dGVFcnJvcicpOworICAgIGFzc2VydF90aHJvd3NfZG9tKCdJbnZhbGlkU3RhdGVFcnJvcicsIHJl
c3VsdC53aW5kb3cuRE9NRXhjZXB0aW9uLCAoKSA9PiB7IHRocm93IHJlc3VsdC5leGNlcHRpb247
IH0sICdNdXN0IHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yJyk7CiB9LCAnZG9jdW1lbnQuY2xv
c2UoKSBtdXN0IHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yIHdoZW4gc3luY2hyb25vdXNseSBj
b25zdHJ1Y3RpbmcgYSBjdXN0b20gZWxlbWVudCcpOwogCiBwcm9taXNlX3Rlc3QoYXN5bmMgZnVu
Y3Rpb24gKCkgewogICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGNvbnN0cnVjdF9jdXN0b21fZWxl
bWVudF9pbl9wYXJzZXIodGhpcywgKGRvY3VtZW50KSA9PiBkb2N1bWVudC53cml0ZSgnPGI+c29t
ZSB0ZXh0PC9iPicpKTsKLSAgICBhc3NlcnRfdGhyb3dzKHtuYW1lOiAnSW52YWxpZFN0YXRlRXJy
b3InfSwgKCkgPT4geyB0aHJvdyByZXN1bHQuZXhjZXB0aW9uOyB9LCAnTXVzdCB0aHJvdyBhbiBJ
bnZhbGlkU3RhdGVFcnJvcicpOworICAgIGFzc2VydF90aHJvd3NfZG9tKCdJbnZhbGlkU3RhdGVF
cnJvcicsIHJlc3VsdC53aW5kb3cuRE9NRXhjZXB0aW9uLCAoKSA9PiB7IHRocm93IHJlc3VsdC5l
eGNlcHRpb247IH0sICdNdXN0IHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yJyk7CiAgICAgYXNz
ZXJ0X2VxdWFscyhyZXN1bHQuZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYicpLCBudWxsLCAnTXVz
dCBub3QgaW5zZXJ0IG5ldyBjb250ZW50Jyk7CiAgICAgYXNzZXJ0X2ZhbHNlKHJlc3VsdC5kb2N1
bWVudC5kb2N1bWVudEVsZW1lbnQuaW5uZXJIVE1MLmluY2x1ZGVzKCdzb21lIHRleHQnKSwgJ011
c3Qgbm90IGluc2VydCBuZXcgY29udGVudCcpOwogfSwgJ2RvY3VtZW50LndyaXRlIG11c3QgdGhy
b3cgYW4gSW52YWxpZFN0YXRlRXJyb3Igd2hlbiBzeW5jaHJvbm91c2x5IGNvbnN0cnVjdGluZyBh
IGN1c3RvbSBlbGVtZW50Jyk7CiAKIHByb21pc2VfdGVzdChhc3luYyBmdW5jdGlvbiAoKSB7CiAg
ICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgY29uc3RydWN0X2N1c3RvbV9lbGVtZW50X2luX3BhcnNl
cih0aGlzLCAoZG9jdW1lbnQpID0+IGRvY3VtZW50LndyaXRlbG4oJzxiPnNvbWUgdGV4dDwvYj4n
KSk7Ci0gICAgYXNzZXJ0X3Rocm93cyh7bmFtZTogJ0ludmFsaWRTdGF0ZUVycm9yJ30sICgpID0+
IHsgdGhyb3cgcmVzdWx0LmV4Y2VwdGlvbjsgfSwgJ011c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRl
RXJyb3InKTsKKyAgICBhc3NlcnRfdGhyb3dzX2RvbSgnSW52YWxpZFN0YXRlRXJyb3InLCByZXN1
bHQud2luZG93LkRPTUV4Y2VwdGlvbiwgKCkgPT4geyB0aHJvdyByZXN1bHQuZXhjZXB0aW9uOyB9
LCAnTXVzdCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvcicpOwogICAgIGFzc2VydF9lcXVhbHMo
cmVzdWx0LmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2InKSwgbnVsbCwgJ011c3Qgbm90IGluc2Vy
dCBuZXcgY29udGVudCcpOwogICAgIGFzc2VydF9mYWxzZShyZXN1bHQuZG9jdW1lbnQuZG9jdW1l
bnRFbGVtZW50LmlubmVySFRNTC5pbmNsdWRlcygnc29tZSB0ZXh0JyksICdNdXN0IG5vdCBpbnNl
cnQgbmV3IGNvbnRlbnQnKTsKIH0sICdkb2N1bWVudC53cml0ZWxuIG11c3QgdGhyb3cgYW4gSW52
YWxpZFN0YXRlRXJyb3Igd2hlbiBzeW5jaHJvbm91c2x5IGNvbnN0cnVjdGluZyBhIGN1c3RvbSBl
bGVtZW50Jyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy90
aHJvdy1vbi1keW5hbWljLW1hcmt1cC1pbnNlcnRpb24tY291bnRlci1yZWFjdGlvbnMuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL3Rocm93LW9uLWR5bmFtaWMtbWFya3Vw
LWluc2VydGlvbi1jb3VudGVyLXJlYWN0aW9ucy5odG1sCmluZGV4IDA2ZmVlZjY4MmUwY2I4M2Ri
YWMyMGNiYTY2MjYwYzQxNjc0YjBlMTcuLmFhNjk5MGU1OTdlZmI4YWY0Y2U5NzAxNzRmYjNhNDU3
ZTYxYmI2ODEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL3Ro
cm93LW9uLWR5bmFtaWMtbWFya3VwLWluc2VydGlvbi1jb3VudGVyLXJlYWN0aW9ucy5odG1sCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL3Rocm93LW9uLWR5bmFtaWMtbWFy
a3VwLWluc2VydGlvbi1jb3VudGVyLXJlYWN0aW9ucy5odG1sCkBAIC00NSwxMiArNDUsMTIgQEAg
YXN5bmMgZnVuY3Rpb24gY3VzdG9tX2VsZW1lbnRfcmVhY3Rpb25zX2luX3BhcnNlcih0ZXN0LCBj
YWxsX2Z1bmN0aW9uKQogCiBwcm9taXNlX3Rlc3QoYXN5bmMgZnVuY3Rpb24gKCkgewogICAgIGNv
bnN0IHJlc3VsdCA9IGF3YWl0IGN1c3RvbV9lbGVtZW50X3JlYWN0aW9uc19pbl9wYXJzZXIodGhp
cywgKGRvY3VtZW50KSA9PiBkb2N1bWVudC5vcGVuKCkpOwotICAgIGFzc2VydF90aHJvd3Moe25h
bWU6ICdJbnZhbGlkU3RhdGVFcnJvcid9LCAoKSA9PiB7IHRocm93IHJlc3VsdC5leGNlcHRpb247
IH0sICdNdXN0IHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yJyk7CisgICAgYXNzZXJ0X3Rocm93
c19kb20oJ0ludmFsaWRTdGF0ZUVycm9yJywgcmVzdWx0LndpbmRvdy5ET01FeGNlcHRpb24sICgp
ID0+IHsgdGhyb3cgcmVzdWx0LmV4Y2VwdGlvbjsgfSwgJ011c3QgdGhyb3cgYW4gSW52YWxpZFN0
YXRlRXJyb3InKTsKIH0sICdkb2N1bWVudC5vcGVuKCkgbXVzdCB0aHJvdyBhbiBJbnZhbGlkU3Rh
dGVFcnJvciB3aGVuIHByb2Nlc3NpbmcgY3VzdG9tIGVsZW1lbnQgcmVhY3Rpb25zIGZvciBhIHN5
bmNocm9ub3VzIGNvbnN0cnVjdGVkIGN1c3RvbSBlbGVtZW50Jyk7CiAKIHByb21pc2VfdGVzdChh
c3luYyBmdW5jdGlvbiAoKSB7CiAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgY3VzdG9tX2VsZW1l
bnRfcmVhY3Rpb25zX2luX3BhcnNlcih0aGlzLCAoZG9jdW1lbnQpID0+IGRvY3VtZW50Lm9wZW4o
J3RleHQvaHRtbCcpKTsKLSAgICBhc3NlcnRfdGhyb3dzKHtuYW1lOiAnSW52YWxpZFN0YXRlRXJy
b3InfSwgKCkgPT4geyB0aHJvdyByZXN1bHQuZXhjZXB0aW9uOyB9LCAnTXVzdCB0aHJvdyBhbiBJ
bnZhbGlkU3RhdGVFcnJvcicpOworICAgIGFzc2VydF90aHJvd3NfZG9tKCdJbnZhbGlkU3RhdGVF
cnJvcicsIHJlc3VsdC53aW5kb3cuRE9NRXhjZXB0aW9uLCAoKSA9PiB7IHRocm93IHJlc3VsdC5l
eGNlcHRpb247IH0sICdNdXN0IHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yJyk7CiB9LCAnZG9j
dW1lbnQub3BlbigidGV4dC9odG1sIikgbXVzdCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciB3
aGVuIHByb2Nlc3NpbmcgY3VzdG9tIGVsZW1lbnQgcmVhY3Rpb25zIGZvciBhIHN5bmNocm9ub3Vz
IGNvbnN0cnVjdGVkIGN1c3RvbSBlbGVtZW50Jyk7CiAKIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndo
YXR3Zy5vcmcvbXVsdGlwYWdlL2R5bmFtaWMtbWFya3VwLWluc2VydGlvbi5odG1sI2RvbS1kb2N1
bWVudC1vcGVuLXdpbmRvdwpAQCAtNjMsMTkgKzYzLDE5IEBAIHByb21pc2VfdGVzdChhc3luYyBm
dW5jdGlvbiAoKSB7CiAKIHByb21pc2VfdGVzdChhc3luYyBmdW5jdGlvbiAoKSB7CiAgICAgY29u
c3QgcmVzdWx0ID0gYXdhaXQgY3VzdG9tX2VsZW1lbnRfcmVhY3Rpb25zX2luX3BhcnNlcih0aGlz
LCAoZG9jdW1lbnQpID0+IGRvY3VtZW50LmNsb3NlKCkpOwotICAgIGFzc2VydF90aHJvd3Moe25h
bWU6ICdJbnZhbGlkU3RhdGVFcnJvcid9LCAoKSA9PiB7IHRocm93IHJlc3VsdC5leGNlcHRpb247
IH0sICdNdXN0IHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yJyk7CisgICAgYXNzZXJ0X3Rocm93
c19kb20oJ0ludmFsaWRTdGF0ZUVycm9yJywgcmVzdWx0LndpbmRvdy5ET01FeGNlcHRpb24sICgp
ID0+IHsgdGhyb3cgcmVzdWx0LmV4Y2VwdGlvbjsgfSwgJ011c3QgdGhyb3cgYW4gSW52YWxpZFN0
YXRlRXJyb3InKTsKIH0sICdkb2N1bWVudC5jbG9zZSgpIG11c3QgdGhyb3cgYW4gSW52YWxpZFN0
YXRlRXJyb3Igd2hlbiBwcm9jZXNzaW5nIGN1c3RvbSBlbGVtZW50IHJlYWN0aW9ucyBmb3IgYSBz
eW5jaHJvbm91cyBjb25zdHJ1Y3RlZCBjdXN0b20gZWxlbWVudCcpOwogCiBwcm9taXNlX3Rlc3Qo
YXN5bmMgZnVuY3Rpb24gKCkgewogICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGN1c3RvbV9lbGVt
ZW50X3JlYWN0aW9uc19pbl9wYXJzZXIodGhpcywgKGRvY3VtZW50KSA9PiBkb2N1bWVudC53cml0
ZSgnPGI+c29tZSB0ZXh0PC9iPicpKTsKLSAgICBhc3NlcnRfdGhyb3dzKHtuYW1lOiAnSW52YWxp
ZFN0YXRlRXJyb3InfSwgKCkgPT4geyB0aHJvdyByZXN1bHQuZXhjZXB0aW9uOyB9LCAnTXVzdCB0
aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvcicpOworICAgIGFzc2VydF90aHJvd3NfZG9tKCdJbnZh
bGlkU3RhdGVFcnJvcicsIHJlc3VsdC53aW5kb3cuRE9NRXhjZXB0aW9uLCAoKSA9PiB7IHRocm93
IHJlc3VsdC5leGNlcHRpb247IH0sICdNdXN0IHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yJyk7
CiAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQuZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYicpLCBu
dWxsLCAnTXVzdCBub3QgaW5zZXJ0IG5ldyBjb250ZW50Jyk7CiAgICAgYXNzZXJ0X2ZhbHNlKHJl
c3VsdC5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuaW5uZXJIVE1MLmluY2x1ZGVzKCdzb21lIHRl
eHQnKSwgJ011c3Qgbm90IGluc2VydCBuZXcgY29udGVudCcpOwogfSwgJ2RvY3VtZW50LndyaXRl
IG11c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3Igd2hlbiBwcm9jZXNzaW5nIGN1c3RvbSBl
bGVtZW50IHJlYWN0aW9ucyBmb3IgYSBzeW5jaHJvbm91cyBjb25zdHJ1Y3RlZCBjdXN0b20gZWxl
bWVudCcpOwogCiBwcm9taXNlX3Rlc3QoYXN5bmMgZnVuY3Rpb24gKCkgewogICAgIGNvbnN0IHJl
c3VsdCA9IGF3YWl0IGN1c3RvbV9lbGVtZW50X3JlYWN0aW9uc19pbl9wYXJzZXIodGhpcywgKGRv
Y3VtZW50KSA9PiBkb2N1bWVudC53cml0ZWxuKCc8Yj5zb21lIHRleHQ8L2I+JykpOwotICAgIGFz
c2VydF90aHJvd3Moe25hbWU6ICdJbnZhbGlkU3RhdGVFcnJvcid9LCAoKSA9PiB7IHRocm93IHJl
c3VsdC5leGNlcHRpb247IH0sICdNdXN0IHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yJyk7Cisg
ICAgYXNzZXJ0X3Rocm93c19kb20oJ0ludmFsaWRTdGF0ZUVycm9yJywgcmVzdWx0LndpbmRvdy5E
T01FeGNlcHRpb24sICgpID0+IHsgdGhyb3cgcmVzdWx0LmV4Y2VwdGlvbjsgfSwgJ011c3QgdGhy
b3cgYW4gSW52YWxpZFN0YXRlRXJyb3InKTsKICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdC5kb2N1
bWVudC5xdWVyeVNlbGVjdG9yKCdiJyksIG51bGwsICdNdXN0IG5vdCBpbnNlcnQgbmV3IGNvbnRl
bnQnKTsKICAgICBhc3NlcnRfZmFsc2UocmVzdWx0LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5p
bm5lckhUTUwuaW5jbHVkZXMoJ3NvbWUgdGV4dCcpLCAnTXVzdCBub3QgaW5zZXJ0IG5ldyBjb250
ZW50Jyk7CiB9LCAnZG9jdW1lbnQud3JpdGVsbiBtdXN0IHRocm93IGFuIEludmFsaWRTdGF0ZUVy
cm9yIHdoZW4gcHJvY2Vzc2luZyBjdXN0b20gZWxlbWVudCByZWFjdGlvbnMgZm9yIGEgc3luY2hy
b25vdXMgY29uc3RydWN0ZWQgY3VzdG9tIGVsZW1lbnQnKTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZG9tL2RvY3VtZW50LWFsbC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vZG9j
dW1lbnQtYWxsLmh0bWwKaW5kZXggMTA4NzMxMDgzYTgxOGVjZTBiZTczMDBiNWVkMzAwMGFhMTUy
NzY3ZC4uNzI0MzcwNmRiMjdhNTQ0ZTE0ZTNmNmJmMTRlMjYyNTIwY2YxNzE0ZiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vZG9jdW1lbnQtYWxsLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vZG9jdW1lbnQtYWxsLmh0bWwKQEAgLTE1Myw3ICsxNTMsNyBAQCB0ZXN0KGZ1
bmN0aW9uKCkgewogfSwgImRvY3VtZW50LmFsbCB3aWxsIHJldHVybiBhIHN1Yi1jb2xsZWN0aW9u
IGlmIHRoZSBuYW1lL2lkIGlzIGZvdW5kIG1vcmUgdGhhbiBvbmNlLCB0aGF0IGlzIGxpdmUiKTsK
IAogdGVzdChmdW5jdGlvbigpIHsKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwg
ZnVuY3Rpb24oKSB7IGRvY3VtZW50LmFsbC5uYW1lZEl0ZW0oKSB9KTsKKyAgICBhc3NlcnRfdGhy
b3dzX2pzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7IGRvY3VtZW50LmFsbC5uYW1lZEl0ZW0oKSB9
KTsKIH0sICJkb2N1bWVudC5hbGwncyBuYW1lZEl0ZW0gZnVuY3Rpb24gcmVxdWlyZXMgcGFzc2lu
ZyBhbiBhcmd1bWVudCIpOwogCiB0ZXN0KGZ1bmN0aW9uKCkgewpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9kb20vZWxlbWVudEZyb21Qb2ludC1wYXJhbWV0ZXJzLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9lbGVtZW50RnJvbVBvaW50LXBhcmFtZXRlcnMuaHRtbAppbmRleCBhZGRk
MjZkODkxMzFkYTA5MTdiMTBlNGM5NWU3ZGM2YTc5ZGE4MTFhLi40MmFmNDFlM2NhYTU3YjBhNTA5
OTNhNjk1ZWNhYjg5OWYxOGU3OGYzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9l
bGVtZW50RnJvbVBvaW50LXBhcmFtZXRlcnMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9lbGVtZW50RnJvbVBvaW50LXBhcmFtZXRlcnMuaHRtbApAQCAtNiwyNiArNiwyNiBAQAogPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+
CiA8c2NyaXB0PgogdGVzdChmdW5jdGlvbigpIHsKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBl
RXJyb3IoKSwgZnVuY3Rpb24oKSB7IAorICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCBm
dW5jdGlvbigpIHsgCiAgICAgICAgIGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoKTsKICAgICB9
LCAiQ2FsbGVkIHdpdGggbm8gcGFyYW1ldGVyIik7CiAKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBU
eXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7IAorICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9y
LCBmdW5jdGlvbigpIHsgCiAgICAgICAgIGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoMCk7CiAg
ICAgfSwgIkNhbGxlZCB3aXRoIDEgcGFyYW1ldGVyIik7CiB9LCAiUGFyYW1ldGVycyBhcmUgbWFu
ZGF0b3J5LiIpOwogCiB0ZXN0KGZ1bmN0aW9uKCkgewotICAgIGFzc2VydF90aHJvd3MobmV3IFR5
cGVFcnJvcigpLCBmdW5jdGlvbigpIHsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwg
ZnVuY3Rpb24oKSB7CiAgICAgICAgIGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoMCwgSW5maW5p
dHkpOwogICAgIH0sICJQYXNzaW5nIEluZmluaXR5IGFzIHNlY29uZCBwYXJhbWV0ZXIgdGhyb3dz
Iik7Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgeworICAg
IGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKICAgICAgICAgZG9jdW1l
bnQuZWxlbWVudEZyb21Qb2ludChJbmZpbml0eSwgMCk7CiAgICAgfSwgIlBhc3NpbmcgSW5maW5p
dHkgYXMgZmlyc3QgcGFyYW1ldGVyIHRocm93cyIpOwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5
cGVFcnJvcigpLCBmdW5jdGlvbigpIHsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwg
ZnVuY3Rpb24oKSB7CiAgICAgICAgIGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoMCwgTmFOKTsK
ICAgICB9LCAiUGFzc2luZyBOYU4gYXMgc2Vjb25kIHBhcmFtZXRlciB0aHJvd3MiKTsKLSAgICBh
c3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7CisgICAgYXNzZXJ0X3Ro
cm93c19qcyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgewogICAgICAgICBkb2N1bWVudC5lbGVtZW50
RnJvbVBvaW50KE5hTiwgMCk7CiAgICAgfSwgIlBhc3NpbmcgTmFOIGFzIGZpcnN0IHBhcmFtZXRl
ciB0aHJvd3MiKTsKIH0sICJQYXJhbWV0ZXIgc2hvdWxkIGJlIGZpbml0ZSBmbG9hdGluZyBwb2lu
dCB2YWx1ZXMuIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9yZXBsYWNlYWJs
ZS1zZXR0ZXItdGhyb3dzLWlmLWRlZmluZW93bnByb3BlcnR5LWZhaWxzLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9yZXBsYWNlYWJsZS1zZXR0ZXItdGhyb3dzLWlmLWRlZmluZW93bnByb3Bl
cnR5LWZhaWxzLmh0bWwKaW5kZXggY2ZhYmZmMzUxYTI1MjU4ZjIxYzBmYmZhYWUzYTc0NjgxOThl
NjY4MC4uZGNlYTkzYjUxMTZhNWMyMmZlYTI0MGJlODgzNzA2NmEwMjk2MWQ3YiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVwbGFjZWFibGUtc2V0dGVyLXRocm93cy1pZi1kZWZp
bmVvd25wcm9wZXJ0eS1mYWlscy5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3JlcGxh
Y2VhYmxlLXNldHRlci10aHJvd3MtaWYtZGVmaW5lb3ducHJvcGVydHktZmFpbHMuaHRtbApAQCAt
MTEsNyArMTEsNyBAQAogZm9yIChjb25zdCBrZXkgb2YgWyJzZWxmIiwgInBhcmVudCIsICJvcmln
aW4iLCAiaW5uZXJXaWR0aCJdKSB7CiAgICAgdGVzdCgoKSA9PiB7CiAgICAgICAgIE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eSh3aW5kb3csIGtleSwgeyBjb25maWd1cmFibGU6IGZhbHNlIH0pOwotICAg
ICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IsICgpID0+IHsgd2luZG93W2tleV0gPSAx
OyB9KTsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IHsgd2luZG93
W2tleV0gPSAxOyB9KTsKIAogICAgICAgICBjb25zdCBkZXNjID0gT2JqZWN0LmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcih3aW5kb3csIGtleSk7CiAgICAgICAgIGFzc2VydF9mYWxzZSgidmFsdWUi
IGluIGRlc2MpOwpAQCAtMjYsNyArMjYsNyBAQCBmb3IgKGNvbnN0IGtleSBvZiBbInNjcmVlbiIs
ICJsZW5ndGgiLCAiZXZlbnQiLCAib3V0ZXJIZWlnaHQiXSkgewogICAgIHRlc3QoKCkgPT4gewog
ICAgICAgICBjb25zdCB7IHNldCB9ID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3
aW5kb3csIGtleSk7CiAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh3aW5kb3csIGtleSwg
eyB2YWx1ZTogMSwgd3JpdGFibGU6IGZhbHNlLCBjb25maWd1cmFibGU6IGZhbHNlIH0pOwotICAg
ICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IsICgpID0+IHsgc2V0LmNhbGwod2luZG93
LCAyKTsgfSk7CisgICAgICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiB7IHNl
dC5jYWxsKHdpbmRvdywgMik7IH0pOwogCiAgICAgICAgIGNvbnN0IGRlc2MgPSBPYmplY3QuZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKHdpbmRvdywga2V5KTsKICAgICAgICAgYXNzZXJ0X2VxdWFs
cyhkZXNjLnZhbHVlLCAxKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3dpbmRv
dy1vcGVuZXItc2V0dGVyLXRocm93cy1pZi1kZWZpbmVvd25wcm9wZXJ0eS1mYWlscy0xLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS93aW5kb3ctb3BlbmVyLXNldHRlci10aHJvd3MtaWYtZGVm
aW5lb3ducHJvcGVydHktZmFpbHMtMS5odG1sCmluZGV4IDQyMzM5MWQ1ZGZjMjVmZWY0MWFhNmEz
YWUyZTBiMDQzOWZiYjdiNjUuLjU5OWI1MTI1MWIzZDA1Mjc1MmFkMjU0YmNkYzljNWFkNjMyMjEx
YmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3dpbmRvdy1vcGVuZXItc2V0dGVy
LXRocm93cy1pZi1kZWZpbmVvd25wcm9wZXJ0eS1mYWlscy0xLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vd2luZG93LW9wZW5lci1zZXR0ZXItdGhyb3dzLWlmLWRlZmluZW93bnByb3Bl
cnR5LWZhaWxzLTEuaHRtbApAQCAtMTAsNyArMTAsNyBAQAogPHNjcmlwdD4KIHRlc3QoKCkgPT4g
ewogICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh3aW5kb3csICJvcGVuZXIiLCB7IGNvbmZpZ3Vy
YWJsZTogZmFsc2UgfSk7Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yLCAoKSA9PiB7
IHdpbmRvdy5vcGVuZXIgPSAxOyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwg
KCkgPT4geyB3aW5kb3cub3BlbmVyID0gMTsgfSk7CiAKICAgICBjb25zdCBkZXNjID0gT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3aW5kb3csICJvcGVuZXIiKTsKICAgICBhc3NlcnRf
ZmFsc2UoInZhbHVlIiBpbiBkZXNjKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9t
L3dpbmRvdy1vcGVuZXItc2V0dGVyLXRocm93cy1pZi1kZWZpbmVvd25wcm9wZXJ0eS1mYWlscy0y
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS93aW5kb3ctb3BlbmVyLXNldHRlci10aHJvd3Mt
aWYtZGVmaW5lb3ducHJvcGVydHktZmFpbHMtMi5odG1sCmluZGV4IDY2YWMyOTc5MjlmMDExZTI4
YWQ4ODczNDM1ODkzZjA2M2E2OGZjYjUuLjk0NmNmM2EzMmFmMmEyMGM0ZTU1YjE4OTE5OTBmMDI4
ZmY0Mjc0YmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3dpbmRvdy1vcGVuZXIt
c2V0dGVyLXRocm93cy1pZi1kZWZpbmVvd25wcm9wZXJ0eS1mYWlscy0yLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vd2luZG93LW9wZW5lci1zZXR0ZXItdGhyb3dzLWlmLWRlZmluZW93
bnByb3BlcnR5LWZhaWxzLTIuaHRtbApAQCAtMTEsNyArMTEsNyBAQAogdGVzdCgoKSA9PiB7CiAg
ICAgY29uc3QgeyBzZXQgfSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iod2luZG93
LCAib3BlbmVyIik7CiAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdywgIm9wZW5lciIs
IHsgdmFsdWU6IDEsIHdyaXRhYmxlOiBmYWxzZSwgY29uZmlndXJhYmxlOiBmYWxzZSB9KTsKLSAg
ICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IsICgpID0+IHsgc2V0LmNhbGwod2luZG93LCAy
KTsgfSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IHsgc2V0LmNhbGwo
d2luZG93LCAyKTsgfSk7CiAKICAgICBjb25zdCBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvcih3aW5kb3csICJvcGVuZXIiKTsKICAgICBhc3NlcnRfZXF1YWxzKGRlc2MudmFs
dWUsIDEpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvY2xpcGJvYXJkLWV2
ZW50LWNvbnN0cnVjdG9yLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9jbGlwYm9hcmQt
ZXZlbnQtY29uc3RydWN0b3IuaHRtbAppbmRleCA3NzQ5MzYxNmE3Mzk4Zjc2ZjMwOGQ0OTk0NTUw
N2FlNjQxNTlmMmY4Li5hMTNkMDNkNjJiZGZlMjMxNTVmZjgxMjBlNDI2ZjdmODg3MTQwZTVhIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9jbGlwYm9hcmQtZXZlbnQtY29uc3Ry
dWN0b3IuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9jbGlwYm9hcmQtZXZlbnQt
Y29uc3RydWN0b3IuaHRtbApAQCAtOCw3ICs4LDcgQEAKIDxib2R5PgogPHNjcmlwdD4KIHRlc3Qo
ZnVuY3Rpb24oKSB7Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9u
KCkgeworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKICAgICAg
ICAgbmV3IENsaXBib2FyZEV2ZW50KCk7CiAgICAgfSk7CiB9LCAiRmlyc3QgcGFyYW1ldGVyIGlz
IG1hbmRhdG9yeSIpOwpAQCAtNjQsNyArNjQsNyBAQCB0ZXN0KGZ1bmN0aW9uKCkgewogfSwgImJ1
YmJsZXMgLyBjYW5jZWxhYmxlIC8gY29tcG9zZWQgbWVtYmVycyIpOwogCiB0ZXN0KGZ1bmN0aW9u
KCkgewotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsKKyAg
ICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CiAgICAgICAgIG5ldyBD
bGlwYm9hcmRFdmVudCgiZm9vIiwge2NsaXBib2FyZERhdGE6IGRvY3VtZW50fSk7CiAgICAgfSk7
CiB9LCAiUGFzc2luZyBhIGJhZCB0eXBlIGZvciBjbGlwYm9hcmREYXRhIG1lbWJlciBzaG91bGQg
dGhyb3ciKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvd29ya2Vycy9yZXNv
dXJjZXMvd29ya2VyLWZpbGUtcmVhZGVyLXN5bmMtYmFkLXBhcmFtZXRlci5qcyBiL0xheW91dFRl
c3RzL2Zhc3QvZmlsZXMvd29ya2Vycy9yZXNvdXJjZXMvd29ya2VyLWZpbGUtcmVhZGVyLXN5bmMt
YmFkLXBhcmFtZXRlci5qcwppbmRleCBjOTVhZmNkMGZlNWUwZGFhYmU4NTdmOTU4YTZmZWVkODUy
ZmI1MGI2Li45MTM0NTVkNjZhMmVjZTk4OTZiYjk3OTA2Y2I0YzUyYjExMjgyNTUyIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1maWxl
LXJlYWRlci1zeW5jLWJhZC1wYXJhbWV0ZXIuanMKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9maWxl
cy93b3JrZXJzL3Jlc291cmNlcy93b3JrZXItZmlsZS1yZWFkZXItc3luYy1iYWQtcGFyYW1ldGVy
LmpzCkBAIC0yLDE4ICsyLDE4IEBAIGlmIChzZWxmLmltcG9ydFNjcmlwdHMpCiAgIHNlbGYuaW1w
b3J0U2NyaXB0cygnLi4vLi4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJyk7CiAKIHRl
c3QoZnVuY3Rpb24oKSB7Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0
aW9uKCkgeyBuZXcgRmlsZVJlYWRlclN5bmMoKS5yZWFkQXNCaW5hcnlTdHJpbmcobnVsbCk7IH0p
OwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsgbmV3IEZp
bGVSZWFkZXJTeW5jKCkucmVhZEFzQXJyYXlCdWZmZXIobnVsbCk7IH0pOwotICAgIGFzc2VydF90
aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsgbmV3IEZpbGVSZWFkZXJTeW5jKCku
cmVhZEFzVGV4dChudWxsKTsgfSk7Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCks
IGZ1bmN0aW9uKCkgeyBuZXcgRmlsZVJlYWRlclN5bmMoKS5yZWFkQXNEYXRhVVJMKG51bGwpOyB9
KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7IG5ldyBGaWxl
UmVhZGVyU3luYygpLnJlYWRBc0JpbmFyeVN0cmluZyhudWxsKTsgfSk7CisgICAgYXNzZXJ0X3Ro
cm93c19qcyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeyBuZXcgRmlsZVJlYWRlclN5bmMoKS5yZWFk
QXNBcnJheUJ1ZmZlcihudWxsKTsgfSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3Is
IGZ1bmN0aW9uKCkgeyBuZXcgRmlsZVJlYWRlclN5bmMoKS5yZWFkQXNUZXh0KG51bGwpOyB9KTsK
KyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7IG5ldyBGaWxlUmVh
ZGVyU3luYygpLnJlYWRBc0RhdGFVUkwobnVsbCk7IH0pOwogfSwgIlRyeWluZyB0byByZWFkIGEg
bnVsbCBwYXJhbWV0ZXIiKTsKIAogCiB0ZXN0KGZ1bmN0aW9uKCkgewotICAgIGFzc2VydF90aHJv
d3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsgbmV3IEZpbGVSZWFkZXJTeW5jKCkucmVh
ZEFzQmluYXJ5U3RyaW5nKHVuZGVmaW5lZCk7IH0pOwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5
cGVFcnJvcigpLCBmdW5jdGlvbigpIHsgbmV3IEZpbGVSZWFkZXJTeW5jKCkucmVhZEFzQXJyYXlC
dWZmZXIodW5kZWZpbmVkKTsgfSk7Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCks
IGZ1bmN0aW9uKCkgeyBuZXcgRmlsZVJlYWRlclN5bmMoKS5yZWFkQXNUZXh0KHVuZGVmaW5lZCk7
IH0pOwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsgbmV3
IEZpbGVSZWFkZXJTeW5jKCkucmVhZEFzRGF0YVVSTCh1bmRlZmluZWQpOyB9KTsKKyAgICBhc3Nl
cnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7IG5ldyBGaWxlUmVhZGVyU3luYygp
LnJlYWRBc0JpbmFyeVN0cmluZyh1bmRlZmluZWQpOyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pz
KFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7IG5ldyBGaWxlUmVhZGVyU3luYygpLnJlYWRBc0FycmF5
QnVmZmVyKHVuZGVmaW5lZCk7IH0pOworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCBm
dW5jdGlvbigpIHsgbmV3IEZpbGVSZWFkZXJTeW5jKCkucmVhZEFzVGV4dCh1bmRlZmluZWQpOyB9
KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7IG5ldyBGaWxl
UmVhZGVyU3luYygpLnJlYWRBc0RhdGFVUkwodW5kZWZpbmVkKTsgfSk7CiB9LCAiVHJ5aW5nIHRv
IHJlYWQgYW4gdW5kZWZpbmVkIHBhcmFtZXRlciIpOwogCiBkb25lKCk7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2ZpbGVzL3hoci1ibG9iLXJlcXVlc3QuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvZmlsZXMveGhyLWJsb2ItcmVxdWVzdC5odG1sCmluZGV4IGFjZjNhN2QyYjFhNWExOTgx
ZGQ4NzdiYzFlYjlhYjViYmFkMzA3NzAuLmYyNmFmZDEyMzc4MDdhNWRjNzE4NmU3NTAzMjA1Nzg2
NTkzYTZjNGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMveGhyLWJsb2ItcmVx
dWVzdC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMveGhyLWJsb2ItcmVxdWVzdC5o
dG1sCkBAIC01MCw3ICs1MCw3IEBAIGZ1bmN0aW9uIHRlc3Rfbm90QWxsb3dlZF9tZXRob2Rfc3lu
YyhtZXRob2QpIHsKICAgICAgICAgICAgIGFzc2VydF91bnJlYWNoZWQoJ0V4Y2VwdGlvbiBzaG91
bGQgYmUgdGhyb3duIGZvciBzeW5jaHJvbm91cyAnICsgbWV0aG9kICsgJyBYSFInKTsKICAgICAg
ICAgfQogCi0gICAgICAgIGFzc2VydF90aHJvd3MoJ05ldHdvcmtFcnJvcicsICgpID0+IHsgcmVx
LnNlbmQoKTsgfSwgJ0V4Y2VwdGlvbiB0aHJvd24gZm9yIHN5bmNocm9ub3VzICcgKyBtZXRob2Qg
KyAnIFhIUicpOworICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgnTmV0d29ya0Vycm9yJywgKCkg
PT4geyByZXEuc2VuZCgpOyB9LCAnRXhjZXB0aW9uIHRocm93biBmb3Igc3luY2hyb25vdXMgJyAr
IG1ldGhvZCArICcgWEhSJyk7CiAKICAgICAgICAgYXNzZXJ0X2ZhbHNlKG9uRXJyb3IsICdFcnJv
ciBjYWxsYmFjayBpcyBjYWxsZWQnKTsKICAgICB9LCAnU3luY2hyb25vdXMgWEhSIHJlcXVlc3Qg
c2hvdWxkIHRocm93IGV4Y2VwdGlvbiB3aXRoICcgKyBtZXRob2QpOwpAQCAtOTcsNyArOTcsNyBA
QCBmdW5jdGlvbiB0ZXN0X21ldGhvZF9hc3luYyhtZXRob2QsIHNob3VsZExvYWQpIHsKIAogZnVu
Y3Rpb24gdGVzdF9mb3JiaWRkZW5fbWV0aG9kKHJlcXVlc3QpIHsKICAgICB0ZXN0KCgpID0+IHsK
LSAgICAgICAgYXNzZXJ0X3Rocm93cygnU2VjdXJpdHlFcnJvcicsICgpID0+IHsKKyAgICAgICAg
YXNzZXJ0X3Rocm93c19kb20oJ1NlY3VyaXR5RXJyb3InLCAoKSA9PiB7CiAgICAgICAgICAgICB2
YXIgcmVxID0gbmV3IFhNTEh0dHBSZXF1ZXN0OwogICAgICAgICAgICAgcmVxLm9wZW4ocmVxdWVz
dCwgdXJsKTsKICAgICAgICAgfSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFj
YXB0dXJlZnJvbWVsZW1lbnQvQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtLWV4Y2VwdGlvbnMuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFjYXB0dXJlZnJvbWVsZW1lbnQvQ2FudmFzQ2FwdHVy
ZU1lZGlhU3RyZWFtLWV4Y2VwdGlvbnMuaHRtbAppbmRleCA2OWY4ZGZlZGNlYTFlMWMyNzc3NDhl
MThkOWQyMjJlMWZhMzNkMjQ3Li4xOWRkYjMwMDk4MzA0OTdjYzVhYTA0NzZlMmQ4MWJiMDM5NDEw
M2FjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhY2FwdHVyZWZyb21lbGVtZW50
L0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbS1leGNlcHRpb25zLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9tZWRpYWNhcHR1cmVmcm9tZWxlbWVudC9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW0t
ZXhjZXB0aW9ucy5odG1sCkBAIC02LDcgKzYsNyBAQAogCiB0ZXN0KGZ1bmN0aW9uKCkgewogICB2
YXIgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7Ci0gIGFzc2VydF90
aHJvd3MoIk5vdFN1cHBvcnRlZEVycm9yIiwgZnVuY3Rpb24oKSB7IGNhbnZhcy5jYXB0dXJlU3Ry
ZWFtKC0wLjUpIH0sCisgIGFzc2VydF90aHJvd3NfZG9tKCJOb3RTdXBwb3J0ZWRFcnJvciIsIGZ1
bmN0aW9uKCkgeyBjYW52YXMuY2FwdHVyZVN0cmVhbSgtMC41KSB9LAogICAgICAgICAgICAgICAg
ICJjYW5ub3QgaGF2ZSBuZWdhdGl2ZSBmcmFtZSByYXRlIik7CiB9LCAnY2hlY2sgY2FwdHVyZVN0
cmVhbSgpIHRocm93cyBFeGNlcHRpb24gd2l0aCBpbnZhbGlkIGZyYW1lIHJhdGUnKTsKIApAQCAt
MjIsNyArMjIsNyBAQCBmdW5jdGlvbiBtYWtlQXN5bmNUZXN0KCkgewogICAgICAgY3R4LmZpbGxT
dHlsZSA9IHBhdHRlcm47CiAgICAgICBjdHguZmlsbFJlY3QoMCwgMCwgMTAwLCAxMDApOwogCi0g
ICAgICBhc3NlcnRfdGhyb3dzKCJTZWN1cml0eUVycm9yIiwgZnVuY3Rpb24oKSB7IGNhbnZhcy5j
YXB0dXJlU3RyZWFtKCkgfSwKKyAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJTZWN1cml0eUVycm9y
IiwgZnVuY3Rpb24oKSB7IGNhbnZhcy5jYXB0dXJlU3RyZWFtKCkgfSwKICAgICAgICAgICAgICAg
ICAiY2Fubm90IGhhdmUgY3Jvc3Mgb3JpZ2luIik7CiAgICAgICB0ZXN0LmRvbmUoKTsKICAgICB9
KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzZXNzaW9uL21ldGFkYXRhL2Fy
dHdvcmtkb3dubG9hZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXNlc3Npb24vbWV0YWRh
dGEvYXJ0d29ya2Rvd25sb2FkLmh0bWwKaW5kZXggZjZiMTE1MmJkYmU4MTMxMWUyMDRlOWFjOTYx
NzY2OTJkYjgyZTliYi4uODQxNjA1OTkyODFiNDZmMzE3NDE4MmNjZTU2MWJjOWNjYmJhYzBjZiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXNlc3Npb24vbWV0YWRhdGEvYXJ0d29y
a2Rvd25sb2FkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXNlc3Npb24vbWV0YWRh
dGEvYXJ0d29ya2Rvd25sb2FkLmh0bWwKQEAgLTIwLDE0ICsyMCwxNCBAQCBwcm9taXNlX3Rlc3Qo
YXN5bmMgKHRlc3QpID0+IHsKICAgICBpZiAoIXdpbmRvdy5pbnRlcm5hbHMpCiAgICAgICAgIHJl
dHVybiBQcm9taXNlLnJlamVjdHMoIlRlc3QgbmVlZHMgaW50ZXJuYWxzIik7CiAKLSAgICByZXR1
cm4gcHJvbWlzZV9yZWplY3RzKHRlc3QsICdJbnZhbGlkQWNjZXNzRXJyb3InLCBpbnRlcm5hbHMu
bG9hZEFydHdvcmtJbWFnZSgiYmFkX2ltYWdlLmpwZyIpKTsKKyAgICByZXR1cm4gcHJvbWlzZV9y
ZWplY3RzX2RvbSh0ZXN0LCAnSW52YWxpZEFjY2Vzc0Vycm9yJywgaW50ZXJuYWxzLmxvYWRBcnR3
b3JrSW1hZ2UoImJhZF9pbWFnZS5qcGciKSk7CiB9LCAiZW5zdXJlIGxvYWRpbmcgaW52YWxpZCBh
cnR3b3JrIGNhdXNlcyBhIGZhaWx1cmUiKTsKIAogcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9
PiB7CiAgICAgaWYgKCF3aW5kb3cuaW50ZXJuYWxzKQogICAgICAgICByZXR1cm4gUHJvbWlzZS5y
ZWplY3RzKCJUZXN0IG5lZWRzIGludGVybmFscyIpOwogCi0gICAgcmV0dXJuIHByb21pc2VfcmVq
ZWN0cyh0ZXN0LCAnSW52YWxpZEFjY2Vzc0Vycm9yJywgaW50ZXJuYWxzLmxvYWRBcnR3b3JrSW1h
Z2UoIiIpKTsKKyAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2RvbSh0ZXN0LCAnSW52YWxpZEFj
Y2Vzc0Vycm9yJywgaW50ZXJuYWxzLmxvYWRBcnR3b3JrSW1hZ2UoIiIpKTsKIH0sICJlbnN1cmUg
bG9hZGluZyBhIG5vbi1pbWFnZSBjYXVzZXMgYSBmYWlsdXJlIik7CiAKICAgICAgICAgPC9zY3Jp
cHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL3NjcmVlbmNhcHR1
cmUtdXNlci1nZXN0dXJlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL3NjcmVl
bmNhcHR1cmUtdXNlci1nZXN0dXJlLmh0bWwKaW5kZXggOTU4MjY5NDc5OTA1MThlZWU2MTUxMzE0
OTMzZGFiNDNiZjQ0NWEwMy4uNjdhYjBhMWMxNjIwNDVhYzk3NDVjYzBhYWM2ZjBhZTc2ZWYzOTY0
YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9zY3JlZW5jYXB0dXJl
LXVzZXItZ2VzdHVyZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vc2Ny
ZWVuY2FwdHVyZS11c2VyLWdlc3R1cmUuaHRtbApAQCAtMjUsNiArMjUsNiBAQCBwcm9taXNlX3Rl
c3QoKCkgPT4gewogCiAKIHByb21pc2VfdGVzdCgodGVzdCkgPT4gewotICAgIHJldHVybiBwcm9t
aXNlX3JlamVjdHModGVzdCwgIkludmFsaWRBY2Nlc3NFcnJvciIsIG5hdmlnYXRvci5tZWRpYURl
dmljZXMuZ2V0RGlzcGxheU1lZGlhKHt2aWRlbyA6IHRydWV9KSk7CisgICAgcmV0dXJuIHByb21p
c2VfcmVqZWN0c19kb20odGVzdCwgIkludmFsaWRBY2Nlc3NFcnJvciIsIG5hdmlnYXRvci5tZWRp
YURldmljZXMuZ2V0RGlzcGxheU1lZGlhKHt2aWRlbyA6IHRydWV9KSk7CiB9LCAiRGVueSBnZXRE
aXNwbGF5TWVkaWEgY2FsbCBpZiBubyB1c2VyIGdlc3R1cmUiKTsKIDwvc2NyaXB0PgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmV0Y2gvZmV0Y2gtdXJsLXNlcmlhbGl6YXRpb24uaHRtbCBiL0xh
eW91dFRlc3RzL2ZldGNoL2ZldGNoLXVybC1zZXJpYWxpemF0aW9uLmh0bWwKaW5kZXggZGU3OTM2
NDEwZWYxNDk3MzJhNjhlYWVjNTFiMDU0NzU5MDM4OGM4OS4uNjQyMmJkMjA4NDc2MTI5MTQxZWQy
M2M4YjI5MjdkMTZmNTZlYmExZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmV0Y2gvZmV0Y2gt
dXJsLXNlcmlhbGl6YXRpb24uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mZXRjaC9mZXRjaC11cmwt
c2VyaWFsaXphdGlvbi5odG1sCkBAIC0xNyw3ICsxNyw3IEBAIGZ1bmN0aW9uIGV4ZWN1dGVUZXN0
cyh1cmxzKQogICAgICAgICAgICAgdGVzdChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYmFzZSIpLnNldEF0dHJpYnV0ZSgiaHJlZiIsIHVybC5i
YXNlKTsKICAgICAgICAgICAgICAgICBpZiAodXJsLnVzZXJuYW1lIHx8IHVybC5wYXNzd29yZCB8
fCB1cmwuZmFpbHVyZSkKLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlw
ZUVycm9yKCksIGZ1bmN0aW9uKCkgeyAgbmV3IFJlcXVlc3QodXJsLmlucHV0KTsgfSk7CisgICAg
ICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsg
IG5ldyBSZXF1ZXN0KHVybC5pbnB1dCk7IH0pOwogICAgICAgICAgICAgICAgIGVsc2UgewogICAg
ICAgICAgICAgICAgICAgICB2YXIgcmVxdWVzdCA9IG5ldyBSZXF1ZXN0KHVybC5pbnB1dCk7CiAg
ICAgICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocmVxdWVzdC51cmwsIHVybC5ocmVmKTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvZmV0Y2gvZmV0Y2hpbmctc2FtZS1y
ZXNvdXJjZS13aXRoLWRpZmZlcmVudC1vcHRpb25zLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2ZldGNoL2ZldGNoaW5nLXNhbWUtcmVzb3VyY2Utd2l0aC1kaWZmZXJlbnQtb3B0aW9ucy5o
dG1sCmluZGV4IGNjZjk1M2UxYzIzYTI5ZWJhNDFmMDE2YzJmZDRhMDA4MTQzNTNmYTUuLjNiNGVm
MmRhYzc1Y2YzNTg5MDI4ZmJlNzRmMTcxZmQ5NTNjYjA0ZGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvZmV0Y2gvZmV0Y2hpbmctc2FtZS1yZXNvdXJjZS13aXRoLWRpZmZlcmVu
dC1vcHRpb25zLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9mZXRjaC9mZXRjaGlu
Zy1zYW1lLXJlc291cmNlLXdpdGgtZGlmZmVyZW50LW9wdGlvbnMuaHRtbApAQCAtMjEsOCArMjEs
OCBAQCBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgewogICAgICAgICAgICAgICAgICAgICBhc3Nl
cnRfdHJ1ZShhcnJheUJ1ZmZlci5ieXRlTGVuZ3RoID4gMCk7CiAgICAgICAgICAgICAgICAgfSk7
CiAgICAgICAgICAgICB9KSwKLSAgICAgICAgICAgIHByb21pc2VfcmVqZWN0cyh0LCBuZXcgVHlw
ZUVycm9yKCksIGZldGNoKHVybDEsIHsibW9kZSI6ICJjb3JzIiwgImNyZWRlbnRpYWxzIjogImlu
Y2x1ZGUifSkpLAotICAgICAgICAgICAgcHJvbWlzZV9yZWplY3RzKHQsIG5ldyBUeXBlRXJyb3Io
KSwgZmV0Y2godXJsMiwgeyJtb2RlIjogImNvcnMiLCAiY3JlZGVudGlhbHMiOiAiaW5jbHVkZSJ9
KSksCisgICAgICAgICAgICBwcm9taXNlX3JlamVjdHNfanModCwgVHlwZUVycm9yLCBmZXRjaCh1
cmwxLCB7Im1vZGUiOiAiY29ycyIsICJjcmVkZW50aWFscyI6ICJpbmNsdWRlIn0pKSwKKyAgICAg
ICAgICAgIHByb21pc2VfcmVqZWN0c19qcyh0LCBUeXBlRXJyb3IsIGZldGNoKHVybDIsIHsibW9k
ZSI6ICJjb3JzIiwgImNyZWRlbnRpYWxzIjogImluY2x1ZGUifSkpLAogICAgICAgICAgICAgZmV0
Y2godXJsMiwgeyJtb2RlIjogImNvcnMifSkudGhlbigocmVzcG9uc2UpID0+IHsKICAgICAgICAg
ICAgICAgICBhc3NlcnRfZXF1YWxzKHJlc3BvbnNlLnR5cGUsICJjb3JzIik7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIHJlc3BvbnNlLmFycmF5QnVmZmVyKCkudGhlbigoYXJyYXlCdWZmZXIpID0+
IHsKQEAgLTQ4LDkgKzQ4LDkgQEAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKICAgICAgICAg
ICAgIGFzc2VydF9lcXVhbHMocmVzcG9uc2UudHlwZSwgIm9wYXF1ZSIpOwogICAgICAgICB9KTsK
ICAgICB9KS50aGVuKCgpID0+IHsKLSAgICAgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCBu
ZXcgVHlwZUVycm9yKCksIGZldGNoKHVybDMsIHsibW9kZSI6ICJjb3JzIiwgImNyZWRlbnRpYWxz
IjogImluY2x1ZGUifSkpOworICAgICAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2pzKHQsIFR5
cGVFcnJvciwgZmV0Y2godXJsMywgeyJtb2RlIjogImNvcnMiLCAiY3JlZGVudGlhbHMiOiAiaW5j
bHVkZSJ9KSk7CiAgICAgfSkudGhlbigoKSA9PiB7Ci0gICAgICAgIHJldHVybiBwcm9taXNlX3Jl
amVjdHModCwgbmV3IFR5cGVFcnJvcigpLCBmZXRjaCh1cmw0LCB7Im1vZGUiOiAiY29ycyIsICJj
cmVkZW50aWFscyI6ICJpbmNsdWRlIn0pKTsKKyAgICAgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0
c19qcyh0LCBUeXBlRXJyb3IsIGZldGNoKHVybDQsIHsibW9kZSI6ICJjb3JzIiwgImNyZWRlbnRp
YWxzIjogImluY2x1ZGUifSkpOwogICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAgICByZXR1cm4g
ZmV0Y2godXJsNCwgeyJtb2RlIjogIm5vLWNvcnMifSkudGhlbigocmVzcG9uc2UpID0+IHsKICAg
ICAgICAgICAgIGFzc2VydF9lcXVhbHMocmVzcG9uc2UudHlwZSwgIm9wYXF1ZSIpOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9mZXRjaC9yZWRpcmVjdG1vZGUtYW5kLXByZWxv
YWQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvZmV0Y2gvcmVkaXJlY3Rtb2RlLWFuZC1w
cmVsb2FkLmh0bWwKaW5kZXggY2JiNjVmZjRmMWZiZGNmNjJhN2NlMWYzYzM1MWYzY2Y3NmQyMjM0
Ny4uMzI0YmVhNTU2ZGYzZDI1ZjNmYTljODc2ZDcyMDExMTlhNzMxOTgyZCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9mZXRjaC9yZWRpcmVjdG1vZGUtYW5kLXByZWxvYWQuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ZldGNoL3JlZGlyZWN0bW9kZS1hbmQtcHJl
bG9hZC5odG1sCkBAIC0yNiw3ICsyNiw3IEBAIGZ1bmN0aW9uIHN0YXJ0VGVzdHMoKQogICAgIH0s
ICJGZXRjaCBzaG91bGQgY2hlY2sgZm9yIHJlZGlyZWN0aW9ucyBldmVuIGlmIHJlc291cmNlIGlz
IHByZWxvYWRlZCAoZGlmZmVyZW50IGZldGNoIG1vZGUsIGRpZmZlcmVudCByZWRpcmVjdCBtb2Rl
KSIpOwogCiAgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHRlc3QpIHsKLSAgICAgICAgcmV0dXJu
IHByb21pc2VfcmVqZWN0cyh0ZXN0LCBuZXcgVHlwZUVycm9yKCksIGZldGNoKHByZWxvYWRVcmws
IHtyZWRpcmVjdDogImVycm9yIiwgbW9kZTogImNvcnMiLCBjcmVkZW50aWFsczogImluY2x1ZGUi
fSkpOworICAgICAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2pzKHRlc3QsIFR5cGVFcnJvciwg
ZmV0Y2gocHJlbG9hZFVybCwge3JlZGlyZWN0OiAiZXJyb3IiLCBtb2RlOiAiY29ycyIsIGNyZWRl
bnRpYWxzOiAiaW5jbHVkZSJ9KSk7CiAgICAgfSwgIkZldGNoIHNob3VsZCBjaGVjayBmb3IgcmVk
aXJlY3Rpb25zIGV2ZW4gaWYgcmVzb3VyY2UgaXMgcHJlbG9hZGVkIChkaWZmZXJlbnQgZmV0Y2gg
bW9kZSwgZGlmZmVyZW50IHJlZGlyZWN0IG1vZGUpIDIiKTsKIH0KICAgICA8L3NjcmlwdD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9wdXNoc3RhdGUtYXQt
dW5pcXVlLW9yaWdpbi1kZW5pZWQucHkgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRp
b24vcHVzaHN0YXRlLWF0LXVuaXF1ZS1vcmlnaW4tZGVuaWVkLnB5CmluZGV4IDQ3NWVmMjMwMjM5
OWU3NjE2ODc2OGJiMWRiMDIxYTcwN2MzZDg5ZWMuLjI4MjI1MTU0N2UzMTc2ZjJiNDQzZWEyOWNl
NTQ4ZmE2NTFmNjIxMTAgMTAwNzU1Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdh
dGlvbi9wdXNoc3RhdGUtYXQtdW5pcXVlLW9yaWdpbi1kZW5pZWQucHkKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3B1c2hzdGF0ZS1hdC11bmlxdWUtb3JpZ2luLWRlbmll
ZC5weQpAQCAtMTAsNyArMTAsNyBAQCBzeXMuc3Rkb3V0LndyaXRlKAogICAgICc8c2NyaXB0Plxu
JwogICAgICd2YXIgb3JpZ2luVVJMID0gZG9jdW1lbnQuVVJMO1xuJwogICAgICd0ZXN0KGZ1bmN0
aW9uICgpIHtcbicKLSAgICAnICAgIGFzc2VydF90aHJvd3MoXCdTZWN1cml0eUVycm9yXCcsIGZ1
bmN0aW9uICgpIHtcbicKKyAgICAnICAgIGFzc2VydF90aHJvd3NfZG9tKFwnU2VjdXJpdHlFcnJv
clwnLCBmdW5jdGlvbiAoKSB7XG4nCiAgICAgJyAgICAgICAgaGlzdG9yeS5wdXNoU3RhdGUobnVs
bCwgbnVsbCwgb3JpZ2luVVJMICsgIi9wYXRoIik7XG4nCiAgICAgJyAgICB9KTtcbicKICAgICAn
fSwgXCdwdXNoU3RhdGUgdG8gYSBuZXcgcGF0aCBpbiB1bmlxdWUgb3JpZ2luIHNob3VsZCBmYWls
IHdpdGggU2VjdXJpdHlFcnJvclwnKTtcbicKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvbm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb24uaHRtbCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvbm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb24uaHRtbAppbmRleCAzOTE4NTkwMDA3MTEz
OTVlYWRlMTUxYTc0OGJhMmJkYmI4MjcwOGJlLi45M2E4N2NiNDkwYzhmM2UyMGJjZWNmOWY0YTMz
MTRhOWJkNzNhODFlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25vdGlmaWNh
dGlvbnMvbm90aWZpY2F0aW9uLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9ub3Rp
ZmljYXRpb25zL25vdGlmaWNhdGlvbi5odG1sCkBAIC0xMSw3ICsxMSw3IEBACiA8c2NyaXB0Pgog
CiB0ZXN0KGZ1bmN0aW9uKCkgewotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBm
dW5jdGlvbigpIHsgbmV3IE5vdGlmaWNhdGlvbigpOyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pz
KFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7IG5ldyBOb3RpZmljYXRpb24oKTsgfSk7CiB9LCAiVGhl
IE5vdGlmaWNhdGlvbiBjb25zdHJ1Y3RvciByZXF1aXJlcyBhdCBsZWFzdCBvbmUgYXJndW1lbnQu
Iik7CiAKIHRlc3QoZnVuY3Rpb24oKSB7CkBAIC01Myw3ICs1Myw3IEBAIHRlc3QoZnVuY3Rpb24o
KSB7CiAgICAgbGV0IG5vdGlmaWNhdGlvbjMgPSBuZXcgTm90aWZpY2F0aW9uKCJ0ZXN0IHRpdGxl
IiwgeyBkaXI6ICJydGwiIH0pOwogICAgIGFzc2VydF9lcXVhbHMobm90aWZpY2F0aW9uMy5kaXIs
ICJydGwiKTsKIAotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigp
IHsgbmV3IE5vdGlmaWNhdGlvbigidGVzdCB0aXRsZSIsIHsgZGlyOiAiZm9vIiB9KSB9KTsKKyAg
ICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7IG5ldyBOb3RpZmljYXRp
b24oInRlc3QgdGl0bGUiLCB7IGRpcjogImZvbyIgfSkgfSk7CiB9LCAiVGhlIE5vdGlmaWNhdGlv
bk9wdGlvbnMgZGljdGlvbmFyeSBvbmx5IGFjY2VwdHMgdmFsaWQgTm90aWZpY2F0aW9uRGlyZWN0
aW9uIHZhbHVlcy4iKTsKIAogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtYWRkcmVzcy1hdHRyaWJ1dGVzLWFuZC10b0pT
T04tbWV0aG9kLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1
ZXN0L3BheW1lbnQtYWRkcmVzcy1hdHRyaWJ1dGVzLWFuZC10b0pTT04tbWV0aG9kLmh0dHBzLmh0
bWwKaW5kZXggYzYwMzliNTMwY2VmNzJmZThiMWVjYWQ5NWVhM2UyYTc0ZmIzMzViZC4uYTQ2Zjli
MjBjOGE2Mzc2OTIxNTk1ZTVhNTNkM2M1MjBjYzI0ODk2NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LWFkZHJlc3MtYXR0cmlidXRlcy1h
bmQtdG9KU09OLW1ldGhvZC5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
cGF5bWVudHJlcXVlc3QvcGF5bWVudC1hZGRyZXNzLWF0dHJpYnV0ZXMtYW5kLXRvSlNPTi1tZXRo
b2QuaHR0cHMuaHRtbApAQCAtMzEsOCArMzEsOCBAQCBmdW5jdGlvbiBydW5UZXN0KGJ1dHRvbiwg
ZXhwZWN0ZWQgPSB7fSkgewogICAgICAgYWRkci5hZGRyZXNzTGluZSBpbnN0YW5jZW9mIEFycmF5
LAogICAgICAgIkV4cGVjdGVkIGFkZHJlc3NMaW5lIHRvIGJlIGFuIGFycmF5IgogICAgICk7Ci0g
ICAgYXNzZXJ0X3Rocm93cygKLSAgICAgIG5ldyBUeXBlRXJyb3IoKSwKKyAgICBhc3NlcnRfdGhy
b3dzX2pzKAorICAgICAgVHlwZUVycm9yLAogICAgICAgKCkgPT4gewogICAgICAgICBhZGRyLmFk
ZHJlc3NMaW5lLnB1c2goInRoaXMgbXVzdCB0aHJvdyIpOwogICAgICAgfSwKQEAgLTU5LDggKzU5
LDggQEAgZnVuY3Rpb24gcnVuVGVzdChidXR0b24sIGV4cGVjdGVkID0ge30pIHsKICAgICB9CiAg
ICAgYXNzZXJ0X2VxdWFscyhqc29uQWRkcmVzc0VudHJpZXMubGVuZ3RoLCBleHBlY3RlZEVudHJp
ZXMubGVuZ3RoKTsKICAgICAvLyBDaGVjayB0aGF0IC50b0pTT04oKSBjcmVhdGVkIGEgZnJvemVu
IGFycmF5Ci0gICAgYXNzZXJ0X3Rocm93cygKLSAgICAgIG5ldyBUeXBlRXJyb3IoKSwKKyAgICBh
c3NlcnRfdGhyb3dzX2pzKAorICAgICAgVHlwZUVycm9yLAogICAgICAgKCkgPT4gewogICAgICAg
ICBqc29uQWRkcmVzcy5hZGRyZXNzTGluZS5wdXNoKCJ0aGlzIG11c3QgdGhyb3ciKTsKICAgICAg
IH0sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3Bh
eW1lbnQtaXMtc2hvd2luZy5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXlt
ZW50cmVxdWVzdC9wYXltZW50LWlzLXNob3dpbmcuaHR0cHMuaHRtbAppbmRleCBhODRiOGEyNGRi
N2YzZGE2YzIyY2FlMGYyNzI5MTZjYzhmYjBmOTNlLi42ZDM5ZGM0NGZkMTBhNjhiNmYyYTUxYmZi
ZWU1YjFiNmVmODg4YzY0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1l
bnRyZXF1ZXN0L3BheW1lbnQtaXMtc2hvd2luZy5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1pcy1zaG93aW5nLmh0dHBzLmh0bWwK
QEAgLTgxLDcgKzgxLDcgQEAKICAgICAgICAgICByZXR1cm4gW3JlcXVlc3QyLnNob3coKV0KICAg
ICAgICAgfQogICAgICAgKTsKLSAgICAgIGF3YWl0IHByb21pc2VfcmVqZWN0cygKKyAgICAgIGF3
YWl0IHByb21pc2VfcmVqZWN0c19kb20oCiAgICAgICAgIHQsCiAgICAgICAgICdBYm9ydEVycm9y
JywKICAgICAgICAgc2hvd1Byb21pc2UyLApAQCAtODksNyArODksNyBAQAogICAgICAgKTsKIAog
ICAgICAgYXdhaXQgcmVxdWVzdDEuYWJvcnQoKTsKLSAgICAgIGF3YWl0IHByb21pc2VfcmVqZWN0
cygKKyAgICAgIGF3YWl0IHByb21pc2VfcmVqZWN0c19kb20oCiAgICAgICAgIHQsCiAgICAgICAg
ICdBYm9ydEVycm9yJywKICAgICAgICAgc2hvd1Byb21pc2UxLApAQCAtMTAwLDcgKzEwMCw3IEBA
CiAgICAgICAvLyBpdCB3aWxsIGFnYWluIHJlc3VsdCBpbiBwcm9taXNlIHJlamVjdGVkIHdpdGgg
YW4gSW52YWxpZFN0YXRlRXJyb3IuCiAgICAgICAvLyBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS93
M2MvcGF5bWVudC1yZXF1ZXN0L3B1bGwvODIxCiAgICAgICBjb25zdCBbcmVqZWN0ZWRQcm9taXNl
XSA9IGF3YWl0IGFjdGl2YXRlVGhlbihhc3luYyAoKSA9PiB7IHJldHVybiBbcmVxdWVzdDIuc2hv
dygpXSB9KTsKLSAgICAgIGF3YWl0IHByb21pc2VfcmVqZWN0cygKKyAgICAgIGF3YWl0IHByb21p
c2VfcmVqZWN0c19kb20oCiAgICAgICAgIHQsCiAgICAgICAgICdJbnZhbGlkU3RhdGVFcnJvcics
CiAgICAgICAgIHJlamVjdGVkUHJvbWlzZSwKQEAgLTEzNyw3ICsxMzcsNyBAQAogICAgICAgICB9
CiAgICAgICApOwogCi0gICAgICBhd2FpdCBwcm9taXNlX3JlamVjdHMoCisgICAgICBhd2FpdCBw
cm9taXNlX3JlamVjdHNfZG9tKAogICAgICAgICB0LAogICAgICAgICAnQWJvcnRFcnJvcicsCiAg
ICAgICAgIHdpbmRvd1Nob3dQcm9taXNlLApAQCAtMTQ2LDkgKzE0NiwxMCBAQAogCiAgICAgICAv
LyBDbGVhbnVwCiAgICAgICBhd2FpdCBpZnJhbWVSZXF1ZXN0LmFib3J0KCk7Ci0gICAgICBhd2Fp
dCBwcm9taXNlX3JlamVjdHMoCisgICAgICBhd2FpdCBwcm9taXNlX3JlamVjdHNfZG9tKAogICAg
ICAgICB0LAogICAgICAgICAnQWJvcnRFcnJvcicsCisgICAgICAgIGlmcmFtZVdpbmRvdy5ET01F
eGNlcHRpb24sCiAgICAgICAgIGlmcmFtZVNob3dQcm9taXNlLAogICAgICAgICAnYWJvcnQoKSB3
YXMgY2FsbGVkJyk7CiAgICAgICBpZnJhbWUucmVtb3ZlKCk7CkBAIC0xNzcsMTYgKzE3OCwxNyBA
QAogICAgICAgICB9CiAgICAgICApOwogCi0gICAgICBhd2FpdCBwcm9taXNlX3JlamVjdHMoCisg
ICAgICBhd2FpdCBwcm9taXNlX3JlamVjdHNfZG9tKAogICAgICAgICB0LAogICAgICAgICAnQWJv
cnRFcnJvcicsCisgICAgICAgIGlmcmFtZVdpbmRvdy5ET01FeGNlcHRpb24sCiAgICAgICAgIGlm
cmFtZVNob3dQcm9taXNlLAogICAgICAgICAnVGhlIHRvcCB3aW5kb3cgaXMgYWxyZWFkeSBzaG93
aW5nIGEgcGF5bWVudCByZXF1ZXN0LicsCiAgICAgICApOwogCiAgICAgICAvLyBDbGVhbnVwCiAg
ICAgICBhd2FpdCB3aW5kb3dSZXF1ZXN0LmFib3J0KCk7Ci0gICAgICBhd2FpdCBwcm9taXNlX3Jl
amVjdHMoCisgICAgICBhd2FpdCBwcm9taXNlX3JlamVjdHNfZG9tKAogICAgICAgICB0LAogICAg
ICAgICAnQWJvcnRFcnJvcicsCiAgICAgICAgIHdpbmRvd1Nob3dQcm9taXNlLApAQCAtMjE3LDE1
ICsyMTksMTYgQEAKICAgICAgICAgfQogICAgICAgKTsKIAotICAgICAgYXdhaXQgcHJvbWlzZV9y
ZWplY3RzKAorICAgICAgYXdhaXQgcHJvbWlzZV9yZWplY3RzX2RvbSgKICAgICAgICAgdCwKICAg
ICAgICAgJ0Fib3J0RXJyb3InLAorICAgICAgICBpZnJhbWVXaW5kb3cuRE9NRXhjZXB0aW9uLAog
ICAgICAgICBpZnJhbWVTaG93UHJvbWlzZSwKICAgICAgICAgJ0V4cGVjdGVkIGlmcmFtZVNob3dQ
cm9taXNlIHRvIHJlamVjdCwgcmVxdWVzdCBpcyBhbHJlYWR5IHNob3dpbmcuJywKICAgICAgICk7
CiAKICAgICAgIGF3YWl0IHdpbmRvd1JlcXVlc3QuYWJvcnQoKTsKLSAgICAgIGF3YWl0IHByb21p
c2VfcmVqZWN0cygKKyAgICAgIGF3YWl0IHByb21pc2VfcmVqZWN0c19kb20oCiAgICAgICAgIHQs
CiAgICAgICAgICdBYm9ydEVycm9yJywKICAgICAgICAgd2luZG93U2hvd1Byb21pc2UsCkBAIC0y
NTYsNyArMjU5LDcgQEAKICAgICAgICk7CiAKICAgICAgIC8vIHdpbmRvd1Nob3dQcm9taXNlIGFu
ZCBpZnJhbWVSZXF1ZXN0IHdpbGwgYm90aCByZWplY3QKLSAgICAgIGF3YWl0IHByb21pc2VfcmVq
ZWN0cygKKyAgICAgIGF3YWl0IHByb21pc2VfcmVqZWN0c19kb20oCiAgICAgICAgIHQsCiAgICAg
ICAgICdBYm9ydEVycm9yJywKICAgICAgICAgd2luZG93U2hvd1Byb21pc2UsCkBAIC0yNjQsOSAr
MjY3LDEwIEBACiAgICAgICApOwogCiAgICAgICBhd2FpdCBpZnJhbWVSZXF1ZXN0LmFib3J0KCk7
Ci0gICAgICBhd2FpdCBwcm9taXNlX3JlamVjdHMoCisgICAgICBhd2FpdCBwcm9taXNlX3JlamVj
dHNfZG9tKAogICAgICAgICB0LAogICAgICAgICAnQWJvcnRFcnJvcicsCisgICAgICAgIGlmcmFt
ZVdpbmRvdy5ET01FeGNlcHRpb24sCiAgICAgICAgIGlmcmFtZVNob3dQcm9taXNlLAogICAgICAg
ICAnYWJvcnQoKSB3YXMgY2FsbGVkJyk7CiAgICAgICBpZnJhbWUucmVtb3ZlKCk7CkBAIC0yODQs
MTkgKzI4OCwxNCBAQAogICAgICAgLy8gYW5kIHRoZSByZXF1ZXN0IGlzIHNob3dpbmcgYm9vbGVh
biB0byBiZWNvbWUgZmFsc2UuCiAgICAgICBpZnJhbWUuc3JjID0gJ3Jlc291cmNlcy9ibGFuay5o
dG1sP2FiYz0xMjMnOwogICAgICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiAoaWZyYW1l
Lm9ubG9hZCA9IHJlc29sdmUpKTsKLSAgICAgIGF3YWl0IHByb21pc2VfcmVqZWN0cygKLSAgICAg
ICAgdCwKLSAgICAgICAgJ0Fib3J0RXJyb3InLAotICAgICAgICBpZnJhbWVTaG93UHJvbWlzZSwK
LSAgICAgICAgJ05hdmlnYXRpbmcgaWZyYW1lIGF3YXkgbXVzdCBjYXVzZSB0aGUgaWZyYW1lU2hv
d1Byb21pc2UgdG8gcmVqZWN0LicsCi0gICAgICApOworCiAgICAgICBpZnJhbWUucmVtb3ZlKCk7
CiAKICAgICAgIC8vIE5vdyB3ZSBzaG91bGQgYmUgb2sgdG8gc3BpbiB1cCBhIG5ldyBwYXltZW50
IHJlcXVlc3QKICAgICAgIGNvbnN0IHJlcXVlc3QgPSBuZXcgd2luZG93LlBheW1lbnRSZXF1ZXN0
KG1ldGhvZHMsIGRldGFpbHMpOwogICAgICAgY29uc3QgW3Nob3dQcm9taXNlXSA9IGF3YWl0IGFj
dGl2YXRlVGhlbihhc3luYyAoKSA9PiB7IHJldHVybiBbcmVxdWVzdC5zaG93KCldIH0pOwogICAg
ICAgYXdhaXQgcmVxdWVzdC5hYm9ydCgpOwotICAgICAgYXdhaXQgcHJvbWlzZV9yZWplY3RzKAor
ICAgICAgYXdhaXQgcHJvbWlzZV9yZWplY3RzX2RvbSgKICAgICAgICAgdCwKICAgICAgICAgJ0Fi
b3J0RXJyb3InLAogICAgICAgICBzaG93UHJvbWlzZSwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1yZXF1ZXN0LWFib3J0LW1ldGhvZC5o
dHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50
LXJlcXVlc3QtYWJvcnQtbWV0aG9kLmh0dHBzLmh0bWwKaW5kZXggYjRhNzM0MTFkN2U0N2IzY2U2
NjRmMzliNDRhN2RmOGQ1YTRkYWQ2Yy4uOTk4NjZlMzhiYTY4ZjA5MzYxZDg5MmQ1NGM1NGQwZThj
ZTU1Y2UyZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVz
dC9wYXltZW50LXJlcXVlc3QtYWJvcnQtbWV0aG9kLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LXJlcXVlc3QtYWJvcnQtbWV0aG9k
Lmh0dHBzLmh0bWwKQEAgLTQxLDE1ICs0MSwxNSBAQCBjb25zdCBkZWZhdWx0RGV0YWlscyA9IE9i
amVjdC5mcmVlemUoewogcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4gewogICAvLyByZXF1ZXN0IGlz
IGluICJjcmVhdGVkIiBzdGF0ZQogICBjb25zdCByZXF1ZXN0ID0gbmV3IFBheW1lbnRSZXF1ZXN0
KGRlZmF1bHRNZXRob2RzLCBkZWZhdWx0RGV0YWlscyk7Ci0gIGF3YWl0IHByb21pc2VfcmVqZWN0
cyh0LCAiSW52YWxpZFN0YXRlRXJyb3IiLCByZXF1ZXN0LmFib3J0KCkpOworICBhd2FpdCBwcm9t
aXNlX3JlamVjdHNfZG9tKHQsICJJbnZhbGlkU3RhdGVFcnJvciIsIHJlcXVlc3QuYWJvcnQoKSk7
CiB9LCBgVGhyb3dzIGlmIHRoZSBwcm9taXNlIFtbc3RhdGVdXSBpcyBub3QgImludGVyYWN0aXZl
ImApOwogCiBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CiAgIC8vIHJlcXVlc3QgaXMgaW4gImNy
ZWF0ZWQiIHN0YXRlLgogICBjb25zdCByZXF1ZXN0ID0gbmV3IFBheW1lbnRSZXF1ZXN0KGRlZmF1
bHRNZXRob2RzLCBkZWZhdWx0RGV0YWlscyk7Ci0gIGF3YWl0IHByb21pc2VfcmVqZWN0cyh0LCAi
SW52YWxpZFN0YXRlRXJyb3IiLCByZXF1ZXN0LmFib3J0KCkpOworICBhd2FpdCBwcm9taXNlX3Jl
amVjdHNfZG9tKHQsICJJbnZhbGlkU3RhdGVFcnJvciIsIHJlcXVlc3QuYWJvcnQoKSk7CiAgIC8v
IENhbGwgaXQgYWdhaW4sIGZvciBnb29kIG1lYXN1cmUuCi0gIGF3YWl0IHByb21pc2VfcmVqZWN0
cyh0LCAiSW52YWxpZFN0YXRlRXJyb3IiLCByZXF1ZXN0LmFib3J0KCkpOworICBhd2FpdCBwcm9t
aXNlX3JlamVjdHNfZG9tKHQsICJJbnZhbGlkU3RhdGVFcnJvciIsIHJlcXVlc3QuYWJvcnQoKSk7
CiAgIC8vIFRoZSByZXF1ZXN0J3Mgc3RhdGUgaXMgImNyZWF0ZWQiLCBzbyBsZXQncyBzaG93IGl0
CiAgIC8vIHdoaWNoIGNoYW5nZXMgdGhlIHN0YXRlIHRvICJpbnRlcmFjdGl2ZS4iLgogICBhd2Fp
dCBhY3RpdmF0ZVRoZW4oYXN5bmMgKCkgPT4gewpAQCAtNjIsNyArNjIsNyBAQCBwcm9taXNlX3Rl
c3QoYXN5bmMgdCA9PiB7CiAgICAgfSAKICAgfSk7CiAgIC8vIFRoZSByZXF1ZXN0IGlzIG5vdyAi
Y2xvc2VkIiwgc28uLi4KLSAgYXdhaXQgcHJvbWlzZV9yZWplY3RzKHQsICJJbnZhbGlkU3RhdGVF
cnJvciIsIHJlcXVlc3QuYWJvcnQoKSk7CisgIGF3YWl0IHByb21pc2VfcmVqZWN0c19kb20odCwg
IkludmFsaWRTdGF0ZUVycm9yIiwgcmVxdWVzdC5hYm9ydCgpKTsKIH0sIGBDYWxsaW5nIGFib3J0
IG11c3Qgbm90IGNoYW5nZSB0aGUgW1tzdGF0ZV1dIHVudGlsIGFmdGVyICJpbnRlcmFjdGl2ZSJg
KTsKIAogdXNlcl9hY3RpdmF0aW9uX3Rlc3QoYXN5bmMgdCA9PiB7CkBAIC03MywxMCArNzMsMTAg
QEAgdXNlcl9hY3RpdmF0aW9uX3Rlc3QoYXN5bmMgdCA9PiB7CiAgIH0gY2F0Y2ggKGVycikgewog
ICAgIGFzc2VydF90cnVlKGZhbHNlLCAiVW5leHBlY3RlZCBwcm9taXNlIHJlamVjdGlvbjogIiAr
IGVyci5tZXNzYWdlKTsKICAgfQotICBhd2FpdCBwcm9taXNlX3JlamVjdHModCwgIkFib3J0RXJy
b3IiLCBhY2NlcHRQcm9taXNlKTsKKyAgYXdhaXQgcHJvbWlzZV9yZWplY3RzX2RvbSh0LCAiQWJv
cnRFcnJvciIsIGFjY2VwdFByb21pc2UpOwogICAvLyBBcyByZXF1ZXN0IGlzIG5vdyAiY2xvc2Vk
IiwgdHJ5aW5nIHRvIHNob3cgaXQgd2lsbCBmYWlsCiAgIGF3YWl0IGFjdGl2YXRlVGhlbihhc3lu
YyAoKSA9PiB7Ci0gICAgYXdhaXQgcHJvbWlzZV9yZWplY3RzKHQsICJJbnZhbGlkU3RhdGVFcnJv
ciIsIHJlcXVlc3Quc2hvdygpKTsKKyAgICBhd2FpdCBwcm9taXNlX3JlamVjdHNfZG9tKHQsICJJ
bnZhbGlkU3RhdGVFcnJvciIsIHJlcXVlc3Quc2hvdygpKTsKICAgfSk7CiB9LCAiY2FsbGluZyAu
YWJvcnQoKSBjYXVzZXMgYWNjZXB0UHJvbWlzZSB0byByZWplY3QgYW5kIGNsb3NlcyB0aGUgcmVx
dWVzdC4iKTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVx
dWVzdC9wYXltZW50LXJlcXVlc3QtY2FubWFrZXBheW1lbnQtbWV0aG9kLmh0dHBzLmh0bWwgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVxdWVzdC1jYW5t
YWtlcGF5bWVudC1tZXRob2QuaHR0cHMuaHRtbAppbmRleCA0MzI3N2VhZTc1Y2MyZmU4ZGE2M2Vj
MmNmNDg3YjQyZWUwZjE2Y2UxLi5mMWZiMjViZDBjYjc2MTU1OTVkZWM2MDI3ZDIzOTc5YmQxMjY2
YWMzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3Bh
eW1lbnQtcmVxdWVzdC1jYW5tYWtlcGF5bWVudC1tZXRob2QuaHR0cHMuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVxdWVzdC1jYW5tYWtl
cGF5bWVudC1tZXRob2QuaHR0cHMuaHRtbApAQCAtNDQsMTMgKzQ0LDEzIEBAIHVzZXJfYWN0aXZh
dGlvbl90ZXN0KGFzeW5jIHQgPT4gewogICAgICAgYGNhbk1ha2VQYXltZW50UHJvbWlzZSBzaG91
bGQgaGF2ZSB0aHJvd24gSW52YWxpZFN0YXRlRXJyb3JgCiAgICAgKTsKICAgfSBjYXRjaCAoZXJy
KSB7Ci0gICAgYXdhaXQgcHJvbWlzZV9yZWplY3RzKHQsICJJbnZhbGlkU3RhdGVFcnJvciIsIGNh
bk1ha2VQYXltZW50UHJvbWlzZSk7CisgICAgYXdhaXQgcHJvbWlzZV9yZWplY3RzX2RvbSh0LCAi
SW52YWxpZFN0YXRlRXJyb3IiLCBjYW5NYWtlUGF5bWVudFByb21pc2UpOwogICB9IGZpbmFsbHkg
ewogICAgIGF3YWl0IHJlcXVlc3QuYWJvcnQoKTsKLSAgICBhd2FpdCBwcm9taXNlX3JlamVjdHMo
dCwgIkFib3J0RXJyb3IiLCBhY2NlcHRQcm9taXNlKTsKKyAgICBhd2FpdCBwcm9taXNlX3JlamVj
dHNfZG9tKHQsICJBYm9ydEVycm9yIiwgYWNjZXB0UHJvbWlzZSk7CiAgIH0KICAgLy8gVGhlIHN0
YXRlIHNob3VsZCBiZSAiY2xvc2VkIgotICBhd2FpdCBwcm9taXNlX3JlamVjdHModCwgIkludmFs
aWRTdGF0ZUVycm9yIiwgcmVxdWVzdC5jYW5NYWtlUGF5bWVudCgpKTsKKyAgYXdhaXQgcHJvbWlz
ZV9yZWplY3RzX2RvbSh0LCAiSW52YWxpZFN0YXRlRXJyb3IiLCByZXF1ZXN0LmNhbk1ha2VQYXlt
ZW50KCkpOwogfSwgJ0lmIHJlcXVlc3QuW1tzdGF0ZV1dIGlzICJpbnRlcmFjdGl2ZSIsIHRoZW4g
cmV0dXJuIGEgcHJvbWlzZSByZWplY3RlZCB3aXRoIGFuICJJbnZhbGlkU3RhdGVFcnJvciIgRE9N
RXhjZXB0aW9uLicpOwogCiAvLyBGSVhNRTogVGhpcyBjYW4gYmUgcmVtb3ZlZCBpbiBmYXZvciBv
ZiB0aGUgdGVzdCBpbiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3BheW1lbnQtcmVx
dWVzdCBvbmNlIHdlIHN1cHBvcnQgdGVzdF9kcml2ZXIuYmxlc3MoKS4KQEAgLTU5LDcgKzU5LDcg
QEAgdXNlcl9hY3RpdmF0aW9uX3Rlc3QoYXN5bmMgdCA9PiB7CiAgIGNvbnN0IGFjY2VwdFByb21p
c2UgPSByZXF1ZXN0LnNob3coKTsgLy8gU2V0cyBzdGF0ZSB0byAiaW50ZXJhY3RpdmUiCiAgIGFj
Y2VwdFByb21pc2UuY2F0Y2goKCkgPT4ge30pOyAvLyBuby1vcCwganVzdCB0byBzaWxlbmNlIHVu
aGFuZGxlZCByZWplY3Rpb24gaW4gZGV2dG9vbHMuCiAgIGF3YWl0IHJlcXVlc3QuYWJvcnQoKTsg
Ly8gVGhlIHN0YXRlIGlzIG5vdyAiY2xvc2VkIgotICBhd2FpdCBwcm9taXNlX3JlamVjdHModCwg
IkludmFsaWRTdGF0ZUVycm9yIiwgcmVxdWVzdC5jYW5NYWtlUGF5bWVudCgpKTsKKyAgYXdhaXQg
cHJvbWlzZV9yZWplY3RzX2RvbSh0LCAiSW52YWxpZFN0YXRlRXJyb3IiLCByZXF1ZXN0LmNhbk1h
a2VQYXltZW50KCkpOwogICB0cnkgewogICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlcXVlc3Qu
Y2FuTWFrZVBheW1lbnQoKTsKICAgICBhc3NlcnRfdHJ1ZSgKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1yZXF1ZXN0LW1lcmNoYW50LXZh
bGlkYXRpb24uaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVl
c3QvcGF5bWVudC1yZXF1ZXN0LW1lcmNoYW50LXZhbGlkYXRpb24uaHR0cHMuaHRtbAppbmRleCBi
MDBhZWQzZmNhMzEyNzE2NzE0MDRjYzYwNDFjODQ5OGQxN2FmOTYxLi42M2Q2NTk5Y2FiMzNmYjQx
MTdkZmQ1ODJkMjUxMDY1MzAwOTg5MDM4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVxdWVzdC1tZXJjaGFudC12YWxpZGF0aW9uLmh0
dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXlt
ZW50LXJlcXVlc3QtbWVyY2hhbnQtdmFsaWRhdGlvbi5odHRwcy5odG1sCkBAIC0zNiwxMCArMzYs
MTAgQEAgdXNlcl9hY3RpdmF0aW9uX3Rlc3QoYXN5bmMgdCA9PiB7CiAgICAgcmVxdWVzdC5vbm1l
cmNoYW50dmFsaWRhdGlvbiA9IGV2ZW50ID0+IHsKICAgICAgICAgYXNzZXJ0X2VxdWFscyhldmVu
dC52YWxpZGF0aW9uVVJMLCAiaHR0cHM6Ly93ZWJraXQub3JnLyIpOwogICAgICAgICBldmVudC5j
b21wbGV0ZSh7IH0pOwotICAgICAgICBhc3NlcnRfdGhyb3dzKCJJbnZhbGlkU3RhdGVFcnJvciIs
ICgpID0+IGV2ZW50LmNvbXBsZXRlKHsgfSkpOworICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgi
SW52YWxpZFN0YXRlRXJyb3IiLCAoKSA9PiBldmVudC5jb21wbGV0ZSh7IH0pKTsKICAgICAgICAg
cmVxdWVzdC5hYm9ydCgpOwogICAgIH07Ci0gICAgYXdhaXQgcHJvbWlzZV9yZWplY3RzKHQsICJB
Ym9ydEVycm9yIiwgcmVxdWVzdC5zaG93KCkpOworICAgIGF3YWl0IHByb21pc2VfcmVqZWN0c19k
b20odCwgIkFib3J0RXJyb3IiLCByZXF1ZXN0LnNob3coKSk7CiB9LCAiQ2FsbGluZyBjb21wbGV0
ZSgpIHR3aWNlIHRocm93cyBhbiBJbnZhbGlkU3RhdGVFcnJvci4iKTsKIAogdXNlcl9hY3RpdmF0
aW9uX3Rlc3QoYXN5bmMgdCA9PiB7CkBAIC01MCw5ICs1MCw5IEBAIHVzZXJfYWN0aXZhdGlvbl90
ZXN0KGFzeW5jIHQgPT4gewogICAgIHJlcXVlc3Qub25tZXJjaGFudHZhbGlkYXRpb24gPSBldmVu
dCA9PiB7CiAgICAgICAgIGFzc2VydF9lcXVhbHMoZXZlbnQudmFsaWRhdGlvblVSTCwgImh0dHBz
Oi8vd2Via2l0Lm9yZy8iKTsKICAgICAgICAgcmVxdWVzdC5hYm9ydCgpOwotICAgICAgICBhc3Nl
cnRfdGhyb3dzKCJJbnZhbGlkU3RhdGVFcnJvciIsICgpID0+IGV2ZW50LmNvbXBsZXRlKHsgfSkp
OworICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiSW52YWxpZFN0YXRlRXJyb3IiLCAoKSA9PiBl
dmVudC5jb21wbGV0ZSh7IH0pKTsKICAgICB9OwotICAgIGF3YWl0IHByb21pc2VfcmVqZWN0cyh0
LCAiQWJvcnRFcnJvciIsIHJlcXVlc3Quc2hvdygpKTsKKyAgICBhd2FpdCBwcm9taXNlX3JlamVj
dHNfZG9tKHQsICJBYm9ydEVycm9yIiwgcmVxdWVzdC5zaG93KCkpOwogfSwgIkNhbGxpbmcgY29t
cGxldGUoKSBhZnRlciBhYm9ydCgpIHRocm93cyBhbiBJbnZhbGlkU3RhdGVFcnJvci4iKTsKIAog
dXNlcl9hY3RpdmF0aW9uX3Rlc3QoYXN5bmMgdCA9PiB7CkBAIC02NCw3ICs2NCw3IEBAIHVzZXJf
YWN0aXZhdGlvbl90ZXN0KGFzeW5jIHQgPT4gewogICAgICAgICBhc3NlcnRfZXF1YWxzKGV2ZW50
LnZhbGlkYXRpb25VUkwsICJodHRwczovL3dlYmtpdC5vcmcvIik7CiAgICAgICAgIGV2ZW50LmNv
bXBsZXRlKG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHJlamVjdCgpKSk7CiAgICAg
fTsKLSAgICBhd2FpdCBwcm9taXNlX3JlamVjdHModCwgIkFib3J0RXJyb3IiLCByZXF1ZXN0LnNo
b3coKSk7CisgICAgYXdhaXQgcHJvbWlzZV9yZWplY3RzX2RvbSh0LCAiQWJvcnRFcnJvciIsIHJl
cXVlc3Quc2hvdygpKTsKIH0sICJDYWxsaW5nIGNvbXBsZXRlKCkgd2l0aCBhIHByb21pc2UgdGhh
dCBpcyByZWplY3RlZCBhYm9ydHMgdGhlIHJlcXVlc3QuIik7CiAKIHVzZXJfYWN0aXZhdGlvbl90
ZXN0KGFzeW5jIHQgPT4gewpAQCAtNzYsNyArNzYsNyBAQCB1c2VyX2FjdGl2YXRpb25fdGVzdChh
c3luYyB0ID0+IHsKICAgICAgICAgYXNzZXJ0X2VxdWFscyhldmVudC52YWxpZGF0aW9uVVJMLCAi
aHR0cHM6Ly93ZWJraXQub3JnLyIpOwogICAgICAgICBldmVudC5jb21wbGV0ZShuZXcgUHJvbWlz
ZShyZXNvbHZlID0+IHJlc29sdmUoNykpKTsKICAgICB9OwotICAgIGF3YWl0IHByb21pc2VfcmVq
ZWN0cyh0LCBuZXcgVHlwZUVycm9yKCksIHJlcXVlc3Quc2hvdygpKTsKKyAgICBhd2FpdCBwcm9t
aXNlX3JlamVjdHNfanModCwgVHlwZUVycm9yLCByZXF1ZXN0LnNob3coKSk7CiB9LCAiQ2FsbGlu
ZyBjb21wbGV0ZSgpIHdpdGggYSBudW1iZXIgYWJvcnRzIHRoZSByZXF1ZXN0IHdpdGggYSBUeXBl
RXJyb3IuIik7CiAKIHVzZXJfYWN0aXZhdGlvbl90ZXN0KGFzeW5jIHQgPT4gewpAQCAtODgsNyAr
ODgsNyBAQCB1c2VyX2FjdGl2YXRpb25fdGVzdChhc3luYyB0ID0+IHsKICAgICAgICAgYXNzZXJ0
X2VxdWFscyhldmVudC52YWxpZGF0aW9uVVJMLCAiaHR0cHM6Ly93ZWJraXQub3JnLyIpOwogICAg
ICAgICBldmVudC5jb21wbGV0ZShuZXcgUHJvbWlzZShyZXNvbHZlID0+IHJlc29sdmUodW5kZWZp
bmVkKSkpOwogICAgIH07Ci0gICAgYXdhaXQgcHJvbWlzZV9yZWplY3RzKHQsIG5ldyBUeXBlRXJy
b3IoKSwgcmVxdWVzdC5zaG93KCkpOworICAgIGF3YWl0IHByb21pc2VfcmVqZWN0c19qcyh0LCBU
eXBlRXJyb3IsIHJlcXVlc3Quc2hvdygpKTsKIH0sICJDYWxsaW5nIGNvbXBsZXRlKCkgd2l0aCB1
bmRlZmluZWQgYWJvcnRzIHRoZSByZXF1ZXN0IHdpdGggYSBUeXBlRXJyb3IuIik7CiAKIHVzZXJf
YWN0aXZhdGlvbl90ZXN0KGFzeW5jIHQgPT4gewpAQCAtMTAwLDcgKzEwMCw3IEBAIHVzZXJfYWN0
aXZhdGlvbl90ZXN0KGFzeW5jIHQgPT4gewogICAgICAgICBhc3NlcnRfZXF1YWxzKGV2ZW50LnZh
bGlkYXRpb25VUkwsICJodHRwczovL3dlYmtpdC5vcmcvIik7CiAgICAgICAgIGV2ZW50LmNvbXBs
ZXRlKG5ldyBQcm9taXNlKHJlc29sdmUgPT4gcmVzb2x2ZShudWxsKSkpOwogICAgIH07Ci0gICAg
YXdhaXQgcHJvbWlzZV9yZWplY3RzKHQsIG5ldyBUeXBlRXJyb3IoKSwgcmVxdWVzdC5zaG93KCkp
OworICAgIGF3YWl0IHByb21pc2VfcmVqZWN0c19qcyh0LCBUeXBlRXJyb3IsIHJlcXVlc3Quc2hv
dygpKTsKIH0sICJDYWxsaW5nIGNvbXBsZXRlKCkgd2l0aCBudWxsIGFib3J0cyB0aGUgcmVxdWVz
dCB3aXRoIGEgVHlwZUVycm9yLiIpOwogCiB1c2VyX2FjdGl2YXRpb25fdGVzdChhc3luYyB0ID0+
IHsKQEAgLTExMiw3ICsxMTIsNyBAQCB1c2VyX2FjdGl2YXRpb25fdGVzdChhc3luYyB0ID0+IHsK
ICAgICAgICAgYXNzZXJ0X2VxdWFscyhldmVudC52YWxpZGF0aW9uVVJMLCAiaHR0cHM6Ly93ZWJr
aXQub3JnLyIpOwogICAgICAgICBldmVudC5jb21wbGV0ZShuZXcgUHJvbWlzZShyZXNvbHZlID0+
IHJlc29sdmUoIiIpKSk7CiAgICAgfTsKLSAgICBhd2FpdCBwcm9taXNlX3JlamVjdHModCwgbmV3
IFR5cGVFcnJvcigpLCByZXF1ZXN0LnNob3coKSk7CisgICAgYXdhaXQgcHJvbWlzZV9yZWplY3Rz
X2pzKHQsIFR5cGVFcnJvciwgcmVxdWVzdC5zaG93KCkpOwogfSwgIkNhbGxpbmcgY29tcGxldGUo
KSB3aXRoIGEgc3RyaW5nIGFib3J0cyB0aGUgcmVxdWVzdCB3aXRoIGEgVHlwZUVycm9yLiIpOwog
CiB1c2VyX2FjdGl2YXRpb25fdGVzdChhc3luYyB0ID0+IHsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1yZXF1ZXN0LXNob3ctbWV0aG9k
Lmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1l
bnQtcmVxdWVzdC1zaG93LW1ldGhvZC5odHRwcy5odG1sCmluZGV4IDQzMmEwOWZlNGM2ODM4NDFi
ZDhhYTVhYTM5MTkwMDU0NDQyMDZjYTUuLjhmZDc4ODRlNTA4MGM3MWQwYzc1NTI1ZDk4ZWFkNDQ5
MmRiMmM0ZDcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVl
c3QvcGF5bWVudC1yZXF1ZXN0LXNob3ctbWV0aG9kLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LXJlcXVlc3Qtc2hvdy1tZXRob2Qu
aHR0cHMuaHRtbApAQCAtNDYsOSArNDYsOSBAQCB0ZXN0KCgpID0+IHsKIHVzZXJfYWN0aXZhdGlv
bl90ZXN0KGFzeW5jIHQgPT4gewogICBjb25zdCByZXF1ZXN0ID0gbmV3IFBheW1lbnRSZXF1ZXN0
KGRlZmF1bHRNZXRob2RzLCBkZWZhdWx0RGV0YWlscyk7CiAgIGNvbnN0IGFjY2VwdFByb21pc2Ug
PSByZXF1ZXN0LnNob3coKTsgLy8gU2V0cyBzdGF0ZSB0byAiaW50ZXJhY3RpdmUiCi0gIGF3YWl0
IHByb21pc2VfcmVqZWN0cyh0LCAiU2VjdXJpdHlFcnJvciIsIHJlcXVlc3Quc2hvdygpKTsKKyAg
YXdhaXQgcHJvbWlzZV9yZWplY3RzX2RvbSh0LCAiU2VjdXJpdHlFcnJvciIsIHJlcXVlc3Quc2hv
dygpKTsKICAgYXdhaXQgcmVxdWVzdC5hYm9ydCgpOwotICBhd2FpdCBwcm9taXNlX3JlamVjdHMo
dCwgIkFib3J0RXJyb3IiLCBhY2NlcHRQcm9taXNlKTsKKyAgYXdhaXQgcHJvbWlzZV9yZWplY3Rz
X2RvbSh0LCAiQWJvcnRFcnJvciIsIGFjY2VwdFByb21pc2UpOwogfSwgYFRocm93cyBpZiB0aGUg
cHJvbWlzZSBbW3N0YXRlXV0gaXMgbm90ICJjcmVhdGVkImApOwogCiB1c2VyX2FjdGl2YXRpb25f
dGVzdChhc3luYyB0ID0+IHsKQEAgLTU2LDkgKzU2LDkgQEAgdXNlcl9hY3RpdmF0aW9uX3Rlc3Qo
YXN5bmMgdCA9PiB7CiAgIGNvbnN0IHJlcXVlc3QyID0gbmV3IFBheW1lbnRSZXF1ZXN0KGRlZmF1
bHRNZXRob2RzLCBkZWZhdWx0RGV0YWlscyk7CiAgIGNvbnN0IGFjY2VwdFByb21pc2UxID0gcmVx
dWVzdDEuc2hvdygpOwogICBjb25zdCBhY2NlcHRQcm9taXNlMiA9IHJlcXVlc3QyLnNob3coKTsK
LSAgYXdhaXQgcHJvbWlzZV9yZWplY3RzKHQsICJTZWN1cml0eUVycm9yIiwgYWNjZXB0UHJvbWlz
ZTIpOworICBhd2FpdCBwcm9taXNlX3JlamVjdHNfZG9tKHQsICJTZWN1cml0eUVycm9yIiwgYWNj
ZXB0UHJvbWlzZTIpOwogICBhd2FpdCByZXF1ZXN0MS5hYm9ydCgpOwotICBhd2FpdCBwcm9taXNl
X3JlamVjdHModCwgIkFib3J0RXJyb3IiLCBhY2NlcHRQcm9taXNlMSk7CisgIGF3YWl0IHByb21p
c2VfcmVqZWN0c19kb20odCwgIkFib3J0RXJyb3IiLCBhY2NlcHRQcm9taXNlMSk7CiB9LCBgSWYg
dGhlIHVzZXIgYWdlbnQncyAicGF5bWVudCByZXF1ZXN0IGlzIHNob3dpbmciIGJvb2xlYW4gaXMg
dHJ1ZSwgdGhlbiByZXR1cm4gYSBwcm9taXNlIHJlamVjdGVkIHdpdGggYW4gIkFib3J0RXJyb3Ii
IERPTUV4Y2VwdGlvbi5gKTsKIAogdXNlcl9hY3RpdmF0aW9uX3Rlc3QoYXN5bmMgdCA9PiB7CkBA
IC02Niw3ICs2Niw3IEBAIHVzZXJfYWN0aXZhdGlvbl90ZXN0KGFzeW5jIHQgPT4gewogICAgIFt7
IHN1cHBvcnRlZE1ldGhvZHM6ICJ0aGlzLWlzLW5vdC1zdXBwb3J0ZWQiIH1dLAogICAgIGRlZmF1
bHREZXRhaWxzKTsKICAgY29uc3QgYWNjZXB0UHJvbWlzZSA9IHJlcXVlc3Quc2hvdygpOwotICBh
d2FpdCBwcm9taXNlX3JlamVjdHModCwgIk5vdFN1cHBvcnRlZEVycm9yIiwgYWNjZXB0UHJvbWlz
ZSk7CisgIGF3YWl0IHByb21pc2VfcmVqZWN0c19kb20odCwgIk5vdFN1cHBvcnRlZEVycm9yIiwg
YWNjZXB0UHJvbWlzZSk7CiB9LCBgSWYgcGF5bWVudCBtZXRob2QgY29uc3VsdGF0aW9uIHByb2R1
Y2VzIG5vIHN1cHBvcnRlZCBtZXRob2Qgb2YgcGF5bWVudCwgdGhlbiByZXR1cm4gYSBwcm9taXNl
IHJlamVjdGVkIHdpdGggYSAiTm90U3VwcG9ydGVkRXJyb3IiIERPTUV4Y2VwdGlvbi5gKTsKIAog
dXNlcl9hY3RpdmF0aW9uX3Rlc3QoYXN5bmMgdCA9PiB7CkBAIC03NCwxNCArNzQsMTQgQEAgdXNl
cl9hY3RpdmF0aW9uX3Rlc3QoYXN5bmMgdCA9PiB7CiAgICAgW3sgc3VwcG9ydGVkTWV0aG9kczog
Imh0dHBzOi8vYXBwbGUuY29tL2FwcGxlLXBheSIgfV0sCiAgICAgZGVmYXVsdERldGFpbHMpOwog
ICBjb25zdCBhY2NlcHRQcm9taXNlID0gcmVxdWVzdC5zaG93KCk7Ci0gIGF3YWl0IHByb21pc2Vf
cmVqZWN0cyh0LCBuZXcgVHlwZUVycm9yLCBhY2NlcHRQcm9taXNlKTsKKyAgYXdhaXQgcHJvbWlz
ZV9yZWplY3RzX2pzKHQsIFR5cGVFcnJvciwgYWNjZXB0UHJvbWlzZSk7CiB9LCBgSWYgZGF0YSBj
b252ZXJzaW9uIHJlc3VsdHMgaW4gYW4gZXJyb3IsIHRoZW4gcmV0dXJuIGEgcHJvbWlzZSByZWpl
Y3RlZCB3aXRoIGEgIlR5cGVFcnJvciIgRE9NRXhjZXB0aW9uLmApOwogCiB1c2VyX2FjdGl2YXRp
b25fdGVzdChhc3luYyB0ID0+IHsKICAgY29uc3QgcmVxdWVzdCA9IG5ldyBQYXltZW50UmVxdWVz
dChkZWZhdWx0TWV0aG9kcywgZGVmYXVsdERldGFpbHMpOwogICBjb25zdCBhY2NlcHRQcm9taXNl
ID0gcmVxdWVzdC5zaG93KCk7IC8vIFNldHMgc3RhdGUgdG8gImludGVyYWN0aXZlIgogICBpbnRl
cm5hbHMubW9ja1BheW1lbnRDb29yZGluYXRvci5jYW5jZWxQYXltZW50KCk7Ci0gIGF3YWl0IHBy
b21pc2VfcmVqZWN0cyh0LCAiQWJvcnRFcnJvciIsIGFjY2VwdFByb21pc2UpOworICBhd2FpdCBw
cm9taXNlX3JlamVjdHNfZG9tKHQsICJBYm9ydEVycm9yIiwgYWNjZXB0UHJvbWlzZSk7CiB9LCBg
SWYgdGhlIHVzZXIgYWJvcnRzIHRoZSBwYXltZW50IHJlcXVlc3QgYWxnb3JpdGhtLCB0aGVuIHJl
dHVybiBhIHByb21pc2UgcmVqZWN0ZWQgd2l0aCBhbiAiQWJvcnRFcnJvciIgRE9NRXhjZXB0aW9u
LmApOwogCiB1c2VyX2FjdGl2YXRpb25fdGVzdChhc3luYyB0ID0+IHsKQEAgLTkyLDcgKzkyLDcg
QEAgdXNlcl9hY3RpdmF0aW9uX3Rlc3QoYXN5bmMgdCA9PiB7CiAgICAgICB3aW5kb3cuc2V0VGlt
ZW91dCgoKSA9PiByZXNvbHZlKGRlZmF1bHREZXRhaWxzKSk7CiAgICAgfSk7CiAgIH0pKTsgLy8g
U2V0cyBzdGF0ZSB0byAiaW50ZXJhY3RpdmUiCi0gIGF3YWl0IHByb21pc2VfcmVqZWN0cyh0LCAi
QWJvcnRFcnJvciIsIGFjY2VwdFByb21pc2UpOworICBhd2FpdCBwcm9taXNlX3JlamVjdHNfZG9t
KHQsICJBYm9ydEVycm9yIiwgYWNjZXB0UHJvbWlzZSk7CiB9LCBgSWYgdGhlIHVzZXIgYWJvcnRz
IHRoZSBwYXltZW50IHJlcXVlc3QgYWxnb3JpdGhtIHdoaWxlIGRldGFpbHMgYXJlIHVwZGF0aW5n
LCB0aGVuIHJlamVjdCB0aGUgYWNjZXB0IHByb21pc2Ugd2l0aCBhbiAiQWJvcnRFcnJvciIgd2hl
biB0aGUgZGV0YWlscyBzZXR0bGUuYCk7CiAKIHVzZXJfYWN0aXZhdGlvbl90ZXN0KGFzeW5jIHQg
PT4gewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9w
YXltZW50LXJlc3BvbnNlLXJlamVjdHMtaWYtbm90LWFjdGl2ZS5odHRwcy5odG1sIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LXJlc3BvbnNlLXJlamVjdHMt
aWYtbm90LWFjdGl2ZS5odHRwcy5odG1sCmluZGV4IDMyZDEwMWY2NjVkM2Y3OWFiMDZiNjE3ODhm
ODI5YzQwOWUwYmNjMjkuLjkyZjE1MDU1MjUyYjU4NGRjYjU0MTYwODIzYmJmNjNmMmQ3M2UwZTIg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVu
dC1yZXNwb25zZS1yZWplY3RzLWlmLW5vdC1hY3RpdmUuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVzcG9uc2UtcmVqZWN0cy1p
Zi1ub3QtYWN0aXZlLmh0dHBzLmh0bWwKQEAgLTU0LDYgKzU0LDggQEAgZnVuY3Rpb24gbWV0aG9k
Tm90RnVsbHlBY3RpdmUodGV4dCwgbWV0aG9kTmFtZSwgLi4uYXJncykgewogICAgICAgaWZyYW1l
LAogICAgICAgIi9wYXltZW50LXJlcXVlc3QvcmVzb3VyY2VzL3BhZ2UxLmh0bWwiCiAgICAgKTsK
KyAgICBjb25zdCBpZnJhbWVET01FeGNlcHRpb24gPSBpZnJhbWUuY29udGVudFdpbmRvdy5ET01F
eGNlcHRpb247CisKICAgICAvLyBXZSBuYXZpZ2F0ZSB0aGUgaWZyYW1lIGFnYWluLCBwdXR0aW5n
IHJlc3BvbnNlJ3MgZG9jdW1lbnQgaW50byBhbiBpbmFjdGl2ZSBzdGF0ZS4KICAgICBhd2FpdCBu
ZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKICAgICAgIGlmcmFtZS5hZGRFdmVudExpc3RlbmVyKCJs
b2FkIiwgcmVzb2x2ZSk7CkBAIC02Miw5ICs2NCwxMCBAQCBmdW5jdGlvbiBtZXRob2ROb3RGdWxs
eUFjdGl2ZSh0ZXh0LCBtZXRob2ROYW1lLCAuLi5hcmdzKSB7CiAgICAgLy8gTm93LCByZXNwb25z
ZSdzIHJlbGV2YW50IGdsb2JhbCBvYmplY3QncyBkb2N1bWVudCBpcyBubyBsb25nZXIgYWN0aXZl
LgogICAgIC8vIFNvLCBwcm9taXNlIG5lZWRzIHRvIHJlamVjdCBhcHByb3ByaWF0ZWx5LgogICAg
IGNvbnN0IHByb21pc2UgPSByZXNwb25zZVttZXRob2ROYW1lXSguLi5hcmdzKTsKLSAgICBhd2Fp
dCBwcm9taXNlX3JlamVjdHMoCisgICAgYXdhaXQgcHJvbWlzZV9yZWplY3RzX2RvbSgKICAgICAg
IHQsCiAgICAgICAiQWJvcnRFcnJvciIsCisgICAgICBpZnJhbWVET01FeGNlcHRpb24sCiAgICAg
ICBwcm9taXNlLAogICAgICAgIkluYWN0aXZlIGRvY3VtZW50LCBzbyBtdXN0IHRocm93IEFib3J0
RXJyb3IiCiAgICAgKTsKQEAgLTg0LDYgKzg3LDcgQEAgZnVuY3Rpb24gbWV0aG9kQmVjb21lc05v
dEZ1bGx5QWN0aXZlKHRleHQsIG1ldGhvZE5hbWUsIC4uLmFyZ3MpIHsKICAgICAgIGlmcmFtZSwK
ICAgICAgICIvcGF5bWVudC1yZXF1ZXN0L3Jlc291cmNlcy9wYWdlMS5odG1sIgogICAgICk7Cisg
ICAgY29uc3QgaWZyYW1lRE9NRXhjZXB0aW9uID0gaWZyYW1lLmNvbnRlbnRXaW5kb3cuRE9NRXhj
ZXB0aW9uOwogCiAgICAgLy8gd2UgZ2V0IHRoZSBwcm9taXNlIGZyb20gcGFnZTEuaHRtbCwgd2hp
bGUgaXQncyBhY3RpdmUhCiAgICAgY29uc3QgcHJvbWlzZSA9IHJlc3BvbnNlW21ldGhvZE5hbWVd
KC4uLmFyZ3MpOwpAQCAtOTYsOSArMTAwLDEwIEBAIGZ1bmN0aW9uIG1ldGhvZEJlY29tZXNOb3RG
dWxseUFjdGl2ZSh0ZXh0LCBtZXRob2ROYW1lLCAuLi5hcmdzKSB7CiAKICAgICAvLyBOb3csIHJl
c3BvbnNlJ3MgcmVsZXZhbnQgZ2xvYmFsIG9iamVjdCdzIGRvY3VtZW50IGlzIG5vIGxvbmdlciBh
Y3RpdmUuCiAgICAgLy8gU28sIHByb21pc2UgbmVlZHMgdG8gcmVqZWN0IGFwcHJvcHJpYXRlbHku
Ci0gICAgYXdhaXQgcHJvbWlzZV9yZWplY3RzKAorICAgIGF3YWl0IHByb21pc2VfcmVqZWN0c19k
b20oCiAgICAgICB0LAogICAgICAgIkFib3J0RXJyb3IiLAorICAgICAgaWZyYW1lRE9NRXhjZXB0
aW9uLAogICAgICAgcHJvbWlzZSwKICAgICAgICJJbmFjdGl2ZSBkb2N1bWVudCwgc28gbXVzdCB0
aHJvdyBBYm9ydEVycm9yIgogICAgICk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVzcG9uc2UtcmV0cnktbWV0aG9kLmh0dHBzLmh0
bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVzcG9u
c2UtcmV0cnktbWV0aG9kLmh0dHBzLmh0bWwKaW5kZXggNjRhNDExYWM1YjEwZjZiMjM1NGYwMjNi
ZjViMjdmZjFlYzE3OTY4OS4uY2Y2MDUwNzdjYjMyZTZjNTE5MjUxZWIzNWFkMTM2Y2M4MjYxNTUz
MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXlt
ZW50LXJlc3BvbnNlLXJldHJ5LW1ldGhvZC5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1yZXNwb25zZS1yZXRyeS1tZXRob2QuaHR0
cHMuaHRtbApAQCAtMjksNyArMjksNyBAQCBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CiAgIGNv
bnN0IHsgcmVzcG9uc2UgfSA9IGF3YWl0IGdldFBheW1lbnRSZXF1ZXN0UmVzcG9uc2UoKTsKICAg
Ly8gc2V0cyByZXNwb25zZS5bW2NvbXBsZXRlXV0gdG8gdHJ1ZS4KICAgYXdhaXQgcmVzcG9uc2Uu
Y29tcGxldGUoInN1Y2Nlc3MiKTsKLSAgcmV0dXJuIHByb21pc2VfcmVqZWN0cygKKyAgcmV0dXJu
IHByb21pc2VfcmVqZWN0c19kb20oCiAgICAgdCwKICAgICAiSW52YWxpZFN0YXRlRXJyb3IiLAog
ICAgIHJlc3BvbnNlLnJldHJ5KHt9KSwKQEAgLTQwLDcgKzQwLDcgQEAgcHJvbWlzZV90ZXN0KGFz
eW5jIHQgPT4gewogcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4gewogICBjb25zdCB7IHJlc3BvbnNl
IH0gPSBhd2FpdCBnZXRQYXltZW50UmVxdWVzdFJlc3BvbnNlKCk7CiAgIGNvbnN0IHJldHJ5UHJv
bWlzZSA9IHJlc3BvbnNlLnJldHJ5KHt9KTsKLSAgYXdhaXQgcHJvbWlzZV9yZWplY3RzKAorICBh
d2FpdCBwcm9taXNlX3JlamVjdHNfZG9tKAogICAgIHQsCiAgICAgIkludmFsaWRTdGF0ZUVycm9y
IiwKICAgICByZXNwb25zZS5yZXRyeSh7fSksCkBAIC01NCw3ICs1NCw3IEBAIHByb21pc2VfdGVz
dChhc3luYyB0ID0+IHsKIHByb21pc2VfdGVzdChhc3luYyB0ID0+IHsKICAgY29uc3QgeyByZXNw
b25zZSB9ID0gYXdhaXQgZ2V0UGF5bWVudFJlcXVlc3RSZXNwb25zZSgpOwogICBjb25zdCByZXRy
eVByb21pc2UgPSByZXNwb25zZS5yZXRyeSh7fSk7Ci0gIGF3YWl0IHByb21pc2VfcmVqZWN0cygK
KyAgYXdhaXQgcHJvbWlzZV9yZWplY3RzX2RvbSgKICAgICB0LAogICAgICJJbnZhbGlkU3RhdGVF
cnJvciIsCiAgICAgcmVzcG9uc2UuY29tcGxldGUoInN1Y2Nlc3MiKSwKQEAgLTY4LDcgKzY4LDcg
QEAgcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4gewogcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4gewog
ICBjb25zdCB7IHJlc3BvbnNlLCByZXF1ZXN0IH0gPSBhd2FpdCBnZXRQYXltZW50UmVxdWVzdFJl
c3BvbnNlKCk7CiAgIGNvbnN0IHJldHJ5UHJvbWlzZSA9IHJlc3BvbnNlLnJldHJ5KHt9KTsKLSAg
YXdhaXQgcHJvbWlzZV9yZWplY3RzKAorICBhd2FpdCBwcm9taXNlX3JlamVjdHNfZG9tKAogICAg
IHQsCiAgICAgIkludmFsaWRTdGF0ZUVycm9yIiwKICAgICByZXF1ZXN0LmFib3J0KCksCkBAIC05
Niw3ICs5Niw3IEBAIHByb21pc2VfdGVzdChhc3luYyB0ID0+IHsKICAgICAiRXhwZWN0ZWQgdW5k
ZWZpbmVkIGFzIHRoZSByZXNvbHZlIHZhbHVlIgogICApOwogICBhd2FpdCByZXNwb25zZS5jb21w
bGV0ZSgic3VjY2VzcyIpOwotICBhd2FpdCBwcm9taXNlX3JlamVjdHMoCisgIGF3YWl0IHByb21p
c2VfcmVqZWN0c19kb20oCiAgICAgdCwKICAgICAiSW52YWxpZFN0YXRlRXJyb3IiLAogICAgIHJl
c3BvbnNlLnJldHJ5KHt9KSwKQEAgLTEwOCwxOSArMTA4LDE5IEBAIHByb21pc2VfdGVzdChhc3lu
YyB0ID0+IHsKICAgY29uc3QgeyByZXNwb25zZSB9ID0gYXdhaXQgZ2V0UGF5bWVudFJlcXVlc3RS
ZXNwb25zZSgpOwogICB2YXIgcHJvbWlzZSA9IHJlc3BvbnNlLnJldHJ5KHt9KTsKICAgaW50ZXJu
YWxzLm1vY2tQYXltZW50Q29vcmRpbmF0b3IuY2FuY2VsUGF5bWVudCgpOwotICBhd2FpdCBwcm9t
aXNlX3JlamVjdHMoCisgIGF3YWl0IHByb21pc2VfcmVqZWN0c19kb20oCiAgICAgdCwKICAgICAi
QWJvcnRFcnJvciIsCiAgICAgcHJvbWlzZSwKICAgICAiVGhlIHVzZXIgYWJvcnRpbmcgYSByZXRy
eSByZWplY3RzIHdpdGggYSBBYm9ydEVycm9yIgogICApOwotICBhd2FpdCBwcm9taXNlX3JlamVj
dHMoCisgIGF3YWl0IHByb21pc2VfcmVqZWN0c19kb20oCiAgICAgdCwKICAgICAiSW52YWxpZFN0
YXRlRXJyb3IiLAogICAgIHJlc3BvbnNlLnJldHJ5KHt9KSwKICAgICAiQWZ0ZXIgdGhlIHVzZXIg
YWJvcnRzLCByZXNwb25zZSBbW2NvbXBsZXRlXV0gaXMgdHJ1ZSBzbyByZXRyeSgpIG11c3QgcmVq
ZWN0IHdpdGggSW52YWxpZFN0YXRlRXJyb3IiCiAgICk7Ci0gIGF3YWl0IHByb21pc2VfcmVqZWN0
cygKKyAgYXdhaXQgcHJvbWlzZV9yZWplY3RzX2RvbSgKICAgICB0LAogICAgICJJbnZhbGlkU3Rh
dGVFcnJvciIsCiAgICAgcmVzcG9uc2UuY29tcGxldGUoInN1Y2Nlc3MiKSwKQEAgLTE1OCwxMyAr
MTU4LDEzIEBAIHByb21pc2VfdGVzdChhc3luYyB0ID0+IHsKICAgY29uc3QgcmV0cnlQcm9taXNl
ID0gcmVzcG9uc2UucmV0cnkoe30pOwogICBpbnRlcm5hbHMubW9ja1BheW1lbnRDb29yZGluYXRv
ci5jaGFuZ2VTaGlwcGluZ09wdGlvbigib3B0aW9uIik7CiAgIGF3YWl0IHNoaXBwaW5nQ2hhbmdl
ZFByb21pc2U7Ci0gIGF3YWl0IHByb21pc2VfcmVqZWN0cygKKyAgYXdhaXQgcHJvbWlzZV9yZWpl
Y3RzX2pzKAogICAgIHQsCi0gICAgbmV3IFR5cGVFcnJvcigpLAorICAgIFR5cGVFcnJvciwKICAg
ICByZXRyeVByb21pc2UsCiAgICAgInJldHJ5KCkgYWJvcnRzIHdpdGggYSBUeXBlRXJyb3IsIGJl
Y2F1c2UgdG90YWxzJyB2YWx1ZSBpcyBpbnZhbGlkIgogICApOwotICBhd2FpdCBwcm9taXNlX3Jl
amVjdHMoCisgIGF3YWl0IHByb21pc2VfcmVqZWN0c19kb20oCiAgICAgdCwKICAgICAiSW52YWxp
ZFN0YXRlRXJyb3IiLAogICAgIHJlc3BvbnNlLmNvbXBsZXRlKCJzdWNjZXNzIiksCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3JlamVjdHNfaWZfbm90
X2FjdGl2ZS5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVz
dC9yZWplY3RzX2lmX25vdF9hY3RpdmUuaHR0cHMuaHRtbAppbmRleCA5NmU4ZjZhNDhjMTY2ODQ4
ZTgzZWI2ZjNhZjJhZDkxMTJkNGE5Nzg2Li44ZTExZTgwNzIzNTQyNzJjY2I4MDkxYzRmNDQ3MmI5
MzI1M2JlYTQ4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1
ZXN0L3JlamVjdHNfaWZfbm90X2FjdGl2ZS5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcmVqZWN0c19pZl9ub3RfYWN0aXZlLmh0dHBzLmh0bWwK
QEAgLTYyLDYgKzYyLDcgQEAgcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4gewogICAgIGlmcmFtZSwK
ICAgICAicmVzb3VyY2VzL3BhZ2UxLmh0bWwiCiAgICk7CisgIGNvbnN0IGZpcnN0Q3RvciA9IGlm
cmFtZS5jb250ZW50V2luZG93LkRPTUV4Y2VwdGlvbjsKIAogICAvLyBXZSBuYXZpZ2F0ZSB0aGUg
aWZyYW1lIGFnYWluLCBwdXR0aW5nIHJlcXVlc3QxJ3MgZG9jdW1lbnQgaW50byBhbiBpbmFjdGl2
ZSBzdGF0ZS4KICAgY29uc3QgcmVxdWVzdDIgPSBhd2FpdCBnZXRMb2FkZWRQYXltZW50UmVxdWVz
dCgKQEAgLTcxLDkgKzcyLDEwIEBAIHByb21pc2VfdGVzdChhc3luYyB0ID0+IHsKIAogICAvLyBO
b3csIHJlcXVlc3QxJ3MgcmVsZXZhbnQgZ2xvYmFsIG9iamVjdCdzIGRvY3VtZW50IGlzIG5vIGxv
bmdlciBhY3RpdmUuCiAgIC8vIFNvLCBjYWxsIC5zaG93KCksIGFuZCBtYWtlIHN1cmUgaXQgcmVq
ZWN0cyBhcHByb3ByaWF0ZWx5LgotICBhd2FpdCBwcm9taXNlX3JlamVjdHMoCisgIGF3YWl0IHBy
b21pc2VfcmVqZWN0c19kb20oCiAgICAgdCwKICAgICAiQWJvcnRFcnJvciIsCisgICAgZmlyc3RD
dG9yLAogICAgIHJlcXVlc3QxLnNob3coKSwKICAgICAiSW5hY3RpdmUgZG9jdW1lbnQsIHNvIG11
c3QgdGhyb3cgQWJvcnRFcnJvciIKICAgKTsKQEAgLTgzLDExICs4NSwxMyBAQCBwcm9taXNlX3Rl
c3QoYXN5bmMgdCA9PiB7CiAgICAgICByZXF1ZXN0Mi5zaG93KCkuY2F0Y2goKGVycm9yKSA9PiB7
fSk7CiAgICAgYXdhaXQgcmVxdWVzdDIuYWJvcnQoKTsKICAgfSk7CisgIGNvbnN0IHNlY29uZEN0
b3IgPSBpZnJhbWUuY29udGVudFdpbmRvdy5ET01FeGNlcHRpb247CiAKICAgYXdhaXQgYWN0aXZh
dGVUaGVuKGFzeW5jICgpID0+IHsKLSAgICBhd2FpdCBwcm9taXNlX3JlamVjdHMoCisgICAgYXdh
aXQgcHJvbWlzZV9yZWplY3RzX2RvbSgKICAgICAgIHQsCiAgICAgICAiSW52YWxpZFN0YXRlRXJy
b3IiLAorICAgICAgc2Vjb25kQ3RvciwKICAgICAgIHJlcXVlc3QyLnNob3coKSwKICAgICAgICJB
Ym9ydCBhbHJlYWR5IGNhbGxlZCwgc28gSW52YWxpZFN0YXRlRXJyb3IiCiAgICAgKTsKQEAgLTEy
Myw2ICsxMjcsNyBAQCBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CiAgICAgaW5uZXJJZnJhbWUs
CiAgICAgInJlc291cmNlcy9wYWdlMi5odG1sIgogICApOworICBjb25zdCByZXF1ZXN0V2luZG93
ID0gaW5uZXJJZnJhbWUuY29udGVudFdpbmRvdzsKIAogICAvLyBOYXZpZ2F0ZSB0aGUgb3V0ZXIg
aWZyYW1lIHRvIGEgbmV3IGxvY2F0aW9uLgogICAvLyBXYWl0IGZvciB0aGUgbG9hZCBldmVudCB0
byBmaXJlLgpAQCAtMTM0LDkgKzEzOSwxMCBAQCBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CiAg
IC8vIChpdCBpcyB0aGUgYWN0aXZlIGRvY3VtZW50IG9mIHRoZSBpbm5lciBpZnJhbWUpLCBidXQg
aXMgbm90IGZ1bGx5IGFjdGl2ZQogICAvLyAoc2luY2UgdGhlIHBhcmVudCBvZiB0aGUgaW5uZXIg
aWZyYW1lIGlzIGl0c2VsZiBubyBsb25nZXIgYWN0aXZlKS4KICAgLy8gU28sIGNhbGwgcmVxdWVz
dC5zaG93KCkgYW5kIG1ha2Ugc3VyZSBpdCByZWplY3RzIGFwcHJvcHJpYXRlbHkuCi0gIGF3YWl0
IHByb21pc2VfcmVqZWN0cygKKyAgYXdhaXQgcHJvbWlzZV9yZWplY3RzX2RvbSgKICAgICB0LAog
ICAgICJBYm9ydEVycm9yIiwKKyAgICByZXF1ZXN0V2luZG93LkRPTUV4Y2VwdGlvbiwKICAgICBy
ZXF1ZXN0LnNob3coKSwKICAgICAiQWN0aXZlLCBidXQgbm90IGZ1bGx5IGFjdGl2ZSwgc28gbXVz
dCB0aHJvdyBBYm9ydEVycm9yIgogICApOwpAQCAtMTU2LDYgKzE2Miw3IEBAIHByb21pc2VfdGVz
dChhc3luYyB0ID0+IHsKICAgICBpZnJhbWUsCiAgICAgInJlc291cmNlcy9wYWdlMS5odG1sIgog
ICApOworICBjb25zdCBpZnJhbWVET01FeGNlcHRpb24gPSBpZnJhbWUuY29udGVudFdpbmRvdy5E
T01FeGNlcHRpb247CiAgIC8vIFByZXNlbnQgdGhlIHBheW1lbnQgc2hlZXQuCiAgIGF3YWl0IGFj
dGl2YXRlVGhlbihhc3luYyAoKSA9PiB7CiAgICAgY29uc3Qgc2hvd1Byb21pc2UgPSByZXF1ZXN0
LnNob3coKTsKQEAgLTE2NCw5ICsxNzEsMTAgQEAgcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4gewog
ICAgICAgaWZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCByZXNvbHZlKTsKICAgICAgIGlm
cmFtZS5zcmMgPSAicmVzb3VyY2VzL3BhZ2UyLmh0bWwiOwogICAgIH0pOwotICAgIGF3YWl0IHBy
b21pc2VfcmVqZWN0cygKKyAgICBhd2FpdCBwcm9taXNlX3JlamVjdHNfZG9tKAogICAgICAgdCwK
ICAgICAgICJBYm9ydEVycm9yIiwKKyAgICAgIGlmcmFtZURPTUV4Y2VwdGlvbiwKICAgICAgIHNo
b3dQcm9taXNlLAogICAgICAgIlRoZSBpZnJhbWUgd2FzIG5hdmlnYXRlZCBhd2F5LCBzbyBzaG93
UHJvbWlzZSBtdXN0IHJlamVjdCB3aXRoIEFib3J0RXJyb3IiCiAgICAgKTsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvdXBkYXRlV2l0aC1tZXRob2Qt
cG1pLWhhbmRsaW5nLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRy
ZXF1ZXN0L3VwZGF0ZVdpdGgtbWV0aG9kLXBtaS1oYW5kbGluZy5odHRwcy5odG1sCmluZGV4IDEy
YzYwOTY4YWI1OTdmNWM5MTBmODA3ZjEyOTIyYzk0YzUxODQ2NzQuLjU5ODFjNmVkMjJhYjAyZDJj
YjA4ODQ5Zjk0MjFhYmZjODgwNDVjNTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvcGF5bWVudHJlcXVlc3QvdXBkYXRlV2l0aC1tZXRob2QtcG1pLWhhbmRsaW5nLmh0dHBzLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC91cGRhdGVXaXRo
LW1ldGhvZC1wbWktaGFuZGxpbmcuaHR0cHMuaHRtbApAQCAtODYsNyArODYsNyBAQCBmdW5jdGlv
biBydW5UZXN0KGJ1dHRvbiwgeyBpbnZhbGlkTWV0aG9kIH0pIHsKICAgICByZXF1ZXN0Lm9uc2hp
cHBpbmdhZGRyZXNzY2hhbmdlID0gbGlzdGVuZXI7CiAgICAgLy8gcmVxdWVzdC5hZGRFdmVudExp
c3RlbmVyKCJzaGlwcGluZ2FkZHJlc3NjaGFuZ2UiLCBsaXN0ZW5lciwgeyBvbmNlOiB0cnVlIH0p
OwogICAgIGNvbnN0IHNob3dQcm9taXNlID0gcmVxdWVzdC5zaG93KCk7Ci0gICAgYXdhaXQgcHJv
bWlzZV9yZWplY3RzKHQsIG5ldyBSYW5nZUVycm9yKCksIHNob3dQcm9taXNlKTsKKyAgICBhd2Fp
dCBwcm9taXNlX3JlamVjdHNfanModCwgUmFuZ2VFcnJvciwgc2hvd1Byb21pc2UpOwogICB9LCBi
dXR0b24udGV4dENvbnRlbnQudHJpbSgpKTsKIH0KIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9ieXBhc3NpbmctY29ycy1jaGVja3MtZm9yLWV4
dGVuc2lvbi11cmxzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2J5cGFz
c2luZy1jb3JzLWNoZWNrcy1mb3ItZXh0ZW5zaW9uLXVybHMuaHRtbAppbmRleCA5ZThkZWExZmY3
ZTUwYmQ0ODVmNGFmYmFiMzk5OGE1MGNlYTc0MzJlLi43NDUzZDcwNDVkMDNjNGJjYmY3YTVlNDQ4
MTZiZmU3MjIwOGExMTM4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L2J5cGFzc2luZy1jb3JzLWNoZWNrcy1mb3ItZXh0ZW5zaW9uLXVybHMuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2J5cGFzc2luZy1jb3JzLWNoZWNrcy1mb3It
ZXh0ZW5zaW9uLXVybHMuaHRtbApAQCAtMTYsNyArMTYsNyBAQAogICAgIHRlc3QoKCkgPT4gewog
ICAgICAgICB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKICAgICAgICAgeGhyLm9wZW4oIkdF
VCIsICJzYWZhcmktZXh0ZW5zaW9uOi8vdGVzdDEiLCBmYWxzZSk7Ci0gICAgICAgIGFzc2VydF90
aHJvd3Moe25hbWU6ICJOZXR3b3JrRXJyb3IifSwgKCkgPT4geyB4aHIuc2VuZCgpIH0pOworICAg
ICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiTmV0d29ya0Vycm9yIiwgKCkgPT4geyB4aHIuc2VuZCgp
IH0pOwogICAgIH0sICJCeXBhc3NpbmcgQ09SUyBvbiBzeW5jaHJvbm91cyBYSFIgLSBzaG91bGQg
dHJpZ2dlciBhIENPUlMgZXJyb3IgbWVzc2FnZSIpOwogCiAgICAgdGVzdCgoKSA9PiB7CkBAIC0y
NCwxMSArMjQsMTEgQEAKIAogICAgICAgICB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKICAg
ICAgICAgeGhyLm9wZW4oIkdFVCIsICJzYWZhcmktZXh0ZW5zaW9uOi8vdGVzdDMiLCBmYWxzZSk7
Ci0gICAgICAgIGFzc2VydF90aHJvd3Moe25hbWU6ICJOZXR3b3JrRXJyb3IifSwgKCkgPT4geyB4
aHIuc2VuZCgpIH0pOworICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiTmV0d29ya0Vycm9yIiwg
KCkgPT4geyB4aHIuc2VuZCgpIH0pOwogICAgIH0sICJCeXBhc3NpbmcgQ09SUyBvbiBzeW5jaHJv
bm91cyBYSFIgLSBzaG91bGQgbm90IHRyaWdnZXIgYSBDT1JTIGVycm9yIG1lc3NhZ2UiKTsKIAog
ICAgIHByb21pc2VfdGVzdCgodGVzdCkgPT4gewotICAgICAgICByZXR1cm4gcHJvbWlzZV9yZWpl
Y3RzKHRlc3QsIG5ldyBUeXBlRXJyb3IsIGZldGNoKCJzYWZhcmktZXh0ZW5zaW9uOi8vdGVzdDQi
KSk7CisgICAgICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNfanModGVzdCwgVHlwZUVycm9yLCBm
ZXRjaCgic2FmYXJpLWV4dGVuc2lvbjovL3Rlc3Q0IikpOwogICAgIH0sICJCeXBhc3NpbmcgQ09S
UyBvbiBhc3luY2hyb25vdXMgZmV0Y2ggLSBzaG91bGQgbm90IHRyaWdnZXIgYSBDT1JTIGVycm9y
IG1lc3NhZ2UiKTsKIDwvc2NyaXB0PgogPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9jbGVhbi1vcmlnaW4tY3NzLWV4cG9zZWQtcmVzb3VyY2UtdGlt
aW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NsZWFuLW9yaWdpbi1j
c3MtZXhwb3NlZC1yZXNvdXJjZS10aW1pbmcuaHRtbAppbmRleCAzOGNhZGU1Y2RhYmUxMGJkYTA5
NDExZmRjMWQ3YThjZjUzYjg5NmI2Li4yN2E3NjgyNmYxN2RhN2QyYzRhMWU2YWU4ZTczMmQwY2Ez
NDNlYjBhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NsZWFu
LW9yaWdpbi1jc3MtZXhwb3NlZC1yZXNvdXJjZS10aW1pbmcuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NsZWFuLW9yaWdpbi1jc3MtZXhwb3NlZC1yZXNvdXJjZS10
aW1pbmcuaHRtbApAQCAtOSw2ICs5LDggQEAKIDxib2R5PgogPGRpdiBpZD0ibXlkaXYiIHN0eWxl
PSJmb250OiAxMnB4ICdhaGVtJyI+VGVzdDwvZGl2PgogPHNjcmlwdD4KK3NldHVwKHsgc2luZ2xl
X3Rlc3Q6IHRydWUgfSk7CisKIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CiAgICAgaW50ZXJuYWxz
LmNsZWFyTWVtb3J5Q2FjaGUoKTsKICAgICBpbnRlcm5hbHMuaW52YWxpZGF0ZUZvbnRDYWNoZSgp
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2Vj
dXJpdHlQb2xpY3kvMS4xL2ZyYW1lLWFuY2VzdG9ycy9mcmFtZS1hbmNlc3RvcnMtb3ZlcnJpZGVz
LXhmby5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJp
dHlQb2xpY3kvMS4xL2ZyYW1lLWFuY2VzdG9ycy9mcmFtZS1hbmNlc3RvcnMtb3ZlcnJpZGVzLXhm
by5odG1sCmluZGV4IDc2OTYxMTJjOTA5NGE0MmNmOGMwY2RkZTk3NjVmNGY5NmRiMzQ5MjcuLjhj
ZWU3NmM5Y2U3NGVmNGVlM2IzYjBjOWQ4OTQyZjBmOWE0OGFiNGQgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5LzEuMS9mcmFt
ZS1hbmNlc3RvcnMvZnJhbWUtYW5jZXN0b3JzLW92ZXJyaWRlcy14Zm8uaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS8xLjEvZnJh
bWUtYW5jZXN0b3JzL2ZyYW1lLWFuY2VzdG9ycy1vdmVycmlkZXMteGZvLmh0bWwKQEAgLTE5LDcg
KzE5LDcgQEAKICAgICAgICAgICAgIHZhciBpID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZy
YW1lJyk7CiAgICAgICAgICAgICBpLnNyYyA9ICIuLi8uLi9yZXNvdXJjZXMvZnJhbWUtYW5jZXN0
b3JzLWFuZC14LWZyYW1lLW9wdGlvbnMucGw/cG9saWN5PW90aGVyLW9yaWdpbi5jb20meGZvPVNB
TUVPUklHSU4iOwogICAgICAgICAgICAgaS5vbmxvYWQgPSB0LnN0ZXBfZnVuY19kb25lKGZ1bmN0
aW9uICgpIHsKLSAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzKAorICAgICAgICAgICAgICAg
IGFzc2VydF90aHJvd3NfZG9tKAogICAgICAgICAgICAgICAgICAgICAiU2VjdXJpdHlFcnJvciIs
CiAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgaS5jb250ZW50V2luZG93Lm9yaWdp
biB9LAogICAgICAgICAgICAgICAgICAgICAiVGhlIHNhbWUtb3JpZ2luIHBhZ2Ugd2FzIGJsb2Nr
ZWQgYW5kIHNhbmRib3hlZC4iKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5LzEuMS9zY3JpcHRoYXNoLWRlZmF1bHQtc3Jj
Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBv
bGljeS8xLjEvc2NyaXB0aGFzaC1kZWZhdWx0LXNyYy5odG1sCmluZGV4IGY5N2NkNWEyMmQwZmIz
NDNjY2UxYWU4OGEwODY4NWQzYWI2YzE1MDIuLmJjOGQ4YjFjNGIyNDQyMDAyYzgwMGNkYWVlOTQy
YTgxZGIxMzEzZTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
Y29udGVudFNlY3VyaXR5UG9saWN5LzEuMS9zY3JpcHRoYXNoLWRlZmF1bHQtc3JjLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kv
MS4xL3NjcmlwdGhhc2gtZGVmYXVsdC1zcmMuaHRtbApAQCAtNCwxMCArNCwxMCBAQAogICAgIDx0
aXRsZT5TY3JpcHQgSGFzaCBhbGxvdyBoYXNoIGluIGRlZmF1bHQtc3JjPC90aXRsZT4KICAgICA8
c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0Lmpz
Ij48L3NjcmlwdD4KLSAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVNlY3VyaXR5LVBvbGlj
eSIgY29udGVudD0iZGVmYXVsdC1zcmMgKiAnc2hhMjU2LW9TOXVIdUtQUFQvaGRCT1Y3ZTNEOVdh
Mkc3eVZ1eGJJUGthaEovMjZ6RWM9JyI+CisgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1T
ZWN1cml0eS1Qb2xpY3kiIGNvbnRlbnQ9ImRlZmF1bHQtc3JjICogJ3NoYTI1Ni1BN2RabEVjZ2hP
dkFrZFlWK25VMDRIN3BjZThsZWVJZ2RtOXBlL1BSck5ZPSciPgogICAgIDwvaGVhZD4KLQogICAg
IDxzY3JpcHQ+Ci0gICAgZG9uZSgpOworICAgICAgICBzZXR1cCh7IHNpbmdsZV90ZXN0OiB0cnVl
IH0pOworICAgICAgICBkb25lKCk7CiAgICAgPC9zY3JpcHQ+CiA8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS8x
LjEvc3R5bGVoYXNoLWRlZmF1bHQtc3JjLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS8xLjEvc3R5bGVoYXNoLWRlZmF1bHQtc3JjLmh0
bWwKaW5kZXggYjY0OTM1YWQ5ZDU1ZjhiNjkzMzllMTVhYTY3YzA4ZGUyMjczODY3ZS4uMDcyOTg3
YjAwZTcyZWVkMWJkNTFlMGU2NWU0ZWY4OGRhZDIyOWUxMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvMS4xL3N0eWxlaGFz
aC1kZWZhdWx0LXNyYy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
Y29udGVudFNlY3VyaXR5UG9saWN5LzEuMS9zdHlsZWhhc2gtZGVmYXVsdC1zcmMuaHRtbApAQCAt
MTEsNiArMTEsNyBAQAogICAgIDxwIGlkPSJwIj48L3A+CiAgICAgPHN0eWxlPnAjcCB7IGNvbG9y
OiBncmVlbjsgfTwvc3R5bGU+CiAgICAgPHNjcmlwdD4KKyAgICBzZXR1cCh7IHNpbmdsZV90ZXN0
OiB0cnVlIH0pOwogICAgIHZhciBjb2xvciA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3Vt
ZW50LnF1ZXJ5U2VsZWN0b3IoJyNwJykpLmNvbG9yOwogICAgIGFzc2VydF9lcXVhbHMoY29sb3Is
ICJyZ2IoMCwgMTI4LCAwKSIpOwogICAgIGRvbmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3NjcmlwdC1zcmMtYmxv
Y2tlZC1lcnJvci1ldmVudC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9j
b250ZW50U2VjdXJpdHlQb2xpY3kvc2NyaXB0LXNyYy1ibG9ja2VkLWVycm9yLWV2ZW50Lmh0bWwK
aW5kZXggMGZkMTY5YzI3MzVmYzgwMGY4NmYyMmYwMjczM2FhM2Q3MTQyM2FlMS4uYmY1M2UxMTA0
ZjU0ZmM2Y2EwZWE2ZmRkNzgxNjExZTdkYTNmNDU3YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvc2NyaXB0LXNyYy1ibG9j
a2VkLWVycm9yLWV2ZW50Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0
eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvc2NyaXB0LXNyYy1ibG9ja2VkLWVycm9yLWV2ZW50Lmh0
bWwKQEAgLTYsNiArNiw3IEBACiAgICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy90
ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291
cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdD4KKyAgICAg
ICAgc2V0dXAoeyBzaW5nbGVfdGVzdDogdHJ1ZSB9KTsKICAgICAgICAgd2luZG93LnJlc3VsdCA9
IGZhbHNlOwogICAgICAgICBmdW5jdGlvbiBzY3JpcHRFcnJvcigpIHsKICAgICAgICAgICAgIGFz
c2VydF9lcXVhbHMocmVzdWx0LCBmYWxzZSwgIlZhbHVlIHNob3VsZCBub3QgYmUgc2V0Iik7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi1j
bGVhbi1jc3MtcmVzb3VyY2UtdGltaW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L2Nyb3NzLW9yaWdpbi1jbGVhbi1jc3MtcmVzb3VyY2UtdGltaW5nLmh0bWwKaW5kZXgg
OThkOGJmYzBiY2RhZTBiY2M3ODRjYTFhNTZiNDg2NjhhNzczZjE3Zi4uMmU1ZTViNGEwZmM3YWQz
NDUzYzQ1MWRjYWZiZWUwMWM5ZWM0ODVhYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4tY2xlYW4tY3NzLXJlc291cmNlLXRpbWluZy5odG1s
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLWNsZWFu
LWNzcy1yZXNvdXJjZS10aW1pbmcuaHRtbApAQCAtMTMsNiArMTMsNyBAQCBpZiAod2luZG93Lmlu
dGVybmFscykgewogICAgIGludGVybmFscy5jbGVhck1lbW9yeUNhY2hlKCk7CiAgICAgaW50ZXJu
YWxzLmludmFsaWRhdGVGb250Q2FjaGUoKTsKIH0KK3NldHVwKHsgc2luZ2xlX3Rlc3Q6IHRydWUg
fSk7CiBjb25zdCB3YWl0T25Mb2FkID0gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHsKICAgICB3
aW5kb3cub25sb2FkID0gcmVzb2x2ZTsKIH0pCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi1jc3MtcmVzb3VyY2UtdGltaW5nLmh0bWwgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi1jc3MtcmVzb3VyY2Ut
dGltaW5nLmh0bWwKaW5kZXggMWM3MjhkMmI3Nzk2YjFhMDg5MGNkZWY1MDFmMmRlMDhiYzY4ODhh
OC4uMWU4NGViNmIxNDAyYzcxODhlMWFhMzRjOTM5Yzc4MTQzZGE5YjFkNCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4tY3NzLXJlc291cmNl
LXRpbWluZy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mt
b3JpZ2luLWNzcy1yZXNvdXJjZS10aW1pbmcuaHRtbApAQCAtMTMsNiArMTMsNyBAQCBpZiAod2lu
ZG93LmludGVybmFscykgewogICAgIGludGVybmFscy5jbGVhck1lbW9yeUNhY2hlKCk7CiAgICAg
aW50ZXJuYWxzLmludmFsaWRhdGVGb250Q2FjaGUoKTsKIH0KK3NldHVwKHsgc2luZ2xlX3Rlc3Q6
IHRydWUgfSk7CiBjb25zdCB3YWl0T25Mb2FkID0gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHsK
ICAgICB3aW5kb3cub25sb2FkID0gcmVzb2x2ZTsKIH0pCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3N1YnJlc291cmNlLWludGVncml0eS9zcmktZmV0Y2guanMgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3N1YnJlc291cmNlLWludGVncml0eS9zcmktZmV0Y2guanMKaW5kZXgg
YzdmOThkMDQ0YzkwN2NmYTIzNjEwZjYwYTc1ZGExNDUzODQ5OTMzNi4uOTRhODcyZTZlM2RiNWQ2
NjY2YzliNDRjNGRmMGM2NmQ3ZTBhYTlhMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zdWJyZXNvdXJjZS1pbnRlZ3JpdHkvc3JpLWZldGNoLmpzCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc3VicmVzb3VyY2UtaW50ZWdyaXR5L3NyaS1mZXRjaC5qcwpAQCAtMjQsNyAr
MjQsNyBAQCBmdW5jdGlvbiBpbnRlZ3JpdHkoZGVzYywgdXJsLCBvcHRpb25zLCBleHBlY3RlZEVy
cm9yKSB7CiAgICAgICAgIH0sIGRlc2MpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHByb21pc2Vf
dGVzdChmdW5jdGlvbih0ZXN0KSB7Ci0gICAgICAgICAgICByZXR1cm4gcHJvbWlzZV9yZWplY3Rz
KHRlc3QsIGV4cGVjdGVkRXJyb3IsIGZldGNoKHVybCwgb3B0aW9ucykpOworICAgICAgICAgICAg
cmV0dXJuIHByb21pc2VfcmVqZWN0c19qcyh0ZXN0LCBleHBlY3RlZEVycm9yLCBmZXRjaCh1cmws
IG9wdGlvbnMpKTsKICAgICAgICAgfSwgZGVzYyk7CiAgICAgfQogfQpAQCAtNDAsMjUgKzQwLDI1
IEBAIGludGVncml0eSgiRW1wdHkgc3RyaW5nIGludGVncml0eSIsIHJlc291cmNlLCB7ICdpbnRl
Z3JpdHknOiAiIiB9KTsKIGludGVncml0eSgiU0hBLTI1NiBpbnRlZ3JpdHkiLCByZXNvdXJjZSwg
eyAnaW50ZWdyaXR5JzogdG9wU2hhMjU2IH0pOwogaW50ZWdyaXR5KCJTSEEtMzg0IGludGVncml0
eSIsIHJlc291cmNlLCB7ICdpbnRlZ3JpdHknOiB0b3BTaGEzODQgfSk7CiBpbnRlZ3JpdHkoIlNI
QS01MTIgaW50ZWdyaXR5IiwgcmVzb3VyY2UsIHsgJ2ludGVncml0eSc6IHRvcFNoYTUxMiB9KTsK
LWludGVncml0eSgiSW52YWxpZCBpbnRlZ3JpdHkiLCByZXNvdXJjZSwgeyAnaW50ZWdyaXR5Jzog
aW52YWxpZFNoYTI1NiB9LCBuZXcgVHlwZUVycm9yKCkpOworaW50ZWdyaXR5KCJJbnZhbGlkIGlu
dGVncml0eSIsIHJlc291cmNlLCB7ICdpbnRlZ3JpdHknOiBpbnZhbGlkU2hhMjU2IH0sIFR5cGVF
cnJvcik7CiBpbnRlZ3JpdHkoIlVua25vd24gaW50ZWdyaXR5IiwgcmVzb3VyY2UsIHsgJ2ludGVn
cml0eSc6IHVua25vd25BbGdvcml0aG0gfSk7CiBpbnRlZ3JpdHkoIk11bHRpcGxlIGludGVncml0
aWVzOiB2YWxpZCBzdHJvbmdlciB0aGFuIGludmFsaWQiLCByZXNvdXJjZSwgeyAnaW50ZWdyaXR5
JzogaW52YWxpZFNoYTI1NiArICIgIiArIHRvcFNoYTM4NCB9KTsKLWludGVncml0eSgiTXVsdGlw
bGUgaW50ZWdyaXRpZXM6IGludmFsaWQgc3Ryb25nZXIgdGhhbiB2YWxpZCIsIHJlc291cmNlLCB7
ICdpbnRlZ3JpdHknOiBpbnZhbGlkU2hhNTEyICsgIiAiICsgdG9wU2hhMzg0IH0sIG5ldyBUeXBl
RXJyb3IoKSk7CitpbnRlZ3JpdHkoIk11bHRpcGxlIGludGVncml0aWVzOiBpbnZhbGlkIHN0cm9u
Z2VyIHRoYW4gdmFsaWQiLCByZXNvdXJjZSwgeyAnaW50ZWdyaXR5JzogaW52YWxpZFNoYTUxMiAr
ICIgIiArIHRvcFNoYTM4NCB9LCBUeXBlRXJyb3IpOwogaW50ZWdyaXR5KCJNdWx0aXBsZSBpbnRl
Z3JpdGllczogaW52YWxpZCBhcyBzdHJvbmcgYXMgdmFsaWQiLCByZXNvdXJjZSwgeyAnaW50ZWdy
aXR5JzogaW52YWxpZFNoYTUxMiArICIgIiArIHRvcFNoYTUxMiB9KTsKIGludGVncml0eSgiTXVs
dGlwbGUgaW50ZWdyaXRpZXM6IGJvdGggYXJlIHZhbGlkIiwgcmVzb3VyY2UsICB7ICdpbnRlZ3Jp
dHknOiB0b3BTaGEzODQgKyAiICIgKyB0b3BTaGE1MTIgfSk7Ci1pbnRlZ3JpdHkoIk11bHRpcGxl
IGludGVncml0aWVzOiBib3RoIGFyZSBpbnZhbGlkIiwgcmVzb3VyY2UsIHsgJ2ludGVncml0eSc6
IGludmFsaWRTaGEyNTYgKyAiICIgKyBpbnZhbGlkU2hhNTEyIH0sIG5ldyBUeXBlRXJyb3IoKSk7
CitpbnRlZ3JpdHkoIk11bHRpcGxlIGludGVncml0aWVzOiBib3RoIGFyZSBpbnZhbGlkIiwgcmVz
b3VyY2UsIHsgJ2ludGVncml0eSc6IGludmFsaWRTaGEyNTYgKyAiICIgKyBpbnZhbGlkU2hhNTEy
IH0sIFR5cGVFcnJvcik7CiBpbnRlZ3JpdHkoIkFub255bW91cyBDT1JTIGVtcHR5IGludGVncml0
eSIsIGNyb3Nzb3JpZ2luX2Fub25fcmVzb3VyY2UsIHsgJ2ludGVncml0eSc6ICIiIH0pOwogaW50
ZWdyaXR5KCJBbm9ueW1vdXMgQ09SUyBTSEEtNTEyIGludGVncml0eSIsIGNyb3Nzb3JpZ2luX2Fu
b25fcmVzb3VyY2UsIHsgJ2ludGVncml0eSc6IHRvcFNoYTUxMiB9KTsKLWludGVncml0eSgiQW5v
bnltb3VzIENPUlMgaW52YWxpZCBpbnRlZ3JpdHkiLCBjcm9zc29yaWdpbl9hbm9uX3Jlc291cmNl
LCB7ICdpbnRlZ3JpdHknOiBpbnZhbGlkU2hhNTEyIH0sIG5ldyBUeXBlRXJyb3IoKSk7CitpbnRl
Z3JpdHkoIkFub255bW91cyBDT1JTIGludmFsaWQgaW50ZWdyaXR5IiwgY3Jvc3NvcmlnaW5fYW5v
bl9yZXNvdXJjZSwgeyAnaW50ZWdyaXR5JzogaW52YWxpZFNoYTUxMiB9LCBUeXBlRXJyb3IpOwog
CiAvLyBGSVhNRTogVXBzdHJlYW0gdGhlc2UgYWRkaXRpb25hbCB0ZXN0cyB0byB0aGUgb2ZmaWNp
YWwgd2ViLXBsYXRmb3JtLXRlc3RzIHJlcG9zaXRvcnkuCiAKIGludGVncml0eSgiQ3JlZGVudGlh
bCBDT1JTIGVtcHR5IGludGVncml0eSIsIGNyb3Nzb3JpZ2luX2NyZWRzX3Jlc291cmNlLCB7ICdp
bnRlZ3JpdHknOiAiIiwgJ2NyZWRlbnRpYWxzJzogJ2luY2x1ZGUnIH0pOwogaW50ZWdyaXR5KCJD
cmVkZW50aWFsIENPUlMgU0hBLTUxMiBpbnRlZ3JpdHkiLCBjcm9zc29yaWdpbl9jcmVkc19yZXNv
dXJjZSwgeyAnaW50ZWdyaXR5JzogdG9wU2hhNTEyLCAnY3JlZGVudGlhbHMnOiAnaW5jbHVkZScg
fSk7Ci1pbnRlZ3JpdHkoIkNyZWRlbnRpYWwgQ09SUyBpbnZhbGlkIGludGVncml0eSIsIGNyb3Nz
b3JpZ2luX2NyZWRzX3Jlc291cmNlLCB7ICdpbnRlZ3JpdHknOiBpbnZhbGlkU2hhNTEyLCAnY3Jl
ZGVudGlhbHMnOiAnaW5jbHVkZScgfSwgbmV3IFR5cGVFcnJvcigpKTsKLWludGVncml0eSgiSW5l
bGlnaWJsZSBDT1JTIGVtcHR5IGludGVncml0eSIsIGNyb3Nzb3JpZ2luX2luZWxpZ2libGVfcmVz
b3VyY2UsIHsgJ2ludGVncml0eSc6ICIiIH0sIG5ldyBUeXBlRXJyb3IoKSk7Ci1pbnRlZ3JpdHko
IkluZWxpZ2libGUgQ09SUyBTSEEtNTEyIGludGVncml0eSIsIGNyb3Nzb3JpZ2luX2luZWxpZ2li
bGVfcmVzb3VyY2UsIHsgJ2ludGVncml0eSc6IHRvcFNoYTUxMiB9LCBuZXcgVHlwZUVycm9yKCkp
OwotaW50ZWdyaXR5KCJJbmVsaWdpYmxlIENPUlMgaW52YWxpZCBpbnRlZ3JpdHkiLCBjcm9zc29y
aWdpbl9pbmVsaWdpYmxlX3Jlc291cmNlLCB7ICdpbnRlZ3JpdHknOiBpbnZhbGlkU2hhNTEyIH0s
IG5ldyBUeXBlRXJyb3IoKSk7CitpbnRlZ3JpdHkoIkNyZWRlbnRpYWwgQ09SUyBpbnZhbGlkIGlu
dGVncml0eSIsIGNyb3Nzb3JpZ2luX2NyZWRzX3Jlc291cmNlLCB7ICdpbnRlZ3JpdHknOiBpbnZh
bGlkU2hhNTEyLCAnY3JlZGVudGlhbHMnOiAnaW5jbHVkZScgfSwgVHlwZUVycm9yKTsKK2ludGVn
cml0eSgiSW5lbGlnaWJsZSBDT1JTIGVtcHR5IGludGVncml0eSIsIGNyb3Nzb3JpZ2luX2luZWxp
Z2libGVfcmVzb3VyY2UsIHsgJ2ludGVncml0eSc6ICIiIH0sIFR5cGVFcnJvcik7CitpbnRlZ3Jp
dHkoIkluZWxpZ2libGUgQ09SUyBTSEEtNTEyIGludGVncml0eSIsIGNyb3Nzb3JpZ2luX2luZWxp
Z2libGVfcmVzb3VyY2UsIHsgJ2ludGVncml0eSc6IHRvcFNoYTUxMiB9LCBUeXBlRXJyb3IpOwor
aW50ZWdyaXR5KCJJbmVsaWdpYmxlIENPUlMgaW52YWxpZCBpbnRlZ3JpdHkiLCBjcm9zc29yaWdp
bl9pbmVsaWdpYmxlX3Jlc291cmNlLCB7ICdpbnRlZ3JpdHknOiBpbnZhbGlkU2hhNTEyIH0sIFR5
cGVFcnJvcik7CiBpbnRlZ3JpdHkoIlNIQS0yNTYgaW50ZWdyaXR5IHdpdGggJ25vLWNvcnMnIG1v
ZGUiLCByZXNvdXJjZSwgeyAnaW50ZWdyaXR5JzogdG9wU2hhMjU2LCAnbW9kZSc6ICduby1jb3Jz
JyB9KTsKIGludGVncml0eSgiUmVzb3VyY2Ugd2l0aCB6ZXJvIGxlbmd0aCBib2R5IiwgZW1wdHlf
cmVzb3VyY2UsIHsgJ2ludGVncml0eSc6ICI0N0RFUXBqOEhCU2ErL1RJbVcrNUpDZXVRZVJrbTVO
TXBKV1pHM2hTdUZVPSIgfSk7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
d29ya2Vycy9zZXJ2aWNlL3NlcnZpY2Utd29ya2VyLWNyb3Nzb3JpZ2luLWZldGNoLmh0bWwgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9zZXJ2aWNlLXdvcmtlci1jcm9z
c29yaWdpbi1mZXRjaC5odG1sCmluZGV4IGZhZDUwNTdmYTg4Yzc1MTg1ZTJkOGFiOWQ5ZDc4N2Mw
ZTkxZjQyMTYuLmNlNjhhZDUyZTJiNWM4OTc4Zjk1NDNmYzYzMGQ1ZWFlMDI0OWNhNzUgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3NlcnZpY2Utd29y
a2VyLWNyb3Nzb3JpZ2luLWZldGNoLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93
b3JrZXJzL3NlcnZpY2Uvc2VydmljZS13b3JrZXItY3Jvc3NvcmlnaW4tZmV0Y2guaHRtbApAQCAt
OSw3ICs5LDcgQEAKIHByb21pc2VfdGVzdCh0ZXN0ID0+IHsKICAgICAvLyBUcmlnZ2VyaW5nIHBv
dGVudGlhbCBwcmVmbGlnaHQgdGhyb3VnaCBjdXN0b20gaGVhZGVyLgogICAgIHZhciBmZXRjaFBy
b21pc2UgPSBmZXRjaCgiaHR0cDovL2xvY2FsaG9zdDo4MDgwL3Jlc291cmNlcy9zcXVhcmUxMDAu
cG5nLmZyb21zZXJ2aWNld29ya2VyIiwgeyBoZWFkZXJzOiB7ImN1c3RvbSI6ICJoZWFkZXIifX0p
OwotICAgIHJldHVybiBwcm9taXNlX3JlamVjdHModGVzdCwgbmV3IFR5cGVFcnJvcigpLCBmZXRj
aFByb21pc2UpOworICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNfanModGVzdCwgVHlwZUVycm9y
LCBmZXRjaFByb21pc2UpOwogfSwgIlRlc3RpbmcgdW5pbnRlcmNlcHRlZCBmZXRjaCB3aXRoIHBy
ZWZsaWdodCwgZmV0Y2ggc2hvdWxkIGZhaWwiKTsKIAogdmFyIGZyYW1lOwpAQCAtMjcsNyArMjcs
NyBAQCBwcm9taXNlX3Rlc3QoYXN5bmMgdGVzdCA9PiB7CiBwcm9taXNlX3Rlc3QodGVzdCA9PiB7
CiAgICAgLy8gVHJpZ2dlcmluZyBwb3RlbnRpYWwgcHJlZmxpZ2h0IHRocm91Z2ggY3VzdG9tIGhl
YWRlci4KICAgICB2YXIgZmV0Y2hQcm9taXNlID0gZnJhbWUuY29udGVudFdpbmRvdy5mZXRjaCgi
aHR0cDovL2xvY2FsaG9zdDo4MDgwL3Jlc291cmNlcy9zcXVhcmUxMDAucG5nLmVycm9yLmZyb21z
ZXJ2aWNld29ya2VyIiwgeyBoZWFkZXJzOiB7ImN1c3RvbSI6ICJoZWFkZXIifX0pOwotICAgIHJl
dHVybiBwcm9taXNlX3JlamVjdHModGVzdCwgbmV3IFR5cGVFcnJvcigpLCBmZXRjaFByb21pc2Up
OworICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNfanModGVzdCwgZnJhbWUuY29udGVudFdpbmRv
dy5UeXBlRXJyb3IsIGZldGNoUHJvbWlzZSk7CiB9LCAiVGVzdGluZyBpbnRlcmNlcHRlZCBmZXRj
aCB3aXRoIHByZWZsaWdodCwgZmV0Y2ggc2hvdWxkIGZhaWwiKTsKIDwvc2NyaXB0PgogPC9ib2R5
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9zZXQt
YmFkLWhlYWRlcnZhbHVlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1
ZXN0L3NldC1iYWQtaGVhZGVydmFsdWUuaHRtbAppbmRleCA4YmEzMDMzMjJlNjFmYmZiNzczMjRh
Y2NhMjhkODU0NzFjNDk4MTg3Li44YzI4MmM4YTM0NTBhMzZiYTMxYjU5N2EzN2UzMmYwOGJlOGFh
ZTAxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Nl
dC1iYWQtaGVhZGVydmFsdWUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0
dHByZXF1ZXN0L3NldC1iYWQtaGVhZGVydmFsdWUuaHRtbApAQCAtMTAsMjAgKzEwLDIyIEBACiAg
IDxib2R5PgogICAgIDxkaXYgaWQ9ImxvZyI+PC9kaXY+CiAgICAgPHNjcmlwdD4KLSAgICAgIGZ1
bmN0aW9uIHRyeV92YWx1ZSh2YWx1ZSwgZXhwZWN0RXJyb3IpIHsKKyAgICAgIGZ1bmN0aW9uIHRy
eV92YWx1ZSh2YWx1ZSwgZXhwZWN0RXJyb3IsIGlzRE9NRXJyb3IpIHsKICAgICAgICAgdGVzdChm
dW5jdGlvbigpIHsKICAgICAgICAgICB2YXIgY2xpZW50ID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCkK
ICAgICAgICAgICBjbGllbnQub3BlbigiR0VUIiwgIi4uLiIpCi0gICAgICAgICAgaWYgKGV4cGVj
dEVycm9yKQotICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzKGV4cGVjdEVycm9yLCBmdW5jdGlv
bigpIHsgY2xpZW50LnNldFJlcXVlc3RIZWFkZXIoIngtdGVzdCIsIHZhbHVlKSB9LCAnIGdpdmVu
IHZhbHVlICcgKyB2YWx1ZSsnLCAnKQorICAgICAgICAgIGlmIChleHBlY3RFcnJvciAmJiBpc0RP
TUVycm9yKQorICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbShleHBlY3RFcnJvciwgZnVu
Y3Rpb24oKSB7IGNsaWVudC5zZXRSZXF1ZXN0SGVhZGVyKCJ4LXRlc3QiLCB2YWx1ZSkgfSwgJyBn
aXZlbiB2YWx1ZSAnICsgdmFsdWUrJywgJykKKyAgICAgICAgICBlbHNlIGlmIChleHBlY3RFcnJv
cikKKyAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhleHBlY3RFcnJvciwgZnVuY3Rpb24o
KSB7IGNsaWVudC5zZXRSZXF1ZXN0SGVhZGVyKCJ4LXRlc3QiLCB2YWx1ZSkgfSwgJyBnaXZlbiB2
YWx1ZSAnICsgdmFsdWUrJywgJykKICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgIGNsaWVu
dC5zZXRSZXF1ZXN0SGVhZGVyKCJ4LXRlc3QiLCB2YWx1ZSkgIAogICAgICAgICAgIH0pCiAgICAg
ICB9CiAKLSAgICAgIHRyeV92YWx1ZSgidFxydCIsIHtuYW1lOidTeW50YXhFcnJvcid9KQotICAg
ICAgdHJ5X3ZhbHVlKCJ0XG50Iiwge25hbWU6J1N5bnRheEVycm9yJ30pCi0gICAgICB0cnlfdmFs
dWUoIu++g++9ve++hCIsIHtuYW1lOidUeXBlRXJyb3InfSkKKyAgICAgIHRyeV92YWx1ZSgidFxy
dCIsICdTeW50YXhFcnJvcicsIHRydWUpCisgICAgICB0cnlfdmFsdWUoInRcbnQiLCAnU3ludGF4
RXJyb3InLCB0cnVlKQorICAgICAgdHJ5X3ZhbHVlKCLvvoPvvb3vvoQiLCBUeXBlRXJyb3IsIGZh
bHNlKQogICAgICAgdHJ5X3ZhbHVlKCJ0XGJ0IikKICAgICAgIHRyeV92YWx1ZSgidFx2dCIpCiAg
ICAgICB0cnlfdmFsdWUoInRcdHQiKQpAQCAtMzMsNyArMzUsNyBAQAogICAgICAgdGVzdChmdW5j
dGlvbigpIHsKICAgICAgICAgdmFyIGNsaWVudCA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpCiAgICAg
ICAgIGNsaWVudC5vcGVuKCJHRVQiLCAiLi4uIikKLSAgICAgICAgYXNzZXJ0X3Rocm93cyh7bmFt
ZTonVHlwZUVycm9yJ30sIGZ1bmN0aW9uKCkgeyBjbGllbnQuc2V0UmVxdWVzdEhlYWRlcigieC10
ZXN0IikgfSkKKyAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkg
eyBjbGllbnQuc2V0UmVxdWVzdEhlYWRlcigieC10ZXN0IikgfSkKICAgICAgIH0pCiAgICAgPC9z
Y3JpcHQ+CiAgIDwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9J
bmRleGVkREItcHJpdmF0ZS1icm93c2luZy9jbG9zZS1pbi11cGdyYWRlbmVlZGVkLmh0bWwgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvY2xvc2Ut
aW4tdXBncmFkZW5lZWRlZC5odG1sCmluZGV4IDJlMDBiNGU4NTZmYzM0NjU4MDU5YWZjZmViMzgx
NTMxYjI4YmQxNzEuLjAxNWVmMGJhMTkyZmY0YmU4MTk4OWUwNWYwNDg0NjYwMmFjYmQxOGYgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93
c2luZy9jbG9zZS1pbi11cGdyYWRlbmVlZGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2Nsb3NlLWluLXVwZ3JhZGVuZWVkZWQu
aHRtbApAQCAtMjksNyArMjksNyBAQCBvcGVuX3JxLm9uZXJyb3IgPSBmdW5jdGlvbihlKSB7CiAg
ICAgYXNzZXJ0X3RydWUoISFkYikKICAgICBhc3NlcnRfZXF1YWxzKGRiLnZlcnNpb24sIDEpCiAg
ICAgYXNzZXJ0X2VxdWFscyhkYi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCwgMSkKLSAgICBhc3Nl
cnRfdGhyb3dzKCJJbnZhbGlkU3RhdGVFcnJvciIsIGZ1bmN0aW9uKCkgeyBkYi50cmFuc2FjdGlv
bignb3MnKSB9KQorICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlkU3RhdGVFcnJvciIsIGZ1
bmN0aW9uKCkgeyBkYi50cmFuc2FjdGlvbignb3MnKSB9KQogCiAgICAgdGhpcy5kb25lKCkKIH0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1i
cm93c2luZy9pZGJjdXJzb3ItYWR2YW5jZS1pbnZhbGlkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yLWFkdmFuY2UtaW52
YWxpZC5odG1sCmluZGV4IGUyNTA0YjllNDFlNjg5OTJlNzBiNjExYTVhZDI5NjQ4YmE0ZjE2NzYu
LjQ0ODJkNjhkMjE1NmZiODI1NzdjZjc2NzZjYTM4NDdjODhmYjJlYzYgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJz
b3ItYWR2YW5jZS1pbnZhbGlkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0lu
ZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvci1hZHZhbmNlLWludmFsaWQuaHRtbApA
QCAtNDYsMTAgKzQ2LDEwIEBACiAgICAgICAgICAgICAgICAgY3Vyc29yLmFkdmFuY2UoMSk7CiAK
ICAgICAgICAgICAgICAgICAvLyBTZWNvbmQgdHJ5Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X3Ro
cm93cygnSW52YWxpZFN0YXRlRXJyb3InLAorICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3Nf
ZG9tKCdJbnZhbGlkU3RhdGVFcnJvcicsCiAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkg
eyBjdXJzb3IuYWR2YW5jZSgxKTsgfSwgJ3NlY29uZCBhZHZhbmNlJyk7CiAKLSAgICAgICAgICAg
ICAgICBhc3NlcnRfdGhyb3dzKCdJbnZhbGlkU3RhdGVFcnJvcicsCisgICAgICAgICAgICAgICAg
YXNzZXJ0X3Rocm93c19kb20oJ0ludmFsaWRTdGF0ZUVycm9yJywKICAgICAgICAgICAgICAgICAg
ICAgZnVuY3Rpb24oKSB7IGN1cnNvci5hZHZhbmNlKDMpOyB9LCAndGhpcmQgYWR2YW5jZScpOwog
CiAgICAgICAgICAgICAgICAgY291bnQrKzsKQEAgLTY0LDE5ICs2NCwxOSBAQAogICAgICAgICAg
ICAgcnEub25zdWNjZXNzID0gdGhpcy5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgewogICAgICAgICAg
ICAgICAgIHZhciBjdXJzb3IgPSBlLnRhcmdldC5yZXN1bHQ7CiAKLSAgICAgICAgICAgICAgICBh
c3NlcnRfdGhyb3dzKHsgbmFtZTogIlR5cGVFcnJvciIgfSwKKyAgICAgICAgICAgICAgICBhc3Nl
cnRfdGhyb3dzX2pzKFR5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7
IGN1cnNvci5hZHZhbmNlKGRvY3VtZW50KTsgfSk7CiAKLSAgICAgICAgICAgICAgICBhc3NlcnRf
dGhyb3dzKHsgbmFtZTogIlR5cGVFcnJvciIgfSwKKyAgICAgICAgICAgICAgICBhc3NlcnRfdGhy
b3dzX2pzKFR5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7IGN1cnNv
ci5hZHZhbmNlKHt9KTsgfSk7CiAKLSAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzKHsgbmFt
ZTogIlR5cGVFcnJvciIgfSwKKyAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVF
cnJvciwKICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7IGN1cnNvci5hZHZhbmNlKFtd
KTsgfSk7CiAKLSAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzKHsgbmFtZTogIlR5cGVFcnJv
ciIgfSwKKyAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwKICAgICAg
ICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7IGN1cnNvci5hZHZhbmNlKCIiKTsgfSk7CiAKLSAg
ICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzKHsgbmFtZTogIlR5cGVFcnJvciIgfSwKKyAgICAg
ICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwKICAgICAgICAgICAgICAgICAg
ICAgZnVuY3Rpb24oKSB7IGN1cnNvci5hZHZhbmNlKCIxIDIiKTsgfSk7CiAKICAgICAgICAgICAg
ICAgICB0aGlzLmRvbmUoKTsKQEAgLTkxLDE0ICs5MSwxNCBAQAogICAgICAgICAgICAgcnEub25z
dWNjZXNzID0gdGhpcy5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgIHZh
ciBjdXJzb3IgPSBlLnRhcmdldC5yZXN1bHQ7CiAKLSAgICAgICAgICAgICAgICBhc3NlcnRfdGhy
b3dzKHsgbmFtZTogIlR5cGVFcnJvciIgfSwKKyAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dz
X2pzKFR5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7IGN1cnNvci5h
ZHZhbmNlKG51bGwpOyB9KTsKIAotICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3MoeyBuYW1l
OiAiVHlwZUVycm9yIiB9LAorICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVy
cm9yLAogICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsgY3Vyc29yLmFkdmFuY2UodW5k
ZWZpbmVkKTsgfSk7CiAKICAgICAgICAgICAgICAgICB2YXIgbXl2YXIgPSBudWxsOwotICAgICAg
ICAgICAgICAgIGFzc2VydF90aHJvd3MoeyBuYW1lOiAiVHlwZUVycm9yIiB9LAorICAgICAgICAg
ICAgICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICBm
dW5jdGlvbigpIHsgY3Vyc29yLmFkdmFuY2UobXl2YXIpOyB9KTsKIAogICAgICAgICAgICAgICAg
IHRoaXMuZG9uZSgpOwpAQCAtMTEzLDcgKzExMyw3IEBACiAgICAgICAgICAgICBycS5vbnN1Y2Nl
c3MgPSB0aGlzLnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgdmFyIGN1
cnNvciA9IGUudGFyZ2V0LnJlc3VsdDsKIAotICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3Mo
eyBuYW1lOiAiVHlwZUVycm9yIiB9LAorICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3NfanMo
VHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsgY3Vyc29yLmFkdmFu
Y2UoKTsgfSk7CiAKICAgICAgICAgICAgICAgICB0aGlzLmRvbmUoKTsKQEAgLTEyOCwyNiArMTI4
LDI2IEBACiAgICAgICAgICAgICBycS5vbnN1Y2Nlc3MgPSB0aGlzLnN0ZXBfZnVuYyhmdW5jdGlv
bihlKSB7CiAgICAgICAgICAgICAgICAgdmFyIGN1cnNvciA9IGUudGFyZ2V0LnJlc3VsdDsKIAot
ICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3MoeyBuYW1lOiAiVHlwZUVycm9yIiB9LAorICAg
ICAgICAgICAgICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLAogICAgICAgICAgICAgICAg
ICAgICBmdW5jdGlvbigpIHsgY3Vyc29yLmFkdmFuY2UoLTEpOyB9KTsKIAotICAgICAgICAgICAg
ICAgIGFzc2VydF90aHJvd3MoeyBuYW1lOiAiVHlwZUVycm9yIiB9LAorICAgICAgICAgICAgICAg
IGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICBmdW5jdGlv
bigpIHsgY3Vyc29yLmFkdmFuY2UoTmFOKTsgfSk7CiAKLSAgICAgICAgICAgICAgICBhc3NlcnRf
dGhyb3dzKHsgbmFtZTogIlR5cGVFcnJvciIgfSwKKyAgICAgICAgICAgICAgICBhc3NlcnRfdGhy
b3dzX2pzKFR5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7IGN1cnNv
ci5hZHZhbmNlKDApOyB9KTsKIAotICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3MoeyBuYW1l
OiAiVHlwZUVycm9yIiB9LAorICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVy
cm9yLAogICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsgY3Vyc29yLmFkdmFuY2UoLTAp
OyB9KTsKIAotICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3MoeyBuYW1lOiAiVHlwZUVycm9y
IiB9LAorICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLAogICAgICAg
ICAgICAgICAgICAgICBmdW5jdGlvbigpIHsgY3Vyc29yLmFkdmFuY2UoSW5maW5pdHkpOyB9KTsK
IAotICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3MoeyBuYW1lOiAiVHlwZUVycm9yIiB9LAor
ICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLAogICAgICAgICAgICAg
ICAgICAgICBmdW5jdGlvbigpIHsgY3Vyc29yLmFkdmFuY2UoLUluZmluaXR5KTsgfSk7CiAKICAg
ICAgICAgICAgICAgICB2YXIgbXl2YXIgPSAtOTk5OTk5OwotICAgICAgICAgICAgICAgIGFzc2Vy
dF90aHJvd3MoeyBuYW1lOiAiVHlwZUVycm9yIiB9LAorICAgICAgICAgICAgICAgIGFzc2VydF90
aHJvd3NfanMoVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsgY3Vy
c29yLmFkdmFuY2UobXl2YXIpOyB9KTsKIAogICAgICAgICAgICAgICAgIHRoaXMuZG9uZSgpOwpA
QCAtMTY5LDcgKzE2OSw3IEBACiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzKHsgbmFtZTogIlR5cGVF
cnJvciIgfSwKKyAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwKICAg
ICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7IGN1cnNvci5hZHZhbmNlKDApOyB9KTsKIAog
ICAgICAgICAgICAgICAgIGN1cnNvci5hZHZhbmNlKDEpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9hZHZh
bmNlX2luZGV4Mi5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2
YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9hZHZhbmNlX2luZGV4Mi5odG1sCmluZGV4IDA4ZmIwNWQz
NjI3YzM4YzBlMWM5ZDg4MTc3MjVlZjE4ZjI2ZjI2YWQuLjExZTAxYjFlMzMwYmEyNGVhOWZmY2Y2
MjU4MTE1MzgzYTUzNzA3YmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9J
bmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfYWR2YW5jZV9pbmRleDIuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Npbmcv
aWRiY3Vyc29yX2FkdmFuY2VfaW5kZXgyLmh0bWwKQEAgLTM1LDcgKzM1LDcgQEAKICAgICAgICAg
ICAgIHZhciBjdXJzb3IgPSBlLnRhcmdldC5yZXN1bHQ7CiAKICAgICAgICAgICAgIGFzc2VydF90
cnVlKGN1cnNvciAhPSBudWxsLCAiY3Vyc29yIGV4aXN0Iik7Ci0gICAgICAgICAgICBhc3NlcnRf
dGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwKKyAgICAgICAgICAgIGFzc2VydF90aHJvd3NfanMoVHlw
ZUVycm9yLAogICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyBjdXJzb3IuYWR2YW5jZShkb2N1
bWVudCk7IH0pOwogCiAgICAgICAgICAgICB0LmRvbmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfYWR2
YW5jZV9pbmRleDMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJp
dmF0ZS1icm93c2luZy9pZGJjdXJzb3JfYWR2YW5jZV9pbmRleDMuaHRtbAppbmRleCBmOGExYWVm
MDcwN2EzMDUyYTgxY2I0MWYxYTlmOGJlNjcyOTNhMjAxLi41Y2M0ODRlYzFhNDQ4MDFjMTQ5N2Jl
NjBjMzI2ODJhMWNmZjg5NmQ5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
SW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2FkdmFuY2VfaW5kZXgzLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5n
L2lkYmN1cnNvcl9hZHZhbmNlX2luZGV4My5odG1sCkBAIC0zNSw3ICszNSw3IEBACiAgICAgICAg
ICAgICB2YXIgY3Vyc29yID0gZS50YXJnZXQucmVzdWx0OwogCiAgICAgICAgICAgICBhc3NlcnRf
dHJ1ZShjdXJzb3IgIT0gbnVsbCwgImN1cnNvciBleGlzdCIpOwotICAgICAgICAgICAgYXNzZXJ0
X3Rocm93cyhuZXcgVHlwZUVycm9yKCksCisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5
cGVFcnJvciwKICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsgY3Vyc29yLmFkdmFuY2UoLTEp
OyB9KTsKIAogICAgICAgICAgICAgdC5kb25lKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2FkdmFuY2Vf
aW5kZXg2Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUt
YnJvd3NpbmcvaWRiY3Vyc29yX2FkdmFuY2VfaW5kZXg2Lmh0bWwKaW5kZXggNzRkNjUzYzA5OTUx
NDYzODA2YzNkMTIzM2M3MGEzY2M4OGQ1YjJiZC4uNTM4ZjUzNjEyNGIyMDk2ZmJlM2M4MDA4ZTg5
NmRjNjExNjk1YzA1ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4
ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9hZHZhbmNlX2luZGV4Ni5odG1sCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJj
dXJzb3JfYWR2YW5jZV9pbmRleDYuaHRtbApAQCAtMjYsNyArMjYsNyBAQAogICAgICAgICAgICAg
dmFyIGN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CiAgICAgICAgICAgICBhc3NlcnRfdHJ1
ZShjdXJzb3IgaW5zdGFuY2VvZiBJREJDdXJzb3IpOwogCi0gICAgICAgICAgICBhc3NlcnRfdGhy
b3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhc3NlcnRfdGhy
b3dzX2pzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgY3Vyc29yLmFk
dmFuY2UoMCk7CiAgICAgICAgICAgICB9LCAiQ2FsbGluZyBhZHZhbmNlKCkgd2l0aCBjb3VudCBh
cmd1bWVudCAwIHNob3VsZCB0aHJvdyBUeXBlRXJyb3IuIik7CiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3Jf
YWR2YW5jZV9pbmRleDcuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREIt
cHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfYWR2YW5jZV9pbmRleDcuaHRtbAppbmRleCA2MTdj
ZGEwN2FmNmJjOTM4YzU0NjYyYzRjZTU2M2ZkZDVhNjMzODQ5Li4xNWI4NzBhYzQyYzczOWY3NGI4
ZTVmYTVkZGFhNzVjN2RjYzUyZDhkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2FkdmFuY2VfaW5kZXg3Lmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dz
aW5nL2lkYmN1cnNvcl9hZHZhbmNlX2luZGV4Ny5odG1sCkBAIC0yNyw3ICsyNyw3IEBACiAgICAg
ICAgICAgICBhc3NlcnRfdHJ1ZShjdXJzb3IgaW5zdGFuY2VvZiBJREJDdXJzb3IpOwogCiAgICAg
ICAgICAgICBldmVudC50YXJnZXQudHJhbnNhY3Rpb24uYWJvcnQoKTsKLSAgICAgICAgICAgIGFz
c2VydF90aHJvd3MoIlRyYW5zYWN0aW9uSW5hY3RpdmVFcnJvciIsIGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIlRyYW5zYWN0aW9uSW5hY3RpdmVFcnJvciIsIGZ1
bmN0aW9uKCkgewogICAgICAgICAgICAgICAgIGN1cnNvci5hZHZhbmNlKDEpOwogICAgICAgICAg
ICAgfSwgIkNhbGxpbmcgYWR2YW5jZSgpIHNob3VsZCB0aHJvd3MgYW4gZXhjZXB0aW9uIFRyYW5z
YWN0aW9uSW5hY3RpdmVFcnJvciB3aGVuIHRoZSB0cmFuc2FjdGlvbiBpcyBub3QgYWN0aXZlLiIp
OwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZh
dGUtYnJvd3NpbmcvaWRiY3Vyc29yX2FkdmFuY2VfaW5kZXg4Lmh0bWwgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2FkdmFuY2Vf
aW5kZXg4Lmh0bWwKaW5kZXggMWNkZTlhZjFhN2E3MWUwYjM2YTgzMzlmNTU3NDZjM2FkN2JkMGE2
Mi4uMzFhN2EzZjg1NjllZTk4ZDhiMzg2MmQwMGRhZjg4MWQ3Y2E2N2M1YiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1
cnNvcl9hZHZhbmNlX2luZGV4OC5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9J
bmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfYWR2YW5jZV9pbmRleDguaHRtbApA
QCAtMjcsNyArMjcsNyBAQAogICAgICAgICAgICAgYXNzZXJ0X3RydWUoY3Vyc29yIGluc3RhbmNl
b2YgSURCQ3Vyc29yKTsKIAogICAgICAgICAgICAgY3Vyc29yLmFkdmFuY2UoMSk7Ci0gICAgICAg
ICAgICBhc3NlcnRfdGhyb3dzKCJJbnZhbGlkU3RhdGVFcnJvciIsIGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkludmFsaWRTdGF0ZUVycm9yIiwgZnVuY3Rpb24o
KSB7CiAgICAgICAgICAgICAgICAgY3Vyc29yLmFkdmFuY2UoMSk7CiAgICAgICAgICAgICB9LCAi
Q2FsbGluZyBhZHZhbmNlKCkgc2hvdWxkIHRocm93IERPTUV4Y2VwdGlvbiB3aGVuIHRoZSBjdXJz
b3IgaXMgY3VycmVudGx5IGJlaW5nIGl0ZXJhdGVkLiIpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2Fk
dmFuY2VfaW5kZXg5Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXBy
aXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2FkdmFuY2VfaW5kZXg5Lmh0bWwKaW5kZXggMDkxYzFi
Y2JjOWI1YzBjNDM1ZTM3YTJlY2VhNmZmMzdmZWU4YzEwMS4uODM5ZDNlYThiMjQwYmU2YmYxMjA5
NDg4OTBhNjdkOTlkYTVjNjE4NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9hZHZhbmNlX2luZGV4OS5odG1s
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2lu
Zy9pZGJjdXJzb3JfYWR2YW5jZV9pbmRleDkuaHRtbApAQCAtMjYsNyArMjYsNyBAQAogICAgICAg
ICAgICAgYXNzZXJ0X3RydWUoY3Vyc29yIGluc3RhbmNlb2YgSURCQ3Vyc29yLCAiY3Vyc29yIGV4
aXN0Iik7CiAKICAgICAgICAgICAgIGRiLmRlbGV0ZU9iamVjdFN0b3JlKCJzdG9yZSIpOwotICAg
ICAgICAgICAgYXNzZXJ0X3Rocm93cygiSW52YWxpZFN0YXRlRXJyb3IiLCBmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlkU3RhdGVFcnJvciIsIGZ1bmN0
aW9uKCkgewogICAgICAgICAgICAgICAgIGN1cnNvci5hZHZhbmNlKDEpOwogICAgICAgICAgICAg
fSwgIklmIHRoZSBjdXJzb3IncyBzb3VyY2Ugb3IgZWZmZWN0aXZlIG9iamVjdCBzdG9yZSBoYXMg
YmVlbiBkZWxldGVkLCB0aGUgaW1wbGVtZW50YXRpb24gTVVTVCB0aHJvdyBhIERPTUV4Y2VwdGlv
biBvZiB0eXBlIEludmFsaWRTdGF0ZUVycm9yIik7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfYWR2YW5j
ZV9vYmplY3RzdG9yZTIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREIt
cHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfYWR2YW5jZV9vYmplY3RzdG9yZTIuaHRtbAppbmRl
eCA1YWNmN2ZmODAzYTBjNjUxYzU1MDZjYTQ3NDkzNTdkZDM0N2I3YjI4Li42MTQ0OTE4MWVmM2Zm
YjRkZDU1NTVmMDA0MGU5MjIzMTk0OTZlN2E5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2FkdmFuY2Vfb2Jq
ZWN0c3RvcmUyLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1w
cml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9hZHZhbmNlX29iamVjdHN0b3JlMi5odG1sCkBAIC0y
OSw3ICsyOSw3IEBACiAgICAgICAgICAgICB2YXIgY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dDsKICAgICAgICAgICAgIGFzc2VydF90cnVlKGN1cnNvciBpbnN0YW5jZW9mIElEQkN1cnNvcik7
CiAKLSAgICAgICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsK
ICAgICAgICAgICAgICAgICBjdXJzb3IuYWR2YW5jZSgwKTsKICAgICAgICAgICAgIH0sICJDYWxs
aW5nIGFkdmFuY2UoKSB3aXRoIGNvdW50IGFyZ3VtZW50IDAgc2hvdWxkIHRocm93IFR5cGVFcnJv
ci4iKTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1w
cml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9hZHZhbmNlX29iamVjdHN0b3JlMy5odG1sIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNv
cl9hZHZhbmNlX29iamVjdHN0b3JlMy5odG1sCmluZGV4IDk4YjU3NzUyNDdmNGVlNGJkZjNkYmJi
NWQyNTdiZjRiMGJhNTcxMTkuLjk1NjZmNDVlMjU5MzIyMGJmOWViM2IxZGI5M2I2ZjhjN2FjYWRj
ZGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0
ZS1icm93c2luZy9pZGJjdXJzb3JfYWR2YW5jZV9vYmplY3RzdG9yZTMuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29y
X2FkdmFuY2Vfb2JqZWN0c3RvcmUzLmh0bWwKQEAgLTMwLDcgKzMwLDcgQEAKICAgICAgICAgICAg
IGFzc2VydF90cnVlKGN1cnNvciBpbnN0YW5jZW9mIElEQkN1cnNvcik7CiAKICAgICAgICAgICAg
IGV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5hYm9ydCgpOwotICAgICAgICAgICAgYXNzZXJ0X3Ro
cm93cygiVHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yIiwgZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICBhc3NlcnRfdGhyb3dzX2RvbSgiVHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yIiwgZnVuY3Rpb24o
KSB7CiAgICAgICAgICAgICAgICAgY3Vyc29yLmFkdmFuY2UoMSk7CiAgICAgICAgICAgICB9LCAi
Q2FsbGluZyBhZHZhbmNlKCkgc2hvdWxkIHRocm93cyBhbiBleGNlcHRpb24gVHJhbnNhY3Rpb25J
bmFjdGl2ZUVycm9yIHdoZW4gdGhlIHRyYW5zYWN0aW9uIGlzIG5vdCBhY3RpdmUiKTsKIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dz
aW5nL2lkYmN1cnNvcl9hZHZhbmNlX29iamVjdHN0b3JlNC5odG1sIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9hZHZhbmNlX29i
amVjdHN0b3JlNC5odG1sCmluZGV4IGRhYmY4ZTg2OTczNzYxYThlZGE3MGFhZGI5NjRmNTZhMmI5
YmNkYTkuLjFjODk0N2YwODcyNmRmNWEyZDAxYTY4YTMzOTI1N2EyZTg5M2UzYzkgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9p
ZGJjdXJzb3JfYWR2YW5jZV9vYmplY3RzdG9yZTQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2FkdmFuY2Vfb2Jq
ZWN0c3RvcmU0Lmh0bWwKQEAgLTMwLDcgKzMwLDcgQEAKICAgICAgICAgICAgIGFzc2VydF90cnVl
KGN1cnNvciBpbnN0YW5jZW9mIElEQkN1cnNvcik7CiAKICAgICAgICAgICAgIGN1cnNvci5hZHZh
bmNlKDEpOwotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygiSW52YWxpZFN0YXRlRXJyb3IiLCBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlkU3RhdGVF
cnJvciIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgIGN1cnNvci5hZHZhbmNlKDEpOwog
ICAgICAgICAgICAgfSwgIkNhbGxpbmcgYWR2YW5jZSgpIHNob3VsZCB0aHJvdyBET01FeGNlcHRp
b24gd2hlbiB0aGUgY3Vyc29yIGlzIGN1cnJlbnRseSBiZWluZyBpdGVyYXRlZC4iKTsKIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dz
aW5nL2lkYmN1cnNvcl9hZHZhbmNlX29iamVjdHN0b3JlNS5odG1sIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9hZHZhbmNlX29i
amVjdHN0b3JlNS5odG1sCmluZGV4IGZmNjFmNmYzNjZhMzY4N2VjMzg5MmYyMTU4NzU3NzA3MGEy
YTFlMTEuLmM2NzM4MmE0NGM5M2M0NDRmMzFkY2M4ODlkYmQxNGIyY2MwNGVhMWQgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9p
ZGJjdXJzb3JfYWR2YW5jZV9vYmplY3RzdG9yZTUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2FkdmFuY2Vfb2Jq
ZWN0c3RvcmU1Lmh0bWwKQEAgLTI1LDcgKzI1LDcgQEAKICAgICAgICAgICAgIGFzc2VydF90cnVl
KGN1cnNvciBpbnN0YW5jZW9mIElEQkN1cnNvciwgImN1cnNvciBleGlzdCIpOwogCiAgICAgICAg
ICAgICBkYi5kZWxldGVPYmplY3RTdG9yZSgic3RvcmUiKTsKLSAgICAgICAgICAgIGFzc2VydF90
aHJvd3MoIkludmFsaWRTdGF0ZUVycm9yIiwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhc3Nl
cnRfdGhyb3dzX2RvbSgiSW52YWxpZFN0YXRlRXJyb3IiLCBmdW5jdGlvbigpIHsKICAgICAgICAg
ICAgICAgICBjdXJzb3IuYWR2YW5jZSgxKTsKICAgICAgICAgICAgIH0sICJJZiB0aGUgY3Vyc29y
J3Mgc291cmNlIG9yIGVmZmVjdGl2ZSBvYmplY3Qgc3RvcmUgaGFzIGJlZW4gZGVsZXRlZCwgdGhl
IGltcGxlbWVudGF0aW9uIE1VU1QgdGhyb3cgYSBET01FeGNlcHRpb24gb2YgdHlwZSBJbnZhbGlk
U3RhdGVFcnJvciIpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5k
ZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2NvbnRpbnVlX2luZGV4Mi5odG1sIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1
cnNvcl9jb250aW51ZV9pbmRleDIuaHRtbAppbmRleCAzYTg4OThjZDZmNzUzMjViNWZmNTQzODQz
Y2QxMTliMjVhODkxODUyLi5lYTY3NWJkYjZkYzlkZDZlMzIxODQ5ODJiMjMyZWU2ZTMyYTE3Mzg5
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUt
YnJvd3NpbmcvaWRiY3Vyc29yX2NvbnRpbnVlX2luZGV4Mi5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfY29udGlu
dWVfaW5kZXgyLmh0bWwKQEAgLTM1LDcgKzM1LDcgQEAKICAgICAgICAgY3Vyc29yX3JxLm9uc3Vj
Y2VzcyA9IHQuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgIHZhciBjdXJzb3Ig
PSBlLnRhcmdldC5yZXN1bHQ7CiAKLSAgICAgICAgICAgIGFzc2VydF90aHJvd3MoIkRhdGFFcnJv
ciIsCisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiRGF0YUVycm9yIiwKICAgICAgICAg
ICAgICAgICBmdW5jdGlvbigpIHsgY3Vyc29yLmNvbnRpbnVlKGRvY3VtZW50KTsgfSk7CiAKICAg
ICAgICAgICAgIGFzc2VydF90cnVlKGN1cnNvciBpbnN0YW5jZW9mIElEQkN1cnNvcldpdGhWYWx1
ZSwgImN1cnNvciIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4
ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9jb250aW51ZV9pbmRleDMuaHRtbCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJz
b3JfY29udGludWVfaW5kZXgzLmh0bWwKaW5kZXggNTVlZWZhMzcyMWY0NTE0MmRlMjc3Zjc4ZDUy
OGE5OTI5NzgyYjBhOS4uMTgxMDU3NGU5ZTVhZDczMTcxMTljOTFmNDk4NzQxZWQ4MDc4NzBiZiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJy
b3dzaW5nL2lkYmN1cnNvcl9jb250aW51ZV9pbmRleDMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2NvbnRpbnVl
X2luZGV4My5odG1sCkBAIC00MCw3ICs0MCw3IEBACiAgICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgIC8vIEZpcnN0IHRpbWUgY2hlY2tzIGtleSBlcXVhbCwgc2Vjb25kIHRpbWUgY2hlY2tzIGtl
eSBsZXNzIHRoYW4KLSAgICAgICAgICAgIGFzc2VydF90aHJvd3MoIkRhdGFFcnJvciIsCisgICAg
ICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiRGF0YUVycm9yIiwKICAgICAgICAgICAgICAgICBm
dW5jdGlvbigpIHsgY3Vyc29yLmNvbnRpbnVlKHJlY29yZHNbMF0uaUtleSk7IH0pOwogCiAgICAg
ICAgICAgICBjdXJzb3IuY29udGludWUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfY29udGludWVfaW5k
ZXg0Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJv
d3NpbmcvaWRiY3Vyc29yX2NvbnRpbnVlX2luZGV4NC5odG1sCmluZGV4IGQ0MTZjOWY1OGVkZGQw
ZDQxNWVmNDFlOTMwMTFhMDcxZThhY2RhMGEuLjM1NTQ2YjQxNTAyMmVhMGI1YmNjM2Q3N2FjMzZm
MTRhMGZmNTYwNmEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVk
REItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfY29udGludWVfaW5kZXg0Lmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1
cnNvcl9jb250aW51ZV9pbmRleDQuaHRtbApAQCAtNDcsNyArNDcsNyBAQAogICAgICAgICAgICAg
Y2FzZSAxOgogICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocmVjb3JkLnBLZXksIHJlY29y
ZHNbMV0ucEtleSwgInNlY29uZCBwS2V5Iik7CiAgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFs
cyhyZWNvcmQuaUtleSwgcmVjb3Jkc1sxXS5pS2V5LCAic2Vjb25kIGlLZXkiKTsKLSAgICAgICAg
ICAgICAgICBhc3NlcnRfdGhyb3dzKCJEYXRhRXJyb3IiLAorICAgICAgICAgICAgICAgIGFzc2Vy
dF90aHJvd3NfZG9tKCJEYXRhRXJyb3IiLAogICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigp
IHsgY3Vyc29yLmNvbnRpbnVlKCJpbmRleEtleV8yIik7IH0pOwogICAgICAgICAgICAgICAgIHQu
ZG9uZSgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9jb250aW51
ZV9pbmRleDcuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0
ZS1icm93c2luZy9pZGJjdXJzb3JfY29udGludWVfaW5kZXg3Lmh0bWwKaW5kZXggNWFlNjA5OGFm
MGRhMThiYjdjNjEzZDIzMThlOGFhMTMzZDUwOWRmOS4uM2ZlMjA5MmFlYWY3ZjJhNzhmYjBkM2Ni
NzI5MDRiMmJjYWQ1ZjA3OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0lu
ZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9jb250aW51ZV9pbmRleDcuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Npbmcv
aWRiY3Vyc29yX2NvbnRpbnVlX2luZGV4Ny5odG1sCkBAIC0yNyw3ICsyNyw3IEBACiAgICAgICAg
ICAgICBhc3NlcnRfdHJ1ZShjdXJzb3IgaW5zdGFuY2VvZiBJREJDdXJzb3IpOwogCiAgICAgICAg
ICAgICBldmVudC50YXJnZXQudHJhbnNhY3Rpb24uYWJvcnQoKTsKLSAgICAgICAgICAgIGFzc2Vy
dF90aHJvd3MoIlRyYW5zYWN0aW9uSW5hY3RpdmVFcnJvciIsIGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgYXNzZXJ0X3Rocm93c19kb20oIlRyYW5zYWN0aW9uSW5hY3RpdmVFcnJvciIsIGZ1bmN0
aW9uKCkgewogICAgICAgICAgICAgICAgIGN1cnNvci5jb250aW51ZSgpOwogICAgICAgICAgICAg
fSwgIkNhbGxpbmcgY29udGludWUoKSBzaG91bGQgdGhyb3dzIGFuIGV4Y2VwdGlvbiBUcmFuc2Fj
dGlvbkluYWN0aXZlRXJyb3Igd2hlbiB0aGUgdHJhbnNhY3Rpb24gaXMgbm90IGFjdGl2ZS4iKTsK
IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRl
LWJyb3dzaW5nL2lkYmN1cnNvcl9jb250aW51ZV9pbmRleDguaHRtbCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfY29udGludWVf
aW5kZXg4Lmh0bWwKaW5kZXggNmVlNTdmNWJkMjRkMmY3MzQ3NDRmYWVjOTIwOWI5ZDZmY2IxNjMy
Yi4uMmY3YWMyMTgxMGQ0OTQ4MzU5OWUyMzI4Mjc4ZWY3MzgyY2QyYjRmYiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1
cnNvcl9jb250aW51ZV9pbmRleDguaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
SW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2NvbnRpbnVlX2luZGV4OC5odG1s
CkBAIC0yNyw3ICsyNyw3IEBACiAgICAgICAgICAgICBhc3NlcnRfdHJ1ZShjdXJzb3IgaW5zdGFu
Y2VvZiBJREJDdXJzb3IpOwogCiAgICAgICAgICAgICBkYi5kZWxldGVPYmplY3RTdG9yZSgic3Rv
cmUiKTsKLSAgICAgICAgICAgIGFzc2VydF90aHJvd3MoIkludmFsaWRTdGF0ZUVycm9yIiwgZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiSW52YWxpZFN0YXRlRXJy
b3IiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICBjdXJzb3IuY29udGludWUoKTsKICAg
ICAgICAgICAgIH0sICJJZiB0aGUgY3Vyc29yJ3Mgc291cmNlIG9yIGVmZmVjdGl2ZSBvYmplY3Qg
c3RvcmUgaGFzIGJlZW4gZGVsZXRlZCwgdGhlIGltcGxlbWVudGF0aW9uIE1VU1QgdGhyb3cgYSBE
T01FeGNlcHRpb24gb2YgdHlwZSBJbnZhbGlkU3RhdGVFcnJvciIpOwogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vy
c29yX2NvbnRpbnVlX2ludmFsaWQuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRl
eGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfY29udGludWVfaW52YWxpZC5odG1sCmlu
ZGV4IDY1N2E2YTAyYzA2ZTM1ODBmZDI0NWJmMTI2NjdiMmI4ZjNlNWUyMDUuLjVhOWM0MGY2MmY0
NmU3MDMwMjhlMWVhMjFhMmYxZDdkNmY1MzMyMjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfY29udGludWVf
aW52YWxpZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJp
dmF0ZS1icm93c2luZy9pZGJjdXJzb3JfY29udGludWVfaW52YWxpZC5odG1sCkBAIC0zOSwxMCAr
MzksMTAgQEAKICAgICAgICAgICAgIGN1cnNvci5jb250aW51ZSh1bmRlZmluZWQpOwogCiAgICAg
ICAgICAgICAvLyBTZWNvbmQgdHJ5Ci0gICAgICAgICAgICBhc3NlcnRfdGhyb3dzKCdJbnZhbGlk
U3RhdGVFcnJvcicsCisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgnSW52YWxpZFN0YXRl
RXJyb3InLAogICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyBjdXJzb3IuY29udGludWUoKTsg
fSwgJ3NlY29uZCBjb250aW51ZScpOwogCi0gICAgICAgICAgICBhc3NlcnRfdGhyb3dzKCdJbnZh
bGlkU3RhdGVFcnJvcicsCisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgnSW52YWxpZFN0
YXRlRXJyb3InLAogICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyBjdXJzb3IuY29udGludWUo
Myk7IH0sICd0aGlyZCBjb250aW51ZScpOwogCiAgICAgICAgICAgICBjb3VudCsrOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5n
L2lkYmN1cnNvcl9jb250aW51ZV9vYmplY3RzdG9yZTIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfY29udGludWVfb2Jq
ZWN0c3RvcmUyLmh0bWwKaW5kZXggNDRlNDM4ZmU5Nzg4NTJkMzUxNDFmYTM5NmZkYTA5OWYzMWM5
YjBkMC4uNWZhYjE4Y2U2NjEwMTZjNDZkOWZiM2QxMmY2ZmU2YWQxZjFjM2NlNyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lk
YmN1cnNvcl9jb250aW51ZV9vYmplY3RzdG9yZTIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2NvbnRpbnVlX29i
amVjdHN0b3JlMi5odG1sCkBAIC0yOSw3ICsyOSw3IEBACiAgICAgICAgICAgICB2YXIgY3Vyc29y
ID0gZS50YXJnZXQucmVzdWx0OwogCiAgICAgICAgICAgICBhc3NlcnRfdHJ1ZShjdXJzb3IgaW5z
dGFuY2VvZiBJREJDdXJzb3IsICJjdXJzb3IgZXhpc3RzIik7Ci0gICAgICAgICAgICBhc3NlcnRf
dGhyb3dzKCJEYXRhRXJyb3IiLAorICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkRhdGFF
cnJvciIsCiAgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7IGN1cnNvci5jb250aW51ZShkb2N1
bWVudCk7IH0pOwogCiAgICAgICAgICAgICB0LmRvbmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfY29u
dGludWVfb2JqZWN0c3RvcmUzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhl
ZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2NvbnRpbnVlX29iamVjdHN0b3JlMy5odG1s
CmluZGV4IGM4MDQyZTRhNGRmZjMwMDJiZjkxMmVlMzUwY2YxZTY2YTgyZTYwYTkuLjc0MGFiNWRj
NWE0NmNiMDMzODExZDQwZTQwNTVhOTEyOTJmY2NlNDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfY29udGlu
dWVfb2JqZWN0c3RvcmUzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4
ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9jb250aW51ZV9vYmplY3RzdG9yZTMuaHRt
bApAQCAtMjksNyArMjksNyBAQAogICAgICAgICAgICAgdmFyIGN1cnNvciA9IGUudGFyZ2V0LnJl
c3VsdDsKIAogICAgICAgICAgICAgYXNzZXJ0X3RydWUoY3Vyc29yIGluc3RhbmNlb2YgSURCQ3Vy
c29yLCAiY3Vyc29yIGV4aXN0Iik7Ci0gICAgICAgICAgICBhc3NlcnRfdGhyb3dzKCJEYXRhRXJy
b3IiLAorICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkRhdGFFcnJvciIsCiAgICAgICAg
ICAgICAgICAgZnVuY3Rpb24oKSB7IGN1cnNvci5jb250aW51ZShyZWNvcmRzWzBdLnBLZXkpOyB9
KTsKIAogICAgICAgICAgICAgdC5kb25lKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2NvbnRpbnVlX29i
amVjdHN0b3JlNC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2
YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9jb250aW51ZV9vYmplY3RzdG9yZTQuaHRtbAppbmRleCA2
MGQ5MWQ5YjEyMjYyZjE0M2ZiYWVjMzMyZGI2MjczMTI4NWIzZjBiLi5hYTBmZGIwNzI0YWQzODY3
ZmY2ZGU0YmRmYTJiYjIxYzI3MWU4ZTcxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2NvbnRpbnVlX29iamVj
dHN0b3JlNC5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJp
dmF0ZS1icm93c2luZy9pZGJjdXJzb3JfY29udGludWVfb2JqZWN0c3RvcmU0Lmh0bWwKQEAgLTQw
LDcgKzQwLDcgQEAKIAogICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgIGFzc2Vy
dF9lcXVhbHMoY3Vyc29yLnZhbHVlLnBLZXksIHJlY29yZHNbMV0ucEtleSwgInNlY29uZCBjdXJz
b3IgcGtleSIpOwotICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3MoIkRhdGFFcnJvciIsCisg
ICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkRhdGFFcnJvciIsCiAgICAgICAgICAg
ICAgICAgICAgIGZ1bmN0aW9uKCkgeyBjdXJzb3IuY29udGludWUocmVjb3Jkc1syXS5wS2V5KTsg
fSk7CiAgICAgICAgICAgICAgICAgdC5kb25lKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJv
d3NpbmcvaWRiY3Vyc29yX2NvbnRpbnVlX29iamVjdHN0b3JlNS5odG1sIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9jb250aW51
ZV9vYmplY3RzdG9yZTUuaHRtbAppbmRleCAwMjYzMTVjYmQwMzU3NmFjMmMyNWQyOGI1YTk5OWZl
N2ExMTU3MmM1Li5kNmY4ZjNkNjZmZDVjNTc0ZjA4MzE1ZmY2OTNiZWM2OTg1YzNlMjkyIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Np
bmcvaWRiY3Vyc29yX2NvbnRpbnVlX29iamVjdHN0b3JlNS5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfY29udGlu
dWVfb2JqZWN0c3RvcmU1Lmh0bWwKQEAgLTMxLDcgKzMxLDcgQEAKICAgICAgICAgICAgIGFzc2Vy
dF90cnVlKGN1cnNvciBpbnN0YW5jZW9mIElEQkN1cnNvciwgImN1cnNvciBleGlzdHMiKTsKIAog
ICAgICAgICAgICAgZS50YXJnZXQudHJhbnNhY3Rpb24uYWJvcnQoKTsKLSAgICAgICAgICAgIGFz
c2VydF90aHJvd3MoIlRyYW5zYWN0aW9uSW5hY3RpdmVFcnJvciIsIGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIlRyYW5zYWN0aW9uSW5hY3RpdmVFcnJvciIsIGZ1
bmN0aW9uKCkgewogICAgICAgICAgICAgICAgIGN1cnNvci5jb250aW51ZSgpOwogICAgICAgICAg
ICAgfSwgIkNhbGxpbmcgY29udGludWUoKSBzaG91bGQgdGhyb3dzIGFuIGV4Y2VwdGlvbiBUcmFu
c2FjdGlvbkluYWN0aXZlRXJyb3Igd2hlbiB0aGUgdHJhbnNhY3Rpb24gaXMgbm90IGFjdGl2ZS4i
KTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2
YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9jb250aW51ZV9vYmplY3RzdG9yZTYuaHRtbCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3Jf
Y29udGludWVfb2JqZWN0c3RvcmU2Lmh0bWwKaW5kZXggYjU2OTU1OWY4ZTk2OGVlMjkyZGE4ZmNj
NDE4Yjg3MGFhYTJhM2IyZC4uYmY0MzYzOGI5N2FkMGNlMDA3MTlmODBlZDU5MGVlM2VkYWE0Zjgx
OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRl
LWJyb3dzaW5nL2lkYmN1cnNvcl9jb250aW51ZV9vYmplY3RzdG9yZTYuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29y
X2NvbnRpbnVlX29iamVjdHN0b3JlNi5odG1sCkBAIC0yNyw3ICsyNyw3IEBACiAgICAgICAgICAg
ICBhc3NlcnRfdHJ1ZShjdXJzb3IgaW5zdGFuY2VvZiBJREJDdXJzb3IsICJjdXJzb3IgZXhpc3Rz
Iik7CiAKICAgICAgICAgICAgIGRiLmRlbGV0ZU9iamVjdFN0b3JlKCJ0ZXN0Iik7Ci0gICAgICAg
ICAgICBhc3NlcnRfdGhyb3dzKCJJbnZhbGlkU3RhdGVFcnJvciIsIGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkludmFsaWRTdGF0ZUVycm9yIiwgZnVuY3Rpb24o
KSB7CiAgICAgICAgICAgICAgICAgY3Vyc29yLmNvbnRpbnVlKCk7CiAgICAgICAgICAgICB9LCAi
SWYgdGhlIGN1cnNvcidzIHNvdXJjZSBvciBlZmZlY3RpdmUgb2JqZWN0IHN0b3JlIGhhcyBiZWVu
IGRlbGV0ZWQsIHRoZSBpbXBsZW1lbnRhdGlvbiBNVVNUIHRocm93IGEgRE9NRXhjZXB0aW9uIG9m
IHR5cGUgSW52YWxpZFN0YXRlRXJyb3IiKTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9kZWxldGVfaW5k
ZXgyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJv
d3NpbmcvaWRiY3Vyc29yX2RlbGV0ZV9pbmRleDIuaHRtbAppbmRleCAxMzNmOTEyNDQ4ODhmNGIw
OTZmNDYzYTA0ODQzM2M1NDg3NTMxMThjLi4xMGFkOGJiNWY1ZDRhYzQ5NDA4MWQ2Y2M1NGE5MDQx
OWY3ZDQyYTNhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERC
LXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2RlbGV0ZV9pbmRleDIuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29y
X2RlbGV0ZV9pbmRleDIuaHRtbApAQCAtMzIsNyArMzIsNyBAQAogICAgICAgICAgICAgdmFyIGN1
cnNvciA9IGUudGFyZ2V0LnJlc3VsdDsKIAogICAgICAgICAgICAgYXNzZXJ0X3RydWUoY3Vyc29y
IGluc3RhbmNlb2YgSURCQ3Vyc29yLCAiY3Vyc29yIGV4aXN0Iik7Ci0gICAgICAgICAgICBhc3Nl
cnRfdGhyb3dzKCdSZWFkT25seUVycm9yJywgZnVuY3Rpb24oKSB7IGN1cnNvci5kZWxldGUoKTsg
fSk7CisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgnUmVhZE9ubHlFcnJvcicsIGZ1bmN0
aW9uKCkgeyBjdXJzb3IuZGVsZXRlKCk7IH0pOwogICAgICAgICAgICAgdC5kb25lKCk7CiAgICAg
ICAgIH0pOwogICAgIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRl
eGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfZGVsZXRlX2luZGV4My5odG1sIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNv
cl9kZWxldGVfaW5kZXgzLmh0bWwKaW5kZXggYzFjMzA0NGIzZjVjMGJmY2Y1NWZjYzFiMDVjMTE0
OTJhYWVhNGFkZi4uN2E2ZWIyMjQyYjBiYWUwMTViYjQyZTdiNjY4YzMwMDM0NDQwYzU3OSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dz
aW5nL2lkYmN1cnNvcl9kZWxldGVfaW5kZXgzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9kZWxldGVfaW5kZXgz
Lmh0bWwKQEAgLTMwLDcgKzMwLDcgQEAKICAgICAgICAgfSk7CiAKICAgICAgICAgZS50YXJnZXQu
dHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IHQuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsKLSAgICAg
ICAgICAgIGFzc2VydF90aHJvd3MoJ1RyYW5zYWN0aW9uSW5hY3RpdmVFcnJvcicsIGZ1bmN0aW9u
KCkgeyB3aW5kb3cuY3Vyc29yLmRlbGV0ZSgpOyB9KQorICAgICAgICAgICAgYXNzZXJ0X3Rocm93
c19kb20oJ1RyYW5zYWN0aW9uSW5hY3RpdmVFcnJvcicsIGZ1bmN0aW9uKCkgeyB3aW5kb3cuY3Vy
c29yLmRlbGV0ZSgpOyB9KQogICAgICAgICAgICAgdC5kb25lKCk7CiAgICAgICAgIH0pOwogICAg
IH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0
ZS1icm93c2luZy9pZGJjdXJzb3JfZGVsZXRlX2luZGV4NC5odG1sIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9kZWxldGVfaW5k
ZXg0Lmh0bWwKaW5kZXggZmY2ZTU3Njc0MDlkN2Q2ZmNmN2JhOGI4ZjdlYzM5NTIzNjRiNDg4NC4u
MDA5Zjg0MDliNDU3YTJiNzlkZjhjYjI5MjA2MjdhYWFhYjVjN2MwMiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNv
cl9kZWxldGVfaW5kZXg0Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4
ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9kZWxldGVfaW5kZXg0Lmh0bWwKQEAgLTI3
LDcgKzI3LDcgQEAKICAgICAgICAgICAgIGFzc2VydF90cnVlKGN1cnNvciBpbnN0YW5jZW9mIElE
QkN1cnNvciwgImN1cnNvciBleGlzdCIpOwogCiAgICAgICAgICAgICBkYi5kZWxldGVPYmplY3RT
dG9yZSgic3RvcmUiKTsKLSAgICAgICAgICAgIGFzc2VydF90aHJvd3MoIkludmFsaWRTdGF0ZUVy
cm9yIiwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiSW52YWxp
ZFN0YXRlRXJyb3IiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICBjdXJzb3IuZGVsZXRl
KCk7CiAgICAgICAgICAgICB9LCAiSWYgdGhlIGN1cnNvcidzIHNvdXJjZSBvciBlZmZlY3RpdmUg
b2JqZWN0IHN0b3JlIGhhcyBiZWVuIGRlbGV0ZWQsIHRoZSBpbXBsZW1lbnRhdGlvbiBNVVNUIHRo
cm93IGEgRE9NRXhjZXB0aW9uIG9mIHR5cGUgSW52YWxpZFN0YXRlRXJyb3IiKTsKIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5n
L2lkYmN1cnNvcl9kZWxldGVfaW5kZXg1Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
SW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2RlbGV0ZV9pbmRleDUuaHRtbApp
bmRleCA0ZmMwZTI5NjdkNjJjMzcwZGNiNjRkYzA3NWRhOTFkYWQ1YWZiMTNhLi4zNjAwYTgyYWQ0
NTgyOTk5YjQyMDg3YWVjMzMyNDQ1MWEzZDQ2ZmJmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2RlbGV0ZV9p
bmRleDUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZh
dGUtYnJvd3NpbmcvaWRiY3Vyc29yX2RlbGV0ZV9pbmRleDUuaHRtbApAQCAtMjgsNyArMjgsNyBA
QAogICAgICAgICAgICAgYXNzZXJ0X3RydWUoY3Vyc29yIGluc3RhbmNlb2YgSURCQ3Vyc29yLCAi
Y3Vyc29yIGV4aXN0Iik7CiAKICAgICAgICAgICAgIGN1cnNvci5jb250aW51ZSgpOwotICAgICAg
ICAgICAgYXNzZXJ0X3Rocm93cygiSW52YWxpZFN0YXRlRXJyb3IiLCBmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlkU3RhdGVFcnJvciIsIGZ1bmN0aW9u
KCkgewogICAgICAgICAgICAgICAgIGN1cnNvci5kZWxldGUoKTsKICAgICAgICAgICAgIH0pOwog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUt
YnJvd3NpbmcvaWRiY3Vyc29yX2RlbGV0ZV9vYmplY3RzdG9yZTIuaHRtbCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfZGVsZXRl
X29iamVjdHN0b3JlMi5odG1sCmluZGV4IGNjNTdlOTlmNjk1ZDY5ZjY5YTQ0MjgyN2M2YzY1Nzhh
NmMyNTMzM2EuLjc3NTljNzJlOTE2OWJhOWI4Y2YzNDQ2ZjkxNjgwNTA3NzkxYzNjZDIgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2lu
Zy9pZGJjdXJzb3JfZGVsZXRlX29iamVjdHN0b3JlMi5odG1sCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfZGVsZXRlX29i
amVjdHN0b3JlMi5odG1sCkBAIC0zMCw3ICszMCw3IEBACiAgICAgICAgICAgICB2YXIgY3Vyc29y
ID0gZS50YXJnZXQucmVzdWx0OwogCiAgICAgICAgICAgICBhc3NlcnRfdHJ1ZShjdXJzb3IgIT0g
bnVsbCwgImN1cnNvciBleGlzdCIpOwotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygnUmVhZE9u
bHlFcnJvcicsIGZ1bmN0aW9uKCkgeyBjdXJzb3IuZGVsZXRlKCk7IH0pOworICAgICAgICAgICAg
YXNzZXJ0X3Rocm93c19kb20oJ1JlYWRPbmx5RXJyb3InLCBmdW5jdGlvbigpIHsgY3Vyc29yLmRl
bGV0ZSgpOyB9KTsKICAgICAgICAgICAgIHQuZG9uZSgpOwogICAgICAgICB9KTsKICAgICB9CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJv
d3NpbmcvaWRiY3Vyc29yX2RlbGV0ZV9vYmplY3RzdG9yZTMuaHRtbCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfZGVsZXRlX29i
amVjdHN0b3JlMy5odG1sCmluZGV4IGIyZmQ4MjAxYWRjMzAyODlmODYwODU2Y2U5ZWE1MzM4Yjcy
Y2QyZjkuLmY4MjViOGE0MTJlZGM4ZGZhMGU2ODczOTEwY2M4NmY0OGRhOGY3MzAgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9p
ZGJjdXJzb3JfZGVsZXRlX29iamVjdHN0b3JlMy5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfZGVsZXRlX29iamVj
dHN0b3JlMy5odG1sCkBAIC0yOSw3ICsyOSw3IEBACiAgICAgICAgIH0pOwogCiAgICAgICAgIGUu
dGFyZ2V0LnRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSB0LnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7
Ci0gICAgICAgICAgICBhc3NlcnRfdGhyb3dzKCdUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3InLCBm
dW5jdGlvbigpIHsgd2luZG93LmN1cnNvci5kZWxldGUoKTsgfSkKKyAgICAgICAgICAgIGFzc2Vy
dF90aHJvd3NfZG9tKCdUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3InLCBmdW5jdGlvbigpIHsgd2lu
ZG93LmN1cnNvci5kZWxldGUoKTsgfSkKICAgICAgICAgICAgIHQuZG9uZSgpOwogICAgICAgICB9
KTsKICAgICB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERC
LXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2RlbGV0ZV9vYmplY3RzdG9yZTQuaHRtbCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJz
b3JfZGVsZXRlX29iamVjdHN0b3JlNC5odG1sCmluZGV4IGI5Nzc1YzhmMTY2MzJhM2MzNmFhYjI2
YTE5YmE5N2RkNzYyMzQ3OWEuLjE3YjE4ZDBhZjUxNTliMmJlMWVlZmFjYWE3MzE2NTlhMDM1YTky
ODEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0
ZS1icm93c2luZy9pZGJjdXJzb3JfZGVsZXRlX29iamVjdHN0b3JlNC5odG1sCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3Jf
ZGVsZXRlX29iamVjdHN0b3JlNC5odG1sCkBAIC0yNiw3ICsyNiw3IEBACiAgICAgICAgICAgICBh
c3NlcnRfdHJ1ZShjdXJzb3IgaW5zdGFuY2VvZiBJREJDdXJzb3IsICJjdXJzb3IgZXhpc3QiKTsK
IAogICAgICAgICAgICAgZGIuZGVsZXRlT2JqZWN0U3RvcmUoInN0b3JlIik7Ci0gICAgICAgICAg
ICBhc3NlcnRfdGhyb3dzKCJJbnZhbGlkU3RhdGVFcnJvciIsIGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkludmFsaWRTdGF0ZUVycm9yIiwgZnVuY3Rpb24oKSB7
CiAgICAgICAgICAgICAgICAgY3Vyc29yLmRlbGV0ZSgpOwogICAgICAgICAgICAgfSwgIklmIHRo
ZSBjdXJzb3IncyBzb3VyY2Ugb3IgZWZmZWN0aXZlIG9iamVjdCBzdG9yZSBoYXMgYmVlbiBkZWxl
dGVkLCB0aGUgaW1wbGVtZW50YXRpb24gTVVTVCB0aHJvdyBhIERPTUV4Y2VwdGlvbiBvZiB0eXBl
IEludmFsaWRTdGF0ZUVycm9yIik7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfZGVsZXRlX29iamVjdHN0
b3JlNS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJy
b3dzaW5nL2lkYmN1cnNvcl9kZWxldGVfb2JqZWN0c3RvcmU1Lmh0bWwKaW5kZXggNzdmYTVmMjMz
Y2VlZmJlZDQ0YThjMTBlY2VmZThiMDA1ZTIxMTg5Zi4uZGQ4Mjg2ZjA4ZDM3YzQ4NTE2Yjc0YzQ2
NzdhMWQ4ZDQ5NmE3YzRjMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0lu
ZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9kZWxldGVfb2JqZWN0c3RvcmU1Lmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dz
aW5nL2lkYmN1cnNvcl9kZWxldGVfb2JqZWN0c3RvcmU1Lmh0bWwKQEAgLTMwLDcgKzMwLDcgQEAK
ICAgICAgICAgICAgIGFzc2VydF90cnVlKGN1cnNvciBpbnN0YW5jZW9mIElEQkN1cnNvciwgImN1
cnNvciBleGlzdCIpOwogCiAgICAgICAgICAgICBjdXJzb3IuY29udGludWUoKTsKLSAgICAgICAg
ICAgIGFzc2VydF90aHJvd3MoIkludmFsaWRTdGF0ZUVycm9yIiwgZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiSW52YWxpZFN0YXRlRXJyb3IiLCBmdW5jdGlvbigp
IHsKICAgICAgICAgICAgICAgICBjdXJzb3IuZGVsZXRlKCk7CiAgICAgICAgICAgICB9KTsKIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJy
b3dzaW5nL2lkYmN1cnNvcl91cGRhdGVfaW5kZXgyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX3VwZGF0ZV9pbmRleDIu
aHRtbAppbmRleCA3ZDAwMDFjYmI5MTg5N2I0NjFmYTQwYzRmZmM5ZjlhOWY1MzYyMjY3Li5hMmMy
MDY0Y2ZiMzc0NmIwZDFiOTM0MTk0MjhjOWZmMzBkMDExYjU1IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX3Vw
ZGF0ZV9pbmRleDIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERC
LXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX3VwZGF0ZV9pbmRleDIuaHRtbApAQCAtMzAsNyAr
MzAsNyBAQAogCiAgICAgICAgIGN1cnNvcl9ycS5vbnN1Y2Nlc3MgPSB0LnN0ZXBfZnVuYyhmdW5j
dGlvbihlKSB7CiAgICAgICAgICAgICB2YXIgY3Vyc29yID0gZS50YXJnZXQucmVzdWx0OwotICAg
ICAgICAgICAgYXNzZXJ0X3Rocm93cygnUmVhZE9ubHlFcnJvcicsIGZ1bmN0aW9uKCkgeyBjdXJz
b3IudXBkYXRlKGN1cnNvci52YWx1ZSk7IH0pOworICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19k
b20oJ1JlYWRPbmx5RXJyb3InLCBmdW5jdGlvbigpIHsgY3Vyc29yLnVwZGF0ZShjdXJzb3IudmFs
dWUpOyB9KTsKICAgICAgICAgICAgIHQuZG9uZSgpOwogICAgICAgICB9KTsKICAgICB9CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Np
bmcvaWRiY3Vyc29yX3VwZGF0ZV9pbmRleDMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfdXBkYXRlX2luZGV4My5odG1s
CmluZGV4IDBkZTY2Y2JjNmMzMDdkZjNmNzFkODdlMzM0YjBlNDI2MGRhMDcxNzguLjU0ZmQyMjg3
YmE2Y2I4MjkzZGVmNDgyNWQ1YTdiNzRhZjgxNjNkOGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfdXBkYXRl
X2luZGV4My5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJp
dmF0ZS1icm93c2luZy9pZGJjdXJzb3JfdXBkYXRlX2luZGV4My5odG1sCkBAIC0zMSw3ICszMSw3
IEBACiAgICAgICAgIH0pOwogCiAgICAgICAgIGUudGFyZ2V0LnRyYW5zYWN0aW9uLm9uY29tcGxl
dGUgPSB0LnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICBhc3NlcnRfdGhyb3dz
KCdUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3InLCBmdW5jdGlvbigpIHsgd2luZG93LmN1cnNvci51
cGRhdGUod2luZG93LnJlY29yZCk7IH0pCisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgn
VHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yJywgZnVuY3Rpb24oKSB7IHdpbmRvdy5jdXJzb3IudXBk
YXRlKHdpbmRvdy5yZWNvcmQpOyB9KQogICAgICAgICAgICAgdC5kb25lKCk7CiAgICAgICAgIH0p
OwogICAgIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREIt
cHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfdXBkYXRlX2luZGV4NC5odG1sIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl91cGRh
dGVfaW5kZXg0Lmh0bWwKaW5kZXggMmFkMjk0NThjZDc4OTdmZDRhZGQ4Y2M1YjQzZGZiYzk3Yjc4
N2VkZi4uZDFmMTdkMmM4MzcxNjA3YWE4OGExNTgyZjZhYzc5OWEwZjIyMjEyMiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lk
YmN1cnNvcl91cGRhdGVfaW5kZXg0Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl91cGRhdGVfaW5kZXg0Lmh0bWwK
QEAgLTI4LDcgKzI4LDcgQEAKIAogICAgICAgICAgICAgZGIuZGVsZXRlT2JqZWN0U3RvcmUoInN0
b3JlIik7CiAgICAgICAgICAgICBjdXJzb3IudmFsdWUuaUtleSArPSAiX3VwZGF0ZWQiOwotICAg
ICAgICAgICAgYXNzZXJ0X3Rocm93cygiSW52YWxpZFN0YXRlRXJyb3IiLCBmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlkU3RhdGVFcnJvciIsIGZ1bmN0
aW9uKCkgewogICAgICAgICAgICAgICAgIGN1cnNvci51cGRhdGUoY3Vyc29yLnZhbHVlKTsKICAg
ICAgICAgICAgIH0sICJJZiB0aGUgY3Vyc29yJ3Mgc291cmNlIG9yIGVmZmVjdGl2ZSBvYmplY3Qg
c3RvcmUgaGFzIGJlZW4gZGVsZXRlZCwgdGhlIGltcGxlbWVudGF0aW9uIE1VU1QgdGhyb3cgYSBE
T01FeGNlcHRpb24gb2YgdHlwZSBJbnZhbGlkU3RhdGVFcnJvciIpOwogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vy
c29yX3VwZGF0ZV9pbmRleDUuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVk
REItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfdXBkYXRlX2luZGV4NS5odG1sCmluZGV4IGM4
MjUzZTU0YjExMDc1ZjcyNTQ2MTE3NDVkZGE3ZDRlMjZhZTA5NjEuLmZkNGYyOGZjNjc3M2I2MjIw
YTI4NzYwOWQwYjM4Njk3YmNmZGIyOTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfdXBkYXRlX2luZGV4NS5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93
c2luZy9pZGJjdXJzb3JfdXBkYXRlX2luZGV4NS5odG1sCkBAIC0zNSw3ICszNSw3IEBACiAKICAg
ICAgICAgICAgIHZhciByZWNvcmQgPSBjdXJzb3IudmFsdWU7CiAgICAgICAgICAgICByZWNvcmQu
ZGF0YSA9IGRvY3VtZW50OwotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygnRGF0YUNsb25lRXJy
b3InLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCdEYXRhQ2xv
bmVFcnJvcicsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgIGN1cnNvci51cGRhdGUocmVj
b3JkKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgdC5kb25lKCk7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRi
Y3Vyc29yX3VwZGF0ZV9pbmRleDYuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRl
eGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfdXBkYXRlX2luZGV4Ni5odG1sCmluZGV4
IGUyMjhkNzliM2Y1OWQ5ZjZlNDQ5YTY4ODU2ZTdkYzMxMThlZDBlMTUuLmVkNzI5OGEzYmNlNDJl
MzkzMDVmZTQwNmYzOTkzMDRkYTJmMThmNTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfdXBkYXRlX2luZGV4
Ni5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1i
cm93c2luZy9pZGJjdXJzb3JfdXBkYXRlX2luZGV4Ni5odG1sCkBAIC0zMyw3ICszMyw3IEBACiAg
ICAgICAgICAgICB2YXIgY3Vyc29yID0gZS50YXJnZXQucmVzdWx0OwogICAgICAgICAgICAgYXNz
ZXJ0X3RydWUoY3Vyc29yIGluc3RhbmNlb2YgSURCQ3Vyc29yKTsKIAotICAgICAgICAgICAgYXNz
ZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgeyBjdXJzb3IudXBkYXRlKCk7
IH0pOworICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkg
eyBjdXJzb3IudXBkYXRlKCk7IH0pOwogICAgICAgICAgICAgdC5kb25lKCk7CiAgICAgICAgIH0p
OwogICAgIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREIt
cHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfdXBkYXRlX2luZGV4Ny5odG1sIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl91cGRh
dGVfaW5kZXg3Lmh0bWwKaW5kZXggNzI3MGViZWVjODdmOTIyYzg1NDEyNzU4MjAzZDEzNDc5Y2Vh
ZDg1OS4uNDdhZjlkZDEwMWQyN2I2ZjBhZTYyMTEyNzc2ZGEyZjZiYjk0YmNmYiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lk
YmN1cnNvcl91cGRhdGVfaW5kZXg3Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl91cGRhdGVfaW5kZXg3Lmh0bWwK
QEAgLTMzLDcgKzMzLDcgQEAKICAgICAgICAgICAgIHZhciBjdXJzb3IgPSBlLnRhcmdldC5yZXN1
bHQ7CiAgICAgICAgICAgICBhc3NlcnRfdHJ1ZShjdXJzb3IgaW5zdGFuY2VvZiBJREJDdXJzb3Ip
OwogCi0gICAgICAgICAgICBhc3NlcnRfdGhyb3dzKCdEYXRhRXJyb3InLCBmdW5jdGlvbigpIHsg
Y3Vyc29yLnVwZGF0ZShudWxsKTsgfSk7CisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgn
RGF0YUVycm9yJywgZnVuY3Rpb24oKSB7IGN1cnNvci51cGRhdGUobnVsbCk7IH0pOwogICAgICAg
ICAgICAgdC5kb25lKCk7CiAgICAgICAgIH0pOwogICAgIH0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfdXBk
YXRlX29iamVjdHN0b3JlMi5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWRE
Qi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl91cGRhdGVfb2JqZWN0c3RvcmUyLmh0bWwKaW5k
ZXggNmVhOTM1OGE3NTk2NjRlMjY4NmM5NWQxMjg5NjUzMTVhZTIzZDUwMi4uODU2Y2I1MGQ1NGM4
NWQ0NjZiNTBmNWZhODAwZTQyYWFkZWI3N2YzYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl91cGRhdGVfb2Jq
ZWN0c3RvcmUyLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1w
cml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl91cGRhdGVfb2JqZWN0c3RvcmUyLmh0bWwKQEAgLTI4
LDcgKzI4LDcgQEAKIAogICAgICAgICBjdXJzb3JfcnEub25zdWNjZXNzID0gdC5zdGVwX2Z1bmMo
ZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgdmFyIGN1cnNvciA9IGUudGFyZ2V0LnJlc3VsdDsK
LSAgICAgICAgICAgIGFzc2VydF90aHJvd3MoJ1JlYWRPbmx5RXJyb3InLCBmdW5jdGlvbigpIHsg
Y3Vyc29yLnVwZGF0ZShjdXJzb3IudmFsdWUpOyB9KTsKKyAgICAgICAgICAgIGFzc2VydF90aHJv
d3NfZG9tKCdSZWFkT25seUVycm9yJywgZnVuY3Rpb24oKSB7IGN1cnNvci51cGRhdGUoY3Vyc29y
LnZhbHVlKTsgfSk7CiAgICAgICAgICAgICB0LmRvbmUoKTsKICAgICAgICAgfSk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJy
b3dzaW5nL2lkYmN1cnNvcl91cGRhdGVfb2JqZWN0c3RvcmUzLmh0bWwgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX3VwZGF0ZV9v
YmplY3RzdG9yZTMuaHRtbAppbmRleCBkMjg1ZDc0NDAxM2YyM2M0MDM5NmE1YTA1Zjg0OThkYjlk
MDAxOGRkLi40N2ZhMGI3YWE1MGU2NDkxMzIwYTcwMDk5NTU5YzhiNGFiMGNiZDI5IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Npbmcv
aWRiY3Vyc29yX3VwZGF0ZV9vYmplY3RzdG9yZTMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX3VwZGF0ZV9vYmpl
Y3RzdG9yZTMuaHRtbApAQCAtMzAsNyArMzAsNyBAQAogICAgICAgICB9KTsKIAogICAgICAgICBl
LnRhcmdldC50cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gdC5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkg
ewotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygnVHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yJywg
ZnVuY3Rpb24oKSB7IHdpbmRvdy5jdXJzb3IudXBkYXRlKHdpbmRvdy5yZWNvcmQpOyB9KQorICAg
ICAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oJ1RyYW5zYWN0aW9uSW5hY3RpdmVFcnJvcicsIGZ1
bmN0aW9uKCkgeyB3aW5kb3cuY3Vyc29yLnVwZGF0ZSh3aW5kb3cucmVjb3JkKTsgfSkKICAgICAg
ICAgICAgIHQuZG9uZSgpOwogICAgICAgICB9KTsKICAgICB9CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX3Vw
ZGF0ZV9vYmplY3RzdG9yZTUuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVk
REItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfdXBkYXRlX29iamVjdHN0b3JlNS5odG1sCmlu
ZGV4IDM5NjRkYjk3ODA5MmRjN2ZlY2M5OGM3OWZiOTBhNjk5OGJmOWU0NDEuLmQ2OTVmZjFkYzMy
ZmE3MzhhZDY2MmY4NTc3ZTJkMGM2MDQ1NmUwOTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfdXBkYXRlX29i
amVjdHN0b3JlNS5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREIt
cHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfdXBkYXRlX29iamVjdHN0b3JlNS5odG1sCkBAIC0y
OSw3ICsyOSw3IEBACiAKICAgICAgICAgICAgIGRiLmRlbGV0ZU9iamVjdFN0b3JlKCJ0ZXN0Iik7
CiAgICAgICAgICAgICBjdXJzb3IudmFsdWUgKz0gIl91cGRhdGVkIjsKLSAgICAgICAgICAgIGFz
c2VydF90aHJvd3MoIkludmFsaWRTdGF0ZUVycm9yIiwgZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICBhc3NlcnRfdGhyb3dzX2RvbSgiSW52YWxpZFN0YXRlRXJyb3IiLCBmdW5jdGlvbigpIHsKICAg
ICAgICAgICAgICAgICBjdXJzb3IudXBkYXRlKGN1cnNvci52YWx1ZSk7CiAgICAgICAgICAgICB9
LCAiSWYgdGhlIGN1cnNvcidzIHNvdXJjZSBvciBlZmZlY3RpdmUgb2JqZWN0IHN0b3JlIGhhcyBi
ZWVuIGRlbGV0ZWQsIHRoZSBpbXBsZW1lbnRhdGlvbiBNVVNUIHRocm93IGEgRE9NRXhjZXB0aW9u
IG9mIHR5cGUgSW52YWxpZFN0YXRlRXJyb3IiKTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl91cGRhdGVf
b2JqZWN0c3RvcmU2Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXBy
aXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX3VwZGF0ZV9vYmplY3RzdG9yZTYuaHRtbAppbmRleCBk
NDgyMzRjMjg4NjY4YzUyNTcwZGNiZjkyNDRmYzcyNjgwYzYyOGJiLi43YmQ0NzZlOTI3ODY3YmQx
ZmFlZjI0YWIxM2M4OTE2NTQxMmNhNWU5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX3VwZGF0ZV9vYmplY3Rz
dG9yZTYuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZh
dGUtYnJvd3NpbmcvaWRiY3Vyc29yX3VwZGF0ZV9vYmplY3RzdG9yZTYuaHRtbApAQCAtMzMsNyAr
MzMsNyBAQAogCiAgICAgICAgICAgICB2YXIgcmVjb3JkID0gY3Vyc29yLnZhbHVlOwogICAgICAg
ICAgICAgcmVjb3JkLmRhdGEgPSBkb2N1bWVudDsKLSAgICAgICAgICAgIGFzc2VydF90aHJvd3Mo
J0RhdGFDbG9uZUVycm9yJywgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhc3NlcnRfdGhyb3dz
X2RvbSgnRGF0YUNsb25lRXJyb3InLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICBjdXJz
b3IudXBkYXRlKHJlY29yZCk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIHQuZG9uZSgp
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRl
LWJyb3dzaW5nL2lkYmN1cnNvcl91cGRhdGVfb2JqZWN0c3RvcmU3Lmh0bWwgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX3VwZGF0
ZV9vYmplY3RzdG9yZTcuaHRtbAppbmRleCBkYjk4MDYzZTA5OTdiNGMyMzY3YjIzZDRiYzJkYWU5
Y2YxMjU1N2M4Li40YTAwM2NhYjUyODU4YzFkNTVhMWZhMmVhZDE4N2ZmNzM3ZDQ4M2Q4IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Np
bmcvaWRiY3Vyc29yX3VwZGF0ZV9vYmplY3RzdG9yZTcuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX3VwZGF0ZV9v
YmplY3RzdG9yZTcuaHRtbApAQCAtMzEsNyArMzEsNyBAQAogICAgICAgICAgICAgdmFyIGN1cnNv
ciA9IGUudGFyZ2V0LnJlc3VsdDsKICAgICAgICAgICAgIGFzc2VydF90cnVlKGN1cnNvciBpbnN0
YW5jZW9mIElEQkN1cnNvcik7CiAKLSAgICAgICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVF
cnJvcigpLCBmdW5jdGlvbigpIHsgY3Vyc29yLnVwZGF0ZSgpOyB9KTsKKyAgICAgICAgICAgIGFz
c2VydF90aHJvd3NfanMoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsgY3Vyc29yLnVwZGF0ZSgpOyB9
KTsKICAgICAgICAgICAgIHQuZG9uZSgpOwogICAgICAgICB9KTsKICAgICB9CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRi
Y3Vyc29yX3VwZGF0ZV9vYmplY3RzdG9yZTguaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfdXBkYXRlX29iamVjdHN0b3Jl
OC5odG1sCmluZGV4IDk0OGM1NDkxNjliMDUyODI1ZThlZTZjNjYzMTY5Zjk5NDkwZWNmMDEuLmRh
MzZkZGU4OTJiZmMyZWQ3NjdhMDg4NzIxODM4YzY4YjI2MWEzM2EgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3Jf
dXBkYXRlX29iamVjdHN0b3JlOC5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9J
bmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfdXBkYXRlX29iamVjdHN0b3JlOC5o
dG1sCkBAIC0zMSw3ICszMSw3IEBACiAgICAgICAgICAgICB2YXIgY3Vyc29yID0gZS50YXJnZXQu
cmVzdWx0OwogICAgICAgICAgICAgYXNzZXJ0X3RydWUoY3Vyc29yIGluc3RhbmNlb2YgSURCQ3Vy
c29yKTsKIAotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygnRGF0YUVycm9yJywgZnVuY3Rpb24o
KSB7IGN1cnNvci51cGRhdGUobnVsbCk7IH0pOworICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19k
b20oJ0RhdGFFcnJvcicsIGZ1bmN0aW9uKCkgeyBjdXJzb3IudXBkYXRlKG51bGwpOyB9KTsKICAg
ICAgICAgICAgIHQuZG9uZSgpOwogICAgICAgICB9KTsKICAgICB9CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiZGF0YWJh
c2VfY3JlYXRlT2JqZWN0U3RvcmUxMS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0lu
ZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmRhdGFiYXNlX2NyZWF0ZU9iamVjdFN0b3JlMTEu
aHRtbAppbmRleCBiMmUyMzNhNmU2NmUxNzgwMTU5ODZiMzZkMjk1N2UxMzBlNTFjZjU1Li4xNzA3
ZjgxNjY3ZGJmMDMwMzU5N2MwZWU3N2Y2MDY4MTI1MjE2ZWEzIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiZGF0YWJhc2Vf
Y3JlYXRlT2JqZWN0U3RvcmUxMS5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9J
bmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJkYXRhYmFzZV9jcmVhdGVPYmplY3RTdG9yZTEx
Lmh0bWwKQEAgLTE0LDcgKzE0LDcgQEAgdmFyIHQgPSBhc3luY190ZXN0KCksCiBvcGVuX3JxLm9u
dXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uIChlKSB7CiAgICAgdmFyIGRiID0gZS50YXJnZXQucmVz
dWx0OwogICAgIGRiLmNyZWF0ZU9iamVjdFN0b3JlKCJzdG9yZSIpOwotICAgIGFzc2VydF90aHJv
d3MoIkNvbnN0cmFpbnRFcnJvciIsIGZ1bmN0aW9uKCl7CisgICAgYXNzZXJ0X3Rocm93c19kb20o
IkNvbnN0cmFpbnRFcnJvciIsIGZ1bmN0aW9uKCl7CiAgICAgICAgIGRiLmNyZWF0ZU9iamVjdFN0
b3JlKCJzdG9yZSIsIHsKICAgICAgICAgICAgIGtleVBhdGg6ICJrZXkxIiwKICAgICAgICAgfSk7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUt
YnJvd3NpbmcvaWRiZGF0YWJhc2VfY3JlYXRlT2JqZWN0U3RvcmUzLmh0bWwgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiZGF0YWJhc2VfY3Jl
YXRlT2JqZWN0U3RvcmUzLmh0bWwKaW5kZXggYWQxMGU5MGQ4YjllYjkyNGUwNDU1NjMwNzU3ZDNk
MWQwOTI3ZDIyZC4uODY2NTA5NDI2YmJlZWViZDA4MzY2ODQ5MDgwNTIyMjRiZGFhODVmYiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dz
aW5nL2lkYmRhdGFiYXNlX2NyZWF0ZU9iamVjdFN0b3JlMy5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJkYXRhYmFzZV9jcmVh
dGVPYmplY3RTdG9yZTMuaHRtbApAQCAtMTMsNyArMTMsNyBAQCB2YXIgdCA9IGFzeW5jX3Rlc3Qo
KSwKIG9wZW5fcnEub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oKSB7fQogb3Blbl9ycS5vbnN1
Y2Nlc3MgPSBmdW5jdGlvbiAoZSkgewogICAgIHZhciBkYiA9IGUudGFyZ2V0LnJlc3VsdAotICAg
IGFzc2VydF90aHJvd3MoCisgICAgYXNzZXJ0X3Rocm93c19kb20oCiAgICAgICAgICdJbnZhbGlk
U3RhdGVFcnJvcicsCiAgICAgICAgIGZ1bmN0aW9uKCkgeyBkYi5jcmVhdGVPYmplY3RTdG9yZSgn
ZmFpbHMnKSB9KQogICAgIHQuZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmRhdGFiYXNlX2NyZWF0ZU9iamVj
dFN0b3JlNC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRl
LWJyb3dzaW5nL2lkYmRhdGFiYXNlX2NyZWF0ZU9iamVjdFN0b3JlNC5odG1sCmluZGV4IGJiYzdm
ZmVmNWMwMmQ2MmU5MWZjNzA1ZDRhMWU5YjFhNWQ1MzdmMWUuLjRjZDY5OTk3YjUwYTQ5Y2IwMGEy
YzhkODAxYjljNzQxMjRkM2EwYjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJkYXRhYmFzZV9jcmVhdGVPYmplY3RTdG9y
ZTQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUt
YnJvd3NpbmcvaWRiZGF0YWJhc2VfY3JlYXRlT2JqZWN0U3RvcmU0Lmh0bWwKQEAgLTEzLDcgKzEz
LDcgQEAgdmFyIHQgPSBhc3luY190ZXN0KCksCiBvcGVuX3JxLm9udXBncmFkZW5lZWRlZCA9IGZ1
bmN0aW9uKGUpIHsKICAgICB2YXIgZGIgPSBlLnRhcmdldC5yZXN1bHQKICAgICBkYi5jcmVhdGVP
YmplY3RTdG9yZSgiZHVwZSIpCi0gICAgYXNzZXJ0X3Rocm93cygKKyAgICBhc3NlcnRfdGhyb3dz
X2RvbSgKICAgICAgICAgJ0NvbnN0cmFpbnRFcnJvcicsCiAgICAgICAgIGZ1bmN0aW9uKCkgeyBk
Yi5jcmVhdGVPYmplY3RTdG9yZSgiZHVwZSIpIH0pCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJkYXRhYmFzZV9jcmVh
dGVPYmplY3RTdG9yZTYuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREIt
cHJpdmF0ZS1icm93c2luZy9pZGJkYXRhYmFzZV9jcmVhdGVPYmplY3RTdG9yZTYuaHRtbAppbmRl
eCAxZTNmNDAwODk4MTkzZjJkNDU1N2M0N2Y5ZDUwZGRiODk0ZTQ4ZWZkLi42NGNmMTk3NzAwMzdj
NWM1MjUzNTg1ZjkyYzVlYTE5MGJjZGY5OWU4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiZGF0YWJhc2VfY3JlYXRlT2Jq
ZWN0U3RvcmU2Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1w
cml2YXRlLWJyb3dzaW5nL2lkYmRhdGFiYXNlX2NyZWF0ZU9iamVjdFN0b3JlNi5odG1sCkBAIC0x
MywxMSArMTMsMTEgQEAgdmFyIHQgPSBhc3luY190ZXN0KCksCiBvcGVuX3JxLm9udXBncmFkZW5l
ZWRlZCA9IGZ1bmN0aW9uKGUpIHsKICAgICB2YXIgZGIgPSBlLnRhcmdldC5yZXN1bHQKIAotICAg
IGFzc2VydF90aHJvd3MoJ1N5bnRheEVycm9yJywgZnVuY3Rpb24oKSB7CisgICAgYXNzZXJ0X3Ro
cm93c19kb20oJ1N5bnRheEVycm9yJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICBkYi5jcmVh
dGVPYmplY3RTdG9yZSgiaW52YWxpZGtleXBhdGgiLCB7IGtleVBhdGg6ICJJbnZhbGlkIEtleXBh
dGgiIH0pCiAgICAgICAgIH0pCiAKLSAgICBhc3NlcnRfdGhyb3dzKCdTeW50YXhFcnJvcicsIGZ1
bmN0aW9uKCkgeworICAgIGFzc2VydF90aHJvd3NfZG9tKCdTeW50YXhFcnJvcicsIGZ1bmN0aW9u
KCkgewogICAgICAgICAgICAgZGIuY3JlYXRlT2JqZWN0U3RvcmUoImludmFsaWRrZXlwYXRoIiwg
eyBhdXRvSW5jcmVtZW50OiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBrZXlQYXRoOiAiSW52YWxpZCBLZXlwYXRoIiB9KQogICAgICAg
ICB9KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2
YXRlLWJyb3dzaW5nL2lkYmRhdGFiYXNlX2NyZWF0ZU9iamVjdFN0b3JlOS1pbnZhbGlkcGFyYW1l
dGVycy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJy
b3dzaW5nL2lkYmRhdGFiYXNlX2NyZWF0ZU9iamVjdFN0b3JlOS1pbnZhbGlkcGFyYW1ldGVycy5o
dG1sCmluZGV4IGI2N2YxZWYxYmM3YTg1YmE3MDI2ZmM3YWI4Y2NkYzdiN2IyMDFmM2UuLjA0YjU5
ZmZlNTcyMmM5MTZhOWM5NzY2MTM3NjEyNjY0YmRjOWFiYjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJkYXRhYmFzZV9j
cmVhdGVPYmplY3RTdG9yZTktaW52YWxpZHBhcmFtZXRlcnMuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiZGF0YWJhc2VfY3Jl
YXRlT2JqZWN0U3RvcmU5LWludmFsaWRwYXJhbWV0ZXJzLmh0bWwKQEAgLTExLDcgKzExLDcgQEAK
ICAgICAgICAgdmFyIHQgPSBhc3luY190ZXN0KGRvY3VtZW50LnRpdGxlICsgIiAtICIgKyBkZXNj
KTsKIAogICAgICAgICBjcmVhdGVkYih0KS5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihlKSB7
Ci0gICAgICAgICAgICBhc3NlcnRfdGhyb3dzKGV4Y2VwdGlvbiwgZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbShleGNlcHRpb24sIGZ1bmN0aW9uKCkgewogICAgICAg
ICAgICAgICAgIGUudGFyZ2V0LnJlc3VsdC5jcmVhdGVPYmplY3RTdG9yZSgic3RvcmUiLCBwYXJh
bXMpOwogICAgICAgICAgICAgfSk7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJkYXRhYmFzZV9kZWxldGVPYmplY3RT
dG9yZTIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1i
cm93c2luZy9pZGJkYXRhYmFzZV9kZWxldGVPYmplY3RTdG9yZTIuaHRtbAppbmRleCBlNGE4N2Vj
YjlkMGU5MWI2MzViNGU2YzA2ODM5ZTA1MTliZmUwYWM1Li44YzBmZmQ4NTQwYTBlZTNhNzZjMmRm
YzJiMjQ0Y2Q1YzczZGFmODllIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
SW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiZGF0YWJhc2VfZGVsZXRlT2JqZWN0U3RvcmUy
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJy
b3dzaW5nL2lkYmRhdGFiYXNlX2RlbGV0ZU9iamVjdFN0b3JlMi5odG1sCkBAIC0xNyw3ICsxNyw3
IEBAIG9wZW5fcnEub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZSkKIAogICAgIGUudGFyZ2V0
LnRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSB0LnN0ZXBfZnVuYyhmdW5jdGlvbiAoZSkKICAgICB7
Ci0gICAgICAgIGFzc2VydF90aHJvd3MoJ0ludmFsaWRTdGF0ZUVycm9yJywKKyAgICAgICAgYXNz
ZXJ0X3Rocm93c19kb20oJ0ludmFsaWRTdGF0ZUVycm9yJywKICAgICAgICAgICAgIGZ1bmN0aW9u
KCkgeyBkYi5kZWxldGVPYmplY3RTdG9yZSgiZGVsZXRlX291dHNpZGUiKTsgfSk7CiAgICAgICAg
IHQuZG9uZSgpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmRhdGFiYXNlX2RlbGV0ZU9iamVjdFN0b3Jl
My5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dz
aW5nL2lkYmRhdGFiYXNlX2RlbGV0ZU9iamVjdFN0b3JlMy5odG1sCmluZGV4IDA0OTdjMTY5ZTU5
YWYxMzIxNGE3MDY5ZWNkZmY2OTA1YmI5MzI5NTQuLjhjNjcwOGMxM2UyYmJiYzBiNWQ5ZmEwYTAx
OTdlZjQ3NzJjMDY4ZmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRl
eGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJkYXRhYmFzZV9kZWxldGVPYmplY3RTdG9yZTMuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Np
bmcvaWRiZGF0YWJhc2VfZGVsZXRlT2JqZWN0U3RvcmUzLmh0bWwKQEAgLTEzLDcgKzEzLDcgQEAg
dmFyIHQgPSBhc3luY190ZXN0KCksCiBvcGVuX3JxLm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9u
KGUpCiB7CiAgICAgdmFyIGRiID0gZS50YXJnZXQucmVzdWx0OwotICAgIGFzc2VydF90aHJvd3Mo
J05vdEZvdW5kRXJyb3InLAorICAgIGFzc2VydF90aHJvd3NfZG9tKCdOb3RGb3VuZEVycm9yJywK
ICAgICAgICAgZnVuY3Rpb24oKSB7IGRiLmRlbGV0ZU9iamVjdFN0b3JlKCd3aGF0ZXZlcicpOyB9
KTsKICAgICB0LmRvbmUoKTsKIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJkYXRhYmFzZV9kZWxldGVPYmplY3RTdG9y
ZTQtbm90X3JldXNlZC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1w
cml2YXRlLWJyb3dzaW5nL2lkYmRhdGFiYXNlX2RlbGV0ZU9iamVjdFN0b3JlNC1ub3RfcmV1c2Vk
Lmh0bWwKaW5kZXggM2RhNzg5YTY0ZmE2MzAxMGE0NDVmMDEzZjZmYmY1MWUxNjJhNzU0Yy4uODEy
ODg4ZTlmNTkwNGY5OGQyNzI0OGU1NDZjOGRjZjg0Y2NjNWI1NiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmRhdGFiYXNl
X2RlbGV0ZU9iamVjdFN0b3JlNC1ub3RfcmV1c2VkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmRhdGFiYXNlX2RlbGV0ZU9i
amVjdFN0b3JlNC1ub3RfcmV1c2VkLmh0bWwKQEAgLTI5LDcgKzI5LDcgQEAgb3Blbl9ycS5vbnVw
Z3JhZGVuZWVkZWQgPSBmdW5jdGlvbihlKSB7CiAgICAgYXNzZXJ0X2ZhbHNlKG9ialN0b3JlMi5p
bmRleE5hbWVzLmNvbnRhaW5zKCJpZHgiKSwgImluZGV4IGV4aXN0IG9uIG5ldyBvYmpzdG9yZSIp
OwogICAgIGFzc2VydF9lcXVhbHMob2JqU3RvcmUyLmtleVBhdGgsIG51bGwsICJrZXlQYXRoIik7
CiAKLSAgICBhc3NlcnRfdGhyb3dzKCJOb3RGb3VuZEVycm9yIiwgZnVuY3Rpb24oKSB7IG9ialN0
b3JlMi5pbmRleCgiaWR4Iik7IH0pOworICAgIGFzc2VydF90aHJvd3NfZG9tKCJOb3RGb3VuZEVy
cm9yIiwgZnVuY3Rpb24oKSB7IG9ialN0b3JlMi5pbmRleCgiaWR4Iik7IH0pOwogfQogCiBvcGVu
X3JxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGUpIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJkYXRhYmFzZV90cmFuc2Fj
dGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJy
b3dzaW5nL2lkYmRhdGFiYXNlX3RyYW5zYWN0aW9uLmh0bWwKaW5kZXggYzhjMmM5ZjU5NGI0MzI0
ZDYxZWY0MTIwYjQ2MzQ5NTc1NDAzNDRiMS4uNTBiMDE1ZmI3MzJlOTU4M2ViZTFmNmMxZjJiOGU4
ZTQ1MDQ3YTM0OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWRE
Qi1wcml2YXRlLWJyb3dzaW5nL2lkYmRhdGFiYXNlX3RyYW5zYWN0aW9uLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmRhdGFi
YXNlX3RyYW5zYWN0aW9uLmh0bWwKQEAgLTE1LDcgKzE1LDcgQEAgb3Blbl9ycS5vbnVwZ3JhZGVu
ZWVkZWQgPSBmdW5jdGlvbigpIHt9Owogb3Blbl9ycS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihlKSB7
CiAgICAgZGIgPSBlLnRhcmdldC5yZXN1bHQ7CiAKLSAgICBhc3NlcnRfdGhyb3dzKCdOb3RGb3Vu
ZEVycm9yJywgZnVuY3Rpb24oKSB7IGRiLnRyYW5zYWN0aW9uKCdub24tZXhpc3RpbmcnKTsgfSk7
CisgICAgYXNzZXJ0X3Rocm93c19kb20oJ05vdEZvdW5kRXJyb3InLCBmdW5jdGlvbigpIHsgZGIu
dHJhbnNhY3Rpb24oJ25vbi1leGlzdGluZycpOyB9KTsKICAgICB0LmRvbmUoKTsKIH07CiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93
c2luZy9pZGJkYXRhYmFzZV90cmFuc2FjdGlvbjMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJkYXRhYmFzZV90cmFuc2FjdGlvbjMu
aHRtbAppbmRleCAxMDg3YWVjYzhkZWVhMDhmMjdmM2FjNTliNmU0ZDU0ZTAwY2YwMzBkLi41YTRl
NzNjZDNjYThjM2YyNmJjNTRiM2ZjNDIxMTQ5YzQ3Y2EwZmNhIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiZGF0YWJhc2Vf
dHJhbnNhY3Rpb24zLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWRE
Qi1wcml2YXRlLWJyb3dzaW5nL2lkYmRhdGFiYXNlX3RyYW5zYWN0aW9uMy5odG1sCkBAIC0xOCw3
ICsxOCw3IEBACiAgICAgb3Blbl9ycS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihlKSB7CiAgICAgICAg
IGRiLmNsb3NlKCk7CiAKLSAgICAgICAgYXNzZXJ0X3Rocm93cygnSW52YWxpZFN0YXRlRXJyb3In
LAorICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgnSW52YWxpZFN0YXRlRXJyb3InLAogICAgICAg
ICAgICAgZnVuY3Rpb24oKSB7IGRiLnRyYW5zYWN0aW9uKCd0ZXN0Jyk7IH0pOwogCiAgICAgICAg
IHQuZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWRE
Qi1wcml2YXRlLWJyb3dzaW5nL2lkYmRhdGFiYXNlX3RyYW5zYWN0aW9uNC5odG1sIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmRhdGFiYXNl
X3RyYW5zYWN0aW9uNC5odG1sCmluZGV4IDIxMjBmMDc5ZGJmMGNkNDI3ZDk3YzAxNzJlYjdjNGRl
YWU3NGQzNjguLjNmYWI0MGYzZWVjOWVmNmFiYmRjMWQ3NGY4YmNlN2EwZWIwYTA2MTEgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2lu
Zy9pZGJkYXRhYmFzZV90cmFuc2FjdGlvbjQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiZGF0YWJhc2VfdHJhbnNhY3Rpb240
Lmh0bWwKQEAgLTE2LDcgKzE2LDcgQEAKICAgICB9OwogCiAgICAgb3Blbl9ycS5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbihlKSB7Ci0gICAgICAgIGFzc2VydF90aHJvd3MoeyBuYW1lOiAnVHlwZUVycm9y
JyB9LAorICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwKICAgICAgICAgICAgIGZ1
bmN0aW9uKCkgeyBkYi50cmFuc2FjdGlvbigndGVzdCcsICd3aGF0ZXZlcicpOyB9KTsKIAogICAg
ICAgICB0LmRvbmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRl
eGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJkYXRhYmFzZV90cmFuc2FjdGlvbjUuaHRtbCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJkYXRh
YmFzZV90cmFuc2FjdGlvbjUuaHRtbAppbmRleCBjZWY2ZDJhNDBlN2E4NDllOWE2MTg4OTg1NDdl
MjBmNGNmOTZmYjAyLi5kMGQyODkyODBlYWY5NjlkZmI2Y2I2OTkyNTBlNjIzOTFkOTg1MjY3IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJv
d3NpbmcvaWRiZGF0YWJhc2VfdHJhbnNhY3Rpb241Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmRhdGFiYXNlX3RyYW5zYWN0
aW9uNS5odG1sCkBAIC0xNSw3ICsxNSw3IEBAIHZhciBkYiwKIG9wZW5fcnEub251cGdyYWRlbmVl
ZGVkID0gZnVuY3Rpb24oKSB7fTsKIG9wZW5fcnEub25zdWNjZXNzID0gZnVuY3Rpb24oZSkgewog
ICAgIGRiID0gZS50YXJnZXQucmVzdWx0OwotICAgIGFzc2VydF90aHJvd3MoJ0ludmFsaWRBY2Nl
c3NFcnJvcicsIGZ1bmN0aW9uKCkgeyBkYi50cmFuc2FjdGlvbihbXSk7IH0pOworICAgIGFzc2Vy
dF90aHJvd3NfZG9tKCdJbnZhbGlkQWNjZXNzRXJyb3InLCBmdW5jdGlvbigpIHsgZGIudHJhbnNh
Y3Rpb24oW10pOyB9KTsKICAgICB0LmRvbmUoKTsKIH07CiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJm
YWN0b3J5X2NtcDIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJp
dmF0ZS1icm93c2luZy9pZGJmYWN0b3J5X2NtcDIuaHRtbAppbmRleCA4OTM5ZGQyZDMxNDM4ZDAy
OWVmMzZiZjVlOTRlMjcyNjNjMDc5OWVmLi5iZWMyODE1ZDA5YTI5MTgxMWViNjk0ODAyODRiYTI1
MWQ5ODk4NmUwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERC
LXByaXZhdGUtYnJvd3NpbmcvaWRiZmFjdG9yeV9jbXAyLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmZhY3RvcnlfY21wMi5o
dG1sCkBAIC05LDMxICs5LDMxIEBACiA8ZGl2IGlkPWxvZz48L2Rpdj4KIDxzY3JpcHQ+CiAgICAg
dGVzdCggZnVuY3Rpb24oKSB7Ci0gICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigp
LCBmdW5jdGlvbigpIHsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsIGZ1bmN0
aW9uKCkgewogICAgICAgICAgICAgaW5kZXhlZERCLmNtcCgpOwogICAgICAgICB9KTsKICAgICB9
LCAiSURCRmFjdG9yeS5jbXAoKSAtIG5vIGFyZ3VtZW50Iik7CiAKICAgICB0ZXN0KCBmdW5jdGlv
bigpIHsKLSAgICAgICAgYXNzZXJ0X3Rocm93cygiRGF0YUVycm9yIiwgZnVuY3Rpb24oKSB7Cisg
ICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJEYXRhRXJyb3IiLCBmdW5jdGlvbigpIHsKICAgICAg
ICAgICAgIGluZGV4ZWREQi5jbXAobnVsbCwgbnVsbCk7CiAgICAgICAgIH0pOwotICAgICAgICBh
c3NlcnRfdGhyb3dzKCJEYXRhRXJyb3IiLCBmdW5jdGlvbigpIHsKKyAgICAgICAgYXNzZXJ0X3Ro
cm93c19kb20oIkRhdGFFcnJvciIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgaW5kZXhlZERC
LmNtcCgxLCBudWxsKTsKICAgICAgICAgfSk7Ci0gICAgICAgIGFzc2VydF90aHJvd3MoIkRhdGFF
cnJvciIsIGZ1bmN0aW9uKCkgeworICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiRGF0YUVycm9y
IiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICBpbmRleGVkREIuY21wKG51bGwsIDEpOwogICAg
ICAgICB9KTsKICAgICB9LCAiSURCRmFjdG9yeS5jbXAoKSAtIG51bGwiKTsKIAogICAgIHRlc3Qo
IGZ1bmN0aW9uKCkgewotICAgICAgICBhc3NlcnRfdGhyb3dzKCJEYXRhRXJyb3IiLCBmdW5jdGlv
bigpIHsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkRhdGFFcnJvciIsIGZ1bmN0aW9uKCkg
ewogICAgICAgICAgICAgaW5kZXhlZERCLmNtcChOYU4sIE5hTik7CiAgICAgICAgIH0pOwotICAg
ICAgICBhc3NlcnRfdGhyb3dzKCJEYXRhRXJyb3IiLCBmdW5jdGlvbigpIHsKKyAgICAgICAgYXNz
ZXJ0X3Rocm93c19kb20oIkRhdGFFcnJvciIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgaW5k
ZXhlZERCLmNtcCgxLCBOYU4pOwogICAgICAgICB9KTsKLSAgICAgICAgYXNzZXJ0X3Rocm93cygi
RGF0YUVycm9yIiwgZnVuY3Rpb24oKSB7CisgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJEYXRh
RXJyb3IiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgIGluZGV4ZWREQi5jbXAoTmFOLCAxKTsK
ICAgICAgICAgfSk7CiAgICAgfSwgIklEQkZhY3RvcnkuY21wKCkgLSBOYU4iKTsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9p
ZGJmYWN0b3J5X29wZW45Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERC
LXByaXZhdGUtYnJvd3NpbmcvaWRiZmFjdG9yeV9vcGVuOS5odG1sCmluZGV4IGJkNDQ3ZTI0N2Y3
Y2YxNWVhOWJjYWNlZDNiZjUwNTA0N2Q5OThkY2EuLmI0MWEwMzM3M2FiYjZmNTc1NzZkNTYzNTNm
MjI5YTE1OTUwNGU4ZmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRl
eGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJmYWN0b3J5X29wZW45Lmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmZhY3Rvcnlf
b3BlbjkuaHRtbApAQCAtOSw3ICs5LDcgQEAgZnVuY3Rpb24gc2hvdWxkX3Rocm93KHZhbCwgbmFt
ZSkgewogICAgICAgICBuYW1lID0gKCh0eXBlb2YgdmFsID09ICJvYmplY3QiICYmIHZhbCkgPyAi
b2JqZWN0IiA6IGZvcm1hdF92YWx1ZSh2YWwpKQogICAgIH0KICAgICB0ZXN0KGZ1bmN0aW9uKCkg
ewotICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgeworICAg
ICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgewogICAgICAgICB3aW5k
b3cuaW5kZXhlZERCLm9wZW4oJ3Rlc3QnLCB2YWwpOwogICAgICAgfSk7CiAgICAgfSwgIkNhbGxp
bmcgb3BlbigpIHdpdGggdmVyc2lvbiBhcmd1bWVudCAiICsgbmFtZSArICIgc2hvdWxkIHRocm93
IFR5cGVFcnJvci4iKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4
ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmluZGV4LW11bHRpZW50cnktYXJyYXlrZXlwYXRoLmh0
bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Npbmcv
aWRiaW5kZXgtbXVsdGllbnRyeS1hcnJheWtleXBhdGguaHRtbAppbmRleCA3ZGVkZmJmOWE4M2E1
OTZlODc3N2EyYjAyZTg1N2FjZDA3ZTM4M2I0Li5mNTEwNmFmZTEyZWE4YmIwMTM0MWU4ZjVjZmY4
MzEwMGQ5NjBiNmFjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhl
ZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiaW5kZXgtbXVsdGllbnRyeS1hcnJheWtleXBhdGguaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Np
bmcvaWRiaW5kZXgtbXVsdGllbnRyeS1hcnJheWtleXBhdGguaHRtbApAQCAtMTIsNyArMTIsNyBA
QAogICAgIGNyZWF0ZWRiKGFzeW5jX3Rlc3QoZG9jdW1lbnQudGl0bGUsIHt0aW1lb3V0OiAxMDAw
MH0pKS5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgIHZhciBzdG9yZSA9
IGUudGFyZ2V0LnJlc3VsdC5jcmVhdGVPYmplY3RTdG9yZSgic3RvcmUiKTsKIAotICAgICAgICBh
c3NlcnRfdGhyb3dzKCdJbnZhbGlkQWNjZXNzRXJyb3InLCBmdW5jdGlvbigpIHsKKyAgICAgICAg
YXNzZXJ0X3Rocm93c19kb20oJ0ludmFsaWRBY2Nlc3NFcnJvcicsIGZ1bmN0aW9uKCkgewogICAg
ICAgICAgICAgc3RvcmUuY3JlYXRlSW5kZXgoJ2FjdG9ycycsIFsnbmFtZSddLCB7IG11bHRpRW50
cnk6IHRydWUgfSkKICAgICAgICAgfSk7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJpbmRleF9jb3VudDQuaHRtbCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJp
bmRleF9jb3VudDQuaHRtbAppbmRleCBlNTk0OGVjNWRlZjAzZjQ3YTQwNTMyYjUwNWRiOTZlMWNh
MWY5ZWY4Li45MTljZjVkNGZiNzkyY2I3NGIzY2VmZGVjNDVjMTE0MGMxOTU4MzllIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Npbmcv
aWRiaW5kZXhfY291bnQ0Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4
ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmluZGV4X2NvdW50NC5odG1sCkBAIC0yNyw3ICsyNyw3
IEBACiAgICAgICAgICAgICAgICAgICAgICAgLm9iamVjdFN0b3JlKCJzdG9yZSIpCiAgICAgICAg
ICAgICAgICAgICAgICAgLmluZGV4KCJpbmRleCIpOwogCi0gICAgICAgIGFzc2VydF90aHJvd3Mo
IkRhdGFFcnJvciIsIGZ1bmN0aW9uKCkgeworICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiRGF0
YUVycm9yIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICBpbmRleC5jb3VudChOYU4pOwogICAg
ICAgICB9KTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWRE
Qi1wcml2YXRlLWJyb3dzaW5nL2lkYmluZGV4X2dldDUuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJpbmRleF9nZXQ1Lmh0bWwKaW5k
ZXggMDE1MjQ5MjYyMjRhMDY5MzJhZWY2MThhZDUzMTM4ZWY3MmY4ZjliNC4uY2QwNDNkOTE2NjJh
MTM4YzU2MjdjOTk2Yjc3MDYxZWVhYTIzMDY2NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmluZGV4X2dldDUuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Npbmcv
aWRiaW5kZXhfZ2V0NS5odG1sCkBAIC0xNyw3ICsxNyw3IEBACiAKICAgICAgICAgdmFyIGluZGV4
ID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoInRlc3QiLCB7IGtleVBhdGg6ICJrZXkiIH0pCiAgICAg
ICAgICAgICAgICAgICAgICAgLmNyZWF0ZUluZGV4KCJpbmRleCIsICJpbmRleGVkUHJvcGVydHki
KTsKLSAgICAgICAgYXNzZXJ0X3Rocm93cygiRGF0YUVycm9yIixmdW5jdGlvbigpeworICAgICAg
ICBhc3NlcnRfdGhyb3dzX2RvbSgiRGF0YUVycm9yIixmdW5jdGlvbigpewogICAgICAgICAgICAg
aW5kZXguZ2V0KE5hTik7CiAgICAgICAgIH0pOwogICAgICAgICB0LmRvbmUoKTsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9p
ZGJpbmRleF9nZXQ2Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXBy
aXZhdGUtYnJvd3NpbmcvaWRiaW5kZXhfZ2V0Ni5odG1sCmluZGV4IGE1Yjc2M2VkNWUzZGIzNzY2
OTQ0OTAwYzM2NmRmMWYwYTU0YzM1MWQuLjE0NGI5NjkzNWNmZDAyOGRkYjRmOWNmZTM5Y2NhYjRk
ZGVhOWMyMjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREIt
cHJpdmF0ZS1icm93c2luZy9pZGJpbmRleF9nZXQ2Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmluZGV4X2dldDYuaHRtbApA
QCAtMjAsNyArMjAsNyBAQAogICAgICAgICBzdG9yZS5hZGQoeyBrZXk6IDEsIGluZGV4ZWRQcm9w
ZXJ0eTogImRhdGEiIH0pOwogICAgICAgICBzdG9yZS5kZWxldGVJbmRleCgiaW5kZXgiKTsKIAot
ICAgICAgICBhc3NlcnRfdGhyb3dzKCJJbnZhbGlkU3RhdGVFcnJvciIsIGZ1bmN0aW9uKCl7Cisg
ICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlkU3RhdGVFcnJvciIsIGZ1bmN0aW9uKCl7
CiAgICAgICAgICAgICBpbmRleC5nZXQoImRhdGEiKTsKICAgICAgICAgfSk7CiAgICAgICAgIHQu
ZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1w
cml2YXRlLWJyb3dzaW5nL2lkYmluZGV4X2dldDcuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJpbmRleF9nZXQ3Lmh0bWwKaW5kZXgg
ODk3MzVlYWQ4NGRmNWY0MTU5YzRhMjNlNjczYTUyMjVjMTBjZGVmNC4uMzVlNmE1ZGEzODdhN2Q3
ZWY1ZGIzZjQ4MWEyZTdhYTA1OTE1M2RkNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmluZGV4X2dldDcuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRi
aW5kZXhfZ2V0Ny5odG1sCkBAIC0yMCw3ICsyMCw3IEBACiAKICAgICAgICAgZS50YXJnZXQudHJh
bnNhY3Rpb24uYWJvcnQoKTsKIAotICAgICAgICBhc3NlcnRfdGhyb3dzKCJJbnZhbGlkU3RhdGVF
cnJvciIsIGZ1bmN0aW9uKCl7CisgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlkU3Rh
dGVFcnJvciIsIGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICBpbmRleC5nZXQoImRhdGEiKTsKICAg
ICAgICAgfSk7CiAgICAgICAgIHQuZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmluZGV4X2dldEtleTUuaHRt
bCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9p
ZGJpbmRleF9nZXRLZXk1Lmh0bWwKaW5kZXggODEyYzNjZDQ4ZGQ2YTYyMzcyMmI2ZmNkYjljN2Y1
YjE0MmJmOWM5NC4uOGVkYTU3OTA1OGZjMmZhYTc0MmJkNmEzYzBkYzE5MTZkMjliNTFlNSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dz
aW5nL2lkYmluZGV4X2dldEtleTUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
SW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiaW5kZXhfZ2V0S2V5NS5odG1sCkBAIC0xNyw3
ICsxNyw3IEBACiAKICAgICAgICAgdmFyIGluZGV4ID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoInRl
c3QiLCB7IGtleVBhdGg6ICJrZXkiIH0pCiAgICAgICAgICAgICAgICAgICAgICAgLmNyZWF0ZUlu
ZGV4KCJpbmRleCIsICJpbmRleGVkUHJvcGVydHkiKTsKLSAgICAgICAgYXNzZXJ0X3Rocm93cygi
RGF0YUVycm9yIixmdW5jdGlvbigpeworICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiRGF0YUVy
cm9yIixmdW5jdGlvbigpewogICAgICAgICAgICAgaW5kZXguZ2V0S2V5KE5hTik7CiAgICAgICAg
IH0pOwogICAgICAgICB0LmRvbmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJpbmRleF9nZXRLZXk2Lmh0bWwgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiaW5k
ZXhfZ2V0S2V5Ni5odG1sCmluZGV4IGYwYzhlODgwNWU2ZTZlY2FmZTI3YWJjYjViYmVlZjY2Y2Zi
NWNkNjkuLjM2YTdmNzE3Yjk5NzJlMjc3MTcwMTcwYzY0NDc1MjJiOTMxN2YyNDggMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9p
ZGJpbmRleF9nZXRLZXk2Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4
ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmluZGV4X2dldEtleTYuaHRtbApAQCAtMjAsNyArMjAs
NyBAQAogICAgICAgICBzdG9yZS5hZGQoeyBrZXk6IDEsIGluZGV4ZWRQcm9wZXJ0eTogImRhdGEi
IH0pOwogICAgICAgICBzdG9yZS5kZWxldGVJbmRleCgiaW5kZXgiKTsKIAotICAgICAgICBhc3Nl
cnRfdGhyb3dzKCJJbnZhbGlkU3RhdGVFcnJvciIsIGZ1bmN0aW9uKCl7CisgICAgICAgIGFzc2Vy
dF90aHJvd3NfZG9tKCJJbnZhbGlkU3RhdGVFcnJvciIsIGZ1bmN0aW9uKCl7CiAgICAgICAgICAg
ICBpbmRleC5nZXRLZXkoImRhdGEiKTsKICAgICAgICAgfSk7CiAgICAgICAgIHQuZG9uZSgpOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJy
b3dzaW5nL2lkYmluZGV4X2dldEtleTcuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9J
bmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJpbmRleF9nZXRLZXk3Lmh0bWwKaW5kZXggMmRl
MDgwNzk5N2I3NTEyY2Y0ZTk2MjA2MzUyOTUwNjUwYzc1ODkxOS4uYjcwYjM4NGY0NGUyMjY4NWQz
OWU5NmFlNjRlMjBkMGM0ODc3Y2IyNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmluZGV4X2dldEtleTcuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRi
aW5kZXhfZ2V0S2V5Ny5odG1sCkBAIC0yMCw3ICsyMCw3IEBACiAKICAgICAgICAgZS50YXJnZXQu
dHJhbnNhY3Rpb24uYWJvcnQoKTsKIAotICAgICAgICBhc3NlcnRfdGhyb3dzKCJJbnZhbGlkU3Rh
dGVFcnJvciIsIGZ1bmN0aW9uKCl7CisgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlk
U3RhdGVFcnJvciIsIGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICBpbmRleC5nZXRLZXkoImRhdGEi
KTsKICAgICAgICAgfSk7CiAgICAgICAgIHQuZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmluZGV4X29wZW5D
dXJzb3IuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1i
cm93c2luZy9pZGJpbmRleF9vcGVuQ3Vyc29yLmh0bWwKaW5kZXggZjlmYjY4YTUxODNjZDNmZDdm
ZWE1M2JkNjQxZmQ0NDc4YjY4MDU4Ni4uYTNiMGQwMTlkY2NkYzM4YmUzNzgyNmE1YmQ2YzU5MTNj
NDY5M2Y0MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1w
cml2YXRlLWJyb3dzaW5nL2lkYmluZGV4X29wZW5DdXJzb3IuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiaW5kZXhfb3BlbkN1
cnNvci5odG1sCkBAIC0yMCw3ICsyMCw3IEBACiAgICAgICAgIHN0b3JlLmFkZCh7IGtleTogMSwg
aW5kZXhlZFByb3BlcnR5OiAiZGF0YSIgfSk7CiAgICAgICAgIHN0b3JlLmRlbGV0ZUluZGV4KCJp
bmRleCIpOwogCi0gICAgICAgIGFzc2VydF90aHJvd3MoIkludmFsaWRTdGF0ZUVycm9yIiwgZnVu
Y3Rpb24oKXsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkludmFsaWRTdGF0ZUVycm9yIiwg
ZnVuY3Rpb24oKXsKICAgICAgICAgICAgIGluZGV4Lm9wZW5DdXJzb3IoKTsKICAgICAgICAgfSk7
CiAgICAgICAgIHQuZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmluZGV4X29wZW5DdXJzb3IyLmh0bWwgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiaW5k
ZXhfb3BlbkN1cnNvcjIuaHRtbAppbmRleCAwMTM4YWNiNWVmZTY5ZDQyODk0M2ZlNzAwOGIwYmQw
YTUzNDg3MGIxLi4zNTlkY2ExMWJhZDMxODZmYmJlM2E3MGE1NGFkY2JhM2RjOGI3YzM4IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Np
bmcvaWRiaW5kZXhfb3BlbkN1cnNvcjIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiaW5kZXhfb3BlbkN1cnNvcjIuaHRtbApA
QCAtMjAsNyArMjAsNyBAQAogCiAgICAgICAgIGUudGFyZ2V0LnRyYW5zYWN0aW9uLmFib3J0KCk7
CiAKLSAgICAgICAgYXNzZXJ0X3Rocm93cygiSW52YWxpZFN0YXRlRXJyb3IiLCBmdW5jdGlvbigp
eworICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiSW52YWxpZFN0YXRlRXJyb3IiLCBmdW5jdGlv
bigpewogICAgICAgICAgICAgaW5kZXgub3BlbkN1cnNvcigpOwogICAgICAgICB9KTsKICAgICAg
ICAgdC5kb25lKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhl
ZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiaW5kZXhfb3BlbktleUN1cnNvci5odG1sIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmluZGV4X29w
ZW5LZXlDdXJzb3IuaHRtbAppbmRleCA3NTU1ZTA2NGZiMmExYTIyYzE3YTk1Zjg0YjE0MWJkNTY5
Zjk0NGU1Li44ZGVhNTgxNGE5YjM1MDRmNjRjY2I5OWQ5MmRmYjg1MTY2YmRhNmZhIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Npbmcv
aWRiaW5kZXhfb3BlbktleUN1cnNvci5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJpbmRleF9vcGVuS2V5Q3Vyc29yLmh0bWwK
QEAgLTE5LDcgKzE5LDcgQEAKIAogICAgICAgICBzdG9yZS5hZGQoeyBrZXk6IDEsIGluZGV4ZWRQ
cm9wZXJ0eTogImRhdGEiIH0pOwogCi0gICAgICAgIGFzc2VydF90aHJvd3MoIkRhdGFFcnJvciIs
IGZ1bmN0aW9uKCl7CisgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJEYXRhRXJyb3IiLCBmdW5j
dGlvbigpewogICAgICAgICAgICAgaW5kZXgub3BlbktleUN1cnNvcihOYU4pOwogICAgICAgICB9
KTsKICAgICAgICAgdC5kb25lKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiaW5kZXhfb3BlbktleUN1cnNvcjIuaHRt
bCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9p
ZGJpbmRleF9vcGVuS2V5Q3Vyc29yMi5odG1sCmluZGV4IGQ2MzJkMTkxYzA4NTAwYjUzMDJkNzVk
NjExY2IxZDVkMDg3ZWMxZmEuLmRhYmMxNmUzNTEyZDAyMDc1ODliYTAzNWRjYTIwYjQ5YTg5MGYz
ZTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0
ZS1icm93c2luZy9pZGJpbmRleF9vcGVuS2V5Q3Vyc29yMi5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJpbmRleF9vcGVuS2V5
Q3Vyc29yMi5odG1sCkBAIC0yMCw3ICsyMCw3IEBACiAgICAgICAgIHN0b3JlLmFkZCh7IGtleTog
MSwgaW5kZXhlZFByb3BlcnR5OiAiZGF0YSIgfSk7CiAgICAgICAgIHN0b3JlLmRlbGV0ZUluZGV4
KCJpbmRleCIpOwogCi0gICAgICAgIGFzc2VydF90aHJvd3MoIkludmFsaWRTdGF0ZUVycm9yIiwg
ZnVuY3Rpb24oKXsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkludmFsaWRTdGF0ZUVycm9y
IiwgZnVuY3Rpb24oKXsKICAgICAgICAgICAgIGluZGV4Lm9wZW5LZXlDdXJzb3IoKTsKICAgICAg
ICAgfSk7CiAgICAgICAgIHQuZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmluZGV4X29wZW5LZXlDdXJzb3Iz
Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Np
bmcvaWRiaW5kZXhfb3BlbktleUN1cnNvcjMuaHRtbAppbmRleCA0YTJiMmYxYWJlMWZkY2NmZmIw
NDlmMDNlNDhhY2RkM2U1YTIxNmQxLi4yZjEwY2RhYWU3OTNlYTdjMzAyZDEyMTgwMjkwOGIwNmQ4
ODlhNGEzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXBy
aXZhdGUtYnJvd3NpbmcvaWRiaW5kZXhfb3BlbktleUN1cnNvcjMuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiaW5kZXhfb3Bl
bktleUN1cnNvcjMuaHRtbApAQCAtMjAsNyArMjAsNyBAQAogCiAgICAgICAgIGUudGFyZ2V0LnRy
YW5zYWN0aW9uLmFib3J0KCk7CiAKLSAgICAgICAgYXNzZXJ0X3Rocm93cygiSW52YWxpZFN0YXRl
RXJyb3IiLCBmdW5jdGlvbigpeworICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiSW52YWxpZFN0
YXRlRXJyb3IiLCBmdW5jdGlvbigpewogICAgICAgICAgICAgaW5kZXgub3BlbktleUN1cnNvcigp
OwogICAgICAgICB9KTsKICAgICAgICAgdC5kb25lKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRia2V5cmFuZ2VfaW5j
b3JyZWN0Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUt
YnJvd3NpbmcvaWRia2V5cmFuZ2VfaW5jb3JyZWN0Lmh0bWwKaW5kZXggMWUxOTc5MTQyZWZkNjgy
ZTA2ZDJlMTcyNzU1ZmQ0MGJjZGMyYjY3Mi4uMjQyZDFhM2NkMTgwYWMzYmM4M2E2ZTAwNzcxNjM1
ZTY0NWNlZmM2OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWRE
Qi1wcml2YXRlLWJyb3dzaW5nL2lkYmtleXJhbmdlX2luY29ycmVjdC5odG1sCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJrZXlyYW5n
ZV9pbmNvcnJlY3QuaHRtbApAQCAtMTYsMjQgKzE2LDI0IEBACiAKICAgICAgICAgICAgIC8vIFR5
cGVFcnJvcjogYm91bmQgcmVxdWlyZXMgbW9yZSB0aGFuIDAgYXJndW1lbnRzCiAgICAgICAgICAg
ICB0ZXN0KCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBU
eXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19q
cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICBJREJLZXlSYW5n
ZS5ib3VuZCgpOwogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgfSwgIklEQktleVJh
bmdlLmJvdW5kKCkgLSBib3VuZCByZXF1aXJlcyBtb3JlIHRoYW4gMCBhcmd1bWVudHMuIik7CiAK
ICAgICAgICAgICAgIC8vIE51bGwgcGFyYW1ldGVycwogICAgICAgICAgICAgdGVzdCggZnVuY3Rp
b24oKSB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygiRGF0YUVycm9yIiwgZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkRhdGFFcnJvciIsIGZ1
bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICBJREJLZXlSYW5nZS5ib3VuZChudWxsLCBu
dWxsKTsKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIH0sICJJREJLZXlSYW5nZS5i
b3VuZChudWxsLCBudWxsKSAtIG51bGwgcGFyYW1ldGVycyBhcmUgaW5jb3JyZWN0LiIpOwogCiAg
ICAgICAgICAgICAvLyAvLyBOdWxsIHBhcmFtZXRlcgogICAgICAgICAgICAgdGVzdCggZnVuY3Rp
b24oKSB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygiRGF0YUVycm9yIiwgZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkRhdGFFcnJvciIsIGZ1
bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICBJREJLZXlSYW5nZS5ib3VuZCgxLCBudWxs
KTsKICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzKCJE
YXRhRXJyb3IiLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2Rv
bSgiRGF0YUVycm9yIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgIElEQktleVJh
bmdlLmJvdW5kKG51bGwsIDEpOwogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgfSwg
IklEQktleVJhbmdlLmJvdW5kKDEsIG51bGwgLyBudWxsLCAxKSAtIG51bGwgcGFyYW1ldGVyIGlz
IGluY29ycmVjdC4iKTsKQEAgLTQyLDIzICs0MiwyMyBAQAogICAgICAgICAgICAgdGVzdCggZnVu
Y3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgdmFyIGxvd2VyQmFkID0gTWF0aC5mbG9vcihNYXRo
LnJhbmRvbSgpKjMxKSArIDU7CiAgICAgICAgICAgICAgICAgdmFyIHVwcGVyID0gbG93ZXJCYWQg
LSAxOwotICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3MoIkRhdGFFcnJvciIsIGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJEYXRhRXJyb3IiLCBmdW5j
dGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgSURCS2V5UmFuZ2UuYm91bmQobG93ZXJCYWQs
IHVwcGVyKTsKICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICBhc3NlcnRfdGhy
b3dzKCJEYXRhRXJyb3IiLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfdGhy
b3dzX2RvbSgiRGF0YUVycm9yIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgIElE
QktleVJhbmdlLmJvdW5kKCdiJywgJ2EnKTsKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAg
ICAgIH0sICJJREJLZXlSYW5nZS5ib3VuZChsb3dlciwgdXBwZXIgLyBsb3dlciA+IHVwcGVyKSAt
ICAnbG93ZXInIGlzIGdyZWF0ZXIgdGhhbiAndXBwZXInLiIKICAgICAgICAgICAgICk7CiAKICAg
ICAgICAgICAgIHRlc3QoIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIGFzc2VydF90aHJv
d3MoIkRhdGFFcnJvciIsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGFzc2VydF90aHJv
d3NfZG9tKCJEYXRhRXJyb3IiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgSURC
S2V5UmFuZ2UuYm91bmQoJ2EnLCAxKTsKICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAg
ICAgICBhc3NlcnRfdGhyb3dzKCJEYXRhRXJyb3IiLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
ICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiRGF0YUVycm9yIiwgZnVuY3Rpb24oKSB7CiAgICAgICAg
ICAgICAgICAgICAgIElEQktleVJhbmdlLmJvdW5kKG5ldyBEYXRlKCksIDEpOwogICAgICAgICAg
ICAgICAgIH0pOwotICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3MoIkRhdGFFcnJvciIsIGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJEYXRhRXJyb3Ii
LCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgSURCS2V5UmFuZ2UuYm91bmQoWzEs
IDJdLCAxKTsKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIH0sICJJREJLZXlSYW5n
ZS5ib3VuZChET01TdHJpbmcvRGF0ZS9BcnJheSwgMSkgLSBBIERPTVN0cmluZywgRGF0ZSBhbmQg
QXJyYXkgYXJlIGdyZWF0ZXIgdGhhbiBhIGZsb2F0LiIpOwpAQCAtNjcsMTcgKzY3LDE3IEBACiAg
ICAgICAgICAgICAvLyBSZWZlcmVuY2VFcnJvcjogdGhlIHZhcmlhYmxlIGlzIG5vdCBkZWZpbmVk
CiAgICAgICAgICAgICB0ZXN0KCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICB2YXIgZ29v
ZFZhcmlhYmxlID0gMTsKLSAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBSZWZlcmVu
Y2VFcnJvcigpLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2pz
KFJlZmVyZW5jZUVycm9yLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgSURCS2V5
UmFuZ2UuYm91bmQobm9FeGlzdGluZ1ZhcmlhYmxlLCAxKTsKICAgICAgICAgICAgICAgICB9KTsK
LSAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBSZWZlcmVuY2VFcnJvcigpLCBmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFJlZmVyZW5jZUVycm9y
LCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgSURCS2V5UmFuZ2UuYm91bmQoZ29v
ZFZhcmlhYmxlLCBub0V4aXN0aW5nVmFyaWFibGUpOwogICAgICAgICAgICAgICAgIH0pOwogICAg
ICAgICAgICAgfSwgIklEQktleVJhbmdlLmJvdW5kKG5vRXhpc3RpbmdWYXJpYWJsZSwgMSAvIGdv
b2RWYXJpYWJsZSwgbm9FeGlzdGluZ1ZhcmlhYmxlKSAtIG5vRXhpc3RpbmdWYXJpYWJsZSBpcyBu
b3QgZGVmaW5lZC4iKTsKIAogICAgICAgICAgICAgLy8gVmFsaWQgdHlwZSBrZXkgZXJyb3IKICAg
ICAgICAgICAgIHRlc3QoIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIGFzc2VydF90aHJv
d3MoIkRhdGFFcnJvciIsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGFzc2VydF90aHJv
d3NfZG9tKCJEYXRhRXJyb3IiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgSURC
S2V5UmFuZ2UuYm91bmQodHJ1ZSwgMSk7CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAg
ICB9LCAiSURCS2V5UmFuZ2UuYm91bmQodHJ1ZSwgMSkgLSBib29sZWFuIGlzIG5vdCBhIHZhbGlk
IGtleSB0eXBlLiIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4
ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2FkZDEwLmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3Rv
cmVfYWRkMTAuaHRtbAppbmRleCAwOGY3MTZkMzFkYmZiZDlkZGM3ZjhhOTRhOTg2MTE3NjBjNDdm
N2ZhLi5mODRmOWM1Y2M0ODEyN2JkMzUzZTJhZGY4ZjVlZjMzOGI0MzQ0Y2EyIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRi
b2JqZWN0c3RvcmVfYWRkMTAuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5k
ZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfYWRkMTAuaHRtbApAQCAtMTgs
NyArMTgsNyBAQAogICAgICAgICB2YXIgcnEsCiAgICAgICAgICAgb2JqU3RvcmUgPSBkYi5jcmVh
dGVPYmplY3RTdG9yZSgic3RvcmUiKTsKIAotICAgICAgICBhc3NlcnRfdGhyb3dzKCJEYXRhRXJy
b3IiLAorICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiRGF0YUVycm9yIiwKICAgICAgICAgICAg
IGZ1bmN0aW9uKCkgeyBycSA9IG9ialN0b3JlLmFkZChyZWNvcmQpOyB9KTsKIAogICAgICAgICBh
c3NlcnRfZXF1YWxzKHJxLCB1bmRlZmluZWQpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2FkZDEx
Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Np
bmcvaWRib2JqZWN0c3RvcmVfYWRkMTEuaHRtbAppbmRleCBlZTZhNGU0MGJhMjFlNTkwYzdhOGYw
YjM0ZjQxMmZjODU1YjNjNzA0Li4yYWQ2NGI5ZmVjOWNiNTcxODFmMTJmMGNjZjkxYjllNDU0YmNi
ZmVhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZh
dGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfYWRkMTEuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfYWRk
MTEuaHRtbApAQCAtMTgsNyArMTgsNyBAQAogICAgICAgICB2YXIgcnEsCiAgICAgICAgICAgb2Jq
U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgic3RvcmUiLCB7IGtleVBhdGg6ICJrZXkiIH0p
OwogCi0gICAgICAgIGFzc2VydF90aHJvd3MoIkRhdGFFcnJvciIsCisgICAgICAgIGFzc2VydF90
aHJvd3NfZG9tKCJEYXRhRXJyb3IiLAogICAgICAgICAgICAgZnVuY3Rpb24oKSB7IHJxID0gb2Jq
U3RvcmUuYWRkKHJlY29yZCk7IH0pOwogCiAgICAgICAgIGFzc2VydF9lcXVhbHMocnEsIHVuZGVm
aW5lZCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXBy
aXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfYWRkMTIuaHRtbCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9hZGQx
Mi5odG1sCmluZGV4IGUxNGNkYTdiNTU4MmMwZWE1YmQ3OWVmZWIxNjYxMmRlNjkyNGIxMjEuLjNh
ZjA4MWYzNjY2Y2Y2ZTYyZDk0NTk1NTVlNjcwN2I0Y2UzN2VjN2UgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3Rz
dG9yZV9hZGQxMi5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREIt
cHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9hZGQxMi5odG1sCkBAIC0xOCw3ICsxOCw3
IEBACiAgICAgICAgIHZhciBycSwKICAgICAgICAgICBvYmpTdG9yZSA9IGRiLmNyZWF0ZU9iamVj
dFN0b3JlKCJzdG9yZSIsIHsga2V5UGF0aDogImtleSIgfSk7CiAKLSAgICAgICAgYXNzZXJ0X3Ro
cm93cygiRGF0YUVycm9yIiwKKyAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkRhdGFFcnJvciIs
CiAgICAgICAgICAgICBmdW5jdGlvbigpIHsgcnEgPSBvYmpTdG9yZS5hZGQocmVjb3JkKTsgfSk7
CiAKICAgICAgICAgYXNzZXJ0X2VxdWFscyhycSwgdW5kZWZpbmVkKTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmpl
Y3RzdG9yZV9hZGQxMy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1w
cml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2FkZDEzLmh0bWwKaW5kZXggM2Y0YjMwZDNh
ZmMxODI3YTExMjUxODA4NzA3ODk1ODlhYjgyNjY1My4uYTZhZDJmMzA5Y2UxNTBmZjdlYmYyMDNh
ZjA4NjlhYjdhNjQ1MjdkOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0lu
ZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2FkZDEzLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9i
amVjdHN0b3JlX2FkZDEzLmh0bWwKQEAgLTE4LDcgKzE4LDcgQEAKICAgICAgICAgdmFyIHJxLAog
ICAgICAgICAgIG9ialN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoInN0b3JlIik7CiAKLSAg
ICAgICAgYXNzZXJ0X3Rocm93cygiRGF0YUVycm9yIiwKKyAgICAgICAgYXNzZXJ0X3Rocm93c19k
b20oIkRhdGFFcnJvciIsCiAgICAgICAgICAgICBmdW5jdGlvbigpIHsgcnEgPSBvYmpTdG9yZS5h
ZGQocmVjb3JkLCB7IHZhbHVlOiAxIH0pOyB9KTsKIAogICAgICAgICBhc3NlcnRfZXF1YWxzKHJx
LCB1bmRlZmluZWQpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4
ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2FkZDE1Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3Rv
cmVfYWRkMTUuaHRtbAppbmRleCBjMzIyY2E3ZGEwYjE4Y2Y2YzA1NGExN2JlNzdhMzIzZGRiMmZk
NjFiLi4wZGY3MTM0MjQzNDgwOGMwNzAyNTM4OGVkZThjZGZmZjBmYjE5NGZmIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRi
b2JqZWN0c3RvcmVfYWRkMTUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5k
ZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfYWRkMTUuaHRtbApAQCAtMjEs
NyArMjEsNyBAQAogICAgICAgICB2YXIgdHhuID0gZGIudHJhbnNhY3Rpb24oInN0b3JlIik7CiAg
ICAgICAgIHZhciBvc3RvcmUgPSB0eG4ub2JqZWN0U3RvcmUoInN0b3JlIik7CiAgICAgICAgIHQu
c3RlcChmdW5jdGlvbigpewotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygiUmVhZE9ubHlFcnJv
ciIsIGZ1bmN0aW9uKCl7CisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiUmVhZE9ubHlF
cnJvciIsIGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgb3N0b3JlLmFkZCh7IHBLZXk6ICJw
cmltYXJ5S2V5XzAifSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRi
b2JqZWN0c3RvcmVfYWRkMTYuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVk
REItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9hZGQxNi5odG1sCmluZGV4IDBkMTJl
MDQzZjcyYTdmZGQzMmMwZjZjYjhiNDY5NTZjMDFlZjAyMTQuLmRkNjVkOTA0NjcwNzZkMDcyOWUw
ZmIyOGRiZmJkNWMwYjU3YmFhM2EgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9hZGQxNi5odG1sCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9p
ZGJvYmplY3RzdG9yZV9hZGQxNi5odG1sCkBAIC0yMSw3ICsyMSw3IEBACiAKICAgICBvcGVuX3Jx
Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgewogICAgICAgICB0LnN0ZXAoZnVuY3Rpb24o
KXsKLSAgICAgICAgICAgIGFzc2VydF90aHJvd3MoIkludmFsaWRTdGF0ZUVycm9yIiwgZnVuY3Rp
b24oKXsKKyAgICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlkU3RhdGVFcnJvciIs
IGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgb3N0b3JlLmFkZCh7IHBLZXk6ICJwcmltYXJ5
S2V5XzAifSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0
c3RvcmVfYWRkOS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2
YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2FkZDkuaHRtbAppbmRleCBjOTMwNGEwMzEwYTcw
OTcxZWNiZjU2NjhjMDllOGUzYTFjZmJkMGIzLi44ZTI4MjAwZTZjZWYxYTIwMTU2MzA3Mjk3MTdl
OWRiMTFjM2RkZGU4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhl
ZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfYWRkOS5odG1sCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3Rz
dG9yZV9hZGQ5Lmh0bWwKQEAgLTE2LDcgKzE2LDcgQEAKICAgICAgICAgICBkYiA9IGUudGFyZ2V0
LnJlc3VsdCwKICAgICAgICAgICBvYmpTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCJzdG9y
ZSIsIHsga2V5UGF0aDogImtleSIgfSk7CiAKLSAgICAgICAgYXNzZXJ0X3Rocm93cygiRGF0YUVy
cm9yIiwKKyAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkRhdGFFcnJvciIsCiAgICAgICAgICAg
ICBmdW5jdGlvbigpIHsgcnEgPSBvYmpTdG9yZS5hZGQocmVjb3JkLCAxKTsgfSk7CiAKICAgICAg
ICAgYXNzZXJ0X2VxdWFscyhycSwgdW5kZWZpbmVkKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9j
bGVhcjMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1i
cm93c2luZy9pZGJvYmplY3RzdG9yZV9jbGVhcjMuaHRtbAppbmRleCBkNTUwOWFjOTYxNmIxYjM0
ZjFhN2YzYWE1N2JiMDJhZGVjMDg4ZWRlLi4xMTcxZGI2ZTc3OTRhYjY4YjlkYWRhYTRjM2VjOGU2
MGM3M2JjN2Y1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERC
LXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfY2xlYXIzLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0
b3JlX2NsZWFyMy5odG1sCkBAIC0yNiw3ICsyNiw3IEBACiAgICAgICAgIHZhciB0eG4gPSBkYi50
cmFuc2FjdGlvbigic3RvcmUiKTsKICAgICAgICAgdmFyIG9zdG9yZSA9IHR4bi5vYmplY3RTdG9y
ZSgic3RvcmUiKTsKICAgICAgICAgdC5zdGVwKGZ1bmN0aW9uKCl7Ci0gICAgICAgICAgICBhc3Nl
cnRfdGhyb3dzKCJSZWFkT25seUVycm9yIiwgZnVuY3Rpb24oKXsKKyAgICAgICAgICAgIGFzc2Vy
dF90aHJvd3NfZG9tKCJSZWFkT25seUVycm9yIiwgZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAg
ICBvc3RvcmUuY2xlYXIoKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9p
ZGJvYmplY3RzdG9yZV9jbGVhcjQuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRl
eGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9jbGVhcjQuaHRtbAppbmRleCAy
NzUyNTJiMDRjOTMyNjM4MGY3NjE0ZWE2YjhkNTNjYmFhZDZlMDI1Li43MTFiOWJlOTk5MjY0Mzlm
ZTkyYmMxYmEwYjQ3Y2FiZDkxY2IwMWQwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfY2xlYXI0Lmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dz
aW5nL2lkYm9iamVjdHN0b3JlX2NsZWFyNC5odG1sCkBAIC0yMSw3ICsyMSw3IEBACiAKICAgICBv
cGVuX3JxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgewogICAgICAgICB0LnN0ZXAoZnVu
Y3Rpb24oKXsKLSAgICAgICAgICAgIGFzc2VydF90aHJvd3MoIkludmFsaWRTdGF0ZUVycm9yIiwg
ZnVuY3Rpb24oKXsKKyAgICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlkU3RhdGVF
cnJvciIsIGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgb3N0b3JlLmNsZWFyKCk7CiAgICAg
ICAgICAgICB9KTsKICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfY291bnQ0Lmh0
bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Npbmcv
aWRib2JqZWN0c3RvcmVfY291bnQ0Lmh0bWwKaW5kZXggOTFkYThhYzhlNTIyOWYzMWRmYTFjYWM2
N2ViMjA0NzQwNTA2YjIzNi4uOWY0Yzg4Y2Q0NDE3OGViYmViYjJhYmI2ZTJjNjI4ZDQ2MDBhZWRk
NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRl
LWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2NvdW50NC5odG1sCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9jb3Vu
dDQuaHRtbApAQCAtMjEsNyArMjEsNyBAQAogCiAgICAgb3Blbl9ycS5vbnN1Y2Nlc3MgPSBmdW5j
dGlvbiAoZXZlbnQpIHsKICAgICAgICAgdC5zdGVwKGZ1bmN0aW9uKCl7Ci0gICAgICAgICAgICBh
c3NlcnRfdGhyb3dzKCJJbnZhbGlkU3RhdGVFcnJvciIsIGZ1bmN0aW9uKCl7CisgICAgICAgICAg
ICBhc3NlcnRfdGhyb3dzX2RvbSgiSW52YWxpZFN0YXRlRXJyb3IiLCBmdW5jdGlvbigpewogICAg
ICAgICAgICAgICAgIG9zdG9yZS5jb3VudCgpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0p
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRl
LWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2NyZWF0ZUluZGV4MTAuaHRtbCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9j
cmVhdGVJbmRleDEwLmh0bWwKaW5kZXggZTYwZTExOTc5YjkyZmYxNTM5YzY5NTFiNGFhOTFhNzkw
ZDY1NDI4YS4uMDcxMjRmMGMwOGM4NGJmNWM2NmE2MzM5MjljYWI4YTY4YmZlZjFjOCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5n
L2lkYm9iamVjdHN0b3JlX2NyZWF0ZUluZGV4MTAuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfY3JlYXRl
SW5kZXgxMC5odG1sCkBAIC0xNSw3ICsxNSw3IEBAIG9wZW5fcnEub251cGdyYWRlbmVlZGVkID0g
ZnVuY3Rpb24gKGUpIHsKICAgICB2YXIgZGIgPSBlLnRhcmdldC5yZXN1bHQ7CiAgICAgdmFyIG9z
dG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCJzdG9yZSIpOwogICAgIG9zdG9yZS5jcmVhdGVJ
bmRleCgiYSIsICJhIik7Ci0gICAgYXNzZXJ0X3Rocm93cygiQ29uc3RyYWludEVycm9yIiwgZnVu
Y3Rpb24oKXsKKyAgICBhc3NlcnRfdGhyb3dzX2RvbSgiQ29uc3RyYWludEVycm9yIiwgZnVuY3Rp
b24oKXsKICAgICAgICAgb3N0b3JlLmNyZWF0ZUluZGV4KCJhIiwgImEiKTsKICAgICB9KTsKICAg
ICB0LmRvbmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVk
REItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9jcmVhdGVJbmRleDExLmh0bWwgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2Jq
ZWN0c3RvcmVfY3JlYXRlSW5kZXgxMS5odG1sCmluZGV4IGQ0NGQyNDUwNmZiZDZkOTRhZTc0MjEw
NjZjNTMxM2IzMTQxZDUxNTIuLjM4MTQ1MjMwNzFjZWRmZjk0NWRmODBiYjc0YjdlMzg4ZjI0OGYz
MzcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0
ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9jcmVhdGVJbmRleDExLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0
b3JlX2NyZWF0ZUluZGV4MTEuaHRtbApAQCAtMTQsNyArMTQsNyBAQCB2YXIgdCA9IGFzeW5jX3Rl
c3QoKSwKIG9wZW5fcnEub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24gKGUpIHsKICAgICB2YXIg
ZGIgPSBlLnRhcmdldC5yZXN1bHQ7CiAgICAgdmFyIG9zdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0
b3JlKCJzdG9yZSIpOwotICAgIGFzc2VydF90aHJvd3MoIlN5bnRheEVycm9yIiwgZnVuY3Rpb24o
KXsKKyAgICBhc3NlcnRfdGhyb3dzX2RvbSgiU3ludGF4RXJyb3IiLCBmdW5jdGlvbigpewogICAg
ICAgICBvc3RvcmUuY3JlYXRlSW5kZXgoImFiIiwgIi4iKTsKICAgICB9KTsKICAgICB0LmRvbmUo
KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0
ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9jcmVhdGVJbmRleDEyLmh0bWwgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVf
Y3JlYXRlSW5kZXgxMi5odG1sCmluZGV4IDQ4YTZkNmE3NzkwY2RjYjhhMjYyN2NlMGE2ZDkxNjdh
ZWVkNDI4ZDguLjI3N2ZmOTRmN2E4ZTI2ZjA1YzE5ZTM0NDZiM2UxOWYyYjg3NGE1MzkgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2lu
Zy9pZGJvYmplY3RzdG9yZV9jcmVhdGVJbmRleDEyLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2NyZWF0
ZUluZGV4MTIuaHRtbApAQCAtMjEsNyArMjEsNyBAQAogCiAgICAgb3Blbl9ycS5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbiAoZXZlbnQpIHsKICAgICAgICAgdC5zdGVwKGZ1bmN0aW9uKCl7Ci0gICAgICAg
ICAgICBhc3NlcnRfdGhyb3dzKCJJbnZhbGlkU3RhdGVFcnJvciIsIGZ1bmN0aW9uKCl7CisgICAg
ICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiSW52YWxpZFN0YXRlRXJyb3IiLCBmdW5jdGlvbigp
ewogICAgICAgICAgICAgICAgIG9zdG9yZS5jcmVhdGVJbmRleCgiaW5kZXgiLCAiaW5kZXhlZFBy
b3BlcnR5Iik7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0
c3RvcmVfY3JlYXRlSW5kZXgxMy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4
ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2NyZWF0ZUluZGV4MTMuaHRtbApp
bmRleCBmNTEyMzFjNTI1NzgzZTk2YzIwZDJlNGVjMzcxYzU2Y2FmYWMwZWQ5Li42MTVhOTAxMmRj
ZjAxN2RiMGM3MjBmMjY2OWYzMzMzMWZiNjM2Yjc3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfY3Jl
YXRlSW5kZXgxMy5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREIt
cHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9jcmVhdGVJbmRleDEzLmh0bWwKQEAgLTIx
LDcgKzIxLDcgQEAKICAgICAgICAgdmFyIHR4biA9IGRiLnRyYW5zYWN0aW9uKCJzdG9yZSIsICJy
ZWFkd3JpdGUiKTsKICAgICAgICAgb3N0b3JlID0gdHhuLm9iamVjdFN0b3JlKCJzdG9yZSIpOwog
ICAgICAgICB0LnN0ZXAoZnVuY3Rpb24oKXsKLSAgICAgICAgICAgIGFzc2VydF90aHJvd3MoIklu
dmFsaWRTdGF0ZUVycm9yIiwgZnVuY3Rpb24oKXsKKyAgICAgICAgICAgIGFzc2VydF90aHJvd3Nf
ZG9tKCJJbnZhbGlkU3RhdGVFcnJvciIsIGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgb3N0
b3JlLmNyZWF0ZUluZGV4KCJpbmRleCIsICJpbmRleGVkUHJvcGVydHkiKTsKICAgICAgICAgICAg
IH0pOwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9J
bmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9kZWxldGU2Lmh0bWwgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2Jq
ZWN0c3RvcmVfZGVsZXRlNi5odG1sCmluZGV4IDIyNTRlMDQzMjVmOTNhNGY0ZjdlNjZjZWJmMGU5
MGE4NTExYmIwNWYuLjE1Yzc0ODk1MmI5ZWVjZGM0MjdhMWJkOGU5OWE5ZDc3ZDhiZTU4ZDIgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93
c2luZy9pZGJvYmplY3RzdG9yZV9kZWxldGU2Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2RlbGV0ZTYu
aHRtbApAQCAtMjYsNyArMjYsNyBAQAogICAgICAgICB2YXIgdHhuID0gZGIudHJhbnNhY3Rpb24o
InN0b3JlIik7CiAgICAgICAgIHZhciBvc3RvcmUgPSB0eG4ub2JqZWN0U3RvcmUoInN0b3JlIik7
CiAgICAgICAgIHQuc3RlcChmdW5jdGlvbigpewotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygi
UmVhZE9ubHlFcnJvciIsIGZ1bmN0aW9uKCl7CisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2Rv
bSgiUmVhZE9ubHlFcnJvciIsIGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgb3N0b3JlLmRl
bGV0ZSgicHJpbWFyeUtleV8wIik7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Np
bmcvaWRib2JqZWN0c3RvcmVfZGVsZXRlNy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2RlbGV0ZTcuaHRtbApp
bmRleCBiZjE1N2I5NzQxNGFhMzA3OTc4MjYwMTM5MWY5ZWNiYjdjMTQxZjk0Li4wNjFkNmJkZDQx
MGRjZWNlZjBmMTkwMzk5ZjY4NGE5YWE2NGQzOTUzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfZGVs
ZXRlNy5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0
ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9kZWxldGU3Lmh0bWwKQEAgLTIzLDcgKzIzLDcgQEAK
IAogICAgIG9wZW5fcnEub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7CiAgICAgICAgIHQu
c3RlcChmdW5jdGlvbigpewotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygiSW52YWxpZFN0YXRl
RXJyb3IiLCBmdW5jdGlvbigpeworICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkludmFs
aWRTdGF0ZUVycm9yIiwgZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICBvc3RvcmUuZGVsZXRl
KCJwcmltYXJ5S2V5XzAiKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9p
ZGJvYmplY3RzdG9yZV9kZWxldGVJbmRleC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2RlbGV0ZUluZGV4Lmh0
bWwKaW5kZXggZGYyZjdmYWRjOTY3YzU4ODQzYjA1ZTZhMDFhN2Q1OGMyNTVkOGZmMS4uYmRhNDIz
NTQyZTI2MWFiNWE1ZmFkMjk4OGZmMDliMDJiYWIzZmFhMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3Jl
X2RlbGV0ZUluZGV4Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWRE
Qi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2RlbGV0ZUluZGV4Lmh0bWwKQEAgLTMy
LDcgKzMyLDcgQEAKICAgICAgICAgICAgICAgb2JqU3RvcmUgPSBkYi50cmFuc2FjdGlvbigidGVz
dCIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAub2JqZWN0U3RvcmUoInRlc3QiKTsKIAot
ICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygnTm90Rm91bmRFcnJvcicsCisgICAgICAgICAgICBh
c3NlcnRfdGhyb3dzX2RvbSgnTm90Rm91bmRFcnJvcicsCiAgICAgICAgICAgICAgICAgZnVuY3Rp
b24oKSB7IGluZGV4ID0gb2JqU3RvcmUuaW5kZXgoImluZGV4IikgfSk7CiAgICAgICAgICAgICBh
c3NlcnRfZXF1YWxzKGluZGV4LCB1bmRlZmluZWQpOwogICAgICAgICAgICAgdC5kb25lKCk7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJv
d3NpbmcvaWRib2JqZWN0c3RvcmVfZGVsZXRlZC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2RlbGV0ZWQuaHRt
bAppbmRleCBjZTcyYmJhNmRiMTEzMDdlNjc1YjYzZWY2M2RjNzQzNTM2MGQ2MWRkLi44ZTJmYzVj
Yjc2YjA1MjY4ZWIzNDNhNDE4ZWE3NDAwZDNjYmRiOTQxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVf
ZGVsZXRlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJp
dmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9kZWxldGVkLmh0bWwKQEAgLTI4LDE2ICsyOCwx
NiBAQAogICAgICAgICBkYi5kZWxldGVPYmplY3RTdG9yZSgic3RvcmUiKTsKICAgICAgICAgYXNz
ZXJ0X2VxdWFscyhkYi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCwgMCwgIm9iamVjdFN0b3JlTmFt
ZXMubGVuZ3RoIGFmdGVyIGRlbGV0ZSIpOwogCi0gICAgICAgIGFzc2VydF90aHJvd3MoRE9NRXhj
ZXB0aW9uLklOVkFMSURfU1RBVEVfRVJSLCBmdW5jdGlvbigpIHsgb2JqU3RvcmUuYWRkKDIpOyB9
KTsKLSAgICAgICAgYXNzZXJ0X3Rocm93cyhET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIs
IGZ1bmN0aW9uKCkgeyBvYmpTdG9yZS5wdXQoMyk7IH0pOwotICAgICAgICBhc3NlcnRfdGhyb3dz
KERPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUiwgZnVuY3Rpb24oKSB7IG9ialN0b3JlLmdl
dCgxKTsgfSk7Ci0gICAgICAgIGFzc2VydF90aHJvd3MoRE9NRXhjZXB0aW9uLklOVkFMSURfU1RB
VEVfRVJSLCBmdW5jdGlvbigpIHsgb2JqU3RvcmUuY2xlYXIoKTsgfSk7Ci0gICAgICAgIGFzc2Vy
dF90aHJvd3MoRE9NRXhjZXB0aW9uLklOVkFMSURfU1RBVEVfRVJSLCBmdW5jdGlvbigpIHsgb2Jq
U3RvcmUuY291bnQoKTsgfSk7Ci0gICAgICAgIGFzc2VydF90aHJvd3MoRE9NRXhjZXB0aW9uLklO
VkFMSURfU1RBVEVfRVJSLCBmdW5jdGlvbigpIHsgb2JqU3RvcmUuZGVsZXRlKDEpOyB9KTsKLSAg
ICAgICAgYXNzZXJ0X3Rocm93cyhET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIsIGZ1bmN0
aW9uKCkgeyBvYmpTdG9yZS5vcGVuQ3Vyc29yKCk7IH0pOwotICAgICAgICBhc3NlcnRfdGhyb3dz
KERPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUiwgZnVuY3Rpb24oKSB7IG9ialN0b3JlLmlu
ZGV4KCJpZHgiKTsgfSk7Ci0gICAgICAgIGFzc2VydF90aHJvd3MoRE9NRXhjZXB0aW9uLklOVkFM
SURfU1RBVEVfRVJSLCBmdW5jdGlvbigpIHsgb2JqU3RvcmUuZGVsZXRlSW5kZXgoImlkeCIpOyB9
KTsKLSAgICAgICAgYXNzZXJ0X3Rocm93cyhET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIs
IGZ1bmN0aW9uKCkgeyBvYmpTdG9yZS5jcmVhdGVJbmRleCgiaWR4MiIsICJhIik7IH0pOworICAg
ICAgICBhc3NlcnRfdGhyb3dzX2RvbShET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIsIGZ1
bmN0aW9uKCkgeyBvYmpTdG9yZS5hZGQoMik7IH0pOworICAgICAgICBhc3NlcnRfdGhyb3dzX2Rv
bShET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIsIGZ1bmN0aW9uKCkgeyBvYmpTdG9yZS5w
dXQoMyk7IH0pOworICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbShET01FeGNlcHRpb24uSU5WQUxJ
RF9TVEFURV9FUlIsIGZ1bmN0aW9uKCkgeyBvYmpTdG9yZS5nZXQoMSk7IH0pOworICAgICAgICBh
c3NlcnRfdGhyb3dzX2RvbShET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIsIGZ1bmN0aW9u
KCkgeyBvYmpTdG9yZS5jbGVhcigpOyB9KTsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oRE9N
RXhjZXB0aW9uLklOVkFMSURfU1RBVEVfRVJSLCBmdW5jdGlvbigpIHsgb2JqU3RvcmUuY291bnQo
KTsgfSk7CisgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKERPTUV4Y2VwdGlvbi5JTlZBTElEX1NU
QVRFX0VSUiwgZnVuY3Rpb24oKSB7IG9ialN0b3JlLmRlbGV0ZSgxKTsgfSk7CisgICAgICAgIGFz
c2VydF90aHJvd3NfZG9tKERPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUiwgZnVuY3Rpb24o
KSB7IG9ialN0b3JlLm9wZW5DdXJzb3IoKTsgfSk7CisgICAgICAgIGFzc2VydF90aHJvd3NfZG9t
KERPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUiwgZnVuY3Rpb24oKSB7IG9ialN0b3JlLmlu
ZGV4KCJpZHgiKTsgfSk7CisgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKERPTUV4Y2VwdGlvbi5J
TlZBTElEX1NUQVRFX0VSUiwgZnVuY3Rpb24oKSB7IG9ialN0b3JlLmRlbGV0ZUluZGV4KCJpZHgi
KTsgfSk7CisgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKERPTUV4Y2VwdGlvbi5JTlZBTElEX1NU
QVRFX0VSUiwgZnVuY3Rpb24oKSB7IG9ialN0b3JlLmNyZWF0ZUluZGV4KCJpZHgyIiwgImEiKTsg
fSk7CiAgICAgfQogCiAgICAgb3Blbl9ycS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2lu
Zy9pZGJvYmplY3RzdG9yZV9nZXQ2Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5k
ZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfZ2V0Ni5odG1sCmluZGV4IDVh
N2I1NDc3YjhhNTU4YzAyZWQ3YjJiMTJjMzA4ZTc0NTYyMDcxYzUuLmZhNWZjNmJmYzZiZDU0Mzkw
ZTc1ODA4OWMzY2I0OWQzNzhkMjk0YTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9nZXQ2Lmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5n
L2lkYm9iamVjdHN0b3JlX2dldDYuaHRtbApAQCAtMjAsNyArMjAsNyBAQAogICAgICAgICB2YXIg
c3RvcmUgPSBkYi50cmFuc2FjdGlvbigic3RvcmUiKQogICAgICAgICAgICAgICAgICAgICAgIC5v
YmplY3RTdG9yZSgic3RvcmUiKTsKICAgICAgICAgc3RvcmUudHJhbnNhY3Rpb24uYWJvcnQoKTsK
LSAgICAgICAgYXNzZXJ0X3Rocm93cygiVHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yIiwgZnVuY3Rp
b24gKCkgeworICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiVHJhbnNhY3Rpb25JbmFjdGl2ZUVy
cm9yIiwgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgc3RvcmUuZ2V0KDEpOwogICAgICAgICB9
LCAidGhyb3cgVHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yIG9uIGFib3J0ZWQgdHJhbnNhY3Rpb24u
Iik7CiAgICAgICAgIHQuZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2dldDcuaHRtbCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJv
YmplY3RzdG9yZV9nZXQ3Lmh0bWwKaW5kZXggNzk1NjEwYzllZWEyZmI4ZDNhNzczNWRlMTI5YTBh
ZTYxZWU3MmExNS4uYWFkZTlhYTRjOGZiOTVmMDY0YTk3ZTc3YzIxZjJiNTBjNWU2Y2FkNCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dz
aW5nL2lkYm9iamVjdHN0b3JlX2dldDcuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfZ2V0Ny5odG1sCkBA
IC0xOSw3ICsxOSw3IEBACiAgICAgb3Blbl9ycS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihlKSB7CiAg
ICAgICAgIHZhciBzdG9yZSA9IGRiLnRyYW5zYWN0aW9uKCJzdG9yZSIpCiAgICAgICAgICAgICAg
ICAgICAgICAgLm9iamVjdFN0b3JlKCJzdG9yZSIpCi0gICAgICAgIGFzc2VydF90aHJvd3MoIkRh
dGFFcnJvciIsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkRhdGFF
cnJvciIsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIHN0b3JlLmdldChudWxsKQogICAgICAg
ICB9LCAidGhyb3cgRGF0YUVycm9yIHdoZW4gdXNpbmcgaW52YWxpZCBrZXkuIik7CiAgICAgICAg
IHQuZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWRE
Qi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX29wZW5DdXJzb3JfaW52YWxpZC5odG1s
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lk
Ym9iamVjdHN0b3JlX29wZW5DdXJzb3JfaW52YWxpZC5odG1sCmluZGV4IGNmYjMzMzMwOTI0NGQ4
MjUwZTY5NWUxYjkyMTdhYTBiYTdkMzY1YmMuLjliYzI4NzM0MjQyN2Y5ZmIzYjQ0ZWYwNTNhZjQ5
MTUwYmYwOGViZGYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVk
REItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9vcGVuQ3Vyc29yX2ludmFsaWQuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Np
bmcvaWRib2JqZWN0c3RvcmVfb3BlbkN1cnNvcl9pbnZhbGlkLmh0bWwKQEAgLTI4LDEzICsyOCwx
MyBAQAogICAgICAgICBhc3luY190ZXN0KGRvY3VtZW50LnRpdGxlICsgIiAtIHBhc3Mgc29tZXRo
aW5nIG90aGVyIHRoYW4gbnVtYmVyIikuc3RlcChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICB2
YXIgaWR4ID0gZGIudHJhbnNhY3Rpb24oInRlc3QiKS5vYmplY3RTdG9yZSgidGVzdCIpLmluZGV4
KCJpbmRleCIpOwogCi0gICAgICAgICAgICBhc3NlcnRfdGhyb3dzKCJEYXRhRXJyb3IiLAorICAg
ICAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkRhdGFFcnJvciIsCiAgICAgICAgICAgICAgICAg
ZnVuY3Rpb24oKSB7IGlkeC5vcGVuQ3Vyc29yKHsgbG93ZXI6ICJhIiB9KTsgfSk7CiAKLSAgICAg
ICAgICAgIGFzc2VydF90aHJvd3MoIkRhdGFFcnJvciIsCisgICAgICAgICAgICBhc3NlcnRfdGhy
b3dzX2RvbSgiRGF0YUVycm9yIiwKICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsgaWR4Lm9w
ZW5DdXJzb3IoeyBsb3dlcjogImEiLCBsb3dlck9wZW46IGZhbHNlIH0pOyB9KTsKIAotICAgICAg
ICAgICAgYXNzZXJ0X3Rocm93cygiRGF0YUVycm9yIiwKKyAgICAgICAgICAgIGFzc2VydF90aHJv
d3NfZG9tKCJEYXRhRXJyb3IiLAogICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyBpZHgub3Bl
bkN1cnNvcih7IGxvd2VyOiAiYSIsIGxvd2VyT3BlbjogZmFsc2UsIHVwcGVyOiBudWxsLCB1cHBl
ck9wZW46IGZhbHNlIH0pOyB9KTsKIAogICAgICAgICAgICAgdGhpcy5kb25lKCk7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Npbmcv
aWRib2JqZWN0c3RvcmVfcHV0MTAuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRl
eGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9wdXQxMC5odG1sCmluZGV4IDRk
MjliYTM5Zjc0ZmExMjBlMjI0YmZiYzhmMmQzMmY1NWVmZWVkNDEuLjliNmFmMTc0NGQzMDc2YmIz
ODkxODFiODc0Y2NlNjJmODBlMTEyZTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9wdXQxMC5odG1s
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2lu
Zy9pZGJvYmplY3RzdG9yZV9wdXQxMC5odG1sCkBAIC0xOCw3ICsxOCw3IEBACiAgICAgICAgIHZh
ciBycSwKICAgICAgICAgICBvYmpTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCJzdG9yZSIs
IHsga2V5UGF0aDogImtleSIgfSk7CiAKLSAgICAgICAgYXNzZXJ0X3Rocm93cygiRGF0YUVycm9y
IiwKKyAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkRhdGFFcnJvciIsCiAgICAgICAgICAgICBm
dW5jdGlvbigpIHsgcnEgPSBvYmpTdG9yZS5wdXQocmVjb3JkKTsgfSk7CiAKICAgICAgICAgYXNz
ZXJ0X2VxdWFscyhycSwgdW5kZWZpbmVkKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9wdXQxMS5o
dG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5n
L2lkYm9iamVjdHN0b3JlX3B1dDExLmh0bWwKaW5kZXggMmZlZDQzMzljNjNhZTUwNThhZTA1MzBl
NWJkYzNlZDMxZjQ2MzEzMS4uNTQ2NDM1M2NmM2FlZjkxMjhkZTI2NjgzMmExOTE3ODhlNjY5YjFi
MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRl
LWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX3B1dDExLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX3B1dDEx
Lmh0bWwKQEAgLTE4LDcgKzE4LDcgQEAKICAgICAgICAgdmFyIHJxLAogICAgICAgICAgIG9ialN0
b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoInN0b3JlIiwgeyBrZXlQYXRoOiAia2V5IiB9KTsK
IAotICAgICAgICBhc3NlcnRfdGhyb3dzKCJEYXRhRXJyb3IiLAorICAgICAgICBhc3NlcnRfdGhy
b3dzX2RvbSgiRGF0YUVycm9yIiwKICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyBycSA9IG9ialN0
b3JlLnB1dChyZWNvcmQpOyB9KTsKIAogICAgICAgICBhc3NlcnRfZXF1YWxzKHJxLCB1bmRlZmlu
ZWQpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2
YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX3B1dDEyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfcHV0MTIu
aHRtbAppbmRleCBkZDVlYWZlOGNiODU5MjAwZDRjN2U1MWQyNjQ2MmE4NTU3YTI0ZWUyLi42ZWUz
YzRiNWVmM2IzOWJlYmE4NDM3ZWY1ZGJiNzM4NjlmZDkwNmY3IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3Rv
cmVfcHV0MTIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXBy
aXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfcHV0MTIuaHRtbApAQCAtMTgsNyArMTgsNyBA
QAogICAgICAgICB2YXIgcnEsCiAgICAgICAgICAgb2JqU3RvcmUgPSBkYi5jcmVhdGVPYmplY3RT
dG9yZSgic3RvcmUiLCB7IGtleVBhdGg6ICJrZXkiIH0pOwogCi0gICAgICAgIGFzc2VydF90aHJv
d3MoIkRhdGFFcnJvciIsCisgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJEYXRhRXJyb3IiLAog
ICAgICAgICAgICAgZnVuY3Rpb24oKSB7IHJxID0gb2JqU3RvcmUucHV0KHJlY29yZCk7IH0pOwog
CiAgICAgICAgIGFzc2VydF9lcXVhbHMocnEsIHVuZGVmaW5lZCk7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0
c3RvcmVfcHV0MTMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJp
dmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9wdXQxMy5odG1sCmluZGV4IDA3YjkwM2FmMWMw
MTUyOGFlZWRmNzVkMDU1OTdlYzYzOWUwYzc1MGUuLmVjOWE5ZjBjNTIwMmQ4YWI1NmJmZTRmOWE4
NTVmOGQ0NTQ3NTRiOTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRl
eGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9wdXQxMy5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmpl
Y3RzdG9yZV9wdXQxMy5odG1sCkBAIC0xOCw3ICsxOCw3IEBACiAgICAgICAgIHZhciBycSwKICAg
ICAgICAgICBvYmpTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCJzdG9yZSIpOwogCi0gICAg
ICAgIGFzc2VydF90aHJvd3MoIkRhdGFFcnJvciIsCisgICAgICAgIGFzc2VydF90aHJvd3NfZG9t
KCJEYXRhRXJyb3IiLAogICAgICAgICAgICAgZnVuY3Rpb24oKSB7IHJxID0gb2JqU3RvcmUucHV0
KHJlY29yZCwgeyB2YWx1ZTogMSB9KTsgfSk7CiAKICAgICAgICAgYXNzZXJ0X2VxdWFscyhycSwg
dW5kZWZpbmVkKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVk
REItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9wdXQxNS5odG1sIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3Jl
X3B1dDE1Lmh0bWwKaW5kZXggNjVmZDcxNjZlODAzM2E1ZDk4N2E0OWRjYTQxYTA5ZTE4NmJhYzk2
MS4uNTQ1MmZmNzE4MzE2Yjc0OGY2M2ZhMzQ2OTNiYjE1YmYzNGEzMWEzOCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9i
amVjdHN0b3JlX3B1dDE1Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4
ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX3B1dDE1Lmh0bWwKQEAgLTIxLDcg
KzIxLDcgQEAKICAgICAgICAgdmFyIHR4biA9IGRiLnRyYW5zYWN0aW9uKCJzdG9yZSIpOwogICAg
ICAgICB2YXIgb3N0b3JlID0gdHhuLm9iamVjdFN0b3JlKCJzdG9yZSIpOwogICAgICAgICB0LnN0
ZXAoZnVuY3Rpb24oKXsKLSAgICAgICAgICAgIGFzc2VydF90aHJvd3MoIlJlYWRPbmx5RXJyb3Ii
LCBmdW5jdGlvbigpeworICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIlJlYWRPbmx5RXJy
b3IiLCBmdW5jdGlvbigpewogICAgICAgICAgICAgICAgIG9zdG9yZS5wdXQoe3BLZXk6ICJwcmlt
YXJ5S2V5XzAifSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2Jq
ZWN0c3RvcmVfcHV0MTYuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREIt
cHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9wdXQxNi5odG1sCmluZGV4IDE0ZGM4Njgx
Y2QzMjY3N2E3NWJmNTZiZDI0Yjg1YzkyZWMyMzkzYzguLjBlOTFjZGVjZTBiYjI4YzEwODAxNjll
ZTcxMzg4NDQzNmNiMTg0NDMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9J
bmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9wdXQxNi5odG1sCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJv
YmplY3RzdG9yZV9wdXQxNi5odG1sCkBAIC0yMSw3ICsyMSw3IEBACiAKICAgICBvcGVuX3JxLm9u
c3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgewogICAgICAgICB0LnN0ZXAoZnVuY3Rpb24oKXsK
LSAgICAgICAgICAgIGFzc2VydF90aHJvd3MoIkludmFsaWRTdGF0ZUVycm9yIiwgZnVuY3Rpb24o
KXsKKyAgICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlkU3RhdGVFcnJvciIsIGZ1
bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgb3N0b3JlLnB1dCh7cEtleTogInByaW1hcnlLZXlf
MCJ9KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9y
ZV9wdXQ5Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUt
YnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfcHV0OS5odG1sCmluZGV4IDc3OWFlZDdmMTY3NmVhMjk0
NzQwNTk5YTVhYTQ4YzE2MmYxZTVlYmMuLjIzYWU5Yjk2MDUzMjc0Yjc5MjYyMDQ1ZmYxNjcwYTQ2
OWU3ZjMyNzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREIt
cHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9wdXQ5Lmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3Jl
X3B1dDkuaHRtbApAQCAtMTYsNyArMTYsNyBAQAogICAgICAgICAgIGRiID0gZS50YXJnZXQucmVz
dWx0LAogICAgICAgICAgIG9ialN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoInN0b3JlIiwg
eyBrZXlQYXRoOiAia2V5IiB9KTsKIAotICAgICAgICBhc3NlcnRfdGhyb3dzKCJEYXRhRXJyb3Ii
LAorICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiRGF0YUVycm9yIiwKICAgICAgICAgICAgIGZ1
bmN0aW9uKCkgeyBycSA9IG9ialN0b3JlLnB1dChyZWNvcmQsIDEpOyB9KTsKIAogICAgICAgICBh
c3NlcnRfZXF1YWxzKHJxLCB1bmRlZmluZWQpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2tleV9pbnZhbGlkLmh0bWwgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Npbmcva2V5X2lu
dmFsaWQuaHRtbAppbmRleCBmNzJkYTM3NTliNTRiZDdjNWY4NDU0MTdmNDY5ZWExNWE1Njk3MTNh
Li42NjNkMjE2MDk5YTBiMzQ0NjRiNWUwNmIyN2Y4ZTYzYWIwZWRiYzJiIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Npbmcva2V5X2lu
dmFsaWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZh
dGUtYnJvd3Npbmcva2V5X2ludmFsaWQuaHRtbApAQCAtMzIsMTMgKzMyLDEzIEBACiAgICAgICAg
IC8vIHNldCB0aGUgY3VycmVudCB0ZXN0LCBhbmQgcnVuIGl0CiAgICAgICAgIGRiLnNldFRlc3Qo
dCkub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgb2JqU3RvcmUg
PSBvYmpTdG9yZSB8fCBlLnRhcmdldC5yZXN1bHQuY3JlYXRlT2JqZWN0U3RvcmUoInN0b3JlIik7
Ci0gICAgICAgICAgICBhc3NlcnRfdGhyb3dzKCdEYXRhRXJyb3InLCBmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCdEYXRhRXJyb3InLCBmdW5jdGlvbigpIHsKICAg
ICAgICAgICAgICAgICBvYmpTdG9yZS5hZGQoInZhbHVlIiwga2V5KTsKICAgICAgICAgICAgIH0p
OwogCiAgICAgICAgICAgICBpZiAoaXNfY2xvbmVhYmxlKGtleSkpIHsKICAgICAgICAgICAgICAg
ICBvYmpTdG9yZTIgPSBvYmpTdG9yZTIgfHwgZS50YXJnZXQucmVzdWx0LmNyZWF0ZU9iamVjdFN0
b3JlKCJzdG9yZTIiLCB7IGtleVBhdGg6IFsieCIsICJrZXlwYXRoIl0gfSk7Ci0gICAgICAgICAg
ICAgICAgYXNzZXJ0X3Rocm93cygnRGF0YUVycm9yJywgZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICAgICAgYXNzZXJ0X3Rocm93c19kb20oJ0RhdGFFcnJvcicsIGZ1bmN0aW9uKCkgewogICAgICAg
ICAgICAgICAgICAgICBvYmpTdG9yZTIuYWRkKHsgeDogInZhbHVlIiwga2V5cGF0aDoga2V5IH0p
OwogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2tleXBhdGhfaW52
YWxpZC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJy
b3dzaW5nL2tleXBhdGhfaW52YWxpZC5odG1sCmluZGV4IGNjMWQ0NDQxNmZiZWFkMmVlZmJhN2U0
ZDExZWEwNzc0ZTVmMjI5MDIuLjNjYmZiZTgwZTJhMTVhNTZhNDE5MTA4ZTViNTcwNDM4ZTkzM2I4
NGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0
ZS1icm93c2luZy9rZXlwYXRoX2ludmFsaWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Npbmcva2V5cGF0aF9pbnZhbGlkLmh0bWwKQEAg
LTIwLDEyICsyMCwxMiBAQAogCiAgICAgICAgIG9wZW5ycS5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5j
dGlvbihlKSB7CiAgICAgICAgICAgICB2YXIgZGIgPSBlLnRhcmdldC5yZXN1bHQ7Ci0gICAgICAg
ICAgICBhc3NlcnRfdGhyb3dzKCdTeW50YXhFcnJvcicsIGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgYXNzZXJ0X3Rocm93c19kb20oJ1N5bnRheEVycm9yJywgZnVuY3Rpb24oKSB7CiAgICAgICAg
ICAgICAgICAgICAgIGRiLmNyZWF0ZU9iamVjdFN0b3JlKHN0b3JlX25hbWUsIHsga2V5UGF0aDog
a2V5cGF0aCB9KQogICAgICAgICAgICAgICAgIH0sICJjcmVhdGVPYmplY3RTdG9yZSB3aXRoIGtl
eVBhdGgiKTsKIAogICAgICAgICAgICAgc3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZShzdG9y
ZV9uYW1lKTsKLSAgICAgICAgICAgIGFzc2VydF90aHJvd3MoJ1N5bnRheEVycm9yJywgZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgnU3ludGF4RXJyb3InLCBmdW5j
dGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgc3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4Jywg
a2V5cGF0aCk7CiAgICAgICAgICAgICAgICAgfSwgImNyZWF0ZUluZGV4IHdpdGgga2V5UGF0aCIp
OwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZh
dGUtYnJvd3NpbmcvdHJhbnNhY3Rpb24tY3JlYXRlX2luX3ZlcnNpb25jaGFuZ2UuaHRtbCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy90cmFuc2Fj
dGlvbi1jcmVhdGVfaW5fdmVyc2lvbmNoYW5nZS5odG1sCmluZGV4IDAwMjc5MTZkMmU1MDU4MjY4
YTAzOTNkYTk3NmE5NjFkYWU3ZTZlNDYuLjA0YTFmMTdlOWY2ODUyMWY3NGE2ZjA2N2M4OTE3YmJm
MDFiOTQ5MjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREIt
cHJpdmF0ZS1icm93c2luZy90cmFuc2FjdGlvbi1jcmVhdGVfaW5fdmVyc2lvbmNoYW5nZS5odG1s
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2lu
Zy90cmFuc2FjdGlvbi1jcmVhdGVfaW5fdmVyc2lvbmNoYW5nZS5odG1sCkBAIC0xNywxNCArMTcs
MTQgQEAKICAgICAgICAgICAgIC5hZGQoInZlcnNpb25jaGFuZ2UxIiwgMSkKICAgICAgICAgICAg
IC5hZGRFdmVudExpc3RlbmVyKCJzdWNjZXNzIiwgbG9nKCJ2ZXJzaW9uY2hhbmdlX2FkZC5zdWNj
ZXNzIikpCiAKLSAgICAgICAgYXNzZXJ0X3Rocm93cygnSW52YWxpZFN0YXRlRXJyb3InLCBmdW5j
dGlvbigpIHsgZGIudHJhbnNhY3Rpb24oInN0b3JlIikgfSkKKyAgICAgICAgYXNzZXJ0X3Rocm93
c19kb20oJ0ludmFsaWRTdGF0ZUVycm9yJywgZnVuY3Rpb24oKSB7IGRiLnRyYW5zYWN0aW9uKCJz
dG9yZSIpIH0pCiAKICAgICAgICAgZS50YXJnZXQudHJhbnNhY3Rpb24KICAgICAgICAgICAgIC5v
YmplY3RTdG9yZSgic3RvcmUiKQogICAgICAgICAgICAgLmNvdW50KDIpCiAgICAgICAgICAgICAu
YWRkRXZlbnRMaXN0ZW5lcigic3VjY2VzcyIsIGxvZygidmVyc2lvbmNoYW5nZV9jb3VudC5zdWNj
ZXNzIikpCiAKLSAgICAgICAgYXNzZXJ0X3Rocm93cygnSW52YWxpZFN0YXRlRXJyb3InLCBmdW5j
dGlvbigpIHsgZGIudHJhbnNhY3Rpb24oInN0b3JlIiwgInJlYWR3cml0ZSIpIH0pCisgICAgICAg
IGFzc2VydF90aHJvd3NfZG9tKCdJbnZhbGlkU3RhdGVFcnJvcicsIGZ1bmN0aW9uKCkgeyBkYi50
cmFuc2FjdGlvbigic3RvcmUiLCAicmVhZHdyaXRlIikgfSkKIAogICAgICAgICBvcGVuX3JxLnRy
YW5zYWN0aW9uCiAgICAgICAgICAgICAub2JqZWN0U3RvcmUoInN0b3JlIikKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ludGVyc2VjdGlvbi1vYnNlcnZlci9pbnRlcnNlY3Rpb24tb2JzZXJ2ZXIt
aW50ZXJmYWNlLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnRlcnNlY3Rpb24tb2JzZXJ2ZXIvaW50ZXJz
ZWN0aW9uLW9ic2VydmVyLWludGVyZmFjZS5odG1sCmluZGV4IDA5YjEzNDMwZmU0MWE5ZDVhMjdm
OTc3NzI4Y2QwZTlmNDhiYTVkMTguLmMyZDI5MTliMWFlOTdmMjYwZDJhOWNjYjhmZDU4YTU1Y2Iz
MDlkYzcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ludGVyc2VjdGlvbi1vYnNlcnZlci9pbnRl
cnNlY3Rpb24tb2JzZXJ2ZXItaW50ZXJmYWNlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW50ZXJz
ZWN0aW9uLW9ic2VydmVyL2ludGVyc2VjdGlvbi1vYnNlcnZlci1pbnRlcmZhY2UuaHRtbApAQCAt
NTgsMzIgKzU4LDMyIEBACiAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMob2JzZXJ2ZXIudGhy
ZXNob2xkcywgW051bWJlci5NSU5fVkFMVUVdKTsKICAgICB9LCdTbWFsbFBvc2l0aXZlVGhyZXNo
b2xkJyk7CiAgICAgdGVzdChmdW5jdGlvbigpIHsKLSAgICAgICAgYXNzZXJ0X3Rocm93cyhSYW5n
ZUVycm9yKCksIGZ1bmN0aW9uKCkgeworICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFJhbmdlRXJy
b3IsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGZ1
bmN0aW9uKCkge30sICB7IHRocmVzaG9sZDogLU51bWJlci5NSU5fVkFMVUUgfSk7CiAgICAgICAg
IH0pCiAgICAgfSwnU21hbGxOZWdhdGl2ZVRocmVzaG9sZCcpOwogICAgIHRlc3QoZnVuY3Rpb24o
KSB7Ci0gICAgICAgIGFzc2VydF90aHJvd3MoUmFuZ2VFcnJvcigpLCBmdW5jdGlvbigpIHsKKyAg
ICAgICAgYXNzZXJ0X3Rocm93c19qcyhSYW5nZUVycm9yLCBmdW5jdGlvbigpIHsKICAgICAgICAg
ICAgIG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihmdW5jdGlvbigpIHt9LCAgeyB0aHJlc2hvbGQ6
IE51bWJlci5NQVhfVkFMVUUgfSk7CiAgICAgICAgIH0pCiAgICAgfSwnTGFyZ2VQb3NpdGl2ZVRo
cmVzaG9sZCcpOwogICAgIHRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgICAgIGFzc2VydF90aHJvd3Mo
UmFuZ2VFcnJvcigpLCBmdW5jdGlvbigpIHsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhSYW5n
ZUVycm9yLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgIG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZl
cihmdW5jdGlvbigpIHt9LCAgeyB0aHJlc2hvbGQ6IC1OdW1iZXIuTUFYX1ZBTFVFIH0pOwogICAg
ICAgICB9KQogICAgIH0sJ0xhcmdlTmVnYXRpdmVUaHJlc2hvbGQnKTsKICAgICB0ZXN0KGZ1bmN0
aW9uKCkgewotICAgICAgICBhc3NlcnRfdGhyb3dzKFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsK
KyAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgewogICAgICAg
ICAgICAgbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGZ1bmN0aW9uKCkge30sICB7IHRocmVzaG9s
ZDogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZIH0pOwogICAgICAgICB9KQogICAgIH0sJ1Bvc2l0
aXZlSW5maW5pdHlUaHJlc2hvbGQnKTsKICAgICB0ZXN0KGZ1bmN0aW9uKCkgewotICAgICAgICBh
c3NlcnRfdGhyb3dzKFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsKKyAgICAgICAgYXNzZXJ0X3Ro
cm93c19qcyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgbmV3IEludGVyc2Vj
dGlvbk9ic2VydmVyKGZ1bmN0aW9uKCkge30sICB7IHRocmVzaG9sZDogTnVtYmVyLk5FR0FUSVZF
X0lORklOSVRZIH0pOwogICAgICAgICB9KQogICAgIH0sJ05lZ2F0aXZlSW5maW5pdHlUaHJlc2hv
bGQnKTsKICAgICB0ZXN0KGZ1bmN0aW9uKCkgewotICAgICAgICBhc3NlcnRfdGhyb3dzKFR5cGVF
cnJvcigpLCBmdW5jdGlvbigpIHsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3Is
IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGZ1bmN0
aW9uKCkge30sICB7IHRocmVzaG9sZDogTnVtYmVyLk5hTiB9KTsKICAgICAgICAgfSkKICAgICB9
LCdOYU5UaHJlc2hvbGQnKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS9kb20tZ2V0
dGVycy10eXBlLWNoZWNrLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9kb20vZG9tLWdldHRlcnMtdHlw
ZS1jaGVjay5odG1sCmluZGV4IDdmZTQzMjQ2OGE2OTY0ODMwNzkyZTFiMDE4MWY1OTFmYzA2Zjll
YTEuLmZhZTE1ZjdkZTZkOWZkNjBhYmFkYmEzZjdkZGZkNWY1ZWE0ZjFhMGIgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2pzL2RvbS9kb20tZ2V0dGVycy10eXBlLWNoZWNrLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvanMvZG9tL2RvbS1nZXR0ZXJzLXR5cGUtY2hlY2suaHRtbApAQCAtMTYsMTAgKzE2
LDEwIEBACiAgICAgfSwgIkRPTSBnZXR0ZXIgc2hvdWxkIGJlIGEgZnVuY3Rpb24iKTsKIAogICAg
IHRlc3QoKCkgPT4gewotICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkg
PT4geyBnZXR0ZXIoKTsgfSwgIkRPTSBnZXR0ZXIgdGhyb3dzIGFuIGVycm9yIHdpdGggdW5kZWZp
bmVkIik7Ci0gICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiB7IGdl
dHRlci5jYWxsKG51bGwpOyB9LCAiRE9NIGdldHRlciB0aHJvd3MgYW4gZXJyb3Igd2l0aCBudWxs
Iik7Ci0gICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiB7IGdldHRl
ci5jYWxsKHt9KTsgfSwgIkRPTSBnZXR0ZXIgdGhyb3dzIGFuIGVycm9yIHdpdGggdW5yZWxhdGVk
IG9iamVjdCIpOwotICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4g
eyBnZXR0ZXIuY2FsbChkb2N1bWVudC5jcmVhdGVUZXh0KCJIZWxsbyIpKTsgfSwgIkRPTSBnZXR0
ZXIgdGhyb3dzIGFuIGVycm9yIHdpdGggdW5yZWxhdGVkIERPTSBvYmplY3QiKTsKKyAgICAgICAg
YXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IHsgZ2V0dGVyKCk7IH0sICJET00gZ2V0
dGVyIHRocm93cyBhbiBlcnJvciB3aXRoIHVuZGVmaW5lZCIpOworICAgICAgICBhc3NlcnRfdGhy
b3dzX2pzKFR5cGVFcnJvciwgKCkgPT4geyBnZXR0ZXIuY2FsbChudWxsKTsgfSwgIkRPTSBnZXR0
ZXIgdGhyb3dzIGFuIGVycm9yIHdpdGggbnVsbCIpOworICAgICAgICBhc3NlcnRfdGhyb3dzX2pz
KFR5cGVFcnJvciwgKCkgPT4geyBnZXR0ZXIuY2FsbCh7fSk7IH0sICJET00gZ2V0dGVyIHRocm93
cyBhbiBlcnJvciB3aXRoIHVucmVsYXRlZCBvYmplY3QiKTsKKyAgICAgICAgYXNzZXJ0X3Rocm93
c19qcyhUeXBlRXJyb3IsICgpID0+IHsgZ2V0dGVyLmNhbGwoZG9jdW1lbnQuY3JlYXRlVGV4dCgi
SGVsbG8iKSk7IH0sICJET00gZ2V0dGVyIHRocm93cyBhbiBlcnJvciB3aXRoIHVucmVsYXRlZCBE
T00gb2JqZWN0Iik7CiAgICAgfSwgIkRPTSBnZXR0ZXIgdGhyb3dzIGFuIGVycm9yIHdpdGggdW5y
ZWxhdGVkIHZhbHVlcyIpOwogCiAgICAgdGVzdCgoKSA9PiB7CkBAIC0zMiwxNCArMzIsMTQgQEAK
ICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgInNjcm9sbFRvcCIsIHsKICAg
ICAgICAgICAgIGdldDogZ2V0dGVyCiAgICAgICAgIH0pOwotICAgICAgICBhc3NlcnRfdGhyb3dz
KG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4geyBvYmplY3Quc2Nyb2xsVG9wOyB9KTsKKyAgICAgICAg
YXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IHsgb2JqZWN0LnNjcm9sbFRvcDsgfSk7
CiAgICAgfSwgIkRPTSBnZXR0ZXIgYWNjZXNzIHRocm93cyBhbiBlcnJvciB3aXRoIHVucmVsYXRl
ZCBvYmplY3QiKTsKIAogICAgIHRlc3QoKCkgPT4gewogICAgICAgICB2YXIgb2JqZWN0ID0gewog
ICAgICAgICAgICAgX19wcm90b19fOiBFbGVtZW50LnByb3RvdHlwZQogICAgICAgICB9OwotICAg
ICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4geyBvYmplY3Quc2Nyb2xs
VG9wOyB9KTsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IHsgb2Jq
ZWN0LnNjcm9sbFRvcDsgfSk7CiAgICAgfSwgIkRPTSBnZXR0ZXIgYWNjZXNzIHRocm91Z2ggRWxl
bWVudC5wcm90b3R5cGUgdGhyb3dzIGFuIGVycm9yIHdpdGggdW5yZWxhdGVkIG9iamVjdCIpOwog
PC9zY3JpcHQ+CiA8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vbGVnYWN5
LXBsYXRmb3JtLW9iamVjdC1kZWZpbmVPd25Qcm9wZXJ0eS5odG1sIGIvTGF5b3V0VGVzdHMvanMv
ZG9tL2xlZ2FjeS1wbGF0Zm9ybS1vYmplY3QtZGVmaW5lT3duUHJvcGVydHkuaHRtbAppbmRleCBk
NGE5MmJjNzIzMmZlMDVkYjE5MGM3NjJkY2FiNDIwZDMxOGZiMjY1Li40NWZmNWVhYzdlMmIzZTEx
ZmRkN2RlZDhlMTg2MDA5MGU1NDkxYTBhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9kb20v
bGVnYWN5LXBsYXRmb3JtLW9iamVjdC1kZWZpbmVPd25Qcm9wZXJ0eS5odG1sCisrKyBiL0xheW91
dFRlc3RzL2pzL2RvbS9sZWdhY3ktcGxhdGZvcm0tb2JqZWN0LWRlZmluZU93blByb3BlcnR5Lmh0
bWwKQEAgLTUyLDcgKzUyLDcgQEAKICAgICAgICAgZWxlbWVudC5kYXRhc2V0WyJhIl0gPSAidmFs
dWUxIjsKICAgICAgICAgZWxlbWVudC5kYXRhc2V0WyJiIl0gPSAidmFsdWUyIjsKICAgICAgICAg
Ci0gICAgICAgIGFzc2VydF90aHJvd3MoIlN5bnRheEVycm9yIiwgKCkgPT4geworICAgICAgICBh
c3NlcnRfdGhyb3dzX2RvbSgiU3ludGF4RXJyb3IiLCAoKSA9PiB7CiAgICAgICAgICAgICBPYmpl
Y3QuZGVmaW5lUHJvcGVydHkoZWxlbWVudC5kYXRhc2V0LCAiLWludmFsaWQiLCB7IHZhbHVlOiAi
dmFsdWUzIiB9KTsgICAgICAgICAgICAKICAgICAgICAgfSk7CiAgICAgICAgIGFzc2VydF9ub3Rf
ZXF1YWxzKGVsZW1lbnQuZGF0YXNldFsiLWludmFsaWQiXSwgJ3ZhbHVlMycpOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvanMvZG9tL3Bvc3QtbWVzc2FnZS1zeW1ib2wuaHRtbCBiL0xheW91dFRl
c3RzL2pzL2RvbS9wb3N0LW1lc3NhZ2Utc3ltYm9sLmh0bWwKaW5kZXggN2ExY2UwMGMzOWQ0ZWM4
ZmVkMjY0ZDZlNzNhNTkzNDU3NWIyNzZhZC4uYmNiNjY4YTU0MThjZDNlYWQ2MGU0NTFjNjY0NzFm
OWY2NjRiYTEwMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvZG9tL3Bvc3QtbWVzc2FnZS1z
eW1ib2wuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20vcG9zdC1tZXNzYWdlLXN5bWJvbC5o
dG1sCkBAIC03LDE2ICs3LDE2IEBACiA8Ym9keT4KIDxzY3JpcHQ+CiB0ZXN0KCgpID0+IHsKLSAg
ICBhc3NlcnRfdGhyb3dzKCJEQVRBX0NMT05FX0VSUiIsICgpID0+IHsKKyAgICBhc3NlcnRfdGhy
b3dzX2RvbSgiREFUQV9DTE9ORV9FUlIiLCAoKSA9PiB7CiAgICAgICAgIHdpbmRvdy5wb3N0TWVz
c2FnZShTeW1ib2woIkNvY29hIiksICIqIik7CiAgICAgfSk7Ci0gICAgYXNzZXJ0X3Rocm93cygi
REFUQV9DTE9ORV9FUlIiLCAoKSA9PiB7CisgICAgYXNzZXJ0X3Rocm93c19kb20oIkRBVEFfQ0xP
TkVfRVJSIiwgKCkgPT4gewogICAgICAgICB3aW5kb3cucG9zdE1lc3NhZ2UoezA6IFN5bWJvbCgi
Q29jb2EiKX0sICIqIik7CiAgICAgfSk7Ci0gICAgYXNzZXJ0X3Rocm93cygiREFUQV9DTE9ORV9F
UlIiLCAoKSA9PiB7CisgICAgYXNzZXJ0X3Rocm93c19kb20oIkRBVEFfQ0xPTkVfRVJSIiwgKCkg
PT4gewogICAgICAgICB3aW5kb3cucG9zdE1lc3NhZ2Uoe2hlbGxvOiBTeW1ib2woIkNvY29hIil9
LCAiKiIpOwogICAgIH0pOwotICAgIGFzc2VydF90aHJvd3MoIkRBVEFfQ0xPTkVfRVJSIiwgKCkg
PT4geworICAgIGFzc2VydF90aHJvd3NfZG9tKCJEQVRBX0NMT05FX0VSUiIsICgpID0+IHsKICAg
ICAgICAgd2luZG93LnBvc3RNZXNzYWdlKFtTeW1ib2woIkNvY29hIildLCAiKiIpOwogICAgIH0p
OwogfSwgIlRlc3RzIHRoYXQgcG9zdGluZyBhIG1lc3NhZ2UgdGhhdCBjb250YWlucyBTeW1ib2xz
IGZhaWxzLiIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL3F1ZXVlLW1pY3JvdGFz
ay13aW5kb3cuaHRtbCBiL0xheW91dFRlc3RzL2pzL2RvbS9xdWV1ZS1taWNyb3Rhc2std2luZG93
Lmh0bWwKaW5kZXggNGI1ZTRmOTQ1M2I1MWU2MzY2OTk1N2M2MGM1ZjEwNTZhMDJjZThkNC4uN2E1
YzEzN2YyNGYwNDdhOGQ3ZmJmMzQ3NzFiMDFmM2ExMjljZGY1OSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvanMvZG9tL3F1ZXVlLW1pY3JvdGFzay13aW5kb3cuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9qcy9kb20vcXVldWUtbWljcm90YXNrLXdpbmRvdy5odG1sCkBAIC03NywzMSArNzcsMzEgQEAg
cHJvbWlzZV90ZXN0KCgpID0+IHsKIH0sIGBxdWV1ZU1pY3JvdGFzayBhbmQgUHJvbWlzZSB1c2Vz
IHRoZSBzYW1lIE1pY3JvdGFzayBxdWV1ZWApOwogCiB0ZXN0KCgpID0+IHsKLSAgICBhc3NlcnRf
dGhyb3dzKG5ldyBUeXBlRXJyb3IsICgpID0+IHsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVF
cnJvciwgKCkgPT4gewogICAgICAgICBzZWxmLnF1ZXVlTWljcm90YXNrKCk7CiAgICAgfSk7Ci0g
ICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yLCAoKSA9PiB7CisgICAgYXNzZXJ0X3Rocm93
c19qcyhUeXBlRXJyb3IsICgpID0+IHsKICAgICAgICAgc2VsZi5xdWV1ZU1pY3JvdGFzayhudWxs
KTsKICAgICB9KTsKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IsICgpID0+IHsKKyAg
ICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gewogICAgICAgICBzZWxmLnF1ZXVl
TWljcm90YXNrKHVuZGVmaW5lZCk7CiAgICAgfSk7Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlw
ZUVycm9yLCAoKSA9PiB7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IHsK
ICAgICAgICAgc2VsZi5xdWV1ZU1pY3JvdGFzayg0Mik7CiAgICAgfSk7Ci0gICAgYXNzZXJ0X3Ro
cm93cyhuZXcgVHlwZUVycm9yLCAoKSA9PiB7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJy
b3IsICgpID0+IHsKICAgICAgICAgc2VsZi5xdWV1ZU1pY3JvdGFzaygiNDIiKTsKICAgICB9KTsK
LSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IsICgpID0+IHsKKyAgICBhc3NlcnRfdGhy
b3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gewogICAgICAgICBzZWxmLnF1ZXVlTWljcm90YXNrKHRy
dWUpOwogICAgIH0pOwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvciwgKCkgPT4gewor
ICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiB7CiAgICAgICAgIHNlbGYucXVl
dWVNaWNyb3Rhc2soU3ltYm9sKCI0MiIpKTsKICAgICB9KTsKLSAgICBhc3NlcnRfdGhyb3dzKG5l
dyBUeXBlRXJyb3IsICgpID0+IHsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkg
PT4gewogICAgICAgICBzZWxmLnF1ZXVlTWljcm90YXNrKHt9KTsKICAgICB9KTsKLSAgICBhc3Nl
cnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IsICgpID0+IHsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5
cGVFcnJvciwgKCkgPT4gewogICAgICAgICBzZWxmLnF1ZXVlTWljcm90YXNrKHsgaGFuZGxlRXZl
bnQoKSB7IH0gfSk7CiAgICAgfSk7CiB9LCBgcXVldWVNaWNyb3Rhc2sgc2hvdWxkIHJlamVjdCBu
b24tZnVuY3Rpb24gYXJndW1lbnRzYCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS90
cmFjay9vcGVyYS9pbnRlcmZhY2VzL1RleHRUcmFja0N1ZS92ZXJ0aWNhbC5odG1sIGIvTGF5b3V0
VGVzdHMvbWVkaWEvdHJhY2svb3BlcmEvaW50ZXJmYWNlcy9UZXh0VHJhY2tDdWUvdmVydGljYWwu
aHRtbAppbmRleCA1MDg0NWFlYmYxMjk0ZWYxZmNhZDZkNDg3ODU1ZTE1MzhjZGYzNTZiLi44ZDIx
MDVjODkyYTEzNjU1MzlmYjNjOGE4NjdhNDY1OWM2YmRlYzUyIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9tZWRpYS90cmFjay9vcGVyYS9pbnRlcmZhY2VzL1RleHRUcmFja0N1ZS92ZXJ0aWNhbC5o
dG1sCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL29wZXJhL2ludGVyZmFjZXMvVGV4dFRy
YWNrQ3VlL3ZlcnRpY2FsLmh0bWwKQEAgLTI2LDcgKzI2LDcgQEAgdGVzdChmdW5jdGlvbigpewog
ICAgIGFzc2VydF9lcXVhbHMoYzEudmVydGljYWwsICdybCcpOwogICAgIGMxLnZlcnRpY2FsID0g
J2xyJzsKICAgICBhc3NlcnRfZXF1YWxzKGMxLnZlcnRpY2FsLCAnbHInKTsKLSAgICBhc3NlcnRf
dGhyb3dzKCdTWU5UQVhfRVJSJywgZnVuY3Rpb24oKSB7CisgICAgYXNzZXJ0X3Rocm93c19kb20o
J1NZTlRBWF9FUlInLCBmdW5jdGlvbigpIHsKICAgICAgICAgYzEudmVydGljYWwgPSAncmxcdTAw
MDAnOwogICAgIH0pOwogfSwgZG9jdW1lbnQudGl0bGUrJywgc2NyaXB0LWNyZWF0ZWQgY3VlJyk7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay9vcGVyYS9yZXNvdXJjZXMvaWRs
aGFybmVzcy5qcyBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL29wZXJhL3Jlc291cmNlcy9pZGxo
YXJuZXNzLmpzCmluZGV4IGI2MjdiNDBmOGZjYThkODNjYWRjOTZkMzc4MWUxMDFkMzNlNzJkNzgu
LjcwMDcwYTFjY2MwNDhlZWJjNDQyYTQzNDFmZjFjOTQyYzljOGYyYTcgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL21lZGlhL3RyYWNrL29wZXJhL3Jlc291cmNlcy9pZGxoYXJuZXNzLmpzCisrKyBi
L0xheW91dFRlc3RzL21lZGlhL3RyYWNrL29wZXJhL3Jlc291cmNlcy9pZGxoYXJuZXNzLmpzCkBA
IC05NDQsMTEgKzk0NCwxMSBAQCBJZGxFeGNlcHRpb24ucHJvdG90eXBlLnRlc3RfbWVtYmVycyA9
IGZ1bmN0aW9uKCkKICAgICAgICAgICAgICAgICAvLyB0aGUgZXhjZXB0aW9uIG9uIHdoaWNoIHRo
ZSBleGNlcHRpb24gZmllbGQgd2FzIGRlY2xhcmVkLAogICAgICAgICAgICAgICAgIC8vIHRoZW4g
dGhyb3cgYSBUeXBlRXJyb3IuIgogICAgICAgICAgICAgICAgIC8vIFRPRE86IFRlc3Qgb24gYSBw
bGF0Zm9ybSBvYmplY3QgcmVwcmVzZW50aW5nIGFuIGV4Y2VwdGlvbi4KLSAgICAgICAgICAgICAg
ICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKQorICAgICAgICAgICAg
ICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCBmdW5jdGlvbigpCiAgICAgICAgICAgICAg
ICAgewogICAgICAgICAgICAgICAgICAgICB3aW5kb3dbdGhpcy5uYW1lXS5wcm90b3R5cGVbbWVt
YmVyLm5hbWVdOwogICAgICAgICAgICAgICAgIH0uYmluZCh0aGlzKSwgImdldHRpbmcgcHJvcGVy
dHkgb24gcHJvdG90eXBlIG9iamVjdCBtdXN0IHRocm93IFR5cGVFcnJvciIpOwotICAgICAgICAg
ICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpCisgICAgICAg
ICAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkKICAgICAgICAg
ICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIGRlc2MuZ2V0LmNhbGwoe30pOwogICAgICAg
ICAgICAgICAgIH0uYmluZCh0aGlzKSwgImNhbGxpbmcgZ2V0dGVyIG9uIHdyb25nIG9iamVjdCB0
eXBlIG11c3QgdGhyb3cgVHlwZUVycm9yIik7CkBAIC0xMDgzLDExICsxMDgzLDExIEBAIElkbElu
dGVyZmFjZS5wcm90b3R5cGUudGVzdF9zZWxmID0gZnVuY3Rpb24oKQogICAgICAgICAgICAgLy8K
ICAgICAgICAgICAgIC8vICJJZiBJIHdhcyBub3QgZGVjbGFyZWQgd2l0aCBhIFtDb25zdHJ1Y3Rv
cl0gZXh0ZW5kZWQgYXR0cmlidXRlLAogICAgICAgICAgICAgLy8gdGhlbiB0aHJvdyBhIFR5cGVF
cnJvci4iCi0gICAgICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rp
b24oKQorICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkK
ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICB3aW5kb3dbdGhpcy5uYW1lXSgpOwogICAg
ICAgICAgICAgfS5iaW5kKHRoaXMpLCAiaW50ZXJmYWNlIG9iamVjdCBkaWRuJ3QgdGhyb3cgVHlw
ZUVycm9yIHdoZW4gY2FsbGVkIGFzIGEgZnVuY3Rpb24iKTsKLSAgICAgICAgICAgIGFzc2VydF90
aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpCisgICAgICAgICAgICBhc3NlcnRfdGhy
b3dzX2pzKFR5cGVFcnJvciwgZnVuY3Rpb24oKQogICAgICAgICAgICAgewogICAgICAgICAgICAg
ICAgIG5ldyB3aW5kb3dbdGhpcy5uYW1lXSgpOwogICAgICAgICAgICAgfS5iaW5kKHRoaXMpLCAi
aW50ZXJmYWNlIG9iamVjdCBkaWRuJ3QgdGhyb3cgVHlwZUVycm9yIHdoZW4gY2FsbGVkIGFzIGEg
Y29uc3RydWN0b3IiKTsKQEAgLTEzMTEsNyArMTMxMSw3IEBAIElkbEludGVyZmFjZS5wcm90b3R5
cGUudGVzdF9tZW1iZXJzID0gZnVuY3Rpb24oKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ2ludGVyZmFjZSAiJyArIHRoaXMubmFtZSArICciIGRvZXMgbm90IGhhdmUgb3du
IHByb3BlcnR5ICJwcm90b3R5cGUiJyk7CiAKICAgICAgICAgICAgICAgICAvLyBUT0RPOiBOZWVk
cyB0byB0ZXN0IGZvciBMZW5pZW50VGhpcy4KLSAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dz
KG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X3Ro
cm93c19qcyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICB3aW5k
b3dbdGhpcy5uYW1lXS5wcm90b3R5cGVbbWVtYmVyLm5hbWVdOwogICAgICAgICAgICAgICAgIH0u
YmluZCh0aGlzKSwgImdldHRpbmcgcHJvcGVydHkgb24gcHJvdG90eXBlIG9iamVjdCBtdXN0IHRo
cm93IFR5cGVFcnJvciIpOwogCkBAIC0xMzg0LDcgKzEzODQsNyBAQCBJZGxJbnRlcmZhY2UucHJv
dG90eXBlLnRlc3RfbWVtYmVycyA9IGZ1bmN0aW9uKCkKICAgICAgICAgICAgICAgICAvLwogICAg
ICAgICAgICAgICAgIC8vIFRPRE86IFdlIGN1cnJlbnRseSBpZ25vcmUgdGhlIHN0YXRpYyBhbmQg
W0ltcGxpY2l0VGhpc10KICAgICAgICAgICAgICAgICAvLyBjYXNlcy4KLSAgICAgICAgICAgICAg
ICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgewogICAgICAgICAg
ICAgICAgICAgICB3aW5kb3dbdGhpcy5uYW1lXS5wcm90b3R5cGVbbWVtYmVyLm5hbWVdLmFwcGx5
KG51bGwsIGFyZ3MpOwogICAgICAgICAgICAgICAgIH0sICJjYWxsaW5nIG9wZXJhdGlvbiB3aXRo
IHRoaXMgPSBudWxsIGRpZG4ndCB0aHJvdyBUeXBlRXJyb3IiKTsKIApAQCAtMTM5Myw3ICsxMzkz
LDcgQEAgSWRsSW50ZXJmYWNlLnByb3RvdHlwZS50ZXN0X21lbWJlcnMgPSBmdW5jdGlvbigpCiAg
ICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgICAvLyBUT0RPOiBUZXN0IGEgcGxhdGZv
cm0gb2JqZWN0IHRoYXQgaW1wbGVtZW50cyBzb21lIG90aGVyCiAgICAgICAgICAgICAgICAgLy8g
aW50ZXJmYWNlLiAgKEhhdmUgdG8gYmUgc3VyZSB0byBnZXQgaW5oZXJpdGFuY2UgcmlnaHQuKQot
ICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgZnVuY3Rpb24o
KSB7CiAgICAgICAgICAgICAgICAgICAgIHdpbmRvd1t0aGlzLm5hbWVdLnByb3RvdHlwZVttZW1i
ZXIubmFtZV0uYXBwbHkoe30sIGFyZ3MpOwogICAgICAgICAgICAgICAgIH0sICJjYWxsaW5nIG9w
ZXJhdGlvbiB3aXRoIHRoaXMgPSB7fSBkaWRuJ3QgdGhyb3cgVHlwZUVycm9yIik7CiAgICAgICAg
ICAgICB9LmJpbmQodGhpcyksIHRoaXMubmFtZSArICIgaW50ZXJmYWNlOiBvcGVyYXRpb24gIiAr
IG1lbWJlci5uYW1lICsKQEAgLTE1NjUsNyArMTU2NSw3IEBAIElkbEludGVyZmFjZS5wcm90b3R5
cGUudGVzdF9pbnRlcmZhY2Vfb2YgPSBmdW5jdGlvbihkZXNjLCBvYmosIGV4Y2VwdGlvbiwgZXhw
ZWN0CiAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGFzc2VydF90aHJv
d3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpCisgICAgICAgICAgICAgICAgICAgIGFzc2Vy
dF90aHJvd3NfanMoVHlwZUVycm9yLCBmdW5jdGlvbigpCiAgICAgICAgICAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgIG9ialttZW1iZXIubmFtZV0uYXBwbHkob2JqLCBhcmdz
KTsKICAgICAgICAgICAgICAgICAgICAgfS5iaW5kKHRoaXMpLCAiQ2FsbGVkIHdpdGggIiArIGkg
KyAiIGFyZ3VtZW50cyIpOwpAQCAtMTYzNCw3ICsxNjM0LDcgQEAgZnVuY3Rpb24gZG9faW50ZXJm
YWNlX2F0dHJpYnV0ZV9hc3NlcnRzKG9iaiwgbWVtYmVyKQogICAgIGFzc2VydF9lcXVhbHModHlw
ZW9mIGRlc2MuZ2V0LCAiZnVuY3Rpb24iLCAiZ2V0dGVyIG11c3QgYmUgRnVuY3Rpb24iKTsKICAg
ICBhc3NlcnRfZXF1YWxzKGRlc2MuZ2V0Lmxlbmd0aCwgMCwgImdldHRlciBsZW5ndGggbXVzdCBi
ZSAwIik7CiAgICAgLy8gVE9ETzogQWNjb3VudCBmb3IgTGVuaWVudFRoaXMKLSAgICBhc3NlcnRf
dGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKQorICAgIGFzc2VydF90aHJvd3NfanMo
VHlwZUVycm9yLCBmdW5jdGlvbigpCiAgICAgewogICAgICAgICBkZXNjLmdldC5jYWxsKHt9KTsK
ICAgICB9LmJpbmQodGhpcyksICJjYWxsaW5nIGdldHRlciBvbiB3cm9uZyBvYmplY3QgdHlwZSBt
dXN0IHRocm93IFR5cGVFcnJvciIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvdHJh
Y2svdGV4dHRyYWNrY3VlL3RleHR0cmFja2N1ZS1jb25zdHJ1Y3Rvci5odG1sIGIvTGF5b3V0VGVz
dHMvbWVkaWEvdHJhY2svdGV4dHRyYWNrY3VlL3RleHR0cmFja2N1ZS1jb25zdHJ1Y3Rvci5odG1s
CmluZGV4IDRiNTQwZTQ2ZmUwNGUxMmQyMGRlNWI0ZDhmOTQ2MmViY2UzODE5MzAuLjllM2E2NmVl
ZTMwZGIwMjk4YmNjMTg0MDFiY2Q4MDAyYzBlODNhNDQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L21lZGlhL3RyYWNrL3RleHR0cmFja2N1ZS90ZXh0dHJhY2tjdWUtY29uc3RydWN0b3IuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90ZXh0dHJhY2tjdWUvdGV4dHRyYWNrY3VlLWNv
bnN0cnVjdG9yLmh0bWwKQEAgLTcsMTMgKzcsMTMgQEAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCiAg
ICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldEdlbmVyaWNDdWVBUElFbmFibGVkKHRydWUpOwogCiB0
ZXN0KCB0ZXN0ID0+IHsKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IsIF8gPT4geyBu
ZXcgVGV4dFRyYWNrQ3VlKDAsIDEwLCAiIikgfSk7Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlw
ZUVycm9yLCBfID0+IHsgbmV3IFRleHRUcmFja0N1ZSgwLCAxMCwgeyB9KSB9KTsKLSAgICBhc3Nl
cnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IsIF8gPT4geyBuZXcgVGV4dFRyYWNrQ3VlKDAsIDEwLCBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSkgfSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhU
eXBlRXJyb3IsIF8gPT4geyBuZXcgVGV4dFRyYWNrQ3VlKDAsIDEwLCAiIikgfSk7CisgICAgYXNz
ZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsIF8gPT4geyBuZXcgVGV4dFRyYWNrQ3VlKDAsIDEwLCB7
IH0pIH0pOworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCBfID0+IHsgbmV3IFRleHRU
cmFja0N1ZSgwLCAxMCwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykpIH0pOwogfSwgJ1Rl
eHRUcmFja0N1ZSBzaG91bGQgdGhyb3cgIlR5cGVFcnJvciIgaWYgdGhlIGN1ZSBub2RlIGlzIG5v
dCBhIGRvY3VtZW50RnJhZ21lbnQnKTsKIAogdGVzdCggdGVzdCA9PiB7Ci0gICAgYXNzZXJ0X3Ro
cm93cygiSW52YWxpZE5vZGVUeXBlRXJyb3IiLCBfID0+IHsgbmV3IFRleHRUcmFja0N1ZSgwLCAx
MCwgZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpKSB9KTsKKyAgICBhc3NlcnRfdGhy
b3dzX2RvbSgiSW52YWxpZE5vZGVUeXBlRXJyb3IiLCBfID0+IHsgbmV3IFRleHRUcmFja0N1ZSgw
LCAxMCwgZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpKSB9KTsKIH0sICdUZXh0VHJh
Y2tDdWUgc2hvdWxkIHRocm93ICJJbnZhbGlkTm9kZVR5cGVFcnJvciIgaWYgcGFzc2VkIGFuIGlu
dmFsaWQgZG9jdW1lbnRGcmFnbWVudCcpOwogCiBmdW5jdGlvbiBjcmVhdGVWYWxpZEN1ZUZyYWdt
ZW50KCkKQEAgLTM2LDcgKzM2LDcgQEAgdGVzdCggdGVzdCA9PiB7CiAgICAgbGV0IHZhbGlkQ3Vl
ID0gbmV3IFRleHRUcmFja0N1ZSgwLCAxMCwgZnJhZ21lbnQpOwogCiAgICAgZnJhZ21lbnQuYXBw
ZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGFibGUnKSk7Ci0gICAgYXNzZXJ0X3Ro
cm93cygiSW52YWxpZE5vZGVUeXBlRXJyb3IiLCBfID0+IHsgbmV3IFRleHRUcmFja0N1ZSgwLCAx
MCwgZnJhZ21lbnQpIH0pOworICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlkTm9kZVR5cGVF
cnJvciIsIF8gPT4geyBuZXcgVGV4dFRyYWNrQ3VlKDAsIDEwLCBmcmFnbWVudCkgfSk7CiAKIH0s
IGBUZXh0VHJhY2tDdWUgc2hvdWxkIHRocm93ICJJbnZhbGlkTm9kZVR5cGVFcnJvciIgaWYgZG9j
dW1lbnRGcmFnbWVudCBoYXMgYW4gaW52YWxpZCBub2RlYCk7CiAKQEAgLTQ1LDExICs0NSwxMSBA
QCB0ZXN0KCB0ZXN0ID0+IHsKICAgICBsZXQgdmFsaWRDdWUgPSBuZXcgVGV4dFRyYWNrQ3VlKDAs
IDEwLCBmcmFnbWVudCk7CiAKICAgICBmcmFnbWVudC5maXJzdENoaWxkLnJlbW92ZUF0dHJpYnV0
ZSgnY3VlYmFja2dyb3VuZCcpCi0gICAgYXNzZXJ0X3Rocm93cygiSW52YWxpZFN0YXRlRXJyb3Ii
LCBfID0+IHsgbmV3IFRleHRUcmFja0N1ZSgwLCAxMCwgZnJhZ21lbnQpIH0pOworICAgIGFzc2Vy
dF90aHJvd3NfZG9tKCJJbnZhbGlkU3RhdGVFcnJvciIsIF8gPT4geyBuZXcgVGV4dFRyYWNrQ3Vl
KDAsIDEwLCBmcmFnbWVudCkgfSk7CiAKICAgICBmcmFnbWVudCA9IGNyZWF0ZVZhbGlkQ3VlRnJh
Z21lbnQoKTsKICAgICBmcmFnbWVudC5maXJzdENoaWxkLmZpcnN0Q2hpbGQucmVtb3ZlQXR0cmli
dXRlKCdjdWUnKQotICAgIGFzc2VydF90aHJvd3MoIkludmFsaWRTdGF0ZUVycm9yIiwgXyA9PiB7
IG5ldyBUZXh0VHJhY2tDdWUoMCwgMTAsIGZyYWdtZW50KSB9KTsKKyAgICBhc3NlcnRfdGhyb3dz
X2RvbSgiSW52YWxpZFN0YXRlRXJyb3IiLCBfID0+IHsgbmV3IFRleHRUcmFja0N1ZSgwLCAxMCwg
ZnJhZ21lbnQpIH0pOwogfSwgYFRleHRUcmFja0N1ZSBzaG91bGQgdGhyb3cgIkludmFsaWRTdGF0
ZUVycm9yIiBpZiBkb2N1bWVudEZyYWdtZW50IGRvZXNuJ3QgaGF2ZSAnY3VlYmFja2dyb3VuZCcg
YW5kICdjdWUnIG5vZGVzYCk7CiAKIHRlc3QoIHRlc3QgPT4gewpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvbWVkaWEvdHJhY2svdzNjL2ludGVyZmFjZXMvVGV4dFRyYWNrQ3VlL2FsaWduLmh0bWwg
Yi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay93M2MvaW50ZXJmYWNlcy9UZXh0VHJhY2tDdWUvYWxp
Z24uaHRtbAppbmRleCBiZTcwZGMzMzQ3YTNiNzFlYzY3ZGQ5MzBmODIwZTFiNjA0ZTE4OWFmLi4y
ZjJjY2M3OTlmYTJhYzMxNTkwYTBjZTU5MTg4MmVjMDlmZDEwMTY5IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9tZWRpYS90cmFjay93M2MvaW50ZXJmYWNlcy9UZXh0VHJhY2tDdWUvYWxpZ24uaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay93M2MvaW50ZXJmYWNlcy9UZXh0VHJhY2tD
dWUvYWxpZ24uaHRtbApAQCAtMjEsNyArMjEsNyBAQCB0ZXN0KGZ1bmN0aW9uKCl7CiAgICAgYXNz
ZXJ0X2VxdWFscyhjMS5hbGlnbiwgJ3N0YXJ0Jyk7CiAgICAgYzEuYWxpZ24gPSAnZW5kJzsKICAg
ICBhc3NlcnRfZXF1YWxzKGMxLmFsaWduLCAnZW5kJyk7Ci0gICAgYXNzZXJ0X3Rocm93cygnU1lO
VEFYX0VSUicsIGZ1bmN0aW9uKCkgeworICAgIGFzc2VydF90aHJvd3NfZG9tKCdTWU5UQVhfRVJS
JywgZnVuY3Rpb24oKSB7CiAgICAgICAgIGMxLmFsaWduID0gJ3N0YXJ0XHUwMDAwJzsKICAgICB9
KTsKIH0sIGRvY3VtZW50LnRpdGxlKycsIHNjcmlwdC1jcmVhdGVkIGN1ZScpOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvcG9pbnRlci1ldmVudHMtaW1wbGljaXQt
Y2FwdHVyZS1yZWxlYXNlLWV4Y2VwdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50
cy9pb3MvcG9pbnRlci1ldmVudHMtaW1wbGljaXQtY2FwdHVyZS1yZWxlYXNlLWV4Y2VwdGlvbi5o
dG1sCmluZGV4IDRkNDhlMmY5YWQ4NWMyNmJmYThhZWJjYjRjZjYzMzJlM2JhYzc3MjguLjQ2YjY0
MjNhZmJiZmYxNGM4ZGQ3NWI2M2NhODY0OTY0M2RiM2MzZmEgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3BvaW50ZXJldmVudHMvaW9zL3BvaW50ZXItZXZlbnRzLWltcGxpY2l0LWNhcHR1cmUtcmVs
ZWFzZS1leGNlcHRpb24uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy9w
b2ludGVyLWV2ZW50cy1pbXBsaWNpdC1jYXB0dXJlLXJlbGVhc2UtZXhjZXB0aW9uLmh0bWwKQEAg
LTE1LDcgKzE1LDcgQEAKIHRhcmdldF90ZXN0KCh0YXJnZXQsIHRlc3QpID0+IHsKICAgICB0YXJn
ZXQuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcmRvd24iLCBldmVudCA9PiB7CiAgICAgICAgIGFz
c2VydF90cnVlKHRhcmdldC5oYXNQb2ludGVyQ2FwdHVyZShldmVudC5wb2ludGVySWQpKTsKLSAg
ICAgICAgYXNzZXJ0X3Rocm93cygiTm90Rm91bmRFcnJvciIsICgpID0+IHRhcmdldC5yZWxlYXNl
UG9pbnRlckNhcHR1cmUoZXZlbnQucG9pbnRlcklkICsgMSkpOworICAgICAgICBhc3NlcnRfdGhy
b3dzX2RvbSgiTm90Rm91bmRFcnJvciIsICgpID0+IHRhcmdldC5yZWxlYXNlUG9pbnRlckNhcHR1
cmUoZXZlbnQucG9pbnRlcklkICsgMSkpOwogICAgICAgICBhc3NlcnRfdHJ1ZSh0YXJnZXQuaGFz
UG9pbnRlckNhcHR1cmUoZXZlbnQucG9pbnRlcklkKSk7CiAgICAgfSk7CiAgICAgdWkudGFwKHsg
eDogNTAsIHk6IDUwIH0pLnRoZW4oKCkgPT4gdGVzdC5kb25lKCkpOwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvcG9pbnRlci1ldmVudHMtc2V0LXBvaW50ZXItY2Fw
dHVyZS1leGNlcHRpb25zLmh0bWwgYi9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy9wb2lu
dGVyLWV2ZW50cy1zZXQtcG9pbnRlci1jYXB0dXJlLWV4Y2VwdGlvbnMuaHRtbAppbmRleCBlMzI1
NjE1MWUyYTFjNjdjMTc4ZWVlNzZiZDI3ZDVjODM2ZTJmOGM4Li40ZmQwMDhkOGExYWFjYTkyMTI5
ZWNmYTdjMzAyZGRkZDAyZDRhOWI4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wb2ludGVyZXZl
bnRzL2lvcy9wb2ludGVyLWV2ZW50cy1zZXQtcG9pbnRlci1jYXB0dXJlLWV4Y2VwdGlvbnMuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy9wb2ludGVyLWV2ZW50cy1zZXQt
cG9pbnRlci1jYXB0dXJlLWV4Y2VwdGlvbnMuaHRtbApAQCAtMTMsMTEgKzEzLDExIEBACiAndXNl
IHN0cmljdCc7CiAKIHRhcmdldF90ZXN0KCh0YXJnZXQsIHRlc3QpID0+IHsKLSAgICBhc3NlcnRf
dGhyb3dzKCJOb3RGb3VuZEVycm9yIiwgKCkgPT4gZG9jdW1lbnQuYm9keS5zZXRQb2ludGVyQ2Fw
dHVyZSgxMCksICJDYWxsaW5nIHNldFBvaW50ZXJDYXB0dXJlKCkgd2l0aCBhbiBpbnZhbGlkIHBv
aW50ZXIgaWQgdGhyb3dzIGEgTm90Rm91bmRFcnJvciBleGNlcHRpb24uIik7CisgICAgYXNzZXJ0
X3Rocm93c19kb20oIk5vdEZvdW5kRXJyb3IiLCAoKSA9PiBkb2N1bWVudC5ib2R5LnNldFBvaW50
ZXJDYXB0dXJlKDEwKSwgIkNhbGxpbmcgc2V0UG9pbnRlckNhcHR1cmUoKSB3aXRoIGFuIGludmFs
aWQgcG9pbnRlciBpZCB0aHJvd3MgYSBOb3RGb3VuZEVycm9yIGV4Y2VwdGlvbi4iKTsKIAogICAg
IHRhcmdldC5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVyZG93biIsIGV2ZW50ID0+IHsKICAgICAg
ICAgYXNzZXJ0X3RydWUodGFyZ2V0Lmhhc1BvaW50ZXJDYXB0dXJlKGV2ZW50LnBvaW50ZXJJZCkp
OwotICAgICAgICBhc3NlcnRfdGhyb3dzKCJJbnZhbGlkU3RhdGVFcnJvciIsICgpID0+IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLnNldFBvaW50ZXJDYXB0dXJlKGV2ZW50LnBvaW50ZXJJ
ZCksICJDYWxsaW5nIHNldFBvaW50ZXJDYXB0dXJlKCkgd2l0aCBhIHZhbGlkIHBvaW50ZXIgaWQg
b24gYSBkaXNjb25uZWN0ZWQgZWxlbWVudCB0aHJvd3MgYW4gSW52YWxpZFN0YXRlRXJyb3IgZXhj
ZXB0aW9uLiIpOworICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiSW52YWxpZFN0YXRlRXJyb3Ii
LCAoKSA9PiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKS5zZXRQb2ludGVyQ2FwdHVyZShl
dmVudC5wb2ludGVySWQpLCAiQ2FsbGluZyBzZXRQb2ludGVyQ2FwdHVyZSgpIHdpdGggYSB2YWxp
ZCBwb2ludGVyIGlkIG9uIGEgZGlzY29ubmVjdGVkIGVsZW1lbnQgdGhyb3dzIGFuIEludmFsaWRT
dGF0ZUVycm9yIGV4Y2VwdGlvbi4iKTsKICAgICB9KTsKICAgICB1aS50YXAoeyB4OiA1MCwgeTog
NTAgfSkudGhlbigoKSA9PiB0ZXN0LmRvbmUoKSk7CiB9LCAiVGhlIHNldFBvaW50ZXJDYXB0dXJl
KCkgbWV0aG9kIGNhbiB0aHJvdy4iKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BvaW50ZXJl
dmVudHMvcG9pbnRlci1pZC1jcmFzaC5odG1sIGIvTGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9w
b2ludGVyLWlkLWNyYXNoLmh0bWwKaW5kZXggNzA2M2RiNGY4OWUzNTZmZGM4MWVjNDA0YTY0YmIy
OTllY2Y0YmJhZS4uMmRkY2U3MDgzMDFjYWFlYzdjMjZiNTY4M2JkZjRjZmJhZDdmZGY2NCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9wb2ludGVyLWlkLWNyYXNoLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9wb2ludGVyLWlkLWNyYXNoLmh0bWwKQEAg
LTE0LDggKzE0LDggQEAgdGVzdCgoKSA9PiB7CiAgICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50
LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpOwogICAgIGZv
ciAobGV0IHZhbHVlIG9mIFswLCBOdW1iZXIuTUFYX1ZBTFVFLCBOdW1iZXIuTUlOX1ZBTFVFLCBO
dW1iZXIuTUFYX1ZBTFVFICsgMSwgTnVtYmVyLk1JTl9WQUxVRSAtIDFdKSB7CiAgICAgICAgIGVs
ZW1lbnQuaGFzUG9pbnRlckNhcHR1cmUodmFsdWUpOwotICAgICAgICBhc3NlcnRfdGhyb3dzKCJO
b3RGb3VuZEVycm9yIiwgKCkgPT4gZWxlbWVudC5zZXRQb2ludGVyQ2FwdHVyZSh2YWx1ZSkpCi0g
ICAgICAgIGFzc2VydF90aHJvd3MoIk5vdEZvdW5kRXJyb3IiLCAoKSA9PiBlbGVtZW50LnJlbGVh
c2VQb2ludGVyQ2FwdHVyZSh2YWx1ZSkpCisgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJOb3RG
b3VuZEVycm9yIiwgKCkgPT4gZWxlbWVudC5zZXRQb2ludGVyQ2FwdHVyZSh2YWx1ZSkpCisgICAg
ICAgIGFzc2VydF90aHJvd3NfZG9tKCJOb3RGb3VuZEVycm9yIiwgKCkgPT4gZWxlbWVudC5yZWxl
YXNlUG9pbnRlckNhcHR1cmUodmFsdWUpKQogICAgIH0KICAgICBlbGVtZW50LnJlbW92ZSgpOwog
fSwgIkNoZWNraW5nIDAgY2FuIGJlIHVzZWQgYXMgYSBQb2ludGVyIElELiIpOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL1dlYklETFBhcnNlci5qcyBiL0xheW91dFRlc3RzL3Jl
c291cmNlcy9XZWJJRExQYXJzZXIuanMKaW5kZXggOWU1MDRmYzZlMWZkZWZkMTljYzdmNzE4MjJl
M2RiZmQ0YmU1ZTY3OC4uMzIyZjBlMTFhNmFlNTZlYjY1YTFlNTc0ODJmZjUyMGIwNjU3ZGNkNiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL1dlYklETFBhcnNlci5qcworKysgYi9M
YXlvdXRUZXN0cy9yZXNvdXJjZXMvV2ViSURMUGFyc2VyLmpzCkBAIC0xLDEwMTIgKzEsMzcyNCBA
QAorKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3Rv
cnkpIHsKKwlpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9
PT0gJ29iamVjdCcpCisJCW1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpOworCWVsc2UgaWYodHlw
ZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKQorCQlkZWZpbmUoW10sIGZh
Y3RvcnkpOworCWVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKQorCQlleHBvcnRz
WyJXZWJJREwyIl0gPSBmYWN0b3J5KCk7CisJZWxzZQorCQlyb290WyJXZWJJREwyIl0gPSBmYWN0
b3J5KCk7Cit9KShnbG9iYWxUaGlzLCBmdW5jdGlvbigpIHsKK3JldHVybiAvKioqKioqLyAoKCkg
PT4geyAvLyB3ZWJwYWNrQm9vdHN0cmFwCisvKioqKioqLyAJInVzZSBzdHJpY3QiOworLyoqKioq
Ki8gCXZhciBfX3dlYnBhY2tfbW9kdWxlc19fID0gKFsKKy8qIDAgKi8sCisvKiAxICovCisvKioq
LyAoKF9fdW51c2VkX3dlYnBhY2tfX193ZWJwYWNrX21vZHVsZV9fLCBfX3dlYnBhY2tfZXhwb3J0
c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSA9PiB7CiAKK19fd2VicGFja19yZXF1aXJlX18ucihf
X3dlYnBhY2tfZXhwb3J0c19fKTsKKy8qIGhhcm1vbnkgZXhwb3J0ICovIF9fd2VicGFja19yZXF1
aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCB7CisvKiBoYXJtb255IGV4cG9ydCAqLyAgICJw
YXJzZSI6ICgpID0+ICgvKiBiaW5kaW5nICovIHBhcnNlKQorLyogaGFybW9ueSBleHBvcnQgKi8g
fSk7CisvKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX3Rva2VuaXNlcl9qc19fV0VCUEFDS19JTVBP
UlRFRF9NT0RVTEVfMF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTsKKy8qIGhhcm1vbnkgaW1w
b3J0ICovIHZhciBfcHJvZHVjdGlvbnNfZW51bV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVf
MV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNSk7CisvKiBoYXJtb255IGltcG9ydCAqLyB2YXIg
X3Byb2R1Y3Rpb25zX2luY2x1ZGVzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18gPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDE2KTsKKy8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfcHJvZHVj
dGlvbnNfZXh0ZW5kZWRfYXR0cmlidXRlc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19f
ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4KTsKKy8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfcHJv
ZHVjdGlvbnNfdHlwZWRlZl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fID0gX193ZWJw
YWNrX3JlcXVpcmVfXygxNyk7CisvKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX3Byb2R1Y3Rpb25z
X2NhbGxiYWNrX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X18gPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDE4KTsKKy8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfcHJvZHVjdGlvbnNfaW50ZXJm
YWNlX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDE5KTsKKy8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfcHJvZHVjdGlvbnNfbWl4aW5fanNfX1dF
QlBBQ0tfSU1QT1JURURfTU9EVUxFXzdfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMjUpOworLyog
aGFybW9ueSBpbXBvcnQgKi8gdmFyIF9wcm9kdWN0aW9uc19kaWN0aW9uYXJ5X2pzX19XRUJQQUNL
X0lNUE9SVEVEX01PRFVMRV84X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI2KTsKKy8qIGhhcm1v
bnkgaW1wb3J0ICovIHZhciBfcHJvZHVjdGlvbnNfbmFtZXNwYWNlX2pzX19XRUJQQUNLX0lNUE9S
VEVEX01PRFVMRV85X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI4KTsKKy8qIGhhcm1vbnkgaW1w
b3J0ICovIHZhciBfcHJvZHVjdGlvbnNfY2FsbGJhY2tfaW50ZXJmYWNlX2pzX19XRUJQQUNLX0lN
UE9SVEVEX01PRFVMRV8xMF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygyOSk7CisvKiBoYXJtb255
IGltcG9ydCAqLyB2YXIgX3Byb2R1Y3Rpb25zX2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JURURf
TU9EVUxFXzExX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpOwogCi0oZnVuY3Rpb24gKCkgewot
ICAgIHZhciB0b2tlbmlzZSA9IGZ1bmN0aW9uIChzdHIpIHsKLSAgICAgICAgdmFyIHRva2VucyA9
IFtdCi0gICAgICAgICwgICByZSA9IHsKLSAgICAgICAgICAgICAgICAiZmxvYXQiOiAgICAgICAg
L14tPygoWzAtOV0rXC5bMC05XSp8WzAtOV0qXC5bMC05XSspKFtFZV1bLStdP1swLTldKyk/fFsw
LTldK1tFZV1bLStdP1swLTldKykvCi0gICAgICAgICAgICAsICAgImludGVnZXIiOiAgICAgIC9e
LT8oMChbWHhdWzAtOUEtRmEtZl0rfFswLTddKil8WzEtOV1bMC05XSopLwotICAgICAgICAgICAg
LCAgICJpZGVudGlmaWVyIjogICAvXltBLVpfYS16XVswLTlBLVpfYS16XSovCi0gICAgICAgICAg
ICAsICAgInN0cmluZyI6ICAgICAgIC9eIlteIl0qIi8KLSAgICAgICAgICAgICwgICAid2hpdGVz
cGFjZSI6ICAgL14oPzpbXHRcblxyIF0rfFtcdFxuXHIgXSooKFwvXC8uKnxcL1wqKC58XG58XHIp
Kj9cKlwvKVtcdFxuXHIgXSopKSsvCi0gICAgICAgICAgICAsICAgIm90aGVyIjogICAgICAgIC9e
W15cdFxuXHIgMC05QS1aX2Etel0vCi0gICAgICAgICAgICB9Ci0gICAgICAgICwgICB0eXBlcyA9
IFtdCi0gICAgICAgIDsKLSAgICAgICAgZm9yICh2YXIgayBpbiByZSkgdHlwZXMucHVzaChrKTsK
LSAgICAgICAgd2hpbGUgKHN0ci5sZW5ndGggPiAwKSB7Ci0gICAgICAgICAgICB2YXIgbWF0Y2hl
ZCA9IGZhbHNlOwotICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIG4gPSB0eXBlcy5sZW5ndGg7
IGkgPCBuOyBpKyspIHsKLSAgICAgICAgICAgICAgICB2YXIgdHlwZSA9IHR5cGVzW2ldOwotICAg
ICAgICAgICAgICAgIHN0ciA9IHN0ci5yZXBsYWNlKHJlW3R5cGVdLCBmdW5jdGlvbiAodG9rKSB7
Ci0gICAgICAgICAgICAgICAgICAgIHRva2Vucy5wdXNoKHsgdHlwZTogdHlwZSwgdmFsdWU6IHRv
ayB9KTsKLSAgICAgICAgICAgICAgICAgICAgbWF0Y2hlZCA9IHRydWU7Ci0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiAiIjsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICBp
ZiAobWF0Y2hlZCkgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAobWF0Y2hl
ZCkgY29udGludWU7Ci0gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlRva2VuIHN0cmVhbSBu
b3QgcHJvZ3Jlc3NpbmciKTsKKworCisKKworCisKKworCisKKworCisKKy8qKgorICogQHBhcmFt
IHtUb2tlbmlzZXJ9IHRva2VuaXNlcgorICogQHBhcmFtIHtvYmplY3R9IG9wdGlvbnMKKyAqIEBw
YXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMuY29uY3JldGVdCisgKi8KK2Z1bmN0aW9uIHBhcnNlQnlU
b2tlbnModG9rZW5pc2VyLCBvcHRpb25zKSB7CisgIGNvbnN0IHNvdXJjZSA9IHRva2VuaXNlci5z
b3VyY2U7CisKKyAgZnVuY3Rpb24gZXJyb3Ioc3RyKSB7CisgICAgdG9rZW5pc2VyLmVycm9yKHN0
cik7CisgIH0KKworICBmdW5jdGlvbiBjb25zdW1lKC4uLmNhbmRpZGF0ZXMpIHsKKyAgICByZXR1
cm4gdG9rZW5pc2VyLmNvbnN1bWUoLi4uY2FuZGlkYXRlcyk7CisgIH0KKworICBmdW5jdGlvbiBj
YWxsYmFjaygpIHsKKyAgICBjb25zdCBjYWxsYmFjayA9IGNvbnN1bWUoImNhbGxiYWNrIik7Cisg
ICAgaWYgKCFjYWxsYmFjaykgcmV0dXJuOworICAgIGlmICh0b2tlbmlzZXIucHJvYmUoImludGVy
ZmFjZSIpKSB7CisgICAgICByZXR1cm4gX3Byb2R1Y3Rpb25zX2NhbGxiYWNrX2ludGVyZmFjZV9q
c19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTBfXy5DYWxsYmFja0ludGVyZmFjZS5wYXJzZSh0
b2tlbmlzZXIsIGNhbGxiYWNrKTsKKyAgICB9CisgICAgcmV0dXJuIF9wcm9kdWN0aW9uc19jYWxs
YmFja19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fLkNhbGxiYWNrRnVuY3Rpb24ucGFy
c2UodG9rZW5pc2VyLCBjYWxsYmFjayk7CisgIH0KKworICBmdW5jdGlvbiBpbnRlcmZhY2VfKG9w
dHMpIHsKKyAgICBjb25zdCBiYXNlID0gY29uc3VtZSgiaW50ZXJmYWNlIik7CisgICAgaWYgKCFi
YXNlKSByZXR1cm47CisgICAgY29uc3QgcmV0ID0KKyAgICAgIF9wcm9kdWN0aW9uc19taXhpbl9q
c19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfN19fLk1peGluLnBhcnNlKHRva2VuaXNlciwgYmFz
ZSwgb3B0cykgfHwKKyAgICAgIF9wcm9kdWN0aW9uc19pbnRlcmZhY2VfanNfX1dFQlBBQ0tfSU1Q
T1JURURfTU9EVUxFXzZfXy5JbnRlcmZhY2UucGFyc2UodG9rZW5pc2VyLCBiYXNlLCBvcHRzKSB8
fAorICAgICAgZXJyb3IoIkludGVyZmFjZSBoYXMgbm8gcHJvcGVyIGJvZHkiKTsKKyAgICByZXR1
cm4gcmV0OworICB9CisKKyAgZnVuY3Rpb24gcGFydGlhbCgpIHsKKyAgICBjb25zdCBwYXJ0aWFs
ID0gY29uc3VtZSgicGFydGlhbCIpOworICAgIGlmICghcGFydGlhbCkgcmV0dXJuOworICAgIHJl
dHVybiAoCisgICAgICBfcHJvZHVjdGlvbnNfZGljdGlvbmFyeV9qc19fV0VCUEFDS19JTVBPUlRF
RF9NT0RVTEVfOF9fLkRpY3Rpb25hcnkucGFyc2UodG9rZW5pc2VyLCB7IHBhcnRpYWwgfSkgfHwK
KyAgICAgIGludGVyZmFjZV8oeyBwYXJ0aWFsIH0pIHx8CisgICAgICBfcHJvZHVjdGlvbnNfbmFt
ZXNwYWNlX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV85X18uTmFtZXNwYWNlLnBhcnNlKHRv
a2VuaXNlciwgeyBwYXJ0aWFsIH0pIHx8CisgICAgICBlcnJvcigiUGFydGlhbCBkb2Vzbid0IGFw
cGx5IHRvIGFueXRoaW5nIikKKyAgICApOworICB9CisKKyAgZnVuY3Rpb24gZGVmaW5pdGlvbigp
IHsKKyAgICByZXR1cm4gKAorICAgICAgY2FsbGJhY2soKSB8fAorICAgICAgaW50ZXJmYWNlXygp
IHx8CisgICAgICBwYXJ0aWFsKCkgfHwKKyAgICAgIF9wcm9kdWN0aW9uc19kaWN0aW9uYXJ5X2pz
X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV84X18uRGljdGlvbmFyeS5wYXJzZSh0b2tlbmlzZXIp
IHx8CisgICAgICBfcHJvZHVjdGlvbnNfZW51bV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVf
MV9fLkVudW0ucGFyc2UodG9rZW5pc2VyKSB8fAorICAgICAgX3Byb2R1Y3Rpb25zX3R5cGVkZWZf
anNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfXy5UeXBlZGVmLnBhcnNlKHRva2VuaXNlcikg
fHwKKyAgICAgIF9wcm9kdWN0aW9uc19pbmNsdWRlc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RV
TEVfMl9fLkluY2x1ZGVzLnBhcnNlKHRva2VuaXNlcikgfHwKKyAgICAgIF9wcm9kdWN0aW9uc19u
YW1lc3BhY2VfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzlfXy5OYW1lc3BhY2UucGFyc2Uo
dG9rZW5pc2VyKQorICAgICk7CisgIH0KKworICBmdW5jdGlvbiBkZWZpbml0aW9ucygpIHsKKyAg
ICBpZiAoIXNvdXJjZS5sZW5ndGgpIHJldHVybiBbXTsKKyAgICBjb25zdCBkZWZzID0gW107Cisg
ICAgd2hpbGUgKHRydWUpIHsKKyAgICAgIGNvbnN0IGVhID0gX3Byb2R1Y3Rpb25zX2V4dGVuZGVk
X2F0dHJpYnV0ZXNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfXy5FeHRlbmRlZEF0dHJp
YnV0ZXMucGFyc2UodG9rZW5pc2VyKTsKKyAgICAgIGNvbnN0IGRlZiA9IGRlZmluaXRpb24oKTsK
KyAgICAgIGlmICghZGVmKSB7CisgICAgICAgIGlmIChlYS5sZW5ndGgpIGVycm9yKCJTdHJheSBl
eHRlbmRlZCBhdHRyaWJ1dGVzIik7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAgKDAs
X3Byb2R1Y3Rpb25zX2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzExX18uYXV0
b1BhcmVudGVyKShkZWYpLmV4dEF0dHJzID0gZWE7CisgICAgICBkZWZzLnB1c2goZGVmKTsKKyAg
ICB9CisgICAgY29uc3QgZW9mID0gdG9rZW5pc2VyLmNvbnN1bWVUeXBlKCJlb2YiKTsKKyAgICBp
ZiAob3B0aW9ucy5jb25jcmV0ZSkgeworICAgICAgZGVmcy5wdXNoKGVvZik7CisgICAgfQorICAg
IHJldHVybiBkZWZzOworICB9CisgIGNvbnN0IHJlcyA9IGRlZmluaXRpb25zKCk7CisgIGlmICh0
b2tlbmlzZXIucG9zaXRpb24gPCBzb3VyY2UubGVuZ3RoKSBlcnJvcigiVW5yZWNvZ25pc2VkIHRv
a2VucyIpOworICByZXR1cm4gcmVzOworfQorCisvKioKKyAqIEBwYXJhbSB7c3RyaW5nfSBzdHIK
KyAqIEBwYXJhbSB7b2JqZWN0fSBbb3B0aW9uc10KKyAqIEBwYXJhbSB7Kn0gW29wdGlvbnMuc291
cmNlTmFtZV0KKyAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMuY29uY3JldGVdCisgKi8KK2Z1
bmN0aW9uIHBhcnNlKHN0ciwgb3B0aW9ucyA9IHt9KSB7CisgIGNvbnN0IHRva2VuaXNlciA9IG5l
dyBfdG9rZW5pc2VyX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18uVG9rZW5pc2VyKHN0
cik7CisgIGlmICh0eXBlb2Ygb3B0aW9ucy5zb3VyY2VOYW1lICE9PSAidW5kZWZpbmVkIikgewor
ICAgIHRva2VuaXNlci5zb3VyY2UubmFtZSA9IG9wdGlvbnMuc291cmNlTmFtZTsKKyAgfQorICBy
ZXR1cm4gcGFyc2VCeVRva2Vucyh0b2tlbmlzZXIsIG9wdGlvbnMpOworfQorCisKKy8qKiovIH0p
LAorLyogMiAqLworLyoqKi8gKChfX3VudXNlZF93ZWJwYWNrX19fd2VicGFja19tb2R1bGVfXywg
X193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykgPT4geworCitfX3dlYnBh
Y2tfcmVxdWlyZV9fLnIoX193ZWJwYWNrX2V4cG9ydHNfXyk7CisvKiBoYXJtb255IGV4cG9ydCAq
LyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgeworLyogaGFybW9u
eSBleHBvcnQgKi8gICAidHlwZU5hbWVLZXl3b3JkcyI6ICgpID0+ICgvKiBiaW5kaW5nICovIHR5
cGVOYW1lS2V5d29yZHMpLAorLyogaGFybW9ueSBleHBvcnQgKi8gICAic3RyaW5nVHlwZXMiOiAo
KSA9PiAoLyogYmluZGluZyAqLyBzdHJpbmdUeXBlcyksCisvKiBoYXJtb255IGV4cG9ydCAqLyAg
ICJhcmd1bWVudE5hbWVLZXl3b3JkcyI6ICgpID0+ICgvKiBiaW5kaW5nICovIGFyZ3VtZW50TmFt
ZUtleXdvcmRzKSwKKy8qIGhhcm1vbnkgZXhwb3J0ICovICAgIlRva2VuaXNlciI6ICgpID0+ICgv
KiBiaW5kaW5nICovIFRva2VuaXNlciksCisvKiBoYXJtb255IGV4cG9ydCAqLyAgICJXZWJJRExQ
YXJzZUVycm9yIjogKCkgPT4gKC8qIGJpbmRpbmcgKi8gV2ViSURMUGFyc2VFcnJvcikKKy8qIGhh
cm1vbnkgZXhwb3J0ICovIH0pOworLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9lcnJvcl9qc19f
V0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTsKKy8q
IGhhcm1vbnkgaW1wb3J0ICovIHZhciBfcHJvZHVjdGlvbnNfaGVscGVyc19qc19fV0VCUEFDS19J
TVBPUlRFRF9NT0RVTEVfMV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTsKKworCisKKy8vIFRo
ZXNlIHJlZ3VsYXIgZXhwcmVzc2lvbnMgdXNlIHRoZSBzdGlja3kgZmxhZyBzbyB0aGV5IHdpbGwg
b25seSBtYXRjaCBhdAorLy8gdGhlIGN1cnJlbnQgbG9jYXRpb24gKGllLiB0aGUgb2Zmc2V0IG9m
IGxhc3RJbmRleCkuCitjb25zdCB0b2tlblJlID0geworICAvLyBUaGlzIGV4cHJlc3Npb24gdXNl
cyBhIGxvb2thaGVhZCBhc3NlcnRpb24gdG8gY2F0Y2ggZmFsc2UgbWF0Y2hlcworICAvLyBhZ2Fp
bnN0IGludGVnZXJzIGVhcmx5LgorICBkZWNpbWFsOgorICAgIC8tPyg/PVswLTldKlwufFswLTld
K1tlRV0pKChbMC05XStcLlswLTldKnxbMC05XSpcLlswLTldKykoW0VlXVstK10/WzAtOV0rKT98
WzAtOV0rW0VlXVstK10/WzAtOV0rKS95LAorICBpbnRlZ2VyOiAvLT8oMChbWHhdWzAtOUEtRmEt
Zl0rfFswLTddKil8WzEtOV1bMC05XSopL3ksCisgIGlkZW50aWZpZXI6IC9bXy1dP1tBLVphLXpd
WzAtOUEtWl9hLXotXSoveSwKKyAgc3RyaW5nOiAvIlteIl0qIi95LAorICB3aGl0ZXNwYWNlOiAv
W1x0XG5cciBdKy95LAorICBjb21tZW50OiAvXC9cLy4qfFwvXCooLnxcbikqP1wqXC8veSwKKyAg
b3RoZXI6IC9bXlx0XG5cciAwLTlBLVphLXpdL3ksCit9OworCitjb25zdCB0eXBlTmFtZUtleXdv
cmRzID0gWworICAiQXJyYXlCdWZmZXIiLAorICAiRGF0YVZpZXciLAorICAiSW50OEFycmF5IiwK
KyAgIkludDE2QXJyYXkiLAorICAiSW50MzJBcnJheSIsCisgICJVaW50OEFycmF5IiwKKyAgIlVp
bnQxNkFycmF5IiwKKyAgIlVpbnQzMkFycmF5IiwKKyAgIlVpbnQ4Q2xhbXBlZEFycmF5IiwKKyAg
IkZsb2F0MzJBcnJheSIsCisgICJGbG9hdDY0QXJyYXkiLAorICAiYW55IiwKKyAgIm9iamVjdCIs
CisgICJzeW1ib2wiLAorXTsKKworY29uc3Qgc3RyaW5nVHlwZXMgPSBbIkJ5dGVTdHJpbmciLCAi
RE9NU3RyaW5nIiwgIlVTVlN0cmluZyJdOworCitjb25zdCBhcmd1bWVudE5hbWVLZXl3b3JkcyA9
IFsKKyAgImFzeW5jIiwKKyAgImF0dHJpYnV0ZSIsCisgICJjYWxsYmFjayIsCisgICJjb25zdCIs
CisgICJjb25zdHJ1Y3RvciIsCisgICJkZWxldGVyIiwKKyAgImRpY3Rpb25hcnkiLAorICAiZW51
bSIsCisgICJnZXR0ZXIiLAorICAiaW5jbHVkZXMiLAorICAiaW5oZXJpdCIsCisgICJpbnRlcmZh
Y2UiLAorICAiaXRlcmFibGUiLAorICAibWFwbGlrZSIsCisgICJuYW1lc3BhY2UiLAorICAicGFy
dGlhbCIsCisgICJyZXF1aXJlZCIsCisgICJzZXRsaWtlIiwKKyAgInNldHRlciIsCisgICJzdGF0
aWMiLAorICAic3RyaW5naWZpZXIiLAorICAidHlwZWRlZiIsCisgICJ1bnJlc3RyaWN0ZWQiLAor
XTsKKworY29uc3Qgbm9uUmVnZXhUZXJtaW5hbHMgPSBbCisgICItSW5maW5pdHkiLAorICAiRnJv
emVuQXJyYXkiLAorICAiSW5maW5pdHkiLAorICAiTmFOIiwKKyAgIk9ic2VydmFibGVBcnJheSIs
CisgICJQcm9taXNlIiwKKyAgImJpZ2ludCIsCisgICJib29sZWFuIiwKKyAgImJ5dGUiLAorICAi
ZG91YmxlIiwKKyAgImZhbHNlIiwKKyAgImZsb2F0IiwKKyAgImxvbmciLAorICAibWl4aW4iLAor
ICAibnVsbCIsCisgICJvY3RldCIsCisgICJvcHRpb25hbCIsCisgICJvciIsCisgICJyZWFkb25s
eSIsCisgICJyZWNvcmQiLAorICAic2VxdWVuY2UiLAorICAic2hvcnQiLAorICAidHJ1ZSIsCisg
ICJ1bmRlZmluZWQiLAorICAidW5zaWduZWQiLAorICAidm9pZCIsCitdLmNvbmNhdChhcmd1bWVu
dE5hbWVLZXl3b3Jkcywgc3RyaW5nVHlwZXMsIHR5cGVOYW1lS2V5d29yZHMpOworCitjb25zdCBw
dW5jdHVhdGlvbnMgPSBbCisgICIoIiwKKyAgIikiLAorICAiLCIsCisgICIuLi4iLAorICAiOiIs
CisgICI7IiwKKyAgIjwiLAorICAiPSIsCisgICI+IiwKKyAgIj8iLAorICAiWyIsCisgICJdIiwK
KyAgInsiLAorICAifSIsCitdOworCitjb25zdCByZXNlcnZlZCA9IFsKKyAgLy8gImNvbnN0cnVj
dG9yIiBpcyBub3cgYSBrZXl3b3JkCisgICJfY29uc3RydWN0b3IiLAorICAidG9TdHJpbmciLAor
ICAiX3RvU3RyaW5nIiwKK107CisKKy8qKgorICogQHR5cGVkZWYge0FycmF5SXRlbVR5cGU8UmV0
dXJuVHlwZTx0eXBlb2YgdG9rZW5pc2U+Pn0gVG9rZW4KKyAqIEBwYXJhbSB7c3RyaW5nfSBzdHIK
KyAqLworZnVuY3Rpb24gdG9rZW5pc2Uoc3RyKSB7CisgIGNvbnN0IHRva2VucyA9IFtdOworICBs
ZXQgbGFzdENoYXJJbmRleCA9IDA7CisgIGxldCB0cml2aWEgPSAiIjsKKyAgbGV0IGxpbmUgPSAx
OworICBsZXQgaW5kZXggPSAwOworICB3aGlsZSAobGFzdENoYXJJbmRleCA8IHN0ci5sZW5ndGgp
IHsKKyAgICBjb25zdCBuZXh0Q2hhciA9IHN0ci5jaGFyQXQobGFzdENoYXJJbmRleCk7CisgICAg
bGV0IHJlc3VsdCA9IC0xOworCisgICAgaWYgKC9bXHRcblxyIF0vLnRlc3QobmV4dENoYXIpKSB7
CisgICAgICByZXN1bHQgPSBhdHRlbXB0VG9rZW5NYXRjaCgid2hpdGVzcGFjZSIsIHsgbm9GbHVz
aFRyaXZpYTogdHJ1ZSB9KTsKKyAgICB9IGVsc2UgaWYgKG5leHRDaGFyID09PSAiLyIpIHsKKyAg
ICAgIHJlc3VsdCA9IGF0dGVtcHRUb2tlbk1hdGNoKCJjb21tZW50IiwgeyBub0ZsdXNoVHJpdmlh
OiB0cnVlIH0pOworICAgIH0KKworICAgIGlmIChyZXN1bHQgIT09IC0xKSB7CisgICAgICBjb25z
dCBjdXJyZW50VHJpdmlhID0gdG9rZW5zLnBvcCgpLnZhbHVlOworICAgICAgbGluZSArPSAoY3Vy
cmVudFRyaXZpYS5tYXRjaCgvXG4vZykgfHwgW10pLmxlbmd0aDsKKyAgICAgIHRyaXZpYSArPSBj
dXJyZW50VHJpdmlhOworICAgICAgaW5kZXggLT0gMTsKKyAgICB9IGVsc2UgaWYgKC9bLTAtOS5B
LVpfYS16XS8udGVzdChuZXh0Q2hhcikpIHsKKyAgICAgIHJlc3VsdCA9IGF0dGVtcHRUb2tlbk1h
dGNoKCJkZWNpbWFsIik7CisgICAgICBpZiAocmVzdWx0ID09PSAtMSkgeworICAgICAgICByZXN1
bHQgPSBhdHRlbXB0VG9rZW5NYXRjaCgiaW50ZWdlciIpOworICAgICAgfQorICAgICAgaWYgKHJl
c3VsdCA9PT0gLTEpIHsKKyAgICAgICAgcmVzdWx0ID0gYXR0ZW1wdFRva2VuTWF0Y2goImlkZW50
aWZpZXIiKTsKKyAgICAgICAgY29uc3QgbGFzdEluZGV4ID0gdG9rZW5zLmxlbmd0aCAtIDE7Cisg
ICAgICAgIGNvbnN0IHRva2VuID0gdG9rZW5zW2xhc3RJbmRleF07CisgICAgICAgIGlmIChyZXN1
bHQgIT09IC0xKSB7CisgICAgICAgICAgaWYgKHJlc2VydmVkLmluY2x1ZGVzKHRva2VuLnZhbHVl
KSkgeworICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IGAkeygwLF9wcm9kdWN0aW9uc19oZWxw
ZXJzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18udW5lc2NhcGUpKAorICAgICAgICAg
ICAgICB0b2tlbi52YWx1ZQorICAgICAgICAgICAgKX0gaXMgYSByZXNlcnZlZCBpZGVudGlmaWVy
IGFuZCBtdXN0IG5vdCBiZSB1c2VkLmA7CisgICAgICAgICAgICB0aHJvdyBuZXcgV2ViSURMUGFy
c2VFcnJvcigKKyAgICAgICAgICAgICAgKDAsX2Vycm9yX2pzX19XRUJQQUNLX0lNUE9SVEVEX01P
RFVMRV8wX18uc3ludGF4RXJyb3IpKHRva2VucywgbGFzdEluZGV4LCBudWxsLCBtZXNzYWdlKQor
ICAgICAgICAgICAgKTsKKyAgICAgICAgICB9IGVsc2UgaWYgKG5vblJlZ2V4VGVybWluYWxzLmlu
Y2x1ZGVzKHRva2VuLnZhbHVlKSkgeworICAgICAgICAgICAgdG9rZW4udHlwZSA9ICJpbmxpbmUi
OworICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICByZXR1cm4gdG9rZW5zOwotICAgIH07
Ci0gICAgCi0gICAgdmFyIHBhcnNlID0gZnVuY3Rpb24gKHRva2Vucywgb3B0KSB7Ci0gICAgICAg
IHZhciBsaW5lID0gMTsKLSAgICAgICAgdG9rZW5zID0gdG9rZW5zLnNsaWNlKCk7Ci0gICAgICAg
IAotICAgICAgICB2YXIgRkxPQVQgPSAiZmxvYXQiCi0gICAgICAgICwgICBJTlQgPSAiaW50ZWdl
ciIKLSAgICAgICAgLCAgIElEID0gImlkZW50aWZpZXIiCi0gICAgICAgICwgICBTVFIgPSAic3Ry
aW5nIgotICAgICAgICAsICAgT1RIRVIgPSAib3RoZXIiCi0gICAgICAgIDsKLSAgICAgICAgCi0g
ICAgICAgIHZhciBXZWJJRExQYXJzZUVycm9yID0gZnVuY3Rpb24gKHN0ciwgbGluZSwgaW5wdXQs
IHRva2VucykgewotICAgICAgICAgICAgdGhpcy5tZXNzYWdlID0gc3RyOwotICAgICAgICAgICAg
dGhpcy5saW5lID0gbGluZTsKLSAgICAgICAgICAgIHRoaXMuaW5wdXQgPSBpbnB1dDsKLSAgICAg
ICAgICAgIHRoaXMudG9rZW5zID0gdG9rZW5zOwotICAgICAgICB9OwotICAgICAgICBXZWJJRExQ
YXJzZUVycm9yLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAg
IHJldHVybiB0aGlzLm1lc3NhZ2UgKyAiLCBsaW5lICIgKyB0aGlzLmxpbmUgKyAiICh0b2tlbnM6
ICciICsgdGhpcy5pbnB1dCArICInKVxuIiArCi0gICAgICAgICAgICAgICAgICAgSlNPTi5zdHJp
bmdpZnkodGhpcy50b2tlbnMsIG51bGwsIDQpOwotICAgICAgICB9OwotICAgICAgICAKLSAgICAg
ICAgdmFyIGVycm9yID0gZnVuY3Rpb24gKHN0cikgewotICAgICAgICAgICAgdmFyIHRvayA9ICIi
LCBudW1Ub2tlbnMgPSAwLCBtYXhUb2tlbnMgPSA1OwotICAgICAgICAgICAgd2hpbGUgKG51bVRv
a2VucyA8IG1heFRva2VucyAmJiB0b2tlbnMubGVuZ3RoID4gbnVtVG9rZW5zKSB7Ci0gICAgICAg
ICAgICAgICAgdG9rICs9IHRva2Vuc1tudW1Ub2tlbnNdLnZhbHVlOwotICAgICAgICAgICAgICAg
IG51bVRva2VucysrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdGhyb3cgbmV3IFdlYklE
TFBhcnNlRXJyb3Ioc3RyLCBsaW5lLCB0b2ssIHRva2Vucy5zbGljZSgwLCA1KSk7Ci0gICAgICAg
IH07Ci0gICAgICAgIAotICAgICAgICB2YXIgbGFzdF90b2tlbiA9IG51bGw7Ci0gICAgICAgIAot
ICAgICAgICB2YXIgY29uc3VtZSA9IGZ1bmN0aW9uICh0eXBlLCB2YWx1ZSkgewotICAgICAgICAg
ICAgaWYgKCF0b2tlbnMubGVuZ3RoIHx8IHRva2Vuc1swXS50eXBlICE9PSB0eXBlKSByZXR1cm47
Ci0gICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAidW5kZWZpbmVkIiB8fCB0b2tlbnNb
MF0udmFsdWUgPT09IHZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgIGxhc3RfdG9rZW4gPSB0b2tl
bnMuc2hpZnQoKTsKLSAgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09IElEKSBsYXN0X3Rva2Vu
LnZhbHVlID0gbGFzdF90b2tlbi52YWx1ZS5yZXBsYWNlKC9eXy8sICIiKTsKLSAgICAgICAgICAg
ICAgICAgcmV0dXJuIGxhc3RfdG9rZW47Ci0gICAgICAgICAgICAgfQotICAgICAgICB9OwotICAg
ICAgICAKLSAgICAgICAgdmFyIHdzID0gZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgaWYgKCF0
b2tlbnMubGVuZ3RoKSByZXR1cm47Ci0gICAgICAgICAgICBpZiAodG9rZW5zWzBdLnR5cGUgPT09
ICJ3aGl0ZXNwYWNlIikgewotICAgICAgICAgICAgICAgIHZhciB0ID0gdG9rZW5zLnNoaWZ0KCk7
Ci0gICAgICAgICAgICAgICAgdC52YWx1ZS5yZXBsYWNlKC9cbi9nLCBmdW5jdGlvbiAobSkgeyBs
aW5lKys7IHJldHVybiBtOyB9KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdDsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfTsKLSAgICAgICAgCi0gICAgICAgIHZhciBhbGxfd3MgPSBmdW5jdGlv
biAoc3RvcmUsIHBlYSkgeyAvLyBwZWEgPT0gcG9zdCBleHRlbmRlZCBhdHRyaWJ1dGUsIHRwZWEg
PSBzYW1lIGZvciB0eXBlcwotICAgICAgICAgICAgdmFyIHQgPSB7IHR5cGU6ICJ3aGl0ZXNwYWNl
IiwgdmFsdWU6ICIiIH07Ci0gICAgICAgICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICAgICAg
ICAgIHZhciB3ID0gd3MoKTsKLSAgICAgICAgICAgICAgICBpZiAoIXcpIGJyZWFrOwotICAgICAg
ICAgICAgICAgIHQudmFsdWUgKz0gdy52YWx1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGlmICh0LnZhbHVlLmxlbmd0aCA+IDApIHsKLSAgICAgICAgICAgICAgICBpZiAoc3RvcmUpIHsK
LSAgICAgICAgICAgICAgICAgICAgdmFyIHcgPSB0LnZhbHVlCi0gICAgICAgICAgICAgICAgICAg
ICwgICByZSA9IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAid3MiOiAgICAgICAgICAg
ICAgICAgICAvXihbXHRcblxyIF0rKS8KLSAgICAgICAgICAgICAgICAgICAgICAgICwgICAibGlu
ZS1jb21tZW50IjogICAgICAgICAvXlwvXC8oLiopXG4/L20KLSAgICAgICAgICAgICAgICAgICAg
ICAgICwgICAibXVsdGlsaW5lLWNvbW1lbnQiOiAgICAvXlwvXCooKD86LnxcbnxccikqPylcKlwv
LwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAsICAgd3NU
eXBlcyA9IFtdCi0gICAgICAgICAgICAgICAgICAgIDsKLSAgICAgICAgICAgICAgICAgICAgZm9y
ICh2YXIgayBpbiByZSkgd3NUeXBlcy5wdXNoKGspOwotICAgICAgICAgICAgICAgICAgICB3aGls
ZSAody5sZW5ndGgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtYXRjaGVkID0gZmFs
c2U7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMCwgbiA9IHdzVHlwZXMu
bGVuZ3RoOyBpIDwgbjsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHR5
cGUgPSB3c1R5cGVzW2ldOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHcgPSB3LnJlcGxh
Y2UocmVbdHlwZV0sIGZ1bmN0aW9uICh0b2ssIG0xKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0b3JlLnB1c2goeyB0eXBlOiB0eXBlICsgKHBlYSA/ICgiLSIgKyBwZWEpIDog
IiIpLCB2YWx1ZTogbTEgfSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNo
ZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIiI7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKG1hdGNoZWQpIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoZWQpIGNvbnRpbnVlOwotICAgICAgICAgICAgICAg
ICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJTdXJwcmlzaW5nIHdoaXRlIHNwYWNlIGNvbnN0cnVj
dC4iKTsgLy8gdGhpcyBzaG91bGRuJ3QgaGFwcGVuCi0gICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHQ7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH07Ci0gICAgICAgIAotICAgICAgICB2YXIgaW50ZWdlcl90eXBlID0gZnVuY3Rp
b24gKCkgewotICAgICAgICAgICAgdmFyIHJldCA9ICIiOwotICAgICAgICAgICAgYWxsX3dzKCk7
Ci0gICAgICAgICAgICBpZiAoY29uc3VtZShJRCwgInVuc2lnbmVkIikpIHJldCA9ICJ1bnNpZ25l
ZCAiOwotICAgICAgICAgICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICBpZiAoY29uc3VtZShJRCwg
InNob3J0IikpIHJldHVybiByZXQgKyAic2hvcnQiOwotICAgICAgICAgICAgaWYgKGNvbnN1bWUo
SUQsICJsb25nIikpIHsKLSAgICAgICAgICAgICAgICByZXQgKz0gImxvbmciOwotICAgICAgICAg
ICAgICAgIGFsbF93cygpOwotICAgICAgICAgICAgICAgIGlmIChjb25zdW1lKElELCAibG9uZyIp
KSByZXR1cm4gcmV0ICsgIiBsb25nIjsKLSAgICAgICAgICAgICAgICByZXR1cm4gcmV0OwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHJldCkgZXJyb3IoIkZhaWxlZCB0byBwYXJzZSBp
bnRlZ2VyIHR5cGUiKTsKLSAgICAgICAgfTsKLSAgICAgICAgCi0gICAgICAgIHZhciBmbG9hdF90
eXBlID0gZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgdmFyIHJldCA9ICIiOwotICAgICAgICAg
ICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICBpZiAoY29uc3VtZShJRCwgInVucmVzdHJpY3RlZCIp
KSByZXQgPSAidW5yZXN0cmljdGVkICI7Ci0gICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAg
ICAgIGlmIChjb25zdW1lKElELCAiZmxvYXQiKSkgcmV0dXJuIHJldCArICJmbG9hdCI7Ci0gICAg
ICAgICAgICBpZiAoY29uc3VtZShJRCwgImRvdWJsZSIpKSByZXR1cm4gcmV0ICsgImRvdWJsZSI7
Ci0gICAgICAgICAgICBpZiAocmV0KSBlcnJvcigiRmFpbGVkIHRvIHBhcnNlIGZsb2F0IHR5cGUi
KTsKLSAgICAgICAgfTsKLSAgICAgICAgCi0gICAgICAgIHZhciBwcmltaXRpdmVfdHlwZSA9IGZ1
bmN0aW9uICgpIHsKLSAgICAgICAgICAgIHZhciBudW1fdHlwZSA9IGludGVnZXJfdHlwZSgpIHx8
IGZsb2F0X3R5cGUoKTsKLSAgICAgICAgICAgIGlmIChudW1fdHlwZSkgcmV0dXJuIG51bV90eXBl
OwotICAgICAgICAgICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICBpZiAoY29uc3VtZShJRCwgImJv
b2xlYW4iKSkgcmV0dXJuICJib29sZWFuIjsKLSAgICAgICAgICAgIGlmIChjb25zdW1lKElELCAi
Ynl0ZSIpKSByZXR1cm4gImJ5dGUiOwotICAgICAgICAgICAgaWYgKGNvbnN1bWUoSUQsICJvY3Rl
dCIpKSByZXR1cm4gIm9jdGV0IjsKLSAgICAgICAgfTsKLSAgICAgICAgCi0gICAgICAgIHZhciBj
b25zdF92YWx1ZSA9IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIGlmIChjb25zdW1lKElELCAi
dHJ1ZSIpKSByZXR1cm4geyB0eXBlOiAiYm9vbGVhbiIsIHZhbHVlOiB0cnVlIH07Ci0gICAgICAg
ICAgICBpZiAoY29uc3VtZShJRCwgImZhbHNlIikpIHJldHVybiB7IHR5cGU6ICJib29sZWFuIiwg
dmFsdWU6IGZhbHNlIH07Ci0gICAgICAgICAgICBpZiAoY29uc3VtZShJRCwgIm51bGwiKSkgcmV0
dXJuIHsgdHlwZTogIm51bGwiIH07Ci0gICAgICAgICAgICBpZiAoY29uc3VtZShJRCwgIkluZmlu
aXR5IikpIHJldHVybiB7IHR5cGU6ICJJbmZpbml0eSIsIG5lZ2F0aXZlOiBmYWxzZSB9OwotICAg
ICAgICAgICAgaWYgKGNvbnN1bWUoSUQsICJOYU4iKSkgcmV0dXJuIHsgdHlwZTogIk5hTiIgfTsK
LSAgICAgICAgICAgIHZhciByZXQgPSBjb25zdW1lKEZMT0FUKSB8fCBjb25zdW1lKElOVCk7Ci0g
ICAgICAgICAgICBpZiAocmV0KSByZXR1cm4geyB0eXBlOiAibnVtYmVyIiwgdmFsdWU6IDEgKiBy
ZXQudmFsdWUgfTsKLSAgICAgICAgICAgIHZhciB0b2sgPSBjb25zdW1lKE9USEVSLCAiLSIpOwot
ICAgICAgICAgICAgaWYgKHRvaykgewotICAgICAgICAgICAgICAgIGlmIChjb25zdW1lKElELCAi
SW5maW5pdHkiKSkgcmV0dXJuIHsgdHlwZTogIkluZmluaXR5IiwgbmVnYXRpdmU6IHRydWUgfTsK
LSAgICAgICAgICAgICAgICBlbHNlIHRva2Vucy51bnNoaWZ0KHRvayk7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH07Ci0gICAgICAgIAotICAgICAgICB2YXIgdHlwZV9zdWZmaXggPSBmdW5jdGlv
biAob2JqKSB7Ci0gICAgICAgICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICAgICAgICAgIGFs
bF93cygpOwotICAgICAgICAgICAgICAgIGlmIChjb25zdW1lKE9USEVSLCAiPyIpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmIChvYmoubnVsbGFibGUpIGVycm9yKCJDYW4ndCBudWxsYWJsZSBt
b3JlIHRoYW4gb25jZSIpOwotICAgICAgICAgICAgICAgICAgICBvYmoubnVsbGFibGUgPSB0cnVl
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIGlmIChjb25zdW1lKE9U
SEVSLCAiWyIpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGFsbF93cygpOwotICAgICAgICAgICAg
ICAgICAgICBjb25zdW1lKE9USEVSLCAiXSIpIHx8IGVycm9yKCJVbnRlcm1pbmF0ZWQgYXJyYXkg
dHlwZSIpOwotICAgICAgICAgICAgICAgICAgICBpZiAoIW9iai5hcnJheSkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgb2JqLmFycmF5ID0gMTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG9i
ai5udWxsYWJsZUFycmF5ID0gW29iai5udWxsYWJsZV07Ci0gICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBvYmou
YXJyYXkrKzsKLSAgICAgICAgICAgICAgICAgICAgICAgIG9iai5udWxsYWJsZUFycmF5LnB1c2go
b2JqLm51bGxhYmxlKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAg
ICBvYmoubnVsbGFibGUgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgZWxzZSByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0gICAgICAgIAotICAg
ICAgICB2YXIgc2luZ2xlX3R5cGUgPSBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICB2YXIgcHJp
bSA9IHByaW1pdGl2ZV90eXBlKCkKLSAgICAgICAgICAgICwgICByZXQgPSB7IHNlcXVlbmNlOiBm
YWxzZSwgZ2VuZXJpYzogbnVsbCwgbnVsbGFibGU6IGZhbHNlLCBhcnJheTogZmFsc2UsIHVuaW9u
OiBmYWxzZSB9Ci0gICAgICAgICAgICAsICAgbmFtZQotICAgICAgICAgICAgLCAgIHZhbHVlCi0g
ICAgICAgICAgICA7Ci0gICAgICAgICAgICBpZiAocHJpbSkgewotICAgICAgICAgICAgICAgIHJl
dC5pZGxUeXBlID0gcHJpbTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKG5h
bWUgPSBjb25zdW1lKElEKSkgewotICAgICAgICAgICAgICAgIHZhbHVlID0gbmFtZS52YWx1ZTsK
LSAgICAgICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgICAgICAvLyBHZW5lcmljIHR5
cGVzCi0gICAgICAgICAgICAgICAgaWYgKGNvbnN1bWUoT1RIRVIsICI8IikpIHsKLSAgICAgICAg
ICAgICAgICAgICAgLy8gYmFja3dhcmRzIGNvbXBhdAotICAgICAgICAgICAgICAgICAgICBpZiAo
dmFsdWUgPT09ICJzZXF1ZW5jZSIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldC5zZXF1
ZW5jZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAg
cmV0LmdlbmVyaWMgPSB2YWx1ZTsKLSAgICAgICAgICAgICAgICAgICAgcmV0LmlkbFR5cGUgPSB0
eXBlKCkgfHwgZXJyb3IoIkVycm9yIHBhcnNpbmcgZ2VuZXJpYyB0eXBlICIgKyB2YWx1ZSk7Ci0g
ICAgICAgICAgICAgICAgICAgIGFsbF93cygpOwotICAgICAgICAgICAgICAgICAgICBpZiAoIWNv
bnN1bWUoT1RIRVIsICI+IikpIGVycm9yKCJVbnRlcm1pbmF0ZWQgZ2VuZXJpYyB0eXBlICIgKyB2
YWx1ZSk7Ci0gICAgICAgICAgICAgICAgICAgIHR5cGVfc3VmZml4KHJldCk7Ci0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiByZXQ7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IGVsc2UgewotICAgICAgICAgICAgICAgICAgICByZXQuaWRsVHlwZSA9IHZhbHVlOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHR5cGVfc3VmZml4KHJl
dCk7Ci0gICAgICAgICAgICBpZiAocmV0Lm51bGxhYmxlICYmICFyZXQuYXJyYXkgJiYgcmV0Lmlk
bFR5cGUgPT09ICJhbnkiKSBlcnJvcigiVHlwZSBhbnkgY2Fubm90IGJlIG1hZGUgbnVsbGFibGUi
KTsKLSAgICAgICAgICAgIHJldHVybiByZXQ7Ci0gICAgICAgIH07Ci0gICAgICAgIAotICAgICAg
ICB2YXIgdW5pb25fdHlwZSA9IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIGFsbF93cygpOwot
ICAgICAgICAgICAgaWYgKCFjb25zdW1lKE9USEVSLCAiKCIpKSByZXR1cm47Ci0gICAgICAgICAg
ICB2YXIgcmV0ID0geyBzZXF1ZW5jZTogZmFsc2UsIGdlbmVyaWM6IG51bGwsIG51bGxhYmxlOiBm
YWxzZSwgYXJyYXk6IGZhbHNlLCB1bmlvbjogdHJ1ZSwgaWRsVHlwZTogW10gfTsKLSAgICAgICAg
ICAgIHZhciBmc3QgPSB0eXBlKCkgfHwgZXJyb3IoIlVuaW9uIHR5cGUgd2l0aCBubyBjb250ZW50
Iik7Ci0gICAgICAgICAgICByZXQuaWRsVHlwZS5wdXNoKGZzdCk7Ci0gICAgICAgICAgICB3aGls
ZSAodHJ1ZSkgewotICAgICAgICAgICAgICAgIGFsbF93cygpOwotICAgICAgICAgICAgICAgIGlm
ICghY29uc3VtZShJRCwgIm9yIikpIGJyZWFrOwotICAgICAgICAgICAgICAgIHZhciB0eXAgPSB0
eXBlKCkgfHwgZXJyb3IoIk5vIHR5cGUgYWZ0ZXIgJ29yJyBpbiB1bmlvbiB0eXBlIik7Ci0gICAg
ICAgICAgICAgICAgcmV0LmlkbFR5cGUucHVzaCh0eXApOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgaWYgKCFjb25zdW1lKE9USEVSLCAiKSIpKSBlcnJvcigiVW50ZXJtaW5hdGVkIHVuaW9u
IHR5cGUiKTsKLSAgICAgICAgICAgIHR5cGVfc3VmZml4KHJldCk7Ci0gICAgICAgICAgICByZXR1
cm4gcmV0OwotICAgICAgICB9OwotICAgICAgICAKLSAgICAgICAgdmFyIHR5cGUgPSBmdW5jdGlv
biAoKSB7Ci0gICAgICAgICAgICByZXR1cm4gc2luZ2xlX3R5cGUoKSB8fCB1bmlvbl90eXBlKCk7
Ci0gICAgICAgIH07Ci0gICAgICAgIAotICAgICAgICB2YXIgYXJndW1lbnQgPSBmdW5jdGlvbiAo
c3RvcmUpIHsKLSAgICAgICAgICAgIHZhciByZXQgPSB7IG9wdGlvbmFsOiBmYWxzZSwgdmFyaWFk
aWM6IGZhbHNlIH07Ci0gICAgICAgICAgICByZXQuZXh0QXR0cnMgPSBleHRlbmRlZF9hdHRycyhz
dG9yZSk7Ci0gICAgICAgICAgICBhbGxfd3Moc3RvcmUsICJwZWEiKTsKLSAgICAgICAgICAgIHZh
ciBvcHRfdG9rZW4gPSBjb25zdW1lKElELCAib3B0aW9uYWwiKTsKLSAgICAgICAgICAgIGlmIChv
cHRfdG9rZW4pIHsKLSAgICAgICAgICAgICAgICByZXQub3B0aW9uYWwgPSB0cnVlOwotICAgICAg
ICAgICAgICAgIGFsbF93cygpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0LmlkbFR5
cGUgPSB0eXBlKCk7Ci0gICAgICAgICAgICBpZiAoIXJldC5pZGxUeXBlKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKG9wdF90b2tlbikgdG9rZW5zLnVuc2hpZnQob3B0X3Rva2VuKTsKLSAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2YXIgdHlwZV90b2tl
biA9IGxhc3RfdG9rZW47Ci0gICAgICAgICAgICBpZiAoIXJldC5vcHRpb25hbCkgewotICAgICAg
ICAgICAgICAgIGFsbF93cygpOwotICAgICAgICAgICAgICAgIGlmICh0b2tlbnMubGVuZ3RoID49
IDMgJiYKLSAgICAgICAgICAgICAgICAgICAgdG9rZW5zWzBdLnR5cGUgPT09ICJvdGhlciIgJiYg
dG9rZW5zWzBdLnZhbHVlID09PSAiLiIgJiYKLSAgICAgICAgICAgICAgICAgICAgdG9rZW5zWzFd
LnR5cGUgPT09ICJvdGhlciIgJiYgdG9rZW5zWzFdLnZhbHVlID09PSAiLiIgJiYKLSAgICAgICAg
ICAgICAgICAgICAgdG9rZW5zWzJdLnR5cGUgPT09ICJvdGhlciIgJiYgdG9rZW5zWzJdLnZhbHVl
ID09PSAiLiIKLSAgICAgICAgICAgICAgICAgICAgKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRv
a2Vucy5zaGlmdCgpOwotICAgICAgICAgICAgICAgICAgICB0b2tlbnMuc2hpZnQoKTsKLSAgICAg
ICAgICAgICAgICAgICAgdG9rZW5zLnNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAgICAgIHJldC52
YXJpYWRpYyA9IHRydWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICB2YXIgbmFtZSA9IGNvbnN1bWUoSUQpOwotICAg
ICAgICAgICAgaWYgKCFuYW1lKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG9wdF90b2tlbikgdG9r
ZW5zLnVuc2hpZnQob3B0X3Rva2VuKTsKLSAgICAgICAgICAgICAgICB0b2tlbnMudW5zaGlmdCh0
eXBlX3Rva2VuKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICByZXQubmFtZSA9IG5hbWUudmFsdWU7Ci0gICAgICAgICAgICBpZiAocmV0Lm9wdGlv
bmFsKSB7Ci0gICAgICAgICAgICAgICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICAgICAgcmV0WyJk
ZWZhdWx0Il0gPSBkZWZhdWx0XygpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJu
IHJldDsKLSAgICAgICAgfTsKLSAgICAgICAgCi0gICAgICAgIHZhciBhcmd1bWVudF9saXN0ID0g
ZnVuY3Rpb24gKHN0b3JlKSB7Ci0gICAgICAgICAgICB2YXIgcmV0ID0gW10KLSAgICAgICAgICAg
ICwgICBhcmcgPSBhcmd1bWVudChzdG9yZSA/IHJldCA6IG51bGwpCi0gICAgICAgICAgICA7Ci0g
ICAgICAgICAgICBpZiAoIWFyZykgcmV0dXJuOwotICAgICAgICAgICAgcmV0LnB1c2goYXJnKTsK
LSAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgICAgICAgICAgYWxsX3dzKHN0b3Jl
ID8gcmV0IDogbnVsbCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKE9USEVSLCAiLCIp
KSByZXR1cm4gcmV0OwotICAgICAgICAgICAgICAgIHZhciBueHQgPSBhcmd1bWVudChzdG9yZSA/
IHJldCA6IG51bGwpIHx8IGVycm9yKCJUcmFpbGluZyBjb21tYSBpbiBhcmd1bWVudHMgbGlzdCIp
OwotICAgICAgICAgICAgICAgIHJldC5wdXNoKG54dCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH07Ci0gICAgICAgIAotICAgICAgICB2YXIgdHlwZV9wYWlyID0gZnVuY3Rpb24gKCkgewotICAg
ICAgICAgICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICB2YXIgayA9IHR5cGUoKTsKLSAgICAgICAg
ICAgIGlmICghaykgcmV0dXJuOwotICAgICAgICAgICAgYWxsX3dzKCkKLSAgICAgICAgICAgIGlm
ICghY29uc3VtZShPVEhFUiwgIiwiKSkgcmV0dXJuOwotICAgICAgICAgICAgYWxsX3dzKCk7Ci0g
ICAgICAgICAgICB2YXIgdiA9IHR5cGUoKTsKLSAgICAgICAgICAgIGlmICghdikgcmV0dXJuOwot
ICAgICAgICAgICAgcmV0dXJuIFtrLCB2XTsKLSAgICAgICAgfTsKLSAgICAgICAgCi0gICAgICAg
IHZhciBzaW1wbGVfZXh0ZW5kZWRfYXR0ciA9IGZ1bmN0aW9uIChzdG9yZSkgewotICAgICAgICAg
ICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICB2YXIgbmFtZSA9IGNvbnN1bWUoSUQpOwotICAgICAg
ICAgICAgaWYgKCFuYW1lKSByZXR1cm47Ci0gICAgICAgICAgICB2YXIgcmV0ID0gewotICAgICAg
ICAgICAgICAgIG5hbWU6IG5hbWUudmFsdWUKLSAgICAgICAgICAgICwgICAiYXJndW1lbnRzIjog
bnVsbAotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIGFsbF93cygpOwotICAgICAgICAgICAg
dmFyIGVxID0gY29uc3VtZShPVEhFUiwgIj0iKTsKLSAgICAgICAgICAgIGlmIChlcSkgewotICAg
ICAgICAgICAgICAgIHZhciByaHM7Ci0gICAgICAgICAgICAgICAgYWxsX3dzKCk7Ci0gICAgICAg
ICAgICAgICAgaWYgKHJocyA9IGNvbnN1bWUoSUQpKSB7Ci0gICAgICAgICAgICAgICAgICByZXQu
cmhzID0gcmhzCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNv
bnN1bWUoT1RIRVIsICIoIikpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gW0V4cG9zZWQ9KFdp
bmRvdyxXb3JrZXIpXQotICAgICAgICAgICAgICAgICAgICByaHMgPSBbXTsKLSAgICAgICAgICAg
ICAgICAgICAgdmFyIGlkID0gY29uc3VtZShJRCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChp
ZCkgewotICAgICAgICAgICAgICAgICAgICAgIHJocyA9IFtpZC52YWx1ZV07Ci0gICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllcnMocmhzKTsKLSAgICAg
ICAgICAgICAgICAgICAgY29uc3VtZShPVEhFUiwgIikiKSB8fCBlcnJvcigiVW5leHBlY3RlZCB0
b2tlbiBpbiBleHRlbmRlZCBhdHRyaWJ1dGUgYXJndW1lbnQgbGlzdCBvciB0eXBlIHBhaXIiKTsK
LSAgICAgICAgICAgICAgICAgICAgcmV0LnJocyA9IHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IHR5cGU6ICJpZGVudGlmaWVyLWxpc3QiLAotICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6
IHJocwotICAgICAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICBpZiAoIXJldC5yaHMpIHJldHVybiBlcnJvcigiTm8gcmlnaHQgaGFuZCBzaWRlIHRv
IGV4dGVuZGVkIGF0dHJpYnV0ZSBhc3NpZ25tZW50Iik7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgIGlmIChjb25zdW1lKE9USEVSLCAiKCIpKSB7Ci0g
ICAgICAgICAgICAgICAgdmFyIGFyZ3MsIHBhaXI7Ci0gICAgICAgICAgICAgICAgLy8gW0NvbnN0
cnVjdG9yKERPTVN0cmluZyBzdHIpXQotICAgICAgICAgICAgICAgIGlmIChhcmdzID0gYXJndW1l
bnRfbGlzdChzdG9yZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0WyJhcmd1bWVudHMiXSA9
IGFyZ3M7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIC8vIFtNYXBDbGFzcyhE
T01TdHJpbmcsIERPTVN0cmluZyldCi0gICAgICAgICAgICAgICAgZWxzZSBpZiAocGFpciA9IHR5
cGVfcGFpcigpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldC50eXBlUGFpciA9IHBhaXI7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIC8vIFtDb25zdHJ1Y3RvcigpXQotICAg
ICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICByZXRbImFyZ3VtZW50cyJd
ID0gW107Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGFsbF93cygpOwotICAg
ICAgICAgICAgICAgIGNvbnN1bWUoT1RIRVIsICIpIikgfHwgZXJyb3IoIlVuZXhwZWN0ZWQgdG9r
ZW4gaW4gZXh0ZW5kZWQgYXR0cmlidXRlIGFyZ3VtZW50IGxpc3Qgb3IgdHlwZSBwYWlyIik7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gcmV0OwotICAgICAgICB9OwotICAgICAg
ICAKLSAgICAgICAgLy8gTm90ZTogd2UgcGFyc2Ugc29tZXRoaW5nIHNpbXBsZXIgdGhhbiB0aGUg
b2ZmaWNpYWwgc3ludGF4LiBJdCdzIGFsbCB0aGF0IGV2ZXIKLSAgICAgICAgLy8gc2VlbXMgdG8g
YmUgdXNlZAotICAgICAgICB2YXIgZXh0ZW5kZWRfYXR0cnMgPSBmdW5jdGlvbiAoc3RvcmUpIHsK
LSAgICAgICAgICAgIHZhciBlYXMgPSBbXTsKLSAgICAgICAgICAgIGFsbF93cyhzdG9yZSk7Ci0g
ICAgICAgICAgICBpZiAoIWNvbnN1bWUoT1RIRVIsICJbIikpIHJldHVybiBlYXM7Ci0gICAgICAg
ICAgICBlYXNbMF0gPSBzaW1wbGVfZXh0ZW5kZWRfYXR0cihzdG9yZSkgfHwgZXJyb3IoIkV4dGVu
ZGVkIGF0dHJpYnV0ZSB3aXRoIG5vdCBjb250ZW50Iik7Ci0gICAgICAgICAgICBhbGxfd3MoKTsK
LSAgICAgICAgICAgIHdoaWxlIChjb25zdW1lKE9USEVSLCAiLCIpKSB7Ci0gICAgICAgICAgICAg
ICAgZWFzLnB1c2goc2ltcGxlX2V4dGVuZGVkX2F0dHIoc3RvcmUpIHx8IGVycm9yKCJUcmFpbGlu
ZyBjb21tYSBpbiBleHRlbmRlZCBhdHRyaWJ1dGUiKSk7Ci0gICAgICAgICAgICAgICAgYWxsX3dz
KCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjb25zdW1lKE9USEVSLCAiXSIpIHx8IGVy
cm9yKCJObyBlbmQgb2YgZXh0ZW5kZWQgYXR0cmlidXRlIik7Ci0gICAgICAgICAgICByZXR1cm4g
ZWFzOwotICAgICAgICB9OwotICAgICAgICAKLSAgICAgICAgdmFyIGRlZmF1bHRfID0gZnVuY3Rp
b24gKCkgewotICAgICAgICAgICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICBpZiAoY29uc3VtZShP
VEhFUiwgIj0iKSkgewotICAgICAgICAgICAgICAgIGFsbF93cygpOwotICAgICAgICAgICAgICAg
IHZhciBkZWYgPSBjb25zdF92YWx1ZSgpOwotICAgICAgICAgICAgICAgIGlmIChkZWYpIHsKLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGRlZjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgZWxzZSBpZiAoY29uc3VtZShPVEhFUiwgIlsiKSkgewotICAgICAgICAgICAgICAg
ICAgICBpZiAoIWNvbnN1bWUoT1RIRVIsICJdIikpIGVycm9yKCJEZWZhdWx0IHNlcXVlbmNlIHZh
bHVlIG11c3QgYmUgZW1wdHkiKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTog
InNlcXVlbmNlIiwgdmFsdWU6IFtdIH07Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICB2YXIgc3RyID0gY29uc3VtZShTVFIpIHx8
IGVycm9yKCJObyB2YWx1ZSBmb3IgZGVmYXVsdCIpOwotICAgICAgICAgICAgICAgICAgICBzdHIu
dmFsdWUgPSBzdHIudmFsdWUucmVwbGFjZSgvXiIvLCAiIikucmVwbGFjZSgvIiQvLCAiIik7Ci0g
ICAgICAgICAgICAgICAgICAgIHJldHVybiBzdHI7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgfQotICAgICAgICB9OwotICAgICAgICAKLSAgICAgICAgdmFyIGNvbnN0XyA9IGZ1bmN0
aW9uIChzdG9yZSkgewotICAgICAgICAgICAgYWxsX3dzKHN0b3JlLCAicGVhIik7Ci0gICAgICAg
ICAgICBpZiAoIWNvbnN1bWUoSUQsICJjb25zdCIpKSByZXR1cm47Ci0gICAgICAgICAgICB2YXIg
cmV0ID0geyB0eXBlOiAiY29uc3QiLCBudWxsYWJsZTogZmFsc2UgfTsKLSAgICAgICAgICAgIGFs
bF93cygpOwotICAgICAgICAgICAgdmFyIHR5cCA9IHByaW1pdGl2ZV90eXBlKCk7Ci0gICAgICAg
ICAgICBpZiAoIXR5cCkgewotICAgICAgICAgICAgICAgIHR5cCA9IGNvbnN1bWUoSUQpIHx8IGVy
cm9yKCJObyB0eXBlIGZvciBjb25zdCIpOwotICAgICAgICAgICAgICAgIHR5cCA9IHR5cC52YWx1
ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldC5pZGxUeXBlID0gdHlwOwotICAgICAg
ICAgICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICBpZiAoY29uc3VtZShPVEhFUiwgIj8iKSkgewot
ICAgICAgICAgICAgICAgIHJldC5udWxsYWJsZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgYWxs
X3dzKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2YXIgbmFtZSA9IGNvbnN1bWUoSUQp
IHx8IGVycm9yKCJObyBuYW1lIGZvciBjb25zdCIpOwotICAgICAgICAgICAgcmV0Lm5hbWUgPSBu
YW1lLnZhbHVlOwotICAgICAgICAgICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICBjb25zdW1lKE9U
SEVSLCAiPSIpIHx8IGVycm9yKCJObyB2YWx1ZSBhc3NpZ25tZW50IGZvciBjb25zdCIpOwotICAg
ICAgICAgICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICB2YXIgY250ID0gY29uc3RfdmFsdWUoKTsK
LSAgICAgICAgICAgIGlmIChjbnQpIHJldC52YWx1ZSA9IGNudDsKLSAgICAgICAgICAgIGVsc2Ug
ZXJyb3IoIk5vIHZhbHVlIGZvciBjb25zdCIpOwotICAgICAgICAgICAgYWxsX3dzKCk7Ci0gICAg
ICAgICAgICBjb25zdW1lKE9USEVSLCAiOyIpIHx8IGVycm9yKCJVbnRlcm1pbmF0ZWQgY29uc3Qi
KTsKLSAgICAgICAgICAgIHJldHVybiByZXQ7Ci0gICAgICAgIH07Ci0gICAgICAgIAotICAgICAg
ICB2YXIgaW5oZXJpdGFuY2UgPSBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICBhbGxfd3MoKTsK
LSAgICAgICAgICAgIGlmIChjb25zdW1lKE9USEVSLCAiOiIpKSB7Ci0gICAgICAgICAgICAgICAg
YWxsX3dzKCk7Ci0gICAgICAgICAgICAgICAgdmFyIGluaCA9IGNvbnN1bWUoSUQpIHx8IGVycm9y
ICgiTm8gdHlwZSBpbiBpbmhlcml0YW5jZSIpOwotICAgICAgICAgICAgICAgIHJldHVybiBpbmgu
dmFsdWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0gICAgICAgIAotICAgICAgICB2YXIg
b3BlcmF0aW9uX3Jlc3QgPSBmdW5jdGlvbiAocmV0LCBzdG9yZSkgewotICAgICAgICAgICAgYWxs
X3dzKCk7Ci0gICAgICAgICAgICBpZiAoIXJldCkgcmV0ID0ge307Ci0gICAgICAgICAgICB2YXIg
bmFtZSA9IGNvbnN1bWUoSUQpOwotICAgICAgICAgICAgcmV0Lm5hbWUgPSBuYW1lID8gbmFtZS52
YWx1ZSA6IG51bGw7Ci0gICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgIGNvbnN1bWUo
T1RIRVIsICIoIikgfHwgZXJyb3IoIkludmFsaWQgb3BlcmF0aW9uIik7Ci0gICAgICAgICAgICBy
ZXRbImFyZ3VtZW50cyJdID0gYXJndW1lbnRfbGlzdChzdG9yZSkgfHwgW107Ci0gICAgICAgICAg
ICBhbGxfd3MoKTsKLSAgICAgICAgICAgIGNvbnN1bWUoT1RIRVIsICIpIikgfHwgZXJyb3IoIlVu
dGVybWluYXRlZCBvcGVyYXRpb24iKTsKLSAgICAgICAgICAgIGFsbF93cygpOwotICAgICAgICAg
ICAgY29uc3VtZShPVEhFUiwgIjsiKSB8fCBlcnJvcigiVW50ZXJtaW5hdGVkIG9wZXJhdGlvbiIp
OwotICAgICAgICAgICAgcmV0dXJuIHJldDsKLSAgICAgICAgfTsKLSAgICAgICAgCi0gICAgICAg
IHZhciBjYWxsYmFjayA9IGZ1bmN0aW9uIChzdG9yZSkgewotICAgICAgICAgICAgYWxsX3dzKHN0
b3JlLCAicGVhIik7Ci0gICAgICAgICAgICB2YXIgcmV0OwotICAgICAgICAgICAgaWYgKCFjb25z
dW1lKElELCAiY2FsbGJhY2siKSkgcmV0dXJuOwotICAgICAgICAgICAgYWxsX3dzKCk7Ci0gICAg
ICAgICAgICB2YXIgdG9rID0gY29uc3VtZShJRCwgImludGVyZmFjZSIpOwotICAgICAgICAgICAg
aWYgKHRvaykgewotICAgICAgICAgICAgICAgIHRva2Vucy51bnNoaWZ0KHRvayk7Ci0gICAgICAg
ICAgICAgICAgcmV0ID0gaW50ZXJmYWNlXygpOwotICAgICAgICAgICAgICAgIHJldC50eXBlID0g
ImNhbGxiYWNrIGludGVyZmFjZSI7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIHZhciBuYW1lID0gY29uc3VtZShJRCkgfHwgZXJyb3IoIk5v
IG5hbWUgZm9yIGNhbGxiYWNrIik7Ci0gICAgICAgICAgICByZXQgPSB7IHR5cGU6ICJjYWxsYmFj
ayIsIG5hbWU6IG5hbWUudmFsdWUgfTsKLSAgICAgICAgICAgIGFsbF93cygpOwotICAgICAgICAg
ICAgY29uc3VtZShPVEhFUiwgIj0iKSB8fCBlcnJvcigiTm8gYXNzaWdubWVudCBpbiBjYWxsYmFj
ayIpOwotICAgICAgICAgICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICByZXQuaWRsVHlwZSA9IHJl
dHVybl90eXBlKCk7Ci0gICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgIGNvbnN1bWUo
T1RIRVIsICIoIikgfHwgZXJyb3IoIk5vIGFyZ3VtZW50cyBpbiBjYWxsYmFjayIpOwotICAgICAg
ICAgICAgcmV0WyJhcmd1bWVudHMiXSA9IGFyZ3VtZW50X2xpc3Qoc3RvcmUpIHx8IFtdOwotICAg
ICAgICAgICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICBjb25zdW1lKE9USEVSLCAiKSIpIHx8IGVy
cm9yKCJVbnRlcm1pbmF0ZWQgY2FsbGJhY2siKTsKLSAgICAgICAgICAgIGFsbF93cygpOwotICAg
ICAgICAgICAgY29uc3VtZShPVEhFUiwgIjsiKSB8fCBlcnJvcigiVW50ZXJtaW5hdGVkIGNhbGxi
YWNrIik7Ci0gICAgICAgICAgICByZXR1cm4gcmV0OwotICAgICAgICB9OworICAgICAgfQorICAg
IH0gZWxzZSBpZiAobmV4dENoYXIgPT09ICciJykgeworICAgICAgcmVzdWx0ID0gYXR0ZW1wdFRv
a2VuTWF0Y2goInN0cmluZyIpOworICAgIH0KIAotICAgICAgICB2YXIgYXR0cmlidXRlID0gZnVu
Y3Rpb24gKHN0b3JlKSB7Ci0gICAgICAgICAgICBhbGxfd3Moc3RvcmUsICJwZWEiKTsKLSAgICAg
ICAgICAgIHZhciBncmFiYmVkID0gW10KLSAgICAgICAgICAgICwgICByZXQgPSB7Ci0gICAgICAg
ICAgICAgICAgdHlwZTogICAgICAgICAgICJhdHRyaWJ1dGUiCi0gICAgICAgICAgICAsICAgInN0
YXRpYyI6ICAgICAgIGZhbHNlCi0gICAgICAgICAgICAsICAgc3RyaW5naWZpZXI6ICAgIGZhbHNl
Ci0gICAgICAgICAgICAsICAgaW5oZXJpdDogICAgICAgIGZhbHNlCi0gICAgICAgICAgICAsICAg
cmVhZG9ubHk6ICAgICAgIGZhbHNlCi0gICAgICAgICAgICB9OwotICAgICAgICAgICAgaWYgKGNv
bnN1bWUoSUQsICJzdGF0aWMiKSkgewotICAgICAgICAgICAgICAgIHJldFsic3RhdGljIl0gPSB0
cnVlOwotICAgICAgICAgICAgICAgIGdyYWJiZWQucHVzaChsYXN0X3Rva2VuKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKGNvbnN1bWUoSUQsICJzdHJpbmdpZmllciIpKSB7
Ci0gICAgICAgICAgICAgICAgcmV0LnN0cmluZ2lmaWVyID0gdHJ1ZTsKLSAgICAgICAgICAgICAg
ICBncmFiYmVkLnB1c2gobGFzdF90b2tlbik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2
YXIgdyA9IGFsbF93cygpOwotICAgICAgICAgICAgaWYgKHcpIGdyYWJiZWQucHVzaCh3KTsKLSAg
ICAgICAgICAgIGlmIChjb25zdW1lKElELCAiaW5oZXJpdCIpKSB7Ci0gICAgICAgICAgICAgICAg
aWYgKHJldFsic3RhdGljIl0gfHwgcmV0LnN0cmluZ2lmaWVyKSBlcnJvcigiQ2Fubm90IGhhdmUg
YSBzdGF0aWMgb3Igc3RyaW5naWZpZXIgaW5oZXJpdCIpOwotICAgICAgICAgICAgICAgIHJldC5p
bmhlcml0ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBncmFiYmVkLnB1c2gobGFzdF90b2tlbik7
Ci0gICAgICAgICAgICAgICAgdmFyIHcgPSBhbGxfd3MoKTsKLSAgICAgICAgICAgICAgICBpZiAo
dykgZ3JhYmJlZC5wdXNoKHcpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGNvbnN1
bWUoSUQsICJyZWFkb25seSIpKSB7Ci0gICAgICAgICAgICAgICAgcmV0LnJlYWRvbmx5ID0gdHJ1
ZTsKLSAgICAgICAgICAgICAgICBncmFiYmVkLnB1c2gobGFzdF90b2tlbik7Ci0gICAgICAgICAg
ICAgICAgdmFyIHcgPSBhbGxfd3MoKTsKLSAgICAgICAgICAgICAgICBpZiAodykgZ3JhYmJlZC5w
dXNoKHcpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKCFjb25zdW1lKElELCAiYXR0
cmlidXRlIikpIHsKLSAgICAgICAgICAgICAgICB0b2tlbnMgPSBncmFiYmVkLmNvbmNhdCh0b2tl
bnMpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGFsbF93cygpOwotICAgICAgICAgICAgcmV0LmlkbFR5cGUgPSB0eXBlKCkgfHwgZXJyb3IoIk5v
IHR5cGUgaW4gYXR0cmlidXRlIik7Ci0gICAgICAgICAgICBpZiAocmV0LmlkbFR5cGUuc2VxdWVu
Y2UpIGVycm9yKCJBdHRyaWJ1dGVzIGNhbm5vdCBhY2NlcHQgc2VxdWVuY2UgdHlwZXMiKTsKLSAg
ICAgICAgICAgIGFsbF93cygpOwotICAgICAgICAgICAgdmFyIG5hbWUgPSBjb25zdW1lKElEKSB8
fCBlcnJvcigiTm8gbmFtZSBpbiBhdHRyaWJ1dGUiKTsKLSAgICAgICAgICAgIHJldC5uYW1lID0g
bmFtZS52YWx1ZTsKLSAgICAgICAgICAgIGFsbF93cygpOwotICAgICAgICAgICAgY29uc3VtZShP
VEhFUiwgIjsiKSB8fCBlcnJvcigiVW50ZXJtaW5hdGVkIGF0dHJpYnV0ZSIpOwotICAgICAgICAg
ICAgcmV0dXJuIHJldDsKLSAgICAgICAgfTsKLSAgICAgICAgCi0gICAgICAgIHZhciByZXR1cm5f
dHlwZSA9IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIHZhciB0eXAgPSB0eXBlKCk7Ci0gICAg
ICAgICAgICBpZiAoIXR5cCkgewotICAgICAgICAgICAgICAgIGlmIChjb25zdW1lKElELCAidm9p
ZCIpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAidm9pZCI7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIGVsc2UgZXJyb3IoIk5vIHJldHVybiB0eXBlIik7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gdHlwOwotICAgICAgICB9OwotICAgICAgICAK
LSAgICAgICAgdmFyIG9wZXJhdGlvbiA9IGZ1bmN0aW9uIChzdG9yZSkgewotICAgICAgICAgICAg
YWxsX3dzKHN0b3JlLCAicGVhIik7Ci0gICAgICAgICAgICB2YXIgcmV0ID0gewotICAgICAgICAg
ICAgICAgIHR5cGU6ICAgICAgICAgICAib3BlcmF0aW9uIgotICAgICAgICAgICAgLCAgIGdldHRl
cjogICAgICAgICBmYWxzZQotICAgICAgICAgICAgLCAgIHNldHRlcjogICAgICAgICBmYWxzZQot
ICAgICAgICAgICAgLCAgIGNyZWF0b3I6ICAgICAgICBmYWxzZQotICAgICAgICAgICAgLCAgIGRl
bGV0ZXI6ICAgICAgICBmYWxzZQotICAgICAgICAgICAgLCAgIGxlZ2FjeWNhbGxlcjogICBmYWxz
ZQotICAgICAgICAgICAgLCAgICJzdGF0aWMiOiAgICAgICBmYWxzZQotICAgICAgICAgICAgLCAg
IHN0cmluZ2lmaWVyOiAgICBmYWxzZQotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHdoaWxl
ICh0cnVlKSB7Ci0gICAgICAgICAgICAgICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICAgICAgaWYg
KGNvbnN1bWUoSUQsICJnZXR0ZXIiKSkgcmV0LmdldHRlciA9IHRydWU7Ci0gICAgICAgICAgICAg
ICAgZWxzZSBpZiAoY29uc3VtZShJRCwgInNldHRlciIpKSByZXQuc2V0dGVyID0gdHJ1ZTsKLSAg
ICAgICAgICAgICAgICBlbHNlIGlmIChjb25zdW1lKElELCAiY3JlYXRvciIpKSByZXQuY3JlYXRv
ciA9IHRydWU7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoY29uc3VtZShJRCwgImRlbGV0ZXIi
KSkgcmV0LmRlbGV0ZXIgPSB0cnVlOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNvbnN1bWUo
SUQsICJsZWdhY3ljYWxsZXIiKSkgcmV0LmxlZ2FjeWNhbGxlciA9IHRydWU7Ci0gICAgICAgICAg
ICAgICAgZWxzZSBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChyZXQuZ2V0
dGVyIHx8IHJldC5zZXR0ZXIgfHwgcmV0LmNyZWF0b3IgfHwgcmV0LmRlbGV0ZXIgfHwgcmV0Lmxl
Z2FjeWNhbGxlcikgewotICAgICAgICAgICAgICAgIGFsbF93cygpOwotICAgICAgICAgICAgICAg
IHJldC5pZGxUeXBlID0gcmV0dXJuX3R5cGUoKTsKLSAgICAgICAgICAgICAgICBvcGVyYXRpb25f
cmVzdChyZXQsIHN0b3JlKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gcmV0OwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgaWYgKGNvbnN1bWUoSUQsICJzdGF0aWMiKSkgewotICAgICAgICAg
ICAgICAgIHJldFsic3RhdGljIl0gPSB0cnVlOwotICAgICAgICAgICAgICAgIHJldC5pZGxUeXBl
ID0gcmV0dXJuX3R5cGUoKTsKLSAgICAgICAgICAgICAgICBvcGVyYXRpb25fcmVzdChyZXQsIHN0
b3JlKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gcmV0OwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgZWxzZSBpZiAoY29uc3VtZShJRCwgInN0cmluZ2lmaWVyIikpIHsKLSAgICAgICAgICAg
ICAgICByZXQuc3RyaW5naWZpZXIgPSB0cnVlOy0KLSAgICAgICAgICAgICAgICBhbGxfd3MoKTsK
LSAgICAgICAgICAgICAgICBpZiAoY29uc3VtZShPVEhFUiwgIjsiKSkgcmV0dXJuIHJldDsKLSAg
ICAgICAgICAgICAgICByZXQuaWRsVHlwZSA9IHJldHVybl90eXBlKCk7Ci0gICAgICAgICAgICAg
ICAgb3BlcmF0aW9uX3Jlc3QocmV0LCBzdG9yZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJl
dDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldC5pZGxUeXBlID0gcmV0dXJuX3R5cGUo
KTsKLSAgICAgICAgICAgIGFsbF93cygpOwotICAgICAgICAgICAgaWYgKGNvbnN1bWUoSUQsICJp
dGVyYXRvciIpKSB7Ci0gICAgICAgICAgICAgICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICAgICAg
cmV0LnR5cGUgPSAiaXRlcmF0b3IiOwotICAgICAgICAgICAgICAgIGlmIChjb25zdW1lKElELCAi
b2JqZWN0IikpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0Lml0ZXJhdG9yT2JqZWN0ID0gIm9i
amVjdCI7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNvbnN1
bWUoT1RIRVIsICI9IikpIHsKLSAgICAgICAgICAgICAgICAgICAgYWxsX3dzKCk7Ci0gICAgICAg
ICAgICAgICAgICAgIHZhciBuYW1lID0gY29uc3VtZShJRCkgfHwgZXJyb3IoIk5vIHJpZ2h0IGhh
bmQgc2lkZSBpbiBpdGVyYXRvciIpOwotICAgICAgICAgICAgICAgICAgICByZXQuaXRlcmF0b3JP
YmplY3QgPSBuYW1lLnZhbHVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBh
bGxfd3MoKTsKLSAgICAgICAgICAgICAgICBjb25zdW1lKE9USEVSLCAiOyIpIHx8IGVycm9yKCJV
bnRlcm1pbmF0ZWQgaXRlcmF0b3IiKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gcmV0OwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgb3BlcmF0aW9u
X3Jlc3QocmV0LCBzdG9yZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfTsKLSAgICAgICAgCi0gICAgICAgIHZhciBpZGVudGlmaWVycyA9IGZ1
bmN0aW9uIChhcnIpIHsKLSAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgICAgICAg
ICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICAgICAgaWYgKGNvbnN1bWUoT1RIRVIsICIsIikpIHsK
LSAgICAgICAgICAgICAgICAgICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBu
YW1lID0gY29uc3VtZShJRCkgfHwgZXJyb3IoIlRyYWlsaW5nIGNvbW1hIGluIGlkZW50aWZpZXJz
IGxpc3QiKTsKLSAgICAgICAgICAgICAgICAgICAgYXJyLnB1c2gobmFtZS52YWx1ZSk7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UgYnJlYWs7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH07Ci0gICAgICAgIAotICAgICAgICB2YXIgc2VyaWFsaXNlciA9IGZ1bmN0aW9u
IChzdG9yZSkgewotICAgICAgICAgICAgYWxsX3dzKHN0b3JlLCAicGVhIik7Ci0gICAgICAgICAg
ICBpZiAoIWNvbnN1bWUoSUQsICJzZXJpYWxpemVyIikpIHJldHVybjsKLSAgICAgICAgICAgIHZh
ciByZXQgPSB7IHR5cGU6ICJzZXJpYWxpemVyIiB9OwotICAgICAgICAgICAgYWxsX3dzKCk7Ci0g
ICAgICAgICAgICBpZiAoY29uc3VtZShPVEhFUiwgIj0iKSkgewotICAgICAgICAgICAgICAgIGFs
bF93cygpOwotICAgICAgICAgICAgICAgIGlmIChjb25zdW1lKE9USEVSLCAieyIpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIHJldC5wYXR0ZXJuTWFwID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAg
ICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBpZCA9IGNvbnN1bWUoSUQpOwot
ICAgICAgICAgICAgICAgICAgICBpZiAoaWQgJiYgaWQudmFsdWUgPT09ICJnZXR0ZXIiKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICByZXQubmFtZXMgPSBbImdldHRlciJdOwotICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlkICYmIGlkLnZhbHVl
ID09PSAiaW5oZXJpdCIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldC5uYW1lcyA9IFsi
aW5oZXJpdCJdOwotICAgICAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllcnMocmV0Lm5hbWVz
KTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChp
ZCkgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0Lm5hbWVzID0gW2lkLnZhbHVlXTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXJzKHJldC5uYW1lcyk7Ci0gICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICByZXQubmFtZXMgPSBbXTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgICAgICAgICAgY29uc3VtZShPVEhFUiwg
In0iKSB8fCBlcnJvcigiVW50ZXJtaW5hdGVkIHNlcmlhbGl6ZXIgcGF0dGVybiBtYXAiKTsKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoY29uc3VtZShPVEhFUiwg
IlsiKSkgewotICAgICAgICAgICAgICAgICAgICByZXQucGF0dGVybkxpc3QgPSB0cnVlOwotICAg
ICAgICAgICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgICAgICAgICAgdmFyIGlkID0g
Y29uc3VtZShJRCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpZCAmJiBpZC52YWx1ZSA9PT0g
ImdldHRlciIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldC5uYW1lcyA9IFsiZ2V0dGVy
Il07Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAo
aWQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldC5uYW1lcyA9IFtpZC52YWx1ZV07Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVycyhyZXQubmFtZXMpOwotICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0Lm5hbWVzID0gW107Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICAgICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnN1bWUoT1RIRVIs
ICJdIikgfHwgZXJyb3IoIlVudGVybWluYXRlZCBzZXJpYWxpemVyIHBhdHRlcm4gbGlzdCIpOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAg
ICAgICAgdmFyIG5hbWUgPSBjb25zdW1lKElEKSB8fCBlcnJvcigiSW52YWxpZCBzZXJpYWxpemVy
Iik7Ci0gICAgICAgICAgICAgICAgICAgIHJldC5uYW1lID0gbmFtZS52YWx1ZTsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICAgICAgY29u
c3VtZShPVEhFUiwgIjsiKSB8fCBlcnJvcigiVW50ZXJtaW5hdGVkIHNlcmlhbGl6ZXIiKTsKLSAg
ICAgICAgICAgICAgICByZXR1cm4gcmV0OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxz
ZSBpZiAoY29uc3VtZShPVEhFUiwgIjsiKSkgewotICAgICAgICAgICAgICAgIC8vIG5vb3AsIGp1
c3QgcGFyc2luZwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgcmV0LmlkbFR5cGUgPSByZXR1cm5fdHlwZSgpOwotICAgICAgICAgICAgICAgIGFsbF93
cygpOwotICAgICAgICAgICAgICAgIHJldC5vcGVyYXRpb24gPSBvcGVyYXRpb25fcmVzdChudWxs
LCBzdG9yZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gcmV0OwotICAgICAg
ICB9OworICAgIGZvciAoY29uc3QgcHVuY3R1YXRpb24gb2YgcHVuY3R1YXRpb25zKSB7CisgICAg
ICBpZiAoc3RyLnN0YXJ0c1dpdGgocHVuY3R1YXRpb24sIGxhc3RDaGFySW5kZXgpKSB7CisgICAg
ICAgIHRva2Vucy5wdXNoKHsKKyAgICAgICAgICB0eXBlOiAiaW5saW5lIiwKKyAgICAgICAgICB2
YWx1ZTogcHVuY3R1YXRpb24sCisgICAgICAgICAgdHJpdmlhLAorICAgICAgICAgIGxpbmUsCisg
ICAgICAgICAgaW5kZXgsCisgICAgICAgIH0pOworICAgICAgICB0cml2aWEgPSAiIjsKKyAgICAg
ICAgbGFzdENoYXJJbmRleCArPSBwdW5jdHVhdGlvbi5sZW5ndGg7CisgICAgICAgIHJlc3VsdCA9
IGxhc3RDaGFySW5kZXg7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgIH0KKworICAgIC8v
IG90aGVyIGFzIHRoZSBsYXN0IHRyeQorICAgIGlmIChyZXN1bHQgPT09IC0xKSB7CisgICAgICBy
ZXN1bHQgPSBhdHRlbXB0VG9rZW5NYXRjaCgib3RoZXIiKTsKKyAgICB9CisgICAgaWYgKHJlc3Vs
dCA9PT0gLTEpIHsKKyAgICAgIHRocm93IG5ldyBFcnJvcigiVG9rZW4gc3RyZWFtIG5vdCBwcm9n
cmVzc2luZyIpOworICAgIH0KKyAgICBsYXN0Q2hhckluZGV4ID0gcmVzdWx0OworICAgIGluZGV4
ICs9IDE7CisgIH0KKworICAvLyByZW1haW5pbmcgdHJpdmlhIGFzIGVvZgorICB0b2tlbnMucHVz
aCh7CisgICAgdHlwZTogImVvZiIsCisgICAgdmFsdWU6ICIiLAorICAgIHRyaXZpYSwKKyAgfSk7
CisKKyAgcmV0dXJuIHRva2VuczsKKworICAvKioKKyAgICogQHBhcmFtIHtrZXlvZiB0eXBlb2Yg
dG9rZW5SZX0gdHlwZQorICAgKiBAcGFyYW0ge29iamVjdH0gb3B0aW9ucworICAgKiBAcGFyYW0g
e2Jvb2xlYW59IFtvcHRpb25zLm5vRmx1c2hUcml2aWFdCisgICAqLworICBmdW5jdGlvbiBhdHRl
bXB0VG9rZW5NYXRjaCh0eXBlLCB7IG5vRmx1c2hUcml2aWEgfSA9IHt9KSB7CisgICAgY29uc3Qg
cmUgPSB0b2tlblJlW3R5cGVdOworICAgIHJlLmxhc3RJbmRleCA9IGxhc3RDaGFySW5kZXg7Cisg
ICAgY29uc3QgcmVzdWx0ID0gcmUuZXhlYyhzdHIpOworICAgIGlmIChyZXN1bHQpIHsKKyAgICAg
IHRva2Vucy5wdXNoKHsgdHlwZSwgdmFsdWU6IHJlc3VsdFswXSwgdHJpdmlhLCBsaW5lLCBpbmRl
eCB9KTsKKyAgICAgIGlmICghbm9GbHVzaFRyaXZpYSkgeworICAgICAgICB0cml2aWEgPSAiIjsK
KyAgICAgIH0KKyAgICAgIHJldHVybiByZS5sYXN0SW5kZXg7CisgICAgfQorICAgIHJldHVybiAt
MTsKKyAgfQorfQorCitjbGFzcyBUb2tlbmlzZXIgeworICAvKioKKyAgICogQHBhcmFtIHtzdHJp
bmd9IGlkbAorICAgKi8KKyAgY29uc3RydWN0b3IoaWRsKSB7CisgICAgdGhpcy5zb3VyY2UgPSB0
b2tlbmlzZShpZGwpOworICAgIHRoaXMucG9zaXRpb24gPSAwOworICB9CisKKyAgLyoqCisgICAq
IEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlCisgICAqIEByZXR1cm4ge25ldmVyfQorICAgKi8KKyAg
ZXJyb3IobWVzc2FnZSkgeworICAgIHRocm93IG5ldyBXZWJJRExQYXJzZUVycm9yKAorICAgICAg
KDAsX2Vycm9yX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18uc3ludGF4RXJyb3IpKHRo
aXMuc291cmNlLCB0aGlzLnBvc2l0aW9uLCB0aGlzLmN1cnJlbnQsIG1lc3NhZ2UpCisgICAgKTsK
KyAgfQorCisgIC8qKgorICAgKiBAcGFyYW0ge3N0cmluZ30gdHlwZQorICAgKi8KKyAgcHJvYmVU
eXBlKHR5cGUpIHsKKyAgICByZXR1cm4gKAorICAgICAgdGhpcy5zb3VyY2UubGVuZ3RoID4gdGhp
cy5wb3NpdGlvbiAmJgorICAgICAgdGhpcy5zb3VyY2VbdGhpcy5wb3NpdGlvbl0udHlwZSA9PT0g
dHlwZQorICAgICk7CisgIH0KKworICAvKioKKyAgICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlCisg
ICAqLworICBwcm9iZSh2YWx1ZSkgeworICAgIHJldHVybiAoCisgICAgICB0aGlzLnByb2JlVHlw
ZSgiaW5saW5lIikgJiYgdGhpcy5zb3VyY2VbdGhpcy5wb3NpdGlvbl0udmFsdWUgPT09IHZhbHVl
CisgICAgKTsKKyAgfQorCisgIC8qKgorICAgKiBAcGFyYW0gIHsuLi5zdHJpbmd9IGNhbmRpZGF0
ZXMKKyAgICovCisgIGNvbnN1bWVUeXBlKC4uLmNhbmRpZGF0ZXMpIHsKKyAgICBmb3IgKGNvbnN0
IHR5cGUgb2YgY2FuZGlkYXRlcykgeworICAgICAgaWYgKCF0aGlzLnByb2JlVHlwZSh0eXBlKSkg
Y29udGludWU7CisgICAgICBjb25zdCB0b2tlbiA9IHRoaXMuc291cmNlW3RoaXMucG9zaXRpb25d
OworICAgICAgdGhpcy5wb3NpdGlvbisrOworICAgICAgcmV0dXJuIHRva2VuOworICAgIH0KKyAg
fQorCisgIC8qKgorICAgKiBAcGFyYW0gIHsuLi5zdHJpbmd9IGNhbmRpZGF0ZXMKKyAgICovCisg
IGNvbnN1bWUoLi4uY2FuZGlkYXRlcykgeworICAgIGlmICghdGhpcy5wcm9iZVR5cGUoImlubGlu
ZSIpKSByZXR1cm47CisgICAgY29uc3QgdG9rZW4gPSB0aGlzLnNvdXJjZVt0aGlzLnBvc2l0aW9u
XTsKKyAgICBmb3IgKGNvbnN0IHZhbHVlIG9mIGNhbmRpZGF0ZXMpIHsKKyAgICAgIGlmICh0b2tl
bi52YWx1ZSAhPT0gdmFsdWUpIGNvbnRpbnVlOworICAgICAgdGhpcy5wb3NpdGlvbisrOworICAg
ICAgcmV0dXJuIHRva2VuOworICAgIH0KKyAgfQorCisgIC8qKgorICAgKiBAcGFyYW0ge251bWJl
cn0gcG9zaXRpb24KKyAgICovCisgIHVuY29uc3VtZShwb3NpdGlvbikgeworICAgIHRoaXMucG9z
aXRpb24gPSBwb3NpdGlvbjsKKyAgfQorfQorCitjbGFzcyBXZWJJRExQYXJzZUVycm9yIGV4dGVu
ZHMgRXJyb3IgeworICAvKioKKyAgICogQHBhcmFtIHtvYmplY3R9IG9wdGlvbnMKKyAgICogQHBh
cmFtIHtzdHJpbmd9IG9wdGlvbnMubWVzc2FnZQorICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9u
cy5iYXJlTWVzc2FnZQorICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5jb250ZXh0CisgICAq
IEBwYXJhbSB7bnVtYmVyfSBvcHRpb25zLmxpbmUKKyAgICogQHBhcmFtIHsqfSBvcHRpb25zLnNv
dXJjZU5hbWUKKyAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMuaW5wdXQKKyAgICogQHBhcmFt
IHsqW119IG9wdGlvbnMudG9rZW5zCisgICAqLworICBjb25zdHJ1Y3Rvcih7CisgICAgbWVzc2Fn
ZSwKKyAgICBiYXJlTWVzc2FnZSwKKyAgICBjb250ZXh0LAorICAgIGxpbmUsCisgICAgc291cmNl
TmFtZSwKKyAgICBpbnB1dCwKKyAgICB0b2tlbnMsCisgIH0pIHsKKyAgICBzdXBlcihtZXNzYWdl
KTsKKworICAgIHRoaXMubmFtZSA9ICJXZWJJRExQYXJzZUVycm9yIjsgLy8gbm90IHRvIGJlIG1h
bmdsZWQKKyAgICB0aGlzLmJhcmVNZXNzYWdlID0gYmFyZU1lc3NhZ2U7CisgICAgdGhpcy5jb250
ZXh0ID0gY29udGV4dDsKKyAgICB0aGlzLmxpbmUgPSBsaW5lOworICAgIHRoaXMuc291cmNlTmFt
ZSA9IHNvdXJjZU5hbWU7CisgICAgdGhpcy5pbnB1dCA9IGlucHV0OworICAgIHRoaXMudG9rZW5z
ID0gdG9rZW5zOworICB9Cit9CisKKworLyoqKi8gfSksCisvKiAzICovCisvKioqLyAoKF9fdW51
c2VkX3dlYnBhY2tfX193ZWJwYWNrX21vZHVsZV9fLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dl
YnBhY2tfcmVxdWlyZV9fKSA9PiB7CisKK19fd2VicGFja19yZXF1aXJlX18ucihfX3dlYnBhY2tf
ZXhwb3J0c19fKTsKKy8qIGhhcm1vbnkgZXhwb3J0ICovIF9fd2VicGFja19yZXF1aXJlX18uZChf
X3dlYnBhY2tfZXhwb3J0c19fLCB7CisvKiBoYXJtb255IGV4cG9ydCAqLyAgICJzeW50YXhFcnJv
ciI6ICgpID0+ICgvKiBiaW5kaW5nICovIHN5bnRheEVycm9yKSwKKy8qIGhhcm1vbnkgZXhwb3J0
ICovICAgInZhbGlkYXRpb25FcnJvciI6ICgpID0+ICgvKiBiaW5kaW5nICovIHZhbGlkYXRpb25F
cnJvcikKKy8qIGhhcm1vbnkgZXhwb3J0ICovIH0pOworLyoqCisgKiBAcGFyYW0ge3N0cmluZ30g
dGV4dAorICovCitmdW5jdGlvbiBsYXN0TGluZSh0ZXh0KSB7CisgIGNvbnN0IHNwbGl0dGVkID0g
dGV4dC5zcGxpdCgiXG4iKTsKKyAgcmV0dXJuIHNwbGl0dGVkW3NwbGl0dGVkLmxlbmd0aCAtIDFd
OworfQorCitmdW5jdGlvbiBhcHBlbmRJZkV4aXN0KGJhc2UsIHRhcmdldCkgeworICBsZXQgcmVz
dWx0ID0gYmFzZTsKKyAgaWYgKHRhcmdldCkgeworICAgIHJlc3VsdCArPSBgICR7dGFyZ2V0fWA7
CisgIH0KKyAgcmV0dXJuIHJlc3VsdDsKK30KIAotICAgICAgICB2YXIgaXRlcmFibGVfdHlwZSA9
IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgaWYgKGNvbnN1bWUoSUQsICJpdGVyYWJsZSIpKSBy
ZXR1cm4gIml0ZXJhYmxlIjsKLSAgICAgICAgICAgIGVsc2UgaWYgKGNvbnN1bWUoSUQsICJsZWdh
Y3lpdGVyYWJsZSIpKSByZXR1cm4gImxlZ2FjeWl0ZXJhYmxlIjsKLSAgICAgICAgICAgIGVsc2Ug
aWYgKGNvbnN1bWUoSUQsICJtYXBsaWtlIikpIHJldHVybiAibWFwbGlrZSI7Ci0gICAgICAgICAg
ICBlbHNlIGlmIChjb25zdW1lKElELCAic2V0bGlrZSIpKSByZXR1cm4gInNldGxpa2UiOwotICAg
ICAgICAgICAgZWxzZSByZXR1cm47CitmdW5jdGlvbiBjb250ZXh0QXNUZXh0KG5vZGUpIHsKKyAg
Y29uc3QgaGllcmFyY2h5ID0gW25vZGVdOworICB3aGlsZSAobm9kZSAmJiBub2RlLnBhcmVudCkg
eworICAgIGNvbnN0IHsgcGFyZW50IH0gPSBub2RlOworICAgIGhpZXJhcmNoeS51bnNoaWZ0KHBh
cmVudCk7CisgICAgbm9kZSA9IHBhcmVudDsKKyAgfQorICByZXR1cm4gaGllcmFyY2h5Lm1hcCgo
bikgPT4gYXBwZW5kSWZFeGlzdChuLnR5cGUsIG4ubmFtZSkpLmpvaW4oIiAtPiAiKTsKK30KKwor
LyoqCisgKiBAdHlwZWRlZiB7b2JqZWN0fSBXZWJJREwyRXJyb3JPcHRpb25zCisgKiBAcHJvcGVy
dHkgeyJlcnJvciIgfCAid2FybmluZyJ9IFtsZXZlbF0KKyAqIEBwcm9wZXJ0eSB7RnVuY3Rpb259
IFthdXRvZml4XQorICoKKyAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlIGVycm9yIG1lc3NhZ2UK
KyAqIEBwYXJhbSB7IlN5bnRheCIgfCAiVmFsaWRhdGlvbiJ9IGtpbmQgZXJyb3IgdHlwZQorICog
QHBhcmFtIHtXZWJJREwyRXJyb3JPcHRpb25zfSBbb3B0aW9uc10KKyAqLworZnVuY3Rpb24gZXJy
b3IoCisgIHNvdXJjZSwKKyAgcG9zaXRpb24sCisgIGN1cnJlbnQsCisgIG1lc3NhZ2UsCisgIGtp
bmQsCisgIHsgbGV2ZWwgPSAiZXJyb3IiLCBhdXRvZml4LCBydWxlTmFtZSB9ID0ge30KKykgewor
ICAvKioKKyAgICogQHBhcmFtIHtudW1iZXJ9IGNvdW50CisgICAqLworICBmdW5jdGlvbiBzbGlj
ZVRva2Vucyhjb3VudCkgeworICAgIHJldHVybiBjb3VudCA+IDAKKyAgICAgID8gc291cmNlLnNs
aWNlKHBvc2l0aW9uLCBwb3NpdGlvbiArIGNvdW50KQorICAgICAgOiBzb3VyY2Uuc2xpY2UoTWF0
aC5tYXgocG9zaXRpb24gKyBjb3VudCwgMCksIHBvc2l0aW9uKTsKKyAgfQorCisgIGZ1bmN0aW9u
IHRva2Vuc1RvVGV4dChpbnB1dHMsIHsgcHJlY2VkZXMgfSA9IHt9KSB7CisgICAgY29uc3QgdGV4
dCA9IGlucHV0cy5tYXAoKHQpID0+IHQudHJpdmlhICsgdC52YWx1ZSkuam9pbigiIik7CisgICAg
Y29uc3QgbmV4dFRva2VuID0gc291cmNlW3Bvc2l0aW9uXTsKKyAgICBpZiAobmV4dFRva2VuLnR5
cGUgPT09ICJlb2YiKSB7CisgICAgICByZXR1cm4gdGV4dDsKKyAgICB9CisgICAgaWYgKHByZWNl
ZGVzKSB7CisgICAgICByZXR1cm4gdGV4dCArIG5leHRUb2tlbi50cml2aWE7CisgICAgfQorICAg
IHJldHVybiB0ZXh0LnNsaWNlKG5leHRUb2tlbi50cml2aWEubGVuZ3RoKTsKKyAgfQorCisgIGNv
bnN0IG1heFRva2VucyA9IDU7IC8vIGFyYml0cmFyeSBidXQgd29ya3Mgd2VsbCBlbm91Z2gKKyAg
Y29uc3QgbGluZSA9CisgICAgc291cmNlW3Bvc2l0aW9uXS50eXBlICE9PSAiZW9mIgorICAgICAg
PyBzb3VyY2VbcG9zaXRpb25dLmxpbmUKKyAgICAgIDogc291cmNlLmxlbmd0aCA+IDEKKyAgICAg
ID8gc291cmNlW3Bvc2l0aW9uIC0gMV0ubGluZQorICAgICAgOiAxOworCisgIGNvbnN0IHByZWNl
ZGluZ0xhc3RMaW5lID0gbGFzdExpbmUoCisgICAgdG9rZW5zVG9UZXh0KHNsaWNlVG9rZW5zKC1t
YXhUb2tlbnMpLCB7IHByZWNlZGVzOiB0cnVlIH0pCisgICk7CisKKyAgY29uc3Qgc3Vic2VxdWVu
dFRva2VucyA9IHNsaWNlVG9rZW5zKG1heFRva2Vucyk7CisgIGNvbnN0IHN1YnNlcXVlbnRUZXh0
ID0gdG9rZW5zVG9UZXh0KHN1YnNlcXVlbnRUb2tlbnMpOworICBjb25zdCBzdWJzZXF1ZW50Rmly
c3RMaW5lID0gc3Vic2VxdWVudFRleHQuc3BsaXQoIlxuIilbMF07CisKKyAgY29uc3Qgc3BhY2Vk
ID0gIiAiLnJlcGVhdChwcmVjZWRpbmdMYXN0TGluZS5sZW5ndGgpICsgIl4iOworICBjb25zdCBz
b3VyY2VDb250ZXh0ID0gcHJlY2VkaW5nTGFzdExpbmUgKyBzdWJzZXF1ZW50Rmlyc3RMaW5lICsg
IlxuIiArIHNwYWNlZDsKKworICBjb25zdCBjb250ZXh0VHlwZSA9IGtpbmQgPT09ICJTeW50YXgi
ID8gInNpbmNlIiA6ICJpbnNpZGUiOworICBjb25zdCBpblNvdXJjZU5hbWUgPSBzb3VyY2UubmFt
ZSA/IGAgaW4gJHtzb3VyY2UubmFtZX1gIDogIiI7CisgIGNvbnN0IGdyYW1tYXRpY2FsQ29udGV4
dCA9CisgICAgY3VycmVudCAmJiBjdXJyZW50Lm5hbWUKKyAgICAgID8gYCwgJHtjb250ZXh0VHlw
ZX0gXGAke2N1cnJlbnQucGFydGlhbCA/ICJwYXJ0aWFsICIgOiAiIn0ke2NvbnRleHRBc1RleHQo
CisgICAgICAgICAgY3VycmVudAorICAgICAgICApfVxgYAorICAgICAgOiAiIjsKKyAgY29uc3Qg
Y29udGV4dCA9IGAke2tpbmR9IGVycm9yIGF0IGxpbmUgJHtsaW5lfSR7aW5Tb3VyY2VOYW1lfSR7
Z3JhbW1hdGljYWxDb250ZXh0fTpcbiR7c291cmNlQ29udGV4dH1gOworICByZXR1cm4geworICAg
IG1lc3NhZ2U6IGAke2NvbnRleHR9ICR7bWVzc2FnZX1gLAorICAgIGJhcmVNZXNzYWdlOiBtZXNz
YWdlLAorICAgIGNvbnRleHQsCisgICAgbGluZSwKKyAgICBzb3VyY2VOYW1lOiBzb3VyY2UubmFt
ZSwKKyAgICBsZXZlbCwKKyAgICBydWxlTmFtZSwKKyAgICBhdXRvZml4LAorICAgIGlucHV0OiBz
dWJzZXF1ZW50VGV4dCwKKyAgICB0b2tlbnM6IHN1YnNlcXVlbnRUb2tlbnMsCisgIH07Cit9CisK
Ky8qKgorICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2UgZXJyb3IgbWVzc2FnZQorICovCitmdW5j
dGlvbiBzeW50YXhFcnJvcihzb3VyY2UsIHBvc2l0aW9uLCBjdXJyZW50LCBtZXNzYWdlKSB7Cisg
IHJldHVybiBlcnJvcihzb3VyY2UsIHBvc2l0aW9uLCBjdXJyZW50LCBtZXNzYWdlLCAiU3ludGF4
Iik7Cit9CisKKy8qKgorICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2UgZXJyb3IgbWVzc2FnZQor
ICogQHBhcmFtIHtXZWJJREwyRXJyb3JPcHRpb25zfSBbb3B0aW9uc10KKyAqLworZnVuY3Rpb24g
dmFsaWRhdGlvbkVycm9yKAorICB0b2tlbiwKKyAgY3VycmVudCwKKyAgcnVsZU5hbWUsCisgIG1l
c3NhZ2UsCisgIG9wdGlvbnMgPSB7fQorKSB7CisgIG9wdGlvbnMucnVsZU5hbWUgPSBydWxlTmFt
ZTsKKyAgcmV0dXJuIGVycm9yKAorICAgIGN1cnJlbnQuc291cmNlLAorICAgIHRva2VuLmluZGV4
LAorICAgIGN1cnJlbnQsCisgICAgbWVzc2FnZSwKKyAgICAiVmFsaWRhdGlvbiIsCisgICAgb3B0
aW9ucworICApOworfQorCisKKy8qKiovIH0pLAorLyogNCAqLworLyoqKi8gKChfX3VudXNlZF93
ZWJwYWNrX19fd2VicGFja19tb2R1bGVfXywgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNr
X3JlcXVpcmVfXykgPT4geworCitfX3dlYnBhY2tfcmVxdWlyZV9fLnIoX193ZWJwYWNrX2V4cG9y
dHNfXyk7CisvKiBoYXJtb255IGV4cG9ydCAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJw
YWNrX2V4cG9ydHNfXywgeworLyogaGFybW9ueSBleHBvcnQgKi8gICAidW5lc2NhcGUiOiAoKSA9
PiAoLyogYmluZGluZyAqLyB1bmVzY2FwZSksCisvKiBoYXJtb255IGV4cG9ydCAqLyAgICJsaXN0
IjogKCkgPT4gKC8qIGJpbmRpbmcgKi8gbGlzdCksCisvKiBoYXJtb255IGV4cG9ydCAqLyAgICJj
b25zdF92YWx1ZSI6ICgpID0+ICgvKiBiaW5kaW5nICovIGNvbnN0X3ZhbHVlKSwKKy8qIGhhcm1v
bnkgZXhwb3J0ICovICAgImNvbnN0X2RhdGEiOiAoKSA9PiAoLyogYmluZGluZyAqLyBjb25zdF9k
YXRhKSwKKy8qIGhhcm1vbnkgZXhwb3J0ICovICAgInByaW1pdGl2ZV90eXBlIjogKCkgPT4gKC8q
IGJpbmRpbmcgKi8gcHJpbWl0aXZlX3R5cGUpLAorLyogaGFybW9ueSBleHBvcnQgKi8gICAiYXJn
dW1lbnRfbGlzdCI6ICgpID0+ICgvKiBiaW5kaW5nICovIGFyZ3VtZW50X2xpc3QpLAorLyogaGFy
bW9ueSBleHBvcnQgKi8gICAidHlwZV93aXRoX2V4dGVuZGVkX2F0dHJpYnV0ZXMiOiAoKSA9PiAo
LyogYmluZGluZyAqLyB0eXBlX3dpdGhfZXh0ZW5kZWRfYXR0cmlidXRlcyksCisvKiBoYXJtb255
IGV4cG9ydCAqLyAgICJyZXR1cm5fdHlwZSI6ICgpID0+ICgvKiBiaW5kaW5nICovIHJldHVybl90
eXBlKSwKKy8qIGhhcm1vbnkgZXhwb3J0ICovICAgInN0cmluZ2lmaWVyIjogKCkgPT4gKC8qIGJp
bmRpbmcgKi8gc3RyaW5naWZpZXIpLAorLyogaGFybW9ueSBleHBvcnQgKi8gICAiZ2V0TGFzdElu
ZGVudGF0aW9uIjogKCkgPT4gKC8qIGJpbmRpbmcgKi8gZ2V0TGFzdEluZGVudGF0aW9uKSwKKy8q
IGhhcm1vbnkgZXhwb3J0ICovICAgImdldE1lbWJlckluZGVudGF0aW9uIjogKCkgPT4gKC8qIGJp
bmRpbmcgKi8gZ2V0TWVtYmVySW5kZW50YXRpb24pLAorLyogaGFybW9ueSBleHBvcnQgKi8gICAi
YXV0b2ZpeEFkZEV4cG9zZWRXaW5kb3ciOiAoKSA9PiAoLyogYmluZGluZyAqLyBhdXRvZml4QWRk
RXhwb3NlZFdpbmRvdyksCisvKiBoYXJtb255IGV4cG9ydCAqLyAgICJnZXRGaXJzdFRva2VuIjog
KCkgPT4gKC8qIGJpbmRpbmcgKi8gZ2V0Rmlyc3RUb2tlbiksCisvKiBoYXJtb255IGV4cG9ydCAq
LyAgICJmaW5kTGFzdEluZGV4IjogKCkgPT4gKC8qIGJpbmRpbmcgKi8gZmluZExhc3RJbmRleCks
CisvKiBoYXJtb255IGV4cG9ydCAqLyAgICJhdXRvUGFyZW50ZXIiOiAoKSA9PiAoLyogYmluZGlu
ZyAqLyBhdXRvUGFyZW50ZXIpCisvKiBoYXJtb255IGV4cG9ydCAqLyB9KTsKKy8qIGhhcm1vbnkg
aW1wb3J0ICovIHZhciBfdHlwZV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fID0gX193
ZWJwYWNrX3JlcXVpcmVfXyg1KTsKKy8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfYXJndW1lbnRf
anNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTEp
OworLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9leHRlbmRlZF9hdHRyaWJ1dGVzX2pzX19XRUJQ
QUNLX0lNUE9SVEVEX01PRFVMRV8yX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgpOworLyogaGFy
bW9ueSBpbXBvcnQgKi8gdmFyIF9vcGVyYXRpb25fanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxF
XzNfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTMpOworLyogaGFybW9ueSBpbXBvcnQgKi8gdmFy
IF9hdHRyaWJ1dGVfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfXyA9IF9fd2VicGFja19y
ZXF1aXJlX18oMTQpOworLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF90b2tlbmlzZXJfanNfX1dF
QlBBQ0tfSU1QT1JURURfTU9EVUxFXzVfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMik7CisKKwor
CisKKworCisKKy8qKgorICogQHBhcmFtIHtzdHJpbmd9IGlkZW50aWZpZXIKKyAqLworZnVuY3Rp
b24gdW5lc2NhcGUoaWRlbnRpZmllcikgeworICByZXR1cm4gaWRlbnRpZmllci5zdGFydHNXaXRo
KCJfIikgPyBpZGVudGlmaWVyLnNsaWNlKDEpIDogaWRlbnRpZmllcjsKK30KKworLyoqCisgKiBQ
YXJzZXMgY29tbWEtc2VwYXJhdGVkIGxpc3QKKyAqIEBwYXJhbSB7aW1wb3J0KCIuLi90b2tlbmlz
ZXIiKS5Ub2tlbmlzZXJ9IHRva2VuaXNlcgorICogQHBhcmFtIHtvYmplY3R9IGFyZ3MKKyAqIEBw
YXJhbSB7RnVuY3Rpb259IGFyZ3MucGFyc2VyIHBhcnNlciBmdW5jdGlvbiBmb3IgZWFjaCBpdGVt
CisgKiBAcGFyYW0ge2Jvb2xlYW59IFthcmdzLmFsbG93RGFuZ2xlcl0gd2hldGhlciB0byBhbGxv
dyBkYW5nbGluZyBjb21tYQorICogQHBhcmFtIHtzdHJpbmd9IFthcmdzLmxpc3ROYW1lXSB0aGUg
bmFtZSB0byBiZSBzaG93biBvbiBlcnJvciBtZXNzYWdlcworICovCitmdW5jdGlvbiBsaXN0KHRv
a2VuaXNlciwgeyBwYXJzZXIsIGFsbG93RGFuZ2xlciwgbGlzdE5hbWUgPSAibGlzdCIgfSkgewor
ICBjb25zdCBmaXJzdCA9IHBhcnNlcih0b2tlbmlzZXIpOworICBpZiAoIWZpcnN0KSB7CisgICAg
cmV0dXJuIFtdOworICB9CisgIGZpcnN0LnRva2Vucy5zZXBhcmF0b3IgPSB0b2tlbmlzZXIuY29u
c3VtZSgiLCIpOworICBjb25zdCBpdGVtcyA9IFtmaXJzdF07CisgIHdoaWxlIChmaXJzdC50b2tl
bnMuc2VwYXJhdG9yKSB7CisgICAgY29uc3QgaXRlbSA9IHBhcnNlcih0b2tlbmlzZXIpOworICAg
IGlmICghaXRlbSkgeworICAgICAgaWYgKCFhbGxvd0RhbmdsZXIpIHsKKyAgICAgICAgdG9rZW5p
c2VyLmVycm9yKGBUcmFpbGluZyBjb21tYSBpbiAke2xpc3ROYW1lfWApOworICAgICAgfQorICAg
ICAgYnJlYWs7CisgICAgfQorICAgIGl0ZW0udG9rZW5zLnNlcGFyYXRvciA9IHRva2VuaXNlci5j
b25zdW1lKCIsIik7CisgICAgaXRlbXMucHVzaChpdGVtKTsKKyAgICBpZiAoIWl0ZW0udG9rZW5z
LnNlcGFyYXRvcikgYnJlYWs7CisgIH0KKyAgcmV0dXJuIGl0ZW1zOworfQorCisvKioKKyAqIEBw
YXJhbSB7aW1wb3J0KCIuLi90b2tlbmlzZXIiKS5Ub2tlbmlzZXJ9IHRva2VuaXNlcgorICovCitm
dW5jdGlvbiBjb25zdF92YWx1ZSh0b2tlbmlzZXIpIHsKKyAgcmV0dXJuICgKKyAgICB0b2tlbmlz
ZXIuY29uc3VtZVR5cGUoImRlY2ltYWwiLCAiaW50ZWdlciIpIHx8CisgICAgdG9rZW5pc2VyLmNv
bnN1bWUoInRydWUiLCAiZmFsc2UiLCAiSW5maW5pdHkiLCAiLUluZmluaXR5IiwgIk5hTiIpCisg
ICk7Cit9CisKKy8qKgorICogQHBhcmFtIHtvYmplY3R9IHRva2VuCisgKiBAcGFyYW0ge3N0cmlu
Z30gdG9rZW4udHlwZQorICogQHBhcmFtIHtzdHJpbmd9IHRva2VuLnZhbHVlCisgKi8KK2Z1bmN0
aW9uIGNvbnN0X2RhdGEoeyB0eXBlLCB2YWx1ZSB9KSB7CisgIHN3aXRjaCAodHlwZSkgeworICAg
IGNhc2UgImRlY2ltYWwiOgorICAgIGNhc2UgImludGVnZXIiOgorICAgICAgcmV0dXJuIHsgdHlw
ZTogIm51bWJlciIsIHZhbHVlIH07CisgICAgY2FzZSAic3RyaW5nIjoKKyAgICAgIHJldHVybiB7
IHR5cGU6ICJzdHJpbmciLCB2YWx1ZTogdmFsdWUuc2xpY2UoMSwgLTEpIH07CisgIH0KKworICBz
d2l0Y2ggKHZhbHVlKSB7CisgICAgY2FzZSAidHJ1ZSI6CisgICAgY2FzZSAiZmFsc2UiOgorICAg
ICAgcmV0dXJuIHsgdHlwZTogImJvb2xlYW4iLCB2YWx1ZTogdmFsdWUgPT09ICJ0cnVlIiB9Owor
ICAgIGNhc2UgIkluZmluaXR5IjoKKyAgICBjYXNlICItSW5maW5pdHkiOgorICAgICAgcmV0dXJu
IHsgdHlwZTogIkluZmluaXR5IiwgbmVnYXRpdmU6IHZhbHVlLnN0YXJ0c1dpdGgoIi0iKSB9Owor
ICAgIGNhc2UgIlsiOgorICAgICAgcmV0dXJuIHsgdHlwZTogInNlcXVlbmNlIiwgdmFsdWU6IFtd
IH07CisgICAgY2FzZSAieyI6CisgICAgICByZXR1cm4geyB0eXBlOiAiZGljdGlvbmFyeSIgfTsK
KyAgICBkZWZhdWx0OgorICAgICAgcmV0dXJuIHsgdHlwZTogdmFsdWUgfTsKKyAgfQorfQorCisv
KioKKyAqIEBwYXJhbSB7aW1wb3J0KCIuLi90b2tlbmlzZXIiKS5Ub2tlbmlzZXJ9IHRva2VuaXNl
cgorICovCitmdW5jdGlvbiBwcmltaXRpdmVfdHlwZSh0b2tlbmlzZXIpIHsKKyAgZnVuY3Rpb24g
aW50ZWdlcl90eXBlKCkgeworICAgIGNvbnN0IHByZWZpeCA9IHRva2VuaXNlci5jb25zdW1lKCJ1
bnNpZ25lZCIpOworICAgIGNvbnN0IGJhc2UgPSB0b2tlbmlzZXIuY29uc3VtZSgic2hvcnQiLCAi
bG9uZyIpOworICAgIGlmIChiYXNlKSB7CisgICAgICBjb25zdCBwb3N0Zml4ID0gdG9rZW5pc2Vy
LmNvbnN1bWUoImxvbmciKTsKKyAgICAgIHJldHVybiBuZXcgX3R5cGVfanNfX1dFQlBBQ0tfSU1Q
T1JURURfTU9EVUxFXzBfXy5UeXBlKHsgc291cmNlLCB0b2tlbnM6IHsgcHJlZml4LCBiYXNlLCBw
b3N0Zml4IH0gfSk7CisgICAgfQorICAgIGlmIChwcmVmaXgpIHRva2VuaXNlci5lcnJvcigiRmFp
bGVkIHRvIHBhcnNlIGludGVnZXIgdHlwZSIpOworICB9CisKKyAgZnVuY3Rpb24gZGVjaW1hbF90
eXBlKCkgeworICAgIGNvbnN0IHByZWZpeCA9IHRva2VuaXNlci5jb25zdW1lKCJ1bnJlc3RyaWN0
ZWQiKTsKKyAgICBjb25zdCBiYXNlID0gdG9rZW5pc2VyLmNvbnN1bWUoImZsb2F0IiwgImRvdWJs
ZSIpOworICAgIGlmIChiYXNlKSB7CisgICAgICByZXR1cm4gbmV3IF90eXBlX2pzX19XRUJQQUNL
X0lNUE9SVEVEX01PRFVMRV8wX18uVHlwZSh7IHNvdXJjZSwgdG9rZW5zOiB7IHByZWZpeCwgYmFz
ZSB9IH0pOworICAgIH0KKyAgICBpZiAocHJlZml4KSB0b2tlbmlzZXIuZXJyb3IoIkZhaWxlZCB0
byBwYXJzZSBmbG9hdCB0eXBlIik7CisgIH0KKworICBjb25zdCB7IHNvdXJjZSB9ID0gdG9rZW5p
c2VyOworICBjb25zdCBudW1fdHlwZSA9IGludGVnZXJfdHlwZSh0b2tlbmlzZXIpIHx8IGRlY2lt
YWxfdHlwZSh0b2tlbmlzZXIpOworICBpZiAobnVtX3R5cGUpIHJldHVybiBudW1fdHlwZTsKKyAg
Y29uc3QgYmFzZSA9IHRva2VuaXNlci5jb25zdW1lKAorICAgICJiaWdpbnQiLAorICAgICJib29s
ZWFuIiwKKyAgICAiYnl0ZSIsCisgICAgIm9jdGV0IiwKKyAgICAidW5kZWZpbmVkIgorICApOwor
ICBpZiAoYmFzZSkgeworICAgIHJldHVybiBuZXcgX3R5cGVfanNfX1dFQlBBQ0tfSU1QT1JURURf
TU9EVUxFXzBfXy5UeXBlKHsgc291cmNlLCB0b2tlbnM6IHsgYmFzZSB9IH0pOworICB9Cit9CisK
Ky8qKgorICogQHBhcmFtIHtpbXBvcnQoIi4uL3Rva2VuaXNlciIpLlRva2VuaXNlcn0gdG9rZW5p
c2VyCisgKi8KK2Z1bmN0aW9uIGFyZ3VtZW50X2xpc3QodG9rZW5pc2VyKSB7CisgIHJldHVybiBs
aXN0KHRva2VuaXNlciwgeworICAgIHBhcnNlcjogX2FyZ3VtZW50X2pzX19XRUJQQUNLX0lNUE9S
VEVEX01PRFVMRV8xX18uQXJndW1lbnQucGFyc2UsCisgICAgbGlzdE5hbWU6ICJhcmd1bWVudHMg
bGlzdCIsCisgIH0pOworfQorCisvKioKKyAqIEBwYXJhbSB7aW1wb3J0KCIuLi90b2tlbmlzZXIi
KS5Ub2tlbmlzZXJ9IHRva2VuaXNlcgorICogQHBhcmFtIHtzdHJpbmd9IHR5cGVOYW1lCisgKi8K
K2Z1bmN0aW9uIHR5cGVfd2l0aF9leHRlbmRlZF9hdHRyaWJ1dGVzKHRva2VuaXNlciwgdHlwZU5h
bWUpIHsKKyAgY29uc3QgZXh0QXR0cnMgPSBfZXh0ZW5kZWRfYXR0cmlidXRlc19qc19fV0VCUEFD
S19JTVBPUlRFRF9NT0RVTEVfMl9fLkV4dGVuZGVkQXR0cmlidXRlcy5wYXJzZSh0b2tlbmlzZXIp
OworICBjb25zdCByZXQgPSBfdHlwZV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fLlR5
cGUucGFyc2UodG9rZW5pc2VyLCB0eXBlTmFtZSk7CisgIGlmIChyZXQpIGF1dG9QYXJlbnRlcihy
ZXQpLmV4dEF0dHJzID0gZXh0QXR0cnM7CisgIHJldHVybiByZXQ7Cit9CisKKy8qKgorICogQHBh
cmFtIHtpbXBvcnQoIi4uL3Rva2VuaXNlciIpLlRva2VuaXNlcn0gdG9rZW5pc2VyCisgKiBAcGFy
YW0ge3N0cmluZ30gdHlwZU5hbWUKKyAqLworZnVuY3Rpb24gcmV0dXJuX3R5cGUodG9rZW5pc2Vy
LCB0eXBlTmFtZSkgeworICBjb25zdCB0eXAgPSBfdHlwZV9qc19fV0VCUEFDS19JTVBPUlRFRF9N
T0RVTEVfMF9fLlR5cGUucGFyc2UodG9rZW5pc2VyLCB0eXBlTmFtZSB8fCAicmV0dXJuLXR5cGUi
KTsKKyAgaWYgKHR5cCkgeworICAgIHJldHVybiB0eXA7CisgIH0KKyAgY29uc3Qgdm9pZFRva2Vu
ID0gdG9rZW5pc2VyLmNvbnN1bWUoInZvaWQiKTsKKyAgaWYgKHZvaWRUb2tlbikgeworICAgIGNv
bnN0IHJldCA9IG5ldyBfdHlwZV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fLlR5cGUo
eworICAgICAgc291cmNlOiB0b2tlbmlzZXIuc291cmNlLAorICAgICAgdG9rZW5zOiB7IGJhc2U6
IHZvaWRUb2tlbiB9LAorICAgIH0pOworICAgIHJldC50eXBlID0gInJldHVybi10eXBlIjsKKyAg
ICByZXR1cm4gcmV0OworICB9Cit9CisKKy8qKgorICogQHBhcmFtIHtpbXBvcnQoIi4uL3Rva2Vu
aXNlciIpLlRva2VuaXNlcn0gdG9rZW5pc2VyCisgKi8KK2Z1bmN0aW9uIHN0cmluZ2lmaWVyKHRv
a2VuaXNlcikgeworICBjb25zdCBzcGVjaWFsID0gdG9rZW5pc2VyLmNvbnN1bWUoInN0cmluZ2lm
aWVyIik7CisgIGlmICghc3BlY2lhbCkgcmV0dXJuOworICBjb25zdCBtZW1iZXIgPQorICAgIF9h
dHRyaWJ1dGVfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfXy5BdHRyaWJ1dGUucGFyc2Uo
dG9rZW5pc2VyLCB7IHNwZWNpYWwgfSkgfHwKKyAgICBfb3BlcmF0aW9uX2pzX19XRUJQQUNLX0lN
UE9SVEVEX01PRFVMRV8zX18uT3BlcmF0aW9uLnBhcnNlKHRva2VuaXNlciwgeyBzcGVjaWFsIH0p
IHx8CisgICAgdG9rZW5pc2VyLmVycm9yKCJVbnRlcm1pbmF0ZWQgc3RyaW5naWZpZXIiKTsKKyAg
cmV0dXJuIG1lbWJlcjsKK30KKworLyoqCisgKiBAcGFyYW0ge3N0cmluZ30gc3RyCisgKi8KK2Z1
bmN0aW9uIGdldExhc3RJbmRlbnRhdGlvbihzdHIpIHsKKyAgY29uc3QgbGluZXMgPSBzdHIuc3Bs
aXQoIlxuIik7CisgIC8vIHRoZSBmaXJzdCBsaW5lIHZpc3VhbGx5IGJpbmRzIHRvIHRoZSBwcmVj
ZWRpbmcgdG9rZW4KKyAgaWYgKGxpbmVzLmxlbmd0aCkgeworICAgIGNvbnN0IG1hdGNoID0gbGlu
ZXNbbGluZXMubGVuZ3RoIC0gMV0ubWF0Y2goL15ccysvKTsKKyAgICBpZiAobWF0Y2gpIHsKKyAg
ICAgIHJldHVybiBtYXRjaFswXTsKKyAgICB9CisgIH0KKyAgcmV0dXJuICIiOworfQorCisvKioK
KyAqIEBwYXJhbSB7c3RyaW5nfSBwYXJlbnRUcml2aWEKKyAqLworZnVuY3Rpb24gZ2V0TWVtYmVy
SW5kZW50YXRpb24ocGFyZW50VHJpdmlhKSB7CisgIGNvbnN0IGluZGVudGF0aW9uID0gZ2V0TGFz
dEluZGVudGF0aW9uKHBhcmVudFRyaXZpYSk7CisgIGNvbnN0IGluZGVudENoID0gaW5kZW50YXRp
b24uaW5jbHVkZXMoIlx0IikgPyAiXHQiIDogIiAgIjsKKyAgcmV0dXJuIGluZGVudGF0aW9uICsg
aW5kZW50Q2g7Cit9CisKKy8qKgorICogQHBhcmFtIHtvYmplY3R9IGRlZgorICogQHBhcmFtIHtp
bXBvcnQoIi4vZXh0ZW5kZWQtYXR0cmlidXRlcy5qcyIpLkV4dGVuZGVkQXR0cmlidXRlc30gZGVm
LmV4dEF0dHJzCisgKi8KK2Z1bmN0aW9uIGF1dG9maXhBZGRFeHBvc2VkV2luZG93KGRlZikgewor
ICByZXR1cm4gKCkgPT4geworICAgIGlmIChkZWYuZXh0QXR0cnMubGVuZ3RoKSB7CisgICAgICBj
b25zdCB0b2tlbmlzZXIgPSBuZXcgX3Rva2VuaXNlcl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RV
TEVfNV9fLlRva2VuaXNlcigiRXhwb3NlZD1XaW5kb3csIik7CisgICAgICBjb25zdCBleHBvc2Vk
ID0gX2V4dGVuZGVkX2F0dHJpYnV0ZXNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXy5T
aW1wbGVFeHRlbmRlZEF0dHJpYnV0ZS5wYXJzZSh0b2tlbmlzZXIpOworICAgICAgZXhwb3NlZC50
b2tlbnMuc2VwYXJhdG9yID0gdG9rZW5pc2VyLmNvbnN1bWUoIiwiKTsKKyAgICAgIGNvbnN0IGV4
aXN0aW5nID0gZGVmLmV4dEF0dHJzWzBdOworICAgICAgaWYgKCEvXlxzLy50ZXN0KGV4aXN0aW5n
LnRva2Vucy5uYW1lLnRyaXZpYSkpIHsKKyAgICAgICAgZXhpc3RpbmcudG9rZW5zLm5hbWUudHJp
dmlhID0gYCAke2V4aXN0aW5nLnRva2Vucy5uYW1lLnRyaXZpYX1gOworICAgICAgfQorICAgICAg
ZGVmLmV4dEF0dHJzLnVuc2hpZnQoZXhwb3NlZCk7CisgICAgfSBlbHNlIHsKKyAgICAgIGF1dG9Q
YXJlbnRlcihkZWYpLmV4dEF0dHJzID0gX2V4dGVuZGVkX2F0dHJpYnV0ZXNfanNfX1dFQlBBQ0tf
SU1QT1JURURfTU9EVUxFXzJfXy5FeHRlbmRlZEF0dHJpYnV0ZXMucGFyc2UoCisgICAgICAgIG5l
dyBfdG9rZW5pc2VyX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X18uVG9rZW5pc2VyKCJb
RXhwb3NlZD1XaW5kb3ddIikKKyAgICAgICk7CisgICAgICBjb25zdCB0cml2aWEgPSBkZWYudG9r
ZW5zLmJhc2UudHJpdmlhOworICAgICAgZGVmLmV4dEF0dHJzLnRva2Vucy5vcGVuLnRyaXZpYSA9
IHRyaXZpYTsKKyAgICAgIGRlZi50b2tlbnMuYmFzZS50cml2aWEgPSBgXG4ke2dldExhc3RJbmRl
bnRhdGlvbih0cml2aWEpfWA7CisgICAgfQorICB9OworfQorCisvKioKKyAqIEdldCB0aGUgZmly
c3Qgc3ludGF4IHRva2VuIGZvciB0aGUgZ2l2ZW4gSURMIG9iamVjdC4KKyAqIEBwYXJhbSB7Kn0g
ZGF0YQorICovCitmdW5jdGlvbiBnZXRGaXJzdFRva2VuKGRhdGEpIHsKKyAgaWYgKGRhdGEuZXh0
QXR0cnMubGVuZ3RoKSB7CisgICAgcmV0dXJuIGRhdGEuZXh0QXR0cnMudG9rZW5zLm9wZW47Cisg
IH0KKyAgaWYgKGRhdGEudHlwZSA9PT0gIm9wZXJhdGlvbiIgJiYgIWRhdGEuc3BlY2lhbCkgewor
ICAgIHJldHVybiBnZXRGaXJzdFRva2VuKGRhdGEuaWRsVHlwZSk7CisgIH0KKyAgY29uc3QgdG9r
ZW5zID0gT2JqZWN0LnZhbHVlcyhkYXRhLnRva2Vucykuc29ydCgoeCwgeSkgPT4geC5pbmRleCAt
IHkuaW5kZXgpOworICByZXR1cm4gdG9rZW5zWzBdOworfQorCisvKioKKyAqIEB0ZW1wbGF0ZSBU
CisgKiBAcGFyYW0ge1RbXX0gYXJyYXkKKyAqIEBwYXJhbSB7KGl0ZW06IFQpID0+IGJvb2xlYW59
IHByZWRpY2F0ZQorICovCitmdW5jdGlvbiBmaW5kTGFzdEluZGV4KGFycmF5LCBwcmVkaWNhdGUp
IHsKKyAgY29uc3QgaW5kZXggPSBhcnJheS5zbGljZSgpLnJldmVyc2UoKS5maW5kSW5kZXgocHJl
ZGljYXRlKTsKKyAgaWYgKGluZGV4ID09PSAtMSkgeworICAgIHJldHVybiBpbmRleDsKKyAgfQor
ICByZXR1cm4gYXJyYXkubGVuZ3RoIC0gaW5kZXggLSAxOworfQorCisvKioKKyAqIFJldHVybnMg
YSBwcm94eSB0aGF0IGF1dG8tYXNzaWduIGBwYXJlbnRgIGZpZWxkLgorICogQHRlbXBsYXRlIFQK
KyAqIEBwYXJhbSB7VH0gZGF0YQorICogQHBhcmFtIHsqfSBbcGFyZW50XSBUaGUgb2JqZWN0IHRo
YXQgd2lsbCBiZSBhc3NpZ25lZCB0byBgcGFyZW50YC4KKyAqICAgICAgICAgICAgICAgICAgICAg
SWYgYWJzZW50LCBpdCB3aWxsIGJlIGBkYXRhYCBieSBkZWZhdWx0LgorICogQHJldHVybiB7VH0K
KyAqLworZnVuY3Rpb24gYXV0b1BhcmVudGVyKGRhdGEsIHBhcmVudCkgeworICBpZiAoIXBhcmVu
dCkgeworICAgIC8vIERlZmF1bHRzIHRvIGBkYXRhYCB1bmxlc3Mgc3BlY2lmaWVkIG90aGVyd2lz
ZS4KKyAgICBwYXJlbnQgPSBkYXRhOworICB9CisgIGlmICghZGF0YSkgeworICAgIC8vIFRoaXMg
YWxsb3dzIGBhdXRvUGFyZW50ZXIodW5kZWZpbmVkKWAgd2hpY2ggYWdhaW4gYWxsb3dzCisgICAg
Ly8gYGF1dG9QYXJlbnRlcihwYXJzZSgpKWAgd2hlcmUgdGhlIGZ1bmN0aW9uIG1heSByZXR1cm4g
bm90aGluZy4KKyAgICByZXR1cm4gZGF0YTsKKyAgfQorICByZXR1cm4gbmV3IFByb3h5KGRhdGEs
IHsKKyAgICBnZXQodGFyZ2V0LCBwKSB7CisgICAgICBjb25zdCB2YWx1ZSA9IHRhcmdldFtwXTsK
KyAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkgeworICAgICAgICAvLyBXcmFwcyB0aGUg
YXJyYXkgc28gdGhhdCBhbnkgYWRkZWQgaXRlbXMgd2lsbCBhbHNvIGF1dG9tYXRpY2FsbHkKKyAg
ICAgICAgLy8gZ2V0IHRoZWlyIGBwYXJlbnRgIHZhbHVlcy4KKyAgICAgICAgcmV0dXJuIGF1dG9Q
YXJlbnRlcih2YWx1ZSwgdGFyZ2V0KTsKKyAgICAgIH0KKyAgICAgIHJldHVybiB2YWx1ZTsKKyAg
ICB9LAorICAgIHNldCh0YXJnZXQsIHAsIHZhbHVlKSB7CisgICAgICB0YXJnZXRbcF0gPSB2YWx1
ZTsKKyAgICAgIGlmICghdmFsdWUpIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICB9IGVs
c2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7CisgICAgICAgIC8vIEFzc2lnbmluZyBhbiBh
cnJheSB3aWxsIGFkZCBgcGFyZW50YCB0byBpdHMgaXRlbXMuCisgICAgICAgIGZvciAoY29uc3Qg
aXRlbSBvZiB2YWx1ZSkgeworICAgICAgICAgIGlmICh0eXBlb2YgaXRlbS5wYXJlbnQgIT09ICJ1
bmRlZmluZWQiKSB7CisgICAgICAgICAgICBpdGVtLnBhcmVudCA9IHBhcmVudDsKKyAgICAgICAg
ICB9CiAgICAgICAgIH0KKyAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlLnBhcmVudCAhPT0g
InVuZGVmaW5lZCIpIHsKKyAgICAgICAgdmFsdWUucGFyZW50ID0gcGFyZW50OworICAgICAgfQor
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfSwKKyAgfSk7Cit9CisKKworLyoqKi8gfSksCisvKiA1
ICovCisvKioqLyAoKF9fdW51c2VkX3dlYnBhY2tfX193ZWJwYWNrX21vZHVsZV9fLCBfX3dlYnBh
Y2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSA9PiB7CisKK19fd2VicGFja19yZXF1
aXJlX18ucihfX3dlYnBhY2tfZXhwb3J0c19fKTsKKy8qIGhhcm1vbnkgZXhwb3J0ICovIF9fd2Vi
cGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCB7CisvKiBoYXJtb255IGV4cG9y
dCAqLyAgICJUeXBlIjogKCkgPT4gKC8qIGJpbmRpbmcgKi8gVHlwZSkKKy8qIGhhcm1vbnkgZXhw
b3J0ICovIH0pOworLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9iYXNlX2pzX19XRUJQQUNLX0lN
UE9SVEVEX01PRFVMRV8wX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpOworLyogaGFybW9ueSBp
bXBvcnQgKi8gdmFyIF9oZWxwZXJzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18gPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDQpOworLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF90b2tlbmlz
ZXJfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXyA9IF9fd2VicGFja19yZXF1aXJlX18o
Mik7CisvKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2Vycm9yX2pzX19XRUJQQUNLX0lNUE9SVEVE
X01PRFVMRV8zX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpOworLyogaGFybW9ueSBpbXBvcnQg
Ki8gdmFyIF92YWxpZGF0b3JzX2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRf
XyA9IF9fd2VicGFja19yZXF1aXJlX18oNyk7CisvKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2V4
dGVuZGVkX2F0dHJpYnV0ZXNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzVfXyA9IF9fd2Vi
cGFja19yZXF1aXJlX18oOCk7CisKKworCisKKworCisKKy8qKgorICogQHBhcmFtIHtpbXBvcnQo
Ii4uL3Rva2VuaXNlciIpLlRva2VuaXNlcn0gdG9rZW5pc2VyCisgKiBAcGFyYW0ge3N0cmluZ30g
dHlwZU5hbWUKKyAqLworZnVuY3Rpb24gZ2VuZXJpY190eXBlKHRva2VuaXNlciwgdHlwZU5hbWUp
IHsKKyAgY29uc3QgYmFzZSA9IHRva2VuaXNlci5jb25zdW1lKAorICAgICJGcm96ZW5BcnJheSIs
CisgICAgIk9ic2VydmFibGVBcnJheSIsCisgICAgIlByb21pc2UiLAorICAgICJzZXF1ZW5jZSIs
CisgICAgInJlY29yZCIKKyAgKTsKKyAgaWYgKCFiYXNlKSB7CisgICAgcmV0dXJuOworICB9Cisg
IGNvbnN0IHJldCA9ICgwLF9oZWxwZXJzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18u
YXV0b1BhcmVudGVyKSgKKyAgICBuZXcgVHlwZSh7IHNvdXJjZTogdG9rZW5pc2VyLnNvdXJjZSwg
dG9rZW5zOiB7IGJhc2UgfSB9KQorICApOworICByZXQudG9rZW5zLm9wZW4gPQorICAgIHRva2Vu
aXNlci5jb25zdW1lKCI8IikgfHwKKyAgICB0b2tlbmlzZXIuZXJyb3IoYE5vIG9wZW5pbmcgYnJh
Y2tldCBhZnRlciAke2Jhc2UudmFsdWV9YCk7CisgIHN3aXRjaCAoYmFzZS52YWx1ZSkgeworICAg
IGNhc2UgIlByb21pc2UiOiB7CisgICAgICBpZiAodG9rZW5pc2VyLnByb2JlKCJbIikpCisgICAg
ICAgIHRva2VuaXNlci5lcnJvcigiUHJvbWlzZSB0eXBlIGNhbm5vdCBoYXZlIGV4dGVuZGVkIGF0
dHJpYnV0ZSIpOworICAgICAgY29uc3Qgc3VidHlwZSA9CisgICAgICAgICgwLF9oZWxwZXJzX2pz
X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18ucmV0dXJuX3R5cGUpKHRva2VuaXNlciwgdHlw
ZU5hbWUpIHx8CisgICAgICAgIHRva2VuaXNlci5lcnJvcigiTWlzc2luZyBQcm9taXNlIHN1YnR5
cGUiKTsKKyAgICAgIHJldC5zdWJ0eXBlLnB1c2goc3VidHlwZSk7CisgICAgICBicmVhazsKKyAg
ICB9CisgICAgY2FzZSAic2VxdWVuY2UiOgorICAgIGNhc2UgIkZyb3plbkFycmF5IjoKKyAgICBj
YXNlICJPYnNlcnZhYmxlQXJyYXkiOiB7CisgICAgICBjb25zdCBzdWJ0eXBlID0KKyAgICAgICAg
KDAsX2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXy50eXBlX3dpdGhfZXh0
ZW5kZWRfYXR0cmlidXRlcykodG9rZW5pc2VyLCB0eXBlTmFtZSkgfHwKKyAgICAgICAgdG9rZW5p
c2VyLmVycm9yKGBNaXNzaW5nICR7YmFzZS52YWx1ZX0gc3VidHlwZWApOworICAgICAgcmV0LnN1
YnR5cGUucHVzaChzdWJ0eXBlKTsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlICJyZWNv
cmQiOiB7CisgICAgICBpZiAodG9rZW5pc2VyLnByb2JlKCJbIikpCisgICAgICAgIHRva2VuaXNl
ci5lcnJvcigiUmVjb3JkIGtleSBjYW5ub3QgaGF2ZSBleHRlbmRlZCBhdHRyaWJ1dGUiKTsKKyAg
ICAgIGNvbnN0IGtleVR5cGUgPQorICAgICAgICB0b2tlbmlzZXIuY29uc3VtZSguLi5fdG9rZW5p
c2VyX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18uc3RyaW5nVHlwZXMpIHx8CisgICAg
ICAgIHRva2VuaXNlci5lcnJvcihgUmVjb3JkIGtleSBtdXN0IGJlIG9uZSBvZjogJHtfdG9rZW5p
c2VyX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18uc3RyaW5nVHlwZXMuam9pbigiLCAi
KX1gKTsKKyAgICAgIGNvbnN0IGtleUlkbFR5cGUgPSBuZXcgVHlwZSh7CisgICAgICAgIHNvdXJj
ZTogdG9rZW5pc2VyLnNvdXJjZSwKKyAgICAgICAgdG9rZW5zOiB7IGJhc2U6IGtleVR5cGUgfSwK
KyAgICAgIH0pOworICAgICAga2V5SWRsVHlwZS50b2tlbnMuc2VwYXJhdG9yID0KKyAgICAgICAg
dG9rZW5pc2VyLmNvbnN1bWUoIiwiKSB8fAorICAgICAgICB0b2tlbmlzZXIuZXJyb3IoIk1pc3Np
bmcgY29tbWEgYWZ0ZXIgcmVjb3JkIGtleSB0eXBlIik7CisgICAgICBrZXlJZGxUeXBlLnR5cGUg
PSB0eXBlTmFtZTsKKyAgICAgIGNvbnN0IHZhbHVlVHlwZSA9CisgICAgICAgICgwLF9oZWxwZXJz
X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18udHlwZV93aXRoX2V4dGVuZGVkX2F0dHJp
YnV0ZXMpKHRva2VuaXNlciwgdHlwZU5hbWUpIHx8CisgICAgICAgIHRva2VuaXNlci5lcnJvcigi
RXJyb3IgcGFyc2luZyBnZW5lcmljIHR5cGUgcmVjb3JkIik7CisgICAgICByZXQuc3VidHlwZS5w
dXNoKGtleUlkbFR5cGUsIHZhbHVlVHlwZSk7CisgICAgICBicmVhazsKKyAgICB9CisgIH0KKyAg
aWYgKCFyZXQuaWRsVHlwZSkgdG9rZW5pc2VyLmVycm9yKGBFcnJvciBwYXJzaW5nIGdlbmVyaWMg
dHlwZSAke2Jhc2UudmFsdWV9YCk7CisgIHJldC50b2tlbnMuY2xvc2UgPQorICAgIHRva2VuaXNl
ci5jb25zdW1lKCI+IikgfHwKKyAgICB0b2tlbmlzZXIuZXJyb3IoYE1pc3NpbmcgY2xvc2luZyBi
cmFja2V0IGFmdGVyICR7YmFzZS52YWx1ZX1gKTsKKyAgcmV0dXJuIHJldC50aGlzOworfQorCisv
KioKKyAqIEBwYXJhbSB7aW1wb3J0KCIuLi90b2tlbmlzZXIiKS5Ub2tlbmlzZXJ9IHRva2VuaXNl
cgorICovCitmdW5jdGlvbiB0eXBlX3N1ZmZpeCh0b2tlbmlzZXIsIG9iaikgeworICBjb25zdCBu
dWxsYWJsZSA9IHRva2VuaXNlci5jb25zdW1lKCI/Iik7CisgIGlmIChudWxsYWJsZSkgeworICAg
IG9iai50b2tlbnMubnVsbGFibGUgPSBudWxsYWJsZTsKKyAgfQorICBpZiAodG9rZW5pc2VyLnBy
b2JlKCI/IikpIHRva2VuaXNlci5lcnJvcigiQ2FuJ3QgbnVsbGFibGUgbW9yZSB0aGFuIG9uY2Ui
KTsKK30KKworLyoqCisgKiBAcGFyYW0ge2ltcG9ydCgiLi4vdG9rZW5pc2VyIikuVG9rZW5pc2Vy
fSB0b2tlbmlzZXIKKyAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlTmFtZQorICovCitmdW5jdGlvbiBz
aW5nbGVfdHlwZSh0b2tlbmlzZXIsIHR5cGVOYW1lKSB7CisgIGxldCByZXQgPSBnZW5lcmljX3R5
cGUodG9rZW5pc2VyLCB0eXBlTmFtZSkgfHwgKDAsX2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JU
RURfTU9EVUxFXzFfXy5wcmltaXRpdmVfdHlwZSkodG9rZW5pc2VyKTsKKyAgaWYgKCFyZXQpIHsK
KyAgICBjb25zdCBiYXNlID0KKyAgICAgIHRva2VuaXNlci5jb25zdW1lVHlwZSgiaWRlbnRpZmll
ciIpIHx8CisgICAgICB0b2tlbmlzZXIuY29uc3VtZSguLi5fdG9rZW5pc2VyX2pzX19XRUJQQUNL
X0lNUE9SVEVEX01PRFVMRV8yX18uc3RyaW5nVHlwZXMsIC4uLl90b2tlbmlzZXJfanNfX1dFQlBB
Q0tfSU1QT1JURURfTU9EVUxFXzJfXy50eXBlTmFtZUtleXdvcmRzKTsKKyAgICBpZiAoIWJhc2Up
IHsKKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgcmV0ID0gbmV3IFR5cGUoeyBzb3VyY2U6IHRv
a2VuaXNlci5zb3VyY2UsIHRva2VuczogeyBiYXNlIH0gfSk7CisgICAgaWYgKHRva2VuaXNlci5w
cm9iZSgiPCIpKQorICAgICAgdG9rZW5pc2VyLmVycm9yKGBVbnN1cHBvcnRlZCBnZW5lcmljIHR5
cGUgJHtiYXNlLnZhbHVlfWApOworICB9CisgIGlmIChyZXQuZ2VuZXJpYyA9PT0gIlByb21pc2Ui
ICYmIHRva2VuaXNlci5wcm9iZSgiPyIpKSB7CisgICAgdG9rZW5pc2VyLmVycm9yKCJQcm9taXNl
IHR5cGUgY2Fubm90IGJlIG51bGxhYmxlIik7CisgIH0KKyAgcmV0LnR5cGUgPSB0eXBlTmFtZSB8
fCBudWxsOworICB0eXBlX3N1ZmZpeCh0b2tlbmlzZXIsIHJldCk7CisgIGlmIChyZXQubnVsbGFi
bGUgJiYgcmV0LmlkbFR5cGUgPT09ICJhbnkiKQorICAgIHRva2VuaXNlci5lcnJvcigiVHlwZSBg
YW55YCBjYW5ub3QgYmUgbWFkZSBudWxsYWJsZSIpOworICByZXR1cm4gcmV0OworfQogCi0gICAg
ICAgIHZhciByZWFkb25seV9pdGVyYWJsZV90eXBlID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAg
ICBpZiAoY29uc3VtZShJRCwgIm1hcGxpa2UiKSkgcmV0dXJuICJtYXBsaWtlIjsKLSAgICAgICAg
ICAgIGVsc2UgaWYgKGNvbnN1bWUoSUQsICJzZXRsaWtlIikpIHJldHVybiAic2V0bGlrZSI7Ci0g
ICAgICAgICAgICBlbHNlIHJldHVybjsKKy8qKgorICogQHBhcmFtIHtpbXBvcnQoIi4uL3Rva2Vu
aXNlciIpLlRva2VuaXNlcn0gdG9rZW5pc2VyCisgKiBAcGFyYW0ge3N0cmluZ30gdHlwZQorICov
CitmdW5jdGlvbiB1bmlvbl90eXBlKHRva2VuaXNlciwgdHlwZSkgeworICBjb25zdCB0b2tlbnMg
PSB7fTsKKyAgdG9rZW5zLm9wZW4gPSB0b2tlbmlzZXIuY29uc3VtZSgiKCIpOworICBpZiAoIXRv
a2Vucy5vcGVuKSByZXR1cm47CisgIGNvbnN0IHJldCA9ICgwLF9oZWxwZXJzX2pzX19XRUJQQUNL
X0lNUE9SVEVEX01PRFVMRV8xX18uYXV0b1BhcmVudGVyKShuZXcgVHlwZSh7IHNvdXJjZTogdG9r
ZW5pc2VyLnNvdXJjZSwgdG9rZW5zIH0pKTsKKyAgcmV0LnR5cGUgPSB0eXBlIHx8IG51bGw7Cisg
IHdoaWxlICh0cnVlKSB7CisgICAgY29uc3QgdHlwID0KKyAgICAgICgwLF9oZWxwZXJzX2pzX19X
RUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18udHlwZV93aXRoX2V4dGVuZGVkX2F0dHJpYnV0ZXMp
KHRva2VuaXNlcikgfHwKKyAgICAgIHRva2VuaXNlci5lcnJvcigiTm8gdHlwZSBhZnRlciBvcGVu
IHBhcmVudGhlc2lzIG9yICdvcicgaW4gdW5pb24gdHlwZSIpOworICAgIGlmICh0eXAuaWRsVHlw
ZSA9PT0gImFueSIpCisgICAgICB0b2tlbmlzZXIuZXJyb3IoIlR5cGUgYGFueWAgY2Fubm90IGJl
IGluY2x1ZGVkIGluIGEgdW5pb24gdHlwZSIpOworICAgIGlmICh0eXAuZ2VuZXJpYyA9PT0gIlBy
b21pc2UiKQorICAgICAgdG9rZW5pc2VyLmVycm9yKCJUeXBlIGBQcm9taXNlYCBjYW5ub3QgYmUg
aW5jbHVkZWQgaW4gYSB1bmlvbiB0eXBlIik7CisgICAgcmV0LnN1YnR5cGUucHVzaCh0eXApOwor
ICAgIGNvbnN0IG9yID0gdG9rZW5pc2VyLmNvbnN1bWUoIm9yIik7CisgICAgaWYgKG9yKSB7Cisg
ICAgICB0eXAudG9rZW5zLnNlcGFyYXRvciA9IG9yOworICAgIH0gZWxzZSBicmVhazsKKyAgfQor
ICBpZiAocmV0LmlkbFR5cGUubGVuZ3RoIDwgMikgeworICAgIHRva2VuaXNlci5lcnJvcigKKyAg
ICAgICJBdCBsZWFzdCB0d28gdHlwZXMgYXJlIGV4cGVjdGVkIGluIGEgdW5pb24gdHlwZSBidXQg
Zm91bmQgbGVzcyIKKyAgICApOworICB9CisgIHRva2Vucy5jbG9zZSA9CisgICAgdG9rZW5pc2Vy
LmNvbnN1bWUoIikiKSB8fCB0b2tlbmlzZXIuZXJyb3IoIlVudGVybWluYXRlZCB1bmlvbiB0eXBl
Iik7CisgIHR5cGVfc3VmZml4KHRva2VuaXNlciwgcmV0KTsKKyAgcmV0dXJuIHJldC50aGlzOwor
fQorCitjbGFzcyBUeXBlIGV4dGVuZHMgX2Jhc2VfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxF
XzBfXy5CYXNlIHsKKyAgLyoqCisgICAqIEBwYXJhbSB7aW1wb3J0KCIuLi90b2tlbmlzZXIiKS5U
b2tlbmlzZXJ9IHRva2VuaXNlcgorICAgKiBAcGFyYW0ge3N0cmluZ30gdHlwZU5hbWUKKyAgICov
CisgIHN0YXRpYyBwYXJzZSh0b2tlbmlzZXIsIHR5cGVOYW1lKSB7CisgICAgcmV0dXJuIHNpbmds
ZV90eXBlKHRva2VuaXNlciwgdHlwZU5hbWUpIHx8IHVuaW9uX3R5cGUodG9rZW5pc2VyLCB0eXBl
TmFtZSk7CisgIH0KKworICBjb25zdHJ1Y3Rvcih7IHNvdXJjZSwgdG9rZW5zIH0pIHsKKyAgICBz
dXBlcih7IHNvdXJjZSwgdG9rZW5zIH0pOworICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlz
LCAic3VidHlwZSIsIHsgdmFsdWU6IFtdLCB3cml0YWJsZTogdHJ1ZSB9KTsKKyAgICB0aGlzLmV4
dEF0dHJzID0gbmV3IF9leHRlbmRlZF9hdHRyaWJ1dGVzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01P
RFVMRV81X18uRXh0ZW5kZWRBdHRyaWJ1dGVzKHt9KTsKKyAgfQorCisgIGdldCBnZW5lcmljKCkg
eworICAgIGlmICh0aGlzLnN1YnR5cGUubGVuZ3RoICYmIHRoaXMudG9rZW5zLmJhc2UpIHsKKyAg
ICAgIHJldHVybiB0aGlzLnRva2Vucy5iYXNlLnZhbHVlOworICAgIH0KKyAgICByZXR1cm4gIiI7
CisgIH0KKyAgZ2V0IG51bGxhYmxlKCkgeworICAgIHJldHVybiBCb29sZWFuKHRoaXMudG9rZW5z
Lm51bGxhYmxlKTsKKyAgfQorICBnZXQgdW5pb24oKSB7CisgICAgcmV0dXJuIEJvb2xlYW4odGhp
cy5zdWJ0eXBlLmxlbmd0aCkgJiYgIXRoaXMudG9rZW5zLmJhc2U7CisgIH0KKyAgZ2V0IGlkbFR5
cGUoKSB7CisgICAgaWYgKHRoaXMuc3VidHlwZS5sZW5ndGgpIHsKKyAgICAgIHJldHVybiB0aGlz
LnN1YnR5cGU7CisgICAgfQorICAgIC8vIEFkZGluZyBwcmVmaXhlcy9wb3N0Zml4ZXMgZm9yICJ1
bnJlc3RyaWN0ZWQgZmxvYXQiLCBldGMuCisgICAgY29uc3QgbmFtZSA9IFt0aGlzLnRva2Vucy5w
cmVmaXgsIHRoaXMudG9rZW5zLmJhc2UsIHRoaXMudG9rZW5zLnBvc3RmaXhdCisgICAgICAuZmls
dGVyKCh0KSA9PiB0KQorICAgICAgLm1hcCgodCkgPT4gdC52YWx1ZSkKKyAgICAgIC5qb2luKCIg
Iik7CisgICAgcmV0dXJuICgwLF9oZWxwZXJzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8x
X18udW5lc2NhcGUpKG5hbWUpOworICB9CisKKyAgKnZhbGlkYXRlKGRlZnMpIHsKKyAgICB5aWVs
ZCogdGhpcy5leHRBdHRycy52YWxpZGF0ZShkZWZzKTsKKworICAgIGlmICh0aGlzLmlkbFR5cGUg
PT09ICJ2b2lkIikgeworICAgICAgY29uc3QgbWVzc2FnZSA9IGBcYHZvaWRcYCBpcyBub3cgcmVw
bGFjZWQgYnkgXGB1bmRlZmluZWRcYC4gUmVmZXIgdG8gdGhlIFwKK1tyZWxldmFudCBHaXRIdWIg
aXNzdWVdKGh0dHBzOi8vZ2l0aHViLmNvbS9oZXljYW0vd2ViaWRsL2lzc3Vlcy82MCkgXAorZm9y
IG1vcmUgaW5mb3JtYXRpb24uYDsKKyAgICAgIHlpZWxkICgwLF9lcnJvcl9qc19fV0VCUEFDS19J
TVBPUlRFRF9NT0RVTEVfM19fLnZhbGlkYXRpb25FcnJvcikodGhpcy50b2tlbnMuYmFzZSwgdGhp
cywgInJlcGxhY2Utdm9pZCIsIG1lc3NhZ2UsIHsKKyAgICAgICAgYXV0b2ZpeDogcmVwbGFjZVZv
aWQodGhpcyksCisgICAgICB9KTsKKyAgICB9CisKKyAgICAvKgorICAgICAqIElmIGEgdW5pb24g
aXMgbnVsbGFibGUsIGl0cyBzdWJ1bmlvbnMgY2Fubm90IGluY2x1ZGUgYSBkaWN0aW9uYXJ5Cisg
ICAgICogSWYgbm90LCBzdWJ1bmlvbnMgbWF5IGluY2x1ZGUgZGljdGlvbmFyaWVzIGlmIGVhY2gg
dW5pb24gaXMgbm90IG51bGxhYmxlCisgICAgICovCisgICAgY29uc3QgdHlwZWRlZiA9ICF0aGlz
LnVuaW9uICYmIGRlZnMudW5pcXVlLmdldCh0aGlzLmlkbFR5cGUpOworICAgIGNvbnN0IHRhcmdl
dCA9IHRoaXMudW5pb24KKyAgICAgID8gdGhpcworICAgICAgOiB0eXBlZGVmICYmIHR5cGVkZWYu
dHlwZSA9PT0gInR5cGVkZWYiCisgICAgICA/IHR5cGVkZWYuaWRsVHlwZQorICAgICAgOiB1bmRl
ZmluZWQ7CisgICAgaWYgKHRhcmdldCAmJiB0aGlzLm51bGxhYmxlKSB7CisgICAgICAvLyBkbyBu
b3QgYWxsb3cgYW55IGRpY3Rpb25hcnkKKyAgICAgIGNvbnN0IHsgcmVmZXJlbmNlIH0gPSAoMCxf
dmFsaWRhdG9yc19oZWxwZXJzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X18uaWRsVHlw
ZUluY2x1ZGVzRGljdGlvbmFyeSkodGFyZ2V0LCBkZWZzKSB8fCB7fTsKKyAgICAgIGlmIChyZWZl
cmVuY2UpIHsKKyAgICAgICAgY29uc3QgdGFyZ2V0VG9rZW4gPSAodGhpcy51bmlvbiA/IHJlZmVy
ZW5jZSA6IHRoaXMpLnRva2Vucy5iYXNlOworICAgICAgICBjb25zdCBtZXNzYWdlID0gIk51bGxh
YmxlIHVuaW9uIGNhbm5vdCBpbmNsdWRlIGEgZGljdGlvbmFyeSB0eXBlLiI7CisgICAgICAgIHlp
ZWxkICgwLF9lcnJvcl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fLnZhbGlkYXRpb25F
cnJvcikoCisgICAgICAgICAgdGFyZ2V0VG9rZW4sCisgICAgICAgICAgdGhpcywKKyAgICAgICAg
ICAibm8tbnVsbGFibGUtdW5pb24tZGljdCIsCisgICAgICAgICAgbWVzc2FnZQorICAgICAgICAp
OworICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAvLyBhbGxvdyBzb21lIGRpY3Rpb25hcnkK
KyAgICAgIGZvciAoY29uc3Qgc3VidHlwZSBvZiB0aGlzLnN1YnR5cGUpIHsKKyAgICAgICAgeWll
bGQqIHN1YnR5cGUudmFsaWRhdGUoZGVmcyk7CisgICAgICB9CisgICAgfQorICB9CisKKyAgLyoq
IEBwYXJhbSB7aW1wb3J0KCIuLi93cml0ZXIuanMiKS5Xcml0ZXIpfSB3ICovCisgIHdyaXRlKHcp
IHsKKyAgICBjb25zdCB0eXBlX2JvZHkgPSAoKSA9PiB7CisgICAgICBpZiAodGhpcy51bmlvbiB8
fCB0aGlzLmdlbmVyaWMpIHsKKyAgICAgICAgcmV0dXJuIHcudHMud3JhcChbCisgICAgICAgICAg
dy50b2tlbih0aGlzLnRva2Vucy5iYXNlLCB3LnRzLmdlbmVyaWMpLAorICAgICAgICAgIHcudG9r
ZW4odGhpcy50b2tlbnMub3BlbiksCisgICAgICAgICAgLi4udGhpcy5zdWJ0eXBlLm1hcCgodCkg
PT4gdC53cml0ZSh3KSksCisgICAgICAgICAgdy50b2tlbih0aGlzLnRva2Vucy5jbG9zZSksCisg
ICAgICAgIF0pOworICAgICAgfQorICAgICAgY29uc3QgZmlyc3RUb2tlbiA9IHRoaXMudG9rZW5z
LnByZWZpeCB8fCB0aGlzLnRva2Vucy5iYXNlOworICAgICAgY29uc3QgcHJlZml4ID0gdGhpcy50
b2tlbnMucHJlZml4CisgICAgICAgID8gW3RoaXMudG9rZW5zLnByZWZpeC52YWx1ZSwgdy50cy50
cml2aWEodGhpcy50b2tlbnMuYmFzZS50cml2aWEpXQorICAgICAgICA6IFtdOworICAgICAgY29u
c3QgcmVmID0gdy5yZWZlcmVuY2UoCisgICAgICAgIHcudHMud3JhcChbCisgICAgICAgICAgLi4u
cHJlZml4LAorICAgICAgICAgIHRoaXMudG9rZW5zLmJhc2UudmFsdWUsCisgICAgICAgICAgdy50
b2tlbih0aGlzLnRva2Vucy5wb3N0Zml4KSwKKyAgICAgICAgXSksCisgICAgICAgIHsgdW5lc2Nh
cGVkOiB0aGlzLmlkbFR5cGUsIGNvbnRleHQ6IHRoaXMgfQorICAgICAgKTsKKyAgICAgIHJldHVy
biB3LnRzLndyYXAoW3cudHMudHJpdmlhKGZpcnN0VG9rZW4udHJpdmlhKSwgcmVmXSk7CisgICAg
fTsKKyAgICByZXR1cm4gdy50cy53cmFwKFsKKyAgICAgIHRoaXMuZXh0QXR0cnMud3JpdGUodyks
CisgICAgICB0eXBlX2JvZHkoKSwKKyAgICAgIHcudG9rZW4odGhpcy50b2tlbnMubnVsbGFibGUp
LAorICAgICAgdy50b2tlbih0aGlzLnRva2Vucy5zZXBhcmF0b3IpLAorICAgIF0pOworICB9Cit9
CisKKy8qKgorICogQHBhcmFtIHtUeXBlfSB0eXBlCisgKi8KK2Z1bmN0aW9uIHJlcGxhY2VWb2lk
KHR5cGUpIHsKKyAgcmV0dXJuICgpID0+IHsKKyAgICB0eXBlLnRva2Vucy5iYXNlLnZhbHVlID0g
InVuZGVmaW5lZCI7CisgIH07Cit9CisKKworLyoqKi8gfSksCisvKiA2ICovCisvKioqLyAoKF9f
dW51c2VkX3dlYnBhY2tfX193ZWJwYWNrX21vZHVsZV9fLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBf
X3dlYnBhY2tfcmVxdWlyZV9fKSA9PiB7CisKK19fd2VicGFja19yZXF1aXJlX18ucihfX3dlYnBh
Y2tfZXhwb3J0c19fKTsKKy8qIGhhcm1vbnkgZXhwb3J0ICovIF9fd2VicGFja19yZXF1aXJlX18u
ZChfX3dlYnBhY2tfZXhwb3J0c19fLCB7CisvKiBoYXJtb255IGV4cG9ydCAqLyAgICJCYXNlIjog
KCkgPT4gKC8qIGJpbmRpbmcgKi8gQmFzZSkKKy8qIGhhcm1vbnkgZXhwb3J0ICovIH0pOworLy8g
QHRzLWNoZWNrCisKK2NsYXNzIEJhc2UgeworICAvKioKKyAgICogQHBhcmFtIHtvYmplY3R9IGlu
aXRpYWxpemVyCisgICAqIEBwYXJhbSB7QmFzZVsic291cmNlIl19IGluaXRpYWxpemVyLnNvdXJj
ZQorICAgKiBAcGFyYW0ge0Jhc2VbInRva2VucyJdfSBpbml0aWFsaXplci50b2tlbnMKKyAgICov
CisgIGNvbnN0cnVjdG9yKHsgc291cmNlLCB0b2tlbnMgfSkgeworICAgIE9iamVjdC5kZWZpbmVQ
cm9wZXJ0aWVzKHRoaXMsIHsKKyAgICAgIHNvdXJjZTogeyB2YWx1ZTogc291cmNlIH0sCisgICAg
ICB0b2tlbnM6IHsgdmFsdWU6IHRva2Vucywgd3JpdGFibGU6IHRydWUgfSwKKyAgICAgIHBhcmVu
dDogeyB2YWx1ZTogbnVsbCwgd3JpdGFibGU6IHRydWUgfSwKKyAgICAgIHRoaXM6IHsgdmFsdWU6
IHRoaXMgfSwgLy8gdXNlZnVsIHdoZW4gZXNjYXBpbmcgZnJvbSBwcm94eQorICAgIH0pOworICB9
CisKKyAgdG9KU09OKCkgeworICAgIGNvbnN0IGpzb24gPSB7IHR5cGU6IHVuZGVmaW5lZCwgbmFt
ZTogdW5kZWZpbmVkLCBpbmhlcml0YW5jZTogdW5kZWZpbmVkIH07CisgICAgbGV0IHByb3RvID0g
dGhpczsKKyAgICB3aGlsZSAocHJvdG8gIT09IE9iamVjdC5wcm90b3R5cGUpIHsKKyAgICAgIGNv
bnN0IGRlc2NNYXAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhwcm90byk7Cisg
ICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhkZXNjTWFwKSkg
eworICAgICAgICBpZiAodmFsdWUuZW51bWVyYWJsZSB8fCB2YWx1ZS5nZXQpIHsKKyAgICAgICAg
ICAvLyBAdHMtaWdub3JlIC0gYWxsb3cgaW5kZXhpbmcgaGVyZQorICAgICAgICAgIGpzb25ba2V5
XSA9IHRoaXNba2V5XTsKICAgICAgICAgfQorICAgICAgfQorICAgICAgcHJvdG8gPSBPYmplY3Qu
Z2V0UHJvdG90eXBlT2YocHJvdG8pOworICAgIH0KKyAgICByZXR1cm4ganNvbjsKKyAgfQorfQog
Ci0gICAgICAgIHZhciBpdGVyYWJsZSA9IGZ1bmN0aW9uIChzdG9yZSkgewotICAgICAgICAgICAg
YWxsX3dzKHN0b3JlLCAicGVhIik7Ci0gICAgICAgICAgICB2YXIgZ3JhYmJlZCA9IFtdLAotICAg
ICAgICAgICAgICAgIHJldCA9IHt0eXBlOiBudWxsLCBpZGxUeXBlOiBudWxsLCByZWFkb25seTog
ZmFsc2V9OwotICAgICAgICAgICAgaWYgKGNvbnN1bWUoSUQsICJyZWFkb25seSIpKSB7Ci0gICAg
ICAgICAgICAgICAgcmV0LnJlYWRvbmx5ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBncmFiYmVk
LnB1c2gobGFzdF90b2tlbik7Ci0gICAgICAgICAgICAgICAgdmFyIHcgPSBhbGxfd3MoKTsKLSAg
ICAgICAgICAgICAgICBpZiAodykgZ3JhYmJlZC5wdXNoKHcpOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgdmFyIGNvbnN1bWVJdFR5cGUgPSByZXQucmVhZG9ubHkgPyByZWFkb25seV9pdGVy
YWJsZV90eXBlIDogaXRlcmFibGVfdHlwZTsKIAotICAgICAgICAgICAgdmFyIGl0dHlwZSA9IGNv
bnN1bWVJdFR5cGUoKTsKLSAgICAgICAgICAgIGlmICghaXR0eXBlKSB7Ci0gICAgICAgICAgICAg
ICAgdG9rZW5zID0gZ3JhYmJlZC5jb25jYXQodG9rZW5zKTsKLSAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICB9CisvKioqLyB9KSwKKy8qIDcgKi8KKy8qKiovICgoX191bnVzZWRf
d2VicGFja19fX3dlYnBhY2tfbW9kdWxlX18sIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFj
a19yZXF1aXJlX18pID0+IHsKIAotICAgICAgICAgICAgdmFyIHNlY29uZFR5cGVSZXF1aXJlZCA9
IGl0dHlwZSA9PT0gIm1hcGxpa2UiOwotICAgICAgICAgICAgdmFyIHNlY29uZFR5cGVBbGxvd2Vk
ID0gc2Vjb25kVHlwZVJlcXVpcmVkIHx8IGl0dHlwZSA9PT0gIml0ZXJhYmxlIjsKLSAgICAgICAg
ICAgIHJldC50eXBlID0gaXR0eXBlOwotICAgICAgICAgICAgaWYgKHJldC50eXBlICE9PSAnbWFw
bGlrZScgJiYgcmV0LnR5cGUgIT09ICdzZXRsaWtlJykKLSAgICAgICAgICAgICAgICBkZWxldGUg
cmV0LnJlYWRvbmx5OwotICAgICAgICAgICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICBpZiAoY29u
c3VtZShPVEhFUiwgIjwiKSkgewotICAgICAgICAgICAgICAgIHJldC5pZGxUeXBlID0gdHlwZSgp
IHx8IGVycm9yKCJFcnJvciBwYXJzaW5nICIgKyBpdHR5cGUgKyAiIGRlY2xhcmF0aW9uIik7Ci0g
ICAgICAgICAgICAgICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICAgICAgaWYgKHNlY29uZFR5cGVB
bGxvd2VkKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciB0eXBlMiA9IG51bGw7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmIChjb25zdW1lKE9USEVSLCAiLCIpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUyID0gdHlwZSgp
OwotICAgICAgICAgICAgICAgICAgICAgICAgYWxsX3dzKCk7ICAgICAgICAgICAgICAgICAgICAg
ICAgCi0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGUy
KQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0LmlkbFR5cGUgPSBbcmV0LmlkbFR5cGUsIHR5
cGUyXTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoc2Vjb25kVHlwZVJlcXVpcmVkKQot
ICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IoIk1pc3Npbmcgc2Vjb25kIHR5cGUgYXJndW1l
bnQgaW4gIiArIGl0dHlwZSArICIgZGVjbGFyYXRpb24iKTsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKE9USEVSLCAiPiIpKSBlcnJvcigiVW50ZXJtaW5h
dGVkICIgKyBpdHR5cGUgKyAiIGRlY2xhcmF0aW9uIik7Ci0gICAgICAgICAgICAgICAgYWxsX3dz
KCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKE9USEVSLCAiOyIpKSBlcnJvcigiTWlz
c2luZyBzZW1pY29sb24gYWZ0ZXIgIiArIGl0dHlwZSArICIgZGVjbGFyYXRpb24iKTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBlcnJvcigiRXJyb3Ig
cGFyc2luZyAiICsgaXR0eXBlICsgIiBkZWNsYXJhdGlvbiIpOwotCi0gICAgICAgICAgICByZXR1
cm4gcmV0OyAgICAgICAgICAgIAotICAgICAgICB9ICAgICAgICAKLSAgICAgICAgCi0gICAgICAg
IHZhciBpbnRlcmZhY2VfID0gZnVuY3Rpb24gKGlzUGFydGlhbCwgc3RvcmUpIHsKLSAgICAgICAg
ICAgIGFsbF93cyhpc1BhcnRpYWwgPyBudWxsIDogc3RvcmUsICJwZWEiKTsKLSAgICAgICAgICAg
IGlmICghY29uc3VtZShJRCwgImludGVyZmFjZSIpKSByZXR1cm47Ci0gICAgICAgICAgICBhbGxf
d3MoKTsKLSAgICAgICAgICAgIHZhciBuYW1lID0gY29uc3VtZShJRCkgfHwgZXJyb3IoIk5vIG5h
bWUgZm9yIGludGVyZmFjZSIpOwotICAgICAgICAgICAgdmFyIG1lbXMgPSBbXQotICAgICAgICAg
ICAgLCAgIHJldCA9IHsKLSAgICAgICAgICAgICAgICB0eXBlOiAgICJpbnRlcmZhY2UiCi0gICAg
ICAgICAgICAsICAgbmFtZTogICBuYW1lLnZhbHVlCi0gICAgICAgICAgICAsICAgcGFydGlhbDog
ICAgZmFsc2UKLSAgICAgICAgICAgICwgICBtZW1iZXJzOiAgICBtZW1zCi0gICAgICAgICAgICB9
OwotICAgICAgICAgICAgaWYgKCFpc1BhcnRpYWwpIHJldC5pbmhlcml0YW5jZSA9IGluaGVyaXRh
bmNlKCkgfHwgbnVsbDsKLSAgICAgICAgICAgIGFsbF93cygpOwotICAgICAgICAgICAgY29uc3Vt
ZShPVEhFUiwgInsiKSB8fCBlcnJvcigiQm9keWxlc3MgaW50ZXJmYWNlIik7Ci0gICAgICAgICAg
ICB3aGlsZSAodHJ1ZSkgewotICAgICAgICAgICAgICAgIGFsbF93cyhzdG9yZSA/IG1lbXMgOiBu
dWxsKTsKLSAgICAgICAgICAgICAgICBpZiAoY29uc3VtZShPVEhFUiwgIn0iKSkgewotICAgICAg
ICAgICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgICAgICAgICAgY29uc3VtZShPVEhF
UiwgIjsiKSB8fCBlcnJvcigiTWlzc2luZyBzZW1pY29sb24gYWZ0ZXIgaW50ZXJmYWNlIik7Ci0g
ICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIHZhciBlYSA9IGV4dGVuZGVkX2F0dHJzKHN0b3JlID8gbWVtcyA6IG51bGwpOwot
ICAgICAgICAgICAgICAgIGFsbF93cygpOwotICAgICAgICAgICAgICAgIHZhciBjbnQgPSBjb25z
dF8oc3RvcmUgPyBtZW1zIDogbnVsbCk7Ci0gICAgICAgICAgICAgICAgaWYgKGNudCkgewotICAg
ICAgICAgICAgICAgICAgICBjbnQuZXh0QXR0cnMgPSBlYTsKLSAgICAgICAgICAgICAgICAgICAg
cmV0Lm1lbWJlcnMucHVzaChjbnQpOwotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgdmFyIG1lbSA9IChvcHQuYWxsb3dOZXN0
ZWRUeXBlZGVmcyAmJiB0eXBlZGVmKHN0b3JlID8gbWVtcyA6IG51bGwpKSB8fAotICAgICAgICAg
ICAgICAgICAgICAgICAgICBpdGVyYWJsZShzdG9yZSA/IG1lbXMgOiBudWxsKSB8fAotICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZXJpYWxpc2VyKHN0b3JlID8gbWVtcyA6IG51bGwpIHx8Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZShzdG9yZSA/IG1lbXMgOiBudWxsKSB8
fAotICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb24oc3RvcmUgPyBtZW1zIDogbnVs
bCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IoIlVua25vd24gbWVtYmVyIik7
Ci0gICAgICAgICAgICAgICAgbWVtLmV4dEF0dHJzID0gZWE7Ci0gICAgICAgICAgICAgICAgcmV0
Lm1lbWJlcnMucHVzaChtZW0pOwotICAgICAgICAgICAgfQotICAgICAgICB9OwotICAgICAgICAK
LSAgICAgICAgdmFyIHBhcnRpYWwgPSBmdW5jdGlvbiAoc3RvcmUpIHsKLSAgICAgICAgICAgIGFs
bF93cyhzdG9yZSwgInBlYSIpOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKElELCAicGFydGlh
bCIpKSByZXR1cm47Ci0gICAgICAgICAgICB2YXIgdGhpbmcgPSBkaWN0aW9uYXJ5KHRydWUsIHN0
b3JlKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJmYWNlXyh0cnVlLCBzdG9yZSkg
fHwKLSAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKCJQYXJ0aWFsIGRvZXNuJ3QgYXBwbHkg
dG8gYW55dGhpbmciKTsKLSAgICAgICAgICAgIHRoaW5nLnBhcnRpYWwgPSB0cnVlOwotICAgICAg
ICAgICAgcmV0dXJuIHRoaW5nOwotICAgICAgICB9OwotICAgICAgICAKLSAgICAgICAgdmFyIGRp
Y3Rpb25hcnkgPSBmdW5jdGlvbiAoaXNQYXJ0aWFsLCBzdG9yZSkgewotICAgICAgICAgICAgYWxs
X3dzKGlzUGFydGlhbCA/IG51bGwgOiBzdG9yZSwgInBlYSIpOwotICAgICAgICAgICAgaWYgKCFj
b25zdW1lKElELCAiZGljdGlvbmFyeSIpKSByZXR1cm47Ci0gICAgICAgICAgICBhbGxfd3MoKTsK
LSAgICAgICAgICAgIHZhciBuYW1lID0gY29uc3VtZShJRCkgfHwgZXJyb3IoIk5vIG5hbWUgZm9y
IGRpY3Rpb25hcnkiKTsKLSAgICAgICAgICAgIHZhciBtZW1zID0gW10KLSAgICAgICAgICAgICwg
ICByZXQgPSB7Ci0gICAgICAgICAgICAgICAgdHlwZTogICAiZGljdGlvbmFyeSIKLSAgICAgICAg
ICAgICwgICBuYW1lOiAgIG5hbWUudmFsdWUKLSAgICAgICAgICAgICwgICBwYXJ0aWFsOiAgICBm
YWxzZQotICAgICAgICAgICAgLCAgIG1lbWJlcnM6ICAgIG1lbXMKLSAgICAgICAgICAgIH07Ci0g
ICAgICAgICAgICBpZiAoIWlzUGFydGlhbCkgcmV0LmluaGVyaXRhbmNlID0gaW5oZXJpdGFuY2Uo
KSB8fCBudWxsOwotICAgICAgICAgICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICBjb25zdW1lKE9U
SEVSLCAieyIpIHx8IGVycm9yKCJCb2R5bGVzcyBkaWN0aW9uYXJ5Iik7Ci0gICAgICAgICAgICB3
aGlsZSAodHJ1ZSkgewotICAgICAgICAgICAgICAgIGFsbF93cyhzdG9yZSA/IG1lbXMgOiBudWxs
KTsKLSAgICAgICAgICAgICAgICBpZiAoY29uc3VtZShPVEhFUiwgIn0iKSkgewotICAgICAgICAg
ICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgICAgICAgICAgY29uc3VtZShPVEhFUiwg
IjsiKSB8fCBlcnJvcigiTWlzc2luZyBzZW1pY29sb24gYWZ0ZXIgZGljdGlvbmFyeSIpOwotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gcmV0OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICB2YXIgZWEgPSBleHRlbmRlZF9hdHRycyhzdG9yZSA/IG1lbXMgOiBudWxsKTsKLSAg
ICAgICAgICAgICAgICBhbGxfd3Moc3RvcmUgPyBtZW1zIDogbnVsbCwgInBlYSIpOwotICAgICAg
ICAgICAgICAgIHZhciByZXF1aXJlZCA9IGNvbnN1bWUoSUQsICJyZXF1aXJlZCIpOwotICAgICAg
ICAgICAgICAgIHZhciB0eXAgPSB0eXBlKCkgfHwgZXJyb3IoIk5vIHR5cGUgZm9yIGRpY3Rpb25h
cnkgbWVtYmVyIik7Ci0gICAgICAgICAgICAgICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICAgICAg
dmFyIG5hbWUgPSBjb25zdW1lKElEKSB8fCBlcnJvcigiTm8gbmFtZSBmb3IgZGljdGlvbmFyeSBt
ZW1iZXIiKTsKLSAgICAgICAgICAgICAgICB2YXIgZGZsdCA9IGRlZmF1bHRfKCk7Ci0gICAgICAg
ICAgICAgICAgaWYgKHJlcXVpcmVkICYmIGRmbHQpIGVycm9yKCJSZXF1aXJlZCBtZW1iZXIgbXVz
dCBub3QgaGF2ZSBhIGRlZmF1bHQiKTsKLSAgICAgICAgICAgICAgICByZXQubWVtYmVycy5wdXNo
KHsKLSAgICAgICAgICAgICAgICAgICAgdHlwZTogICAgICAgImZpZWxkIgotICAgICAgICAgICAg
ICAgICwgICBuYW1lOiAgICAgICBuYW1lLnZhbHVlCi0gICAgICAgICAgICAgICAgLCAgIHJlcXVp
cmVkOiAgICEhcmVxdWlyZWQKLSAgICAgICAgICAgICAgICAsICAgaWRsVHlwZTogICAgdHlwCi0g
ICAgICAgICAgICAgICAgLCAgIGV4dEF0dHJzOiAgIGVhCi0gICAgICAgICAgICAgICAgLCAgICJk
ZWZhdWx0IjogIGRmbHQKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICBhbGxf
d3MoKTsKLSAgICAgICAgICAgICAgICBjb25zdW1lKE9USEVSLCAiOyIpIHx8IGVycm9yKCJVbnRl
cm1pbmF0ZWQgZGljdGlvbmFyeSBtZW1iZXIiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsK
LSAgICAgICAgCi0gICAgICAgIHZhciBleGNlcHRpb24gPSBmdW5jdGlvbiAoc3RvcmUpIHsKLSAg
ICAgICAgICAgIGFsbF93cyhzdG9yZSwgInBlYSIpOwotICAgICAgICAgICAgaWYgKCFjb25zdW1l
KElELCAiZXhjZXB0aW9uIikpIHJldHVybjsKLSAgICAgICAgICAgIGFsbF93cygpOwotICAgICAg
ICAgICAgdmFyIG5hbWUgPSBjb25zdW1lKElEKSB8fCBlcnJvcigiTm8gbmFtZSBmb3IgZXhjZXB0
aW9uIik7Ci0gICAgICAgICAgICB2YXIgbWVtcyA9IFtdCi0gICAgICAgICAgICAsICAgcmV0ID0g
ewotICAgICAgICAgICAgICAgIHR5cGU6ICAgImV4Y2VwdGlvbiIKLSAgICAgICAgICAgICwgICBu
YW1lOiAgIG5hbWUudmFsdWUKLSAgICAgICAgICAgICwgICBtZW1iZXJzOiAgICBtZW1zCi0gICAg
ICAgICAgICB9OwotICAgICAgICAgICAgcmV0LmluaGVyaXRhbmNlID0gaW5oZXJpdGFuY2UoKSB8
fCBudWxsOwotICAgICAgICAgICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICBjb25zdW1lKE9USEVS
LCAieyIpIHx8IGVycm9yKCJCb2R5bGVzcyBleGNlcHRpb24iKTsKLSAgICAgICAgICAgIHdoaWxl
ICh0cnVlKSB7Ci0gICAgICAgICAgICAgICAgYWxsX3dzKHN0b3JlID8gbWVtcyA6IG51bGwpOwot
ICAgICAgICAgICAgICAgIGlmIChjb25zdW1lKE9USEVSLCAifSIpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGFsbF93cygpOwotICAgICAgICAgICAgICAgICAgICBjb25zdW1lKE9USEVSLCAiOyIp
IHx8IGVycm9yKCJNaXNzaW5nIHNlbWljb2xvbiBhZnRlciBleGNlcHRpb24iKTsKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHJldDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgdmFyIGVhID0gZXh0ZW5kZWRfYXR0cnMoc3RvcmUgPyBtZW1zIDogbnVsbCk7Ci0gICAgICAg
ICAgICAgICAgYWxsX3dzKHN0b3JlID8gbWVtcyA6IG51bGwsICJwZWEiKTsKLSAgICAgICAgICAg
ICAgICB2YXIgY250ID0gY29uc3RfKCk7Ci0gICAgICAgICAgICAgICAgaWYgKGNudCkgewotICAg
ICAgICAgICAgICAgICAgICBjbnQuZXh0QXR0cnMgPSBlYTsKLSAgICAgICAgICAgICAgICAgICAg
cmV0Lm1lbWJlcnMucHVzaChjbnQpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIHR5cCA9IHR5cGUoKTsKLSAgICAgICAg
ICAgICAgICAgICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBuYW1lID0gY29u
c3VtZShJRCk7Ci0gICAgICAgICAgICAgICAgICAgIGFsbF93cygpOwotICAgICAgICAgICAgICAg
ICAgICBpZiAoIXR5cCB8fCAhbmFtZSB8fCAhY29uc3VtZShPVEhFUiwgIjsiKSkgZXJyb3IoIlVu
a25vd24gbWVtYmVyIGluIGV4Y2VwdGlvbiBib2R5Iik7Ci0gICAgICAgICAgICAgICAgICAgIHJl
dC5tZW1iZXJzLnB1c2goewotICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogICAgICAgImZp
ZWxkIgotICAgICAgICAgICAgICAgICAgICAsICAgbmFtZTogICAgICAgbmFtZS52YWx1ZQotICAg
ICAgICAgICAgICAgICAgICAsICAgaWRsVHlwZTogICAgdHlwCi0gICAgICAgICAgICAgICAgICAg
ICwgICBleHRBdHRyczogICBlYQotICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0gICAgICAgIAotICAgICAgICB2YXIg
ZW51bV8gPSBmdW5jdGlvbiAoc3RvcmUpIHsKLSAgICAgICAgICAgIGFsbF93cyhzdG9yZSwgInBl
YSIpOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKElELCAiZW51bSIpKSByZXR1cm47Ci0gICAg
ICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgIHZhciBuYW1lID0gY29uc3VtZShJRCkgfHwg
ZXJyb3IoIk5vIG5hbWUgZm9yIGVudW0iKTsKLSAgICAgICAgICAgIHZhciB2YWxzID0gW10KLSAg
ICAgICAgICAgICwgICByZXQgPSB7Ci0gICAgICAgICAgICAgICAgdHlwZTogICAiZW51bSIKLSAg
ICAgICAgICAgICwgICBuYW1lOiAgIG5hbWUudmFsdWUKLSAgICAgICAgICAgICwgICB2YWx1ZXM6
IHZhbHMKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAg
IGNvbnN1bWUoT1RIRVIsICJ7IikgfHwgZXJyb3IoIk5vIGN1cmx5IGZvciBlbnVtIik7Ci0gICAg
ICAgICAgICB2YXIgc2F3X2NvbW1hID0gZmFsc2U7Ci0gICAgICAgICAgICB3aGlsZSAodHJ1ZSkg
ewotICAgICAgICAgICAgICAgIGFsbF93cyhzdG9yZSA/IHZhbHMgOiBudWxsKTsKLSAgICAgICAg
ICAgICAgICBpZiAoY29uc3VtZShPVEhFUiwgIn0iKSkgewotICAgICAgICAgICAgICAgICAgICBh
bGxfd3MoKTsKLSAgICAgICAgICAgICAgICAgICAgY29uc3VtZShPVEhFUiwgIjsiKSB8fCBlcnJv
cigiTm8gc2VtaWNvbG9uIGFmdGVyIGVudW0iKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHJldDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgdmFyIHZhbCA9IGNvbnN1
bWUoU1RSKSB8fCBlcnJvcigiVW5leHBlY3RlZCB2YWx1ZSBpbiBlbnVtIik7Ci0gICAgICAgICAg
ICAgICAgcmV0LnZhbHVlcy5wdXNoKHZhbC52YWx1ZS5yZXBsYWNlKC8iL2csICIiKSk7Ci0gICAg
ICAgICAgICAgICAgYWxsX3dzKHN0b3JlID8gdmFscyA6IG51bGwpOwotICAgICAgICAgICAgICAg
IGlmIChjb25zdW1lKE9USEVSLCAiLCIpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzdG9y
ZSkgdmFscy5wdXNoKHsgdHlwZTogIiwiIH0pOwotICAgICAgICAgICAgICAgICAgICBhbGxfd3Mo
c3RvcmUgPyB2YWxzIDogbnVsbCk7Ci0gICAgICAgICAgICAgICAgICAgIHNhd19jb21tYSA9IHRy
dWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAg
ICAgICAgICAgICBzYXdfY29tbWEgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH07Ci0gICAgICAgIAotICAgICAgICB2YXIgdHlwZWRlZiA9IGZ1bmN0
aW9uIChzdG9yZSkgewotICAgICAgICAgICAgYWxsX3dzKHN0b3JlLCAicGVhIik7Ci0gICAgICAg
ICAgICBpZiAoIWNvbnN1bWUoSUQsICJ0eXBlZGVmIikpIHJldHVybjsKLSAgICAgICAgICAgIHZh
ciByZXQgPSB7Ci0gICAgICAgICAgICAgICAgdHlwZTogICAidHlwZWRlZiIKLSAgICAgICAgICAg
IH07Ci0gICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgIHJldC50eXBlRXh0QXR0cnMg
PSBleHRlbmRlZF9hdHRycygpOwotICAgICAgICAgICAgYWxsX3dzKHN0b3JlLCAidHBlYSIpOwot
ICAgICAgICAgICAgcmV0LmlkbFR5cGUgPSB0eXBlKCkgfHwgZXJyb3IoIk5vIHR5cGUgaW4gdHlw
ZWRlZiIpOwotICAgICAgICAgICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICB2YXIgbmFtZSA9IGNv
bnN1bWUoSUQpIHx8IGVycm9yKCJObyBuYW1lIGluIHR5cGVkZWYiKTsKLSAgICAgICAgICAgIHJl
dC5uYW1lID0gbmFtZS52YWx1ZTsKLSAgICAgICAgICAgIGFsbF93cygpOwotICAgICAgICAgICAg
Y29uc3VtZShPVEhFUiwgIjsiKSB8fCBlcnJvcigiVW50ZXJtaW5hdGVkIHR5cGVkZWYiKTsKLSAg
ICAgICAgICAgIHJldHVybiByZXQ7Ci0gICAgICAgIH07Ci0gICAgICAgIAotICAgICAgICB2YXIg
aW1wbGVtZW50c18gPSBmdW5jdGlvbiAoc3RvcmUpIHsKLSAgICAgICAgICAgIGFsbF93cyhzdG9y
ZSwgInBlYSIpOwotICAgICAgICAgICAgdmFyIHRhcmdldCA9IGNvbnN1bWUoSUQpOwotICAgICAg
ICAgICAgaWYgKCF0YXJnZXQpIHJldHVybjsKLSAgICAgICAgICAgIHZhciB3ID0gYWxsX3dzKCk7
Ci0gICAgICAgICAgICBpZiAoY29uc3VtZShJRCwgImltcGxlbWVudHMiKSkgewotICAgICAgICAg
ICAgICAgIHZhciByZXQgPSB7Ci0gICAgICAgICAgICAgICAgICAgIHR5cGU6ICAgImltcGxlbWVu
dHMiCi0gICAgICAgICAgICAgICAgLCAgIHRhcmdldDogdGFyZ2V0LnZhbHVlCi0gICAgICAgICAg
ICAgICAgfTsKLSAgICAgICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgICAgICB2YXIg
aW1wID0gY29uc3VtZShJRCkgfHwgZXJyb3IoIkluY29tcGxldGUgaW1wbGVtZW50cyBzdGF0ZW1l
bnQiKTsKLSAgICAgICAgICAgICAgICByZXRbImltcGxlbWVudHMiXSA9IGltcC52YWx1ZTsKLSAg
ICAgICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgICAgICBjb25zdW1lKE9USEVSLCAi
OyIpIHx8IGVycm9yKCJObyB0ZXJtaW5hdGluZyA7IGZvciBpbXBsZW1lbnRzIHN0YXRlbWVudCIp
OwotICAgICAgICAgICAgICAgIHJldHVybiByZXQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgICAgICAvLyByb2xsYmFjawotICAgICAgICAgICAgICAgIHRv
a2Vucy51bnNoaWZ0KHcpOwotICAgICAgICAgICAgICAgIHRva2Vucy51bnNoaWZ0KHRhcmdldCk7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0gICAgICAgIAotICAgICAgICB2YXIgZGVmaW5p
dGlvbiA9IGZ1bmN0aW9uIChzdG9yZSkgewotICAgICAgICAgICAgcmV0dXJuICBjYWxsYmFjayhz
dG9yZSkgICAgICAgICAgICAgfHwKLSAgICAgICAgICAgICAgICAgICAgaW50ZXJmYWNlXyhmYWxz
ZSwgc3RvcmUpICAgIHx8Ci0gICAgICAgICAgICAgICAgICAgIHBhcnRpYWwoc3RvcmUpICAgICAg
ICAgICAgICB8fAotICAgICAgICAgICAgICAgICAgICBkaWN0aW9uYXJ5KGZhbHNlLCBzdG9yZSkg
ICAgfHwKLSAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uKHN0b3JlKSAgICAgICAgICAgIHx8
Ci0gICAgICAgICAgICAgICAgICAgIGVudW1fKHN0b3JlKSAgICAgICAgICAgICAgICB8fAotICAg
ICAgICAgICAgICAgICAgICB0eXBlZGVmKHN0b3JlKSAgICAgICAgICAgICAgfHwKLSAgICAgICAg
ICAgICAgICAgICAgaW1wbGVtZW50c18oc3RvcmUpCi0gICAgICAgICAgICAgICAgICAgIDsKLSAg
ICAgICAgfTsKLSAgICAgICAgCi0gICAgICAgIHZhciBkZWZpbml0aW9ucyA9IGZ1bmN0aW9uIChz
dG9yZSkgewotICAgICAgICAgICAgaWYgKCF0b2tlbnMubGVuZ3RoKSByZXR1cm4gW107Ci0gICAg
ICAgICAgICB2YXIgZGVmcyA9IFtdOwotICAgICAgICAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAg
ICAgICAgICAgICB2YXIgZWEgPSBleHRlbmRlZF9hdHRycyhzdG9yZSA/IGRlZnMgOiBudWxsKQot
ICAgICAgICAgICAgICAgICwgICBkZWYgPSBkZWZpbml0aW9uKHN0b3JlID8gZGVmcyA6IG51bGwp
OwotICAgICAgICAgICAgICAgIGlmICghZGVmKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChl
YS5sZW5ndGgpIGVycm9yKCJTdHJheSBleHRlbmRlZCBhdHRyaWJ1dGVzIik7Ci0gICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBkZWYu
ZXh0QXR0cnMgPSBlYTsKLSAgICAgICAgICAgICAgICBkZWZzLnB1c2goZGVmKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIHJldHVybiBkZWZzOworX193ZWJwYWNrX3JlcXVpcmVfXy5yKF9f
d2VicGFja19leHBvcnRzX18pOworLyogaGFybW9ueSBleHBvcnQgKi8gX193ZWJwYWNrX3JlcXVp
cmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIHsKKy8qIGhhcm1vbnkgZXhwb3J0ICovICAgImlk
bFR5cGVJbmNsdWRlc0RpY3Rpb25hcnkiOiAoKSA9PiAoLyogYmluZGluZyAqLyBpZGxUeXBlSW5j
bHVkZXNEaWN0aW9uYXJ5KSwKKy8qIGhhcm1vbnkgZXhwb3J0ICovICAgImRpY3Rpb25hcnlJbmNs
dWRlc1JlcXVpcmVkRmllbGQiOiAoKSA9PiAoLyogYmluZGluZyAqLyBkaWN0aW9uYXJ5SW5jbHVk
ZXNSZXF1aXJlZEZpZWxkKQorLyogaGFybW9ueSBleHBvcnQgKi8gfSk7CisvLyBAdHMtY2hlY2sK
KworLyoqCisgKiBAdHlwZWRlZiB7aW1wb3J0KCIuLi9wcm9kdWN0aW9ucy9kaWN0aW9uYXJ5Lmpz
IikuRGljdGlvbmFyeX0gRGljdGlvbmFyeQorICoKKyAqIEBwYXJhbSB7Kn0gaWRsVHlwZQorICog
QHBhcmFtIHtpbXBvcnQoIi4uL3ZhbGlkYXRvci5qcyIpLkRlZmluaXRpb25zfSBkZWZzCisgKiBA
cGFyYW0ge29iamVjdH0gW29wdGlvbnNdCisgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLnVz
ZU51bGxhYmxlSW5uZXJdIHVzZSB3aGVuIHRoZSBpbnB1dCBpZGxUeXBlIGlzIG51bGxhYmxlIGFu
ZCB5b3Ugd2FudCB0byB1c2UgaXRzIGlubmVyIHR5cGUKKyAqIEByZXR1cm4ge3sgcmVmZXJlbmNl
OiAqLCBkaWN0aW9uYXJ5OiBEaWN0aW9uYXJ5IH19IHRoZSB0eXBlIHJlZmVyZW5jZSB0aGF0IHVs
dGltYXRlbHkgaW5jbHVkZXMgZGljdGlvbmFyeS4KKyAqLworZnVuY3Rpb24gaWRsVHlwZUluY2x1
ZGVzRGljdGlvbmFyeSgKKyAgaWRsVHlwZSwKKyAgZGVmcywKKyAgeyB1c2VOdWxsYWJsZUlubmVy
IH0gPSB7fQorKSB7CisgIGlmICghaWRsVHlwZS51bmlvbikgeworICAgIGNvbnN0IGRlZiA9IGRl
ZnMudW5pcXVlLmdldChpZGxUeXBlLmlkbFR5cGUpOworICAgIGlmICghZGVmKSB7CisgICAgICBy
ZXR1cm47CisgICAgfQorICAgIGlmIChkZWYudHlwZSA9PT0gInR5cGVkZWYiKSB7CisgICAgICBj
b25zdCB7IHR5cGVkZWZJbmNsdWRlc0RpY3Rpb25hcnkgfSA9IGRlZnMuY2FjaGU7CisgICAgICBp
ZiAodHlwZWRlZkluY2x1ZGVzRGljdGlvbmFyeS5oYXMoZGVmKSkgeworICAgICAgICAvLyBOb3Rl
IHRoYXQgdGhpcyBhbHNvIGhhbHRzIHdoZW4gaXQgbWV0IGluZGV0ZXJtaW5hdGUgc3RhdGUKKyAg
ICAgICAgLy8gdG8gcHJldmVudCBpbmZpbml0ZSByZWN1cnNpb24KKyAgICAgICAgcmV0dXJuIHR5
cGVkZWZJbmNsdWRlc0RpY3Rpb25hcnkuZ2V0KGRlZik7CisgICAgICB9CisgICAgICBkZWZzLmNh
Y2hlLnR5cGVkZWZJbmNsdWRlc0RpY3Rpb25hcnkuc2V0KGRlZiwgdW5kZWZpbmVkKTsgLy8gaW5k
ZXRlcm1pbmF0ZSBzdGF0ZQorICAgICAgY29uc3QgcmVzdWx0ID0gaWRsVHlwZUluY2x1ZGVzRGlj
dGlvbmFyeShkZWYuaWRsVHlwZSwgZGVmcyk7CisgICAgICBkZWZzLmNhY2hlLnR5cGVkZWZJbmNs
dWRlc0RpY3Rpb25hcnkuc2V0KGRlZiwgcmVzdWx0KTsKKyAgICAgIGlmIChyZXN1bHQpIHsKKyAg
ICAgICAgcmV0dXJuIHsKKyAgICAgICAgICByZWZlcmVuY2U6IGlkbFR5cGUsCisgICAgICAgICAg
ZGljdGlvbmFyeTogcmVzdWx0LmRpY3Rpb25hcnksCiAgICAgICAgIH07Ci0gICAgICAgIHZhciBy
ZXMgPSBkZWZpbml0aW9ucyhvcHQud3MpOwotICAgICAgICBpZiAodG9rZW5zLmxlbmd0aCkgZXJy
b3IoIlVucmVjb2duaXNlZCB0b2tlbnMiKTsKLSAgICAgICAgcmV0dXJuIHJlczsKKyAgICAgIH0K
KyAgICB9CisgICAgaWYgKGRlZi50eXBlID09PSAiZGljdGlvbmFyeSIgJiYgKHVzZU51bGxhYmxl
SW5uZXIgfHwgIWlkbFR5cGUubnVsbGFibGUpKSB7CisgICAgICByZXR1cm4geworICAgICAgICBy
ZWZlcmVuY2U6IGlkbFR5cGUsCisgICAgICAgIGRpY3Rpb25hcnk6IGRlZiwKKyAgICAgIH07Cisg
ICAgfQorICB9CisgIGZvciAoY29uc3Qgc3VidHlwZSBvZiBpZGxUeXBlLnN1YnR5cGUpIHsKKyAg
ICBjb25zdCByZXN1bHQgPSBpZGxUeXBlSW5jbHVkZXNEaWN0aW9uYXJ5KHN1YnR5cGUsIGRlZnMp
OworICAgIGlmIChyZXN1bHQpIHsKKyAgICAgIGlmIChzdWJ0eXBlLnVuaW9uKSB7CisgICAgICAg
IHJldHVybiByZXN1bHQ7CisgICAgICB9CisgICAgICByZXR1cm4geworICAgICAgICByZWZlcmVu
Y2U6IHN1YnR5cGUsCisgICAgICAgIGRpY3Rpb25hcnk6IHJlc3VsdC5kaWN0aW9uYXJ5LAorICAg
ICAgfTsKKyAgICB9CisgIH0KK30KKworLyoqCisgKiBAcGFyYW0geyp9IGRpY3QgZGljdGlvbmFy
eSB0eXBlCisgKiBAcGFyYW0ge2ltcG9ydCgiLi4vdmFsaWRhdG9yLmpzIikuRGVmaW5pdGlvbnN9
IGRlZnMKKyAqIEByZXR1cm4ge2Jvb2xlYW59CisgKi8KK2Z1bmN0aW9uIGRpY3Rpb25hcnlJbmNs
dWRlc1JlcXVpcmVkRmllbGQoZGljdCwgZGVmcykgeworICBpZiAoZGVmcy5jYWNoZS5kaWN0aW9u
YXJ5SW5jbHVkZXNSZXF1aXJlZEZpZWxkLmhhcyhkaWN0KSkgeworICAgIHJldHVybiBkZWZzLmNh
Y2hlLmRpY3Rpb25hcnlJbmNsdWRlc1JlcXVpcmVkRmllbGQuZ2V0KGRpY3QpOworICB9CisgIC8v
IFNldCBjYWNoZWQgcmVzdWx0IHRvIGluZGV0ZXJtaW5hdGUgdG8gc2hvcnQtY2lyY3VpdCBjaXJj
dWxhciBkZWZpbml0aW9ucy4KKyAgLy8gVGhlIGZpbmFsIHJlc3VsdCB3aWxsIGJlIHVwZGF0ZWQg
dG8gdHJ1ZSBvciBmYWxzZS4KKyAgZGVmcy5jYWNoZS5kaWN0aW9uYXJ5SW5jbHVkZXNSZXF1aXJl
ZEZpZWxkLnNldChkaWN0LCB1bmRlZmluZWQpOworICBsZXQgcmVzdWx0ID0gZGljdC5tZW1iZXJz
LnNvbWUoKGZpZWxkKSA9PiBmaWVsZC5yZXF1aXJlZCk7CisgIGlmICghcmVzdWx0ICYmIGRpY3Qu
aW5oZXJpdGFuY2UpIHsKKyAgICBjb25zdCBzdXBlcmRpY3QgPSBkZWZzLnVuaXF1ZS5nZXQoZGlj
dC5pbmhlcml0YW5jZSk7CisgICAgaWYgKCFzdXBlcmRpY3QpIHsKKyAgICAgIC8vIEFzc3VtZSBy
ZXF1aXJlZCBtZW1iZXJzIGluIHRoZSBzdXBlcnR5cGUgaWYgaXQgaXMgdW5rbm93bi4KKyAgICAg
IHJlc3VsdCA9IHRydWU7CisgICAgfSBlbHNlIGlmIChkaWN0aW9uYXJ5SW5jbHVkZXNSZXF1aXJl
ZEZpZWxkKHN1cGVyZGljdCwgZGVmcykpIHsKKyAgICAgIHJlc3VsdCA9IHRydWU7CisgICAgfQor
ICB9CisgIGRlZnMuY2FjaGUuZGljdGlvbmFyeUluY2x1ZGVzUmVxdWlyZWRGaWVsZC5zZXQoZGlj
dCwgcmVzdWx0KTsKKyAgcmV0dXJuIHJlc3VsdDsKK30KKworCisvKioqLyB9KSwKKy8qIDggKi8K
Ky8qKiovICgoX191bnVzZWRfd2VicGFja19fX3dlYnBhY2tfbW9kdWxlX18sIF9fd2VicGFja19l
eHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pID0+IHsKKworX193ZWJwYWNrX3JlcXVpcmVf
Xy5yKF9fd2VicGFja19leHBvcnRzX18pOworLyogaGFybW9ueSBleHBvcnQgKi8gX193ZWJwYWNr
X3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIHsKKy8qIGhhcm1vbnkgZXhwb3J0ICov
ICAgIlNpbXBsZUV4dGVuZGVkQXR0cmlidXRlIjogKCkgPT4gKC8qIGJpbmRpbmcgKi8gU2ltcGxl
RXh0ZW5kZWRBdHRyaWJ1dGUpLAorLyogaGFybW9ueSBleHBvcnQgKi8gICAiRXh0ZW5kZWRBdHRy
aWJ1dGVzIjogKCkgPT4gKC8qIGJpbmRpbmcgKi8gRXh0ZW5kZWRBdHRyaWJ1dGVzKQorLyogaGFy
bW9ueSBleHBvcnQgKi8gfSk7CisvKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2Jhc2VfanNfX1dF
QlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNik7CisvKiBo
YXJtb255IGltcG9ydCAqLyB2YXIgX2FycmF5X2Jhc2VfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9E
VUxFXzFfXyA9IF9fd2VicGFja19yZXF1aXJlX18oOSk7CisvKiBoYXJtb255IGltcG9ydCAqLyB2
YXIgX3Rva2VuX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18gPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDEwKTsKKy8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfaGVscGVyc19qc19fV0VCUEFD
S19JTVBPUlRFRF9NT0RVTEVfM19fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTsKKy8qIGhhcm1v
bnkgaW1wb3J0ICovIHZhciBfZXJyb3JfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfXyA9
IF9fd2VicGFja19yZXF1aXJlX18oMyk7CisKKworCisKKworCisvKioKKyAqIEBwYXJhbSB7aW1w
b3J0KCIuLi90b2tlbmlzZXIiKS5Ub2tlbmlzZXJ9IHRva2VuaXNlcgorICogQHBhcmFtIHtzdHJp
bmd9IHRva2VuTmFtZQorICovCitmdW5jdGlvbiB0b2tlbnModG9rZW5pc2VyLCB0b2tlbk5hbWUp
IHsKKyAgcmV0dXJuICgwLF9oZWxwZXJzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX18u
bGlzdCkodG9rZW5pc2VyLCB7CisgICAgcGFyc2VyOiBfdG9rZW5fanNfX1dFQlBBQ0tfSU1QT1JU
RURfTU9EVUxFXzJfXy5XcmFwcGVkVG9rZW4ucGFyc2VyKHRva2VuaXNlciwgdG9rZW5OYW1lKSwK
KyAgICBsaXN0TmFtZTogdG9rZW5OYW1lICsgIiBsaXN0IiwKKyAgfSk7Cit9CisKK2NvbnN0IGV4
dEF0dHJWYWx1ZVN5bnRheCA9IFsiaWRlbnRpZmllciIsICJkZWNpbWFsIiwgImludGVnZXIiLCAi
c3RyaW5nIl07CisKK2NvbnN0IHNob3VsZEJlTGVnYWN5UHJlZml4ZWQgPSBbCisgICJOb0ludGVy
ZmFjZU9iamVjdCIsCisgICJMZW5pZW50U2V0dGVyIiwKKyAgIkxlbmllbnRUaGlzIiwKKyAgIlRy
ZWF0Tm9uT2JqZWN0QXNOdWxsIiwKKyAgIlVuZm9yZ2VhYmxlIiwKK107CisKK2NvbnN0IHJlbmFt
ZWRMZWdhY2llcyA9IG5ldyBNYXAoWworICAuLi5zaG91bGRCZUxlZ2FjeVByZWZpeGVkLm1hcCgo
bmFtZSkgPT4gW25hbWUsIGBMZWdhY3kke25hbWV9YF0pLAorICBbIk5hbWVkQ29uc3RydWN0b3Ii
LCAiTGVnYWN5RmFjdG9yeUZ1bmN0aW9uIl0sCisgIFsiT3ZlcnJpZGVCdWlsdGlucyIsICJMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zIl0sCisgIFsiVHJlYXROdWxsQXMiLCAiTGVnYWN5TnVsbFRvRW1w
dHlTdHJpbmciXSwKK10pOworCisvKioKKyAqIFRoaXMgd2lsbCBhbGxvdyBhIHNldCBvZiBleHRl
bmRlZCBhdHRyaWJ1dGUgdmFsdWVzIHRvIGJlIHBhcnNlZC4KKyAqIEBwYXJhbSB7aW1wb3J0KCIu
Li90b2tlbmlzZXIiKS5Ub2tlbmlzZXJ9IHRva2VuaXNlcgorICovCitmdW5jdGlvbiBleHRBdHRy
TGlzdEl0ZW1zKHRva2VuaXNlcikgeworICBmb3IgKGNvbnN0IHN5bnRheCBvZiBleHRBdHRyVmFs
dWVTeW50YXgpIHsKKyAgICBjb25zdCB0b2tzID0gdG9rZW5zKHRva2VuaXNlciwgc3ludGF4KTsK
KyAgICBpZiAodG9rcy5sZW5ndGgpIHsKKyAgICAgIHJldHVybiB0b2tzOworICAgIH0KKyAgfQor
ICB0b2tlbmlzZXIuZXJyb3IoCisgICAgYEV4cGVjdGVkIGlkZW50aWZpZXJzLCBzdHJpbmdzLCBk
ZWNpbWFscywgb3IgaW50ZWdlcnMgYnV0IG5vbmUgZm91bmRgCisgICk7Cit9CisKK2NsYXNzIEV4
dGVuZGVkQXR0cmlidXRlUGFyYW1ldGVycyBleHRlbmRzIF9iYXNlX2pzX19XRUJQQUNLX0lNUE9S
VEVEX01PRFVMRV8wX18uQmFzZSB7CisgIC8qKgorICAgKiBAcGFyYW0ge2ltcG9ydCgiLi4vdG9r
ZW5pc2VyIikuVG9rZW5pc2VyfSB0b2tlbmlzZXIKKyAgICovCisgIHN0YXRpYyBwYXJzZSh0b2tl
bmlzZXIpIHsKKyAgICBjb25zdCB0b2tlbnMgPSB7IGFzc2lnbjogdG9rZW5pc2VyLmNvbnN1bWUo
Ij0iKSB9OworICAgIGNvbnN0IHJldCA9ICgwLF9oZWxwZXJzX2pzX19XRUJQQUNLX0lNUE9SVEVE
X01PRFVMRV8zX18uYXV0b1BhcmVudGVyKSgKKyAgICAgIG5ldyBFeHRlbmRlZEF0dHJpYnV0ZVBh
cmFtZXRlcnMoeyBzb3VyY2U6IHRva2VuaXNlci5zb3VyY2UsIHRva2VucyB9KQorICAgICk7Cisg
ICAgaWYgKHRva2Vucy5hc3NpZ24pIHsKKyAgICAgIHRva2Vucy5zZWNvbmRhcnlOYW1lID0gdG9r
ZW5pc2VyLmNvbnN1bWVUeXBlKC4uLmV4dEF0dHJWYWx1ZVN5bnRheCk7CisgICAgfQorICAgIHRv
a2Vucy5vcGVuID0gdG9rZW5pc2VyLmNvbnN1bWUoIigiKTsKKyAgICBpZiAodG9rZW5zLm9wZW4p
IHsKKyAgICAgIHJldC5saXN0ID0gcmV0LnJoc0lzTGlzdAorICAgICAgICA/IC8vIFtFeHBvc2Vk
PShXaW5kb3csV29ya2VyKV0KKyAgICAgICAgICBleHRBdHRyTGlzdEl0ZW1zKHRva2VuaXNlcikK
KyAgICAgICAgOiAvLyBbTGVnYWN5RmFjdG9yeUZ1bmN0aW9uPUF1ZGlvKERPTVN0cmluZyBzcmMp
XSBvciBbQ29uc3RydWN0b3IoRE9NU3RyaW5nIHN0cildCisgICAgICAgICAgKDAsX2hlbHBlcnNf
anNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfXy5hcmd1bWVudF9saXN0KSh0b2tlbmlzZXIp
OworICAgICAgdG9rZW5zLmNsb3NlID0KKyAgICAgICAgdG9rZW5pc2VyLmNvbnN1bWUoIikiKSB8
fAorICAgICAgICB0b2tlbmlzZXIuZXJyb3IoIlVuZXhwZWN0ZWQgdG9rZW4gaW4gZXh0ZW5kZWQg
YXR0cmlidXRlIGFyZ3VtZW50IGxpc3QiKTsKKyAgICB9IGVsc2UgaWYgKHJldC5oYXNSaHMgJiYg
IXRva2Vucy5zZWNvbmRhcnlOYW1lKSB7CisgICAgICB0b2tlbmlzZXIuZXJyb3IoIk5vIHJpZ2h0
IGhhbmQgc2lkZSB0byBleHRlbmRlZCBhdHRyaWJ1dGUgYXNzaWdubWVudCIpOworICAgIH0KKyAg
ICByZXR1cm4gcmV0LnRoaXM7CisgIH0KKworICBnZXQgcmhzSXNMaXN0KCkgeworICAgIHJldHVy
biB0aGlzLnRva2Vucy5hc3NpZ24gJiYgIXRoaXMudG9rZW5zLnNlY29uZGFyeU5hbWU7CisgIH0K
KworICBnZXQgcmhzVHlwZSgpIHsKKyAgICBpZiAodGhpcy5yaHNJc0xpc3QpIHsKKyAgICAgIHJl
dHVybiB0aGlzLmxpc3RbMF0udG9rZW5zLnZhbHVlLnR5cGUgKyAiLWxpc3QiOworICAgIH0KKyAg
ICBpZiAodGhpcy50b2tlbnMuc2Vjb25kYXJ5TmFtZSkgeworICAgICAgcmV0dXJuIHRoaXMudG9r
ZW5zLnNlY29uZGFyeU5hbWUudHlwZTsKKyAgICB9CisgICAgcmV0dXJuIG51bGw7CisgIH0KKwor
ICAvKiogQHBhcmFtIHtpbXBvcnQoIi4uL3dyaXRlci5qcyIpLldyaXRlcil9IHcgKi8KKyAgd3Jp
dGUodykgeworICAgIGZ1bmN0aW9uIGV4dGVuZGVkX2F0dHJpYnV0ZV9saXN0aXRlbShpdGVtKSB7
CisgICAgICByZXR1cm4gdy50cy53cmFwKFsKKyAgICAgICAgdy50b2tlbihpdGVtLnRva2Vucy52
YWx1ZSksCisgICAgICAgIHcudG9rZW4oaXRlbS50b2tlbnMuc2VwYXJhdG9yKSwKKyAgICAgIF0p
OworICAgIH0KKyAgICBjb25zdCB7IHJoc1R5cGUgfSA9IHRoaXM7CisgICAgcmV0dXJuIHcudHMu
d3JhcChbCisgICAgICB3LnRva2VuKHRoaXMudG9rZW5zLmFzc2lnbiksCisgICAgICB3LnJlZmVy
ZW5jZV90b2tlbih0aGlzLnRva2Vucy5zZWNvbmRhcnlOYW1lLCB0aGlzLnBhcmVudCksCisgICAg
ICB3LnRva2VuKHRoaXMudG9rZW5zLm9wZW4pLAorICAgICAgLi4uKCF0aGlzLmxpc3QKKyAgICAg
ICAgPyBbXQorICAgICAgICA6IHRoaXMubGlzdC5tYXAoKHApID0+IHsKKyAgICAgICAgICAgIHJl
dHVybiByaHNUeXBlID09PSAiaWRlbnRpZmllci1saXN0IgorICAgICAgICAgICAgICA/IHcuaWRl
bnRpZmllcihwLCB0aGlzLnBhcmVudCkKKyAgICAgICAgICAgICAgOiByaHNUeXBlICYmIHJoc1R5
cGUuZW5kc1dpdGgoIi1saXN0IikKKyAgICAgICAgICAgICAgPyBleHRlbmRlZF9hdHRyaWJ1dGVf
bGlzdGl0ZW0ocCkKKyAgICAgICAgICAgICAgOiBwLndyaXRlKHcpOworICAgICAgICAgIH0pKSwK
KyAgICAgIHcudG9rZW4odGhpcy50b2tlbnMuY2xvc2UpLAorICAgIF0pOworICB9Cit9CisKK2Ns
YXNzIFNpbXBsZUV4dGVuZGVkQXR0cmlidXRlIGV4dGVuZHMgX2Jhc2VfanNfX1dFQlBBQ0tfSU1Q
T1JURURfTU9EVUxFXzBfXy5CYXNlIHsKKyAgLyoqCisgICAqIEBwYXJhbSB7aW1wb3J0KCIuLi90
b2tlbmlzZXIiKS5Ub2tlbmlzZXJ9IHRva2VuaXNlcgorICAgKi8KKyAgc3RhdGljIHBhcnNlKHRv
a2VuaXNlcikgeworICAgIGNvbnN0IG5hbWUgPSB0b2tlbmlzZXIuY29uc3VtZVR5cGUoImlkZW50
aWZpZXIiKTsKKyAgICBpZiAobmFtZSkgeworICAgICAgcmV0dXJuIG5ldyBTaW1wbGVFeHRlbmRl
ZEF0dHJpYnV0ZSh7CisgICAgICAgIHNvdXJjZTogdG9rZW5pc2VyLnNvdXJjZSwKKyAgICAgICAg
dG9rZW5zOiB7IG5hbWUgfSwKKyAgICAgICAgcGFyYW1zOiBFeHRlbmRlZEF0dHJpYnV0ZVBhcmFt
ZXRlcnMucGFyc2UodG9rZW5pc2VyKSwKKyAgICAgIH0pOworICAgIH0KKyAgfQorCisgIGNvbnN0
cnVjdG9yKHsgc291cmNlLCB0b2tlbnMsIHBhcmFtcyB9KSB7CisgICAgc3VwZXIoeyBzb3VyY2Us
IHRva2VucyB9KTsKKyAgICBwYXJhbXMucGFyZW50ID0gdGhpczsKKyAgICBPYmplY3QuZGVmaW5l
UHJvcGVydHkodGhpcywgInBhcmFtcyIsIHsgdmFsdWU6IHBhcmFtcyB9KTsKKyAgfQorCisgIGdl
dCB0eXBlKCkgeworICAgIHJldHVybiAiZXh0ZW5kZWQtYXR0cmlidXRlIjsKKyAgfQorICBnZXQg
bmFtZSgpIHsKKyAgICByZXR1cm4gdGhpcy50b2tlbnMubmFtZS52YWx1ZTsKKyAgfQorICBnZXQg
cmhzKCkgeworICAgIGNvbnN0IHsgcmhzVHlwZTogdHlwZSwgdG9rZW5zLCBsaXN0IH0gPSB0aGlz
LnBhcmFtczsKKyAgICBpZiAoIXR5cGUpIHsKKyAgICAgIHJldHVybiBudWxsOworICAgIH0KKyAg
ICBjb25zdCB2YWx1ZSA9IHRoaXMucGFyYW1zLnJoc0lzTGlzdAorICAgICAgPyBsaXN0CisgICAg
ICA6ICgwLF9oZWxwZXJzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX18udW5lc2NhcGUp
KHRva2Vucy5zZWNvbmRhcnlOYW1lLnZhbHVlKTsKKyAgICByZXR1cm4geyB0eXBlLCB2YWx1ZSB9
OworICB9CisgIGdldCBhcmd1bWVudHMoKSB7CisgICAgY29uc3QgeyByaHNJc0xpc3QsIGxpc3Qg
fSA9IHRoaXMucGFyYW1zOworICAgIGlmICghbGlzdCB8fCByaHNJc0xpc3QpIHsKKyAgICAgIHJl
dHVybiBbXTsKKyAgICB9CisgICAgcmV0dXJuIGxpc3Q7CisgIH0KKworICAqdmFsaWRhdGUoZGVm
cykgeworICAgIGNvbnN0IHsgbmFtZSB9ID0gdGhpczsKKyAgICBpZiAobmFtZSA9PT0gIkxlZ2Fj
eU5vSW50ZXJmYWNlT2JqZWN0IikgeworICAgICAgY29uc3QgbWVzc2FnZSA9IGBcYFtMZWdhY3lO
b0ludGVyZmFjZU9iamVjdF1cYCBleHRlbmRlZCBhdHRyaWJ1dGUgaXMgYW4gXAordW5kZXNpcmFi
bGUgZmVhdHVyZSB0aGF0IG1heSBiZSByZW1vdmVkIGZyb20gV2ViIElETCBpbiB0aGUgZnV0dXJl
LiBSZWZlciB0byB0aGUgXAorW3JlbGV2YW50IHVwc3RyZWFtIFBSXShodHRwczovL2dpdGh1Yi5j
b20vaGV5Y2FtL3dlYmlkbC9wdWxsLzYwOSkgZm9yIG1vcmUgXAoraW5mb3JtYXRpb24uYDsKKyAg
ICAgIHlpZWxkICgwLF9lcnJvcl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fLnZhbGlk
YXRpb25FcnJvcikoCisgICAgICAgIHRoaXMudG9rZW5zLm5hbWUsCisgICAgICAgIHRoaXMsCisg
ICAgICAgICJuby1ub2ludGVyZmFjZW9iamVjdCIsCisgICAgICAgIG1lc3NhZ2UsCisgICAgICAg
IHsgbGV2ZWw6ICJ3YXJuaW5nIiB9CisgICAgICApOworICAgIH0gZWxzZSBpZiAocmVuYW1lZExl
Z2FjaWVzLmhhcyhuYW1lKSkgeworICAgICAgY29uc3QgbWVzc2FnZSA9IGBcYFske25hbWV9XVxg
IGV4dGVuZGVkIGF0dHJpYnV0ZSBpcyBhIGxlZ2FjeSBmZWF0dXJlIFwKK3RoYXQgaXMgbm93IHJl
bmFtZWQgdG8gXGBbJHtyZW5hbWVkTGVnYWNpZXMuZ2V0KG5hbWUpfV1cYC4gUmVmZXIgdG8gdGhl
IFwKK1tyZWxldmFudCB1cHN0cmVhbSBQUl0oaHR0cHM6Ly9naXRodWIuY29tL2hleWNhbS93ZWJp
ZGwvcHVsbC84NzApIGZvciBtb3JlIFwKK2luZm9ybWF0aW9uLmA7CisgICAgICB5aWVsZCAoMCxf
ZXJyb3JfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfXy52YWxpZGF0aW9uRXJyb3IpKHRo
aXMudG9rZW5zLm5hbWUsIHRoaXMsICJyZW5hbWVkLWxlZ2FjeSIsIG1lc3NhZ2UsIHsKKyAgICAg
ICAgbGV2ZWw6ICJ3YXJuaW5nIiwKKyAgICAgICAgYXV0b2ZpeDogcmVuYW1lTGVnYWN5RXh0ZW5k
ZWRBdHRyaWJ1dGUodGhpcyksCisgICAgICB9KTsKKyAgICB9CisgICAgZm9yIChjb25zdCBhcmcg
b2YgdGhpcy5hcmd1bWVudHMpIHsKKyAgICAgIHlpZWxkKiBhcmcudmFsaWRhdGUoZGVmcyk7Cisg
ICAgfQorICB9CisKKyAgLyoqIEBwYXJhbSB7aW1wb3J0KCIuLi93cml0ZXIuanMiKS5Xcml0ZXIp
fSB3ICovCisgIHdyaXRlKHcpIHsKKyAgICByZXR1cm4gdy50cy53cmFwKFsKKyAgICAgIHcudHMu
dHJpdmlhKHRoaXMudG9rZW5zLm5hbWUudHJpdmlhKSwKKyAgICAgIHcudHMuZXh0ZW5kZWRBdHRy
aWJ1dGUoCisgICAgICAgIHcudHMud3JhcChbCisgICAgICAgICAgdy50cy5leHRlbmRlZEF0dHJp
YnV0ZVJlZmVyZW5jZSh0aGlzLm5hbWUpLAorICAgICAgICAgIHRoaXMucGFyYW1zLndyaXRlKHcp
LAorICAgICAgICBdKQorICAgICAgKSwKKyAgICAgIHcudG9rZW4odGhpcy50b2tlbnMuc2VwYXJh
dG9yKSwKKyAgICBdKTsKKyAgfQorfQorCisvKioKKyAqIEBwYXJhbSB7U2ltcGxlRXh0ZW5kZWRB
dHRyaWJ1dGV9IGV4dEF0dHIKKyAqLworZnVuY3Rpb24gcmVuYW1lTGVnYWN5RXh0ZW5kZWRBdHRy
aWJ1dGUoZXh0QXR0cikgeworICByZXR1cm4gKCkgPT4geworICAgIGNvbnN0IHsgbmFtZSB9ID0g
ZXh0QXR0cjsKKyAgICBleHRBdHRyLnRva2Vucy5uYW1lLnZhbHVlID0gcmVuYW1lZExlZ2FjaWVz
LmdldChuYW1lKTsKKyAgICBpZiAobmFtZSA9PT0gIlRyZWF0TnVsbEFzIikgeworICAgICAgZXh0
QXR0ci5wYXJhbXMudG9rZW5zID0ge307CisgICAgfQorICB9OworfQorCisvLyBOb3RlOiB3ZSBw
YXJzZSBzb21ldGhpbmcgc2ltcGxlciB0aGFuIHRoZSBvZmZpY2lhbCBzeW50YXguIEl0J3MgYWxs
IHRoYXQgZXZlcgorLy8gc2VlbXMgdG8gYmUgdXNlZAorY2xhc3MgRXh0ZW5kZWRBdHRyaWJ1dGVz
IGV4dGVuZHMgX2FycmF5X2Jhc2VfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXy5BcnJh
eUJhc2UgeworICAvKioKKyAgICogQHBhcmFtIHtpbXBvcnQoIi4uL3Rva2VuaXNlciIpLlRva2Vu
aXNlcn0gdG9rZW5pc2VyCisgICAqLworICBzdGF0aWMgcGFyc2UodG9rZW5pc2VyKSB7CisgICAg
Y29uc3QgdG9rZW5zID0ge307CisgICAgdG9rZW5zLm9wZW4gPSB0b2tlbmlzZXIuY29uc3VtZSgi
WyIpOworICAgIGlmICghdG9rZW5zLm9wZW4pIHJldHVybiBuZXcgRXh0ZW5kZWRBdHRyaWJ1dGVz
KHt9KTsKKyAgICBjb25zdCByZXQgPSBuZXcgRXh0ZW5kZWRBdHRyaWJ1dGVzKHsgc291cmNlOiB0
b2tlbmlzZXIuc291cmNlLCB0b2tlbnMgfSk7CisgICAgcmV0LnB1c2goCisgICAgICAuLi4oMCxf
aGVscGVyc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fLmxpc3QpKHRva2VuaXNlciwg
eworICAgICAgICBwYXJzZXI6IFNpbXBsZUV4dGVuZGVkQXR0cmlidXRlLnBhcnNlLAorICAgICAg
ICBsaXN0TmFtZTogImV4dGVuZGVkIGF0dHJpYnV0ZSIsCisgICAgICB9KQorICAgICk7CisgICAg
dG9rZW5zLmNsb3NlID0KKyAgICAgIHRva2VuaXNlci5jb25zdW1lKCJdIikgfHwKKyAgICAgIHRv
a2VuaXNlci5lcnJvcigiVW5leHBlY3RlZCBjbG9zaW5nIHRva2VuIG9mIGV4dGVuZGVkIGF0dHJp
YnV0ZSIpOworICAgIGlmICghcmV0Lmxlbmd0aCkgeworICAgICAgdG9rZW5pc2VyLmVycm9yKCJG
b3VuZCBhbiBlbXB0eSBleHRlbmRlZCBhdHRyaWJ1dGUiKTsKKyAgICB9CisgICAgaWYgKHRva2Vu
aXNlci5wcm9iZSgiWyIpKSB7CisgICAgICB0b2tlbmlzZXIuZXJyb3IoCisgICAgICAgICJJbGxl
Z2FsIGRvdWJsZSBleHRlbmRlZCBhdHRyaWJ1dGUgbGlzdHMsIGNvbnNpZGVyIG1lcmdpbmcgdGhl
bSIKKyAgICAgICk7CisgICAgfQorICAgIHJldHVybiByZXQ7CisgIH0KKworICAqdmFsaWRhdGUo
ZGVmcykgeworICAgIGZvciAoY29uc3QgZXh0QXR0ciBvZiB0aGlzKSB7CisgICAgICB5aWVsZCog
ZXh0QXR0ci52YWxpZGF0ZShkZWZzKTsKKyAgICB9CisgIH0KKworICAvKiogQHBhcmFtIHtpbXBv
cnQoIi4uL3dyaXRlci5qcyIpLldyaXRlcil9IHcgKi8KKyAgd3JpdGUodykgeworICAgIGlmICgh
dGhpcy5sZW5ndGgpIHJldHVybiAiIjsKKyAgICByZXR1cm4gdy50cy53cmFwKFsKKyAgICAgIHcu
dG9rZW4odGhpcy50b2tlbnMub3BlbiksCisgICAgICAuLi50aGlzLm1hcCgoZWEpID0+IGVhLndy
aXRlKHcpKSwKKyAgICAgIHcudG9rZW4odGhpcy50b2tlbnMuY2xvc2UpLAorICAgIF0pOworICB9
Cit9CisKKworLyoqKi8gfSksCisvKiA5ICovCisvKioqLyAoKF9fdW51c2VkX3dlYnBhY2tfX193
ZWJwYWNrX21vZHVsZV9fLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9f
KSA9PiB7CisKK19fd2VicGFja19yZXF1aXJlX18ucihfX3dlYnBhY2tfZXhwb3J0c19fKTsKKy8q
IGhhcm1vbnkgZXhwb3J0ICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0
c19fLCB7CisvKiBoYXJtb255IGV4cG9ydCAqLyAgICJBcnJheUJhc2UiOiAoKSA9PiAoLyogYmlu
ZGluZyAqLyBBcnJheUJhc2UpCisvKiBoYXJtb255IGV4cG9ydCAqLyB9KTsKKy8vIEB0cy1jaGVj
aworCitjbGFzcyBBcnJheUJhc2UgZXh0ZW5kcyBBcnJheSB7CisgIGNvbnN0cnVjdG9yKHsgc291
cmNlLCB0b2tlbnMgfSkgeworICAgIHN1cGVyKCk7CisgICAgT2JqZWN0LmRlZmluZVByb3BlcnRp
ZXModGhpcywgeworICAgICAgc291cmNlOiB7IHZhbHVlOiBzb3VyY2UgfSwKKyAgICAgIHRva2Vu
czogeyB2YWx1ZTogdG9rZW5zIH0sCisgICAgICBwYXJlbnQ6IHsgdmFsdWU6IG51bGwsIHdyaXRh
YmxlOiB0cnVlIH0sCisgICAgfSk7CisgIH0KK30KKworCisvKioqLyB9KSwKKy8qIDEwICovCisv
KioqLyAoKF9fdW51c2VkX3dlYnBhY2tfX193ZWJwYWNrX21vZHVsZV9fLCBfX3dlYnBhY2tfZXhw
b3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSA9PiB7CisKK19fd2VicGFja19yZXF1aXJlX18u
cihfX3dlYnBhY2tfZXhwb3J0c19fKTsKKy8qIGhhcm1vbnkgZXhwb3J0ICovIF9fd2VicGFja19y
ZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCB7CisvKiBoYXJtb255IGV4cG9ydCAqLyAg
ICJXcmFwcGVkVG9rZW4iOiAoKSA9PiAoLyogYmluZGluZyAqLyBXcmFwcGVkVG9rZW4pCisvKiBo
YXJtb255IGV4cG9ydCAqLyB9KTsKKy8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfYmFzZV9qc19f
V0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2KTsKKy8q
IGhhcm1vbnkgaW1wb3J0ICovIHZhciBfaGVscGVyc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RV
TEVfMV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTsKKy8vIEB0cy1jaGVjaworCisKKworCitj
bGFzcyBXcmFwcGVkVG9rZW4gZXh0ZW5kcyBfYmFzZV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RV
TEVfMF9fLkJhc2UgeworICAvKioKKyAgICogQHBhcmFtIHtpbXBvcnQoIi4uL3Rva2VuaXNlciIp
LlRva2VuaXNlcn0gdG9rZW5pc2VyCisgICAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlCisgICAqLwor
ICBzdGF0aWMgcGFyc2VyKHRva2VuaXNlciwgdHlwZSkgeworICAgIHJldHVybiAoKSA9PiB7Cisg
ICAgICBjb25zdCB2YWx1ZSA9IHRva2VuaXNlci5jb25zdW1lVHlwZSh0eXBlKTsKKyAgICAgIGlm
ICh2YWx1ZSkgeworICAgICAgICByZXR1cm4gbmV3IFdyYXBwZWRUb2tlbih7CisgICAgICAgICAg
c291cmNlOiB0b2tlbmlzZXIuc291cmNlLAorICAgICAgICAgIHRva2VuczogeyB2YWx1ZSB9LAor
ICAgICAgICB9KTsKKyAgICAgIH0KICAgICB9OworICB9CisKKyAgZ2V0IHZhbHVlKCkgeworICAg
IHJldHVybiAoMCxfaGVscGVyc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fLnVuZXNj
YXBlKSh0aGlzLnRva2Vucy52YWx1ZS52YWx1ZSk7CisgIH0KK30KKworCisvKioqLyB9KSwKKy8q
IDExICovCisvKioqLyAoKF9fdW51c2VkX3dlYnBhY2tfX193ZWJwYWNrX21vZHVsZV9fLCBfX3dl
YnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSA9PiB7CisKK19fd2VicGFja19y
ZXF1aXJlX18ucihfX3dlYnBhY2tfZXhwb3J0c19fKTsKKy8qIGhhcm1vbnkgZXhwb3J0ICovIF9f
d2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCB7CisvKiBoYXJtb255IGV4
cG9ydCAqLyAgICJBcmd1bWVudCI6ICgpID0+ICgvKiBiaW5kaW5nICovIEFyZ3VtZW50KQorLyog
aGFybW9ueSBleHBvcnQgKi8gfSk7CisvKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2Jhc2VfanNf
X1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNik7Cisv
KiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2RlZmF1bHRfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9E
VUxFXzFfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTIpOworLyogaGFybW9ueSBpbXBvcnQgKi8g
dmFyIF9leHRlbmRlZF9hdHRyaWJ1dGVzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18g
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgpOworLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9oZWxw
ZXJzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDQpOworLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF90b2tlbmlzZXJfanNfX1dFQlBBQ0tfSU1Q
T1JURURfTU9EVUxFXzRfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMik7CisvKiBoYXJtb255IGlt
cG9ydCAqLyB2YXIgX2Vycm9yX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X18gPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDMpOworLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF92YWxpZGF0b3Jz
X2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzZfXyA9IF9fd2VicGFja19yZXF1
aXJlX18oNyk7CisvLyBAdHMtY2hlY2sKKworCiAKLSAgICB2YXIgaW5Ob2RlID0gdHlwZW9mIG1v
ZHVsZSAhPT0gInVuZGVmaW5lZCIgJiYgbW9kdWxlLmV4cG9ydHMKLSAgICAsICAgb2JqID0gewot
ICAgICAgICAgICAgcGFyc2U6ICBmdW5jdGlvbiAoc3RyLCBvcHQpIHsKLSAgICAgICAgICAgICAg
ICBpZiAoIW9wdCkgb3B0ID0ge307Ci0gICAgICAgICAgICAgICAgdmFyIHRva2VucyA9IHRva2Vu
aXNlKHN0cik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlKHRva2Vucywgb3B0KTsKKwor
CisKKworCisKK2NsYXNzIEFyZ3VtZW50IGV4dGVuZHMgX2Jhc2VfanNfX1dFQlBBQ0tfSU1QT1JU
RURfTU9EVUxFXzBfXy5CYXNlIHsKKyAgLyoqCisgICAqIEBwYXJhbSB7aW1wb3J0KCIuLi90b2tl
bmlzZXIiKS5Ub2tlbmlzZXJ9IHRva2VuaXNlcgorICAgKi8KKyAgc3RhdGljIHBhcnNlKHRva2Vu
aXNlcikgeworICAgIGNvbnN0IHN0YXJ0X3Bvc2l0aW9uID0gdG9rZW5pc2VyLnBvc2l0aW9uOwor
ICAgIC8qKiBAdHlwZSB7QmFzZVsidG9rZW5zIl19ICovCisgICAgY29uc3QgdG9rZW5zID0ge307
CisgICAgY29uc3QgcmV0ID0gKDAsX2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxF
XzNfXy5hdXRvUGFyZW50ZXIpKAorICAgICAgbmV3IEFyZ3VtZW50KHsgc291cmNlOiB0b2tlbmlz
ZXIuc291cmNlLCB0b2tlbnMgfSkKKyAgICApOworICAgIHJldC5leHRBdHRycyA9IF9leHRlbmRl
ZF9hdHRyaWJ1dGVzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18uRXh0ZW5kZWRBdHRy
aWJ1dGVzLnBhcnNlKHRva2VuaXNlcik7CisgICAgdG9rZW5zLm9wdGlvbmFsID0gdG9rZW5pc2Vy
LmNvbnN1bWUoIm9wdGlvbmFsIik7CisgICAgcmV0LmlkbFR5cGUgPSAoMCxfaGVscGVyc19qc19f
V0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fLnR5cGVfd2l0aF9leHRlbmRlZF9hdHRyaWJ1dGVz
KSh0b2tlbmlzZXIsICJhcmd1bWVudC10eXBlIik7CisgICAgaWYgKCFyZXQuaWRsVHlwZSkgewor
ICAgICAgcmV0dXJuIHRva2VuaXNlci51bmNvbnN1bWUoc3RhcnRfcG9zaXRpb24pOworICAgIH0K
KyAgICBpZiAoIXRva2Vucy5vcHRpb25hbCkgeworICAgICAgdG9rZW5zLnZhcmlhZGljID0gdG9r
ZW5pc2VyLmNvbnN1bWUoIi4uLiIpOworICAgIH0KKyAgICB0b2tlbnMubmFtZSA9CisgICAgICB0
b2tlbmlzZXIuY29uc3VtZVR5cGUoImlkZW50aWZpZXIiKSB8fAorICAgICAgdG9rZW5pc2VyLmNv
bnN1bWUoLi4uX3Rva2VuaXNlcl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fLmFyZ3Vt
ZW50TmFtZUtleXdvcmRzKTsKKyAgICBpZiAoIXRva2Vucy5uYW1lKSB7CisgICAgICByZXR1cm4g
dG9rZW5pc2VyLnVuY29uc3VtZShzdGFydF9wb3NpdGlvbik7CisgICAgfQorICAgIHJldC5kZWZh
dWx0ID0gdG9rZW5zLm9wdGlvbmFsID8gX2RlZmF1bHRfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9E
VUxFXzFfXy5EZWZhdWx0LnBhcnNlKHRva2VuaXNlcikgOiBudWxsOworICAgIHJldHVybiByZXQu
dGhpczsKKyAgfQorCisgIGdldCB0eXBlKCkgeworICAgIHJldHVybiAiYXJndW1lbnQiOworICB9
CisgIGdldCBvcHRpb25hbCgpIHsKKyAgICByZXR1cm4gISF0aGlzLnRva2Vucy5vcHRpb25hbDsK
KyAgfQorICBnZXQgdmFyaWFkaWMoKSB7CisgICAgcmV0dXJuICEhdGhpcy50b2tlbnMudmFyaWFk
aWM7CisgIH0KKyAgZ2V0IG5hbWUoKSB7CisgICAgcmV0dXJuICgwLF9oZWxwZXJzX2pzX19XRUJQ
QUNLX0lNUE9SVEVEX01PRFVMRV8zX18udW5lc2NhcGUpKHRoaXMudG9rZW5zLm5hbWUudmFsdWUp
OworICB9CisKKyAgLyoqCisgICAqIEBwYXJhbSB7aW1wb3J0KCIuLi92YWxpZGF0b3IuanMiKS5E
ZWZpbml0aW9uc30gZGVmcworICAgKi8KKyAgKnZhbGlkYXRlKGRlZnMpIHsKKyAgICB5aWVsZCog
dGhpcy5leHRBdHRycy52YWxpZGF0ZShkZWZzKTsKKyAgICB5aWVsZCogdGhpcy5pZGxUeXBlLnZh
bGlkYXRlKGRlZnMpOworICAgIGNvbnN0IHJlc3VsdCA9ICgwLF92YWxpZGF0b3JzX2hlbHBlcnNf
anNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzZfXy5pZGxUeXBlSW5jbHVkZXNEaWN0aW9uYXJ5
KSh0aGlzLmlkbFR5cGUsIGRlZnMsIHsKKyAgICAgIHVzZU51bGxhYmxlSW5uZXI6IHRydWUsCisg
ICAgfSk7CisgICAgaWYgKHJlc3VsdCkgeworICAgICAgaWYgKHRoaXMuaWRsVHlwZS5udWxsYWJs
ZSkgeworICAgICAgICBjb25zdCBtZXNzYWdlID0gYERpY3Rpb25hcnkgYXJndW1lbnRzIGNhbm5v
dCBiZSBudWxsYWJsZS5gOworICAgICAgICB5aWVsZCAoMCxfZXJyb3JfanNfX1dFQlBBQ0tfSU1Q
T1JURURfTU9EVUxFXzVfXy52YWxpZGF0aW9uRXJyb3IpKAorICAgICAgICAgIHRoaXMudG9rZW5z
Lm5hbWUsCisgICAgICAgICAgdGhpcywKKyAgICAgICAgICAibm8tbnVsbGFibGUtZGljdC1hcmci
LAorICAgICAgICAgIG1lc3NhZ2UKKyAgICAgICAgKTsKKyAgICAgIH0gZWxzZSBpZiAoIXRoaXMu
b3B0aW9uYWwpIHsKKyAgICAgICAgaWYgKAorICAgICAgICAgIHRoaXMucGFyZW50ICYmCisgICAg
ICAgICAgISgwLF92YWxpZGF0b3JzX2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxF
XzZfXy5kaWN0aW9uYXJ5SW5jbHVkZXNSZXF1aXJlZEZpZWxkKShyZXN1bHQuZGljdGlvbmFyeSwg
ZGVmcykgJiYKKyAgICAgICAgICBpc0xhc3RSZXF1aXJlZEFyZ3VtZW50KHRoaXMpCisgICAgICAg
ICkgeworICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgRGljdGlvbmFyeSBhcmd1bWVudCBtdXN0
IGJlIG9wdGlvbmFsIGlmIGl0IGhhcyBubyByZXF1aXJlZCBmaWVsZHNgOworICAgICAgICAgIHlp
ZWxkICgwLF9lcnJvcl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fLnZhbGlkYXRpb25F
cnJvcikoCisgICAgICAgICAgICB0aGlzLnRva2Vucy5uYW1lLAorICAgICAgICAgICAgdGhpcywK
KyAgICAgICAgICAgICJkaWN0LWFyZy1vcHRpb25hbCIsCisgICAgICAgICAgICBtZXNzYWdlLAor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICBhdXRvZml4OiBhdXRvZml4RGljdGlvbmFyeUFy
Z3VtZW50T3B0aW9uYWxpdHkodGhpcyksCiAgICAgICAgICAgICB9CisgICAgICAgICAgKTsKKyAg
ICAgICAgfQorICAgICAgfSBlbHNlIGlmICghdGhpcy5kZWZhdWx0KSB7CisgICAgICAgIGNvbnN0
IG1lc3NhZ2UgPSBgT3B0aW9uYWwgZGljdGlvbmFyeSBhcmd1bWVudHMgbXVzdCBoYXZlIGEgZGVm
YXVsdCB2YWx1ZSBvZiBcYHt9XGAuYDsKKyAgICAgICAgeWllbGQgKDAsX2Vycm9yX2pzX19XRUJQ
QUNLX0lNUE9SVEVEX01PRFVMRV81X18udmFsaWRhdGlvbkVycm9yKSgKKyAgICAgICAgICB0aGlz
LnRva2Vucy5uYW1lLAorICAgICAgICAgIHRoaXMsCisgICAgICAgICAgImRpY3QtYXJnLWRlZmF1
bHQiLAorICAgICAgICAgIG1lc3NhZ2UsCisgICAgICAgICAgeworICAgICAgICAgICAgYXV0b2Zp
eDogYXV0b2ZpeE9wdGlvbmFsRGljdGlvbmFyeURlZmF1bHRWYWx1ZSh0aGlzKSwKKyAgICAgICAg
ICB9CisgICAgICAgICk7CisgICAgICB9CisgICAgfQorICB9CisKKyAgLyoqIEBwYXJhbSB7aW1w
b3J0KCIuLi93cml0ZXIuanMiKS5Xcml0ZXJ9IHcgKi8KKyAgd3JpdGUodykgeworICAgIHJldHVy
biB3LnRzLndyYXAoWworICAgICAgdGhpcy5leHRBdHRycy53cml0ZSh3KSwKKyAgICAgIHcudG9r
ZW4odGhpcy50b2tlbnMub3B0aW9uYWwpLAorICAgICAgdy50cy50eXBlKHRoaXMuaWRsVHlwZS53
cml0ZSh3KSksCisgICAgICB3LnRva2VuKHRoaXMudG9rZW5zLnZhcmlhZGljKSwKKyAgICAgIHcu
bmFtZV90b2tlbih0aGlzLnRva2Vucy5uYW1lLCB7IGRhdGE6IHRoaXMgfSksCisgICAgICB0aGlz
LmRlZmF1bHQgPyB0aGlzLmRlZmF1bHQud3JpdGUodykgOiAiIiwKKyAgICAgIHcudG9rZW4odGhp
cy50b2tlbnMuc2VwYXJhdG9yKSwKKyAgICBdKTsKKyAgfQorfQorCisvKioKKyAqIEBwYXJhbSB7
QXJndW1lbnR9IGFyZworICovCitmdW5jdGlvbiBpc0xhc3RSZXF1aXJlZEFyZ3VtZW50KGFyZykg
eworICBjb25zdCBsaXN0ID0gYXJnLnBhcmVudC5hcmd1bWVudHMgfHwgYXJnLnBhcmVudC5saXN0
OworICBjb25zdCBpbmRleCA9IGxpc3QuaW5kZXhPZihhcmcpOworICBjb25zdCByZXF1aXJlZEV4
aXN0cyA9IGxpc3Quc2xpY2UoaW5kZXggKyAxKS5zb21lKChhKSA9PiAhYS5vcHRpb25hbCk7Cisg
IHJldHVybiAhcmVxdWlyZWRFeGlzdHM7Cit9CisKKy8qKgorICogQHBhcmFtIHtBcmd1bWVudH0g
YXJnCisgKi8KK2Z1bmN0aW9uIGF1dG9maXhEaWN0aW9uYXJ5QXJndW1lbnRPcHRpb25hbGl0eShh
cmcpIHsKKyAgcmV0dXJuICgpID0+IHsKKyAgICBjb25zdCBmaXJzdFRva2VuID0gKDAsX2hlbHBl
cnNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfXy5nZXRGaXJzdFRva2VuKShhcmcuaWRs
VHlwZSk7CisgICAgYXJnLnRva2Vucy5vcHRpb25hbCA9IHsKKyAgICAgIHR5cGU6ICJvcHRpb25h
bCIsCisgICAgICB2YWx1ZTogIm9wdGlvbmFsIiwKKyAgICAgIHRyaXZpYTogZmlyc3RUb2tlbi50
cml2aWEsCisgICAgfTsKKyAgICBmaXJzdFRva2VuLnRyaXZpYSA9ICIgIjsKKyAgICBhdXRvZml4
T3B0aW9uYWxEaWN0aW9uYXJ5RGVmYXVsdFZhbHVlKGFyZykoKTsKKyAgfTsKK30KKworLyoqCisg
KiBAcGFyYW0ge0FyZ3VtZW50fSBhcmcKKyAqLworZnVuY3Rpb24gYXV0b2ZpeE9wdGlvbmFsRGlj
dGlvbmFyeURlZmF1bHRWYWx1ZShhcmcpIHsKKyAgcmV0dXJuICgpID0+IHsKKyAgICBhcmcuZGVm
YXVsdCA9IF9kZWZhdWx0X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18uRGVmYXVsdC5w
YXJzZShuZXcgX3Rva2VuaXNlcl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fLlRva2Vu
aXNlcigiID0ge30iKSk7CisgIH07Cit9CisKKworLyoqKi8gfSksCisvKiAxMiAqLworLyoqKi8g
KChfX3VudXNlZF93ZWJwYWNrX19fd2VicGFja19tb2R1bGVfXywgX193ZWJwYWNrX2V4cG9ydHNf
XywgX193ZWJwYWNrX3JlcXVpcmVfXykgPT4geworCitfX3dlYnBhY2tfcmVxdWlyZV9fLnIoX193
ZWJwYWNrX2V4cG9ydHNfXyk7CisvKiBoYXJtb255IGV4cG9ydCAqLyBfX3dlYnBhY2tfcmVxdWly
ZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgeworLyogaGFybW9ueSBleHBvcnQgKi8gICAiRGVm
YXVsdCI6ICgpID0+ICgvKiBiaW5kaW5nICovIERlZmF1bHQpCisvKiBoYXJtb255IGV4cG9ydCAq
LyB9KTsKKy8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfYmFzZV9qc19fV0VCUEFDS19JTVBPUlRF
RF9NT0RVTEVfMF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2KTsKKy8qIGhhcm1vbnkgaW1wb3J0
ICovIHZhciBfaGVscGVyc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fID0gX193ZWJw
YWNrX3JlcXVpcmVfXyg0KTsKKworCisKK2NsYXNzIERlZmF1bHQgZXh0ZW5kcyBfYmFzZV9qc19f
V0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fLkJhc2UgeworICAvKioKKyAgICogQHBhcmFtIHtp
bXBvcnQoIi4uL3Rva2VuaXNlciIpLlRva2VuaXNlcn0gdG9rZW5pc2VyCisgICAqLworICBzdGF0
aWMgcGFyc2UodG9rZW5pc2VyKSB7CisgICAgY29uc3QgYXNzaWduID0gdG9rZW5pc2VyLmNvbnN1
bWUoIj0iKTsKKyAgICBpZiAoIWFzc2lnbikgeworICAgICAgcmV0dXJuIG51bGw7CisgICAgfQor
ICAgIGNvbnN0IGRlZiA9CisgICAgICAoMCxfaGVscGVyc19qc19fV0VCUEFDS19JTVBPUlRFRF9N
T0RVTEVfMV9fLmNvbnN0X3ZhbHVlKSh0b2tlbmlzZXIpIHx8CisgICAgICB0b2tlbmlzZXIuY29u
c3VtZVR5cGUoInN0cmluZyIpIHx8CisgICAgICB0b2tlbmlzZXIuY29uc3VtZSgibnVsbCIsICJb
IiwgInsiKSB8fAorICAgICAgdG9rZW5pc2VyLmVycm9yKCJObyB2YWx1ZSBmb3IgZGVmYXVsdCIp
OworICAgIGNvbnN0IGV4cHJlc3Npb24gPSBbZGVmXTsKKyAgICBpZiAoZGVmLnZhbHVlID09PSAi
WyIpIHsKKyAgICAgIGNvbnN0IGNsb3NlID0KKyAgICAgICAgdG9rZW5pc2VyLmNvbnN1bWUoIl0i
KSB8fAorICAgICAgICB0b2tlbmlzZXIuZXJyb3IoIkRlZmF1bHQgc2VxdWVuY2UgdmFsdWUgbXVz
dCBiZSBlbXB0eSIpOworICAgICAgZXhwcmVzc2lvbi5wdXNoKGNsb3NlKTsKKyAgICB9IGVsc2Ug
aWYgKGRlZi52YWx1ZSA9PT0gInsiKSB7CisgICAgICBjb25zdCBjbG9zZSA9CisgICAgICAgIHRv
a2VuaXNlci5jb25zdW1lKCJ9IikgfHwKKyAgICAgICAgdG9rZW5pc2VyLmVycm9yKCJEZWZhdWx0
IGRpY3Rpb25hcnkgdmFsdWUgbXVzdCBiZSBlbXB0eSIpOworICAgICAgZXhwcmVzc2lvbi5wdXNo
KGNsb3NlKTsKKyAgICB9CisgICAgcmV0dXJuIG5ldyBEZWZhdWx0KHsKKyAgICAgIHNvdXJjZTog
dG9rZW5pc2VyLnNvdXJjZSwKKyAgICAgIHRva2VuczogeyBhc3NpZ24gfSwKKyAgICAgIGV4cHJl
c3Npb24sCisgICAgfSk7CisgIH0KKworICBjb25zdHJ1Y3Rvcih7IHNvdXJjZSwgdG9rZW5zLCBl
eHByZXNzaW9uIH0pIHsKKyAgICBzdXBlcih7IHNvdXJjZSwgdG9rZW5zIH0pOworICAgIGV4cHJl
c3Npb24ucGFyZW50ID0gdGhpczsKKyAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgImV4
cHJlc3Npb24iLCB7IHZhbHVlOiBleHByZXNzaW9uIH0pOworICB9CisKKyAgZ2V0IHR5cGUoKSB7
CisgICAgcmV0dXJuICgwLF9oZWxwZXJzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18u
Y29uc3RfZGF0YSkodGhpcy5leHByZXNzaW9uWzBdKS50eXBlOworICB9CisgIGdldCB2YWx1ZSgp
IHsKKyAgICByZXR1cm4gKDAsX2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFf
Xy5jb25zdF9kYXRhKSh0aGlzLmV4cHJlc3Npb25bMF0pLnZhbHVlOworICB9CisgIGdldCBuZWdh
dGl2ZSgpIHsKKyAgICByZXR1cm4gKDAsX2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9E
VUxFXzFfXy5jb25zdF9kYXRhKSh0aGlzLmV4cHJlc3Npb25bMF0pLm5lZ2F0aXZlOworICB9CisK
KyAgLyoqIEBwYXJhbSB7aW1wb3J0KCIuLi93cml0ZXIuanMiKS5Xcml0ZXIpfSB3ICovCisgIHdy
aXRlKHcpIHsKKyAgICByZXR1cm4gdy50cy53cmFwKFsKKyAgICAgIHcudG9rZW4odGhpcy50b2tl
bnMuYXNzaWduKSwKKyAgICAgIC4uLnRoaXMuZXhwcmVzc2lvbi5tYXAoKHQpID0+IHcudG9rZW4o
dCkpLAorICAgIF0pOworICB9Cit9CisKKworLyoqKi8gfSksCisvKiAxMyAqLworLyoqKi8gKChf
X3VudXNlZF93ZWJwYWNrX19fd2VicGFja19tb2R1bGVfXywgX193ZWJwYWNrX2V4cG9ydHNfXywg
X193ZWJwYWNrX3JlcXVpcmVfXykgPT4geworCitfX3dlYnBhY2tfcmVxdWlyZV9fLnIoX193ZWJw
YWNrX2V4cG9ydHNfXyk7CisvKiBoYXJtb255IGV4cG9ydCAqLyBfX3dlYnBhY2tfcmVxdWlyZV9f
LmQoX193ZWJwYWNrX2V4cG9ydHNfXywgeworLyogaGFybW9ueSBleHBvcnQgKi8gICAiT3BlcmF0
aW9uIjogKCkgPT4gKC8qIGJpbmRpbmcgKi8gT3BlcmF0aW9uKQorLyogaGFybW9ueSBleHBvcnQg
Ki8gfSk7CisvKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2Jhc2VfanNfX1dFQlBBQ0tfSU1QT1JU
RURfTU9EVUxFXzBfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNik7CisvKiBoYXJtb255IGltcG9y
dCAqLyB2YXIgX2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXyA9IF9fd2Vi
cGFja19yZXF1aXJlX18oNCk7CisvKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2Vycm9yX2pzX19X
RUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpOworCisK
KworCitjbGFzcyBPcGVyYXRpb24gZXh0ZW5kcyBfYmFzZV9qc19fV0VCUEFDS19JTVBPUlRFRF9N
T0RVTEVfMF9fLkJhc2UgeworICAvKioKKyAgICogQHR5cGVkZWYge2ltcG9ydCgiLi4vdG9rZW5p
c2VyLmpzIikuVG9rZW59IFRva2VuCisgICAqCisgICAqIEBwYXJhbSB7aW1wb3J0KCIuLi90b2tl
bmlzZXIuanMiKS5Ub2tlbmlzZXJ9IHRva2VuaXNlcgorICAgKiBAcGFyYW0ge29iamVjdH0gW29w
dGlvbnNdCisgICAqIEBwYXJhbSB7VG9rZW59IFtvcHRpb25zLnNwZWNpYWxdCisgICAqIEBwYXJh
bSB7VG9rZW59IFtvcHRpb25zLnJlZ3VsYXJdCisgICAqLworICBzdGF0aWMgcGFyc2UodG9rZW5p
c2VyLCB7IHNwZWNpYWwsIHJlZ3VsYXIgfSA9IHt9KSB7CisgICAgY29uc3QgdG9rZW5zID0geyBz
cGVjaWFsIH07CisgICAgY29uc3QgcmV0ID0gKDAsX2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JU
RURfTU9EVUxFXzFfXy5hdXRvUGFyZW50ZXIpKAorICAgICAgbmV3IE9wZXJhdGlvbih7IHNvdXJj
ZTogdG9rZW5pc2VyLnNvdXJjZSwgdG9rZW5zIH0pCisgICAgKTsKKyAgICBpZiAoc3BlY2lhbCAm
JiBzcGVjaWFsLnZhbHVlID09PSAic3RyaW5naWZpZXIiKSB7CisgICAgICB0b2tlbnMudGVybWlu
YXRpb24gPSB0b2tlbmlzZXIuY29uc3VtZSgiOyIpOworICAgICAgaWYgKHRva2Vucy50ZXJtaW5h
dGlvbikgeworICAgICAgICByZXQuYXJndW1lbnRzID0gW107CisgICAgICAgIHJldHVybiByZXQ7
CisgICAgICB9CisgICAgfQorICAgIGlmICghc3BlY2lhbCAmJiAhcmVndWxhcikgeworICAgICAg
dG9rZW5zLnNwZWNpYWwgPSB0b2tlbmlzZXIuY29uc3VtZSgiZ2V0dGVyIiwgInNldHRlciIsICJk
ZWxldGVyIik7CisgICAgfQorICAgIHJldC5pZGxUeXBlID0KKyAgICAgICgwLF9oZWxwZXJzX2pz
X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18ucmV0dXJuX3R5cGUpKHRva2VuaXNlcikgfHwg
dG9rZW5pc2VyLmVycm9yKCJNaXNzaW5nIHJldHVybiB0eXBlIik7CisgICAgdG9rZW5zLm5hbWUg
PQorICAgICAgdG9rZW5pc2VyLmNvbnN1bWVUeXBlKCJpZGVudGlmaWVyIikgfHwgdG9rZW5pc2Vy
LmNvbnN1bWUoImluY2x1ZGVzIik7CisgICAgdG9rZW5zLm9wZW4gPQorICAgICAgdG9rZW5pc2Vy
LmNvbnN1bWUoIigiKSB8fCB0b2tlbmlzZXIuZXJyb3IoIkludmFsaWQgb3BlcmF0aW9uIik7Cisg
ICAgcmV0LmFyZ3VtZW50cyA9ICgwLF9oZWxwZXJzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVM
RV8xX18uYXJndW1lbnRfbGlzdCkodG9rZW5pc2VyKTsKKyAgICB0b2tlbnMuY2xvc2UgPQorICAg
ICAgdG9rZW5pc2VyLmNvbnN1bWUoIikiKSB8fCB0b2tlbmlzZXIuZXJyb3IoIlVudGVybWluYXRl
ZCBvcGVyYXRpb24iKTsKKyAgICB0b2tlbnMudGVybWluYXRpb24gPQorICAgICAgdG9rZW5pc2Vy
LmNvbnN1bWUoIjsiKSB8fAorICAgICAgdG9rZW5pc2VyLmVycm9yKCJVbnRlcm1pbmF0ZWQgb3Bl
cmF0aW9uLCBleHBlY3RlZCBgO2AiKTsKKyAgICByZXR1cm4gcmV0LnRoaXM7CisgIH0KKworICBn
ZXQgdHlwZSgpIHsKKyAgICByZXR1cm4gIm9wZXJhdGlvbiI7CisgIH0KKyAgZ2V0IG5hbWUoKSB7
CisgICAgY29uc3QgeyBuYW1lIH0gPSB0aGlzLnRva2VuczsKKyAgICBpZiAoIW5hbWUpIHsKKyAg
ICAgIHJldHVybiAiIjsKKyAgICB9CisgICAgcmV0dXJuICgwLF9oZWxwZXJzX2pzX19XRUJQQUNL
X0lNUE9SVEVEX01PRFVMRV8xX18udW5lc2NhcGUpKG5hbWUudmFsdWUpOworICB9CisgIGdldCBz
cGVjaWFsKCkgeworICAgIGlmICghdGhpcy50b2tlbnMuc3BlY2lhbCkgeworICAgICAgcmV0dXJu
ICIiOworICAgIH0KKyAgICByZXR1cm4gdGhpcy50b2tlbnMuc3BlY2lhbC52YWx1ZTsKKyAgfQor
CisgICp2YWxpZGF0ZShkZWZzKSB7CisgICAgeWllbGQqIHRoaXMuZXh0QXR0cnMudmFsaWRhdGUo
ZGVmcyk7CisgICAgaWYgKCF0aGlzLm5hbWUgJiYgWyIiLCAic3RhdGljIl0uaW5jbHVkZXModGhp
cy5zcGVjaWFsKSkgeworICAgICAgY29uc3QgbWVzc2FnZSA9IGBSZWd1bGFyIG9yIHN0YXRpYyBv
cGVyYXRpb25zIG11c3QgaGF2ZSBib3RoIGEgcmV0dXJuIHR5cGUgYW5kIGFuIGlkZW50aWZpZXIu
YDsKKyAgICAgIHlpZWxkICgwLF9lcnJvcl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9f
LnZhbGlkYXRpb25FcnJvcikodGhpcy50b2tlbnMub3BlbiwgdGhpcywgImluY29tcGxldGUtb3Ai
LCBtZXNzYWdlKTsKKyAgICB9CisgICAgaWYgKHRoaXMuaWRsVHlwZSkgeworICAgICAgeWllbGQq
IHRoaXMuaWRsVHlwZS52YWxpZGF0ZShkZWZzKTsKKyAgICB9CisgICAgZm9yIChjb25zdCBhcmd1
bWVudCBvZiB0aGlzLmFyZ3VtZW50cykgeworICAgICAgeWllbGQqIGFyZ3VtZW50LnZhbGlkYXRl
KGRlZnMpOworICAgIH0KKyAgfQorCisgIC8qKiBAcGFyYW0ge2ltcG9ydCgiLi4vd3JpdGVyLmpz
IikuV3JpdGVyfSB3ICovCisgIHdyaXRlKHcpIHsKKyAgICBjb25zdCB7IHBhcmVudCB9ID0gdGhp
czsKKyAgICBjb25zdCBib2R5ID0gdGhpcy5pZGxUeXBlCisgICAgICA/IFsKKyAgICAgICAgICB3
LnRzLnR5cGUodGhpcy5pZGxUeXBlLndyaXRlKHcpKSwKKyAgICAgICAgICB3Lm5hbWVfdG9rZW4o
dGhpcy50b2tlbnMubmFtZSwgeyBkYXRhOiB0aGlzLCBwYXJlbnQgfSksCisgICAgICAgICAgdy50
b2tlbih0aGlzLnRva2Vucy5vcGVuKSwKKyAgICAgICAgICB3LnRzLndyYXAodGhpcy5hcmd1bWVu
dHMubWFwKChhcmcpID0+IGFyZy53cml0ZSh3KSkpLAorICAgICAgICAgIHcudG9rZW4odGhpcy50
b2tlbnMuY2xvc2UpLAorICAgICAgICBdCisgICAgICA6IFtdOworICAgIHJldHVybiB3LnRzLmRl
ZmluaXRpb24oCisgICAgICB3LnRzLndyYXAoWworICAgICAgICB0aGlzLmV4dEF0dHJzLndyaXRl
KHcpLAorICAgICAgICB0aGlzLnRva2Vucy5uYW1lCisgICAgICAgICAgPyB3LnRva2VuKHRoaXMu
dG9rZW5zLnNwZWNpYWwpCisgICAgICAgICAgOiB3LnRva2VuKHRoaXMudG9rZW5zLnNwZWNpYWws
IHcudHMubmFtZWxlc3MsIHsgZGF0YTogdGhpcywgcGFyZW50IH0pLAorICAgICAgICAuLi5ib2R5
LAorICAgICAgICB3LnRva2VuKHRoaXMudG9rZW5zLnRlcm1pbmF0aW9uKSwKKyAgICAgIF0pLAor
ICAgICAgeyBkYXRhOiB0aGlzLCBwYXJlbnQgfQorICAgICk7CisgIH0KK30KKworCisvKioqLyB9
KSwKKy8qIDE0ICovCisvKioqLyAoKF9fdW51c2VkX3dlYnBhY2tfX193ZWJwYWNrX21vZHVsZV9f
LCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSA9PiB7CisKK19fd2Vi
cGFja19yZXF1aXJlX18ucihfX3dlYnBhY2tfZXhwb3J0c19fKTsKKy8qIGhhcm1vbnkgZXhwb3J0
ICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCB7CisvKiBoYXJt
b255IGV4cG9ydCAqLyAgICJBdHRyaWJ1dGUiOiAoKSA9PiAoLyogYmluZGluZyAqLyBBdHRyaWJ1
dGUpCisvKiBoYXJtb255IGV4cG9ydCAqLyB9KTsKKy8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBf
ZXJyb3JfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyA9IF9fd2VicGFja19yZXF1aXJl
X18oMyk7CisvKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX3ZhbGlkYXRvcnNfaGVscGVyc19qc19f
V0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3KTsKKy8q
IGhhcm1vbnkgaW1wb3J0ICovIHZhciBfYmFzZV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVf
Ml9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2KTsKKy8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBf
aGVscGVyc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fID0gX193ZWJwYWNrX3JlcXVp
cmVfXyg0KTsKKy8vIEB0cy1jaGVjaworCisKKworCisKKworY2xhc3MgQXR0cmlidXRlIGV4dGVu
ZHMgX2Jhc2VfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXy5CYXNlIHsKKyAgLyoqCisg
ICAqIEBwYXJhbSB7aW1wb3J0KCIuLi90b2tlbmlzZXIuanMiKS5Ub2tlbmlzZXJ9IHRva2VuaXNl
cgorICAgKiBAcGFyYW0ge29iamVjdH0gW29wdGlvbnNdCisgICAqIEBwYXJhbSB7aW1wb3J0KCIu
Li90b2tlbmlzZXIuanMiKS5Ub2tlbn0gW29wdGlvbnMuc3BlY2lhbF0KKyAgICogQHBhcmFtIHti
b29sZWFufSBbb3B0aW9ucy5ub0luaGVyaXRdCisgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlv
bnMucmVhZG9ubHldCisgICAqLworICBzdGF0aWMgcGFyc2UoCisgICAgdG9rZW5pc2VyLAorICAg
IHsgc3BlY2lhbCwgbm9Jbmhlcml0ID0gZmFsc2UsIHJlYWRvbmx5ID0gZmFsc2UgfSA9IHt9Cisg
ICkgeworICAgIGNvbnN0IHN0YXJ0X3Bvc2l0aW9uID0gdG9rZW5pc2VyLnBvc2l0aW9uOworICAg
IGNvbnN0IHRva2VucyA9IHsgc3BlY2lhbCB9OworICAgIGNvbnN0IHJldCA9ICgwLF9oZWxwZXJz
X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX18uYXV0b1BhcmVudGVyKSgKKyAgICAgIG5l
dyBBdHRyaWJ1dGUoeyBzb3VyY2U6IHRva2VuaXNlci5zb3VyY2UsIHRva2VucyB9KQorICAgICk7
CisgICAgaWYgKCFzcGVjaWFsICYmICFub0luaGVyaXQpIHsKKyAgICAgIHRva2Vucy5zcGVjaWFs
ID0gdG9rZW5pc2VyLmNvbnN1bWUoImluaGVyaXQiKTsKKyAgICB9CisgICAgaWYgKHJldC5zcGVj
aWFsID09PSAiaW5oZXJpdCIgJiYgdG9rZW5pc2VyLnByb2JlKCJyZWFkb25seSIpKSB7CisgICAg
ICB0b2tlbmlzZXIuZXJyb3IoIkluaGVyaXRlZCBhdHRyaWJ1dGVzIGNhbm5vdCBiZSByZWFkLW9u
bHkiKTsKKyAgICB9CisgICAgdG9rZW5zLnJlYWRvbmx5ID0gdG9rZW5pc2VyLmNvbnN1bWUoInJl
YWRvbmx5Iik7CisgICAgaWYgKHJlYWRvbmx5ICYmICF0b2tlbnMucmVhZG9ubHkgJiYgdG9rZW5p
c2VyLnByb2JlKCJhdHRyaWJ1dGUiKSkgeworICAgICAgdG9rZW5pc2VyLmVycm9yKCJBdHRyaWJ1
dGVzIG11c3QgYmUgcmVhZG9ubHkgaW4gdGhpcyBjb250ZXh0Iik7CisgICAgfQorICAgIHRva2Vu
cy5iYXNlID0gdG9rZW5pc2VyLmNvbnN1bWUoImF0dHJpYnV0ZSIpOworICAgIGlmICghdG9rZW5z
LmJhc2UpIHsKKyAgICAgIHRva2VuaXNlci51bmNvbnN1bWUoc3RhcnRfcG9zaXRpb24pOworICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICByZXQuaWRsVHlwZSA9CisgICAgICAoMCxfaGVscGVyc19q
c19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fLnR5cGVfd2l0aF9leHRlbmRlZF9hdHRyaWJ1
dGVzKSh0b2tlbmlzZXIsICJhdHRyaWJ1dGUtdHlwZSIpIHx8CisgICAgICB0b2tlbmlzZXIuZXJy
b3IoIkF0dHJpYnV0ZSBsYWNrcyBhIHR5cGUiKTsKKyAgICB0b2tlbnMubmFtZSA9CisgICAgICB0
b2tlbmlzZXIuY29uc3VtZVR5cGUoImlkZW50aWZpZXIiKSB8fAorICAgICAgdG9rZW5pc2VyLmNv
bnN1bWUoImFzeW5jIiwgInJlcXVpcmVkIikgfHwKKyAgICAgIHRva2VuaXNlci5lcnJvcigiQXR0
cmlidXRlIGxhY2tzIGEgbmFtZSIpOworICAgIHRva2Vucy50ZXJtaW5hdGlvbiA9CisgICAgICB0
b2tlbmlzZXIuY29uc3VtZSgiOyIpIHx8CisgICAgICB0b2tlbmlzZXIuZXJyb3IoIlVudGVybWlu
YXRlZCBhdHRyaWJ1dGUsIGV4cGVjdGVkIGA7YCIpOworICAgIHJldHVybiByZXQudGhpczsKKyAg
fQorCisgIGdldCB0eXBlKCkgeworICAgIHJldHVybiAiYXR0cmlidXRlIjsKKyAgfQorICBnZXQg
c3BlY2lhbCgpIHsKKyAgICBpZiAoIXRoaXMudG9rZW5zLnNwZWNpYWwpIHsKKyAgICAgIHJldHVy
biAiIjsKKyAgICB9CisgICAgcmV0dXJuIHRoaXMudG9rZW5zLnNwZWNpYWwudmFsdWU7CisgIH0K
KyAgZ2V0IHJlYWRvbmx5KCkgeworICAgIHJldHVybiAhIXRoaXMudG9rZW5zLnJlYWRvbmx5Owor
ICB9CisgIGdldCBuYW1lKCkgeworICAgIHJldHVybiAoMCxfaGVscGVyc19qc19fV0VCUEFDS19J
TVBPUlRFRF9NT0RVTEVfM19fLnVuZXNjYXBlKSh0aGlzLnRva2Vucy5uYW1lLnZhbHVlKTsKKyAg
fQorCisgICp2YWxpZGF0ZShkZWZzKSB7CisgICAgeWllbGQqIHRoaXMuZXh0QXR0cnMudmFsaWRh
dGUoZGVmcyk7CisgICAgeWllbGQqIHRoaXMuaWRsVHlwZS52YWxpZGF0ZShkZWZzKTsKKworICAg
IHN3aXRjaCAodGhpcy5pZGxUeXBlLmdlbmVyaWMpIHsKKyAgICAgIGNhc2UgInNlcXVlbmNlIjoK
KyAgICAgIGNhc2UgInJlY29yZCI6IHsKKyAgICAgICAgY29uc3QgbWVzc2FnZSA9IGBBdHRyaWJ1
dGVzIGNhbm5vdCBhY2NlcHQgJHt0aGlzLmlkbFR5cGUuZ2VuZXJpY30gdHlwZXMuYDsKKyAgICAg
ICAgeWllbGQgKDAsX2Vycm9yX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18udmFsaWRh
dGlvbkVycm9yKSgKKyAgICAgICAgICB0aGlzLnRva2Vucy5uYW1lLAorICAgICAgICAgIHRoaXMs
CisgICAgICAgICAgImF0dHItaW52YWxpZC10eXBlIiwKKyAgICAgICAgICBtZXNzYWdlCisgICAg
ICAgICk7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAgZGVmYXVsdDogeworICAgICAg
ICBjb25zdCB7IHJlZmVyZW5jZSB9ID0KKyAgICAgICAgICAoMCxfdmFsaWRhdG9yc19oZWxwZXJz
X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18uaWRsVHlwZUluY2x1ZGVzRGljdGlvbmFy
eSkodGhpcy5pZGxUeXBlLCBkZWZzKSB8fCB7fTsKKyAgICAgICAgaWYgKHJlZmVyZW5jZSkgewor
ICAgICAgICAgIGNvbnN0IHRhcmdldFRva2VuID0gKHRoaXMuaWRsVHlwZS51bmlvbiA/IHJlZmVy
ZW5jZSA6IHRoaXMuaWRsVHlwZSkKKyAgICAgICAgICAgIC50b2tlbnMuYmFzZTsKKyAgICAgICAg
ICBjb25zdCBtZXNzYWdlID0gIkF0dHJpYnV0ZXMgY2Fubm90IGFjY2VwdCBkaWN0aW9uYXJ5IHR5
cGVzLiI7CisgICAgICAgICAgeWllbGQgKDAsX2Vycm9yX2pzX19XRUJQQUNLX0lNUE9SVEVEX01P
RFVMRV8wX18udmFsaWRhdGlvbkVycm9yKSgKKyAgICAgICAgICAgIHRhcmdldFRva2VuLAorICAg
ICAgICAgICAgdGhpcywKKyAgICAgICAgICAgICJhdHRyLWludmFsaWQtdHlwZSIsCisgICAgICAg
ICAgICBtZXNzYWdlCisgICAgICAgICAgKTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAg
fQorCisgIC8qKiBAcGFyYW0ge2ltcG9ydCgiLi4vd3JpdGVyLmpzIikuV3JpdGVyfSB3ICovCisg
IHdyaXRlKHcpIHsKKyAgICBjb25zdCB7IHBhcmVudCB9ID0gdGhpczsKKyAgICByZXR1cm4gdy50
cy5kZWZpbml0aW9uKAorICAgICAgdy50cy53cmFwKFsKKyAgICAgICAgdGhpcy5leHRBdHRycy53
cml0ZSh3KSwKKyAgICAgICAgdy50b2tlbih0aGlzLnRva2Vucy5zcGVjaWFsKSwKKyAgICAgICAg
dy50b2tlbih0aGlzLnRva2Vucy5yZWFkb25seSksCisgICAgICAgIHcudG9rZW4odGhpcy50b2tl
bnMuYmFzZSksCisgICAgICAgIHcudHMudHlwZSh0aGlzLmlkbFR5cGUud3JpdGUodykpLAorICAg
ICAgICB3Lm5hbWVfdG9rZW4odGhpcy50b2tlbnMubmFtZSwgeyBkYXRhOiB0aGlzLCBwYXJlbnQg
fSksCisgICAgICAgIHcudG9rZW4odGhpcy50b2tlbnMudGVybWluYXRpb24pLAorICAgICAgXSks
CisgICAgICB7IGRhdGE6IHRoaXMsIHBhcmVudCB9CisgICAgKTsKKyAgfQorfQorCisKKy8qKiov
IH0pLAorLyogMTUgKi8KKy8qKiovICgoX191bnVzZWRfd2VicGFja19fX3dlYnBhY2tfbW9kdWxl
X18sIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pID0+IHsKKworX193
ZWJwYWNrX3JlcXVpcmVfXy5yKF9fd2VicGFja19leHBvcnRzX18pOworLyogaGFybW9ueSBleHBv
cnQgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIHsKKy8qIGhh
cm1vbnkgZXhwb3J0ICovICAgIkVudW0iOiAoKSA9PiAoLyogYmluZGluZyAqLyBFbnVtKQorLyog
aGFybW9ueSBleHBvcnQgKi8gfSk7CisvKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2hlbHBlcnNf
anNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7
CisvKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX3Rva2VuX2pzX19XRUJQQUNLX0lNUE9SVEVEX01P
RFVMRV8xX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwKTsKKy8qIGhhcm1vbnkgaW1wb3J0ICov
IHZhciBfYmFzZV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fID0gX193ZWJwYWNrX3Jl
cXVpcmVfXyg2KTsKKworCisKKworY2xhc3MgRW51bVZhbHVlIGV4dGVuZHMgX3Rva2VuX2pzX19X
RUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18uV3JhcHBlZFRva2VuIHsKKyAgLyoqCisgICAqIEBw
YXJhbSB7aW1wb3J0KCIuLi90b2tlbmlzZXIiKS5Ub2tlbmlzZXJ9IHRva2VuaXNlcgorICAgKi8K
KyAgc3RhdGljIHBhcnNlKHRva2VuaXNlcikgeworICAgIGNvbnN0IHZhbHVlID0gdG9rZW5pc2Vy
LmNvbnN1bWVUeXBlKCJzdHJpbmciKTsKKyAgICBpZiAodmFsdWUpIHsKKyAgICAgIHJldHVybiBu
ZXcgRW51bVZhbHVlKHsgc291cmNlOiB0b2tlbmlzZXIuc291cmNlLCB0b2tlbnM6IHsgdmFsdWUg
fSB9KTsKKyAgICB9CisgIH0KKworICBnZXQgdHlwZSgpIHsKKyAgICByZXR1cm4gImVudW0tdmFs
dWUiOworICB9CisgIGdldCB2YWx1ZSgpIHsKKyAgICByZXR1cm4gc3VwZXIudmFsdWUuc2xpY2Uo
MSwgLTEpOworICB9CisKKyAgLyoqIEBwYXJhbSB7aW1wb3J0KCIuLi93cml0ZXIuanMiKS5Xcml0
ZXJ9IHcgKi8KKyAgd3JpdGUodykgeworICAgIGNvbnN0IHsgcGFyZW50IH0gPSB0aGlzOworICAg
IHJldHVybiB3LnRzLndyYXAoWworICAgICAgdy50cy50cml2aWEodGhpcy50b2tlbnMudmFsdWUu
dHJpdmlhKSwKKyAgICAgIHcudHMuZGVmaW5pdGlvbigKKyAgICAgICAgdy50cy53cmFwKFsnIics
IHcudHMubmFtZSh0aGlzLnZhbHVlLCB7IGRhdGE6IHRoaXMsIHBhcmVudCB9KSwgJyInXSksCisg
ICAgICAgIHsgZGF0YTogdGhpcywgcGFyZW50IH0KKyAgICAgICksCisgICAgICB3LnRva2VuKHRo
aXMudG9rZW5zLnNlcGFyYXRvciksCisgICAgXSk7CisgIH0KK30KKworY2xhc3MgRW51bSBleHRl
bmRzIF9iYXNlX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18uQmFzZSB7CisgIC8qKgor
ICAgKiBAcGFyYW0ge2ltcG9ydCgiLi4vdG9rZW5pc2VyIikuVG9rZW5pc2VyfSB0b2tlbmlzZXIK
KyAgICovCisgIHN0YXRpYyBwYXJzZSh0b2tlbmlzZXIpIHsKKyAgICAvKiogQHR5cGUge0Jhc2Vb
InRva2VucyJdfSAqLworICAgIGNvbnN0IHRva2VucyA9IHt9OworICAgIHRva2Vucy5iYXNlID0g
dG9rZW5pc2VyLmNvbnN1bWUoImVudW0iKTsKKyAgICBpZiAoIXRva2Vucy5iYXNlKSB7CisgICAg
ICByZXR1cm47CisgICAgfQorICAgIHRva2Vucy5uYW1lID0KKyAgICAgIHRva2VuaXNlci5jb25z
dW1lVHlwZSgiaWRlbnRpZmllciIpIHx8CisgICAgICB0b2tlbmlzZXIuZXJyb3IoIk5vIG5hbWUg
Zm9yIGVudW0iKTsKKyAgICBjb25zdCByZXQgPSAoMCxfaGVscGVyc19qc19fV0VCUEFDS19JTVBP
UlRFRF9NT0RVTEVfMF9fLmF1dG9QYXJlbnRlcikobmV3IEVudW0oeyBzb3VyY2U6IHRva2VuaXNl
ci5zb3VyY2UsIHRva2VucyB9KSk7CisgICAgdG9rZW5pc2VyLmN1cnJlbnQgPSByZXQudGhpczsK
KyAgICB0b2tlbnMub3BlbiA9IHRva2VuaXNlci5jb25zdW1lKCJ7IikgfHwgdG9rZW5pc2VyLmVy
cm9yKCJCb2R5bGVzcyBlbnVtIik7CisgICAgcmV0LnZhbHVlcyA9ICgwLF9oZWxwZXJzX2pzX19X
RUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18ubGlzdCkodG9rZW5pc2VyLCB7CisgICAgICBwYXJz
ZXI6IEVudW1WYWx1ZS5wYXJzZSwKKyAgICAgIGFsbG93RGFuZ2xlcjogdHJ1ZSwKKyAgICAgIGxp
c3ROYW1lOiAiZW51bWVyYXRpb24iLAorICAgIH0pOworICAgIGlmICh0b2tlbmlzZXIucHJvYmVU
eXBlKCJzdHJpbmciKSkgeworICAgICAgdG9rZW5pc2VyLmVycm9yKCJObyBjb21tYSBiZXR3ZWVu
IGVudW0gdmFsdWVzIik7CisgICAgfQorICAgIHRva2Vucy5jbG9zZSA9CisgICAgICB0b2tlbmlz
ZXIuY29uc3VtZSgifSIpIHx8IHRva2VuaXNlci5lcnJvcigiVW5leHBlY3RlZCB2YWx1ZSBpbiBl
bnVtIik7CisgICAgaWYgKCFyZXQudmFsdWVzLmxlbmd0aCkgeworICAgICAgdG9rZW5pc2VyLmVy
cm9yKCJObyB2YWx1ZSBpbiBlbnVtIik7CisgICAgfQorICAgIHRva2Vucy50ZXJtaW5hdGlvbiA9
CisgICAgICB0b2tlbmlzZXIuY29uc3VtZSgiOyIpIHx8IHRva2VuaXNlci5lcnJvcigiTm8gc2Vt
aWNvbG9uIGFmdGVyIGVudW0iKTsKKyAgICByZXR1cm4gcmV0LnRoaXM7CisgIH0KKworICBnZXQg
dHlwZSgpIHsKKyAgICByZXR1cm4gImVudW0iOworICB9CisgIGdldCBuYW1lKCkgeworICAgIHJl
dHVybiAoMCxfaGVscGVyc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fLnVuZXNjYXBl
KSh0aGlzLnRva2Vucy5uYW1lLnZhbHVlKTsKKyAgfQorCisgIC8qKiBAcGFyYW0ge2ltcG9ydCgi
Li4vd3JpdGVyLmpzIikuV3JpdGVyfSB3ICovCisgIHdyaXRlKHcpIHsKKyAgICByZXR1cm4gdy50
cy5kZWZpbml0aW9uKAorICAgICAgdy50cy53cmFwKFsKKyAgICAgICAgdGhpcy5leHRBdHRycy53
cml0ZSh3KSwKKyAgICAgICAgdy50b2tlbih0aGlzLnRva2Vucy5iYXNlKSwKKyAgICAgICAgdy5u
YW1lX3Rva2VuKHRoaXMudG9rZW5zLm5hbWUsIHsgZGF0YTogdGhpcyB9KSwKKyAgICAgICAgdy50
b2tlbih0aGlzLnRva2Vucy5vcGVuKSwKKyAgICAgICAgdy50cy53cmFwKHRoaXMudmFsdWVzLm1h
cCgodikgPT4gdi53cml0ZSh3KSkpLAorICAgICAgICB3LnRva2VuKHRoaXMudG9rZW5zLmNsb3Nl
KSwKKyAgICAgICAgdy50b2tlbih0aGlzLnRva2Vucy50ZXJtaW5hdGlvbiksCisgICAgICBdKSwK
KyAgICAgIHsgZGF0YTogdGhpcyB9CisgICAgKTsKKyAgfQorfQorCisKKy8qKiovIH0pLAorLyog
MTYgKi8KKy8qKiovICgoX191bnVzZWRfd2VicGFja19fX3dlYnBhY2tfbW9kdWxlX18sIF9fd2Vi
cGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pID0+IHsKKworX193ZWJwYWNrX3Jl
cXVpcmVfXy5yKF9fd2VicGFja19leHBvcnRzX18pOworLyogaGFybW9ueSBleHBvcnQgKi8gX193
ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIHsKKy8qIGhhcm1vbnkgZXhw
b3J0ICovICAgIkluY2x1ZGVzIjogKCkgPT4gKC8qIGJpbmRpbmcgKi8gSW5jbHVkZXMpCisvKiBo
YXJtb255IGV4cG9ydCAqLyB9KTsKKy8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfYmFzZV9qc19f
V0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2KTsKKy8q
IGhhcm1vbnkgaW1wb3J0ICovIHZhciBfaGVscGVyc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RV
TEVfMV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTsKKy8vIEB0cy1jaGVjaworCisKKworCitj
bGFzcyBJbmNsdWRlcyBleHRlbmRzIF9iYXNlX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8w
X18uQmFzZSB7CisgIC8qKgorICAgKiBAcGFyYW0ge2ltcG9ydCgiLi4vdG9rZW5pc2VyIikuVG9r
ZW5pc2VyfSB0b2tlbmlzZXIKKyAgICovCisgIHN0YXRpYyBwYXJzZSh0b2tlbmlzZXIpIHsKKyAg
ICBjb25zdCB0YXJnZXQgPSB0b2tlbmlzZXIuY29uc3VtZVR5cGUoImlkZW50aWZpZXIiKTsKKyAg
ICBpZiAoIXRhcmdldCkgeworICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjb25zdCB0b2tlbnMg
PSB7IHRhcmdldCB9OworICAgIHRva2Vucy5pbmNsdWRlcyA9IHRva2VuaXNlci5jb25zdW1lKCJp
bmNsdWRlcyIpOworICAgIGlmICghdG9rZW5zLmluY2x1ZGVzKSB7CisgICAgICB0b2tlbmlzZXIu
dW5jb25zdW1lKHRhcmdldC5pbmRleCk7CisgICAgICByZXR1cm47CisgICAgfQorICAgIHRva2Vu
cy5taXhpbiA9CisgICAgICB0b2tlbmlzZXIuY29uc3VtZVR5cGUoImlkZW50aWZpZXIiKSB8fAor
ICAgICAgdG9rZW5pc2VyLmVycm9yKCJJbmNvbXBsZXRlIGluY2x1ZGVzIHN0YXRlbWVudCIpOwor
ICAgIHRva2Vucy50ZXJtaW5hdGlvbiA9CisgICAgICB0b2tlbmlzZXIuY29uc3VtZSgiOyIpIHx8
CisgICAgICB0b2tlbmlzZXIuZXJyb3IoIk5vIHRlcm1pbmF0aW5nIDsgZm9yIGluY2x1ZGVzIHN0
YXRlbWVudCIpOworICAgIHJldHVybiBuZXcgSW5jbHVkZXMoeyBzb3VyY2U6IHRva2VuaXNlci5z
b3VyY2UsIHRva2VucyB9KTsKKyAgfQorCisgIGdldCB0eXBlKCkgeworICAgIHJldHVybiAiaW5j
bHVkZXMiOworICB9CisgIGdldCB0YXJnZXQoKSB7CisgICAgcmV0dXJuICgwLF9oZWxwZXJzX2pz
X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18udW5lc2NhcGUpKHRoaXMudG9rZW5zLnRhcmdl
dC52YWx1ZSk7CisgIH0KKyAgZ2V0IGluY2x1ZGVzKCkgeworICAgIHJldHVybiAoMCxfaGVscGVy
c19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fLnVuZXNjYXBlKSh0aGlzLnRva2Vucy5t
aXhpbi52YWx1ZSk7CisgIH0KKworICAvKiogQHBhcmFtIHtpbXBvcnQoIi4uL3dyaXRlci5qcyIp
LldyaXRlcn0gdyAqLworICB3cml0ZSh3KSB7CisgICAgcmV0dXJuIHcudHMuZGVmaW5pdGlvbigK
KyAgICAgIHcudHMud3JhcChbCisgICAgICAgIHRoaXMuZXh0QXR0cnMud3JpdGUodyksCisgICAg
ICAgIHcucmVmZXJlbmNlX3Rva2VuKHRoaXMudG9rZW5zLnRhcmdldCwgdGhpcyksCisgICAgICAg
IHcudG9rZW4odGhpcy50b2tlbnMuaW5jbHVkZXMpLAorICAgICAgICB3LnJlZmVyZW5jZV90b2tl
bih0aGlzLnRva2Vucy5taXhpbiwgdGhpcyksCisgICAgICAgIHcudG9rZW4odGhpcy50b2tlbnMu
dGVybWluYXRpb24pLAorICAgICAgXSksCisgICAgICB7IGRhdGE6IHRoaXMgfQorICAgICk7Cisg
IH0KK30KKworCisvKioqLyB9KSwKKy8qIDE3ICovCisvKioqLyAoKF9fdW51c2VkX3dlYnBhY2tf
X193ZWJwYWNrX21vZHVsZV9fLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWly
ZV9fKSA9PiB7CisKK19fd2VicGFja19yZXF1aXJlX18ucihfX3dlYnBhY2tfZXhwb3J0c19fKTsK
Ky8qIGhhcm1vbnkgZXhwb3J0ICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhw
b3J0c19fLCB7CisvKiBoYXJtb255IGV4cG9ydCAqLyAgICJUeXBlZGVmIjogKCkgPT4gKC8qIGJp
bmRpbmcgKi8gVHlwZWRlZikKKy8qIGhhcm1vbnkgZXhwb3J0ICovIH0pOworLyogaGFybW9ueSBp
bXBvcnQgKi8gdmFyIF9iYXNlX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18gPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDYpOworLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9oZWxwZXJzX2pz
X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpOwor
CisKKworY2xhc3MgVHlwZWRlZiBleHRlbmRzIF9iYXNlX2pzX19XRUJQQUNLX0lNUE9SVEVEX01P
RFVMRV8wX18uQmFzZSB7CisgIC8qKgorICAgKiBAcGFyYW0ge2ltcG9ydCgiLi4vdG9rZW5pc2Vy
IikuVG9rZW5pc2VyfSB0b2tlbmlzZXIKKyAgICovCisgIHN0YXRpYyBwYXJzZSh0b2tlbmlzZXIp
IHsKKyAgICAvKiogQHR5cGUge0Jhc2VbInRva2VucyJdfSAqLworICAgIGNvbnN0IHRva2VucyA9
IHt9OworICAgIGNvbnN0IHJldCA9ICgwLF9oZWxwZXJzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01P
RFVMRV8xX18uYXV0b1BhcmVudGVyKShuZXcgVHlwZWRlZih7IHNvdXJjZTogdG9rZW5pc2VyLnNv
dXJjZSwgdG9rZW5zIH0pKTsKKyAgICB0b2tlbnMuYmFzZSA9IHRva2VuaXNlci5jb25zdW1lKCJ0
eXBlZGVmIik7CisgICAgaWYgKCF0b2tlbnMuYmFzZSkgeworICAgICAgcmV0dXJuOworICAgIH0K
KyAgICByZXQuaWRsVHlwZSA9CisgICAgICAoMCxfaGVscGVyc19qc19fV0VCUEFDS19JTVBPUlRF
RF9NT0RVTEVfMV9fLnR5cGVfd2l0aF9leHRlbmRlZF9hdHRyaWJ1dGVzKSh0b2tlbmlzZXIsICJ0
eXBlZGVmLXR5cGUiKSB8fAorICAgICAgdG9rZW5pc2VyLmVycm9yKCJUeXBlZGVmIGxhY2tzIGEg
dHlwZSIpOworICAgIHRva2Vucy5uYW1lID0KKyAgICAgIHRva2VuaXNlci5jb25zdW1lVHlwZSgi
aWRlbnRpZmllciIpIHx8CisgICAgICB0b2tlbmlzZXIuZXJyb3IoIlR5cGVkZWYgbGFja3MgYSBu
YW1lIik7CisgICAgdG9rZW5pc2VyLmN1cnJlbnQgPSByZXQudGhpczsKKyAgICB0b2tlbnMudGVy
bWluYXRpb24gPQorICAgICAgdG9rZW5pc2VyLmNvbnN1bWUoIjsiKSB8fAorICAgICAgdG9rZW5p
c2VyLmVycm9yKCJVbnRlcm1pbmF0ZWQgdHlwZWRlZiwgZXhwZWN0ZWQgYDtgIik7CisgICAgcmV0
dXJuIHJldC50aGlzOworICB9CisKKyAgZ2V0IHR5cGUoKSB7CisgICAgcmV0dXJuICJ0eXBlZGVm
IjsKKyAgfQorICBnZXQgbmFtZSgpIHsKKyAgICByZXR1cm4gKDAsX2hlbHBlcnNfanNfX1dFQlBB
Q0tfSU1QT1JURURfTU9EVUxFXzFfXy51bmVzY2FwZSkodGhpcy50b2tlbnMubmFtZS52YWx1ZSk7
CisgIH0KKworICAqdmFsaWRhdGUoZGVmcykgeworICAgIHlpZWxkKiB0aGlzLmlkbFR5cGUudmFs
aWRhdGUoZGVmcyk7CisgIH0KKworICAvKiogQHBhcmFtIHtpbXBvcnQoIi4uL3dyaXRlci5qcyIp
LldyaXRlcn0gdyAqLworICB3cml0ZSh3KSB7CisgICAgcmV0dXJuIHcudHMuZGVmaW5pdGlvbigK
KyAgICAgIHcudHMud3JhcChbCisgICAgICAgIHRoaXMuZXh0QXR0cnMud3JpdGUodyksCisgICAg
ICAgIHcudG9rZW4odGhpcy50b2tlbnMuYmFzZSksCisgICAgICAgIHcudHMudHlwZSh0aGlzLmlk
bFR5cGUud3JpdGUodykpLAorICAgICAgICB3Lm5hbWVfdG9rZW4odGhpcy50b2tlbnMubmFtZSwg
eyBkYXRhOiB0aGlzIH0pLAorICAgICAgICB3LnRva2VuKHRoaXMudG9rZW5zLnRlcm1pbmF0aW9u
KSwKKyAgICAgIF0pLAorICAgICAgeyBkYXRhOiB0aGlzIH0KKyAgICApOworICB9Cit9CisKKwor
LyoqKi8gfSksCisvKiAxOCAqLworLyoqKi8gKChfX3VudXNlZF93ZWJwYWNrX19fd2VicGFja19t
b2R1bGVfXywgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykgPT4gewor
CitfX3dlYnBhY2tfcmVxdWlyZV9fLnIoX193ZWJwYWNrX2V4cG9ydHNfXyk7CisvKiBoYXJtb255
IGV4cG9ydCAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgewor
LyogaGFybW9ueSBleHBvcnQgKi8gICAiQ2FsbGJhY2tGdW5jdGlvbiI6ICgpID0+ICgvKiBiaW5k
aW5nICovIENhbGxiYWNrRnVuY3Rpb24pCisvKiBoYXJtb255IGV4cG9ydCAqLyB9KTsKKy8qIGhh
cm1vbnkgaW1wb3J0ICovIHZhciBfYmFzZV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9f
ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2KTsKKy8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfaGVs
cGVyc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fID0gX193ZWJwYWNrX3JlcXVpcmVf
Xyg0KTsKKworCisKK2NsYXNzIENhbGxiYWNrRnVuY3Rpb24gZXh0ZW5kcyBfYmFzZV9qc19fV0VC
UEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fLkJhc2UgeworICAvKioKKyAgICogQHBhcmFtIHtpbXBv
cnQoIi4uL3Rva2VuaXNlci5qcyIpLlRva2VuaXNlcn0gdG9rZW5pc2VyCisgICAqLworICBzdGF0
aWMgcGFyc2UodG9rZW5pc2VyLCBiYXNlKSB7CisgICAgY29uc3QgdG9rZW5zID0geyBiYXNlIH07
CisgICAgY29uc3QgcmV0ID0gKDAsX2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxF
XzFfXy5hdXRvUGFyZW50ZXIpKAorICAgICAgbmV3IENhbGxiYWNrRnVuY3Rpb24oeyBzb3VyY2U6
IHRva2VuaXNlci5zb3VyY2UsIHRva2VucyB9KQorICAgICk7CisgICAgdG9rZW5zLm5hbWUgPQor
ICAgICAgdG9rZW5pc2VyLmNvbnN1bWVUeXBlKCJpZGVudGlmaWVyIikgfHwKKyAgICAgIHRva2Vu
aXNlci5lcnJvcigiQ2FsbGJhY2sgbGFja3MgYSBuYW1lIik7CisgICAgdG9rZW5pc2VyLmN1cnJl
bnQgPSByZXQudGhpczsKKyAgICB0b2tlbnMuYXNzaWduID0KKyAgICAgIHRva2VuaXNlci5jb25z
dW1lKCI9IikgfHwgdG9rZW5pc2VyLmVycm9yKCJDYWxsYmFjayBsYWNrcyBhbiBhc3NpZ25tZW50
Iik7CisgICAgcmV0LmlkbFR5cGUgPQorICAgICAgKDAsX2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1Q
T1JURURfTU9EVUxFXzFfXy5yZXR1cm5fdHlwZSkodG9rZW5pc2VyKSB8fCB0b2tlbmlzZXIuZXJy
b3IoIkNhbGxiYWNrIGxhY2tzIGEgcmV0dXJuIHR5cGUiKTsKKyAgICB0b2tlbnMub3BlbiA9Cisg
ICAgICB0b2tlbmlzZXIuY29uc3VtZSgiKCIpIHx8CisgICAgICB0b2tlbmlzZXIuZXJyb3IoIkNh
bGxiYWNrIGxhY2tzIHBhcmVudGhlc2VzIGZvciBhcmd1bWVudHMiKTsKKyAgICByZXQuYXJndW1l
bnRzID0gKDAsX2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXy5hcmd1bWVu
dF9saXN0KSh0b2tlbmlzZXIpOworICAgIHRva2Vucy5jbG9zZSA9CisgICAgICB0b2tlbmlzZXIu
Y29uc3VtZSgiKSIpIHx8IHRva2VuaXNlci5lcnJvcigiVW50ZXJtaW5hdGVkIGNhbGxiYWNrIik7
CisgICAgdG9rZW5zLnRlcm1pbmF0aW9uID0KKyAgICAgIHRva2VuaXNlci5jb25zdW1lKCI7Iikg
fHwKKyAgICAgIHRva2VuaXNlci5lcnJvcigiVW50ZXJtaW5hdGVkIGNhbGxiYWNrLCBleHBlY3Rl
ZCBgO2AiKTsKKyAgICByZXR1cm4gcmV0LnRoaXM7CisgIH0KKworICBnZXQgdHlwZSgpIHsKKyAg
ICByZXR1cm4gImNhbGxiYWNrIjsKKyAgfQorICBnZXQgbmFtZSgpIHsKKyAgICByZXR1cm4gKDAs
X2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXy51bmVzY2FwZSkodGhpcy50
b2tlbnMubmFtZS52YWx1ZSk7CisgIH0KKworICAqdmFsaWRhdGUoZGVmcykgeworICAgIHlpZWxk
KiB0aGlzLmV4dEF0dHJzLnZhbGlkYXRlKGRlZnMpOworICAgIHlpZWxkKiB0aGlzLmlkbFR5cGUu
dmFsaWRhdGUoZGVmcyk7CisgIH0KKworICAvKiogQHBhcmFtIHtpbXBvcnQoIi4uL3dyaXRlci5q
cyIpLldyaXRlcn0gdyAqLworICB3cml0ZSh3KSB7CisgICAgcmV0dXJuIHcudHMuZGVmaW5pdGlv
bigKKyAgICAgIHcudHMud3JhcChbCisgICAgICAgIHRoaXMuZXh0QXR0cnMud3JpdGUodyksCisg
ICAgICAgIHcudG9rZW4odGhpcy50b2tlbnMuYmFzZSksCisgICAgICAgIHcubmFtZV90b2tlbih0
aGlzLnRva2Vucy5uYW1lLCB7IGRhdGE6IHRoaXMgfSksCisgICAgICAgIHcudG9rZW4odGhpcy50
b2tlbnMuYXNzaWduKSwKKyAgICAgICAgdy50cy50eXBlKHRoaXMuaWRsVHlwZS53cml0ZSh3KSks
CisgICAgICAgIHcudG9rZW4odGhpcy50b2tlbnMub3BlbiksCisgICAgICAgIC4uLnRoaXMuYXJn
dW1lbnRzLm1hcCgoYXJnKSA9PiBhcmcud3JpdGUodykpLAorICAgICAgICB3LnRva2VuKHRoaXMu
dG9rZW5zLmNsb3NlKSwKKyAgICAgICAgdy50b2tlbih0aGlzLnRva2Vucy50ZXJtaW5hdGlvbiks
CisgICAgICBdKSwKKyAgICAgIHsgZGF0YTogdGhpcyB9CisgICAgKTsKKyAgfQorfQorCisKKy8q
KiovIH0pLAorLyogMTkgKi8KKy8qKiovICgoX191bnVzZWRfd2VicGFja19fX3dlYnBhY2tfbW9k
dWxlX18sIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pID0+IHsKKwor
X193ZWJwYWNrX3JlcXVpcmVfXy5yKF9fd2VicGFja19leHBvcnRzX18pOworLyogaGFybW9ueSBl
eHBvcnQgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIHsKKy8q
IGhhcm1vbnkgZXhwb3J0ICovICAgIkludGVyZmFjZSI6ICgpID0+ICgvKiBiaW5kaW5nICovIElu
dGVyZmFjZSkKKy8qIGhhcm1vbnkgZXhwb3J0ICovIH0pOworLyogaGFybW9ueSBpbXBvcnQgKi8g
dmFyIF9jb250YWluZXJfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyA9IF9fd2VicGFj
a19yZXF1aXJlX18oMjApOworLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9hdHRyaWJ1dGVfanNf
X1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTQpOwor
LyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9vcGVyYXRpb25fanNfX1dFQlBBQ0tfSU1QT1JURURf
TU9EVUxFXzJfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTMpOworLyogaGFybW9ueSBpbXBvcnQg
Ki8gdmFyIF9jb25zdGFudF9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fID0gX193ZWJw
YWNrX3JlcXVpcmVfXygyMSk7CisvKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2l0ZXJhYmxlX2pz
X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIyKTsK
Ky8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfaGVscGVyc19qc19fV0VCUEFDS19JTVBPUlRFRF9N
T0RVTEVfNV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTsKKy8qIGhhcm1vbnkgaW1wb3J0ICov
IHZhciBfZXJyb3JfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzZfXyA9IF9fd2VicGFja19y
ZXF1aXJlX18oMyk7CisvKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX3ZhbGlkYXRvcnNfaW50ZXJm
YWNlX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV83X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDIzKTsKKy8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfY29uc3RydWN0b3JfanNfX1dFQlBBQ0tf
SU1QT1JURURfTU9EVUxFXzhfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMjQpOworLyogaGFybW9u
eSBpbXBvcnQgKi8gdmFyIF90b2tlbmlzZXJfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzlf
XyA9IF9fd2VicGFja19yZXF1aXJlX18oMik7CisvKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2V4
dGVuZGVkX2F0dHJpYnV0ZXNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzEwX18gPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDgpOworCisKKworCisKKworCisKKworCisKKworLyoqCisgKiBAcGFy
YW0ge2ltcG9ydCgiLi4vdG9rZW5pc2VyIikuVG9rZW5pc2VyfSB0b2tlbmlzZXIKKyAqLworZnVu
Y3Rpb24gc3RhdGljX21lbWJlcih0b2tlbmlzZXIpIHsKKyAgY29uc3Qgc3BlY2lhbCA9IHRva2Vu
aXNlci5jb25zdW1lKCJzdGF0aWMiKTsKKyAgaWYgKCFzcGVjaWFsKSByZXR1cm47CisgIGNvbnN0
IG1lbWJlciA9CisgICAgX2F0dHJpYnV0ZV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9f
LkF0dHJpYnV0ZS5wYXJzZSh0b2tlbmlzZXIsIHsgc3BlY2lhbCB9KSB8fAorICAgIF9vcGVyYXRp
b25fanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXy5PcGVyYXRpb24ucGFyc2UodG9rZW5p
c2VyLCB7IHNwZWNpYWwgfSkgfHwKKyAgICB0b2tlbmlzZXIuZXJyb3IoIk5vIGJvZHkgaW4gc3Rh
dGljIG1lbWJlciIpOworICByZXR1cm4gbWVtYmVyOworfQorCitjbGFzcyBJbnRlcmZhY2UgZXh0
ZW5kcyBfY29udGFpbmVyX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18uQ29udGFpbmVy
IHsKKyAgLyoqCisgICAqIEBwYXJhbSB7aW1wb3J0KCIuLi90b2tlbmlzZXIiKS5Ub2tlbmlzZXJ9
IHRva2VuaXNlcgorICAgKi8KKyAgc3RhdGljIHBhcnNlKHRva2VuaXNlciwgYmFzZSwgeyBwYXJ0
aWFsID0gbnVsbCB9ID0ge30pIHsKKyAgICBjb25zdCB0b2tlbnMgPSB7IHBhcnRpYWwsIGJhc2Ug
fTsKKyAgICByZXR1cm4gX2NvbnRhaW5lcl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9f
LkNvbnRhaW5lci5wYXJzZSgKKyAgICAgIHRva2VuaXNlciwKKyAgICAgIG5ldyBJbnRlcmZhY2Uo
eyBzb3VyY2U6IHRva2VuaXNlci5zb3VyY2UsIHRva2VucyB9KSwKKyAgICAgIHsKKyAgICAgICAg
dHlwZTogImludGVyZmFjZSIsCisgICAgICAgIGluaGVyaXRhYmxlOiAhcGFydGlhbCwKKyAgICAg
ICAgYWxsb3dlZE1lbWJlcnM6IFsKKyAgICAgICAgICBbX2NvbnN0YW50X2pzX19XRUJQQUNLX0lN
UE9SVEVEX01PRFVMRV8zX18uQ29uc3RhbnQucGFyc2VdLAorICAgICAgICAgIFtfY29uc3RydWN0
b3JfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzhfXy5Db25zdHJ1Y3Rvci5wYXJzZV0sCisg
ICAgICAgICAgW3N0YXRpY19tZW1iZXJdLAorICAgICAgICAgIFtfaGVscGVyc19qc19fV0VCUEFD
S19JTVBPUlRFRF9NT0RVTEVfNV9fLnN0cmluZ2lmaWVyXSwKKyAgICAgICAgICBbX2l0ZXJhYmxl
X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X18uSXRlcmFibGVMaWtlLnBhcnNlXSwKKyAg
ICAgICAgICBbX2F0dHJpYnV0ZV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fLkF0dHJp
YnV0ZS5wYXJzZV0sCisgICAgICAgICAgW19vcGVyYXRpb25fanNfX1dFQlBBQ0tfSU1QT1JURURf
TU9EVUxFXzJfXy5PcGVyYXRpb24ucGFyc2VdLAorICAgICAgICBdLAorICAgICAgfQorICAgICk7
CisgIH0KKworICBnZXQgdHlwZSgpIHsKKyAgICByZXR1cm4gImludGVyZmFjZSI7CisgIH0KKwor
ICAqdmFsaWRhdGUoZGVmcykgeworICAgIHlpZWxkKiB0aGlzLmV4dEF0dHJzLnZhbGlkYXRlKGRl
ZnMpOworICAgIGlmICgKKyAgICAgICF0aGlzLnBhcnRpYWwgJiYKKyAgICAgIHRoaXMuZXh0QXR0
cnMuZXZlcnkoKGV4dEF0dHIpID0+IGV4dEF0dHIubmFtZSAhPT0gIkV4cG9zZWQiKQorICAgICkg
eworICAgICAgY29uc3QgbWVzc2FnZSA9IGBJbnRlcmZhY2VzIG11c3QgaGF2ZSBcYFtFeHBvc2Vk
XVxgIGV4dGVuZGVkIGF0dHJpYnV0ZS4gXAorVG8gZml4LCBhZGQsIGZvciBleGFtcGxlLCBcYFtF
eHBvc2VkPVdpbmRvd11cYC4gUGxlYXNlIGFsc28gY29uc2lkZXIgY2FyZWZ1bGx5IFwKK2lmIHlv
dXIgaW50ZXJmYWNlIHNob3VsZCBhbHNvIGJlIGV4cG9zZWQgaW4gYSBXb3JrZXIgc2NvcGUuIFJl
ZmVyIHRvIHRoZSBcCitbV2ViSURMIHNwZWMgc2VjdGlvbiBvbiBFeHBvc2VkXShodHRwczovL2hl
eWNhbS5naXRodWIuaW8vd2ViaWRsLyNFeHBvc2VkKSBcCitmb3IgbW9yZSBpbmZvcm1hdGlvbi5g
OworICAgICAgeWllbGQgKDAsX2Vycm9yX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82X18u
dmFsaWRhdGlvbkVycm9yKSgKKyAgICAgICAgdGhpcy50b2tlbnMubmFtZSwKKyAgICAgICAgdGhp
cywKKyAgICAgICAgInJlcXVpcmUtZXhwb3NlZCIsCisgICAgICAgIG1lc3NhZ2UsCisgICAgICAg
IHsKKyAgICAgICAgICBhdXRvZml4OiAoMCxfaGVscGVyc19qc19fV0VCUEFDS19JTVBPUlRFRF9N
T0RVTEVfNV9fLmF1dG9maXhBZGRFeHBvc2VkV2luZG93KSh0aGlzKSwKKyAgICAgICAgfQorICAg
ICAgKTsKKyAgICB9CisgICAgY29uc3Qgb2xkQ29uc3RydWN0b3JzID0gdGhpcy5leHRBdHRycy5m
aWx0ZXIoCisgICAgICAoZXh0QXR0cikgPT4gZXh0QXR0ci5uYW1lID09PSAiQ29uc3RydWN0b3Ii
CisgICAgKTsKKyAgICBmb3IgKGNvbnN0IGNvbnN0cnVjdG9yIG9mIG9sZENvbnN0cnVjdG9ycykg
eworICAgICAgY29uc3QgbWVzc2FnZSA9IGBDb25zdHJ1Y3RvcnMgc2hvdWxkIG5vdyBiZSByZXBy
ZXNlbnRlZCBhcyBhIFxgY29uc3RydWN0b3IoKVxgIG9wZXJhdGlvbiBvbiB0aGUgaW50ZXJmYWNl
IFwKK2luc3RlYWQgb2YgXGBbQ29uc3RydWN0b3JdXGAgZXh0ZW5kZWQgYXR0cmlidXRlLiBSZWZl
ciB0byB0aGUgXAorW1dlYklETCBzcGVjIHNlY3Rpb24gb24gY29uc3RydWN0b3Igb3BlcmF0aW9u
c10oaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jaWRsLWNvbnN0cnVjdG9ycykgXAor
Zm9yIG1vcmUgaW5mb3JtYXRpb24uYDsKKyAgICAgIHlpZWxkICgwLF9lcnJvcl9qc19fV0VCUEFD
S19JTVBPUlRFRF9NT0RVTEVfNl9fLnZhbGlkYXRpb25FcnJvcikoCisgICAgICAgIGNvbnN0cnVj
dG9yLnRva2Vucy5uYW1lLAorICAgICAgICB0aGlzLAorICAgICAgICAiY29uc3RydWN0b3ItbWVt
YmVyIiwKKyAgICAgICAgbWVzc2FnZSwKKyAgICAgICAgeworICAgICAgICAgIGF1dG9maXg6IGF1
dG9maXhDb25zdHJ1Y3Rvcih0aGlzLCBjb25zdHJ1Y3RvciksCisgICAgICAgIH0KKyAgICAgICk7
CisgICAgfQorCisgICAgY29uc3QgaXNHbG9iYWwgPSB0aGlzLmV4dEF0dHJzLnNvbWUoKGV4dEF0
dHIpID0+IGV4dEF0dHIubmFtZSA9PT0gIkdsb2JhbCIpOworICAgIGlmIChpc0dsb2JhbCkgewor
ICAgICAgY29uc3QgZmFjdG9yeUZ1bmN0aW9ucyA9IHRoaXMuZXh0QXR0cnMuZmlsdGVyKAorICAg
ICAgICAoZXh0QXR0cikgPT4gZXh0QXR0ci5uYW1lID09PSAiTGVnYWN5RmFjdG9yeUZ1bmN0aW9u
IgorICAgICAgKTsKKyAgICAgIGZvciAoY29uc3QgbmFtZWQgb2YgZmFjdG9yeUZ1bmN0aW9ucykg
eworICAgICAgICBjb25zdCBtZXNzYWdlID0gYEludGVyZmFjZXMgbWFya2VkIGFzIFxgW0dsb2Jh
bF1cYCBjYW5ub3QgaGF2ZSBmYWN0b3J5IGZ1bmN0aW9ucy5gOworICAgICAgICB5aWVsZCAoMCxf
ZXJyb3JfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzZfXy52YWxpZGF0aW9uRXJyb3IpKAor
ICAgICAgICAgIG5hbWVkLnRva2Vucy5uYW1lLAorICAgICAgICAgIHRoaXMsCisgICAgICAgICAg
Im5vLWNvbnN0cnVjdGlibGUtZ2xvYmFsIiwKKyAgICAgICAgICBtZXNzYWdlCisgICAgICAgICk7
CisgICAgICB9CisKKyAgICAgIGNvbnN0IGNvbnN0cnVjdG9ycyA9IHRoaXMubWVtYmVycy5maWx0
ZXIoCisgICAgICAgIChtZW1iZXIpID0+IG1lbWJlci50eXBlID09PSAiY29uc3RydWN0b3IiCisg
ICAgICApOworICAgICAgZm9yIChjb25zdCBuYW1lZCBvZiBjb25zdHJ1Y3RvcnMpIHsKKyAgICAg
ICAgY29uc3QgbWVzc2FnZSA9IGBJbnRlcmZhY2VzIG1hcmtlZCBhcyBcYFtHbG9iYWxdXGAgY2Fu
bm90IGhhdmUgY29uc3RydWN0b3JzLmA7CisgICAgICAgIHlpZWxkICgwLF9lcnJvcl9qc19fV0VC
UEFDS19JTVBPUlRFRF9NT0RVTEVfNl9fLnZhbGlkYXRpb25FcnJvcikoCisgICAgICAgICAgbmFt
ZWQudG9rZW5zLmJhc2UsCisgICAgICAgICAgdGhpcywKKyAgICAgICAgICAibm8tY29uc3RydWN0
aWJsZS1nbG9iYWwiLAorICAgICAgICAgIG1lc3NhZ2UKKyAgICAgICAgKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB5aWVsZCogc3VwZXIudmFsaWRhdGUoZGVmcyk7CisgICAgaWYgKCF0aGlzLnBh
cnRpYWwpIHsKKyAgICAgIHlpZWxkKiAoMCxfdmFsaWRhdG9yc19pbnRlcmZhY2VfanNfX1dFQlBB
Q0tfSU1QT1JURURfTU9EVUxFXzdfXy5jaGVja0ludGVyZmFjZU1lbWJlckR1cGxpY2F0aW9uKShk
ZWZzLCB0aGlzKTsKKyAgICB9CisgIH0KK30KKworZnVuY3Rpb24gYXV0b2ZpeENvbnN0cnVjdG9y
KGludGVyZmFjZURlZiwgY29uc3RydWN0b3JFeHRBdHRyKSB7CisgIGludGVyZmFjZURlZiA9ICgw
LF9oZWxwZXJzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X18uYXV0b1BhcmVudGVyKShp
bnRlcmZhY2VEZWYpOworICByZXR1cm4gKCkgPT4geworICAgIGNvbnN0IGluZGVudGF0aW9uID0g
KDAsX2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzVfXy5nZXRMYXN0SW5kZW50
YXRpb24pKAorICAgICAgaW50ZXJmYWNlRGVmLmV4dEF0dHJzLnRva2Vucy5vcGVuLnRyaXZpYQor
ICAgICk7CisgICAgY29uc3QgbWVtYmVySW5kZW50ID0gaW50ZXJmYWNlRGVmLm1lbWJlcnMubGVu
Z3RoCisgICAgICA/ICgwLF9oZWxwZXJzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X18u
Z2V0TGFzdEluZGVudGF0aW9uKSgoMCxfaGVscGVyc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RV
TEVfNV9fLmdldEZpcnN0VG9rZW4pKGludGVyZmFjZURlZi5tZW1iZXJzWzBdKS50cml2aWEpCisg
ICAgICA6ICgwLF9oZWxwZXJzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X18uZ2V0TWVt
YmVySW5kZW50YXRpb24pKGluZGVudGF0aW9uKTsKKyAgICBjb25zdCBjb25zdHJ1Y3Rvck9wID0g
X2NvbnN0cnVjdG9yX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV84X18uQ29uc3RydWN0b3Iu
cGFyc2UoCisgICAgICBuZXcgX3Rva2VuaXNlcl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVf
OV9fLlRva2VuaXNlcihgXG4ke21lbWJlckluZGVudH1jb25zdHJ1Y3RvcigpO2ApCisgICAgKTsK
KyAgICBjb25zdHJ1Y3Rvck9wLmV4dEF0dHJzID0gbmV3IF9leHRlbmRlZF9hdHRyaWJ1dGVzX2pz
X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xMF9fLkV4dGVuZGVkQXR0cmlidXRlcyh7fSk7Cisg
ICAgKDAsX2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzVfXy5hdXRvUGFyZW50
ZXIpKGNvbnN0cnVjdG9yT3ApLmFyZ3VtZW50cyA9IGNvbnN0cnVjdG9yRXh0QXR0ci5hcmd1bWVu
dHM7CisKKyAgICBjb25zdCBleGlzdGluZ0luZGV4ID0gKDAsX2hlbHBlcnNfanNfX1dFQlBBQ0tf
SU1QT1JURURfTU9EVUxFXzVfXy5maW5kTGFzdEluZGV4KSgKKyAgICAgIGludGVyZmFjZURlZi5t
ZW1iZXJzLAorICAgICAgKG0pID0+IG0udHlwZSA9PT0gImNvbnN0cnVjdG9yIgorICAgICk7Cisg
ICAgaW50ZXJmYWNlRGVmLm1lbWJlcnMuc3BsaWNlKGV4aXN0aW5nSW5kZXggKyAxLCAwLCBjb25z
dHJ1Y3Rvck9wKTsKKworICAgIGNvbnN0IHsgY2xvc2UgfSA9IGludGVyZmFjZURlZi50b2tlbnM7
CisgICAgaWYgKCFjbG9zZS50cml2aWEuaW5jbHVkZXMoIlxuIikpIHsKKyAgICAgIGNsb3NlLnRy
aXZpYSArPSBgXG4ke2luZGVudGF0aW9ufWA7CisgICAgfQorCisgICAgY29uc3QgeyBleHRBdHRy
cyB9ID0gaW50ZXJmYWNlRGVmOworICAgIGNvbnN0IGluZGV4ID0gZXh0QXR0cnMuaW5kZXhPZihj
b25zdHJ1Y3RvckV4dEF0dHIpOworICAgIGNvbnN0IHJlbW92ZWQgPSBleHRBdHRycy5zcGxpY2Uo
aW5kZXgsIDEpOworICAgIGlmICghZXh0QXR0cnMubGVuZ3RoKSB7CisgICAgICBleHRBdHRycy50
b2tlbnMub3BlbiA9IGV4dEF0dHJzLnRva2Vucy5jbG9zZSA9IHVuZGVmaW5lZDsKKyAgICB9IGVs
c2UgaWYgKGV4dEF0dHJzLmxlbmd0aCA9PT0gaW5kZXgpIHsKKyAgICAgIGV4dEF0dHJzW2luZGV4
IC0gMV0udG9rZW5zLnNlcGFyYXRvciA9IHVuZGVmaW5lZDsKKyAgICB9IGVsc2UgaWYgKCFleHRB
dHRyc1tpbmRleF0udG9rZW5zLm5hbWUudHJpdmlhLnRyaW0oKSkgeworICAgICAgZXh0QXR0cnNb
aW5kZXhdLnRva2Vucy5uYW1lLnRyaXZpYSA9IHJlbW92ZWRbMF0udG9rZW5zLm5hbWUudHJpdmlh
OworICAgIH0KKyAgfTsKK30KKworCisvKioqLyB9KSwKKy8qIDIwICovCisvKioqLyAoKF9fdW51
c2VkX3dlYnBhY2tfX193ZWJwYWNrX21vZHVsZV9fLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dl
YnBhY2tfcmVxdWlyZV9fKSA9PiB7CisKK19fd2VicGFja19yZXF1aXJlX18ucihfX3dlYnBhY2tf
ZXhwb3J0c19fKTsKKy8qIGhhcm1vbnkgZXhwb3J0ICovIF9fd2VicGFja19yZXF1aXJlX18uZChf
X3dlYnBhY2tfZXhwb3J0c19fLCB7CisvKiBoYXJtb255IGV4cG9ydCAqLyAgICJDb250YWluZXIi
OiAoKSA9PiAoLyogYmluZGluZyAqLyBDb250YWluZXIpCisvKiBoYXJtb255IGV4cG9ydCAqLyB9
KTsKKy8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfYmFzZV9qc19fV0VCUEFDS19JTVBPUlRFRF9N
T0RVTEVfMF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2KTsKKy8qIGhhcm1vbnkgaW1wb3J0ICov
IHZhciBfZXh0ZW5kZWRfYXR0cmlidXRlc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9f
ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4KTsKKy8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfaGVs
cGVyc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fID0gX193ZWJwYWNrX3JlcXVpcmVf
Xyg0KTsKKworCisKKworLyoqCisgKiBAcGFyYW0ge2ltcG9ydCgiLi4vdG9rZW5pc2VyLmpzIiku
VG9rZW5pc2VyfSB0b2tlbmlzZXIKKyAqLworZnVuY3Rpb24gaW5oZXJpdGFuY2UodG9rZW5pc2Vy
KSB7CisgIGNvbnN0IGNvbG9uID0gdG9rZW5pc2VyLmNvbnN1bWUoIjoiKTsKKyAgaWYgKCFjb2xv
bikgeworICAgIHJldHVybiB7fTsKKyAgfQorICBjb25zdCBpbmhlcml0YW5jZSA9CisgICAgdG9r
ZW5pc2VyLmNvbnN1bWVUeXBlKCJpZGVudGlmaWVyIikgfHwKKyAgICB0b2tlbmlzZXIuZXJyb3Io
IkluaGVyaXRhbmNlIGxhY2tzIGEgdHlwZSIpOworICByZXR1cm4geyBjb2xvbiwgaW5oZXJpdGFu
Y2UgfTsKK30KKworY2xhc3MgQ29udGFpbmVyIGV4dGVuZHMgX2Jhc2VfanNfX1dFQlBBQ0tfSU1Q
T1JURURfTU9EVUxFXzBfXy5CYXNlIHsKKyAgLyoqCisgICAqIEB0ZW1wbGF0ZSBUCisgICAqIEBw
YXJhbSB7aW1wb3J0KCIuLi90b2tlbmlzZXIuanMiKS5Ub2tlbmlzZXJ9IHRva2VuaXNlcgorICAg
KiBAcGFyYW0ge1R9IGluc3RhbmNlCisgICAqIEBwYXJhbSB7Kn0gYXJncworICAgKi8KKyAgc3Rh
dGljIHBhcnNlKHRva2VuaXNlciwgaW5zdGFuY2UsIHsgdHlwZSwgaW5oZXJpdGFibGUsIGFsbG93
ZWRNZW1iZXJzIH0pIHsKKyAgICBjb25zdCB7IHRva2VucyB9ID0gaW5zdGFuY2U7CisgICAgdG9r
ZW5zLm5hbWUgPQorICAgICAgdG9rZW5pc2VyLmNvbnN1bWVUeXBlKCJpZGVudGlmaWVyIikgfHwK
KyAgICAgIHRva2VuaXNlci5lcnJvcihgTWlzc2luZyBuYW1lIGluICR7aW5zdGFuY2UudHlwZX1g
KTsKKyAgICB0b2tlbmlzZXIuY3VycmVudCA9IGluc3RhbmNlOworICAgIGluc3RhbmNlID0gKDAs
X2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXy5hdXRvUGFyZW50ZXIpKGlu
c3RhbmNlKTsKKyAgICBpZiAoaW5oZXJpdGFibGUpIHsKKyAgICAgIE9iamVjdC5hc3NpZ24odG9r
ZW5zLCBpbmhlcml0YW5jZSh0b2tlbmlzZXIpKTsKKyAgICB9CisgICAgdG9rZW5zLm9wZW4gPSB0
b2tlbmlzZXIuY29uc3VtZSgieyIpIHx8IHRva2VuaXNlci5lcnJvcihgQm9keWxlc3MgJHt0eXBl
fWApOworICAgIGluc3RhbmNlLm1lbWJlcnMgPSBbXTsKKyAgICB3aGlsZSAodHJ1ZSkgeworICAg
ICAgdG9rZW5zLmNsb3NlID0gdG9rZW5pc2VyLmNvbnN1bWUoIn0iKTsKKyAgICAgIGlmICh0b2tl
bnMuY2xvc2UpIHsKKyAgICAgICAgdG9rZW5zLnRlcm1pbmF0aW9uID0KKyAgICAgICAgICB0b2tl
bmlzZXIuY29uc3VtZSgiOyIpIHx8CisgICAgICAgICAgdG9rZW5pc2VyLmVycm9yKGBNaXNzaW5n
IHNlbWljb2xvbiBhZnRlciAke3R5cGV9YCk7CisgICAgICAgIHJldHVybiBpbnN0YW5jZS50aGlz
OworICAgICAgfQorICAgICAgY29uc3QgZWEgPSBfZXh0ZW5kZWRfYXR0cmlidXRlc19qc19fV0VC
UEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fLkV4dGVuZGVkQXR0cmlidXRlcy5wYXJzZSh0b2tlbmlz
ZXIpOworICAgICAgbGV0IG1lbTsKKyAgICAgIGZvciAoY29uc3QgW3BhcnNlciwgLi4uYXJnc10g
b2YgYWxsb3dlZE1lbWJlcnMpIHsKKyAgICAgICAgbWVtID0gKDAsX2hlbHBlcnNfanNfX1dFQlBB
Q0tfSU1QT1JURURfTU9EVUxFXzJfXy5hdXRvUGFyZW50ZXIpKHBhcnNlcih0b2tlbmlzZXIsIC4u
LmFyZ3MpKTsKKyAgICAgICAgaWYgKG1lbSkgeworICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisgICAgICB9CisgICAgICBpZiAoIW1lbSkgeworICAgICAgICB0b2tlbmlzZXIuZXJyb3IoIlVu
a25vd24gbWVtYmVyIik7CisgICAgICB9CisgICAgICBtZW0uZXh0QXR0cnMgPSBlYTsKKyAgICAg
IGluc3RhbmNlLm1lbWJlcnMucHVzaChtZW0udGhpcyk7CisgICAgfQorICB9CisKKyAgZ2V0IHBh
cnRpYWwoKSB7CisgICAgcmV0dXJuICEhdGhpcy50b2tlbnMucGFydGlhbDsKKyAgfQorICBnZXQg
bmFtZSgpIHsKKyAgICByZXR1cm4gKDAsX2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9E
VUxFXzJfXy51bmVzY2FwZSkodGhpcy50b2tlbnMubmFtZS52YWx1ZSk7CisgIH0KKyAgZ2V0IGlu
aGVyaXRhbmNlKCkgeworICAgIGlmICghdGhpcy50b2tlbnMuaW5oZXJpdGFuY2UpIHsKKyAgICAg
IHJldHVybiBudWxsOworICAgIH0KKyAgICByZXR1cm4gKDAsX2hlbHBlcnNfanNfX1dFQlBBQ0tf
SU1QT1JURURfTU9EVUxFXzJfXy51bmVzY2FwZSkodGhpcy50b2tlbnMuaW5oZXJpdGFuY2UudmFs
dWUpOworICB9CisKKyAgKnZhbGlkYXRlKGRlZnMpIHsKKyAgICBmb3IgKGNvbnN0IG1lbWJlciBv
ZiB0aGlzLm1lbWJlcnMpIHsKKyAgICAgIGlmIChtZW1iZXIudmFsaWRhdGUpIHsKKyAgICAgICAg
eWllbGQqIG1lbWJlci52YWxpZGF0ZShkZWZzKTsKKyAgICAgIH0KKyAgICB9CisgIH0KKworICAv
KiogQHBhcmFtIHtpbXBvcnQoIi4uL3dyaXRlci5qcyIpLldyaXRlcn0gdyAqLworICB3cml0ZSh3
KSB7CisgICAgY29uc3QgaW5oZXJpdGFuY2UgPSAoKSA9PiB7CisgICAgICBpZiAoIXRoaXMudG9r
ZW5zLmluaGVyaXRhbmNlKSB7CisgICAgICAgIHJldHVybiAiIjsKKyAgICAgIH0KKyAgICAgIHJl
dHVybiB3LnRzLndyYXAoWworICAgICAgICB3LnRva2VuKHRoaXMudG9rZW5zLmNvbG9uKSwKKyAg
ICAgICAgdy50cy50cml2aWEodGhpcy50b2tlbnMuaW5oZXJpdGFuY2UudHJpdmlhKSwKKyAgICAg
ICAgdy50cy5pbmhlcml0YW5jZSgKKyAgICAgICAgICB3LnJlZmVyZW5jZSh0aGlzLnRva2Vucy5p
bmhlcml0YW5jZS52YWx1ZSwgeyBjb250ZXh0OiB0aGlzIH0pCisgICAgICAgICksCisgICAgICBd
KTsKICAgICB9OwogCi0gICAgaWYgKGluTm9kZSkgbW9kdWxlLmV4cG9ydHMgPSBvYmo7Ci0gICAg
ZWxzZSAgICAgICAgc2VsZi5XZWJJREwyID0gb2JqOwotfSgpKTsKKyAgICByZXR1cm4gdy50cy5k
ZWZpbml0aW9uKAorICAgICAgdy50cy53cmFwKFsKKyAgICAgICAgdGhpcy5leHRBdHRycy53cml0
ZSh3KSwKKyAgICAgICAgdy50b2tlbih0aGlzLnRva2Vucy5jYWxsYmFjayksCisgICAgICAgIHcu
dG9rZW4odGhpcy50b2tlbnMucGFydGlhbCksCisgICAgICAgIHcudG9rZW4odGhpcy50b2tlbnMu
YmFzZSksCisgICAgICAgIHcudG9rZW4odGhpcy50b2tlbnMubWl4aW4pLAorICAgICAgICB3Lm5h
bWVfdG9rZW4odGhpcy50b2tlbnMubmFtZSwgeyBkYXRhOiB0aGlzIH0pLAorICAgICAgICBpbmhl
cml0YW5jZSgpLAorICAgICAgICB3LnRva2VuKHRoaXMudG9rZW5zLm9wZW4pLAorICAgICAgICB3
LnRzLndyYXAodGhpcy5tZW1iZXJzLm1hcCgobSkgPT4gbS53cml0ZSh3KSkpLAorICAgICAgICB3
LnRva2VuKHRoaXMudG9rZW5zLmNsb3NlKSwKKyAgICAgICAgdy50b2tlbih0aGlzLnRva2Vucy50
ZXJtaW5hdGlvbiksCisgICAgICBdKSwKKyAgICAgIHsgZGF0YTogdGhpcyB9CisgICAgKTsKKyAg
fQorfQorCisKKy8qKiovIH0pLAorLyogMjEgKi8KKy8qKiovICgoX191bnVzZWRfd2VicGFja19f
X3dlYnBhY2tfbW9kdWxlX18sIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJl
X18pID0+IHsKKworX193ZWJwYWNrX3JlcXVpcmVfXy5yKF9fd2VicGFja19leHBvcnRzX18pOwor
LyogaGFybW9ueSBleHBvcnQgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBv
cnRzX18sIHsKKy8qIGhhcm1vbnkgZXhwb3J0ICovICAgIkNvbnN0YW50IjogKCkgPT4gKC8qIGJp
bmRpbmcgKi8gQ29uc3RhbnQpCisvKiBoYXJtb255IGV4cG9ydCAqLyB9KTsKKy8qIGhhcm1vbnkg
aW1wb3J0ICovIHZhciBfYmFzZV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fID0gX193
ZWJwYWNrX3JlcXVpcmVfXyg2KTsKKy8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfdHlwZV9qc19f
V0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTsKKy8q
IGhhcm1vbnkgaW1wb3J0ICovIHZhciBfaGVscGVyc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RV
TEVfMl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTsKKworCisKKworY2xhc3MgQ29uc3RhbnQg
ZXh0ZW5kcyBfYmFzZV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fLkJhc2UgeworICAv
KioKKyAgICogQHBhcmFtIHtpbXBvcnQoIi4uL3Rva2VuaXNlci5qcyIpLlRva2VuaXNlcn0gdG9r
ZW5pc2VyCisgICAqLworICBzdGF0aWMgcGFyc2UodG9rZW5pc2VyKSB7CisgICAgLyoqIEB0eXBl
IHtCYXNlWyJ0b2tlbnMiXX0gKi8KKyAgICBjb25zdCB0b2tlbnMgPSB7fTsKKyAgICB0b2tlbnMu
YmFzZSA9IHRva2VuaXNlci5jb25zdW1lKCJjb25zdCIpOworICAgIGlmICghdG9rZW5zLmJhc2Up
IHsKKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgbGV0IGlkbFR5cGUgPSAoMCxfaGVscGVyc19q
c19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fLnByaW1pdGl2ZV90eXBlKSh0b2tlbmlzZXIp
OworICAgIGlmICghaWRsVHlwZSkgeworICAgICAgY29uc3QgYmFzZSA9CisgICAgICAgIHRva2Vu
aXNlci5jb25zdW1lVHlwZSgiaWRlbnRpZmllciIpIHx8CisgICAgICAgIHRva2VuaXNlci5lcnJv
cigiQ29uc3QgbGFja3MgYSB0eXBlIik7CisgICAgICBpZGxUeXBlID0gbmV3IF90eXBlX2pzX19X
RUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18uVHlwZSh7IHNvdXJjZTogdG9rZW5pc2VyLnNvdXJj
ZSwgdG9rZW5zOiB7IGJhc2UgfSB9KTsKKyAgICB9CisgICAgaWYgKHRva2VuaXNlci5wcm9iZSgi
PyIpKSB7CisgICAgICB0b2tlbmlzZXIuZXJyb3IoIlVuZXhwZWN0ZWQgbnVsbGFibGUgY29uc3Rh
bnQgdHlwZSIpOworICAgIH0KKyAgICBpZGxUeXBlLnR5cGUgPSAiY29uc3QtdHlwZSI7CisgICAg
dG9rZW5zLm5hbWUgPQorICAgICAgdG9rZW5pc2VyLmNvbnN1bWVUeXBlKCJpZGVudGlmaWVyIikg
fHwKKyAgICAgIHRva2VuaXNlci5lcnJvcigiQ29uc3QgbGFja3MgYSBuYW1lIik7CisgICAgdG9r
ZW5zLmFzc2lnbiA9CisgICAgICB0b2tlbmlzZXIuY29uc3VtZSgiPSIpIHx8IHRva2VuaXNlci5l
cnJvcigiQ29uc3QgbGFja3MgdmFsdWUgYXNzaWdubWVudCIpOworICAgIHRva2Vucy52YWx1ZSA9
CisgICAgICAoMCxfaGVscGVyc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fLmNvbnN0
X3ZhbHVlKSh0b2tlbmlzZXIpIHx8IHRva2VuaXNlci5lcnJvcigiQ29uc3QgbGFja3MgYSB2YWx1
ZSIpOworICAgIHRva2Vucy50ZXJtaW5hdGlvbiA9CisgICAgICB0b2tlbmlzZXIuY29uc3VtZSgi
OyIpIHx8CisgICAgICB0b2tlbmlzZXIuZXJyb3IoIlVudGVybWluYXRlZCBjb25zdCwgZXhwZWN0
ZWQgYDtgIik7CisgICAgY29uc3QgcmV0ID0gbmV3IENvbnN0YW50KHsgc291cmNlOiB0b2tlbmlz
ZXIuc291cmNlLCB0b2tlbnMgfSk7CisgICAgKDAsX2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JU
RURfTU9EVUxFXzJfXy5hdXRvUGFyZW50ZXIpKHJldCkuaWRsVHlwZSA9IGlkbFR5cGU7CisgICAg
cmV0dXJuIHJldDsKKyAgfQorCisgIGdldCB0eXBlKCkgeworICAgIHJldHVybiAiY29uc3QiOwor
ICB9CisgIGdldCBuYW1lKCkgeworICAgIHJldHVybiAoMCxfaGVscGVyc19qc19fV0VCUEFDS19J
TVBPUlRFRF9NT0RVTEVfMl9fLnVuZXNjYXBlKSh0aGlzLnRva2Vucy5uYW1lLnZhbHVlKTsKKyAg
fQorICBnZXQgdmFsdWUoKSB7CisgICAgcmV0dXJuICgwLF9oZWxwZXJzX2pzX19XRUJQQUNLX0lN
UE9SVEVEX01PRFVMRV8yX18uY29uc3RfZGF0YSkodGhpcy50b2tlbnMudmFsdWUpOworICB9CisK
KyAgLyoqIEBwYXJhbSB7aW1wb3J0KCIuLi93cml0ZXIuanMiKS5Xcml0ZXJ9IHcgKi8KKyAgd3Jp
dGUodykgeworICAgIGNvbnN0IHsgcGFyZW50IH0gPSB0aGlzOworICAgIHJldHVybiB3LnRzLmRl
ZmluaXRpb24oCisgICAgICB3LnRzLndyYXAoWworICAgICAgICB0aGlzLmV4dEF0dHJzLndyaXRl
KHcpLAorICAgICAgICB3LnRva2VuKHRoaXMudG9rZW5zLmJhc2UpLAorICAgICAgICB3LnRzLnR5
cGUodGhpcy5pZGxUeXBlLndyaXRlKHcpKSwKKyAgICAgICAgdy5uYW1lX3Rva2VuKHRoaXMudG9r
ZW5zLm5hbWUsIHsgZGF0YTogdGhpcywgcGFyZW50IH0pLAorICAgICAgICB3LnRva2VuKHRoaXMu
dG9rZW5zLmFzc2lnbiksCisgICAgICAgIHcudG9rZW4odGhpcy50b2tlbnMudmFsdWUpLAorICAg
ICAgICB3LnRva2VuKHRoaXMudG9rZW5zLnRlcm1pbmF0aW9uKSwKKyAgICAgIF0pLAorICAgICAg
eyBkYXRhOiB0aGlzLCBwYXJlbnQgfQorICAgICk7CisgIH0KK30KKworCisvKioqLyB9KSwKKy8q
IDIyICovCisvKioqLyAoKF9fdW51c2VkX3dlYnBhY2tfX193ZWJwYWNrX21vZHVsZV9fLCBfX3dl
YnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSA9PiB7CisKK19fd2VicGFja19y
ZXF1aXJlX18ucihfX3dlYnBhY2tfZXhwb3J0c19fKTsKKy8qIGhhcm1vbnkgZXhwb3J0ICovIF9f
d2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCB7CisvKiBoYXJtb255IGV4
cG9ydCAqLyAgICJJdGVyYWJsZUxpa2UiOiAoKSA9PiAoLyogYmluZGluZyAqLyBJdGVyYWJsZUxp
a2UpCisvKiBoYXJtb255IGV4cG9ydCAqLyB9KTsKKy8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBf
YmFzZV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fID0gX193ZWJwYWNrX3JlcXVpcmVf
Xyg2KTsKKy8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfaGVscGVyc19qc19fV0VCUEFDS19JTVBP
UlRFRF9NT0RVTEVfMV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTsKKworCisKK2NsYXNzIEl0
ZXJhYmxlTGlrZSBleHRlbmRzIF9iYXNlX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18u
QmFzZSB7CisgIC8qKgorICAgKiBAcGFyYW0ge2ltcG9ydCgiLi4vdG9rZW5pc2VyLmpzIikuVG9r
ZW5pc2VyfSB0b2tlbmlzZXIKKyAgICovCisgIHN0YXRpYyBwYXJzZSh0b2tlbmlzZXIpIHsKKyAg
ICBjb25zdCBzdGFydF9wb3NpdGlvbiA9IHRva2VuaXNlci5wb3NpdGlvbjsKKyAgICBjb25zdCB0
b2tlbnMgPSB7fTsKKyAgICBjb25zdCByZXQgPSAoMCxfaGVscGVyc19qc19fV0VCUEFDS19JTVBP
UlRFRF9NT0RVTEVfMV9fLmF1dG9QYXJlbnRlcikoCisgICAgICBuZXcgSXRlcmFibGVMaWtlKHsg
c291cmNlOiB0b2tlbmlzZXIuc291cmNlLCB0b2tlbnMgfSkKKyAgICApOworICAgIHRva2Vucy5y
ZWFkb25seSA9IHRva2VuaXNlci5jb25zdW1lKCJyZWFkb25seSIpOworICAgIGlmICghdG9rZW5z
LnJlYWRvbmx5KSB7CisgICAgICB0b2tlbnMuYXN5bmMgPSB0b2tlbmlzZXIuY29uc3VtZSgiYXN5
bmMiKTsKKyAgICB9CisgICAgdG9rZW5zLmJhc2UgPSB0b2tlbnMucmVhZG9ubHkKKyAgICAgID8g
dG9rZW5pc2VyLmNvbnN1bWUoIm1hcGxpa2UiLCAic2V0bGlrZSIpCisgICAgICA6IHRva2Vucy5h
c3luYworICAgICAgPyB0b2tlbmlzZXIuY29uc3VtZSgiaXRlcmFibGUiKQorICAgICAgOiB0b2tl
bmlzZXIuY29uc3VtZSgiaXRlcmFibGUiLCAibWFwbGlrZSIsICJzZXRsaWtlIik7CisgICAgaWYg
KCF0b2tlbnMuYmFzZSkgeworICAgICAgdG9rZW5pc2VyLnVuY29uc3VtZShzdGFydF9wb3NpdGlv
bik7CisgICAgICByZXR1cm47CisgICAgfQorCisgICAgY29uc3QgeyB0eXBlIH0gPSByZXQ7Cisg
ICAgY29uc3Qgc2Vjb25kVHlwZVJlcXVpcmVkID0gdHlwZSA9PT0gIm1hcGxpa2UiOworICAgIGNv
bnN0IHNlY29uZFR5cGVBbGxvd2VkID0gc2Vjb25kVHlwZVJlcXVpcmVkIHx8IHR5cGUgPT09ICJp
dGVyYWJsZSI7CisgICAgY29uc3QgYXJndW1lbnRBbGxvd2VkID0gcmV0LmFzeW5jICYmIHR5cGUg
PT09ICJpdGVyYWJsZSI7CisKKyAgICB0b2tlbnMub3BlbiA9CisgICAgICB0b2tlbmlzZXIuY29u
c3VtZSgiPCIpIHx8CisgICAgICB0b2tlbmlzZXIuZXJyb3IoYE1pc3NpbmcgbGVzcy10aGFuIHNp
Z24gXGA8XGAgaW4gJHt0eXBlfSBkZWNsYXJhdGlvbmApOworICAgIGNvbnN0IGZpcnN0ID0KKyAg
ICAgICgwLF9oZWxwZXJzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18udHlwZV93aXRo
X2V4dGVuZGVkX2F0dHJpYnV0ZXMpKHRva2VuaXNlcikgfHwKKyAgICAgIHRva2VuaXNlci5lcnJv
cihgTWlzc2luZyBhIHR5cGUgYXJndW1lbnQgaW4gJHt0eXBlfSBkZWNsYXJhdGlvbmApOworICAg
IHJldC5pZGxUeXBlID0gW2ZpcnN0XTsKKyAgICByZXQuYXJndW1lbnRzID0gW107CisKKyAgICBp
ZiAoc2Vjb25kVHlwZUFsbG93ZWQpIHsKKyAgICAgIGZpcnN0LnRva2Vucy5zZXBhcmF0b3IgPSB0
b2tlbmlzZXIuY29uc3VtZSgiLCIpOworICAgICAgaWYgKGZpcnN0LnRva2Vucy5zZXBhcmF0b3Ip
IHsKKyAgICAgICAgcmV0LmlkbFR5cGUucHVzaCgoMCxfaGVscGVyc19qc19fV0VCUEFDS19JTVBP
UlRFRF9NT0RVTEVfMV9fLnR5cGVfd2l0aF9leHRlbmRlZF9hdHRyaWJ1dGVzKSh0b2tlbmlzZXIp
KTsKKyAgICAgIH0gZWxzZSBpZiAoc2Vjb25kVHlwZVJlcXVpcmVkKSB7CisgICAgICAgIHRva2Vu
aXNlci5lcnJvcihgTWlzc2luZyBzZWNvbmQgdHlwZSBhcmd1bWVudCBpbiAke3R5cGV9IGRlY2xh
cmF0aW9uYCk7CisgICAgICB9CisgICAgfQorCisgICAgdG9rZW5zLmNsb3NlID0KKyAgICAgIHRv
a2VuaXNlci5jb25zdW1lKCI+IikgfHwKKyAgICAgIHRva2VuaXNlci5lcnJvcihgTWlzc2luZyBn
cmVhdGVyLXRoYW4gc2lnbiBcYD5cYCBpbiAke3R5cGV9IGRlY2xhcmF0aW9uYCk7CisKKyAgICBp
ZiAodG9rZW5pc2VyLnByb2JlKCIoIikpIHsKKyAgICAgIGlmIChhcmd1bWVudEFsbG93ZWQpIHsK
KyAgICAgICAgdG9rZW5zLmFyZ3NPcGVuID0gdG9rZW5pc2VyLmNvbnN1bWUoIigiKTsKKyAgICAg
ICAgcmV0LmFyZ3VtZW50cy5wdXNoKC4uLigwLF9oZWxwZXJzX2pzX19XRUJQQUNLX0lNUE9SVEVE
X01PRFVMRV8xX18uYXJndW1lbnRfbGlzdCkodG9rZW5pc2VyKSk7CisgICAgICAgIHRva2Vucy5h
cmdzQ2xvc2UgPQorICAgICAgICAgIHRva2VuaXNlci5jb25zdW1lKCIpIikgfHwKKyAgICAgICAg
ICB0b2tlbmlzZXIuZXJyb3IoIlVudGVybWluYXRlZCBhc3luYyBpdGVyYWJsZSBhcmd1bWVudCBs
aXN0Iik7CisgICAgICB9IGVsc2UgeworICAgICAgICB0b2tlbmlzZXIuZXJyb3IoYEFyZ3VtZW50
cyBhcmUgb25seSBhbGxvd2VkIGZvciBcYGFzeW5jIGl0ZXJhYmxlXGBgKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICB0b2tlbnMudGVybWluYXRpb24gPQorICAgICAgdG9rZW5pc2VyLmNvbnN1bWUo
IjsiKSB8fAorICAgICAgdG9rZW5pc2VyLmVycm9yKGBNaXNzaW5nIHNlbWljb2xvbiBhZnRlciAk
e3R5cGV9IGRlY2xhcmF0aW9uYCk7CisKKyAgICByZXR1cm4gcmV0LnRoaXM7CisgIH0KKworICBn
ZXQgdHlwZSgpIHsKKyAgICByZXR1cm4gdGhpcy50b2tlbnMuYmFzZS52YWx1ZTsKKyAgfQorICBn
ZXQgcmVhZG9ubHkoKSB7CisgICAgcmV0dXJuICEhdGhpcy50b2tlbnMucmVhZG9ubHk7CisgIH0K
KyAgZ2V0IGFzeW5jKCkgeworICAgIHJldHVybiAhIXRoaXMudG9rZW5zLmFzeW5jOworICB9CisK
KyAgKnZhbGlkYXRlKGRlZnMpIHsKKyAgICBmb3IgKGNvbnN0IHR5cGUgb2YgdGhpcy5pZGxUeXBl
KSB7CisgICAgICB5aWVsZCogdHlwZS52YWxpZGF0ZShkZWZzKTsKKyAgICB9CisgICAgZm9yIChj
b25zdCBhcmd1bWVudCBvZiB0aGlzLmFyZ3VtZW50cykgeworICAgICAgeWllbGQqIGFyZ3VtZW50
LnZhbGlkYXRlKGRlZnMpOworICAgIH0KKyAgfQorCisgIC8qKiBAcGFyYW0ge2ltcG9ydCgiLi4v
d3JpdGVyLmpzIikuV3JpdGVyfSB3ICovCisgIHdyaXRlKHcpIHsKKyAgICByZXR1cm4gdy50cy5k
ZWZpbml0aW9uKAorICAgICAgdy50cy53cmFwKFsKKyAgICAgICAgdGhpcy5leHRBdHRycy53cml0
ZSh3KSwKKyAgICAgICAgdy50b2tlbih0aGlzLnRva2Vucy5yZWFkb25seSksCisgICAgICAgIHcu
dG9rZW4odGhpcy50b2tlbnMuYXN5bmMpLAorICAgICAgICB3LnRva2VuKHRoaXMudG9rZW5zLmJh
c2UsIHcudHMuZ2VuZXJpYyksCisgICAgICAgIHcudG9rZW4odGhpcy50b2tlbnMub3BlbiksCisg
ICAgICAgIHcudHMud3JhcCh0aGlzLmlkbFR5cGUubWFwKCh0KSA9PiB0LndyaXRlKHcpKSksCisg
ICAgICAgIHcudG9rZW4odGhpcy50b2tlbnMuY2xvc2UpLAorICAgICAgICB3LnRva2VuKHRoaXMu
dG9rZW5zLmFyZ3NPcGVuKSwKKyAgICAgICAgdy50cy53cmFwKHRoaXMuYXJndW1lbnRzLm1hcCgo
YXJnKSA9PiBhcmcud3JpdGUodykpKSwKKyAgICAgICAgdy50b2tlbih0aGlzLnRva2Vucy5hcmdz
Q2xvc2UpLAorICAgICAgICB3LnRva2VuKHRoaXMudG9rZW5zLnRlcm1pbmF0aW9uKSwKKyAgICAg
IF0pLAorICAgICAgeyBkYXRhOiB0aGlzLCBwYXJlbnQ6IHRoaXMucGFyZW50IH0KKyAgICApOwor
ICB9Cit9CisKKworLyoqKi8gfSksCisvKiAyMyAqLworLyoqKi8gKChfX3VudXNlZF93ZWJwYWNr
X19fd2VicGFja19tb2R1bGVfXywgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVp
cmVfXykgPT4geworCitfX3dlYnBhY2tfcmVxdWlyZV9fLnIoX193ZWJwYWNrX2V4cG9ydHNfXyk7
CisvKiBoYXJtb255IGV4cG9ydCAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4
cG9ydHNfXywgeworLyogaGFybW9ueSBleHBvcnQgKi8gICAiY2hlY2tJbnRlcmZhY2VNZW1iZXJE
dXBsaWNhdGlvbiI6ICgpID0+ICgvKiBiaW5kaW5nICovIGNoZWNrSW50ZXJmYWNlTWVtYmVyRHVw
bGljYXRpb24pCisvKiBoYXJtb255IGV4cG9ydCAqLyB9KTsKKy8qIGhhcm1vbnkgaW1wb3J0ICov
IHZhciBfZXJyb3JfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyA9IF9fd2VicGFja19y
ZXF1aXJlX18oMyk7CisvLyBAdHMtY2hlY2sKKworCisKK2Z1bmN0aW9uKiBjaGVja0ludGVyZmFj
ZU1lbWJlckR1cGxpY2F0aW9uKGRlZnMsIGkpIHsKKyAgY29uc3Qgb3BOYW1lcyA9IG5ldyBTZXQo
Z2V0T3BlcmF0aW9ucyhpKS5tYXAoKG9wKSA9PiBvcC5uYW1lKSk7CisgIGNvbnN0IHBhcnRpYWxz
ID0gZGVmcy5wYXJ0aWFscy5nZXQoaS5uYW1lKSB8fCBbXTsKKyAgY29uc3QgbWl4aW5zID0gZGVm
cy5taXhpbk1hcC5nZXQoaS5uYW1lKSB8fCBbXTsKKyAgZm9yIChjb25zdCBleHQgb2YgWy4uLnBh
cnRpYWxzLCAuLi5taXhpbnNdKSB7CisgICAgY29uc3QgYWRkaXRpb25zID0gZ2V0T3BlcmF0aW9u
cyhleHQpOworICAgIHlpZWxkKiBmb3JFYWNoRXh0ZW5zaW9uKGFkZGl0aW9ucywgb3BOYW1lcywg
ZXh0LCBpKTsKKyAgICBmb3IgKGNvbnN0IGFkZGl0aW9uIG9mIGFkZGl0aW9ucykgeworICAgICAg
b3BOYW1lcy5hZGQoYWRkaXRpb24ubmFtZSk7CisgICAgfQorICB9CisKKyAgZnVuY3Rpb24qIGZv
ckVhY2hFeHRlbnNpb24oYWRkaXRpb25zLCBleGlzdGluZ3MsIGV4dCwgYmFzZSkgeworICAgIGZv
ciAoY29uc3QgYWRkaXRpb24gb2YgYWRkaXRpb25zKSB7CisgICAgICBjb25zdCB7IG5hbWUgfSA9
IGFkZGl0aW9uOworICAgICAgaWYgKG5hbWUgJiYgZXhpc3RpbmdzLmhhcyhuYW1lKSkgeworICAg
ICAgICBjb25zdCBtZXNzYWdlID0gYFRoZSBvcGVyYXRpb24gIiR7bmFtZX0iIGhhcyBhbHJlYWR5
IGJlZW4gZGVmaW5lZCBmb3IgdGhlIGJhc2UgaW50ZXJmYWNlICIke2Jhc2UubmFtZX0iIGVpdGhl
ciBpbiBpdHNlbGYgb3IgaW4gYSBtaXhpbmA7CisgICAgICAgIHlpZWxkICgwLF9lcnJvcl9qc19f
V0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fLnZhbGlkYXRpb25FcnJvcikoCisgICAgICAgICAg
YWRkaXRpb24udG9rZW5zLm5hbWUsCisgICAgICAgICAgZXh0LAorICAgICAgICAgICJuby1jcm9z
cy1vdmVybG9hZCIsCisgICAgICAgICAgbWVzc2FnZQorICAgICAgICApOworICAgICAgfQorICAg
IH0KKyAgfQorCisgIGZ1bmN0aW9uIGdldE9wZXJhdGlvbnMoaSkgeworICAgIHJldHVybiBpLm1l
bWJlcnMuZmlsdGVyKCh7IHR5cGUgfSkgPT4gdHlwZSA9PT0gIm9wZXJhdGlvbiIpOworICB9Cit9
CisKKworLyoqKi8gfSksCisvKiAyNCAqLworLyoqKi8gKChfX3VudXNlZF93ZWJwYWNrX19fd2Vi
cGFja19tb2R1bGVfXywgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykg
PT4geworCitfX3dlYnBhY2tfcmVxdWlyZV9fLnIoX193ZWJwYWNrX2V4cG9ydHNfXyk7CisvKiBo
YXJtb255IGV4cG9ydCAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNf
XywgeworLyogaGFybW9ueSBleHBvcnQgKi8gICAiQ29uc3RydWN0b3IiOiAoKSA9PiAoLyogYmlu
ZGluZyAqLyBDb25zdHJ1Y3RvcikKKy8qIGhhcm1vbnkgZXhwb3J0ICovIH0pOworLyogaGFybW9u
eSBpbXBvcnQgKi8gdmFyIF9iYXNlX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18gPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDYpOworLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9oZWxwZXJz
X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQp
OworCisKKworY2xhc3MgQ29uc3RydWN0b3IgZXh0ZW5kcyBfYmFzZV9qc19fV0VCUEFDS19JTVBP
UlRFRF9NT0RVTEVfMF9fLkJhc2UgeworICAvKioKKyAgICogQHBhcmFtIHtpbXBvcnQoIi4uL3Rv
a2VuaXNlciIpLlRva2VuaXNlcn0gdG9rZW5pc2VyCisgICAqLworICBzdGF0aWMgcGFyc2UodG9r
ZW5pc2VyKSB7CisgICAgY29uc3QgYmFzZSA9IHRva2VuaXNlci5jb25zdW1lKCJjb25zdHJ1Y3Rv
ciIpOworICAgIGlmICghYmFzZSkgeworICAgICAgcmV0dXJuOworICAgIH0KKyAgICAvKiogQHR5
cGUge0Jhc2VbInRva2VucyJdfSAqLworICAgIGNvbnN0IHRva2VucyA9IHsgYmFzZSB9OworICAg
IHRva2Vucy5vcGVuID0KKyAgICAgIHRva2VuaXNlci5jb25zdW1lKCIoIikgfHwKKyAgICAgIHRv
a2VuaXNlci5lcnJvcigiTm8gYXJndW1lbnQgbGlzdCBpbiBjb25zdHJ1Y3RvciIpOworICAgIGNv
bnN0IGFyZ3MgPSAoMCxfaGVscGVyc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fLmFy
Z3VtZW50X2xpc3QpKHRva2VuaXNlcik7CisgICAgdG9rZW5zLmNsb3NlID0KKyAgICAgIHRva2Vu
aXNlci5jb25zdW1lKCIpIikgfHwgdG9rZW5pc2VyLmVycm9yKCJVbnRlcm1pbmF0ZWQgY29uc3Ry
dWN0b3IiKTsKKyAgICB0b2tlbnMudGVybWluYXRpb24gPQorICAgICAgdG9rZW5pc2VyLmNvbnN1
bWUoIjsiKSB8fAorICAgICAgdG9rZW5pc2VyLmVycm9yKCJObyBzZW1pY29sb24gYWZ0ZXIgY29u
c3RydWN0b3IiKTsKKyAgICBjb25zdCByZXQgPSBuZXcgQ29uc3RydWN0b3IoeyBzb3VyY2U6IHRv
a2VuaXNlci5zb3VyY2UsIHRva2VucyB9KTsKKyAgICAoMCxfaGVscGVyc19qc19fV0VCUEFDS19J
TVBPUlRFRF9NT0RVTEVfMV9fLmF1dG9QYXJlbnRlcikocmV0KS5hcmd1bWVudHMgPSBhcmdzOwor
ICAgIHJldHVybiByZXQ7CisgIH0KKworICBnZXQgdHlwZSgpIHsKKyAgICByZXR1cm4gImNvbnN0
cnVjdG9yIjsKKyAgfQorCisgICp2YWxpZGF0ZShkZWZzKSB7CisgICAgaWYgKHRoaXMuaWRsVHlw
ZSkgeworICAgICAgeWllbGQqIHRoaXMuaWRsVHlwZS52YWxpZGF0ZShkZWZzKTsKKyAgICB9Cisg
ICAgZm9yIChjb25zdCBhcmd1bWVudCBvZiB0aGlzLmFyZ3VtZW50cykgeworICAgICAgeWllbGQq
IGFyZ3VtZW50LnZhbGlkYXRlKGRlZnMpOworICAgIH0KKyAgfQorCisgIC8qKiBAcGFyYW0ge2lt
cG9ydCgiLi4vd3JpdGVyLmpzIikuV3JpdGVyfSB3ICovCisgIHdyaXRlKHcpIHsKKyAgICBjb25z
dCB7IHBhcmVudCB9ID0gdGhpczsKKyAgICByZXR1cm4gdy50cy5kZWZpbml0aW9uKAorICAgICAg
dy50cy53cmFwKFsKKyAgICAgICAgdGhpcy5leHRBdHRycy53cml0ZSh3KSwKKyAgICAgICAgdy50
b2tlbih0aGlzLnRva2Vucy5iYXNlLCB3LnRzLm5hbWVsZXNzLCB7IGRhdGE6IHRoaXMsIHBhcmVu
dCB9KSwKKyAgICAgICAgdy50b2tlbih0aGlzLnRva2Vucy5vcGVuKSwKKyAgICAgICAgdy50cy53
cmFwKHRoaXMuYXJndW1lbnRzLm1hcCgoYXJnKSA9PiBhcmcud3JpdGUodykpKSwKKyAgICAgICAg
dy50b2tlbih0aGlzLnRva2Vucy5jbG9zZSksCisgICAgICAgIHcudG9rZW4odGhpcy50b2tlbnMu
dGVybWluYXRpb24pLAorICAgICAgXSksCisgICAgICB7IGRhdGE6IHRoaXMsIHBhcmVudCB9Cisg
ICAgKTsKKyAgfQorfQorCisKKy8qKiovIH0pLAorLyogMjUgKi8KKy8qKiovICgoX191bnVzZWRf
d2VicGFja19fX3dlYnBhY2tfbW9kdWxlX18sIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFj
a19yZXF1aXJlX18pID0+IHsKKworX193ZWJwYWNrX3JlcXVpcmVfXy5yKF9fd2VicGFja19leHBv
cnRzX18pOworLyogaGFybW9ueSBleHBvcnQgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2Vi
cGFja19leHBvcnRzX18sIHsKKy8qIGhhcm1vbnkgZXhwb3J0ICovICAgIk1peGluIjogKCkgPT4g
KC8qIGJpbmRpbmcgKi8gTWl4aW4pCisvKiBoYXJtb255IGV4cG9ydCAqLyB9KTsKKy8qIGhhcm1v
bnkgaW1wb3J0ICovIHZhciBfY29udGFpbmVyX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8w
X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwKTsKKy8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBf
Y29uc3RhbnRfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXyA9IF9fd2VicGFja19yZXF1
aXJlX18oMjEpOworLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9hdHRyaWJ1dGVfanNfX1dFQlBB
Q0tfSU1QT1JURURfTU9EVUxFXzJfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTQpOworLyogaGFy
bW9ueSBpbXBvcnQgKi8gdmFyIF9vcGVyYXRpb25fanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxF
XzNfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTMpOworLyogaGFybW9ueSBpbXBvcnQgKi8gdmFy
IF9oZWxwZXJzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X18gPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDQpOworCisKKworCisKKworY2xhc3MgTWl4aW4gZXh0ZW5kcyBfY29udGFpbmVyX2pz
X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18uQ29udGFpbmVyIHsKKyAgLyoqCisgICAqIEB0
eXBlZGVmIHtpbXBvcnQoIi4uL3Rva2VuaXNlci5qcyIpLlRva2VufSBUb2tlbgorICAgKgorICAg
KiBAcGFyYW0ge2ltcG9ydCgiLi4vdG9rZW5pc2VyLmpzIikuVG9rZW5pc2VyfSB0b2tlbmlzZXIK
KyAgICogQHBhcmFtIHtUb2tlbn0gYmFzZQorICAgKiBAcGFyYW0ge29iamVjdH0gW29wdGlvbnNd
CisgICAqIEBwYXJhbSB7VG9rZW59IFtvcHRpb25zLnBhcnRpYWxdCisgICAqLworICBzdGF0aWMg
cGFyc2UodG9rZW5pc2VyLCBiYXNlLCB7IHBhcnRpYWwgfSA9IHt9KSB7CisgICAgY29uc3QgdG9r
ZW5zID0geyBwYXJ0aWFsLCBiYXNlIH07CisgICAgdG9rZW5zLm1peGluID0gdG9rZW5pc2VyLmNv
bnN1bWUoIm1peGluIik7CisgICAgaWYgKCF0b2tlbnMubWl4aW4pIHsKKyAgICAgIHJldHVybjsK
KyAgICB9CisgICAgcmV0dXJuIF9jb250YWluZXJfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxF
XzBfXy5Db250YWluZXIucGFyc2UoCisgICAgICB0b2tlbmlzZXIsCisgICAgICBuZXcgTWl4aW4o
eyBzb3VyY2U6IHRva2VuaXNlci5zb3VyY2UsIHRva2VucyB9KSwKKyAgICAgIHsKKyAgICAgICAg
dHlwZTogImludGVyZmFjZSBtaXhpbiIsCisgICAgICAgIGFsbG93ZWRNZW1iZXJzOiBbCisgICAg
ICAgICAgW19jb25zdGFudF9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fLkNvbnN0YW50
LnBhcnNlXSwKKyAgICAgICAgICBbX2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxF
XzRfXy5zdHJpbmdpZmllcl0sCisgICAgICAgICAgW19hdHRyaWJ1dGVfanNfX1dFQlBBQ0tfSU1Q
T1JURURfTU9EVUxFXzJfXy5BdHRyaWJ1dGUucGFyc2UsIHsgbm9Jbmhlcml0OiB0cnVlIH1dLAor
ICAgICAgICAgIFtfb3BlcmF0aW9uX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX18uT3Bl
cmF0aW9uLnBhcnNlLCB7IHJlZ3VsYXI6IHRydWUgfV0sCisgICAgICAgIF0sCisgICAgICB9Cisg
ICAgKTsKKyAgfQorCisgIGdldCB0eXBlKCkgeworICAgIHJldHVybiAiaW50ZXJmYWNlIG1peGlu
IjsKKyAgfQorfQorCisKKy8qKiovIH0pLAorLyogMjYgKi8KKy8qKiovICgoX191bnVzZWRfd2Vi
cGFja19fX3dlYnBhY2tfbW9kdWxlX18sIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19y
ZXF1aXJlX18pID0+IHsKKworX193ZWJwYWNrX3JlcXVpcmVfXy5yKF9fd2VicGFja19leHBvcnRz
X18pOworLyogaGFybW9ueSBleHBvcnQgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFj
a19leHBvcnRzX18sIHsKKy8qIGhhcm1vbnkgZXhwb3J0ICovICAgIkRpY3Rpb25hcnkiOiAoKSA9
PiAoLyogYmluZGluZyAqLyBEaWN0aW9uYXJ5KQorLyogaGFybW9ueSBleHBvcnQgKi8gfSk7Cisv
KiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2NvbnRhaW5lcl9qc19fV0VCUEFDS19JTVBPUlRFRF9N
T0RVTEVfMF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMCk7CisvKiBoYXJtb255IGltcG9ydCAq
LyB2YXIgX2ZpZWxkX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18gPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDI3KTsKKy8vIEB0cy1jaGVjaworCisKKworCitjbGFzcyBEaWN0aW9uYXJ5IGV4
dGVuZHMgX2NvbnRhaW5lcl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fLkNvbnRhaW5l
ciB7CisgIC8qKgorICAgKiBAcGFyYW0ge2ltcG9ydCgiLi4vdG9rZW5pc2VyIikuVG9rZW5pc2Vy
fSB0b2tlbmlzZXIKKyAgICogQHBhcmFtIHtvYmplY3R9IFtvcHRpb25zXQorICAgKiBAcGFyYW0g
e2ltcG9ydCgiLi4vdG9rZW5pc2VyLmpzIikuVG9rZW59IFtvcHRpb25zLnBhcnRpYWxdCisgICAq
LworICBzdGF0aWMgcGFyc2UodG9rZW5pc2VyLCB7IHBhcnRpYWwgfSA9IHt9KSB7CisgICAgY29u
c3QgdG9rZW5zID0geyBwYXJ0aWFsIH07CisgICAgdG9rZW5zLmJhc2UgPSB0b2tlbmlzZXIuY29u
c3VtZSgiZGljdGlvbmFyeSIpOworICAgIGlmICghdG9rZW5zLmJhc2UpIHsKKyAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgcmV0dXJuIF9jb250YWluZXJfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9E
VUxFXzBfXy5Db250YWluZXIucGFyc2UoCisgICAgICB0b2tlbmlzZXIsCisgICAgICBuZXcgRGlj
dGlvbmFyeSh7IHNvdXJjZTogdG9rZW5pc2VyLnNvdXJjZSwgdG9rZW5zIH0pLAorICAgICAgewor
ICAgICAgICB0eXBlOiAiZGljdGlvbmFyeSIsCisgICAgICAgIGluaGVyaXRhYmxlOiAhcGFydGlh
bCwKKyAgICAgICAgYWxsb3dlZE1lbWJlcnM6IFtbX2ZpZWxkX2pzX19XRUJQQUNLX0lNUE9SVEVE
X01PRFVMRV8xX18uRmllbGQucGFyc2VdXSwKKyAgICAgIH0KKyAgICApOworICB9CisKKyAgZ2V0
IHR5cGUoKSB7CisgICAgcmV0dXJuICJkaWN0aW9uYXJ5IjsKKyAgfQorfQorCisKKy8qKiovIH0p
LAorLyogMjcgKi8KKy8qKiovICgoX191bnVzZWRfd2VicGFja19fX3dlYnBhY2tfbW9kdWxlX18s
IF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pID0+IHsKKworX193ZWJw
YWNrX3JlcXVpcmVfXy5yKF9fd2VicGFja19leHBvcnRzX18pOworLyogaGFybW9ueSBleHBvcnQg
Ki8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIHsKKy8qIGhhcm1v
bnkgZXhwb3J0ICovICAgIkZpZWxkIjogKCkgPT4gKC8qIGJpbmRpbmcgKi8gRmllbGQpCisvKiBo
YXJtb255IGV4cG9ydCAqLyB9KTsKKy8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfYmFzZV9qc19f
V0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2KTsKKy8q
IGhhcm1vbnkgaW1wb3J0ICovIHZhciBfaGVscGVyc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RV
TEVfMV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTsKKy8qIGhhcm1vbnkgaW1wb3J0ICovIHZh
ciBfZXh0ZW5kZWRfYXR0cmlidXRlc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fID0g
X193ZWJwYWNrX3JlcXVpcmVfXyg4KTsKKy8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfZGVmYXVs
dF9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fID0gX193ZWJwYWNrX3JlcXVpcmVfXygx
Mik7CisKKworCisKKworY2xhc3MgRmllbGQgZXh0ZW5kcyBfYmFzZV9qc19fV0VCUEFDS19JTVBP
UlRFRF9NT0RVTEVfMF9fLkJhc2UgeworICAvKioKKyAgICogQHBhcmFtIHtpbXBvcnQoIi4uL3Rv
a2VuaXNlciIpLlRva2VuaXNlcn0gdG9rZW5pc2VyCisgICAqLworICBzdGF0aWMgcGFyc2UodG9r
ZW5pc2VyKSB7CisgICAgLyoqIEB0eXBlIHtCYXNlWyJ0b2tlbnMiXX0gKi8KKyAgICBjb25zdCB0
b2tlbnMgPSB7fTsKKyAgICBjb25zdCByZXQgPSAoMCxfaGVscGVyc19qc19fV0VCUEFDS19JTVBP
UlRFRF9NT0RVTEVfMV9fLmF1dG9QYXJlbnRlcikobmV3IEZpZWxkKHsgc291cmNlOiB0b2tlbmlz
ZXIuc291cmNlLCB0b2tlbnMgfSkpOworICAgIHJldC5leHRBdHRycyA9IF9leHRlbmRlZF9hdHRy
aWJ1dGVzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18uRXh0ZW5kZWRBdHRyaWJ1dGVz
LnBhcnNlKHRva2VuaXNlcik7CisgICAgdG9rZW5zLnJlcXVpcmVkID0gdG9rZW5pc2VyLmNvbnN1
bWUoInJlcXVpcmVkIik7CisgICAgcmV0LmlkbFR5cGUgPQorICAgICAgKDAsX2hlbHBlcnNfanNf
X1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXy50eXBlX3dpdGhfZXh0ZW5kZWRfYXR0cmlidXRl
cykodG9rZW5pc2VyLCAiZGljdGlvbmFyeS10eXBlIikgfHwKKyAgICAgIHRva2VuaXNlci5lcnJv
cigiRGljdGlvbmFyeSBtZW1iZXIgbGFja3MgYSB0eXBlIik7CisgICAgdG9rZW5zLm5hbWUgPQor
ICAgICAgdG9rZW5pc2VyLmNvbnN1bWVUeXBlKCJpZGVudGlmaWVyIikgfHwKKyAgICAgIHRva2Vu
aXNlci5lcnJvcigiRGljdGlvbmFyeSBtZW1iZXIgbGFja3MgYSBuYW1lIik7CisgICAgcmV0LmRl
ZmF1bHQgPSBfZGVmYXVsdF9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fLkRlZmF1bHQu
cGFyc2UodG9rZW5pc2VyKTsKKyAgICBpZiAodG9rZW5zLnJlcXVpcmVkICYmIHJldC5kZWZhdWx0
KQorICAgICAgdG9rZW5pc2VyLmVycm9yKCJSZXF1aXJlZCBtZW1iZXIgbXVzdCBub3QgaGF2ZSBh
IGRlZmF1bHQiKTsKKyAgICB0b2tlbnMudGVybWluYXRpb24gPQorICAgICAgdG9rZW5pc2VyLmNv
bnN1bWUoIjsiKSB8fAorICAgICAgdG9rZW5pc2VyLmVycm9yKCJVbnRlcm1pbmF0ZWQgZGljdGlv
bmFyeSBtZW1iZXIsIGV4cGVjdGVkIGA7YCIpOworICAgIHJldHVybiByZXQudGhpczsKKyAgfQor
CisgIGdldCB0eXBlKCkgeworICAgIHJldHVybiAiZmllbGQiOworICB9CisgIGdldCBuYW1lKCkg
eworICAgIHJldHVybiAoMCxfaGVscGVyc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9f
LnVuZXNjYXBlKSh0aGlzLnRva2Vucy5uYW1lLnZhbHVlKTsKKyAgfQorICBnZXQgcmVxdWlyZWQo
KSB7CisgICAgcmV0dXJuICEhdGhpcy50b2tlbnMucmVxdWlyZWQ7CisgIH0KKworICAqdmFsaWRh
dGUoZGVmcykgeworICAgIHlpZWxkKiB0aGlzLmlkbFR5cGUudmFsaWRhdGUoZGVmcyk7CisgIH0K
KworICAvKiogQHBhcmFtIHtpbXBvcnQoIi4uL3dyaXRlci5qcyIpLldyaXRlcn0gdyAqLworICB3
cml0ZSh3KSB7CisgICAgY29uc3QgeyBwYXJlbnQgfSA9IHRoaXM7CisgICAgcmV0dXJuIHcudHMu
ZGVmaW5pdGlvbigKKyAgICAgIHcudHMud3JhcChbCisgICAgICAgIHRoaXMuZXh0QXR0cnMud3Jp
dGUodyksCisgICAgICAgIHcudG9rZW4odGhpcy50b2tlbnMucmVxdWlyZWQpLAorICAgICAgICB3
LnRzLnR5cGUodGhpcy5pZGxUeXBlLndyaXRlKHcpKSwKKyAgICAgICAgdy5uYW1lX3Rva2VuKHRo
aXMudG9rZW5zLm5hbWUsIHsgZGF0YTogdGhpcywgcGFyZW50IH0pLAorICAgICAgICB0aGlzLmRl
ZmF1bHQgPyB0aGlzLmRlZmF1bHQud3JpdGUodykgOiAiIiwKKyAgICAgICAgdy50b2tlbih0aGlz
LnRva2Vucy50ZXJtaW5hdGlvbiksCisgICAgICBdKSwKKyAgICAgIHsgZGF0YTogdGhpcywgcGFy
ZW50IH0KKyAgICApOworICB9Cit9CisKKworLyoqKi8gfSksCisvKiAyOCAqLworLyoqKi8gKChf
X3VudXNlZF93ZWJwYWNrX19fd2VicGFja19tb2R1bGVfXywgX193ZWJwYWNrX2V4cG9ydHNfXywg
X193ZWJwYWNrX3JlcXVpcmVfXykgPT4geworCitfX3dlYnBhY2tfcmVxdWlyZV9fLnIoX193ZWJw
YWNrX2V4cG9ydHNfXyk7CisvKiBoYXJtb255IGV4cG9ydCAqLyBfX3dlYnBhY2tfcmVxdWlyZV9f
LmQoX193ZWJwYWNrX2V4cG9ydHNfXywgeworLyogaGFybW9ueSBleHBvcnQgKi8gICAiTmFtZXNw
YWNlIjogKCkgPT4gKC8qIGJpbmRpbmcgKi8gTmFtZXNwYWNlKQorLyogaGFybW9ueSBleHBvcnQg
Ki8gfSk7CisvKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2NvbnRhaW5lcl9qc19fV0VCUEFDS19J
TVBPUlRFRF9NT0RVTEVfMF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMCk7CisvKiBoYXJtb255
IGltcG9ydCAqLyB2YXIgX2F0dHJpYnV0ZV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9f
ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNCk7CisvKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX29w
ZXJhdGlvbl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fID0gX193ZWJwYWNrX3JlcXVp
cmVfXygxMyk7CisvKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2Vycm9yX2pzX19XRUJQQUNLX0lN
UE9SVEVEX01PRFVMRV8zX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpOworLyogaGFybW9ueSBp
bXBvcnQgKi8gdmFyIF9oZWxwZXJzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X18gPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDQpOworLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9jb25zdGFu
dF9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygy
MSk7CisKKworCisKKworCisKK2NsYXNzIE5hbWVzcGFjZSBleHRlbmRzIF9jb250YWluZXJfanNf
X1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXy5Db250YWluZXIgeworICAvKioKKyAgICogQHBh
cmFtIHtpbXBvcnQoIi4uL3Rva2VuaXNlciIpLlRva2VuaXNlcn0gdG9rZW5pc2VyCisgICAqIEBw
YXJhbSB7b2JqZWN0fSBbb3B0aW9uc10KKyAgICogQHBhcmFtIHtpbXBvcnQoIi4uL3Rva2VuaXNl
ci5qcyIpLlRva2VufSBbb3B0aW9ucy5wYXJ0aWFsXQorICAgKi8KKyAgc3RhdGljIHBhcnNlKHRv
a2VuaXNlciwgeyBwYXJ0aWFsIH0gPSB7fSkgeworICAgIGNvbnN0IHRva2VucyA9IHsgcGFydGlh
bCB9OworICAgIHRva2Vucy5iYXNlID0gdG9rZW5pc2VyLmNvbnN1bWUoIm5hbWVzcGFjZSIpOwor
ICAgIGlmICghdG9rZW5zLmJhc2UpIHsKKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgcmV0dXJu
IF9jb250YWluZXJfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXy5Db250YWluZXIucGFy
c2UoCisgICAgICB0b2tlbmlzZXIsCisgICAgICBuZXcgTmFtZXNwYWNlKHsgc291cmNlOiB0b2tl
bmlzZXIuc291cmNlLCB0b2tlbnMgfSksCisgICAgICB7CisgICAgICAgIHR5cGU6ICJuYW1lc3Bh
Y2UiLAorICAgICAgICBhbGxvd2VkTWVtYmVyczogWworICAgICAgICAgIFtfYXR0cmlidXRlX2pz
X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18uQXR0cmlidXRlLnBhcnNlLCB7IG5vSW5oZXJp
dDogdHJ1ZSwgcmVhZG9ubHk6IHRydWUgfV0sCisgICAgICAgICAgW19jb25zdGFudF9qc19fV0VC
UEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fLkNvbnN0YW50LnBhcnNlXSwKKyAgICAgICAgICBbX29w
ZXJhdGlvbl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fLk9wZXJhdGlvbi5wYXJzZSwg
eyByZWd1bGFyOiB0cnVlIH1dLAorICAgICAgICBdLAorICAgICAgfQorICAgICk7CisgIH0KKwor
ICBnZXQgdHlwZSgpIHsKKyAgICByZXR1cm4gIm5hbWVzcGFjZSI7CisgIH0KKworICAqdmFsaWRh
dGUoZGVmcykgeworICAgIGlmICgKKyAgICAgICF0aGlzLnBhcnRpYWwgJiYKKyAgICAgIHRoaXMu
ZXh0QXR0cnMuZXZlcnkoKGV4dEF0dHIpID0+IGV4dEF0dHIubmFtZSAhPT0gIkV4cG9zZWQiKQor
ICAgICkgeworICAgICAgY29uc3QgbWVzc2FnZSA9IGBOYW1lc3BhY2VzIG11c3QgaGF2ZSBbRXhw
b3NlZF0gZXh0ZW5kZWQgYXR0cmlidXRlLiBcCitUbyBmaXgsIGFkZCwgZm9yIGV4YW1wbGUsIFtF
eHBvc2VkPVdpbmRvd10uIFBsZWFzZSBhbHNvIGNvbnNpZGVyIGNhcmVmdWxseSBcCitpZiB5b3Vy
IG5hbWVzcGFjZSBzaG91bGQgYWxzbyBiZSBleHBvc2VkIGluIGEgV29ya2VyIHNjb3BlLiBSZWZl
ciB0byB0aGUgXAorW1dlYklETCBzcGVjIHNlY3Rpb24gb24gRXhwb3NlZF0oaHR0cHM6Ly9oZXlj
YW0uZ2l0aHViLmlvL3dlYmlkbC8jRXhwb3NlZCkgXAorZm9yIG1vcmUgaW5mb3JtYXRpb24uYDsK
KyAgICAgIHlpZWxkICgwLF9lcnJvcl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fLnZh
bGlkYXRpb25FcnJvcikoCisgICAgICAgIHRoaXMudG9rZW5zLm5hbWUsCisgICAgICAgIHRoaXMs
CisgICAgICAgICJyZXF1aXJlLWV4cG9zZWQiLAorICAgICAgICBtZXNzYWdlLAorICAgICAgICB7
CisgICAgICAgICAgYXV0b2ZpeDogKDAsX2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9E
VUxFXzRfXy5hdXRvZml4QWRkRXhwb3NlZFdpbmRvdykodGhpcyksCisgICAgICAgIH0KKyAgICAg
ICk7CisgICAgfQorICAgIHlpZWxkKiBzdXBlci52YWxpZGF0ZShkZWZzKTsKKyAgfQorfQorCisK
Ky8qKiovIH0pLAorLyogMjkgKi8KKy8qKiovICgoX191bnVzZWRfd2VicGFja19fX3dlYnBhY2tf
bW9kdWxlX18sIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pID0+IHsK
KworX193ZWJwYWNrX3JlcXVpcmVfXy5yKF9fd2VicGFja19leHBvcnRzX18pOworLyogaGFybW9u
eSBleHBvcnQgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIHsK
Ky8qIGhhcm1vbnkgZXhwb3J0ICovICAgIkNhbGxiYWNrSW50ZXJmYWNlIjogKCkgPT4gKC8qIGJp
bmRpbmcgKi8gQ2FsbGJhY2tJbnRlcmZhY2UpCisvKiBoYXJtb255IGV4cG9ydCAqLyB9KTsKKy8q
IGhhcm1vbnkgaW1wb3J0ICovIHZhciBfY29udGFpbmVyX2pzX19XRUJQQUNLX0lNUE9SVEVEX01P
RFVMRV8wX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwKTsKKy8qIGhhcm1vbnkgaW1wb3J0ICov
IHZhciBfb3BlcmF0aW9uX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18gPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDEzKTsKKy8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfY29uc3RhbnRfanNf
X1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMjEpOwor
Ly8gQHRzLWNoZWNrCisKKworCisKKworY2xhc3MgQ2FsbGJhY2tJbnRlcmZhY2UgZXh0ZW5kcyBf
Y29udGFpbmVyX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18uQ29udGFpbmVyIHsKKyAg
LyoqCisgICAqIEBwYXJhbSB7aW1wb3J0KCIuLi90b2tlbmlzZXIiKS5Ub2tlbmlzZXJ9IHRva2Vu
aXNlcgorICAgKi8KKyAgc3RhdGljIHBhcnNlKHRva2VuaXNlciwgY2FsbGJhY2ssIHsgcGFydGlh
bCA9IG51bGwgfSA9IHt9KSB7CisgICAgY29uc3QgdG9rZW5zID0geyBjYWxsYmFjayB9OworICAg
IHRva2Vucy5iYXNlID0gdG9rZW5pc2VyLmNvbnN1bWUoImludGVyZmFjZSIpOworICAgIGlmICgh
dG9rZW5zLmJhc2UpIHsKKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgcmV0dXJuIF9jb250YWlu
ZXJfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXy5Db250YWluZXIucGFyc2UoCisgICAg
ICB0b2tlbmlzZXIsCisgICAgICBuZXcgQ2FsbGJhY2tJbnRlcmZhY2UoeyBzb3VyY2U6IHRva2Vu
aXNlci5zb3VyY2UsIHRva2VucyB9KSwKKyAgICAgIHsKKyAgICAgICAgdHlwZTogImNhbGxiYWNr
IGludGVyZmFjZSIsCisgICAgICAgIGluaGVyaXRhYmxlOiAhcGFydGlhbCwKKyAgICAgICAgYWxs
b3dlZE1lbWJlcnM6IFsKKyAgICAgICAgICBbX2NvbnN0YW50X2pzX19XRUJQQUNLX0lNUE9SVEVE
X01PRFVMRV8yX18uQ29uc3RhbnQucGFyc2VdLAorICAgICAgICAgIFtfb3BlcmF0aW9uX2pzX19X
RUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18uT3BlcmF0aW9uLnBhcnNlLCB7IHJlZ3VsYXI6IHRy
dWUgfV0sCisgICAgICAgIF0sCisgICAgICB9CisgICAgKTsKKyAgfQorCisgIGdldCB0eXBlKCkg
eworICAgIHJldHVybiAiY2FsbGJhY2sgaW50ZXJmYWNlIjsKKyAgfQorfQorCisKKy8qKiovIH0p
LAorLyogMzAgKi8KKy8qKiovICgoX191bnVzZWRfd2VicGFja19fX3dlYnBhY2tfbW9kdWxlX18s
IF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pID0+IHsKKworX193ZWJw
YWNrX3JlcXVpcmVfXy5yKF9fd2VicGFja19leHBvcnRzX18pOworLyogaGFybW9ueSBleHBvcnQg
Ki8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIHsKKy8qIGhhcm1v
bnkgZXhwb3J0ICovICAgIldyaXRlciI6ICgpID0+ICgvKiBiaW5kaW5nICovIFdyaXRlciksCisv
KiBoYXJtb255IGV4cG9ydCAqLyAgICJ3cml0ZSI6ICgpID0+ICgvKiBiaW5kaW5nICovIHdyaXRl
KQorLyogaGFybW9ueSBleHBvcnQgKi8gfSk7CitmdW5jdGlvbiBub29wKGFyZykgeworICByZXR1
cm4gYXJnOworfQorCitjb25zdCB0ZW1wbGF0ZXMgPSB7CisgIHdyYXA6IChpdGVtcykgPT4gaXRl
bXMuam9pbigiIiksCisgIHRyaXZpYTogbm9vcCwKKyAgbmFtZTogbm9vcCwKKyAgcmVmZXJlbmNl
OiBub29wLAorICB0eXBlOiBub29wLAorICBnZW5lcmljOiBub29wLAorICBuYW1lbGVzczogbm9v
cCwKKyAgaW5oZXJpdGFuY2U6IG5vb3AsCisgIGRlZmluaXRpb246IG5vb3AsCisgIGV4dGVuZGVk
QXR0cmlidXRlOiBub29wLAorICBleHRlbmRlZEF0dHJpYnV0ZVJlZmVyZW5jZTogbm9vcCwKK307
CisKK2NsYXNzIFdyaXRlciB7CisgIGNvbnN0cnVjdG9yKHRzKSB7CisgICAgdGhpcy50cyA9IE9i
amVjdC5hc3NpZ24oe30sIHRlbXBsYXRlcywgdHMpOworICB9CisKKyAgcmVmZXJlbmNlKHJhdywg
eyB1bmVzY2FwZWQsIGNvbnRleHQgfSkgeworICAgIGlmICghdW5lc2NhcGVkKSB7CisgICAgICB1
bmVzY2FwZWQgPSByYXcuc3RhcnRzV2l0aCgiXyIpID8gcmF3LnNsaWNlKDEpIDogcmF3OworICAg
IH0KKyAgICByZXR1cm4gdGhpcy50cy5yZWZlcmVuY2UocmF3LCB1bmVzY2FwZWQsIGNvbnRleHQp
OworICB9CisKKyAgdG9rZW4odCwgd3JhcHBlciA9IG5vb3AsIC4uLmFyZ3MpIHsKKyAgICBpZiAo
IXQpIHsKKyAgICAgIHJldHVybiAiIjsKKyAgICB9CisgICAgY29uc3QgdmFsdWUgPSB3cmFwcGVy
KHQudmFsdWUsIC4uLmFyZ3MpOworICAgIHJldHVybiB0aGlzLnRzLndyYXAoW3RoaXMudHMudHJp
dmlhKHQudHJpdmlhKSwgdmFsdWVdKTsKKyAgfQorCisgIHJlZmVyZW5jZV90b2tlbih0LCBjb250
ZXh0KSB7CisgICAgcmV0dXJuIHRoaXMudG9rZW4odCwgdGhpcy5yZWZlcmVuY2UuYmluZCh0aGlz
KSwgeyBjb250ZXh0IH0pOworICB9CisKKyAgbmFtZV90b2tlbih0LCBhcmcpIHsKKyAgICByZXR1
cm4gdGhpcy50b2tlbih0LCB0aGlzLnRzLm5hbWUsIGFyZyk7CisgIH0KKworICBpZGVudGlmaWVy
KGlkLCBjb250ZXh0KSB7CisgICAgcmV0dXJuIHRoaXMudHMud3JhcChbCisgICAgICB0aGlzLnJl
ZmVyZW5jZV90b2tlbihpZC50b2tlbnMudmFsdWUsIGNvbnRleHQpLAorICAgICAgdGhpcy50b2tl
bihpZC50b2tlbnMuc2VwYXJhdG9yKSwKKyAgICBdKTsKKyAgfQorfQorCitmdW5jdGlvbiB3cml0
ZShhc3QsIHsgdGVtcGxhdGVzOiB0cyA9IHRlbXBsYXRlcyB9ID0ge30pIHsKKyAgdHMgPSBPYmpl
Y3QuYXNzaWduKHt9LCB0ZW1wbGF0ZXMsIHRzKTsKKworICBjb25zdCB3ID0gbmV3IFdyaXRlcih0
cyk7CisKKyAgZnVuY3Rpb24gZGlzcGF0Y2goaXQpIHsKKyAgICBpZiAoaXQudHlwZSA9PT0gImVv
ZiIpIHsKKyAgICAgIHJldHVybiB0cy50cml2aWEoaXQudHJpdmlhKTsKKyAgICB9CisgICAgcmV0
dXJuIGl0LndyaXRlKHcpOworICB9CisgIHJldHVybiB0cy53cmFwKGFzdC5tYXAoZGlzcGF0Y2gp
KTsKK30KKworCisvKioqLyB9KSwKKy8qIDMxICovCisvKioqLyAoKF9fdW51c2VkX3dlYnBhY2tf
X193ZWJwYWNrX21vZHVsZV9fLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWly
ZV9fKSA9PiB7CisKK19fd2VicGFja19yZXF1aXJlX18ucihfX3dlYnBhY2tfZXhwb3J0c19fKTsK
Ky8qIGhhcm1vbnkgZXhwb3J0ICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhw
b3J0c19fLCB7CisvKiBoYXJtb255IGV4cG9ydCAqLyAgICJ2YWxpZGF0ZSI6ICgpID0+ICgvKiBi
aW5kaW5nICovIHZhbGlkYXRlKQorLyogaGFybW9ueSBleHBvcnQgKi8gfSk7CisvKiBoYXJtb255
IGltcG9ydCAqLyB2YXIgX2Vycm9yX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18gPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDMpOworCisKK2Z1bmN0aW9uIGdldE1peGluTWFwKGFsbCwgdW5p
cXVlKSB7CisgIGNvbnN0IG1hcCA9IG5ldyBNYXAoKTsKKyAgY29uc3QgaW5jbHVkZXMgPSBhbGwu
ZmlsdGVyKChkZWYpID0+IGRlZi50eXBlID09PSAiaW5jbHVkZXMiKTsKKyAgZm9yIChjb25zdCBp
bmNsdWRlIG9mIGluY2x1ZGVzKSB7CisgICAgY29uc3QgbWl4aW4gPSB1bmlxdWUuZ2V0KGluY2x1
ZGUuaW5jbHVkZXMpOworICAgIGlmICghbWl4aW4pIHsKKyAgICAgIGNvbnRpbnVlOworICAgIH0K
KyAgICBjb25zdCBhcnJheSA9IG1hcC5nZXQoaW5jbHVkZS50YXJnZXQpOworICAgIGlmIChhcnJh
eSkgeworICAgICAgYXJyYXkucHVzaChtaXhpbik7CisgICAgfSBlbHNlIHsKKyAgICAgIG1hcC5z
ZXQoaW5jbHVkZS50YXJnZXQsIFttaXhpbl0pOworICAgIH0KKyAgfQorICByZXR1cm4gbWFwOwor
fQorCisvKioKKyAqIEB0eXBlZGVmIHtSZXR1cm5UeXBlPHR5cGVvZiBncm91cERlZmluaXRpb25z
Pn0gRGVmaW5pdGlvbnMKKyAqLworZnVuY3Rpb24gZ3JvdXBEZWZpbml0aW9ucyhhbGwpIHsKKyAg
Y29uc3QgdW5pcXVlID0gbmV3IE1hcCgpOworICBjb25zdCBkdXBsaWNhdGVzID0gbmV3IFNldCgp
OworICBjb25zdCBwYXJ0aWFscyA9IG5ldyBNYXAoKTsKKyAgZm9yIChjb25zdCBkZWYgb2YgYWxs
KSB7CisgICAgaWYgKGRlZi5wYXJ0aWFsKSB7CisgICAgICBjb25zdCBhcnJheSA9IHBhcnRpYWxz
LmdldChkZWYubmFtZSk7CisgICAgICBpZiAoYXJyYXkpIHsKKyAgICAgICAgYXJyYXkucHVzaChk
ZWYpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcGFydGlhbHMuc2V0KGRlZi5uYW1lLCBbZGVm
XSk7CisgICAgICB9CisgICAgICBjb250aW51ZTsKKyAgICB9CisgICAgaWYgKCFkZWYubmFtZSkg
eworICAgICAgY29udGludWU7CisgICAgfQorICAgIGlmICghdW5pcXVlLmhhcyhkZWYubmFtZSkp
IHsKKyAgICAgIHVuaXF1ZS5zZXQoZGVmLm5hbWUsIGRlZik7CisgICAgfSBlbHNlIHsKKyAgICAg
IGR1cGxpY2F0ZXMuYWRkKGRlZik7CisgICAgfQorICB9CisgIHJldHVybiB7CisgICAgYWxsLAor
ICAgIHVuaXF1ZSwKKyAgICBwYXJ0aWFscywKKyAgICBkdXBsaWNhdGVzLAorICAgIG1peGluTWFw
OiBnZXRNaXhpbk1hcChhbGwsIHVuaXF1ZSksCisgICAgY2FjaGU6IHsKKyAgICAgIHR5cGVkZWZJ
bmNsdWRlc0RpY3Rpb25hcnk6IG5ldyBXZWFrTWFwKCksCisgICAgICBkaWN0aW9uYXJ5SW5jbHVk
ZXNSZXF1aXJlZEZpZWxkOiBuZXcgV2Vha01hcCgpLAorICAgIH0sCisgIH07Cit9CisKK2Z1bmN0
aW9uKiBjaGVja0R1cGxpY2F0ZWROYW1lcyh7IHVuaXF1ZSwgZHVwbGljYXRlcyB9KSB7CisgIGZv
ciAoY29uc3QgZHVwIG9mIGR1cGxpY2F0ZXMpIHsKKyAgICBjb25zdCB7IG5hbWUgfSA9IGR1cDsK
KyAgICBjb25zdCBtZXNzYWdlID0gYFRoZSBuYW1lICIke25hbWV9IiBvZiB0eXBlICIkeworICAg
ICAgdW5pcXVlLmdldChuYW1lKS50eXBlCisgICAgfSIgd2FzIGFscmVhZHkgc2VlbmA7CisgICAg
eWllbGQgKDAsX2Vycm9yX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18udmFsaWRhdGlv
bkVycm9yKShkdXAudG9rZW5zLm5hbWUsIGR1cCwgIm5vLWR1cGxpY2F0ZSIsIG1lc3NhZ2UpOwor
ICB9Cit9CisKK2Z1bmN0aW9uKiB2YWxpZGF0ZUl0ZXJhYmxlKGFzdCkgeworICBjb25zdCBkZWZz
ID0gZ3JvdXBEZWZpbml0aW9ucyhhc3QpOworICBmb3IgKGNvbnN0IGRlZiBvZiBkZWZzLmFsbCkg
eworICAgIGlmIChkZWYudmFsaWRhdGUpIHsKKyAgICAgIHlpZWxkKiBkZWYudmFsaWRhdGUoZGVm
cyk7CisgICAgfQorICB9CisgIHlpZWxkKiBjaGVja0R1cGxpY2F0ZWROYW1lcyhkZWZzKTsKK30K
KworLy8gUmVtb3ZlIHRoaXMgb25jZSBhbGwgb2Ygb3VyIHN1cHBvcnQgdGFyZ2V0cyBleHBvc2Ug
YC5mbGF0KClgIGJ5IGRlZmF1bHQKK2Z1bmN0aW9uIGZsYXR0ZW4oYXJyYXkpIHsKKyAgaWYgKGFy
cmF5LmZsYXQpIHsKKyAgICByZXR1cm4gYXJyYXkuZmxhdCgpOworICB9CisgIHJldHVybiBbXS5j
b25jYXQoLi4uYXJyYXkpOworfQorCisvKioKKyAqIEBwYXJhbSB7Kn0gYXN0IEFTVCBvciBhcnJh
eSBvZiBBU1RzCisgKi8KK2Z1bmN0aW9uIHZhbGlkYXRlKGFzdCkgeworICByZXR1cm4gWy4uLnZh
bGlkYXRlSXRlcmFibGUoZmxhdHRlbihhc3QpKV07Cit9CisKKworLyoqKi8gfSkKKy8qKioqKiov
IAldKTsKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKiovCisvKioqKioqLyAJLy8gVGhlIG1vZHVsZSBjYWNoZQor
LyoqKioqKi8gCXZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTsKKy8qKioqKiovIAkK
Ky8qKioqKiovIAkvLyBUaGUgcmVxdWlyZSBmdW5jdGlvbgorLyoqKioqKi8gCWZ1bmN0aW9uIF9f
d2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHsKKy8qKioqKiovIAkJLy8gQ2hlY2sgaWYgbW9k
dWxlIGlzIGluIGNhY2hlCisvKioqKioqLyAJCXZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tf
bW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdOworLyoqKioqKi8gCQlpZiAoY2FjaGVkTW9kdWxlICE9
PSB1bmRlZmluZWQpIHsKKy8qKioqKiovIAkJCXJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0czsK
Ky8qKioqKiovIAkJfQorLyoqKioqKi8gCQkvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0
IGl0IGludG8gdGhlIGNhY2hlKQorLyoqKioqKi8gCQl2YXIgbW9kdWxlID0gX193ZWJwYWNrX21v
ZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHsKKy8qKioqKiovIAkJCS8vIG5vIG1vZHVsZS5pZCBu
ZWVkZWQKKy8qKioqKiovIAkJCS8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkCisvKioqKioqLyAJ
CQlleHBvcnRzOiB7fQorLyoqKioqKi8gCQl9OworLyoqKioqKi8gCQorLyoqKioqKi8gCQkvLyBF
eGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb24KKy8qKioqKiovIAkJX193ZWJwYWNrX21vZHVsZXNf
X1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7
CisvKioqKioqLyAJCisvKioqKioqLyAJCS8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9k
dWxlCisvKioqKioqLyAJCXJldHVybiBtb2R1bGUuZXhwb3J0czsKKy8qKioqKiovIAl9CisvKioq
KioqLyAJCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqLworLyoqKioqKi8gCS8qIHdlYnBhY2svcnVudGltZS9k
ZWZpbmUgcHJvcGVydHkgZ2V0dGVycyAqLworLyoqKioqKi8gCSgoKSA9PiB7CisvKioqKioqLyAJ
CS8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHMKKy8qKioqKiov
IAkJX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gKGV4cG9ydHMsIGRlZmluaXRpb24pID0+IHsKKy8q
KioqKiovIAkJCWZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHsKKy8qKioqKiovIAkJCQlpZihf
X3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVp
cmVfXy5vKGV4cG9ydHMsIGtleSkpIHsKKy8qKioqKiovIAkJCQkJT2JqZWN0LmRlZmluZVByb3Bl
cnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5
XSB9KTsKKy8qKioqKiovIAkJCQl9CisvKioqKioqLyAJCQl9CisvKioqKioqLyAJCX07CisvKioq
KioqLyAJfSkoKTsKKy8qKioqKiovIAkKKy8qKioqKiovIAkvKiB3ZWJwYWNrL3J1bnRpbWUvaGFz
T3duUHJvcGVydHkgc2hvcnRoYW5kICovCisvKioqKioqLyAJKCgpID0+IHsKKy8qKioqKiovIAkJ
X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gKG9iaiwgcHJvcCkgPT4gKE9iamVjdC5wcm90b3R5cGUu
aGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApKQorLyoqKioqKi8gCX0pKCk7CisvKioqKioq
LyAJCisvKioqKioqLyAJLyogd2VicGFjay9ydW50aW1lL21ha2UgbmFtZXNwYWNlIG9iamVjdCAq
LworLyoqKioqKi8gCSgoKSA9PiB7CisvKioqKioqLyAJCS8vIGRlZmluZSBfX2VzTW9kdWxlIG9u
IGV4cG9ydHMKKy8qKioqKiovIAkJX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gKGV4cG9ydHMpID0+
IHsKKy8qKioqKiovIAkJCWlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJv
bC50b1N0cmluZ1RhZykgeworLyoqKioqKi8gCQkJCU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBv
cnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pOworLyoqKioqKi8g
CQkJfQorLyoqKioqKi8gCQkJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9k
dWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTsKKy8qKioqKiovIAkJfTsKKy8qKioqKiovIAl9KSgpOwor
LyoqKioqKi8gCQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3ZhciBfX3dlYnBhY2tfZXhwb3J0c19fID0g
e307CisvLyBUaGlzIGVudHJ5IG5lZWQgdG8gYmUgd3JhcHBlZCBpbiBhbiBJSUZFIGJlY2F1c2Ug
aXQgbmVlZCB0byBiZSBpc29sYXRlZCBhZ2FpbnN0IG90aGVyIG1vZHVsZXMgaW4gdGhlIGNodW5r
LgorKCgpID0+IHsKK19fd2VicGFja19yZXF1aXJlX18ucihfX3dlYnBhY2tfZXhwb3J0c19fKTsK
Ky8qIGhhcm1vbnkgZXhwb3J0ICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhw
b3J0c19fLCB7CisvKiBoYXJtb255IGV4cG9ydCAqLyAgICJwYXJzZSI6ICgpID0+ICgvKiByZWV4
cG9ydCBzYWZlICovIF9saWJfd2ViaWRsMl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9f
LnBhcnNlKSwKKy8qIGhhcm1vbnkgZXhwb3J0ICovICAgIndyaXRlIjogKCkgPT4gKC8qIHJlZXhw
b3J0IHNhZmUgKi8gX2xpYl93cml0ZXJfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXy53
cml0ZSksCisvKiBoYXJtb255IGV4cG9ydCAqLyAgICJ2YWxpZGF0ZSI6ICgpID0+ICgvKiByZWV4
cG9ydCBzYWZlICovIF9saWJfdmFsaWRhdG9yX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8y
X18udmFsaWRhdGUpLAorLyogaGFybW9ueSBleHBvcnQgKi8gICAiV2ViSURMUGFyc2VFcnJvciI6
ICgpID0+ICgvKiByZWV4cG9ydCBzYWZlICovIF9saWJfdG9rZW5pc2VyX2pzX19XRUJQQUNLX0lN
UE9SVEVEX01PRFVMRV8zX18uV2ViSURMUGFyc2VFcnJvcikKKy8qIGhhcm1vbnkgZXhwb3J0ICov
IH0pOworLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9saWJfd2ViaWRsMl9qc19fV0VCUEFDS19J
TVBPUlRFRF9NT0RVTEVfMF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTsKKy8qIGhhcm1vbnkg
aW1wb3J0ICovIHZhciBfbGliX3dyaXRlcl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9f
ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMCk7CisvKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2xp
Yl92YWxpZGF0b3JfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXyA9IF9fd2VicGFja19y
ZXF1aXJlX18oMzEpOworLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9saWJfdG9rZW5pc2VyX2pz
X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpOwor
CisKKworCisKK30pKCk7CisKKy8qKioqKiovIAlyZXR1cm4gX193ZWJwYWNrX2V4cG9ydHNfXzsK
Ky8qKioqKiovIH0pKCkKKzsKK30pOworLy8jIHNvdXJjZU1hcHBpbmdVUkw9d2ViaWRsMi5qcy5t
YXAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9y
ZXNvdXJjZXMvaWRsaGFybmVzcy5qcyBiL0xheW91dFRlc3RzL3Jlc291cmNlcy9pZGxoYXJuZXNz
LmpzCmluZGV4IDI1YjlhZjVjM2U3OWRjY2QwYjEyMjIzNWI5MGQ2MDAwNmEzNjNkZWUuLjZhZWMw
MmUzYWJlMDZiMjBkMTFiYjQ2YmZkNWI3NDIzMjY4NTFjODYgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3Jlc291cmNlcy9pZGxoYXJuZXNzLmpzCisrKyBiL0xheW91dFRlc3RzL3Jlc291cmNlcy9p
ZGxoYXJuZXNzLmpzCkBAIC0xLDE0ICsxLDQgQEAKLS8qCi1EaXN0cmlidXRlZCB1bmRlciBib3Ro
IHRoZSBXM0MgVGVzdCBTdWl0ZSBMaWNlbnNlIFsxXSBhbmQgdGhlIFczQwotMy1jbGF1c2UgQlNE
IExpY2Vuc2UgWzJdLiBUbyBjb250cmlidXRlIHRvIGEgVzNDIFRlc3QgU3VpdGUsIHNlZSB0aGUK
LXBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgotCi1bMV0gaHR0cDovL3d3dy53
My5vcmcvQ29uc29ydGl1bS9MZWdhbC8yMDA4LzA0LXRlc3RzdWl0ZS1saWNlbnNlCi1bMl0gaHR0
cDovL3d3dy53My5vcmcvQ29uc29ydGl1bS9MZWdhbC8yMDA4LzAzLWJzZC1saWNlbnNlCi1bM10g
aHR0cDovL3d3dy53My5vcmcvMjAwNC8xMC8yNy10ZXN0Y2FzZXMKLSovCi0KLS8qIEZvciB1c2Vy
IGRvY3VtZW50YXRpb24gc2VlIGRvY3MvaWRsaGFybmVzcy5tZCAqLworLyogRm9yIHVzZXIgZG9j
dW1lbnRhdGlvbiBzZWUgZG9jcy9fd3JpdGluZy10ZXN0cy9pZGxoYXJuZXNzLm1kICovCiAKIC8q
KgogICogTm90ZXMgZm9yIHBlb3BsZSB3aG8gd2FudCB0byBlZGl0IHRoaXMgZmlsZSAobm90IGp1
c3QgdXNlIGl0IGFzIGEgbGlicmFyeSk6CkBAIC00OCwyMCArMzgsMzAgQEAgcG9saWNpZXMgYW5k
IGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgKi8KIChmdW5jdGlvbigpewogInVzZSBzdHJpY3Qi
OworLy8gU3VwcG9ydCBzdWJzZXRUZXN0QnlLZXkgZnJvbSAvY29tbW9uL3N1YnNldC10ZXN0cy1i
eS1rZXkuanMsIGJ1dCBtYWtlIGl0IG9wdGlvbmFsCitpZiAoISgnc3Vic2V0VGVzdEJ5S2V5JyBp
biBzZWxmKSkgeworICAgIHNlbGYuc3Vic2V0VGVzdEJ5S2V5ID0gZnVuY3Rpb24oa2V5LCBjYWxs
YmFjaywgLi4uYXJncykgeworICAgICAgcmV0dXJuIGNhbGxiYWNrKC4uLmFyZ3MpOworICAgIH0K
KyAgICBzZWxmLnNob3VsZFJ1blN1YlRlc3QgPSAoKSA9PiB0cnVlOworfQogLy8vIEhlbHBlcnMg
Ly8vCiBmdW5jdGlvbiBjb25zdFZhbHVlIChjbnQpCi0vL0B7CiB7CiAgICAgaWYgKGNudC50eXBl
ID09PSAibnVsbCIpIHJldHVybiBudWxsOwogICAgIGlmIChjbnQudHlwZSA9PT0gIk5hTiIpIHJl
dHVybiBOYU47CiAgICAgaWYgKGNudC50eXBlID09PSAiSW5maW5pdHkiKSByZXR1cm4gY250Lm5l
Z2F0aXZlID8gLUluZmluaXR5IDogSW5maW5pdHk7CisgICAgaWYgKGNudC50eXBlID09PSAibnVt
YmVyIikgcmV0dXJuICtjbnQudmFsdWU7CiAgICAgcmV0dXJuIGNudC52YWx1ZTsKIH0KIAotLy9A
fQogZnVuY3Rpb24gbWluT3ZlcmxvYWRMZW5ndGgob3ZlcmxvYWRzKQotLy9AewogeworICAgIC8v
ICJUaGUgdmFsdWUgb2YgdGhlIEZ1bmN0aW9uIG9iamVjdOKAmXMg4oCcbGVuZ3Ro4oCdIHByb3Bl
cnR5IGlzCisgICAgLy8gYSBOdW1iZXIgZGV0ZXJtaW5lZCBhcyBmb2xsb3dzOgorICAgIC8vICIu
IC4gLgorICAgIC8vICJSZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgc2hvcnRlc3QgYXJndW1lbnQg
bGlzdCBvZiB0aGUKKyAgICAvLyBlbnRyaWVzIGluIFMuIgogICAgIGlmICghb3ZlcmxvYWRzLmxl
bmd0aCkgewogICAgICAgICByZXR1cm4gMDsKICAgICB9CkBAIC03NCwxOCArNzQsNDMgQEAgZnVu
Y3Rpb24gbWluT3ZlcmxvYWRMZW5ndGgob3ZlcmxvYWRzKQogICAgIC5yZWR1Y2UoZnVuY3Rpb24o
bSwgbikgeyByZXR1cm4gTWF0aC5taW4obSwgbik7IH0pOwogfQogCi0vL0B9Ci1mdW5jdGlvbiB0
aHJvd09yUmVqZWN0KGFfdGVzdCwgb3BlcmF0aW9uLCBmbiwgb2JqLCBhcmdzLCAgbWVzc2FnZSwg
Y2IpCi0vL0B7CisvLyBBIGhlbHBlciB0byBnZXQgdGhlIGdsb2JhbCBvZiBhIEZ1bmN0aW9uIG9i
amVjdC4gIFRoaXMgaXMgbmVlZGVkIHRvIGRldGVybWluZQorLy8gd2hpY2ggZ2xvYmFsIGV4Y2Vw
dGlvbnMgdGhlIGZ1bmN0aW9uIHRocm93cyB3aWxsIGNvbWUgZnJvbS4KK2Z1bmN0aW9uIGdsb2Jh
bE9mKGZ1bmMpCit7CisgICAgdHJ5IHsKKyAgICAgICAgLy8gVXNlIHRoZSBmYWN0IHRoYXQgLmNv
bnN0cnVjdG9yIGZvciBhIEZ1bmN0aW9uIG9iamVjdCBpcyBub3JtYWxseSB0aGUKKyAgICAgICAg
Ly8gRnVuY3Rpb24gY29uc3RydWN0b3IsIHdoaWNoIGNhbiBiZSB1c2VkIHRvIG1pbnQgYSBuZXcg
ZnVuY3Rpb24gaW4gdGhlCisgICAgICAgIC8vIHJpZ2h0IGdsb2JhbC4KKyAgICAgICAgcmV0dXJu
IGZ1bmMuY29uc3RydWN0b3IoInJldHVybiB0aGlzOyIpKCk7CisgICAgfSBjYXRjaCAoZSkgewor
ICAgIH0KKyAgICAvLyBJZiB0aGUgYWJvdmUgZmFpbHMsIGJlY2F1c2Ugc29tZW9uZSBnYXZlIHVz
IGEgbm9uLWZ1bmN0aW9uLCBvciBhIGZ1bmN0aW9uCisgICAgLy8gd2l0aCBhIHdlaXJkIHByb3Rv
IGNoYWluIG9yIHdlaXJkIC5jb25zdHJ1Y3RvciBwcm9wZXJ0eSwganVzdCBmYWxsIGJhY2sKKyAg
ICAvLyB0byAnc2VsZicuCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy8vIGh0dHBzOi8vZXNkaXNj
dXNzLm9yZy90b3BpYy9pc2NvbnN0cnVjdG9yI2NvbnRlbnQtMTEKK2Z1bmN0aW9uIGlzQ29uc3Ry
dWN0b3IobykgeworICAgIHRyeSB7CisgICAgICAgIG5ldyAobmV3IFByb3h5KG8sIHtjb25zdHJ1
Y3Q6ICgpID0+ICh7fSl9KSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0gY2F0Y2goZSkg
eworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitmdW5jdGlvbiB0aHJvd09yUmVq
ZWN0KGFfdGVzdCwgb3BlcmF0aW9uLCBmbiwgb2JqLCBhcmdzLCBtZXNzYWdlLCBjYikKIHsKICAg
ICBpZiAob3BlcmF0aW9uLmlkbFR5cGUuZ2VuZXJpYyAhPT0gIlByb21pc2UiKSB7Ci0gICAgICAg
IGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsKKyAgICAgICAgYXNz
ZXJ0X3Rocm93c19qcyhnbG9iYWxPZihmbikuVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKICAgICAg
ICAgICAgIGZuLmFwcGx5KG9iaiwgYXJncyk7CiAgICAgICAgIH0sIG1lc3NhZ2UpOwogICAgICAg
ICBjYigpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBwcm9taXNl
X3JlamVjdHMoYV90ZXN0LCBuZXcgVHlwZUVycm9yKCksIGZuLmFwcGx5KG9iaiwgYXJncykpLnRo
ZW4oY2IsIGNiKTsKKyAgICAgICAgICAgIHByb21pc2VfcmVqZWN0c19qcyhhX3Rlc3QsIFR5cGVF
cnJvciwgZm4uYXBwbHkob2JqLCBhcmdzKSwgbWVzc2FnZSkudGhlbihjYiwgY2IpOwogICAgICAg
ICB9IGNhdGNoIChlKXsKICAgICAgICAgICAgIGFfdGVzdC5zdGVwKGZ1bmN0aW9uKCkgewogICAg
ICAgICAgICAgICAgIGFzc2VydF91bnJlYWNoZWQoIlRocm93cyBcIiIgKyBlICsgIlwiIGluc3Rl
YWQgb2YgcmVqZWN0aW5nIHByb21pc2UiKTsKQEAgLTk1LDkgKzEyMCw3IEBAIGZ1bmN0aW9uIHRo
cm93T3JSZWplY3QoYV90ZXN0LCBvcGVyYXRpb24sIGZuLCBvYmosIGFyZ3MsICBtZXNzYWdlLCBj
YikKICAgICB9CiB9CiAKLS8vQH0KIGZ1bmN0aW9uIGF3YWl0TkNhbGxiYWNrcyhuLCBjYiwgY3R4
KQotLy9AewogewogICAgIHZhciBjb3VudGVyID0gMDsKICAgICByZXR1cm4gZnVuY3Rpb24oKSB7
CkBAIC0xMDgsMjQgKzEzMSwyNyBAQCBmdW5jdGlvbiBhd2FpdE5DYWxsYmFja3MobiwgY2IsIGN0
eCkKICAgICB9OwogfQogCi0vL0B9Ci12YXIgZnJvdW5kID0KLS8vQHsKLShmdW5jdGlvbigpewot
ICAgIGlmIChNYXRoLmZyb3VuZCkgcmV0dXJuIE1hdGguZnJvdW5kOworLy8vIElkbEhhcm5lc3NF
cnJvciAvLy8KKy8vIEVudHJ5IHBvaW50CitzZWxmLklkbEhhcm5lc3NFcnJvciA9IGZ1bmN0aW9u
KG1lc3NhZ2UpCit7CisgICAgLyoqCisgICAgICogTWVzc2FnZSB0byBiZSBwcmludGVkIGFzIHRo
ZSBlcnJvcidzIHRvU3RyaW5nIGludm9jYXRpb24uCisgICAgICovCisgICAgdGhpcy5tZXNzYWdl
ID0gbWVzc2FnZTsKK307CisKK0lkbEhhcm5lc3NFcnJvci5wcm90b3R5cGUgPSBPYmplY3QuY3Jl
YXRlKEVycm9yLnByb3RvdHlwZSk7CisKK0lkbEhhcm5lc3NFcnJvci5wcm90b3R5cGUudG9TdHJp
bmcgPSBmdW5jdGlvbigpCit7CisgICAgcmV0dXJuIHRoaXMubWVzc2FnZTsKK307CiAKLSAgICB2
YXIgYXJyID0gbmV3IEZsb2F0MzJBcnJheSgxKTsKLSAgICByZXR1cm4gZnVuY3Rpb24gZnJvdW5k
KG4pIHsKLSAgICAgICAgYXJyWzBdID0gbjsKLSAgICAgICAgcmV0dXJuIGFyclswXTsKLSAgICB9
OwotfSkoKTsKLS8vQH0KIAogLy8vIElkbEFycmF5IC8vLwogLy8gRW50cnkgcG9pbnQKIHNlbGYu
SWRsQXJyYXkgPSBmdW5jdGlvbigpCi0vL0B7CiB7CiAgICAgLyoqCiAgICAgICogQSBtYXAgZnJv
bSBzdHJpbmdzIHRvIHRoZSBjb3JyZXNwb25kaW5nIG5hbWVkIElkbE9iamVjdCwgc3VjaCBhcwpA
QCAtMTQ4LDkyICsxNzQsMjc5IEBAIHNlbGYuSWRsQXJyYXkgPSBmdW5jdGlvbigpCiAKICAgICAv
KioKICAgICAgKiBXaGVuIGFkZGluZyBtdWx0aXBsZSBjb2xsZWN0aW9ucyBvZiBJRExzIG9uZSBh
dCBhIHRpbWUsIGFuIGVhcmxpZXIgb25lCi0gICAgICogbWlnaHQgY29udGFpbiBhIHBhcnRpYWwg
aW50ZXJmYWNlIG9yIGltcGxlbWVudHMgc3RhdGVtZW50IHRoYXQgZGVwZW5kcworICAgICAqIG1p
Z2h0IGNvbnRhaW4gYSBwYXJ0aWFsIGludGVyZmFjZSBvciBpbmNsdWRlcyBzdGF0ZW1lbnQgdGhh
dCBkZXBlbmRzCiAgICAgICogb24gYSBsYXRlciBvbmUuICBTYXZlIHRoZXNlIHVwIGFuZCBoYW5k
bGUgdGhlbSByaWdodCBiZWZvcmUgd2UgcnVuCiAgICAgICogdGVzdHMuCiAgICAgICoKLSAgICAg
KiAucGFydGlhbHMgaXMgc2ltcGx5IGFuIGFycmF5IG9mIG9iamVjdHMgZnJvbSBXZWJJRExQYXJz
ZXIuanMnCi0gICAgICogInBhcnRpYWxpbnRlcmZhY2UiIHByb2R1Y3Rpb24uICAuaW1wbGVtZW50
cyBtYXBzIHN0cmluZ3MgdG8gYXJyYXlzIG9mCi0gICAgICogc3RyaW5ncywgc3VjaCB0aGF0Ci0g
ICAgICoKLSAgICAgKiAgIEEgaW1wbGVtZW50cyBCOwotICAgICAqICAgQSBpbXBsZW1lbnRzIEM7
Ci0gICAgICogICBEIGltcGxlbWVudHMgRTsKLSAgICAgKgotICAgICAqIHJlc3VsdHMgaW4geyBB
OiBbIkIiLCAiQyJdLCBEOiBbIkUiXSB9LgorICAgICAqIEJvdGggdGhpcy5wYXJ0aWFscyBhbmQg
dGhpcy5pbmNsdWRlcyB3aWxsIGJlIHRoZSBvYmplY3RzIGFzIHBhcnNlZCBieQorICAgICAqIFdl
YklETFBhcnNlci5qcywgbm90IHdyYXBwZWQgaW4gSWRsSW50ZXJmYWNlIG9yIHNpbWlsYXIuCiAg
ICAgICovCiAgICAgdGhpcy5wYXJ0aWFscyA9IFtdOwotICAgIHRoaXNbImltcGxlbWVudHMiXSA9
IHt9OworICAgIHRoaXMuaW5jbHVkZXMgPSBbXTsKKworICAgIC8qKgorICAgICAqIFJlY29yZCBv
ZiBza2lwcGVkIElETCBpdGVtcywgaW4gY2FzZSB3ZSBsYXRlciByZWFsaXplIHRoYXQgdGhleSBh
cmUgYQorICAgICAqIGRlcGVuZGVuY3kgKHRvIHJldHJvYWN0aXZlbHkgcHJvY2VzcyB0aGVtKS4K
KyAgICAgKi8KKyAgICB0aGlzLnNraXBwZWQgPSBuZXcgTWFwKCk7CiB9OwogCi0vL0B9Ci1JZGxB
cnJheS5wcm90b3R5cGUuYWRkX2lkbHMgPSBmdW5jdGlvbihyYXdfaWRscykKLS8vQHsKK0lkbEFy
cmF5LnByb3RvdHlwZS5hZGRfaWRscyA9IGZ1bmN0aW9uKHJhd19pZGxzLCBvcHRpb25zKQogewog
ICAgIC8qKiBFbnRyeSBwb2ludC4gIFNlZSBkb2N1bWVudGF0aW9uIGF0IGJlZ2lubmluZyBvZiBm
aWxlLiAqLwotICAgIHRoaXMuaW50ZXJuYWxfYWRkX2lkbHMoV2ViSURMMi5wYXJzZShyYXdfaWRs
cykpOworICAgIHRoaXMuaW50ZXJuYWxfYWRkX2lkbHMoV2ViSURMMi5wYXJzZShyYXdfaWRscyks
IG9wdGlvbnMpOwogfTsKIAotLy9AfQotSWRsQXJyYXkucHJvdG90eXBlLmFkZF91bnRlc3RlZF9p
ZGxzID0gZnVuY3Rpb24ocmF3X2lkbHMpCi0vL0B7CitJZGxBcnJheS5wcm90b3R5cGUuYWRkX3Vu
dGVzdGVkX2lkbHMgPSBmdW5jdGlvbihyYXdfaWRscywgb3B0aW9ucykKIHsKICAgICAvKiogRW50
cnkgcG9pbnQuICBTZWUgZG9jdW1lbnRhdGlvbiBhdCBiZWdpbm5pbmcgb2YgZmlsZS4gKi8KICAg
ICB2YXIgcGFyc2VkX2lkbHMgPSBXZWJJREwyLnBhcnNlKHJhd19pZGxzKTsKLSAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IHBhcnNlZF9pZGxzLmxlbmd0aDsgaSsrKQotICAgIHsKKyAgICB0aGlzLm1h
cmtfYXNfdW50ZXN0ZWQocGFyc2VkX2lkbHMpOworICAgIHRoaXMuaW50ZXJuYWxfYWRkX2lkbHMo
cGFyc2VkX2lkbHMsIG9wdGlvbnMpOworfTsKKworSWRsQXJyYXkucHJvdG90eXBlLm1hcmtfYXNf
dW50ZXN0ZWQgPSBmdW5jdGlvbiAocGFyc2VkX2lkbHMpCit7CisgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBwYXJzZWRfaWRscy5sZW5ndGg7IGkrKykgewogICAgICAgICBwYXJzZWRfaWRsc1tpXS51
bnRlc3RlZCA9IHRydWU7Ci0gICAgICAgIGlmICgibWVtYmVycyIgaW4gcGFyc2VkX2lkbHNbaV0p
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgcGFyc2VkX2lkbHNb
aV0ubWVtYmVycy5sZW5ndGg7IGorKykKLSAgICAgICAgICAgIHsKKyAgICAgICAgaWYgKCJtZW1i
ZXJzIiBpbiBwYXJzZWRfaWRsc1tpXSkgeworICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGog
PCBwYXJzZWRfaWRsc1tpXS5tZW1iZXJzLmxlbmd0aDsgaisrKSB7CiAgICAgICAgICAgICAgICAg
cGFyc2VkX2lkbHNbaV0ubWVtYmVyc1tqXS51bnRlc3RlZCA9IHRydWU7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KICAgICB9Ci0gICAgdGhpcy5pbnRlcm5hbF9hZGRfaWRscyhwYXJzZWRfaWRs
cyk7CiB9OwogCi0vL0B9Ci1JZGxBcnJheS5wcm90b3R5cGUuaW50ZXJuYWxfYWRkX2lkbHMgPSBm
dW5jdGlvbihwYXJzZWRfaWRscykKLS8vQHsKK0lkbEFycmF5LnByb3RvdHlwZS5pc19leGNsdWRl
ZF9ieV9vcHRpb25zID0gZnVuY3Rpb24gKG5hbWUsIG9wdGlvbnMpCit7CisgICAgcmV0dXJuIG9w
dGlvbnMgJiYKKyAgICAgICAgKG9wdGlvbnMuZXhjZXB0ICYmIG9wdGlvbnMuZXhjZXB0LmluY2x1
ZGVzKG5hbWUpCisgICAgICAgICB8fCBvcHRpb25zLm9ubHkgJiYgIW9wdGlvbnMub25seS5pbmNs
dWRlcyhuYW1lKSk7Cit9OworCitJZGxBcnJheS5wcm90b3R5cGUuYWRkX2RlcGVuZGVuY3lfaWRs
cyA9IGZ1bmN0aW9uKHJhd19pZGxzLCBvcHRpb25zKQoreworICAgIHJldHVybiB0aGlzLmludGVy
bmFsX2FkZF9kZXBlbmRlbmN5X2lkbHMoV2ViSURMMi5wYXJzZShyYXdfaWRscyksIG9wdGlvbnMp
OworfTsKKworSWRsQXJyYXkucHJvdG90eXBlLmludGVybmFsX2FkZF9kZXBlbmRlbmN5X2lkbHMg
PSBmdW5jdGlvbihwYXJzZWRfaWRscywgb3B0aW9ucykKK3sKKyAgICBjb25zdCBuZXdfb3B0aW9u
cyA9IHsgb25seTogW10gfQorCisgICAgY29uc3QgYWxsX2RlcHMgPSBuZXcgU2V0KCk7CisgICAg
T2JqZWN0LnZhbHVlcyh0aGlzLm1lbWJlcnMpLmZvckVhY2godiA9PiB7CisgICAgICAgIGlmICh2
LmJhc2UpIHsKKyAgICAgICAgICAgIGFsbF9kZXBzLmFkZCh2LmJhc2UpOworICAgICAgICB9Cisg
ICAgfSk7CisgICAgLy8gQWRkIGJvdGggJ0EnIGFuZCAnQicgZm9yIGVhY2ggJ0EgaW5jbHVkZXMg
QicgZW50cnkuCisgICAgdGhpcy5pbmNsdWRlcy5mb3JFYWNoKGkgPT4geworICAgICAgICBhbGxf
ZGVwcy5hZGQoaS50YXJnZXQpOworICAgICAgICBhbGxfZGVwcy5hZGQoaS5pbmNsdWRlcyk7Cisg
ICAgfSk7CisgICAgdGhpcy5wYXJ0aWFscy5mb3JFYWNoKHAgPT4gYWxsX2RlcHMuYWRkKHAubmFt
ZSkpOworICAgIC8vIEFkZCAnVHlwZU9mVHlwZScgZm9yIGVhY2ggInR5cGVkZWYgVHlwZU9mVHlw
ZSBNeVR5cGU7IiBlbnRyeS4KKyAgICBPYmplY3QuZW50cmllcyh0aGlzLm1lbWJlcnMpLmZvckVh
Y2goKFtrLCB2XSkgPT4geworICAgICAgICBpZiAodiBpbnN0YW5jZW9mIElkbFR5cGVkZWYpIHsK
KyAgICAgICAgICAgIGxldCBkZWZzID0gdi5pZGxUeXBlLnVuaW9uCisgICAgICAgICAgICAgICAg
PyB2LmlkbFR5cGUuaWRsVHlwZS5tYXAodCA9PiB0LmlkbFR5cGUpCisgICAgICAgICAgICAgICAg
OiBbdi5pZGxUeXBlLmlkbFR5cGVdOworICAgICAgICAgICAgZGVmcy5mb3JFYWNoKGQgPT4gYWxs
X2RlcHMuYWRkKGQpKTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgLy8gQWRkIHRoZSBhdHRy
aWJ1dGUgaWRsVHlwZXMgb2YgYWxsIHRoZSBuZXN0ZWQgbWVtYmVycyBvZiBpZGxzLgorICAgIGNv
bnN0IGF0dHJEZXBzID0gcGFyc2VkSWRscyA9PiB7CisgICAgICAgIHJldHVybiBwYXJzZWRJZGxz
LnJlZHVjZSgoZGVwcywgcGFyc2VkKSA9PiB7CisgICAgICAgICAgICBpZiAocGFyc2VkLm1lbWJl
cnMpIHsKKyAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF0dHIgb2YgT2JqZWN0LnZhbHVlcyhw
YXJzZWQubWVtYmVycykuZmlsdGVyKG0gPT4gbS50eXBlID09PSAnYXR0cmlidXRlJykpIHsKKyAg
ICAgICAgICAgICAgICAgICAgbGV0IGF0dHJUeXBlID0gYXR0ci5pZGxUeXBlOworICAgICAgICAg
ICAgICAgICAgICAvLyBDaGVjayBmb3IgZ2VuZXJpYyBtZW1iZXJzIChlLmcuIEZyb3plbkFycmF5
PE15VHlwZT4pCisgICAgICAgICAgICAgICAgICAgIGlmIChhdHRyVHlwZS5nZW5lcmljKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBkZXBzLmFkZChhdHRyVHlwZS5nZW5lcmljKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGF0dHJUeXBlID0gYXR0clR5cGUuaWRsVHlwZTsKKyAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBkZXBzLmFkZChhdHRyVHlwZS5pZGxU
eXBlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAo
cGFyc2VkLmJhc2UgaW4gdGhpcy5tZW1iZXJzKSB7CisgICAgICAgICAgICAgICAgYXR0ckRlcHMo
W3RoaXMubWVtYmVyc1twYXJzZWQuYmFzZV1dKS5mb3JFYWNoKGRlcCA9PiBkZXBzLmFkZChkZXAp
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBkZXBzOworICAgICAgICB9LCBu
ZXcgU2V0KCkpOworICAgIH07CisKKyAgICBjb25zdCB0ZXN0ZWRNZW1iZXJzID0gT2JqZWN0LnZh
bHVlcyh0aGlzLm1lbWJlcnMpLmZpbHRlcihtID0+ICFtLnVudGVzdGVkICYmIG0ubWVtYmVycyk7
CisgICAgYXR0ckRlcHModGVzdGVkTWVtYmVycykuZm9yRWFjaChkZXAgPT4gYWxsX2RlcHMuYWRk
KGRlcCkpOworCisgICAgY29uc3QgdGVzdGVkUGFydGlhbHMgPSB0aGlzLnBhcnRpYWxzLmZpbHRl
cihtID0+ICFtLnVudGVzdGVkICYmIG0ubWVtYmVycyk7CisgICAgYXR0ckRlcHModGVzdGVkUGFy
dGlhbHMpLmZvckVhY2goZGVwID0+IGFsbF9kZXBzLmFkZChkZXApKTsKKworCisgICAgaWYgKG9w
dGlvbnMgJiYgb3B0aW9ucy5leGNlcHQgJiYgb3B0aW9ucy5vbmx5KSB7CisgICAgICAgIHRocm93
IG5ldyBJZGxIYXJuZXNzRXJyb3IoIlRoZSBvbmx5IGFuZCBleGNlcHQgb3B0aW9ucyBjYW4ndCBi
ZSB1c2VkIHRvZ2V0aGVyLiIpOworICAgIH0KKworICAgIGNvbnN0IGRlZmluZWRfb3JfdW50ZXN0
ZWQgPSBuYW1lID0+IHsKKyAgICAgICAgLy8gTk9URTogRGVwcyBhcmUgdW50ZXN0ZWQsIHNvIHdl
J3JlIGxlbmllbnQsIGFuZCBza2lwIHJlLWVuY291bnRlcmVkIGRlZmluaXRpb25zLgorICAgICAg
ICAvLyBlLmcuIGZvciAnaWRsJyBjb250YWluaW5nIEE6QiwgQjpDLCBDOkQKKyAgICAgICAgLy8g
ICAgICBhcnJheS5hZGRfaWRscyhpZGwsIHtvbmx5OiBbJ0EnLCdCJ119KS4KKyAgICAgICAgLy8g
ICAgICBhcnJheS5hZGRfZGVwZW5kZW5jeV9pZGxzKGlkbCk7CisgICAgICAgIC8vIEIgd291bGQg
YmUgZW5jb3VudGVyZWQgYXMgdGVzdGVkLCBhbmQgZW5jb3VudGVyZWQgYXMgYSBkZXAsIHNvIHdl
IGlnbm9yZS4KKyAgICAgICAgcmV0dXJuIG5hbWUgaW4gdGhpcy5tZW1iZXJzCisgICAgICAgICAg
ICB8fCB0aGlzLmlzX2V4Y2x1ZGVkX2J5X29wdGlvbnMobmFtZSwgb3B0aW9ucyk7CisgICAgfQor
ICAgIC8vIE1hcHMgbmFtZSAtPiBbcGFyc2VkX2lkbCwgLi4uXQorICAgIGNvbnN0IHByb2Nlc3Mg
PSBmdW5jdGlvbihwYXJzZWQpIHsKKyAgICAgICAgdmFyIGRlcHMgPSBbXTsKKyAgICAgICAgaWYg
KHBhcnNlZC5uYW1lKSB7CisgICAgICAgICAgICBkZXBzLnB1c2gocGFyc2VkLm5hbWUpOworICAg
ICAgICB9IGVsc2UgaWYgKHBhcnNlZC50eXBlID09PSAiaW5jbHVkZXMiKSB7CisgICAgICAgICAg
ICBkZXBzLnB1c2gocGFyc2VkLnRhcmdldCk7CisgICAgICAgICAgICBkZXBzLnB1c2gocGFyc2Vk
LmluY2x1ZGVzKTsKKyAgICAgICAgfQorCisgICAgICAgIGRlcHMgPSBkZXBzLmZpbHRlcihmdW5j
dGlvbihuYW1lKSB7CisgICAgICAgICAgICBpZiAoIW5hbWUKKyAgICAgICAgICAgICAgICB8fCBu
YW1lID09PSBwYXJzZWQubmFtZSAmJiBkZWZpbmVkX29yX3VudGVzdGVkKG5hbWUpCisgICAgICAg
ICAgICAgICAgfHwgIWFsbF9kZXBzLmhhcyhuYW1lKSkgeworICAgICAgICAgICAgICAgIC8vIEZs
YWcgYXMgc2tpcHBlZCwgaWYgaXQncyBub3QgYWxyZWFkeSBwcm9jZXNzZWQsIHNvIHdlIGNhbgor
ICAgICAgICAgICAgICAgIC8vIGNvbWUgYmFjayB0byBpdCBsYXRlciBpZiB3ZSByZXRyb3NwZWN0
aXZlbHkgY2FsbCBpdCBhIGRlcC4KKyAgICAgICAgICAgICAgICBpZiAobmFtZSAmJiAhKG5hbWUg
aW4gdGhpcy5tZW1iZXJzKSkgeworICAgICAgICAgICAgICAgICAgICB0aGlzLnNraXBwZWQuaGFz
KG5hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICA/IHRoaXMuc2tpcHBlZC5nZXQobmFtZSku
cHVzaChwYXJzZWQpCisgICAgICAgICAgICAgICAgICAgICAgICA6IHRoaXMuc2tpcHBlZC5zZXQo
bmFtZSwgW3BhcnNlZF0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgfS5iaW5kKHRoaXMpKTsKKworICAgICAgICBkZXBzLmZvckVhY2goZnVuY3Rpb24obmFtZSkg
eworICAgICAgICAgICAgaWYgKCFuZXdfb3B0aW9ucy5vbmx5LmluY2x1ZGVzKG5hbWUpKSB7Cisg
ICAgICAgICAgICAgICAgbmV3X29wdGlvbnMub25seS5wdXNoKG5hbWUpOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBjb25zdCBmb2xsb3dfdXAgPSBuZXcgU2V0KCk7CisgICAgICAgICAg
ICBmb3IgKGNvbnN0IGRlcF90eXBlIG9mIFsiaW5oZXJpdGFuY2UiLCAiaW5jbHVkZXMiXSkgewor
ICAgICAgICAgICAgICAgIGlmIChwYXJzZWRbZGVwX3R5cGVdKSB7CisgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGluaGVyaXRpbmcgPSBwYXJzZWRbZGVwX3R5cGVdOworICAgICAgICAgICAgICAg
ICAgICBjb25zdCBpbmhlcml0b3IgPSBwYXJzZWQubmFtZSB8fCBwYXJzZWQudGFyZ2V0OworICAg
ICAgICAgICAgICAgICAgICBjb25zdCBkZXBzID0gW2luaGVyaXRpbmddOworICAgICAgICAgICAg
ICAgICAgICAvLyBGb3IgQSBpbmNsdWRlcyBCLCB3ZSBjYW4gaWdub3JlIEEsIHVubGVzcyBCIChv
ciBzb21lIG9mIGl0cworICAgICAgICAgICAgICAgICAgICAvLyBtZW1iZXJzKSBpcyBiZWluZyB0
ZXN0ZWQuCisgICAgICAgICAgICAgICAgICAgIGlmIChkZXBfdHlwZSAhPT0gImluY2x1ZGVzIgor
ICAgICAgICAgICAgICAgICAgICAgICAgfHwgaW5oZXJpdGluZyBpbiB0aGlzLm1lbWJlcnMgJiYg
IXRoaXMubWVtYmVyc1tpbmhlcml0aW5nXS51bnRlc3RlZAorICAgICAgICAgICAgICAgICAgICAg
ICAgfHwgdGhpcy5wYXJ0aWFscy5zb21lKGZ1bmN0aW9uKHApIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHAubmFtZSA9PT0gaW5oZXJpdGluZzsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgZGVwcy5wdXNo
KGluaGVyaXRvcik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
Zm9yIChjb25zdCBkZXAgb2YgZGVwcykgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFu
ZXdfb3B0aW9ucy5vbmx5LmluY2x1ZGVzKGRlcCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBuZXdfb3B0aW9ucy5vbmx5LnB1c2goZGVwKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGFsbF9kZXBzLmFkZChkZXApOworICAgICAgICAg
ICAgICAgICAgICAgICAgZm9sbG93X3VwLmFkZChkZXApOworICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmb3IgKGNv
bnN0IGRlZmVycmVkIG9mIGZvbGxvd191cCkgeworICAgICAgICAgICAgICAgIGlmICh0aGlzLnNr
aXBwZWQuaGFzKGRlZmVycmVkKSkgeworICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXh0ID0g
dGhpcy5za2lwcGVkLmdldChkZWZlcnJlZCk7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuc2tp
cHBlZC5kZWxldGUoZGVmZXJyZWQpOworICAgICAgICAgICAgICAgICAgICBuZXh0LmZvckVhY2go
cHJvY2Vzcyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9LmJp
bmQodGhpcykpOworICAgIH0uYmluZCh0aGlzKTsKKworICAgIGZvciAobGV0IHBhcnNlZCBvZiBw
YXJzZWRfaWRscykgeworICAgICAgICBwcm9jZXNzKHBhcnNlZCk7CisgICAgfQorCisgICAgdGhp
cy5tYXJrX2FzX3VudGVzdGVkKHBhcnNlZF9pZGxzKTsKKworICAgIGlmIChuZXdfb3B0aW9ucy5v
bmx5Lmxlbmd0aCkgeworICAgICAgICB0aGlzLmludGVybmFsX2FkZF9pZGxzKHBhcnNlZF9pZGxz
LCBuZXdfb3B0aW9ucyk7CisgICAgfQorfQorCitJZGxBcnJheS5wcm90b3R5cGUuaW50ZXJuYWxf
YWRkX2lkbHMgPSBmdW5jdGlvbihwYXJzZWRfaWRscywgb3B0aW9ucykKIHsKICAgICAvKioKICAg
ICAgKiBJbnRlcm5hbCBoZWxwZXIgY2FsbGVkIGJ5IGFkZF9pZGxzKCkgYW5kIGFkZF91bnRlc3Rl
ZF9pZGxzKCkuCisgICAgICoKICAgICAgKiBwYXJzZWRfaWRscyBpcyBhbiBhcnJheSBvZiBvYmpl
Y3RzIHRoYXQgY29tZSBmcm9tIFdlYklETFBhcnNlci5qcydzCiAgICAgICogImRlZmluaXRpb25z
IiBwcm9kdWN0aW9uLiAgVGhlIGFkZF91bnRlc3RlZF9pZGxzKCkgZW50cnkgcG9pbnQKICAgICAg
KiBhZGRpdGlvbmFsbHkgc2V0cyBhbiAudW50ZXN0ZWQgcHJvcGVydHkgb24gZWFjaCBvYmplY3Qg
KGFuZCBpdHMKICAgICAgKiAubWVtYmVycykgc28gdGhhdCB0aGV5J2xsIGJlIHNraXBwZWQgYnkg
dGVzdCgpIC0tIHRoZXknbGwgb25seSBiZQogICAgICAqIHVzZWQgZm9yIGJhc2UgaW50ZXJmYWNl
cyBvZiB0ZXN0ZWQgaW50ZXJmYWNlcywgcmV0dXJuIHR5cGVzLCBldGMuCisgICAgICoKKyAgICAg
KiBvcHRpb25zIGlzIGEgZGljdGlvbmFyeSB0aGF0IGNhbiBoYXZlIGFuIG9ubHkgb3IgZXhjZXB0
IG1lbWJlciB3aGljaCBhcmUKKyAgICAgKiBhcnJheXMuIElmIG9ubHkgaXMgZ2l2ZW4gdGhlbiBv
bmx5IG1lbWJlcnMsIHBhcnRpYWxzIGFuZCBpbnRlcmZhY2UKKyAgICAgKiB0YXJnZXRzIGxpc3Rl
ZCB3aWxsIGJlIGFkZGVkLCBhbmQgaWYgZXhjZXB0IGlzIGdpdmVuIG9ubHkgdGhvc2UgdGhhdAor
ICAgICAqIGFyZW4ndCBsaXN0ZWQgd2lsbCBiZSBhZGRlZC4gT25seSBvbmUgb2Ygb25seSBhbmQg
ZXhjZXB0IGNhbiBiZSB1c2VkLgogICAgICAqLworCisgICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9u
cy5vbmx5ICYmIG9wdGlvbnMuZXhjZXB0KQorICAgIHsKKyAgICAgICAgdGhyb3cgbmV3IElkbEhh
cm5lc3NFcnJvcigiVGhlIG9ubHkgYW5kIGV4Y2VwdCBvcHRpb25zIGNhbid0IGJlIHVzZWQgdG9n
ZXRoZXIuIik7CisgICAgfQorCisgICAgdmFyIHNob3VsZF9za2lwID0gbmFtZSA9PiB7CisgICAg
ICAgIHJldHVybiB0aGlzLmlzX2V4Y2x1ZGVkX2J5X29wdGlvbnMobmFtZSwgb3B0aW9ucyk7Cisg
ICAgfQorCiAgICAgcGFyc2VkX2lkbHMuZm9yRWFjaChmdW5jdGlvbihwYXJzZWRfaWRsKQogICAg
IHsKLSAgICAgICAgaWYgKHBhcnNlZF9pZGwudHlwZSA9PSAiaW50ZXJmYWNlIiAmJiBwYXJzZWRf
aWRsLnBhcnRpYWwpCisgICAgICAgIHZhciBwYXJ0aWFsX3R5cGVzID0gWworICAgICAgICAgICAg
ImludGVyZmFjZSIsCisgICAgICAgICAgICAiaW50ZXJmYWNlIG1peGluIiwKKyAgICAgICAgICAg
ICJkaWN0aW9uYXJ5IiwKKyAgICAgICAgICAgICJuYW1lc3BhY2UiLAorICAgICAgICBdOworICAg
ICAgICBpZiAocGFyc2VkX2lkbC5wYXJ0aWFsICYmIHBhcnRpYWxfdHlwZXMuaW5jbHVkZXMocGFy
c2VkX2lkbC50eXBlKSkKICAgICAgICAgeworICAgICAgICAgICAgaWYgKHNob3VsZF9za2lwKHBh
cnNlZF9pZGwubmFtZSkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgfQogICAgICAgICAgICAgdGhpcy5wYXJ0aWFscy5wdXNoKHBhcnNlZF9pZGwp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHBhcnNlZF9p
ZGwudHlwZSA9PSAiaW1wbGVtZW50cyIpCisgICAgICAgIGlmIChwYXJzZWRfaWRsLnR5cGUgPT0g
ImluY2x1ZGVzIikKICAgICAgICAgewotICAgICAgICAgICAgaWYgKCEocGFyc2VkX2lkbC50YXJn
ZXQgaW4gdGhpc1siaW1wbGVtZW50cyJdKSkKKyAgICAgICAgICAgIGlmIChzaG91bGRfc2tpcChw
YXJzZWRfaWRsLnRhcmdldCkpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdGhpc1si
aW1wbGVtZW50cyJdW3BhcnNlZF9pZGwudGFyZ2V0XSA9IFtdOworICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRoaXNbImltcGxlbWVudHMiXVtwYXJz
ZWRfaWRsLnRhcmdldF0ucHVzaChwYXJzZWRfaWRsWyJpbXBsZW1lbnRzIl0pOworICAgICAgICAg
ICAgdGhpcy5pbmNsdWRlcy5wdXNoKHBhcnNlZF9pZGwpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKICAgICAgICAgcGFyc2VkX2lkbC5hcnJheSA9IHRoaXM7CisgICAgICAgIGlm
IChzaG91bGRfc2tpcChwYXJzZWRfaWRsLm5hbWUpKQorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KICAgICAgICAgaWYgKHBhcnNlZF9pZGwubmFtZSBpbiB0aGlzLm1l
bWJlcnMpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHRocm93ICJEdXBsaWNhdGUgaWRlbnRpZmll
ciAiICsgcGFyc2VkX2lkbC5uYW1lOworICAgICAgICAgICAgdGhyb3cgbmV3IElkbEhhcm5lc3NF
cnJvcigiRHVwbGljYXRlIGlkZW50aWZpZXIgIiArIHBhcnNlZF9pZGwubmFtZSk7CiAgICAgICAg
IH0KKwogICAgICAgICBzd2l0Y2gocGFyc2VkX2lkbC50eXBlKQogICAgICAgICB7CiAgICAgICAg
IGNhc2UgImludGVyZmFjZSI6CiAgICAgICAgICAgICB0aGlzLm1lbWJlcnNbcGFyc2VkX2lkbC5u
YW1lXSA9Ci0gICAgICAgICAgICAgICAgbmV3IElkbEludGVyZmFjZShwYXJzZWRfaWRsLCAvKiBp
c19jYWxsYmFjayA9ICovIGZhbHNlKTsKKyAgICAgICAgICAgICAgICBuZXcgSWRsSW50ZXJmYWNl
KHBhcnNlZF9pZGwsIC8qIGlzX2NhbGxiYWNrID0gKi8gZmFsc2UsIC8qIGlzX21peGluID0gKi8g
ZmFsc2UpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAiaW50ZXJmYWNlIG1p
eGluIjoKKyAgICAgICAgICAgIHRoaXMubWVtYmVyc1twYXJzZWRfaWRsLm5hbWVdID0KKyAgICAg
ICAgICAgICAgICBuZXcgSWRsSW50ZXJmYWNlKHBhcnNlZF9pZGwsIC8qIGlzX2NhbGxiYWNrID0g
Ki8gZmFsc2UsIC8qIGlzX21peGluID0gKi8gdHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKIAog
ICAgICAgICBjYXNlICJkaWN0aW9uYXJ5IjoKQEAgLTI0Nyw4ICs0NjAsNyBAQCBJZGxBcnJheS5w
cm90b3R5cGUuaW50ZXJuYWxfYWRkX2lkbHMgPSBmdW5jdGlvbihwYXJzZWRfaWRscykKICAgICAg
ICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgImNhbGxiYWNrIjoKLSAgICAgICAgICAgIC8v
IFRPRE8KLSAgICAgICAgICAgIGNvbnNvbGUubG9nKCJjYWxsYmFjayBub3QgeWV0IHN1cHBvcnRl
ZCIpOworICAgICAgICAgICAgdGhpcy5tZW1iZXJzW3BhcnNlZF9pZGwubmFtZV0gPSBuZXcgSWRs
Q2FsbGJhY2socGFyc2VkX2lkbCk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNl
ICJlbnVtIjoKQEAgLTI1Nyw3ICs0NjksMTEgQEAgSWRsQXJyYXkucHJvdG90eXBlLmludGVybmFs
X2FkZF9pZGxzID0gZnVuY3Rpb24ocGFyc2VkX2lkbHMpCiAKICAgICAgICAgY2FzZSAiY2FsbGJh
Y2sgaW50ZXJmYWNlIjoKICAgICAgICAgICAgIHRoaXMubWVtYmVyc1twYXJzZWRfaWRsLm5hbWVd
ID0KLSAgICAgICAgICAgICAgICBuZXcgSWRsSW50ZXJmYWNlKHBhcnNlZF9pZGwsIC8qIGlzX2Nh
bGxiYWNrID0gKi8gdHJ1ZSk7CisgICAgICAgICAgICAgICAgbmV3IElkbEludGVyZmFjZShwYXJz
ZWRfaWRsLCAvKiBpc19jYWxsYmFjayA9ICovIHRydWUsIC8qIGlzX21peGluID0gKi8gZmFsc2Up
OworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAibmFtZXNwYWNlIjoKKyAgICAg
ICAgICAgIHRoaXMubWVtYmVyc1twYXJzZWRfaWRsLm5hbWVdID0gbmV3IElkbE5hbWVzcGFjZShw
YXJzZWRfaWRsKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGRlZmF1bHQ6CkBAIC0y
NjYsOSArNDgyLDcgQEAgSWRsQXJyYXkucHJvdG90eXBlLmludGVybmFsX2FkZF9pZGxzID0gZnVu
Y3Rpb24ocGFyc2VkX2lkbHMpCiAgICAgfS5iaW5kKHRoaXMpKTsKIH07CiAKLS8vQH0KIElkbEFy
cmF5LnByb3RvdHlwZS5hZGRfb2JqZWN0cyA9IGZ1bmN0aW9uKGRpY3QpCi0vL0B7CiB7CiAgICAg
LyoqIEVudHJ5IHBvaW50LiAgU2VlIGRvY3VtZW50YXRpb24gYXQgYmVnaW5uaW5nIG9mIGZpbGUu
ICovCiAgICAgZm9yICh2YXIgayBpbiBkaWN0KQpAQCAtMjg0LDExMSArNDk4LDIyMyBAQCBJZGxB
cnJheS5wcm90b3R5cGUuYWRkX29iamVjdHMgPSBmdW5jdGlvbihkaWN0KQogICAgIH0KIH07CiAK
LS8vQH0KIElkbEFycmF5LnByb3RvdHlwZS5wcmV2ZW50X211bHRpcGxlX3Rlc3RpbmcgPSBmdW5j
dGlvbihuYW1lKQotLy9AewogewogICAgIC8qKiBFbnRyeSBwb2ludC4gIFNlZSBkb2N1bWVudGF0
aW9uIGF0IGJlZ2lubmluZyBvZiBmaWxlLiAqLwogICAgIHRoaXMubWVtYmVyc1tuYW1lXS5wcmV2
ZW50X211bHRpcGxlX3Rlc3RpbmcgPSB0cnVlOwogfTsKIAotLy9AfQotSWRsQXJyYXkucHJvdG90
eXBlLnJlY3Vyc2l2ZWx5X2dldF9pbXBsZW1lbnRzID0gZnVuY3Rpb24oaW50ZXJmYWNlX25hbWUp
Ci0vL0B7CitJZGxBcnJheS5wcm90b3R5cGUuaXNfanNvbl90eXBlID0gZnVuY3Rpb24odHlwZSkK
IHsKICAgICAvKioKLSAgICAgKiBIZWxwZXIgZnVuY3Rpb24gZm9yIHRlc3QoKS4gIFJldHVybnMg
YW4gYXJyYXkgb2YgdGhpbmdzIHRoYXQgaW1wbGVtZW50Ci0gICAgICogaW50ZXJmYWNlX25hbWUs
IHNvIGlmIHRoZSBJREwgY29udGFpbnMKLSAgICAgKgotICAgICAqICAgQSBpbXBsZW1lbnRzIEI7
Ci0gICAgICogICBCIGltcGxlbWVudHMgQzsKLSAgICAgKiAgIEIgaW1wbGVtZW50cyBEOwotICAg
ICAqCi0gICAgICogdGhlbiByZWN1cnNpdmVseV9nZXRfaW1wbGVtZW50cygiQSIpIHNob3VsZCBy
ZXR1cm4gWyJCIiwgIkMiLCAiRCJdLgorICAgICAqIENoZWNrcyB3aGV0aGVyIHR5cGUgaXMgYSBK
U09OIHR5cGUgYXMgcGVyCisgICAgICogaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8j
ZGZuLWpzb24tdHlwZXMKICAgICAgKi8KLSAgICB2YXIgcmV0ID0gdGhpc1siaW1wbGVtZW50cyJd
W2ludGVyZmFjZV9uYW1lXTsKLSAgICBpZiAocmV0ID09PSB1bmRlZmluZWQpCi0gICAgewotICAg
ICAgICByZXR1cm4gW107CisKKyAgICB2YXIgaWRsVHlwZSA9IHR5cGUuaWRsVHlwZTsKKworICAg
IGlmICh0eXBlLmdlbmVyaWMgPT0gIlByb21pc2UiKSB7IHJldHVybiBmYWxzZTsgfQorCisgICAg
Ly8gIG51bGxhYmxlIGFuZCBhbm5vdGF0ZWQgdHlwZXMgZG9uJ3QgbmVlZCB0byBiZSBoYW5kbGVk
IHNlcGFyYXRlbHksCisgICAgLy8gIGFzIHdlYmlkbDIgZG9lc24ndCByZXByZXNlbnQgdGhlbSB3
cmFwcGVkLXVwIChhcyB0aGV5J3JlIGRlc2NyaWJlZAorICAgIC8vICBpbiBXZWJJREwpLgorCisg
ICAgLy8gdW5pb24gYW5kIHJlY29yZCB0eXBlcworICAgIGlmICh0eXBlLnVuaW9uIHx8IHR5cGUu
Z2VuZXJpYyA9PSAicmVjb3JkIikgeworICAgICAgICByZXR1cm4gaWRsVHlwZS5ldmVyeSh0aGlz
LmlzX2pzb25fdHlwZSwgdGhpcyk7CisgICAgfQorCisgICAgLy8gc2VxdWVuY2UgdHlwZXMKKyAg
ICBpZiAodHlwZS5nZW5lcmljID09ICJzZXF1ZW5jZSIgfHwgdHlwZS5nZW5lcmljID09ICJGcm96
ZW5BcnJheSIpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuaXNfanNvbl90eXBlKGlkbFR5cGVbMF0p
OwogICAgIH0KLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXNbImltcGxlbWVudHMiXVtpbnRl
cmZhY2VfbmFtZV0ubGVuZ3RoOyBpKyspCisKKyAgICBpZiAodHlwZW9mIGlkbFR5cGUgIT0gInN0
cmluZyIpIHsgdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIHR5cGUgIiArIEpTT04uc3RyaW5n
aWZ5KGlkbFR5cGUpKTsgfQorCisgICAgc3dpdGNoIChpZGxUeXBlKQogICAgIHsKLSAgICAgICAg
cmV0ID0gcmV0LmNvbmNhdCh0aGlzLnJlY3Vyc2l2ZWx5X2dldF9pbXBsZW1lbnRzKHJldFtpXSkp
OwotICAgICAgICBpZiAocmV0LmluZGV4T2YocmV0W2ldKSAhPSByZXQubGFzdEluZGV4T2YocmV0
W2ldKSkKLSAgICAgICAgewotICAgICAgICAgICAgdGhyb3cgIkNpcmN1bGFyIGltcGxlbWVudHMg
c3RhdGVtZW50cyBpbnZvbHZpbmcgIiArIHJldFtpXTsKLSAgICAgICAgfQorICAgICAgIC8vICBO
dW1lcmljIHR5cGVzCisgICAgICAgY2FzZSAiYnl0ZSI6CisgICAgICAgY2FzZSAib2N0ZXQiOgor
ICAgICAgIGNhc2UgInNob3J0IjoKKyAgICAgICBjYXNlICJ1bnNpZ25lZCBzaG9ydCI6CisgICAg
ICAgY2FzZSAibG9uZyI6CisgICAgICAgY2FzZSAidW5zaWduZWQgbG9uZyI6CisgICAgICAgY2Fz
ZSAibG9uZyBsb25nIjoKKyAgICAgICBjYXNlICJ1bnNpZ25lZCBsb25nIGxvbmciOgorICAgICAg
IGNhc2UgImZsb2F0IjoKKyAgICAgICBjYXNlICJkb3VibGUiOgorICAgICAgIGNhc2UgInVucmVz
dHJpY3RlZCBmbG9hdCI6CisgICAgICAgY2FzZSAidW5yZXN0cmljdGVkIGRvdWJsZSI6CisgICAg
ICAgLy8gYm9vbGVhbgorICAgICAgIGNhc2UgImJvb2xlYW4iOgorICAgICAgIC8vIHN0cmluZyB0
eXBlcworICAgICAgIGNhc2UgIkRPTVN0cmluZyI6CisgICAgICAgY2FzZSAiQnl0ZVN0cmluZyI6
CisgICAgICAgY2FzZSAiVVNWU3RyaW5nIjoKKyAgICAgICAvLyBvYmplY3QgdHlwZQorICAgICAg
IGNhc2UgIm9iamVjdCI6CisgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgIGNhc2UgIkVy
cm9yIjoKKyAgICAgICBjYXNlICJET01FeGNlcHRpb24iOgorICAgICAgIGNhc2UgIkludDhBcnJh
eSI6CisgICAgICAgY2FzZSAiSW50MTZBcnJheSI6CisgICAgICAgY2FzZSAiSW50MzJBcnJheSI6
CisgICAgICAgY2FzZSAiVWludDhBcnJheSI6CisgICAgICAgY2FzZSAiVWludDE2QXJyYXkiOgor
ICAgICAgIGNhc2UgIlVpbnQzMkFycmF5IjoKKyAgICAgICBjYXNlICJVaW50OENsYW1wZWRBcnJh
eSI6CisgICAgICAgY2FzZSAiRmxvYXQzMkFycmF5IjoKKyAgICAgICBjYXNlICJGbG9hdDY0QXJy
YXkiOgorICAgICAgIGNhc2UgIkFycmF5QnVmZmVyIjoKKyAgICAgICBjYXNlICJEYXRhVmlldyI6
CisgICAgICAgY2FzZSAiYW55IjoKKyAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgIHZhciB0aGluZyA9IHRoaXMubWVtYmVyc1tpZGxUeXBlXTsKKyAg
ICAgICAgICAgaWYgKCF0aGluZykgeyB0aHJvdyBuZXcgRXJyb3IoIlR5cGUgIiArIGlkbFR5cGUg
KyAiIG5vdCBmb3VuZCIpOyB9CisgICAgICAgICAgIGlmICh0aGluZyBpbnN0YW5jZW9mIElkbEVu
dW0pIHsgcmV0dXJuIHRydWU7IH0KKworICAgICAgICAgICBpZiAodGhpbmcgaW5zdGFuY2VvZiBJ
ZGxUeXBlZGVmKSB7CisgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pc19qc29uX3R5cGUodGhp
bmcuaWRsVHlwZSk7CisgICAgICAgICAgIH0KKworICAgICAgICAgICAvLyAgZGljdGlvbmFyaWVz
IHdoZXJlIGFsbCBvZiB0aGVpciBtZW1iZXJzIGFyZSBKU09OIHR5cGVzCisgICAgICAgICAgIGlm
ICh0aGluZyBpbnN0YW5jZW9mIElkbERpY3Rpb25hcnkpIHsKKyAgICAgICAgICAgICAgIGNvbnN0
IG1hcCA9IG5ldyBNYXAoKTsKKyAgICAgICAgICAgICAgIGZvciAoY29uc3QgZGljdCBvZiB0aGlu
Zy5nZXRfcmV2ZXJzZV9pbmhlcml0YW5jZV9zdGFjaygpKSB7CisgICAgICAgICAgICAgICAgICAg
Zm9yIChjb25zdCBtIG9mIGRpY3QubWVtYmVycykgeworICAgICAgICAgICAgICAgICAgICAgICBt
YXAuc2V0KG0ubmFtZSwgbS5pZGxUeXBlKTsKKyAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICByZXR1cm4gQXJyYXkuZnJvbShtYXAudmFsdWVzKCkp
LmV2ZXJ5KHRoaXMuaXNfanNvbl90eXBlLCB0aGlzKTsKKyAgICAgICAgICAgfQorCisgICAgICAg
ICAgIC8vICBpbnRlcmZhY2UgdHlwZXMgdGhhdCBoYXZlIGEgdG9KU09OIG9wZXJhdGlvbiBkZWNs
YXJlZCBvbiB0aGVtc2VsdmVzIG9yCisgICAgICAgICAgIC8vICBvbmUgb2YgdGhlaXIgaW5oZXJp
dGVkIGludGVyZmFjZXMuCisgICAgICAgICAgIGlmICh0aGluZyBpbnN0YW5jZW9mIElkbEludGVy
ZmFjZSkgeworICAgICAgICAgICAgICAgdmFyIGJhc2U7CisgICAgICAgICAgICAgICB3aGlsZSAo
dGhpbmcpCisgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgaWYgKHRoaW5nLmhh
c190b19qc29uX3JlZ3VsYXJfb3BlcmF0aW9uKCkpIHsgcmV0dXJuIHRydWU7IH0KKyAgICAgICAg
ICAgICAgICAgICB2YXIgbWl4aW5zID0gdGhpcy5pbmNsdWRlc1t0aGluZy5uYW1lXTsKKyAgICAg
ICAgICAgICAgICAgICBpZiAobWl4aW5zKSB7CisgICAgICAgICAgICAgICAgICAgICAgIG1peGlu
cyA9IG1peGlucy5tYXAoZnVuY3Rpb24oaWQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZhciBtaXhpbiA9IHRoaXMubWVtYmVyc1tpZF07CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoIW1peGluKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCJJbnRlcmZhY2UgIiArIGlkICsgIiBub3QgZm91bmQgKGltcGxlbWVudGVkIGJ5ICIg
KyB0aGluZy5uYW1lICsgIikiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtaXhpbjsKKyAgICAgICAgICAgICAgICAgICAg
ICAgfSwgdGhpcyk7CisgICAgICAgICAgICAgICAgICAgICAgIGlmIChtaXhpbnMuc29tZShmdW5j
dGlvbihtKSB7IHJldHVybiBtLmhhc190b19qc29uX3JlZ3VsYXJfb3BlcmF0aW9uKCkgfSApKSB7
IHJldHVybiB0cnVlOyB9CisgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
IGlmICghdGhpbmcuYmFzZSkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgICAgICAgICAgICBi
YXNlID0gdGhpcy5tZW1iZXJzW3RoaW5nLmJhc2VdOworICAgICAgICAgICAgICAgICAgIGlmICgh
YmFzZSkgeworICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkludGVyZmFj
ZSAiICsgdGhpbmcuYmFzZSArICIgbm90IGZvdW5kIChpbmhlcml0ZWQgYnkgIiArIHRoaW5nLm5h
bWUgKyAiKSIpOworICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICB0aGlu
ZyA9IGJhc2U7CisgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgIH0KKyAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICByZXR1
cm4gcmV0OwogfTsKIAorZnVuY3Rpb24gZXhwb3N1cmVfc2V0KG9iamVjdCwgZGVmYXVsdF9zZXQp
IHsKKyAgICB2YXIgZXhwb3NlZCA9IG9iamVjdC5leHRBdHRycyAmJiBvYmplY3QuZXh0QXR0cnMu
ZmlsdGVyKGEgPT4gYS5uYW1lID09PSAiRXhwb3NlZCIpOworICAgIGlmIChleHBvc2VkICYmIGV4
cG9zZWQubGVuZ3RoID4gMSkgeworICAgICAgICB0aHJvdyBuZXcgSWRsSGFybmVzc0Vycm9yKAor
ICAgICAgICAgICAgYE11bHRpcGxlICdFeHBvc2VkJyBleHRlbmRlZCBhdHRyaWJ1dGVzIG9uICR7
b2JqZWN0Lm5hbWV9YCk7CisgICAgfQorCisgICAgbGV0IHJlc3VsdCA9IGRlZmF1bHRfc2V0IHx8
IFsiV2luZG93Il07CisgICAgaWYgKHJlc3VsdCAmJiAhKHJlc3VsdCBpbnN0YW5jZW9mIFNldCkp
IHsKKyAgICAgICAgcmVzdWx0ID0gbmV3IFNldChyZXN1bHQpOworICAgIH0KKyAgICBpZiAoZXhw
b3NlZCAmJiBleHBvc2VkLmxlbmd0aCkgeworICAgICAgICBjb25zdCB7IHJocyB9ID0gZXhwb3Nl
ZFswXTsKKyAgICAgICAgLy8gQ291bGQgYmUgYSBsaXN0IG9yIGEgc3RyaW5nLgorICAgICAgICBj
b25zdCBzZXQgPSByaHMudHlwZSA9PT0gImlkZW50aWZpZXItbGlzdCIgPworICAgICAgICAgICAg
cmhzLnZhbHVlLm1hcChpZCA9PiBpZC52YWx1ZSkgOgorICAgICAgICAgICAgWyByaHMudmFsdWUg
XTsKKyAgICAgICAgcmVzdWx0ID0gbmV3IFNldChzZXQpOworICAgIH0KKyAgICBpZiAocmVzdWx0
ICYmIHJlc3VsdC5oYXMoIldvcmtlciIpKSB7CisgICAgICAgIHJlc3VsdC5kZWxldGUoIldvcmtl
ciIpOworICAgICAgICByZXN1bHQuYWRkKCJEZWRpY2F0ZWRXb3JrZXIiKTsKKyAgICAgICAgcmVz
dWx0LmFkZCgiU2VydmljZVdvcmtlciIpOworICAgICAgICByZXN1bHQuYWRkKCJTaGFyZWRXb3Jr
ZXIiKTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogZnVuY3Rpb24gZXhwb3NlZF9p
bihnbG9iYWxzKSB7Ci0gICAgaWYgKCdkb2N1bWVudCcgaW4gc2VsZikgewotICAgICAgICByZXR1
cm4gZ2xvYmFscy5pbmRleE9mKCJXaW5kb3ciKSA+PSAwOworICAgIGlmICgnV2luZG93JyBpbiBz
ZWxmKSB7CisgICAgICAgIHJldHVybiBnbG9iYWxzLmhhcygiV2luZG93Iik7CiAgICAgfQogICAg
IGlmICgnRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUnIGluIHNlbGYgJiYKICAgICAgICAgc2Vs
ZiBpbnN0YW5jZW9mIERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlKSB7Ci0gICAgICAgIHJldHVy
biBnbG9iYWxzLmluZGV4T2YoIldvcmtlciIpID49IDAgfHwKLSAgICAgICAgICAgICAgIGdsb2Jh
bHMuaW5kZXhPZigiRGVkaWNhdGVkV29ya2VyIikgPj0gMDsKKyAgICAgICAgcmV0dXJuIGdsb2Jh
bHMuaGFzKCJEZWRpY2F0ZWRXb3JrZXIiKTsKICAgICB9CiAgICAgaWYgKCdTaGFyZWRXb3JrZXJH
bG9iYWxTY29wZScgaW4gc2VsZiAmJgogICAgICAgICBzZWxmIGluc3RhbmNlb2YgU2hhcmVkV29y
a2VyR2xvYmFsU2NvcGUpIHsKLSAgICAgICAgcmV0dXJuIGdsb2JhbHMuaW5kZXhPZigiV29ya2Vy
IikgPj0gMCB8fAotICAgICAgICAgICAgICAgZ2xvYmFscy5pbmRleE9mKCJTaGFyZWRXb3JrZXIi
KSA+PSAwOworICAgICAgICByZXR1cm4gZ2xvYmFscy5oYXMoIlNoYXJlZFdvcmtlciIpOwogICAg
IH0KICAgICBpZiAoJ1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZScgaW4gc2VsZiAmJgogICAgICAg
ICBzZWxmIGluc3RhbmNlb2YgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKSB7Ci0gICAgICAgIHJl
dHVybiBnbG9iYWxzLmluZGV4T2YoIldvcmtlciIpID49IDAgfHwKLSAgICAgICAgICAgICAgIGds
b2JhbHMuaW5kZXhPZigiU2VydmljZVdvcmtlciIpID49IDA7CisgICAgICAgIHJldHVybiBnbG9i
YWxzLmhhcygiU2VydmljZVdvcmtlciIpOworICAgIH0KKyAgICB0aHJvdyBuZXcgSWRsSGFybmVz
c0Vycm9yKCJVbmV4cGVjdGVkIGdsb2JhbCBvYmplY3QiKTsKK30KKworLyoqCisgKiBBc3NlcnRz
IHRoYXQgdGhlIGdpdmVuIGVycm9yIG1lc3NhZ2UgaXMgdGhyb3duIGZvciB0aGUgZ2l2ZW4gZnVu
Y3Rpb24uCisgKiBAcGFyYW0ge3N0cmluZ3xJZGxIYXJuZXNzRXJyb3J9IGVycm9yIEV4cGVjdGVk
IEVycm9yIG1lc3NhZ2UuCisgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpZGxBcnJheUZ1bmMgRnVuY3Rp
b24gb3BlcmF0aW5nIG9uIGFuIElkbEFycmF5IHRoYXQgc2hvdWxkIHRocm93LgorICovCitJZGxB
cnJheS5wcm90b3R5cGUuYXNzZXJ0X3Rocm93cyA9IGZ1bmN0aW9uKGVycm9yLCBpZGxBcnJheUZ1
bmMpCit7CisgICAgdHJ5IHsKKyAgICAgICAgaWRsQXJyYXlGdW5jLmNhbGwodGhpcywgdGhpcyk7
CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIEFzc2VydGlvbkVy
cm9yKSB7CisgICAgICAgICAgICB0aHJvdyBlOworICAgICAgICB9CisgICAgICAgIC8vIEFzc2Vy
dGlvbnMgZm9yIGJlaGF2aW91ciBvZiB0aGUgaWRsaGFybmVzcy5qcyBlbmdpbmUuCisgICAgICAg
IGlmIChlcnJvciBpbnN0YW5jZW9mIElkbEhhcm5lc3NFcnJvcikgeworICAgICAgICAgICAgZXJy
b3IgPSBlcnJvci5tZXNzYWdlOworICAgICAgICB9CisgICAgICAgIGlmIChlLm1lc3NhZ2UgIT09
IGVycm9yKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWRsSGFybmVzc0Vycm9yKGAke2lkbEFy
cmF5RnVuY30gdGhyZXcgIiR7ZX0iLCBub3QgdGhlIGV4cGVjdGVkIElkbEhhcm5lc3NFcnJvciAi
JHtlcnJvcn0iYCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICB0aHJv
dyAiVW5leHBlY3RlZCBnbG9iYWwgb2JqZWN0IjsKKyAgICB0aHJvdyBuZXcgSWRsSGFybmVzc0Vy
cm9yKGAke2lkbEFycmF5RnVuY30gZGlkIG5vdCB0aHJvdyB0aGUgZXhwZWN0ZWQgSWRsSGFybmVz
c0Vycm9yYCk7CiB9CiAKLS8vQH0KIElkbEFycmF5LnByb3RvdHlwZS50ZXN0ID0gZnVuY3Rpb24o
KQotLy9AewogewogICAgIC8qKiBFbnRyeSBwb2ludC4gIFNlZSBkb2N1bWVudGF0aW9uIGF0IGJl
Z2lubmluZyBvZiBmaWxlLiAqLwogCi0gICAgLy8gRmlyc3QgbWVyZ2UgaW4gYWxsIHRoZSBwYXJ0
aWFsIGludGVyZmFjZXMgYW5kIGltcGxlbWVudHMgc3RhdGVtZW50cyB3ZQotICAgIC8vIGVuY291
bnRlcmVkLgotICAgIHRoaXMucGFydGlhbHMuZm9yRWFjaChmdW5jdGlvbihwYXJzZWRfaWRsKQot
ICAgIHsKLSAgICAgICAgaWYgKCEocGFyc2VkX2lkbC5uYW1lIGluIHRoaXMubWVtYmVycykKLSAg
ICAgICAgfHwgISh0aGlzLm1lbWJlcnNbcGFyc2VkX2lkbC5uYW1lXSBpbnN0YW5jZW9mIElkbElu
dGVyZmFjZSkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRocm93ICJQYXJ0aWFsIGludGVyZmFj
ZSAiICsgcGFyc2VkX2lkbC5uYW1lICsgIiB3aXRoIG5vIG9yaWdpbmFsIGludGVyZmFjZSI7Cisg
ICAgLy8gRmlyc3QgbWVyZ2UgaW4gYWxsIHBhcnRpYWwgZGVmaW5pdGlvbnMgYW5kIGludGVyZmFj
ZSBtaXhpbnMuCisgICAgdGhpcy5tZXJnZV9wYXJ0aWFscygpOworICAgIHRoaXMubWVyZ2VfbWl4
aW5zKCk7CisKKyAgICAvLyBBc3NlcnQgQiBkZWZpbmVkIGZvciBBIDogQgorICAgIGZvciAoY29u
c3QgbWVtYmVyIG9mIE9iamVjdC52YWx1ZXModGhpcy5tZW1iZXJzKS5maWx0ZXIobSA9PiBtLmJh
c2UpKSB7CisgICAgICAgIGNvbnN0IGxocyA9IG1lbWJlci5uYW1lOworICAgICAgICBjb25zdCBy
aHMgPSBtZW1iZXIuYmFzZTsKKyAgICAgICAgaWYgKCEocmhzIGluIHRoaXMubWVtYmVycykpIHRo
cm93IG5ldyBJZGxIYXJuZXNzRXJyb3IoYCR7bGhzfSBpbmhlcml0cyAke3Joc30sIGJ1dCAke3Jo
c30gaXMgdW5kZWZpbmVkLmApOworICAgICAgICBjb25zdCBsaHNfaXNfaW50ZXJmYWNlID0gdGhp
cy5tZW1iZXJzW2xoc10gaW5zdGFuY2VvZiBJZGxJbnRlcmZhY2U7CisgICAgICAgIGNvbnN0IHJo
c19pc19pbnRlcmZhY2UgPSB0aGlzLm1lbWJlcnNbcmhzXSBpbnN0YW5jZW9mIElkbEludGVyZmFj
ZTsKKyAgICAgICAgaWYgKHJoc19pc19pbnRlcmZhY2UgIT0gbGhzX2lzX2ludGVyZmFjZSkgewor
ICAgICAgICAgICAgaWYgKCFsaHNfaXNfaW50ZXJmYWNlKSB0aHJvdyBuZXcgSWRsSGFybmVzc0Vy
cm9yKGAke2xoc30gaW5oZXJpdHMgJHtyaHN9LCBidXQgJHtsaHN9IGlzIG5vdCBhbiBpbnRlcmZh
Y2UuYCk7CisgICAgICAgICAgICBpZiAoIXJoc19pc19pbnRlcmZhY2UpIHRocm93IG5ldyBJZGxI
YXJuZXNzRXJyb3IoYCR7bGhzfSBpbmhlcml0cyAke3Joc30sIGJ1dCAke3Joc30gaXMgbm90IGFu
IGludGVyZmFjZS5gKTsKICAgICAgICAgfQotICAgICAgICBpZiAocGFyc2VkX2lkbC5leHRBdHRy
cykKLSAgICAgICAgewotICAgICAgICAgICAgcGFyc2VkX2lkbC5leHRBdHRycy5mb3JFYWNoKGZ1
bmN0aW9uKGV4dEF0dHIpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdGhpcy5tZW1i
ZXJzW3BhcnNlZF9pZGwubmFtZV0uZXh0QXR0cnMucHVzaChleHRBdHRyKTsKLSAgICAgICAgICAg
IH0uYmluZCh0aGlzKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcGFyc2VkX2lkbC5tZW1iZXJzLmZv
ckVhY2goZnVuY3Rpb24obWVtYmVyKQotICAgICAgICB7Ci0gICAgICAgICAgICB0aGlzLm1lbWJl
cnNbcGFyc2VkX2lkbC5uYW1lXS5tZW1iZXJzLnB1c2gobmV3IElkbEludGVyZmFjZU1lbWJlciht
ZW1iZXIpKTsKLSAgICAgICAgfS5iaW5kKHRoaXMpKTsKLSAgICB9LmJpbmQodGhpcykpOwotICAg
IHRoaXMucGFydGlhbHMgPSBbXTsKLQotICAgIGZvciAodmFyIGxocyBpbiB0aGlzWyJpbXBsZW1l
bnRzIl0pCi0gICAgewotICAgICAgICB0aGlzLnJlY3Vyc2l2ZWx5X2dldF9pbXBsZW1lbnRzKGxo
cykuZm9yRWFjaChmdW5jdGlvbihyaHMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHZhciBlcnJT
dHIgPSBsaHMgKyAiIGltcGxlbWVudHMgIiArIHJocyArICIsIGJ1dCAiOwotICAgICAgICAgICAg
aWYgKCEobGhzIGluIHRoaXMubWVtYmVycykpIHRocm93IGVyclN0ciArIGxocyArICIgaXMgdW5k
ZWZpbmVkLiI7Ci0gICAgICAgICAgICBpZiAoISh0aGlzLm1lbWJlcnNbbGhzXSBpbnN0YW5jZW9m
IElkbEludGVyZmFjZSkpIHRocm93IGVyclN0ciArIGxocyArICIgaXMgbm90IGFuIGludGVyZmFj
ZS4iOwotICAgICAgICAgICAgaWYgKCEocmhzIGluIHRoaXMubWVtYmVycykpIHRocm93IGVyclN0
ciArIHJocyArICIgaXMgdW5kZWZpbmVkLiI7Ci0gICAgICAgICAgICBpZiAoISh0aGlzLm1lbWJl
cnNbcmhzXSBpbnN0YW5jZW9mIElkbEludGVyZmFjZSkpIHRocm93IGVyclN0ciArIHJocyArICIg
aXMgbm90IGFuIGludGVyZmFjZS4iOwotICAgICAgICAgICAgdGhpcy5tZW1iZXJzW3Joc10ubWVt
YmVycy5mb3JFYWNoKGZ1bmN0aW9uKG1lbWJlcikKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICB0aGlzLm1lbWJlcnNbbGhzXS5tZW1iZXJzLnB1c2gobmV3IElkbEludGVyZmFjZU1lbWJl
cihtZW1iZXIpKTsKLSAgICAgICAgICAgIH0uYmluZCh0aGlzKSk7Ci0gICAgICAgIH0uYmluZCh0
aGlzKSk7CisgICAgICAgIC8vIENoZWNrIGZvciBjaXJjdWxhciBkZXBlbmRlbmNpZXMuCisgICAg
ICAgIG1lbWJlci5nZXRfcmV2ZXJzZV9pbmhlcml0YW5jZV9zdGFjaygpOwogICAgIH0KLSAgICB0
aGlzWyJpbXBsZW1lbnRzIl0gPSB7fTsKIAogICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVz
KHRoaXMubWVtYmVycykuZm9yRWFjaChmdW5jdGlvbihtZW1iZXJOYW1lKSB7CiAgICAgICAgIHZh
ciBtZW1iZXIgPSB0aGlzLm1lbWJlcnNbbWVtYmVyTmFtZV07CkBAIC0zOTYsMTUgKzcyMiw5IEBA
IElkbEFycmF5LnByb3RvdHlwZS50ZXN0ID0gZnVuY3Rpb24oKQogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAKLSAgICAgICAgdmFyIGV4cG9zZWQgPSBtZW1iZXIuZXh0QXR0cnMuZmls
dGVyKGZ1bmN0aW9uKGEpIHsgcmV0dXJuIGEubmFtZSA9PSAiRXhwb3NlZCIgfSk7Ci0gICAgICAg
IGlmIChleHBvc2VkLmxlbmd0aCA+IDEpIHsKLSAgICAgICAgICAgIHRocm93ICJVbmV4cGVjdGVk
IEV4cG9zZWQgZXh0ZW5kZWQgYXR0cmlidXRlcyBvbiAiICsgbWVtYmVyTmFtZSArICI6ICIgKyBl
eHBvc2VkOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIGdsb2JhbHMgPSBleHBvc2VkLmxlbmd0
aCA9PT0gMQotICAgICAgICAgICAgICAgICAgICA/IGV4cG9zZWRbMF0ucmhzLnZhbHVlCi0gICAg
ICAgICAgICAgICAgICAgIDogWyJXaW5kb3ciXTsKKyAgICAgICAgdmFyIGdsb2JhbHMgPSBleHBv
c3VyZV9zZXQobWVtYmVyKTsKICAgICAgICAgbWVtYmVyLmV4cG9zZWQgPSBleHBvc2VkX2luKGds
b2JhbHMpOworICAgICAgICBtZW1iZXIuZXhwb3N1cmVTZXQgPSBnbG9iYWxzOwogICAgIH0uYmlu
ZCh0aGlzKSk7CiAKICAgICAvLyBOb3cgcnVuIHRlc3QoKSBvbiBldmVyeSBtZW1iZXIsIGFuZCB0
ZXN0X29iamVjdCgpIGZvciBldmVyeSBvYmplY3QuCkBAIC00MTMsMTggKzczMywxOTQgQEAgSWRs
QXJyYXkucHJvdG90eXBlLnRlc3QgPSBmdW5jdGlvbigpCiAgICAgICAgIHRoaXMubWVtYmVyc1tu
YW1lXS50ZXN0KCk7CiAgICAgICAgIGlmIChuYW1lIGluIHRoaXMub2JqZWN0cykKICAgICAgICAg
ewotICAgICAgICAgICAgdGhpcy5vYmplY3RzW25hbWVdLmZvckVhY2goZnVuY3Rpb24oc3RyKQor
ICAgICAgICAgICAgY29uc3Qgb2JqZWN0cyA9IHRoaXMub2JqZWN0c1tuYW1lXTsKKyAgICAgICAg
ICAgIGlmICghb2JqZWN0cyB8fCAhQXJyYXkuaXNBcnJheShvYmplY3RzKSkgeworICAgICAgICAg
ICAgICAgIHRocm93IG5ldyBJZGxIYXJuZXNzRXJyb3IoYEludmFsaWQgb3IgZW1wdHkgb2JqZWN0
cyBmb3IgbWVtYmVyICR7bmFtZX1gKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG9iamVj
dHMuZm9yRWFjaChmdW5jdGlvbihzdHIpCiAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
aWYgKCF0aGlzLm1lbWJlcnNbbmFtZV0gfHwgISh0aGlzLm1lbWJlcnNbbmFtZV0gaW5zdGFuY2Vv
ZiBJZGxJbnRlcmZhY2UpKSB7CisgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJZGxIYXJu
ZXNzRXJyb3IoYEludmFsaWQgb2JqZWN0IG1lbWJlciBuYW1lICR7bmFtZX1gKTsKKyAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgdGhpcy5tZW1iZXJzW25hbWVdLnRlc3Rfb2JqZWN0
KHN0cik7CiAgICAgICAgICAgICB9LmJpbmQodGhpcykpOwogICAgICAgICB9CiAgICAgfQogfTsK
IAotLy9AfQorSWRsQXJyYXkucHJvdG90eXBlLm1lcmdlX3BhcnRpYWxzID0gZnVuY3Rpb24oKQor
eworICAgIGNvbnN0IHRlc3RlZFBhcnRpYWxzID0gbmV3IE1hcCgpOworICAgIHRoaXMucGFydGlh
bHMuZm9yRWFjaChmdW5jdGlvbihwYXJzZWRfaWRsKQorICAgIHsKKyAgICAgICAgY29uc3Qgb3Jp
Z2luYWxFeGlzdHMgPSBwYXJzZWRfaWRsLm5hbWUgaW4gdGhpcy5tZW1iZXJzCisgICAgICAgICAg
ICAmJiAodGhpcy5tZW1iZXJzW3BhcnNlZF9pZGwubmFtZV0gaW5zdGFuY2VvZiBJZGxJbnRlcmZh
Y2UKKyAgICAgICAgICAgICAgICB8fCB0aGlzLm1lbWJlcnNbcGFyc2VkX2lkbC5uYW1lXSBpbnN0
YW5jZW9mIElkbERpY3Rpb25hcnkKKyAgICAgICAgICAgICAgICB8fCB0aGlzLm1lbWJlcnNbcGFy
c2VkX2lkbC5uYW1lXSBpbnN0YW5jZW9mIElkbE5hbWVzcGFjZSk7CisKKyAgICAgICAgLy8gRW5z
dXJlIHVuaXF1ZSB0ZXN0IG5hbWUgaW4gY2FzZSBvZiBtdWx0aXBsZSBwYXJ0aWFscy4KKyAgICAg
ICAgbGV0IHBhcnRpYWxUZXN0TmFtZSA9IHBhcnNlZF9pZGwubmFtZTsKKyAgICAgICAgbGV0IHBh
cnRpYWxUZXN0Q291bnQgPSAxOworICAgICAgICBpZiAodGVzdGVkUGFydGlhbHMuaGFzKHBhcnNl
ZF9pZGwubmFtZSkpIHsKKyAgICAgICAgICAgIHBhcnRpYWxUZXN0Q291bnQgKz0gdGVzdGVkUGFy
dGlhbHMuZ2V0KHBhcnNlZF9pZGwubmFtZSk7CisgICAgICAgICAgICBwYXJ0aWFsVGVzdE5hbWUg
PSBgJHtwYXJ0aWFsVGVzdE5hbWV9WyR7cGFydGlhbFRlc3RDb3VudH1dYDsKKyAgICAgICAgfQor
ICAgICAgICB0ZXN0ZWRQYXJ0aWFscy5zZXQocGFyc2VkX2lkbC5uYW1lLCBwYXJ0aWFsVGVzdENv
dW50KTsKKworICAgICAgICBpZiAoIXBhcnNlZF9pZGwudW50ZXN0ZWQpIHsKKyAgICAgICAgICAg
IHRlc3QoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGFzc2VydF90cnVlKG9yaWdpbmFs
RXhpc3RzLCBgT3JpZ2luYWwgJHtwYXJzZWRfaWRsLnR5cGV9IHNob3VsZCBiZSBkZWZpbmVkYCk7
CisKKyAgICAgICAgICAgICAgICB2YXIgZXhwZWN0ZWQ7CisgICAgICAgICAgICAgICAgc3dpdGNo
IChwYXJzZWRfaWRsLnR5cGUpIHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAnZGljdGlvbmFy
eSc6IGV4cGVjdGVkID0gSWRsRGljdGlvbmFyeTsgYnJlYWs7CisgICAgICAgICAgICAgICAgICAg
IGNhc2UgJ25hbWVzcGFjZSc6IGV4cGVjdGVkID0gSWRsTmFtZXNwYWNlOyBicmVhazsKKyAgICAg
ICAgICAgICAgICAgICAgY2FzZSAnaW50ZXJmYWNlJzoKKyAgICAgICAgICAgICAgICAgICAgY2Fz
ZSAnaW50ZXJmYWNlIG1peGluJzoKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkID0gSWRsSW50ZXJmYWNlOyBicmVhazsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYXNzZXJ0X3RydWUoCisgICAgICAgICAgICAg
ICAgICAgIGV4cGVjdGVkLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKHRoaXMubWVtYmVyc1twYXJz
ZWRfaWRsLm5hbWVdKSwKKyAgICAgICAgICAgICAgICAgICAgYE9yaWdpbmFsICR7cGFyc2VkX2lk
bC5uYW1lfSBkZWZpbml0aW9uIHNob3VsZCBoYXZlIHR5cGUgJHtwYXJzZWRfaWRsLnR5cGV9YCk7
CisgICAgICAgICAgICB9LmJpbmQodGhpcyksIGBQYXJ0aWFsICR7cGFyc2VkX2lkbC50eXBlfSAk
e3BhcnRpYWxUZXN0TmFtZX06IG9yaWdpbmFsICR7cGFyc2VkX2lkbC50eXBlfSBkZWZpbmVkYCk7
CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFvcmlnaW5hbEV4aXN0cykgeworICAgICAgICAgICAg
Ly8gTm90IGdvb2QuLiBidXQga2VlcCBjYWxtIGFuZCBjYXJyeSBvbi4KKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChwYXJzZWRfaWRsLmV4dEF0dHJzKQorICAg
ICAgICB7CisgICAgICAgICAgICAvLyBTcGVjaWFsLWNhc2UgIkV4cG9zZWQiLiBNdXN0IGJlIGEg
c3Vic2V0IG9mIG9yaWdpbmFsIGludGVyZmFjZSdzIGV4cG9zdXJlLgorICAgICAgICAgICAgLy8g
RXhwb3NlZCBvbiBhIHBhcnRpYWwgaXMgdGhlIGVxdWl2YWxlbnQgb2YgaGF2aW5nIHRoZSBzYW1l
IEV4cG9zZWQgb24gYWxsIG5lc3RlZCBtZW1iZXJzLgorICAgICAgICAgICAgLy8gU2VlIGh0dHBz
Oi8vZ2l0aHViLmNvbS9oZXljYW0vd2ViaWRsL2lzc3Vlcy8xNTQgZm9yIGRpc2NyZXBlbmN5IGJl
dHdlZW4gRXhwb3NlZCBhbmQKKyAgICAgICAgICAgIC8vIG90aGVyIGV4dGVuZGVkIGF0dHJpYnV0
ZXMgb24gcGFydGlhbCBpbnRlcmZhY2VzLgorICAgICAgICAgICAgY29uc3QgZXhwb3N1cmVBdHRy
ID0gcGFyc2VkX2lkbC5leHRBdHRycy5maW5kKGEgPT4gYS5uYW1lID09PSAiRXhwb3NlZCIpOwor
ICAgICAgICAgICAgaWYgKGV4cG9zdXJlQXR0cikgeworICAgICAgICAgICAgICAgIGlmICghcGFy
c2VkX2lkbC51bnRlc3RlZCkgeworICAgICAgICAgICAgICAgICAgICB0ZXN0KGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcnRpYWxFeHBvc3VyZSA9IGV4cG9z
dXJlX3NldChwYXJzZWRfaWRsKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1lbWJl
ckV4cG9zdXJlID0gZXhwb3N1cmVfc2V0KHRoaXMubWVtYmVyc1twYXJzZWRfaWRsLm5hbWVdKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpYWxFeHBvc3VyZS5mb3JFYWNoKG5hbWUgPT4g
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbWVtYmVyRXhwb3N1cmUgfHwgIW1l
bWJlckV4cG9zdXJlLmhhcyhuYW1lKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0aHJvdyBuZXcgSWRsSGFybmVzc0Vycm9yKAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYFBhcnRpYWwgJHtwYXJzZWRfaWRsLm5hbWV9ICR7cGFyc2VkX2lkbC50eXBlfSBp
cyBleHBvc2VkIHRvICcke25hbWV9JywgdGhlIG9yaWdpbmFsICR7cGFyc2VkX2lkbC50eXBlfSBp
cyBub3QuYCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgIH0uYmluZCh0aGlzKSwgYFBhcnRpYWwg
JHtwYXJzZWRfaWRsLnR5cGV9ICR7cGFydGlhbFRlc3ROYW1lfTogdmFsaWQgZXhwb3N1cmUgc2V0
YCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHBhcnNlZF9pZGwubWVtYmVy
cy5mb3JFYWNoKGZ1bmN0aW9uIChtZW1iZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgbWVtYmVy
LmV4dEF0dHJzLnB1c2goZXhwb3N1cmVBdHRyKTsKKyAgICAgICAgICAgICAgICB9LmJpbmQodGhp
cykpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBwYXJzZWRfaWRsLmV4dEF0dHJzLmZv
ckVhY2goZnVuY3Rpb24oZXh0QXR0cikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAv
LyAiRXhwb3NlZCIgYWxyZWFkeSBoYW5kbGVkIGFib3ZlLgorICAgICAgICAgICAgICAgIGlmIChl
eHRBdHRyLm5hbWUgPT09ICJFeHBvc2VkIikgeworICAgICAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHRoaXMubWVtYmVyc1twYXJzZWRf
aWRsLm5hbWVdLmV4dEF0dHJzLnB1c2goZXh0QXR0cik7CisgICAgICAgICAgICB9LmJpbmQodGhp
cykpOworICAgICAgICB9CisgICAgICAgIGlmIChwYXJzZWRfaWRsLm1lbWJlcnMubGVuZ3RoKSB7
CisgICAgICAgICAgICB0ZXN0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICB2YXIgY2xh
c2ggPSBwYXJzZWRfaWRsLm1lbWJlcnMuZmluZChmdW5jdGlvbihtZW1iZXIpIHsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRoaXMubWVtYmVyc1twYXJzZWRfaWRsLm5hbWVdLm1lbWJlcnMu
ZmluZChmdW5jdGlvbihtKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5h
cmVfZHVwbGljYXRlX21lbWJlcnMobSwgbWVtYmVyKTsKKyAgICAgICAgICAgICAgICAgICAgfS5i
aW5kKHRoaXMpKTsKKyAgICAgICAgICAgICAgICB9LmJpbmQodGhpcykpOworICAgICAgICAgICAg
ICAgIHBhcnNlZF9pZGwubWVtYmVycy5mb3JFYWNoKGZ1bmN0aW9uKG1lbWJlcikKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHRoaXMubWVtYmVyc1twYXJzZWRfaWRsLm5h
bWVdLm1lbWJlcnMucHVzaChuZXcgSWRsSW50ZXJmYWNlTWVtYmVyKG1lbWJlcikpOworICAgICAg
ICAgICAgICAgIH0uYmluZCh0aGlzKSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0X3RydWUoIWNs
YXNoLCAibWVtYmVyICIgKyAoY2xhc2ggJiYgY2xhc2gubmFtZSkgKyAiIGlzIHVuaXF1ZSIpOwor
ICAgICAgICAgICAgfS5iaW5kKHRoaXMpLCBgUGFydGlhbCAke3BhcnNlZF9pZGwudHlwZX0gJHtw
YXJ0aWFsVGVzdE5hbWV9OiBtZW1iZXIgbmFtZXMgYXJlIHVuaXF1ZWApOworICAgICAgICB9Cisg
ICAgfS5iaW5kKHRoaXMpKTsKKyAgICB0aGlzLnBhcnRpYWxzID0gW107Cit9CisKK0lkbEFycmF5
LnByb3RvdHlwZS5tZXJnZV9taXhpbnMgPSBmdW5jdGlvbigpCit7CisgICAgZm9yIChjb25zdCBw
YXJzZWRfaWRsIG9mIHRoaXMuaW5jbHVkZXMpCisgICAgeworICAgICAgICBjb25zdCBsaHMgPSBw
YXJzZWRfaWRsLnRhcmdldDsKKyAgICAgICAgY29uc3QgcmhzID0gcGFyc2VkX2lkbC5pbmNsdWRl
czsKKworICAgICAgICB2YXIgZXJyU3RyID0gbGhzICsgIiBpbmNsdWRlcyAiICsgcmhzICsgIiwg
YnV0ICI7CisgICAgICAgIGlmICghKGxocyBpbiB0aGlzLm1lbWJlcnMpKSB0aHJvdyBlcnJTdHIg
KyBsaHMgKyAiIGlzIHVuZGVmaW5lZC4iOworICAgICAgICBpZiAoISh0aGlzLm1lbWJlcnNbbGhz
XSBpbnN0YW5jZW9mIElkbEludGVyZmFjZSkpIHRocm93IGVyclN0ciArIGxocyArICIgaXMgbm90
IGFuIGludGVyZmFjZS4iOworICAgICAgICBpZiAoIShyaHMgaW4gdGhpcy5tZW1iZXJzKSkgdGhy
b3cgZXJyU3RyICsgcmhzICsgIiBpcyB1bmRlZmluZWQuIjsKKyAgICAgICAgaWYgKCEodGhpcy5t
ZW1iZXJzW3Joc10gaW5zdGFuY2VvZiBJZGxJbnRlcmZhY2UpKSB0aHJvdyBlcnJTdHIgKyByaHMg
KyAiIGlzIG5vdCBhbiBpbnRlcmZhY2UuIjsKKworICAgICAgICBpZiAodGhpcy5tZW1iZXJzW3Jo
c10ubWVtYmVycy5sZW5ndGgpIHsKKyAgICAgICAgICAgIHRlc3QoZnVuY3Rpb24gKCkgeworICAg
ICAgICAgICAgICAgIHZhciBjbGFzaCA9IHRoaXMubWVtYmVyc1tyaHNdLm1lbWJlcnMuZmluZChm
dW5jdGlvbihtZW1iZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubWVtYmVy
c1tsaHNdLm1lbWJlcnMuZmluZChmdW5jdGlvbihtKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdGhpcy5hcmVfZHVwbGljYXRlX21lbWJlcnMobSwgbWVtYmVyKTsKKyAgICAgICAg
ICAgICAgICAgICAgfS5iaW5kKHRoaXMpKTsKKyAgICAgICAgICAgICAgICB9LmJpbmQodGhpcykp
OworICAgICAgICAgICAgICAgIHRoaXMubWVtYmVyc1tyaHNdLm1lbWJlcnMuZm9yRWFjaChmdW5j
dGlvbihtZW1iZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X3RydWUoCisgICAgICAg
ICAgICAgICAgICAgICAgICB0aGlzLm1lbWJlcnNbbGhzXS5tZW1iZXJzLmV2ZXJ5KG0gPT4gIXRo
aXMuYXJlX2R1cGxpY2F0ZV9tZW1iZXJzKG0sIG1lbWJlcikpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgIm1lbWJlciAiICsgbWVtYmVyLm5hbWUgKyAiIGlzIHVuaXF1ZSIpOworICAgICAgICAg
ICAgICAgICAgICB0aGlzLm1lbWJlcnNbbGhzXS5tZW1iZXJzLnB1c2gobmV3IElkbEludGVyZmFj
ZU1lbWJlcihtZW1iZXIpKTsKKyAgICAgICAgICAgICAgICB9LmJpbmQodGhpcykpOworICAgICAg
ICAgICAgICAgIGFzc2VydF90cnVlKCFjbGFzaCwgIm1lbWJlciAiICsgKGNsYXNoICYmIGNsYXNo
Lm5hbWUpICsgIiBpcyB1bmlxdWUiKTsKKyAgICAgICAgICAgIH0uYmluZCh0aGlzKSwgbGhzICsg
IiBpbmNsdWRlcyAiICsgcmhzICsgIjogbWVtYmVyIG5hbWVzIGFyZSB1bmlxdWUiKTsKKyAgICAg
ICAgfQorICAgIH0KKyAgICB0aGlzLmluY2x1ZGVzID0gW107Cit9CisKK0lkbEFycmF5LnByb3Rv
dHlwZS5hcmVfZHVwbGljYXRlX21lbWJlcnMgPSBmdW5jdGlvbihtMSwgbTIpIHsKKyAgICBpZiAo
bTEubmFtZSAhPT0gbTIubmFtZSkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAg
IGlmIChtMS50eXBlID09PSAnb3BlcmF0aW9uJyAmJiBtMi50eXBlID09PSAnb3BlcmF0aW9uJwor
ICAgICAgICAmJiBtMS5hcmd1bWVudHMubGVuZ3RoICE9PSBtMi5hcmd1bWVudHMubGVuZ3RoKSB7
CisgICAgICAgIC8vIE1ldGhvZCBvdmVybG9hZC4gVE9ETzogRGVlcCBjb21wYXJpc29uIG9mIGFy
Z3VtZW50cy4KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsK
K30KKwogSWRsQXJyYXkucHJvdG90eXBlLmFzc2VydF90eXBlX2lzID0gZnVuY3Rpb24odmFsdWUs
IHR5cGUpCi0vL0B7CiB7CisgICAgaWYgKHR5cGUuaWRsVHlwZSBpbiB0aGlzLm1lbWJlcnMKKyAg
ICAmJiB0aGlzLm1lbWJlcnNbdHlwZS5pZGxUeXBlXSBpbnN0YW5jZW9mIElkbFR5cGVkZWYpIHsK
KyAgICAgICAgdGhpcy5hc3NlcnRfdHlwZV9pcyh2YWx1ZSwgdGhpcy5tZW1iZXJzW3R5cGUuaWRs
VHlwZV0uaWRsVHlwZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAodHlwZS5u
dWxsYWJsZSAmJiB2YWx1ZSA9PT0gbnVsbCkKKyAgICB7CisgICAgICAgIC8vIFRoaXMgaXMgZmlu
ZQorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKHR5cGUudW5pb24pIHsKKyAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0eXBlLmlkbFR5cGUubGVuZ3RoOyBpKyspIHsKKyAgICAg
ICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgdGhpcy5hc3NlcnRfdHlwZV9pcyh2YWx1ZSwg
dHlwZS5pZGxUeXBlW2ldKTsKKyAgICAgICAgICAgICAgICAvLyBObyBBc3NlcnRpb25FcnJvciwg
c28gd2UgbWF0Y2ggb25lIHR5cGUgaW4gdGhlIHVuaW9uCisgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICAgICAgaWYgKGUgaW5zdGFu
Y2VvZiBBc3NlcnRpb25FcnJvcikgeworICAgICAgICAgICAgICAgICAgICAvLyBXZSBkaWRuJ3Qg
bWF0Y2ggdGhpcyB0eXBlLCBsZXQncyB0cnkgc29tZSBvdGhlcnMKKyAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHRocm93IGU7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgLy8gVE9ETzogSXMgdGhlcmUgYSBu
aWNlIHdheSB0byBsaXN0IHRoZSB1bmlvbidzIHR5cGVzIGluIHRoZSBtZXNzYWdlPworICAgICAg
ICBhc3NlcnRfdHJ1ZShmYWxzZSwgIkF0dHJpYnV0ZSBoYXMgdmFsdWUgIiArIGZvcm1hdF92YWx1
ZSh2YWx1ZSkKKyAgICAgICAgICAgICAgICAgICAgKyAiIHdoaWNoIGRvZXNuJ3QgbWF0Y2ggYW55
IG9mIHRoZSB0eXBlcyBpbiB0aGUgdW5pb24iKTsKKworICAgIH0KKwogICAgIC8qKgogICAgICAq
IEhlbHBlciBmdW5jdGlvbiB0aGF0IHRlc3RzIHRoYXQgdmFsdWUgaXMgYW4gaW5zdGFuY2Ugb2Yg
dHlwZSBhY2NvcmRpbmcKICAgICAgKiB0byB0aGUgcnVsZXMgb2YgV2ViSURMLiAgdmFsdWUgaXMg
YW55IEphdmFTY3JpcHQgdmFsdWUsIGFuZCB0eXBlIGlzIGFuCkBAIC00MzgsNDMgKzkzNCw0OSBA
QCBJZGxBcnJheS5wcm90b3R5cGUuYXNzZXJ0X3R5cGVfaXMgPSBmdW5jdGlvbih2YWx1ZSwgdHlw
ZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICh0eXBlLm51bGxhYmxlICYmIHZh
bHVlID09PSBudWxsKQotICAgIHsKLSAgICAgICAgLy8gVGhpcyBpcyBmaW5lCi0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KICAgICBpZiAodHlwZS5hcnJheSkKICAgICB7CiAgICAgICAgIC8vIFRP
RE86IG5vdCBzdXBwb3J0ZWQgeWV0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAo
dHlwZS5zZXF1ZW5jZSkKKyAgICBpZiAodHlwZS5nZW5lcmljID09PSAic2VxdWVuY2UiKQogICAg
IHsKLSAgICAgICAgYXNzZXJ0X3RydWUoQXJyYXkuaXNBcnJheSh2YWx1ZSksICJpcyBub3QgYXJy
YXkiKTsKKyAgICAgICAgYXNzZXJ0X3RydWUoQXJyYXkuaXNBcnJheSh2YWx1ZSksICJzaG91bGQg
YmUgYW4gQXJyYXkiKTsKICAgICAgICAgaWYgKCF2YWx1ZS5sZW5ndGgpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIC8vIE5vdGhpbmcgd2UgY2FuIGRvLgogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9Ci0gICAgICAgIHRoaXMuYXNzZXJ0X3R5cGVfaXModmFsdWVbMF0sIHR5cGUuaWRsVHlw
ZS5pZGxUeXBlKTsKKyAgICAgICAgdGhpcy5hc3NlcnRfdHlwZV9pcyh2YWx1ZVswXSwgdHlwZS5p
ZGxUeXBlWzBdKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmICh0eXBlLmdlbmVy
aWMgPT09ICJQcm9taXNlIikgewotICAgICAgICBhc3NlcnRfdHJ1ZSgidGhlbiIgaW4gdmFsdWUs
ICJBdHRyaWJ1dGUgd2l0aCBhIFByb21pc2UgdHlwZSBoYXMgYSB0aGVuIHByb3BlcnR5Iik7Cisg
ICAgICAgIGFzc2VydF90cnVlKCJ0aGVuIiBpbiB2YWx1ZSwgIkF0dHJpYnV0ZSB3aXRoIGEgUHJv
bWlzZSB0eXBlIHNob3VsZCBoYXZlIGEgdGhlbiBwcm9wZXJ0eSIpOwogICAgICAgICAvLyBUT0RP
OiBJZGVhbGx5LCB3ZSB3b3VsZCBjaGVjayBvbiBwcm9qZWN0IGZ1bGZpbGxtZW50CiAgICAgICAg
IC8vIHRoYXQgd2UgZ2V0IHRoZSByaWdodCB0eXBlCiAgICAgICAgIC8vIGJ1dCB0aGF0IHdvdWxk
IHJlcXVpcmUgbWFraW5nIHRoZSB0eXBlIGNoZWNrIGFzeW5jCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICB0eXBlID0gdHlwZS5pZGxUeXBlOworICAgIGlmICh0eXBlLmdlbmVyaWMgPT09
ICJGcm96ZW5BcnJheSIpIHsKKyAgICAgICAgYXNzZXJ0X3RydWUoQXJyYXkuaXNBcnJheSh2YWx1
ZSksICJWYWx1ZSBzaG91bGQgYmUgYXJyYXkiKTsKKyAgICAgICAgYXNzZXJ0X3RydWUoT2JqZWN0
LmlzRnJvemVuKHZhbHVlKSwgIlZhbHVlIHNob3VsZCBiZSBmcm96ZW4iKTsKKyAgICAgICAgaWYg
KCF2YWx1ZS5sZW5ndGgpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIE5vdGhpbmcgd2UgY2Fu
IGRvLgorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHRoaXMuYXNzZXJ0
X3R5cGVfaXModmFsdWVbMF0sIHR5cGUuaWRsVHlwZVswXSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICB0eXBlID0gQXJyYXkuaXNBcnJheSh0eXBlLmlkbFR5cGUpID8gdHlwZS5pZGxU
eXBlWzBdIDogdHlwZS5pZGxUeXBlOwogCiAgICAgc3dpdGNoKHR5cGUpCiAgICAgewotICAgICAg
ICBjYXNlICJ2b2lkIjoKKyAgICAgICAgY2FzZSAidW5kZWZpbmVkIjoKICAgICAgICAgICAgIGFz
c2VydF9lcXVhbHModmFsdWUsIHVuZGVmaW5lZCk7CiAgICAgICAgICAgICByZXR1cm47CiAKQEAg
LTQ4NCwzOCArOTg2LDM4IEBAIElkbEFycmF5LnByb3RvdHlwZS5hc3NlcnRfdHlwZV9pcyA9IGZ1
bmN0aW9uKHZhbHVlLCB0eXBlKQogCiAgICAgICAgIGNhc2UgImJ5dGUiOgogICAgICAgICAgICAg
YXNzZXJ0X2VxdWFscyh0eXBlb2YgdmFsdWUsICJudW1iZXIiKTsKLSAgICAgICAgICAgIGFzc2Vy
dF9lcXVhbHModmFsdWUsIE1hdGguZmxvb3IodmFsdWUpLCAibm90IGFuIGludGVnZXIiKTsKLSAg
ICAgICAgICAgIGFzc2VydF90cnVlKC0xMjggPD0gdmFsdWUgJiYgdmFsdWUgPD0gMTI3LCAiYnl0
ZSAiICsgdmFsdWUgKyAiIG5vdCBpbiByYW5nZSBbLTEyOCwgMTI3XSIpOworICAgICAgICAgICAg
YXNzZXJ0X2VxdWFscyh2YWx1ZSwgTWF0aC5mbG9vcih2YWx1ZSksICJzaG91bGQgYmUgYW4gaW50
ZWdlciIpOworICAgICAgICAgICAgYXNzZXJ0X3RydWUoLTEyOCA8PSB2YWx1ZSAmJiB2YWx1ZSA8
PSAxMjcsICJieXRlICIgKyB2YWx1ZSArICIgc2hvdWxkIGJlIGluIHJhbmdlIFstMTI4LCAxMjdd
Iik7CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgY2FzZSAib2N0ZXQiOgogICAgICAg
ICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgdmFsdWUsICJudW1iZXIiKTsKLSAgICAgICAgICAg
IGFzc2VydF9lcXVhbHModmFsdWUsIE1hdGguZmxvb3IodmFsdWUpLCAibm90IGFuIGludGVnZXIi
KTsKLSAgICAgICAgICAgIGFzc2VydF90cnVlKDAgPD0gdmFsdWUgJiYgdmFsdWUgPD0gMjU1LCAi
b2N0ZXQgIiArIHZhbHVlICsgIiBub3QgaW4gcmFuZ2UgWzAsIDI1NV0iKTsKKyAgICAgICAgICAg
IGFzc2VydF9lcXVhbHModmFsdWUsIE1hdGguZmxvb3IodmFsdWUpLCAic2hvdWxkIGJlIGFuIGlu
dGVnZXIiKTsKKyAgICAgICAgICAgIGFzc2VydF90cnVlKDAgPD0gdmFsdWUgJiYgdmFsdWUgPD0g
MjU1LCAib2N0ZXQgIiArIHZhbHVlICsgIiBzaG91bGQgYmUgaW4gcmFuZ2UgWzAsIDI1NV0iKTsK
ICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBjYXNlICJzaG9ydCI6CiAgICAgICAgICAg
ICBhc3NlcnRfZXF1YWxzKHR5cGVvZiB2YWx1ZSwgIm51bWJlciIpOwotICAgICAgICAgICAgYXNz
ZXJ0X2VxdWFscyh2YWx1ZSwgTWF0aC5mbG9vcih2YWx1ZSksICJub3QgYW4gaW50ZWdlciIpOwot
ICAgICAgICAgICAgYXNzZXJ0X3RydWUoLTMyNzY4IDw9IHZhbHVlICYmIHZhbHVlIDw9IDMyNzY3
LCAic2hvcnQgIiArIHZhbHVlICsgIiBub3QgaW4gcmFuZ2UgWy0zMjc2OCwgMzI3NjddIik7Cisg
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHZhbHVlLCBNYXRoLmZsb29yKHZhbHVlKSwgInNob3Vs
ZCBiZSBhbiBpbnRlZ2VyIik7CisgICAgICAgICAgICBhc3NlcnRfdHJ1ZSgtMzI3NjggPD0gdmFs
dWUgJiYgdmFsdWUgPD0gMzI3NjcsICJzaG9ydCAiICsgdmFsdWUgKyAiIHNob3VsZCBiZSBpbiBy
YW5nZSBbLTMyNzY4LCAzMjc2N10iKTsKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBj
YXNlICJ1bnNpZ25lZCBzaG9ydCI6CiAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiB2
YWx1ZSwgIm51bWJlciIpOwotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh2YWx1ZSwgTWF0aC5m
bG9vcih2YWx1ZSksICJub3QgYW4gaW50ZWdlciIpOwotICAgICAgICAgICAgYXNzZXJ0X3RydWUo
MCA8PSB2YWx1ZSAmJiB2YWx1ZSA8PSA2NTUzNSwgInVuc2lnbmVkIHNob3J0ICIgKyB2YWx1ZSAr
ICIgbm90IGluIHJhbmdlIFswLCA2NTUzNV0iKTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMo
dmFsdWUsIE1hdGguZmxvb3IodmFsdWUpLCAic2hvdWxkIGJlIGFuIGludGVnZXIiKTsKKyAgICAg
ICAgICAgIGFzc2VydF90cnVlKDAgPD0gdmFsdWUgJiYgdmFsdWUgPD0gNjU1MzUsICJ1bnNpZ25l
ZCBzaG9ydCAiICsgdmFsdWUgKyAiIHNob3VsZCBiZSBpbiByYW5nZSBbMCwgNjU1MzVdIik7CiAg
ICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgY2FzZSAibG9uZyI6CiAgICAgICAgICAgICBh
c3NlcnRfZXF1YWxzKHR5cGVvZiB2YWx1ZSwgIm51bWJlciIpOwotICAgICAgICAgICAgYXNzZXJ0
X2VxdWFscyh2YWx1ZSwgTWF0aC5mbG9vcih2YWx1ZSksICJub3QgYW4gaW50ZWdlciIpOwotICAg
ICAgICAgICAgYXNzZXJ0X3RydWUoLTIxNDc0ODM2NDggPD0gdmFsdWUgJiYgdmFsdWUgPD0gMjE0
NzQ4MzY0NywgImxvbmcgIiArIHZhbHVlICsgIiBub3QgaW4gcmFuZ2UgWy0yMTQ3NDgzNjQ4LCAy
MTQ3NDgzNjQ3XSIpOworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh2YWx1ZSwgTWF0aC5mbG9v
cih2YWx1ZSksICJzaG91bGQgYmUgYW4gaW50ZWdlciIpOworICAgICAgICAgICAgYXNzZXJ0X3Ry
dWUoLTIxNDc0ODM2NDggPD0gdmFsdWUgJiYgdmFsdWUgPD0gMjE0NzQ4MzY0NywgImxvbmcgIiAr
IHZhbHVlICsgIiBzaG91bGQgYmUgaW4gcmFuZ2UgWy0yMTQ3NDgzNjQ4LCAyMTQ3NDgzNjQ3XSIp
OwogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGNhc2UgInVuc2lnbmVkIGxvbmciOgog
ICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgdmFsdWUsICJudW1iZXIiKTsKLSAgICAg
ICAgICAgIGFzc2VydF9lcXVhbHModmFsdWUsIE1hdGguZmxvb3IodmFsdWUpLCAibm90IGFuIGlu
dGVnZXIiKTsKLSAgICAgICAgICAgIGFzc2VydF90cnVlKDAgPD0gdmFsdWUgJiYgdmFsdWUgPD0g
NDI5NDk2NzI5NSwgInVuc2lnbmVkIGxvbmcgIiArIHZhbHVlICsgIiBub3QgaW4gcmFuZ2UgWzAs
IDQyOTQ5NjcyOTVdIik7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHZhbHVlLCBNYXRoLmZs
b29yKHZhbHVlKSwgInNob3VsZCBiZSBhbiBpbnRlZ2VyIik7CisgICAgICAgICAgICBhc3NlcnRf
dHJ1ZSgwIDw9IHZhbHVlICYmIHZhbHVlIDw9IDQyOTQ5NjcyOTUsICJ1bnNpZ25lZCBsb25nICIg
KyB2YWx1ZSArICIgc2hvdWxkIGJlIGluIHJhbmdlIFswLCA0Mjk0OTY3Mjk1XSIpOwogICAgICAg
ICAgICAgcmV0dXJuOwogCiAgICAgICAgIGNhc2UgImxvbmcgbG9uZyI6CkBAIC01MjUsMTIgKzEw
MjcsMTIgQEAgSWRsQXJyYXkucHJvdG90eXBlLmFzc2VydF90eXBlX2lzID0gZnVuY3Rpb24odmFs
dWUsIHR5cGUpCiAgICAgICAgIGNhc2UgInVuc2lnbmVkIGxvbmcgbG9uZyI6CiAgICAgICAgIGNh
c2UgIkRPTVRpbWVTdGFtcCI6CiAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiB2YWx1
ZSwgIm51bWJlciIpOwotICAgICAgICAgICAgYXNzZXJ0X3RydWUoMCA8PSB2YWx1ZSwgInVuc2ln
bmVkIGxvbmcgbG9uZyBpcyBuZWdhdGl2ZSIpOworICAgICAgICAgICAgYXNzZXJ0X3RydWUoMCA8
PSB2YWx1ZSwgInVuc2lnbmVkIGxvbmcgbG9uZyBzaG91bGQgYmUgcG9zaXRpdmUiKTsKICAgICAg
ICAgICAgIHJldHVybjsKIAogICAgICAgICBjYXNlICJmbG9hdCI6CiAgICAgICAgICAgICBhc3Nl
cnRfZXF1YWxzKHR5cGVvZiB2YWx1ZSwgIm51bWJlciIpOwotICAgICAgICAgICAgYXNzZXJ0X2Vx
dWFscyh2YWx1ZSwgZnJvdW5kKHZhbHVlKSwgImZsb2F0IHJvdW5kZWQgdG8gMzItYml0IGZsb2F0
IHNob3VsZCBiZSBpdHNlbGYiKTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHModmFsdWUsIE1h
dGguZnJvdW5kKHZhbHVlKSwgImZsb2F0IHJvdW5kZWQgdG8gMzItYml0IGZsb2F0IHNob3VsZCBi
ZSBpdHNlbGYiKTsKICAgICAgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKHZhbHVlLCBJbmZpbml0
eSk7CiAgICAgICAgICAgICBhc3NlcnRfbm90X2VxdWFscyh2YWx1ZSwgLUluZmluaXR5KTsKICAg
ICAgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKHZhbHVlLCBOYU4pOwpAQCAtNTQ2LDcgKzEwNDgs
NyBAQCBJZGxBcnJheS5wcm90b3R5cGUuYXNzZXJ0X3R5cGVfaXMgPSBmdW5jdGlvbih2YWx1ZSwg
dHlwZSkKIAogICAgICAgICBjYXNlICJ1bnJlc3RyaWN0ZWQgZmxvYXQiOgogICAgICAgICAgICAg
YXNzZXJ0X2VxdWFscyh0eXBlb2YgdmFsdWUsICJudW1iZXIiKTsKLSAgICAgICAgICAgIGFzc2Vy
dF9lcXVhbHModmFsdWUsIGZyb3VuZCh2YWx1ZSksICJ1bnJlc3RyaWN0ZWQgZmxvYXQgcm91bmRl
ZCB0byAzMi1iaXQgZmxvYXQgc2hvdWxkIGJlIGl0c2VsZiIpOworICAgICAgICAgICAgYXNzZXJ0
X2VxdWFscyh2YWx1ZSwgTWF0aC5mcm91bmQodmFsdWUpLCAidW5yZXN0cmljdGVkIGZsb2F0IHJv
dW5kZWQgdG8gMzItYml0IGZsb2F0IHNob3VsZCBiZSBpdHNlbGYiKTsKICAgICAgICAgICAgIHJl
dHVybjsKIAogICAgICAgICBjYXNlICJ1bnJlc3RyaWN0ZWQgZG91YmxlIjoKQEAgLTU2NywxNCAr
MTA2OSwyNiBAQCBJZGxBcnJheS5wcm90b3R5cGUuYXNzZXJ0X3R5cGVfaXMgPSBmdW5jdGlvbih2
YWx1ZSwgdHlwZSkKICAgICAgICAgICAgIGFzc2VydF9yZWdleHBfbWF0Y2godmFsdWUsIC9eKFtc
eDAwLVx1ZDdmZlx1ZTAwMC1cdWZmZmZdfFtcdWQ4MDAtXHVkYmZmXVtcdWRjMDAtXHVkZmZmXSkq
JC8pOwogICAgICAgICAgICAgcmV0dXJuOwogCisgICAgICAgIGNhc2UgIkFycmF5QnVmZmVyVmll
dyI6CisgICAgICAgICAgICBhc3NlcnRfdHJ1ZShBcnJheUJ1ZmZlci5pc1ZpZXcodmFsdWUpKTsK
KyAgICAgICAgICAgIHJldHVybjsKKwogICAgICAgICBjYXNlICJvYmplY3QiOgotICAgICAgICAg
ICAgYXNzZXJ0X3RydWUodHlwZW9mIHZhbHVlID09ICJvYmplY3QiIHx8IHR5cGVvZiB2YWx1ZSA9
PSAiZnVuY3Rpb24iLCAid3JvbmcgdHlwZTogbm90IG9iamVjdCBvciBmdW5jdGlvbiIpOworICAg
ICAgICAgICAgYXNzZXJ0X2luX2FycmF5KHR5cGVvZiB2YWx1ZSwgWyJvYmplY3QiLCAiZnVuY3Rp
b24iXSwgIndyb25nIHR5cGU6IG5vdCBvYmplY3Qgb3IgZnVuY3Rpb24iKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICB9CiAKKyAgICAvLyBUaGlzIGlzIGEgY2F0Y2gtYWxsIGZvciBhbnkgSURM
IHR5cGUgbmFtZSB3aGljaCBmb2xsb3dzIEpTIGNsYXNzCisgICAgLy8gc2VtYW50aWNzLiBUaGlz
IGluY2x1ZGVzIHNvbWUgbm9uLWludGVyZmFjZSBJREwgdHlwZXMgKGUuZy4gSW50OEFycmF5LAor
ICAgIC8vIEZ1bmN0aW9uLCAuLi4pLCBhcyB3ZWxsIGFzIGFueSBpbnRlcmZhY2UgdHlwZXMgdGhh
dCBhcmUgbm90IGluIHRoZSBJREwKKyAgICAvLyB0aGF0IGlzIGZlZCB0byB0aGUgaGFybmVzcy4g
SWYgYW4gSURMIHR5cGUgZG9lcyBub3QgZm9sbG93IEpTIGNsYXNzCisgICAgLy8gc2VtYW50aWNz
IHRoZW4gaXQgc2hvdWxkIGdvIGluIHRoZSBzd2l0Y2ggc3RhdGVtZW50IGFib3ZlLiBJZiBhbiBJ
REwKKyAgICAvLyB0eXBlIG5lZWRzIGZ1bGwgY2hlY2tpbmcsIHRoZW4gdGhlIHRlc3Qgc2hvdWxk
IGluY2x1ZGUgaXQgaW4gdGhlIElETCBpdAorICAgIC8vIGZlZWRzIHRvIHRoZSBoYXJuZXNzLgog
ICAgIGlmICghKHR5cGUgaW4gdGhpcy5tZW1iZXJzKSkKICAgICB7Ci0gICAgICAgIHRocm93ICJV
bnJlY29nbml6ZWQgdHlwZSAiICsgdHlwZTsKKyAgICAgICAgYXNzZXJ0X3RydWUodmFsdWUgaW5z
dGFuY2VvZiBzZWxmW3R5cGVdLCAid3JvbmcgdHlwZTogbm90IGEgIiArIHR5cGUpOworICAgICAg
ICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKHRoaXMubWVtYmVyc1t0eXBlXSBpbnN0YW5jZW9m
IElkbEludGVyZmFjZSkKQEAgLTU4MiwxNCArMTA5NiwxNCBAQCBJZGxBcnJheS5wcm90b3R5cGUu
YXNzZXJ0X3R5cGVfaXMgPSBmdW5jdGlvbih2YWx1ZSwgdHlwZSkKICAgICAgICAgLy8gV2UgZG9u
J3Qgd2FudCB0byBydW4gdGhlIGZ1bGwKICAgICAgICAgLy8gSWRsSW50ZXJmYWNlLnByb3RvdHlw
ZS50ZXN0X2luc3RhbmNlX29mLCBiZWNhdXNlIHRoYXQgY291bGQgcmVzdWx0CiAgICAgICAgIC8v
IGluIGFuIGluZmluaXRlIGxvb3AuICBUT0RPOiBUaGlzIG1lYW5zIHdlIGRvbid0IGhhdmUgdGVz
dHMgZm9yCi0gICAgICAgIC8vIE5vSW50ZXJmYWNlT2JqZWN0IGludGVyZmFjZXMsIGFuZCB3ZSBh
bHNvIGNhbid0IHRlc3Qgb2JqZWN0cyB0aGF0Ci0gICAgICAgIC8vIGNvbWUgZnJvbSBhbm90aGVy
IHNlbGYuCi0gICAgICAgIGFzc2VydF90cnVlKHR5cGVvZiB2YWx1ZSA9PSAib2JqZWN0IiB8fCB0
eXBlb2YgdmFsdWUgPT0gImZ1bmN0aW9uIiwgIndyb25nIHR5cGU6IG5vdCBvYmplY3Qgb3IgZnVu
Y3Rpb24iKTsKKyAgICAgICAgLy8gTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QgaW50ZXJmYWNlcywg
YW5kIHdlIGFsc28gY2FuJ3QgdGVzdCBvYmplY3RzCisgICAgICAgIC8vIHRoYXQgY29tZSBmcm9t
IGFub3RoZXIgc2VsZi4KKyAgICAgICAgYXNzZXJ0X2luX2FycmF5KHR5cGVvZiB2YWx1ZSwgWyJv
YmplY3QiLCAiZnVuY3Rpb24iXSwgIndyb25nIHR5cGU6IG5vdCBvYmplY3Qgb3IgZnVuY3Rpb24i
KTsKICAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0Ci0gICAgICAgICYmICF0aGlz
Lm1lbWJlcnNbdHlwZV0uaGFzX2V4dGVuZGVkX2F0dHJpYnV0ZSgiTm9JbnRlcmZhY2VPYmplY3Qi
KQorICAgICAgICAmJiAhdGhpcy5tZW1iZXJzW3R5cGVdLmhhc19leHRlbmRlZF9hdHRyaWJ1dGUo
IkxlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0IikKICAgICAgICAgJiYgdHlwZSBpbiBzZWxmKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBhc3NlcnRfdHJ1ZSh2YWx1ZSBpbnN0YW5jZW9mIHNlbGZbdHlw
ZV0sICJub3QgaW5zdGFuY2VvZiAiICsgdHlwZSk7CisgICAgICAgICAgICBhc3NlcnRfdHJ1ZSh2
YWx1ZSBpbnN0YW5jZW9mIHNlbGZbdHlwZV0sICJpbnN0YW5jZW9mICIgKyB0eXBlKTsKICAgICAg
ICAgfQogICAgIH0KICAgICBlbHNlIGlmICh0aGlzLm1lbWJlcnNbdHlwZV0gaW5zdGFuY2VvZiBJ
ZGxFbnVtKQpAQCAtNjAwLDIxICsxMTE0LDE5IEBAIElkbEFycmF5LnByb3RvdHlwZS5hc3NlcnRf
dHlwZV9pcyA9IGZ1bmN0aW9uKHZhbHVlLCB0eXBlKQogICAgIHsKICAgICAgICAgLy8gVE9ETzog
VGVzdCB3aGVuIHdlIGFjdHVhbGx5IGhhdmUgc29tZXRoaW5nIHRvIHRlc3QgdGhpcyBvbgogICAg
IH0KLSAgICBlbHNlIGlmICh0aGlzLm1lbWJlcnNbdHlwZV0gaW5zdGFuY2VvZiBJZGxUeXBlZGVm
KQorICAgIGVsc2UgaWYgKHRoaXMubWVtYmVyc1t0eXBlXSBpbnN0YW5jZW9mIElkbENhbGxiYWNr
KQogICAgIHsKLSAgICAgICAgLy8gVE9ETzogVGVzdCB3aGVuIHdlIGFjdHVhbGx5IGhhdmUgc29t
ZXRoaW5nIHRvIHRlc3QgdGhpcyBvbgorICAgICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiB2YWx1
ZSwgImZ1bmN0aW9uIik7CiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIHRocm93ICJU
eXBlICIgKyB0eXBlICsgIiBpc24ndCBhbiBpbnRlcmZhY2Ugb3IgZGljdGlvbmFyeSI7CisgICAg
ICAgIHRocm93IG5ldyBJZGxIYXJuZXNzRXJyb3IoIlR5cGUgIiArIHR5cGUgKyAiIGlzbid0IGFu
IGludGVyZmFjZSwgY2FsbGJhY2sgb3IgZGljdGlvbmFyeSIpOwogICAgIH0KIH07Ci0vL0B9CiAK
IC8vLyBJZGxPYmplY3QgLy8vCiBmdW5jdGlvbiBJZGxPYmplY3QoKSB7fQogSWRsT2JqZWN0LnBy
b3RvdHlwZS50ZXN0ID0gZnVuY3Rpb24oKQotLy9AewogewogICAgIC8qKgogICAgICAqIEJ5IGRl
ZmF1bHQsIHRoaXMgZG9lcyBub3RoaW5nLCBzbyBubyBhY3R1YWwgdGVzdHMgYXJlIHJ1biBmb3Ig
SWRsT2JqZWN0cwpAQCAtNjIyLDkgKzExMzQsNyBAQCBJZGxPYmplY3QucHJvdG90eXBlLnRlc3Qg
PSBmdW5jdGlvbigpCiAgICAgICovCiB9OwogCi0vL0B9CiBJZGxPYmplY3QucHJvdG90eXBlLmhh
c19leHRlbmRlZF9hdHRyaWJ1dGUgPSBmdW5jdGlvbihuYW1lKQotLy9AewogewogICAgIC8qKgog
ICAgICAqIFRoaXMgaXMgb25seSBtZWFuaW5nZnVsIGZvciB0aGluZ3MgdGhhdCBzdXBwb3J0IGV4
dGVuZGVkIGF0dHJpYnV0ZXMsCkBAIC02MzYsMTIgKzExNDYsMTAgQEAgSWRsT2JqZWN0LnByb3Rv
dHlwZS5oYXNfZXh0ZW5kZWRfYXR0cmlidXRlID0gZnVuY3Rpb24obmFtZSkKICAgICB9KTsKIH07
CiAKLS8vQH0KIAogLy8vIElkbERpY3Rpb25hcnkgLy8vCiAvLyBVc2VkIGZvciBJZGxBcnJheS5w
cm90b3R5cGUuYXNzZXJ0X3R5cGVfaXMKIGZ1bmN0aW9uIElkbERpY3Rpb25hcnkob2JqKQotLy9A
ewogewogICAgIC8qKgogICAgICAqIG9iaiBpcyBhbiBvYmplY3QgcHJvZHVjZWQgYnkgdGhlIFdl
YklETFBhcnNlci5qcyAiZGljdGlvbmFyeSIKQEAgLTY1MSw2ICsxMTU5LDkgQEAgZnVuY3Rpb24g
SWRsRGljdGlvbmFyeShvYmopCiAgICAgLyoqIFNlbGYtZXhwbGFuYXRvcnkuICovCiAgICAgdGhp
cy5uYW1lID0gb2JqLm5hbWU7CiAKKyAgICAvKiogQSBiYWNrLXJlZmVyZW5jZSB0byBvdXIgSWRs
QXJyYXkuICovCisgICAgdGhpcy5hcnJheSA9IG9iai5hcnJheTsKKwogICAgIC8qKiBBbiBhcnJh
eSBvZiBvYmplY3RzIHByb2R1Y2VkIGJ5IHRoZSAiZGljdGlvbmFyeU1lbWJlciIgcHJvZHVjdGlv
bi4gKi8KICAgICB0aGlzLm1lbWJlcnMgPSBvYmoubWVtYmVyczsKIApAQCAtNjYxLDEyICsxMTcy
LDE0IEBAIGZ1bmN0aW9uIElkbERpY3Rpb25hcnkob2JqKQogICAgIHRoaXMuYmFzZSA9IG9iai5p
bmhlcml0YW5jZTsKIH0KIAotLy9AfQogSWRsRGljdGlvbmFyeS5wcm90b3R5cGUgPSBPYmplY3Qu
Y3JlYXRlKElkbE9iamVjdC5wcm90b3R5cGUpOwogCitJZGxEaWN0aW9uYXJ5LnByb3RvdHlwZS5n
ZXRfcmV2ZXJzZV9pbmhlcml0YW5jZV9zdGFjayA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiBJ
ZGxJbnRlcmZhY2UucHJvdG90eXBlLmdldF9yZXZlcnNlX2luaGVyaXRhbmNlX3N0YWNrLmNhbGwo
dGhpcyk7Cit9OworCiAvLy8gSWRsSW50ZXJmYWNlIC8vLwotZnVuY3Rpb24gSWRsSW50ZXJmYWNl
KG9iaiwgaXNfY2FsbGJhY2spCi0vL0B7CitmdW5jdGlvbiBJZGxJbnRlcmZhY2Uob2JqLCBpc19j
YWxsYmFjaywgaXNfbWl4aW4pCiB7CiAgICAgLyoqCiAgICAgICogb2JqIGlzIGFuIG9iamVjdCBw
cm9kdWNlZCBieSB0aGUgV2ViSURMUGFyc2VyLmpzICJpbnRlcmZhY2UiIHByb2R1Y3Rpb24uCkBA
IC02OTAsOSArMTIwMyw5IEBAIGZ1bmN0aW9uIElkbEludGVyZmFjZShvYmosIGlzX2NhbGxiYWNr
KQogCiAgICAgLyoqIEFuIGFycmF5IG9mIElkbEludGVyZmFjZU1lbWJlcnMuICovCiAgICAgdGhp
cy5tZW1iZXJzID0gb2JqLm1lbWJlcnMubWFwKGZ1bmN0aW9uKG0pe3JldHVybiBuZXcgSWRsSW50
ZXJmYWNlTWVtYmVyKG0pOyB9KTsKLSAgICBpZiAodGhpcy5oYXNfZXh0ZW5kZWRfYXR0cmlidXRl
KCJVbmZvcmdlYWJsZSIpKSB7CisgICAgaWYgKHRoaXMuaGFzX2V4dGVuZGVkX2F0dHJpYnV0ZSgi
TGVnYWN5VW5mb3JnZWFibGUiKSkgewogICAgICAgICB0aGlzLm1lbWJlcnMKLSAgICAgICAgICAg
IC5maWx0ZXIoZnVuY3Rpb24obSkgeyByZXR1cm4gIW1bInN0YXRpYyJdICYmIChtLnR5cGUgPT0g
ImF0dHJpYnV0ZSIgfHwgbS50eXBlID09ICJvcGVyYXRpb24iKTsgfSkKKyAgICAgICAgICAgIC5m
aWx0ZXIoZnVuY3Rpb24obSkgeyByZXR1cm4gbS5zcGVjaWFsICE9PSAic3RhdGljIiAmJiAobS50
eXBlID09ICJhdHRyaWJ1dGUiIHx8IG0udHlwZSA9PSAib3BlcmF0aW9uIik7IH0pCiAgICAgICAg
ICAgICAuZm9yRWFjaChmdW5jdGlvbihtKSB7IHJldHVybiBtLmlzVW5mb3JnZWFibGUgPSB0cnVl
OyB9KTsKICAgICB9CiAKQEAgLTcwMywzOSArMTIxNiwxNzQgQEAgZnVuY3Rpb24gSWRsSW50ZXJm
YWNlKG9iaiwgaXNfY2FsbGJhY2spCiAgICAgdGhpcy5iYXNlID0gb2JqLmluaGVyaXRhbmNlOwog
CiAgICAgdGhpcy5faXNfY2FsbGJhY2sgPSBpc19jYWxsYmFjazsKKyAgICB0aGlzLl9pc19taXhp
biA9IGlzX21peGluOwogfQotLy9AfQogSWRsSW50ZXJmYWNlLnByb3RvdHlwZSA9IE9iamVjdC5j
cmVhdGUoSWRsT2JqZWN0LnByb3RvdHlwZSk7CiBJZGxJbnRlcmZhY2UucHJvdG90eXBlLmlzX2Nh
bGxiYWNrID0gZnVuY3Rpb24oKQotLy9AewogewogICAgIHJldHVybiB0aGlzLl9pc19jYWxsYmFj
azsKIH07Ci0vL0B9CisKK0lkbEludGVyZmFjZS5wcm90b3R5cGUuaXNfbWl4aW4gPSBmdW5jdGlv
bigpCit7CisgICAgcmV0dXJuIHRoaXMuX2lzX21peGluOworfTsKIAogSWRsSW50ZXJmYWNlLnBy
b3RvdHlwZS5oYXNfY29uc3RhbnRzID0gZnVuY3Rpb24oKQotLy9AewogewogICAgIHJldHVybiB0
aGlzLm1lbWJlcnMuc29tZShmdW5jdGlvbihtZW1iZXIpIHsKICAgICAgICAgcmV0dXJuIG1lbWJl
ci50eXBlID09PSAiY29uc3QiOwogICAgIH0pOwogfTsKLS8vQH0KKworSWRsSW50ZXJmYWNlLnBy
b3RvdHlwZS5nZXRfdW5zY29wYWJsZXMgPSBmdW5jdGlvbigpCit7CisgICAgcmV0dXJuIHRoaXMu
bWVtYmVycy5maWx0ZXIoZnVuY3Rpb24obWVtYmVyKSB7CisgICAgICAgIHJldHVybiBtZW1iZXIu
aXNVbnNjb3BhYmxlOworICAgIH0pOworfTsKIAogSWRsSW50ZXJmYWNlLnByb3RvdHlwZS5pc19n
bG9iYWwgPSBmdW5jdGlvbigpCi0vL0B7CiB7CiAgICAgcmV0dXJuIHRoaXMuZXh0QXR0cnMuc29t
ZShmdW5jdGlvbihhdHRyaWJ1dGUpIHsKLSAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZS5uYW1lID09
PSAiR2xvYmFsIiB8fAotICAgICAgICAgICAgICAgYXR0cmlidXRlLm5hbWUgPT09ICJQcmltYXJ5
R2xvYmFsIjsKKyAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZS5uYW1lID09PSAiR2xvYmFsIjsKKyAg
ICB9KTsKK307CisKKy8qKgorICogVmFsdWUgb2YgdGhlIExlZ2FjeU5hbWVzcGFjZSBleHRlbmRl
ZCBhdHRyaWJ1dGUsIGlmIGFueS4KKyAqCisgKiBodHRwczovL2hleWNhbS5naXRodWIuaW8vd2Vi
aWRsLyNMZWdhY3lOYW1lc3BhY2UKKyAqLworSWRsSW50ZXJmYWNlLnByb3RvdHlwZS5nZXRfbGVn
YWN5X25hbWVzcGFjZSA9IGZ1bmN0aW9uKCkKK3sKKyAgICB2YXIgbGVnYWN5TmFtZXNwYWNlID0g
dGhpcy5leHRBdHRycy5maW5kKGZ1bmN0aW9uKGF0dHJpYnV0ZSkgeworICAgICAgICByZXR1cm4g
YXR0cmlidXRlLm5hbWUgPT09ICJMZWdhY3lOYW1lc3BhY2UiOworICAgIH0pOworICAgIHJldHVy
biBsZWdhY3lOYW1lc3BhY2UgPyBsZWdhY3lOYW1lc3BhY2UucmhzLnZhbHVlIDogdW5kZWZpbmVk
OworfTsKKworSWRsSW50ZXJmYWNlLnByb3RvdHlwZS5nZXRfaW50ZXJmYWNlX29iamVjdF9vd25l
ciA9IGZ1bmN0aW9uKCkKK3sKKyAgICB2YXIgbGVnYWN5TmFtZXNwYWNlID0gdGhpcy5nZXRfbGVn
YWN5X25hbWVzcGFjZSgpOworICAgIHJldHVybiBsZWdhY3lOYW1lc3BhY2UgPyBzZWxmW2xlZ2Fj
eU5hbWVzcGFjZV0gOiBzZWxmOworfTsKKworSWRsSW50ZXJmYWNlLnByb3RvdHlwZS5zaG91bGRf
aGF2ZV9pbnRlcmZhY2Vfb2JqZWN0ID0gZnVuY3Rpb24oKQoreworICAgIC8vICJGb3IgZXZlcnkg
aW50ZXJmYWNlIHRoYXQgaXMgZXhwb3NlZCBpbiBhIGdpdmVuIEVDTUFTY3JpcHQgZ2xvYmFsCisg
ICAgLy8gZW52aXJvbm1lbnQgYW5kOgorICAgIC8vICogaXMgYSBjYWxsYmFjayBpbnRlcmZhY2Ug
dGhhdCBoYXMgY29uc3RhbnRzIGRlY2xhcmVkIG9uIGl0LCBvcgorICAgIC8vICogaXMgYSBub24t
Y2FsbGJhY2sgaW50ZXJmYWNlIHRoYXQgaXMgbm90IGRlY2xhcmVkIHdpdGggdGhlCisgICAgLy8g
ICBbTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3RdIGV4dGVuZGVkIGF0dHJpYnV0ZSwKKyAgICAvLyBh
IGNvcnJlc3BvbmRpbmcgcHJvcGVydHkgTVVTVCBleGlzdCBvbiB0aGUgRUNNQVNjcmlwdCBnbG9i
YWwgb2JqZWN0LgorCisgICAgcmV0dXJuIHRoaXMuaXNfY2FsbGJhY2soKSA/IHRoaXMuaGFzX2Nv
bnN0YW50cygpIDogIXRoaXMuaGFzX2V4dGVuZGVkX2F0dHJpYnV0ZSgiTGVnYWN5Tm9JbnRlcmZh
Y2VPYmplY3QiKTsKK307CisKK0lkbEludGVyZmFjZS5wcm90b3R5cGUuYXNzZXJ0X2ludGVyZmFj
ZV9vYmplY3RfZXhpc3RzID0gZnVuY3Rpb24oKQoreworICAgIHZhciBvd25lciA9IHRoaXMuZ2V0
X2xlZ2FjeV9uYW1lc3BhY2UoKSB8fCAic2VsZiI7CisgICAgYXNzZXJ0X293bl9wcm9wZXJ0eShz
ZWxmW293bmVyXSwgdGhpcy5uYW1lLCBvd25lciArICIgZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVy
dHkgIiArIGZvcm1hdF92YWx1ZSh0aGlzLm5hbWUpKTsKK307CisKK0lkbEludGVyZmFjZS5wcm90
b3R5cGUuZ2V0X2ludGVyZmFjZV9vYmplY3QgPSBmdW5jdGlvbigpIHsKKyAgICBpZiAoIXRoaXMu
c2hvdWxkX2hhdmVfaW50ZXJmYWNlX29iamVjdCgpKSB7CisgICAgICAgIHZhciByZWFzb24gPSB0
aGlzLmlzX2NhbGxiYWNrKCkgPyAibGFjayBvZiBkZWNsYXJlZCBjb25zdGFudHMiIDogImRlY2xh
cmVkIFtMZWdhY3lOb0ludGVyZmFjZU9iamVjdF0gYXR0cmlidXRlIjsKKyAgICAgICAgdGhyb3cg
bmV3IElkbEhhcm5lc3NFcnJvcih0aGlzLm5hbWUgKyAiIGhhcyBubyBpbnRlcmZhY2Ugb2JqZWN0
IGR1ZSB0byAiICsgcmVhc29uKTsKKyAgICB9CisKKyAgICByZXR1cm4gdGhpcy5nZXRfaW50ZXJm
YWNlX29iamVjdF9vd25lcigpW3RoaXMubmFtZV07Cit9OworCitJZGxJbnRlcmZhY2UucHJvdG90
eXBlLmdldF9xdWFsaWZpZWRfbmFtZSA9IGZ1bmN0aW9uKCkgeworICAgIC8vIGh0dHBzOi8vaGV5
Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI3F1YWxpZmllZC1uYW1lCisgICAgdmFyIGxlZ2FjeU5hbWVz
cGFjZSA9IHRoaXMuZ2V0X2xlZ2FjeV9uYW1lc3BhY2UoKTsKKyAgICBpZiAobGVnYWN5TmFtZXNw
YWNlKSB7CisgICAgICAgIHJldHVybiBsZWdhY3lOYW1lc3BhY2UgKyAiLiIgKyB0aGlzLm5hbWU7
CisgICAgfQorICAgIHJldHVybiB0aGlzLm5hbWU7Cit9OworCitJZGxJbnRlcmZhY2UucHJvdG90
eXBlLmhhc190b19qc29uX3JlZ3VsYXJfb3BlcmF0aW9uID0gZnVuY3Rpb24oKSB7CisgICAgcmV0
dXJuIHRoaXMubWVtYmVycy5zb21lKGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgcmV0dXJuIG0uaXNf
dG9fanNvbl9yZWd1bGFyX29wZXJhdGlvbigpOworICAgIH0pOworfTsKKworSWRsSW50ZXJmYWNl
LnByb3RvdHlwZS5oYXNfZGVmYXVsdF90b19qc29uX3JlZ3VsYXJfb3BlcmF0aW9uID0gZnVuY3Rp
b24oKSB7CisgICAgcmV0dXJuIHRoaXMubWVtYmVycy5zb21lKGZ1bmN0aW9uKG0pIHsKKyAgICAg
ICAgcmV0dXJuIG0uaXNfdG9fanNvbl9yZWd1bGFyX29wZXJhdGlvbigpICYmIG0uaGFzX2V4dGVu
ZGVkX2F0dHJpYnV0ZSgiRGVmYXVsdCIpOwogICAgIH0pOwogfTsKLS8vQH0KKworLyoqCisgKiBJ
bXBsZW1lbnRhdGlvbiBvZiBodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNjcmVhdGUt
YW4taW5oZXJpdGFuY2Utc3RhY2sKKyAqIHdpdGggdGhlIG9yZGVyIHJldmVyc2VkLgorICoKKyAq
IFRoZSBvcmRlciBpcyByZXZlcnNlZCBzbyB0aGF0IHRoZSBiYXNlIGNsYXNzIGNvbWVzIGZpcnN0
IGluIHRoZSBsaXN0LCBiZWNhdXNlCisgKiB0aGlzIGlzIHdoYXQgYWxsIGNhbGwgc2l0ZXMgbmVl
ZC4KKyAqCisgKiBTbyBnaXZlbjoKKyAqCisgKiAgIEEgOiBCIHt9OworICogICBCIDogQyB7fTsK
KyAqICAgQyB7fTsKKyAqCisgKiB0aGVuIEEuZ2V0X3JldmVyc2VfaW5oZXJpdGFuY2Vfc3RhY2so
KSByZXR1cm5zIFtDLCBCLCBBXSwKKyAqIGFuZCBCLmdldF9yZXZlcnNlX2luaGVyaXRhbmNlX3N0
YWNrKCkgcmV0dXJucyBbQywgQl0uCisgKgorICogTm90ZTogYXMgZGljdGlvbmFyeSBpbmhlcml0
YW5jZSBpcyBleHByZXNzZWQgaWRlbnRpY2FsbHkgYnkgdGhlIEFTVCwKKyAqIHRoaXMgd29ya3Mg
anVzdCBhcyB3ZWxsIGZvciBnZXR0aW5nIGEgc3RhY2sgb2YgaW5oZXJpdGVkIGRpY3Rpb25hcmll
cy4KKyAqLworSWRsSW50ZXJmYWNlLnByb3RvdHlwZS5nZXRfcmV2ZXJzZV9pbmhlcml0YW5jZV9z
dGFjayA9IGZ1bmN0aW9uKCkgeworICAgIGNvbnN0IHN0YWNrID0gW3RoaXNdOworICAgIGxldCBp
ZGxfaW50ZXJmYWNlID0gdGhpczsKKyAgICB3aGlsZSAoaWRsX2ludGVyZmFjZS5iYXNlKSB7Cisg
ICAgICAgIGNvbnN0IGJhc2UgPSB0aGlzLmFycmF5Lm1lbWJlcnNbaWRsX2ludGVyZmFjZS5iYXNl
XTsKKyAgICAgICAgaWYgKCFiYXNlKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoaWRs
X2ludGVyZmFjZS50eXBlICsgIiAiICsgaWRsX2ludGVyZmFjZS5iYXNlICsgIiBub3QgZm91bmQg
KGluaGVyaXRlZCBieSAiICsgaWRsX2ludGVyZmFjZS5uYW1lICsgIikiKTsKKyAgICAgICAgfSBl
bHNlIGlmIChzdGFjay5pbmRleE9mKGJhc2UpID4gLTEpIHsKKyAgICAgICAgICAgIHN0YWNrLnVu
c2hpZnQoYmFzZSk7CisgICAgICAgICAgICBjb25zdCBkZXBfY2hhaW4gPSBzdGFjay5tYXAoaSA9
PiBpLm5hbWUpLmpvaW4oJywnKTsKKyAgICAgICAgICAgIHRocm93IG5ldyBJZGxIYXJuZXNzRXJy
b3IoYCR7dGhpcy5uYW1lfSBoYXMgYSBjaXJjdWxhciBkZXBlbmRlbmN5OiAke2RlcF9jaGFpbn1g
KTsKKyAgICAgICAgfQorICAgICAgICBpZGxfaW50ZXJmYWNlID0gYmFzZTsKKyAgICAgICAgc3Rh
Y2sudW5zaGlmdChpZGxfaW50ZXJmYWNlKTsKKyAgICB9CisgICAgcmV0dXJuIHN0YWNrOworfTsK
KworLyoqCisgKiBJbXBsZW1lbnRhdGlvbiBvZgorICogaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlv
L3dlYmlkbC8jZGVmYXVsdC10b2pzb24tb3BlcmF0aW9uCisgKiBmb3IgdGVzdGluZyBwdXJwb3Nl
cy4KKyAqCisgKiBDb2xsZWN0cyB0aGUgSURMIHR5cGVzIG9mIHRoZSBhdHRyaWJ1dGVzIHRoYXQg
bWVldCB0aGUgY3JpdGVyaWEKKyAqIGZvciBpbmNsdXNpb24gaW4gdGhlIGRlZmF1bHQgdG9KU09O
IG9wZXJhdGlvbiBmb3IgZWFzeQorICogY29tcGFyaXNvbiB3aXRoIGFjdHVhbCB2YWx1ZQorICov
CitJZGxJbnRlcmZhY2UucHJvdG90eXBlLmRlZmF1bHRfdG9fanNvbl9vcGVyYXRpb24gPSBmdW5j
dGlvbigpIHsKKyAgICBjb25zdCBtYXAgPSBuZXcgTWFwKCkKKyAgICBsZXQgaXNEZWZhdWx0ID0g
ZmFsc2U7CisgICAgZm9yIChjb25zdCBJIG9mIHRoaXMuZ2V0X3JldmVyc2VfaW5oZXJpdGFuY2Vf
c3RhY2soKSkgeworICAgICAgICBpZiAoSS5oYXNfZGVmYXVsdF90b19qc29uX3JlZ3VsYXJfb3Bl
cmF0aW9uKCkpIHsKKyAgICAgICAgICAgIGlzRGVmYXVsdCA9IHRydWU7CisgICAgICAgICAgICBm
b3IgKGNvbnN0IG0gb2YgSS5tZW1iZXJzKSB7CisgICAgICAgICAgICAgICAgaWYgKG0uc3BlY2lh
bCAhPT0gInN0YXRpYyIgJiYgbS50eXBlID09ICJhdHRyaWJ1dGUiICYmIEkuYXJyYXkuaXNfanNv
bl90eXBlKG0uaWRsVHlwZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgbWFwLnNldChtLm5hbWUs
IG0uaWRsVHlwZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9
IGVsc2UgaWYgKEkuaGFzX3RvX2pzb25fcmVndWxhcl9vcGVyYXRpb24oKSkgeworICAgICAgICAg
ICAgaXNEZWZhdWx0ID0gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGlzRGVm
YXVsdCA/IG1hcCA6IG51bGw7Cit9OwogCiBJZGxJbnRlcmZhY2UucHJvdG90eXBlLnRlc3QgPSBm
dW5jdGlvbigpCi0vL0B7CiB7Ci0gICAgaWYgKHRoaXMuaGFzX2V4dGVuZGVkX2F0dHJpYnV0ZSgi
Tm9JbnRlcmZhY2VPYmplY3QiKSkKKyAgICBpZiAodGhpcy5oYXNfZXh0ZW5kZWRfYXR0cmlidXRl
KCJMZWdhY3lOb0ludGVyZmFjZU9iamVjdCIpIHx8IHRoaXMuaXNfbWl4aW4oKSkKICAgICB7CiAg
ICAgICAgIC8vIE5vIHRlc3RzIHRvIGRvIHdpdGhvdXQgYW4gaW5zdGFuY2UuICBUT0RPOiBXZSBz
aG91bGQgc3RpbGwgYmUgYWJsZQogICAgICAgICAvLyB0byBydW4gdGVzdHMgb24gdGhlIHByb3Rv
dHlwZSBvYmplY3QsIGlmIHdlIG9idGFpbiBvbmUgdGhyb3VnaCBzb21lCkBAIC03NDMsMTAgKzEz
OTEsMTYgQEAgSWRsSW50ZXJmYWNlLnByb3RvdHlwZS50ZXN0ID0gZnVuY3Rpb24oKQogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKCF0aGlzLmV4cG9zZWQpIHsKLSAgICAgICAgdGVz
dChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGFzc2VydF9mYWxzZSh0aGlzLm5hbWUgaW4gc2Vs
Zik7Ci0gICAgICAgIH0uYmluZCh0aGlzKSwgdGhpcy5uYW1lICsgIiBpbnRlcmZhY2U6IGV4aXN0
ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2Ugb2JqZWN0Iik7CisgICAgLy8gSWYgdGhl
IGludGVyZmFjZSBvYmplY3QgaXMgbm90IGV4cG9zZWQsIG9ubHkgdGVzdCB0aGF0LiBNZW1iZXJz
IGNhbid0IGJlCisgICAgLy8gdGVzdGVkIGVpdGhlciwgYnV0IG9iamVjdHMgY291bGQgc3RpbGwg
YmUgdGVzdGVkIGluIHx0ZXN0X29iamVjdHwuCisgICAgaWYgKCF0aGlzLmV4cG9zZWQpCisgICAg
eworICAgICAgICBpZiAoIXRoaXMudW50ZXN0ZWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHN1
YnNldFRlc3RCeUtleSh0aGlzLm5hbWUsIHRlc3QsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
ICAgIGFzc2VydF9mYWxzZSh0aGlzLm5hbWUgaW4gc2VsZik7CisgICAgICAgICAgICB9LmJpbmQo
dGhpcyksIHRoaXMubmFtZSArICIgaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMg
b2YgaW50ZXJmYWNlIG9iamVjdCIpOworICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTc2NSw0NCArMTQxOSwzOSBAQCBJZGxJbnRlcmZhY2UucHJvdG90eXBlLnRlc3QgPSBm
dW5jdGlvbigpCiAgICAgLy8gaW50ZXJmYWNlIGFyZSBzdGlsbCB0ZXN0ZWQuCiAgICAgdGhpcy50
ZXN0X21lbWJlcnMoKTsKIH07Ci0vL0B9CisKK0lkbEludGVyZmFjZS5wcm90b3R5cGUuY29uc3Ry
dWN0b3JzID0gZnVuY3Rpb24oKQoreworICAgIHJldHVybiB0aGlzLm1lbWJlcnMKKyAgICAgICAg
LmZpbHRlcihmdW5jdGlvbihtKSB7IHJldHVybiBtLnR5cGUgPT0gImNvbnN0cnVjdG9yIjsgfSk7
Cit9CiAKIElkbEludGVyZmFjZS5wcm90b3R5cGUudGVzdF9zZWxmID0gZnVuY3Rpb24oKQotLy9A
ewogewotICAgIHRlc3QoZnVuY3Rpb24oKQorICAgIHN1YnNldFRlc3RCeUtleSh0aGlzLm5hbWUs
IHRlc3QsIGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIC8vIFRoaXMgZnVuY3Rpb24gdGVzdHMg
V2ViSURMIGFzIG9mIDIwMTUtMDEtMTMuCi0KLSAgICAgICAgLy8gIkZvciBldmVyeSBpbnRlcmZh
Y2UgdGhhdCBpcyBleHBvc2VkIGluIGEgZ2l2ZW4gRUNNQVNjcmlwdCBnbG9iYWwKLSAgICAgICAg
Ly8gZW52aXJvbm1lbnQgYW5kOgotICAgICAgICAvLyAqIGlzIGEgY2FsbGJhY2sgaW50ZXJmYWNl
IHRoYXQgaGFzIGNvbnN0YW50cyBkZWNsYXJlZCBvbiBpdCwgb3IKLSAgICAgICAgLy8gKiBpcyBh
IG5vbi1jYWxsYmFjayBpbnRlcmZhY2UgdGhhdCBpcyBub3QgZGVjbGFyZWQgd2l0aCB0aGUKLSAg
ICAgICAgLy8gICBbTm9JbnRlcmZhY2VPYmplY3RdIGV4dGVuZGVkIGF0dHJpYnV0ZSwKLSAgICAg
ICAgLy8gYSBjb3JyZXNwb25kaW5nIHByb3BlcnR5IE1VU1QgZXhpc3Qgb24gdGhlIEVDTUFTY3Jp
cHQgZ2xvYmFsIG9iamVjdC4KKyAgICAgICAgaWYgKCF0aGlzLnNob3VsZF9oYXZlX2ludGVyZmFj
ZV9vYmplY3QoKSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKICAgICAgICAg
Ly8gVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5IGlzIHRoZSBpZGVudGlmaWVyIG9mIHRoZSBpbnRl
cmZhY2UsIGFuZCBpdHMKICAgICAgICAgLy8gdmFsdWUgaXMgYW4gb2JqZWN0IGNhbGxlZCB0aGUg
aW50ZXJmYWNlIG9iamVjdC4KICAgICAgICAgLy8gVGhlIHByb3BlcnR5IGhhcyB0aGUgYXR0cmli
dXRlcyB7IFtbV3JpdGFibGVdXTogdHJ1ZSwKICAgICAgICAgLy8gW1tFbnVtZXJhYmxlXV06IGZh
bHNlLCBbW0NvbmZpZ3VyYWJsZV1dOiB0cnVlIH0uIgotICAgICAgICBpZiAodGhpcy5pc19jYWxs
YmFjaygpICYmICF0aGlzLmhhc19jb25zdGFudHMoKSkgewotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9Ci0KICAgICAgICAgLy8gVE9ETzogU2hvdWxkIHdlIHRlc3QgaGVyZSB0aGF0IHRo
ZSBwcm9wZXJ0eSBpcyBhY3R1YWxseSB3cml0YWJsZQogICAgICAgICAvLyBldGMuLCBvciB0cnVz
dCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I/Ci0gICAgICAgIGFzc2VydF9vd25fcHJvcGVydHko
c2VsZiwgdGhpcy5uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZWxmIGRvZXMg
bm90IGhhdmUgb3duIHByb3BlcnR5ICIgKyBmb3JtYXRfdmFsdWUodGhpcy5uYW1lKSk7Ci0gICAg
ICAgIHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzZWxmLCB0aGlz
Lm5hbWUpOwotICAgICAgICBhc3NlcnRfZmFsc2UoImdldCIgaW4gZGVzYywgInNlbGYncyBwcm9w
ZXJ0eSAiICsgZm9ybWF0X3ZhbHVlKHRoaXMubmFtZSkgKyAiIGhhcyBnZXR0ZXIiKTsKLSAgICAg
ICAgYXNzZXJ0X2ZhbHNlKCJzZXQiIGluIGRlc2MsICJzZWxmJ3MgcHJvcGVydHkgIiArIGZvcm1h
dF92YWx1ZSh0aGlzLm5hbWUpICsgIiBoYXMgc2V0dGVyIik7Ci0gICAgICAgIGFzc2VydF90cnVl
KGRlc2Mud3JpdGFibGUsICJzZWxmJ3MgcHJvcGVydHkgIiArIGZvcm1hdF92YWx1ZSh0aGlzLm5h
bWUpICsgIiBpcyBub3Qgd3JpdGFibGUiKTsKLSAgICAgICAgYXNzZXJ0X2ZhbHNlKGRlc2MuZW51
bWVyYWJsZSwgInNlbGYncyBwcm9wZXJ0eSAiICsgZm9ybWF0X3ZhbHVlKHRoaXMubmFtZSkgKyAi
IGlzIGVudW1lcmFibGUiKTsKLSAgICAgICAgYXNzZXJ0X3RydWUoZGVzYy5jb25maWd1cmFibGUs
ICJzZWxmJ3MgcHJvcGVydHkgIiArIGZvcm1hdF92YWx1ZSh0aGlzLm5hbWUpICsgIiBpcyBub3Qg
Y29uZmlndXJhYmxlIik7CisgICAgICAgIHRoaXMuYXNzZXJ0X2ludGVyZmFjZV9vYmplY3RfZXhp
c3RzKCk7CisgICAgICAgIHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cih0aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0X293bmVyKCksIHRoaXMubmFtZSk7CisgICAgICAg
IGFzc2VydF9mYWxzZSgiZ2V0IiBpbiBkZXNjLCAic2VsZidzIHByb3BlcnR5ICIgKyBmb3JtYXRf
dmFsdWUodGhpcy5uYW1lKSArICIgc2hvdWxkIG5vdCBoYXZlIGEgZ2V0dGVyIik7CisgICAgICAg
IGFzc2VydF9mYWxzZSgic2V0IiBpbiBkZXNjLCAic2VsZidzIHByb3BlcnR5ICIgKyBmb3JtYXRf
dmFsdWUodGhpcy5uYW1lKSArICIgc2hvdWxkIG5vdCBoYXZlIGEgc2V0dGVyIik7CisgICAgICAg
IGFzc2VydF90cnVlKGRlc2Mud3JpdGFibGUsICJzZWxmJ3MgcHJvcGVydHkgIiArIGZvcm1hdF92
YWx1ZSh0aGlzLm5hbWUpICsgIiBzaG91bGQgYmUgd3JpdGFibGUiKTsKKyAgICAgICAgYXNzZXJ0
X2ZhbHNlKGRlc2MuZW51bWVyYWJsZSwgInNlbGYncyBwcm9wZXJ0eSAiICsgZm9ybWF0X3ZhbHVl
KHRoaXMubmFtZSkgKyAiIHNob3VsZCBub3QgYmUgZW51bWVyYWJsZSIpOworICAgICAgICBhc3Nl
cnRfdHJ1ZShkZXNjLmNvbmZpZ3VyYWJsZSwgInNlbGYncyBwcm9wZXJ0eSAiICsgZm9ybWF0X3Zh
bHVlKHRoaXMubmFtZSkgKyAiIHNob3VsZCBiZSBjb25maWd1cmFibGUiKTsKIAogICAgICAgICBp
ZiAodGhpcy5pc19jYWxsYmFjaygpKSB7CiAgICAgICAgICAgICAvLyAiVGhlIGludGVybmFsIFtb
UHJvdG90eXBlXV0gcHJvcGVydHkgb2YgYW4gaW50ZXJmYWNlIG9iamVjdCBmb3IKICAgICAgICAg
ICAgIC8vIGEgY2FsbGJhY2sgaW50ZXJmYWNlIG11c3QgYmUgdGhlIEZ1bmN0aW9uLnByb3RvdHlw
ZSBvYmplY3QuIgotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhPYmplY3QuZ2V0UHJvdG90eXBl
T2Yoc2VsZlt0aGlzLm5hbWVdKSwgRnVuY3Rpb24ucHJvdG90eXBlLAorICAgICAgICAgICAgYXNz
ZXJ0X2VxdWFscyhPYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcy5nZXRfaW50ZXJmYWNlX29iamVj
dCgpKSwgRnVuY3Rpb24ucHJvdG90eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAicHJv
dG90eXBlIG9mIHNlbGYncyBwcm9wZXJ0eSAiICsgZm9ybWF0X3ZhbHVlKHRoaXMubmFtZSkgKyAi
IGlzIG5vdCBPYmplY3QucHJvdG90eXBlIik7CiAKICAgICAgICAgICAgIHJldHVybjsKQEAgLTgy
Miw4ICsxNDcxLDYgQEAgSWRsSW50ZXJmYWNlLnByb3RvdHlwZS50ZXN0X3NlbGYgPSBmdW5jdGlv
bigpCiAKICAgICAgICAgLy8gIiogSXRzIFtbQ29uc3RydWN0XV0gaW50ZXJuYWwgcHJvcGVydHkg
aXMgc2V0IGFzIGRlc2NyaWJlZCBpbgogICAgICAgICAvLyAgICBFQ01BLTI2MiBzZWN0aW9uIDE5
LjIuMi4zLiIKLSAgICAgICAgLy8gVGVzdGVkIGJlbG93IGlmIG5vIGNvbnN0cnVjdG9yIGlzIGRl
ZmluZWQuICBUT0RPOiB0ZXN0IGNvbnN0cnVjdG9ycwotICAgICAgICAvLyBpZiBkZWZpbmVkLgog
CiAgICAgICAgIC8vICIqIEl0cyBAQGhhc0luc3RhbmNlIHByb3BlcnR5IGlzIHNldCBhcyBkZXNj
cmliZWQgaW4gRUNNQS0yNjIKICAgICAgICAgLy8gICAgc2VjdGlvbiAxOS4yLjMuOCwgdW5sZXNz
IG90aGVyd2lzZSBzcGVjaWZpZWQuIgpAQCAtODMyLDI0ICsxNDc5LDE5IEBAIElkbEludGVyZmFj
ZS5wcm90b3R5cGUudGVzdF9zZWxmID0gZnVuY3Rpb24oKQogICAgICAgICAvLyBFUzYgKHJldiAz
MCkgMTkuMS4zLjY6CiAgICAgICAgIC8vICJFbHNlLCBpZiBPIGhhcyBhIFtbQ2FsbF1dIGludGVy
bmFsIG1ldGhvZCwgdGhlbiBsZXQgYnVpbHRpblRhZyBiZQogICAgICAgICAvLyAiRnVuY3Rpb24i
LiIKLSAgICAgICAgYXNzZXJ0X2NsYXNzX3N0cmluZyhzZWxmW3RoaXMubmFtZV0sICJGdW5jdGlv
biIsICJjbGFzcyBzdHJpbmcgb2YgIiArIHRoaXMubmFtZSk7CisgICAgICAgIGFzc2VydF9jbGFz
c19zdHJpbmcodGhpcy5nZXRfaW50ZXJmYWNlX29iamVjdCgpLCAiRnVuY3Rpb24iLCAiY2xhc3Mg
c3RyaW5nIG9mICIgKyB0aGlzLm5hbWUpOwogCiAgICAgICAgIC8vICJUaGUgW1tQcm90b3R5cGVd
XSBpbnRlcm5hbCBwcm9wZXJ0eSBvZiBhbiBpbnRlcmZhY2Ugb2JqZWN0IGZvciBhCiAgICAgICAg
IC8vIG5vbi1jYWxsYmFjayBpbnRlcmZhY2UgaXMgZGV0ZXJtaW5lZCBhcyBmb2xsb3dzOiIKLSAg
ICAgICAgdmFyIHByb3RvdHlwZSA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihzZWxmW3RoaXMubmFt
ZV0pOworICAgICAgICB2YXIgcHJvdG90eXBlID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMu
Z2V0X2ludGVyZmFjZV9vYmplY3QoKSk7CiAgICAgICAgIGlmICh0aGlzLmJhc2UpIHsKICAgICAg
ICAgICAgIC8vICIqIElmIHRoZSBpbnRlcmZhY2UgaW5oZXJpdHMgZnJvbSBzb21lIG90aGVyIGlu
dGVyZmFjZSwgdGhlCiAgICAgICAgICAgICAvLyAgICB2YWx1ZSBvZiBbW1Byb3RvdHlwZV1dIGlz
IHRoZSBpbnRlcmZhY2Ugb2JqZWN0IGZvciB0aGF0IG90aGVyCiAgICAgICAgICAgICAvLyAgICBp
bnRlcmZhY2UuIgotICAgICAgICAgICAgdmFyIGhhc19pbnRlcmZhY2Vfb2JqZWN0ID0KLSAgICAg
ICAgICAgICAgICAhdGhpcy5hcnJheQotICAgICAgICAgICAgICAgICAgICAgLm1lbWJlcnNbdGhp
cy5iYXNlXQotICAgICAgICAgICAgICAgICAgICAgLmhhc19leHRlbmRlZF9hdHRyaWJ1dGUoIk5v
SW50ZXJmYWNlT2JqZWN0Iik7Ci0gICAgICAgICAgICBpZiAoaGFzX2ludGVyZmFjZV9vYmplY3Qp
IHsKLSAgICAgICAgICAgICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KHNlbGYsIHRoaXMuYmFzZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaG91bGQgaW5oZXJpdCBmcm9t
ICcgKyB0aGlzLmJhc2UgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJywg
YnV0IHNlbGYgaGFzIG5vIHN1Y2ggcHJvcGVydHknKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRf
ZXF1YWxzKHByb3RvdHlwZSwgc2VsZlt0aGlzLmJhc2VdLAorICAgICAgICAgICAgdmFyIGluaGVy
aXRlZF9pbnRlcmZhY2UgPSB0aGlzLmFycmF5Lm1lbWJlcnNbdGhpcy5iYXNlXTsKKyAgICAgICAg
ICAgIGlmICghaW5oZXJpdGVkX2ludGVyZmFjZS5oYXNfZXh0ZW5kZWRfYXR0cmlidXRlKCJMZWdh
Y3lOb0ludGVyZmFjZU9iamVjdCIpKSB7CisgICAgICAgICAgICAgICAgaW5oZXJpdGVkX2ludGVy
ZmFjZS5hc3NlcnRfaW50ZXJmYWNlX29iamVjdF9leGlzdHMoKTsKKyAgICAgICAgICAgICAgICBh
c3NlcnRfZXF1YWxzKHByb3RvdHlwZSwgaW5oZXJpdGVkX2ludGVyZmFjZS5nZXRfaW50ZXJmYWNl
X29iamVjdCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb3RvdHlwZSBvZiAn
ICsgdGhpcy5uYW1lICsgJyBpcyBub3QgJyArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0aGlzLmJhc2UpOwogICAgICAgICAgICAgfQpAQCAtODYxLDg4ICsxNTAzLDI1MiBAQCBJZGxJ
bnRlcmZhY2UucHJvdG90eXBlLnRlc3Rfc2VsZiA9IGZ1bmN0aW9uKCkKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgInByb3RvdHlwZSBvZiBzZWxmJ3MgcHJvcGVydHkgIiArIGZvcm1hdF92YWx1
ZSh0aGlzLm5hbWUpICsgIiBpcyBub3QgRnVuY3Rpb24ucHJvdG90eXBlIik7CiAgICAgICAgIH0K
IAotICAgICAgICBpZiAoIXRoaXMuaGFzX2V4dGVuZGVkX2F0dHJpYnV0ZSgiQ29uc3RydWN0b3Ii
KSkgewotICAgICAgICAgICAgLy8gIlRoZSBpbnRlcm5hbCBbW0NhbGxdXSBtZXRob2Qgb2YgdGhl
IGludGVyZmFjZSBvYmplY3QgYmVoYXZlcyBhcwotICAgICAgICAgICAgLy8gZm9sbG93cyAuIC4g
LgotICAgICAgICAgICAgLy8KLSAgICAgICAgICAgIC8vICJJZiBJIHdhcyBub3QgZGVjbGFyZWQg
d2l0aCBhIFtDb25zdHJ1Y3Rvcl0gZXh0ZW5kZWQgYXR0cmlidXRlLAotICAgICAgICAgICAgLy8g
dGhlbiB0aHJvdyBhIFR5cGVFcnJvci4iCi0gICAgICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBU
eXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgc2VsZlt0aGlzLm5hbWVd
KCk7Ci0gICAgICAgICAgICB9LmJpbmQodGhpcyksICJpbnRlcmZhY2Ugb2JqZWN0IGRpZG4ndCB0
aHJvdyBUeXBlRXJyb3Igd2hlbiBjYWxsZWQgYXMgYSBmdW5jdGlvbiIpOwotICAgICAgICAgICAg
YXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAg
ICAgIG5ldyBzZWxmW3RoaXMubmFtZV0oKTsKLSAgICAgICAgICAgIH0uYmluZCh0aGlzKSwgImlu
dGVyZmFjZSBvYmplY3QgZGlkbid0IHRocm93IFR5cGVFcnJvciB3aGVuIGNhbGxlZCBhcyBhIGNv
bnN0cnVjdG9yIik7CisgICAgICAgIC8vIEFsd2F5cyB0ZXN0IGZvciBbW0NvbnN0cnVjdF1dOgor
ICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vaGV5Y2FtL3dlYmlkbC9pc3N1ZXMvNjk4Cisg
ICAgICAgIGFzc2VydF90cnVlKGlzQ29uc3RydWN0b3IodGhpcy5nZXRfaW50ZXJmYWNlX29iamVj
dCgpKSwgImludGVyZmFjZSBvYmplY3QgbXVzdCBwYXNzIElzQ29uc3RydWN0b3IgY2hlY2siKTsK
KworICAgICAgICBpZiAoIXRoaXMuY29uc3RydWN0b3JzKCkubGVuZ3RoKSB7CisgICAgICAgICAg
ICAvLyAiSWYgSSB3YXMgbm90IGRlY2xhcmVkIHdpdGggYSBjb25zdHJ1Y3RvciBvcGVyYXRpb24s
IHRoZW4gdGhyb3cgYSBUeXBlRXJyb3IuIgorICAgICAgICAgICAgdmFyIGludGVyZmFjZV9vYmpl
Y3QgPSB0aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0KCk7CisgICAgICAgICAgICBhc3NlcnRfdGhy
b3dzX2pzKGdsb2JhbE9mKGludGVyZmFjZV9vYmplY3QpLlR5cGVFcnJvciwgZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICAgICAgaW50ZXJmYWNlX29iamVjdCgpOworICAgICAgICAgICAgfSwgImlu
dGVyZmFjZSBvYmplY3QgZGlkbid0IHRocm93IFR5cGVFcnJvciB3aGVuIGNhbGxlZCBhcyBhIGZ1
bmN0aW9uIik7CisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKGdsb2JhbE9mKGludGVyZmFj
ZV9vYmplY3QpLlR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgbmV3IGlu
dGVyZmFjZV9vYmplY3QoKTsKKyAgICAgICAgICAgIH0sICJpbnRlcmZhY2Ugb2JqZWN0IGRpZG4n
dCB0aHJvdyBUeXBlRXJyb3Igd2hlbiBjYWxsZWQgYXMgYSBjb25zdHJ1Y3RvciIpOwogICAgICAg
ICB9CiAgICAgfS5iaW5kKHRoaXMpLCB0aGlzLm5hbWUgKyAiIGludGVyZmFjZTogZXhpc3RlbmNl
IGFuZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFjZSBvYmplY3QiKTsKIAotICAgIGlmICghdGhpcy5p
c19jYWxsYmFjaygpKSB7Ci0gICAgICAgIHRlc3QoZnVuY3Rpb24oKSB7CisgICAgaWYgKHRoaXMu
c2hvdWxkX2hhdmVfaW50ZXJmYWNlX29iamVjdCgpICYmICF0aGlzLmlzX2NhbGxiYWNrKCkpIHsK
KyAgICAgICAgc3Vic2V0VGVzdEJ5S2V5KHRoaXMubmFtZSwgdGVzdCwgZnVuY3Rpb24oKSB7CiAg
ICAgICAgICAgICAvLyBUaGlzIGZ1bmN0aW9uIHRlc3RzIFdlYklETCBhcyBvZiAyMDE0LTEwLTI1
LgogICAgICAgICAgICAgLy8gaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jZXMtaW50
ZXJmYWNlLWNhbGwKIAotICAgICAgICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0eShzZWxmLCB0aGlz
Lm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZWxmIGRvZXMgbm90IGhh
dmUgb3duIHByb3BlcnR5ICIgKyBmb3JtYXRfdmFsdWUodGhpcy5uYW1lKSk7CisgICAgICAgICAg
ICB0aGlzLmFzc2VydF9pbnRlcmZhY2Vfb2JqZWN0X2V4aXN0cygpOwogCiAgICAgICAgICAgICAv
LyAiSW50ZXJmYWNlIG9iamVjdHMgZm9yIG5vbi1jYWxsYmFjayBpbnRlcmZhY2VzIE1VU1QgaGF2
ZSBhCiAgICAgICAgICAgICAvLyBwcm9wZXJ0eSBuYW1lZCDigJxsZW5ndGjigJ0gd2l0aCBhdHRy
aWJ1dGVzIHsgW1tXcml0YWJsZV1dOiBmYWxzZSwKICAgICAgICAgICAgIC8vIFtbRW51bWVyYWJs
ZV1dOiBmYWxzZSwgW1tDb25maWd1cmFibGVdXTogdHJ1ZSB9IHdob3NlIHZhbHVlIGlzCiAgICAg
ICAgICAgICAvLyBhIE51bWJlci4iCi0gICAgICAgICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KHNl
bGZbdGhpcy5uYW1lXSwgImxlbmd0aCIpOwotICAgICAgICAgICAgdmFyIGRlc2MgPSBPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNlbGZbdGhpcy5uYW1lXSwgImxlbmd0aCIpOwotICAg
ICAgICAgICAgYXNzZXJ0X2ZhbHNlKCJnZXQiIGluIGRlc2MsIHRoaXMubmFtZSArICIubGVuZ3Ro
IGhhcyBnZXR0ZXIiKTsKLSAgICAgICAgICAgIGFzc2VydF9mYWxzZSgic2V0IiBpbiBkZXNjLCB0
aGlzLm5hbWUgKyAiLmxlbmd0aCBoYXMgc2V0dGVyIik7Ci0gICAgICAgICAgICBhc3NlcnRfZmFs
c2UoZGVzYy53cml0YWJsZSwgdGhpcy5uYW1lICsgIi5sZW5ndGggaXMgd3JpdGFibGUiKTsKLSAg
ICAgICAgICAgIGFzc2VydF9mYWxzZShkZXNjLmVudW1lcmFibGUsIHRoaXMubmFtZSArICIubGVu
Z3RoIGlzIGVudW1lcmFibGUiKTsKLSAgICAgICAgICAgIGFzc2VydF90cnVlKGRlc2MuY29uZmln
dXJhYmxlLCB0aGlzLm5hbWUgKyAiLmxlbmd0aCBpcyBub3QgY29uZmlndXJhYmxlIik7Ci0KLSAg
ICAgICAgICAgIHZhciBjb25zdHJ1Y3RvcnMgPSB0aGlzLmV4dEF0dHJzCi0gICAgICAgICAgICAg
ICAgLmZpbHRlcihmdW5jdGlvbihhdHRyKSB7IHJldHVybiBhdHRyLm5hbWUgPT0gIkNvbnN0cnVj
dG9yIjsgfSk7CisgICAgICAgICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KHRoaXMuZ2V0X2ludGVy
ZmFjZV9vYmplY3QoKSwgImxlbmd0aCIpOworICAgICAgICAgICAgdmFyIGRlc2MgPSBPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRoaXMuZ2V0X2ludGVyZmFjZV9vYmplY3QoKSwgImxl
bmd0aCIpOworICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKCJnZXQiIGluIGRlc2MsIHRoaXMubmFt
ZSArICIubGVuZ3RoIHNob3VsZCBub3QgaGF2ZSBhIGdldHRlciIpOworICAgICAgICAgICAgYXNz
ZXJ0X2ZhbHNlKCJzZXQiIGluIGRlc2MsIHRoaXMubmFtZSArICIubGVuZ3RoIHNob3VsZCBub3Qg
aGF2ZSBhIHNldHRlciIpOworICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKGRlc2Mud3JpdGFibGUs
IHRoaXMubmFtZSArICIubGVuZ3RoIHNob3VsZCBub3QgYmUgd3JpdGFibGUiKTsKKyAgICAgICAg
ICAgIGFzc2VydF9mYWxzZShkZXNjLmVudW1lcmFibGUsIHRoaXMubmFtZSArICIubGVuZ3RoIHNo
b3VsZCBub3QgYmUgZW51bWVyYWJsZSIpOworICAgICAgICAgICAgYXNzZXJ0X3RydWUoZGVzYy5j
b25maWd1cmFibGUsIHRoaXMubmFtZSArICIubGVuZ3RoIHNob3VsZCBiZSBjb25maWd1cmFibGUi
KTsKKworICAgICAgICAgICAgdmFyIGNvbnN0cnVjdG9ycyA9IHRoaXMuY29uc3RydWN0b3JzKCk7
CiAgICAgICAgICAgICB2YXIgZXhwZWN0ZWRfbGVuZ3RoID0gbWluT3ZlcmxvYWRMZW5ndGgoY29u
c3RydWN0b3JzKTsKLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoc2VsZlt0aGlzLm5hbWVdLmxl
bmd0aCwgZXhwZWN0ZWRfbGVuZ3RoLCAid3JvbmcgdmFsdWUgZm9yICIgKyB0aGlzLm5hbWUgKyAi
Lmxlbmd0aCIpOworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh0aGlzLmdldF9pbnRlcmZhY2Vf
b2JqZWN0KCkubGVuZ3RoLCBleHBlY3RlZF9sZW5ndGgsICJ3cm9uZyB2YWx1ZSBmb3IgIiArIHRo
aXMubmFtZSArICIubGVuZ3RoIik7CiAgICAgICAgIH0uYmluZCh0aGlzKSwgdGhpcy5uYW1lICsg
IiBpbnRlcmZhY2Ugb2JqZWN0IGxlbmd0aCIpOwogICAgIH0KIAotICAgIGlmICghdGhpcy5pc19j
YWxsYmFjaygpIHx8IHRoaXMuaGFzX2NvbnN0YW50cygpKSB7Ci0gICAgICAgIHRlc3QoZnVuY3Rp
b24oKSB7Ci0gICAgICAgICAgICAvLyBUaGlzIGZ1bmN0aW9uIHRlc3RzIFdlYklETCBhcyBvZiAy
MDE1LTExLTE3LgotICAgICAgICAgICAgLy8gaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlk
bC8jaW50ZXJmYWNlLW9iamVjdAorICAgIGlmICh0aGlzLnNob3VsZF9oYXZlX2ludGVyZmFjZV9v
YmplY3QoKSkgeworICAgICAgICBzdWJzZXRUZXN0QnlLZXkodGhpcy5uYW1lLCB0ZXN0LCBmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgIC8vIFRoaXMgZnVuY3Rpb24gdGVzdHMgV2ViSURMIGFzIG9m
IDIwMTUtMTEtMTcuCisgICAgICAgICAgICAvLyBodHRwczovL2hleWNhbS5naXRodWIuaW8vd2Vi
aWRsLyNpbnRlcmZhY2Utb2JqZWN0CisKKyAgICAgICAgICAgIHRoaXMuYXNzZXJ0X2ludGVyZmFj
ZV9vYmplY3RfZXhpc3RzKCk7CisKKyAgICAgICAgICAgIC8vICJBbGwgaW50ZXJmYWNlIG9iamVj
dHMgbXVzdCBoYXZlIGEgcHJvcGVydHkgbmFtZWQg4oCcbmFtZeKAnSB3aXRoCisgICAgICAgICAg
ICAvLyBhdHRyaWJ1dGVzIHsgW1tXcml0YWJsZV1dOiBmYWxzZSwgW1tFbnVtZXJhYmxlXV06IGZh
bHNlLAorICAgICAgICAgICAgLy8gW1tDb25maWd1cmFibGVdXTogdHJ1ZSB9IHdob3NlIHZhbHVl
IGlzIHRoZSBpZGVudGlmaWVyIG9mIHRoZQorICAgICAgICAgICAgLy8gY29ycmVzcG9uZGluZyBp
bnRlcmZhY2UuIgorCisgICAgICAgICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KHRoaXMuZ2V0X2lu
dGVyZmFjZV9vYmplY3QoKSwgIm5hbWUiKTsKKyAgICAgICAgICAgIHZhciBkZXNjID0gT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0KCksICJu
YW1lIik7CisgICAgICAgICAgICBhc3NlcnRfZmFsc2UoImdldCIgaW4gZGVzYywgdGhpcy5uYW1l
ICsgIi5uYW1lIHNob3VsZCBub3QgaGF2ZSBhIGdldHRlciIpOworICAgICAgICAgICAgYXNzZXJ0
X2ZhbHNlKCJzZXQiIGluIGRlc2MsIHRoaXMubmFtZSArICIubmFtZSBzaG91bGQgbm90IGhhdmUg
YSBzZXR0ZXIiKTsKKyAgICAgICAgICAgIGFzc2VydF9mYWxzZShkZXNjLndyaXRhYmxlLCB0aGlz
Lm5hbWUgKyAiLm5hbWUgc2hvdWxkIG5vdCBiZSB3cml0YWJsZSIpOworICAgICAgICAgICAgYXNz
ZXJ0X2ZhbHNlKGRlc2MuZW51bWVyYWJsZSwgdGhpcy5uYW1lICsgIi5uYW1lIHNob3VsZCBub3Qg
YmUgZW51bWVyYWJsZSIpOworICAgICAgICAgICAgYXNzZXJ0X3RydWUoZGVzYy5jb25maWd1cmFi
bGUsIHRoaXMubmFtZSArICIubmFtZSBzaG91bGQgYmUgY29uZmlndXJhYmxlIik7CisgICAgICAg
ICAgICBhc3NlcnRfZXF1YWxzKHRoaXMuZ2V0X2ludGVyZmFjZV9vYmplY3QoKS5uYW1lLCB0aGlz
Lm5hbWUsICJ3cm9uZyB2YWx1ZSBmb3IgIiArIHRoaXMubmFtZSArICIubmFtZSIpOworICAgICAg
ICB9LmJpbmQodGhpcyksIHRoaXMubmFtZSArICIgaW50ZXJmYWNlIG9iamVjdCBuYW1lIik7Cisg
ICAgfQorCisKKyAgICBpZiAodGhpcy5oYXNfZXh0ZW5kZWRfYXR0cmlidXRlKCJMZWdhY3lXaW5k
b3dBbGlhcyIpKSB7CisgICAgICAgIHN1YnNldFRlc3RCeUtleSh0aGlzLm5hbWUsIHRlc3QsIGZ1
bmN0aW9uKCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGFsaWFzQXR0cnMgPSB0aGlzLmV4
dEF0dHJzLmZpbHRlcihmdW5jdGlvbihvKSB7IHJldHVybiBvLm5hbWUgPT09ICJMZWdhY3lXaW5k
b3dBbGlhcyI7IH0pOworICAgICAgICAgICAgaWYgKGFsaWFzQXR0cnMubGVuZ3RoID4gMSkgewor
ICAgICAgICAgICAgICAgIHRocm93IG5ldyBJZGxIYXJuZXNzRXJyb3IoIkludmFsaWQgSURMOiBt
dWx0aXBsZSBMZWdhY3lXaW5kb3dBbGlhcyBleHRlbmRlZCBhdHRyaWJ1dGVzIG9uICIgKyB0aGlz
Lm5hbWUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHRoaXMuaXNfY2FsbGJhY2so
KSkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBJZGxIYXJuZXNzRXJyb3IoIkludmFsaWQg
SURMOiBMZWdhY3lXaW5kb3dBbGlhcyBleHRlbmRlZCBhdHRyaWJ1dGUgb24gbm9uLWludGVyZmFj
ZSAiICsgdGhpcy5uYW1lKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghdGhpcy5l
eHBvc3VyZVNldC5oYXMoIldpbmRvdyIpKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElk
bEhhcm5lc3NFcnJvcigiSW52YWxpZCBJREw6IExlZ2FjeVdpbmRvd0FsaWFzIGV4dGVuZGVkIGF0
dHJpYnV0ZSBvbiAiICsgdGhpcy5uYW1lICsgIiB3aGljaCBpcyBub3QgZXhwb3NlZCBpbiBXaW5k
b3ciKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIFRPRE86IHdoZW4gdGVzdGluZyBv
ZiBbTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3RdIGludGVyZmFjZXMgaXMgc3VwcG9ydGVkLAorICAg
ICAgICAgICAgLy8gY2hlY2sgdGhhdCBpdCdzIG5vdCBzcGVjaWZpZWQgdG9nZXRoZXIgd2l0aCBM
ZWdhY3lXaW5kb3dBbGlhcy4KKworICAgICAgICAgICAgLy8gVE9ETzogbWF5YmUgY2hlY2sgdGhh
dCBbTGVnYWN5V2luZG93QWxpYXNdwqBpcyBub3Qgc3BlY2lmaWVkIG9uIGEgcGFydGlhbCBpbnRl
cmZhY2UuCiAKLSAgICAgICAgICAgIGFzc2VydF9vd25fcHJvcGVydHkoc2VsZiwgdGhpcy5uYW1l
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2VsZiBkb2VzIG5vdCBoYXZlIG93
biBwcm9wZXJ0eSAiICsgZm9ybWF0X3ZhbHVlKHRoaXMubmFtZSkpOworICAgICAgICAgICAgdmFy
IHJocyA9IGFsaWFzQXR0cnNbMF0ucmhzOworICAgICAgICAgICAgaWYgKCFyaHMpIHsKKyAgICAg
ICAgICAgICAgICB0aHJvdyBuZXcgSWRsSGFybmVzc0Vycm9yKCJJbnZhbGlkIElETDogTGVnYWN5
V2luZG93QWxpYXMgZXh0ZW5kZWQgYXR0cmlidXRlIG9uICIgKyB0aGlzLm5hbWUgKyAiIHdpdGhv
dXQgaWRlbnRpZmllciIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdmFyIGFsaWFzZXM7
CisgICAgICAgICAgICBpZiAocmhzLnR5cGUgPT09ICJpZGVudGlmaWVyLWxpc3QiKSB7CisgICAg
ICAgICAgICAgICAgYWxpYXNlcyA9IHJocy52YWx1ZS5tYXAoaWQgPT4gaWQudmFsdWUpOworICAg
ICAgICAgICAgfSBlbHNlIHsgLy8gcmhzLnR5cGUgPT09IGlkZW50aWZpZXIKKyAgICAgICAgICAg
ICAgICBhbGlhc2VzID0gWyByaHMudmFsdWUgXTsKKyAgICAgICAgICAgIH0KIAotICAgICAgICAg
ICAgLy8gIkFsbCBpbnRlcmZhY2Ugb2JqZWN0cyBtdXN0IGhhdmUgYSBwcm9wZXJ0eSBuYW1lZCDi
gJxuYW1l4oCdIHdpdGgKLSAgICAgICAgICAgIC8vIGF0dHJpYnV0ZXMgeyBbW1dyaXRhYmxlXV06
IGZhbHNlLCBbW0VudW1lcmFibGVdXTogZmFsc2UsCi0gICAgICAgICAgICAvLyBbW0NvbmZpZ3Vy
YWJsZV1dOiB0cnVlIH0gd2hvc2UgdmFsdWUgaXMgdGhlIGlkZW50aWZpZXIgb2YgdGhlCi0gICAg
ICAgICAgICAvLyBjb3JyZXNwb25kaW5nIGludGVyZmFjZS4iCisgICAgICAgICAgICAvLyBPSyBu
b3cgYWN0dWFsbHkgY2hlY2sgdGhlIGFsaWFzZXMuLi4KKyAgICAgICAgICAgIHZhciBhbGlhczsK
KyAgICAgICAgICAgIGlmIChleHBvc2VkX2luKGV4cG9zdXJlX3NldCh0aGlzLCB0aGlzLmV4cG9z
dXJlU2V0KSkgJiYgJ2RvY3VtZW50JyBpbiBzZWxmKSB7CisgICAgICAgICAgICAgICAgZm9yIChh
bGlhcyBvZiBhbGlhc2VzKSB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydF90cnVlKGFsaWFz
IGluIHNlbGYsIGFsaWFzICsgIiBzaG91bGQgZXhpc3QiKTsKKyAgICAgICAgICAgICAgICAgICAg
YXNzZXJ0X2VxdWFscyhzZWxmW2FsaWFzXSwgdGhpcy5nZXRfaW50ZXJmYWNlX29iamVjdCgpLCAi
c2VsZi4iICsgYWxpYXMgKyAiIHNob3VsZCBiZSB0aGUgc2FtZSB2YWx1ZSBhcyBzZWxmLiIgKyB0
aGlzLmdldF9xdWFsaWZpZWRfbmFtZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGRlc2Mg
PSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNlbGYsIGFsaWFzKTsKKyAgICAgICAg
ICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhkZXNjLnZhbHVlLCB0aGlzLmdldF9pbnRlcmZhY2Vf
b2JqZWN0KCksICJ3cm9uZyB2YWx1ZSBpbiAiICsgYWxpYXMgKyAiIHByb3BlcnR5IGRlc2NyaXB0
b3IiKTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X3RydWUoZGVzYy53cml0YWJsZSwgYWxp
YXMgKyAiIHNob3VsZCBiZSB3cml0YWJsZSIpOworICAgICAgICAgICAgICAgICAgICBhc3NlcnRf
ZmFsc2UoZGVzYy5lbnVtZXJhYmxlLCBhbGlhcyArICIgc2hvdWxkIG5vdCBiZSBlbnVtZXJhYmxl
Iik7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydF90cnVlKGRlc2MuY29uZmlndXJhYmxlLCBh
bGlhcyArICIgc2hvdWxkIGJlIGNvbmZpZ3VyYWJsZSIpOworICAgICAgICAgICAgICAgICAgICBh
c3NlcnRfZmFsc2UoJ2dldCcgaW4gZGVzYywgYWxpYXMgKyAiIHNob3VsZCBub3QgaGF2ZSBhIGdl
dHRlciIpOworICAgICAgICAgICAgICAgICAgICBhc3NlcnRfZmFsc2UoJ3NldCcgaW4gZGVzYywg
YWxpYXMgKyAiIHNob3VsZCBub3QgaGF2ZSBhIHNldHRlciIpOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZm9yIChhbGlhcyBvZiBhbGlh
c2VzKSB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydF9mYWxzZShhbGlhcyBpbiBzZWxmLCBh
bGlhcyArICIgc2hvdWxkIG5vdCBleGlzdCIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KIAotICAgICAgICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0eShzZWxmW3RoaXMubmFtZV0s
ICJuYW1lIik7Ci0gICAgICAgICAgICB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3Ioc2VsZlt0aGlzLm5hbWVdLCAibmFtZSIpOwotICAgICAgICAgICAgYXNzZXJ0X2Zh
bHNlKCJnZXQiIGluIGRlc2MsIHRoaXMubmFtZSArICIubmFtZSBoYXMgZ2V0dGVyIik7Ci0gICAg
ICAgICAgICBhc3NlcnRfZmFsc2UoInNldCIgaW4gZGVzYywgdGhpcy5uYW1lICsgIi5uYW1lIGhh
cyBzZXR0ZXIiKTsKLSAgICAgICAgICAgIGFzc2VydF9mYWxzZShkZXNjLndyaXRhYmxlLCB0aGlz
Lm5hbWUgKyAiLm5hbWUgaXMgd3JpdGFibGUiKTsKLSAgICAgICAgICAgIGFzc2VydF9mYWxzZShk
ZXNjLmVudW1lcmFibGUsIHRoaXMubmFtZSArICIubmFtZSBpcyBlbnVtZXJhYmxlIik7Ci0gICAg
ICAgICAgICBhc3NlcnRfdHJ1ZShkZXNjLmNvbmZpZ3VyYWJsZSwgdGhpcy5uYW1lICsgIi5uYW1l
IGlzIG5vdCBjb25maWd1cmFibGUiKTsKLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoc2VsZlt0
aGlzLm5hbWVdLm5hbWUsIHRoaXMubmFtZSwgIndyb25nIHZhbHVlIGZvciAiICsgdGhpcy5uYW1l
ICsgIi5uYW1lIik7Ci0gICAgICAgIH0uYmluZCh0aGlzKSwgdGhpcy5uYW1lICsgIiBpbnRlcmZh
Y2Ugb2JqZWN0IG5hbWUiKTsKKyAgICAgICAgfS5iaW5kKHRoaXMpLCB0aGlzLm5hbWUgKyAiIGlu
dGVyZmFjZTogbGVnYWN5IHdpbmRvdyBhbGlhcyIpOwogICAgIH0KIAotICAgIC8vIFRPRE86IFRl
c3QgbmFtZWQgY29uc3RydWN0b3JzIGlmIEkgZmluZCBhbnkgaW50ZXJmYWNlcyB0aGF0IGhhdmUg
dGhlbS4KKyAgICBpZiAodGhpcy5oYXNfZXh0ZW5kZWRfYXR0cmlidXRlKCJMZWdhY3lGYWN0b3J5
RnVuY3Rpb24iKSkgeworICAgICAgICB2YXIgY29uc3RydWN0b3JzID0gdGhpcy5leHRBdHRycwor
ICAgICAgICAgICAgLmZpbHRlcihmdW5jdGlvbihhdHRyKSB7IHJldHVybiBhdHRyLm5hbWUgPT0g
IkxlZ2FjeUZhY3RvcnlGdW5jdGlvbiI7IH0pOworICAgICAgICBpZiAoY29uc3RydWN0b3JzLmxl
bmd0aCAhPT0gMSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElkbEhhcm5lc3NFcnJvcigiSW50
ZXJuYWwgZXJyb3I6IG1pc3Npbmcgc3VwcG9ydCBmb3IgbXVsdGlwbGUgTGVnYWN5RmFjdG9yeUZ1
bmN0aW9uIGV4dGVuZGVkIGF0dHJpYnV0ZXMiKTsKKyAgICAgICAgfQorICAgICAgICB2YXIgY29u
c3RydWN0b3IgPSBjb25zdHJ1Y3RvcnNbMF07CisgICAgICAgIHZhciBtaW5fbGVuZ3RoID0gbWlu
T3ZlcmxvYWRMZW5ndGgoW2NvbnN0cnVjdG9yXSk7CisKKyAgICAgICAgc3Vic2V0VGVzdEJ5S2V5
KHRoaXMubmFtZSwgdGVzdCwgZnVuY3Rpb24oKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBU
aGlzIGZ1bmN0aW9uIHRlc3RzIFdlYklETCBhcyBvZiAyMDE5LTAxLTE0LgorCisgICAgICAgICAg
ICAvLyAiZm9yIGV2ZXJ5IFtMZWdhY3lGYWN0b3J5RnVuY3Rpb25dIGV4dGVuZGVkIGF0dHJpYnV0
ZSBvbiBhbiBleHBvc2VkCisgICAgICAgICAgICAvLyBpbnRlcmZhY2UsIGEgY29ycmVzcG9uZGlu
ZyBwcm9wZXJ0eSBtdXN0IGV4aXN0IG9uIHRoZSBFQ01BU2NyaXB0CisgICAgICAgICAgICAvLyBn
bG9iYWwgb2JqZWN0LiBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgaXMgdGhlCisgICAgICAgICAg
ICAvLyBbTGVnYWN5RmFjdG9yeUZ1bmN0aW9uXSdzIGlkZW50aWZpZXIsIGFuZCBpdHMgdmFsdWUg
aXMgYW4gb2JqZWN0CisgICAgICAgICAgICAvLyBjYWxsZWQgYSBuYW1lZCBjb25zdHJ1Y3Rvciwg
Li4uIC4gVGhlIHByb3BlcnR5IGhhcyB0aGUgYXR0cmlidXRlcworICAgICAgICAgICAgLy8geyBb
W1dyaXRhYmxlXV06IHRydWUsIFtbRW51bWVyYWJsZV1dOiBmYWxzZSwKKyAgICAgICAgICAgIC8v
IFtbQ29uZmlndXJhYmxlXV06IHRydWUgfS4iCisgICAgICAgICAgICB2YXIgbmFtZSA9IGNvbnN0
cnVjdG9yLnJocy52YWx1ZTsKKyAgICAgICAgICAgIGFzc2VydF9vd25fcHJvcGVydHkoc2VsZiwg
bmFtZSk7CisgICAgICAgICAgICB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3Ioc2VsZiwgbmFtZSk7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGRlc2MudmFsdWUs
IHNlbGZbbmFtZV0sICJ3cm9uZyB2YWx1ZSBpbiAiICsgbmFtZSArICIgcHJvcGVydHkgZGVzY3Jp
cHRvciIpOworICAgICAgICAgICAgYXNzZXJ0X3RydWUoZGVzYy53cml0YWJsZSwgbmFtZSArICIg
c2hvdWxkIGJlIHdyaXRhYmxlIik7CisgICAgICAgICAgICBhc3NlcnRfZmFsc2UoZGVzYy5lbnVt
ZXJhYmxlLCBuYW1lICsgIiBzaG91bGQgbm90IGJlIGVudW1lcmFibGUiKTsKKyAgICAgICAgICAg
IGFzc2VydF90cnVlKGRlc2MuY29uZmlndXJhYmxlLCBuYW1lICsgIiBzaG91bGQgYmUgY29uZmln
dXJhYmxlIik7CisgICAgICAgICAgICBhc3NlcnRfZmFsc2UoImdldCIgaW4gZGVzYywgbmFtZSAr
ICIgc2hvdWxkIG5vdCBoYXZlIGEgZ2V0dGVyIik7CisgICAgICAgICAgICBhc3NlcnRfZmFsc2Uo
InNldCIgaW4gZGVzYywgbmFtZSArICIgc2hvdWxkIG5vdCBoYXZlIGEgc2V0dGVyIik7CisgICAg
ICAgIH0uYmluZCh0aGlzKSwgdGhpcy5uYW1lICsgIiBpbnRlcmZhY2U6IG5hbWVkIGNvbnN0cnVj
dG9yIik7CisKKyAgICAgICAgc3Vic2V0VGVzdEJ5S2V5KHRoaXMubmFtZSwgdGVzdCwgZnVuY3Rp
b24oKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBUaGlzIGZ1bmN0aW9uIHRlc3RzIFdlYklE
TCBhcyBvZiAyMDE5LTAxLTE0LgorCisgICAgICAgICAgICAvLyAiMi4gTGV0IEYgYmUgISBDcmVh
dGVCdWlsdGluRnVuY3Rpb24ocmVhbG0sIHN0ZXBzLAorICAgICAgICAgICAgLy8gICAgIHJlYWxt
LltbSW50cmluc2ljc11dLltbJUZ1bmN0aW9uUHJvdG90eXBlJV1dKS4iCisgICAgICAgICAgICB2
YXIgbmFtZSA9IGNvbnN0cnVjdG9yLnJocy52YWx1ZTsKKyAgICAgICAgICAgIHZhciB2YWx1ZSA9
IHNlbGZbbmFtZV07CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiB2YWx1ZSwgImZ1
bmN0aW9uIiwgInR5cGUgb2YgdmFsdWUgaW4gIiArIG5hbWUgKyAiIHByb3BlcnR5IGRlc2NyaXB0
b3IiKTsKKyAgICAgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKHZhbHVlLCB0aGlzLmdldF9pbnRl
cmZhY2Vfb2JqZWN0KCksICJ3cm9uZyB2YWx1ZSBpbiAiICsgbmFtZSArICIgcHJvcGVydHkgZGVz
Y3JpcHRvciIpOworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhPYmplY3QuZ2V0UHJvdG90eXBl
T2YodmFsdWUpLCBGdW5jdGlvbi5wcm90b3R5cGUsICJ3cm9uZyB2YWx1ZSBmb3IgIiArIG5hbWUg
KyAiJ3MgcHJvdG90eXBlIik7CisgICAgICAgIH0uYmluZCh0aGlzKSwgdGhpcy5uYW1lICsgIiBp
bnRlcmZhY2U6IG5hbWVkIGNvbnN0cnVjdG9yIG9iamVjdCIpOworCisgICAgICAgIHN1YnNldFRl
c3RCeUtleSh0aGlzLm5hbWUsIHRlc3QsIGZ1bmN0aW9uKCkKKyAgICAgICAgeworICAgICAgICAg
ICAgLy8gVGhpcyBmdW5jdGlvbiB0ZXN0cyBXZWJJREwgYXMgb2YgMjAxOS0wMS0xNC4KKworICAg
ICAgICAgICAgLy8gIjcuIExldCBwcm90byBiZSB0aGUgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmpl
Y3Qgb2YgaW50ZXJmYWNlIEkKKyAgICAgICAgICAgIC8vICAgICBpbiByZWFsbS4KKyAgICAgICAg
ICAgIC8vICI4LiBQZXJmb3JtICEgRGVmaW5lUHJvcGVydHlPclRocm93KEYsICJwcm90b3R5cGUi
LAorICAgICAgICAgICAgLy8gICAgIFByb3BlcnR5RGVzY3JpcHRvcnsKKyAgICAgICAgICAgIC8v
ICAgICAgICAgW1tWYWx1ZV1dOiBwcm90bywgW1tXcml0YWJsZV1dOiBmYWxzZSwKKyAgICAgICAg
ICAgIC8vICAgICAgICAgW1tFbnVtZXJhYmxlXV06IGZhbHNlLCBbW0NvbmZpZ3VyYWJsZV1dOiBm
YWxzZQorICAgICAgICAgICAgLy8gICAgIH0pLiIKKyAgICAgICAgICAgIHZhciBuYW1lID0gY29u
c3RydWN0b3IucmhzLnZhbHVlOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkID0gdGhpcy5nZXRf
aW50ZXJmYWNlX29iamVjdCgpLnByb3RvdHlwZTsKKyAgICAgICAgICAgIHZhciBkZXNjID0gT2Jq
ZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzZWxmW25hbWVdLCAicHJvdG90eXBlIik7Cisg
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGRlc2MudmFsdWUsIGV4cGVjdGVkLCAid3JvbmcgdmFs
dWUgZm9yICIgKyBuYW1lICsgIi5wcm90b3R5cGUiKTsKKyAgICAgICAgICAgIGFzc2VydF9mYWxz
ZShkZXNjLndyaXRhYmxlLCAicHJvdG90eXBlIHNob3VsZCBub3QgYmUgd3JpdGFibGUiKTsKKyAg
ICAgICAgICAgIGFzc2VydF9mYWxzZShkZXNjLmVudW1lcmFibGUsICJwcm90b3R5cGUgc2hvdWxk
IG5vdCBiZSBlbnVtZXJhYmxlIik7CisgICAgICAgICAgICBhc3NlcnRfZmFsc2UoZGVzYy5jb25m
aWd1cmFibGUsICJwcm90b3R5cGUgc2hvdWxkIG5vdCBiZSBjb25maWd1cmFibGUiKTsKKyAgICAg
ICAgICAgIGFzc2VydF9mYWxzZSgiZ2V0IiBpbiBkZXNjLCAicHJvdG90eXBlIHNob3VsZCBub3Qg
aGF2ZSBhIGdldHRlciIpOworICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKCJzZXQiIGluIGRlc2Ms
ICJwcm90b3R5cGUgc2hvdWxkIG5vdCBoYXZlIGEgc2V0dGVyIik7CisgICAgICAgIH0uYmluZCh0
aGlzKSwgdGhpcy5uYW1lICsgIiBpbnRlcmZhY2U6IG5hbWVkIGNvbnN0cnVjdG9yIHByb3RvdHlw
ZSBwcm9wZXJ0eSIpOworCisgICAgICAgIHN1YnNldFRlc3RCeUtleSh0aGlzLm5hbWUsIHRlc3Qs
IGZ1bmN0aW9uKCkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gVGhpcyBmdW5jdGlvbiB0ZXN0
cyBXZWJJREwgYXMgb2YgMjAxOS0wMS0xNC4KKworICAgICAgICAgICAgLy8gIjMuIFBlcmZvcm0g
ISBTZXRGdW5jdGlvbk5hbWUoRiwgaWQpLiIKKyAgICAgICAgICAgIHZhciBuYW1lID0gY29uc3Ry
dWN0b3IucmhzLnZhbHVlOworICAgICAgICAgICAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKHNlbGZbbmFtZV0sICJuYW1lIik7CisgICAgICAgICAgICBhc3NlcnRf
ZXF1YWxzKGRlc2MudmFsdWUsIG5hbWUsICJ3cm9uZyB2YWx1ZSBmb3IgIiArIG5hbWUgKyAiLm5h
bWUiKTsKKyAgICAgICAgICAgIGFzc2VydF9mYWxzZShkZXNjLndyaXRhYmxlLCAibmFtZSBzaG91
bGQgbm90IGJlIHdyaXRhYmxlIik7CisgICAgICAgICAgICBhc3NlcnRfZmFsc2UoZGVzYy5lbnVt
ZXJhYmxlLCAibmFtZSBzaG91bGQgbm90IGJlIGVudW1lcmFibGUiKTsKKyAgICAgICAgICAgIGFz
c2VydF90cnVlKGRlc2MuY29uZmlndXJhYmxlLCAibmFtZSBzaG91bGQgYmUgY29uZmlndXJhYmxl
Iik7CisgICAgICAgICAgICBhc3NlcnRfZmFsc2UoImdldCIgaW4gZGVzYywgIm5hbWUgc2hvdWxk
IG5vdCBoYXZlIGEgZ2V0dGVyIik7CisgICAgICAgICAgICBhc3NlcnRfZmFsc2UoInNldCIgaW4g
ZGVzYywgIm5hbWUgc2hvdWxkIG5vdCBoYXZlIGEgc2V0dGVyIik7CisgICAgICAgIH0uYmluZCh0
aGlzKSwgdGhpcy5uYW1lICsgIiBpbnRlcmZhY2U6IG5hbWVkIGNvbnN0cnVjdG9yIG5hbWUiKTsK
KworICAgICAgICBzdWJzZXRUZXN0QnlLZXkodGhpcy5uYW1lLCB0ZXN0LCBmdW5jdGlvbigpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIC8vIFRoaXMgZnVuY3Rpb24gdGVzdHMgV2ViSURMIGFzIG9m
IDIwMTktMDEtMTQuCisKKyAgICAgICAgICAgIC8vICI0LiBJbml0aWFsaXplIFMgdG8gdGhlIGVm
ZmVjdGl2ZSBvdmVybG9hZCBzZXQgZm9yIGNvbnN0cnVjdG9ycworICAgICAgICAgICAgLy8gICAg
IHdpdGggaWRlbnRpZmllciBpZCBvbiBpbnRlcmZhY2UgSSBhbmQgd2l0aCBhcmd1bWVudCBjb3Vu
dCAwLgorICAgICAgICAgICAgLy8gIjUuIExldCBsZW5ndGggYmUgdGhlIGxlbmd0aCBvZiB0aGUg
c2hvcnRlc3QgYXJndW1lbnQgbGlzdCBvZgorICAgICAgICAgICAgLy8gICAgIHRoZSBlbnRyaWVz
IGluIFMuCisgICAgICAgICAgICAvLyAiNi4gUGVyZm9ybSAhIFNldEZ1bmN0aW9uTGVuZ3RoKEYs
IGxlbmd0aCkuIgorICAgICAgICAgICAgdmFyIG5hbWUgPSBjb25zdHJ1Y3Rvci5yaHMudmFsdWU7
CisgICAgICAgICAgICB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
c2VsZltuYW1lXSwgImxlbmd0aCIpOworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhkZXNjLnZh
bHVlLCBtaW5fbGVuZ3RoLCAid3JvbmcgdmFsdWUgZm9yICIgKyBuYW1lICsgIi5sZW5ndGgiKTsK
KyAgICAgICAgICAgIGFzc2VydF9mYWxzZShkZXNjLndyaXRhYmxlLCAibGVuZ3RoIHNob3VsZCBu
b3QgYmUgd3JpdGFibGUiKTsKKyAgICAgICAgICAgIGFzc2VydF9mYWxzZShkZXNjLmVudW1lcmFi
bGUsICJsZW5ndGggc2hvdWxkIG5vdCBiZSBlbnVtZXJhYmxlIik7CisgICAgICAgICAgICBhc3Nl
cnRfdHJ1ZShkZXNjLmNvbmZpZ3VyYWJsZSwgImxlbmd0aCBzaG91bGQgYmUgY29uZmlndXJhYmxl
Iik7CisgICAgICAgICAgICBhc3NlcnRfZmFsc2UoImdldCIgaW4gZGVzYywgImxlbmd0aCBzaG91
bGQgbm90IGhhdmUgYSBnZXR0ZXIiKTsKKyAgICAgICAgICAgIGFzc2VydF9mYWxzZSgic2V0IiBp
biBkZXNjLCAibGVuZ3RoIHNob3VsZCBub3QgaGF2ZSBhIHNldHRlciIpOworICAgICAgICB9LmJp
bmQodGhpcyksIHRoaXMubmFtZSArICIgaW50ZXJmYWNlOiBuYW1lZCBjb25zdHJ1Y3RvciBsZW5n
dGgiKTsKKworICAgICAgICBzdWJzZXRUZXN0QnlLZXkodGhpcy5uYW1lLCB0ZXN0LCBmdW5jdGlv
bigpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIFRoaXMgZnVuY3Rpb24gdGVzdHMgV2ViSURM
IGFzIG9mIDIwMTktMDEtMTQuCisKKyAgICAgICAgICAgIC8vICIxLiBMZXQgc3RlcHMgYmUgdGhl
IGZvbGxvd2luZyBzdGVwczoKKyAgICAgICAgICAgIC8vICIgICAgMS4gSWYgTmV3VGFyZ2V0IGlz
IHVuZGVmaW5lZCwgdGhlbiB0aHJvdyBhIFR5cGVFcnJvci4iCisgICAgICAgICAgICB2YXIgbmFt
ZSA9IGNvbnN0cnVjdG9yLnJocy52YWx1ZTsKKyAgICAgICAgICAgIHZhciBhcmdzID0gY29uc3Ry
dWN0b3IuYXJndW1lbnRzLm1hcChmdW5jdGlvbihhcmcpIHsKKyAgICAgICAgICAgICAgICByZXR1
cm4gY3JlYXRlX3N1aXRhYmxlX29iamVjdChhcmcuaWRsVHlwZSk7CisgICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgIGFzc2VydF90aHJvd3NfanMoZ2xvYmFsT2Yoc2VsZltuYW1lXSkuVHlwZUVy
cm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBzZWxmW25hbWVdKC4uLmFyZ3MpOwor
ICAgICAgICAgICAgfS5iaW5kKHRoaXMpKTsKKyAgICAgICAgfS5iaW5kKHRoaXMpLCB0aGlzLm5h
bWUgKyAiIGludGVyZmFjZTogbmFtZWQgY29uc3RydWN0b3Igd2l0aG91dCAnbmV3JyIpOworICAg
IH0KIAotICAgIHRlc3QoZnVuY3Rpb24oKQorICAgIHN1YnNldFRlc3RCeUtleSh0aGlzLm5hbWUs
IHRlc3QsIGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIC8vIFRoaXMgZnVuY3Rpb24gdGVzdHMg
V2ViSURMIGFzIG9mIDIwMTUtMDEtMjEuCiAgICAgICAgIC8vIGh0dHBzOi8vaGV5Y2FtLmdpdGh1
Yi5pby93ZWJpZGwvI2ludGVyZmFjZS1vYmplY3QKIAotICAgICAgICBpZiAodGhpcy5pc19jYWxs
YmFjaygpICYmICF0aGlzLmhhc19jb25zdGFudHMoKSkgeworICAgICAgICBpZiAoIXRoaXMuc2hv
dWxkX2hhdmVfaW50ZXJmYWNlX29iamVjdCgpKSB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIAotICAgICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KHNlbGYsIHRoaXMubmFtZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAic2VsZiBkb2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0
eSAiICsgZm9ybWF0X3ZhbHVlKHRoaXMubmFtZSkpOworICAgICAgICB0aGlzLmFzc2VydF9pbnRl
cmZhY2Vfb2JqZWN0X2V4aXN0cygpOwogCiAgICAgICAgIGlmICh0aGlzLmlzX2NhbGxiYWNrKCkp
IHsKLSAgICAgICAgICAgIGFzc2VydF9mYWxzZSgicHJvdG90eXBlIiBpbiBzZWxmW3RoaXMubmFt
ZV0sCisgICAgICAgICAgICBhc3NlcnRfZmFsc2UoInByb3RvdHlwZSIgaW4gdGhpcy5nZXRfaW50
ZXJmYWNlX29iamVjdCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmFtZSArICcg
c2hvdWxkIG5vdCBoYXZlIGEgInByb3RvdHlwZSIgcHJvcGVydHknKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQpAQCAtOTU0LDE4ICsxNzYwLDE4IEBAIElkbEludGVyZmFjZS5wcm90
b3R5cGUudGVzdF9zZWxmID0gZnVuY3Rpb24oKQogICAgICAgICAvLyBwcm9wZXJ0aWVzIHRoYXQg
Y29ycmVzcG9uZCB0byB0aGUgcmVndWxhciBhdHRyaWJ1dGVzIGFuZCByZWd1bGFyCiAgICAgICAg
IC8vIG9wZXJhdGlvbnMgZGVmaW5lZCBvbiB0aGUgaW50ZXJmYWNlLCBhbmQgaXMgZGVzY3JpYmVk
IGluIG1vcmUgZGV0YWlsCiAgICAgICAgIC8vIGluIHNlY3Rpb24gNC41LjQgYmVsb3cuIgotICAg
ICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KHNlbGZbdGhpcy5uYW1lXSwgInByb3RvdHlwZSIsCisg
ICAgICAgIGFzc2VydF9vd25fcHJvcGVydHkodGhpcy5nZXRfaW50ZXJmYWNlX29iamVjdCgpLCAi
cHJvdG90eXBlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW50ZXJmYWNlICInICsg
dGhpcy5uYW1lICsgJyIgZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVydHkgInByb3RvdHlwZSInKTsK
LSAgICAgICAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNlbGZb
dGhpcy5uYW1lXSwgInByb3RvdHlwZSIpOwotICAgICAgICBhc3NlcnRfZmFsc2UoImdldCIgaW4g
ZGVzYywgdGhpcy5uYW1lICsgIi5wcm90b3R5cGUgaGFzIGdldHRlciIpOwotICAgICAgICBhc3Nl
cnRfZmFsc2UoInNldCIgaW4gZGVzYywgdGhpcy5uYW1lICsgIi5wcm90b3R5cGUgaGFzIHNldHRl
ciIpOwotICAgICAgICBhc3NlcnRfZmFsc2UoZGVzYy53cml0YWJsZSwgdGhpcy5uYW1lICsgIi5w
cm90b3R5cGUgaXMgd3JpdGFibGUiKTsKLSAgICAgICAgYXNzZXJ0X2ZhbHNlKGRlc2MuZW51bWVy
YWJsZSwgdGhpcy5uYW1lICsgIi5wcm90b3R5cGUgaXMgZW51bWVyYWJsZSIpOwotICAgICAgICBh
c3NlcnRfZmFsc2UoZGVzYy5jb25maWd1cmFibGUsIHRoaXMubmFtZSArICIucHJvdG90eXBlIGlz
IGNvbmZpZ3VyYWJsZSIpOworICAgICAgICB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IodGhpcy5nZXRfaW50ZXJmYWNlX29iamVjdCgpLCAicHJvdG90eXBlIik7Cisg
ICAgICAgIGFzc2VydF9mYWxzZSgiZ2V0IiBpbiBkZXNjLCB0aGlzLm5hbWUgKyAiLnByb3RvdHlw
ZSBzaG91bGQgbm90IGhhdmUgYSBnZXR0ZXIiKTsKKyAgICAgICAgYXNzZXJ0X2ZhbHNlKCJzZXQi
IGluIGRlc2MsIHRoaXMubmFtZSArICIucHJvdG90eXBlIHNob3VsZCBub3QgaGF2ZSBhIHNldHRl
ciIpOworICAgICAgICBhc3NlcnRfZmFsc2UoZGVzYy53cml0YWJsZSwgdGhpcy5uYW1lICsgIi5w
cm90b3R5cGUgc2hvdWxkIG5vdCBiZSB3cml0YWJsZSIpOworICAgICAgICBhc3NlcnRfZmFsc2Uo
ZGVzYy5lbnVtZXJhYmxlLCB0aGlzLm5hbWUgKyAiLnByb3RvdHlwZSBzaG91bGQgbm90IGJlIGVu
dW1lcmFibGUiKTsKKyAgICAgICAgYXNzZXJ0X2ZhbHNlKGRlc2MuY29uZmlndXJhYmxlLCB0aGlz
Lm5hbWUgKyAiLnByb3RvdHlwZSBzaG91bGQgbm90IGJlIGNvbmZpZ3VyYWJsZSIpOwogCiAgICAg
ICAgIC8vIE5leHQsIHRlc3QgdGhhdCB0aGUgW1tQcm90b3R5cGVdXSBvZiB0aGUgaW50ZXJmYWNl
IHByb3RvdHlwZSBvYmplY3QKICAgICAgICAgLy8gaXMgY29ycmVjdC4gKFRoaXMgaXMgbWFkZSBz
b21ld2hhdCBkaWZmaWN1bHQgYnkgdGhlIGV4aXN0ZW5jZSBvZgotICAgICAgICAvLyBbTm9JbnRl
cmZhY2VPYmplY3RdLikKKyAgICAgICAgLy8gW0xlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0XS4pCiAg
ICAgICAgIC8vIFRPRE86IEFyeWVoIHRoaW5rcyB0aGVyZSdzIGF0IGxlYXN0IG90aGVyIHBsYWNl
IGluIHRoaXMgZmlsZSB3aGVyZQogICAgICAgICAvLyAgICAgICB3ZSB0cnkgdG8gZmlndXJlIG91
dCBpZiBhbiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCBpcwogICAgICAgICAvLyAgICAgICBj
b3JyZWN0LiBDb25zb2xpZGF0ZSB0aGF0IGNvZGUuCkBAIC05NzMsMTgxICsxNzc5LDM5MyBAQCBJ
ZGxJbnRlcmZhY2UucHJvdG90eXBlLnRlc3Rfc2VsZiA9IGZ1bmN0aW9uKCkKICAgICAgICAgLy8g
IlRoZSBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCBmb3IgYSBnaXZlbiBpbnRlcmZhY2UgQSBt
dXN0IGhhdmUgYW4KICAgICAgICAgLy8gaW50ZXJuYWwgW1tQcm90b3R5cGVdXSBwcm9wZXJ0eSB3
aG9zZSB2YWx1ZSBpcyByZXR1cm5lZCBmcm9tIHRoZQogICAgICAgICAvLyBmb2xsb3dpbmcgc3Rl
cHM6Ci0gICAgICAgIC8vICJJZiBBIGlzIGRlY2xhcmVkIHdpdGggdGhlIFtHbG9iYWxdIG9yIFtQ
cmltYXJ5R2xvYmFsXSBleHRlbmRlZAorICAgICAgICAvLyAiSWYgQSBpcyBkZWNsYXJlZCB3aXRo
IHRoZSBbR2xvYmFsXSBleHRlbmRlZAogICAgICAgICAvLyBhdHRyaWJ1dGUsIGFuZCBBIHN1cHBv
cnRzIG5hbWVkIHByb3BlcnRpZXMsIHRoZW4gcmV0dXJuIHRoZSBuYW1lZAotICAgICAgICAvLyBw
cm9wZXJ0aWVzIG9iamVjdCBmb3IgQSwgYXMgZGVmaW5lZCBpbiBzZWN0aW9uIDQuNS41IGJlbG93
LgorICAgICAgICAvLyBwcm9wZXJ0aWVzIG9iamVjdCBmb3IgQSwgYXMgZGVmaW5lZCBpbiDCpzMu
Ni40IE5hbWVkIHByb3BlcnRpZXMKKyAgICAgICAgLy8gb2JqZWN0LgogICAgICAgICAvLyAiT3Ro
ZXJ3aXNlLCBpZiBBIGlzIGRlY2xhcmVkIHRvIGluaGVyaXQgZnJvbSBhbm90aGVyIGludGVyZmFj
ZSwgdGhlbgogICAgICAgICAvLyByZXR1cm4gdGhlIGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0
IGZvciB0aGUgaW5oZXJpdGVkIGludGVyZmFjZS4KLSAgICAgICAgLy8gIk90aGVyd2lzZSwgaWYg
QSBpcyBkZWNsYXJlZCB3aXRoIHRoZSBbQXJyYXlDbGFzc10gZXh0ZW5kZWQKLSAgICAgICAgLy8g
YXR0cmlidXRlLCB0aGVuIHJldHVybiAlQXJyYXlQcm90b3R5cGUlIChbRUNNQS0yNjJdLCBzZWN0
aW9uCi0gICAgICAgIC8vIDYuMS43LjQpLgotICAgICAgICAvLyAiT3RoZXJ3aXNlLCByZXR1cm4g
JU9iamVjdFByb3RvdHlwZSUgKFtFQ01BLTI2Ml0sIHNlY3Rpb24gNi4xLjcuNCkuCi0gICAgICAg
IC8vIChbRUNNQS0yNjJdLCBzZWN0aW9uIDE1LjIuNCkuCisgICAgICAgIC8vICJPdGhlcndpc2Us
IHJldHVybiAlT2JqZWN0UHJvdG90eXBlJS4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gIkluIHRo
ZSBFQ01BU2NyaXB0IGJpbmRpbmcsIHRoZSBET01FeGNlcHRpb24gdHlwZSBoYXMgc29tZSBhZGRp
dGlvbmFsCisgICAgICAgIC8vIHJlcXVpcmVtZW50czoKKyAgICAgICAgLy8KKyAgICAgICAgLy8g
ICAgICJVbmxpa2Ugbm9ybWFsIGludGVyZmFjZSB0eXBlcywgdGhlIGludGVyZmFjZSBwcm90b3R5
cGUgb2JqZWN0CisgICAgICAgIC8vICAgICBmb3IgRE9NRXhjZXB0aW9uIG11c3QgaGF2ZSBhcyBp
dHMgW1tQcm90b3R5cGVdXSB0aGUgaW50cmluc2ljCisgICAgICAgIC8vICAgICBvYmplY3QgJUVy
cm9yUHJvdG90eXBlJS4iCisgICAgICAgIC8vCiAgICAgICAgIGlmICh0aGlzLm5hbWUgPT09ICJX
aW5kb3ciKSB7Ci0gICAgICAgICAgICBhc3NlcnRfY2xhc3Nfc3RyaW5nKE9iamVjdC5nZXRQcm90
b3R5cGVPZihzZWxmW3RoaXMubmFtZV0ucHJvdG90eXBlKSwKKyAgICAgICAgICAgIGFzc2VydF9j
bGFzc19zdHJpbmcoT2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMuZ2V0X2ludGVyZmFjZV9vYmpl
Y3QoKS5wcm90b3R5cGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnV2luZG93
UHJvcGVydGllcycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDbGFzcyBuYW1l
IGZvciBwcm90b3R5cGUgb2YgV2luZG93JyArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICcucHJvdG90eXBlIGlzIG5vdCAiV2luZG93UHJvcGVydGllcyInKTsKICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIHZhciBpbmhlcml0X2ludGVyZmFjZSwgaW5oZXJpdF9pbnRlcmZh
Y2VfaGFzX2ludGVyZmFjZV9vYmplY3Q7CisgICAgICAgICAgICB2YXIgaW5oZXJpdF9pbnRlcmZh
Y2UsIGluaGVyaXRfaW50ZXJmYWNlX2ludGVyZmFjZV9vYmplY3Q7CiAgICAgICAgICAgICBpZiAo
dGhpcy5iYXNlKSB7CiAgICAgICAgICAgICAgICAgaW5oZXJpdF9pbnRlcmZhY2UgPSB0aGlzLmJh
c2U7Ci0gICAgICAgICAgICAgICAgaW5oZXJpdF9pbnRlcmZhY2VfaGFzX2ludGVyZmFjZV9vYmpl
Y3QgPQotICAgICAgICAgICAgICAgICAgICAhdGhpcy5hcnJheQotICAgICAgICAgICAgICAgICAg
ICAgICAgIC5tZW1iZXJzW2luaGVyaXRfaW50ZXJmYWNlXQotICAgICAgICAgICAgICAgICAgICAg
ICAgIC5oYXNfZXh0ZW5kZWRfYXR0cmlidXRlKCJOb0ludGVyZmFjZU9iamVjdCIpOwotICAgICAg
ICAgICAgfSBlbHNlIGlmICh0aGlzLmhhc19leHRlbmRlZF9hdHRyaWJ1dGUoJ0FycmF5Q2xhc3Mn
KSkgewotICAgICAgICAgICAgICAgIGluaGVyaXRfaW50ZXJmYWNlID0gJ0FycmF5JzsKLSAgICAg
ICAgICAgICAgICBpbmhlcml0X2ludGVyZmFjZV9oYXNfaW50ZXJmYWNlX29iamVjdCA9IHRydWU7
CisgICAgICAgICAgICAgICAgdmFyIHBhcmVudCA9IHRoaXMuYXJyYXkubWVtYmVyc1tpbmhlcml0
X2ludGVyZmFjZV07CisgICAgICAgICAgICAgICAgaWYgKCFwYXJlbnQuaGFzX2V4dGVuZGVkX2F0
dHJpYnV0ZSgiTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QiKSkgeworICAgICAgICAgICAgICAgICAg
ICBwYXJlbnQuYXNzZXJ0X2ludGVyZmFjZV9vYmplY3RfZXhpc3RzKCk7CisgICAgICAgICAgICAg
ICAgICAgIGluaGVyaXRfaW50ZXJmYWNlX2ludGVyZmFjZV9vYmplY3QgPSBwYXJlbnQuZ2V0X2lu
dGVyZmFjZV9vYmplY3QoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2Ug
aWYgKHRoaXMubmFtZSA9PT0gIkRPTUV4Y2VwdGlvbiIpIHsKKyAgICAgICAgICAgICAgICBpbmhl
cml0X2ludGVyZmFjZSA9ICdFcnJvcic7CisgICAgICAgICAgICAgICAgaW5oZXJpdF9pbnRlcmZh
Y2VfaW50ZXJmYWNlX29iamVjdCA9IHNlbGYuRXJyb3I7CiAgICAgICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgICAgIGluaGVyaXRfaW50ZXJmYWNlID0gJ09iamVjdCc7Ci0gICAgICAgICAg
ICAgICAgaW5oZXJpdF9pbnRlcmZhY2VfaGFzX2ludGVyZmFjZV9vYmplY3QgPSB0cnVlOworICAg
ICAgICAgICAgICAgIGluaGVyaXRfaW50ZXJmYWNlX2ludGVyZmFjZV9vYmplY3QgPSBzZWxmLk9i
amVjdDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChpbmhlcml0X2ludGVyZmFjZV9o
YXNfaW50ZXJmYWNlX29iamVjdCkgewotICAgICAgICAgICAgICAgIGFzc2VydF9vd25fcHJvcGVy
dHkoc2VsZiwgaW5oZXJpdF9pbnRlcmZhY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnc2hvdWxkIGluaGVyaXQgZnJvbSAnICsgaW5oZXJpdF9pbnRlcmZhY2UgKyAnLCBi
dXQgc2VsZiBoYXMgbm8gc3VjaCBwcm9wZXJ0eScpOwotICAgICAgICAgICAgICAgIGFzc2VydF9v
d25fcHJvcGVydHkoc2VsZltpbmhlcml0X2ludGVyZmFjZV0sICdwcm90b3R5cGUnLAorICAgICAg
ICAgICAgaWYgKGluaGVyaXRfaW50ZXJmYWNlX2ludGVyZmFjZV9vYmplY3QpIHsKKyAgICAgICAg
ICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhpbmhlcml0X2ludGVyZmFjZV9pbnRlcmZhY2Vfb2Jq
ZWN0LCB1bmRlZmluZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Nob3Vs
ZCBpbmhlcml0IGZyb20gJyArIGluaGVyaXRfaW50ZXJmYWNlICsgJywgYnV0IHRoZXJlIGlzIG5v
IHN1Y2ggcHJvcGVydHknKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KGlu
aGVyaXRfaW50ZXJmYWNlX2ludGVyZmFjZV9vYmplY3QsICdwcm90b3R5cGUnLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Nob3VsZCBpbmhlcml0IGZyb20gJyArIGluaGVy
aXRfaW50ZXJmYWNlICsgJywgYnV0IHRoYXQgb2JqZWN0IGhhcyBubyAicHJvdG90eXBlIiBwcm9w
ZXJ0eScpOwotICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoT2JqZWN0LmdldFByb3RvdHlw
ZU9mKHNlbGZbdGhpcy5uYW1lXS5wcm90b3R5cGUpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2VsZltpbmhlcml0X2ludGVyZmFjZV0ucHJvdG90eXBlLAorICAgICAgICAgICAgICAg
IGFzc2VydF9lcXVhbHMoT2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMuZ2V0X2ludGVyZmFjZV9v
YmplY3QoKS5wcm90b3R5cGUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5oZXJp
dF9pbnRlcmZhY2VfaW50ZXJmYWNlX29iamVjdC5wcm90b3R5cGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAncHJvdG90eXBlIG9mICcgKyB0aGlzLm5hbWUgKyAnLnByb3RvdHlwZSBp
cyBub3QgJyArIGluaGVyaXRfaW50ZXJmYWNlICsgJy5wcm90b3R5cGUnKTsKICAgICAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8gV2UgY2FuJ3QgdGVzdCB0aGF0IHdlIGdldCB0
aGUgY29ycmVjdCBvYmplY3QsIGJlY2F1c2UgdGhpcyBpcyB0aGUKICAgICAgICAgICAgICAgICAv
LyBvbmx5IHdheSB0byBnZXQgb3VyIGhhbmRzIG9uIGl0LiBXZSBvbmx5IHRlc3QgdGhhdCBpdHMg
Y2xhc3MKICAgICAgICAgICAgICAgICAvLyBzdHJpbmcsIGF0IGxlYXN0LCBpcyBjb3JyZWN0Lgot
ICAgICAgICAgICAgICAgIGFzc2VydF9jbGFzc19zdHJpbmcoT2JqZWN0LmdldFByb3RvdHlwZU9m
KHNlbGZbdGhpcy5uYW1lXS5wcm90b3R5cGUpLAorICAgICAgICAgICAgICAgIGFzc2VydF9jbGFz
c19zdHJpbmcoT2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMuZ2V0X2ludGVyZmFjZV9vYmplY3Qo
KS5wcm90b3R5cGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5oZXJp
dF9pbnRlcmZhY2UgKyAnUHJvdG90eXBlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdDbGFzcyBuYW1lIGZvciBwcm90b3R5cGUgb2YgJyArIHRoaXMubmFtZSArCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLnByb3RvdHlwZSBpcyBub3QgIicgKyBp
bmhlcml0X2ludGVyZmFjZSArICdQcm90b3R5cGUiJyk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KKworICAgICAgICAvLyAiVGhlIGNsYXNzIHN0cmluZyBvZiBhbiBpbnRlcmZhY2UgcHJvdG90
eXBlIG9iamVjdCBpcyB0aGUKKyAgICAgICAgLy8gY29uY2F0ZW5hdGlvbiBvZiB0aGUgaW50ZXJm
YWNl4oCZcyBxdWFsaWZpZWQgaWRlbnRpZmllciBhbmQgdGhlIHN0cmluZworICAgICAgICAvLyDi
gJxQcm90b3R5cGXigJ0uIgorCisgICAgICAgIC8vIFNraXAgdGhlc2UgdGVzdHMgZm9yIG5vdyBk
dWUgdG8gYSBzcGVjaWZpY2F0aW9uIGlzc3VlIGFib3V0CisgICAgICAgIC8vIHByb3RvdHlwZSBu
YW1lLgorICAgICAgICAvLyBodHRwczovL3d3dy53My5vcmcvQnVncy9QdWJsaWMvc2hvd19idWcu
Y2dpP2lkPTI4MjQ0CisKKyAgICAgICAgLy8gYXNzZXJ0X2NsYXNzX3N0cmluZyh0aGlzLmdldF9p
bnRlcmZhY2Vfb2JqZWN0KCkucHJvdG90eXBlLCB0aGlzLmdldF9xdWFsaWZpZWRfbmFtZSgpICsg
IlByb3RvdHlwZSIsCisgICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgImNsYXNzIHN0cmlu
ZyBvZiAiICsgdGhpcy5uYW1lICsgIi5wcm90b3R5cGUiKTsKKworICAgICAgICAvLyBTdHJpbmco
KSBzaG91bGQgZW5kIHVwIGNhbGxpbmcge30udG9TdHJpbmcgaWYgbm90aGluZyBkZWZpbmVzIGEK
KyAgICAgICAgLy8gc3RyaW5naWZpZXIuCisgICAgICAgIGlmICghdGhpcy5oYXNfc3RyaW5naWZp
ZXIoKSkgeworICAgICAgICAgICAgLy8gYXNzZXJ0X2VxdWFscyhTdHJpbmcodGhpcy5nZXRfaW50
ZXJmYWNlX29iamVjdCgpLnByb3RvdHlwZSksICJbb2JqZWN0ICIgKyB0aGlzLmdldF9xdWFsaWZp
ZWRfbmFtZSgpICsgIlByb3RvdHlwZV0iLAorICAgICAgICAgICAgLy8gICAgICAgICAiU3RyaW5n
KCIgKyB0aGlzLm5hbWUgKyAiLnByb3RvdHlwZSkiKTsKKyAgICAgICAgfQogICAgIH0uYmluZCh0
aGlzKSwgdGhpcy5uYW1lICsgIiBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBv
ZiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCIpOwogCi0gICAgdGVzdChmdW5jdGlvbigpCisg
ICAgLy8gIklmIHRoZSBpbnRlcmZhY2UgaXMgZGVjbGFyZWQgd2l0aCB0aGUgW0dsb2JhbF0KKyAg
ICAvLyBleHRlbmRlZCBhdHRyaWJ1dGUsIG9yIHRoZSBpbnRlcmZhY2UgaXMgaW4gdGhlIHNldCBv
ZiBpbmhlcml0ZWQKKyAgICAvLyBpbnRlcmZhY2VzIGZvciBhbnkgb3RoZXIgaW50ZXJmYWNlIHRo
YXQgaXMgZGVjbGFyZWQgd2l0aCBvbmUgb2YgdGhlc2UKKyAgICAvLyBhdHRyaWJ1dGVzLCB0aGVu
IHRoZSBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCBtdXN0IGJlIGFuIGltbXV0YWJsZQorICAg
IC8vIHByb3RvdHlwZSBleG90aWMgb2JqZWN0LiIKKyAgICAvLyBodHRwczovL2hleWNhbS5naXRo
dWIuaW8vd2ViaWRsLyNpbnRlcmZhY2UtcHJvdG90eXBlLW9iamVjdAorICAgIGlmICh0aGlzLmlz
X2dsb2JhbCgpKSB7CisgICAgICAgIHRoaXMudGVzdF9pbW11dGFibGVfcHJvdG90eXBlKCJpbnRl
cmZhY2UgcHJvdG90eXBlIG9iamVjdCIsIHRoaXMuZ2V0X2ludGVyZmFjZV9vYmplY3QoKS5wcm90
b3R5cGUpOworICAgIH0KKworICAgIHN1YnNldFRlc3RCeUtleSh0aGlzLm5hbWUsIHRlc3QsIGZ1
bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIGlmICh0aGlzLmlzX2NhbGxiYWNrKCkgJiYgIXRoaXMu
aGFzX2NvbnN0YW50cygpKSB7CisgICAgICAgIGlmICghdGhpcy5zaG91bGRfaGF2ZV9pbnRlcmZh
Y2Vfb2JqZWN0KCkpIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAg
IGFzc2VydF9vd25fcHJvcGVydHkoc2VsZiwgdGhpcy5uYW1lLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJzZWxmIGRvZXMgbm90IGhhdmUgb3duIHByb3BlcnR5ICIgKyBmb3JtYXRfdmFs
dWUodGhpcy5uYW1lKSk7CisgICAgICAgIHRoaXMuYXNzZXJ0X2ludGVyZmFjZV9vYmplY3RfZXhp
c3RzKCk7CiAKICAgICAgICAgaWYgKHRoaXMuaXNfY2FsbGJhY2soKSkgewotICAgICAgICAgICAg
YXNzZXJ0X2ZhbHNlKCJwcm90b3R5cGUiIGluIHNlbGZbdGhpcy5uYW1lXSwKKyAgICAgICAgICAg
IGFzc2VydF9mYWxzZSgicHJvdG90eXBlIiBpbiB0aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0KCks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uYW1lICsgJyBzaG91bGQgbm90IGhhdmUg
YSAicHJvdG90eXBlIiBwcm9wZXJ0eScpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKLSAgICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0eShzZWxmW3RoaXMubmFtZV0sICJwcm90b3R5
cGUiLAorICAgICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KHRoaXMuZ2V0X2ludGVyZmFjZV9vYmpl
Y3QoKSwgInByb3RvdHlwZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludGVyZmFj
ZSAiJyArIHRoaXMubmFtZSArICciIGRvZXMgbm90IGhhdmUgb3duIHByb3BlcnR5ICJwcm90b3R5
cGUiJyk7CiAKLSAgICAgICAgLy8gIklmIHRoZSBbTm9JbnRlcmZhY2VPYmplY3RdIGV4dGVuZGVk
IGF0dHJpYnV0ZSB3YXMgbm90IHNwZWNpZmllZCBvbgotICAgICAgICAvLyB0aGUgaW50ZXJmYWNl
LCB0aGVuIHRoZSBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCBtdXN0IGFsc28gaGF2ZSBhCisg
ICAgICAgIC8vICJJZiB0aGUgW0xlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0XSBleHRlbmRlZCBhdHRy
aWJ1dGUgd2FzIG5vdCBzcGVjaWZpZWQKKyAgICAgICAgLy8gb24gdGhlIGludGVyZmFjZSwgdGhl
biB0aGUgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QgbXVzdCBhbHNvIGhhdmUgYQogICAgICAg
ICAvLyBwcm9wZXJ0eSBuYW1lZCDigJxjb25zdHJ1Y3RvcuKAnSB3aXRoIGF0dHJpYnV0ZXMgeyBb
W1dyaXRhYmxlXV06IHRydWUsCiAgICAgICAgIC8vIFtbRW51bWVyYWJsZV1dOiBmYWxzZSwgW1tD
b25maWd1cmFibGVdXTogdHJ1ZSB9IHdob3NlIHZhbHVlIGlzIGEKICAgICAgICAgLy8gcmVmZXJl
bmNlIHRvIHRoZSBpbnRlcmZhY2Ugb2JqZWN0IGZvciB0aGUgaW50ZXJmYWNlLiIKLSAgICAgICAg
YXNzZXJ0X293bl9wcm9wZXJ0eShzZWxmW3RoaXMubmFtZV0ucHJvdG90eXBlLCAiY29uc3RydWN0
b3IiLAorICAgICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KHRoaXMuZ2V0X2ludGVyZmFjZV9vYmpl
Y3QoKS5wcm90b3R5cGUsICJjb25zdHJ1Y3RvciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGhpcy5uYW1lICsgJy5wcm90b3R5cGUgZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVydHkgImNv
bnN0cnVjdG9yIicpOwotICAgICAgICB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3Ioc2VsZlt0aGlzLm5hbWVdLnByb3RvdHlwZSwgImNvbnN0cnVjdG9yIik7Ci0gICAg
ICAgIGFzc2VydF9mYWxzZSgiZ2V0IiBpbiBkZXNjLCB0aGlzLm5hbWUgKyAiLnByb3RvdHlwZS5j
b25zdHJ1Y3RvciBoYXMgZ2V0dGVyIik7Ci0gICAgICAgIGFzc2VydF9mYWxzZSgic2V0IiBpbiBk
ZXNjLCB0aGlzLm5hbWUgKyAiLnByb3RvdHlwZS5jb25zdHJ1Y3RvciBoYXMgc2V0dGVyIik7Ci0g
ICAgICAgIGFzc2VydF90cnVlKGRlc2Mud3JpdGFibGUsIHRoaXMubmFtZSArICIucHJvdG90eXBl
LmNvbnN0cnVjdG9yIGlzIG5vdCB3cml0YWJsZSIpOwotICAgICAgICBhc3NlcnRfZmFsc2UoZGVz
Yy5lbnVtZXJhYmxlLCB0aGlzLm5hbWUgKyAiLnByb3RvdHlwZS5jb25zdHJ1Y3RvciBpcyBlbnVt
ZXJhYmxlIik7Ci0gICAgICAgIGFzc2VydF90cnVlKGRlc2MuY29uZmlndXJhYmxlLCB0aGlzLm5h
bWUgKyAiLnByb3RvdHlwZS5jb25zdHJ1Y3RvciBpbiBub3QgY29uZmlndXJhYmxlIik7Ci0gICAg
ICAgIGFzc2VydF9lcXVhbHMoc2VsZlt0aGlzLm5hbWVdLnByb3RvdHlwZS5jb25zdHJ1Y3Rvciwg
c2VsZlt0aGlzLm5hbWVdLAorICAgICAgICB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IodGhpcy5nZXRfaW50ZXJmYWNlX29iamVjdCgpLnByb3RvdHlwZSwgImNvbnN0
cnVjdG9yIik7CisgICAgICAgIGFzc2VydF9mYWxzZSgiZ2V0IiBpbiBkZXNjLCB0aGlzLm5hbWUg
KyAiLnByb3RvdHlwZS5jb25zdHJ1Y3RvciBzaG91bGQgbm90IGhhdmUgYSBnZXR0ZXIiKTsKKyAg
ICAgICAgYXNzZXJ0X2ZhbHNlKCJzZXQiIGluIGRlc2MsIHRoaXMubmFtZSArICIucHJvdG90eXBl
LmNvbnN0cnVjdG9yIHNob3VsZCBub3QgaGF2ZSBhIHNldHRlciIpOworICAgICAgICBhc3NlcnRf
dHJ1ZShkZXNjLndyaXRhYmxlLCB0aGlzLm5hbWUgKyAiLnByb3RvdHlwZS5jb25zdHJ1Y3RvciBz
aG91bGQgYmUgd3JpdGFibGUiKTsKKyAgICAgICAgYXNzZXJ0X2ZhbHNlKGRlc2MuZW51bWVyYWJs
ZSwgdGhpcy5uYW1lICsgIi5wcm90b3R5cGUuY29uc3RydWN0b3Igc2hvdWxkIG5vdCBiZSBlbnVt
ZXJhYmxlIik7CisgICAgICAgIGFzc2VydF90cnVlKGRlc2MuY29uZmlndXJhYmxlLCB0aGlzLm5h
bWUgKyAiLnByb3RvdHlwZS5jb25zdHJ1Y3RvciBzaG91bGQgYmUgY29uZmlndXJhYmxlIik7Cisg
ICAgICAgIGFzc2VydF9lcXVhbHModGhpcy5nZXRfaW50ZXJmYWNlX29iamVjdCgpLnByb3RvdHlw
ZS5jb25zdHJ1Y3RvciwgdGhpcy5nZXRfaW50ZXJmYWNlX29iamVjdCgpLAogICAgICAgICAgICAg
ICAgICAgICAgIHRoaXMubmFtZSArICcucHJvdG90eXBlLmNvbnN0cnVjdG9yIGlzIG5vdCB0aGUg
c2FtZSBvYmplY3QgYXMgJyArIHRoaXMubmFtZSk7CiAgICAgfS5iaW5kKHRoaXMpLCB0aGlzLm5h
bWUgKyAnIGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFjZSBw
cm90b3R5cGUgb2JqZWN0XCdzICJjb25zdHJ1Y3RvciIgcHJvcGVydHknKTsKKworCisgICAgc3Vi
c2V0VGVzdEJ5S2V5KHRoaXMubmFtZSwgdGVzdCwgZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAg
aWYgKCF0aGlzLnNob3VsZF9oYXZlX2ludGVyZmFjZV9vYmplY3QoKSkgeworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5hc3NlcnRfaW50ZXJmYWNlX29iamVj
dF9leGlzdHMoKTsKKworICAgICAgICBpZiAodGhpcy5pc19jYWxsYmFjaygpKSB7CisgICAgICAg
ICAgICBhc3NlcnRfZmFsc2UoInByb3RvdHlwZSIgaW4gdGhpcy5nZXRfaW50ZXJmYWNlX29iamVj
dCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmFtZSArICcgc2hvdWxkIG5vdCBo
YXZlIGEgInByb3RvdHlwZSIgcHJvcGVydHknKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCisgICAgICAgIGFzc2VydF9vd25fcHJvcGVydHkodGhpcy5nZXRfaW50ZXJmYWNlX29i
amVjdCgpLCAicHJvdG90eXBlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW50ZXJm
YWNlICInICsgdGhpcy5uYW1lICsgJyIgZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVydHkgInByb3Rv
dHlwZSInKTsKKworICAgICAgICAvLyBJZiB0aGUgaW50ZXJmYWNlIGhhcyBhbnkgbWVtYmVyIGRl
Y2xhcmVkIHdpdGggdGhlIFtVbnNjb3BhYmxlXSBleHRlbmRlZAorICAgICAgICAvLyBhdHRyaWJ1
dGUsIHRoZW4gdGhlcmUgbXVzdCBiZSBhIHByb3BlcnR5IG9uIHRoZSBpbnRlcmZhY2UgcHJvdG90
eXBlIG9iamVjdAorICAgICAgICAvLyB3aG9zZSBuYW1lIGlzIHRoZSBAQHVuc2NvcGFibGVzIHN5
bWJvbCwgd2hpY2ggaGFzIHRoZSBhdHRyaWJ1dGVzCisgICAgICAgIC8vIHsgW1tXcml0YWJsZV1d
OiBmYWxzZSwgW1tFbnVtZXJhYmxlXV06IGZhbHNlLCBbW0NvbmZpZ3VyYWJsZV1dOiB0cnVlIH0s
CisgICAgICAgIC8vIGFuZCB3aG9zZSB2YWx1ZSBpcyBhbiBvYmplY3QgY3JlYXRlZCBhcyBmb2xs
b3dzLi4uCisgICAgICAgIHZhciB1bnNjb3BhYmxlcyA9IHRoaXMuZ2V0X3Vuc2NvcGFibGVzKCku
bWFwKG0gPT4gbS5uYW1lKTsKKyAgICAgICAgdmFyIHByb3RvID0gdGhpcy5nZXRfaW50ZXJmYWNl
X29iamVjdCgpLnByb3RvdHlwZTsKKyAgICAgICAgaWYgKHVuc2NvcGFibGVzLmxlbmd0aCAhPSAw
KSB7CisgICAgICAgICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KAorICAgICAgICAgICAgICAgIHBy
b3RvLCBTeW1ib2wudW5zY29wYWJsZXMsCisgICAgICAgICAgICAgICAgdGhpcy5uYW1lICsgJy5w
cm90b3R5cGUgc2hvdWxkIGhhdmUgYW4gQEB1bnNjb3BhYmxlcyBwcm9wZXJ0eScpOworICAgICAg
ICAgICAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHByb3RvLCBT
eW1ib2wudW5zY29wYWJsZXMpOworICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKCJnZXQiIGluIGRl
c2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uYW1lICsgIi5wcm90b3R5cGVbU3lt
Ym9sLnVuc2NvcGFibGVzXSBzaG91bGQgbm90IGhhdmUgYSBnZXR0ZXIiKTsKKyAgICAgICAgICAg
IGFzc2VydF9mYWxzZSgic2V0IiBpbiBkZXNjLCB0aGlzLm5hbWUgKyAiLnByb3RvdHlwZVtTeW1i
b2wudW5zY29wYWJsZXNdIHNob3VsZCBub3QgaGF2ZSBhIHNldHRlciIpOworICAgICAgICAgICAg
YXNzZXJ0X2ZhbHNlKGRlc2Mud3JpdGFibGUsIHRoaXMubmFtZSArICIucHJvdG90eXBlW1N5bWJv
bC51bnNjb3BhYmxlc10gc2hvdWxkIG5vdCBiZSB3cml0YWJsZSIpOworICAgICAgICAgICAgYXNz
ZXJ0X2ZhbHNlKGRlc2MuZW51bWVyYWJsZSwgdGhpcy5uYW1lICsgIi5wcm90b3R5cGVbU3ltYm9s
LnVuc2NvcGFibGVzXSBzaG91bGQgbm90IGJlIGVudW1lcmFibGUiKTsKKyAgICAgICAgICAgIGFz
c2VydF90cnVlKGRlc2MuY29uZmlndXJhYmxlLCB0aGlzLm5hbWUgKyAiLnByb3RvdHlwZVtTeW1i
b2wudW5zY29wYWJsZXNdIHNob3VsZCBiZSBjb25maWd1cmFibGUiKTsKKyAgICAgICAgICAgIGFz
c2VydF9lcXVhbHMoZGVzYy52YWx1ZSwgcHJvdG9bU3ltYm9sLnVuc2NvcGFibGVzXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgdGhpcy5uYW1lICsgJy5wcm90b3R5cGVbU3ltYm9sLnVuc2Nv
cGFibGVzXSBzaG91bGQgYmUgaW4gdGhlIGRlc2NyaXB0b3InKTsKKyAgICAgICAgICAgIGFzc2Vy
dF9lcXVhbHModHlwZW9mIGRlc2MudmFsdWUsICJvYmplY3QiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICB0aGlzLm5hbWUgKyAnLnByb3RvdHlwZVtTeW1ib2wudW5zY29wYWJsZXNdIHNob3Vs
ZCBiZSBhbiBvYmplY3QnKTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoT2JqZWN0LmdldFBy
b3RvdHlwZU9mKGRlc2MudmFsdWUpLCBudWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICB0
aGlzLm5hbWUgKyAnLnByb3RvdHlwZVtTeW1ib2wudW5zY29wYWJsZXNdIHNob3VsZCBoYXZlIGEg
bnVsbCBwcm90b3R5cGUnKTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoT2JqZWN0LmdldE93
blByb3BlcnR5U3ltYm9scyhkZXNjLnZhbHVlKS5sZW5ndGgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmFtZSArICcucHJvdG90
eXBlW1N5bWJvbC51bnNjb3BhYmxlc10gc2hvdWxkIGhhdmUgdGhlIHJpZ2h0IG51bWJlciBvZiBz
eW1ib2wtbmFtZWQgcHJvcGVydGllcycpOworCisgICAgICAgICAgICAvLyBDaGVjayB0aGF0IHdl
IGRvIG5vdCBoYXZlIF9leHRyYV8gdW5zY29wYWJsZXMuICBDaGVja2luZyB0aGF0IHdlCisgICAg
ICAgICAgICAvLyBoYXZlIGFsbCB0aGUgb25lcyB3ZSBzaG91bGQgd2lsbCBoYXBwZW4gaW4gdGhl
IHBlci1tZW1iZXIgdGVzdHMuCisgICAgICAgICAgICB2YXIgb2JzZXJ2ZWQgPSBPYmplY3QuZ2V0
T3duUHJvcGVydHlOYW1lcyhkZXNjLnZhbHVlKTsKKyAgICAgICAgICAgIGZvciAodmFyIHByb3Ag
b2Ygb2JzZXJ2ZWQpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfbm90X2VxdWFscyh1bnNjb3Bh
Ymxlcy5pbmRleE9mKHByb3ApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0x
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmFtZSArICcucHJvdG90
eXBlW1N5bWJvbC51bnNjb3BhYmxlc10gaGFzIHVuZXhwZWN0ZWQgcHJvcGVydHkgIicgKyBwcm9w
ICsgJyInKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGFz
c2VydF9lcXVhbHMoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0aGlzLmdldF9pbnRl
cmZhY2Vfb2JqZWN0KCkucHJvdG90eXBlLCBTeW1ib2wudW5zY29wYWJsZXMpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bmRlZmluZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHRo
aXMubmFtZSArICcucHJvdG90eXBlIHNob3VsZCBub3QgaGF2ZSBAQHVuc2NvcGFibGVzJyk7Cisg
ICAgICAgIH0KKyAgICB9LmJpbmQodGhpcyksIHRoaXMubmFtZSArICcgaW50ZXJmYWNlOiBleGlz
dGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3RcJ3MgQEB1
bnNjb3BhYmxlcyBwcm9wZXJ0eScpOworfTsKKworSWRsSW50ZXJmYWNlLnByb3RvdHlwZS50ZXN0
X2ltbXV0YWJsZV9wcm90b3R5cGUgPSBmdW5jdGlvbih0eXBlLCBvYmopCit7CisgICAgaWYgKHR5
cGVvZiBPYmplY3Quc2V0UHJvdG90eXBlT2YgIT09ICJmdW5jdGlvbiIpIHsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIHN1YnNldFRlc3RCeUtleSh0aGlzLm5hbWUsIHRlc3QsIGZ1bmN0
aW9uKHQpIHsKKyAgICAgICAgdmFyIG9yaWdpbmFsVmFsdWUgPSBPYmplY3QuZ2V0UHJvdG90eXBl
T2Yob2JqKTsKKyAgICAgICAgdmFyIG5ld1ZhbHVlID0gT2JqZWN0LmNyZWF0ZShudWxsKTsKKwor
ICAgICAgICB0LmFkZF9jbGVhbnVwKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdHJ5IHsKKyAg
ICAgICAgICAgICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2JqLCBvcmlnaW5hbFZhbHVlKTsK
KyAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge30KKyAgICAgICAgfSk7CisKKyAgICAgICAgYXNz
ZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgT2JqZWN0
LnNldFByb3RvdHlwZU9mKG9iaiwgbmV3VmFsdWUpOworICAgICAgICB9KTsKKworICAgICAgICBh
c3NlcnRfZXF1YWxzKAorICAgICAgICAgICAgICAgIE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmop
LAorICAgICAgICAgICAgICAgIG9yaWdpbmFsVmFsdWUsCisgICAgICAgICAgICAgICAgIm9yaWdp
bmFsIHZhbHVlIG5vdCBtb2RpZmllZCIKKyAgICAgICAgICAgICk7CisgICAgfS5iaW5kKHRoaXMp
LCB0aGlzLm5hbWUgKyAiIGludGVyZmFjZTogaW50ZXJuYWwgW1tTZXRQcm90b3R5cGVPZl1dIG1l
dGhvZCAiICsKKyAgICAgICAgIm9mICIgKyB0eXBlICsgIiAtIHNldHRpbmcgdG8gYSBuZXcgdmFs
dWUgdmlhIE9iamVjdC5zZXRQcm90b3R5cGVPZiAiICsKKyAgICAgICAgInNob3VsZCB0aHJvdyBh
IFR5cGVFcnJvciIpOworCisgICAgc3Vic2V0VGVzdEJ5S2V5KHRoaXMubmFtZSwgdGVzdCwgZnVu
Y3Rpb24odCkgeworICAgICAgICB2YXIgb3JpZ2luYWxWYWx1ZSA9IE9iamVjdC5nZXRQcm90b3R5
cGVPZihvYmopOworICAgICAgICB2YXIgbmV3VmFsdWUgPSBPYmplY3QuY3JlYXRlKG51bGwpOwor
CisgICAgICAgIHQuYWRkX2NsZWFudXAoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBsZXQgc2V0
dGVyID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcigKKyAgICAgICAgICAgICAgICBP
YmplY3QucHJvdG90eXBlLCAnX19wcm90b19fJworICAgICAgICAgICAgKS5zZXQ7CisKKyAgICAg
ICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgc2V0dGVyLmNhbGwob2JqLCBvcmlnaW5hbFZh
bHVlKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge30KKyAgICAgICAgfSk7CisKKyAgICAg
ICAgLy8gV2UgbmVlZCB0byBmaW5kIHRoZSBhY3R1YWwgc2V0dGVyIGZvciB0aGUgJ19fcHJvdG9f
XycgcHJvcGVydHksIHNvIHdlCisgICAgICAgIC8vIGNhbiBkZXRlcm1pbmUgdGhlIHJpZ2h0IGds
b2JhbCBmb3IgaXQuICBXYWxrIHVwIHRoZSBwcm90b3R5cGUgY2hhaW4KKyAgICAgICAgLy8gbG9v
a2luZyBmb3IgdGhhdCBwcm9wZXJ0eSB1bnRpbCB3ZSBmaW5kIGl0LgorICAgICAgICBsZXQgc2V0
dGVyOworICAgICAgICB7CisgICAgICAgICAgICBsZXQgY3VyID0gb2JqOworICAgICAgICAgICAg
d2hpbGUgKGN1cikgeworICAgICAgICAgICAgICAgIGNvbnN0IGRlc2MgPSBPYmplY3QuZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKGN1ciwgIl9fcHJvdG9fXyIpOworICAgICAgICAgICAgICAgIGlm
IChkZXNjKSB7CisgICAgICAgICAgICAgICAgICAgIHNldHRlciA9IGRlc2Muc2V0OworICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
Y3VyID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKGN1cik7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhnbG9iYWxPZihzZXR0ZXIpLlR5cGVFcnJvciwg
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBvYmouX19wcm90b19fID0gbmV3VmFsdWU7CisgICAg
ICAgIH0pOworCisgICAgICAgIGFzc2VydF9lcXVhbHMoCisgICAgICAgICAgICAgICAgT2JqZWN0
LmdldFByb3RvdHlwZU9mKG9iaiksCisgICAgICAgICAgICAgICAgb3JpZ2luYWxWYWx1ZSwKKyAg
ICAgICAgICAgICAgICAib3JpZ2luYWwgdmFsdWUgbm90IG1vZGlmaWVkIgorICAgICAgICAgICAg
KTsKKyAgICB9LmJpbmQodGhpcyksIHRoaXMubmFtZSArICIgaW50ZXJmYWNlOiBpbnRlcm5hbCBb
W1NldFByb3RvdHlwZU9mXV0gbWV0aG9kICIgKworICAgICAgICAib2YgIiArIHR5cGUgKyAiIC0g
c2V0dGluZyB0byBhIG5ldyB2YWx1ZSB2aWEgX19wcm90b19fICIgKworICAgICAgICAic2hvdWxk
IHRocm93IGEgVHlwZUVycm9yIik7CisKKyAgICBzdWJzZXRUZXN0QnlLZXkodGhpcy5uYW1lLCB0
ZXN0LCBmdW5jdGlvbih0KSB7CisgICAgICAgIHZhciBvcmlnaW5hbFZhbHVlID0gT2JqZWN0Lmdl
dFByb3RvdHlwZU9mKG9iaik7CisgICAgICAgIHZhciBuZXdWYWx1ZSA9IE9iamVjdC5jcmVhdGUo
bnVsbCk7CisKKyAgICAgICAgdC5hZGRfY2xlYW51cChmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
IHRyeSB7CisgICAgICAgICAgICAgICAgUmVmbGVjdC5zZXRQcm90b3R5cGVPZihvYmosIG9yaWdp
bmFsVmFsdWUpOworICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7fQorICAgICAgICB9KTsKKwor
ICAgICAgICBhc3NlcnRfZmFsc2UoUmVmbGVjdC5zZXRQcm90b3R5cGVPZihvYmosIG5ld1ZhbHVl
KSk7CisKKyAgICAgICAgYXNzZXJ0X2VxdWFscygKKyAgICAgICAgICAgICAgICBPYmplY3QuZ2V0
UHJvdG90eXBlT2Yob2JqKSwKKyAgICAgICAgICAgICAgICBvcmlnaW5hbFZhbHVlLAorICAgICAg
ICAgICAgICAgICJvcmlnaW5hbCB2YWx1ZSBub3QgbW9kaWZpZWQiCisgICAgICAgICAgICApOwor
ICAgIH0uYmluZCh0aGlzKSwgdGhpcy5uYW1lICsgIiBpbnRlcmZhY2U6IGludGVybmFsIFtbU2V0
UHJvdG90eXBlT2ZdXSBtZXRob2QgIiArCisgICAgICAgICJvZiAiICsgdHlwZSArICIgLSBzZXR0
aW5nIHRvIGEgbmV3IHZhbHVlIHZpYSBSZWZsZWN0LnNldFByb3RvdHlwZU9mICIgKworICAgICAg
ICAic2hvdWxkIHJldHVybiBmYWxzZSIpOworCisgICAgc3Vic2V0VGVzdEJ5S2V5KHRoaXMubmFt
ZSwgdGVzdCwgZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBvcmlnaW5hbFZhbHVlID0gT2JqZWN0
LmdldFByb3RvdHlwZU9mKG9iaik7CisKKyAgICAgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9i
aiwgb3JpZ2luYWxWYWx1ZSk7CisgICAgfS5iaW5kKHRoaXMpLCB0aGlzLm5hbWUgKyAiIGludGVy
ZmFjZTogaW50ZXJuYWwgW1tTZXRQcm90b3R5cGVPZl1dIG1ldGhvZCAiICsKKyAgICAgICAgIm9m
ICIgKyB0eXBlICsgIiAtIHNldHRpbmcgdG8gaXRzIG9yaWdpbmFsIHZhbHVlIHZpYSBPYmplY3Qu
c2V0UHJvdG90eXBlT2YgIiArCisgICAgICAgICJzaG91bGQgbm90IHRocm93Iik7CisKKyAgICBz
dWJzZXRUZXN0QnlLZXkodGhpcy5uYW1lLCB0ZXN0LCBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFy
IG9yaWdpbmFsVmFsdWUgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqKTsKKworICAgICAgICBv
YmouX19wcm90b19fID0gb3JpZ2luYWxWYWx1ZTsKKyAgICB9LmJpbmQodGhpcyksIHRoaXMubmFt
ZSArICIgaW50ZXJmYWNlOiBpbnRlcm5hbCBbW1NldFByb3RvdHlwZU9mXV0gbWV0aG9kICIgKwor
ICAgICAgICAib2YgIiArIHR5cGUgKyAiIC0gc2V0dGluZyB0byBpdHMgb3JpZ2luYWwgdmFsdWUg
dmlhIF9fcHJvdG9fXyAiICsKKyAgICAgICAgInNob3VsZCBub3QgdGhyb3ciKTsKKworICAgIHN1
YnNldFRlc3RCeUtleSh0aGlzLm5hbWUsIHRlc3QsIGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIg
b3JpZ2luYWxWYWx1ZSA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmopOworCisgICAgICAgIGFz
c2VydF90cnVlKFJlZmxlY3Quc2V0UHJvdG90eXBlT2Yob2JqLCBvcmlnaW5hbFZhbHVlKSk7Cisg
ICAgfS5iaW5kKHRoaXMpLCB0aGlzLm5hbWUgKyAiIGludGVyZmFjZTogaW50ZXJuYWwgW1tTZXRQ
cm90b3R5cGVPZl1dIG1ldGhvZCAiICsKKyAgICAgICAgIm9mICIgKyB0eXBlICsgIiAtIHNldHRp
bmcgdG8gaXRzIG9yaWdpbmFsIHZhbHVlIHZpYSBSZWZsZWN0LnNldFByb3RvdHlwZU9mICIgKwor
ICAgICAgICAic2hvdWxkIHJldHVybiB0cnVlIik7CiB9OwogCi0vL0B9CiBJZGxJbnRlcmZhY2Uu
cHJvdG90eXBlLnRlc3RfbWVtYmVyX2NvbnN0ID0gZnVuY3Rpb24obWVtYmVyKQotLy9Aewogewog
ICAgIGlmICghdGhpcy5oYXNfY29uc3RhbnRzKCkpIHsKLSAgICAgICAgdGhyb3cgIkludGVybmFs
IGVycm9yOiB0ZXN0X21lbWJlcl9jb25zdCBjYWxsZWQgd2l0aG91dCBhbnkgY29uc3RhbnRzIjsK
KyAgICAgICAgdGhyb3cgbmV3IElkbEhhcm5lc3NFcnJvcigiSW50ZXJuYWwgZXJyb3I6IHRlc3Rf
bWVtYmVyX2NvbnN0IGNhbGxlZCB3aXRob3V0IGFueSBjb25zdGFudHMiKTsKICAgICB9CiAKLSAg
ICB0ZXN0KGZ1bmN0aW9uKCkKKyAgICBzdWJzZXRUZXN0QnlLZXkodGhpcy5uYW1lLCB0ZXN0LCBm
dW5jdGlvbigpCiAgICAgewotICAgICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KHNlbGYsIHRoaXMu
bmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2VsZiBkb2VzIG5vdCBoYXZlIG93
biBwcm9wZXJ0eSAiICsgZm9ybWF0X3ZhbHVlKHRoaXMubmFtZSkpOworICAgICAgICB0aGlzLmFz
c2VydF9pbnRlcmZhY2Vfb2JqZWN0X2V4aXN0cygpOwogCiAgICAgICAgIC8vICJGb3IgZWFjaCBj
b25zdGFudCBkZWZpbmVkIG9uIGFuIGludGVyZmFjZSBBLCB0aGVyZSBtdXN0IGJlCiAgICAgICAg
IC8vIGEgY29ycmVzcG9uZGluZyBwcm9wZXJ0eSBvbiB0aGUgaW50ZXJmYWNlIG9iamVjdCwgaWYg
aXQKICAgICAgICAgLy8gZXhpc3RzLiIKLSAgICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0eShzZWxm
W3RoaXMubmFtZV0sIG1lbWJlci5uYW1lKTsKKyAgICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0eSh0
aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0KCksIG1lbWJlci5uYW1lKTsKICAgICAgICAgLy8gIlRo
ZSB2YWx1ZSBvZiB0aGUgcHJvcGVydHkgaXMgdGhhdCB3aGljaCBpcyBvYnRhaW5lZCBieQogICAg
ICAgICAvLyBjb252ZXJ0aW5nIHRoZSBjb25zdGFudOKAmXMgSURMIHZhbHVlIHRvIGFuIEVDTUFT
Y3JpcHQKICAgICAgICAgLy8gdmFsdWUuIgotICAgICAgICBhc3NlcnRfZXF1YWxzKHNlbGZbdGhp
cy5uYW1lXVttZW1iZXIubmFtZV0sIGNvbnN0VmFsdWUobWVtYmVyLnZhbHVlKSwKKyAgICAgICAg
YXNzZXJ0X2VxdWFscyh0aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0KClbbWVtYmVyLm5hbWVdLCBj
b25zdFZhbHVlKG1lbWJlci52YWx1ZSksCiAgICAgICAgICAgICAgICAgICAgICAgInByb3BlcnR5
IGhhcyB3cm9uZyB2YWx1ZSIpOwogICAgICAgICAvLyAiVGhlIHByb3BlcnR5IGhhcyBhdHRyaWJ1
dGVzIHsgW1tXcml0YWJsZV1dOiBmYWxzZSwKICAgICAgICAgLy8gW1tFbnVtZXJhYmxlXV06IHRy
dWUsIFtbQ29uZmlndXJhYmxlXV06IGZhbHNlIH0uIgotICAgICAgICB2YXIgZGVzYyA9IE9iamVj
dC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc2VsZlt0aGlzLm5hbWVdLCBtZW1iZXIubmFtZSk7
Ci0gICAgICAgIGFzc2VydF9mYWxzZSgiZ2V0IiBpbiBkZXNjLCAicHJvcGVydHkgaGFzIGdldHRl
ciIpOwotICAgICAgICBhc3NlcnRfZmFsc2UoInNldCIgaW4gZGVzYywgInByb3BlcnR5IGhhcyBz
ZXR0ZXIiKTsKLSAgICAgICAgYXNzZXJ0X2ZhbHNlKGRlc2Mud3JpdGFibGUsICJwcm9wZXJ0eSBp
cyB3cml0YWJsZSIpOwotICAgICAgICBhc3NlcnRfdHJ1ZShkZXNjLmVudW1lcmFibGUsICJwcm9w
ZXJ0eSBpcyBub3QgZW51bWVyYWJsZSIpOwotICAgICAgICBhc3NlcnRfZmFsc2UoZGVzYy5jb25m
aWd1cmFibGUsICJwcm9wZXJ0eSBpcyBjb25maWd1cmFibGUiKTsKKyAgICAgICAgdmFyIGRlc2Mg
PSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRoaXMuZ2V0X2ludGVyZmFjZV9vYmpl
Y3QoKSwgbWVtYmVyLm5hbWUpOworICAgICAgICBhc3NlcnRfZmFsc2UoImdldCIgaW4gZGVzYywg
InByb3BlcnR5IHNob3VsZCBub3QgaGF2ZSBhIGdldHRlciIpOworICAgICAgICBhc3NlcnRfZmFs
c2UoInNldCIgaW4gZGVzYywgInByb3BlcnR5IHNob3VsZCBub3QgaGF2ZSBhIHNldHRlciIpOwor
ICAgICAgICBhc3NlcnRfZmFsc2UoZGVzYy53cml0YWJsZSwgInByb3BlcnR5IHNob3VsZCBub3Qg
YmUgd3JpdGFibGUiKTsKKyAgICAgICAgYXNzZXJ0X3RydWUoZGVzYy5lbnVtZXJhYmxlLCAicHJv
cGVydHkgc2hvdWxkIGJlIGVudW1lcmFibGUiKTsKKyAgICAgICAgYXNzZXJ0X2ZhbHNlKGRlc2Mu
Y29uZmlndXJhYmxlLCAicHJvcGVydHkgc2hvdWxkIG5vdCBiZSBjb25maWd1cmFibGUiKTsKICAg
ICB9LmJpbmQodGhpcyksIHRoaXMubmFtZSArICIgaW50ZXJmYWNlOiBjb25zdGFudCAiICsgbWVt
YmVyLm5hbWUgKyAiIG9uIGludGVyZmFjZSBvYmplY3QiKTsKIAogICAgIC8vICJJbiBhZGRpdGlv
biwgYSBwcm9wZXJ0eSB3aXRoIHRoZSBzYW1lIGNoYXJhY3RlcmlzdGljcyBtdXN0CiAgICAgLy8g
ZXhpc3Qgb24gdGhlIGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0LiIKLSAgICB0ZXN0KGZ1bmN0
aW9uKCkKKyAgICBzdWJzZXRUZXN0QnlLZXkodGhpcy5uYW1lLCB0ZXN0LCBmdW5jdGlvbigpCiAg
ICAgewotICAgICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KHNlbGYsIHRoaXMubmFtZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAic2VsZiBkb2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0eSAi
ICsgZm9ybWF0X3ZhbHVlKHRoaXMubmFtZSkpOworICAgICAgICB0aGlzLmFzc2VydF9pbnRlcmZh
Y2Vfb2JqZWN0X2V4aXN0cygpOwogCiAgICAgICAgIGlmICh0aGlzLmlzX2NhbGxiYWNrKCkpIHsK
LSAgICAgICAgICAgIGFzc2VydF9mYWxzZSgicHJvdG90eXBlIiBpbiBzZWxmW3RoaXMubmFtZV0s
CisgICAgICAgICAgICBhc3NlcnRfZmFsc2UoInByb3RvdHlwZSIgaW4gdGhpcy5nZXRfaW50ZXJm
YWNlX29iamVjdCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmFtZSArICcgc2hv
dWxkIG5vdCBoYXZlIGEgInByb3RvdHlwZSIgcHJvcGVydHknKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCi0gICAgICAgIGFzc2VydF9vd25fcHJvcGVydHkoc2VsZlt0aGlzLm5h
bWVdLCAicHJvdG90eXBlIiwKKyAgICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0eSh0aGlzLmdldF9p
bnRlcmZhY2Vfb2JqZWN0KCksICJwcm90b3R5cGUiLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdpbnRlcmZhY2UgIicgKyB0aGlzLm5hbWUgKyAnIiBkb2VzIG5vdCBoYXZlIG93biBwcm9w
ZXJ0eSAicHJvdG90eXBlIicpOwogCi0gICAgICAgIGFzc2VydF9vd25fcHJvcGVydHkoc2VsZlt0
aGlzLm5hbWVdLnByb3RvdHlwZSwgbWVtYmVyLm5hbWUpOwotICAgICAgICBhc3NlcnRfZXF1YWxz
KHNlbGZbdGhpcy5uYW1lXS5wcm90b3R5cGVbbWVtYmVyLm5hbWVdLCBjb25zdFZhbHVlKG1lbWJl
ci52YWx1ZSksCisgICAgICAgIGFzc2VydF9vd25fcHJvcGVydHkodGhpcy5nZXRfaW50ZXJmYWNl
X29iamVjdCgpLnByb3RvdHlwZSwgbWVtYmVyLm5hbWUpOworICAgICAgICBhc3NlcnRfZXF1YWxz
KHRoaXMuZ2V0X2ludGVyZmFjZV9vYmplY3QoKS5wcm90b3R5cGVbbWVtYmVyLm5hbWVdLCBjb25z
dFZhbHVlKG1lbWJlci52YWx1ZSksCiAgICAgICAgICAgICAgICAgICAgICAgInByb3BlcnR5IGhh
cyB3cm9uZyB2YWx1ZSIpOwotICAgICAgICB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3Ioc2VsZlt0aGlzLm5hbWVdLCBtZW1iZXIubmFtZSk7Ci0gICAgICAgIGFzc2Vy
dF9mYWxzZSgiZ2V0IiBpbiBkZXNjLCAicHJvcGVydHkgaGFzIGdldHRlciIpOwotICAgICAgICBh
c3NlcnRfZmFsc2UoInNldCIgaW4gZGVzYywgInByb3BlcnR5IGhhcyBzZXR0ZXIiKTsKLSAgICAg
ICAgYXNzZXJ0X2ZhbHNlKGRlc2Mud3JpdGFibGUsICJwcm9wZXJ0eSBpcyB3cml0YWJsZSIpOwot
ICAgICAgICBhc3NlcnRfdHJ1ZShkZXNjLmVudW1lcmFibGUsICJwcm9wZXJ0eSBpcyBub3QgZW51
bWVyYWJsZSIpOwotICAgICAgICBhc3NlcnRfZmFsc2UoZGVzYy5jb25maWd1cmFibGUsICJwcm9w
ZXJ0eSBpcyBjb25maWd1cmFibGUiKTsKKyAgICAgICAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKHRoaXMuZ2V0X2ludGVyZmFjZV9vYmplY3QoKSwgbWVtYmVyLm5h
bWUpOworICAgICAgICBhc3NlcnRfZmFsc2UoImdldCIgaW4gZGVzYywgInByb3BlcnR5IHNob3Vs
ZCBub3QgaGF2ZSBhIGdldHRlciIpOworICAgICAgICBhc3NlcnRfZmFsc2UoInNldCIgaW4gZGVz
YywgInByb3BlcnR5IHNob3VsZCBub3QgaGF2ZSBhIHNldHRlciIpOworICAgICAgICBhc3NlcnRf
ZmFsc2UoZGVzYy53cml0YWJsZSwgInByb3BlcnR5IHNob3VsZCBub3QgYmUgd3JpdGFibGUiKTsK
KyAgICAgICAgYXNzZXJ0X3RydWUoZGVzYy5lbnVtZXJhYmxlLCAicHJvcGVydHkgc2hvdWxkIGJl
IGVudW1lcmFibGUiKTsKKyAgICAgICAgYXNzZXJ0X2ZhbHNlKGRlc2MuY29uZmlndXJhYmxlLCAi
cHJvcGVydHkgc2hvdWxkIG5vdCBiZSBjb25maWd1cmFibGUiKTsKICAgICB9LmJpbmQodGhpcyks
IHRoaXMubmFtZSArICIgaW50ZXJmYWNlOiBjb25zdGFudCAiICsgbWVtYmVyLm5hbWUgKyAiIG9u
IGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0Iik7CiB9OwogCiAKLS8vQH0KIElkbEludGVyZmFj
ZS5wcm90b3R5cGUudGVzdF9tZW1iZXJfYXR0cmlidXRlID0gZnVuY3Rpb24obWVtYmVyKQotLy9A
ewogICB7Ci0gICAgdmFyIGFfdGVzdCA9IGFzeW5jX3Rlc3QodGhpcy5uYW1lICsgIiBpbnRlcmZh
Y2U6IGF0dHJpYnV0ZSAiICsgbWVtYmVyLm5hbWUpOworICAgIGlmICghc2hvdWxkUnVuU3ViVGVz
dCh0aGlzLm5hbWUpKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgdmFyIGFfdGVzdCA9
IHN1YnNldFRlc3RCeUtleSh0aGlzLm5hbWUsIGFzeW5jX3Rlc3QsIHRoaXMubmFtZSArICIgaW50
ZXJmYWNlOiBhdHRyaWJ1dGUgIiArIG1lbWJlci5uYW1lKTsKICAgICBhX3Rlc3Quc3RlcChmdW5j
dGlvbigpCiAgICAgewotICAgICAgICBpZiAodGhpcy5pc19jYWxsYmFjaygpICYmICF0aGlzLmhh
c19jb25zdGFudHMoKSkgewotICAgICAgICAgICAgYV90ZXN0LmRvbmUoKQorICAgICAgICBpZiAo
IXRoaXMuc2hvdWxkX2hhdmVfaW50ZXJmYWNlX29iamVjdCgpKSB7CisgICAgICAgICAgICBhX3Rl
c3QuZG9uZSgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgYXNz
ZXJ0X293bl9wcm9wZXJ0eShzZWxmLCB0aGlzLm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgInNlbGYgZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVydHkgIiArIGZvcm1hdF92YWx1ZSh0
aGlzLm5hbWUpKTsKLSAgICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0eShzZWxmW3RoaXMubmFtZV0s
ICJwcm90b3R5cGUiLAorICAgICAgICB0aGlzLmFzc2VydF9pbnRlcmZhY2Vfb2JqZWN0X2V4aXN0
cygpOworICAgICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KHRoaXMuZ2V0X2ludGVyZmFjZV9vYmpl
Y3QoKSwgInByb3RvdHlwZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludGVyZmFj
ZSAiJyArIHRoaXMubmFtZSArICciIGRvZXMgbm90IGhhdmUgb3duIHByb3BlcnR5ICJwcm90b3R5
cGUiJyk7CiAKLSAgICAgICAgaWYgKG1lbWJlclsic3RhdGljIl0pIHsKLSAgICAgICAgICAgIGFz
c2VydF9vd25fcHJvcGVydHkoc2VsZlt0aGlzLm5hbWVdLCBtZW1iZXIubmFtZSwKKyAgICAgICAg
aWYgKG1lbWJlci5zcGVjaWFsID09PSAic3RhdGljIikgeworICAgICAgICAgICAgYXNzZXJ0X293
bl9wcm9wZXJ0eSh0aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0KCksIG1lbWJlci5uYW1lLAogICAg
ICAgICAgICAgICAgICJUaGUgaW50ZXJmYWNlIG9iamVjdCBtdXN0IGhhdmUgYSBwcm9wZXJ0eSAi
ICsKICAgICAgICAgICAgICAgICBmb3JtYXRfdmFsdWUobWVtYmVyLm5hbWUpKTsKICAgICAgICAg
ICAgIGFfdGVzdC5kb25lKCk7Ci0gICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc19nbG9iYWwoKSkg
eworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5kb19tZW1i
ZXJfdW5zY29wYWJsZV9hc3NlcnRzKG1lbWJlcik7CisKKyAgICAgICAgaWYgKHRoaXMuaXNfZ2xv
YmFsKCkpIHsKICAgICAgICAgICAgIGFzc2VydF9vd25fcHJvcGVydHkoc2VsZiwgbWVtYmVyLm5h
bWUsCiAgICAgICAgICAgICAgICAgIlRoZSBnbG9iYWwgb2JqZWN0IG11c3QgaGF2ZSBhIHByb3Bl
cnR5ICIgKwogICAgICAgICAgICAgICAgIGZvcm1hdF92YWx1ZShtZW1iZXIubmFtZSkpOwotICAg
ICAgICAgICAgYXNzZXJ0X2ZhbHNlKG1lbWJlci5uYW1lIGluIHNlbGZbdGhpcy5uYW1lXS5wcm90
b3R5cGUsCi0gICAgICAgICAgICAgICAgIlRoZSBwcm90b3R5cGUgb2JqZWN0IG11c3Qgbm90IGhh
dmUgYSBwcm9wZXJ0eSAiICsKKyAgICAgICAgICAgIGFzc2VydF9mYWxzZShtZW1iZXIubmFtZSBp
biB0aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0KCkucHJvdG90eXBlLAorICAgICAgICAgICAgICAg
ICJUaGUgcHJvdG90eXBlIG9iamVjdCBzaG91bGQgbm90IGhhdmUgYSBwcm9wZXJ0eSAiICsKICAg
ICAgICAgICAgICAgICBmb3JtYXRfdmFsdWUobWVtYmVyLm5hbWUpKTsKIAogICAgICAgICAgICAg
dmFyIGdldHRlciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc2VsZiwgbWVtYmVy
Lm5hbWUpLmdldDsKQEAgLTExNzQsNjkgKzIxOTIsNjYgQEAgSWRsSW50ZXJmYWNlLnByb3RvdHlw
ZS50ZXN0X21lbWJlcl9hdHRyaWJ1dGUgPSBmdW5jdGlvbihtZW1iZXIpCiAgICAgICAgICAgICAv
LyBzaW5jZSBpdCB3aWxsIGNhbGwgZG9uZSgpIG9uIGFfdGVzdC4KICAgICAgICAgICAgIHRoaXMu
ZG9faW50ZXJmYWNlX2F0dHJpYnV0ZV9hc3NlcnRzKHNlbGYsIG1lbWJlciwgYV90ZXN0KTsKICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGFzc2VydF90cnVlKG1lbWJlci5uYW1lIGluIHNl
bGZbdGhpcy5uYW1lXS5wcm90b3R5cGUsCisgICAgICAgICAgICBhc3NlcnRfdHJ1ZShtZW1iZXIu
bmFtZSBpbiB0aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0KCkucHJvdG90eXBlLAogICAgICAgICAg
ICAgICAgICJUaGUgcHJvdG90eXBlIG9iamVjdCBtdXN0IGhhdmUgYSBwcm9wZXJ0eSAiICsKICAg
ICAgICAgICAgICAgICBmb3JtYXRfdmFsdWUobWVtYmVyLm5hbWUpKTsKIAotICAgICAgICAgICAg
aWYgKCFtZW1iZXIuaGFzX2V4dGVuZGVkX2F0dHJpYnV0ZSgiTGVuaWVudFRoaXMiKSkgeworICAg
ICAgICAgICAgaWYgKCFtZW1iZXIuaGFzX2V4dGVuZGVkX2F0dHJpYnV0ZSgiTGVnYWN5TGVuaWVu
dFRoaXMiKSkgewogICAgICAgICAgICAgICAgIGlmIChtZW1iZXIuaWRsVHlwZS5nZW5lcmljICE9
PSAiUHJvbWlzZSIpIHsKLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlw
ZUVycm9yKCksIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZlt0aGlz
Lm5hbWVdLnByb3RvdHlwZVttZW1iZXIubmFtZV07CisgICAgICAgICAgICAgICAgICAgIC8vIHRo
aXMuZ2V0X2ludGVyZmFjZV9vYmplY3QoKSByZXR1cm5zIGEgdGhpbmcgaW4gb3VyIGdsb2JhbAor
ICAgICAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0KCku
cHJvdG90eXBlW21lbWJlci5uYW1lXTsKICAgICAgICAgICAgICAgICAgICAgfS5iaW5kKHRoaXMp
LCAiZ2V0dGluZyBwcm9wZXJ0eSBvbiBwcm90b3R5cGUgb2JqZWN0IG11c3QgdGhyb3cgVHlwZUVy
cm9yIik7CiAgICAgICAgICAgICAgICAgICAgIC8vIGRvX2ludGVyZmFjZV9hdHRyaWJ1dGVfYXNz
ZXJ0cyBtdXN0IGJlIHRoZSBsYXN0IHRoaW5nIHdlCiAgICAgICAgICAgICAgICAgICAgIC8vIGRv
LCBzaW5jZSBpdCB3aWxsIGNhbGwgZG9uZSgpIG9uIGFfdGVzdC4KLSAgICAgICAgICAgICAgICAg
ICAgdGhpcy5kb19pbnRlcmZhY2VfYXR0cmlidXRlX2Fzc2VydHMoc2VsZlt0aGlzLm5hbWVdLnBy
b3RvdHlwZSwgbWVtYmVyLCBhX3Rlc3QpOworICAgICAgICAgICAgICAgICAgICB0aGlzLmRvX2lu
dGVyZmFjZV9hdHRyaWJ1dGVfYXNzZXJ0cyh0aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0KCkucHJv
dG90eXBlLCBtZW1iZXIsIGFfdGVzdCk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgICAgICAgICAgcHJvbWlzZV9yZWplY3RzKGFfdGVzdCwgbmV3IFR5cGVFcnJvcigpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZlt0aGlzLm5hbWVdLnByb3Rv
dHlwZVttZW1iZXIubmFtZV0pCi0gICAgICAgICAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgICAgICAgICAgcHJvbWlzZV9yZWplY3RzX2pzKGFfdGVzdCwgVHlw
ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRfaW50
ZXJmYWNlX29iamVjdCgpLnByb3RvdHlwZVttZW1iZXIubmFtZV0pCisgICAgICAgICAgICAgICAg
ICAgICAgICAudGhlbihhX3Rlc3Quc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIGRvX2ludGVyZmFjZV9hdHRyaWJ1dGVfYXNzZXJ0cyBtdXN0IGJl
IHRoZSBsYXN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpbmcgd2UgZG8sIHNp
bmNlIGl0IHdpbGwgY2FsbCBkb25lKCkgb24gYV90ZXN0LgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRoaXMuZG9faW50ZXJmYWNlX2F0dHJpYnV0ZV9hc3NlcnRzKHNlbGZbdGhpcy5uYW1l
XS5wcm90b3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kb19pbnRlcmZh
Y2VfYXR0cmlidXRlX2Fzc2VydHModGhpcy5nZXRfaW50ZXJmYWNlX29iamVjdCgpLnByb3RvdHlw
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtZW1iZXIsIGFfdGVzdCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9LmJp
bmQodGhpcykpOworICAgICAgICAgICAgICAgICAgICAgICAgfS5iaW5kKHRoaXMpKSk7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBhc3Nl
cnRfZXF1YWxzKHNlbGZbdGhpcy5uYW1lXS5wcm90b3R5cGVbbWVtYmVyLm5hbWVdLCB1bmRlZmlu
ZWQsCisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh0aGlzLmdldF9pbnRlcmZhY2Vfb2Jq
ZWN0KCkucHJvdG90eXBlW21lbWJlci5uYW1lXSwgdW5kZWZpbmVkLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImdldHRpbmcgcHJvcGVydHkgb24gcHJvdG90eXBlIG9iamVjdCBtdXN0
IHJldHVybiB1bmRlZmluZWQiKTsKICAgICAgICAgICAgICAgLy8gZG9faW50ZXJmYWNlX2F0dHJp
YnV0ZV9hc3NlcnRzIG11c3QgYmUgdGhlIGxhc3QgdGhpbmcgd2UgZG8sCiAgICAgICAgICAgICAg
IC8vIHNpbmNlIGl0IHdpbGwgY2FsbCBkb25lKCkgb24gYV90ZXN0LgotICAgICAgICAgICAgICB0
aGlzLmRvX2ludGVyZmFjZV9hdHRyaWJ1dGVfYXNzZXJ0cyhzZWxmW3RoaXMubmFtZV0ucHJvdG90
eXBlLCBtZW1iZXIsIGFfdGVzdCk7CisgICAgICAgICAgICAgIHRoaXMuZG9faW50ZXJmYWNlX2F0
dHJpYnV0ZV9hc3NlcnRzKHRoaXMuZ2V0X2ludGVyZmFjZV9vYmplY3QoKS5wcm90b3R5cGUsIG1l
bWJlciwgYV90ZXN0KTsKICAgICAgICAgICAgIH0KLQogICAgICAgICB9CiAgICAgfS5iaW5kKHRo
aXMpKTsKIH07CiAKLS8vQH0KIElkbEludGVyZmFjZS5wcm90b3R5cGUudGVzdF9tZW1iZXJfb3Bl
cmF0aW9uID0gZnVuY3Rpb24obWVtYmVyKQotLy9AewogewotICAgIHZhciBhX3Rlc3QgPSBhc3lu
Y190ZXN0KHRoaXMubmFtZSArICIgaW50ZXJmYWNlOiBvcGVyYXRpb24gIiArIG1lbWJlci5uYW1l
ICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKCIgKyBtZW1iZXIuYXJndW1lbnRzLm1h
cCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24obSkge3JldHVybiBt
LmlkbFR5cGUuaWRsVHlwZTsgfSApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKyIpIik7
CisgICAgaWYgKCFzaG91bGRSdW5TdWJUZXN0KHRoaXMubmFtZSkpIHsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICB2YXIgYV90ZXN0ID0gc3Vic2V0VGVzdEJ5S2V5KHRoaXMubmFtZSwgYXN5
bmNfdGVzdCwgdGhpcy5uYW1lICsgIiBpbnRlcmZhY2U6IG9wZXJhdGlvbiAiICsgbWVtYmVyKTsK
ICAgICBhX3Rlc3Quc3RlcChmdW5jdGlvbigpCiAgICAgewogICAgICAgICAvLyBUaGlzIGZ1bmN0
aW9uIHRlc3RzIFdlYklETCBhcyBvZiAyMDE1LTEyLTI5LgogICAgICAgICAvLyBodHRwczovL2hl
eWNhbS5naXRodWIuaW8vd2ViaWRsLyNlcy1vcGVyYXRpb25zCiAKLSAgICAgICAgaWYgKHRoaXMu
aXNfY2FsbGJhY2soKSAmJiAhdGhpcy5oYXNfY29uc3RhbnRzKCkpIHsKKyAgICAgICAgaWYgKCF0
aGlzLnNob3VsZF9oYXZlX2ludGVyZmFjZV9vYmplY3QoKSkgewogICAgICAgICAgICAgYV90ZXN0
LmRvbmUoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGFzc2Vy
dF9vd25fcHJvcGVydHkoc2VsZiwgdGhpcy5uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJzZWxmIGRvZXMgbm90IGhhdmUgb3duIHByb3BlcnR5ICIgKyBmb3JtYXRfdmFsdWUodGhp
cy5uYW1lKSk7CisgICAgICAgIHRoaXMuYXNzZXJ0X2ludGVyZmFjZV9vYmplY3RfZXhpc3RzKCk7
CiAKICAgICAgICAgaWYgKHRoaXMuaXNfY2FsbGJhY2soKSkgewotICAgICAgICAgICAgYXNzZXJ0
X2ZhbHNlKCJwcm90b3R5cGUiIGluIHNlbGZbdGhpcy5uYW1lXSwKKyAgICAgICAgICAgIGFzc2Vy
dF9mYWxzZSgicHJvdG90eXBlIiBpbiB0aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0KCksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgdGhpcy5uYW1lICsgJyBzaG91bGQgbm90IGhhdmUgYSAicHJv
dG90eXBlIiBwcm9wZXJ0eScpOwogICAgICAgICAgICAgYV90ZXN0LmRvbmUoKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGFzc2VydF9vd25fcHJvcGVydHkoc2Vs
Zlt0aGlzLm5hbWVdLCAicHJvdG90eXBlIiwKKyAgICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0eSh0
aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0KCksICJwcm90b3R5cGUiLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdpbnRlcmZhY2UgIicgKyB0aGlzLm5hbWUgKyAnIiBkb2VzIG5vdCBoYXZl
IG93biBwcm9wZXJ0eSAicHJvdG90eXBlIicpOwogCiAgICAgICAgIC8vICJGb3IgZWFjaCB1bmlx
dWUgaWRlbnRpZmllciBvZiBhbiBleHBvc2VkIG9wZXJhdGlvbiBkZWZpbmVkIG9uIHRoZQpAQCAt
MTI1MCwxMiArMjI2NSwxMiBAQCBJZGxJbnRlcmZhY2UucHJvdG90eXBlLnRlc3RfbWVtYmVyX29w
ZXJhdGlvbiA9IGZ1bmN0aW9uKG1lbWJlcikKICAgICAgICAgdmFyIG1lbWJlckhvbGRlck9iamVj
dDsKICAgICAgICAgLy8gIiogSWYgdGhlIG9wZXJhdGlvbiBpcyBzdGF0aWMsIHRoZW4gdGhlIHBy
b3BlcnR5IGV4aXN0cyBvbiB0aGUKICAgICAgICAgLy8gICAgaW50ZXJmYWNlIG9iamVjdC4iCi0g
ICAgICAgIGlmIChtZW1iZXJbInN0YXRpYyJdKSB7Ci0gICAgICAgICAgICBhc3NlcnRfb3duX3By
b3BlcnR5KHNlbGZbdGhpcy5uYW1lXSwgbWVtYmVyLm5hbWUsCisgICAgICAgIGlmIChtZW1iZXIu
c3BlY2lhbCA9PT0gInN0YXRpYyIpIHsKKyAgICAgICAgICAgIGFzc2VydF9vd25fcHJvcGVydHko
dGhpcy5nZXRfaW50ZXJmYWNlX29iamVjdCgpLCBtZW1iZXIubmFtZSwKICAgICAgICAgICAgICAg
ICAgICAgImludGVyZmFjZSBvYmplY3QgbWlzc2luZyBzdGF0aWMgb3BlcmF0aW9uIik7Ci0gICAg
ICAgICAgICBtZW1iZXJIb2xkZXJPYmplY3QgPSBzZWxmW3RoaXMubmFtZV07CisgICAgICAgICAg
ICBtZW1iZXJIb2xkZXJPYmplY3QgPSB0aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0KCk7CiAgICAg
ICAgIC8vICIqIE90aGVyd2lzZSwgWy4uLl0gaWYgdGhlIGludGVyZmFjZSB3YXMgZGVjbGFyZWQg
d2l0aCB0aGUgW0dsb2JhbF0KLSAgICAgICAgLy8gICAgb3IgW1ByaW1hcnlHbG9iYWxdIGV4dGVu
ZGVkIGF0dHJpYnV0ZSwgdGhlbiB0aGUgcHJvcGVydHkgZXhpc3RzCisgICAgICAgIC8vICAgIGV4
dGVuZGVkIGF0dHJpYnV0ZSwgdGhlbiB0aGUgcHJvcGVydHkgZXhpc3RzCiAgICAgICAgIC8vICAg
IG9uIGV2ZXJ5IG9iamVjdCB0aGF0IGltcGxlbWVudHMgdGhlIGludGVyZmFjZS4iCiAgICAgICAg
IH0gZWxzZSBpZiAodGhpcy5pc19nbG9iYWwoKSkgewogICAgICAgICAgICAgYXNzZXJ0X293bl9w
cm9wZXJ0eShzZWxmLCBtZW1iZXIubmFtZSwKQEAgLTEyNjQsMTcgKzIyNzksNDMgQEAgSWRsSW50
ZXJmYWNlLnByb3RvdHlwZS50ZXN0X21lbWJlcl9vcGVyYXRpb24gPSBmdW5jdGlvbihtZW1iZXIp
CiAgICAgICAgIC8vICIqIE90aGVyd2lzZSwgdGhlIHByb3BlcnR5IGV4aXN0cyBzb2xlbHkgb24g
dGhlIGludGVyZmFjZeKAmXMKICAgICAgICAgLy8gICAgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmpl
Y3QuIgogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0eShz
ZWxmW3RoaXMubmFtZV0ucHJvdG90eXBlLCBtZW1iZXIubmFtZSwKKyAgICAgICAgICAgIGFzc2Vy
dF9vd25fcHJvcGVydHkodGhpcy5nZXRfaW50ZXJmYWNlX29iamVjdCgpLnByb3RvdHlwZSwgbWVt
YmVyLm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICJpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVj
dCBtaXNzaW5nIG5vbi1zdGF0aWMgb3BlcmF0aW9uIik7Ci0gICAgICAgICAgICBtZW1iZXJIb2xk
ZXJPYmplY3QgPSBzZWxmW3RoaXMubmFtZV0ucHJvdG90eXBlOworICAgICAgICAgICAgbWVtYmVy
SG9sZGVyT2JqZWN0ID0gdGhpcy5nZXRfaW50ZXJmYWNlX29iamVjdCgpLnByb3RvdHlwZTsKICAg
ICAgICAgfQorICAgICAgICB0aGlzLmRvX21lbWJlcl91bnNjb3BhYmxlX2Fzc2VydHMobWVtYmVy
KTsKICAgICAgICAgdGhpcy5kb19tZW1iZXJfb3BlcmF0aW9uX2Fzc2VydHMobWVtYmVySG9sZGVy
T2JqZWN0LCBtZW1iZXIsIGFfdGVzdCk7CiAgICAgfS5iaW5kKHRoaXMpKTsKIH07CiAKLS8vQH0K
K0lkbEludGVyZmFjZS5wcm90b3R5cGUuZG9fbWVtYmVyX3Vuc2NvcGFibGVfYXNzZXJ0cyA9IGZ1
bmN0aW9uKG1lbWJlcikKK3sKKyAgICAvLyBDaGVjayB0aGF0IGlmIHRoZSBtZW1iZXIgaXMgdW5z
Y29wYWJsZSB0aGVuIGl0J3MgaW4gdGhlCisgICAgLy8gQEB1bnNjb3BhYmxlcyBvYmplY3QgcHJv
cGVybHkuCisgICAgaWYgKCFtZW1iZXIuaXNVbnNjb3BhYmxlKSB7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICB2YXIgdW5zY29wYWJsZXMgPSB0aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0
KCkucHJvdG90eXBlW1N5bWJvbC51bnNjb3BhYmxlc107CisgICAgdmFyIHByb3AgPSBtZW1iZXIu
bmFtZTsKKyAgICB2YXIgcHJvcERlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KHVuc2NvcGFibGVzLCBwcm9wKTsKKyAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBwcm9wRGVzYywg
Im9iamVjdCIsCisgICAgICAgICAgICAgICAgICB0aGlzLm5hbWUgKyAnLnByb3RvdHlwZVtTeW1i
b2wudW5zY29wYWJsZXNdLicgKyBwcm9wICsgJyBtdXN0IGV4aXN0JykKKyAgICBhc3NlcnRfZmFs
c2UoImdldCIgaW4gcHJvcERlc2MsCisgICAgICAgICAgICAgICAgIHRoaXMubmFtZSArICcucHJv
dG90eXBlW1N5bWJvbC51bnNjb3BhYmxlc10uJyArIHByb3AgKyAnIG11c3QgaGF2ZSBubyBnZXR0
ZXInKTsKKyAgICBhc3NlcnRfZmFsc2UoInNldCIgaW4gcHJvcERlc2MsCisgICAgICAgICAgICAg
ICAgIHRoaXMubmFtZSArICcucHJvdG90eXBlW1N5bWJvbC51bnNjb3BhYmxlc10uJyArIHByb3Ag
KyAnIG11c3QgaGF2ZSBubyBzZXR0ZXInKTsKKyAgICBhc3NlcnRfdHJ1ZShwcm9wRGVzYy53cml0
YWJsZSwKKyAgICAgICAgICAgICAgICB0aGlzLm5hbWUgKyAnLnByb3RvdHlwZVtTeW1ib2wudW5z
Y29wYWJsZXNdLicgKyBwcm9wICsgJyBtdXN0IGJlIHdyaXRhYmxlJyk7CisgICAgYXNzZXJ0X3Ry
dWUocHJvcERlc2MuZW51bWVyYWJsZSwKKyAgICAgICAgICAgICAgICB0aGlzLm5hbWUgKyAnLnBy
b3RvdHlwZVtTeW1ib2wudW5zY29wYWJsZXNdLicgKyBwcm9wICsgJyBtdXN0IGJlIGVudW1lcmFi
bGUnKTsKKyAgICBhc3NlcnRfdHJ1ZShwcm9wRGVzYy5jb25maWd1cmFibGUsCisgICAgICAgICAg
ICAgICAgdGhpcy5uYW1lICsgJy5wcm90b3R5cGVbU3ltYm9sLnVuc2NvcGFibGVzXS4nICsgcHJv
cCArICcgbXVzdCBiZSBjb25maWd1cmFibGUnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHByb3BEZXNj
LnZhbHVlLCB0cnVlLAorICAgICAgICAgICAgICAgICAgdGhpcy5uYW1lICsgJy5wcm90b3R5cGVb
U3ltYm9sLnVuc2NvcGFibGVzXS4nICsgcHJvcCArICcgbXVzdCBoYXZlIHRoZSB2YWx1ZSBgdHJ1
ZWAnKTsKK307CisKIElkbEludGVyZmFjZS5wcm90b3R5cGUuZG9fbWVtYmVyX29wZXJhdGlvbl9h
c3NlcnRzID0gZnVuY3Rpb24obWVtYmVySG9sZGVyT2JqZWN0LCBtZW1iZXIsIGFfdGVzdCkKLS8v
QHsKIHsKICAgICB2YXIgZG9uZSA9IGFfdGVzdC5kb25lLmJpbmQoYV90ZXN0KTsKICAgICB2YXIg
b3BlcmF0aW9uVW5mb3JnZWFibGUgPSBtZW1iZXIuaXNVbmZvcmdlYWJsZTsKQEAgLTEyODIsMjcg
KzIzMjMsMjkgQEAgSWRsSW50ZXJmYWNlLnByb3RvdHlwZS5kb19tZW1iZXJfb3BlcmF0aW9uX2Fz
c2VydHMgPSBmdW5jdGlvbihtZW1iZXJIb2xkZXJPYmplY3QKICAgICAvLyAiVGhlIHByb3BlcnR5
IGhhcyBhdHRyaWJ1dGVzIHsgW1tXcml0YWJsZV1dOiBCLAogICAgIC8vIFtbRW51bWVyYWJsZV1d
OiB0cnVlLCBbW0NvbmZpZ3VyYWJsZV1dOiBCIH0sIHdoZXJlIEIgaXMgZmFsc2UgaWYgdGhlCiAg
ICAgLy8gb3BlcmF0aW9uIGlzIHVuZm9yZ2VhYmxlIG9uIHRoZSBpbnRlcmZhY2UsIGFuZCB0cnVl
IG90aGVyd2lzZSIuCi0gICAgYXNzZXJ0X2ZhbHNlKCJnZXQiIGluIGRlc2MsICJwcm9wZXJ0eSBo
YXMgZ2V0dGVyIik7Ci0gICAgYXNzZXJ0X2ZhbHNlKCJzZXQiIGluIGRlc2MsICJwcm9wZXJ0eSBo
YXMgc2V0dGVyIik7CisgICAgYXNzZXJ0X2ZhbHNlKCJnZXQiIGluIGRlc2MsICJwcm9wZXJ0eSBz
aG91bGQgbm90IGhhdmUgYSBnZXR0ZXIiKTsKKyAgICBhc3NlcnRfZmFsc2UoInNldCIgaW4gZGVz
YywgInByb3BlcnR5IHNob3VsZCBub3QgaGF2ZSBhIHNldHRlciIpOwogICAgIGFzc2VydF9lcXVh
bHMoZGVzYy53cml0YWJsZSwgIW9wZXJhdGlvblVuZm9yZ2VhYmxlLAogICAgICAgICAgICAgICAg
ICAgInByb3BlcnR5IHNob3VsZCBiZSB3cml0YWJsZSBpZiBhbmQgb25seSBpZiBub3QgdW5mb3Jn
ZWFibGUiKTsKLSAgICBhc3NlcnRfdHJ1ZShkZXNjLmVudW1lcmFibGUsICJwcm9wZXJ0eSBpcyBu
b3QgZW51bWVyYWJsZSIpOworICAgIGFzc2VydF90cnVlKGRlc2MuZW51bWVyYWJsZSwgInByb3Bl
cnR5IHNob3VsZCBiZSBlbnVtZXJhYmxlIik7CiAgICAgYXNzZXJ0X2VxdWFscyhkZXNjLmNvbmZp
Z3VyYWJsZSwgIW9wZXJhdGlvblVuZm9yZ2VhYmxlLAogICAgICAgICAgICAgICAgICAgInByb3Bl
cnR5IHNob3VsZCBiZSBjb25maWd1cmFibGUgaWYgYW5kIG9ubHkgaWYgbm90IHVuZm9yZ2VhYmxl
Iik7CiAgICAgLy8gIlRoZSB2YWx1ZSBvZiB0aGUgcHJvcGVydHkgaXMgYSBGdW5jdGlvbiBvYmpl
Y3Qgd2hvc2UKICAgICAvLyBiZWhhdmlvciBpcyBhcyBmb2xsb3dzIC4gLiAuIgogICAgIGFzc2Vy
dF9lcXVhbHModHlwZW9mIG1lbWJlckhvbGRlck9iamVjdFttZW1iZXIubmFtZV0sICJmdW5jdGlv
biIsCiAgICAgICAgICAgICAgICAgICAicHJvcGVydHkgbXVzdCBiZSBhIGZ1bmN0aW9uIik7Ci0g
ICAgLy8gIlRoZSB2YWx1ZSBvZiB0aGUgRnVuY3Rpb24gb2JqZWN04oCZcyDigJxsZW5ndGjigJ0g
cHJvcGVydHkgaXMKLSAgICAvLyBhIE51bWJlciBkZXRlcm1pbmVkIGFzIGZvbGxvd3M6Ci0gICAg
Ly8gIi4gLiAuCi0gICAgLy8gIlJldHVybiB0aGUgbGVuZ3RoIG9mIHRoZSBzaG9ydGVzdCBhcmd1
bWVudCBsaXN0IG9mIHRoZQotICAgIC8vIGVudHJpZXMgaW4gUy4iCi0gICAgYXNzZXJ0X2VxdWFs
cyhtZW1iZXJIb2xkZXJPYmplY3RbbWVtYmVyLm5hbWVdLmxlbmd0aCwKLSAgICAgICAgbWluT3Zl
cmxvYWRMZW5ndGgodGhpcy5tZW1iZXJzLmZpbHRlcihmdW5jdGlvbihtKSB7Ci0gICAgICAgICAg
ICByZXR1cm4gbS50eXBlID09ICJvcGVyYXRpb24iICYmIG0ubmFtZSA9PSBtZW1iZXIubmFtZTsK
LSAgICAgICAgfSkpLAorCisgICAgY29uc3QgY3RvcnMgPSB0aGlzLm1lbWJlcnMuZmlsdGVyKGZ1
bmN0aW9uKG0pIHsKKyAgICAgICAgcmV0dXJuIG0udHlwZSA9PSAib3BlcmF0aW9uIiAmJiBtLm5h
bWUgPT0gbWVtYmVyLm5hbWU7CisgICAgfSk7CisgICAgYXNzZXJ0X2VxdWFscygKKyAgICAgICAg
bWVtYmVySG9sZGVyT2JqZWN0W21lbWJlci5uYW1lXS5sZW5ndGgsCisgICAgICAgIG1pbk92ZXJs
b2FkTGVuZ3RoKGN0b3JzKSwKICAgICAgICAgInByb3BlcnR5IGhhcyB3cm9uZyAubGVuZ3RoIik7
CisgICAgYXNzZXJ0X2VxdWFscygKKyAgICAgICAgbWVtYmVySG9sZGVyT2JqZWN0W21lbWJlci5u
YW1lXS5uYW1lLAorICAgICAgICBtZW1iZXIubmFtZSwKKyAgICAgICAgInByb3BlcnR5IGhhcyB3
cm9uZyAubmFtZSIpOwogCiAgICAgLy8gTWFrZSBzb21lIHN1aXRhYmxlIGFyZ3VtZW50cwogICAg
IHZhciBhcmdzID0gbWVtYmVyLmFyZ3VtZW50cy5tYXAoZnVuY3Rpb24oYXJnKSB7CkBAIC0xMzE5
LDcgKzIzNjIsNyBAQCBJZGxJbnRlcmZhY2UucHJvdG90eXBlLmRvX21lbWJlcl9vcGVyYXRpb25f
YXNzZXJ0cyA9IGZ1bmN0aW9uKG1lbWJlckhvbGRlck9iamVjdAogICAgIC8vIGNoZWNrIGZvciBn
bG9iYWxzLCBzaW5jZSBvdGhlcndpc2Ugd2UnbGwgaW52b2tlIHdpbmRvdy5jbG9zZSgpLiAgQW5k
IHdlCiAgICAgLy8gaGF2ZSB0byBza2lwIHRoaXMgdGVzdCBmb3IgYW55dGhpbmcgdGhhdCBvbiB0
aGUgcHJvdG8gY2hhaW4gb2YgInNlbGYiLAogICAgIC8vIHNpbmNlIHRoYXQgZG9lcyBpbiBmYWN0
IGhhdmUgaW1wbGljaXQtdGhpcyBiZWhhdmlvci4KLSAgICBpZiAoIW1lbWJlclsic3RhdGljIl0p
IHsKKyAgICBpZiAobWVtYmVyLnNwZWNpYWwgIT09ICJzdGF0aWMiKSB7CiAgICAgICAgIHZhciBj
YjsKICAgICAgICAgaWYgKCF0aGlzLmlzX2dsb2JhbCgpICYmCiAgICAgICAgICAgICBtZW1iZXJI
b2xkZXJPYmplY3RbbWVtYmVyLm5hbWVdICE9IHNlbGZbbWVtYmVyLm5hbWVdKQpAQCAtMTM0Myw3
MSArMjM4NiwxMjIgQEAgSWRsSW50ZXJmYWNlLnByb3RvdHlwZS5kb19tZW1iZXJfb3BlcmF0aW9u
X2Fzc2VydHMgPSBmdW5jdGlvbihtZW1iZXJIb2xkZXJPYmplY3QKICAgICB9CiB9CiAKLS8vQH0K
LUlkbEludGVyZmFjZS5wcm90b3R5cGUuYWRkX2l0ZXJhYmxlX21lbWJlcnMgPSBmdW5jdGlvbiht
ZW1iZXIpCi0vL0B7Ci17Ci0gICAgdGhpcy5tZW1iZXJzLnB1c2goe3R5cGU6ICJvcGVyYXRpb24i
LCBuYW1lOiAiZW50cmllcyIsIGlkbFR5cGU6ICJpdGVyYXRvciIsIGFyZ3VtZW50czogW119KTsK
LSAgICB0aGlzLm1lbWJlcnMucHVzaCh7dHlwZTogIm9wZXJhdGlvbiIsIG5hbWU6ICJrZXlzIiwg
aWRsVHlwZTogIml0ZXJhdG9yIiwgYXJndW1lbnRzOiBbXX0pOwotICAgIHRoaXMubWVtYmVycy5w
dXNoKHt0eXBlOiAib3BlcmF0aW9uIiwgbmFtZTogInZhbHVlcyIsIGlkbFR5cGU6ICJpdGVyYXRv
ciIsIGFyZ3VtZW50czogW119KTsKLSAgICB0aGlzLm1lbWJlcnMucHVzaCh7dHlwZTogIm9wZXJh
dGlvbiIsIG5hbWU6ICJmb3JFYWNoIiwgaWRsVHlwZTogInZvaWQiLCBhcmd1bWVudHM6Ci0gICAg
ICAgIFt7IG5hbWU6ICJjYWxsYmFjayIsIGlkbFR5cGU6IHtpZGxUeXBlOiAiZnVuY3Rpb24ifX0s
Ci0gICAgICAgIHsgbmFtZTogInRoaXNWYWx1ZSIsIGlkbFR5cGU6IHtpZGxUeXBlOiAiYW55In0s
IG9wdGlvbmFsOiB0cnVlfV19KTsKK0lkbEludGVyZmFjZS5wcm90b3R5cGUudGVzdF90b19qc29u
X29wZXJhdGlvbiA9IGZ1bmN0aW9uKGRlc2MsIG1lbWJlckhvbGRlck9iamVjdCwgbWVtYmVyKSB7
CisgICAgdmFyIGluc3RhbmNlTmFtZSA9IG1lbWJlckhvbGRlck9iamVjdCAmJiBtZW1iZXJIb2xk
ZXJPYmplY3QuY29uc3RydWN0b3IubmFtZQorICAgICAgICB8fCBtZW1iZXIubmFtZSArICIgb2Jq
ZWN0IjsKKyAgICBpZiAobWVtYmVyLmhhc19leHRlbmRlZF9hdHRyaWJ1dGUoIkRlZmF1bHQiKSkg
eworICAgICAgICBzdWJzZXRUZXN0QnlLZXkodGhpcy5uYW1lLCB0ZXN0LCBmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgIHZhciBtYXAgPSB0aGlzLmRlZmF1bHRfdG9fanNvbl9vcGVyYXRpb24oKTsK
KyAgICAgICAgICAgIHZhciBqc29uID0gbWVtYmVySG9sZGVyT2JqZWN0LnRvSlNPTigpOworICAg
ICAgICAgICAgbWFwLmZvckVhY2goZnVuY3Rpb24odHlwZSwgaykgeworICAgICAgICAgICAgICAg
IGFzc2VydF90cnVlKGsgaW4ganNvbiwgInByb3BlcnR5ICIgKyBKU09OLnN0cmluZ2lmeShrKSAr
ICIgc2hvdWxkIGJlIHByZXNlbnQgaW4gdGhlIG91dHB1dCBvZiAiICsgdGhpcy5uYW1lICsgIi5w
cm90b3R5cGUudG9KU09OKCkiKTsKKyAgICAgICAgICAgICAgICB2YXIgZGVzY3JpcHRvciA9IE9i
amVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoanNvbiwgayk7CisgICAgICAgICAgICAgICAg
YXNzZXJ0X3RydWUoZGVzY3JpcHRvci53cml0YWJsZSwgInByb3BlcnR5ICIgKyBrICsgIiBzaG91
bGQgYmUgd3JpdGFibGUiKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfdHJ1ZShkZXNjcmlwdG9y
LmNvbmZpZ3VyYWJsZSwgInByb3BlcnR5ICIgKyBrICsgIiBzaG91bGQgYmUgY29uZmlndXJhYmxl
Iik7CisgICAgICAgICAgICAgICAgYXNzZXJ0X3RydWUoZGVzY3JpcHRvci5lbnVtZXJhYmxlLCAi
cHJvcGVydHkgIiArIGsgKyAiIHNob3VsZCBiZSBlbnVtZXJhYmxlIik7CisgICAgICAgICAgICAg
ICAgdGhpcy5hcnJheS5hc3NlcnRfdHlwZV9pcyhqc29uW2tdLCB0eXBlKTsKKyAgICAgICAgICAg
ICAgICBkZWxldGUganNvbltrXTsKKyAgICAgICAgICAgIH0sIHRoaXMpOworICAgICAgICB9LmJp
bmQodGhpcyksIHRoaXMubmFtZSArICIgaW50ZXJmYWNlOiBkZWZhdWx0IHRvSlNPTiBvcGVyYXRp
b24gb24gIiArIGRlc2MpOworICAgIH0gZWxzZSB7CisgICAgICAgIHN1YnNldFRlc3RCeUtleSh0
aGlzLm5hbWUsIHRlc3QsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYXNzZXJ0X3RydWUodGhp
cy5hcnJheS5pc19qc29uX3R5cGUobWVtYmVyLmlkbFR5cGUpLCBKU09OLnN0cmluZ2lmeShtZW1i
ZXIuaWRsVHlwZSkgKyAiIGlzIG5vdCBhbiBhcHByb3ByaWF0ZSByZXR1cm4gdmFsdWUgZm9yIHRo
ZSB0b0pTT04gb3BlcmF0aW9uIG9mICIgKyBpbnN0YW5jZU5hbWUpOworICAgICAgICAgICAgdGhp
cy5hcnJheS5hc3NlcnRfdHlwZV9pcyhtZW1iZXJIb2xkZXJPYmplY3QudG9KU09OKCksIG1lbWJl
ci5pZGxUeXBlKTsKKyAgICAgICAgfS5iaW5kKHRoaXMpLCB0aGlzLm5hbWUgKyAiIGludGVyZmFj
ZTogdG9KU09OIG9wZXJhdGlvbiBvbiAiICsgZGVzYyk7CisgICAgfQogfTsKIAotLy9AfQogSWRs
SW50ZXJmYWNlLnByb3RvdHlwZS50ZXN0X21lbWJlcl9pdGVyYWJsZSA9IGZ1bmN0aW9uKG1lbWJl
cikKLS8vQHsKIHsKLSAgICB2YXIgaW50ZXJmYWNlTmFtZSA9IHRoaXMubmFtZTsKLSAgICB2YXIg
aXNQYWlySXRlcmF0b3IgPSBtZW1iZXIuaWRsVHlwZSBpbnN0YW5jZW9mIEFycmF5OwotICAgIHRl
c3QoZnVuY3Rpb24oKQorICAgIHN1YnNldFRlc3RCeUtleSh0aGlzLm5hbWUsIHRlc3QsIGZ1bmN0
aW9uKCkKICAgICB7Ci0gICAgICAgIHZhciBkZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihzZWxmW2ludGVyZmFjZU5hbWVdLnByb3RvdHlwZSwgU3ltYm9sLml0ZXJh
dG9yKTsKLSAgICAgICAgYXNzZXJ0X3RydWUoZGVzY3JpcHRvci53cml0YWJsZSwgInByb3BlcnR5
IGlzIG5vdCB3cml0YWJsZSIpOwotICAgICAgICBhc3NlcnRfdHJ1ZShkZXNjcmlwdG9yLmNvbmZp
Z3VyYWJsZSwgInByb3BlcnR5IGlzIG5vdCBjb25maWd1cmFibGUiKTsKLSAgICAgICAgYXNzZXJ0
X2ZhbHNlKGRlc2NyaXB0b3IuZW51bWVyYWJsZSwgInByb3BlcnR5IGlzIGVudW1lcmFibGUiKTsK
LSAgICAgICAgYXNzZXJ0X2VxdWFscyhzZWxmW2ludGVyZmFjZU5hbWVdLnByb3RvdHlwZVtTeW1i
b2wuaXRlcmF0b3JdLm5hbWUsIGlzUGFpckl0ZXJhdG9yID8gImVudHJpZXMiIDogInZhbHVlcyIs
ICJAQGl0ZXJhdG9yIGZ1bmN0aW9uIGRvZXMgbm90IGhhdmUgdGhlIHJpZ2h0IG5hbWUiKTsKLSAg
ICB9LCAiVGVzdGluZyBTeW1ib2wuaXRlcmF0b3IgcHJvcGVydHkgb2YgaXRlcmFibGUgaW50ZXJm
YWNlICIgKyBpbnRlcmZhY2VOYW1lKTsKLQotICAgIGlmIChpc1BhaXJJdGVyYXRvcikgewotICAg
ICAgICB0ZXN0KGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhzZWxmW2lu
dGVyZmFjZU5hbWVdLnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdLCBzZWxmW2ludGVyZmFjZU5h
bWVdLnByb3RvdHlwZVsiZW50cmllcyJdLCAiZW50cmllcyBtZXRob2QgaXMgbm90IHRoZSBzYW1l
IGFzIEBAaXRlcmF0b3IiKTsKLSAgICAgICAgfSwgIlRlc3RpbmcgcGFpciBpdGVyYWJsZSBpbnRl
cmZhY2UgIiArIGludGVyZmFjZU5hbWUpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHRlc3QoZnVu
Y3Rpb24oKSB7Ci0gICAgICAgICAgICBbImVudHJpZXMiLCAia2V5cyIsICJ2YWx1ZXMiLCAiZm9y
RWFjaCIsIFN5bWJvbC5JdGVyYXRvcl0uZm9yRWFjaChmdW5jdGlvbihwcm9wZXJ0eSkgewotICAg
ICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoc2VsZltpbnRlcmZhY2VOYW1lXS5wcm90b3R5cGVb
cHJvcGVydHldLCBBcnJheS5wcm90b3R5cGVbcHJvcGVydHldLCBwcm9wZXJ0eSArICIgZnVuY3Rp
b24gaXMgbm90IHRoZSBzYW1lIGFzIEFycmF5IG9uZSIpOworICAgICAgICB2YXIgaXNQYWlySXRl
cmF0b3IgPSBtZW1iZXIuaWRsVHlwZS5sZW5ndGggPT09IDI7CisgICAgICAgIHZhciBwcm90byA9
IHRoaXMuZ2V0X2ludGVyZmFjZV9vYmplY3QoKS5wcm90b3R5cGU7CisgICAgICAgIHZhciBpdGVy
YXRvckRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHByb3RvLCBTeW1ib2wu
aXRlcmF0b3IpOworCisgICAgICAgIGFzc2VydF90cnVlKGl0ZXJhdG9yRGVzYy53cml0YWJsZSwg
IkBAaXRlcmF0b3IgcHJvcGVydHkgc2hvdWxkIGJlIHdyaXRhYmxlIik7CisgICAgICAgIGFzc2Vy
dF90cnVlKGl0ZXJhdG9yRGVzYy5jb25maWd1cmFibGUsICJAQGl0ZXJhdG9yIHByb3BlcnR5IHNo
b3VsZCBiZSBjb25maWd1cmFibGUiKTsKKyAgICAgICAgYXNzZXJ0X2ZhbHNlKGl0ZXJhdG9yRGVz
Yy5lbnVtZXJhYmxlLCAiQEBpdGVyYXRvciBwcm9wZXJ0eSBzaG91bGQgbm90IGJlIGVudW1lcmFi
bGUiKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgaXRlcmF0b3JEZXNjLnZhbHVlLCAi
ZnVuY3Rpb24iLCAiQEBpdGVyYXRvciBwcm9wZXJ0eSBzaG91bGQgYmUgYSBmdW5jdGlvbiIpOwor
ICAgICAgICBhc3NlcnRfZXF1YWxzKGl0ZXJhdG9yRGVzYy52YWx1ZS5sZW5ndGgsIDAsICJAQGl0
ZXJhdG9yIGZ1bmN0aW9uIG9iamVjdCBsZW5ndGggc2hvdWxkIGJlIDAiKTsKKyAgICAgICAgYXNz
ZXJ0X2VxdWFscyhpdGVyYXRvckRlc2MudmFsdWUubmFtZSwgaXNQYWlySXRlcmF0b3IgPyAiZW50
cmllcyIgOiAidmFsdWVzIiwgIkBAaXRlcmF0b3IgZnVuY3Rpb24gb2JqZWN0IHNob3VsZCBoYXZl
IHRoZSByaWdodCBuYW1lIik7CisKKyAgICAgICAgaWYgKGlzUGFpckl0ZXJhdG9yKSB7CisgICAg
ICAgICAgICBhc3NlcnRfZXF1YWxzKHByb3RvWyJlbnRyaWVzIl0sIHByb3RvW1N5bWJvbC5pdGVy
YXRvcl0sICJlbnRyaWVzIG1ldGhvZCBzaG91bGQgYmUgdGhlIHNhbWUgYXMgQEBpdGVyYXRvciBt
ZXRob2QiKTsKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICBbImVudHJpZXMiLCAwXSwK
KyAgICAgICAgICAgICAgICBbImtleXMiLCAwXSwKKyAgICAgICAgICAgICAgICBbInZhbHVlcyIs
IDBdLAorICAgICAgICAgICAgICAgIFsiZm9yRWFjaCIsIDFdCisgICAgICAgICAgICBdLmZvckVh
Y2goKFtwcm9wZXJ0eSwgbGVuZ3RoXSkgPT4geworICAgICAgICAgICAgICAgIHZhciBkZXNjID0g
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihwcm90bywgcHJvcGVydHkpOworICAgICAg
ICAgICAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIGRlc2MudmFsdWUsICJmdW5jdGlvbiIsIHBy
b3BlcnR5ICsgIiBwcm9wZXJ0eSBzaG91bGQgYmUgYSBmdW5jdGlvbiIpOworICAgICAgICAgICAg
ICAgIGFzc2VydF9lcXVhbHMoZGVzYy52YWx1ZS5sZW5ndGgsIGxlbmd0aCwgcHJvcGVydHkgKyAi
IGZ1bmN0aW9uIG9iamVjdCBsZW5ndGggc2hvdWxkIGJlICIgKyBsZW5ndGgpOworICAgICAgICAg
ICAgICAgIGFzc2VydF9lcXVhbHMoZGVzYy52YWx1ZS5uYW1lLCBwcm9wZXJ0eSwgcHJvcGVydHkg
KyAiIGZ1bmN0aW9uIG9iamVjdCBzaG91bGQgaGF2ZSB0aGUgcmlnaHQgbmFtZSIpOwogICAgICAg
ICAgICAgfSk7Ci0gICAgICAgIH0sICJUZXN0aW5nIHZhbHVlIGl0ZXJhYmxlIGludGVyZmFjZSAi
ICsgaW50ZXJmYWNlTmFtZSk7Ci0gICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
YXNzZXJ0X2VxdWFscyhwcm90b1tTeW1ib2wuaXRlcmF0b3JdLCBBcnJheS5wcm90b3R5cGVbU3lt
Ym9sLml0ZXJhdG9yXSwgIkBAaXRlcmF0b3IgbWV0aG9kIHNob3VsZCBiZSB0aGUgc2FtZSBhcyBB
cnJheSBwcm90b3R5cGUncyIpOworICAgICAgICAgICAgWyJlbnRyaWVzIiwgImtleXMiLCAidmFs
dWVzIiwgImZvckVhY2giLCBTeW1ib2wuaXRlcmF0b3JdLmZvckVhY2gocHJvcGVydHkgPT4gewor
ICAgICAgICAgICAgICAgIHZhciBwcm9wZXJ0eU5hbWUgPSBwcm9wZXJ0eSA9PT0gU3ltYm9sLml0
ZXJhdG9yID8gIkBAaXRlcmF0b3IiIDogcHJvcGVydHk7CisgICAgICAgICAgICAgICAgYXNzZXJ0
X2VxdWFscyhwcm90b1twcm9wZXJ0eV0sIEFycmF5LnByb3RvdHlwZVtwcm9wZXJ0eV0sIHByb3Bl
cnR5TmFtZSArICIgbWV0aG9kIHNob3VsZCBiZSB0aGUgc2FtZSBhcyBBcnJheSBwcm90b3R5cGUn
cyIpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICB9LmJpbmQodGhpcyksIHRoaXMu
bmFtZSArICIgaW50ZXJmYWNlOiBpdGVyYWJsZTwiICsgbWVtYmVyLmlkbFR5cGUubWFwKGZ1bmN0
aW9uKHQpIHsgcmV0dXJuIHQuaWRsVHlwZTsgfSkuam9pbigiLCAiKSArICI+Iik7Cit9OworCitJ
ZGxJbnRlcmZhY2UucHJvdG90eXBlLnRlc3RfbWVtYmVyX2FzeW5jX2l0ZXJhYmxlID0gZnVuY3Rp
b24obWVtYmVyKQoreworICAgIHN1YnNldFRlc3RCeUtleSh0aGlzLm5hbWUsIHRlc3QsIGZ1bmN0
aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBpc1BhaXJJdGVyYXRvciA9IG1lbWJlci5pZGxUeXBl
Lmxlbmd0aCA9PT0gMjsKKyAgICAgICAgdmFyIHByb3RvID0gdGhpcy5nZXRfaW50ZXJmYWNlX29i
amVjdCgpLnByb3RvdHlwZTsKKyAgICAgICAgdmFyIGl0ZXJhdG9yRGVzYyA9IE9iamVjdC5nZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IocHJvdG8sIFN5bWJvbC5hc3luY0l0ZXJhdG9yKTsKKworICAg
ICAgICBhc3NlcnRfdHJ1ZShpdGVyYXRvckRlc2Mud3JpdGFibGUsICJAQGFzeW5jSXRlcmF0b3Ig
cHJvcGVydHkgc2hvdWxkIGJlIHdyaXRhYmxlIik7CisgICAgICAgIGFzc2VydF90cnVlKGl0ZXJh
dG9yRGVzYy5jb25maWd1cmFibGUsICJAQGFzeW5jSXRlcmF0b3IgcHJvcGVydHkgc2hvdWxkIGJl
IGNvbmZpZ3VyYWJsZSIpOworICAgICAgICBhc3NlcnRfZmFsc2UoaXRlcmF0b3JEZXNjLmVudW1l
cmFibGUsICJAQGFzeW5jSXRlcmF0b3IgcHJvcGVydHkgc2hvdWxkIG5vdCBiZSBlbnVtZXJhYmxl
Iik7CisgICAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIGl0ZXJhdG9yRGVzYy52YWx1ZSwgImZ1
bmN0aW9uIiwgIkBAYXN5bmNJdGVyYXRvciBwcm9wZXJ0eSBzaG91bGQgYmUgYSBmdW5jdGlvbiIp
OworICAgICAgICBhc3NlcnRfZXF1YWxzKGl0ZXJhdG9yRGVzYy52YWx1ZS5sZW5ndGgsIDAsICJA
QGFzeW5jSXRlcmF0b3IgZnVuY3Rpb24gb2JqZWN0IGxlbmd0aCBzaG91bGQgYmUgMCIpOworICAg
ICAgICBhc3NlcnRfZXF1YWxzKGl0ZXJhdG9yRGVzYy52YWx1ZS5uYW1lLCBpc1BhaXJJdGVyYXRv
ciA/ICJlbnRyaWVzIiA6ICJ2YWx1ZXMiLCAiQEBhc3luY0l0ZXJhdG9yIGZ1bmN0aW9uIG9iamVj
dCBzaG91bGQgaGF2ZSB0aGUgcmlnaHQgbmFtZSIpOworCisgICAgICAgIGlmIChpc1BhaXJJdGVy
YXRvcikgeworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhwcm90b1siZW50cmllcyJdLCBwcm90
b1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0sICJlbnRyaWVzIG1ldGhvZCBzaG91bGQgYmUgdGhlIHNh
bWUgYXMgQEBhc3luY0l0ZXJhdG9yIG1ldGhvZCIpOworICAgICAgICAgICAgWyJlbnRyaWVzIiwg
ImtleXMiLCAidmFsdWVzIl0uZm9yRWFjaChwcm9wZXJ0eSA9PiB7CisgICAgICAgICAgICAgICAg
dmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHByb3RvLCBwcm9wZXJ0
eSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgZGVzYy52YWx1ZSwgImZ1
bmN0aW9uIiwgcHJvcGVydHkgKyAiIHByb3BlcnR5IHNob3VsZCBiZSBhIGZ1bmN0aW9uIik7Cisg
ICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhkZXNjLnZhbHVlLmxlbmd0aCwgMCwgcHJvcGVy
dHkgKyAiIGZ1bmN0aW9uIG9iamVjdCBsZW5ndGggc2hvdWxkIGJlIDAiKTsKKyAgICAgICAgICAg
ICAgICBhc3NlcnRfZXF1YWxzKGRlc2MudmFsdWUubmFtZSwgcHJvcGVydHksIHByb3BlcnR5ICsg
IiBmdW5jdGlvbiBvYmplY3Qgc2hvdWxkIGhhdmUgdGhlIHJpZ2h0IG5hbWUiKTsKKyAgICAgICAg
ICAgIH0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhwcm90
b1sidmFsdWVzIl0sIHByb3RvW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSwgInZhbHVlcyBtZXRob2Qg
c2hvdWxkIGJlIHRoZSBzYW1lIGFzIEBAYXN5bmNJdGVyYXRvciBtZXRob2QiKTsKKyAgICAgICAg
ICAgIGFzc2VydF9mYWxzZSgiZW50cmllcyIgaW4gcHJvdG8sICJzaG91bGQgbm90IGhhdmUgYW4g
ZW50cmllcyBtZXRob2QiKTsKKyAgICAgICAgICAgIGFzc2VydF9mYWxzZSgia2V5cyIgaW4gcHJv
dG8sICJzaG91bGQgbm90IGhhdmUgYSBrZXlzIG1ldGhvZCIpOworICAgICAgICB9CisgICAgfS5i
aW5kKHRoaXMpLCB0aGlzLm5hbWUgKyAiIGludGVyZmFjZTogYXN5bmMgaXRlcmFibGU8IiArIG1l
bWJlci5pZGxUeXBlLm1hcChmdW5jdGlvbih0KSB7IHJldHVybiB0LmlkbFR5cGU7IH0pLmpvaW4o
IiwgIikgKyAiPiIpOwogfTsKIAotLy9AfQogSWRsSW50ZXJmYWNlLnByb3RvdHlwZS50ZXN0X21l
bWJlcl9zdHJpbmdpZmllciA9IGZ1bmN0aW9uKG1lbWJlcikKLS8vQHsKIHsKLSAgICB0ZXN0KGZ1
bmN0aW9uKCkKKyAgICBzdWJzZXRUZXN0QnlLZXkodGhpcy5uYW1lLCB0ZXN0LCBmdW5jdGlvbigp
CiAgICAgewotICAgICAgICBpZiAodGhpcy5pc19jYWxsYmFjaygpICYmICF0aGlzLmhhc19jb25z
dGFudHMoKSkgeworICAgICAgICBpZiAoIXRoaXMuc2hvdWxkX2hhdmVfaW50ZXJmYWNlX29iamVj
dCgpKSB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBhc3NlcnRf
b3duX3Byb3BlcnR5KHNlbGYsIHRoaXMubmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAic2VsZiBkb2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0eSAiICsgZm9ybWF0X3ZhbHVlKHRoaXMu
bmFtZSkpOworICAgICAgICB0aGlzLmFzc2VydF9pbnRlcmZhY2Vfb2JqZWN0X2V4aXN0cygpOwog
CiAgICAgICAgIGlmICh0aGlzLmlzX2NhbGxiYWNrKCkpIHsKLSAgICAgICAgICAgIGFzc2VydF9m
YWxzZSgicHJvdG90eXBlIiBpbiBzZWxmW3RoaXMubmFtZV0sCisgICAgICAgICAgICBhc3NlcnRf
ZmFsc2UoInByb3RvdHlwZSIgaW4gdGhpcy5nZXRfaW50ZXJmYWNlX29iamVjdCgpLAogICAgICAg
ICAgICAgICAgICAgICAgICAgIHRoaXMubmFtZSArICcgc2hvdWxkIG5vdCBoYXZlIGEgInByb3Rv
dHlwZSIgcHJvcGVydHknKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAg
ICAgIGFzc2VydF9vd25fcHJvcGVydHkoc2VsZlt0aGlzLm5hbWVdLCAicHJvdG90eXBlIiwKKyAg
ICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0eSh0aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0KCksICJw
cm90b3R5cGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbnRlcmZhY2UgIicgKyB0
aGlzLm5hbWUgKyAnIiBkb2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0eSAicHJvdG90eXBlIicpOwog
CiAgICAgICAgIC8vICIuIC4gLiB0aGUgcHJvcGVydHkgZXhpc3RzIG9uIHRoZSBpbnRlcmZhY2Ug
cHJvdG90eXBlIG9iamVjdC4iCi0gICAgICAgIHZhciBpbnRlcmZhY2VQcm90b3R5cGVPYmplY3Qg
PSBzZWxmW3RoaXMubmFtZV0ucHJvdG90eXBlOwotICAgICAgICBhc3NlcnRfb3duX3Byb3BlcnR5
KHNlbGZbdGhpcy5uYW1lXS5wcm90b3R5cGUsICJ0b1N0cmluZyIsCisgICAgICAgIHZhciBpbnRl
cmZhY2VQcm90b3R5cGVPYmplY3QgPSB0aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0KCkucHJvdG90
eXBlOworICAgICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KGludGVyZmFjZVByb3RvdHlwZU9iamVj
dCwgInRvU3RyaW5nIiwKICAgICAgICAgICAgICAgICAiaW50ZXJmYWNlIHByb3RvdHlwZSBvYmpl
Y3QgbWlzc2luZyBub24tc3RhdGljIG9wZXJhdGlvbiIpOwogCiAgICAgICAgIHZhciBzdHJpbmdp
ZmllclVuZm9yZ2VhYmxlID0gbWVtYmVyLmlzVW5mb3JnZWFibGU7CkBAIC0xNDE1LDExICsyNTA5
LDExIEBAIElkbEludGVyZmFjZS5wcm90b3R5cGUudGVzdF9tZW1iZXJfc3RyaW5naWZpZXIgPSBm
dW5jdGlvbihtZW1iZXIpCiAgICAgICAgIC8vICJUaGUgcHJvcGVydHkgaGFzIGF0dHJpYnV0ZXMg
eyBbW1dyaXRhYmxlXV06IEIsCiAgICAgICAgIC8vIFtbRW51bWVyYWJsZV1dOiB0cnVlLCBbW0Nv
bmZpZ3VyYWJsZV1dOiBCIH0sIHdoZXJlIEIgaXMgZmFsc2UgaWYgdGhlCiAgICAgICAgIC8vIHN0
cmluZ2lmaWVyIGlzIHVuZm9yZ2VhYmxlIG9uIHRoZSBpbnRlcmZhY2UsIGFuZCB0cnVlIG90aGVy
d2lzZS4iCi0gICAgICAgIGFzc2VydF9mYWxzZSgiZ2V0IiBpbiBkZXNjLCAicHJvcGVydHkgaGFz
IGdldHRlciIpOwotICAgICAgICBhc3NlcnRfZmFsc2UoInNldCIgaW4gZGVzYywgInByb3BlcnR5
IGhhcyBzZXR0ZXIiKTsKKyAgICAgICAgYXNzZXJ0X2ZhbHNlKCJnZXQiIGluIGRlc2MsICJwcm9w
ZXJ0eSBzaG91bGQgbm90IGhhdmUgYSBnZXR0ZXIiKTsKKyAgICAgICAgYXNzZXJ0X2ZhbHNlKCJz
ZXQiIGluIGRlc2MsICJwcm9wZXJ0eSBzaG91bGQgbm90IGhhdmUgYSBzZXR0ZXIiKTsKICAgICAg
ICAgYXNzZXJ0X2VxdWFscyhkZXNjLndyaXRhYmxlLCAhc3RyaW5naWZpZXJVbmZvcmdlYWJsZSwK
ICAgICAgICAgICAgICAgICAgICAgICAicHJvcGVydHkgc2hvdWxkIGJlIHdyaXRhYmxlIGlmIGFu
ZCBvbmx5IGlmIG5vdCB1bmZvcmdlYWJsZSIpOwotICAgICAgICBhc3NlcnRfdHJ1ZShkZXNjLmVu
dW1lcmFibGUsICJwcm9wZXJ0eSBpcyBub3QgZW51bWVyYWJsZSIpOworICAgICAgICBhc3NlcnRf
dHJ1ZShkZXNjLmVudW1lcmFibGUsICJwcm9wZXJ0eSBzaG91bGQgYmUgZW51bWVyYWJsZSIpOwog
ICAgICAgICBhc3NlcnRfZXF1YWxzKGRlc2MuY29uZmlndXJhYmxlLCAhc3RyaW5naWZpZXJVbmZv
cmdlYWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAicHJvcGVydHkgc2hvdWxkIGJlIGNvbmZp
Z3VyYWJsZSBpZiBhbmQgb25seSBpZiBub3QgdW5mb3JnZWFibGUiKTsKICAgICAgICAgLy8gIlRo
ZSB2YWx1ZSBvZiB0aGUgcHJvcGVydHkgaXMgYSBGdW5jdGlvbiBvYmplY3QsIHdoaWNoIGJlaGF2
ZXMgYXMKQEAgLTE0MzIsOCArMjUyNiw4IEBAIElkbEludGVyZmFjZS5wcm90b3R5cGUudGVzdF9t
ZW1iZXJfc3RyaW5naWZpZXIgPSBmdW5jdGlvbihtZW1iZXIpCiAgICAgICAgICAgICAicHJvcGVy
dHkgaGFzIHdyb25nIC5sZW5ndGgiKTsKIAogICAgICAgICAvLyAiTGV0IE8gYmUgdGhlIHJlc3Vs
dCBvZiBjYWxsaW5nIFRvT2JqZWN0IG9uIHRoZSB0aGlzIHZhbHVlLiIKLSAgICAgICAgYXNzZXJ0
X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgc2VsZlt0
aGlzLm5hbWVdLnByb3RvdHlwZS50b1N0cmluZy5hcHBseShudWxsLCBbXSk7CisgICAgICAgIGFz
c2VydF90aHJvd3NfanMoZ2xvYmFsT2YoaW50ZXJmYWNlUHJvdG90eXBlT2JqZWN0LnRvU3RyaW5n
KS5UeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgaW50ZXJmYWNlUHJvdG90eXBl
T2JqZWN0LnRvU3RyaW5nLmFwcGx5KG51bGwsIFtdKTsKICAgICAgICAgfSwgImNhbGxpbmcgc3Ry
aW5naWZpZXIgd2l0aCB0aGlzID0gbnVsbCBkaWRuJ3QgdGhyb3cgVHlwZUVycm9yIik7CiAKICAg
ICAgICAgLy8gIklmIE8gaXMgbm90IGFuIG9iamVjdCB0aGF0IGltcGxlbWVudHMgdGhlIGludGVy
ZmFjZSBvbiB3aGljaCB0aGUKQEAgLTE0NDEsMzMgKzI1MzUsMzEgQEAgSWRsSW50ZXJmYWNlLnBy
b3RvdHlwZS50ZXN0X21lbWJlcl9zdHJpbmdpZmllciA9IGZ1bmN0aW9uKG1lbWJlcikKICAgICAg
ICAgLy8KICAgICAgICAgLy8gVE9ETzogVGVzdCBhIHBsYXRmb3JtIG9iamVjdCB0aGF0IGltcGxl
bWVudHMgc29tZSBvdGhlcgogICAgICAgICAvLyBpbnRlcmZhY2UuICAoSGF2ZSB0byBiZSBzdXJl
IHRvIGdldCBpbmhlcml0YW5jZSByaWdodC4pCi0gICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5
cGVFcnJvcigpLCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHNlbGZbdGhpcy5uYW1lXS5wcm90
b3R5cGUudG9TdHJpbmcuYXBwbHkoe30sIFtdKTsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhn
bG9iYWxPZihpbnRlcmZhY2VQcm90b3R5cGVPYmplY3QudG9TdHJpbmcpLlR5cGVFcnJvciwgZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICBpbnRlcmZhY2VQcm90b3R5cGVPYmplY3QudG9TdHJpbmcu
YXBwbHkoe30sIFtdKTsKICAgICAgICAgfSwgImNhbGxpbmcgc3RyaW5naWZpZXIgd2l0aCB0aGlz
ID0ge30gZGlkbid0IHRocm93IFR5cGVFcnJvciIpOwogICAgIH0uYmluZCh0aGlzKSwgdGhpcy5u
YW1lICsgIiBpbnRlcmZhY2U6IHN0cmluZ2lmaWVyIik7CiB9OwogCi0vL0B9CiBJZGxJbnRlcmZh
Y2UucHJvdG90eXBlLnRlc3RfbWVtYmVycyA9IGZ1bmN0aW9uKCkKLS8vQHsKIHsKICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IHRoaXMubWVtYmVycy5sZW5ndGg7IGkrKykKICAgICB7CiAgICAgICAg
IHZhciBtZW1iZXIgPSB0aGlzLm1lbWJlcnNbaV07Ci0gICAgICAgIHN3aXRjaCAobWVtYmVyLnR5
cGUpIHsKLSAgICAgICAgY2FzZSAiaXRlcmFibGUiOgotICAgICAgICAgICAgdGhpcy5hZGRfaXRl
cmFibGVfbWVtYmVycyhtZW1iZXIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIC8vIFRP
RE86IGFkZCBzZXRsaWtlIGFuZCBtYXBsaWtlIGhhbmRsaW5nLgotICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmIChtZW1iZXIudW50ZXN0ZWQpIHsKKyAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgfQogCi0gICAgZm9yICh2YXIgaSA9IDA7
IGkgPCB0aGlzLm1lbWJlcnMubGVuZ3RoOyBpKyspCi0gICAgewotICAgICAgICB2YXIgbWVtYmVy
ID0gdGhpcy5tZW1iZXJzW2ldOwotICAgICAgICBpZiAobWVtYmVyLnVudGVzdGVkKSB7CisgICAg
ICAgIGlmICghZXhwb3NlZF9pbihleHBvc3VyZV9zZXQobWVtYmVyLCB0aGlzLmV4cG9zdXJlU2V0
KSkpIHsKKyAgICAgICAgICAgIHN1YnNldFRlc3RCeUtleSh0aGlzLm5hbWUsIHRlc3QsIGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgICAgIC8vIEl0J3Mgbm90IGV4cG9zZWQsIHNvIHdlIHNob3Vs
ZG4ndCBmaW5kIGl0IGFueXdoZXJlLgorICAgICAgICAgICAgICAgIGFzc2VydF9mYWxzZShtZW1i
ZXIubmFtZSBpbiB0aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0KCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJUaGUgaW50ZXJmYWNlIG9iamVjdCBtdXN0IG5vdCBoYXZlIGEgcHJvcGVy
dHkgIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdF92YWx1ZShtZW1iZXIu
bmFtZSkpOworICAgICAgICAgICAgICAgIGFzc2VydF9mYWxzZShtZW1iZXIubmFtZSBpbiB0aGlz
LmdldF9pbnRlcmZhY2Vfb2JqZWN0KCkucHJvdG90eXBlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiVGhlIHByb3RvdHlwZSBvYmplY3QgbXVzdCBub3QgaGF2ZSBhIHByb3BlcnR5ICIg
KworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRfdmFsdWUobWVtYmVyLm5hbWUp
KTsKKyAgICAgICAgICAgIH0uYmluZCh0aGlzKSwgdGhpcy5uYW1lICsgIiBpbnRlcmZhY2U6IG1l
bWJlciAiICsgbWVtYmVyLm5hbWUpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0K
IApAQCAtMTQ4Myw3ICsyNTc1LDcgQEAgSWRsSW50ZXJmYWNlLnByb3RvdHlwZS50ZXN0X21lbWJl
cnMgPSBmdW5jdGlvbigpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgdGhpcy50ZXN0
X21lbWJlcl9hdHRyaWJ1dGUobWVtYmVyKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlm
IChtZW1iZXIuc3RyaW5naWZpZXIpIHsKKyAgICAgICAgICAgIGlmIChtZW1iZXIuc3BlY2lhbCA9
PT0gInN0cmluZ2lmaWVyIikgewogICAgICAgICAgICAgICAgIHRoaXMudGVzdF9tZW1iZXJfc3Ry
aW5naWZpZXIobWVtYmVyKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAt
MTQ5OCwxMyArMjU5MCwxNyBAQCBJZGxJbnRlcmZhY2UucHJvdG90eXBlLnRlc3RfbWVtYmVycyA9
IGZ1bmN0aW9uKCkKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIHRoaXMu
dGVzdF9tZW1iZXJfb3BlcmF0aW9uKG1lbWJlcik7CiAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgfSBlbHNlIGlmIChtZW1iZXIuc3RyaW5naWZpZXIpIHsKKyAgICAgICAgICAgIH0gZWxz
ZSBpZiAobWVtYmVyLnNwZWNpYWwgPT09ICJzdHJpbmdpZmllciIpIHsKICAgICAgICAgICAgICAg
ICB0aGlzLnRlc3RfbWVtYmVyX3N0cmluZ2lmaWVyKG1lbWJlcik7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlICJpdGVyYWJsZSI6Ci0gICAgICAgICAg
ICB0aGlzLnRlc3RfbWVtYmVyX2l0ZXJhYmxlKG1lbWJlcik7CisgICAgICAgICAgICBpZiAobWVt
YmVyLmFzeW5jKSB7CisgICAgICAgICAgICAgICAgdGhpcy50ZXN0X21lbWJlcl9hc3luY19pdGVy
YWJsZShtZW1iZXIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB0aGlz
LnRlc3RfbWVtYmVyX2l0ZXJhYmxlKG1lbWJlcik7CisgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIC8vIFRPRE86IGNoZWNrIG1v
cmUgbWVtYmVyIHR5cGVzLgpAQCAtMTUxMyw5ICsyNjA5LDcgQEAgSWRsSW50ZXJmYWNlLnByb3Rv
dHlwZS50ZXN0X21lbWJlcnMgPSBmdW5jdGlvbigpCiAgICAgfQogfTsKIAotLy9AfQogSWRsSW50
ZXJmYWNlLnByb3RvdHlwZS50ZXN0X29iamVjdCA9IGZ1bmN0aW9uKGRlc2MpCi0vL0B7CiB7CiAg
ICAgdmFyIG9iaiwgZXhjZXB0aW9uID0gbnVsbDsKICAgICB0cnkKQEAgLTE1MjcsMTggKzI2MjEs
MjUgQEAgSWRsSW50ZXJmYWNlLnByb3RvdHlwZS50ZXN0X29iamVjdCA9IGZ1bmN0aW9uKGRlc2Mp
CiAgICAgICAgIGV4Y2VwdGlvbiA9IGU7CiAgICAgfQogCi0gICAgdmFyIGV4cGVjdGVkX3R5cGVv
ZiA9Ci0gICAgICAgIHRoaXMubWVtYmVycy5zb21lKGZ1bmN0aW9uKG1lbWJlcikgeyByZXR1cm4g
bWVtYmVyLmxlZ2FjeWNhbGxlcjsgfSkKLSAgICAgICAgPyAiZnVuY3Rpb24iCi0gICAgICAgIDog
Im9iamVjdCI7CisgICAgdmFyIGV4cGVjdGVkX3R5cGVvZjsKKyAgICBpZiAodGhpcy5uYW1lID09
ICJIVE1MQWxsQ29sbGVjdGlvbiIpCisgICAgeworICAgICAgICAvLyBSZXN1bHQgb2YgW1tJc0hU
TUxEREFdXSBzbG90CisgICAgICAgIGV4cGVjdGVkX3R5cGVvZiA9ICJ1bmRlZmluZWQiOworICAg
IH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBleHBlY3RlZF90eXBlb2YgPSAib2JqZWN0IjsK
KyAgICB9CiAKICAgICB0aGlzLnRlc3RfcHJpbWFyeV9pbnRlcmZhY2Vfb2YoZGVzYywgb2JqLCBl
eGNlcHRpb24sIGV4cGVjdGVkX3R5cGVvZik7CisKICAgICB2YXIgY3VycmVudF9pbnRlcmZhY2Ug
PSB0aGlzOwogICAgIHdoaWxlIChjdXJyZW50X2ludGVyZmFjZSkKICAgICB7CiAgICAgICAgIGlm
ICghKGN1cnJlbnRfaW50ZXJmYWNlLm5hbWUgaW4gdGhpcy5hcnJheS5tZW1iZXJzKSkKICAgICAg
ICAgewotICAgICAgICAgICAgdGhyb3cgIkludGVyZmFjZSAiICsgY3VycmVudF9pbnRlcmZhY2Uu
bmFtZSArICIgbm90IGZvdW5kIChpbmhlcml0ZWQgYnkgIiArIHRoaXMubmFtZSArICIpIjsKKyAg
ICAgICAgICAgIHRocm93IG5ldyBJZGxIYXJuZXNzRXJyb3IoIkludGVyZmFjZSAiICsgY3VycmVu
dF9pbnRlcmZhY2UubmFtZSArICIgbm90IGZvdW5kIChpbmhlcml0ZWQgYnkgIiArIHRoaXMubmFt
ZSArICIpIik7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGN1cnJlbnRfaW50ZXJmYWNlLnByZXZl
bnRfbXVsdGlwbGVfdGVzdGluZyAmJiBjdXJyZW50X2ludGVyZmFjZS5hbHJlYWR5X3Rlc3RlZCkK
ICAgICAgICAgewpAQCAtMTU0OSwyNCArMjY1MCw0MCBAQCBJZGxJbnRlcmZhY2UucHJvdG90eXBl
LnRlc3Rfb2JqZWN0ID0gZnVuY3Rpb24oZGVzYykKICAgICB9CiB9OwogCi0vL0B9CiBJZGxJbnRl
cmZhY2UucHJvdG90eXBlLnRlc3RfcHJpbWFyeV9pbnRlcmZhY2Vfb2YgPSBmdW5jdGlvbihkZXNj
LCBvYmosIGV4Y2VwdGlvbiwgZXhwZWN0ZWRfdHlwZW9mKQotLy9AewogeworICAgIC8vIE9ubHkg
dGhlIG9iamVjdCBpdHNlbGYsIG5vdCBpdHMgbWVtYmVycywgYXJlIHRlc3RlZCBoZXJlLCBzbyBp
ZiB0aGUKKyAgICAvLyBpbnRlcmZhY2UgaXMgdW50ZXN0ZWQsIHRoZXJlIGlzIG5vdGhpbmcgdG8g
ZG8uCisgICAgaWYgKHRoaXMudW50ZXN0ZWQpCisgICAgeworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgLy8gIlRoZSBpbnRlcm5hbCBbW1NldFByb3RvdHlwZU9mXV0gbWV0aG9kIG9mIGV2
ZXJ5IHBsYXRmb3JtIG9iamVjdCB0aGF0CisgICAgLy8gaW1wbGVtZW50cyBhbiBpbnRlcmZhY2Ug
d2l0aCB0aGUgW0dsb2JhbF0gZXh0ZW5kZWQKKyAgICAvLyBhdHRyaWJ1dGUgbXVzdCBleGVjdXRl
IHRoZSBzYW1lIGFsZ29yaXRobSBhcyBpcyBkZWZpbmVkIGZvciB0aGUKKyAgICAvLyBbW1NldFBy
b3RvdHlwZU9mXV0gaW50ZXJuYWwgbWV0aG9kIG9mIGFuIGltbXV0YWJsZSBwcm90b3R5cGUgZXhv
dGljCisgICAgLy8gb2JqZWN0LiIKKyAgICAvLyBodHRwczovL2hleWNhbS5naXRodWIuaW8vd2Vi
aWRsLyNwbGF0Zm9ybS1vYmplY3Qtc2V0cHJvdG90eXBlb2YKKyAgICBpZiAodGhpcy5pc19nbG9i
YWwoKSkKKyAgICB7CisgICAgICAgIHRoaXMudGVzdF9pbW11dGFibGVfcHJvdG90eXBlKCJnbG9i
YWwgcGxhdGZvcm0gb2JqZWN0Iiwgb2JqKTsKKyAgICB9CisKKwogICAgIC8vIFdlIGNhbid0IGVh
c2lseSB0ZXN0IHRoYXQgaXRzIHByb3RvdHlwZSBpcyBjb3JyZWN0IGlmIHRoZXJlJ3Mgbm8KICAg
ICAvLyBpbnRlcmZhY2Ugb2JqZWN0LCBvciB0aGUgb2JqZWN0IGlzIGZyb20gYSBkaWZmZXJlbnQg
Z2xvYmFsIGVudmlyb25tZW50CiAgICAgLy8gKG5vdCBpbnN0YW5jZW9mIE9iamVjdCkuICBUT0RP
OiB0ZXN0IGluIHRoaXMgY2FzZSB0aGF0IGl0cyBwcm90b3R5cGUgYXQKICAgICAvLyBsZWFzdCBs
b29rcyBjb3JyZWN0LCBldmVuIGlmIHdlIGNhbid0IHRlc3QgdGhhdCBpdCdzIGFjdHVhbGx5IGNv
cnJlY3QuCi0gICAgaWYgKCF0aGlzLmhhc19leHRlbmRlZF9hdHRyaWJ1dGUoIk5vSW50ZXJmYWNl
T2JqZWN0IikKKyAgICBpZiAodGhpcy5zaG91bGRfaGF2ZV9pbnRlcmZhY2Vfb2JqZWN0KCkKICAg
ICAmJiAodHlwZW9mIG9iaiAhPSBleHBlY3RlZF90eXBlb2YgfHwgb2JqIGluc3RhbmNlb2YgT2Jq
ZWN0KSkKICAgICB7Ci0gICAgICAgIHRlc3QoZnVuY3Rpb24oKQorICAgICAgICBzdWJzZXRUZXN0
QnlLZXkodGhpcy5uYW1lLCB0ZXN0LCBmdW5jdGlvbigpCiAgICAgICAgIHsKICAgICAgICAgICAg
IGFzc2VydF9lcXVhbHMoZXhjZXB0aW9uLCBudWxsLCAiVW5leHBlY3RlZCBleGNlcHRpb24gd2hl
biBldmFsdWF0aW5nIG9iamVjdCIpOwogICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2Yg
b2JqLCBleHBlY3RlZF90eXBlb2YsICJ3cm9uZyB0eXBlb2Ygb2JqZWN0Iik7Ci0gICAgICAgICAg
ICBhc3NlcnRfb3duX3Byb3BlcnR5KHNlbGYsIHRoaXMubmFtZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgInNlbGYgZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVydHkgIiArIGZvcm1h
dF92YWx1ZSh0aGlzLm5hbWUpKTsKLSAgICAgICAgICAgIGFzc2VydF9vd25fcHJvcGVydHkoc2Vs
Zlt0aGlzLm5hbWVdLCAicHJvdG90eXBlIiwKKyAgICAgICAgICAgIHRoaXMuYXNzZXJ0X2ludGVy
ZmFjZV9vYmplY3RfZXhpc3RzKCk7CisgICAgICAgICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KHRo
aXMuZ2V0X2ludGVyZmFjZV9vYmplY3QoKSwgInByb3RvdHlwZSIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdpbnRlcmZhY2UgIicgKyB0aGlzLm5hbWUgKyAnIiBkb2VzIG5vdCBo
YXZlIG93biBwcm9wZXJ0eSAicHJvdG90eXBlIicpOwogCiAgICAgICAgICAgICAvLyAiVGhlIHZh
bHVlIG9mIHRoZSBpbnRlcm5hbCBbW1Byb3RvdHlwZV1dIHByb3BlcnR5IG9mIHRoZQpAQCAtMTU3
NCwzOSArMjY5MSw1MCBAQCBJZGxJbnRlcmZhY2UucHJvdG90eXBlLnRlc3RfcHJpbWFyeV9pbnRl
cmZhY2Vfb2YgPSBmdW5jdGlvbihkZXNjLCBvYmosIGV4Y2VwdGlvbgogICAgICAgICAgICAgLy8g
aW50ZXJmYWNlIGZyb20gdGhlIHBsYXRmb3JtIG9iamVjdOKAmXMgYXNzb2NpYXRlZCBnbG9iYWwK
ICAgICAgICAgICAgIC8vIGVudmlyb25tZW50LiIKICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMo
T2JqZWN0LmdldFByb3RvdHlwZU9mKG9iaiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHNl
bGZbdGhpcy5uYW1lXS5wcm90b3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMu
Z2V0X2ludGVyZmFjZV9vYmplY3QoKS5wcm90b3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRlc2MgKyAiJ3MgcHJvdG90eXBlIGlzIG5vdCAiICsgdGhpcy5uYW1lICsgIi5wcm90b3R5
cGUiKTsKICAgICAgICAgfS5iaW5kKHRoaXMpLCB0aGlzLm5hbWUgKyAiIG11c3QgYmUgcHJpbWFy
eSBpbnRlcmZhY2Ugb2YgIiArIGRlc2MpOwogICAgIH0KIAogICAgIC8vICJUaGUgY2xhc3Mgc3Ry
aW5nIG9mIGEgcGxhdGZvcm0gb2JqZWN0IHRoYXQgaW1wbGVtZW50cyBvbmUgb3IgbW9yZQotICAg
IC8vIGludGVyZmFjZXMgbXVzdCBiZSB0aGUgaWRlbnRpZmllciBvZiB0aGUgcHJpbWFyeSBpbnRl
cmZhY2Ugb2YgdGhlCisgICAgLy8gaW50ZXJmYWNlcyBtdXN0IGJlIHRoZSBxdWFsaWZpZWQgbmFt
ZSBvZiB0aGUgcHJpbWFyeSBpbnRlcmZhY2Ugb2YgdGhlCiAgICAgLy8gcGxhdGZvcm0gb2JqZWN0
LiIKLSAgICB0ZXN0KGZ1bmN0aW9uKCkKKyAgICBzdWJzZXRUZXN0QnlLZXkodGhpcy5uYW1lLCB0
ZXN0LCBmdW5jdGlvbigpCiAgICAgewogICAgICAgICBhc3NlcnRfZXF1YWxzKGV4Y2VwdGlvbiwg
bnVsbCwgIlVuZXhwZWN0ZWQgZXhjZXB0aW9uIHdoZW4gZXZhbHVhdGluZyBvYmplY3QiKTsKICAg
ICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2Ygb2JqLCBleHBlY3RlZF90eXBlb2YsICJ3cm9uZyB0
eXBlb2Ygb2JqZWN0Iik7Ci0gICAgICAgIGFzc2VydF9jbGFzc19zdHJpbmcob2JqLCB0aGlzLm5h
bWUsICJjbGFzcyBzdHJpbmcgb2YgIiArIGRlc2MpOworICAgICAgICBhc3NlcnRfY2xhc3Nfc3Ry
aW5nKG9iaiwgdGhpcy5nZXRfcXVhbGlmaWVkX25hbWUoKSwgImNsYXNzIHN0cmluZyBvZiAiICsg
ZGVzYyk7CiAgICAgICAgIGlmICghdGhpcy5oYXNfc3RyaW5naWZpZXIoKSkKICAgICAgICAgewot
ICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhTdHJpbmcob2JqKSwgIltvYmplY3QgIiArIHRoaXMu
bmFtZSArICJdIiwgIlN0cmluZygiICsgZGVzYyArICIpIik7CisgICAgICAgICAgICBhc3NlcnRf
ZXF1YWxzKFN0cmluZyhvYmopLCAiW29iamVjdCAiICsgdGhpcy5nZXRfcXVhbGlmaWVkX25hbWUo
KSArICJdIiwgIlN0cmluZygiICsgZGVzYyArICIpIik7CiAgICAgICAgIH0KICAgICB9LmJpbmQo
dGhpcyksICJTdHJpbmdpZmljYXRpb24gb2YgIiArIGRlc2MpOwogfTsKIAotLy9AfQogSWRsSW50
ZXJmYWNlLnByb3RvdHlwZS50ZXN0X2ludGVyZmFjZV9vZiA9IGZ1bmN0aW9uKGRlc2MsIG9iaiwg
ZXhjZXB0aW9uLCBleHBlY3RlZF90eXBlb2YpCi0vL0B7CiB7CiAgICAgLy8gVE9ETzogSW5kZXhl
ZCBhbmQgbmFtZWQgcHJvcGVydGllcywgbW9yZSBjaGVja3Mgb24gaW50ZXJmYWNlIG1lbWJlcnMK
ICAgICB0aGlzLmFscmVhZHlfdGVzdGVkID0gdHJ1ZTsKKyAgICBpZiAoIXNob3VsZFJ1blN1YlRl
c3QodGhpcy5uYW1lKSkgeworICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCB0aGlzLm1lbWJlcnMubGVuZ3RoOyBpKyspCiAgICAgewogICAgICAgICB2YXIg
bWVtYmVyID0gdGhpcy5tZW1iZXJzW2ldOworICAgICAgICBpZiAobWVtYmVyLnVudGVzdGVkKSB7
CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWV4cG9zZWRf
aW4oZXhwb3N1cmVfc2V0KG1lbWJlciwgdGhpcy5leHBvc3VyZVNldCkpKSB7CisgICAgICAgICAg
ICBzdWJzZXRUZXN0QnlLZXkodGhpcy5uYW1lLCB0ZXN0LCBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgICAgICBhc3NlcnRfZXF1YWxzKGV4Y2VwdGlvbiwgbnVsbCwgIlVuZXhwZWN0ZWQgZXhjZXB0
aW9uIHdoZW4gZXZhbHVhdGluZyBvYmplY3QiKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZmFs
c2UobWVtYmVyLm5hbWUgaW4gb2JqKTsKKyAgICAgICAgICAgIH0uYmluZCh0aGlzKSwgdGhpcy5u
YW1lICsgIiBpbnRlcmZhY2U6ICIgKyBkZXNjICsgJyBtdXN0IG5vdCBoYXZlIHByb3BlcnR5ICIn
ICsgbWVtYmVyLm5hbWUgKyAnIicpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0K
ICAgICAgICAgaWYgKG1lbWJlci50eXBlID09ICJhdHRyaWJ1dGUiICYmIG1lbWJlci5pc1VuZm9y
Z2VhYmxlKQogICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgYV90ZXN0ID0gYXN5bmNfdGVzdCh0
aGlzLm5hbWUgKyAiIGludGVyZmFjZTogIiArIGRlc2MgKyAnIG11c3QgaGF2ZSBvd24gcHJvcGVy
dHkgIicgKyBtZW1iZXIubmFtZSArICciJyk7CisgICAgICAgICAgICB2YXIgYV90ZXN0ID0gc3Vi
c2V0VGVzdEJ5S2V5KHRoaXMubmFtZSwgYXN5bmNfdGVzdCwgdGhpcy5uYW1lICsgIiBpbnRlcmZh
Y2U6ICIgKyBkZXNjICsgJyBtdXN0IGhhdmUgb3duIHByb3BlcnR5ICInICsgbWVtYmVyLm5hbWUg
KyAnIicpOwogICAgICAgICAgICAgYV90ZXN0LnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAg
ICAgICAgYXNzZXJ0X2VxdWFscyhleGNlcHRpb24sIG51bGwsICJVbmV4cGVjdGVkIGV4Y2VwdGlv
biB3aGVuIGV2YWx1YXRpbmcgb2JqZWN0Iik7CiAgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFs
cyh0eXBlb2Ygb2JqLCBleHBlY3RlZF90eXBlb2YsICJ3cm9uZyB0eXBlb2Ygb2JqZWN0Iik7CkBA
IC0xNjE4LDcgKzI3NDYsNyBAQCBJZGxJbnRlcmZhY2UucHJvdG90eXBlLnRlc3RfaW50ZXJmYWNl
X29mID0gZnVuY3Rpb24oZGVzYywgb2JqLCBleGNlcHRpb24sIGV4cGVjdAogICAgICAgICAgICAg
ICAgICBtZW1iZXIubmFtZSAmJgogICAgICAgICAgICAgICAgICBtZW1iZXIuaXNVbmZvcmdlYWJs
ZSkKICAgICAgICAgewotICAgICAgICAgICAgdmFyIGFfdGVzdCA9IGFzeW5jX3Rlc3QodGhpcy5u
YW1lICsgIiBpbnRlcmZhY2U6ICIgKyBkZXNjICsgJyBtdXN0IGhhdmUgb3duIHByb3BlcnR5ICIn
ICsgbWVtYmVyLm5hbWUgKyAnIicpOworICAgICAgICAgICAgdmFyIGFfdGVzdCA9IHN1YnNldFRl
c3RCeUtleSh0aGlzLm5hbWUsIGFzeW5jX3Rlc3QsIHRoaXMubmFtZSArICIgaW50ZXJmYWNlOiAi
ICsgZGVzYyArICcgbXVzdCBoYXZlIG93biBwcm9wZXJ0eSAiJyArIG1lbWJlci5uYW1lICsgJyIn
KTsKICAgICAgICAgICAgIGFfdGVzdC5zdGVwKGZ1bmN0aW9uKCkKICAgICAgICAgICAgIHsKICAg
ICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGV4Y2VwdGlvbiwgbnVsbCwgIlVuZXhwZWN0ZWQg
ZXhjZXB0aW9uIHdoZW4gZXZhbHVhdGluZyBvYmplY3QiKTsKQEAgLTE2MzMsMTEgKzI3NjEsMTEg
QEAgSWRsSW50ZXJmYWNlLnByb3RvdHlwZS50ZXN0X2ludGVyZmFjZV9vZiA9IGZ1bmN0aW9uKGRl
c2MsIG9iaiwgZXhjZXB0aW9uLCBleHBlY3QKICAgICAgICAgfHwgbWVtYmVyLnR5cGUgPT0gIm9w
ZXJhdGlvbiIpCiAgICAgICAgICYmIG1lbWJlci5uYW1lKQogICAgICAgICB7Ci0gICAgICAgICAg
ICB0ZXN0KGZ1bmN0aW9uKCkKKyAgICAgICAgICAgIHN1YnNldFRlc3RCeUtleSh0aGlzLm5hbWUs
IHRlc3QsIGZ1bmN0aW9uKCkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBhc3NlcnRf
ZXF1YWxzKGV4Y2VwdGlvbiwgbnVsbCwgIlVuZXhwZWN0ZWQgZXhjZXB0aW9uIHdoZW4gZXZhbHVh
dGluZyBvYmplY3QiKTsKICAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBvYmos
IGV4cGVjdGVkX3R5cGVvZiwgIndyb25nIHR5cGVvZiBvYmplY3QiKTsKLSAgICAgICAgICAgICAg
ICBpZiAoIW1lbWJlclsic3RhdGljIl0pIHsKKyAgICAgICAgICAgICAgICBpZiAobWVtYmVyLnNw
ZWNpYWwgIT09ICJzdGF0aWMiKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5pc19n
bG9iYWwoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X2luaGVyaXRzKG9iaiwg
bWVtYmVyLm5hbWUpOwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewpAQCAtMTY2NCw3ICsy
NzkyLDE1IEBAIElkbEludGVyZmFjZS5wcm90b3R5cGUudGVzdF9pbnRlcmZhY2Vfb2YgPSBmdW5j
dGlvbihkZXNjLCBvYmosIGV4Y2VwdGlvbiwgZXhwZWN0CiAgICAgICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRocm93bikKICAgICAgICAgICAgICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFycmF5LmFzc2Vy
dF90eXBlX2lzKHByb3BlcnR5LCBtZW1iZXIuaWRsVHlwZSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKHRoaXMubmFtZSA9PSAiRG9jdW1lbnQiICYmIG1lbWJlci5uYW1lID09ICJh
bGwiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gUmVzdWx0IG9mIFtbSXNIVE1MRERBXV0gc2xvdAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBwcm9wZXJ0eSwgInVuZGVm
aW5lZCIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFycmF5LmFzc2VydF90eXBlX2lzKHByb3BlcnR5
LCBtZW1iZXIuaWRsVHlwZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgICAgIGlmIChtZW1iZXIudHlwZSA9PSAib3BlcmF0aW9uIikKQEAgLTE2NzIsMzAgKzI4MDgs
MzQgQEAgSWRsSW50ZXJmYWNlLnByb3RvdHlwZS50ZXN0X2ludGVyZmFjZV9vZiA9IGZ1bmN0aW9u
KGRlc2MsIG9iaiwgZXhjZXB0aW9uLCBleHBlY3QKICAgICAgICAgICAgICAgICAgICAgICAgIGFz
c2VydF9lcXVhbHModHlwZW9mIG9ialttZW1iZXIubmFtZV0sICJmdW5jdGlvbiIpOwogICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfS5iaW5kKHRo
aXMpLCB0aGlzLm5hbWUgKyAiIGludGVyZmFjZTogIiArIGRlc2MgKyAnIG11c3QgaW5oZXJpdCBw
cm9wZXJ0eSAiJyArIG1lbWJlci5uYW1lICsgJyIgd2l0aCB0aGUgcHJvcGVyIHR5cGUgKCcgKyBp
ICsgJyknKTsKKyAgICAgICAgICAgIH0uYmluZCh0aGlzKSwgdGhpcy5uYW1lICsgIiBpbnRlcmZh
Y2U6ICIgKyBkZXNjICsgJyBtdXN0IGluaGVyaXQgcHJvcGVydHkgIicgKyBtZW1iZXIgKyAnIiB3
aXRoIHRoZSBwcm9wZXIgdHlwZScpOwogICAgICAgICB9CiAgICAgICAgIC8vIFRPRE86IFRoaXMg
aXMgd3JvbmcgaWYgdGhlcmUgYXJlIG11bHRpcGxlIG9wZXJhdGlvbnMgd2l0aCB0aGUgc2FtZQog
ICAgICAgICAvLyBpZGVudGlmaWVyLgogICAgICAgICAvLyBUT0RPOiBUZXN0IHBhc3NpbmcgYXJn
dW1lbnRzIG9mIHRoZSB3cm9uZyB0eXBlLgogICAgICAgICBpZiAobWVtYmVyLnR5cGUgPT0gIm9w
ZXJhdGlvbiIgJiYgbWVtYmVyLm5hbWUgJiYgbWVtYmVyLmFyZ3VtZW50cy5sZW5ndGgpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIHZhciBhX3Rlc3QgPSBhc3luY190ZXN0KCB0aGlzLm5hbWUgKyAi
IGludGVyZmFjZTogY2FsbGluZyAiICsgbWVtYmVyLm5hbWUgKwotICAgICAgICAgICAgIigiICsg
bWVtYmVyLmFyZ3VtZW50cy5tYXAoZnVuY3Rpb24obSkgeyByZXR1cm4gbS5pZGxUeXBlLmlkbFR5
cGU7IH0pICsKLSAgICAgICAgICAgICIpIG9uICIgKyBkZXNjICsgIiB3aXRoIHRvbyBmZXcgYXJn
dW1lbnRzIG11c3QgdGhyb3cgVHlwZUVycm9yIik7CisgICAgICAgICAgICB2YXIgZGVzY3JpcHRp
b24gPQorICAgICAgICAgICAgICAgIHRoaXMubmFtZSArICIgaW50ZXJmYWNlOiBjYWxsaW5nICIg
KyBtZW1iZXIgKyAiIG9uICIgKyBkZXNjICsKKyAgICAgICAgICAgICAgICAiIHdpdGggdG9vIGZl
dyBhcmd1bWVudHMgbXVzdCB0aHJvdyBUeXBlRXJyb3IiOworICAgICAgICAgICAgdmFyIGFfdGVz
dCA9IHN1YnNldFRlc3RCeUtleSh0aGlzLm5hbWUsIGFzeW5jX3Rlc3QsIGRlc2NyaXB0aW9uKTsK
ICAgICAgICAgICAgIGFfdGVzdC5zdGVwKGZ1bmN0aW9uKCkKICAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGV4Y2VwdGlvbiwgbnVsbCwgIlVuZXhwZWN0ZWQgZXhj
ZXB0aW9uIHdoZW4gZXZhbHVhdGluZyBvYmplY3QiKTsKICAgICAgICAgICAgICAgICBhc3NlcnRf
ZXF1YWxzKHR5cGVvZiBvYmosIGV4cGVjdGVkX3R5cGVvZiwgIndyb25nIHR5cGVvZiBvYmplY3Qi
KTsKLSAgICAgICAgICAgICAgICBpZiAoIW1lbWJlclsic3RhdGljIl0pIHsKKyAgICAgICAgICAg
ICAgICB2YXIgZm47CisgICAgICAgICAgICAgICAgaWYgKG1lbWJlci5zcGVjaWFsICE9PSAic3Rh
dGljIikgewogICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaXNfZ2xvYmFsKCkgJiYgIW1l
bWJlci5pc1VuZm9yZ2VhYmxlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnRfaW5o
ZXJpdHMob2JqLCBtZW1iZXIubmFtZSk7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KG9iaiwgbWVtYmVyLm5h
bWUpOwogICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGZuID0gb2Jq
W21lbWJlci5uYW1lXTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKG1lbWJl
ci5uYW1lIGluIG9iaik7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydF9vd25fcHJvcGVydHko
b2JqLmNvbnN0cnVjdG9yLCBtZW1iZXIubmFtZSwgImludGVyZmFjZSBvYmplY3QgbXVzdCBoYXZl
IHN0YXRpYyBvcGVyYXRpb24gYXMgb3duIHByb3BlcnR5Iik7CisgICAgICAgICAgICAgICAgICAg
IGZuID0gb2JqLmNvbnN0cnVjdG9yW21lbWJlci5uYW1lXTsKICAgICAgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgICAgICB2YXIgbWluTGVuZ3RoID0gbWluT3ZlcmxvYWRMZW5ndGgodGhpcy5t
ZW1iZXJzLmZpbHRlcihmdW5jdGlvbihtKSB7CkBAIC0xNzA0LDcgKzI4NDQsNyBAQCBJZGxJbnRl
cmZhY2UucHJvdG90eXBlLnRlc3RfaW50ZXJmYWNlX29mID0gZnVuY3Rpb24oZGVzYywgb2JqLCBl
eGNlcHRpb24sIGV4cGVjdAogICAgICAgICAgICAgICAgIHZhciBhcmdzID0gW107CiAgICAgICAg
ICAgICAgICAgdmFyIGNiID0gYXdhaXROQ2FsbGJhY2tzKG1pbkxlbmd0aCwgYV90ZXN0LmRvbmUu
YmluZChhX3Rlc3QpKTsKICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1pbkxl
bmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRocm93T3JSZWplY3QoYV90ZXN0LCBt
ZW1iZXIsIG9ialttZW1iZXIubmFtZV0sIG9iaiwgYXJncywgICJDYWxsZWQgd2l0aCAiICsgaSAr
ICIgYXJndW1lbnRzIiwgY2IpOworICAgICAgICAgICAgICAgICAgICB0aHJvd09yUmVqZWN0KGFf
dGVzdCwgbWVtYmVyLCBmbiwgb2JqLCBhcmdzLCAiQ2FsbGVkIHdpdGggIiArIGkgKyAiIGFyZ3Vt
ZW50cyIsIGNiKTsKIAogICAgICAgICAgICAgICAgICAgICBhcmdzLnB1c2goY3JlYXRlX3N1aXRh
YmxlX29iamVjdChtZW1iZXIuYXJndW1lbnRzW2ldLmlkbFR5cGUpKTsKICAgICAgICAgICAgICAg
ICB9CkBAIC0xNzEzLDE0ICsyODUzLDIxIEBAIElkbEludGVyZmFjZS5wcm90b3R5cGUudGVzdF9p
bnRlcmZhY2Vfb2YgPSBmdW5jdGlvbihkZXNjLCBvYmosIGV4Y2VwdGlvbiwgZXhwZWN0CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgfS5iaW5kKHRoaXMpKTsKICAgICAgICAgfQorCisg
ICAgICAgIGlmIChtZW1iZXIuaXNfdG9fanNvbl9yZWd1bGFyX29wZXJhdGlvbigpKSB7CisgICAg
ICAgICAgICB0aGlzLnRlc3RfdG9fanNvbl9vcGVyYXRpb24oZGVzYywgb2JqLCBtZW1iZXIpOwor
ICAgICAgICB9CiAgICAgfQogfTsKIAotLy9AfQogSWRsSW50ZXJmYWNlLnByb3RvdHlwZS5oYXNf
c3RyaW5naWZpZXIgPSBmdW5jdGlvbigpCi0vL0B7CiB7Ci0gICAgaWYgKHRoaXMubWVtYmVycy5z
b21lKGZ1bmN0aW9uKG1lbWJlcikgeyByZXR1cm4gbWVtYmVyLnN0cmluZ2lmaWVyOyB9KSkgewor
ICAgIGlmICh0aGlzLm5hbWUgPT09ICJET01FeGNlcHRpb24iKSB7CisgICAgICAgIC8vIHRvU3Ry
aW5nIGlzIGluaGVyaXRlZCBmcm9tIEVycm9yLCBzbyBkb24ndCBhc3N1bWUgd2UgaGF2ZSB0aGUK
KyAgICAgICAgLy8gZGVmYXVsdCBzdHJpbmdpZmVyCisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKyAgICBpZiAodGhpcy5tZW1iZXJzLnNvbWUoZnVuY3Rpb24obWVtYmVyKSB7IHJldHVybiBt
ZW1iZXIuc3BlY2lhbCA9PT0gInN0cmluZ2lmaWVyIjsgfSkpIHsKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogICAgIGlmICh0aGlzLmJhc2UgJiYKQEAgLTE3MzAsOSArMjg3Nyw3IEBAIElk
bEludGVyZmFjZS5wcm90b3R5cGUuaGFzX3N0cmluZ2lmaWVyID0gZnVuY3Rpb24oKQogICAgIHJl
dHVybiBmYWxzZTsKIH07CiAKLS8vQH0KIElkbEludGVyZmFjZS5wcm90b3R5cGUuZG9faW50ZXJm
YWNlX2F0dHJpYnV0ZV9hc3NlcnRzID0gZnVuY3Rpb24ob2JqLCBtZW1iZXIsIGFfdGVzdCkKLS8v
QHsKIHsKICAgICAvLyBUaGlzIGZ1bmN0aW9uIHRlc3RzIFdlYklETCBhcyBvZiAyMDE1LTAxLTI3
LgogICAgIC8vIFRPRE86IENvbnNpZGVyIFtFeHBvc2VkXS4KQEAgLTE3NDMsMjcgKzI4ODgsMjIg
QEAgSWRsSW50ZXJmYWNlLnByb3RvdHlwZS5kb19pbnRlcmZhY2VfYXR0cmlidXRlX2Fzc2VydHMg
PSBmdW5jdGlvbihvYmosIG1lbWJlciwgYV8KIAogICAgIHZhciBwZW5kaW5nUHJvbWlzZXMgPSBb
XTsKIAotICAgIC8vICJGb3IgZWFjaCBleHBvc2VkIGF0dHJpYnV0ZSBvZiB0aGUgaW50ZXJmYWNl
LCB3aGV0aGVyIGl0IHdhcyBkZWNsYXJlZCBvbgotICAgIC8vIHRoZSBpbnRlcmZhY2UgaXRzZWxm
IG9yIG9uZSBvZiBpdHMgY29uc2VxdWVudGlhbCBpbnRlcmZhY2VzLCB0aGVyZSBNVVNUCi0gICAg
Ly8gZXhpc3QgYSBjb3JyZXNwb25kaW5nIHByb3BlcnR5LiBUaGUgY2hhcmFjdGVyaXN0aWNzIG9m
IHRoaXMgcHJvcGVydHkgYXJlCi0gICAgLy8gYXMgZm9sbG93czoiCi0KICAgICAvLyAiVGhlIG5h
bWUgb2YgdGhlIHByb3BlcnR5IGlzIHRoZSBpZGVudGlmaWVyIG9mIHRoZSBhdHRyaWJ1dGUuIgog
ICAgIGFzc2VydF9vd25fcHJvcGVydHkob2JqLCBtZW1iZXIubmFtZSk7CiAKICAgICAvLyAiVGhl
IHByb3BlcnR5IGhhcyBhdHRyaWJ1dGVzIHsgW1tHZXRdXTogRywgW1tTZXRdXTogUywgW1tFbnVt
ZXJhYmxlXV06CiAgICAgLy8gdHJ1ZSwgW1tDb25maWd1cmFibGVdXTogY29uZmlndXJhYmxlIH0s
IHdoZXJlOgogICAgIC8vICJjb25maWd1cmFibGUgaXMgZmFsc2UgaWYgdGhlIGF0dHJpYnV0ZSB3
YXMgZGVjbGFyZWQgd2l0aCB0aGUKLSAgICAvLyBbVW5mb3JnZWFibGVdIGV4dGVuZGVkIGF0dHJp
YnV0ZSBhbmQgdHJ1ZSBvdGhlcndpc2U7CisgICAgLy8gW0xlZ2FjeVVuZm9yZ2VhYmxlXSBleHRl
bmRlZCBhdHRyaWJ1dGUgYW5kIHRydWUgb3RoZXJ3aXNlOwogICAgIC8vICJHIGlzIHRoZSBhdHRy
aWJ1dGUgZ2V0dGVyLCBkZWZpbmVkIGJlbG93OyBhbmQKICAgICAvLyAiUyBpcyB0aGUgYXR0cmli
dXRlIHNldHRlciwgYWxzbyBkZWZpbmVkIGJlbG93LiIKICAgICB2YXIgZGVzYyA9IE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBtZW1iZXIubmFtZSk7Ci0gICAgYXNzZXJ0X2Zh
bHNlKCJ2YWx1ZSIgaW4gZGVzYywgJ3Byb3BlcnR5IGRlc2NyaXB0b3IgaGFzIHZhbHVlIGJ1dCBp
cyBzdXBwb3NlZCB0byBiZSBhY2Nlc3NvcicpOwotICAgIGFzc2VydF9mYWxzZSgid3JpdGFibGUi
IGluIGRlc2MsICdwcm9wZXJ0eSBkZXNjcmlwdG9yIGhhcyAid3JpdGFibGUiIGZpZWxkIGJ1dCBp
cyBzdXBwb3NlZCB0byBiZSBhY2Nlc3NvcicpOwotICAgIGFzc2VydF90cnVlKGRlc2MuZW51bWVy
YWJsZSwgInByb3BlcnR5IGlzIG5vdCBlbnVtZXJhYmxlIik7CisgICAgYXNzZXJ0X2ZhbHNlKCJ2
YWx1ZSIgaW4gZGVzYywgJ3Byb3BlcnR5IGRlc2NyaXB0b3Igc2hvdWxkIG5vdCBoYXZlIGEgInZh
bHVlIiBmaWVsZCcpOworICAgIGFzc2VydF9mYWxzZSgid3JpdGFibGUiIGluIGRlc2MsICdwcm9w
ZXJ0eSBkZXNjcmlwdG9yIHNob3VsZCBub3QgaGF2ZSBhICJ3cml0YWJsZSIgZmllbGQnKTsKKyAg
ICBhc3NlcnRfdHJ1ZShkZXNjLmVudW1lcmFibGUsICJwcm9wZXJ0eSBzaG91bGQgYmUgZW51bWVy
YWJsZSIpOwogICAgIGlmIChtZW1iZXIuaXNVbmZvcmdlYWJsZSkKICAgICB7Ci0gICAgICAgIGFz
c2VydF9mYWxzZShkZXNjLmNvbmZpZ3VyYWJsZSwgIltVbmZvcmdlYWJsZV0gcHJvcGVydHkgbXVz
dCBub3QgYmUgY29uZmlndXJhYmxlIik7CisgICAgICAgIGFzc2VydF9mYWxzZShkZXNjLmNvbmZp
Z3VyYWJsZSwgIltMZWdhY3lVbmZvcmdlYWJsZV0gcHJvcGVydHkgbXVzdCBub3QgYmUgY29uZmln
dXJhYmxlIik7CiAgICAgfQogICAgIGVsc2UKICAgICB7CkBAIC0xNzc2LDE5ICsyOTE2LDE5IEBA
IElkbEludGVyZmFjZS5wcm90b3R5cGUuZG9faW50ZXJmYWNlX2F0dHJpYnV0ZV9hc3NlcnRzID0g
ZnVuY3Rpb24ob2JqLCBtZW1iZXIsIGFfCiAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgZGVzYy5n
ZXQsICJmdW5jdGlvbiIsICJnZXR0ZXIgbXVzdCBiZSBGdW5jdGlvbiIpOwogCiAgICAgLy8gIklm
IHRoZSBhdHRyaWJ1dGUgaXMgYSByZWd1bGFyIGF0dHJpYnV0ZSwgdGhlbjoiCi0gICAgaWYgKCFt
ZW1iZXJbInN0YXRpYyJdKSB7CisgICAgaWYgKG1lbWJlci5zcGVjaWFsICE9PSAic3RhdGljIikg
ewogICAgICAgICAvLyAiSWYgTyBpcyBub3QgYSBwbGF0Zm9ybSBvYmplY3QgdGhhdCBpbXBsZW1l
bnRzIEksIHRoZW46Ci0gICAgICAgIC8vICJJZiB0aGUgYXR0cmlidXRlIHdhcyBzcGVjaWZpZWQg
d2l0aCB0aGUgW0xlbmllbnRUaGlzXSBleHRlbmRlZAorICAgICAgICAvLyAiSWYgdGhlIGF0dHJp
YnV0ZSB3YXMgc3BlY2lmaWVkIHdpdGggdGhlIFtMZWdhY3lMZW5pZW50VGhpc10gZXh0ZW5kZWQK
ICAgICAgICAgLy8gYXR0cmlidXRlLCB0aGVuIHJldHVybiB1bmRlZmluZWQuCiAgICAgICAgIC8v
ICJPdGhlcndpc2UsIHRocm93IGEgVHlwZUVycm9yLiIKLSAgICAgICAgaWYgKCFtZW1iZXIuaGFz
X2V4dGVuZGVkX2F0dHJpYnV0ZSgiTGVuaWVudFRoaXMiKSkgeworICAgICAgICBpZiAoIW1lbWJl
ci5oYXNfZXh0ZW5kZWRfYXR0cmlidXRlKCJMZWdhY3lMZW5pZW50VGhpcyIpKSB7CiAgICAgICAg
ICAgICBpZiAobWVtYmVyLmlkbFR5cGUuZ2VuZXJpYyAhPT0gIlByb21pc2UiKSB7Ci0gICAgICAg
ICAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgICAgIGFzc2VydF90aHJvd3NfanMoZ2xvYmFsT2YoZGVzYy5nZXQpLlR5cGVFcnJv
ciwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgIGRlc2MuZ2V0LmNhbGwoe30pOwog
ICAgICAgICAgICAgICAgIH0uYmluZCh0aGlzKSwgImNhbGxpbmcgZ2V0dGVyIG9uIHdyb25nIG9i
amVjdCB0eXBlIG11c3QgdGhyb3cgVHlwZUVycm9yIik7CiAgICAgICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgICAgIHBlbmRpbmdQcm9taXNlcy5wdXNoKAotICAgICAgICAgICAgICAgICAg
ICBwcm9taXNlX3JlamVjdHMoYV90ZXN0LCBuZXcgVHlwZUVycm9yKCksIGRlc2MuZ2V0LmNhbGwo
e30pLAorICAgICAgICAgICAgICAgICAgICBwcm9taXNlX3JlamVjdHNfanMoYV90ZXN0LCBUeXBl
RXJyb3IsIGRlc2MuZ2V0LmNhbGwoe30pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgImNhbGxpbmcgZ2V0dGVyIG9uIHdyb25nIG9iamVjdCB0eXBlIG11c3QgcmVqZWN0IHRo
ZSByZXR1cm4gcHJvbWlzZSB3aXRoIFR5cGVFcnJvciIpKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfSBlbHNlIHsKQEAgLTE4MDEsMTAgKzI5NDEsMTYgQEAgSWRsSW50ZXJmYWNlLnByb3RvdHlw
ZS5kb19pbnRlcmZhY2VfYXR0cmlidXRlX2Fzc2VydHMgPSBmdW5jdGlvbihvYmosIG1lbWJlciwg
YV8KICAgICAvLyB2YWx1ZSAwLiIKICAgICBhc3NlcnRfZXF1YWxzKGRlc2MuZ2V0Lmxlbmd0aCwg
MCwgImdldHRlciBsZW5ndGggbXVzdCBiZSAwIik7CiAKKyAgICAvLyAiTGV0IG5hbWUgYmUgdGhl
IHN0cmluZyAiZ2V0ICIgcHJlcGVuZGVkIHRvIGF0dHJpYnV0ZeKAmXMgaWRlbnRpZmllci4iCisg
ICAgLy8gIlBlcmZvcm0gISBTZXRGdW5jdGlvbk5hbWUoRiwgbmFtZSkuIgorICAgIGFzc2VydF9l
cXVhbHMoZGVzYy5nZXQubmFtZSwgImdldCAiICsgbWVtYmVyLm5hbWUsCisgICAgICAgICJnZXR0
ZXIgbXVzdCBoYXZlIHRoZSBuYW1lICdnZXQgIiArIG1lbWJlci5uYW1lICsgIiciKTsKKwogCiAg
ICAgLy8gVE9ETzogVGVzdCBjYWxsaW5nIHNldHRlciBvbiB0aGUgaW50ZXJmYWNlIHByb3RvdHlw
ZSAoc2hvdWxkIHRocm93CiAgICAgLy8gVHlwZUVycm9yIGluIG1vc3QgY2FzZXMpLgogICAgIGlm
IChtZW1iZXIucmVhZG9ubHkKKyAgICAmJiAhbWVtYmVyLmhhc19leHRlbmRlZF9hdHRyaWJ1dGUo
IkxlZ2FjeUxlbmllbnRTZXR0ZXIiKQogICAgICYmICFtZW1iZXIuaGFzX2V4dGVuZGVkX2F0dHJp
YnV0ZSgiUHV0Rm9yd2FyZHMiKQogICAgICYmICFtZW1iZXIuaGFzX2V4dGVuZGVkX2F0dHJpYnV0
ZSgiUmVwbGFjZWFibGUiKSkKICAgICB7CkBAIC0xODIwLDE1ICsyOTY2LDE1IEBAIElkbEludGVy
ZmFjZS5wcm90b3R5cGUuZG9faW50ZXJmYWNlX2F0dHJpYnV0ZV9hc3NlcnRzID0gZnVuY3Rpb24o
b2JqLCBtZW1iZXIsIGFfCiAgICAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIGRlc2Muc2V0LCAi
ZnVuY3Rpb24iLCAic2V0dGVyIG11c3QgYmUgZnVuY3Rpb24gZm9yIFB1dEZvcndhcmRzLCBSZXBs
YWNlYWJsZSwgb3Igbm9uLXJlYWRvbmx5IGF0dHJpYnV0ZXMiKTsKIAogICAgICAgICAvLyAiSWYg
dGhlIGF0dHJpYnV0ZSBpcyBhIHJlZ3VsYXIgYXR0cmlidXRlLCB0aGVuOiIKLSAgICAgICAgaWYg
KCFtZW1iZXJbInN0YXRpYyJdKSB7CisgICAgICAgIGlmIChtZW1iZXIuc3BlY2lhbCAhPT0gInN0
YXRpYyIpIHsKICAgICAgICAgICAgIC8vICJJZiAvdmFsaWRUaGlzLyBpcyBmYWxzZSBhbmQgdGhl
IGF0dHJpYnV0ZSB3YXMgbm90IHNwZWNpZmllZAotICAgICAgICAgICAgLy8gd2l0aCB0aGUgW0xl
bmllbnRUaGlzXSBleHRlbmRlZCBhdHRyaWJ1dGUsIHRoZW4gdGhyb3cgYQorICAgICAgICAgICAg
Ly8gd2l0aCB0aGUgW0xlZ2FjeUxlbmllbnRUaGlzXSBleHRlbmRlZCBhdHRyaWJ1dGUsIHRoZW4g
dGhyb3cgYQogICAgICAgICAgICAgLy8gVHlwZUVycm9yLiIKICAgICAgICAgICAgIC8vICJJZiB0
aGUgYXR0cmlidXRlIGlzIGRlY2xhcmVkIHdpdGggYSBbUmVwbGFjZWFibGVdIGV4dGVuZGVkCiAg
ICAgICAgICAgICAvLyBhdHRyaWJ1dGUsIHRoZW46IC4uLiIKICAgICAgICAgICAgIC8vICJJZiB2
YWxpZFRoaXMgaXMgZmFsc2UsIHRoZW4gcmV0dXJuLiIKLSAgICAgICAgICAgIGlmICghbWVtYmVy
Lmhhc19leHRlbmRlZF9hdHRyaWJ1dGUoIkxlbmllbnRUaGlzIikpIHsKLSAgICAgICAgICAgICAg
ICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICBpZiAoIW1lbWJlci5oYXNfZXh0ZW5kZWRfYXR0cmlidXRlKCJMZWdhY3lMZW5pZW50VGhpcyIp
KSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhnbG9iYWxPZihkZXNjLnNldCku
VHlwZUVycm9yLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgZGVzYy5zZXQuY2Fs
bCh7fSk7CiAgICAgICAgICAgICAgICAgfS5iaW5kKHRoaXMpLCAiY2FsbGluZyBzZXR0ZXIgb24g
d3Jvbmcgb2JqZWN0IHR5cGUgbXVzdCB0aHJvdyBUeXBlRXJyb3IiKTsKICAgICAgICAgICAgIH0g
ZWxzZSB7CkBAIC0xODQwLDIyICsyOTg2LDI1IEBAIElkbEludGVyZmFjZS5wcm90b3R5cGUuZG9f
aW50ZXJmYWNlX2F0dHJpYnV0ZV9hc3NlcnRzID0gZnVuY3Rpb24ob2JqLCBtZW1iZXIsIGFfCiAg
ICAgICAgIC8vICJUaGUgdmFsdWUgb2YgdGhlIEZ1bmN0aW9uIG9iamVjdOKAmXMg4oCcbGVuZ3Ro
4oCdIHByb3BlcnR5IGlzIHRoZSBOdW1iZXIKICAgICAgICAgLy8gdmFsdWUgMS4iCiAgICAgICAg
IGFzc2VydF9lcXVhbHMoZGVzYy5zZXQubGVuZ3RoLCAxLCAic2V0dGVyIGxlbmd0aCBtdXN0IGJl
IDEiKTsKKworICAgICAgICAvLyAiTGV0IG5hbWUgYmUgdGhlIHN0cmluZyAic2V0ICIgcHJlcGVu
ZGVkIHRvIGlkLiIKKyAgICAgICAgLy8gIlBlcmZvcm0gISBTZXRGdW5jdGlvbk5hbWUoRiwgbmFt
ZSkuIgorICAgICAgICBhc3NlcnRfZXF1YWxzKGRlc2Muc2V0Lm5hbWUsICJzZXQgIiArIG1lbWJl
ci5uYW1lLAorICAgICAgICAgICAgIlRoZSBhdHRyaWJ1dGUgc2V0dGVyIG11c3QgaGF2ZSB0aGUg
bmFtZSAnc2V0ICIgKyBtZW1iZXIubmFtZSArICInIik7CiAgICAgfQogCiAgICAgUHJvbWlzZS5h
bGwocGVuZGluZ1Byb21pc2VzKS50aGVuKGFfdGVzdC5kb25lLmJpbmQoYV90ZXN0KSk7CiB9Ci0v
L0B9CiAKIC8vLyBJZGxJbnRlcmZhY2VNZW1iZXIgLy8vCiBmdW5jdGlvbiBJZGxJbnRlcmZhY2VN
ZW1iZXIob2JqKQotLy9AewogewogICAgIC8qKgogICAgICAqIG9iaiBpcyBhbiBvYmplY3QgcHJv
ZHVjZWQgYnkgdGhlIFdlYklETFBhcnNlci5qcyAiaWZNZW1iZXIiIHByb2R1Y3Rpb24uCiAgICAg
ICogV2UganVzdCBmb3J3YXJkIGFsbCBwcm9wZXJ0aWVzIHRvIHRoaXMgb2JqZWN0IHdpdGhvdXQg
bW9kaWZpY2F0aW9uLAogICAgICAqIGV4Y2VwdCBmb3Igc3BlY2lhbCBleHRBdHRycyBoYW5kbGlu
Zy4KICAgICAgKi8KLSAgICBmb3IgKHZhciBrIGluIG9iaikKKyAgICBmb3IgKHZhciBrIGluIG9i
ai50b0pTT04oKSkKICAgICB7CiAgICAgICAgIHRoaXNba10gPSBvYmpba107CiAgICAgfQpAQCAt
MTg2NCwxNSArMzAxMyw1MiBAQCBmdW5jdGlvbiBJZGxJbnRlcmZhY2VNZW1iZXIob2JqKQogICAg
ICAgICB0aGlzLmV4dEF0dHJzID0gW107CiAgICAgfQogCi0gICAgdGhpcy5pc1VuZm9yZ2VhYmxl
ID0gdGhpcy5oYXNfZXh0ZW5kZWRfYXR0cmlidXRlKCJVbmZvcmdlYWJsZSIpOworICAgIHRoaXMu
aXNVbmZvcmdlYWJsZSA9IHRoaXMuaGFzX2V4dGVuZGVkX2F0dHJpYnV0ZSgiTGVnYWN5VW5mb3Jn
ZWFibGUiKTsKKyAgICB0aGlzLmlzVW5zY29wYWJsZSA9IHRoaXMuaGFzX2V4dGVuZGVkX2F0dHJp
YnV0ZSgiVW5zY29wYWJsZSIpOwogfQogCi0vL0B9CiBJZGxJbnRlcmZhY2VNZW1iZXIucHJvdG90
eXBlID0gT2JqZWN0LmNyZWF0ZShJZGxPYmplY3QucHJvdG90eXBlKTsKIAorSWRsSW50ZXJmYWNl
TWVtYmVyLnByb3RvdHlwZS50b0pTT04gPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gdGhpczsK
K307CisKK0lkbEludGVyZmFjZU1lbWJlci5wcm90b3R5cGUuaXNfdG9fanNvbl9yZWd1bGFyX29w
ZXJhdGlvbiA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiB0aGlzLnR5cGUgPT0gIm9wZXJhdGlv
biIgJiYgdGhpcy5zcGVjaWFsICE9PSAic3RhdGljIiAmJiB0aGlzLm5hbWUgPT0gInRvSlNPTiI7
Cit9OworCitJZGxJbnRlcmZhY2VNZW1iZXIucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24o
KSB7CisgICAgZnVuY3Rpb24gZm9ybWF0VHlwZSh0eXBlKSB7CisgICAgICAgIHZhciByZXN1bHQ7
CisgICAgICAgIGlmICh0eXBlLmdlbmVyaWMpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IHR5cGUu
Z2VuZXJpYyArICI8IiArIHR5cGUuaWRsVHlwZS5tYXAoZm9ybWF0VHlwZSkuam9pbigiLCAiKSAr
ICI+IjsKKyAgICAgICAgfSBlbHNlIGlmICh0eXBlLnVuaW9uKSB7CisgICAgICAgICAgICByZXN1
bHQgPSAiKCIgKyB0eXBlLnN1YnR5cGUubWFwKGZvcm1hdFR5cGUpLmpvaW4oIiBvciAiKSArICIp
IjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IHR5cGUuaWRsVHlwZTsK
KyAgICAgICAgfQorICAgICAgICBpZiAodHlwZS5udWxsYWJsZSkgeworICAgICAgICAgICAgcmVz
dWx0ICs9ICI/IgorICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisg
ICAgaWYgKHRoaXMudHlwZSA9PT0gIm9wZXJhdGlvbiIpIHsKKyAgICAgICAgdmFyIGFyZ3MgPSB0
aGlzLmFyZ3VtZW50cy5tYXAoZnVuY3Rpb24obSkgeworICAgICAgICAgICAgcmV0dXJuIFsKKyAg
ICAgICAgICAgICAgICBtLm9wdGlvbmFsID8gIm9wdGlvbmFsICIgOiAiIiwKKyAgICAgICAgICAg
ICAgICBmb3JtYXRUeXBlKG0uaWRsVHlwZSksCisgICAgICAgICAgICAgICAgbS52YXJpYWRpYyA/
ICIuLi4iIDogIiIsCisgICAgICAgICAgICBdLmpvaW4oIiIpOworICAgICAgICB9KS5qb2luKCIs
ICIpOworICAgICAgICByZXR1cm4gdGhpcy5uYW1lICsgIigiICsgYXJncyArICIpIjsKKyAgICB9
CisKKyAgICByZXR1cm4gdGhpcy5uYW1lOworfQorCiAvLy8gSW50ZXJuYWwgaGVscGVyIGZ1bmN0
aW9ucyAvLy8KIGZ1bmN0aW9uIGNyZWF0ZV9zdWl0YWJsZV9vYmplY3QodHlwZSkKLS8vQHsKIHsK
ICAgICAvKioKICAgICAgKiB0eXBlIGlzIGFuIG9iamVjdCBwcm9kdWNlZCBieSB0aGUgV2ViSURM
UGFyc2VyLmpzICJ0eXBlIiBwcm9kdWN0aW9uLiAgV2UKQEAgLTE5MDgsMTIgKzMwOTQsMTAgQEAg
ZnVuY3Rpb24gY3JlYXRlX3N1aXRhYmxlX29iamVjdCh0eXBlKQogICAgIH0KICAgICByZXR1cm4g
bnVsbDsKIH0KLS8vQH0KIAogLy8vIElkbEVudW0gLy8vCiAvLyBVc2VkIGZvciBJZGxBcnJheS5w
cm90b3R5cGUuYXNzZXJ0X3R5cGVfaXMKIGZ1bmN0aW9uIElkbEVudW0ob2JqKQotLy9Aewogewog
ICAgIC8qKgogICAgICAqIG9iaiBpcyBhbiBvYmplY3QgcHJvZHVjZWQgYnkgdGhlIFdlYklETFBh
cnNlci5qcyAiZGljdGlvbmFyeSIKQEAgLTE5MjcsMTQgKzMxMTEsMzAgQEAgZnVuY3Rpb24gSWRs
RW51bShvYmopCiAgICAgdGhpcy52YWx1ZXMgPSBvYmoudmFsdWVzOwogCiB9Ci0vL0B9CiAKIElk
bEVudW0ucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShJZGxPYmplY3QucHJvdG90eXBlKTsKIAor
Ly8vIElkbENhbGxiYWNrIC8vLworLy8gVXNlZCBmb3IgSWRsQXJyYXkucHJvdG90eXBlLmFzc2Vy
dF90eXBlX2lzCitmdW5jdGlvbiBJZGxDYWxsYmFjayhvYmopCit7CisgICAgLyoqCisgICAgICog
b2JqIGlzIGFuIG9iamVjdCBwcm9kdWNlZCBieSB0aGUgV2ViSURMUGFyc2VyLmpzICJjYWxsYmFj
ayIKKyAgICAgKiBwcm9kdWN0aW9uLgorICAgICAqLworCisgICAgLyoqIFNlbGYtZXhwbGFuYXRv
cnkuICovCisgICAgdGhpcy5uYW1lID0gb2JqLm5hbWU7CisKKyAgICAvKiogQXJndW1lbnRzIGZv
ciB0aGUgY2FsbGJhY2suICovCisgICAgdGhpcy5hcmd1bWVudHMgPSBvYmouYXJndW1lbnRzOwor
fQorCitJZGxDYWxsYmFjay5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKElkbE9iamVjdC5wcm90
b3R5cGUpOworCiAvLy8gSWRsVHlwZWRlZiAvLy8KIC8vIFVzZWQgZm9yIElkbEFycmF5LnByb3Rv
dHlwZS5hc3NlcnRfdHlwZV9pcwogZnVuY3Rpb24gSWRsVHlwZWRlZihvYmopCi0vL0B7CiB7CiAg
ICAgLyoqCiAgICAgICogb2JqIGlzIGFuIG9iamVjdCBwcm9kdWNlZCBieSB0aGUgV2ViSURMUGFy
c2VyLmpzICJ0eXBlZGVmIgpAQCAtMTk0NCwxMyArMzE0NCwyNjQgQEAgZnVuY3Rpb24gSWRsVHlw
ZWRlZihvYmopCiAgICAgLyoqIFNlbGYtZXhwbGFuYXRvcnkuICovCiAgICAgdGhpcy5uYW1lID0g
b2JqLm5hbWU7CiAKLSAgICAvKiogQW4gYXJyYXkgb2YgdmFsdWVzIHByb2R1Y2VkIGJ5IHRoZSAi
dHlwZWRlZiIgcHJvZHVjdGlvbi4gKi8KLSAgICB0aGlzLnZhbHVlcyA9IG9iai52YWx1ZXM7Cisg
ICAgLyoqIFRoZSBpZGxUeXBlIHRoYXQgd2UgYXJlIHN1cHBvc2VkIHRvIGJlIHR5cGVkZWZmaW5n
IHRvLiAqLworICAgIHRoaXMuaWRsVHlwZSA9IG9iai5pZGxUeXBlOwogCiB9Ci0vL0B9CiAKIElk
bFR5cGVkZWYucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShJZGxPYmplY3QucHJvdG90eXBlKTsK
IAorLy8vIElkbE5hbWVzcGFjZSAvLy8KK2Z1bmN0aW9uIElkbE5hbWVzcGFjZShvYmopCit7Cisg
ICAgdGhpcy5uYW1lID0gb2JqLm5hbWU7CisgICAgdGhpcy5leHRBdHRycyA9IG9iai5leHRBdHRy
czsKKyAgICB0aGlzLnVudGVzdGVkID0gb2JqLnVudGVzdGVkOworICAgIC8qKiBBIGJhY2stcmVm
ZXJlbmNlIHRvIG91ciBJZGxBcnJheS4gKi8KKyAgICB0aGlzLmFycmF5ID0gb2JqLmFycmF5Owor
CisgICAgLyoqIEFuIGFycmF5IG9mIElkbEludGVyZmFjZU1lbWJlcnMuICovCisgICAgdGhpcy5t
ZW1iZXJzID0gb2JqLm1lbWJlcnMubWFwKG0gPT4gbmV3IElkbEludGVyZmFjZU1lbWJlcihtKSk7
Cit9CisKK0lkbE5hbWVzcGFjZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKElkbE9iamVjdC5w
cm90b3R5cGUpOworCitJZGxOYW1lc3BhY2UucHJvdG90eXBlLmRvX21lbWJlcl9vcGVyYXRpb25f
YXNzZXJ0cyA9IGZ1bmN0aW9uIChtZW1iZXJIb2xkZXJPYmplY3QsIG1lbWJlciwgYV90ZXN0KQor
eworICAgIHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihtZW1iZXJI
b2xkZXJPYmplY3QsIG1lbWJlci5uYW1lKTsKKworICAgIGFzc2VydF9mYWxzZSgiZ2V0IiBpbiBk
ZXNjLCAicHJvcGVydHkgc2hvdWxkIG5vdCBoYXZlIGEgZ2V0dGVyIik7CisgICAgYXNzZXJ0X2Zh
bHNlKCJzZXQiIGluIGRlc2MsICJwcm9wZXJ0eSBzaG91bGQgbm90IGhhdmUgYSBzZXR0ZXIiKTsK
KyAgICBhc3NlcnRfZXF1YWxzKAorICAgICAgICBkZXNjLndyaXRhYmxlLAorICAgICAgICAhbWVt
YmVyLmlzVW5mb3JnZWFibGUsCisgICAgICAgICJwcm9wZXJ0eSBzaG91bGQgYmUgd3JpdGFibGUg
aWYgYW5kIG9ubHkgaWYgbm90IHVuZm9yZ2VhYmxlIik7CisgICAgYXNzZXJ0X3RydWUoZGVzYy5l
bnVtZXJhYmxlLCAicHJvcGVydHkgc2hvdWxkIGJlIGVudW1lcmFibGUiKTsKKyAgICBhc3NlcnRf
ZXF1YWxzKAorICAgICAgICBkZXNjLmNvbmZpZ3VyYWJsZSwKKyAgICAgICAgIW1lbWJlci5pc1Vu
Zm9yZ2VhYmxlLAorICAgICAgICAicHJvcGVydHkgc2hvdWxkIGJlIGNvbmZpZ3VyYWJsZSBpZiBh
bmQgb25seSBpZiBub3QgdW5mb3JnZWFibGUiKTsKKworICAgIGFzc2VydF9lcXVhbHMoCisgICAg
ICAgIHR5cGVvZiBtZW1iZXJIb2xkZXJPYmplY3RbbWVtYmVyLm5hbWVdLAorICAgICAgICAiZnVu
Y3Rpb24iLAorICAgICAgICAgInByb3BlcnR5IG11c3QgYmUgYSBmdW5jdGlvbiIpOworCisgICAg
YXNzZXJ0X2VxdWFscygKKyAgICAgICAgbWVtYmVySG9sZGVyT2JqZWN0W21lbWJlci5uYW1lXS5s
ZW5ndGgsCisgICAgICAgIG1pbk92ZXJsb2FkTGVuZ3RoKHRoaXMubWVtYmVycy5maWx0ZXIoZnVu
Y3Rpb24obSkgeworICAgICAgICAgICAgcmV0dXJuIG0udHlwZSA9PSAib3BlcmF0aW9uIiAmJiBt
Lm5hbWUgPT0gbWVtYmVyLm5hbWU7CisgICAgICAgIH0pKSwKKyAgICAgICAgIm9wZXJhdGlvbiBo
YXMgd3JvbmcgLmxlbmd0aCIpOworICAgIGFfdGVzdC5kb25lKCk7Cit9CisKK0lkbE5hbWVzcGFj
ZS5wcm90b3R5cGUudGVzdF9tZW1iZXJfb3BlcmF0aW9uID0gZnVuY3Rpb24obWVtYmVyKQorewor
ICAgIGlmICghc2hvdWxkUnVuU3ViVGVzdCh0aGlzLm5hbWUpKSB7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgdmFyIGFfdGVzdCA9IHN1YnNldFRlc3RCeUtleSgKKyAgICAgICAgdGhpcy5u
YW1lLAorICAgICAgICBhc3luY190ZXN0LAorICAgICAgICB0aGlzLm5hbWUgKyAnIG5hbWVzcGFj
ZTogb3BlcmF0aW9uICcgKyBtZW1iZXIpOworICAgIGFfdGVzdC5zdGVwKGZ1bmN0aW9uKCkgewor
ICAgICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KAorICAgICAgICAgICAgc2VsZlt0aGlzLm5hbWVd
LAorICAgICAgICAgICAgbWVtYmVyLm5hbWUsCisgICAgICAgICAgICAnbmFtZXNwYWNlIG9iamVj
dCBtaXNzaW5nIG9wZXJhdGlvbiAnICsgZm9ybWF0X3ZhbHVlKG1lbWJlci5uYW1lKSk7CisKKyAg
ICAgICAgdGhpcy5kb19tZW1iZXJfb3BlcmF0aW9uX2Fzc2VydHMoc2VsZlt0aGlzLm5hbWVdLCBt
ZW1iZXIsIGFfdGVzdCk7CisgICAgfS5iaW5kKHRoaXMpKTsKK307CisKK0lkbE5hbWVzcGFjZS5w
cm90b3R5cGUudGVzdF9tZW1iZXJfYXR0cmlidXRlID0gZnVuY3Rpb24gKG1lbWJlcikKK3sKKyAg
ICBpZiAoIXNob3VsZFJ1blN1YlRlc3QodGhpcy5uYW1lKSkgeworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIHZhciBhX3Rlc3QgPSBzdWJzZXRUZXN0QnlLZXkoCisgICAgICAgIHRoaXMubmFt
ZSwKKyAgICAgICAgYXN5bmNfdGVzdCwKKyAgICAgICAgdGhpcy5uYW1lICsgJyBuYW1lc3BhY2U6
IGF0dHJpYnV0ZSAnICsgbWVtYmVyLm5hbWUpOworICAgIGFfdGVzdC5zdGVwKGZ1bmN0aW9uKCkK
KyAgICB7CisgICAgICAgIGFzc2VydF9vd25fcHJvcGVydHkoCisgICAgICAgICAgICBzZWxmW3Ro
aXMubmFtZV0sCisgICAgICAgICAgICBtZW1iZXIubmFtZSwKKyAgICAgICAgICAgIHRoaXMubmFt
ZSArICcgZG9lcyBub3QgaGF2ZSBwcm9wZXJ0eSAnICsgZm9ybWF0X3ZhbHVlKG1lbWJlci5uYW1l
KSk7CisKKyAgICAgICAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KHNlbGZbdGhpcy5uYW1lXSwgbWVtYmVyLm5hbWUpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGRl
c2Muc2V0LCB1bmRlZmluZWQsICJzZXR0ZXIgbXVzdCBiZSB1bmRlZmluZWQgZm9yIG5hbWVzcGFj
ZSBtZW1iZXJzIik7CisgICAgICAgIGFfdGVzdC5kb25lKCk7CisgICAgfS5iaW5kKHRoaXMpKTsK
K307CisKK0lkbE5hbWVzcGFjZS5wcm90b3R5cGUudGVzdF9zZWxmID0gZnVuY3Rpb24gKCkKK3sK
KyAgICAvKioKKyAgICAgKiBUT0RPKGx1a2ViamVycmluZyk6IEFzc2VydDoKKyAgICAgKiAtICJO
b3RlIHRoYXQgdW5saWtlIGludGVyZmFjZXMgb3IgZGljdGlvbmFyaWVzLCBuYW1lc3BhY2VzIGRv
IG5vdCBjcmVhdGUgdHlwZXMuIgorICAgICAqLworCisgICAgc3Vic2V0VGVzdEJ5S2V5KHRoaXMu
bmFtZSwgdGVzdCwgKCkgPT4geworICAgICAgICBhc3NlcnRfdHJ1ZSh0aGlzLmV4dEF0dHJzLmV2
ZXJ5KG8gPT4gby5uYW1lID09PSAiRXhwb3NlZCIgfHwgby5uYW1lID09PSAiU2VjdXJlQ29udGV4
dCIpLAorICAgICAgICAgICAgIk9ubHkgdGhlIFtFeHBvc2VkXSBhbmQgW1NlY3VyZUNvbnRleHRd
IGV4dGVuZGVkIGF0dHJpYnV0ZXMgYXJlIGFwcGxpY2FibGUgdG8gbmFtZXNwYWNlcyIpOworICAg
ICAgICBhc3NlcnRfdHJ1ZSh0aGlzLmhhc19leHRlbmRlZF9hdHRyaWJ1dGUoIkV4cG9zZWQiKSwK
KyAgICAgICAgICAgICJOYW1lc3BhY2VzIG11c3QgYmUgYW5ub3RhdGVkIHdpdGggdGhlIFtFeHBv
c2VkXSBleHRlbmRlZCBhdHRyaWJ1dGUiKTsKKyAgICB9LCBgJHt0aGlzLm5hbWV9IG5hbWVzcGFj
ZTogZXh0ZW5kZWQgYXR0cmlidXRlc2ApOworCisgICAgY29uc3QgbmFtZXNwYWNlT2JqZWN0ID0g
c2VsZlt0aGlzLm5hbWVdOworCisgICAgc3Vic2V0VGVzdEJ5S2V5KHRoaXMubmFtZSwgdGVzdCwg
KCkgPT4geworICAgICAgICBjb25zdCBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihzZWxmLCB0aGlzLm5hbWUpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGRlc2MudmFsdWUs
IG5hbWVzcGFjZU9iamVjdCwgYHdyb25nIHZhbHVlIGZvciAke3RoaXMubmFtZX0gbmFtZXNwYWNl
IG9iamVjdGApOworICAgICAgICBhc3NlcnRfdHJ1ZShkZXNjLndyaXRhYmxlLCAibmFtZXNwYWNl
IG9iamVjdCBzaG91bGQgYmUgd3JpdGFibGUiKTsKKyAgICAgICAgYXNzZXJ0X2ZhbHNlKGRlc2Mu
ZW51bWVyYWJsZSwgIm5hbWVzcGFjZSBvYmplY3Qgc2hvdWxkIG5vdCBiZSBlbnVtZXJhYmxlIik7
CisgICAgICAgIGFzc2VydF90cnVlKGRlc2MuY29uZmlndXJhYmxlLCAibmFtZXNwYWNlIG9iamVj
dCBzaG91bGQgYmUgY29uZmlndXJhYmxlIik7CisgICAgICAgIGFzc2VydF9mYWxzZSgiZ2V0IiBp
biBkZXNjLCAibmFtZXNwYWNlIG9iamVjdCBzaG91bGQgbm90IGhhdmUgYSBnZXR0ZXIiKTsKKyAg
ICAgICAgYXNzZXJ0X2ZhbHNlKCJzZXQiIGluIGRlc2MsICJuYW1lc3BhY2Ugb2JqZWN0IHNob3Vs
ZCBub3QgaGF2ZSBhIHNldHRlciIpOworICAgIH0sIGAke3RoaXMubmFtZX0gbmFtZXNwYWNlOiBw
cm9wZXJ0eSBkZXNjcmlwdG9yYCk7CisKKyAgICBzdWJzZXRUZXN0QnlLZXkodGhpcy5uYW1lLCB0
ZXN0LCAoKSA9PiB7CisgICAgICAgIGFzc2VydF90cnVlKE9iamVjdC5pc0V4dGVuc2libGUobmFt
ZXNwYWNlT2JqZWN0KSk7CisgICAgfSwgYCR7dGhpcy5uYW1lfSBuYW1lc3BhY2U6IFtbRXh0ZW5z
aWJsZV1dIGlzIHRydWVgKTsKKworICAgIHN1YnNldFRlc3RCeUtleSh0aGlzLm5hbWUsIHRlc3Qs
ICgpID0+IHsKKyAgICAgICAgYXNzZXJ0X3RydWUobmFtZXNwYWNlT2JqZWN0IGluc3RhbmNlb2Yg
T2JqZWN0KTsKKworICAgICAgICBpZiAodGhpcy5uYW1lID09PSAiY29uc29sZSIpIHsKKyAgICAg
ICAgICAgIC8vIGh0dHBzOi8vY29uc29sZS5zcGVjLndoYXR3Zy5vcmcvI2NvbnNvbGUtbmFtZXNw
YWNlCisgICAgICAgICAgICBjb25zdCBuYW1lc3BhY2VQcm90b3R5cGUgPSBPYmplY3QuZ2V0UHJv
dG90eXBlT2YobmFtZXNwYWNlT2JqZWN0KTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoUmVm
bGVjdC5vd25LZXlzKG5hbWVzcGFjZVByb3RvdHlwZSkubGVuZ3RoLCAwKTsKKyAgICAgICAgICAg
IGFzc2VydF9lcXVhbHMoT2JqZWN0LmdldFByb3RvdHlwZU9mKG5hbWVzcGFjZVByb3RvdHlwZSks
IE9iamVjdC5wcm90b3R5cGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgYXNzZXJ0
X2VxdWFscyhPYmplY3QuZ2V0UHJvdG90eXBlT2YobmFtZXNwYWNlT2JqZWN0KSwgT2JqZWN0LnBy
b3RvdHlwZSk7CisgICAgICAgIH0KKyAgICB9LCBgJHt0aGlzLm5hbWV9IG5hbWVzcGFjZTogW1tQ
cm90b3R5cGVdXSBpcyBPYmplY3QucHJvdG90eXBlYCk7CisKKyAgICBzdWJzZXRUZXN0QnlLZXko
dGhpcy5uYW1lLCB0ZXN0LCAoKSA9PiB7CisgICAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIG5h
bWVzcGFjZU9iamVjdCwgIm9iamVjdCIpOworICAgIH0sIGAke3RoaXMubmFtZX0gbmFtZXNwYWNl
OiB0eXBlb2YgaXMgIm9iamVjdCJgKTsKKworICAgIHN1YnNldFRlc3RCeUtleSh0aGlzLm5hbWUs
IHRlc3QsICgpID0+IHsKKyAgICAgICAgYXNzZXJ0X2VxdWFscygKKyAgICAgICAgICAgIE9iamVj
dC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobmFtZXNwYWNlT2JqZWN0LCAibGVuZ3RoIiksCisg
ICAgICAgICAgICB1bmRlZmluZWQsCisgICAgICAgICAgICAibGVuZ3RoIHByb3BlcnR5IG11c3Qg
YmUgdW5kZWZpbmVkIgorICAgICAgICApOworICAgIH0sIGAke3RoaXMubmFtZX0gbmFtZXNwYWNl
OiBoYXMgbm8gbGVuZ3RoIHByb3BlcnR5YCk7CisKKyAgICBzdWJzZXRUZXN0QnlLZXkodGhpcy5u
YW1lLCB0ZXN0LCAoKSA9PiB7CisgICAgICAgIGFzc2VydF9lcXVhbHMoCisgICAgICAgICAgICBP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG5hbWVzcGFjZU9iamVjdCwgIm5hbWUiKSwK
KyAgICAgICAgICAgIHVuZGVmaW5lZCwKKyAgICAgICAgICAgICJuYW1lIHByb3BlcnR5IG11c3Qg
YmUgdW5kZWZpbmVkIgorICAgICAgICApOworICAgIH0sIGAke3RoaXMubmFtZX0gbmFtZXNwYWNl
OiBoYXMgbm8gbmFtZSBwcm9wZXJ0eWApOworfTsKKworSWRsTmFtZXNwYWNlLnByb3RvdHlwZS50
ZXN0ID0gZnVuY3Rpb24gKCkKK3sKKyAgICBpZiAoIXRoaXMudW50ZXN0ZWQpIHsKKyAgICAgICAg
dGhpcy50ZXN0X3NlbGYoKTsKKyAgICB9CisKKyAgICBmb3IgKGNvbnN0IHYgb2YgT2JqZWN0LnZh
bHVlcyh0aGlzLm1lbWJlcnMpKSB7CisgICAgICAgIHN3aXRjaCAodi50eXBlKSB7CisKKyAgICAg
ICAgY2FzZSAnb3BlcmF0aW9uJzoKKyAgICAgICAgICAgIHRoaXMudGVzdF9tZW1iZXJfb3BlcmF0
aW9uKHYpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAnYXR0cmlidXRlJzoK
KyAgICAgICAgICAgIHRoaXMudGVzdF9tZW1iZXJfYXR0cmlidXRlKHYpOworICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHRocm93ICdJbnZhbGlkIG5h
bWVzcGFjZSBtZW1iZXIgJyArIHYubmFtZSArICc6ICcgKyB2LnR5cGUgKyAnIG5vdCBzdXBwb3J0
ZWQnOworICAgICAgICB9CisgICAgfTsKK307CisKIH0oKSk7CisKKy8qKgorICogaWRsX3Rlc3Qg
aXMgYSBwcm9taXNlX3Rlc3Qgd3JhcHBlciB0aGF0IGhhbmRsZXMgdGhlIGZldGNoaW5nIG9mIHRo
ZSBJREwsCisgKiBhdm9pZGluZyByZXBldGl0aXZlIGJvaWxlcnBsYXRlLgorICoKKyAqIEBwYXJh
bSB7U3RyaW5nfFN0cmluZ1tdfSBzcmNzIFNwZWMgbmFtZShzKSBmb3Igc291cmNlIGlkbCBmaWxl
cyAoZmV0Y2hlZCBmcm9tCisgKiAgICAgIC9pbnRlcmZhY2VzL3tuYW1lfS5pZGwpLgorICogQHBh
cmFtIHtTdHJpbmd8U3RyaW5nW119IGRlcHMgU3BlYyBuYW1lKHMpIGZvciBkZXBlbmRlbmN5IGlk
bCBmaWxlcyAoZmV0Y2hlZAorICogICAgICBmcm9tIC9pbnRlcmZhY2VzL3tuYW1lfS5pZGwpLiBP
cmRlciBpcyBpbXBvcnRhbnQgLSBkZXBlbmRlbmNpZXMgZnJvbQorICogICAgICBlYWNoIHNvdXJj
ZSB3aWxsIG9ubHkgYmUgaW5jbHVkZWQgaWYgdGhleSdyZSBhbHJlYWR5IGtub3cgdG8gYmUgYQor
ICogICAgICBkZXBlbmRlbmN5IChpLmUuIGhhdmUgYWxyZWFkeSBiZWVuIHNlZW4pLgorICogQHBh
cmFtIHtGdW5jdGlvbn0gc2V0dXBfZnVuYyBGdW5jdGlvbiBmb3IgZXh0cmEgc2V0dXAgb2YgdGhl
IGlkbF9hcnJheSwgc3VjaAorICogICAgICBhcyBhZGRpbmcgb2JqZWN0cy4gRG8gbm90IGNhbGwg
aWRsX2FycmF5LnRlc3QoKSBpbiB0aGUgc2V0dXA7IGl0IGlzCisgKiAgICAgIGNhbGxlZCBieSB0
aGlzIGZ1bmN0aW9uIChpZGxfdGVzdCkuCisgKi8KK2Z1bmN0aW9uIGlkbF90ZXN0KHNyY3MsIGRl
cHMsIGlkbF9zZXR1cF9mdW5jKSB7CisgICAgcmV0dXJuIHByb21pc2VfdGVzdChmdW5jdGlvbiAo
dCkgeworICAgICAgICB2YXIgaWRsX2FycmF5ID0gbmV3IElkbEFycmF5KCk7CisgICAgICAgIHZh
ciBzZXR1cF9lcnJvciA9IG51bGw7CisgICAgICAgIGNvbnN0IHZhbGlkYXRpb25JZ25vcmVkID0g
WworICAgICAgICAgICAgImNvbnN0cnVjdG9yLW1lbWJlciIsCisgICAgICAgICAgICAiZGljdC1h
cmctZGVmYXVsdCIsCisgICAgICAgICAgICAicmVxdWlyZS1leHBvc2VkIgorICAgICAgICBdOwor
ICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoCisgICAgICAgICAgICBzcmNzLmNvbmNhdChkZXBz
KS5tYXAoZmV0Y2hfc3BlYykpCisgICAgICAgICAgICAudGhlbihmdW5jdGlvbihyZXN1bHRzKSB7
CisgICAgICAgICAgICAgICAgY29uc3QgYXN0QXJyYXkgPSByZXN1bHRzLm1hcChyZXN1bHQgPT4K
KyAgICAgICAgICAgICAgICAgICAgV2ViSURMMi5wYXJzZShyZXN1bHQuaWRsLCB7IHNvdXJjZU5h
bWU6IHJlc3VsdC5zcGVjIH0pCisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICB0
ZXN0KCgpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsaWRhdGlvbnMgPSBXZWJJ
REwyLnZhbGlkYXRlKGFzdEFycmF5KQorICAgICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcih2
ID0+ICF2YWxpZGF0aW9uSWdub3JlZC5pbmNsdWRlcyh2LnJ1bGVOYW1lKSk7CisgICAgICAgICAg
ICAgICAgICAgIGlmICh2YWxpZGF0aW9ucy5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IG1lc3NhZ2UgPSB2YWxpZGF0aW9ucy5tYXAodiA9PiB2Lm1lc3NhZ2UpLmpvaW4o
IlxuXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdl
KTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0sICJpZGxfdGVzdCB2
YWxpZGF0aW9uIik7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzcmNzLmxl
bmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIGlkbF9hcnJheS5pbnRlcm5hbF9hZGRf
aWRscyhhc3RBcnJheVtpXSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGZv
ciAodmFyIGkgPSBzcmNzLmxlbmd0aDsgaSA8IHNyY3MubGVuZ3RoICsgZGVwcy5sZW5ndGg7IGkr
KykgeworICAgICAgICAgICAgICAgICAgICBpZGxfYXJyYXkuaW50ZXJuYWxfYWRkX2RlcGVuZGVu
Y3lfaWRscyhhc3RBcnJheVtpXSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSkK
KyAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGlmIChpZGxf
c2V0dXBfZnVuYykgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWRsX3NldHVwX2Z1bmMo
aWRsX2FycmF5LCB0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9KQorICAgICAg
ICAgICAgLmNhdGNoKGZ1bmN0aW9uKGUpIHsgc2V0dXBfZXJyb3IgPSBlIHx8ICdJREwgc2V0dXAg
ZmFpbGVkLic7IH0pCisgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICAgICAgdmFyIGVycm9yID0gc2V0dXBfZXJyb3I7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAg
ICAgICAgICAgICAgICAgICAgaWRsX2FycmF5LnRlc3QoKTsgLy8gVGVzdCB3aGF0IHdlIGNhbi4K
KyAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIElm
IHRlc3RpbmcgZmFpbHMgaGFyZCBoZXJlLCB0aGUgb3JpZ2luYWwgc2V0dXAgZXJyb3IKKyAgICAg
ICAgICAgICAgICAgICAgLy8gaXMgbW9yZSBsaWtlbHkgdG8gYmUgdGhlIHJlYWwgY2F1c2UuCisg
ICAgICAgICAgICAgICAgICAgIGVycm9yID0gZXJyb3IgfHwgZTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgaWYgKGVycm9yKSB7CisgICAgICAgICAgICAgICAgICAgIHRocm93
IGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0pOworICAgIH0sICdpZGxf
dGVzdCBzZXR1cCcpOworfQorCisvKioKKyAqIGZldGNoX3NwZWMgaXMgYSBzaG9ydGhhbmQgZm9y
IGEgUHJvbWlzZSB0aGF0IGZldGNoZXMgdGhlIHNwZWMncyBjb250ZW50LgorICovCitmdW5jdGlv
biBmZXRjaF9zcGVjKHNwZWMpIHsKKyAgICB2YXIgdXJsID0gJy9pbnRlcmZhY2VzLycgKyBzcGVj
ICsgJy5pZGwnOworICAgIHJldHVybiBmZXRjaCh1cmwpLnRoZW4oZnVuY3Rpb24gKHIpIHsKKyAg
ICAgICAgaWYgKCFyLm9rKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWRsSGFybmVzc0Vycm9y
KCJFcnJvciBmZXRjaGluZyAiICsgdXJsICsgIi4iKTsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm4gci50ZXh0KCk7CisgICAgfSkudGhlbihpZGwgPT4gKHsgc3BlYywgaWRsIH0pKTsKK30KIC8v
IHZpbTogc2V0IGV4cGFuZHRhYiBzaGlmdHdpZHRoPTQgdGFic3RvcD00IGZvbGRtYXJrZXI9QHss
QH0gZm9sZG1ldGhvZD1tYXJrZXI6CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9yZXNvdXJjZXMv
dGVzdGhhcm5lc3MuY3NzIGIvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmNzcwpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzY1MDg0ZjNmODIxMTZmODVmMGE1ZWNjNWFk
Nzg4YmY4Y2RhNDcxMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuY3NzCisrKyAvZGV2L251bGwK
QEAgLTEsOTIgKzAsMCBAQAotaHRtbCB7Ci0gICAgZm9udC1mYW1pbHk6RGVqYVZ1IFNhbnMsIEJp
dHN0cmVhbSBWZXJhIFNhbnMsIEFyaWFsLCBTYW5zOwotfQotCi0jbG9nIC53YXJuaW5nLAotI2xv
ZyAud2FybmluZyBhIHsKLSAgY29sb3I6IGJsYWNrOwotICBiYWNrZ3JvdW5kOiB5ZWxsb3c7Ci19
Ci0KLSNsb2cgLmVycm9yLAotI2xvZyAuZXJyb3IgYSB7Ci0gIGNvbG9yOiB3aGl0ZTsKLSAgYmFj
a2dyb3VuZDogcmVkOwotfQotCi0jbG9nIHByZSB7Ci0gIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNr
OwotICBwYWRkaW5nOiAxZW07Ci19Ci0KLXNlY3Rpb24jc3VtbWFyeSB7Ci0gICAgbWFyZ2luLWJv
dHRvbToxZW07Ci19Ci0KLXRhYmxlI3Jlc3VsdHMgewotICAgIGJvcmRlci1jb2xsYXBzZTpjb2xs
YXBzZTsKLSAgICB0YWJsZS1sYXlvdXQ6Zml4ZWQ7Ci0gICAgd2lkdGg6MTAwJTsKLX0KLQotdGFi
bGUjcmVzdWx0cyB0aDpmaXJzdC1jaGlsZCwKLXRhYmxlI3Jlc3VsdHMgdGQ6Zmlyc3QtY2hpbGQg
ewotICAgIHdpZHRoOjRlbTsKLX0KLQotdGFibGUjcmVzdWx0cyB0aDpsYXN0LWNoaWxkLAotdGFi
bGUjcmVzdWx0cyB0ZDpsYXN0LWNoaWxkIHsKLSAgICB3aWR0aDo1MCU7Ci19Ci0KLXRhYmxlI3Jl
c3VsdHMuYXNzZXJ0aW9ucyB0aDpsYXN0LWNoaWxkLAotdGFibGUjcmVzdWx0cy5hc3NlcnRpb25z
IHRkOmxhc3QtY2hpbGQgewotICAgIHdpZHRoOjM1JTsKLX0KLQotdGFibGUjcmVzdWx0cyB0aCB7
Ci0gICAgcGFkZGluZzowOwotICAgIHBhZGRpbmctYm90dG9tOjAuNWVtOwotICAgIGJvcmRlci1i
b3R0b206bWVkaXVtIHNvbGlkIGJsYWNrOwotfQotCi10YWJsZSNyZXN1bHRzIHRkIHsKLSAgICBw
YWRkaW5nOjFlbTsKLSAgICBwYWRkaW5nLWJvdHRvbTowLjVlbTsKLSAgICBib3JkZXItYm90dG9t
OnRoaW4gc29saWQgYmxhY2s7Ci19Ci0KLXRyLnBhc3MgPiB0ZDpmaXJzdC1jaGlsZCB7Ci0gICAg
Y29sb3I6Z3JlZW47Ci19Ci0KLXRyLmZhaWwgPiB0ZDpmaXJzdC1jaGlsZCB7Ci0gICAgY29sb3I6
cmVkOwotfQotCi10ci50aW1lb3V0ID4gdGQ6Zmlyc3QtY2hpbGQgewotICAgIGNvbG9yOnJlZDsK
LX0KLQotdHIubm90cnVuID4gdGQ6Zmlyc3QtY2hpbGQgewotICAgIGNvbG9yOmJsdWU7Ci19Ci0K
LS5wYXNzID4gdGQ6Zmlyc3QtY2hpbGQsIC5mYWlsID4gdGQ6Zmlyc3QtY2hpbGQsIC50aW1lb3V0
ID4gdGQ6Zmlyc3QtY2hpbGQsIC5ub3RydW4gPiB0ZDpmaXJzdC1jaGlsZCB7Ci0gICAgZm9udC12
YXJpYW50OnNtYWxsLWNhcHM7Ci19Ci0KLXRhYmxlI3Jlc3VsdHMgc3BhbiB7Ci0gICAgZGlzcGxh
eTpibG9jazsKLX0KLQotdGFibGUjcmVzdWx0cyBzcGFuLmV4cGVjdGVkIHsKLSAgICBmb250LWZh
bWlseTpEZWphVnUgU2FucyBNb25vLCBCaXRzdHJlYW0gVmVyYSBTYW5zIE1vbm8sIE1vbm9zcGFj
ZTsKLSAgICB3aGl0ZS1zcGFjZTpwcmU7Ci19Ci0KLXRhYmxlI3Jlc3VsdHMgc3Bhbi5hY3R1YWwg
ewotICAgIGZvbnQtZmFtaWx5OkRlamFWdSBTYW5zIE1vbm8sIEJpdHN0cmVhbSBWZXJhIFNhbnMg
TW9ubywgTW9ub3NwYWNlOwotICAgIHdoaXRlLXNwYWNlOnByZTsKLX0KLQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIGIvTGF5b3V0VGVzdHMvcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzLmpzCmluZGV4IDE1NTkxMDQyYWE0Y2IwZmRkNzVmZTNiZjU2YjliZGZi
NjNmZDE2MWQuLmY4NWIxOWZkOWJkOTBjMzQ3NmRlZGNiZTU4MjViODJmYjQwZGU4MmMgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcworKysgYi9MYXlvdXRU
ZXN0cy9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMKQEAgLTEsMjEgKzEsMTEgQEAKIC8qZ2xvYmFs
IHNlbGYqLwogLypqc2hpbnQgbGF0ZWRlZjogbm9mdW5jKi8KLS8qCi1EaXN0cmlidXRlZCB1bmRl
ciBib3RoIHRoZSBXM0MgVGVzdCBTdWl0ZSBMaWNlbnNlIFsxXSBhbmQgdGhlIFczQwotMy1jbGF1
c2UgQlNEIExpY2Vuc2UgWzJdLiBUbyBjb250cmlidXRlIHRvIGEgVzNDIFRlc3QgU3VpdGUsIHNl
ZSB0aGUKLXBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgotCi1bMV0gaHR0cDov
L3d3dy53My5vcmcvQ29uc29ydGl1bS9MZWdhbC8yMDA4LzA0LXRlc3RzdWl0ZS1saWNlbnNlCi1b
Ml0gaHR0cDovL3d3dy53My5vcmcvQ29uc29ydGl1bS9MZWdhbC8yMDA4LzAzLWJzZC1saWNlbnNl
Ci1bM10gaHR0cDovL3d3dy53My5vcmcvMjAwNC8xMC8yNy10ZXN0Y2FzZXMKLSovCiAKIC8qIERv
Y3VtZW50YXRpb246IGh0dHBzOi8vd2ViLXBsYXRmb3JtLXRlc3RzLm9yZy93cml0aW5nLXRlc3Rz
L3Rlc3RoYXJuZXNzLWFwaS5odG1sCiAgKiAoLi4vZG9jcy9fd3JpdGluZy10ZXN0cy90ZXN0aGFy
bmVzcy1hcGkubWQpICovCiAKIChmdW5jdGlvbiAoZ2xvYmFsX3Njb3BlKQogewotICAgIHZhciBk
ZWJ1ZyA9IGZhbHNlOwogICAgIC8vIGRlZmF1bHQgdGltZW91dCBpcyAxMCBzZWNvbmRzLCB0ZXN0
IGNhbiBvdmVycmlkZSBpZiBuZWVkZWQKICAgICB2YXIgc2V0dGluZ3MgPSB7CiAgICAgICAgIG91
dHB1dDp0cnVlLApAQCAtMjQsNyArMTQsOCBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZv
cm1zIFszXS4KICAgICAgICAgICAgICJsb25nIjo2MDAwMAogICAgICAgICB9LAogICAgICAgICB0
ZXN0X3RpbWVvdXQ6bnVsbCwKLSAgICAgICAgbWVzc2FnZV9ldmVudHM6IFsic3RhcnQiLCAidGVz
dF9zdGF0ZSIsICJyZXN1bHQiLCAiY29tcGxldGlvbiJdCisgICAgICAgIG1lc3NhZ2VfZXZlbnRz
OiBbInN0YXJ0IiwgInRlc3Rfc3RhdGUiLCAicmVzdWx0IiwgImNvbXBsZXRpb24iXSwKKyAgICAg
ICAgZGVidWc6IGZhbHNlLAogICAgIH07CiAKICAgICB2YXIgeGh0bWxfbnMgPSAiaHR0cDovL3d3
dy53My5vcmcvMTk5OS94aHRtbCI7CkBAIC04NywxNCArNzgsMTUgQEAgcG9saWNpZXMgYW5kIGNv
bnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0ZXN0OiB0ZXN0LnN0cnVjdHVyZWRfY2xvbmUoKX0pOwogICAgICAgICAgICAg
ICAgICAgICAgfV0sCiAgICAgICAgICAgICBjb21wbGV0aW9uOiBbYWRkX2NvbXBsZXRpb25fY2Fs
bGJhY2ssIHJlbW92ZV9jb21wbGV0aW9uX2NhbGxiYWNrLAotICAgICAgICAgICAgICAgICAgICAg
ICAgIGZ1bmN0aW9uICh0ZXN0cywgaGFybmVzc19zdGF0dXMpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICBmdW5jdGlvbiAodGVzdHMsIGhhcm5lc3Nfc3RhdHVzLCBhc3NlcnRzKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjbG9uZWRfdGVzdHMgPSBtYXAodGVzdHMsIGZ1
bmN0aW9uKHRlc3QpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0
ZXN0LnN0cnVjdHVyZWRfY2xvbmUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXNfb2JqLl9kaXNwYXRjaCgiY29tcGxl
dGlvbl9jYWxsYmFjayIsIFt0ZXN0cywgaGFybmVzc19zdGF0dXNdLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3R5cGU6ICJjb21wbGV0ZSIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdHM6IGNsb25l
ZF90ZXN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGF0dXM6IGhhcm5lc3Nfc3RhdHVzLnN0cnVjdHVyZWRfY2xvbmUoKX0pOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czogaGFybmVzc19z
dGF0dXMuc3RydWN0dXJlZF9jbG9uZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGFzc2VydHM6IGFzc2VydHMubWFwKGFzc2VydCA9PiBhc3NlcnQu
c3RydWN0dXJlZF9jbG9uZSgpKX0pOwogICAgICAgICAgICAgICAgICAgICAgICAgIH1dCiAgICAg
ICAgIH0KIApAQCAtMTMxLDExICsxMjMsNyBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZv
cm1zIFszXS4KICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYXNfc2VsZWN0b3IpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB3W3NlbGVjdG9yXS5hcHBseSh1bmRlZmluZWQsIGNhbGxiYWNrX2FyZ3MpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKGRlYnVnKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0aHJvdyBlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0g
Y2F0Y2ggKGUpIHt9CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgICAgaWYgKHN1cHBvcnRzX3Bvc3RfbWVzc2FnZSh3KSAm
JiB3ICE9PSBzZWxmKSB7CkBAIC0xOTIsOCArMTgwLDggQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1
dGlvbiBmb3JtcyBbM10uCiAgICAgICAgICAgICB0aGlzX29iai5vdXRwdXRfaGFuZGxlci5zaG93
X3N0YXR1cygpOwogICAgICAgICB9KTsKIAotICAgICAgICBhZGRfY29tcGxldGlvbl9jYWxsYmFj
ayhmdW5jdGlvbiAodGVzdHMsIGhhcm5lc3Nfc3RhdHVzKSB7Ci0gICAgICAgICAgICB0aGlzX29i
ai5vdXRwdXRfaGFuZGxlci5zaG93X3Jlc3VsdHModGVzdHMsIGhhcm5lc3Nfc3RhdHVzKTsKKyAg
ICAgICAgYWRkX2NvbXBsZXRpb25fY2FsbGJhY2soZnVuY3Rpb24gKHRlc3RzLCBoYXJuZXNzX3N0
YXR1cywgYXNzZXJ0c19ydW4pIHsKKyAgICAgICAgICAgIHRoaXNfb2JqLm91dHB1dF9oYW5kbGVy
LnNob3dfcmVzdWx0cyh0ZXN0cywgaGFybmVzc19zdGF0dXMsIGFzc2VydHNfcnVuKTsKICAgICAg
ICAgfSk7CiAgICAgICAgIHRoaXMuc2V0dXBfbWVzc2FnZXMoc2V0dGluZ3MubWVzc2FnZV9ldmVu
dHMpOwogICAgIH07CkBAIC0zMTQsMTQgKzMwMiwxNSBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0
aW9uIGZvcm1zIFszXS4KICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAg
fSk7CiAgICAgICAgIGFkZF9jb21wbGV0aW9uX2NhbGxiYWNrKAotICAgICAgICAgICAgICAgIGZ1
bmN0aW9uKHRlc3RzLCBoYXJuZXNzX3N0YXR1cykgeworICAgICAgICAgICAgICAgIGZ1bmN0aW9u
KHRlc3RzLCBoYXJuZXNzX3N0YXR1cywgYXNzZXJ0cykgewogICAgICAgICAgICAgICAgICAgICB0
aGlzX29iai5fZGlzcGF0Y2goewogICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogImNvbXBs
ZXRlIiwKICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RzOiBtYXAodGVzdHMsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24odGVzdCkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdGVzdC5zdHJ1Y3R1cmVkX2Nsb25lKCk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfSksCi0gICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IGhh
cm5lc3Nfc3RhdHVzLnN0cnVjdHVyZWRfY2xvbmUoKQorICAgICAgICAgICAgICAgICAgICAgICAg
c3RhdHVzOiBoYXJuZXNzX3N0YXR1cy5zdHJ1Y3R1cmVkX2Nsb25lKCksCisgICAgICAgICAgICAg
ICAgICAgICAgICBhc3NlcnRzOiBhc3NlcnRzLm1hcChhc3NlcnQgPT4gYXNzZXJ0LnN0cnVjdHVy
ZWRfY2xvbmUoKSksCiAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgIH0p
OwogICAgIH07CkBAIC0zOTgsMjAgKzM4Nyw3IEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24g
Zm9ybXMgWzNdLgogICAgICAgICBzZWxmLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLAogICAg
ICAgICAgICAgICAgIGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChl
dmVudC5kYXRhICYmIGV2ZW50LmRhdGEudHlwZSAmJiBldmVudC5kYXRhLnR5cGUgPT09ICJjb25u
ZWN0IikgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50LnBvcnRzICYmIGV2ZW50
LnBvcnRzWzBdKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgYSBNZXNzYWdl
Q2hhbm5lbCB3YXMgcGFzc2VkLCB0aGVuIHVzZSBpdCB0bwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIHNlbmQgcmVzdWx0cyBiYWNrIHRvIHRoZSBtYWluIHdpbmRvdy4gIFRoaXMKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbGxvd3MgdGhlIHRlc3RzIHRvIHdvcmsgZXZl
biBpZiB0aGUgYnJvd3NlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvZXMgbm90
IGZ1bGx5IHN1cHBvcnQgTWVzc2FnZUV2ZW50LnNvdXJjZSBpbgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIFNlcnZpY2VXb3JrZXJzIHlldC4KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0aGlzX29iai5fYWRkX21lc3NhZ2VfcG9ydChldmVudC5wb3J0c1swXSk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZXZlbnQucG9ydHNbMF0uc3RhcnQoKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYg
dGhlcmUgaXMgbm8gTWVzc2FnZUNoYW5uZWwsIHRoZW4gYXR0ZW1wdCB0bwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIHVzZSB0aGUgTWVzc2FnZUV2ZW50LnNvdXJjZSB0byBzZW5kIHJl
c3VsdHMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiYWNrIHRvIHRoZSBtYWluIHdp
bmRvdy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzX29iai5fYWRkX21lc3NhZ2Vf
cG9ydChldmVudC5zb3VyY2UpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICAgICAgdGhpc19vYmouX2FkZF9tZXNzYWdlX3BvcnQoZXZlbnQuc291cmNlKTsK
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0sIGZhbHNlKTsKIApAQCAt
NTEzLDExICs0ODksNyBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAg
ICAgICAgICAgIHJldHVybiBuZXcgRGVkaWNhdGVkV29ya2VyVGVzdEVudmlyb25tZW50KCk7CiAg
ICAgICAgIH0KIAotICAgICAgICBpZiAoISgnbG9jYXRpb24nIGluIGdsb2JhbF9zY29wZSkpIHsK
LSAgICAgICAgICAgIHJldHVybiBuZXcgU2hlbGxUZXN0RW52aXJvbm1lbnQoKTsKLSAgICAgICAg
fQotCi0gICAgICAgIHRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgdGVzdCBlbnZpcm9ubWVu
dCIpOworICAgICAgICByZXR1cm4gbmV3IFNoZWxsVGVzdEVudmlyb25tZW50KCk7CiAgICAgfQog
CiAgICAgdmFyIHRlc3RfZW52aXJvbm1lbnQgPSBjcmVhdGVfdGVzdF9lbnZpcm9ubWVudCgpOwpA
QCAtNTMzLDIzICs1MDUsNjUgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10u
CiAgICAgICAgICAgICBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwod29ya2VyKSA9PSAn
W29iamVjdCBTZXJ2aWNlV29ya2VyXSc7CiAgICAgfQogCisgICAgdmFyIHNlZW5fZnVuY19uYW1l
ID0gT2JqZWN0LmNyZWF0ZShudWxsKTsKKworICAgIGZ1bmN0aW9uIGdldF90ZXN0X25hbWUoZnVu
YywgbmFtZSkKKyAgICB7CisgICAgICAgIGlmIChuYW1lKSB7CisgICAgICAgICAgICByZXR1cm4g
bmFtZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChmdW5jKSB7CisgICAgICAgICAgICB2YXIg
ZnVuY19jb2RlID0gZnVuYy50b1N0cmluZygpOworCisgICAgICAgICAgICAvLyBUcnkgYW5kIG1h
dGNoIHdpdGggYnJhY2tldHMsIGJ1dCBmYWxsYmFjayB0byBtYXRjaGluZyB3aXRob3V0CisgICAg
ICAgICAgICB2YXIgYXJyb3cgPSBmdW5jX2NvZGUubWF0Y2goL15cKFwpXHMqPT5ccyooPzp7KC4q
KX1ccyp8KC4qKSkkLyk7CisKKyAgICAgICAgICAgIC8vIENoZWNrIGZvciBKUyBsaW5lIHNlcGFy
YXRvcnMKKyAgICAgICAgICAgIGlmIChhcnJvdyAhPT0gbnVsbCAmJiAhL1tcdTAwMEFcdTAwMERc
dTIwMjhcdTIwMjldLy50ZXN0KGZ1bmNfY29kZSkpIHsKKyAgICAgICAgICAgICAgICB2YXIgdHJp
bW1lZCA9IChhcnJvd1sxXSAhPT0gdW5kZWZpbmVkID8gYXJyb3dbMV0gOiBhcnJvd1syXSkudHJp
bSgpOworICAgICAgICAgICAgICAgIC8vIGRyb3AgdHJhaWxpbmcgOyBpZiB0aGVyZSdzIG5vIGVh
cmxpZXIgb25lcworICAgICAgICAgICAgICAgIHRyaW1tZWQgPSB0cmltbWVkLnJlcGxhY2UoL14o
W147XSopKDtccyopKyQvLCAiJDEiKTsKKworICAgICAgICAgICAgICAgIGlmICh0cmltbWVkKSB7
CisgICAgICAgICAgICAgICAgICAgIGxldCBuYW1lID0gdHJpbW1lZDsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKHNlZW5fZnVuY19uYW1lW3RyaW1tZWRdKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBUaGlzIHN1YnRlc3QgbmFtZSBhbHJlYWR5IGV4aXN0cywgc28gYWRkIGEgc3VmZml4
LgorICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSArPSAiICIgKyBzZWVuX2Z1bmNfbmFtZVt0
cmltbWVkXTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHNlZW5fZnVuY19uYW1lW3RyaW1tZWRdID0gMDsKKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICBzZWVuX2Z1bmNfbmFtZVt0cmltbWVkXSArPSAxOworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gbmFtZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gdGVzdF9lbnZpcm9ubWVudC5uZXh0
X2RlZmF1bHRfdGVzdF9uYW1lKCk7CisgICAgfQorCiAgICAgLyoKICAgICAgKiBBUEkgZnVuY3Rp
b25zCiAgICAgICovCiAgICAgZnVuY3Rpb24gdGVzdChmdW5jLCBuYW1lLCBwcm9wZXJ0aWVzKQog
ICAgIHsKLSAgICAgICAgdmFyIHRlc3RfbmFtZSA9IG5hbWUgPyBuYW1lIDogdGVzdF9lbnZpcm9u
bWVudC5uZXh0X2RlZmF1bHRfdGVzdF9uYW1lKCk7Ci0gICAgICAgIHByb3BlcnRpZXMgPSBwcm9w
ZXJ0aWVzID8gcHJvcGVydGllcyA6IHt9OworICAgICAgICBpZiAodGVzdHMucHJvbWlzZV9zZXR1
cF9jYWxsZWQpIHsKKyAgICAgICAgICAgIHRlc3RzLnN0YXR1cy5zdGF0dXMgPSB0ZXN0cy5zdGF0
dXMuRVJST1I7CisgICAgICAgICAgICB0ZXN0cy5zdGF0dXMubWVzc2FnZSA9ICdgdGVzdGAgaW52
b2tlZCBhZnRlciBgcHJvbWlzZV9zZXR1cGAnOworICAgICAgICAgICAgdGVzdHMuY29tcGxldGUo
KTsKKyAgICAgICAgfQorICAgICAgICB2YXIgdGVzdF9uYW1lID0gZ2V0X3Rlc3RfbmFtZShmdW5j
LCBuYW1lKTsKICAgICAgICAgdmFyIHRlc3Rfb2JqID0gbmV3IFRlc3QodGVzdF9uYW1lLCBwcm9w
ZXJ0aWVzKTsKICAgICAgICAgdmFyIHZhbHVlID0gdGVzdF9vYmouc3RlcChmdW5jLCB0ZXN0X29i
aiwgdGVzdF9vYmopOwogCiAgICAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7Ci0gICAg
ICAgICAgICB2YXIgbXNnID0gIlRlc3QgbmFtZWQgXCIiICsgdGVzdF9uYW1lICsKLSAgICAgICAg
ICAgICAgICAiXCIgaW5hcHByb3ByaWF0ZWx5IHJldHVybmVkIGEgdmFsdWUiOworICAgICAgICAg
ICAgdmFyIG1zZyA9ICdUZXN0IG5hbWVkICInICsgdGVzdF9uYW1lICsKKyAgICAgICAgICAgICAg
ICAnIiBwYXNzZWQgYSBmdW5jdGlvbiB0byBgdGVzdGAgdGhhdCByZXR1cm5lZCBhIHZhbHVlLic7
CiAKICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZhbHVlICYmIHZhbHVl
Lmhhc093blByb3BlcnR5KCJ0aGVuIikpIHsKLSAgICAgICAgICAgICAgICAgICAgbXNnICs9ICIs
IGNvbnNpZGVyIHVzaW5nIGBwcm9taXNlX3Rlc3RgIGluc3RlYWQiOworICAgICAgICAgICAgICAg
IGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUudGhlbiA9PT0gJ2Z1bmN0aW9uJykgeworICAgICAg
ICAgICAgICAgICAgICBtc2cgKz0gJyBDb25zaWRlciB1c2luZyBgcHJvbWlzZV90ZXN0YCBpbnN0
ZWFkIHdoZW4gJyArCisgICAgICAgICAgICAgICAgICAgICAgICAndXNpbmcgUHJvbWlzZXMgb3Ig
YXN5bmMvYXdhaXQuJzsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGNhdGNoIChl
cnIpIHt9CiAKQEAgLTU2NCwyMiArNTc4LDU1IEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24g
Zm9ybXMgWzNdLgogCiAgICAgZnVuY3Rpb24gYXN5bmNfdGVzdChmdW5jLCBuYW1lLCBwcm9wZXJ0
aWVzKQogICAgIHsKKyAgICAgICAgaWYgKHRlc3RzLnByb21pc2Vfc2V0dXBfY2FsbGVkKSB7Cisg
ICAgICAgICAgICB0ZXN0cy5zdGF0dXMuc3RhdHVzID0gdGVzdHMuc3RhdHVzLkVSUk9SOworICAg
ICAgICAgICAgdGVzdHMuc3RhdHVzLm1lc3NhZ2UgPSAnYGFzeW5jX3Rlc3RgIGludm9rZWQgYWZ0
ZXIgYHByb21pc2Vfc2V0dXBgJzsKKyAgICAgICAgICAgIHRlc3RzLmNvbXBsZXRlKCk7CisgICAg
ICAgIH0KICAgICAgICAgaWYgKHR5cGVvZiBmdW5jICE9PSAiZnVuY3Rpb24iKSB7CiAgICAgICAg
ICAgICBwcm9wZXJ0aWVzID0gbmFtZTsKICAgICAgICAgICAgIG5hbWUgPSBmdW5jOwogICAgICAg
ICAgICAgZnVuYyA9IG51bGw7CiAgICAgICAgIH0KLSAgICAgICAgdmFyIHRlc3RfbmFtZSA9IG5h
bWUgPyBuYW1lIDogdGVzdF9lbnZpcm9ubWVudC5uZXh0X2RlZmF1bHRfdGVzdF9uYW1lKCk7Ci0g
ICAgICAgIHByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzID8gcHJvcGVydGllcyA6IHt9OworICAgICAg
ICB2YXIgdGVzdF9uYW1lID0gZ2V0X3Rlc3RfbmFtZShmdW5jLCBuYW1lKTsKICAgICAgICAgdmFy
IHRlc3Rfb2JqID0gbmV3IFRlc3QodGVzdF9uYW1lLCBwcm9wZXJ0aWVzKTsKICAgICAgICAgaWYg
KGZ1bmMpIHsKLSAgICAgICAgICAgIHRlc3Rfb2JqLnN0ZXAoZnVuYywgdGVzdF9vYmosIHRlc3Rf
b2JqKTsKKyAgICAgICAgICAgIHZhciB2YWx1ZSA9IHRlc3Rfb2JqLnN0ZXAoZnVuYywgdGVzdF9v
YmosIHRlc3Rfb2JqKTsKKworICAgICAgICAgICAgLy8gVGVzdCBhdXRob3JzIHNvbWV0aW1lcyBy
ZXR1cm4gdmFsdWVzIHRvIGFzeW5jX3Rlc3QsIGV4cGVjdGluZyB1cworICAgICAgICAgICAgLy8g
dG8gaGFuZGxlIHRoZSB2YWx1ZSBzb21laG93LiBNYWtlIGRvaW5nIHNvIGEgaGFybmVzcyBlcnJv
ciB0byBiZQorICAgICAgICAgICAgLy8gY2xlYXIgdGhpcyBpcyBpbnZhbGlkLCBhbmQgcG9pbnQg
YXV0aG9ycyB0byBwcm9taXNlX3Rlc3QgaWYgaXQKKyAgICAgICAgICAgIC8vIG1heSBiZSBhcHBy
b3ByaWF0ZS4KKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBOb3RlIHRoYXQgd2Ugb25s
eSBwZXJmb3JtIHRoaXMgY2hlY2sgb24gdGhlIGluaXRpYWwgZnVuY3Rpb24KKyAgICAgICAgICAg
IC8vIHBhc3NlZCB0byBhc3luY190ZXN0LCBub3Qgb24gYW55IGxhdGVyIHN0ZXBzIC0gd2UgaGF2
ZW4ndCBzZWVuIGEKKyAgICAgICAgICAgIC8vIGNvbnNpc3RlbnQgcHJvYmxlbSB3aXRoIHRob3Nl
IChhbmQgaXQncyBoYXJkZXIgdG8gY2hlY2spLgorICAgICAgICAgICAgaWYgKHZhbHVlICE9PSB1
bmRlZmluZWQpIHsKKyAgICAgICAgICAgICAgICB2YXIgbXNnID0gJ1Rlc3QgbmFtZWQgIicgKyB0
ZXN0X25hbWUgKworICAgICAgICAgICAgICAgICAgICAnIiBwYXNzZWQgYSBmdW5jdGlvbiB0byBg
YXN5bmNfdGVzdGAgdGhhdCByZXR1cm5lZCBhIHZhbHVlLic7CisKKyAgICAgICAgICAgICAgICB0
cnkgeworICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUgJiYgdHlwZW9mIHZhbHVlLnRoZW4g
PT09ICdmdW5jdGlvbicpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1zZyArPSAnIENvbnNp
ZGVyIHVzaW5nIGBwcm9taXNlX3Rlc3RgIGluc3RlYWQgd2hlbiAnICsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAndXNpbmcgUHJvbWlzZXMgb3IgYXN5bmMvYXdhaXQuJzsKKyAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge30KKworICAgICAg
ICAgICAgICAgIHRlc3RzLnNldF9zdGF0dXModGVzdHMuc3RhdHVzLkVSUk9SLCBtc2cpOworICAg
ICAgICAgICAgICAgIHRlc3RzLmNvbXBsZXRlKCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0K
ICAgICAgICAgcmV0dXJuIHRlc3Rfb2JqOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHByb21pc2Vf
dGVzdChmdW5jLCBuYW1lLCBwcm9wZXJ0aWVzKSB7Ci0gICAgICAgIHZhciB0ZXN0ID0gYXN5bmNf
dGVzdChuYW1lLCBwcm9wZXJ0aWVzKTsKKyAgICAgICAgaWYgKHR5cGVvZiBmdW5jICE9PSAiZnVu
Y3Rpb24iKSB7CisgICAgICAgICAgICBwcm9wZXJ0aWVzID0gbmFtZTsKKyAgICAgICAgICAgIG5h
bWUgPSBmdW5jOworICAgICAgICAgICAgZnVuYyA9IG51bGw7CisgICAgICAgIH0KKyAgICAgICAg
dmFyIHRlc3RfbmFtZSA9IGdldF90ZXN0X25hbWUoZnVuYywgbmFtZSk7CisgICAgICAgIHZhciB0
ZXN0ID0gbmV3IFRlc3QodGVzdF9uYW1lLCBwcm9wZXJ0aWVzKTsKICAgICAgICAgdGVzdC5faXNf
cHJvbWlzZV90ZXN0ID0gdHJ1ZTsKIAogICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBwcm9taXNl
IHRlc3RzIHF1ZXVlIG1ha2Ugb25lLgpAQCAtNjI0LDEwICs2NzEsODcgQEAgcG9saWNpZXMgYW5k
IGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAgIH0pOwogICAgIH0KIAotICAgIGZ1bmN0
aW9uIHByb21pc2VfcmVqZWN0cyh0ZXN0LCBleHBlY3RlZCwgcHJvbWlzZSwgZGVzY3JpcHRpb24p
IHsKLSAgICAgICAgcmV0dXJuIHByb21pc2UudGhlbih0ZXN0LnVucmVhY2hlZF9mdW5jKCJTaG91
bGQgaGF2ZSByZWplY3RlZDogIiArIGRlc2NyaXB0aW9uKSkuY2F0Y2goZnVuY3Rpb24oZSkgewot
ICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyhleHBlY3RlZCwgZnVuY3Rpb24oKSB7IHRocm93IGUg
fSwgZGVzY3JpcHRpb24pOwotICAgICAgICB9KTsKKyAgICAvKioKKyAgICAgKiBNYWtlIGEgY29w
eSBvZiBhIFByb21pc2UgaW4gdGhlIGN1cnJlbnQgcmVhbG0uCisgICAgICoKKyAgICAgKiBAcGFy
YW0ge1Byb21pc2V9IHByb21pc2UgdGhlIGdpdmVuIHByb21pc2UgdGhhdCBtYXkgYmUgZnJvbSBh
IGRpZmZlcmVudAorICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICByZWFsbQorICAgICAq
IEByZXR1cm5zIHtQcm9taXNlfQorICAgICAqCisgICAgICogQW4gYXJiaXRyYXJ5IHByb21pc2Ug
cHJvdmlkZWQgYnkgdGhlIGNhbGxlciBtYXkgaGF2ZSBvcmlnaW5hdGVkIGluCisgICAgICogYW5v
dGhlciBmcmFtZSB0aGF0IGhhdmUgc2luY2UgbmF2aWdhdGVkIGF3YXksIHJlbmRlcmluZyB0aGUg
ZnJhbWUncworICAgICAqIGRvY3VtZW50IGluYWN0aXZlLiBTdWNoIGEgcHJvbWlzZSBjYW5ub3Qg
YmUgdXNlZCB3aXRoIGBhd2FpdGAgb3IKKyAgICAgKiBQcm9taXNlLnJlc29sdmUoKSwgYXMgbWlj
cm90YXNrcyBhc3NvY2lhdGVkIHdpdGggaXQgbWF5IGJlIHByZXZlbnRlZAorICAgICAqIGZyb20g
YmVpbmcgcnVuLiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3doYXR3Zy9odG1sL2lzc3Vlcy81MzE5
IGZvciBhCisgICAgICogcGFydGljdWxhciBjYXNlLgorICAgICAqCisgICAgICogSW4gZnVuY3Rp
b25zIHdlIGRlZmluZSBoZXJlLCB0aGVyZSBpcyBhbiBleHBlY3RhdGlvbiBmcm9tIHRoZSBjYWxs
ZXIKKyAgICAgKiB0aGF0IHRoZSBwcm9taXNlIGlzIGZyb20gdGhlIGN1cnJlbnQgcmVhbG0sIHRo
YXQgY2FuIGFsd2F5cyBiZSB1c2VkIHdpdGgKKyAgICAgKiBgYXdhaXRgLCBldGMuIFdlIHRoZXJl
Zm9yZSBjcmVhdGUgYSBuZXcgcHJvbWlzZSBpbiB0aGlzIHJlYWxtIHRoYXQKKyAgICAgKiBpbmhl
cml0IHRoZSB2YWx1ZSBhbmQgc3RhdHVzIGZyb20gdGhlIGdpdmVuIHByb21pc2UuCisgICAgICov
CisKKyAgICBmdW5jdGlvbiBicmluZ19wcm9taXNlX3RvX2N1cnJlbnRfcmVhbG0ocHJvbWlzZSkg
eworICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocHJvbWlzZS50aGVuLmJpbmQocHJvbWlzZSkp
OworICAgIH0KKworICAgIGZ1bmN0aW9uIHByb21pc2VfcmVqZWN0c19qcyh0ZXN0LCBjb25zdHJ1
Y3RvciwgcHJvbWlzZSwgZGVzY3JpcHRpb24pIHsKKyAgICAgICAgcmV0dXJuIGJyaW5nX3Byb21p
c2VfdG9fY3VycmVudF9yZWFsbShwcm9taXNlKQorICAgICAgICAgICAgLnRoZW4odGVzdC51bnJl
YWNoZWRfZnVuYygiU2hvdWxkIGhhdmUgcmVqZWN0ZWQ6ICIgKyBkZXNjcmlwdGlvbikpCisgICAg
ICAgICAgICAuY2F0Y2goZnVuY3Rpb24oZSkgeworICAgICAgICAgICAgICAgIGFzc2VydF90aHJv
d3NfanNfaW1wbChjb25zdHJ1Y3RvciwgZnVuY3Rpb24oKSB7IHRocm93IGUgfSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24sICJwcm9taXNlX3JlamVj
dHNfanMiKTsKKyAgICAgICAgICAgIH0pOworICAgIH0KKworICAgIC8qKgorICAgICAqIEFzc2Vy
dCB0aGF0IGEgUHJvbWlzZSBpcyByZWplY3RlZCB3aXRoIHRoZSByaWdodCBET01FeGNlcHRpb24u
CisgICAgICoKKyAgICAgKiBAcGFyYW0gdGVzdCB0aGUgdGVzdCBhcmd1bWVudCBwYXNzZWQgdG8g
cHJvbWlzZV90ZXN0CisgICAgICogQHBhcmFtIHtudW1iZXJ8c3RyaW5nfSB0eXBlLiAgU2VlIGRv
Y3VtZW50YXRpb24gZm9yIGFzc2VydF90aHJvd3NfZG9tLgorICAgICAqCisgICAgICogRm9yIHRo
ZSByZW1haW5pbmcgYXJndW1lbnRzLCB0aGVyZSBhcmUgdHdvIHdheXMgb2YgY2FsbGluZworICAg
ICAqIHByb21pc2VfcmVqZWN0c19kb206CisgICAgICoKKyAgICAgKiAxKSBJZiB0aGUgRE9NRXhj
ZXB0aW9uIGlzIGV4cGVjdGVkIHRvIGNvbWUgZnJvbSB0aGUgY3VycmVudCBnbG9iYWwsIHRoZQor
ICAgICAqIHRoaXJkIGFyZ3VtZW50IHNob3VsZCBiZSB0aGUgcHJvbWlzZSBleHBlY3RlZCB0byBy
ZWplY3QsIGFuZCBhIGZvdXJ0aCwKKyAgICAgKiBvcHRpb25hbCwgYXJndW1lbnQgaXMgdGhlIGFz
c2VydGlvbiBkZXNjcmlwdGlvbi4KKyAgICAgKgorICAgICAqIDIpIElmIHRoZSBET01FeGNlcHRp
b24gaXMgZXhwZWN0ZWQgdG8gY29tZSBmcm9tIHNvbWUgb3RoZXIgZ2xvYmFsLCB0aGUKKyAgICAg
KiB0aGlyZCBhcmd1bWVudCBzaG91bGQgYmUgdGhlIERPTUV4Y2VwdGlvbiBjb25zdHJ1Y3RvciBm
cm9tIHRoYXQgZ2xvYmFsLAorICAgICAqIHRoZSBmb3VydGggYXJndW1lbnQgdGhlIHByb21pc2Ug
ZXhwZWN0ZWQgdG8gcmVqZWN0LCBhbmQgdGhlIGZpZnRoLAorICAgICAqIG9wdGlvbmFsLCBhcmd1
bWVudCB0aGUgYXNzZXJ0aW9uIGRlc2NyaXB0aW9uLgorICAgICAqLworCisgICAgZnVuY3Rpb24g
cHJvbWlzZV9yZWplY3RzX2RvbSh0ZXN0LCB0eXBlLCBwcm9taXNlT3JDb25zdHJ1Y3RvciwgZGVz
Y3JpcHRpb25PclByb21pc2UsIG1heWJlRGVzY3JpcHRpb24pIHsKKyAgICAgICAgbGV0IGNvbnN0
cnVjdG9yLCBwcm9taXNlLCBkZXNjcmlwdGlvbjsKKyAgICAgICAgaWYgKHR5cGVvZiBwcm9taXNl
T3JDb25zdHJ1Y3RvciA9PT0gImZ1bmN0aW9uIiAmJgorICAgICAgICAgICAgcHJvbWlzZU9yQ29u
c3RydWN0b3IubmFtZSA9PT0gIkRPTUV4Y2VwdGlvbiIpIHsKKyAgICAgICAgICAgIGNvbnN0cnVj
dG9yID0gcHJvbWlzZU9yQ29uc3RydWN0b3I7CisgICAgICAgICAgICBwcm9taXNlID0gZGVzY3Jp
cHRpb25PclByb21pc2U7CisgICAgICAgICAgICBkZXNjcmlwdGlvbiA9IG1heWJlRGVzY3JpcHRp
b247CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjb25zdHJ1Y3RvciA9IHNlbGYuRE9N
RXhjZXB0aW9uOworICAgICAgICAgICAgcHJvbWlzZSA9IHByb21pc2VPckNvbnN0cnVjdG9yOwor
ICAgICAgICAgICAgZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbk9yUHJvbWlzZTsKKyAgICAgICAg
ICAgIGFzc2VydChtYXliZURlc2NyaXB0aW9uID09PSB1bmRlZmluZWQsCisgICAgICAgICAgICAg
ICAgICAgIlRvbyBtYW55IGFyZ3MgcGFzZWQgdG8gbm8tY29uc3RydWN0b3IgdmVyc2lvbiBvZiBw
cm9taXNlX3JlamVjdHNfZG9tIik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGJyaW5nX3By
b21pc2VfdG9fY3VycmVudF9yZWFsbShwcm9taXNlKQorICAgICAgICAgICAgLnRoZW4odGVzdC51
bnJlYWNoZWRfZnVuYygiU2hvdWxkIGhhdmUgcmVqZWN0ZWQ6ICIgKyBkZXNjcmlwdGlvbikpCisg
ICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24oZSkgeworICAgICAgICAgICAgICAgIGFzc2VydF90
aHJvd3NfZG9tX2ltcGwodHlwZSwgZnVuY3Rpb24oKSB7IHRocm93IGUgfSwgZGVzY3JpcHRpb24s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHJvbWlzZV9yZWplY3Rz
X2RvbSIsIGNvbnN0cnVjdG9yKTsKKyAgICAgICAgICAgIH0pOworICAgIH0KKworICAgIGZ1bmN0
aW9uIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHRlc3QsIGV4Y2VwdGlvbiwgcHJvbWlzZSwgZGVz
Y3JpcHRpb24pIHsKKyAgICAgICAgcmV0dXJuIGJyaW5nX3Byb21pc2VfdG9fY3VycmVudF9yZWFs
bShwcm9taXNlKQorICAgICAgICAgICAgLnRoZW4odGVzdC51bnJlYWNoZWRfZnVuYygiU2hvdWxk
IGhhdmUgcmVqZWN0ZWQ6ICIgKyBkZXNjcmlwdGlvbikpCisgICAgICAgICAgICAuY2F0Y2goZnVu
Y3Rpb24oZSkgeworICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3NfZXhhY3RseV9pbXBsKGV4
Y2VwdGlvbiwgZnVuY3Rpb24oKSB7IHRocm93IGUgfSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiwgInByb21pc2VfcmVqZWN0c19leGFjdGx5
Iik7CisgICAgICAgICAgICB9KTsKICAgICB9CiAKICAgICAvKioKQEAgLTc2OSw5ICs4OTMsNTYg
QEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAgIHRlc3RfZW52
aXJvbm1lbnQub25fbmV3X2hhcm5lc3NfcHJvcGVydGllcyhwcm9wZXJ0aWVzKTsKICAgICB9CiAK
KyAgICBmdW5jdGlvbiBwcm9taXNlX3NldHVwKGZ1bmMsIG1heWJlX3Byb3BlcnRpZXMpCisgICAg
eworICAgICAgICBpZiAodHlwZW9mIGZ1bmMgIT09ICJmdW5jdGlvbiIpIHsKKyAgICAgICAgICAg
IHRlc3RzLnNldF9zdGF0dXModGVzdHMuc3RhdHVzLkVSUk9SLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAicHJvbWlzZV90ZXN0IGludm9rZWQgd2l0aG91dCBhIGZ1bmN0aW9uIik7Cisg
ICAgICAgICAgICB0ZXN0cy5jb21wbGV0ZSgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgICAgIHRlc3RzLnByb21pc2Vfc2V0dXBfY2FsbGVkID0gdHJ1ZTsKKworICAgICAg
ICBpZiAoIXRlc3RzLnByb21pc2VfdGVzdHMpIHsKKyAgICAgICAgICAgIHRlc3RzLnByb21pc2Vf
dGVzdHMgPSBQcm9taXNlLnJlc29sdmUoKTsKKyAgICAgICAgfQorCisgICAgICAgIHRlc3RzLnBy
b21pc2VfdGVzdHMgPSB0ZXN0cy5wcm9taXNlX3Rlc3RzCisgICAgICAgICAgICAudGhlbihmdW5j
dGlvbigpCisgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgdmFyIHBy
b3BlcnRpZXMgPSBtYXliZV9wcm9wZXJ0aWVzIHx8IHt9OworICAgICAgICAgICAgICAgICAgICAg
IHZhciByZXN1bHQ7CisKKyAgICAgICAgICAgICAgICAgICAgICB0ZXN0cy5zZXR1cChudWxsLCBw
cm9wZXJ0aWVzKTsKKyAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBmdW5jKCk7CisgICAg
ICAgICAgICAgICAgICAgICAgdGVzdF9lbnZpcm9ubWVudC5vbl9uZXdfaGFybmVzc19wcm9wZXJ0
aWVzKHByb3BlcnRpZXMpOworCisgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQgfHwg
dHlwZW9mIHJlc3VsdC50aGVuICE9PSAiZnVuY3Rpb24iKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRocm93ICJOb24tdGhlbmFibGUgcmV0dXJuZWQgYnkgZnVuY3Rpb24gcGFzc2VkIHRv
IGBwcm9taXNlX3NldHVwYCI7CisgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICAgICAgICB9KQorICAgICAgICAg
ICAgLmNhdGNoKGZ1bmN0aW9uKGUpCisgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICAgICB0ZXN0cy5zZXRfc3RhdHVzKHRlc3RzLnN0YXR1cy5FUlJPUiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcoZSksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZSAmJiBlLnN0YWNrKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgdGVzdHMuY29tcGxldGUoKTsKKyAgICAgICAgICAgICAgICAgICB9KTsKKyAgICB9
CisKICAgICBmdW5jdGlvbiBkb25lKCkgewogICAgICAgICBpZiAodGVzdHMudGVzdHMubGVuZ3Ro
ID09PSAwKSB7Ci0gICAgICAgICAgICB0ZXN0cy5zZXRfZmlsZV9pc190ZXN0KCk7CisgICAgICAg
ICAgICAvLyBgZG9uZWAgaXMgaW52b2tlZCBhZnRlciBoYW5kbGluZyB1bmNhdWdodCBleGNlcHRp
b25zLCBzbyBpZiB0aGUKKyAgICAgICAgICAgIC8vIGhhcm5lc3Mgc3RhdHVzIGlzIGFscmVhZHkg
c2V0LCB0aGUgY29ycmVzcG9uZGluZyBtZXNzYWdlIGlzIG1vcmUKKyAgICAgICAgICAgIC8vIGRl
c2NyaXB0aXZlIHRoYW4gdGhlIGdlbmVyaWMgbWVzc2FnZSBkZWZpbmVkIGhlcmUuCisgICAgICAg
ICAgICBpZiAodGVzdHMuc3RhdHVzLnN0YXR1cyA9PT0gbnVsbCkgeworICAgICAgICAgICAgICAg
IHRlc3RzLnN0YXR1cy5zdGF0dXMgPSB0ZXN0cy5zdGF0dXMuRVJST1I7CisgICAgICAgICAgICAg
ICAgdGVzdHMuc3RhdHVzLm1lc3NhZ2UgPSAiZG9uZSgpIHdhcyBjYWxsZWQgd2l0aG91dCBmaXJz
dCBkZWZpbmluZyBhbnkgdGVzdHMiOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB0ZXN0
cy5jb21wbGV0ZSgpOworICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGlm
ICh0ZXN0cy5maWxlX2lzX3Rlc3QpIHsKICAgICAgICAgICAgIC8vIGZpbGUgaXMgdGVzdCBmaWxl
cyBuZXZlciBoYXZlIGFzeW5jaHJvbm91cyBjbGVhbnVwIGxvZ2ljLApAQCAtNzk0LDYgKzk2NSwx
MiBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgICAgICAg
ICB9KTsKICAgICB9CiAKKyAgICAvKgorICAgICAqIFJlZ2lzdGVyIGEgZnVuY3Rpb24gYXMgYSBE
T00gZXZlbnQgbGlzdGVuZXIgdG8gdGhlIGdpdmVuIG9iamVjdCBmb3IgdGhlCisgICAgICogZXZl
bnQgYnViYmxpbmcgcGhhc2UuCisgICAgICoKKyAgICAgKiBUaGlzIGZ1bmN0aW9uIHdhcyBkZXBy
ZWNhdGVkIGluIE5vdmVtYmVyIG9mIDIwMTkuCisgICAgICovCiAgICAgZnVuY3Rpb24gb25fZXZl
bnQob2JqZWN0LCBldmVudCwgY2FsbGJhY2spCiAgICAgewogICAgICAgICBvYmplY3QuYWRkRXZl
bnRMaXN0ZW5lcihldmVudCwgY2FsbGJhY2ssIGZhbHNlKTsKQEAgLTgxMCw5ICs5ODcsMTIgQEAg
cG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgZXhwb3NlKHRlc3QsICd0
ZXN0Jyk7CiAgICAgZXhwb3NlKGFzeW5jX3Rlc3QsICdhc3luY190ZXN0Jyk7CiAgICAgZXhwb3Nl
KHByb21pc2VfdGVzdCwgJ3Byb21pc2VfdGVzdCcpOwotICAgIGV4cG9zZShwcm9taXNlX3JlamVj
dHMsICdwcm9taXNlX3JlamVjdHMnKTsKKyAgICBleHBvc2UocHJvbWlzZV9yZWplY3RzX2pzLCAn
cHJvbWlzZV9yZWplY3RzX2pzJyk7CisgICAgZXhwb3NlKHByb21pc2VfcmVqZWN0c19kb20sICdw
cm9taXNlX3JlamVjdHNfZG9tJyk7CisgICAgZXhwb3NlKHByb21pc2VfcmVqZWN0c19leGFjdGx5
LCAncHJvbWlzZV9yZWplY3RzX2V4YWN0bHknKTsKICAgICBleHBvc2UoZ2VuZXJhdGVfdGVzdHMs
ICdnZW5lcmF0ZV90ZXN0cycpOwogICAgIGV4cG9zZShzZXR1cCwgJ3NldHVwJyk7CisgICAgZXhw
b3NlKHByb21pc2Vfc2V0dXAsICdwcm9taXNlX3NldHVwJyk7CiAgICAgZXhwb3NlKGRvbmUsICdk
b25lJyk7CiAgICAgZXhwb3NlKG9uX2V2ZW50LCAnb25fZXZlbnQnKTsKICAgICBleHBvc2Uoc3Rl
cF90aW1lb3V0LCAnc3RlcF90aW1lb3V0Jyk7CkBAIC05MTQsMTIgKzEwOTQsMjAgQEAgcG9saWNp
ZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAgICAgICBzZWVuLnB1c2godmFs
KTsKICAgICAgICAgfQogICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWwpKSB7Ci0gICAgICAg
ICAgICByZXR1cm4gIlsiICsgdmFsLm1hcChmdW5jdGlvbih4KSB7cmV0dXJuIGZvcm1hdF92YWx1
ZSh4LCBzZWVuKTt9KS5qb2luKCIsICIpICsgIl0iOworICAgICAgICAgICAgbGV0IG91dHB1dCA9
ICJbIjsKKyAgICAgICAgICAgIGlmICh2YWwuYmVnaW5FbGxpcHNpcyAhPT0gdW5kZWZpbmVkKSB7
CisgICAgICAgICAgICAgICAgb3V0cHV0ICs9ICLigKYsICI7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBvdXRwdXQgKz0gdmFsLm1hcChmdW5jdGlvbih4KSB7cmV0dXJuIGZvcm1hdF92YWx1
ZSh4LCBzZWVuKTt9KS5qb2luKCIsICIpOworICAgICAgICAgICAgaWYgKHZhbC5lbmRFbGxpcHNp
cyAhPT0gdW5kZWZpbmVkKSB7CisgICAgICAgICAgICAgICAgb3V0cHV0ICs9ICIsIOKApiI7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gb3V0cHV0ICsgIl0iOwogICAgICAgICB9
CiAKICAgICAgICAgc3dpdGNoICh0eXBlb2YgdmFsKSB7CiAgICAgICAgIGNhc2UgInN0cmluZyI6
Ci0gICAgICAgICAgICB2YWwgPSB2YWwucmVwbGFjZSgiXFwiLCAiXFxcXCIpOworICAgICAgICAg
ICAgdmFsID0gdmFsLnJlcGxhY2UoL1xcL2csICJcXFxcIik7CiAgICAgICAgICAgICBmb3IgKHZh
ciBwIGluIHJlcGxhY2VtZW50cykgewogICAgICAgICAgICAgICAgIHZhciByZXBsYWNlID0gIlxc
IiArIHJlcGxhY2VtZW50c1twXTsKICAgICAgICAgICAgICAgICB2YWwgPSB2YWwucmVwbGFjZShS
ZWdFeHAoU3RyaW5nLmZyb21DaGFyQ29kZShwKSwgImciKSwgcmVwbGFjZSk7CkBAIC05ODQsMTkg
KzExNzIsNTMgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICog
QXNzZXJ0aW9ucwogICAgICAqLwogCisgICAgZnVuY3Rpb24gZXhwb3NlX2Fzc2VydChmLCBuYW1l
KSB7CisgICAgICAgIGZ1bmN0aW9uIGFzc2VydF93cmFwcGVyKC4uLmFyZ3MpIHsKKyAgICAgICAg
ICAgIGxldCBzdGF0dXMgPSBUZXN0LnN0YXR1c2VzLlRJTUVPVVQ7CisgICAgICAgICAgICBsZXQg
c3RhY2sgPSBudWxsOworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBpZiAoc2V0
dGluZ3MuZGVidWcpIHsKKyAgICAgICAgICAgICAgICAgICAgY29uc29sZS5kZWJ1ZygiQVNTRVJU
IiwgbmFtZSwgdGVzdHMuY3VycmVudF90ZXN0ICYmIHRlc3RzLmN1cnJlbnRfdGVzdC5uYW1lLCBh
cmdzKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKHRlc3RzLm91dHB1
dCkgeworICAgICAgICAgICAgICAgICAgICB0ZXN0cy5zZXRfYXNzZXJ0KG5hbWUsIGFyZ3MpOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjb25zdCBydiA9IGYuYXBwbHkodW5k
ZWZpbmVkLCBhcmdzKTsKKyAgICAgICAgICAgICAgICBzdGF0dXMgPSBUZXN0LnN0YXR1c2VzLlBB
U1M7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJ2OworICAgICAgICAgICAgfSBjYXRjaChlKSB7
CisgICAgICAgICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBBc3NlcnRpb25FcnJvcikgeworICAg
ICAgICAgICAgICAgICAgICBzdGF0dXMgPSBUZXN0LnN0YXR1c2VzLkZBSUw7CisgICAgICAgICAg
ICAgICAgICAgIHN0YWNrID0gZS5zdGFjazsKKyAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICAgICAgc3RhdHVzID0gVGVzdC5zdGF0dXNlcy5FUlJPUjsKKyAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIHRocm93IGU7CisgICAgICAgICAgICB9IGZpbmFs
bHkgeworICAgICAgICAgICAgICAgIGlmICh0ZXN0cy5vdXRwdXQgJiYgIXN0YWNrKSB7CisgICAg
ICAgICAgICAgICAgICAgIHN0YWNrID0gZ2V0X3N0YWNrKCk7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIGlmICh0ZXN0cy5vdXRwdXQpIHsKKyAgICAgICAgICAgICAgICAgICAg
dGVzdHMuc2V0X2Fzc2VydF9zdGF0dXMoc3RhdHVzLCBzdGFjayk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGV4cG9zZShhc3NlcnRfd3JhcHBl
ciwgbmFtZSk7CisgICAgfQorCiAgICAgZnVuY3Rpb24gYXNzZXJ0X3RydWUoYWN0dWFsLCBkZXNj
cmlwdGlvbikKICAgICB7CiAgICAgICAgIGFzc2VydChhY3R1YWwgPT09IHRydWUsICJhc3NlcnRf
dHJ1ZSIsIGRlc2NyaXB0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhw
ZWN0ZWQgdHJ1ZSBnb3QgJHthY3R1YWx9Iiwge2FjdHVhbDphY3R1YWx9KTsKICAgICB9Ci0gICAg
ZXhwb3NlKGFzc2VydF90cnVlLCAiYXNzZXJ0X3RydWUiKTsKKyAgICBleHBvc2VfYXNzZXJ0KGFz
c2VydF90cnVlLCAiYXNzZXJ0X3RydWUiKTsKIAogICAgIGZ1bmN0aW9uIGFzc2VydF9mYWxzZShh
Y3R1YWwsIGRlc2NyaXB0aW9uKQogICAgIHsKICAgICAgICAgYXNzZXJ0KGFjdHVhbCA9PT0gZmFs
c2UsICJhc3NlcnRfZmFsc2UiLCBkZXNjcmlwdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJleHBlY3RlZCBmYWxzZSBnb3QgJHthY3R1YWx9Iiwge2FjdHVhbDphY3R1YWx9
KTsKICAgICB9Ci0gICAgZXhwb3NlKGFzc2VydF9mYWxzZSwgImFzc2VydF9mYWxzZSIpOworICAg
IGV4cG9zZV9hc3NlcnQoYXNzZXJ0X2ZhbHNlLCAiYXNzZXJ0X2ZhbHNlIik7CiAKICAgICBmdW5j
dGlvbiBzYW1lX3ZhbHVlKHgsIHkpIHsKICAgICAgICAgaWYgKHkgIT09IHkpIHsKQEAgLTEwMjYs
NyArMTI0OCw3IEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkICR7ZXhwZWN0
ZWR9IGJ1dCBnb3QgJHthY3R1YWx9IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHtleHBlY3RlZDpleHBlY3RlZCwgYWN0dWFsOmFjdHVhbH0pOwogICAgIH0K
LSAgICBleHBvc2UoYXNzZXJ0X2VxdWFscywgImFzc2VydF9lcXVhbHMiKTsKKyAgICBleHBvc2Vf
YXNzZXJ0KGFzc2VydF9lcXVhbHMsICJhc3NlcnRfZXF1YWxzIik7CiAKICAgICBmdW5jdGlvbiBh
c3NlcnRfbm90X2VxdWFscyhhY3R1YWwsIGV4cGVjdGVkLCBkZXNjcmlwdGlvbikKICAgICB7CkBA
IC0xMDM4LDcgKzEyNjAsNyBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ290IGRpc2Fs
bG93ZWQgdmFsdWUgJHthY3R1YWx9IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB7YWN0dWFsOmFjdHVhbH0pOwogICAgIH0KLSAgICBleHBvc2UoYXNzZXJ0
X25vdF9lcXVhbHMsICJhc3NlcnRfbm90X2VxdWFscyIpOworICAgIGV4cG9zZV9hc3NlcnQoYXNz
ZXJ0X25vdF9lcXVhbHMsICJhc3NlcnRfbm90X2VxdWFscyIpOwogCiAgICAgZnVuY3Rpb24gYXNz
ZXJ0X2luX2FycmF5KGFjdHVhbCwgZXhwZWN0ZWQsIGRlc2NyaXB0aW9uKQogICAgIHsKQEAgLTEw
NDYsOCArMTI2OCwxMCBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlICR7YWN0
dWFsfSBub3QgaW4gYXJyYXkgJHtleHBlY3RlZH0iLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB7YWN0dWFsOmFjdHVhbCwgZXhwZWN0ZWQ6ZXhwZWN0ZWR9
KTsKICAgICB9Ci0gICAgZXhwb3NlKGFzc2VydF9pbl9hcnJheSwgImFzc2VydF9pbl9hcnJheSIp
OworICAgIGV4cG9zZV9hc3NlcnQoYXNzZXJ0X2luX2FycmF5LCAiYXNzZXJ0X2luX2FycmF5Iik7
CiAKKyAgICAvLyBUaGlzIGZ1bmN0aW9uIHdhcyBkZXByZWNhdGVkIGluIEp1bHkgb2YgMjAxNS4K
KyAgICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQvaXNz
dWVzLzIwMzMKICAgICBmdW5jdGlvbiBhc3NlcnRfb2JqZWN0X2VxdWFscyhhY3R1YWwsIGV4cGVj
dGVkLCBkZXNjcmlwdGlvbikKICAgICB7CiAgICAgICAgICBhc3NlcnQodHlwZW9mIGFjdHVhbCA9
PT0gIm9iamVjdCIgJiYgYWN0dWFsICE9PSBudWxsLCAiYXNzZXJ0X29iamVjdF9lcXVhbHMiLCBk
ZXNjcmlwdGlvbiwKQEAgLTEwNzAsNyArMTI5NCw3IEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRp
b24gZm9ybXMgWzNdLgogICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAg
ICAgICAgYXNzZXJ0KHNhbWVfdmFsdWUoYWN0dWFsW3BdLCBleHBlY3RlZFtwXSksICJhc3NlcnRf
b2JqZWN0X2VxdWFscyIsIGRlc2NyaXB0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwcm9wZXJ0eSAke3B9IGV4cGVjdGVkICR7ZXhw
ZWN0ZWR9IGdvdCAke2FjdHVhbH0iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHtwOnAsIGV4cGVjdGVkOmV4cGVjdGVkLCBhY3R1YWw6YWN0
dWFsfSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAge3A6cCwgZXhwZWN0ZWQ6ZXhwZWN0ZWRbcF0sIGFjdHVhbDphY3R1YWxbcF19KTsKICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBmb3IgKHAgaW4g
ZXhwZWN0ZWQpIHsKQEAgLTEwODIsMzIgKzEzMDYsNjQgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1
dGlvbiBmb3JtcyBbM10uCiAgICAgICAgICB9CiAgICAgICAgICBjaGVja19lcXVhbChhY3R1YWws
IGV4cGVjdGVkLCBbXSk7CiAgICAgfQotICAgIGV4cG9zZShhc3NlcnRfb2JqZWN0X2VxdWFscywg
ImFzc2VydF9vYmplY3RfZXF1YWxzIik7CisgICAgZXhwb3NlX2Fzc2VydChhc3NlcnRfb2JqZWN0
X2VxdWFscywgImFzc2VydF9vYmplY3RfZXF1YWxzIik7CiAKICAgICBmdW5jdGlvbiBhc3NlcnRf
YXJyYXlfZXF1YWxzKGFjdHVhbCwgZXhwZWN0ZWQsIGRlc2NyaXB0aW9uKQogICAgIHsKKyAgICAg
ICAgY29uc3QgbWF4X2FycmF5X2xlbmd0aCA9IDIwOworICAgICAgICBmdW5jdGlvbiBzaG9ydGVu
X2FycmF5KGFyciwgb2Zmc2V0ID0gMCkgeworICAgICAgICAgICAgLy8gTWFrZSAiLCDigKYiIG9u
bHkgc2hvdyB1cCB3aGVuIGl0IHdvdWxkIGxpa2VseSByZWR1Y2UgdGhlIGxlbmd0aCwgbm90IGFj
Y291bnRpbmcgZm9yCisgICAgICAgICAgICAvLyBmb250cy4KKyAgICAgICAgICAgIGlmIChhcnIu
bGVuZ3RoIDwgbWF4X2FycmF5X2xlbmd0aCArIDIpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
YXJyOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gQnkgZGVmYXVsdCB3ZSB3YW50IGhh
bGYgdGhlIGVsZW1lbnRzIGFmdGVyIHRoZSBvZmZzZXQgYW5kIGhhbGYgYmVmb3JlCisgICAgICAg
ICAgICAvLyBCdXQgaWYgdGhhdCB0YWtlcyB1cyBwYXN0IHRoZSBlbmQgb2YgdGhlIGFycmF5LCB3
ZSBoYXZlIG1vcmUgYmVmb3JlLCBhbmQKKyAgICAgICAgICAgIC8vIGlmIGl0IHRha2VzIHVzIGJl
Zm9yZSB0aGUgc3RhcnQgd2UgaGF2ZSBtb3JlIGFmdGVyLgorICAgICAgICAgICAgY29uc3QgbGVu
Z3RoX2FmdGVyX29mZnNldCA9IE1hdGguZmxvb3IobWF4X2FycmF5X2xlbmd0aCAvIDIpOworICAg
ICAgICAgICAgbGV0IHVwcGVyX2JvdW5kID0gTWF0aC5taW4obGVuZ3RoX2FmdGVyX29mZnNldCAr
IG9mZnNldCwgYXJyLmxlbmd0aCk7CisgICAgICAgICAgICBjb25zdCBsb3dlcl9ib3VuZCA9IE1h
dGgubWF4KHVwcGVyX2JvdW5kIC0gbWF4X2FycmF5X2xlbmd0aCwgMCk7CisKKyAgICAgICAgICAg
IGlmIChsb3dlcl9ib3VuZCA9PT0gMCkgeworICAgICAgICAgICAgICAgIHVwcGVyX2JvdW5kID0g
bWF4X2FycmF5X2xlbmd0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY29uc3Qgb3V0
cHV0ID0gYXJyLnNsaWNlKGxvd2VyX2JvdW5kLCB1cHBlcl9ib3VuZCk7CisgICAgICAgICAgICBp
ZiAobG93ZXJfYm91bmQgPiAwKSB7CisgICAgICAgICAgICAgICAgb3V0cHV0LmJlZ2luRWxsaXBz
aXMgPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHVwcGVyX2JvdW5kIDwg
YXJyLmxlbmd0aCkgeworICAgICAgICAgICAgICAgIG91dHB1dC5lbmRFbGxpcHNpcyA9IHRydWU7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gb3V0cHV0OworICAgICAgICB9CisK
ICAgICAgICAgYXNzZXJ0KHR5cGVvZiBhY3R1YWwgPT09ICJvYmplY3QiICYmIGFjdHVhbCAhPT0g
bnVsbCAmJiAibGVuZ3RoIiBpbiBhY3R1YWwsCiAgICAgICAgICAgICAgICAiYXNzZXJ0X2FycmF5
X2VxdWFscyIsIGRlc2NyaXB0aW9uLAogICAgICAgICAgICAgICAgInZhbHVlIGlzICR7YWN0dWFs
fSwgZXhwZWN0ZWQgYXJyYXkiLAogICAgICAgICAgICAgICAge2FjdHVhbDphY3R1YWx9KTsKICAg
ICAgICAgYXNzZXJ0KGFjdHVhbC5sZW5ndGggPT09IGV4cGVjdGVkLmxlbmd0aCwKICAgICAgICAg
ICAgICAgICJhc3NlcnRfYXJyYXlfZXF1YWxzIiwgZGVzY3JpcHRpb24sCi0gICAgICAgICAgICAg
ICAibGVuZ3RocyBkaWZmZXIsIGV4cGVjdGVkICR7ZXhwZWN0ZWR9IGdvdCAke2FjdHVhbH0iLAot
ICAgICAgICAgICAgICAge2V4cGVjdGVkOmV4cGVjdGVkLmxlbmd0aCwgYWN0dWFsOmFjdHVhbC5s
ZW5ndGh9KTsKKyAgICAgICAgICAgICAgICJsZW5ndGhzIGRpZmZlciwgZXhwZWN0ZWQgYXJyYXkg
JHtleHBlY3RlZH0gbGVuZ3RoICR7ZXhwZWN0ZWRMZW5ndGh9LCBnb3QgJHthY3R1YWx9IGxlbmd0
aCAke2FjdHVhbExlbmd0aH0iLAorICAgICAgICAgICAgICAge2V4cGVjdGVkOnNob3J0ZW5fYXJy
YXkoZXhwZWN0ZWQsIGV4cGVjdGVkLmxlbmd0aCAtIDEpLCBleHBlY3RlZExlbmd0aDpleHBlY3Rl
ZC5sZW5ndGgsCisgICAgICAgICAgICAgICAgYWN0dWFsOnNob3J0ZW5fYXJyYXkoYWN0dWFsLCBh
Y3R1YWwubGVuZ3RoIC0gMSksIGFjdHVhbExlbmd0aDphY3R1YWwubGVuZ3RoCisgICAgICAgICAg
ICAgICB9KTsKIAogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFjdHVhbC5sZW5ndGg7IGkr
KykgewogICAgICAgICAgICAgYXNzZXJ0KGFjdHVhbC5oYXNPd25Qcm9wZXJ0eShpKSA9PT0gZXhw
ZWN0ZWQuaGFzT3duUHJvcGVydHkoaSksCiAgICAgICAgICAgICAgICAgICAgImFzc2VydF9hcnJh
eV9lcXVhbHMiLCBkZXNjcmlwdGlvbiwKLSAgICAgICAgICAgICAgICAgICAicHJvcGVydHkgJHtp
fSwgcHJvcGVydHkgZXhwZWN0ZWQgdG8gYmUgJHtleHBlY3RlZH0gYnV0IHdhcyAke2FjdHVhbH0i
LAorICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCBwcm9wZXJ0eSAke2l9IHRvIGJlICR7ZXhw
ZWN0ZWR9IGJ1dCB3YXMgJHthY3R1YWx9IChleHBlY3RlZCBhcnJheSAke2FycmF5RXhwZWN0ZWR9
IGdvdCAke2FycmF5QWN0dWFsfSkiLAogICAgICAgICAgICAgICAgICAgIHtpOmksIGV4cGVjdGVk
OmV4cGVjdGVkLmhhc093blByb3BlcnR5KGkpID8gInByZXNlbnQiIDogIm1pc3NpbmciLAotICAg
ICAgICAgICAgICAgICAgIGFjdHVhbDphY3R1YWwuaGFzT3duUHJvcGVydHkoaSkgPyAicHJlc2Vu
dCIgOiAibWlzc2luZyJ9KTsKKyAgICAgICAgICAgICAgICAgICAgYWN0dWFsOmFjdHVhbC5oYXNP
d25Qcm9wZXJ0eShpKSA/ICJwcmVzZW50IiA6ICJtaXNzaW5nIiwKKyAgICAgICAgICAgICAgICAg
ICAgYXJyYXlFeHBlY3RlZDpzaG9ydGVuX2FycmF5KGV4cGVjdGVkLCBpKSwgYXJyYXlBY3R1YWw6
c2hvcnRlbl9hcnJheShhY3R1YWwsIGkpfSk7CiAgICAgICAgICAgICBhc3NlcnQoc2FtZV92YWx1
ZShleHBlY3RlZFtpXSwgYWN0dWFsW2ldKSwKICAgICAgICAgICAgICAgICAgICAiYXNzZXJ0X2Fy
cmF5X2VxdWFscyIsIGRlc2NyaXB0aW9uLAotICAgICAgICAgICAgICAgICAgICJwcm9wZXJ0eSAk
e2l9LCBleHBlY3RlZCAke2V4cGVjdGVkfSBidXQgZ290ICR7YWN0dWFsfSIsCi0gICAgICAgICAg
ICAgICAgICAge2k6aSwgZXhwZWN0ZWQ6ZXhwZWN0ZWRbaV0sIGFjdHVhbDphY3R1YWxbaV19KTsK
KyAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgcHJvcGVydHkgJHtpfSB0byBiZSAke2V4cGVj
dGVkfSBidXQgZ290ICR7YWN0dWFsfSAoZXhwZWN0ZWQgYXJyYXkgJHthcnJheUV4cGVjdGVkfSBn
b3QgJHthcnJheUFjdHVhbH0pIiwKKyAgICAgICAgICAgICAgICAgICB7aTppLCBleHBlY3RlZDpl
eHBlY3RlZFtpXSwgYWN0dWFsOmFjdHVhbFtpXSwKKyAgICAgICAgICAgICAgICAgICAgYXJyYXlF
eHBlY3RlZDpzaG9ydGVuX2FycmF5KGV4cGVjdGVkLCBpKSwgYXJyYXlBY3R1YWw6c2hvcnRlbl9h
cnJheShhY3R1YWwsIGkpfSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgZXhwb3NlKGFzc2VydF9h
cnJheV9lcXVhbHMsICJhc3NlcnRfYXJyYXlfZXF1YWxzIik7CisgICAgZXhwb3NlX2Fzc2VydChh
c3NlcnRfYXJyYXlfZXF1YWxzLCAiYXNzZXJ0X2FycmF5X2VxdWFscyIpOwogCiAgICAgZnVuY3Rp
b24gYXNzZXJ0X2FycmF5X2FwcHJveF9lcXVhbHMoYWN0dWFsLCBleHBlY3RlZCwgZXBzaWxvbiwg
ZGVzY3JpcHRpb24pCiAgICAgewpAQCAtMTEyNCw3ICsxMzgwLDcgQEAgcG9saWNpZXMgYW5kIGNv
bnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAgICAgICAgICAgICAgImFzc2VydF9hcnJheV9h
cHByb3hfZXF1YWxzIiwgZGVzY3JpcHRpb24sCiAgICAgICAgICAgICAgICAgICAgInByb3BlcnR5
ICR7aX0sIHByb3BlcnR5IGV4cGVjdGVkIHRvIGJlICR7ZXhwZWN0ZWR9IGJ1dCB3YXMgJHthY3R1
YWx9IiwKICAgICAgICAgICAgICAgICAgICB7aTppLCBleHBlY3RlZDpleHBlY3RlZC5oYXNPd25Q
cm9wZXJ0eShpKSA/ICJwcmVzZW50IiA6ICJtaXNzaW5nIiwKLSAgICAgICAgICAgICAgICAgICBh
Y3R1YWw6YWN0dWFsLmhhc093blByb3BlcnR5KGkpID8gInByZXNlbnQiIDogIm1pc3NpbmcifSk7
CisgICAgICAgICAgICAgICAgICAgIGFjdHVhbDphY3R1YWwuaGFzT3duUHJvcGVydHkoaSkgPyAi
cHJlc2VudCIgOiAibWlzc2luZyJ9KTsKICAgICAgICAgICAgIGFzc2VydCh0eXBlb2YgYWN0dWFs
W2ldID09PSAibnVtYmVyIiwKICAgICAgICAgICAgICAgICAgICAiYXNzZXJ0X2FycmF5X2FwcHJv
eF9lcXVhbHMiLCBkZXNjcmlwdGlvbiwKICAgICAgICAgICAgICAgICAgICAicHJvcGVydHkgJHtp
fSwgZXhwZWN0ZWQgYSBudW1iZXIgYnV0IGdvdCBhICR7dHlwZV9hY3R1YWx9IiwKQEAgLTExMzUs
NyArMTM5MSw3IEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAg
ICAgICAgICAgICAgIHtpOmksIGV4cGVjdGVkOmV4cGVjdGVkW2ldLCBhY3R1YWw6YWN0dWFsW2ld
LCBlcHNpbG9uOmVwc2lsb259KTsKICAgICAgICAgfQogICAgIH0KLSAgICBleHBvc2UoYXNzZXJ0
X2FycmF5X2FwcHJveF9lcXVhbHMsICJhc3NlcnRfYXJyYXlfYXBwcm94X2VxdWFscyIpOworICAg
IGV4cG9zZV9hc3NlcnQoYXNzZXJ0X2FycmF5X2FwcHJveF9lcXVhbHMsICJhc3NlcnRfYXJyYXlf
YXBwcm94X2VxdWFscyIpOwogCiAgICAgZnVuY3Rpb24gYXNzZXJ0X2FwcHJveF9lcXVhbHMoYWN0
dWFsLCBleHBlY3RlZCwgZXBzaWxvbiwgZGVzY3JpcHRpb24pCiAgICAgewpAQCAtMTE0NywxMiAr
MTQwMywxOCBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAg
ICAgICAgICJleHBlY3RlZCBhIG51bWJlciBidXQgZ290IGEgJHt0eXBlX2FjdHVhbH0iLAogICAg
ICAgICAgICAgICAge3R5cGVfYWN0dWFsOnR5cGVvZiBhY3R1YWx9KTsKIAotICAgICAgICBhc3Nl
cnQoTWF0aC5hYnMoYWN0dWFsIC0gZXhwZWN0ZWQpIDw9IGVwc2lsb24sCi0gICAgICAgICAgICAg
ICAiYXNzZXJ0X2FwcHJveF9lcXVhbHMiLCBkZXNjcmlwdGlvbiwKLSAgICAgICAgICAgICAgICJl
eHBlY3RlZCAke2V4cGVjdGVkfSArLy0gJHtlcHNpbG9ufSBidXQgZ290ICR7YWN0dWFsfSIsCi0g
ICAgICAgICAgICAgICB7ZXhwZWN0ZWQ6ZXhwZWN0ZWQsIGFjdHVhbDphY3R1YWwsIGVwc2lsb246
ZXBzaWxvbn0pOworICAgICAgICAvLyBUaGUgZXBzaWxvbiBtYXRoIGJlbG93IGRvZXMgbm90IHBs
YWNlIG5pY2Ugd2l0aCBOYU4gYW5kIEluZmluaXR5CisgICAgICAgIC8vIEJ1dCBpbiB0aGlzIGNh
c2UgSW5maW5pdHkgPSBJbmZpbml0eSBhbmQgTmFOID0gTmFOCisgICAgICAgIGlmIChpc0Zpbml0
ZShhY3R1YWwpIHx8IGlzRmluaXRlKGV4cGVjdGVkKSkgeworICAgICAgICAgICAgYXNzZXJ0KE1h
dGguYWJzKGFjdHVhbCAtIGV4cGVjdGVkKSA8PSBlcHNpbG9uLAorICAgICAgICAgICAgICAgICAg
ICJhc3NlcnRfYXBwcm94X2VxdWFscyIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAgICAg
ICJleHBlY3RlZCAke2V4cGVjdGVkfSArLy0gJHtlcHNpbG9ufSBidXQgZ290ICR7YWN0dWFsfSIs
CisgICAgICAgICAgICAgICAgICAge2V4cGVjdGVkOmV4cGVjdGVkLCBhY3R1YWw6YWN0dWFsLCBl
cHNpbG9uOmVwc2lsb259KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGFzc2VydF9l
cXVhbHMoYWN0dWFsLCBleHBlY3RlZCk7CisgICAgICAgIH0KICAgICB9Ci0gICAgZXhwb3NlKGFz
c2VydF9hcHByb3hfZXF1YWxzLCAiYXNzZXJ0X2FwcHJveF9lcXVhbHMiKTsKKyAgICBleHBvc2Vf
YXNzZXJ0KGFzc2VydF9hcHByb3hfZXF1YWxzLCAiYXNzZXJ0X2FwcHJveF9lcXVhbHMiKTsKIAog
ICAgIGZ1bmN0aW9uIGFzc2VydF9sZXNzX3RoYW4oYWN0dWFsLCBleHBlY3RlZCwgZGVzY3JpcHRp
b24pCiAgICAgewpAQCAtMTE2OSw3ICsxNDMxLDcgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlv
biBmb3JtcyBbM10uCiAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgYSBudW1iZXIgbGVzcyB0aGFu
ICR7ZXhwZWN0ZWR9IGJ1dCBnb3QgJHthY3R1YWx9IiwKICAgICAgICAgICAgICAgIHtleHBlY3Rl
ZDpleHBlY3RlZCwgYWN0dWFsOmFjdHVhbH0pOwogICAgIH0KLSAgICBleHBvc2UoYXNzZXJ0X2xl
c3NfdGhhbiwgImFzc2VydF9sZXNzX3RoYW4iKTsKKyAgICBleHBvc2VfYXNzZXJ0KGFzc2VydF9s
ZXNzX3RoYW4sICJhc3NlcnRfbGVzc190aGFuIik7CiAKICAgICBmdW5jdGlvbiBhc3NlcnRfZ3Jl
YXRlcl90aGFuKGFjdHVhbCwgZXhwZWN0ZWQsIGRlc2NyaXB0aW9uKQogICAgIHsKQEAgLTExODYs
NyArMTQ0OCw3IEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAg
ICAgICAgICAgImV4cGVjdGVkIGEgbnVtYmVyIGdyZWF0ZXIgdGhhbiAke2V4cGVjdGVkfSBidXQg
Z290ICR7YWN0dWFsfSIsCiAgICAgICAgICAgICAgICB7ZXhwZWN0ZWQ6ZXhwZWN0ZWQsIGFjdHVh
bDphY3R1YWx9KTsKICAgICB9Ci0gICAgZXhwb3NlKGFzc2VydF9ncmVhdGVyX3RoYW4sICJhc3Nl
cnRfZ3JlYXRlcl90aGFuIik7CisgICAgZXhwb3NlX2Fzc2VydChhc3NlcnRfZ3JlYXRlcl90aGFu
LCAiYXNzZXJ0X2dyZWF0ZXJfdGhhbiIpOwogCiAgICAgZnVuY3Rpb24gYXNzZXJ0X2JldHdlZW5f
ZXhjbHVzaXZlKGFjdHVhbCwgbG93ZXIsIHVwcGVyLCBkZXNjcmlwdGlvbikKICAgICB7CkBAIC0x
MjA0LDcgKzE0NjYsNyBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAg
ICAgICAgICAgICAgICJhbmQgbGVzcyB0aGFuICR7dXBwZXJ9IGJ1dCBnb3QgJHthY3R1YWx9IiwK
ICAgICAgICAgICAgICAgIHtsb3dlcjpsb3dlciwgdXBwZXI6dXBwZXIsIGFjdHVhbDphY3R1YWx9
KTsKICAgICB9Ci0gICAgZXhwb3NlKGFzc2VydF9iZXR3ZWVuX2V4Y2x1c2l2ZSwgImFzc2VydF9i
ZXR3ZWVuX2V4Y2x1c2l2ZSIpOworICAgIGV4cG9zZV9hc3NlcnQoYXNzZXJ0X2JldHdlZW5fZXhj
bHVzaXZlLCAiYXNzZXJ0X2JldHdlZW5fZXhjbHVzaXZlIik7CiAKICAgICBmdW5jdGlvbiBhc3Nl
cnRfbGVzc190aGFuX2VxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIGRlc2NyaXB0aW9uKQogICAgIHsK
QEAgLTEyMjEsNyArMTQ4Myw3IEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNd
LgogICAgICAgICAgICAgICAgImV4cGVjdGVkIGEgbnVtYmVyIGxlc3MgdGhhbiBvciBlcXVhbCB0
byAke2V4cGVjdGVkfSBidXQgZ290ICR7YWN0dWFsfSIsCiAgICAgICAgICAgICAgICB7ZXhwZWN0
ZWQ6ZXhwZWN0ZWQsIGFjdHVhbDphY3R1YWx9KTsKICAgICB9Ci0gICAgZXhwb3NlKGFzc2VydF9s
ZXNzX3RoYW5fZXF1YWwsICJhc3NlcnRfbGVzc190aGFuX2VxdWFsIik7CisgICAgZXhwb3NlX2Fz
c2VydChhc3NlcnRfbGVzc190aGFuX2VxdWFsLCAiYXNzZXJ0X2xlc3NfdGhhbl9lcXVhbCIpOwog
CiAgICAgZnVuY3Rpb24gYXNzZXJ0X2dyZWF0ZXJfdGhhbl9lcXVhbChhY3R1YWwsIGV4cGVjdGVk
LCBkZXNjcmlwdGlvbikKICAgICB7CkBAIC0xMjM4LDcgKzE1MDAsNyBAQCBwb2xpY2llcyBhbmQg
Y29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgICAgICAgICJleHBlY3RlZCBhIG51bWJl
ciBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJHtleHBlY3RlZH0gYnV0IGdvdCAke2FjdHVhbH0i
LAogICAgICAgICAgICAgICAge2V4cGVjdGVkOmV4cGVjdGVkLCBhY3R1YWw6YWN0dWFsfSk7CiAg
ICAgfQotICAgIGV4cG9zZShhc3NlcnRfZ3JlYXRlcl90aGFuX2VxdWFsLCAiYXNzZXJ0X2dyZWF0
ZXJfdGhhbl9lcXVhbCIpOworICAgIGV4cG9zZV9hc3NlcnQoYXNzZXJ0X2dyZWF0ZXJfdGhhbl9l
cXVhbCwgImFzc2VydF9ncmVhdGVyX3RoYW5fZXF1YWwiKTsKIAogICAgIGZ1bmN0aW9uIGFzc2Vy
dF9iZXR3ZWVuX2luY2x1c2l2ZShhY3R1YWwsIGxvd2VyLCB1cHBlciwgZGVzY3JpcHRpb24pCiAg
ICAgewpAQCAtMTI1Niw3ICsxNTE4LDcgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3Jt
cyBbM10uCiAgICAgICAgICAgICAgICAiYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAke3VwcGVy
fSBidXQgZ290ICR7YWN0dWFsfSIsCiAgICAgICAgICAgICAgICB7bG93ZXI6bG93ZXIsIHVwcGVy
OnVwcGVyLCBhY3R1YWw6YWN0dWFsfSk7CiAgICAgfQotICAgIGV4cG9zZShhc3NlcnRfYmV0d2Vl
bl9pbmNsdXNpdmUsICJhc3NlcnRfYmV0d2Vlbl9pbmNsdXNpdmUiKTsKKyAgICBleHBvc2VfYXNz
ZXJ0KGFzc2VydF9iZXR3ZWVuX2luY2x1c2l2ZSwgImFzc2VydF9iZXR3ZWVuX2luY2x1c2l2ZSIp
OwogCiAgICAgZnVuY3Rpb24gYXNzZXJ0X3JlZ2V4cF9tYXRjaChhY3R1YWwsIGV4cGVjdGVkLCBk
ZXNjcmlwdGlvbikgewogICAgICAgICAvKgpAQCAtMTI2NywzMyArMTUyOSwzOCBAQCBwb2xpY2ll
cyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgICAgICAgICJleHBlY3RlZCAk
e2V4cGVjdGVkfSBidXQgZ290ICR7YWN0dWFsfSIsCiAgICAgICAgICAgICAgICB7ZXhwZWN0ZWQ6
ZXhwZWN0ZWQsIGFjdHVhbDphY3R1YWx9KTsKICAgICB9Ci0gICAgZXhwb3NlKGFzc2VydF9yZWdl
eHBfbWF0Y2gsICJhc3NlcnRfcmVnZXhwX21hdGNoIik7CisgICAgZXhwb3NlX2Fzc2VydChhc3Nl
cnRfcmVnZXhwX21hdGNoLCAiYXNzZXJ0X3JlZ2V4cF9tYXRjaCIpOwogCiAgICAgZnVuY3Rpb24g
YXNzZXJ0X2NsYXNzX3N0cmluZyhvYmplY3QsIGNsYXNzX3N0cmluZywgZGVzY3JpcHRpb24pIHsK
LSAgICAgICAgYXNzZXJ0X2VxdWFscyh7fS50b1N0cmluZy5jYWxsKG9iamVjdCksICJbb2JqZWN0
ICIgKyBjbGFzc19zdHJpbmcgKyAiXSIsCi0gICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRp
b24pOworICAgICAgICB2YXIgYWN0dWFsID0ge30udG9TdHJpbmcuY2FsbChvYmplY3QpOworICAg
ICAgICB2YXIgZXhwZWN0ZWQgPSAiW29iamVjdCAiICsgY2xhc3Nfc3RyaW5nICsgIl0iOworICAg
ICAgICBhc3NlcnQoc2FtZV92YWx1ZShhY3R1YWwsIGV4cGVjdGVkKSwgImFzc2VydF9jbGFzc19z
dHJpbmciLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJleHBlY3RlZCAke2V4cGVjdGVkfSBidXQgZ290ICR7YWN0dWFsfSIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZXhwZWN0ZWQ6ZXhwZWN0
ZWQsIGFjdHVhbDphY3R1YWx9KTsKICAgICB9Ci0gICAgZXhwb3NlKGFzc2VydF9jbGFzc19zdHJp
bmcsICJhc3NlcnRfY2xhc3Nfc3RyaW5nIik7Ci0KKyAgICBleHBvc2VfYXNzZXJ0KGFzc2VydF9j
bGFzc19zdHJpbmcsICJhc3NlcnRfY2xhc3Nfc3RyaW5nIik7CiAKICAgICBmdW5jdGlvbiBhc3Nl
cnRfb3duX3Byb3BlcnR5KG9iamVjdCwgcHJvcGVydHlfbmFtZSwgZGVzY3JpcHRpb24pIHsKICAg
ICAgICAgYXNzZXJ0KG9iamVjdC5oYXNPd25Qcm9wZXJ0eShwcm9wZXJ0eV9uYW1lKSwKICAgICAg
ICAgICAgICAgICJhc3NlcnRfb3duX3Byb3BlcnR5IiwgZGVzY3JpcHRpb24sCiAgICAgICAgICAg
ICAgICAiZXhwZWN0ZWQgcHJvcGVydHkgJHtwfSBtaXNzaW5nIiwge3A6cHJvcGVydHlfbmFtZX0p
OwogICAgIH0KLSAgICBleHBvc2UoYXNzZXJ0X293bl9wcm9wZXJ0eSwgImFzc2VydF9vd25fcHJv
cGVydHkiKTsKKyAgICBleHBvc2VfYXNzZXJ0KGFzc2VydF9vd25fcHJvcGVydHksICJhc3NlcnRf
b3duX3Byb3BlcnR5Iik7CiAKICAgICBmdW5jdGlvbiBhc3NlcnRfbm90X293bl9wcm9wZXJ0eShv
YmplY3QsIHByb3BlcnR5X25hbWUsIGRlc2NyaXB0aW9uKSB7CiAgICAgICAgIGFzc2VydCghb2Jq
ZWN0Lmhhc093blByb3BlcnR5KHByb3BlcnR5X25hbWUpLAogICAgICAgICAgICAgICAgImFzc2Vy
dF9ub3Rfb3duX3Byb3BlcnR5IiwgZGVzY3JpcHRpb24sCiAgICAgICAgICAgICAgICAidW5leHBl
Y3RlZCBwcm9wZXJ0eSAke3B9IGlzIGZvdW5kIG9uIG9iamVjdCIsIHtwOnByb3BlcnR5X25hbWV9
KTsKICAgICB9Ci0gICAgZXhwb3NlKGFzc2VydF9ub3Rfb3duX3Byb3BlcnR5LCAiYXNzZXJ0X25v
dF9vd25fcHJvcGVydHkiKTsKKyAgICBleHBvc2VfYXNzZXJ0KGFzc2VydF9ub3Rfb3duX3Byb3Bl
cnR5LCAiYXNzZXJ0X25vdF9vd25fcHJvcGVydHkiKTsKIAogICAgIGZ1bmN0aW9uIF9hc3NlcnRf
aW5oZXJpdHMobmFtZSkgewogICAgICAgICByZXR1cm4gZnVuY3Rpb24gKG9iamVjdCwgcHJvcGVy
dHlfbmFtZSwgZGVzY3JpcHRpb24pCiAgICAgICAgIHsKLSAgICAgICAgICAgIGFzc2VydCh0eXBl
b2Ygb2JqZWN0ID09PSAib2JqZWN0IiB8fCB0eXBlb2Ygb2JqZWN0ID09PSAiZnVuY3Rpb24iLAor
ICAgICAgICAgICAgYXNzZXJ0KCh0eXBlb2Ygb2JqZWN0ID09PSAib2JqZWN0IiAmJiBvYmplY3Qg
IT09IG51bGwpIHx8CisgICAgICAgICAgICAgICAgICAgdHlwZW9mIG9iamVjdCA9PT0gImZ1bmN0
aW9uIiB8fAorICAgICAgICAgICAgICAgICAgIC8vIE9yIGhhcyBbW0lzSFRNTEREQV1dIHNsb3QK
KyAgICAgICAgICAgICAgICAgICBTdHJpbmcob2JqZWN0KSA9PT0gIltvYmplY3QgSFRNTEFsbENv
bGxlY3Rpb25dIiwKICAgICAgICAgICAgICAgICAgICBuYW1lLCBkZXNjcmlwdGlvbiwKICAgICAg
ICAgICAgICAgICAgICAicHJvdmlkZWQgdmFsdWUgaXMgbm90IGFuIG9iamVjdCIpOwogCkBAIC0x
MzEyLDggKzE1NzksOCBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAg
ICAgICAgICAgICAgICAgICB7cDpwcm9wZXJ0eV9uYW1lfSk7CiAgICAgICAgIH07CiAgICAgfQot
ICAgIGV4cG9zZShfYXNzZXJ0X2luaGVyaXRzKCJhc3NlcnRfaW5oZXJpdHMiKSwgImFzc2VydF9p
bmhlcml0cyIpOwotICAgIGV4cG9zZShfYXNzZXJ0X2luaGVyaXRzKCJhc3NlcnRfaWRsX2F0dHJp
YnV0ZSIpLCAiYXNzZXJ0X2lkbF9hdHRyaWJ1dGUiKTsKKyAgICBleHBvc2VfYXNzZXJ0KF9hc3Nl
cnRfaW5oZXJpdHMoImFzc2VydF9pbmhlcml0cyIpLCAiYXNzZXJ0X2luaGVyaXRzIik7CisgICAg
ZXhwb3NlX2Fzc2VydChfYXNzZXJ0X2luaGVyaXRzKCJhc3NlcnRfaWRsX2F0dHJpYnV0ZSIpLCAi
YXNzZXJ0X2lkbF9hdHRyaWJ1dGUiKTsKIAogICAgIGZ1bmN0aW9uIGFzc2VydF9yZWFkb25seShv
YmplY3QsIHByb3BlcnR5X25hbWUsIGRlc2NyaXB0aW9uKQogICAgIHsKQEAgLTEzMzAsNTAgKzE1
OTcsMTU2IEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAgICAg
ICAgIG9iamVjdFtwcm9wZXJ0eV9uYW1lXSA9IGluaXRpYWxfdmFsdWU7CiAgICAgICAgICB9CiAg
ICAgfQotICAgIGV4cG9zZShhc3NlcnRfcmVhZG9ubHksICJhc3NlcnRfcmVhZG9ubHkiKTsKKyAg
ICBleHBvc2VfYXNzZXJ0KGFzc2VydF9yZWFkb25seSwgImFzc2VydF9yZWFkb25seSIpOwogCiAg
ICAgLyoqCi0gICAgICogQXNzZXJ0IGFuIEV4Y2VwdGlvbiB3aXRoIHRoZSBleHBlY3RlZCBjb2Rl
IGlzIHRocm93bi4KKyAgICAgKiBBc3NlcnQgYSBKUyBFcnJvciB3aXRoIHRoZSBleHBlY3RlZCBj
b25zdHJ1Y3RvciBpcyB0aHJvd24uCiAgICAgICoKLSAgICAgKiBAcGFyYW0ge29iamVjdHxudW1i
ZXJ8c3RyaW5nfSBjb2RlIFRoZSBleHBlY3RlZCBleGNlcHRpb24gY29kZS4KKyAgICAgKiBAcGFy
YW0ge29iamVjdH0gY29uc3RydWN0b3IgVGhlIGV4cGVjdGVkIGV4Y2VwdGlvbiBjb25zdHJ1Y3Rv
ci4KICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIEZ1bmN0aW9uIHdoaWNoIHNob3VsZCB0
aHJvdy4KICAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzY3JpcHRpb24gRXJyb3IgZGVzY3JpcHRp
b24gZm9yIHRoZSBjYXNlIHRoYXQgdGhlIGVycm9yIGlzIG5vdCB0aHJvd24uCiAgICAgICovCi0g
ICAgZnVuY3Rpb24gYXNzZXJ0X3Rocm93cyhjb2RlLCBmdW5jLCBkZXNjcmlwdGlvbikKKyAgICBm
dW5jdGlvbiBhc3NlcnRfdGhyb3dzX2pzKGNvbnN0cnVjdG9yLCBmdW5jLCBkZXNjcmlwdGlvbikK
KyAgICB7CisgICAgICAgIGFzc2VydF90aHJvd3NfanNfaW1wbChjb25zdHJ1Y3RvciwgZnVuYywg
ZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXNzZXJ0X3Rocm93
c19qcyIpOworICAgIH0KKyAgICBleHBvc2VfYXNzZXJ0KGFzc2VydF90aHJvd3NfanMsICJhc3Nl
cnRfdGhyb3dzX2pzIik7CisKKyAgICAvKioKKyAgICAgKiBMaWtlIGFzc2VydF90aHJvd3NfanMg
YnV0IGFsbG93cyBzcGVjaWZ5aW5nIHRoZSBhc3NlcnRpb24gdHlwZQorICAgICAqIChhc3NlcnRf
dGhyb3dzX2pzIG9yIHByb21pc2VfcmVqZWN0c19qcywgaW4gcHJhY3RpY2UpLgorICAgICAqLwor
ICAgIGZ1bmN0aW9uIGFzc2VydF90aHJvd3NfanNfaW1wbChjb25zdHJ1Y3RvciwgZnVuYywgZGVz
Y3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydGlvbl90
eXBlKQogICAgIHsKICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgIGZ1bmMuY2FsbCh0aGlzKTsK
LSAgICAgICAgICAgIGFzc2VydChmYWxzZSwgImFzc2VydF90aHJvd3MiLCBkZXNjcmlwdGlvbiwK
KyAgICAgICAgICAgIGFzc2VydChmYWxzZSwgYXNzZXJ0aW9uX3R5cGUsIGRlc2NyaXB0aW9uLAog
ICAgICAgICAgICAgICAgICAgICIke2Z1bmN9IGRpZCBub3QgdGhyb3ciLCB7ZnVuYzpmdW5jfSk7
CiAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgQXNz
ZXJ0aW9uRXJyb3IpIHsKICAgICAgICAgICAgICAgICB0aHJvdyBlOwogICAgICAgICAgICAgfQog
CisgICAgICAgICAgICAvLyBCYXNpYyBzYW5pdHktY2hlY2tzIG9uIHRoZSB0aHJvd24gZXhjZXB0
aW9uLgogICAgICAgICAgICAgYXNzZXJ0KHR5cGVvZiBlID09PSAib2JqZWN0IiwKLSAgICAgICAg
ICAgICAgICAgICAiYXNzZXJ0X3Rocm93cyIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAg
ICAgIGFzc2VydGlvbl90eXBlLCBkZXNjcmlwdGlvbiwKICAgICAgICAgICAgICAgICAgICAiJHtm
dW5jfSB0aHJldyAke2V9IHdpdGggdHlwZSAke3R5cGV9LCBub3QgYW4gb2JqZWN0IiwKICAgICAg
ICAgICAgICAgICAgICB7ZnVuYzpmdW5jLCBlOmUsIHR5cGU6dHlwZW9mIGV9KTsKIAogICAgICAg
ICAgICAgYXNzZXJ0KGUgIT09IG51bGwsCi0gICAgICAgICAgICAgICAgICAgImFzc2VydF90aHJv
d3MiLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICAgICBhc3NlcnRpb25fdHlwZSwgZGVz
Y3JpcHRpb24sCiAgICAgICAgICAgICAgICAgICAgIiR7ZnVuY30gdGhyZXcgbnVsbCwgbm90IGFu
IG9iamVjdCIsCiAgICAgICAgICAgICAgICAgICAge2Z1bmM6ZnVuY30pOwogCi0gICAgICAgICAg
ICBpZiAoY29kZSA9PT0gbnVsbCkgewotICAgICAgICAgICAgICAgIHRocm93IG5ldyBBc3NlcnRp
b25FcnJvcignVGVzdCBidWc6IG5lZWQgdG8gcGFzcyBleGNlcHRpb24gdG8gYXNzZXJ0X3Rocm93
cygpJyk7CisgICAgICAgICAgICAvLyBCYXNpYyBzYW5pdHktY2hlY2sgb24gdGhlIHBhc3NlZC1p
biBjb25zdHJ1Y3RvcgorICAgICAgICAgICAgYXNzZXJ0KHR5cGVvZiBjb25zdHJ1Y3RvciA9PSAi
ZnVuY3Rpb24iLAorICAgICAgICAgICAgICAgICAgIGFzc2VydGlvbl90eXBlLCBkZXNjcmlwdGlv
biwKKyAgICAgICAgICAgICAgICAgICAiJHtjb25zdHJ1Y3Rvcn0gaXMgbm90IGEgY29uc3RydWN0
b3IiLAorICAgICAgICAgICAgICAgICAgIHtjb25zdHJ1Y3Rvcjpjb25zdHJ1Y3Rvcn0pOworICAg
ICAgICAgICAgdmFyIG9iaiA9IGNvbnN0cnVjdG9yOworICAgICAgICAgICAgd2hpbGUgKG9iaikg
eworICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygb2JqID09PSAiZnVuY3Rpb24iICYmCisgICAg
ICAgICAgICAgICAgICAgIG9iai5uYW1lID09PSAiRXJyb3IiKSB7CisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBvYmogPSBPYmpl
Y3QuZ2V0UHJvdG90eXBlT2Yob2JqKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICh0
eXBlb2YgY29kZSA9PT0gIm9iamVjdCIpIHsKLSAgICAgICAgICAgICAgICBhc3NlcnQoIm5hbWUi
IGluIGUgJiYgZS5uYW1lID09IGNvZGUubmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgImFz
c2VydF90aHJvd3MiLCBkZXNjcmlwdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgIiR7ZnVu
Y30gdGhyZXcgJHthY3R1YWx9ICgke2FjdHVhbF9uYW1lfSkgZXhwZWN0ZWQgJHtleHBlY3RlZH0g
KCR7ZXhwZWN0ZWRfbmFtZX0pIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHtmdW5jOmZ1bmMsIGFjdHVhbDplLCBhY3R1YWxfbmFtZTplLm5hbWUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQ6Y29kZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9uYW1lOmNvZGUubmFtZX0pOwotICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGFzc2VydChvYmogIT0gbnVsbCwKKyAgICAgICAg
ICAgICAgICAgICBhc3NlcnRpb25fdHlwZSwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAg
ICAgIiR7Y29uc3RydWN0b3J9IGlzIG5vdCBhbiBFcnJvciBzdWJ0eXBlIiwKKyAgICAgICAgICAg
ICAgICAgICB7Y29uc3RydWN0b3I6Y29uc3RydWN0b3J9KTsKKworICAgICAgICAgICAgLy8gQW5k
IGNoZWNraW5nIHRoYXQgb3VyIGV4Y2VwdGlvbiBpcyByZWFzb25hYmxlCisgICAgICAgICAgICBh
c3NlcnQoZS5jb25zdHJ1Y3RvciA9PT0gY29uc3RydWN0b3IgJiYKKyAgICAgICAgICAgICAgICAg
ICBlLm5hbWUgPT09IGNvbnN0cnVjdG9yLm5hbWUsCisgICAgICAgICAgICAgICAgICAgYXNzZXJ0
aW9uX3R5cGUsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAgICAgICIke2Z1bmN9IHRocmV3
ICR7YWN0dWFsfSAoJHthY3R1YWxfbmFtZX0pIGV4cGVjdGVkIGluc3RhbmNlIG9mICR7ZXhwZWN0
ZWR9ICgke2V4cGVjdGVkX25hbWV9KSIsCisgICAgICAgICAgICAgICAgICAge2Z1bmM6ZnVuYywg
YWN0dWFsOmUsIGFjdHVhbF9uYW1lOmUubmFtZSwKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0
ZWQ6Y29uc3RydWN0b3IsCisgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX25hbWU6Y29uc3Ry
dWN0b3IubmFtZX0pOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogQXNzZXJ0
IGEgRE9NRXhjZXB0aW9uIHdpdGggdGhlIGV4cGVjdGVkIHR5cGUgaXMgdGhyb3duLgorICAgICAq
CisgICAgICogQHBhcmFtIHtudW1iZXJ8c3RyaW5nfSB0eXBlIFRoZSBleHBlY3RlZCBleGNlcHRp
b24gbmFtZSBvciBjb2RlLiAgU2VlIHRoZQorICAgICAqICAgICAgICB0YWJsZSBvZiBuYW1lcyBh
bmQgY29kZXMgYXQKKyAgICAgKiAgICAgICAgaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlk
bC8jZGZuLWVycm9yLW5hbWVzLXRhYmxlCisgICAgICogICAgICAgIElmIGEgbnVtYmVyIGlzIHBh
c3NlZCBpdCBzaG91bGQgYmUgb25lIG9mIHRoZSBudW1lcmljIGNvZGUgdmFsdWVzCisgICAgICog
ICAgICAgIGluIHRoYXQgdGFibGUgKGUuZy4gMywgNCwgZXRjKS4gIElmIGEgc3RyaW5nIGlzIHBh
c3NlZCBpdCBjYW4KKyAgICAgKiAgICAgICAgZWl0aGVyIGJlIGFuIGV4Y2VwdGlvbiBuYW1lIChl
LmcuICJIaWVyYXJjaHlSZXF1ZXN0RXJyb3IiLAorICAgICAqICAgICAgICAiV3JvbmdEb2N1bWVu
dEVycm9yIikgb3IgdGhlIG5hbWUgb2YgdGhlIGNvcnJlc3BvbmRpbmcgZXJyb3IgY29kZQorICAg
ICAqICAgICAgICAoZS5nLiAiSElFUkFSQ0hZX1JFUVVFU1RfRVJSIiwgIldST05HX0RPQ1VNRU5U
X0VSUiIpLgorICAgICAqCisgICAgICogRm9yIHRoZSByZW1haW5pbmcgYXJndW1lbnRzLCB0aGVy
ZSBhcmUgdHdvIHdheXMgb2YgY2FsbGluZworICAgICAqIHByb21pc2VfcmVqZWN0c19kb206Cisg
ICAgICoKKyAgICAgKiAxKSBJZiB0aGUgRE9NRXhjZXB0aW9uIGlzIGV4cGVjdGVkIHRvIGNvbWUg
ZnJvbSB0aGUgY3VycmVudCBnbG9iYWwsIHRoZQorICAgICAqIHNlY29uZCBhcmd1bWVudCBzaG91
bGQgYmUgdGhlIGZ1bmN0aW9uIGV4cGVjdGVkIHRvIHRocm93IGFuZCBhIHRoaXJkLAorICAgICAq
IG9wdGlvbmFsLCBhcmd1bWVudCBpcyB0aGUgYXNzZXJ0aW9uIGRlc2NyaXB0aW9uLgorICAgICAq
CisgICAgICogMikgSWYgdGhlIERPTUV4Y2VwdGlvbiBpcyBleHBlY3RlZCB0byBjb21lIGZyb20g
c29tZSBvdGhlciBnbG9iYWwsIHRoZQorICAgICAqIHNlY29uZCBhcmd1bWVudCBzaG91bGQgYmUg
dGhlIERPTUV4Y2VwdGlvbiBjb25zdHJ1Y3RvciBmcm9tIHRoYXQgZ2xvYmFsLAorICAgICAqIHRo
ZSB0aGlyZCBhcmd1bWVudCB0aGUgZnVuY3Rpb24gZXhwZWN0ZWQgdG8gdGhyb3csIGFuZCB0aGUg
Zm91cnRoLCBvcHRpb25hbCwKKyAgICAgKiBhcmd1bWVudCB0aGUgYXNzZXJ0aW9uIGRlc2NyaXB0
aW9uLgorICAgICAqLworICAgIGZ1bmN0aW9uIGFzc2VydF90aHJvd3NfZG9tKHR5cGUsIGZ1bmNP
ckNvbnN0cnVjdG9yLCBkZXNjcmlwdGlvbk9yRnVuYywgbWF5YmVEZXNjcmlwdGlvbikKKyAgICB7
CisgICAgICAgIGxldCBjb25zdHJ1Y3RvciwgZnVuYywgZGVzY3JpcHRpb247CisgICAgICAgIGlm
IChmdW5jT3JDb25zdHJ1Y3Rvci5uYW1lID09PSAiRE9NRXhjZXB0aW9uIikgeworICAgICAgICAg
ICAgY29uc3RydWN0b3IgPSBmdW5jT3JDb25zdHJ1Y3RvcjsKKyAgICAgICAgICAgIGZ1bmMgPSBk
ZXNjcmlwdGlvbk9yRnVuYzsKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uID0gbWF5YmVEZXNjcmlw
dGlvbjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGNvbnN0cnVjdG9yID0gc2VsZi5E
T01FeGNlcHRpb247CisgICAgICAgICAgICBmdW5jID0gZnVuY09yQ29uc3RydWN0b3I7CisgICAg
ICAgICAgICBkZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uT3JGdW5jOworICAgICAgICAgICAgYXNz
ZXJ0KG1heWJlRGVzY3JpcHRpb24gPT09IHVuZGVmaW5lZCwKKyAgICAgICAgICAgICAgICAgICAi
VG9vIG1hbnkgYXJncyBwYXNlZCB0byBuby1jb25zdHJ1Y3RvciB2ZXJzaW9uIG9mIGFzc2VydF90
aHJvd3NfZG9tIik7CisgICAgICAgIH0KKyAgICAgICAgYXNzZXJ0X3Rocm93c19kb21faW1wbCh0
eXBlLCBmdW5jLCBkZXNjcmlwdGlvbiwgImFzc2VydF90aHJvd3NfZG9tIiwgY29uc3RydWN0b3Ip
CisgICAgfQorICAgIGV4cG9zZV9hc3NlcnQoYXNzZXJ0X3Rocm93c19kb20sICJhc3NlcnRfdGhy
b3dzX2RvbSIpOworCisgICAgLyoqCisgICAgICogU2ltaWxhciB0byBhc3NlcnRfdGhyb3dzX2Rv
bSBidXQgYWxsb3dzIHNwZWNpZnlpbmcgdGhlIGFzc2VydGlvbiB0eXBlCisgICAgICogKGFzc2Vy
dF90aHJvd3NfZG9tIG9yIHByb21pc2VfcmVqZWN0c19kb20sIGluIHByYWN0aWNlKS4gIFRoZQor
ICAgICAqICJjb25zdHJ1Y3RvciIgYXJndW1lbnQgbXVzdCBiZSB0aGUgRE9NRXhjZXB0aW9uIGNv
bnN0cnVjdG9yIGZyb20gdGhlCisgICAgICogZ2xvYmFsIHdlIGV4cGVjdCB0aGUgZXhjZXB0aW9u
IHRvIGNvbWUgZnJvbS4KKyAgICAgKi8KKyAgICBmdW5jdGlvbiBhc3NlcnRfdGhyb3dzX2RvbV9p
bXBsKHR5cGUsIGZ1bmMsIGRlc2NyaXB0aW9uLCBhc3NlcnRpb25fdHlwZSwgY29uc3RydWN0b3Ip
CisgICAgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgZnVuYy5jYWxsKHRoaXMpOworICAg
ICAgICAgICAgYXNzZXJ0KGZhbHNlLCBhc3NlcnRpb25fdHlwZSwgZGVzY3JpcHRpb24sCisgICAg
ICAgICAgICAgICAgICAgIiR7ZnVuY30gZGlkIG5vdCB0aHJvdyIsIHtmdW5jOmZ1bmN9KTsKKyAg
ICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBBc3NlcnRp
b25FcnJvcikgeworICAgICAgICAgICAgICAgIHRocm93IGU7CiAgICAgICAgICAgICB9CiAKLSAg
ICAgICAgICAgIHZhciBjb2RlX25hbWVfbWFwID0geworICAgICAgICAgICAgLy8gQmFzaWMgc2Fu
aXR5LWNoZWNrcyBvbiB0aGUgdGhyb3duIGV4Y2VwdGlvbi4KKyAgICAgICAgICAgIGFzc2VydCh0
eXBlb2YgZSA9PT0gIm9iamVjdCIsCisgICAgICAgICAgICAgICAgICAgYXNzZXJ0aW9uX3R5cGUs
IGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAgICAgICIke2Z1bmN9IHRocmV3ICR7ZX0gd2l0
aCB0eXBlICR7dHlwZX0sIG5vdCBhbiBvYmplY3QiLAorICAgICAgICAgICAgICAgICAgIHtmdW5j
OmZ1bmMsIGU6ZSwgdHlwZTp0eXBlb2YgZX0pOworCisgICAgICAgICAgICBhc3NlcnQoZSAhPT0g
bnVsbCwKKyAgICAgICAgICAgICAgICAgICBhc3NlcnRpb25fdHlwZSwgZGVzY3JpcHRpb24sCisg
ICAgICAgICAgICAgICAgICAgIiR7ZnVuY30gdGhyZXcgbnVsbCwgbm90IGFuIG9iamVjdCIsCisg
ICAgICAgICAgICAgICAgICAge2Z1bmM6ZnVuY30pOworCisgICAgICAgICAgICAvLyBTYW5pdHkt
Y2hlY2sgb3VyIHR5cGUKKyAgICAgICAgICAgIGFzc2VydCh0eXBlb2YgdHlwZSA9PSAibnVtYmVy
IiB8fAorICAgICAgICAgICAgICAgICAgIHR5cGVvZiB0eXBlID09ICJzdHJpbmciLAorICAgICAg
ICAgICAgICAgICAgIGFzc2VydGlvbl90eXBlLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAg
ICAgICAiJHt0eXBlfSBpcyBub3QgYSBudW1iZXIgb3Igc3RyaW5nIiwKKyAgICAgICAgICAgICAg
ICAgICB7dHlwZTp0eXBlfSk7CisKKyAgICAgICAgICAgIHZhciBjb2RlbmFtZV9uYW1lX21hcCA9
IHsKICAgICAgICAgICAgICAgICBJTkRFWF9TSVpFX0VSUjogJ0luZGV4U2l6ZUVycm9yJywKICAg
ICAgICAgICAgICAgICBISUVSQVJDSFlfUkVRVUVTVF9FUlI6ICdIaWVyYXJjaHlSZXF1ZXN0RXJy
b3InLAogICAgICAgICAgICAgICAgIFdST05HX0RPQ1VNRU5UX0VSUjogJ1dyb25nRG9jdW1lbnRF
cnJvcicsCkBAIC0xMzk4LDggKzE3NzEsNiBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZv
cm1zIFszXS4KICAgICAgICAgICAgICAgICBEQVRBX0NMT05FX0VSUjogJ0RhdGFDbG9uZUVycm9y
JwogICAgICAgICAgICAgfTsKIAotICAgICAgICAgICAgdmFyIG5hbWUgPSBjb2RlIGluIGNvZGVf
bmFtZV9tYXAgPyBjb2RlX25hbWVfbWFwW2NvZGVdIDogY29kZTsKLQogICAgICAgICAgICAgdmFy
IG5hbWVfY29kZV9tYXAgPSB7CiAgICAgICAgICAgICAgICAgSW5kZXhTaXplRXJyb3I6IDEsCiAg
ICAgICAgICAgICAgICAgSGllcmFyY2h5UmVxdWVzdEVycm9yOiAzLApAQCAtMTQ0MywxOSArMTgx
NCwyMyBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHZhciByZXF1aXJlZF9wcm9wcyA9
IHsgY29kZTogY29kZSB9OworICAgICAgICAgICAgdmFyIHJlcXVpcmVkX3Byb3BzID0ge307Cisg
ICAgICAgICAgICB2YXIgbmFtZTsKIAotICAgICAgICAgICAgaWYgKHR5cGVvZiBjb2RlID09PSAi
bnVtYmVyIikgewotICAgICAgICAgICAgICAgIGlmIChjb2RlID09PSAwKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25FcnJvcignVGVzdCBidWc6IGFtYmlndW91cyBE
T01FeGNlcHRpb24gY29kZSAwIHBhc3NlZCB0byBhc3NlcnRfdGhyb3dzKCknKTsKLSAgICAgICAg
ICAgICAgICB9IGVsc2UgaWYgKCEoY29kZSBpbiBjb2RlX25hbWVfbWFwKSkgewotICAgICAgICAg
ICAgICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRXJyb3IoJ1Rlc3QgYnVnOiB1bnJlY29nbml6
ZWQgRE9NRXhjZXB0aW9uIGNvZGUgIicgKyBjb2RlICsgJyIgcGFzc2VkIHRvIGFzc2VydF90aHJv
d3MoKScpOworICAgICAgICAgICAgaWYgKHR5cGVvZiB0eXBlID09PSAibnVtYmVyIikgeworICAg
ICAgICAgICAgICAgIGlmICh0eXBlID09PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIHRocm93
IG5ldyBBc3NlcnRpb25FcnJvcignVGVzdCBidWc6IGFtYmlndW91cyBET01FeGNlcHRpb24gY29k
ZSAwIHBhc3NlZCB0byBhc3NlcnRfdGhyb3dzX2RvbSgpJyk7CisgICAgICAgICAgICAgICAgfSBl
bHNlIGlmICghKHR5cGUgaW4gY29kZV9uYW1lX21hcCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
dGhyb3cgbmV3IEFzc2VydGlvbkVycm9yKCdUZXN0IGJ1ZzogdW5yZWNvZ25pemVkIERPTUV4Y2Vw
dGlvbiBjb2RlICInICsgdHlwZSArICciIHBhc3NlZCB0byBhc3NlcnRfdGhyb3dzX2RvbSgpJyk7
CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIG5hbWUgPSBjb2RlX25hbWVfbWFw
W2NvZGVdOwotICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgY29kZSA9PT0gInN0cmluZyIp
IHsKKyAgICAgICAgICAgICAgICBuYW1lID0gY29kZV9uYW1lX21hcFt0eXBlXTsKKyAgICAgICAg
ICAgICAgICByZXF1aXJlZF9wcm9wcy5jb2RlID0gdHlwZTsKKyAgICAgICAgICAgIH0gZWxzZSBp
ZiAodHlwZW9mIHR5cGUgPT09ICJzdHJpbmciKSB7CisgICAgICAgICAgICAgICAgbmFtZSA9IHR5
cGUgaW4gY29kZW5hbWVfbmFtZV9tYXAgPyBjb2RlbmFtZV9uYW1lX21hcFt0eXBlXSA6IHR5cGU7
CiAgICAgICAgICAgICAgICAgaWYgKCEobmFtZSBpbiBuYW1lX2NvZGVfbWFwKSkgewotICAgICAg
ICAgICAgICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRXJyb3IoJ1Rlc3QgYnVnOiB1bnJlY29n
bml6ZWQgRE9NRXhjZXB0aW9uIGNvZGUgIicgKyBjb2RlICsgJyIgcGFzc2VkIHRvIGFzc2VydF90
aHJvd3MoKScpOworICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRXJyb3Io
J1Rlc3QgYnVnOiB1bnJlY29nbml6ZWQgRE9NRXhjZXB0aW9uIGNvZGUgbmFtZSBvciBuYW1lICIn
ICsgdHlwZSArICciIHBhc3NlZCB0byBhc3NlcnRfdGhyb3dzX2RvbSgpJyk7CiAgICAgICAgICAg
ICAgICAgfQorCiAgICAgICAgICAgICAgICAgcmVxdWlyZWRfcHJvcHMuY29kZSA9IG5hbWVfY29k
ZV9tYXBbbmFtZV07CiAgICAgICAgICAgICB9CiAKQEAgLTE0NjcsMjYgKzE4NDIsNjUgQEAgcG9s
aWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAgICAgICAgICAgcmVxdWly
ZWRfcHJvcHMubmFtZSA9IG5hbWU7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIC8vV2Un
ZCBsaWtlIHRvIHRlc3QgdGhhdCBlIGluc3RhbmNlb2YgdGhlIGFwcHJvcHJpYXRlIGludGVyZmFj
ZSwKLSAgICAgICAgICAgIC8vYnV0IHdlIGNhbid0LCBiZWNhdXNlIHdlIGRvbid0IGtub3cgd2hh
dCB3aW5kb3cgaXQgd2FzIGNyZWF0ZWQKLSAgICAgICAgICAgIC8vaW4uICBJdCBtaWdodCBiZSBh
biBpbnN0YW5jZW9mIHRoZSBhcHByb3ByaWF0ZSBpbnRlcmZhY2Ugb24gc29tZQotICAgICAgICAg
ICAgLy91bmtub3duIG90aGVyIHdpbmRvdy4gIFRPRE86IFdvcmsgYXJvdW5kIHRoaXMgc29tZWhv
dz8KLQogICAgICAgICAgICAgZm9yICh2YXIgcHJvcCBpbiByZXF1aXJlZF9wcm9wcykgewogICAg
ICAgICAgICAgICAgIGFzc2VydChwcm9wIGluIGUgJiYgZVtwcm9wXSA9PSByZXF1aXJlZF9wcm9w
c1twcm9wXSwKLSAgICAgICAgICAgICAgICAgICAgICAgImFzc2VydF90aHJvd3MiLCBkZXNjcmlw
dGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgIiR7ZnVuY30gdGhyZXcgJHtlfSB0aGF0IGlz
IG5vdCBhIERPTUV4Y2VwdGlvbiAiICsgY29kZSArICI6IHByb3BlcnR5ICR7cHJvcH0gaXMgZXF1
YWwgdG8gJHthY3R1YWx9LCBleHBlY3RlZCAke2V4cGVjdGVkfSIsCisgICAgICAgICAgICAgICAg
ICAgICAgIGFzc2VydGlvbl90eXBlLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIiR7ZnVuY30gdGhyZXcgJHtlfSB0aGF0IGlzIG5vdCBhIERPTUV4Y2VwdGlvbiAiICsgdHlw
ZSArICI6IHByb3BlcnR5ICR7cHJvcH0gaXMgZXF1YWwgdG8gJHthY3R1YWx9LCBleHBlY3RlZCAk
e2V4cGVjdGVkfSIsCiAgICAgICAgICAgICAgICAgICAgICAgIHtmdW5jOmZ1bmMsIGU6ZSwgcHJv
cDpwcm9wLCBhY3R1YWw6ZVtwcm9wXSwgZXhwZWN0ZWQ6cmVxdWlyZWRfcHJvcHNbcHJvcF19KTsK
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gQ2hlY2sgdGhhdCB0aGUgZXhjZXB0aW9u
IGlzIGZyb20gdGhlIHJpZ2h0IGdsb2JhbC4gIFRoaXMgY2hlY2sgaXMgbGFzdAorICAgICAgICAg
ICAgLy8gc28gbW9yZSBzcGVjaWZpYywgYW5kIG1vcmUgaW5mb3JtYXRpdmUsIGNoZWNrcyBvbiB0
aGUgcHJvcGVydGllcyBjYW4KKyAgICAgICAgICAgIC8vIGhhcHBlbiBpbiBjYXNlIGEgdG90YWxs
eSBpbmNvcnJlY3QgZXhjZXB0aW9uIGlzIHRocm93bi4KKyAgICAgICAgICAgIGFzc2VydChlLmNv
bnN0cnVjdG9yID09PSBjb25zdHJ1Y3RvciwKKyAgICAgICAgICAgICAgICAgICBhc3NlcnRpb25f
dHlwZSwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgIiR7ZnVuY30gdGhyZXcgYW4g
ZXhjZXB0aW9uIGZyb20gdGhlIHdyb25nIGdsb2JhbCIsCisgICAgICAgICAgICAgICAgICAge2Z1
bmN9KTsKKworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogQXNzZXJ0IHRoZSBw
cm92aWRlZCB2YWx1ZSBpcyB0aHJvd24uCisgICAgICoKKyAgICAgKiBAcGFyYW0ge3ZhbHVlfSBl
eGNlcHRpb24gVGhlIGV4cGVjdGVkIGV4Y2VwdGlvbi4KKyAgICAgKiBAcGFyYW0ge0Z1bmN0aW9u
fSBmdW5jIEZ1bmN0aW9uIHdoaWNoIHNob3VsZCB0aHJvdy4KKyAgICAgKiBAcGFyYW0ge3N0cmlu
Z30gZGVzY3JpcHRpb24gRXJyb3IgZGVzY3JpcHRpb24gZm9yIHRoZSBjYXNlIHRoYXQgdGhlIGVy
cm9yIGlzIG5vdCB0aHJvd24uCisgICAgICovCisgICAgZnVuY3Rpb24gYXNzZXJ0X3Rocm93c19l
eGFjdGx5KGV4Y2VwdGlvbiwgZnVuYywgZGVzY3JpcHRpb24pCisgICAgeworICAgICAgICBhc3Nl
cnRfdGhyb3dzX2V4YWN0bHlfaW1wbChleGNlcHRpb24sIGZ1bmMsIGRlc2NyaXB0aW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXNzZXJ0X3Rocm93c19leGFjdGx5Iik7
CisgICAgfQorICAgIGV4cG9zZV9hc3NlcnQoYXNzZXJ0X3Rocm93c19leGFjdGx5LCAiYXNzZXJ0
X3Rocm93c19leGFjdGx5Iik7CisKKyAgICAvKioKKyAgICAgKiBMaWtlIGFzc2VydF90aHJvd3Nf
ZXhhY3RseSBidXQgYWxsb3dzIHNwZWNpZnlpbmcgdGhlIGFzc2VydGlvbiB0eXBlCisgICAgICog
KGFzc2VydF90aHJvd3NfZXhhY3RseSBvciBwcm9taXNlX3JlamVjdHNfZXhhY3RseSwgaW4gcHJh
Y3RpY2UpLgorICAgICAqLworICAgIGZ1bmN0aW9uIGFzc2VydF90aHJvd3NfZXhhY3RseV9pbXBs
KGV4Y2VwdGlvbiwgZnVuYywgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYXNzZXJ0aW9uX3R5cGUpCisgICAgeworICAgICAgICB0cnkgeworICAg
ICAgICAgICAgZnVuYy5jYWxsKHRoaXMpOworICAgICAgICAgICAgYXNzZXJ0KGZhbHNlLCBhc3Nl
cnRpb25fdHlwZSwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgIiR7ZnVuY30gZGlk
IG5vdCB0aHJvdyIsIHtmdW5jOmZ1bmN9KTsKKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAg
ICAgICAgaWYgKGUgaW5zdGFuY2VvZiBBc3NlcnRpb25FcnJvcikgeworICAgICAgICAgICAgICAg
IHRocm93IGU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGFzc2VydChzYW1lX3ZhbHVl
KGUsIGV4Y2VwdGlvbiksIGFzc2VydGlvbl90eXBlLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAg
ICAgICAgICAiJHtmdW5jfSB0aHJldyAke2V9IGJ1dCB3ZSBleHBlY3RlZCBpdCB0byB0aHJvdyAk
e2V4Y2VwdGlvbn0iLAorICAgICAgICAgICAgICAgICAgIHtmdW5jOmZ1bmMsIGU6ZSwgZXhjZXB0
aW9uOmV4Y2VwdGlvbn0pOwogICAgICAgICB9CiAgICAgfQotICAgIGV4cG9zZShhc3NlcnRfdGhy
b3dzLCAiYXNzZXJ0X3Rocm93cyIpOwogCiAgICAgZnVuY3Rpb24gYXNzZXJ0X3VucmVhY2hlZChk
ZXNjcmlwdGlvbikgewogICAgICAgICAgYXNzZXJ0KGZhbHNlLCAiYXNzZXJ0X3VucmVhY2hlZCIs
IGRlc2NyaXB0aW9uLAogICAgICAgICAgICAgICAgICJSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUi
KTsKICAgICB9Ci0gICAgZXhwb3NlKGFzc2VydF91bnJlYWNoZWQsICJhc3NlcnRfdW5yZWFjaGVk
Iik7CisgICAgZXhwb3NlX2Fzc2VydChhc3NlcnRfdW5yZWFjaGVkLCAiYXNzZXJ0X3VucmVhY2hl
ZCIpOwogCiAgICAgZnVuY3Rpb24gYXNzZXJ0X2FueShhc3NlcnRfZnVuYywgYWN0dWFsLCBleHBl
Y3RlZF9hcnJheSkKICAgICB7CkBAIC0xNTA3LDggKzE5MjEsNDggQEAgcG9saWNpZXMgYW5kIGNv
bnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRXJy
b3IoZXJyb3JzLmpvaW4oIlxuXG4iKSk7CiAgICAgICAgIH0KICAgICB9CisgICAgLy8gRklYTUU6
IGFzc2VydF9hbnkgY2Fubm90IHVzZSBleHBvc2VfYXNzZXJ0LCBiZWNhdXNlIGFzc2VydF93cmFw
cGVyIGRvZXMKKyAgICAvLyBub3Qgc3VwcG9ydCBuZXN0ZWQgYXNzZXJ0IGNhbGxzIChlLmcuIHRv
IGFzc2VydF9mdW5jKS4gV2UgbmVlZCB0bworICAgIC8vIHN1cHBvcnQgYnlwYXNzaW5nIGFzc2Vy
dF93cmFwcGVyIGZvciB0aGUgaW5uZXIgYXNzZXJ0cyBoZXJlLgogICAgIGV4cG9zZShhc3NlcnRf
YW55LCAiYXNzZXJ0X2FueSIpOwogCisgICAgLyoqCisgICAgICogQXNzZXJ0IHRoYXQgYSBmZWF0
dXJlIGlzIGltcGxlbWVudGVkLCBiYXNlZCBvbiBhICd0cnV0aHknIGNvbmRpdGlvbi4KKyAgICAg
KgorICAgICAqIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIHVzZWQgdG8gZWFybHktZXhpdCBmcm9t
IHRlc3RzIGluIHdoaWNoIHRoZXJlIGlzCisgICAgICogbm8gcG9pbnQgY29udGludWluZyB3aXRo
b3V0IHN1cHBvcnQgZm9yIGEgbm9uLW9wdGlvbmFsIHNwZWMgb3Igc3BlYworICAgICAqIGZlYXR1
cmUuIEZvciBleGFtcGxlOgorICAgICAqCisgICAgICogICAgIGFzc2VydF9pbXBsZW1lbnRzKHdp
bmRvdy5Gb28sICdGb28gaXMgbm90IHN1cHBvcnRlZCcpOworICAgICAqCisgICAgICogQHBhcmFt
IHtvYmplY3R9IGNvbmRpdGlvbiBUaGUgdHJ1dGh5IHZhbHVlIHRvIHRlc3QKKyAgICAgKiBAcGFy
YW0ge3N0cmluZ30gZGVzY3JpcHRpb24gRXJyb3IgZGVzY3JpcHRpb24gZm9yIHRoZSBjYXNlIHRo
YXQgdGhlIGNvbmRpdGlvbiBpcyBub3QgdHJ1dGh5LgorICAgICAqLworICAgIGZ1bmN0aW9uIGFz
c2VydF9pbXBsZW1lbnRzKGNvbmRpdGlvbiwgZGVzY3JpcHRpb24pIHsKKyAgICAgICAgYXNzZXJ0
KCEhY29uZGl0aW9uLCAiYXNzZXJ0X2ltcGxlbWVudHMiLCBkZXNjcmlwdGlvbik7CisgICAgfQor
ICAgIGV4cG9zZV9hc3NlcnQoYXNzZXJ0X2ltcGxlbWVudHMsICJhc3NlcnRfaW1wbGVtZW50cyIp
CisKKyAgICAvKioKKyAgICAgKiBBc3NlcnQgdGhhdCBhbiBvcHRpb25hbCBmZWF0dXJlIGlzIGlt
cGxlbWVudGVkLCBiYXNlZCBvbiBhICd0cnV0aHknIGNvbmRpdGlvbi4KKyAgICAgKgorICAgICAq
IFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIHVzZWQgdG8gZWFybHktZXhpdCBmcm9tIHRlc3RzIGlu
IHdoaWNoIHRoZXJlIGlzCisgICAgICogbm8gcG9pbnQgY29udGludWluZyB3aXRob3V0IHN1cHBv
cnQgZm9yIGFuIGV4cGxpY2l0bHkgb3B0aW9uYWwgc3BlYyBvcgorICAgICAqIHNwZWMgZmVhdHVy
ZS4gRm9yIGV4YW1wbGU6CisgICAgICoKKyAgICAgKiAgICAgYXNzZXJ0X2ltcGxlbWVudHNfb3B0
aW9uYWwodmlkZW8uY2FuUGxheVR5cGUoInZpZGVvL3dlYm0iKSwKKyAgICAgKiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIndlYm0gdmlkZW8gcGxheWJhY2sgbm90IHN1cHBvcnRlZCIp
OworICAgICAqCisgICAgICogQHBhcmFtIHtvYmplY3R9IGNvbmRpdGlvbiBUaGUgdHJ1dGh5IHZh
bHVlIHRvIHRlc3QKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzY3JpcHRpb24gRXJyb3IgZGVz
Y3JpcHRpb24gZm9yIHRoZSBjYXNlIHRoYXQgdGhlIGNvbmRpdGlvbiBpcyBub3QgdHJ1dGh5Lgor
ICAgICAqLworICAgIGZ1bmN0aW9uIGFzc2VydF9pbXBsZW1lbnRzX29wdGlvbmFsKGNvbmRpdGlv
biwgZGVzY3JpcHRpb24pIHsKKyAgICAgICAgaWYgKCFjb25kaXRpb24pIHsKKyAgICAgICAgICAg
IHRocm93IG5ldyBPcHRpb25hbEZlYXR1cmVVbnN1cHBvcnRlZEVycm9yKGRlc2NyaXB0aW9uKTsK
KyAgICAgICAgfQorICAgIH0KKyAgICBleHBvc2VfYXNzZXJ0KGFzc2VydF9pbXBsZW1lbnRzX29w
dGlvbmFsLCAiYXNzZXJ0X2ltcGxlbWVudHNfb3B0aW9uYWwiKQorCiAgICAgZnVuY3Rpb24gVGVz
dChuYW1lLCBwcm9wZXJ0aWVzKQogICAgIHsKICAgICAgICAgaWYgKHRlc3RzLmZpbGVfaXNfdGVz
dCAmJiB0ZXN0cy50ZXN0cy5sZW5ndGgpIHsKQEAgLTE1MjMsNyArMTk3Nyw3IEBAIHBvbGljaWVz
IGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAgICB0aGlzLnRpbWVvdXRfaWQgPSBu
dWxsOwogICAgICAgICB0aGlzLmluZGV4ID0gbnVsbDsKIAotICAgICAgICB0aGlzLnByb3BlcnRp
ZXMgPSBwcm9wZXJ0aWVzOworICAgICAgICB0aGlzLnByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzIHx8
IHt9OwogICAgICAgICB0aGlzLnRpbWVvdXRfbGVuZ3RoID0gc2V0dGluZ3MudGVzdF90aW1lb3V0
OwogICAgICAgICBpZiAodGhpcy50aW1lb3V0X2xlbmd0aCAhPT0gbnVsbCkgewogICAgICAgICAg
ICAgdGhpcy50aW1lb3V0X2xlbmd0aCAqPSB0ZXN0cy50aW1lb3V0X211bHRpcGxpZXI7CkBAIC0x
NTUzLDcgKzIwMDcsOCBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAg
ICAgICAgUEFTUzowLAogICAgICAgICBGQUlMOjEsCiAgICAgICAgIFRJTUVPVVQ6MiwKLSAgICAg
ICAgTk9UUlVOOjMKKyAgICAgICAgTk9UUlVOOjMsCisgICAgICAgIFBSRUNPTkRJVElPTl9GQUlM
RUQ6NAogICAgIH07CiAKICAgICBUZXN0LnByb3RvdHlwZSA9IG1lcmdlKHt9LCBUZXN0LnN0YXR1
c2VzKTsKQEAgLTE1NjYsNiArMjAyMSwxOCBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZv
cm1zIFszXS4KICAgICAgICAgQ09NUExFVEU6NAogICAgIH07CiAKKyAgICBUZXN0LnByb3RvdHlw
ZS5zdGF0dXNfZm9ybWF0cyA9IHsKKyAgICAgICAgMDogIlBhc3MiLAorICAgICAgICAxOiAiRmFp
bCIsCisgICAgICAgIDI6ICJUaW1lb3V0IiwKKyAgICAgICAgMzogIk5vdCBSdW4iLAorICAgICAg
ICA0OiAiT3B0aW9uYWwgRmVhdHVyZSBVbnN1cHBvcnRlZCIsCisgICAgfQorCisgICAgVGVzdC5w
cm90b3R5cGUuZm9ybWF0X3N0YXR1cyA9IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gdGhp
cy5zdGF0dXNfZm9ybWF0c1t0aGlzLnN0YXR1c107CisgICAgfQorCiAgICAgVGVzdC5wcm90b3R5
cGUuc3RydWN0dXJlZF9jbG9uZSA9IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIGlmICghdGhp
cy5fc3RydWN0dXJlZF9jbG9uZSkgewpAQCAtMTU5MCwxMSArMjA1NywxNiBAQCBwb2xpY2llcyBh
bmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgaWYgKHRoaXMucGhhc2UgPiB0aGlz
LnBoYXNlcy5TVEFSVEVEKSB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKworICAg
ICAgICBpZiAoc2V0dGluZ3MuZGVidWcgJiYgdGhpcy5waGFzZSAhPT0gdGhpcy5waGFzZXMuU1RB
UlRFRCkgeworICAgICAgICAgICAgY29uc29sZS5sb2coIlRFU1QgU1RBUlQiLCB0aGlzLm5hbWUp
OworICAgICAgICB9CiAgICAgICAgIHRoaXMucGhhc2UgPSB0aGlzLnBoYXNlcy5TVEFSVEVEOwog
ICAgICAgICAvL0lmIHdlIGRvbid0IGdldCBhIHJlc3VsdCBiZWZvcmUgdGhlIGhhcm5lc3MgdGlt
ZXMgb3V0IHRoYXQgd2lsbCBiZSBhIHRlc3QgdGltZW91dAogICAgICAgICB0aGlzLnNldF9zdGF0
dXModGhpcy5USU1FT1VULCAiVGVzdCB0aW1lZCBvdXQiKTsKIAogICAgICAgICB0ZXN0cy5zdGFy
dGVkID0gdHJ1ZTsKKyAgICAgICAgdGVzdHMuY3VycmVudF90ZXN0ID0gdGhpczsKICAgICAgICAg
dGVzdHMubm90aWZ5X3Rlc3Rfc3RhdGUodGhpcyk7CiAKICAgICAgICAgaWYgKHRoaXMudGltZW91
dF9pZCA9PT0gbnVsbCkgewpAQCAtMTYwNywxOCArMjA3OSwyNSBAQCBwb2xpY2llcyBhbmQgY29u
dHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgICAgIHRoaXNfb2JqID0gdGhpczsKICAgICAg
ICAgfQogCisgICAgICAgIGlmIChzZXR0aW5ncy5kZWJ1ZykgeworICAgICAgICAgICAgY29uc29s
ZS5kZWJ1ZygiVEVTVCBTVEVQIiwgdGhpcy5uYW1lKTsKKyAgICAgICAgfQorCiAgICAgICAgIHRy
eSB7CiAgICAgICAgICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzX29iaiwgQXJyYXkucHJvdG90
eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAyKSk7CiAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAg
ICAgICAgICAgIGlmICh0aGlzLnBoYXNlID49IHRoaXMucGhhc2VzLkhBU19SRVNVTFQpIHsKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CisgICAgICAgICAgICB2YXIgc3Rh
dHVzID0gZSBpbnN0YW5jZW9mIE9wdGlvbmFsRmVhdHVyZVVuc3VwcG9ydGVkRXJyb3IgPyB0aGlz
LlBSRUNPTkRJVElPTl9GQUlMRUQgOiB0aGlzLkZBSUw7CiAgICAgICAgICAgICB2YXIgbWVzc2Fn
ZSA9IFN0cmluZygodHlwZW9mIGUgPT09ICJvYmplY3QiICYmIGUgIT09IG51bGwpID8gZS5tZXNz
YWdlIDogZSk7CiAgICAgICAgICAgICB2YXIgc3RhY2sgPSBlLnN0YWNrID8gZS5zdGFjayA6IG51
bGw7CiAKLSAgICAgICAgICAgIHRoaXMuc2V0X3N0YXR1cyh0aGlzLkZBSUwsIG1lc3NhZ2UsIHN0
YWNrKTsKKyAgICAgICAgICAgIHRoaXMuc2V0X3N0YXR1cyhzdGF0dXMsIG1lc3NhZ2UsIHN0YWNr
KTsKICAgICAgICAgICAgIHRoaXMucGhhc2UgPSB0aGlzLnBoYXNlcy5IQVNfUkVTVUxUOwogICAg
ICAgICAgICAgdGhpcy5kb25lKCk7CisgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICB0
aGlzLmN1cnJlbnRfdGVzdCA9IG51bGw7CiAgICAgICAgIH0KICAgICB9OwogCkBAIC0xNjY4LDYg
KzIxNDcsMTA1IEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAg
ICByZXR1cm4gc2V0VGltZW91dCh0aGlzLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKICAgICAgICAg
ICAgIHJldHVybiBmLmFwcGx5KHRlc3RfdGhpcywgYXJncyk7CiAgICAgICAgIH0pLCB0aW1lb3V0
ICogdGVzdHMudGltZW91dF9tdWx0aXBsaWVyKTsKKyAgICB9OworCisgICAgVGVzdC5wcm90b3R5
cGUuc3RlcF93YWl0X2Z1bmMgPSBmdW5jdGlvbihjb25kLCBmdW5jLCBkZXNjcmlwdGlvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9MzAwMCwg
aW50ZXJ2YWw9MTAwKSB7CisgICAgICAgIC8qKgorICAgICAgICAgKiBQb2xsIGZvciBhIGZ1bmN0
aW9uIHRvIHJldHVybiB0cnVlLCBhbmQgY2FsbCBhIGNhbGxiYWNrCisgICAgICAgICAqIGZ1bmN0
aW9uIG9uY2UgaXQgZG9lcywgb3IgYXNzZXJ0IGlmIGEgdGltZW91dCBpcworICAgICAgICAgKiBy
ZWFjaGVkLiBUaGlzIGlzIHByZWZlcnJlZCBvdmVyIGEgc2ltcGxlIHN0ZXBfdGltZW91dAorICAg
ICAgICAgKiB3aGVuZXZlciBwb3NzaWJsZSBzaW5jZSBpdCBhbGxvd3MgdGhlIHRpbWVvdXQgdG8g
YmUgbG9uZ2VyCisgICAgICAgICAqIHRvIHJlZHVjZSBpbnRlcm1pdHRlbnRzIHdpdGhvdXQgY29t
cHJvbWlzaW5nIHRlc3QgZXhlY3V0aW9uCisgICAgICAgICAqIHNwZWVkIHdoZW4gdGhlIGNvbmRp
dGlvbiBpcyBxdWlja2x5IG1ldC4KKyAgICAgICAgICoKKyAgICAgICAgICogQHBhcmFtIHtGdW5j
dGlvbn0gY29uZCBBIGZ1bmN0aW9uIHRha2luZyBubyBhcmd1bWVudHMgYW5kCisgICAgICAgICAq
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuaW5nIGEgYm9vbGVhbi4gVGhlIGNhbGxiYWNr
IGlzIGNhbGxlZAorICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gdGhpcyBm
dW5jdGlvbiByZXR1cm5zIHRydWUuCisgICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMg
QSBmdW5jdGlvbiB0YWtpbmcgbm8gYXJndW1lbnRzIHRvIGNhbGwgb25jZQorICAgICAgICAgKiAg
ICAgICAgICAgICAgICAgICAgICAgIHRoZSBjb25kaXRpb24gaXMgbWV0LgorICAgICAgICAgKiBA
cGFyYW0ge3N0cmluZ30gZGVzY3JpcHRpb24gRXJyb3IgbWVzc2FnZSB0byBhZGQgdG8gYXNzZXJ0
IGluIGNhc2Ugb2YKKyAgICAgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWx1
cmUuCisgICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0aW1lb3V0IFRpbWVvdXQgaW4gbXMuIFRo
aXMgaXMgbXVsdGlwbGllZCBieSB0aGUgZ2xvYmFsCisgICAgICAgICAqICAgICAgICAgICAgICAg
ICAgICAgICAgIHRpbWVvdXRfbXVsdGlwbGllcgorICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0g
aW50ZXJ2YWwgUG9sbGluZyBpbnRlcnZhbCBpbiBtcworICAgICAgICAgKgorICAgICAgICAgKiov
CisKKyAgICAgICAgdmFyIHRpbWVvdXRfZnVsbCA9IHRpbWVvdXQgKiB0ZXN0cy50aW1lb3V0X211
bHRpcGxpZXI7CisgICAgICAgIHZhciByZW1haW5pbmcgPSBNYXRoLmNlaWwodGltZW91dF9mdWxs
IC8gaW50ZXJ2YWwpOworICAgICAgICB2YXIgdGVzdF90aGlzID0gdGhpczsKKworICAgICAgICB2
YXIgd2FpdF9mb3JfaW5uZXIgPSB0ZXN0X3RoaXMuc3RlcF9mdW5jKCgpID0+IHsKKyAgICAgICAg
ICAgIGlmIChjb25kKCkpIHsKKyAgICAgICAgICAgICAgICBmdW5jKCk7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIGlmKHJlbWFpbmluZyA9PT0gMCkgeworICAgICAgICAg
ICAgICAgICAgICBhc3NlcnQoZmFsc2UsICJzdGVwX3dhaXRfZnVuYyIsIGRlc2NyaXB0aW9uLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRpbWVkIG91dCB3YWl0aW5nIG9uIGNvbmRpdGlv
biIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZW1haW5pbmctLTsKKyAg
ICAgICAgICAgICAgICBzZXRUaW1lb3V0KHdhaXRfZm9yX2lubmVyLCBpbnRlcnZhbCk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0pOworCisgICAgICAgIHdhaXRfZm9yX2lubmVyKCk7CisgICAg
fTsKKworICAgIFRlc3QucHJvdG90eXBlLnN0ZXBfd2FpdF9mdW5jX2RvbmUgPSBmdW5jdGlvbihj
b25kLCBmdW5jLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGltZW91dD0zMDAwLCBpbnRlcnZhbD0xMDApIHsKKyAgICAgICAg
LyoqCisgICAgICAgICAqIFBvbGwgZm9yIGEgZnVuY3Rpb24gdG8gcmV0dXJuIHRydWUsIGFuZCBp
bnZva2UgYSBjYWxsYmFjaworICAgICAgICAgKiBmb2xsb3dlZCBieSB0aGlzLmRvbmUoKSBvbmNl
IGl0IGRvZXMsIG9yIGFzc2VydCBpZiBhIHRpbWVvdXQKKyAgICAgICAgICogaXMgcmVhY2hlZC4g
VGhpcyBpcyBwcmVmZXJyZWQgb3ZlciBhIHNpbXBsZSBzdGVwX3RpbWVvdXQKKyAgICAgICAgICog
d2hlbmV2ZXIgcG9zc2libGUgc2luY2UgaXQgYWxsb3dzIHRoZSB0aW1lb3V0IHRvIGJlIGxvbmdl
cgorICAgICAgICAgKiB0byByZWR1Y2UgaW50ZXJtaXR0ZW50cyB3aXRob3V0IGNvbXByb21pc2lu
ZyB0ZXN0IGV4ZWN1dGlvbiBzcGVlZAorICAgICAgICAgKiB3aGVuIHRoZSBjb25kaXRpb24gaXMg
cXVpY2tseSBtZXQuCisgICAgICAgICAqCisgICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGNv
bmQgQSBmdW5jdGlvbiB0YWtpbmcgbm8gYXJndW1lbnRzIGFuZAorICAgICAgICAgKiAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybmluZyBhIGJvb2xlYW4uIFRoZSBjYWxsYmFjayBpcyBjYWxs
ZWQKKyAgICAgICAgICogICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHRoaXMgZnVuY3Rpb24g
cmV0dXJucyB0cnVlLgorICAgICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIEEgZnVuY3Rp
b24gdGFraW5nIG5vIGFyZ3VtZW50cyB0byBjYWxsIG9uY2UKKyAgICAgICAgICogICAgICAgICAg
ICAgICAgICAgICAgICB0aGUgY29uZGl0aW9uIGlzIG1ldC4KKyAgICAgICAgICogQHBhcmFtIHtz
dHJpbmd9IGRlc2NyaXB0aW9uIEVycm9yIG1lc3NhZ2UgdG8gYWRkIHRvIGFzc2VydCBpbiBjYXNl
IG9mCisgICAgICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWlsdXJlLgorICAg
ICAgICAgKiBAcGFyYW0ge251bWJlcn0gdGltZW91dCBUaW1lb3V0IGluIG1zLiBUaGlzIGlzIG11
bHRpcGxpZWQgYnkgdGhlIGdsb2JhbAorICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAgICAg
ICB0aW1lb3V0X211bHRpcGxpZXIKKyAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IGludGVydmFs
IFBvbGxpbmcgaW50ZXJ2YWwgaW4gbXMKKyAgICAgICAgICoKKyAgICAgICAgICoqLworCisgICAg
ICAgICB0aGlzLnN0ZXBfd2FpdF9mdW5jKGNvbmQsICgpID0+IHsKKyAgICAgICAgICAgIGlmIChm
dW5jKSB7CisgICAgICAgICAgICAgICAgZnVuYygpOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgdGhpcy5kb25lKCk7CisgICAgICAgICB9LCBkZXNjcmlwdGlvbiwgdGltZW91dCwgaW50ZXJ2
YWwpOworICAgIH0KKworICAgIFRlc3QucHJvdG90eXBlLnN0ZXBfd2FpdCA9IGZ1bmN0aW9uKGNv
bmQsIGRlc2NyaXB0aW9uLCB0aW1lb3V0PTMwMDAsIGludGVydmFsPTEwMCkgeworICAgICAgICAv
KioKKyAgICAgICAgICogUG9sbCBmb3IgYSBmdW5jdGlvbiB0byByZXR1cm4gdHJ1ZSwgYW5kIHJl
c29sdmUgYSBwcm9taXNlCisgICAgICAgICAqIG9uY2UgaXQgZG9lcywgb3IgYXNzZXJ0IGlmIGEg
dGltZW91dCBpcyByZWFjaGVkLiBUaGlzIGlzCisgICAgICAgICAqIHByZWZlcnJlZCBvdmVyIGEg
c2ltcGxlIHN0ZXBfdGltZW91dCB3aGVuZXZlciBwb3NzaWJsZQorICAgICAgICAgKiBzaW5jZSBp
dCBhbGxvd3MgdGhlIHRpbWVvdXQgdG8gYmUgbG9uZ2VyIHRvIHJlZHVjZQorICAgICAgICAgKiBp
bnRlcm1pdHRlbnRzIHdpdGhvdXQgY29tcHJvbWlzaW5nIHRlc3QgZXhlY3V0aW9uIHNwZWVkCisg
ICAgICAgICAqIHdoZW4gdGhlIGNvbmRpdGlvbiBpcyBxdWlja2x5IG1ldC4KKyAgICAgICAgICoK
KyAgICAgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gY29uZCBBIGZ1bmN0aW9uIHRha2luZyBubyBh
cmd1bWVudHMgYW5kCisgICAgICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuaW5n
IGEgYm9vbGVhbi4KKyAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IGRlc2NyaXB0aW9uIEVycm9y
IG1lc3NhZ2UgdG8gYWRkIHRvIGFzc2VydCBpbiBjYXNlIG9mCisgICAgICAgICAqICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmYWlsdXJlLgorICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0g
dGltZW91dCBUaW1lb3V0IGluIG1zLiBUaGlzIGlzIG11bHRpcGxpZWQgYnkgdGhlIGdsb2JhbAor
ICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0X211bHRpcGxpZXIKKyAg
ICAgICAgICogQHBhcmFtIHtudW1iZXJ9IGludGVydmFsIFBvbGxpbmcgaW50ZXJ2YWwgaW4gbXMK
KyAgICAgICAgICogQHJldHVybnMge1Byb21pc2V9IFByb21pc2UgcmVzb2x2ZWQgb25jZSBjb25k
IGlzIG1ldC4KKyAgICAgICAgICoKKyAgICAgICAgICoqLworCisgICAgICAgIHJldHVybiBuZXcg
UHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICAgICAgICAgIHRoaXMuc3RlcF93YWl0X2Z1bmMoY29u
ZCwgcmVzb2x2ZSwgZGVzY3JpcHRpb24sIHRpbWVvdXQsIGludGVydmFsKTsKKyAgICAgICAgfSk7
CiAgICAgfQogCiAgICAgLyoKQEAgLTE3MzcsNiArMjMxNSwxMiBAQCBwb2xpY2llcyBhbmQgY29u
dHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVv
dXRfaWQpOwogICAgICAgICB9CiAKKyAgICAgICAgaWYgKHNldHRpbmdzLmRlYnVnKSB7CisgICAg
ICAgICAgICBjb25zb2xlLmxvZygiVEVTVCBET05FIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
IHRoaXMuc3RhdHVzLAorICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uYW1lLCkKKyAgICAg
ICAgfQorCiAgICAgICAgIHRoaXMuY2xlYW51cCgpOwogICAgIH07CiAKQEAgLTE5MzYsNiArMjUy
MCwxMCBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgICAg
ICAgICB9KTsKICAgICB9CiAKKyAgICBSZW1vdGVUZXN0LnByb3RvdHlwZS5mb3JtYXRfc3RhdHVz
ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiBUZXN0LnByb3RvdHlwZS5zdGF0dXNfZm9y
bWF0c1t0aGlzLnN0YXR1c107CisgICAgfQorCiAgICAgLyoKICAgICAgKiBBIFJlbW90ZUNvbnRl
eHQgbGlzdGVucyBmb3IgdGVzdCBldmVudHMgZnJvbSBhIHJlbW90ZSB0ZXN0IGNvbnRleHQsIHN1
Y2gKICAgICAgKiBhcyBhbm90aGVyIHdpbmRvdyBvciBhIHdvcmtlci4gVGhlc2UgZXZlbnRzIGFy
ZSB0aGVuIHVzZWQgdG8gY29uc3RydWN0CkBAIC0yMDQ0LDYgKzI2MzIsMTYgQEAgcG9saWNpZXMg
YW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAgICAgICB0ZXN0cy5zZXRfc3RhdHVz
KGRhdGEuc3RhdHVzLnN0YXR1cywgZGF0YS5zdGF0dXMubWVzc2FnZSwgZGF0YS5zdGF0dXMuc2Fj
ayk7CiAgICAgICAgIH0KIAorICAgICAgICBmb3IgKGxldCBhc3NlcnQgb2YgZGF0YS5hc3NlcnRz
KSB7CisgICAgICAgICAgICB2YXIgcmVjb3JkID0gbmV3IEFzc2VydFJlY29yZCgpOworICAgICAg
ICAgICAgcmVjb3JkLmFzc2VydF9uYW1lID0gYXNzZXJ0LmFzc2VydF9uYW1lOworICAgICAgICAg
ICAgcmVjb3JkLmFyZ3MgPSBhc3NlcnQuYXJnczsKKyAgICAgICAgICAgIHJlY29yZC50ZXN0ID0g
YXNzZXJ0LnRlc3QgIT0gbnVsbCA/IHRoaXMudGVzdHNbYXNzZXJ0LnRlc3QuaW5kZXhdIDogbnVs
bDsKKyAgICAgICAgICAgIHJlY29yZC5zdGF0dXMgPSBhc3NlcnQuc3RhdHVzOworICAgICAgICAg
ICAgcmVjb3JkLnN0YWNrID0gYXNzZXJ0LnN0YWNrOworICAgICAgICAgICAgdGVzdHMuYXNzZXJ0
c19ydW4ucHVzaChyZWNvcmQpOworICAgICAgICB9CisKICAgICAgICAgdGhpcy5tZXNzYWdlX3Rh
cmdldC5yZW1vdmVFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgdGhpcy5tZXNzYWdlX2hhbmRsZXIp
OwogICAgICAgICB0aGlzLnJ1bm5pbmcgPSBmYWxzZTsKIApAQCAtMjA4NywxMSArMjY4NSwyMCBA
QCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICBUZXN0c1N0YXR1cy5z
dGF0dXNlcyA9IHsKICAgICAgICAgT0s6MCwKICAgICAgICAgRVJST1I6MSwKLSAgICAgICAgVElN
RU9VVDoyCisgICAgICAgIFRJTUVPVVQ6MiwKKyAgICAgICAgUFJFQ09ORElUSU9OX0ZBSUxFRDoz
CiAgICAgfTsKIAogICAgIFRlc3RzU3RhdHVzLnByb3RvdHlwZSA9IG1lcmdlKHt9LCBUZXN0c1N0
YXR1cy5zdGF0dXNlcyk7CiAKKyAgICBUZXN0c1N0YXR1cy5wcm90b3R5cGUuZm9ybWF0cyA9IHsK
KyAgICAgICAgMDogIk9LIiwKKyAgICAgICAgMTogIkVycm9yIiwKKyAgICAgICAgMjogIlRpbWVv
dXQiLAorICAgICAgICAzOiAiT3B0aW9uYWwgRmVhdHVyZSBVbnN1cHBvcnRlZCIKKyAgICB9CisK
KwogICAgIFRlc3RzU3RhdHVzLnByb3RvdHlwZS5zdHJ1Y3R1cmVkX2Nsb25lID0gZnVuY3Rpb24o
KQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9zdHJ1Y3R1cmVkX2Nsb25lKSB7CkBAIC0yMTA2
LDYgKzI3MTMsMjcgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAg
ICAgIHJldHVybiB0aGlzLl9zdHJ1Y3R1cmVkX2Nsb25lOwogICAgIH07CiAKKyAgICBUZXN0c1N0
YXR1cy5wcm90b3R5cGUuZm9ybWF0X3N0YXR1cyA9IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1
cm4gdGhpcy5mb3JtYXRzW3RoaXMuc3RhdHVzXTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBBc3Nl
cnRSZWNvcmQodGVzdCwgYXNzZXJ0X25hbWUsIGFyZ3MgPSBbXSkgeworICAgICAgICB0aGlzLmFz
c2VydF9uYW1lID0gYXNzZXJ0X25hbWU7CisgICAgICAgIHRoaXMudGVzdCA9IHRlc3Q7CisgICAg
ICAgIC8vIEF2b2lkIGtlZXBpbmcgY29tcGxleCBvYmplY3RzIGFsaXZlCisgICAgICAgIHRoaXMu
YXJncyA9IGFyZ3MubWFwKHggPT4gZm9ybWF0X3ZhbHVlKHgpLnJlcGxhY2UoL1xuL2csICIgIikp
OworICAgICAgICB0aGlzLnN0YXR1cyA9IG51bGw7CisgICAgfQorCisgICAgQXNzZXJ0UmVjb3Jk
LnByb3RvdHlwZS5zdHJ1Y3R1cmVkX2Nsb25lID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVy
biB7CisgICAgICAgICAgICBhc3NlcnRfbmFtZTogdGhpcy5hc3NlcnRfbmFtZSwKKyAgICAgICAg
ICAgIHRlc3Q6IHRoaXMudGVzdCA/IHRoaXMudGVzdC5zdHJ1Y3R1cmVkX2Nsb25lKCkgOiBudWxs
LAorICAgICAgICAgICAgYXJnczogdGhpcy5hcmdzLAorICAgICAgICAgICAgc3RhdHVzOiB0aGlz
LnN0YXR1cywKKyAgICAgICAgfQorICAgIH0KKwogICAgIGZ1bmN0aW9uIFRlc3RzKCkKICAgICB7
CiAgICAgICAgIHRoaXMudGVzdHMgPSBbXTsKQEAgLTIxMjgsNiArMjc1NiwxMCBAQCBwb2xpY2ll
cyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgdGhpcy5hbGxvd191bmNhdWdo
dF9leGNlcHRpb24gPSBmYWxzZTsKIAogICAgICAgICB0aGlzLmZpbGVfaXNfdGVzdCA9IGZhbHNl
OworICAgICAgICAvLyBUaGlzIHZhbHVlIGlzIGxhemlseSBpbml0aWFsaXplZCBpbiBvcmRlciB0
byBhdm9pZCBpbnRyb2R1Y2luZyBhCisgICAgICAgIC8vIGRlcGVuZGVuY3kgb24gRUNNQVNjcmlw
dCAyMDE1IFByb21pc2VzIHRvIGFsbCB0ZXN0cy4KKyAgICAgICAgdGhpcy5wcm9taXNlX3Rlc3Rz
ID0gbnVsbDsKKyAgICAgICAgdGhpcy5wcm9taXNlX3NldHVwX2NhbGxlZCA9IGZhbHNlOwogCiAg
ICAgICAgIHRoaXMudGltZW91dF9tdWx0aXBsaWVyID0gMTsKICAgICAgICAgdGhpcy50aW1lb3V0
X2xlbmd0aCA9IHRlc3RfZW52aXJvbm1lbnQudGVzdF90aW1lb3V0KCk7CkBAIC0yMTM4LDggKzI3
NzAsMjEgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAgIHRo
aXMudGVzdF9kb25lX2NhbGxiYWNrcyA9IFtdOwogICAgICAgICB0aGlzLmFsbF9kb25lX2NhbGxi
YWNrcyA9IFtdOwogCisgICAgICAgIHRoaXMuaGlkZV90ZXN0X3N0YXRlID0gZmFsc2U7CiAgICAg
ICAgIHRoaXMucGVuZGluZ19yZW1vdGVzID0gW107CiAKKyAgICAgICAgdGhpcy5jdXJyZW50X3Rl
c3QgPSBudWxsOworICAgICAgICB0aGlzLmFzc2VydHNfcnVuID0gW107CisKKyAgICAgICAgLy8g
VHJhY2sgd2hldGhlciBvdXRwdXQgaXMgZW5hYmxlZCwgYW5kIHRodXMgd2hldGhlciBvciBub3Qg
d2Ugc2hvdWxkCisgICAgICAgIC8vIHRyYWNrIGFzc2VydHMuCisgICAgICAgIC8vCisgICAgICAg
IC8vIE9uIHdvcmtlcnMgd2UgZG9uJ3QgZ2V0IHByb3BlcnRpZXMgc2V0IGZyb20gdGVzdGhhcm5l
c3NyZXBvcnQuanMsIHNvCisgICAgICAgIC8vIHdlIGRvbid0IGtub3cgd2hldGhlciBvciBub3Qg
dG8gdHJhY2sgYXNzZXJ0cy4gVG8gYXZvaWQgdGhlCisgICAgICAgIC8vIHJlc3VsdGluZyBwZXJm
b3JtYW5jZSBoaXQsIHdlIGFzc3VtZSB3ZSBhcmUgbm90IG1lYW50IHRvLiBUaGlzIG1lYW5zCisg
ICAgICAgIC8vIHRoYXQgYXNzZXJ0IHRyYWNraW5nIGRvZXMgbm90IGZ1bmN0aW9uIG9uIHdvcmtl
cnMuCisgICAgICAgIHRoaXMub3V0cHV0ID0gc2V0dGluZ3Mub3V0cHV0ICYmICdkb2N1bWVudCcg
aW4gZ2xvYmFsX3Njb3BlOworCiAgICAgICAgIHRoaXMuc3RhdHVzID0gbmV3IFRlc3RzU3RhdHVz
KCk7CiAKICAgICAgICAgdmFyIHRoaXNfb2JqID0gdGhpczsKQEAgLTIxNzgsMTEgKzI4MjMsMTkg
QEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAgICAgICAgICAg
ICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXRf
aWQpOwogICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChw
ID09ICJzaW5nbGVfdGVzdCIgJiYgdmFsdWUpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5z
ZXRfZmlsZV9pc190ZXN0KCk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwID09ICJ0aW1l
b3V0X211bHRpcGxpZXIiKSB7CiAgICAgICAgICAgICAgICAgICAgIHRoaXMudGltZW91dF9tdWx0
aXBsaWVyID0gdmFsdWU7CiAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnRpbWVvdXRfbGVu
Z3RoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50aW1lb3V0X2xlbmd0aCAqPSB0
aGlzLnRpbWVvdXRfbXVsdGlwbGllcjsKICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIH0gZWxzZSBpZiAocCA9PSAiaGlkZV90ZXN0X3N0YXRlIikgeworICAgICAgICAgICAg
ICAgICAgICB0aGlzLmhpZGVfdGVzdF9zdGF0ZSA9IHZhbHVlOworICAgICAgICAgICAgICAgIH0g
ZWxzZSBpZiAocCA9PSAib3V0cHV0IikgeworICAgICAgICAgICAgICAgICAgICB0aGlzLm91dHB1
dCA9IHZhbHVlOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocCA9PT0gImRlYnVnIikgewor
ICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncy5kZWJ1ZyA9IHZhbHVlOwogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMjE5MSw5ICsyODQ0LDEwIEBAIHBv
bGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAgICAgICAgdHJ5IHsKICAg
ICAgICAgICAgICAgICBmdW5jKCk7CiAgICAgICAgICAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAg
ICAgICAgICAgdGhpcy5zdGF0dXMuc3RhdHVzID0gdGhpcy5zdGF0dXMuRVJST1I7CisgICAgICAg
ICAgICAgICAgdGhpcy5zdGF0dXMuc3RhdHVzID0gZSBpbnN0YW5jZW9mIE9wdGlvbmFsRmVhdHVy
ZVVuc3VwcG9ydGVkRXJyb3IgPyB0aGlzLnN0YXR1cy5QUkVDT05ESVRJT05fRkFJTEVEIDogdGhp
cy5zdGF0dXMuRVJST1I7CiAgICAgICAgICAgICAgICAgdGhpcy5zdGF0dXMubWVzc2FnZSA9IFN0
cmluZyhlKTsKICAgICAgICAgICAgICAgICB0aGlzLnN0YXR1cy5zdGFjayA9IGUuc3RhY2sgPyBl
LnN0YWNrIDogbnVsbDsKKyAgICAgICAgICAgICAgICB0aGlzLmNvbXBsZXRlKCk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICAgICAgICAgdGhpcy5zZXRfdGltZW91dCgpOwpAQCAtMjIwNiw3
ICsyODYwLDcgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAg
IHRoaXMud2FpdF9mb3JfZmluaXNoID0gdHJ1ZTsKICAgICAgICAgdGhpcy5maWxlX2lzX3Rlc3Qg
PSB0cnVlOwogICAgICAgICAvLyBDcmVhdGUgdGhlIHRlc3QsIHdoaWNoIHdpbGwgYWRkIGl0IHRv
IHRoZSBsaXN0IG9mIHRlc3RzCi0gICAgICAgIGFzeW5jX3Rlc3QoKTsKKyAgICAgICAgdGVzdHMu
Y3VycmVudF90ZXN0ID0gYXN5bmNfdGVzdCgpOwogICAgIH07CiAKICAgICBUZXN0cy5wcm90b3R5
cGUuc2V0X3N0YXR1cyA9IGZ1bmN0aW9uKHN0YXR1cywgbWVzc2FnZSwgc3RhY2spCkBAIC0yMzcw
LDYgKzMwMjQsMTYgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAg
ICAgICAgICAgICAgICBhbGxfY29tcGxldGUpOwogICAgIH07CiAKKyAgICBUZXN0cy5wcm90b3R5
cGUuc2V0X2Fzc2VydCA9IGZ1bmN0aW9uKGFzc2VydF9uYW1lLCBhcmdzKSB7CisgICAgICAgIHRo
aXMuYXNzZXJ0c19ydW4ucHVzaChuZXcgQXNzZXJ0UmVjb3JkKHRoaXMuY3VycmVudF90ZXN0LCBh
c3NlcnRfbmFtZSwgYXJncykpCisgICAgfQorCisgICAgVGVzdHMucHJvdG90eXBlLnNldF9hc3Nl
cnRfc3RhdHVzID0gZnVuY3Rpb24oc3RhdHVzLCBzdGFjaykgeworICAgICAgICBsZXQgYXNzZXJ0
X3JlY29yZCA9IHRoaXMuYXNzZXJ0c19ydW5bdGhpcy5hc3NlcnRzX3J1bi5sZW5ndGggLSAxXTsK
KyAgICAgICAgYXNzZXJ0X3JlY29yZC5zdGF0dXMgPSBzdGF0dXM7CisgICAgICAgIGFzc2VydF9y
ZWNvcmQuc3RhY2sgPSBzdGFjazsKKyAgICB9CisKICAgICAvKioKICAgICAgKiBVcGRhdGUgdGhl
IGhhcm5lc3Mgc3RhdHVzIHRvIHJlZmxlY3QgYW4gdW5yZWNvdmVyYWJsZSBoYXJuZXNzIGVycm9y
IHRoYXQKICAgICAgKiBzaG91bGQgY2FuY2VsIGFsbCBmdXJ0aGVyIHRlc3RpbmcuIFVwZGF0ZSBh
bGwgcHJldmlvdXNseS1kZWZpbmVkIHRlc3RzCkBAIC0yNDEyLDIyICszMDc2LDE2IEBAIHBvbGlj
aWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAgIH0KIAogICAgIGZ1bmN0aW9uIHNh
bml0aXplX3VucGFpcmVkX3N1cnJvZ2F0ZXMoc3RyKSB7Ci0gICAgICAgIHJldHVybiBzdHIucmVw
bGFjZSgvKFtcdWQ4MDAtXHVkYmZmXSkoPyFbXHVkYzAwLVx1ZGZmZl0pL2csCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICBmdW5jdGlvbihfLCB1bnBhaXJlZCkKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29kZV91
bml0X3N0cih1bnBhaXJlZCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICB9KQotICAgICAg
ICAgICAgICAgICAgLy8gVGhpcyByZXBsYWNlbWVudCBpcyBpbnRlbnRpb25hbGx5IGltcGxlbWVu
dGVkIHdpdGhvdXQgYW4KLSAgICAgICAgICAgICAgICAgIC8vIEVTMjAxOCBuZWdhdGl2ZSBsb29r
YmVoaW5kIGFzc2VydGlvbiB0byBzdXBwb3J0IHJ1bnRpbWVzCi0gICAgICAgICAgICAgICAgICAv
LyB3aGljaCBkbyBub3QgeWV0IGltcGxlbWVudCB0aGF0IGxhbmd1YWdlIGZlYXR1cmUuCi0gICAg
ICAgICAgICAgICAgICAucmVwbGFjZSgvKF58W15cdWQ4MDAtXHVkYmZmXSkoW1x1ZGMwMC1cdWRm
ZmZdKS9nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oXywgcHJldmlvdXMs
IHVucGFpcmVkKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoL1tcdWRjMDAt
XHVkZmZmXS8udGVzdChwcmV2aW91cykpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwcmV2aW91cyA9IGNvZGVfdW5pdF9zdHIocHJldmlvdXMpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
cHJldmlvdXMgKyBjb2RlX3VuaXRfc3RyKHVucGFpcmVkKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0pOworICAgICAgICByZXR1cm4gc3RyLnJlcGxhY2UoCisgICAgICAgICAgICAvKFtc
dWQ4MDAtXHVkYmZmXSspKD8hW1x1ZGMwMC1cdWRmZmZdKXwoXnxbXlx1ZDgwMC1cdWRiZmZdKShb
XHVkYzAwLVx1ZGZmZl0rKS9nLAorICAgICAgICAgICAgZnVuY3Rpb24oXywgbG93LCBwcmVmaXgs
IGhpZ2gpIHsKKyAgICAgICAgICAgICAgICB2YXIgb3V0cHV0ID0gcHJlZml4IHx8ICIiOyAgLy8g
cHJlZml4IG1heSBiZSB1bmRlZmluZWQKKyAgICAgICAgICAgICAgICB2YXIgc3RyaW5nID0gbG93
IHx8IGhpZ2g7ICAvLyBvbmx5IG9uZSBvZiB0aGVzZSBhbHRlcm5hdGVzIGNhbiBtYXRjaAorICAg
ICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyaW5nLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICAgICAgICAgICAgICAgIG91dHB1dCArPSBjb2RlX3VuaXRfc3RyKHN0cmluZ1tpXSk7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBvdXRwdXQ7CisgICAgICAg
ICAgICB9KTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBzYW5pdGl6ZV9hbGxfdW5wYWlyZWRfc3Vy
cm9nYXRlcyh0ZXN0cykgewpAQCAtMjQ3Myw3ICszMTMxLDcgQEAgcG9saWNpZXMgYW5kIGNvbnRy
aWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAgIGZvckVhY2ggKHRoaXMuYWxsX2RvbmVfY2FsbGJh
Y2tzLAogICAgICAgICAgICAgICAgICBmdW5jdGlvbihjYWxsYmFjaykKICAgICAgICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sodGhpc19vYmoudGVzdHMsIHRoaXNf
b2JqLnN0YXR1cyk7CisgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayh0aGlzX29iai50ZXN0
cywgdGhpc19vYmouc3RhdHVzLCB0aGlzX29iai5hc3NlcnRzX3J1bik7CiAgICAgICAgICAgICAg
ICAgIH0pOwogICAgIH07CiAKQEAgLTI0ODQsMjQgKzMxNDIsOCBAQCBwb2xpY2llcyBhbmQgY29u
dHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgdmFyIG1lc3NhZ2VfcG9ydDsKIAogICAgICAg
ICBpZiAoaXNfc2VydmljZV93b3JrZXIod29ya2VyKSkgewotICAgICAgICAgICAgaWYgKHdpbmRv
dy5NZXNzYWdlQ2hhbm5lbCkgewotICAgICAgICAgICAgICAgIC8vIFRoZSBTZXJ2aWNlV29ya2Vy
J3MgaW1wbGljaXQgTWVzc2FnZVBvcnQgaXMgY3VycmVudGx5IG5vdAotICAgICAgICAgICAgICAg
IC8vIHJlbGlhYmx5IGFjY2Vzc2libGUgZnJvbSB0aGUgU2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
IGR1ZSB0bwotICAgICAgICAgICAgICAgIC8vIEJsaW5rIHNldHRpbmcgTWVzc2FnZUV2ZW50LnNv
dXJjZSB0byBudWxsIGZvciBtZXNzYWdlcyBzZW50Ci0gICAgICAgICAgICAgICAgLy8gdmlhIFNl
cnZpY2VXb3JrZXIucG9zdE1lc3NhZ2UoKS4gVW50aWwgdGhhdCdzIHJlc29sdmVkLAotICAgICAg
ICAgICAgICAgIC8vIGNyZWF0ZSBhbiBleHBsaWNpdCBNZXNzYWdlQ2hhbm5lbCBhbmQgcGFzcyBv
bmUgZW5kIHRvIHRoZQotICAgICAgICAgICAgICAgIC8vIHdvcmtlci4KLSAgICAgICAgICAgICAg
ICB2YXIgbWVzc2FnZV9jaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsKCk7Ci0gICAgICAgICAg
ICAgICAgbWVzc2FnZV9wb3J0ID0gbWVzc2FnZV9jaGFubmVsLnBvcnQxOwotICAgICAgICAgICAg
ICAgIG1lc3NhZ2VfcG9ydC5zdGFydCgpOwotICAgICAgICAgICAgICAgIHdvcmtlci5wb3N0TWVz
c2FnZSh7dHlwZTogImNvbm5lY3QifSwgW21lc3NhZ2VfY2hhbm5lbC5wb3J0Ml0pOwotICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAvLyBJZiBNZXNzYWdlQ2hhbm5lbCBpcyBu
b3QgYXZhaWxhYmxlLCB0aGVuIHRyeSB0aGUKLSAgICAgICAgICAgICAgICAvLyBTZXJ2aWNlV29y
a2VyLnBvc3RNZXNzYWdlKCkgYXBwcm9hY2ggdXNpbmcgTWVzc2FnZUV2ZW50LnNvdXJjZQotICAg
ICAgICAgICAgICAgIC8vIG9uIHRoZSBvdGhlciBlbmQuCi0gICAgICAgICAgICAgICAgbWVzc2Fn
ZV9wb3J0ID0gbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXI7Ci0gICAgICAgICAgICAgICAgd29ya2Vy
LnBvc3RNZXNzYWdlKHt0eXBlOiAiY29ubmVjdCJ9KTsKLSAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIG1lc3NhZ2VfcG9ydCA9IG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyOworICAgICAgICAgICAg
d29ya2VyLnBvc3RNZXNzYWdlKHt0eXBlOiAiY29ubmVjdCJ9KTsKICAgICAgICAgfSBlbHNlIGlm
IChpc19zaGFyZWRfd29ya2VyKHdvcmtlcikpIHsKICAgICAgICAgICAgIG1lc3NhZ2VfcG9ydCA9
IHdvcmtlci5wb3J0OwogICAgICAgICAgICAgbWVzc2FnZV9wb3J0LnN0YXJ0KCk7CkBAIC0yNzA0
LDcgKzMzNDYsNyBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAg
ICAgICAgIHRoaXMucGhhc2UgPSB0aGlzLkhBVkVfUkVTVUxUUzsKICAgICAgICAgfQogICAgICAg
ICB2YXIgZG9uZV9jb3VudCA9IHRlc3RzLnRlc3RzLmxlbmd0aCAtIHRlc3RzLm51bV9wZW5kaW5n
OwotICAgICAgICBpZiAodGhpcy5vdXRwdXRfbm9kZSkgeworICAgICAgICBpZiAodGhpcy5vdXRw
dXRfbm9kZSAmJiAhdGVzdHMuaGlkZV90ZXN0X3N0YXRlKSB7CiAgICAgICAgICAgICBpZiAoZG9u
ZV9jb3VudCA8IDEwMCB8fAogICAgICAgICAgICAgICAgIChkb25lX2NvdW50IDwgMTAwMCAmJiBk
b25lX2NvdW50ICUgMTAwID09PSAwKSB8fAogICAgICAgICAgICAgICAgIGRvbmVfY291bnQgJSAx
MDAwID09PSAwKSB7CkBAIC0yNzE1LDcgKzMzNTcsNyBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0
aW9uIGZvcm1zIFszXS4KICAgICAgICAgfQogICAgIH07CiAKLSAgICBPdXRwdXQucHJvdG90eXBl
LnNob3dfcmVzdWx0cyA9IGZ1bmN0aW9uICh0ZXN0cywgaGFybmVzc19zdGF0dXMpIHsKKyAgICBP
dXRwdXQucHJvdG90eXBlLnNob3dfcmVzdWx0cyA9IGZ1bmN0aW9uICh0ZXN0cywgaGFybmVzc19z
dGF0dXMsIGFzc2VydHNfcnVuKSB7CiAgICAgICAgIGlmICh0aGlzLnBoYXNlID49IHRoaXMuQ09N
UExFVEUpIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMjc0NCwyMSArMzM4
NiwxMCBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgICAg
IGhlYWRzWzBdLmFwcGVuZENoaWxkKHN0eWxlc2hlZXQpOwogICAgICAgICB9CiAKLSAgICAgICAg
dmFyIHN0YXR1c190ZXh0X2hhcm5lc3MgPSB7fTsKLSAgICAgICAgc3RhdHVzX3RleHRfaGFybmVz
c1toYXJuZXNzX3N0YXR1cy5PS10gPSAiT0siOwotICAgICAgICBzdGF0dXNfdGV4dF9oYXJuZXNz
W2hhcm5lc3Nfc3RhdHVzLkVSUk9SXSA9ICJFcnJvciI7Ci0gICAgICAgIHN0YXR1c190ZXh0X2hh
cm5lc3NbaGFybmVzc19zdGF0dXMuVElNRU9VVF0gPSAiVGltZW91dCI7Ci0KLSAgICAgICAgdmFy
IHN0YXR1c190ZXh0ID0ge307Ci0gICAgICAgIHN0YXR1c190ZXh0W1Rlc3QucHJvdG90eXBlLlBB
U1NdID0gIlBhc3MiOwotICAgICAgICBzdGF0dXNfdGV4dFtUZXN0LnByb3RvdHlwZS5GQUlMXSA9
ICJGYWlsIjsKLSAgICAgICAgc3RhdHVzX3RleHRbVGVzdC5wcm90b3R5cGUuVElNRU9VVF0gPSAi
VGltZW91dCI7Ci0gICAgICAgIHN0YXR1c190ZXh0W1Rlc3QucHJvdG90eXBlLk5PVFJVTl0gPSAi
Tm90IFJ1biI7Ci0KICAgICAgICAgdmFyIHN0YXR1c19udW1iZXIgPSB7fTsKICAgICAgICAgZm9y
RWFjaCh0ZXN0cywKICAgICAgICAgICAgICAgICBmdW5jdGlvbih0ZXN0KSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHZhciBzdGF0dXMgPSBzdGF0dXNfdGV4dFt0ZXN0LnN0YXR1c107CisgICAgICAg
ICAgICAgICAgICAgIHZhciBzdGF0dXMgPSB0ZXN0LmZvcm1hdF9zdGF0dXMoKTsKICAgICAgICAg
ICAgICAgICAgICAgaWYgKHN0YXR1c19udW1iZXIuaGFzT3duUHJvcGVydHkoc3RhdHVzKSkgewog
ICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzX251bWJlcltzdGF0dXNdICs9IDE7CiAgICAg
ICAgICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC0yNzc1LDggKzM0MDYsNyBAQCBwb2xpY2llcyBh
bmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgWyJoMiIsIHt9LCAiU3VtbWFyeSJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmdW5jdGlvbigpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXR1cyA9IHN0YXR1c190ZXh0X2hh
cm5lc3NbaGFybmVzc19zdGF0dXMuc3RhdHVzXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZhciBzdGF0dXMgPSBoYXJuZXNzX3N0YXR1cy5mb3JtYXRfc3RhdHVzKCk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcnYgPSBbWyJzZWN0aW9uIiwg
e30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsicCIs
IHt9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhh
cm5lc3Mgc3RhdHVzOiAiLApAQCAtMjc5OCwxMyArMzQyOCwxNCBAQCBwb2xpY2llcyBhbmQgY29u
dHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVu
Y3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcnYgPSBb
WyJkaXYiLCB7fV1dOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkg
PSAwOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHN0YXR1c190
ZXh0Lmhhc093blByb3BlcnR5KGkpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKHN0YXR1c19udW1iZXIuaGFzT3duUHJvcGVydHkoc3RhdHVzX3RleHRbaV0p
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzdGF0
dXMgPSBzdGF0dXNfdGV4dFtpXTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcnZbMF0ucHVzaChbImRpdiIsIHsiY2xhc3MiOnN0YXR1c19jbGFzcyhzdGF0dXMp
fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChUZXN0LnByb3Rv
dHlwZS5zdGF0dXNfZm9ybWF0cy5oYXNPd25Qcm9wZXJ0eShpKSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0dXNfbnVtYmVyLmhhc093blByb3BlcnR5
KFRlc3QucHJvdG90eXBlLnN0YXR1c19mb3JtYXRzW2ldKSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc3RhdHVzID0gVGVzdC5wcm90b3R5cGUuc3Rh
dHVzX2Zvcm1hdHNbaV07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJ2WzBdLnB1c2goWyJkaXYiLCB7fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJsYWJlbCIsIHt9LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJpbnB1dCIsIHt0eXBl
OiJjaGVja2JveCIsIGNoZWNrZWQ6ImNoZWNrZWQifV0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXNfbnVtYmVyW3N0YXR1c10g
KyAiICIgKyBzdGF0dXNdXSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGF0dXNfbnVtYmVyW3N0YXR1c10gKyAiICIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbInNwYW4i
LCB7ImNsYXNzIjpzdGF0dXNfY2xhc3Moc3RhdHVzKX0sIHN0YXR1c11dXSk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGkrKzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0KQEAgLTI4MjQsMTMgKzM0NTUsMTMgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3Jt
cyBbM10uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVm
YXVsdCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZhciByZXN1bHRfY2xhc3MgPSBlbGVtZW50LnBhcmVudE5vZGUuZ2V0QXR0cmli
dXRlKCJjbGFzcyIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3Vs
dF9jbGFzcyA9IGVsZW1lbnQucXVlcnlTZWxlY3Rvcigic3BhbltjbGFzc10iKS5nZXRBdHRyaWJ1
dGUoImNsYXNzIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc3R5bGVf
ZWxlbWVudCA9IG91dHB1dF9kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJzdHlsZSNoaWRlLSIgKyBy
ZXN1bHRfY2xhc3MpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGlucHV0
X2VsZW1lbnQgPSBlbGVtZW50LnF1ZXJ5U2VsZWN0b3IoImlucHV0Iik7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoIXN0eWxlX2VsZW1lbnQgJiYgIWlucHV0X2VsZW1lbnQu
Y2hlY2tlZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlX2Vs
ZW1lbnQgPSBvdXRwdXRfZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHhodG1sX25zLCAic3R5bGUi
KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZV9lbGVtZW50Lmlk
ID0gImhpZGUtIiArIHJlc3VsdF9jbGFzczsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdHlsZV9lbGVtZW50LnRleHRDb250ZW50ID0gInRhYmxlI3Jlc3VsdHMgPiB0Ym9k
eSA+IHRyLiIrcmVzdWx0X2NsYXNzKyJ7ZGlzcGxheTpub25lfSI7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3R5bGVfZWxlbWVudC50ZXh0Q29udGVudCA9ICJ0YWJsZSNy
ZXN1bHRzID4gdGJvZHkgPiB0ci5vdmVyYWxsLSIrcmVzdWx0X2NsYXNzKyJ7ZGlzcGxheTpub25l
fSI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0X2RvY3VtZW50
LmJvZHkuYXBwZW5kQ2hpbGQoc3R5bGVfZWxlbWVudCk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9IGVsc2UgaWYgKHN0eWxlX2VsZW1lbnQgJiYgaW5wdXRfZWxlbWVudC5jaGVj
a2VkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVfZWxlbWVu
dC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHN0eWxlX2VsZW1lbnQpOwpAQCAtMjg3MSw2ICszNTAy
LDUyIEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAgICAgICAg
cmV0dXJuICcnOwogICAgICAgICB9CiAKKyAgICAgICAgdmFyIGFzc2VydHNfcnVuX2J5X3Rlc3Qg
PSBuZXcgTWFwKCk7CisgICAgICAgIGFzc2VydHNfcnVuLmZvckVhY2goYXNzZXJ0ID0+IHsKKyAg
ICAgICAgICAgIGlmICghYXNzZXJ0c19ydW5fYnlfdGVzdC5oYXMoYXNzZXJ0LnRlc3QpKSB7Cisg
ICAgICAgICAgICAgICAgYXNzZXJ0c19ydW5fYnlfdGVzdC5zZXQoYXNzZXJ0LnRlc3QsIFtdKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGFzc2VydHNfcnVuX2J5X3Rlc3QuZ2V0KGFzc2Vy
dC50ZXN0KS5wdXNoKGFzc2VydCk7CisgICAgICAgIH0pOworCisgICAgICAgIGZ1bmN0aW9uIGdl
dF9hc3NlcnRzX291dHB1dCh0ZXN0KSB7CisgICAgICAgICAgICB2YXIgYXNzZXJ0cyA9IGFzc2Vy
dHNfcnVuX2J5X3Rlc3QuZ2V0KHRlc3QpOworICAgICAgICAgICAgaWYgKCFhc3NlcnRzKSB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuICJObyBhc3NlcnRzIHJhbiI7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBydiA9ICI8dGFibGU+IjsKKyAgICAgICAgICAgIHJ2ICs9IGFzc2VydHMubWFw
KGFzc2VydCA9PiB7CisgICAgICAgICAgICAgICAgdmFyIG91dHB1dF9mbiA9ICI8c3Ryb25nPiIg
KyBlc2NhcGVfaHRtbChhc3NlcnQuYXNzZXJ0X25hbWUpICsgIjwvc3Ryb25nPigiOworICAgICAg
ICAgICAgICAgIHZhciBwcmVmaXhfbGVuID0gb3V0cHV0X2ZuLmxlbmd0aDsKKyAgICAgICAgICAg
ICAgICB2YXIgb3V0cHV0X2FyZ3MgPSBhc3NlcnQuYXJnczsKKyAgICAgICAgICAgICAgICB2YXIg
b3V0cHV0X2xlbiA9IG91dHB1dF9hcmdzLnJlZHVjZSgocHJldiwgY3VycmVudCkgPT4gcHJlditj
dXJyZW50LCBwcmVmaXhfbGVuKTsKKyAgICAgICAgICAgICAgICBpZiAob3V0cHV0X2xlbltvdXRw
dXRfbGVuLmxlbmd0aCAtIDFdID4gNTApIHsKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0X2Fy
Z3MgPSBvdXRwdXRfYXJncy5tYXAoKHgsIGkpID0+CisgICAgICAgICAgICAgICAgICAgIChpID4g
MCA/ICIgICIucmVwZWF0KHByZWZpeF9sZW4pIDogIiIgKSsgeCArIChpIDwgb3V0cHV0X2FyZ3Mu
bGVuZ3RoIC0gMSA/ICIsXG4iIDogIiIpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgICAgICBvdXRwdXRfYXJncyA9IG91dHB1dF9hcmdzLm1hcCgoeCwgaSkgPT4g
eCArIChpIDwgb3V0cHV0X2FyZ3MubGVuZ3RoIC0gMSA/ICIsICIgOiAiIikpOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBvdXRwdXRfZm4gKz0gZXNjYXBlX2h0bWwob3V0cHV0
X2FyZ3Muam9pbigiIikpOworICAgICAgICAgICAgICAgIG91dHB1dF9mbiArPSAnKSc7CisgICAg
ICAgICAgICAgICAgdmFyIG91dHB1dF9sb2NhdGlvbjsKKyAgICAgICAgICAgICAgICBpZiAoYXNz
ZXJ0LnN0YWNrKSB7CisgICAgICAgICAgICAgICAgICAgIG91dHB1dF9sb2NhdGlvbiA9IGFzc2Vy
dC5zdGFjay5zcGxpdCgiXG4iLCAxKVswXS5yZXBsYWNlKC9AP1x3KzpcL1wvW14gIlwvXSsoPzo6
XGQrKT8vZywgIiAiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJu
ICI8dHIgY2xhc3M9J292ZXJhbGwtIiArCisgICAgICAgICAgICAgICAgICAgIHN0YXR1c19jbGFz
cyhUZXN0LnByb3RvdHlwZS5zdGF0dXNfZm9ybWF0c1thc3NlcnQuc3RhdHVzXSkgKyAiJz4iICsK
KyAgICAgICAgICAgICAgICAgICAgIjx0ZCBjbGFzcz0nIiArCisgICAgICAgICAgICAgICAgICAg
IHN0YXR1c19jbGFzcyhUZXN0LnByb3RvdHlwZS5zdGF0dXNfZm9ybWF0c1thc3NlcnQuc3RhdHVz
XSkgKyAiJz4iICsKKyAgICAgICAgICAgICAgICAgICAgVGVzdC5wcm90b3R5cGUuc3RhdHVzX2Zv
cm1hdHNbYXNzZXJ0LnN0YXR1c10gKyAiPC90ZD4iICsKKyAgICAgICAgICAgICAgICAgICAgIjx0
ZD48cHJlPiIgKworICAgICAgICAgICAgICAgICAgICBvdXRwdXRfZm4gKworICAgICAgICAgICAg
ICAgICAgICAob3V0cHV0X2xvY2F0aW9uID8gIlxuIiArIGVzY2FwZV9odG1sKG91dHB1dF9sb2Nh
dGlvbikgOiAiIikgKworICAgICAgICAgICAgICAgICAgICAiPC9wcmU+PC90ZD48L3RyPiI7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICApLmpvaW4oIlxuIik7CisgICAgICAgICAgICBydiAr
PSAiPC90YWJsZT4iOworICAgICAgICAgICAgcmV0dXJuIHJ2OworICAgICAgICB9CisKICAgICAg
ICAgbG9nLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyh4aHRtbF9ucywgInNl
Y3Rpb24iKSk7CiAgICAgICAgIHZhciBhc3NlcnRpb25zID0gaGFzX2Fzc2VydGlvbnMoKTsKICAg
ICAgICAgdmFyIGh0bWwgPSAiPGgyPkRldGFpbHM8L2gyPjx0YWJsZSBpZD0ncmVzdWx0cycgIiAr
IChhc3NlcnRpb25zID8gImNsYXNzPSdhc3NlcnRpb25zJyIgOiAiIiApICsgIj4iICsKQEAgLTI4
NzksMTkgKzM1NTYsMjYgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAg
ICAgICAgICAgICAiPHRoPk1lc3NhZ2U8L3RoPjwvdHI+PC90aGVhZD4iICsKICAgICAgICAgICAg
ICI8dGJvZHk+IjsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXN0cy5sZW5ndGg7IGkr
KykgewotICAgICAgICAgICAgaHRtbCArPSAnPHRyIGNsYXNzPSInICsKLSAgICAgICAgICAgICAg
ICBlc2NhcGVfaHRtbChzdGF0dXNfY2xhc3Moc3RhdHVzX3RleHRbdGVzdHNbaV0uc3RhdHVzXSkp
ICsKLSAgICAgICAgICAgICAgICAnIj48dGQ+JyArCi0gICAgICAgICAgICAgICAgZXNjYXBlX2h0
bWwoc3RhdHVzX3RleHRbdGVzdHNbaV0uc3RhdHVzXSkgKworICAgICAgICAgICAgdmFyIHRlc3Qg
PSB0ZXN0c1tpXTsKKyAgICAgICAgICAgIGh0bWwgKz0gJzx0ciBjbGFzcz0ib3ZlcmFsbC0nICsK
KyAgICAgICAgICAgICAgICBzdGF0dXNfY2xhc3ModGVzdC5mb3JtYXRfc3RhdHVzKCkpICsKKyAg
ICAgICAgICAgICAgICAnIj4nICsKKyAgICAgICAgICAgICAgICAnPHRkIGNsYXNzPSInICsKKyAg
ICAgICAgICAgICAgICBzdGF0dXNfY2xhc3ModGVzdC5mb3JtYXRfc3RhdHVzKCkpICsKKyAgICAg
ICAgICAgICAgICAnIj4nICsKKyAgICAgICAgICAgICAgICB0ZXN0LmZvcm1hdF9zdGF0dXMoKSAr
CiAgICAgICAgICAgICAgICAgIjwvdGQ+PHRkPiIgKwotICAgICAgICAgICAgICAgIGVzY2FwZV9o
dG1sKHRlc3RzW2ldLm5hbWUpICsKKyAgICAgICAgICAgICAgICBlc2NhcGVfaHRtbCh0ZXN0Lm5h
bWUpICsKICAgICAgICAgICAgICAgICAiPC90ZD48dGQ+IiArCi0gICAgICAgICAgICAgICAgKGFz
c2VydGlvbnMgPyBlc2NhcGVfaHRtbChnZXRfYXNzZXJ0aW9uKHRlc3RzW2ldKSkgKyAiPC90ZD48
dGQ+IiA6ICIiKSArCi0gICAgICAgICAgICAgICAgZXNjYXBlX2h0bWwodGVzdHNbaV0ubWVzc2Fn
ZSA/IHRlc3RzW2ldLm1lc3NhZ2UgOiAiICIpICsKKyAgICAgICAgICAgICAgICAoYXNzZXJ0aW9u
cyA/IGVzY2FwZV9odG1sKGdldF9hc3NlcnRpb24odGVzdCkpICsgIjwvdGQ+PHRkPiIgOiAiIikg
KworICAgICAgICAgICAgICAgIGVzY2FwZV9odG1sKHRlc3QubWVzc2FnZSA/IHRlc3RzW2ldLm1l
c3NhZ2UgOiAiICIpICsKICAgICAgICAgICAgICAgICAodGVzdHNbaV0uc3RhY2sgPyAiPHByZT4i
ICsKICAgICAgICAgICAgICAgICAgZXNjYXBlX2h0bWwodGVzdHNbaV0uc3RhY2spICsKLSAgICAg
ICAgICAgICAgICAgIjwvcHJlPiI6ICIiKSArCi0gICAgICAgICAgICAgICAgIjwvdGQ+PC90cj4i
OworICAgICAgICAgICAgICAgICAiPC9wcmU+IjogIiIpOworICAgICAgICAgICAgaWYgKCEodGVz
dCBpbnN0YW5jZW9mIFJlbW90ZVRlc3QpKSB7CisgICAgICAgICAgICAgICAgIGh0bWwgKz0gIjxk
ZXRhaWxzPjxzdW1tYXJ5PkFzc2VydHMgcnVuPC9zdW1tYXJ5PiIgKyBnZXRfYXNzZXJ0c19vdXRw
dXQodGVzdCkgKyAiPC9kZXRhaWxzPiIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGh0bWwg
Kz0gIjwvdGQ+PC90cj4iOwogICAgICAgICB9CiAgICAgICAgIGh0bWwgKz0gIjwvdGJvZHk+PC90
YWJsZT4iOwogICAgICAgICB0cnkgewpAQCAtMzA3Myw5ICszNzU3LDYgQEAgcG9saWNpZXMgYW5k
IGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICovCiAgICAgZnVuY3Rpb24gYXNzZXJ0KGV4
cGVjdGVkX3RydWUsIGZ1bmN0aW9uX25hbWUsIGRlc2NyaXB0aW9uLCBlcnJvciwgc3Vic3RpdHV0
aW9ucykKICAgICB7Ci0gICAgICAgIGlmICh0ZXN0cy50ZXN0cy5sZW5ndGggPT09IDApIHsKLSAg
ICAgICAgICAgIHRlc3RzLnNldF9maWxlX2lzX3Rlc3QoKTsKLSAgICAgICAgfQogICAgICAgICBp
ZiAoZXhwZWN0ZWRfdHJ1ZSAhPT0gdHJ1ZSkgewogICAgICAgICAgICAgdmFyIG1zZyA9IG1ha2Vf
bWVzc2FnZShmdW5jdGlvbl9uYW1lLCBkZXNjcmlwdGlvbiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZXJyb3IsIHN1YnN0aXR1dGlvbnMpOwpAQCAtMzA4NSwxNCArMzc2Niwx
NyBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KIAogICAgIGZ1bmN0aW9u
IEFzc2VydGlvbkVycm9yKG1lc3NhZ2UpCiAgICAgeworICAgICAgICBpZiAodHlwZW9mIG1lc3Nh
Z2UgPT0gInN0cmluZyIpIHsKKyAgICAgICAgICAgIG1lc3NhZ2UgPSBzYW5pdGl6ZV91bnBhaXJl
ZF9zdXJyb2dhdGVzKG1lc3NhZ2UpOworICAgICAgICB9CiAgICAgICAgIHRoaXMubWVzc2FnZSA9
IG1lc3NhZ2U7Ci0gICAgICAgIHRoaXMuc3RhY2sgPSB0aGlzLmdldF9zdGFjaygpOworICAgICAg
ICB0aGlzLnN0YWNrID0gZ2V0X3N0YWNrKCk7CiAgICAgfQogICAgIGV4cG9zZShBc3NlcnRpb25F
cnJvciwgIkFzc2VydGlvbkVycm9yIik7CiAKICAgICBBc3NlcnRpb25FcnJvci5wcm90b3R5cGUg
PSBPYmplY3QuY3JlYXRlKEVycm9yLnByb3RvdHlwZSk7CiAKLSAgICBBc3NlcnRpb25FcnJvci5w
cm90b3R5cGUuZ2V0X3N0YWNrID0gZnVuY3Rpb24oKSB7CisgICAgY29uc3QgZ2V0X3N0YWNrID0g
ZnVuY3Rpb24oKSB7CiAgICAgICAgIHZhciBzdGFjayA9IG5ldyBFcnJvcigpLnN0YWNrOwogICAg
ICAgICAvLyBJRTExIGRvZXMgbm90IGluaXRpYWxpemUgJ0Vycm9yLnN0YWNrJyB1bnRpbCB0aGUg
b2JqZWN0IGlzIHRocm93bi4KICAgICAgICAgaWYgKCFzdGFjaykgewpAQCAtMzEzOCw2ICszODIy
LDEzIEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAgICByZXR1
cm4gbGluZXMuc2xpY2UoaSkuam9pbigiXG4iKTsKICAgICB9CiAKKyAgICBmdW5jdGlvbiBPcHRp
b25hbEZlYXR1cmVVbnN1cHBvcnRlZEVycm9yKG1lc3NhZ2UpCisgICAgeworICAgICAgICBBc3Nl
cnRpb25FcnJvci5jYWxsKHRoaXMsIG1lc3NhZ2UpOworICAgIH0KKyAgICBPcHRpb25hbEZlYXR1
cmVVbnN1cHBvcnRlZEVycm9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQXNzZXJ0aW9uRXJy
b3IucHJvdG90eXBlKTsKKyAgICBleHBvc2UoT3B0aW9uYWxGZWF0dXJlVW5zdXBwb3J0ZWRFcnJv
ciwgIk9wdGlvbmFsRmVhdHVyZVVuc3VwcG9ydGVkRXJyb3IiKTsKKwogICAgIGZ1bmN0aW9uIG1h
a2VfbWVzc2FnZShmdW5jdGlvbl9uYW1lLCBkZXNjcmlwdGlvbiwgZXJyb3IsIHN1YnN0aXR1dGlv
bnMpCiAgICAgewogICAgICAgICBmb3IgKHZhciBwIGluIHN1YnN0aXR1dGlvbnMpIHsKQEAgLTMz
MDYsNyArMzk5Nyw3IEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAg
IGZ1bmN0aW9uIGdldF90aXRsZSgpCiAgICAgewogICAgICAgICBpZiAoJ2RvY3VtZW50JyBpbiBn
bG9iYWxfc2NvcGUpIHsKLSAgICAgICAgICAgIC8vRG9uJ3QgdXNlIGRvY3VtZW50LnRpdGxlIHRv
IHdvcmsgYXJvdW5kIGFuIE9wZXJhIGJ1ZyBpbiBYSFRNTCBkb2N1bWVudHMKKyAgICAgICAgICAg
IC8vRG9uJ3QgdXNlIGRvY3VtZW50LnRpdGxlIHRvIHdvcmsgYXJvdW5kIGFuIE9wZXJhL1ByZXN0
byBidWcgaW4gWEhUTUwgZG9jdW1lbnRzCiAgICAgICAgICAgICB2YXIgdGl0bGUgPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGl0bGUiKVswXTsKICAgICAgICAgICAgIGlmICh0aXRs
ZSAmJiB0aXRsZS5maXJzdENoaWxkICYmIHRpdGxlLmZpcnN0Q2hpbGQuZGF0YSkgewogICAgICAg
ICAgICAgICAgIHJldHVybiB0aXRsZS5maXJzdENoaWxkLmRhdGE7CkBAIC0zMzY1LDM4ICs0MDU2
LDU2IEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAgIHZhciB0ZXN0
cyA9IG5ldyBUZXN0cygpOwogCiAgICAgaWYgKGdsb2JhbF9zY29wZS5hZGRFdmVudExpc3RlbmVy
KSB7Ci0gICAgICAgIHZhciBlcnJvcl9oYW5kbGVyID0gZnVuY3Rpb24oZSkgewotICAgICAgICAg
ICAgaWYgKHRlc3RzLnRlc3RzLmxlbmd0aCA9PT0gMCAmJiAhdGVzdHMuYWxsb3dfdW5jYXVnaHRf
ZXhjZXB0aW9uKSB7Ci0gICAgICAgICAgICAgICAgdGVzdHMuc2V0X2ZpbGVfaXNfdGVzdCgpOwot
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB2YXIgc3RhY2s7Ci0gICAgICAgICAgICBpZiAo
ZS5lcnJvciAmJiBlLmVycm9yLnN0YWNrKSB7Ci0gICAgICAgICAgICAgICAgc3RhY2sgPSBlLmVy
cm9yLnN0YWNrOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBzdGFjayA9
IGUuZmlsZW5hbWUgKyAiOiIgKyBlLmxpbmVubyArICI6IiArIGUuY29sbm87Ci0gICAgICAgICAg
ICB9Ci0KKyAgICAgICAgdmFyIGVycm9yX2hhbmRsZXIgPSBmdW5jdGlvbihlcnJvciwgbWVzc2Fn
ZSwgc3RhY2spIHsKKyAgICAgICAgICAgIHZhciBvcHRpb25hbF91bnN1cHBvcnRlZCA9IGVycm9y
IGluc3RhbmNlb2YgT3B0aW9uYWxGZWF0dXJlVW5zdXBwb3J0ZWRFcnJvcjsKICAgICAgICAgICAg
IGlmICh0ZXN0cy5maWxlX2lzX3Rlc3QpIHsKICAgICAgICAgICAgICAgICB2YXIgdGVzdCA9IHRl
c3RzLnRlc3RzWzBdOwogICAgICAgICAgICAgICAgIGlmICh0ZXN0LnBoYXNlID49IHRlc3QucGhh
c2VzLkhBU19SRVNVTFQpIHsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICB0ZXN0LnNldF9zdGF0dXModGVzdC5GQUlMLCBlLm1l
c3NhZ2UsIHN0YWNrKTsKKyAgICAgICAgICAgICAgICB2YXIgc3RhdHVzID0gb3B0aW9uYWxfdW5z
dXBwb3J0ZWQgPyB0ZXN0LlBSRUNPTkRJVElPTl9GQUlMRUQgOiB0ZXN0LkZBSUw7CisgICAgICAg
ICAgICAgICAgdGVzdC5zZXRfc3RhdHVzKHN0YXR1cywgbWVzc2FnZSwgc3RhY2spOwogICAgICAg
ICAgICAgICAgIHRlc3QucGhhc2UgPSB0ZXN0LnBoYXNlcy5IQVNfUkVTVUxUOwotICAgICAgICAg
ICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb24gaW52b2NhdGlvbiBpcyBzdXBlcmZsdW91
cy4KLSAgICAgICAgICAgICAgICAvLyBUT0RPOiBSZW1vdmUuCi0gICAgICAgICAgICAgICAgdGVz
dC5kb25lKCk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKCF0ZXN0cy5hbGxvd191bmNhdWdodF9l
eGNlcHRpb24pIHsKLSAgICAgICAgICAgICAgICB0ZXN0cy5zdGF0dXMuc3RhdHVzID0gdGVzdHMu
c3RhdHVzLkVSUk9SOwotICAgICAgICAgICAgICAgIHRlc3RzLnN0YXR1cy5tZXNzYWdlID0gZS5t
ZXNzYWdlOworICAgICAgICAgICAgICAgIHZhciBzdGF0dXMgPSBvcHRpb25hbF91bnN1cHBvcnRl
ZCA/IHRlc3RzLnN0YXR1cy5QUkVDT05ESVRJT05fRkFJTEVEIDogdGVzdHMuc3RhdHVzLkVSUk9S
OworICAgICAgICAgICAgICAgIHRlc3RzLnN0YXR1cy5zdGF0dXMgPSBzdGF0dXM7CisgICAgICAg
ICAgICAgICAgdGVzdHMuc3RhdHVzLm1lc3NhZ2UgPSBtZXNzYWdlOwogICAgICAgICAgICAgICAg
IHRlc3RzLnN0YXR1cy5zdGFjayA9IHN0YWNrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAg
ZG9uZSgpOworCisgICAgICAgICAgICAvLyBEbyBub3QgdHJhbnNpdGlvbiB0byB0aGUgImNvbXBs
ZXRlIiBwaGFzZSBpZiB0aGUgdGVzdCBoYXMgYmVlbgorICAgICAgICAgICAgLy8gY29uZmlndXJl
ZCB0byBhbGxvdyB1bmNhdWdodCBleGNlcHRpb25zLiBUaGlzIGdpdmVzIHRoZSB0ZXN0IGFuCisg
ICAgICAgICAgICAvLyBvcHBvcnR1bml0eSB0byBkZWZpbmUgc3VidGVzdHMgYmFzZWQgb24gdGhl
IGV4Y2VwdGlvbiByZXBvcnRpbmcKKyAgICAgICAgICAgIC8vIGJlaGF2aW9yLgorICAgICAgICAg
ICAgaWYgKCF0ZXN0cy5hbGxvd191bmNhdWdodF9leGNlcHRpb24pIHsKKyAgICAgICAgICAgICAg
ICBkb25lKCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgYWRkRXZlbnRM
aXN0ZW5lcigiZXJyb3IiLCBlcnJvcl9oYW5kbGVyLCBmYWxzZSk7Ci0gICAgICAgIGFkZEV2ZW50
TGlzdGVuZXIoInVuaGFuZGxlZHJlamVjdGlvbiIsIGZ1bmN0aW9uKGUpeyBlcnJvcl9oYW5kbGVy
KGUucmVhc29uKTsgfSwgZmFsc2UpOworICAgICAgICBhZGRFdmVudExpc3RlbmVyKCJlcnJvciIs
IGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgICAgIHZhciBtZXNzYWdlID0gZS5tZXNzYWdlOworICAg
ICAgICAgICAgdmFyIHN0YWNrOworICAgICAgICAgICAgaWYgKGUuZXJyb3IgJiYgZS5lcnJvci5z
dGFjaykgeworICAgICAgICAgICAgICAgIHN0YWNrID0gZS5lcnJvci5zdGFjazsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgc3RhY2sgPSBlLmZpbGVuYW1lICsgIjoiICsg
ZS5saW5lbm8gKyAiOiIgKyBlLmNvbG5vOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZXJy
b3JfaGFuZGxlcihlLmVycm9yLCBtZXNzYWdlLCBzdGFjayk7CisgICAgICAgIH0sIGZhbHNlKTsK
KworICAgICAgICBhZGRFdmVudExpc3RlbmVyKCJ1bmhhbmRsZWRyZWplY3Rpb24iLCBmdW5jdGlv
bihlKSB7CisgICAgICAgICAgICB2YXIgbWVzc2FnZTsKKyAgICAgICAgICAgIGlmIChlLnJlYXNv
biAmJiBlLnJlYXNvbi5tZXNzYWdlKSB7CisgICAgICAgICAgICAgICAgbWVzc2FnZSA9ICJVbmhh
bmRsZWQgcmVqZWN0aW9uOiAiICsgZS5yZWFzb24ubWVzc2FnZTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgbWVzc2FnZSA9ICJVbmhhbmRsZWQgcmVqZWN0aW9uIjsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIHZhciBzdGFjazsKKyAgICAgICAgICAgIGlmIChlLnJl
YXNvbiAmJiBlLnJlYXNvbi5zdGFjaykgeworICAgICAgICAgICAgICAgIHN0YWNrID0gZS5yZWFz
b24uc3RhY2s7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlcnJvcl9oYW5kbGVyKGUucmVh
c29uLCBtZXNzYWdlLCBzdGFjayk7CisgICAgICAgIH0sIGZhbHNlKTsKICAgICB9CiAKICAgICB0
ZXN0X2Vudmlyb25tZW50Lm9uX3Rlc3RzX3JlYWR5KCk7CkBAIC0zNDMxLDUwICs0MTQwLDYyIEBA
IHRhYmxlI3Jlc3VsdHMge1wKICAgICB3aWR0aDoxMDAlO1wKIH1cCiBcCi10YWJsZSNyZXN1bHRz
IHRoOmZpcnN0LWNoaWxkLFwKLXRhYmxlI3Jlc3VsdHMgdGQ6Zmlyc3QtY2hpbGQge1wKLSAgICB3
aWR0aDo0ZW07XAordGFibGUjcmVzdWx0cyA+IHRoZWFkID4gdHIgPiB0aDpmaXJzdC1jaGlsZCxc
Cit0YWJsZSNyZXN1bHRzID4gdGJvZHkgPiB0ciA+IHRkOmZpcnN0LWNoaWxkIHtcCisgICAgd2lk
dGg6OGVtO1wKIH1cCiBcCi10YWJsZSNyZXN1bHRzIHRoOmxhc3QtY2hpbGQsXAotdGFibGUjcmVz
dWx0cyB0ZDpsYXN0LWNoaWxkIHtcCit0YWJsZSNyZXN1bHRzID4gdGhlYWQgPiB0ciA+IHRoOmxh
c3QtY2hpbGQsXAordGFibGUjcmVzdWx0cyA+IHRoZWFkID4gdHIgPiB0ZDpsYXN0LWNoaWxkIHtc
CiAgICAgd2lkdGg6NTAlO1wKIH1cCiBcCi10YWJsZSNyZXN1bHRzLmFzc2VydGlvbnMgdGg6bGFz
dC1jaGlsZCxcCi10YWJsZSNyZXN1bHRzLmFzc2VydGlvbnMgdGQ6bGFzdC1jaGlsZCB7XAordGFi
bGUjcmVzdWx0cy5hc3NlcnRpb25zID4gdGhlYWQgPiB0ciA+IHRoOmxhc3QtY2hpbGQsXAordGFi
bGUjcmVzdWx0cy5hc3NlcnRpb25zID4gdGJvZHkgPiB0ciA+IHRkOmxhc3QtY2hpbGQge1wKICAg
ICB3aWR0aDozNSU7XAogfVwKIFwKLXRhYmxlI3Jlc3VsdHMgdGgge1wKK3RhYmxlI3Jlc3VsdHMg
PiB0aGVhZCA+ID4gdHIgPiB0aCB7XAogICAgIHBhZGRpbmc6MDtcCiAgICAgcGFkZGluZy1ib3R0
b206MC41ZW07XAogICAgIGJvcmRlci1ib3R0b206bWVkaXVtIHNvbGlkIGJsYWNrO1wKIH1cCiBc
Ci10YWJsZSNyZXN1bHRzIHRkIHtcCit0YWJsZSNyZXN1bHRzID4gdGJvZHkgPiB0cj4gdGQge1wK
ICAgICBwYWRkaW5nOjFlbTtcCiAgICAgcGFkZGluZy1ib3R0b206MC41ZW07XAogICAgIGJvcmRl
ci1ib3R0b206dGhpbiBzb2xpZCBibGFjaztcCiB9XAogXAotdHIucGFzcyA+IHRkOmZpcnN0LWNo
aWxkIHtcCisucGFzcyB7XAogICAgIGNvbG9yOmdyZWVuO1wKIH1cCiBcCi10ci5mYWlsID4gdGQ6
Zmlyc3QtY2hpbGQge1wKKy5mYWlsIHtcCiAgICAgY29sb3I6cmVkO1wKIH1cCiBcCi10ci50aW1l
b3V0ID4gdGQ6Zmlyc3QtY2hpbGQge1wKK3RyLnRpbWVvdXQge1wKICAgICBjb2xvcjpyZWQ7XAog
fVwKIFwKLXRyLm5vdHJ1biA+IHRkOmZpcnN0LWNoaWxkIHtcCit0ci5ub3RydW4ge1wKICAgICBj
b2xvcjpibHVlO1wKIH1cCiBcCi0ucGFzcyA+IHRkOmZpcnN0LWNoaWxkLCAuZmFpbCA+IHRkOmZp
cnN0LWNoaWxkLCAudGltZW91dCA+IHRkOmZpcnN0LWNoaWxkLCAubm90cnVuID4gdGQ6Zmlyc3Qt
Y2hpbGQge1wKK3RyLm9wdGlvbmFsdW5zdXBwb3J0ZWQge1wKKyAgICBjb2xvcjpibHVlO1wKK31c
CitcCisub2sge1wKKyAgICBjb2xvcjpncmVlbjtcCit9XAorXAorLmVycm9yIHtcCisgICAgY29s
b3I6cmVkO1wKK31cCitcCisucGFzcywgLmZhaWwsIC50aW1lb3V0LCAubm90cnVuLCAub3B0aW9u
YWx1bnN1cHBvcnRlZCAub2ssIC50aW1lb3V0LCAuZXJyb3Ige1wKICAgICBmb250LXZhcmlhbnQ6
c21hbGwtY2FwcztcCiB9XAogXApAQCAtMzQ5MSwyMyArNDIxMiw3IEBAIHRhYmxlI3Jlc3VsdHMg
c3Bhbi5hY3R1YWwge1wKICAgICBmb250LWZhbWlseTpEZWphVnUgU2FucyBNb25vLCBCaXRzdHJl
YW0gVmVyYSBTYW5zIE1vbm8sIE1vbm9zcGFjZTtcCiAgICAgd2hpdGUtc3BhY2U6cHJlO1wKIH1c
Ci1cCi1zcGFuLm9rIHtcCi0gICAgY29sb3I6Z3JlZW47XAotfVwKLVwKLXRyLmVycm9yIHtcCi0g
ICAgY29sb3I6cmVkO1wKLX1cCi1cCi1zcGFuLnRpbWVvdXQge1wKLSAgICBjb2xvcjpyZWQ7XAot
fVwKLVwKLXNwYW4ub2ssIHNwYW4udGltZW91dCwgc3Bhbi5lcnJvciB7XAotICAgIGZvbnQtdmFy
aWFudDpzbWFsbC1jYXBzO1wKLX1cCiAiOwogCi19KSh0aGlzKTsKK30pKHNlbGYpOwogLy8gdmlt
OiBzZXQgZXhwYW5kdGFiIHNoaWZ0d2lkdGg9NCB0YWJzdG9wPTQ6CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtLWNvbnRyb2xsZXIuanMgYi9MYXlv
dXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtLWNvbnRyb2xsZXIuanMKaW5kZXgg
ZmU4MmZhNWExYTM2YjA2MTc2ZjY0MzAxMDY4NjM2MWYzYmJiYzQwYi4uMDkyNDA0NTA2ZjMwYWVk
YmU2ODIwMDY5ZDRlODAzNGRkMWEyOWEwMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFt
cy9yZWFkYWJsZS1ieXRlLXN0cmVhbS1jb250cm9sbGVyLmpzCisrKyBiL0xheW91dFRlc3RzL3N0
cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW0tY29udHJvbGxlci5qcwpAQCAtMjAsNyArMjAsNyBA
QCB0ZXN0KGZ1bmN0aW9uKCkgewogICAgICAgICB0eXBlOiAiYnl0ZXMiCiAgICAgfSk7CiAKLSAg
ICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoIkNhbiBvbmx5IGNhbGwgUmVhZGFibGVCeXRl
U3RyZWFtQ29udHJvbGxlci5lcnJvciBvbiBpbnN0YW5jZXMgb2YgUmVhZGFibGVCeXRlU3RyZWFt
Q29udHJvbGxlciIpLAorICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLAogICAgICAgICBm
dW5jdGlvbigpIHsgY29udHJvbGxlci5lcnJvci5hcHBseShycyk7IH0pOwogfSwgIkNhbGxpbmcg
ZXJyb3IoKSB3aXRoIGEgdGhpcyBvYmplY3QgZGlmZmVyZW50IGZyb20gUmVhZGFibGVCeXRlU3Ry
ZWFtQ29udHJvbGxlciBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3IiKTsKIApAQCAtMzQsNyArMzQs
NyBAQCB0ZXN0KGZ1bmN0aW9uKCkgewogICAgICAgICB0eXBlOiAiYnl0ZXMiCiAgICAgfSk7CiAK
LSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoIkNhbiBvbmx5IGNhbGwgUmVhZGFibGVC
eXRlU3RyZWFtQ29udHJvbGxlci5jbG9zZSBvbiBpbnN0YW5jZXMgb2YgUmVhZGFibGVCeXRlU3Ry
ZWFtQ29udHJvbGxlciIpLAorICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLAogICAgICAg
ICBmdW5jdGlvbigpIHsgY29udHJvbGxlci5jbG9zZS5hcHBseShycyk7IH0pOwogfSwgIkNhbGxp
bmcgY2xvc2UoKSB3aXRoIGEgdGhpcyBvYmplY3QgZGlmZmVyZW50IGZyb20gUmVhZGFibGVCeXRl
U3RyZWFtQ29udHJvbGxlciBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3IiKTsKIApAQCAtNDgsNyAr
NDgsNyBAQCB0ZXN0KGZ1bmN0aW9uKCkgewogICAgICAgICB0eXBlOiAiYnl0ZXMiCiAgICAgfSk7
CiAKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoIkNhbiBvbmx5IGNhbGwgUmVhZGFi
bGVCeXRlU3RyZWFtQ29udHJvbGxlci5lbnF1ZXVlIG9uIGluc3RhbmNlcyBvZiBSZWFkYWJsZUJ5
dGVTdHJlYW1Db250cm9sbGVyIiksCisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsCiAg
ICAgICAgIGZ1bmN0aW9uKCkgeyBjb250cm9sbGVyLmVucXVldWUuYXBwbHkocnMsIG5ldyBJbnQ4
QXJyYXkoMSkpOyB9KTsKIH0sICJDYWxsaW5nIGVucXVldWUoKSB3aXRoIGEgdGhpcyBvYmplY3Qg
ZGlmZmVyZW50IGZyb20gUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlciBzaG91bGQgdGhyb3cg
YSBUeXBlRXJyb3IiKTsKIApAQCAtNjUsNyArNjUsNyBAQCB0ZXN0KGZ1bmN0aW9uKCkgewogICAg
IGNvbnRyb2xsZXIuZW5xdWV1ZShuZXcgSW50OEFycmF5KDIpKTsKICAgICBjb250cm9sbGVyLmNs
b3NlKCk7CiAKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoIlJlYWRhYmxlQnl0ZVN0
cmVhbUNvbnRyb2xsZXIgaXMgcmVxdWVzdGVkIHRvIGNsb3NlIiksCisgICAgYXNzZXJ0X3Rocm93
c19qcyhUeXBlRXJyb3IsCiAgICAgICAgIGZ1bmN0aW9uKCkgeyBjb250cm9sbGVyLmVucXVldWUo
bmV3IEludDhBcnJheSgxKSk7IH0pOwogfSwgIkNhbGxpbmcgZW5xdWV1ZSgpIHdoZW4gY2xvc2Ug
aGFzIGJlZW4gcmVxdWVzdGVkIGJ1dCBub3QgeWV0IHBlcmZvcm1lZCBzaG91bGQgdGhyb3cgYSBU
eXBlRXJyb3IiKTsKIApAQCAtODAsNyArODAsNyBAQCB0ZXN0KGZ1bmN0aW9uKCkgewogICAgIH0p
OwogICAgIGNvbnRyb2xsZXIuY2xvc2UoKTsKIAotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVF
cnJvcigiUmVhZGFibGVTdHJlYW0gaXMgbm90IHJlYWRhYmxlIiksCisgICAgYXNzZXJ0X3Rocm93
c19qcyhUeXBlRXJyb3IsCiAgICAgICAgIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgY29udHJv
bGxlci5lbnF1ZXVlKG5ldyBJbnQ4QXJyYXkoMSkpOwogICAgICAgICB9KTsKQEAgLTk4LDcgKzk4
LDcgQEAgdGVzdChmdW5jdGlvbigpIHsKIAogICAgIGNvbnN0IGludmFsaWRDaHVuayA9IGZ1bmN0
aW9uKCkge307CiAKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoIlByb3ZpZGVkIGNo
dW5rIGlzIG5vdCBhbiBvYmplY3QiKSwKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwK
ICAgICAgICAgZnVuY3Rpb24oKSB7IGNvbnRyb2xsZXIuZW5xdWV1ZShpbnZhbGlkQ2h1bmspOyB9
KTsKIH0sICJDYWxsaW5nIGVucXVldWUoKSB3aXRoIGEgY2h1bmsgdGhhdCBpcyBub3QgYW4gb2Jq
ZWN0IHNob3VsZCB0cmhvdyBhIFR5cGVFcnJvciIpOwogCkBAIC0xMTQsNyArMTE0LDcgQEAgdGVz
dChmdW5jdGlvbigpIHsKIAogICAgIGNvbnN0IGludmFsaWRDaHVuayA9IHt9OwogCi0gICAgYXNz
ZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCJQcm92aWRlZCBjaHVuayBpcyBub3QgYW4gb2JqZWN0
IiksCisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsCiAgICAgICAgIGZ1bmN0aW9uKCkg
eyBjb250cm9sbGVyLmVucXVldWUoaW52YWxpZENodW5rKTsgfSk7CiB9LCAiQ2FsbGluZyBlbnF1
ZXVlKCkgd2l0aCBhIGNodW5rIHRoYXQgaXMgbm90IGFuIEFycmF5QnVmZmVyVmlldyBzaG91bGQg
dGhyb3cgYSBUeXBlRXJyb3IiKTsKIApAQCAtMTI4LDcgKzEyOCw3IEBAIHRlc3QoZnVuY3Rpb24o
KSB7CiAgICAgICAgIHR5cGU6ICJieXRlcyIKICAgICB9KTsKIAotICAgIGFzc2VydF90aHJvd3Mo
bmV3IFR5cGVFcnJvcigiUmVhZGFibGVTdHJlYW0gaXMgbm90IHJlYWRhYmxlIiksCisgICAgYXNz
ZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsCiAgICAgICAgIGZ1bmN0aW9uKCkgewogICAgICAgICAg
ICAgY29udHJvbGxlci5jbG9zZSgpOwogICAgICAgICAgICAgY29udHJvbGxlci5lcnJvcigpOwpA
QCAtMTQ1LDcgKzE0NSw3IEBAIHRlc3QoZnVuY3Rpb24oKSB7CiAgICAgICAgIHR5cGU6ICJieXRl
cyIKICAgICB9KTsKIAotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigiUmVhZGFibGVT
dHJlYW0gaXMgbm90IHJlYWRhYmxlIiksCisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3Is
CiAgICAgICAgIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgY29udHJvbGxlci5lcnJvcigpOwog
ICAgICAgICAgICAgY29udHJvbGxlci5lcnJvcigpOwpAQCAtMTYyLDcgKzE2Miw3IEBAIHRlc3Qo
ZnVuY3Rpb24oKSB7CiAgICAgICAgIHR5cGU6ICJieXRlcyIKICAgICB9KTsKIAotICAgIGFzc2Vy
dF90aHJvd3MobmV3IFR5cGVFcnJvcigiQ2xvc2UgaGFzIGFscmVhZHkgYmVlbiByZXF1ZXN0ZWQi
KSwKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwKICAgICAgICAgZnVuY3Rpb24oKSB7
CiAgICAgICAgICAgICBjb250cm9sbGVyLmNsb3NlKCk7CiAgICAgICAgICAgICBjb250cm9sbGVy
LmNsb3NlKCk7CkBAIC0xNzksNyArMTc5LDcgQEAgdGVzdChmdW5jdGlvbigpIHsKICAgICAgICAg
dHlwZTogImJ5dGVzIgogICAgIH0pOwogCi0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9y
KCJSZWFkYWJsZVN0cmVhbSBpcyBub3QgcmVhZGFibGUiKSwKKyAgICBhc3NlcnRfdGhyb3dzX2pz
KFR5cGVFcnJvciwKICAgICAgICAgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICBjb250cm9sbGVy
LmVycm9yKCk7CiAgICAgICAgICAgICBjb250cm9sbGVyLmNsb3NlKCk7CkBAIC0xOTgsNyArMTk4
LDcgQEAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHRlc3QpIHsKICAgICBjb25zdCBteUVycm9yID0g
bmV3IEVycm9yKCJteSBlcnJvciIpOwogICAgIGNvbnRyb2xsZXIuZXJyb3IobXlFcnJvcik7CiAK
LSAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHRlc3QsIG15RXJyb3IsIHJzLmdldFJlYWRlcigp
LnJlYWQoKSk7CisgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHRlc3QsIG15RXJy
b3IsIHJzLmdldFJlYWRlcigpLnJlYWQoKSk7CiB9LCAiQ2FsbGluZyByZWFkKCkgb24gYSByZWFk
ZXIgYXNzb2NpYXRlZCB0byBhIGNvbnRyb2xsZXIgdGhhdCBoYXMgYmVlbiBlcnJvcmVkIHNob3Vs
ZCBmYWlsIHdpdGggcHJvdmlkZWQgZXJyb3IiKTsKIAogcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKCkg
ewpAQCAtMjM0LDcgKzIzNCw3IEBAIHByb21pc2VfdGVzdChmdW5jdGlvbih0ZXN0KSB7CiAgICAg
bGV0IHJlYWRpbmdQcm9taXNlID0gcnMuZ2V0UmVhZGVyKCkucmVhZCgpOwogICAgIGNvbnRyb2xs
ZXIuZXJyb3IobXlFcnJvcik7CiAKLSAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHRlc3QsIG15
RXJyb3IsIHJlYWRpbmdQcm9taXNlKTsKKyAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0
bHkodGVzdCwgbXlFcnJvciwgcmVhZGluZ1Byb21pc2UpOwogfSwgIlBlbmRpbmcgcmVhZGluZyBw
cm9taXNlIHNob3VsZCBiZSByZWplY3RlZCBpZiBjb250cm9sbGVyIGlzIGVycm9yZWQgKGNhc2Ug
d2hlcmUgYXV0b0FsbG9jYXRlQ2h1bmtTaXplIGlzIHVuZGVmaW5lZCkiKTsKIAogcHJvbWlzZV90
ZXN0KGZ1bmN0aW9uKHRlc3QpIHsKQEAgLTI1Miw3ICsyNTIsNyBAQCBwcm9taXNlX3Rlc3QoZnVu
Y3Rpb24odGVzdCkgewogICAgIGxldCByZWFkaW5nUHJvbWlzZSA9IHJzLmdldFJlYWRlcigpLnJl
YWQoKTsKICAgICBjb250cm9sbGVyLmVycm9yKG15RXJyb3IpOwogCi0gICAgcmV0dXJuIHByb21p
c2VfcmVqZWN0cyh0ZXN0LCBteUVycm9yLCByZWFkaW5nUHJvbWlzZSk7CisgICAgcmV0dXJuIHBy
b21pc2VfcmVqZWN0c19leGFjdGx5KHRlc3QsIG15RXJyb3IsIHJlYWRpbmdQcm9taXNlKTsKIH0s
ICJQZW5kaW5nIHJlYWRpbmcgcHJvbWlzZSBzaG91bGQgYmUgcmVqZWN0ZWQgaWYgY29udHJvbGxl
ciBpcyBlcnJvcmVkIChjYXNlIHdoZXJlIGF1dG9BbGxvY2F0ZUNodW5rU2l6ZSBpcyBzcGVjaWZp
ZWQpIik7CiAKIHByb21pc2VfdGVzdChmdW5jdGlvbigpIHsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtLWJ5b2ItcmVhZGVyLmpzIGIvTGF5b3V0VGVzdHMv
c3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tYnlvYi1yZWFkZXIuanMKaW5kZXggYTk3MTlmN2U4MTRm
ZWQyNjAzYjBjNzg4ZWY3NTc4NjljODMwYzMzZC4uYjA4MjM1ZmU1ZmJkM2Y3MTgwOGYzYWU2ODU2
ZWMwNGYwYTMxMDVjYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1z
dHJlYW0tYnlvYi1yZWFkZXIuanMKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1z
dHJlYW0tYnlvYi1yZWFkZXIuanMKQEAgLTE0LDE0ICsxNCwxNCBAQCB0ZXN0KGZ1bmN0aW9uKCkg
ewogdGVzdChmdW5jdGlvbigpIHsKICAgICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgp
OwogICAgIGNvbnN0IHRtcCA9IDEyOwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigi
Q2FuIG9ubHkgY2FsbCBSZWFkYWJsZVN0cmVhbS5nZXRSZWFkZXIgb24gaW5zdGFuY2VzIG9mIFJl
YWRhYmxlU3RyZWFtIiksCisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsCiAgICAgICAg
IGZ1bmN0aW9uKCkgeyBycy5nZXRSZWFkZXIuYXBwbHkodG1wKTsgfSk7CiB9LCAiQ2FsbGluZyBn
ZXRSZWFkZXIoKSB3aXRoIGEgdGhpcyBvYmplY3QgZGlmZmVyZW50IGZyb20gUmVhZGFibGVTdHJl
YW0gc2hvdWxkIHRocm93IGEgVHlwZUVycm9yIik7CiAKIHRlc3QoZnVuY3Rpb24oKSB7CiAgICAg
Y29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oKTsKIAotICAgIGFzc2VydF90aHJvd3MobmV3
IFR5cGVFcnJvcigiUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyIG5lZWRzIGEgUmVhZGFibGVCeXRl
U3RyZWFtQ29udHJvbGxlciIpLAorICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLAogICAg
ICAgICBmdW5jdGlvbigpIHsgcnMuZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOyB9KTsKIH0s
ICJDYWxsaW5nIGdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KSB3aXRoIGEgUmVhZGFibGVTdHJl
YW0gd2hvc2UgY29udHJvbGxlciBpcyBhIFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIg
c2hvdWxkIHRocm93IGEgVHlwZUVycm9yIik7CiAKQEAgLTI5LDkgKzI5LDcgQEAgcHJvbWlzZV90
ZXN0KGZ1bmN0aW9uKHRlc3QpIHsKICAgICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7
IHR5cGU6ICdieXRlcycgfSk7CiAgICAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKHsgbW9k
ZTogJ2J5b2InIH0pOwogICAgIGxldCBycCA9IHJlYWRlci5jYW5jZWwuYXBwbHkocnMpOwotICAg
IGNvbnN0IG15RXJyb3I9IG5ldyBUeXBlRXJyb3IoIkNhbiBvbmx5IGNhbGwgUmVhZGFibGVTdHJl
YW1CWU9CUmVhZGVyLmNhbmNlbCgpIG9uIGluc3RhbmNlcyBvZiBSZWFkYWJsZVN0cmVhbUJZT0JS
ZWFkZXIiKTsKLQotICAgIHJldHVybiBwcm9taXNlX3JlamVjdHModGVzdCwgbXlFcnJvciwgcnAp
OworICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNfanModGVzdCwgVHlwZUVycm9yLCBycCk7CiB9
LCAiQ2FsbGluZyBSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIuY2FuY2VsKCkgd2l0aCBhIHRoaXMg
b2JqZWN0IGRpZmZlcmVudCBmcm9tIFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlciBzaG91bGQgYmUg
cmVqZWN0ZWQiKTsKIAogcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHRlc3QpIHsKQEAgLTQ5LDcgKzQ3
LDcgQEAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHRlc3QpIHsKICAgICBjb250cm9sbGVyLmVycm9y
KG15RXJyb3IpOwogICAgIGxldCBycCA9IHJlYWRlci5jYW5jZWwoIlNhbXBsZSByZWFzb24iKTsK
IAotICAgIHJldHVybiBwcm9taXNlX3JlamVjdHModGVzdCwgbXlFcnJvciwgcnApOworICAgIHJl
dHVybiBwcm9taXNlX3JlamVjdHNfZXhhY3RseSh0ZXN0LCBteUVycm9yLCBycCk7CiB9LCAiQ2Fs
bGluZyBSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIuY2FuY2VsKCkgb24gYSBSZWFkYWJsZVN0cmVh
bSB0aGF0IGhhcyBiZWVuIGVycm9yZWQgc2hvdWxkIHJlc3VsdCBpbiBhIHByb21pc2UgcmVqZWN0
ZWQgd2l0aCB0aGUgc2FtZSBlcnJvciIpOwogCiBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odGVzdCkg
ewpAQCAtMTI2LDcgKzEyNCw3IEBAIHByb21pc2VfdGVzdChmdW5jdGlvbih0ZXN0KSB7CiAgICAg
Y29uc3QgbXlFcnJvciA9IG5ldyBUeXBlRXJyb3IoIlNhbXBsZSBlcnJvciIpOwogICAgIGNvbnRy
b2xsZXIuZXJyb3IobXlFcnJvcik7CiAKLSAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHRlc3Qs
IG15RXJyb3IsIHJlYWRlci5jbG9zZWQpOworICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZXhh
Y3RseSh0ZXN0LCBteUVycm9yLCByZWFkZXIuY2xvc2VkKTsKIH0sICJJZiBjb250cm9sbGVyIGlz
IGVycm9yZWQgYWZ0ZXIgUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyIGNyZWF0aW9uLCBSZWFkYWJs
ZVN0cmVhbUJZT0JSZWFkZXIuY2xvc2VkIHNob3VsZCBiZSBhIHByb21pc2UgcmVqZWN0ZWQgd2l0
aCB0aGUgc2FtZSBlcnJvciIpOwogCiBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odGVzdCkgewpAQCAt
MTQzLDEzICsxNDEsMTMgQEAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHRlc3QpIHsKICAgICBjb250
cm9sbGVyLmVycm9yKG15RXJyb3IpOwogICAgIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcih7
IG1vZGU6ICdieW9iJyB9KTsKIAotICAgIHJldHVybiBwcm9taXNlX3JlamVjdHModGVzdCwgbXlF
cnJvciwgcmVhZGVyLmNsb3NlZCk7CisgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5
KHRlc3QsIG15RXJyb3IsIHJlYWRlci5jbG9zZWQpOwogfSwgIklmIGNvbnRyb2xsZXIgaGFzIGFs
cmVhZHkgYmVlbiBlcnJvcmVkIHdoZW4gUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyIGlzIGNyZWF0
ZWQsIFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlci5jbG9zZWQgc2hvdWxkIGJlIGEgcHJvbWlzZSBy
ZWplY3RlZCB3aXRoIHRoZSBzYW1lIGVycm9yIik7CiAKIHRlc3QoZnVuY3Rpb24oKSB7CiAgICAg
Y29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeyB0eXBlOiAnYnl0ZXMnIH0pOwogICAgIGNv
bnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsKLSAgICBhc3NlcnRf
dGhyb3dzKG5ldyBUeXBlRXJyb3IoIkNhbiBvbmx5IGNhbGwgUmVhZGFibGVTdHJlYW1CWU9CUmVh
ZGVyLnJlbGVhc2VMb2NrKCkgb24gaW5zdGFuY2VzIG9mIFJlYWRhYmxlU3RyZWFtQllPQlJlYWRl
ciIpLAorICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLAogICAgICAgICBmdW5jdGlvbigp
IHsgcmVhZGVyLnJlbGVhc2VMb2NrLmFwcGx5KHJzKTsgfSk7CiB9LCAiQ2FsbGluZyBSZWFkYWJs
ZVN0cmVhbUJZT0JSZWFkZXIucmVsZWFzZUxvY2soKSB3aXRoIGEgdGhpcyBvYmplY3QgZGlmZmVy
ZW50IGZyb20gUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyIHNob3VsZCBiZSByZWplY3RlZCIpOwog
CkBAIC0xNjAsOSArMTU4LDcgQEAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHRlc3QpIHsKIAogICAg
IGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsKICAgICByZWFk
ZXIucmVsZWFzZUxvY2soKTsKLSAgICBjb25zdCBteUVycm9yID0gbmV3IFR5cGVFcnJvcigpOwot
Ci0gICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0ZXN0LCBteUVycm9yLCByZWFkZXIuY2xvc2Vk
KTsKKyAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2pzKHRlc3QsIFR5cGVFcnJvciwgcmVhZGVy
LmNsb3NlZCk7CiB9LCAiQ2FsbGluZyBSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIucmVsZWFzZUxv
Y2soKSBvbiBhIHN0cmVhbSB0aGF0IGlzIHJlYWRhYmxlIHNob3VsZCByZXN1bHQgaW4gUmVhZGFi
bGVTdHJlYW1CWU9CUmVhZGVyLmNsb3NlZCBwcm9taXNlIHRvIGJlIHJlamVjdGVkIHdpdGggYSBU
eXBlRXJyb3IiKTsKIAogcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHRlc3QpIHsKQEAgLTE3OCwxOCAr
MTc0LDE0IEBAIHByb21pc2VfdGVzdChmdW5jdGlvbih0ZXN0KSB7CiAgICAgY29uc3QgcmVhZGVy
ID0gcnMuZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOwogICAgIGNvbnRyb2xsZXIuY2xvc2Uo
KTsKICAgICByZWFkZXIucmVsZWFzZUxvY2soKTsKLSAgICBjb25zdCBteUVycm9yID0gbmV3IFR5
cGVFcnJvcigpOwotCi0gICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0ZXN0LCBteUVycm9yLCBy
ZWFkZXIuY2xvc2VkKTsKKyAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2pzKHRlc3QsIFR5cGVF
cnJvciwgcmVhZGVyLmNsb3NlZCk7CiB9LCAiQ2FsbGluZyBSZWFkYWJsZVN0cmVhbUJZT0JSZWFk
ZXIucmVsZWFzZUxvY2soKSBvbiBhIHN0cmVhbSB0aGF0IGlzIG5vdCByZWFkYWJsZSBzaG91bGQg
cmVzdWx0IGluIFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlci5jbG9zZWQgcHJvbWlzZSB0byBiZSBy
ZWplY3RlZCB3aXRoIGEgVHlwZUVycm9yIik7CiAKIHByb21pc2VfdGVzdChmdW5jdGlvbih0ZXN0
KSB7CiAgICAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeyB0eXBlOiAnYnl0ZXMnIH0p
OwogICAgIGNvbnN0IHJlYWRlciA9IHJzLmdldFJlYWRlcih7IG1vZGU6ICdieW9iJyB9KTsKICAg
ICBsZXQgcnAgPSByZWFkZXIucmVhZC5hcHBseShycyk7Ci0gICAgY29uc3QgbXlFcnJvcj0gbmV3
IFR5cGVFcnJvcigiQ2FuIG9ubHkgY2FsbCBSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIucmVhZCgp
IG9uIGluc3RhbmNlcyBvZiBSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIiKTsKLQotICAgIHJldHVy
biBwcm9taXNlX3JlamVjdHModGVzdCwgbXlFcnJvciwgcnApOworICAgIHJldHVybiBwcm9taXNl
X3JlamVjdHNfanModGVzdCwgVHlwZUVycm9yLCBycCk7CiB9LCAiQ2FsbGluZyBSZWFkYWJsZVN0
cmVhbUJZT0JSZWFkZXIucmVhZCgpIHdpdGggYSB0aGlzIG9iamVjdCBkaWZmZXJlbnQgZnJvbSBS
ZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIgc2hvdWxkIGJlIHJlamVjdGVkIik7CiAKIGRvbmUoKTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtLWJ5b2ItcmVx
dWVzdC5qcyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtLWJ5b2ItcmVxdWVz
dC5qcwppbmRleCBkNWE2ZjhlNzc4ZjdjMmQ0OWQzMmIxYjQ0MmE4Zjg4Yzc5MTkzZmIzLi4wMTll
Zjk3MDgyZmI0OTI2MDkxNzUyYTAwZjc0MTQ2NDE5N2EyZmQ4IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1ieW9iLXJlcXVlc3QuanMKKysrIGIvTGF5b3V0
VGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tYnlvYi1yZXF1ZXN0LmpzCkBAIC01Niw3ICs1
Niw3IEBAIHRlc3QoZnVuY3Rpb24oKSB7CiAgICAgcnMuZ2V0UmVhZGVyKCkucmVhZCgpOwogICAg
IGNvbnN0IGJ5b2JSZXEgPSBjb250cm9sbGVyLmJ5b2JSZXF1ZXN0OwogCi0gICAgYXNzZXJ0X3Ro
cm93cyhuZXcgVHlwZUVycm9yKCJDYW4gb25seSBjYWxsIFJlYWRhYmxlU3RyZWFtQllPQlJlcXVl
c3QucmVzcG9uZCBvbiBpbnN0YW5jZXMgb2YgUmVhZGFibGVTdHJlYW1CWU9CUmVxdWVzdCIpLAor
ICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLAogICAgICAgICBmdW5jdGlvbigpIHsgYnlv
YlJlcS5yZXNwb25kLmFwcGx5KHJzLCAxKTsgfSk7CiAKIH0sICJDYWxsaW5nIHJlc3BvbmQoKSB3
aXRoIGEgdGhpcyBvYmplY3QgZGlmZmVyZW50IGZyb20gUmVhZGFibGVTdHJlYW1CWU9CUmVxdWVz
dCBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3IiKTsKQEAgLTc1LDcgKzc1LDcgQEAgdGVzdChmdW5j
dGlvbigpIHsKICAgICBycy5nZXRSZWFkZXIoKS5yZWFkKCk7CiAgICAgY29uc3QgYnlvYlJlcSA9
IGNvbnRyb2xsZXIuYnlvYlJlcXVlc3Q7CiAKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBSYW5nZUVy
cm9yKCJieXRlc1dyaXR0ZW4gaGFzIGFuIGluY29ycmVjdCB2YWx1ZSIpLAorICAgIGFzc2VydF90
aHJvd3NfanMoUmFuZ2VFcnJvciwKICAgICAgICAgZnVuY3Rpb24oKSB7IGJ5b2JSZXEucmVzcG9u
ZCgtMSk7IH0pOwogfSwgIkNhbGxpbmcgcmVzcG9uZCgpIHdpdGggYSBuZWdhdGl2ZSBieXRlc1dy
aXR0ZW4gdmFsdWUgc2hvdWxkIHRocm93IGEgUmFuZ2VFcnJvciIpOwogCkBAIC05Myw3ICs5Myw3
IEBAIHRlc3QoZnVuY3Rpb24oKSB7CiAgICAgcnMuZ2V0UmVhZGVyKCkucmVhZCgpOwogICAgIGNv
bnN0IGJ5b2JSZXEgPSBjb250cm9sbGVyLmJ5b2JSZXF1ZXN0OwogCi0gICAgYXNzZXJ0X3Rocm93
cyhuZXcgUmFuZ2VFcnJvcigiYnl0ZXNXcml0dGVuIGhhcyBhbiBpbmNvcnJlY3QgdmFsdWUiKSwK
KyAgICBhc3NlcnRfdGhyb3dzX2pzKFJhbmdlRXJyb3IsCiAgICAgICAgIGZ1bmN0aW9uKCkgeyBi
eW9iUmVxLnJlc3BvbmQoImFiYyIpOyB9KTsKIH0sICJDYWxsaW5nIHJlc3BvbmQoKSB3aXRoIGEg
Ynl0ZXNXcml0dGVuIHZhbHVlIHdoaWNoIGlzIG5vdCBhIG51bWJlciBzaG91bGQgdGhyb3cgYSBS
YW5nZUVycm9yIik7CiAKQEAgLTExMSw3ICsxMTEsNyBAQCB0ZXN0KGZ1bmN0aW9uKCkgewogICAg
IHJzLmdldFJlYWRlcigpLnJlYWQoKTsKICAgICBjb25zdCBieW9iUmVxID0gY29udHJvbGxlci5i
eW9iUmVxdWVzdDsKIAotICAgIGFzc2VydF90aHJvd3MobmV3IFJhbmdlRXJyb3IoImJ5dGVzV3Jp
dHRlbiBoYXMgYW4gaW5jb3JyZWN0IHZhbHVlIiksCisgICAgYXNzZXJ0X3Rocm93c19qcyhSYW5n
ZUVycm9yLAogICAgICAgICBmdW5jdGlvbigpIHsgYnlvYlJlcS5yZXNwb25kKE51bWJlci5QT1NJ
VElWRV9JTkZJTklUWSk7IH0pOwogfSwgIkNhbGxpbmcgcmVzcG9uZCgpIHdpdGggYSBwb3NpdGl2
ZSBpbmZpbml0eSBieXRlc1dyaXR0ZW4gdmFsdWUgc2hvdWxkIHRocm93IGEgUmFuZ2VFcnJvciIp
OwogCkBAIC0xMzAsNyArMTMwLDcgQEAgdGVzdChmdW5jdGlvbigpIHsKICAgICBjb25zdCBieW9i
UmVxID0gY29udHJvbGxlci5ieW9iUmVxdWVzdDsKICAgICBjb250cm9sbGVyLmNsb3NlKCk7CiAK
LSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoImJ5dGVzV3JpdHRlbiBpcyBkaWZmZXJl
bnQgZnJvbSAwIGV2ZW4gdGhvdWdoIHN0cmVhbSBpcyBjbG9zZWQiKSwKKyAgICBhc3NlcnRfdGhy
b3dzX2pzKFR5cGVFcnJvciwKICAgICAgICAgZnVuY3Rpb24oKSB7IGJ5b2JSZXEucmVzcG9uZCgx
KTsgfSk7CiB9LCAiQ2FsbGluZyByZXNwb25kKCkgd2l0aCBhIGJ5dGVzV3JpdHRlbiB2YWx1ZSBk
aWZmZXJlbnQgZnJvbSAwIHdoZW4gc3RyZWFtIGlzIGNsb3NlZCBzaG91bGQgdGhyb3cgYSBUeXBl
RXJyb3IiKTsKIApAQCAtMTY4LDcgKzE2OCw3IEBAIHRlc3QoZnVuY3Rpb24oKSB7CiAKICAgICBy
cy5nZXRSZWFkZXIoKS5yZWFkKCk7CiAgICAgY29uc3QgYnlvYlJlcSA9IGNvbnRyb2xsZXIuYnlv
YlJlcXVlc3Q7Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgUmFuZ2VFcnJvcigiYnl0ZXNXcml0dGVu
IHZhbHVlIGlzIHRvbyBncmVhdCIpLAorICAgIGFzc2VydF90aHJvd3NfanMoUmFuZ2VFcnJvciwK
ICAgICAgICAgZnVuY3Rpb24oKSB7IGJ5b2JSZXEucmVzcG9uZCgxNyk7IH0pOwogCiB9LCAiQ2Fs
bGluZyByZXNwb25kKCkgd2l0aCBhIGJ5dGVzV3JpdHRlbiB2YWx1ZSBncmVhdGVyIHRoYW4gYXV0
b0FsbG9jYXRlQ2h1bmtTaXplIHNob3VsZCBmYWlsIik7CkBAIC0yMTIsNyArMjEyLDcgQEAgdGVz
dChmdW5jdGlvbigpIHsKICAgICBycy5nZXRSZWFkZXIoKS5yZWFkKCk7CiAgICAgY29uc3QgYnlv
YlJlcSA9IGNvbnRyb2xsZXIuYnlvYlJlcXVlc3Q7CiAKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBU
eXBlRXJyb3IoIkNhbiBvbmx5IGNhbGwgUmVhZGFibGVTdHJlYW1CWU9CUmVxdWVzdC5yZXNwb25k
V2l0aE5ld1ZpZXcgb24gaW5zdGFuY2VzIG9mIFJlYWRhYmxlU3RyZWFtQllPQlJlcXVlc3QiKSwK
KyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwKICAgICAgICAgZnVuY3Rpb24oKSB7IGJ5
b2JSZXEucmVzcG9uZFdpdGhOZXdWaWV3LmFwcGx5KHJzLCBuZXcgVWludDhBcnJheSgxKSk7IH0p
OwogCiB9LCAiQ2FsbGluZyByZXNwb25kV2l0aE5ld1ZpZXcoKSB3aXRoIGEgdGhpcyBvYmplY3Qg
ZGlmZmVyZW50IGZyb20gUmVhZGFibGVTdHJlYW1CWU9CUmVxdWVzdCBzaG91bGQgdGhyb3cgYSBU
eXBlRXJyb3IiKTsKQEAgLTIzMSw3ICsyMzEsNyBAQCB0ZXN0KGZ1bmN0aW9uKCkgewogICAgIHJz
LmdldFJlYWRlcigpLnJlYWQoKTsKICAgICBjb25zdCBieW9iUmVxID0gY29udHJvbGxlci5ieW9i
UmVxdWVzdDsKIAotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigiUHJvdmlkZWQgdmll
dyBpcyBub3QgYW4gb2JqZWN0IiksCisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsCiAg
ICAgICAgIGZ1bmN0aW9uKCkgeyBieW9iUmVxLnJlc3BvbmRXaXRoTmV3VmlldyhmdW5jdGlvbigp
IHt9KTsgfSk7CiAKIH0sICJDYWxsaW5nIHJlc3BvbmRXaXRoTmV3VmlldygpIHdpdGggYW4gYXJn
dW1lbnQgdGhhdCBpcyBub3QgYW4gb2JqZWN0IHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvciIpOwpA
QCAtMjUwLDcgKzI1MCw3IEBAIHRlc3QoZnVuY3Rpb24oKSB7CiAgICAgcnMuZ2V0UmVhZGVyKCku
cmVhZCgpOwogICAgIGNvbnN0IGJ5b2JSZXEgPSBjb250cm9sbGVyLmJ5b2JSZXF1ZXN0OwogCi0g
ICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCJQcm92aWRlZCB2aWV3IGlzIG5vdCBhbiBB
cnJheUJ1ZmZlclZpZXciKSwKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwKICAgICAg
ICAgZnVuY3Rpb24oKSB7IGJ5b2JSZXEucmVzcG9uZFdpdGhOZXdWaWV3KHt9KTsgfSk7CiAKIH0s
ICJDYWxsaW5nIHJlc3BvbmRXaXRoTmV3VmlldygpIHdpdGggYW4gYXJndW1lbnQgdGhhdCBpcyBu
b3QgYW4gQXJyYXlCdWZmZXJWaWV3IHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvciIpOwpAQCAtMjg3
LDEwICsyODcsNyBAQCBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odGVzdCkgewogICAgICAgICB9LAog
ICAgICAgICB0eXBlOiAiYnl0ZXMiCiAgICAgfSk7Ci0KLSAgICBjb25zdCBlcnJvciA9IG5ldyBS
YW5nZUVycm9yKCJJbnZhbGlkIHZhbHVlIGZvciB2aWV3LmJ5dGVMZW5ndGgiKTsKLQotICAgIHJl
dHVybiBwcm9taXNlX3JlamVjdHModGVzdCwgZXJyb3IsIHJzLmdldFJlYWRlcigpLnJlYWQoKSk7
CisgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19qcyh0ZXN0LCBSYW5nZUVycm9yLCBycy5nZXRS
ZWFkZXIoKS5yZWFkKCkpOwogfSwgIldoZW4gdXNpbmcgYXV0b0FsbG9jYXRlQ2h1bmtTaXplLCBj
YWxsaW5nIHJlc3BvbmRXaXRoTmV3VmlldygpIHNob3VsZCB0aHJvdyBhIFJhbmdlRXJyb3IgaWYg
dmlldy5ieXRlT2Zmc2V0IGlzIGRpZmZlcmVudCBmcm9tIDAiKTsKIAogcHJvbWlzZV90ZXN0KGZ1
bmN0aW9uKHRlc3QpIHsKQEAgLTMwNSwxMCArMzAyLDcgQEAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9u
KHRlc3QpIHsKICAgICAgICAgfSwKICAgICAgICAgdHlwZTogImJ5dGVzIgogICAgIH0pOwotCi0g
ICAgY29uc3QgZXJyb3IgPSBuZXcgUmFuZ2VFcnJvcigiSW52YWxpZCB2YWx1ZSBmb3Igdmlldy5i
eXRlT2Zmc2V0Iik7Ci0KLSAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHRlc3QsIGVycm9yLCBy
cy5nZXRSZWFkZXIoKS5yZWFkKCkpOworICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNfanModGVz
dCwgUmFuZ2VFcnJvciwgcnMuZ2V0UmVhZGVyKCkucmVhZCgpKTsKIH0sICJXaGVuIHVzaW5nIGF1
dG9BbGxvY2F0ZUNodW5rU2l6ZSwgY2FsbGluZyByZXNwb25kV2l0aE5ld1ZpZXcoKSBzaG91bGQg
dGhyb3cgYSBSYW5nZUVycm9yIGlmIHZpZXcuYnl0ZUxlbmd0aCBpcyBkaWZmZXJlbnQgZnJvbSBh
dXRvQWxsb2NhdGVDaHVua1NpemUiKTsKIAogZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tZ2V0UmVhZGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9z
dHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1nZXRSZWFkZXIuaHRtbAppbmRleCA2ZmM1ZTRmYjkyMDhh
MzlhZWZiYzk0MTU4MGNlMTgwZTdmMDM2MTI0Li42Yzk2MjJmN2E2OTdmYTg0NGI1MTY5OTMyYTg2
ZTI1ZTZjNzhlZDdhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0
cmVhbS1nZXRSZWFkZXIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0
cmVhbS1nZXRSZWFkZXIuaHRtbApAQCAtMTIsMTIgKzEyLDEyIEBAIHRlc3QoZnVuY3Rpb24oKSB7
CiAKIHRlc3QoZnVuY3Rpb24oKSB7CiAgICAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0o
KTsKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7IHJzLmdl
dFJlYWRlcih7bW9kZTogJ2J5b2InfSkgfSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJy
b3IsIGZ1bmN0aW9uKCkgeyBycy5nZXRSZWFkZXIoe21vZGU6ICdieW9iJ30pIH0pOwogfSwgImdl
dFJlYWRlcih7bW9kZTogJ2J5b2InfSkgc2hvdWxkIHJldHVybiBhIFR5cGVFcnJvciBhcyBCWU9C
IHJlYWRlciBpcyBub3QgeWV0IGltcGxlbWVudGVkIik7CiAKIHRlc3QoZnVuY3Rpb24oKSB7CiAg
ICAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oKTsKICAgICAvLyBBbnkgdmFsdWUgZGlm
ZmVyZW50IGZyb20gdW5kZWZpbmVkIGFuZCAnYnlvYicgc2hvdWxkIHRocm93IGEgVHlwZUVycm9y
LgotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsgcnMuZ2V0
UmVhZGVyKHttb2RlIDogJ2FNb2RlJ30pIH0pOworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVy
cm9yLCBmdW5jdGlvbigpIHsgcnMuZ2V0UmVhZGVyKHttb2RlIDogJ2FNb2RlJ30pIH0pOwogfSwg
ImdldFJlYWRlcih7bW9kZTogJ2FNb2RlJ30pIHNob3VsZCByZXR1cm4gYSBUeXBlRXJyb3IgYXMg
J2FNb2RlJyBpcyBkaWZmZXJlbnQgZnJvbSB1bmRlZmluZWQgYW5kICdieW9iJyIpOwogPC9zY3Jp
cHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRh
dGlvbi9iYWQtc3RyYXRlZ2llcy5odG1sIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2Ut
aW1wbGVtZW50YXRpb24vYmFkLXN0cmF0ZWdpZXMuaHRtbAppbmRleCA5MDhiOGFjY2UzNGM3MWMz
YzBmOTM1MmFkMmJhODYyOWQyNWNlOTM4Li5lMWU5NTNlMTQxYWU5ZWY0YzM5ZmU2NmViNDA5OGYz
NDg5YTM5YWU2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBs
ZW1lbnRhdGlvbi9iYWQtc3RyYXRlZ2llcy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMv
cmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2JhZC1zdHJhdGVnaWVzLmh0bWwKQEAgLTcsNyArNyw3
IEBACiB0ZXN0KGZ1bmN0aW9uKCkgewogICAgIHZhciB0aGVFcnJvciA9IG5ldyBFcnJvcignYSB1
bmlxdWUgc3RyaW5nJyk7CiAKLSAgICBhc3NlcnRfdGhyb3dzKHRoZUVycm9yLCBmdW5jdGlvbigp
IHsKKyAgICBhc3NlcnRfdGhyb3dzX2V4YWN0bHkodGhlRXJyb3IsIGZ1bmN0aW9uKCkgewogICAg
ICAgICBuZXcgV3JpdGFibGVTdHJlYW0oe30sIHsKICAgICAgICAgICAgIGdldCBzaXplKCkgewog
ICAgICAgICAgICAgICAgIHRocm93IHRoZUVycm9yOwpAQCAtNjQsNyArNjQsNyBAQCB0ZXN0Mi5z
dGVwKGZ1bmN0aW9uKCkgewogICAgICAgICB9KTsKIAogICAgICAgICB2YXIgd3JpdGVGdW5jdGlv
biA9IGZ1bmN0aW9uKGksIHIpIHsKLSAgICAgICAgICAgIGFzc2VydF90aHJvd3MobmV3IFJhbmdl
RXJyb3IoKSwgZnVuY3Rpb24oKSB7IHRocm93IHI7IH0sICd3cml0ZSBzaG91bGQgcmVqZWN0IHdp
dGggYSBSYW5nZUVycm9yIGZvciAnICsgZWxlbWVudHNbaV0pOworICAgICAgICAgICAgYXNzZXJ0
X3Rocm93c19qcyhSYW5nZUVycm9yLCBmdW5jdGlvbigpIHsgdGhyb3cgcjsgfSwgJ3dyaXRlIHNo
b3VsZCByZWplY3Qgd2l0aCBhIFJhbmdlRXJyb3IgZm9yICcgKyBlbGVtZW50c1tpXSk7CiAgICAg
ICAgICAgICB0aGVFcnJvcltpXSA9IHI7CiAgICAgICAgIH07CiAgICAgICAgIHdzLndyaXRlKCdh
JykudGhlbigKQEAgLTg2LDcgKzg2LDcgQEAgdGVzdDIuc3RlcChmdW5jdGlvbigpIHsKIHRlc3Qo
ZnVuY3Rpb24oKSB7CiAgICAgdmFyIHRoZUVycm9yID0gbmV3IEVycm9yKCdhIHVuaXF1ZSBzdHJp
bmcnKTsKIAotICAgIGFzc2VydF90aHJvd3ModGhlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgIGFz
c2VydF90aHJvd3NfZXhhY3RseSh0aGVFcnJvciwgZnVuY3Rpb24oKSB7CiAgICAgICAgIG5ldyBX
cml0YWJsZVN0cmVhbSh7fSwgewogICAgICAgICAgICAgc2l6ZTogZnVuY3Rpb24oKSB7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIDE7CkBAIC0xMDAsNyArMTAwLDcgQEAgdGVzdChmdW5jdGlvbigp
IHsKIAogdGVzdChmdW5jdGlvbigpIHsKICAgICBmb3IgKHZhciBoaWdoV2F0ZXJNYXJrIG9mIFst
MSwgLUluZmluaXR5XSkgewotICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBSYW5nZUVycm9yKCks
IGZ1bmN0aW9uKCkgeworICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFJhbmdlRXJyb3IsIGZ1bmN0
aW9uKCkgewogICAgICAgICAgICAgbmV3IFdyaXRhYmxlU3RyZWFtKHt9LCB7CiAgICAgICAgICAg
ICAgICAgc2l6ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwpA
QCAtMTExLDcgKzExMSw3IEBAIHRlc3QoZnVuY3Rpb24oKSB7CiAgICAgfQogCiAgICAgZm9yICh2
YXIgaGlnaFdhdGVyTWFyayBvZiBbTmFOLCAnZm9vJywge31dKSB7Ci0gICAgICAgIGFzc2VydF90
aHJvd3MobmV3IFJhbmdlRXJyb3IoKSwgZnVuY3Rpb24oKSB7CisgICAgICAgIGFzc2VydF90aHJv
d3NfanMoUmFuZ2VFcnJvciwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICBuZXcgV3JpdGFibGVT
dHJlYW0oe30sIHsKICAgICAgICAgICAgICAgICBzaXplOiBmdW5jdGlvbigpIHsKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIDE7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3Jl
ZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9iYWQtdW5kZXJseWluZy1zaW5rcy5odG1sIGIvTGF5b3V0
VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vYmFkLXVuZGVybHlpbmctc2lu
a3MuaHRtbAppbmRleCA5YmU2ZmZjZDUwOGQzY2RlZjM2YjdjYjAxODI2NDU5ODhmZDVmMmFjLi4z
NTI3YTM4NmM0NWQ4MWQ0NTJiMDBjMzk1ZWRlNjliMWMzOTRmM2I5IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9iYWQtdW5kZXJseWluZy1z
aW5rcy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0
aW9uL2JhZC11bmRlcmx5aW5nLXNpbmtzLmh0bWwKQEAgLTgsNyArOCw3IEBACiB0ZXN0KGZ1bmN0
aW9uKCkgewogICAgIHZhciB0aGVFcnJvciA9IG5ldyBFcnJvcignYSB1bmlxdWUgc3RyaW5nJyk7
CiAKLSAgICBhc3NlcnRfdGhyb3dzKHRoZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICBhc3NlcnRf
dGhyb3dzX2V4YWN0bHkodGhlRXJyb3IsIGZ1bmN0aW9uKCkgewogICAgICAgICBuZXcgV3JpdGFi
bGVTdHJlYW0oewogICAgICAgICAgICAgZ2V0IHN0YXJ0KCkgewogICAgICAgICAgICAgICAgIHRo
cm93IHRoZUVycm9yOwpAQCAtMjAsNyArMjAsNyBAQCB0ZXN0KGZ1bmN0aW9uKCkgewogdGVzdChm
dW5jdGlvbigpIHsKICAgICB2YXIgdGhlRXJyb3IgPSBuZXcgRXJyb3IoJ2EgdW5pcXVlIHN0cmlu
ZycpOwogCi0gICAgYXNzZXJ0X3Rocm93cyh0aGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgYXNz
ZXJ0X3Rocm93c19leGFjdGx5KHRoZUVycm9yLCBmdW5jdGlvbigpIHsKICAgICAgICAgbmV3IFdy
aXRhYmxlU3RyZWFtKHsKICAgICAgICAgICAgIHN0YXJ0OiBmdW5jdGlvbigpIHsKICAgICAgICAg
ICAgICAgICB0aHJvdyB0aGVFcnJvcjsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMv
cmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3RyYW5zZm9ybS1zdHJlYW0tZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vdHJhbnNmb3JtLXN0
cmVhbS1leHBlY3RlZC50eHQKaW5kZXggMThjYTBiNWM2ZjEyMDJkNmY2M2Q4ZmFlOTczMTJmNDE0
NTBjMDYwZS4uMTIxYzI0ZjhlZDFiMDlkM2ZmNzMyYTBmMzg5ZTI3YzE4Y2I5ZTBiMSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vdHJhbnNm
b3JtLXN0cmVhbS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVu
Y2UtaW1wbGVtZW50YXRpb24vdHJhbnNmb3JtLXN0cmVhbS1leHBlY3RlZC50eHQKQEAgLTEsNiAr
MSw2IEBACiAKIFBBU1MgVHJhbnNmb3JtU3RyZWFtIGNhbiBiZSBjb25zdHJ1Y3RlZCB3aXRoIGEg
dHJhbnNmb3JtIGZ1bmN0aW9uCi1GQUlMIFRyYW5zZm9ybVN0cmVhbSBjYW5ub3QgYmUgY29uc3Ry
dWN0ZWQgd2l0aCBubyB0cmFuc2Zvcm0gZnVuY3Rpb24gYXNzZXJ0X3Rocm93czogVHJhbnNmb3Jt
U3RyZWFtIGNhbm5vdCBiZSBjb25zdHJ1Y3RlZCB3aXRoIG5vIGFyZ3VtZW50cyBmdW5jdGlvbiAi
ZnVuY3Rpb24gKCkgeyBuZXcgVHJhbnNmb3JtU3RyZWFtKCk7IH0iIGRpZCBub3QgdGhyb3cKK0ZB
SUwgVHJhbnNmb3JtU3RyZWFtIGNhbm5vdCBiZSBjb25zdHJ1Y3RlZCB3aXRoIG5vIHRyYW5zZm9y
bSBmdW5jdGlvbiBhc3NlcnRfdGhyb3dzX2pzOiBUcmFuc2Zvcm1TdHJlYW0gY2Fubm90IGJlIGNv
bnN0cnVjdGVkIHdpdGggbm8gYXJndW1lbnRzIGZ1bmN0aW9uICJmdW5jdGlvbiAoKSB7IG5ldyBU
cmFuc2Zvcm1TdHJlYW0oKTsgfSIgZGlkIG5vdCB0aHJvdwogRkFJTCBUcmFuc2Zvcm1TdHJlYW0g
aW5zdGFuY2VzIG11c3QgaGF2ZSB3cml0YWJsZSBhbmQgcmVhZGFibGUgcHJvcGVydGllcyBvZiB0
aGUgY29ycmVjdCB0eXBlcyBhc3NlcnRfdHJ1ZTogaXQgaGFzIGEgd3JpdGFibGUgcHJvcGVydHkg
ZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKIEZBSUwgVHJhbnNmb3JtU3RyZWFtIHdyaXRhYmxlIHN0
YXJ0cyBpbiB0aGUgd3JpdGFibGUgc3RhdGUgYXNzZXJ0X2VxdWFsczogd3JpdGFibGUgc3RhcnRz
IHdyaXRhYmxlIGV4cGVjdGVkIChzdHJpbmcpICJ3cml0YWJsZSIgYnV0IGdvdCAodW5kZWZpbmVk
KSB1bmRlZmluZWQKIEZBSUwgUGFzcy10aHJvdWdoIHN5bmMgVHJhbnNmb3JtU3RyZWFtOiBjYW4g
cmVhZCBmcm9tIHJlYWRhYmxlIHdoYXQgaXMgcHV0IGludG8gd3JpdGFibGUgdHMud3JpdGFibGUu
d3JpdGUgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAndHMud3JpdGFibGUud3JpdGUoJ2EnKScsICd0
cy53cml0YWJsZS53cml0ZScgaXMgdW5kZWZpbmVkKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vdHJhbnNmb3JtLXN0cmVhbS5odG1sIGIv
TGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vdHJhbnNmb3JtLXN0
cmVhbS5odG1sCmluZGV4IDNkOTkyZGRmODNhZjExNWI3MjJmZGQ0N2JkOWIwMWU0ZWM3ODgwNGIu
LjY3OTUwYTI4NTk3MjVjZjc1YjM0MWRkMGYyZjg0NTA4MzIxYTkyMTMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3RyYW5zZm9ybS1zdHJl
YW0uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlv
bi90cmFuc2Zvcm0tc3RyZWFtLmh0bWwKQEAgLTEwLDggKzEwLDggQEAgdGVzdChmdW5jdGlvbigp
IHsKIH0sICdUcmFuc2Zvcm1TdHJlYW0gY2FuIGJlIGNvbnN0cnVjdGVkIHdpdGggYSB0cmFuc2Zv
cm0gZnVuY3Rpb24nKTsKIAogdGVzdChmdW5jdGlvbigpIHsKLSAgICBhc3NlcnRfdGhyb3dzKG5l
dyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7IG5ldyBUcmFuc2Zvcm1TdHJlYW0oKTsgfSwgJ1Ry
YW5zZm9ybVN0cmVhbSBjYW5ub3QgYmUgY29uc3RydWN0ZWQgd2l0aCBubyBhcmd1bWVudHMnKTsK
LSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7IG5ldyBUcmFu
c2Zvcm1TdHJlYW0oe30pOyB9LCAnVHJhbnNmb3JtU3RyZWFtIGNhbm5vdCBiZSBjb25zdHJ1Y3Rl
ZCB3aXRoIGFuIGVtcHR5IG9iamVjdCcpOworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9y
LCBmdW5jdGlvbigpIHsgbmV3IFRyYW5zZm9ybVN0cmVhbSgpOyB9LCAnVHJhbnNmb3JtU3RyZWFt
IGNhbm5vdCBiZSBjb25zdHJ1Y3RlZCB3aXRoIG5vIGFyZ3VtZW50cycpOworICAgIGFzc2VydF90
aHJvd3NfanMoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsgbmV3IFRyYW5zZm9ybVN0cmVhbSh7fSk7
IH0sICdUcmFuc2Zvcm1TdHJlYW0gY2Fubm90IGJlIGNvbnN0cnVjdGVkIHdpdGggYW4gZW1wdHkg
b2JqZWN0Jyk7CiB9LCAnVHJhbnNmb3JtU3RyZWFtIGNhbm5vdCBiZSBjb25zdHJ1Y3RlZCB3aXRo
IG5vIHRyYW5zZm9ybSBmdW5jdGlvbicpOwogCiB0ZXN0KGZ1bmN0aW9uKCkgewpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViYW5pbWF0aW9ucy9hY2NlbGVyYXRlZC1hbmltYXRpb24tc2luZ2xl
LWtleWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJhbmltYXRpb25zL2FjY2VsZXJhdGVkLWFu
aW1hdGlvbi1zaW5nbGUta2V5ZnJhbWUuaHRtbAppbmRleCBmM2Y1M2E5OWYwZDYzMWY2MWRkYzQz
MWY3YzA0NWUzZGJkOTM1MWEyLi41YTdiZTA5YjgwMTg4NzQ0MjFhN2I4NjExNWNlNGI0OWFlYTk5
YWUyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJhbmltYXRpb25zL2FjY2VsZXJhdGVkLWFu
aW1hdGlvbi1zaW5nbGUta2V5ZnJhbWUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy93ZWJhbmltYXRp
b25zL2FjY2VsZXJhdGVkLWFuaW1hdGlvbi1zaW5nbGUta2V5ZnJhbWUuaHRtbApAQCAtMTcsNyAr
MTcsNyBAQAogPGRpdiBpZD0idGFyZ2V0Ij48L2Rpdj4KIDxzY3JpcHQ+CiAKLWFzeW5jX3Rlc3Qo
YXN5bmMgdCA9PiB7Citwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CiAgICAgLy8gU3RhcnQgYW4g
YW5pbWF0aW9uIHdpdGggYW4gaW1wbGljaXQgZnJvbSBrZXlmcmFtZS4KICAgICBjb25zdCBhbmlt
YXRpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0IikuYW5pbWF0ZSh7IHRyYW5z
Zm9ybTogInRyYW5zbGF0ZVgoNjAwcHgpIiB9LCB7IGR1cmF0aW9uOiAxMDAwICogMTAwMCB9KTsK
IApAQCAtMjcsNyArMjcsNiBAQCBhc3luY190ZXN0KGFzeW5jIHQgPT4gewogICAgIGF3YWl0IG5l
dyBQcm9taXNlKHJlcXVlc3RBbmltYXRpb25GcmFtZSk7CiAKICAgICBhc3NlcnRfZXF1YWxzKGlu
dGVybmFscy5hY2NlbGVyYXRlZEFuaW1hdGlvbnNGb3JFbGVtZW50KHRhcmdldCkubGVuZ3RoLCAx
LCAiVGhlcmUgc2hvdWxkIGJlIGFuIGFjY2VsZXJhdGVkIGFuaW1hdGlvbi4iKTsKLSAgICB0LmRv
bmUoKTsKIH0sICJBIHRyYW5zZm9ybSBhbmltYXRpb24gd2l0aCBhIHNpbmdsZSBrZXlmcmFtZSBz
aG91bGQgYmUgYWJsZSB0byBydW4gYWNjZWxlcmF0ZWQuIik7CiAKIDwvc2NyaXB0PgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViYW5pbWF0aW9ucy9mcmFtZS1yYXRlL2FuaW1hdGlvbi1mcmFt
ZS1yYXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJhbmltYXRpb25zL2ZyYW1lLXJhdGUvYW5pbWF0
aW9uLWZyYW1lLXJhdGUuaHRtbAppbmRleCBlZjM5NjJkNGFkZDU3ZDgyY2U4NjI4MDYyYjAzZjE3
NmM1MWM3M2E5Li5kYjVkNWIyMTI3YWQ2ZDljOTQ2Y2QzYzE1MzVmMGY4ODEyMjc4ODg5IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJhbmltYXRpb25zL2ZyYW1lLXJhdGUvYW5pbWF0aW9uLWZy
YW1lLXJhdGUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy93ZWJhbmltYXRpb25zL2ZyYW1lLXJhdGUv
YW5pbWF0aW9uLWZyYW1lLXJhdGUuaHRtbApAQCAtMjcsNyArMjcsNyBAQCB0ZXN0KHQgPT4gewog
dGVzdCh0ID0+IHsKICAgICBjb25zdCBhbmltYXRpb24gPSBuZXcgQW5pbWF0aW9uOwogICAgIGZv
ciAobGV0IHZhbHVlIG9mIFsiZGVmYXVsdCIsICIxMjAiLCBudWxsLCB1bmRlZmluZWQsIFtdLCB7
fV0pIHsKLSAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yLCAoKSA9PiBhbmltYXRp
b24uZnJhbWVSYXRlID0gdmFsdWUsIGBTZXR0aW5nIHRoZSB2YWx1ZSAke3ZhbHVlfSB0aHJvd3Ng
KTsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IGFuaW1hdGlvbi5m
cmFtZVJhdGUgPSB2YWx1ZSwgYFNldHRpbmcgdGhlIHZhbHVlICR7dmFsdWV9IHRocm93c2ApOwog
ICAgICAgICBhc3NlcnRfZXF1YWxzKGFuaW1hdGlvbi5mcmFtZVJhdGUsICJhdXRvIiwgYFNldHRp
bmcgdGhlIGludmFsaWQgdmFsdWUgIiR7dmFsdWV9IiBkb2VzIG5vdCBjaGFuZ2UgdGhlIHZhbHVl
YCk7CiAgICAgfQogfSwgIkludmFsaWQgYW5pbWF0aW9uLmZyYW1lUmF0ZSB2YWx1ZXMiKTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmFuaW1hdGlvbnMvc2NoZWR1bGluZy1vZi1hbmltYXRp
b24td2l0aC1zdGVwcy10aW1pbmctZnVuY3Rpb24tb24tZWZmZWN0Lmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJhbmltYXRpb25zL3NjaGVkdWxpbmctb2YtYW5pbWF0aW9uLXdpdGgtc3RlcHMtdGltaW5n
LWZ1bmN0aW9uLW9uLWVmZmVjdC5odG1sCmluZGV4IGY0YjdmMDg1ODRiMWQ4NjdhMzljZjE4MTc1
OTE2MmIzZmFmMDI3Y2MuLmMyNjc4ZjU0MGQ5NDI2YTg1YmE5MjUyMTM1M2FmZWI1NTA1MDYwOWIg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYmFuaW1hdGlvbnMvc2NoZWR1bGluZy1vZi1hbmlt
YXRpb24td2l0aC1zdGVwcy10aW1pbmctZnVuY3Rpb24tb24tZWZmZWN0Lmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViYW5pbWF0aW9ucy9zY2hlZHVsaW5nLW9mLWFuaW1hdGlvbi13aXRoLXN0ZXBz
LXRpbWluZy1mdW5jdGlvbi1vbi1lZmZlY3QuaHRtbApAQCAtMywxNSArMywxMyBAQAogPGRpdj48
L2Rpdj4KIDxzY3JpcHQ+CiAKLWFzeW5jX3Rlc3QoYXN5bmMgdCA9PiB7Citwcm9taXNlX3Rlc3Qo
YXN5bmMgdCA9PiB7CiAgICAgY29uc3QgYW5pbWF0aW9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rv
cigiZGl2IikuYW5pbWF0ZSh7IG1hcmdpbkxlZnQ6ICIxMDBweCIgfSwgeyBkdXJhdGlvbjogMTAw
MCwgZWFzaW5nOiAic3RlcHMoMTApIiB9KTsKIAogICAgIGF3YWl0IGFuaW1hdGlvbi5yZWFkeTsK
LSAgICAKKwogICAgIGFuaW1hdGlvbi5jdXJyZW50VGltZSA9IDIyNTsKICAgICBhc3NlcnRfZXF1
YWxzKGludGVybmFscy50aW1lVG9OZXh0QW5pbWF0aW9uVGljayhhbmltYXRpb24pLCA3NSwgIkNv
bXB1dGluZyB0aGUgdGltZSB1bnRpbCB0aGUgbmV4dCB0aWNrIHdoZW4gcGFydGx5IHRocm91Z2gg
YSBzdGVwcyBpbnRlcnZhbC4iKTsKLSAgICAKLSAgICB0LmRvbmUoKTsKIH0sICJDb21wdXRpbmcg
dGhlIHRpbWUgdW50aWwgdGhlIG5leHQgdGljayBmb3IgYW4gZWZmZWN0IHdpdGggYSBzdGVwcygp
IGVhc2luZy4iKTsKIAogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJhbmlt
YXRpb25zL3NjaGVkdWxpbmctb2YtYW5pbWF0aW9uLXdpdGgtc3RlcHMtdGltaW5nLWZ1bmN0aW9u
LW9uLWtleWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJhbmltYXRpb25zL3NjaGVkdWxpbmct
b2YtYW5pbWF0aW9uLXdpdGgtc3RlcHMtdGltaW5nLWZ1bmN0aW9uLW9uLWtleWZyYW1lLmh0bWwK
aW5kZXggMzlmY2JkZTMwYTE2MmQ4YmJjNjllYTE4NjU1ODRlNzMxNDg4NGUyMS4uYzkzOGU5YWU2
MDJiM2E0Njc5MzNlMTY3ZGFjY2M0YjIzZGEyMmNkMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
d2ViYW5pbWF0aW9ucy9zY2hlZHVsaW5nLW9mLWFuaW1hdGlvbi13aXRoLXN0ZXBzLXRpbWluZy1m
dW5jdGlvbi1vbi1rZXlmcmFtZS5odG1sCisrKyBiL0xheW91dFRlc3RzL3dlYmFuaW1hdGlvbnMv
c2NoZWR1bGluZy1vZi1hbmltYXRpb24td2l0aC1zdGVwcy10aW1pbmctZnVuY3Rpb24tb24ta2V5
ZnJhbWUuaHRtbApAQCAtMywxOCArMywxNiBAQAogPGRpdj48L2Rpdj4KIDxzY3JpcHQ+CiAKLWFz
eW5jX3Rlc3QoYXN5bmMgdCA9PiB7Citwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CiAgICAgY29u
c3QgYW5pbWF0aW9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiZGl2IikuYW5pbWF0ZSh7CiAg
ICAgICAgIG1hcmdpbkxlZnQ6IFsiMCIsICIyNTBweCIsICI1MDBweCIsICI3NTBweCIsICIxMDAw
cHgiXSwKICAgICAgICAgZWFzaW5nOiBbImxpbmVhciIsICJsaW5lYXIiLCAic3RlcHMoMTApIiwg
ImxpbmVhciJdCiAgICAgfSwgMTAwMCk7CiAKICAgICBhd2FpdCBhbmltYXRpb24ucmVhZHk7Ci0g
ICAgCisKICAgICBhbmltYXRpb24uY3VycmVudFRpbWUgPSA1MzU7CiAgICAgYXNzZXJ0X2VxdWFs
cyhpbnRlcm5hbHMudGltZVRvTmV4dEFuaW1hdGlvblRpY2soYW5pbWF0aW9uKSwgMTUpOwotCi0g
ICAgdC5kb25lKCk7CiB9LCAiQ29tcHV0aW5nIHRoZSB0aW1lIHVudGlsIHRoZSBuZXh0IHRpY2sg
Zm9yIGEga2V5ZnJhbWUgd2l0aCBhIHN0ZXBzKCkgdGltaW5nIGZ1bmN0aW9uLiIpOwogCiA8L3Nj
cmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmFuaW1hdGlvbnMvc2NoZWR1bGluZy1v
Zi1jc3MtYW5pbWF0aW9uLXdpdGgtZXhwbGljaXQtc3RlcHMtdGltaW5nLWZ1bmN0aW9uLW9uLXNv
bWUta2V5ZnJhbWVzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJhbmltYXRpb25zL3NjaGVkdWxpbmct
b2YtY3NzLWFuaW1hdGlvbi13aXRoLWV4cGxpY2l0LXN0ZXBzLXRpbWluZy1mdW5jdGlvbi1vbi1z
b21lLWtleWZyYW1lcy5odG1sCmluZGV4IDkxZTJmY2RhZjE3NGMzZjg3OGI1MGZiNGE3NDM2ZDVj
ZTExNDM1ZDEuLjY0MzYzNGFiMTIxNzc5YmRkMDE1YTExNDc0YWE5MmU3ZGUyMTVmYjcgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3dlYmFuaW1hdGlvbnMvc2NoZWR1bGluZy1vZi1jc3MtYW5pbWF0
aW9uLXdpdGgtZXhwbGljaXQtc3RlcHMtdGltaW5nLWZ1bmN0aW9uLW9uLXNvbWUta2V5ZnJhbWVz
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvd2ViYW5pbWF0aW9ucy9zY2hlZHVsaW5nLW9mLWNzcy1h
bmltYXRpb24td2l0aC1leHBsaWNpdC1zdGVwcy10aW1pbmctZnVuY3Rpb24tb24tc29tZS1rZXlm
cmFtZXMuaHRtbApAQCAtMTYsNyArMTYsNyBAQAogPGRpdj48L2Rpdj4KIDxzY3JpcHQ+CiAKLWFz
eW5jX3Rlc3QoYXN5bmMgdCA9PiB7Citwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CiAgICAgY29u
c3QgYW5pbWF0aW9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiZGl2IikuZ2V0QW5pbWF0aW9u
cygpWzBdOwogCiAgICAgYXdhaXQgYW5pbWF0aW9uLnJlYWR5OwpAQCAtMzIsOCArMzIsNiBAQCBh
c3luY190ZXN0KGFzeW5jIHQgPT4gewogCiAgICAgYW5pbWF0aW9uLmN1cnJlbnRUaW1lID0gNzgw
OwogICAgIGFzc2VydF9lcXVhbHMoaW50ZXJuYWxzLnRpbWVUb05leHRBbmltYXRpb25UaWNrKGFu
aW1hdGlvbiksIDIwLCAiUHJvZ3Jlc3MgY29udGFpbmVkIGluIHRoZSBpbnRlcnZhbCBmb3IgYW4g
aW1wbGljaXQgMTAwJSBrZXlmcmFtZS4iKTsKLQotICAgIHQuZG9uZSgpOwogfSwgIkNvbXB1dGlu
ZyB0aGUgdGltZSB1bnRpbCB0aGUgbmV4dCB0aWNrIGZvciBhIENTUyBBbmltYXRpb24gd2l0aCBp
bXBsaWNpdCBhbmQgZXhwbGljaXQgc3RlcHMoKSB0aW1pbmcgZnVuY3Rpb25zLiIpOwogCiA8L3Nj
cmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmFuaW1hdGlvbnMvc2NoZWR1bGluZy1v
Zi1jc3MtYW5pbWF0aW9uLXdpdGgtaW1wbGljaXQtc3RlcHMtdGltaW5nLWZ1bmN0aW9uLmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJhbmltYXRpb25zL3NjaGVkdWxpbmctb2YtY3NzLWFuaW1hdGlvbi13
aXRoLWltcGxpY2l0LXN0ZXBzLXRpbWluZy1mdW5jdGlvbi5odG1sCmluZGV4IGJjOTA0NzA3Yzcw
ZTI2ZGQwMjliNzhlMmRmYWY1OWNkMmZkYTczMDMuLjgxMmM2NzU3ZjA4ZTc3ZTdiZjEzMGQzOGJk
ODgzY2FhYTVmMzU4MzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYmFuaW1hdGlvbnMvc2No
ZWR1bGluZy1vZi1jc3MtYW5pbWF0aW9uLXdpdGgtaW1wbGljaXQtc3RlcHMtdGltaW5nLWZ1bmN0
aW9uLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvd2ViYW5pbWF0aW9ucy9zY2hlZHVsaW5nLW9mLWNz
cy1hbmltYXRpb24td2l0aC1pbXBsaWNpdC1zdGVwcy10aW1pbmctZnVuY3Rpb24uaHRtbApAQCAt
MTQsMTggKzE0LDE2IEBACiA8ZGl2PjwvZGl2PgogPHNjcmlwdD4KIAotYXN5bmNfdGVzdChhc3lu
YyB0ID0+IHsKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKICAgICBjb25zdCBhbmltYXRpb24g
PSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJkaXYiKS5nZXRBbmltYXRpb25zKClbMF07CiAKICAg
ICBhd2FpdCBhbmltYXRpb24ucmVhZHk7Ci0gICAgCisKICAgICBhbmltYXRpb24uY3VycmVudFRp
bWUgPSAxMDsKICAgICBhc3NlcnRfZXF1YWxzKGludGVybmFscy50aW1lVG9OZXh0QW5pbWF0aW9u
VGljayhhbmltYXRpb24pLCA0MCwgIlByb2dyZXNzIGNvbnRhaW5lZCBpbiB0aGUgaW50ZXJ2YWwg
Zm9yIGFuIGltcGxpY2l0IDAlIGtleWZyYW1lLiIpOwogCiAgICAgYW5pbWF0aW9uLmN1cnJlbnRU
aW1lID0gOTIwOwogICAgIGFzc2VydF9lcXVhbHMoaW50ZXJuYWxzLnRpbWVUb05leHRBbmltYXRp
b25UaWNrKGFuaW1hdGlvbiksIDMwLCAiUHJvZ3Jlc3MgY29udGFpbmVkIGluIHRoZSBpbnRlcnZh
bCBmb3IgYW4gaW1wbGljaXQgMTAwJSBrZXlmcmFtZS4iKTsKLQotICAgIHQuZG9uZSgpOwogfSwg
IkNvbXB1dGluZyB0aGUgdGltZSB1bnRpbCB0aGUgbmV4dCB0aWNrIGZvciBhIENTUyBBbmltYXRp
b24gd2l0aCBpbXBsaWNpdCBzdGVwcygpIHRpbWluZyBmdW5jdGlvbnMuIik7CiAKIDwvc2NyaXB0
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViYXVkaW8vd2ViYXVkaW8tZ2MuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmF1ZGlvL3dlYmF1ZGlvLWdjLmh0bWwKaW5kZXggNzE2N2VjZjUxMWM1YTA0
Yjk4MGIxODE0YmEzZDY4YTFlNjBhMTg5YS4uZjVhZDI5ZmFhZmJmMTk3N2U1MDg2YTU4YzY4NWZl
YTFlYmQ4Yjk0ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2ViYXVkaW8vd2ViYXVkaW8tZ2Mu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby93ZWJhdWRpby1nYy5odG1sCkBAIC04LDYg
KzgsNyBAQAogPHNjcmlwdCBzcmM9Li4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzPjwv
c2NyaXB0PgogPHNjcmlwdCBzcmM9Li4vcmVzb3VyY2VzL2djLmpzPjwvc2NyaXB0PgogPHNjcmlw
dD4KK3NldHVwKHsgc2luZ2xlX3Rlc3Q6IHRydWUgfSk7CiBsZXQgY291bnQgPSAxMDA7CiAKIGZ1
bmN0aW9uIGNoZWNrRXZlbnQoKSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJydGMvY2Fs
bGluZy1wZWVyY29ubmVjdGlvbi1vbmNlLWNsb3NlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2VicnRj
L2NhbGxpbmctcGVlcmNvbm5lY3Rpb24tb25jZS1jbG9zZWQuaHRtbAppbmRleCBjNmE0MWJkNTVj
YjI2OTAyOTBjYTdiM2NjNjFiZDA3NTMwODI3MzZiLi40MGJhMjlmZTE5MDc1ZjZmYmNkNjBlMGIw
MTg1OGE1YmQwNzhmMDA4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJydGMvY2FsbGluZy1w
ZWVyY29ubmVjdGlvbi1vbmNlLWNsb3NlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL3dlYnJ0Yy9j
YWxsaW5nLXBlZXJjb25uZWN0aW9uLW9uY2UtY2xvc2VkLmh0bWwKQEAgLTMwLDI2ICszMCwyNiBA
QCBwcm9taXNlX3Rlc3QoKCkgPT4gewogCiBwcm9taXNlX3Rlc3QoKHRlc3QpID0+IHsKICAgICBy
ZXR1cm4gY2xvc2VkQ29ubmVjdGlvbigpLnRoZW4oKGNvbm5lY3Rpb24pID0+IHsKLSAgICAgICAg
cmV0dXJuIHByb21pc2VfcmVqZWN0cyh0ZXN0LCAnSW52YWxpZFN0YXRlRXJyb3InLCBjb25uZWN0
aW9uLmNyZWF0ZU9mZmVyKCkpOworICAgICAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2RvbSh0
ZXN0LCAnSW52YWxpZFN0YXRlRXJyb3InLCBjb25uZWN0aW9uLmNyZWF0ZU9mZmVyKCkpOwogICAg
IH0pOwogfSwgIkVuc3VyaW5nIGNsb3NlZCBjb25uZWN0aW9uIGNyZWF0ZU9mZmVyIGRvZXMgbm90
IGNyYXNoIik7CiAKIHByb21pc2VfdGVzdCgoKSA9PiB7CiAgICAgcmV0dXJuIGNsb3NlZENvbm5l
Y3Rpb24oKS50aGVuKChjb25uZWN0aW9uKSA9PiB7Ci0gICAgICAgIGFzc2VydF90aHJvd3MoIklu
dmFsaWRTdGF0ZUVycm9yIiwgKCkgPT4geyAgY29ubmVjdGlvbi5jcmVhdGVEYXRhQ2hhbm5lbCgi
dGVzdCIpOyB9KTsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkludmFsaWRTdGF0ZUVycm9y
IiwgKCkgPT4geyAgY29ubmVjdGlvbi5jcmVhdGVEYXRhQ2hhbm5lbCgidGVzdCIpOyB9KTsKICAg
ICB9KTsKIH0sICJFbnN1cmluZyBjbG9zZWQgY29ubmVjdGlvbiBjcmVhdGVEYXRhQ2hhbm5lbCBk
b2VzIG5vdCBjcmFzaCIpOwogCiBwcm9taXNlX3Rlc3QoKCkgPT4gewogICAgIHJldHVybiBjbG9z
ZWRDb25uZWN0aW9uKCkudGhlbigoY29ubmVjdGlvbikgPT4gewotICAgICAgICBhc3NlcnRfdGhy
b3dzKCJJbnZhbGlkU3RhdGVFcnJvciIsICgpID0+IHsgY29ubmVjdGlvbi5hZGRUcmFuc2NlaXZl
cigidmlkZW8iKTsgfSk7CisgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlkU3RhdGVF
cnJvciIsICgpID0+IHsgY29ubmVjdGlvbi5hZGRUcmFuc2NlaXZlcigidmlkZW8iKTsgfSk7CiAg
ICAgfSk7CiB9LCAiRW5zdXJpbmcgY2xvc2VkIGNvbm5lY3Rpb24gYWRkVHJhbnNjZWl2ZXIgZG9l
cyBub3QgY3Jhc2giKTsKIAogcHJvbWlzZV90ZXN0KCgpID0+IHsKICAgICByZXR1cm4gY2xvc2Vk
Q29ubmVjdGlvbigpLnRoZW4oKGNvbm5lY3Rpb24pID0+IHsKICAgICAgICAgcmV0dXJuIG5hdmln
YXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHt2aWRlbzogdHJ1ZX0pLnRoZW4oKHN0cmVh
bSkgPT4gewotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygiSW52YWxpZFN0YXRlRXJyb3IiLCAo
KSA9PiB7IGNvbm5lY3Rpb24uYWRkVHJhY2soc3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF0sIHN0
cmVhbSk7IH0pOworICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkludmFsaWRTdGF0ZUVy
cm9yIiwgKCkgPT4geyBjb25uZWN0aW9uLmFkZFRyYWNrKHN0cmVhbS5nZXRWaWRlb1RyYWNrcygp
WzBdLCBzdHJlYW0pOyB9KTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9LCAiRW5zdXJpbmcgY2xv
c2VkIGNvbm5lY3Rpb24gYWRkVHJhY2sgZG9lcyBub3QgY3Jhc2giKTsKQEAgLTYyLDcgKzYyLDcg
QEAgcHJvbWlzZV90ZXN0KCh0ZXN0KSA9PiB7CiAgICAgICAgIHBjMi5jcmVhdGVEYXRhQ2hhbm5l
bCgidGVzdCIpOwogICAgICAgICByZXR1cm4gcGMyLmNyZWF0ZU9mZmVyKCk7CiAgICAgfSkudGhl
bigoc2RwKSA9PiB7Ci0gICAgICAgIHJldHVybiBwcm9taXNlX3JlamVjdHModGVzdCwgJ0ludmFs
aWRTdGF0ZUVycm9yJywgY29ubmVjdGlvbi5zZXRSZW1vdGVEZXNjcmlwdGlvbihzZHApKTsKKyAg
ICAgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19kb20odGVzdCwgJ0ludmFsaWRTdGF0ZUVycm9y
JywgY29ubmVjdGlvbi5zZXRSZW1vdGVEZXNjcmlwdGlvbihzZHApKTsKICAgICB9KTsKIH0sICJF
bnN1cmluZyBjbG9zZWQgY29ubmVjdGlvbiBzZXRSZW1vdGVEZXNjcmlwdGlvbiBkb2VzIG5vdCBj
cmFzaCIpOwogCkBAIC03NCw3ICs3NCw3IEBAIHByb21pc2VfdGVzdCgodGVzdCkgPT4gewogICAg
ICAgICAgICAgc2V0VGltZW91dCgoKSA9PiByZXNvbHZlKHNkcCksIDEwMCk7CiAgICAgICAgIH0p
OwogICAgIH0pLnRoZW4oKHNkcCkgPT4gewotICAgICAgICByZXR1cm4gcHJvbWlzZV9yZWplY3Rz
KHRlc3QsICdJbnZhbGlkU3RhdGVFcnJvcicsIGxvY2FsQ29ubmVjdGlvbi5zZXRMb2NhbERlc2Ny
aXB0aW9uKHNkcCkpOworICAgICAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2RvbSh0ZXN0LCAn
SW52YWxpZFN0YXRlRXJyb3InLCBsb2NhbENvbm5lY3Rpb24uc2V0TG9jYWxEZXNjcmlwdGlvbihz
ZHApKTsKICAgICB9KTsKIH0sICJFbnN1cmluZyBjbG9zZWQgY29ubmVjdGlvbiBzZXRMb2NhbERl
c2NyaXB0aW9uIGRvZXMgbm90IGNyYXNoIik7CiAKQEAgLTg3LDcgKzg3LDcgQEAgcHJvbWlzZV90
ZXN0KCh0ZXN0KSA9PiB7CiAgICAgfSkudGhlbigoKSA9PiB7CiAgICAgICAgIGxvY2FsQ29ubmVj
dGlvbi5jbG9zZSgpOwogICAgIH0pLnRoZW4oKCkgPT4gewotICAgICAgICByZXR1cm4gcHJvbWlz
ZV9yZWplY3RzKHRlc3QsICdJbnZhbGlkU3RhdGVFcnJvcicsIGxvY2FsQ29ubmVjdGlvbi5jcmVh
dGVBbnN3ZXIoKSk7CisgICAgICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZG9tKHRlc3QsICdJ
bnZhbGlkU3RhdGVFcnJvcicsIGxvY2FsQ29ubmVjdGlvbi5jcmVhdGVBbnN3ZXIoKSk7CiAgICAg
fSk7CiB9LCAiRW5zdXJpbmcgY2xvc2VkIGNvbm5lY3Rpb24gY3JlYXRlQW5zd2VyIGRvZXMgbm90
IGNyYXNoIik7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYnJ0Yy9jZXJ0aWZpY2F0ZXMt
aW5kZXhlZGRiLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJydGMvY2VydGlmaWNhdGVzLWluZGV4ZWRk
Yi5odG1sCmluZGV4IDNhYThiYWNhYzExNmQxZjc3MzI0ZGJlZGNjYWQxNTNmY2YyY2ZkNDcuLmM5
YzIxMjEyMmZkMWQxOWVkMjc0Y2Q1M2ViYzAwYTZkZGZhMTJiMWUgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3dlYnJ0Yy9jZXJ0aWZpY2F0ZXMtaW5kZXhlZGRiLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvd2VicnRjL2NlcnRpZmljYXRlcy1pbmRleGVkZGIuaHRtbApAQCAtOCw2ICs4LDcgQEAKICAg
ICA8L2hlYWQ+CiAgICAgPGJvZHk+CiAgICAgICAgIDxzY3JpcHQ+CitzZXR1cCh7IHNpbmdsZV90
ZXN0OiB0cnVlIH0pOwogbGV0IGNlcnRpZmljYXRlOwogCiBmdW5jdGlvbiBzdG9yZUtleSgpIHsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYnJ0Yy9kYXRhY2hhbm5lbC9jcmVhdGlvbi5odG1s
IGIvTGF5b3V0VGVzdHMvd2VicnRjL2RhdGFjaGFubmVsL2NyZWF0aW9uLmh0bWwKaW5kZXggMDYz
NThiNmE1MTJiMTEyZmI4NGEwYWJiMDA3ZjE4MjlmZTBmNTQ3ZC4uNDY3ZjVkNzJmZWU0OTEwZDMw
NmE0NmNlYzk1OTIzNmZlMjViNzBjMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2VicnRjL2Rh
dGFjaGFubmVsL2NyZWF0aW9uLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvd2VicnRjL2RhdGFjaGFu
bmVsL2NyZWF0aW9uLmh0bWwKQEAgLTE0LDIwICsxNCwyMCBAQCBmb3IgKHZhciBjcHRyID0gMDsg
Y3B0ciA8IDE2OyArK2NwdHIpCiAKIHRlc3QoKCkgPT4gewogICAgIHZhciBwYyA9IG5ldyBSVENQ
ZWVyQ29ubmVjdGlvbigpOwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvciwgKCkgPT4g
eyBwYy5jcmVhdGVEYXRhQ2hhbm5lbChsb25nU3RyaW5nKTsgfSk7CisgICAgYXNzZXJ0X3Rocm93
c19qcyhUeXBlRXJyb3IsICgpID0+IHsgcGMuY3JlYXRlRGF0YUNoYW5uZWwobG9uZ1N0cmluZyk7
IH0pOwogfSwgIkNyZWF0aW5nIGRhdGEgY2hhbm5lbCB3aXRoIHZlcnkgbG9uZyBsYWJlbCIpOwog
CiB0ZXN0KCgpID0+IHsKICAgICB2YXIgcGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKICAg
ICBwYy5jbG9zZSgpOwotICAgIGFzc2VydF90aHJvd3MoIkludmFsaWRTdGF0ZUVycm9yIiwgKCkg
PT4geyBwYy5jcmVhdGVEYXRhQ2hhbm5lbCgnc2VuZERhdGFDaGFubmVsJyk7IH0pOworICAgIGFz
c2VydF90aHJvd3NfZG9tKCJJbnZhbGlkU3RhdGVFcnJvciIsICgpID0+IHsgcGMuY3JlYXRlRGF0
YUNoYW5uZWwoJ3NlbmREYXRhQ2hhbm5lbCcpOyB9KTsKIH0sICJDcmVhdGluZyBkYXRhIGNoYW5u
ZWwgYWZ0ZXIgY2xvc2luZyB0aGUgY29ubmVjdGlvbiIpOwogCiBmdW5jdGlvbiB0ZXN0V3JvbmdE
YXRhQ2hhbm5lbEluaXQoaW5pdCwgdGl0bGUpCiB7CiAgICAgcmV0dXJuIHRlc3QoKCkgPT4gewog
ICAgICAgICB2YXIgcGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKLSAgICAgICAgYXNzZXJ0
X3Rocm93cyhuZXcgVHlwZUVycm9yLCAoKSA9PiB7IHBjLmNyZWF0ZURhdGFDaGFubmVsKCdzZW5k
RGF0YUNoYW5uZWwnLCBpbml0KTsgfSk7CisgICAgICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVy
cm9yLCAoKSA9PiB7IHBjLmNyZWF0ZURhdGFDaGFubmVsKCdzZW5kRGF0YUNoYW5uZWwnLCBpbml0
KTsgfSk7CiAgICAgfSwgIldyb25nIGRhdGEgY2hhbm5lbCBpbml0OiAiICsgdGl0bGUpOwogfQog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJydGMvZGF0YWNoYW5uZWwvZGF0YWNoYW5uZWwt
ZXZlbnQuaHRtbCBiL0xheW91dFRlc3RzL3dlYnJ0Yy9kYXRhY2hhbm5lbC9kYXRhY2hhbm5lbC1l
dmVudC5odG1sCmluZGV4IGE2Y2RkNWJmYzNhZGM2YzcwMTBkZGJkZGE4OTFjOGY2NTQ4ZGMyZDAu
LmQ4MWIwMTAyYmI5NDBiNjQ4NTg4ODU3ZmE4MWFkYTg4ZGNjOTExZWYgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3dlYnJ0Yy9kYXRhY2hhbm5lbC9kYXRhY2hhbm5lbC1ldmVudC5odG1sCisrKyBi
L0xheW91dFRlc3RzL3dlYnJ0Yy9kYXRhY2hhbm5lbC9kYXRhY2hhbm5lbC1ldmVudC5odG1sCkBA
IC0xMiwxMSArMTIsMTEgQEAgdGVzdCgoKSA9PiB7CiAgICAgdmFyIHBjID0gbmV3IFJUQ1BlZXJD
b25uZWN0aW9uKCk7CiAgICAgdmFyIGNoYW5uZWwgPSBwYy5jcmVhdGVEYXRhQ2hhbm5lbCgidGVz
dCIpOwogCi0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yLCAoKSA9PiBuZXcgUlRDRGF0
YUNoYW5uZWxFdmVudCgpKTsKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IsICgpID0+
IG5ldyBSVENEYXRhQ2hhbm5lbEV2ZW50KCJ0ZXN0IikpOwotICAgIGFzc2VydF90aHJvd3MobmV3
IFR5cGVFcnJvciwgKCkgPT4gbmV3IFJUQ0RhdGFDaGFubmVsRXZlbnQoInRlc3QiLCB1bmRlZmlu
ZWQpKTsKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IsICgpID0+IG5ldyBSVENEYXRh
Q2hhbm5lbEV2ZW50KCJ0ZXN0IiwgeyBjaGFubmVsOiAxIH0pKTsKLSAgICBhc3NlcnRfdGhyb3dz
KG5ldyBUeXBlRXJyb3IsICgpID0+IG5ldyBSVENEYXRhQ2hhbm5lbEV2ZW50KHVuZGVmaW5lZCwg
eyBjaGFubmVsOiAxIH0pKTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4g
bmV3IFJUQ0RhdGFDaGFubmVsRXZlbnQoKSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJy
b3IsICgpID0+IG5ldyBSVENEYXRhQ2hhbm5lbEV2ZW50KCJ0ZXN0IikpOworICAgIGFzc2VydF90
aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBuZXcgUlRDRGF0YUNoYW5uZWxFdmVudCgidGVzdCIs
IHVuZGVmaW5lZCkpOworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBuZXcg
UlRDRGF0YUNoYW5uZWxFdmVudCgidGVzdCIsIHsgY2hhbm5lbDogMSB9KSk7CisgICAgYXNzZXJ0
X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IG5ldyBSVENEYXRhQ2hhbm5lbEV2ZW50KHVuZGVm
aW5lZCwgeyBjaGFubmVsOiAxIH0pKTsKIAogICAgIHZhciBldmVudCA9IG5ldyBSVENEYXRhQ2hh
bm5lbEV2ZW50KCJ0ZXN0IiwgeyBjaGFubmVsOiBjaGFubmVsIH0pOwogICAgIGFzc2VydF9lcXVh
bHMoZXZlbnQuY2hhbm5lbCwgY2hhbm5lbCwgImNoYW5uZWwgcGFzc2VkIGluIGNvbnN0cnVjdG9y
IHNob3VsZCBiZSB1c2VkIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJydGMvZGF0YWNo
YW5uZWwvZ2V0U3RhdHMtbm8tcHJmbHgtcmVtb3RlLWNhbmRpZGF0ZS5odG1sIGIvTGF5b3V0VGVz
dHMvd2VicnRjL2RhdGFjaGFubmVsL2dldFN0YXRzLW5vLXByZmx4LXJlbW90ZS1jYW5kaWRhdGUu
aHRtbAppbmRleCA5N2I1OTFhZmUzYTEyYjFmYWJjNDlmN2QzNmY3YmI4MzQ2N2FhNDU4Li40Mjdj
NDkxYjgyMTUxYjdkYjdhODQ2ZmEzNmU0OGJhOWM5MzcyYWJiIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy93ZWJydGMvZGF0YWNoYW5uZWwvZ2V0U3RhdHMtbm8tcHJmbHgtcmVtb3RlLWNhbmRpZGF0
ZS5odG1sCisrKyBiL0xheW91dFRlc3RzL3dlYnJ0Yy9kYXRhY2hhbm5lbC9nZXRTdGF0cy1uby1w
cmZseC1yZW1vdGUtY2FuZGlkYXRlLmh0bWwKQEAgLTQsNyArNCw4IEBACiA8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4K
LSAgJ3VzZSBzdHJpY3QnOworJ3VzZSBzdHJpY3QnOworc2V0dXAoeyBzaW5nbGVfdGVzdDogdHJ1
ZSB9KTsKIGNvbnN0IGxvY2FsUGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKIGNvbnN0IHJl
bW90ZVBjID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYnJ0Yy9kaXNhYmxlLWVuY3J5cHRpb24uaHRtbCBiL0xheW91dFRlc3RzL3dlYnJ0Yy9k
aXNhYmxlLWVuY3J5cHRpb24uaHRtbAppbmRleCA2NzQ5YmY5ZDljNzMxZTkyZGI2ODg3MDk1MTBh
Zjg3MWE1Yjc5NDRlLi4xNWJlNzMxOTlhNTE4YmI0MTEyYzEyYWM5MjI1ZTEyMjk5NmRmNGNmIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJydGMvZGlzYWJsZS1lbmNyeXB0aW9uLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvd2VicnRjL2Rpc2FibGUtZW5jcnlwdGlvbi5odG1sCkBAIC00Myw3ICs0
Myw3IEBAIHByb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4gewogICAgIGNvbnN0IG9mZmVyID0g
YXdhaXQgcGMxLmNyZWF0ZU9mZmVyKCk7CiAgICAgYXdhaXQgcGMxLnNldExvY2FsRGVzY3JpcHRp
b24ob2ZmZXIpOwogCi0gICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0ZXN0LCAnSW52YWxpZEFj
Y2Vzc0Vycm9yJywgcGMyLnNldFJlbW90ZURlc2NyaXB0aW9uKG9mZmVyKSk7CisgICAgcmV0dXJu
IHByb21pc2VfcmVqZWN0c19kb20odGVzdCwgJ0ludmFsaWRBY2Nlc3NFcnJvcicsIHBjMi5zZXRS
ZW1vdGVEZXNjcmlwdGlvbihvZmZlcikpOwogfSwgIk1ha2Ugc3VyZSBhIHBjIHdpdGggZW5jcnlw
dGlvbiBhbmQgYSBwYyB3aXRob3V0IGVuY3J5cHRpb24gY2Fubm90IHRhbGsiKTsKICAgICA8L3Nj
cmlwdD4KICAgPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2VicnRjL2xlZ2FjeS1h
cGktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2VicnRjL2xlZ2FjeS1hcGktZXhwZWN0ZWQu
dHh0CmluZGV4IDY4NjU1ZTRmMGNlZDkxMTgzNDIwZmFmNThhNGJkYWZjN2JlYzNiMTguLmZiMjIy
MjViZWM2NDYwNmEzZjI3OWZiZDYxYzIyZmJlMmU2MjEzNWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3dlYnJ0Yy9sZWdhY3ktYXBpLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy93ZWJy
dGMvbGVnYWN5LWFwaS1leHBlY3RlZC50eHQKQEAgLTksNiArOSw3IEBAIERldGFpbHMKIAogUmVz
dWx0CVRlc3QgTmFtZQlNZXNzYWdlCiBQYXNzCVRlc3RpbmcgbGVnYWN5IEFQSSBpcyBub3QgZGVm
aW5lZAkKK0Fzc2VydHMgcnVuCiAKIFBBU1MgVGVzdGluZyBsZWdhY3kgQVBJIGlzIG5vdCBkZWZp
bmVkCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYnJ0Yy9wYy1kZXRhY2hlZC1kb2N1bWVu
dC5odG1sIGIvTGF5b3V0VGVzdHMvd2VicnRjL3BjLWRldGFjaGVkLWRvY3VtZW50Lmh0bWwKaW5k
ZXggOWZlY2YyMjU0ODExNmE0YjkyODJkZjU1NTI0NzJhOGI0NjFlYzhkZS4uM2QzYjUzN2NkNjY5
NDNlMmE5ZTUwNzgxNjlkYzk1Mjg5YmNiMzRmNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2Vi
cnRjL3BjLWRldGFjaGVkLWRvY3VtZW50Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvd2VicnRjL3Bj
LWRldGFjaGVkLWRvY3VtZW50Lmh0bWwKQEAgLTksMTYgKzksMTggQEAgdGVzdCgoKSA9PiB7CiAg
ICAgZnJhbWUuc2V0QXR0cmlidXRlKCJzcmMiLCAiLyIpOwogICAgIGRvY3VtZW50LmJvZHkuYXBw
ZW5kQ2hpbGQoZnJhbWUpOwogICAgIHZhciBjb25zdHJ1Y3RvciA9IGZyYW1lLmNvbnRlbnRXaW5k
b3cuUlRDUGVlckNvbm5lY3Rpb247CisgICAgY29uc3QgZnJhbWVET01FeGNlcHRpb24gPSBmcmFt
ZS5jb250ZW50V2luZG93LkRPTUV4Y2VwdGlvbgogICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hp
bGQoZnJhbWUpOwotICAgIGFzc2VydF90aHJvd3MoJ05vdFN1cHBvcnRlZEVycm9yJywgKCkgPT4g
eyBuZXcgY29uc3RydWN0b3IoKSB9KTsKKyAgICBhc3NlcnRfdGhyb3dzX2RvbSgnTm90U3VwcG9y
dGVkRXJyb3InLCBmcmFtZURPTUV4Y2VwdGlvbiwgKCkgPT4geyBuZXcgY29uc3RydWN0b3IoKSB9
KTsKIH0sICJQZWVyIENvbm5lY3Rpb24gb2JqZWN0cyBzaG91bGQgbm90IGJlIGNyZWF0ZWQgaW4g
ZGV0YWNoZWQgZG9jdW1lbnRzIik7CiB0ZXN0KCgpID0+IHsKICAgICB2YXIgZnJhbWUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsKICAgICBmcmFtZS5zZXRBdHRyaWJ1dGUoInNy
YyIsICIvIik7CiAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChmcmFtZSk7CiAgICAgdmFy
IHBjID0gbmV3IGZyYW1lLmNvbnRlbnRXaW5kb3cuUlRDUGVlckNvbm5lY3Rpb24oKTsKKyAgICBj
b25zdCBmcmFtZURPTUV4Y2VwdGlvbiA9IGZyYW1lLmNvbnRlbnRXaW5kb3cuRE9NRXhjZXB0aW9u
CiAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChmcmFtZSk7Ci0gICAgYXNzZXJ0X3Rocm93
cygnSW52YWxpZFN0YXRlRXJyb3InLCAoKSA9PiB7IHBjLnNldENvbmZpZ3VyYXRpb24oe30pIH0p
OworICAgIGFzc2VydF90aHJvd3NfZG9tKCdJbnZhbGlkU3RhdGVFcnJvcicsIGZyYW1lRE9NRXhj
ZXB0aW9uLCAoKSA9PiB7IHBjLnNldENvbmZpZ3VyYXRpb24oe30pIH0pOwogfSwgIlBlZXIgQ29u
bmVjdGlvbiBvYmplY3RzIHNob3VsZCBub3QgYmUgY3JlYXRlZCBpbiBkZXRhY2hlZCBkb2N1bWVu
dHMgMiIpOwogPC9zY3JpcHQ+CiA8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJy
dGMvc3R1bi1zZXJ2ZXItZmlsdGVyaW5nLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJydGMvc3R1bi1z
ZXJ2ZXItZmlsdGVyaW5nLmh0bWwKaW5kZXggZDBjOTRmZTYyMWVmYjk2OGMzNDBkN2FmNTI1NmM5
OWM1NjE4MTkyNS4uMjUwMGYyYzUxOWI0ODI3Y2ZlY2M3ZjExYTUzYzYzZjhlYTI1ZDE0NyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2VicnRjL3N0dW4tc2VydmVyLWZpbHRlcmluZy5odG1sCisr
KyBiL0xheW91dFRlc3RzL3dlYnJ0Yy9zdHVuLXNlcnZlci1maWx0ZXJpbmcuaHRtbApAQCAtMzgs
NyArMzgsNyBAQCB0ZXN0KCgpID0+IHsKIAogICAgIGxldCBzdHJpbmc1MTAgPSBzdHJpbmc1MDkg
KyAnYSc7CiAKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IsICgpID0+IG5ldyBSVENQ
ZWVyQ29ubmVjdGlvbih7aWNlU2VydmVyczpbe3VzZXJuYW1lOiAndGVzdCcsIGNyZWRlbnRpYWw6
IHN0cmluZzUxMCwgdXJsczpbJ3R1cm46Zm9vLmNvbSddfV19KSk7Ci0gICAgYXNzZXJ0X3Rocm93
cyhuZXcgVHlwZUVycm9yLCAoKSA9PiBuZXcgUlRDUGVlckNvbm5lY3Rpb24oe2ljZVNlcnZlcnM6
W3t1c2VybmFtZTogc3RyaW5nNTEwLCBjcmVkZW50aWFsOiAndGVzdCcsIHVybHM6Wyd0dXJuOmZv
by5jb20nXX1dfSkpOworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBuZXcg
UlRDUGVlckNvbm5lY3Rpb24oe2ljZVNlcnZlcnM6W3t1c2VybmFtZTogJ3Rlc3QnLCBjcmVkZW50
aWFsOiBzdHJpbmc1MTAsIHVybHM6Wyd0dXJuOmZvby5jb20nXX1dfSkpOworICAgIGFzc2VydF90
aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBuZXcgUlRDUGVlckNvbm5lY3Rpb24oe2ljZVNlcnZl
cnM6W3t1c2VybmFtZTogc3RyaW5nNTEwLCBjcmVkZW50aWFsOiAndGVzdCcsIHVybHM6Wyd0dXJu
OmZvby5jb20nXX1dfSkpOwogfSwgIlJUQ1BlZXJDb25uZWN0aW9uIGFuZCBiaWcgVFVSTiB1c2Vy
bmFtZS9jcmVkZW50aWFsIik7CiA8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450216</attachid>
            <date>2022-01-28 02:28:00 -0800</date>
            <delta_ts>2022-01-28 03:21:26 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-235398-20220128122757.patch</filename>
            <type>text/plain</type>
            <size>656333</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NTQzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZGM5ZTg3MmU0YzQ0OTZhOTZlZmIz
N2U5MmI2OThiOTQ5NmFmYmJiYi4uYmZhMzMwZjBkMTI1MWRjMjFjNzEwNGJkODE2YjY0ODlmNjNi
MDQ2ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MiBAQAorMjAyMi0wMS0yOCAgS2ltbW8gS2lubnVuZW4g
IDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0ZSBMYXlvdXRUZXN0cy9yZXNv
dXJjZXMvdGVzdGhhcm5lc3MuanMgdG8gMjAyMS02LTI0IHZlcnNpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTM5OAorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vODgxMjYyMjI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxldC4K
KworICAgICAgICBDb3B5IHRlc3RoYXJuZXNzLmpzIGZyb20gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cworCisgICAgICAgIENvcHkgaWRsaGFybmVzcy5qcyBmcm9tIGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMgYmVjYXVzZSBpdCB1c2VzCisgICAgICAgIHRoZSBuZXcgdGVz
dGhhcm5lc3MuanMgQVBJcy4KKworICAgICAgICBDb3B5IHdlYmlkbDIuanMgZnJvbSBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzIHRvIHJlc291cmNlcy9XZWJJRExQYXJzZXIuanMKKyAg
ICAgICAgYmVjYXVzZSBpZGxoYXJuZXNzIHVzZXMgbmV3IHdlYmlkbDIuanMgbG9naWMuCisKKyAg
ICAgICAgRGVsZXRlIHRlc3RoYXJuZXNzLmNzcywgaXQgaXMgbm93IGJ1bmRsZWQgaW4gdGVzdGhh
cm5lc3MuanMuCisKKyAgICAgICAgVXBkYXRlIHRlc3RzIHRvIGFjY29tbW9kYXRlIHRoZSBBUEkg
Y2hhbmdlOgorICAgICAgICAgLSBhc3NlcnRfdGhyb3dzX2pzIGNoZWNrIHRoYXQgdGhlIGV4Y2Vw
dGlvbiBpcyBvZiBhIHBhcnRpY3VsYXIgSlMKKyAgICAgICAgICAgZXhjZXB0aW9uIHR5cGUKKyAg
ICAgICAgIC0gYXNzZXJ0X3Rocm93c19kb20gY2hlY2sgdGhhdCB0aGUgZXhjZXB0aW9uIGlzIG9m
IGEgcGFydGljdWxhcgorICAgICAgICAgICBET01FeGNlcHRpb24gdHlwZSBmcm9tIGEgcGFydGlj
dWxhciBnbG9iYWwgb2JqZWN0LgorICAgICAgICAgLSBhc3NlcnRfdGhyb3dzX2V4YWN0bHkgY2hl
Y2sgdGhhdCB0aGUgZXhjZXB0aW9uIGlzIGEgc3BlY2lmaWMKKyAgICAgICAgICAgb2JqZWN0Lgor
CisgICAgICAgIFByZXZpb3VzbHkgYXNzZXJ0X3Rocm93cyB3YXMgdXNlZCBhbmQgaXQgaGlkIHVu
ZXhwZWN0ZWQgZXhjZXB0aW9uIGVycm9ycy4KKworICAgICAgICBTYW1lIGZvciBwcm9taXNlX3Jl
amVjdHNfKgorCisgICAgICAgIGFzeW5jX3Rlc3QoZikgbm93IHdhcm5zIGlmIGYgaXMgbm90IGEg
bm9ybWFsIGZ1bmN0aW9uLgorCisgICAgICAgIFNpbmdsIHBhZ2UgdGVzdHMgbmVlZCBhIHNldHVw
IGZ1bmN0aW9uLgorCisgICAgICAgICogYW5pbWF0aW9ucy9hbmltYXRpb24tZGlyZWN0aW9uLW5v
cm1hbC5odG1sOgorICAgICAgICAqIGFuaW1hdGlvbnMvYW5pbWF0aW9uLWRpcmVjdGlvbi1yZXZl
cnNlLmh0bWw6CisgICAgICAgICogYW5pbWF0aW9ucy9jaGFuZ2Uta2V5ZnJhbWVzLW5hbWUuaHRt
bDoKKyAgICAgICAgKiBhbmltYXRpb25zL3BsYXktc3RhdGUtcGF1c2VkLmh0bWw6CisgICAgICAg
IGFzeW5jX3Rlc3QoYXN5bmMgZnVuY3Rpb24gey4uLn0pIGlzIGluY29ycmVjdCAoYXN5bmMgdGVz
dCBleHBlY3RzIG5vcm1hbAorICAgICAgICBmdW5jdGlvbiB0aGF0IGhhcyBhc3luY2hyb25vdXMg
bG9naWMsIG5vdCBhIGZ1bmN0aW9uIHJldHVybmluZyBhIHByb21pc2UuCisgICAgICAgIFVzZSBj
b3JyZWN0IGZvcm06CisgICAgICAgIHByb21pc2VfdGVzdChhc3luYyBmdW5jdGlvbiB7IC4uLiB9
KTsKKworICAgICAgICAqIGNzcy1jdXN0b20tcHJvcGVydGllcy1hcGkvcmVnaXN0ZXJQcm9wZXJ0
eS5odG1sOgorICAgICAgICBVcGRhdGUgZXhjZXB0aW9uIGV4cGVjdGF0aW9uIGZ1bmN0aW9ucy4K
KworICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaWRsLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWlkbC5odG1s
OgorICAgICAgICBVcGRhdGUgdGhlIGRhdGF0cmFuc2ZlciByZWxhdGVkIGlkbHMgZnJvbSBzb3Vy
Y2UsIG90aGVyd2lzZQorICAgICAgICB0ZXN0cyBmYWlsIChoYXJuZXNzIG5vdyB0ZXN0cyBmb3Ig
Y29uc3RydWN0b3IpLgorICAgICAgICBVcGRhdGUgdGhlIHJlc3VsdHMuCisKKyAgICAgICAgKiBl
ZGl0aW5nL3RleHQtaXRlcmF0b3IvY291bnQtbWF0Y2hlcy1pbi1mcmFtZXMuaHRtbDoKKyAgICAg
ICAgKiBlZGl0aW5nL3RleHQtaXRlcmF0b3IvaGlkZGVuLXRleHRhcmVhLXNlbGVjdGlvbi1xdWly
ay5odG1sOgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL3dlYmdsMi9iaW5kaW5ncy5odG1s
OgorICAgICAgICAqIGZhc3QvY3VzdG9tLWVsZW1lbnRzL2RlZmluZWQtcHNldWRvLWNsYXNzLmh0
bWw6CisgICAgICAgICogZmFzdC9jdXN0b20tZWxlbWVudHMvdGhyb3ctb24tZHluYW1pYy1tYXJr
dXAtaW5zZXJ0aW9uLWNvdW50ZXItY29uc3RydWN0Lmh0bWw6CisgICAgICAgICogZmFzdC9jdXN0
b20tZWxlbWVudHMvdGhyb3ctb24tZHluYW1pYy1tYXJrdXAtaW5zZXJ0aW9uLWNvdW50ZXItcmVh
Y3Rpb25zLmh0bWw6CisgICAgICAgICogZmFzdC9kb20vZG9jdW1lbnQtYWxsLmh0bWw6CisgICAg
ICAgICogZmFzdC9kb20vZWxlbWVudEZyb21Qb2ludC1wYXJhbWV0ZXJzLmh0bWw6CisgICAgICAg
ICogZmFzdC9kb20vcmVwbGFjZWFibGUtc2V0dGVyLXRocm93cy1pZi1kZWZpbmVvd25wcm9wZXJ0
eS1mYWlscy5odG1sOgorICAgICAgICAqIGZhc3QvZG9tL3dpbmRvdy1vcGVuZXItc2V0dGVyLXRo
cm93cy1pZi1kZWZpbmVvd25wcm9wZXJ0eS1mYWlscy0xLmh0bWw6CisgICAgICAgICogZmFzdC9k
b20vd2luZG93LW9wZW5lci1zZXR0ZXItdGhyb3dzLWlmLWRlZmluZW93bnByb3BlcnR5LWZhaWxz
LTIuaHRtbDoKKyAgICAgICAgKiBmYXN0L2V2ZW50cy9jbGlwYm9hcmQtZXZlbnQtY29uc3RydWN0
b3IuaHRtbDoKKyAgICAgICAgKiBmYXN0L2ZpbGVzL3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1m
aWxlLXJlYWRlci1zeW5jLWJhZC1wYXJhbWV0ZXIuanM6CisgICAgICAgICogZmFzdC9maWxlcy94
aHItYmxvYi1yZXF1ZXN0Lmh0bWw6CisgICAgICAgICogZmFzdC9tZWRpYWNhcHR1cmVmcm9tZWxl
bWVudC9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW0tZXhjZXB0aW9ucy5odG1sOgorICAgICAgICAq
IGZhc3QvbWVkaWFzZXNzaW9uL21ldGFkYXRhL2FydHdvcmtkb3dubG9hZC5odG1sOgorICAgICAg
ICAqIGZhc3QvbWVkaWFzdHJlYW0vc2NyZWVuY2FwdHVyZS11c2VyLWdlc3R1cmUuaHRtbDoKKyAg
ICAgICAgKiBmZXRjaC9mZXRjaC11cmwtc2VyaWFsaXphdGlvbi5odG1sOgorICAgICAgICAqIGh0
dHAvdGVzdHMvZmV0Y2gvZmV0Y2hpbmctc2FtZS1yZXNvdXJjZS13aXRoLWRpZmZlcmVudC1vcHRp
b25zLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9mZXRjaC9yZWRpcmVjdG1vZGUtYW5kLXBy
ZWxvYWQuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL25hdmlnYXRpb24vcHVzaHN0YXRlLWF0
LXVuaXF1ZS1vcmlnaW4tZGVuaWVkLnB5OgorICAgICAgICAqIGh0dHAvdGVzdHMvbm90aWZpY2F0
aW9ucy9ub3RpZmljYXRpb24uaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3BheW1lbnRyZXF1
ZXN0L3BheW1lbnQtYWRkcmVzcy1hdHRyaWJ1dGVzLWFuZC10b0pTT04tbWV0aG9kLmh0dHBzLmh0
bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LWlzLXNob3dp
bmcuaHR0cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1l
bnQtcmVxdWVzdC1hYm9ydC1tZXRob2QuaHR0cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3Rz
L3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVxdWVzdC1jYW5tYWtlcGF5bWVudC1tZXRob2QuaHR0
cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVx
dWVzdC1tZXJjaGFudC12YWxpZGF0aW9uLmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0
cy9wYXltZW50cmVxdWVzdC9wYXltZW50LXJlcXVlc3Qtc2hvdy1tZXRob2QuaHR0cHMuaHRtbDoK
KyAgICAgICAgKiBodHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVzcG9uc2UtcmVq
ZWN0cy1pZi1ub3QtYWN0aXZlLmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9wYXlt
ZW50cmVxdWVzdC9wYXltZW50LXJlc3BvbnNlLXJldHJ5LW1ldGhvZC5odHRwcy5odG1sOgorICAg
ICAgICAqIGh0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcmVqZWN0c19pZl9ub3RfYWN0aXZlLmh0
dHBzLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC91cGRhdGVXaXRo
LW1ldGhvZC1wbWktaGFuZGxpbmcuaHR0cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3Nl
Y3VyaXR5L2J5cGFzc2luZy1jb3JzLWNoZWNrcy1mb3ItZXh0ZW5zaW9uLXVybHMuaHRtbDoKKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2NsZWFuLW9yaWdpbi1jc3MtZXhwb3NlZC1yZXNv
dXJjZS10aW1pbmcuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRT
ZWN1cml0eVBvbGljeS8xLjEvZnJhbWUtYW5jZXN0b3JzL2ZyYW1lLWFuY2VzdG9ycy1vdmVycmlk
ZXMteGZvLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJp
dHlQb2xpY3kvMS4xL3NjcmlwdGhhc2gtZGVmYXVsdC1zcmMuaHRtbDoKKyAgICAgICAgKiBodHRw
L3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS8xLjEvc3R5bGVoYXNoLWRlZmF1
bHQtc3JjLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJp
dHlQb2xpY3kvc2NyaXB0LXNyYy1ibG9ja2VkLWVycm9yLWV2ZW50Lmh0bWw6CisgICAgICAgICog
aHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4tY2xlYW4tY3NzLXJlc291cmNlLXRpbWlu
Zy5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLWNzcy1y
ZXNvdXJjZS10aW1pbmcuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3N1YnJlc291cmNlLWlu
dGVncml0eS9zcmktZmV0Y2guanM6CisgICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZp
Y2Uvc2VydmljZS13b3JrZXItY3Jvc3NvcmlnaW4tZmV0Y2guaHRtbDoKKyAgICAgICAgKiBodHRw
L3Rlc3RzL3htbGh0dHByZXF1ZXN0L3NldC1iYWQtaGVhZGVydmFsdWUuaHRtbDoKKyAgICAgICAg
KiBpbnRlcnNlY3Rpb24tb2JzZXJ2ZXIvaW50ZXJzZWN0aW9uLW9ic2VydmVyLWludGVyZmFjZS5o
dG1sOgorICAgICAgICAqIGpzL2RvbS9kb20tZ2V0dGVycy10eXBlLWNoZWNrLmh0bWw6CisgICAg
ICAgICoganMvZG9tL2xlZ2FjeS1wbGF0Zm9ybS1vYmplY3QtZGVmaW5lT3duUHJvcGVydHkuaHRt
bDoKKyAgICAgICAgKiBqcy9kb20vcG9zdC1tZXNzYWdlLXN5bWJvbC5odG1sOgorICAgICAgICAq
IGpzL2RvbS9xdWV1ZS1taWNyb3Rhc2std2luZG93Lmh0bWw6CisgICAgICAgICogbWVkaWEvdHJh
Y2svb3BlcmEvaW50ZXJmYWNlcy9UZXh0VHJhY2tDdWUvdmVydGljYWwuaHRtbDoKKyAgICAgICAg
KiBtZWRpYS90cmFjay9vcGVyYS9yZXNvdXJjZXMvaWRsaGFybmVzcy5qczoKKyAgICAgICAgKiBt
ZWRpYS90cmFjay90ZXh0dHJhY2tjdWUvdGV4dHRyYWNrY3VlLWNvbnN0cnVjdG9yLmh0bWw6Cisg
ICAgICAgICogbWVkaWEvdHJhY2svdzNjL2ludGVyZmFjZXMvVGV4dFRyYWNrQ3VlL2FsaWduLmh0
bWw6CisgICAgICAgICogcG9pbnRlcmV2ZW50cy9pb3MvcG9pbnRlci1ldmVudHMtaW1wbGljaXQt
Y2FwdHVyZS1yZWxlYXNlLWV4Y2VwdGlvbi5odG1sOgorICAgICAgICAqIHBvaW50ZXJldmVudHMv
aW9zL3BvaW50ZXItZXZlbnRzLXNldC1wb2ludGVyLWNhcHR1cmUtZXhjZXB0aW9ucy5odG1sOgor
ICAgICAgICAqIHBvaW50ZXJldmVudHMvcG9pbnRlci1pZC1jcmFzaC5odG1sOgorICAgICAgICAq
IHJlc291cmNlcy9XZWJJRExQYXJzZXIuanM6CisgICAgICAgICogcmVzb3VyY2VzL2lkbGhhcm5l
c3MuanM6CisgICAgICAgIFVwZGF0ZSBmcm9tIHdwdC4KKyAgICAgICAgKiByZXNvdXJjZXMvdGVz
dGhhcm5lc3MuY3NzOiBSZW1vdmVkLgorICAgICAgICAqIHJlc291cmNlcy90ZXN0aGFybmVzcy5q
czoKKyAgICAgICAgVXBkYXRlIGZyb20gd3B0LgorICAgICAgICAqIHN0b3JhZ2Uvd2Vic3FsL29w
ZW5EYXRhYmFzZS1kZXByZWNhdGlvbi5odG1sOgorICAgICAgICAqIHN0cmVhbXMvcmVhZGFibGUt
Ynl0ZS1zdHJlYW0tY29udHJvbGxlci5qczoKKyAgICAgICAgKiBzdHJlYW1zL3JlYWRhYmxlLXN0
cmVhbS1ieW9iLXJlYWRlci5qczoKKyAgICAgICAgKiBzdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1i
eW9iLXJlcXVlc3QuanM6CisgICAgICAgICogc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tZ2V0UmVh
ZGVyLmh0bWw6CisgICAgICAgICogc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vYmFk
LXN0cmF0ZWdpZXMuaHRtbDoKKyAgICAgICAgKiBzdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRh
dGlvbi9iYWQtdW5kZXJseWluZy1zaW5rcy5odG1sOgorICAgICAgICAqIHN0cmVhbXMvcmVmZXJl
bmNlLWltcGxlbWVudGF0aW9uL3RyYW5zZm9ybS1zdHJlYW0tZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIHN0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3RyYW5zZm9ybS1zdHJlYW0uaHRt
bDoKKyAgICAgICAgKiB3ZWJhbmltYXRpb25zL2FjY2VsZXJhdGVkLWFuaW1hdGlvbi1zaW5nbGUt
a2V5ZnJhbWUuaHRtbDoKKyAgICAgICAgKiB3ZWJhbmltYXRpb25zL2ZyYW1lLXJhdGUvYW5pbWF0
aW9uLWZyYW1lLXJhdGUuaHRtbDoKKyAgICAgICAgKiB3ZWJhbmltYXRpb25zL3NjaGVkdWxpbmct
b2YtYW5pbWF0aW9uLXdpdGgtc3RlcHMtdGltaW5nLWZ1bmN0aW9uLW9uLWVmZmVjdC5odG1sOgor
ICAgICAgICAqIHdlYmFuaW1hdGlvbnMvc2NoZWR1bGluZy1vZi1hbmltYXRpb24td2l0aC1zdGVw
cy10aW1pbmctZnVuY3Rpb24tb24ta2V5ZnJhbWUuaHRtbDoKKyAgICAgICAgKiB3ZWJhbmltYXRp
b25zL3NjaGVkdWxpbmctb2YtY3NzLWFuaW1hdGlvbi13aXRoLWV4cGxpY2l0LXN0ZXBzLXRpbWlu
Zy1mdW5jdGlvbi1vbi1zb21lLWtleWZyYW1lcy5odG1sOgorICAgICAgICAqIHdlYmFuaW1hdGlv
bnMvc2NoZWR1bGluZy1vZi1jc3MtYW5pbWF0aW9uLXdpdGgtaW1wbGljaXQtc3RlcHMtdGltaW5n
LWZ1bmN0aW9uLmh0bWw6CisgICAgICAgICogd2ViYXVkaW8vd2ViYXVkaW8tZ2MuaHRtbDoKKyAg
ICAgICAgKiB3ZWJydGMvY2FsbGluZy1wZWVyY29ubmVjdGlvbi1vbmNlLWNsb3NlZC5odG1sOgor
ICAgICAgICAqIHdlYnJ0Yy9jZXJ0aWZpY2F0ZXMtaW5kZXhlZGRiLmh0bWw6CisgICAgICAgICog
d2VicnRjL2RhdGFjaGFubmVsL2NyZWF0aW9uLmh0bWw6CisgICAgICAgICogd2VicnRjL2RhdGFj
aGFubmVsL2RhdGFjaGFubmVsLWV2ZW50Lmh0bWw6CisgICAgICAgICogd2VicnRjL2RhdGFjaGFu
bmVsL2dldFN0YXRzLW5vLXByZmx4LXJlbW90ZS1jYW5kaWRhdGUuaHRtbDoKKyAgICAgICAgKiB3
ZWJydGMvZGlzYWJsZS1lbmNyeXB0aW9uLmh0bWw6CisgICAgICAgICogd2VicnRjL2xlZ2FjeS1h
cGktZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYnJ0Yy9wYy1kZXRhY2hlZC1kb2N1bWVudC5o
dG1sOgorICAgICAgICAqIHdlYnJ0Yy9zdHVuLXNlcnZlci1maWx0ZXJpbmcuaHRtbDoKKwogMjAy
Mi0wMS0yNCAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFN0cmVhbXMgdGVzdHMgdHJ5IHRvIGNhbGwgUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLnBpcGVU
aHJvdWdoLmNhbGwgZ2VuZXJpY2FsbHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4
IGQ2MjM1NjkxODY5ZjUyNTRlM2Q1NTc2ZWUxYmY2YjgwN2NhMGU4N2YuLmZkZDczY2NhNTc5Njdm
Mjk3MDYwZjQ3YjAwZjM1M2IzN2Q5NjdjYTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDExNiBAQAorMjAyMi0wMS0yOCAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVu
ZW5AYXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0ZSBMYXlvdXRUZXN0cy9yZXNvdXJjZXMvdGVz
dGhhcm5lc3MuanMgdG8gMjAyMS02LTI0IHZlcnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTM5OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
ODgxMjYyMjI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgZG9uZS11cGRhdGUKKworICAgICAgICAqIEluZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2Ns
b3NlLWluLXVwZ3JhZGVuZWVkZWQuaHRtbDoKKyAgICAgICAgKiBJbmRleGVkREItcHJpdmF0ZS1i
cm93c2luZy9pZGJjdXJzb3ItYWR2YW5jZS1pbnZhbGlkLmh0bWw6CisgICAgICAgICogSW5kZXhl
ZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2FkdmFuY2VfaW5kZXgyLmh0bWw6CisgICAg
ICAgICogSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2FkdmFuY2VfaW5kZXgz
Lmh0bWw6CisgICAgICAgICogSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2Fk
dmFuY2VfaW5kZXg2Lmh0bWw6CisgICAgICAgICogSW5kZXhlZERCLXByaXZhdGUtYnJvd3Npbmcv
aWRiY3Vyc29yX2FkdmFuY2VfaW5kZXg3Lmh0bWw6CisgICAgICAgICogSW5kZXhlZERCLXByaXZh
dGUtYnJvd3NpbmcvaWRiY3Vyc29yX2FkdmFuY2VfaW5kZXg4Lmh0bWw6CisgICAgICAgICogSW5k
ZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2FkdmFuY2VfaW5kZXg5Lmh0bWw6Cisg
ICAgICAgICogSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2FkdmFuY2Vfb2Jq
ZWN0c3RvcmUyLmh0bWw6CisgICAgICAgICogSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRi
Y3Vyc29yX2FkdmFuY2Vfb2JqZWN0c3RvcmUzLmh0bWw6CisgICAgICAgICogSW5kZXhlZERCLXBy
aXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2FkdmFuY2Vfb2JqZWN0c3RvcmU0Lmh0bWw6CisgICAg
ICAgICogSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2FkdmFuY2Vfb2JqZWN0
c3RvcmU1Lmh0bWw6CisgICAgICAgICogSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vy
c29yX2NvbnRpbnVlX2luZGV4Mi5odG1sOgorICAgICAgICAqIEluZGV4ZWREQi1wcml2YXRlLWJy
b3dzaW5nL2lkYmN1cnNvcl9jb250aW51ZV9pbmRleDMuaHRtbDoKKyAgICAgICAgKiBJbmRleGVk
REItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfY29udGludWVfaW5kZXg0Lmh0bWw6CisgICAg
ICAgICogSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2NvbnRpbnVlX2luZGV4
Ny5odG1sOgorICAgICAgICAqIEluZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9j
b250aW51ZV9pbmRleDguaHRtbDoKKyAgICAgICAgKiBJbmRleGVkREItcHJpdmF0ZS1icm93c2lu
Zy9pZGJjdXJzb3JfY29udGludWVfaW52YWxpZC5odG1sOgorICAgICAgICAqIEluZGV4ZWREQi1w
cml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9jb250aW51ZV9vYmplY3RzdG9yZTIuaHRtbDoKKyAg
ICAgICAgKiBJbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfY29udGludWVfb2Jq
ZWN0c3RvcmUzLmh0bWw6CisgICAgICAgICogSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRi
Y3Vyc29yX2NvbnRpbnVlX29iamVjdHN0b3JlNC5odG1sOgorICAgICAgICAqIEluZGV4ZWREQi1w
cml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9jb250aW51ZV9vYmplY3RzdG9yZTUuaHRtbDoKKyAg
ICAgICAgKiBJbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfY29udGludWVfb2Jq
ZWN0c3RvcmU2Lmh0bWw6CisgICAgICAgICogSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRi
Y3Vyc29yX2RlbGV0ZV9pbmRleDIuaHRtbDoKKyAgICAgICAgKiBJbmRleGVkREItcHJpdmF0ZS1i
cm93c2luZy9pZGJjdXJzb3JfZGVsZXRlX2luZGV4My5odG1sOgorICAgICAgICAqIEluZGV4ZWRE
Qi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9kZWxldGVfaW5kZXg0Lmh0bWw6CisgICAgICAg
ICogSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2RlbGV0ZV9pbmRleDUuaHRt
bDoKKyAgICAgICAgKiBJbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfZGVsZXRl
X29iamVjdHN0b3JlMi5odG1sOgorICAgICAgICAqIEluZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5n
L2lkYmN1cnNvcl9kZWxldGVfb2JqZWN0c3RvcmUzLmh0bWw6CisgICAgICAgICogSW5kZXhlZERC
LXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2RlbGV0ZV9vYmplY3RzdG9yZTQuaHRtbDoKKyAg
ICAgICAgKiBJbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfZGVsZXRlX29iamVj
dHN0b3JlNS5odG1sOgorICAgICAgICAqIEluZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1
cnNvcl91cGRhdGVfaW5kZXgyLmh0bWw6CisgICAgICAgICogSW5kZXhlZERCLXByaXZhdGUtYnJv
d3NpbmcvaWRiY3Vyc29yX3VwZGF0ZV9pbmRleDMuaHRtbDoKKyAgICAgICAgKiBJbmRleGVkREIt
cHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfdXBkYXRlX2luZGV4NC5odG1sOgorICAgICAgICAq
IEluZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl91cGRhdGVfaW5kZXg1Lmh0bWw6
CisgICAgICAgICogSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX3VwZGF0ZV9p
bmRleDYuaHRtbDoKKyAgICAgICAgKiBJbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJz
b3JfdXBkYXRlX2luZGV4Ny5odG1sOgorICAgICAgICAqIEluZGV4ZWREQi1wcml2YXRlLWJyb3dz
aW5nL2lkYmN1cnNvcl91cGRhdGVfb2JqZWN0c3RvcmUyLmh0bWw6CisgICAgICAgICogSW5kZXhl
ZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX3VwZGF0ZV9vYmplY3RzdG9yZTMuaHRtbDoK
KyAgICAgICAgKiBJbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfdXBkYXRlX29i
amVjdHN0b3JlNS5odG1sOgorICAgICAgICAqIEluZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lk
YmN1cnNvcl91cGRhdGVfb2JqZWN0c3RvcmU2Lmh0bWw6CisgICAgICAgICogSW5kZXhlZERCLXBy
aXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX3VwZGF0ZV9vYmplY3RzdG9yZTcuaHRtbDoKKyAgICAg
ICAgKiBJbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfdXBkYXRlX29iamVjdHN0
b3JlOC5odG1sOgorICAgICAgICAqIEluZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmRhdGFi
YXNlX2NyZWF0ZU9iamVjdFN0b3JlMTEuaHRtbDoKKyAgICAgICAgKiBJbmRleGVkREItcHJpdmF0
ZS1icm93c2luZy9pZGJkYXRhYmFzZV9jcmVhdGVPYmplY3RTdG9yZTMuaHRtbDoKKyAgICAgICAg
KiBJbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJkYXRhYmFzZV9jcmVhdGVPYmplY3RTdG9y
ZTQuaHRtbDoKKyAgICAgICAgKiBJbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJkYXRhYmFz
ZV9jcmVhdGVPYmplY3RTdG9yZTYuaHRtbDoKKyAgICAgICAgKiBJbmRleGVkREItcHJpdmF0ZS1i
cm93c2luZy9pZGJkYXRhYmFzZV9jcmVhdGVPYmplY3RTdG9yZTktaW52YWxpZHBhcmFtZXRlcnMu
aHRtbDoKKyAgICAgICAgKiBJbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJkYXRhYmFzZV9k
ZWxldGVPYmplY3RTdG9yZTIuaHRtbDoKKyAgICAgICAgKiBJbmRleGVkREItcHJpdmF0ZS1icm93
c2luZy9pZGJkYXRhYmFzZV9kZWxldGVPYmplY3RTdG9yZTMuaHRtbDoKKyAgICAgICAgKiBJbmRl
eGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJkYXRhYmFzZV9kZWxldGVPYmplY3RTdG9yZTQtbm90
X3JldXNlZC5odG1sOgorICAgICAgICAqIEluZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmRh
dGFiYXNlX3RyYW5zYWN0aW9uLmh0bWw6CisgICAgICAgICogSW5kZXhlZERCLXByaXZhdGUtYnJv
d3NpbmcvaWRiZGF0YWJhc2VfdHJhbnNhY3Rpb24zLmh0bWw6CisgICAgICAgICogSW5kZXhlZERC
LXByaXZhdGUtYnJvd3NpbmcvaWRiZGF0YWJhc2VfdHJhbnNhY3Rpb240Lmh0bWw6CisgICAgICAg
ICogSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiZGF0YWJhc2VfdHJhbnNhY3Rpb241Lmh0
bWw6CisgICAgICAgICogSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiZmFjdG9yeV9jbXAy
Lmh0bWw6CisgICAgICAgICogSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiZmFjdG9yeV9v
cGVuOS5odG1sOgorICAgICAgICAqIEluZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmluZGV4
LW11bHRpZW50cnktYXJyYXlrZXlwYXRoLmh0bWw6CisgICAgICAgICogSW5kZXhlZERCLXByaXZh
dGUtYnJvd3NpbmcvaWRiaW5kZXhfY291bnQ0Lmh0bWw6CisgICAgICAgICogSW5kZXhlZERCLXBy
aXZhdGUtYnJvd3NpbmcvaWRiaW5kZXhfZ2V0NS5odG1sOgorICAgICAgICAqIEluZGV4ZWREQi1w
cml2YXRlLWJyb3dzaW5nL2lkYmluZGV4X2dldDYuaHRtbDoKKyAgICAgICAgKiBJbmRleGVkREIt
cHJpdmF0ZS1icm93c2luZy9pZGJpbmRleF9nZXQ3Lmh0bWw6CisgICAgICAgICogSW5kZXhlZERC
LXByaXZhdGUtYnJvd3NpbmcvaWRiaW5kZXhfZ2V0S2V5NS5odG1sOgorICAgICAgICAqIEluZGV4
ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmluZGV4X2dldEtleTYuaHRtbDoKKyAgICAgICAgKiBJ
bmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJpbmRleF9nZXRLZXk3Lmh0bWw6CisgICAgICAg
ICogSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiaW5kZXhfb3BlbkN1cnNvci5odG1sOgor
ICAgICAgICAqIEluZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmluZGV4X29wZW5DdXJzb3Iy
Lmh0bWw6CisgICAgICAgICogSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiaW5kZXhfb3Bl
bktleUN1cnNvci5odG1sOgorICAgICAgICAqIEluZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lk
YmluZGV4X29wZW5LZXlDdXJzb3IyLmh0bWw6CisgICAgICAgICogSW5kZXhlZERCLXByaXZhdGUt
YnJvd3NpbmcvaWRiaW5kZXhfb3BlbktleUN1cnNvcjMuaHRtbDoKKyAgICAgICAgKiBJbmRleGVk
REItcHJpdmF0ZS1icm93c2luZy9pZGJrZXlyYW5nZV9pbmNvcnJlY3QuaHRtbDoKKyAgICAgICAg
KiBJbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9hZGQxMC5odG1sOgor
ICAgICAgICAqIEluZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2FkZDEx
Lmh0bWw6CisgICAgICAgICogSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3Rv
cmVfYWRkMTIuaHRtbDoKKyAgICAgICAgKiBJbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJv
YmplY3RzdG9yZV9hZGQxMy5odG1sOgorICAgICAgICAqIEluZGV4ZWREQi1wcml2YXRlLWJyb3dz
aW5nL2lkYm9iamVjdHN0b3JlX2FkZDE1Lmh0bWw6CisgICAgICAgICogSW5kZXhlZERCLXByaXZh
dGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfYWRkMTYuaHRtbDoKKyAgICAgICAgKiBJbmRleGVk
REItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9hZGQ5Lmh0bWw6CisgICAgICAgICog
SW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfY2xlYXIzLmh0bWw6Cisg
ICAgICAgICogSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfY2xlYXI0
Lmh0bWw6CisgICAgICAgICogSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3Rv
cmVfY291bnQ0Lmh0bWw6CisgICAgICAgICogSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRi
b2JqZWN0c3RvcmVfY3JlYXRlSW5kZXgxMC5odG1sOgorICAgICAgICAqIEluZGV4ZWREQi1wcml2
YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2NyZWF0ZUluZGV4MTEuaHRtbDoKKyAgICAgICAg
KiBJbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9jcmVhdGVJbmRleDEy
Lmh0bWw6CisgICAgICAgICogSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3Rv
cmVfY3JlYXRlSW5kZXgxMy5odG1sOgorICAgICAgICAqIEluZGV4ZWREQi1wcml2YXRlLWJyb3dz
aW5nL2lkYm9iamVjdHN0b3JlX2RlbGV0ZTYuaHRtbDoKKyAgICAgICAgKiBJbmRleGVkREItcHJp
dmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9kZWxldGU3Lmh0bWw6CisgICAgICAgICogSW5k
ZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfZGVsZXRlSW5kZXguaHRtbDoK
KyAgICAgICAgKiBJbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9kZWxl
dGVkLmh0bWw6CisgICAgICAgICogSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0
c3RvcmVfZ2V0Ni5odG1sOgorICAgICAgICAqIEluZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lk
Ym9iamVjdHN0b3JlX2dldDcuaHRtbDoKKyAgICAgICAgKiBJbmRleGVkREItcHJpdmF0ZS1icm93
c2luZy9pZGJvYmplY3RzdG9yZV9vcGVuQ3Vyc29yX2ludmFsaWQuaHRtbDoKKyAgICAgICAgKiBJ
bmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9wdXQxMC5odG1sOgorICAg
ICAgICAqIEluZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX3B1dDExLmh0
bWw6CisgICAgICAgICogSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVf
cHV0MTIuaHRtbDoKKyAgICAgICAgKiBJbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmpl
Y3RzdG9yZV9wdXQxMy5odG1sOgorICAgICAgICAqIEluZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5n
L2lkYm9iamVjdHN0b3JlX3B1dDE1Lmh0bWw6CisgICAgICAgICogSW5kZXhlZERCLXByaXZhdGUt
YnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfcHV0MTYuaHRtbDoKKyAgICAgICAgKiBJbmRleGVkREIt
cHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9wdXQ5Lmh0bWw6CisgICAgICAgICogSW5k
ZXhlZERCLXByaXZhdGUtYnJvd3Npbmcva2V5X2ludmFsaWQuaHRtbDoKKyAgICAgICAgKiBJbmRl
eGVkREItcHJpdmF0ZS1icm93c2luZy9rZXlwYXRoX2ludmFsaWQuaHRtbDoKKyAgICAgICAgKiBJ
bmRleGVkREItcHJpdmF0ZS1icm93c2luZy90cmFuc2FjdGlvbi1jcmVhdGVfaW5fdmVyc2lvbmNo
YW5nZS5odG1sOgorCiAyMDIyLTAxLTI0ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNv
bT4KIAogICAgICAgICBBIHNhbmRib3hlZCBkb2N1bWVudCBzaG91bGQgbm90IHJldXNlIGl0cyBz
ZXJ2aWNlIHdvcmtlciBjbGllbnQgSUQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FuaW1hdGlv
bnMvYW5pbWF0aW9uLWRpcmVjdGlvbi1ub3JtYWwuaHRtbCBiL0xheW91dFRlc3RzL2FuaW1hdGlv
bnMvYW5pbWF0aW9uLWRpcmVjdGlvbi1ub3JtYWwuaHRtbAppbmRleCAzZjI3YzhiNTc3YjI0YTQz
OThkMzdhOWJkNzA0NWQwZGExZDZmM2Y2Li5mYWFlYjViMDIzNjAyMzNhN2ZkODUyMzRiMTBlZGMy
NDJkM2YzYjc3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2FuaW1hdGlvbi1k
aXJlY3Rpb24tbm9ybWFsLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9hbmltYXRp
b24tZGlyZWN0aW9uLW5vcm1hbC5odG1sCkBAIC0zNCw3ICszNCw3IEBACiA8Ym9keT4KIDxkaXYg
aWQ9ImJveCI+PC9kaXY+CiA8c2NyaXB0PgotICAgIGFzeW5jX3Rlc3QoYXN5bmMgdCA9PiB7Cisg
ICAgcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4gewogICAgICAgICBjb25zdCBkZWxheSA9IDEwMDsK
IAogICAgICAgICBjb25zdCB0ZXN0ID0gbmV3IEFuaW1hdGlvblRlc3QoewpAQCAtNTYsOCArNTYs
NiBAQAogCiAgICAgICAgIC8vIEZpbmFsbHksIGNoZWNrIHRoZSB2YWx1ZXMgcmVjb3JkZWQgZWFy
bGllciBpbiB0aGUgdGVzdC4KICAgICAgICAgdGVzdC5jaGVja1JlY29yZGVkVmFsdWVzKCk7Ci0K
LSAgICAgICAgdC5kb25lKCk7CiAgICAgfSwgYFBhdXNpbmcgYW4gYW5pbWF0aW9uIHVzaW5nIHRo
ZSBhbmltYXRpb24tcGxheS1zdGF0ZSBwcm9wZXJ0eSBzdG9wcyBhbmltYXRpbmcgc3R5bGVzLmAp
OwogPC9zY3JpcHQ+CiA8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hbmltYXRpb25z
L2FuaW1hdGlvbi1kaXJlY3Rpb24tcmV2ZXJzZS5odG1sIGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9u
cy9hbmltYXRpb24tZGlyZWN0aW9uLXJldmVyc2UuaHRtbAppbmRleCAzYTdhNGY5YzViZGFkMWU5
MzdjZGU5M2E0OTBlMTI1ZGM4MDEzMmJlLi5lZTg1ZjkyYmJjYzdlYWVhMDY2ODllYzllMDIxMTI1
MDZlYTA1NGJkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2FuaW1hdGlvbi1k
aXJlY3Rpb24tcmV2ZXJzZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvYW5pbWF0
aW9uLWRpcmVjdGlvbi1yZXZlcnNlLmh0bWwKQEAgLTM0LDcgKzM0LDcgQEAKIDxib2R5PgogPGRp
diBpZD0iYm94Ij48L2Rpdj4KIDxzY3JpcHQ+Ci0gICAgYXN5bmNfdGVzdChhc3luYyB0ID0+IHsK
KyAgICBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CiAgICAgICAgIGNvbnN0IGRlbGF5ID0gMTAw
OwogCiAgICAgICAgIGNvbnN0IHRlc3QgPSBuZXcgQW5pbWF0aW9uVGVzdCh7CkBAIC01Niw4ICs1
Niw2IEBACiAKICAgICAgICAgLy8gRmluYWxseSwgY2hlY2sgdGhlIHZhbHVlcyByZWNvcmRlZCBl
YXJsaWVyIGluIHRoZSB0ZXN0LgogICAgICAgICB0ZXN0LmNoZWNrUmVjb3JkZWRWYWx1ZXMoKTsK
LQotICAgICAgICB0LmRvbmUoKTsKICAgICB9LCBgUGF1c2luZyBhbiBhbmltYXRpb24gdXNpbmcg
dGhlIGFuaW1hdGlvbi1wbGF5LXN0YXRlIHByb3BlcnR5IHN0b3BzIGFuaW1hdGluZyBzdHlsZXMg
d2l0aCBhbmltYXRpb24tZGlyZWN0aW9uOiByZXZlcnNlLmApOwogPC9zY3JpcHQ+CiA8L2JvZHk+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2NoYW5nZS1rZXlmcmFtZXMtbmFt
ZS5odG1sIGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9jaGFuZ2Uta2V5ZnJhbWVzLW5hbWUuaHRt
bAppbmRleCBiNzIwMmY1OTcyZWIwY2IxZDFlNDg4YjFiNTVjOTFiODllZWM5MzNiLi45NjJmY2Jm
YTQ1OTMzOGI3YzE3NTQwMDBhZDFkYmJjYTMzYzUyOTYwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9hbmltYXRpb25zL2NoYW5nZS1rZXlmcmFtZXMtbmFtZS5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2FuaW1hdGlvbnMvY2hhbmdlLWtleWZyYW1lcy1uYW1lLmh0bWwKQEAgLTQ1LDcgKzQ1LDcgQEAK
ICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgfQogCi0gICAgYXN5bmNfdGVzdChhc3luYyB0ID0+
IHsKKyAgICBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CiAgICAgICAgIGNvbnN0IGRlbGF5ID0g
MTAwOwogICAgICAgICBjb25zdCBib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYm94Iik7
CiAgICAgICAgIGNvbnN0IHByZXZpb3VzQW5pbWF0aW9uTmFtZSA9ICJmb28iOwpAQCAtNzQsMTAg
Kzc0LDcgQEAKIAogICAgICAgICAvLyBOb3csIGNoZWNrIHRoZSByZWNvcmRlZCB2YWx1ZXMgd2Vy
ZSBjb3JyZWN0LgogICAgICAgICB0ZXN0LmNoZWNrUmVjb3JkZWRWYWx1ZXMoKTsKLQotICAgICAg
ICB0LmRvbmUoKTsKICAgICB9LCBgVGVzdCB0aGF0IGR5bmFtaWNhbGx5IGNoYW5naW5nIHRoZSBu
YW1lIG9mIGEgQGtleWZyYW1lcyBydWxlIHN0YXJ0cyBhbmltYXRpb25zIHVzaW5nIHRoYXQgbmFt
ZS5gKTsKLSAgICAKICAgPC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9hbmltYXRpb25zL3BsYXktc3RhdGUtcGF1c2VkLmh0bWwgYi9MYXlvdXRUZXN0
cy9hbmltYXRpb25zL3BsYXktc3RhdGUtcGF1c2VkLmh0bWwKaW5kZXggMDk2MjEwYjZjZGJhNTll
YzY4MGNiZjM2YzEzMzk2NDY0ODJjZTBhMS4uODI2NWU5NWUzZTllYjY4NzI5MzRhYTZkZmEwYTMy
MWFmNTJjMDRiNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9wbGF5LXN0YXRl
LXBhdXNlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvcGxheS1zdGF0ZS1wYXVz
ZWQuaHRtbApAQCAtMzUsNyArMzUsNyBAQAogPGRpdiBpZD0iYm94Ij48L2Rpdj4KIDxzY3JpcHQ+
CiAKLWFzeW5jX3Rlc3QoYXN5bmMgdCA9PiB7Citwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CiAg
ICAgY29uc3QgZGVsYXkgPSAxMDA7CiAKICAgICBjb25zdCB0ZXN0ID0gbmV3IEFuaW1hdGlvblRl
c3QoewpAQCAtNTcsOCArNTcsNiBAQCBhc3luY190ZXN0KGFzeW5jIHQgPT4gewogCiAgICAgLy8g
RmluYWxseSwgY2hlY2sgdGhlIHZhbHVlcyByZWNvcmRlZCBlYXJsaWVyIGluIHRoZSB0ZXN0Lgog
ICAgIHRlc3QuY2hlY2tSZWNvcmRlZFZhbHVlcygpOwotCi0gICAgdC5kb25lKCk7CiB9LCBgUGF1
c2luZyBhbiBhbmltYXRpb24gdXNpbmcgdGhlIGFuaW1hdGlvbi1wbGF5LXN0YXRlIHByb3BlcnR5
IHN0b3BzIGFuaW1hdGluZyBzdHlsZXMuYCk7CiAKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvY3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9yZWdpc3RlclByb3BlcnR5Lmh0bWwg
Yi9MYXlvdXRUZXN0cy9jc3MtY3VzdG9tLXByb3BlcnRpZXMtYXBpL3JlZ2lzdGVyUHJvcGVydHku
aHRtbAppbmRleCA5MTZkNGI0OTQwMzRmMmIxZGJmYzBhZjIzNWIxNDQyYzlhMTI0ODI1Li43Yjky
NDAzNTI1ZDMyMzIyYzBjNTU5MGFlYTg2N2E4NTI2MGNkNWRmIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9jc3MtY3VzdG9tLXByb3BlcnRpZXMtYXBpL3JlZ2lzdGVyUHJvcGVydHkuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9jc3MtY3VzdG9tLXByb3BlcnRpZXMtYXBpL3JlZ2lzdGVyUHJvcGVydHku
aHRtbApAQCAtNiwxMiArNiwxMiBAQAogPHNjcmlwdD4KIC8vIFRlc3RzIGZvciBlcnJvciBjaGVj
a2luZyBkdXJpbmcgcHJvcGVydHkgcmVnaXN0cmF0aW9uCiB0ZXN0KGZ1bmN0aW9uKCkgewotICAg
IGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0
eSgpKTsKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gQ1NTLnJlZ2lz
dGVyUHJvcGVydHkodW5kZWZpbmVkKSk7Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9y
KCksICgpID0+IENTUy5yZWdpc3RlclByb3BlcnR5KHRydWUpKTsKLSAgICBhc3NlcnRfdGhyb3dz
KG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gQ1NTLnJlZ2lzdGVyUHJvcGVydHkoMikpOwotICAgIGFz
c2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSgi
Y3NzIikpOwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBDU1MucmVn
aXN0ZXJQcm9wZXJ0eShudWxsKSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgp
ID0+IENTUy5yZWdpc3RlclByb3BlcnR5KCkpOworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVy
cm9yLCAoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh1bmRlZmluZWQpKTsKKyAgICBhc3NlcnRf
dGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gQ1NTLnJlZ2lzdGVyUHJvcGVydHkodHJ1ZSkpOwor
ICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0
eSgyKSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IENTUy5yZWdpc3Rl
clByb3BlcnR5KCJjc3MiKSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+
IENTUy5yZWdpc3RlclByb3BlcnR5KG51bGwpKTsKIH0sICJyZWdpc3RlclByb3BlcnR5IHJlcXVp
cmVzIGEgRGljdGlvbmFyeSB0eXBlIik7CiB0ZXN0KGZ1bmN0aW9uKCkgewogICAgIC8vIFZhbGlk
IHByb3BlcnR5IG5hbWVzLCBzaG91bGRuJ3QgdGhyb3cKQEAgLTE5LDE5ICsxOSwxOSBAQCB0ZXN0
KGZ1bmN0aW9uKCkgewogICAgIENTUy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiAnLS1uYW1lMiwg
bm8gbmVlZCBmb3IgZXNjYXBlcycsIGluaGVyaXRzOiBmYWxzZX0pOwogICAgIENTUy5yZWdpc3Rl
clByb3BlcnR5KHtuYW1lOiBbJy0tbmFtZScsIDNdLCBpbmhlcml0czogZmFsc2V9KTsKICAgICAv
LyBJbnZhbGlkIHByb3BlcnR5IG5hbWVzCi0gICAgYXNzZXJ0X3Rocm93cyhuZXcgU3ludGF4RXJy
b3IoKSwgKCkgPT4gQ1NTLnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6ICduby1sZWFkaW5nLWRhc2gn
LCBpbmhlcml0czogZmFsc2V9KSk7Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgU3ludGF4RXJyb3Io
KSwgKCkgPT4gQ1NTLnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6ICcnLCBpbmhlcml0czogZmFsc2V9
KSk7Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgU3ludGF4RXJyb3IoKSwgKCkgPT4gQ1NTLnJlZ2lz
dGVyUHJvcGVydHkoe25hbWU6ICdcXC0tbmFtZScsIGluaGVyaXRzOiBmYWxzZX0pKTsKKyAgICBh
c3NlcnRfdGhyb3dzX2RvbSgnU3ludGF4RXJyb3InLCAoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0
eSh7bmFtZTogJ25vLWxlYWRpbmctZGFzaCcsIGluaGVyaXRzOiBmYWxzZX0pKTsKKyAgICBhc3Nl
cnRfdGhyb3dzX2RvbSgnU3ludGF4RXJyb3InLCAoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7
bmFtZTogJycsIGluaGVyaXRzOiBmYWxzZX0pKTsKKyAgICBhc3NlcnRfdGhyb3dzX2RvbSgnU3lu
dGF4RXJyb3InLCAoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTogJ1xcLS1uYW1lJywg
aW5oZXJpdHM6IGZhbHNlfSkpOwogfSwgInJlZ2lzdGVyUHJvcGVydHkgcmVxdWlyZXMgYSBuYW1l
IG1hdGNoaW5nIDxjdXN0b20tcHJvcGVydHktbmFtZT4iKTsKIHRlc3QoZnVuY3Rpb24oKSB7CiAg
ICAgQ1NTLnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6ICctLXN5bnRheC10ZXN0LTEnLCBpbmhlcml0
czogZmFsc2UsIHN5bnRheDogJyonfSk7CiAgICAgQ1NTLnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6
ICctLXN5bnRheC10ZXN0LTInLCBpbmhlcml0czogZmFsc2UsIHN5bnRheDogJyAqICd9KTsKICAg
ICBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTogJy0tc3ludGF4LXRlc3QtMycsIGluaGVyaXRz
OiBmYWxzZSwgaW5pdGlhbFZhbHVlOiAnNTAwcHgnfSk7Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcg
VHlwZUVycm9yKCksICgpID0+IENTUy5yZWdpc3RlclByb3BlcnR5KHt9KSk7Ci0gICAgYXNzZXJ0
X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IENTUy5yZWdpc3RlclByb3BlcnR5KHtuYW1l
OiAnLS1uby1pbmhlcml0cyd9KSk7Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCks
ICgpID0+IENTUy5yZWdpc3RlclByb3BlcnR5KHtpbmhlcml0czogZmFsc2V9KSk7CisgICAgYXNz
ZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IENTUy5yZWdpc3RlclByb3BlcnR5KHt9KSk7
CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IENTUy5yZWdpc3RlclByb3Bl
cnR5KHtuYW1lOiAnLS1uby1pbmhlcml0cyd9KSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBl
RXJyb3IsICgpID0+IENTUy5yZWdpc3RlclByb3BlcnR5KHtpbmhlcml0czogZmFsc2V9KSk7CiAg
ICAgLy8gUmVwZWF0ZWQgbmFtZQotICAgIGFzc2VydF90aHJvd3MoRE9NRXhjZXB0aW9uLklOVkFM
SURfTU9ESUZJQ0FUSU9OX0VSUiwKKyAgICBhc3NlcnRfdGhyb3dzX2RvbShET01FeGNlcHRpb24u
SU5WQUxJRF9NT0RJRklDQVRJT05fRVJSLAogICAgICAgICAoKSA9PiBDU1MucmVnaXN0ZXJQcm9w
ZXJ0eSh7bmFtZTogJy0tc3ludGF4LXRlc3QtMycsIGluaGVyaXRzOiBmYWxzZSwgaW5pdGlhbFZh
bHVlOiAnNTAwcHgnfSkpOwogfSwgInJlZ2lzdGVyUHJvcGVydHkgYWx3YXlzIGFsbG93cyBvbWl0
dGluZyBpbml0aWFsVmFsdWUgYW5kIHN5bnRheCwgcmVxdWlyZXMgbmFtZSBhbmQgaW5oZXJpdHMi
KTsKIHRlc3QoZnVuY3Rpb24oKSB7CkBAIC00MiwxMSArNDIsMTEgQEAgdGVzdChmdW5jdGlvbigp
IHsKICAgQ1NTLnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6ICctLWluaXRpYWx2YWx1ZS10ZXN0LTAn
LCBpbmhlcml0czogZmFsc2UsIHN5bnRheDogJzxsZW5ndGg+JywgaW5pdGlhbFZhbHVlOiAnY2Fs
YygxMHB4ICsgMTBpbiknfSk7CiAgIGFzc2VydF9lcXVhbHMod2luZG93LmdldENvbXB1dGVkU3R5
bGUoZWwpLmdldFByb3BlcnR5VmFsdWUoJy0taW5pdGlhbHZhbHVlLXRlc3QtMCcpLnRvU3RyaW5n
KCksICc5NzBweCcpOwogCi0gIGFzc2VydF90aHJvd3MobmV3IFN5bnRheEVycm9yKCksCisgIGFz
c2VydF90aHJvd3NfZG9tKCdTeW50YXhFcnJvcicsCiAgICAgKCkgPT4gQ1NTLnJlZ2lzdGVyUHJv
cGVydHkoe25hbWU6ICctLWluaXRpYWx2YWx1ZS10ZXN0LTEnLCBpbmhlcml0czogZmFsc2UsIHN5
bnRheDogJzxsZW5ndGg+JywgaW5pdGlhbFZhbHVlOiAnMTBlbSd9KSk7Ci0gIGFzc2VydF90aHJv
d3MobmV3IFN5bnRheEVycm9yKCksCisgIGFzc2VydF90aHJvd3NfZG9tKCdTeW50YXhFcnJvcics
CiAgICAgKCkgPT4gQ1NTLnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6ICctLWluaXRpYWx2YWx1ZS10
ZXN0LTInLCBpbmhlcml0czogZmFsc2UsIHN5bnRheDogJzxsZW5ndGg+JywgaW5pdGlhbFZhbHVl
OiAnY2FsYygxMHB4ICsgMTBlbSknfSkpOwotICBhc3NlcnRfdGhyb3dzKG5ldyBTeW50YXhFcnJv
cigpLAorICBhc3NlcnRfdGhyb3dzX2RvbSgnU3ludGF4RXJyb3InLAogICAgICgpID0+IENTUy5y
ZWdpc3RlclByb3BlcnR5KHtuYW1lOiAnLS1pbml0aWFsdmFsdWUtdGVzdC0zJywgaW5oZXJpdHM6
IGZhbHNlLCBzeW50YXg6ICc8bGVuZ3RoPicsIGluaXRpYWxWYWx1ZTogJ2NhbGMoMTBweCArIDEw
JSknfSkpOwogfSwgInJlZ2lzdGVyUHJvcGVydHkgcmVxdWlyZXMgaW5pdGlhbFZhbHVlIHRvIGJl
IGNvbXB1dGF0aW9uYWxseSBpbmRlcGVuZGVudCIpOwogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWlkbC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWlkbC1leHBl
Y3RlZC50eHQKaW5kZXggNzc2NGQwM2MwMjE4MmZkZjFhZWIxMGE0NTQ0OGMwZTIyODYyYzBlMC4u
YmI2YjZjMzhhZGMwMDg5YWE3NDkzOWM1ZmNiNDNjNGI5MmQ3MzIyZSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pZGwtZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaWRsLWV4
cGVjdGVkLnR4dApAQCAtMSwyNiArMSwyNyBAQAotQ09OU09MRSBNRVNTQUdFOiBjYWxsYmFjayBu
b3QgeWV0IHN1cHBvcnRlZAogCiBQQVNTIERhdGFUcmFuc2ZlciBpbnRlcmZhY2U6IGV4aXN0ZW5j
ZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2Ugb2JqZWN0CiBQQVNTIERhdGFUcmFuc2ZlciBp
bnRlcmZhY2Ugb2JqZWN0IGxlbmd0aAogUEFTUyBEYXRhVHJhbnNmZXIgaW50ZXJmYWNlIG9iamVj
dCBuYW1lCiBQQVNTIERhdGFUcmFuc2ZlciBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVy
dGllcyBvZiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdAogUEFTUyBEYXRhVHJhbnNmZXIgaW50
ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIHByb3RvdHlwZSBv
YmplY3QncyAiY29uc3RydWN0b3IiIHByb3BlcnR5CitQQVNTIERhdGFUcmFuc2ZlciBpbnRlcmZh
Y2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVj
dCdzIEBAdW5zY29wYWJsZXMgcHJvcGVydHkKIFBBU1MgRGF0YVRyYW5zZmVyIGludGVyZmFjZTog
YXR0cmlidXRlIGRyb3BFZmZlY3QKIFBBU1MgRGF0YVRyYW5zZmVyIGludGVyZmFjZTogYXR0cmli
dXRlIGVmZmVjdEFsbG93ZWQKIFBBU1MgRGF0YVRyYW5zZmVyIGludGVyZmFjZTogYXR0cmlidXRl
IGl0ZW1zCi1QQVNTIERhdGFUcmFuc2ZlciBpbnRlcmZhY2U6IG9wZXJhdGlvbiBzZXREcmFnSW1h
Z2UoRWxlbWVudCxsb25nLGxvbmcpCitQQVNTIERhdGFUcmFuc2ZlciBpbnRlcmZhY2U6IG9wZXJh
dGlvbiBzZXREcmFnSW1hZ2UoRWxlbWVudCwgbG9uZywgbG9uZykKIFBBU1MgRGF0YVRyYW5zZmVy
IGludGVyZmFjZTogYXR0cmlidXRlIHR5cGVzCiBQQVNTIERhdGFUcmFuc2ZlciBpbnRlcmZhY2U6
IG9wZXJhdGlvbiBnZXREYXRhKERPTVN0cmluZykKLVBBU1MgRGF0YVRyYW5zZmVyIGludGVyZmFj
ZTogb3BlcmF0aW9uIHNldERhdGEoRE9NU3RyaW5nLERPTVN0cmluZykKLVBBU1MgRGF0YVRyYW5z
ZmVyIGludGVyZmFjZTogb3BlcmF0aW9uIGNsZWFyRGF0YShET01TdHJpbmcpCitQQVNTIERhdGFU
cmFuc2ZlciBpbnRlcmZhY2U6IG9wZXJhdGlvbiBzZXREYXRhKERPTVN0cmluZywgRE9NU3RyaW5n
KQorUEFTUyBEYXRhVHJhbnNmZXIgaW50ZXJmYWNlOiBvcGVyYXRpb24gY2xlYXJEYXRhKG9wdGlv
bmFsIERPTVN0cmluZykKIFBBU1MgRGF0YVRyYW5zZmVyIGludGVyZmFjZTogYXR0cmlidXRlIGZp
bGVzCiBQQVNTIERhdGFUcmFuc2Zlckl0ZW1MaXN0IGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBw
cm9wZXJ0aWVzIG9mIGludGVyZmFjZSBvYmplY3QKIFBBU1MgRGF0YVRyYW5zZmVySXRlbUxpc3Qg
aW50ZXJmYWNlIG9iamVjdCBsZW5ndGgKIFBBU1MgRGF0YVRyYW5zZmVySXRlbUxpc3QgaW50ZXJm
YWNlIG9iamVjdCBuYW1lCiBQQVNTIERhdGFUcmFuc2Zlckl0ZW1MaXN0IGludGVyZmFjZTogZXhp
c3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0CiBQQVNT
IERhdGFUcmFuc2Zlckl0ZW1MaXN0IGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVz
IG9mIGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0J3MgImNvbnN0cnVjdG9yIiBwcm9wZXJ0eQor
UEFTUyBEYXRhVHJhbnNmZXJJdGVtTGlzdCBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVy
dGllcyBvZiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCdzIEBAdW5zY29wYWJsZXMgcHJvcGVy
dHkKIFBBU1MgRGF0YVRyYW5zZmVySXRlbUxpc3QgaW50ZXJmYWNlOiBhdHRyaWJ1dGUgbGVuZ3Ro
Ci1QQVNTIERhdGFUcmFuc2Zlckl0ZW1MaXN0IGludGVyZmFjZTogb3BlcmF0aW9uIGFkZChET01T
dHJpbmcsRE9NU3RyaW5nKQorUEFTUyBEYXRhVHJhbnNmZXJJdGVtTGlzdCBpbnRlcmZhY2U6IG9w
ZXJhdGlvbiBhZGQoRE9NU3RyaW5nLCBET01TdHJpbmcpCiBQQVNTIERhdGFUcmFuc2Zlckl0ZW1M
aXN0IGludGVyZmFjZTogb3BlcmF0aW9uIGFkZChGaWxlKQogUEFTUyBEYXRhVHJhbnNmZXJJdGVt
TGlzdCBpbnRlcmZhY2U6IG9wZXJhdGlvbiByZW1vdmUodW5zaWduZWQgbG9uZykKIFBBU1MgRGF0
YVRyYW5zZmVySXRlbUxpc3QgaW50ZXJmYWNlOiBvcGVyYXRpb24gY2xlYXIoKQpAQCAtMjksOCAr
MzAsMTAgQEAgUEFTUyBEYXRhVHJhbnNmZXJJdGVtIGludGVyZmFjZSBvYmplY3QgbGVuZ3RoCiBQ
QVNTIERhdGFUcmFuc2Zlckl0ZW0gaW50ZXJmYWNlIG9iamVjdCBuYW1lCiBQQVNTIERhdGFUcmFu
c2Zlckl0ZW0gaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNl
IHByb3RvdHlwZSBvYmplY3QKIFBBU1MgRGF0YVRyYW5zZmVySXRlbSBpbnRlcmZhY2U6IGV4aXN0
ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCdzICJjb25z
dHJ1Y3RvciIgcHJvcGVydHkKK1BBU1MgRGF0YVRyYW5zZmVySXRlbSBpbnRlcmZhY2U6IGV4aXN0
ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCdzIEBAdW5z
Y29wYWJsZXMgcHJvcGVydHkKIFBBU1MgRGF0YVRyYW5zZmVySXRlbSBpbnRlcmZhY2U6IGF0dHJp
YnV0ZSBraW5kCiBQQVNTIERhdGFUcmFuc2Zlckl0ZW0gaW50ZXJmYWNlOiBhdHRyaWJ1dGUgdHlw
ZQotUEFTUyBEYXRhVHJhbnNmZXJJdGVtIGludGVyZmFjZTogb3BlcmF0aW9uIGdldEFzU3RyaW5n
KEZ1bmN0aW9uU3RyaW5nQ2FsbGJhY2spCitQQVNTIERhdGFUcmFuc2Zlckl0ZW0gaW50ZXJmYWNl
OiBvcGVyYXRpb24gZ2V0QXNTdHJpbmcoU3RyaW5nQ2FsbGJhY2s/KQogUEFTUyBEYXRhVHJhbnNm
ZXJJdGVtIGludGVyZmFjZTogb3BlcmF0aW9uIGdldEFzRmlsZSgpCitQQVNTIERhdGFUcmFuc2Zl
ckl0ZW0gaW50ZXJmYWNlOiBvcGVyYXRpb24gd2Via2l0R2V0QXNFbnRyeSgpCiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaWRsLmh0bWwg
Yi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWlkbC5odG1sCmlu
ZGV4IDU0MzhlMmJkNjIwODU3NGZmMjkxN2FiY2JlOTE5MmQ0NzFkMThiMTAuLjkzZjQ3YWNmOTIx
MDQwZDExNWM3YmNjMTNmNzc4MzM4NWIwMjI5ZDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Vk
aXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaWRsLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
ZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pZGwuaHRtbApAQCAtOCwyMCArOCwyMSBA
QAogPC9oZWFkPgogPGJvZHk+CiA8c2NyaXB0IGlkPSJkYXRhdHJhbnNmZXItaWRsIiB0eXBlPSJ0
ZXh0L3BsYWluIj4KLVtDb25zdHJ1Y3RvciwgRXhwb3NlZD0oV2luZG93KV0KK1tFeHBvc2VkPVdp
bmRvd10KIGludGVyZmFjZSBEYXRhVHJhbnNmZXIgeworICAgIGNvbnN0cnVjdG9yKCk7CisKICAg
ICBhdHRyaWJ1dGUgRE9NU3RyaW5nIGRyb3BFZmZlY3Q7CiAgICAgYXR0cmlidXRlIERPTVN0cmlu
ZyBlZmZlY3RBbGxvd2VkOwogCiAgICAgW1NhbWVPYmplY3RdIHJlYWRvbmx5IGF0dHJpYnV0ZSBE
YXRhVHJhbnNmZXJJdGVtTGlzdCBpdGVtczsKIAotICAgIHZvaWQgc2V0RHJhZ0ltYWdlKEVsZW1l
bnQgaW1hZ2UsIGxvbmcgeCwgbG9uZyB5KTsKKyAgICB1bmRlZmluZWQgc2V0RHJhZ0ltYWdlKEVs
ZW1lbnQgaW1hZ2UsIGxvbmcgeCwgbG9uZyB5KTsKIAotICAgIC8qIG9sZCBpbnRlcmZhY2UgKi8K
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgRnJvemVuQXJyYXk8RE9NU3RyaW5nPiB0eXBlczsKICAg
ICBET01TdHJpbmcgZ2V0RGF0YShET01TdHJpbmcgZm9ybWF0KTsKLSAgICB2b2lkIHNldERhdGEo
RE9NU3RyaW5nIGZvcm1hdCwgRE9NU3RyaW5nIGRhdGEpOwotICAgIHZvaWQgY2xlYXJEYXRhKG9w
dGlvbmFsIERPTVN0cmluZyBmb3JtYXQpOworICAgIHVuZGVmaW5lZCBzZXREYXRhKERPTVN0cmlu
ZyBmb3JtYXQsIERPTVN0cmluZyBkYXRhKTsKKyAgICB1bmRlZmluZWQgY2xlYXJEYXRhKG9wdGlv
bmFsIERPTVN0cmluZyBmb3JtYXQpOwogICAgIFtTYW1lT2JqZWN0XSByZWFkb25seSBhdHRyaWJ1
dGUgRmlsZUxpc3QgZmlsZXM7CiB9OwogPC9zY3JpcHQ+CkBAIC0zNiwxNCArMzcsMTkgQEAgaW50
ZXJmYWNlIERhdGFUcmFuc2Zlckl0ZW1MaXN0IHsKIH07CiA8L3NjcmlwdD4KIDxzY3JpcHQgaWQ9
ImRhdGF0cmFuc2Zlcml0ZW0taWRsIiB0eXBlPSJ0ZXh0L3BsYWluIj4KK1tFeHBvc2VkPVdpbmRv
d10KIGludGVyZmFjZSBEYXRhVHJhbnNmZXJJdGVtIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUg
RE9NU3RyaW5nIGtpbmQ7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB0eXBlOwot
ICAgIHZvaWQgZ2V0QXNTdHJpbmcoRnVuY3Rpb25TdHJpbmdDYWxsYmFjaz8gY2FsbGJhY2spOwot
ICAgIEZpbGU/IGdldEFzRmlsZSgpOworCisgICAgdW5kZWZpbmVkIGdldEFzU3RyaW5nKFN0cmlu
Z0NhbGxiYWNrPyBjYWxsYmFjayk7CisgICAgRmlsZSBnZXRBc0ZpbGUoKTsKKworICAgIC8vIGh0
dHBzOi8vd2ljZy5naXRodWIuaW8vZW50cmllcy1hcGkvI2h0bWwtZGF0YQorICAgIEZpbGVTeXN0
ZW1FbnRyeT8gd2Via2l0R2V0QXNFbnRyeSgpOwogfTsKIAotY2FsbGJhY2sgRnVuY3Rpb25TdHJp
bmdDYWxsYmFjayA9IHZvaWQgKERPTVN0cmluZyBkYXRhKTsKK2NhbGxiYWNrIFN0cmluZ0NhbGxi
YWNrID0gdm9pZCAoRE9NU3RyaW5nIGRhdGEpOwogPC9zY3JpcHQ+CiA8c2NyaXB0PgogdmFyIGlk
bHNBcnJheSA9IG5ldyBJZGxBcnJheSgpOwpAQCAtNTMsNiArNTksNyBAQCB2YXIgaWRsID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRhdGF0cmFuc2Zlci1pZGwiKS50ZXh0Q29udGVudAogCiBp
ZGxzQXJyYXkuYWRkX2lkbHMoaWRsKTsKIGlkbHNBcnJheS5hZGRfdW50ZXN0ZWRfaWRscygiaW50
ZXJmYWNlIEVsZW1lbnQge307Iik7CitpZGxzQXJyYXkuYWRkX3VudGVzdGVkX2lkbHMoImludGVy
ZmFjZSBGaWxlU3lzdGVtRW50cnkge307Iik7CiBpZGxzQXJyYXkudGVzdCgpOwogPC9zY3JpcHQ+
CiA8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3RleHQtaXRlcmF0b3Iv
Y291bnQtbWF0Y2hlcy1pbi1mcmFtZXMuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvdGV4dC1p
dGVyYXRvci9jb3VudC1tYXRjaGVzLWluLWZyYW1lcy5odG1sCmluZGV4IDE5ZGQwNTFmNWM3YmEx
MjlhNmM0ZjdlMWNlN2MyZGExMzU4ODg5YTEuLmFhYzNjM2QyNDIzZjMzNTQyOWE5ZDliYzY1YmFi
MTkxZTkzZmFhOGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvdGV4dC1pdGVyYXRv
ci9jb3VudC1tYXRjaGVzLWluLWZyYW1lcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcv
dGV4dC1pdGVyYXRvci9jb3VudC1tYXRjaGVzLWluLWZyYW1lcy5odG1sCkBAIC00LDcgKzQsNiBA
QAogPHRpdGxlPlRleHQgc2VhcmNoIGZyb20gZnJhbWVzPC90aXRsZT4KIDxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08bGluayByZWw9
J3N0eWxlc2hlZXQnIGhyZWY9Jy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5jc3MnPgogPC9o
ZWFkPgogPGJvZHk+CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvdGV4dC1pdGVy
YXRvci9oaWRkZW4tdGV4dGFyZWEtc2VsZWN0aW9uLXF1aXJrLmh0bWwgYi9MYXlvdXRUZXN0cy9l
ZGl0aW5nL3RleHQtaXRlcmF0b3IvaGlkZGVuLXRleHRhcmVhLXNlbGVjdGlvbi1xdWlyay5odG1s
CmluZGV4IDNjOWE5ZTJhZDBjN2M3MTIyYmQ1YmQxZmQ4YzY3YzA5NjdiYzgyZTAuLjcyNjZlYTNj
ODYwNzdjYmNkMTU1ZjlkODJiOTBmODk3MzMxNzQyZDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2VkaXRpbmcvdGV4dC1pdGVyYXRvci9oaWRkZW4tdGV4dGFyZWEtc2VsZWN0aW9uLXF1aXJrLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy90ZXh0LWl0ZXJhdG9yL2hpZGRlbi10ZXh0YXJl
YS1zZWxlY3Rpb24tcXVpcmsuaHRtbApAQCAtNCw3ICs0LDYgQEAKIDx0aXRsZT5TZWxlY3Rpb25z
IGluIGhpZGRlbiBlbGVtZW50czwvdGl0bGU+CiA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
dGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPGxpbmsgcmVsPSdzdHlsZXNoZWV0JyBo
cmVmPScuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuY3NzJz4KIDwvaGVhZD4KIDxib2R5Pgog
PHN0eWxlPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvd2ViZ2wy
L2JpbmRpbmdzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC93ZWJnbDIvYmlu
ZGluZ3MuaHRtbAppbmRleCBiYzVmYjQ2MWFiMGY2Mjc5ZGYyM2M0OTFiZmU1YjhkMWJlZTg0ZTdj
Li42NDA0ZjRkMjZiNjg4ZjY1MDMxODljNzA2MTZiZWY2NGE4ODAzNDRkIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC93ZWJnbDIvYmluZGluZ3MuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC93ZWJnbDIvYmluZGluZ3MuaHRtbApAQCAtNDgs
NyArNDgsNyBAQCBzZXR1cChmdW5jdGlvbigpIHsKIAogZm9yICh2YXIgW21ldGhvZCwgYXJncywg
bmFtZV0gb2YgZXJyb3JfbWV0aG9kcykgewogICB0ZXN0KGZ1bmN0aW9uKCkgewotICAgIGFzc2Vy
dF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBjb250ZXh0W21ldGhvZF0oLi4uYXJncykp
OworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBjb250ZXh0W21ldGhvZF0o
Li4uYXJncykpOwogICB9LCBuYW1lKTsKIH0KIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvZGVmaW5lZC1wc2V1ZG8tY2xhc3MuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL2RlZmluZWQtcHNldWRvLWNsYXNzLmh0bWwK
aW5kZXggMDYyMGZjZDM3MGFmMjNhNWEyOTlmMzBiMjhiYzkxMGJhOTRiYWE3NS4uMGMwYzNiMDhh
MmFiODEyZjZiYTg2M2M1MDNhNDZiYzg5YjVkZmE1ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
ZmFzdC9jdXN0b20tZWxlbWVudHMvZGVmaW5lZC1wc2V1ZG8tY2xhc3MuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9kZWZpbmVkLXBzZXVkby1jbGFzcy5odG1sCkBA
IC02LDcgKzYsNiBAQAogPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL3czYy5naXRodWIu
aW8vd2ViY29tcG9uZW50cy9zcGVjL2N1c3RvbS8jdGhlLWRlZmluZWQtZWxlbWVudC1wc2V1ZG8t
Y2xhc3MtZGVmaW5lZCI+CiA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3Ny
ZXBvcnQuanMiPjwvc2NyaXB0PgotPGxpbmsgcmVsPSdzdHlsZXNoZWV0JyBocmVmPScuLi8uLi9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3MuY3NzJz4KIDwvaGVhZD4KIDxib2R5PgogPGRpdiBpZD0ibG9n
Ij48L2Rpdj4KQEAgLTEwNSwyOCArMTA0LDMwIEBAIHRlc3QoZnVuY3Rpb24gKCkgewogCiB0ZXN0
KGZ1bmN0aW9uICgpIHsKICAgICB2YXIgbWF0Y2hJbnNpZGVDb25zdHJ1Y3RvciA9IGZhbHNlOwor
ICAgIGNvbnN0IHRoZUV4Y2VwdGlvbiA9IHtuYW1lOiAnYmFkJ307CiAgICAgY2xhc3MgVGhyb3dz
RXhjZXB0aW9uIGV4dGVuZHMgSFRNTEVsZW1lbnQgewogICAgICAgICBjb25zdHJ1Y3RvcigpIHsK
ICAgICAgICAgICAgIHN1cGVyKCk7CiAgICAgICAgICAgICBtYXRjaEluc2lkZUNvbnN0cnVjdG9y
ID0gdGhpcy5tYXRjaGVzKCc6ZGVmaW5lZCcpOwotICAgICAgICAgICAgdGhyb3cge25hbWU6ICdi
YWQnfTsKKyAgICAgICAgICAgIHRocm93IHRoZUV4Y2VwdGlvbjsKICAgICAgICAgfQogICAgIH07
CiAgICAgY3VzdG9tRWxlbWVudHMuZGVmaW5lKCd0aHJvd3MtZXhjZXB0aW9uJywgVGhyb3dzRXhj
ZXB0aW9uKTsKICAgICB2YXIgaW5zdGFuY2U7Ci0gICAgYXNzZXJ0X3Rocm93cyh7bmFtZTogJ2Jh
ZCd9LCBmdW5jdGlvbiAoKSB7IGluc3RhbmNlID0gbmV3IFRocm93c0V4Y2VwdGlvbjsgfSk7Cisg
ICAgYXNzZXJ0X3Rocm93c19leGFjdGx5KHRoZUV4Y2VwdGlvbiwgZnVuY3Rpb24gKCkgeyBpbnN0
YW5jZSA9IG5ldyBUaHJvd3NFeGNlcHRpb247IH0pOwogICAgIGFzc2VydF90cnVlKG1hdGNoSW5z
aWRlQ29uc3RydWN0b3IpOwogfSwgJ1RoZSBkZWZpbmVkIGZsYWcgb2YgYSBjdXN0b20gZWxlbWVu
dCBtdXN0IGJlIHNldCBpbnNpZGUgYSBjb25zdHJ1Y3RvciB3aGVuIGNvbnN0cnVjdGluZyBhIGN1
c3RvbSBlbGVtZW50IHN5bmNocm9ub3VzbHknCiAgICAgKyAnIGV2ZW4gaWYgdGhlIGNvbnN0cnVj
dG9yIHRocmV3IGFuIGV4Y2VwdGlvbiBsYXRlcicpOwogCiB0ZXN0KGZ1bmN0aW9uICgpIHsKICAg
ICB2YXIgaW5zdGFuY2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0aHJvd3MtZXhjZXB0aW9u
LTInKTsKKyAgICBjb25zdCB0aGVFeGNlcHRpb24gPSB7bmFtZTogJ2JhZCd9OwogICAgIGRvY3Vt
ZW50LmJvZHkuYXBwZW5kQ2hpbGQoaW5zdGFuY2UpOwogICAgIHZhciB1bmNhdWdodEVycm9yOwog
ICAgIHdpbmRvdy5vbmVycm9yID0gZnVuY3Rpb24gKG1lc3NhZ2UsIHVybCwgbGluZU51bWJlciwg
Y29sdW1uTnVtYmVyLCBlcnJvcikgeyB1bmNhdWdodEVycm9yID0gZXJyb3I7IHJldHVybiB0cnVl
OyB9CiAgICAgY3VzdG9tRWxlbWVudHMuZGVmaW5lKCd0aHJvd3MtZXhjZXB0aW9uLTInLCBjbGFz
cyBleHRlbmRzIEhUTUxFbGVtZW50IHsKICAgICAgICAgY29uc3RydWN0b3IoKSB7Ci0gICAgICAg
ICAgICB0aHJvdyB7bmFtZTogJ2JhZCd9OworICAgICAgICAgICAgdGhyb3cgdGhlRXhjZXB0aW9u
OwogICAgICAgICB9CiAgICAgfSk7CiAgICAgYXNzZXJ0X2VxdWFscyh1bmNhdWdodEVycm9yLm5h
bWUsICdiYWQnKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRz
L3Rocm93LW9uLWR5bmFtaWMtbWFya3VwLWluc2VydGlvbi1jb3VudGVyLWNvbnN0cnVjdC5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvdGhyb3ctb24tZHluYW1pYy1tYXJr
dXAtaW5zZXJ0aW9uLWNvdW50ZXItY29uc3RydWN0Lmh0bWwKaW5kZXggNmYzYmFlODNmMmVkYmM4
MDUwMTI0MWNjZmUzZmQ3ZTc5MjQ5ZDJiMS4uZTEwMjM0YjIzOTVmOGYxNDliMWQ1MTAwNWQ1ODhl
Y2NjOTA0ZTBkNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMv
dGhyb3ctb24tZHluYW1pYy1tYXJrdXAtaW5zZXJ0aW9uLWNvdW50ZXItY29uc3RydWN0Lmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvdGhyb3ctb24tZHluYW1pYy1t
YXJrdXAtaW5zZXJ0aW9uLWNvdW50ZXItY29uc3RydWN0Lmh0bWwKQEAgLTQ1LDEyICs0NSwxMiBA
QCBhc3luYyBmdW5jdGlvbiBjb25zdHJ1Y3RfY3VzdG9tX2VsZW1lbnRfaW5fcGFyc2VyKHRlc3Qs
IGNhbGxfZnVuY3Rpb24pCiAKIHByb21pc2VfdGVzdChhc3luYyBmdW5jdGlvbiAoKSB7CiAgICAg
Y29uc3QgcmVzdWx0ID0gYXdhaXQgY29uc3RydWN0X2N1c3RvbV9lbGVtZW50X2luX3BhcnNlcih0
aGlzLCAoZG9jdW1lbnQpID0+IGRvY3VtZW50Lm9wZW4oKSk7Ci0gICAgYXNzZXJ0X3Rocm93cyh7
bmFtZTogJ0ludmFsaWRTdGF0ZUVycm9yJ30sICgpID0+IHsgdGhyb3cgcmVzdWx0LmV4Y2VwdGlv
bjsgfSwgJ011c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3InKTsKKyAgICBhc3NlcnRfdGhy
b3dzX2RvbSgnSW52YWxpZFN0YXRlRXJyb3InLCByZXN1bHQud2luZG93LkRPTUV4Y2VwdGlvbiwg
KCkgPT4geyB0aHJvdyByZXN1bHQuZXhjZXB0aW9uOyB9LCAnTXVzdCB0aHJvdyBhbiBJbnZhbGlk
U3RhdGVFcnJvcicpOwogfSwgJ2RvY3VtZW50Lm9wZW4oKSBtdXN0IHRocm93IGFuIEludmFsaWRT
dGF0ZUVycm9yIHdoZW4gc3luY2hyb25vdXNseSBjb25zdHJ1Y3RpbmcgYSBjdXN0b20gZWxlbWVu
dCcpOwogCiBwcm9taXNlX3Rlc3QoYXN5bmMgZnVuY3Rpb24gKCkgewogICAgIGNvbnN0IHJlc3Vs
dCA9IGF3YWl0IGNvbnN0cnVjdF9jdXN0b21fZWxlbWVudF9pbl9wYXJzZXIodGhpcywgKGRvY3Vt
ZW50KSA9PiBkb2N1bWVudC5vcGVuKCd0ZXh0L2h0bWwnKSk7Ci0gICAgYXNzZXJ0X3Rocm93cyh7
bmFtZTogJ0ludmFsaWRTdGF0ZUVycm9yJ30sICgpID0+IHsgdGhyb3cgcmVzdWx0LmV4Y2VwdGlv
bjsgfSwgJ011c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3InKTsKKyAgICBhc3NlcnRfdGhy
b3dzX2RvbSgnSW52YWxpZFN0YXRlRXJyb3InLCByZXN1bHQud2luZG93LkRPTUV4Y2VwdGlvbiwg
KCkgPT4geyB0aHJvdyByZXN1bHQuZXhjZXB0aW9uOyB9LCAnTXVzdCB0aHJvdyBhbiBJbnZhbGlk
U3RhdGVFcnJvcicpOwogfSwgJ2RvY3VtZW50Lm9wZW4oInRleHQvaHRtbCIpIG11c3QgdGhyb3cg
YW4gSW52YWxpZFN0YXRlRXJyb3Igd2hlbiBzeW5jaHJvbm91c2x5IGNvbnN0cnVjdGluZyBhIGN1
c3RvbSBlbGVtZW50Jyk7CiAKIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlw
YWdlL2R5bmFtaWMtbWFya3VwLWluc2VydGlvbi5odG1sI2RvbS1kb2N1bWVudC1vcGVuLXdpbmRv
dwpAQCAtNjMsMTkgKzYzLDE5IEBAIHByb21pc2VfdGVzdChhc3luYyBmdW5jdGlvbiAoKSB7CiAK
IHByb21pc2VfdGVzdChhc3luYyBmdW5jdGlvbiAoKSB7CiAgICAgY29uc3QgcmVzdWx0ID0gYXdh
aXQgY29uc3RydWN0X2N1c3RvbV9lbGVtZW50X2luX3BhcnNlcih0aGlzLCAoZG9jdW1lbnQpID0+
IGRvY3VtZW50LmNsb3NlKCkpOwotICAgIGFzc2VydF90aHJvd3Moe25hbWU6ICdJbnZhbGlkU3Rh
dGVFcnJvcid9LCAoKSA9PiB7IHRocm93IHJlc3VsdC5leGNlcHRpb247IH0sICdNdXN0IHRocm93
IGFuIEludmFsaWRTdGF0ZUVycm9yJyk7CisgICAgYXNzZXJ0X3Rocm93c19kb20oJ0ludmFsaWRT
dGF0ZUVycm9yJywgcmVzdWx0LndpbmRvdy5ET01FeGNlcHRpb24sICgpID0+IHsgdGhyb3cgcmVz
dWx0LmV4Y2VwdGlvbjsgfSwgJ011c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3InKTsKIH0s
ICdkb2N1bWVudC5jbG9zZSgpIG11c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3Igd2hlbiBz
eW5jaHJvbm91c2x5IGNvbnN0cnVjdGluZyBhIGN1c3RvbSBlbGVtZW50Jyk7CiAKIHByb21pc2Vf
dGVzdChhc3luYyBmdW5jdGlvbiAoKSB7CiAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgY29uc3Ry
dWN0X2N1c3RvbV9lbGVtZW50X2luX3BhcnNlcih0aGlzLCAoZG9jdW1lbnQpID0+IGRvY3VtZW50
LndyaXRlKCc8Yj5zb21lIHRleHQ8L2I+JykpOwotICAgIGFzc2VydF90aHJvd3Moe25hbWU6ICdJ
bnZhbGlkU3RhdGVFcnJvcid9LCAoKSA9PiB7IHRocm93IHJlc3VsdC5leGNlcHRpb247IH0sICdN
dXN0IHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yJyk7CisgICAgYXNzZXJ0X3Rocm93c19kb20o
J0ludmFsaWRTdGF0ZUVycm9yJywgcmVzdWx0LndpbmRvdy5ET01FeGNlcHRpb24sICgpID0+IHsg
dGhyb3cgcmVzdWx0LmV4Y2VwdGlvbjsgfSwgJ011c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJy
b3InKTsKICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdC5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdi
JyksIG51bGwsICdNdXN0IG5vdCBpbnNlcnQgbmV3IGNvbnRlbnQnKTsKICAgICBhc3NlcnRfZmFs
c2UocmVzdWx0LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5pbm5lckhUTUwuaW5jbHVkZXMoJ3Nv
bWUgdGV4dCcpLCAnTXVzdCBub3QgaW5zZXJ0IG5ldyBjb250ZW50Jyk7CiB9LCAnZG9jdW1lbnQu
d3JpdGUgbXVzdCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciB3aGVuIHN5bmNocm9ub3VzbHkg
Y29uc3RydWN0aW5nIGEgY3VzdG9tIGVsZW1lbnQnKTsKIAogcHJvbWlzZV90ZXN0KGFzeW5jIGZ1
bmN0aW9uICgpIHsKICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBjb25zdHJ1Y3RfY3VzdG9tX2Vs
ZW1lbnRfaW5fcGFyc2VyKHRoaXMsIChkb2N1bWVudCkgPT4gZG9jdW1lbnQud3JpdGVsbignPGI+
c29tZSB0ZXh0PC9iPicpKTsKLSAgICBhc3NlcnRfdGhyb3dzKHtuYW1lOiAnSW52YWxpZFN0YXRl
RXJyb3InfSwgKCkgPT4geyB0aHJvdyByZXN1bHQuZXhjZXB0aW9uOyB9LCAnTXVzdCB0aHJvdyBh
biBJbnZhbGlkU3RhdGVFcnJvcicpOworICAgIGFzc2VydF90aHJvd3NfZG9tKCdJbnZhbGlkU3Rh
dGVFcnJvcicsIHJlc3VsdC53aW5kb3cuRE9NRXhjZXB0aW9uLCAoKSA9PiB7IHRocm93IHJlc3Vs
dC5leGNlcHRpb247IH0sICdNdXN0IHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yJyk7CiAgICAg
YXNzZXJ0X2VxdWFscyhyZXN1bHQuZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYicpLCBudWxsLCAn
TXVzdCBub3QgaW5zZXJ0IG5ldyBjb250ZW50Jyk7CiAgICAgYXNzZXJ0X2ZhbHNlKHJlc3VsdC5k
b2N1bWVudC5kb2N1bWVudEVsZW1lbnQuaW5uZXJIVE1MLmluY2x1ZGVzKCdzb21lIHRleHQnKSwg
J011c3Qgbm90IGluc2VydCBuZXcgY29udGVudCcpOwogfSwgJ2RvY3VtZW50LndyaXRlbG4gbXVz
dCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciB3aGVuIHN5bmNocm9ub3VzbHkgY29uc3RydWN0
aW5nIGEgY3VzdG9tIGVsZW1lbnQnKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3Vz
dG9tLWVsZW1lbnRzL3Rocm93LW9uLWR5bmFtaWMtbWFya3VwLWluc2VydGlvbi1jb3VudGVyLXJl
YWN0aW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvdGhyb3ctb24t
ZHluYW1pYy1tYXJrdXAtaW5zZXJ0aW9uLWNvdW50ZXItcmVhY3Rpb25zLmh0bWwKaW5kZXggMDZm
ZWVmNjgyZTBjYjgzZGJhYzIwY2JhNjYyNjBjNDE2NzRiMGUxNy4uYWE2OTkwZTU5N2VmYjhhZjRj
ZTk3MDE3NGZiM2E0NTdlNjFiYjY4MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jdXN0
b20tZWxlbWVudHMvdGhyb3ctb24tZHluYW1pYy1tYXJrdXAtaW5zZXJ0aW9uLWNvdW50ZXItcmVh
Y3Rpb25zLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvdGhyb3ct
b24tZHluYW1pYy1tYXJrdXAtaW5zZXJ0aW9uLWNvdW50ZXItcmVhY3Rpb25zLmh0bWwKQEAgLTQ1
LDEyICs0NSwxMiBAQCBhc3luYyBmdW5jdGlvbiBjdXN0b21fZWxlbWVudF9yZWFjdGlvbnNfaW5f
cGFyc2VyKHRlc3QsIGNhbGxfZnVuY3Rpb24pCiAKIHByb21pc2VfdGVzdChhc3luYyBmdW5jdGlv
biAoKSB7CiAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgY3VzdG9tX2VsZW1lbnRfcmVhY3Rpb25z
X2luX3BhcnNlcih0aGlzLCAoZG9jdW1lbnQpID0+IGRvY3VtZW50Lm9wZW4oKSk7Ci0gICAgYXNz
ZXJ0X3Rocm93cyh7bmFtZTogJ0ludmFsaWRTdGF0ZUVycm9yJ30sICgpID0+IHsgdGhyb3cgcmVz
dWx0LmV4Y2VwdGlvbjsgfSwgJ011c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3InKTsKKyAg
ICBhc3NlcnRfdGhyb3dzX2RvbSgnSW52YWxpZFN0YXRlRXJyb3InLCByZXN1bHQud2luZG93LkRP
TUV4Y2VwdGlvbiwgKCkgPT4geyB0aHJvdyByZXN1bHQuZXhjZXB0aW9uOyB9LCAnTXVzdCB0aHJv
dyBhbiBJbnZhbGlkU3RhdGVFcnJvcicpOwogfSwgJ2RvY3VtZW50Lm9wZW4oKSBtdXN0IHRocm93
IGFuIEludmFsaWRTdGF0ZUVycm9yIHdoZW4gcHJvY2Vzc2luZyBjdXN0b20gZWxlbWVudCByZWFj
dGlvbnMgZm9yIGEgc3luY2hyb25vdXMgY29uc3RydWN0ZWQgY3VzdG9tIGVsZW1lbnQnKTsKIAog
cHJvbWlzZV90ZXN0KGFzeW5jIGZ1bmN0aW9uICgpIHsKICAgICBjb25zdCByZXN1bHQgPSBhd2Fp
dCBjdXN0b21fZWxlbWVudF9yZWFjdGlvbnNfaW5fcGFyc2VyKHRoaXMsIChkb2N1bWVudCkgPT4g
ZG9jdW1lbnQub3BlbigndGV4dC9odG1sJykpOwotICAgIGFzc2VydF90aHJvd3Moe25hbWU6ICdJ
bnZhbGlkU3RhdGVFcnJvcid9LCAoKSA9PiB7IHRocm93IHJlc3VsdC5leGNlcHRpb247IH0sICdN
dXN0IHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yJyk7CisgICAgYXNzZXJ0X3Rocm93c19kb20o
J0ludmFsaWRTdGF0ZUVycm9yJywgcmVzdWx0LndpbmRvdy5ET01FeGNlcHRpb24sICgpID0+IHsg
dGhyb3cgcmVzdWx0LmV4Y2VwdGlvbjsgfSwgJ011c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJy
b3InKTsKIH0sICdkb2N1bWVudC5vcGVuKCJ0ZXh0L2h0bWwiKSBtdXN0IHRocm93IGFuIEludmFs
aWRTdGF0ZUVycm9yIHdoZW4gcHJvY2Vzc2luZyBjdXN0b20gZWxlbWVudCByZWFjdGlvbnMgZm9y
IGEgc3luY2hyb25vdXMgY29uc3RydWN0ZWQgY3VzdG9tIGVsZW1lbnQnKTsKIAogLy8gaHR0cHM6
Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZHluYW1pYy1tYXJrdXAtaW5zZXJ0aW9u
Lmh0bWwjZG9tLWRvY3VtZW50LW9wZW4td2luZG93CkBAIC02MywxOSArNjMsMTkgQEAgcHJvbWlz
ZV90ZXN0KGFzeW5jIGZ1bmN0aW9uICgpIHsKIAogcHJvbWlzZV90ZXN0KGFzeW5jIGZ1bmN0aW9u
ICgpIHsKICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBjdXN0b21fZWxlbWVudF9yZWFjdGlvbnNf
aW5fcGFyc2VyKHRoaXMsIChkb2N1bWVudCkgPT4gZG9jdW1lbnQuY2xvc2UoKSk7Ci0gICAgYXNz
ZXJ0X3Rocm93cyh7bmFtZTogJ0ludmFsaWRTdGF0ZUVycm9yJ30sICgpID0+IHsgdGhyb3cgcmVz
dWx0LmV4Y2VwdGlvbjsgfSwgJ011c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3InKTsKKyAg
ICBhc3NlcnRfdGhyb3dzX2RvbSgnSW52YWxpZFN0YXRlRXJyb3InLCByZXN1bHQud2luZG93LkRP
TUV4Y2VwdGlvbiwgKCkgPT4geyB0aHJvdyByZXN1bHQuZXhjZXB0aW9uOyB9LCAnTXVzdCB0aHJv
dyBhbiBJbnZhbGlkU3RhdGVFcnJvcicpOwogfSwgJ2RvY3VtZW50LmNsb3NlKCkgbXVzdCB0aHJv
dyBhbiBJbnZhbGlkU3RhdGVFcnJvciB3aGVuIHByb2Nlc3NpbmcgY3VzdG9tIGVsZW1lbnQgcmVh
Y3Rpb25zIGZvciBhIHN5bmNocm9ub3VzIGNvbnN0cnVjdGVkIGN1c3RvbSBlbGVtZW50Jyk7CiAK
IHByb21pc2VfdGVzdChhc3luYyBmdW5jdGlvbiAoKSB7CiAgICAgY29uc3QgcmVzdWx0ID0gYXdh
aXQgY3VzdG9tX2VsZW1lbnRfcmVhY3Rpb25zX2luX3BhcnNlcih0aGlzLCAoZG9jdW1lbnQpID0+
IGRvY3VtZW50LndyaXRlKCc8Yj5zb21lIHRleHQ8L2I+JykpOwotICAgIGFzc2VydF90aHJvd3Mo
e25hbWU6ICdJbnZhbGlkU3RhdGVFcnJvcid9LCAoKSA9PiB7IHRocm93IHJlc3VsdC5leGNlcHRp
b247IH0sICdNdXN0IHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yJyk7CisgICAgYXNzZXJ0X3Ro
cm93c19kb20oJ0ludmFsaWRTdGF0ZUVycm9yJywgcmVzdWx0LndpbmRvdy5ET01FeGNlcHRpb24s
ICgpID0+IHsgdGhyb3cgcmVzdWx0LmV4Y2VwdGlvbjsgfSwgJ011c3QgdGhyb3cgYW4gSW52YWxp
ZFN0YXRlRXJyb3InKTsKICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdC5kb2N1bWVudC5xdWVyeVNl
bGVjdG9yKCdiJyksIG51bGwsICdNdXN0IG5vdCBpbnNlcnQgbmV3IGNvbnRlbnQnKTsKICAgICBh
c3NlcnRfZmFsc2UocmVzdWx0LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5pbm5lckhUTUwuaW5j
bHVkZXMoJ3NvbWUgdGV4dCcpLCAnTXVzdCBub3QgaW5zZXJ0IG5ldyBjb250ZW50Jyk7CiB9LCAn
ZG9jdW1lbnQud3JpdGUgbXVzdCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciB3aGVuIHByb2Nl
c3NpbmcgY3VzdG9tIGVsZW1lbnQgcmVhY3Rpb25zIGZvciBhIHN5bmNocm9ub3VzIGNvbnN0cnVj
dGVkIGN1c3RvbSBlbGVtZW50Jyk7CiAKIHByb21pc2VfdGVzdChhc3luYyBmdW5jdGlvbiAoKSB7
CiAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgY3VzdG9tX2VsZW1lbnRfcmVhY3Rpb25zX2luX3Bh
cnNlcih0aGlzLCAoZG9jdW1lbnQpID0+IGRvY3VtZW50LndyaXRlbG4oJzxiPnNvbWUgdGV4dDwv
Yj4nKSk7Ci0gICAgYXNzZXJ0X3Rocm93cyh7bmFtZTogJ0ludmFsaWRTdGF0ZUVycm9yJ30sICgp
ID0+IHsgdGhyb3cgcmVzdWx0LmV4Y2VwdGlvbjsgfSwgJ011c3QgdGhyb3cgYW4gSW52YWxpZFN0
YXRlRXJyb3InKTsKKyAgICBhc3NlcnRfdGhyb3dzX2RvbSgnSW52YWxpZFN0YXRlRXJyb3InLCBy
ZXN1bHQud2luZG93LkRPTUV4Y2VwdGlvbiwgKCkgPT4geyB0aHJvdyByZXN1bHQuZXhjZXB0aW9u
OyB9LCAnTXVzdCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvcicpOwogICAgIGFzc2VydF9lcXVh
bHMocmVzdWx0LmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2InKSwgbnVsbCwgJ011c3Qgbm90IGlu
c2VydCBuZXcgY29udGVudCcpOwogICAgIGFzc2VydF9mYWxzZShyZXN1bHQuZG9jdW1lbnQuZG9j
dW1lbnRFbGVtZW50LmlubmVySFRNTC5pbmNsdWRlcygnc29tZSB0ZXh0JyksICdNdXN0IG5vdCBp
bnNlcnQgbmV3IGNvbnRlbnQnKTsKIH0sICdkb2N1bWVudC53cml0ZWxuIG11c3QgdGhyb3cgYW4g
SW52YWxpZFN0YXRlRXJyb3Igd2hlbiBwcm9jZXNzaW5nIGN1c3RvbSBlbGVtZW50IHJlYWN0aW9u
cyBmb3IgYSBzeW5jaHJvbm91cyBjb25zdHJ1Y3RlZCBjdXN0b20gZWxlbWVudCcpOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vZG9jdW1lbnQtYWxsLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9kb2N1bWVudC1hbGwuaHRtbAppbmRleCAxMDg3MzEwODNhODE4ZWNlMGJlNzMw
MGI1ZWQzMDAwYWExNTI3NjdkLi43MjQzNzA2ZGIyN2E1NDRlMTRlM2Y2YmYxNGUyNjI1MjBjZjE3
MTRmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9kb2N1bWVudC1hbGwuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9kb2N1bWVudC1hbGwuaHRtbApAQCAtMTUzLDcgKzE1
Myw3IEBAIHRlc3QoZnVuY3Rpb24oKSB7CiB9LCAiZG9jdW1lbnQuYWxsIHdpbGwgcmV0dXJuIGEg
c3ViLWNvbGxlY3Rpb24gaWYgdGhlIG5hbWUvaWQgaXMgZm91bmQgbW9yZSB0aGFuIG9uY2UsIHRo
YXQgaXMgbGl2ZSIpOwogCiB0ZXN0KGZ1bmN0aW9uKCkgewotICAgIGFzc2VydF90aHJvd3MobmV3
IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsgZG9jdW1lbnQuYWxsLm5hbWVkSXRlbSgpIH0pOwor
ICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsgZG9jdW1lbnQuYWxs
Lm5hbWVkSXRlbSgpIH0pOwogfSwgImRvY3VtZW50LmFsbCdzIG5hbWVkSXRlbSBmdW5jdGlvbiBy
ZXF1aXJlcyBwYXNzaW5nIGFuIGFyZ3VtZW50Iik7CiAKIHRlc3QoZnVuY3Rpb24oKSB7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9lbGVtZW50RnJvbVBvaW50LXBhcmFtZXRlcnMu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2VsZW1lbnRGcm9tUG9pbnQtcGFyYW1ldGVycy5o
dG1sCmluZGV4IGFkZGQyNmQ4OTEzMWRhMDkxN2IxMGU0Yzk1ZTdkYzZhNzlkYTgxMWEuLjQyYWY0
MWUzY2FhNTdiMGE1MDk5M2E2OTVlY2FiODk5ZjE4ZTc4ZjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2Zhc3QvZG9tL2VsZW1lbnRGcm9tUG9pbnQtcGFyYW1ldGVycy5odG1sCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL2VsZW1lbnRGcm9tUG9pbnQtcGFyYW1ldGVycy5odG1sCkBAIC02LDI2
ICs2LDI2IEBACiA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0
LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiB0ZXN0KGZ1bmN0aW9uKCkgewotICAgIGFzc2VydF90
aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsgCisgICAgYXNzZXJ0X3Rocm93c19q
cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeyAKICAgICAgICAgZG9jdW1lbnQuZWxlbWVudEZyb21Q
b2ludCgpOwogICAgIH0sICJDYWxsZWQgd2l0aCBubyBwYXJhbWV0ZXIiKTsKIAotICAgIGFzc2Vy
dF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsgCisgICAgYXNzZXJ0X3Rocm93
c19qcyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeyAKICAgICAgICAgZG9jdW1lbnQuZWxlbWVudEZy
b21Qb2ludCgwKTsKICAgICB9LCAiQ2FsbGVkIHdpdGggMSBwYXJhbWV0ZXIiKTsKIH0sICJQYXJh
bWV0ZXJzIGFyZSBtYW5kYXRvcnkuIik7CiAKIHRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgYXNzZXJ0
X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgeworICAgIGFzc2VydF90aHJvd3Nf
anMoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKICAgICAgICAgZG9jdW1lbnQuZWxlbWVudEZyb21Q
b2ludCgwLCBJbmZpbml0eSk7CiAgICAgfSwgIlBhc3NpbmcgSW5maW5pdHkgYXMgc2Vjb25kIHBh
cmFtZXRlciB0aHJvd3MiKTsKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVu
Y3Rpb24oKSB7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgewog
ICAgICAgICBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KEluZmluaXR5LCAwKTsKICAgICB9LCAi
UGFzc2luZyBJbmZpbml0eSBhcyBmaXJzdCBwYXJhbWV0ZXIgdGhyb3dzIik7Ci0gICAgYXNzZXJ0
X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgeworICAgIGFzc2VydF90aHJvd3Nf
anMoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKICAgICAgICAgZG9jdW1lbnQuZWxlbWVudEZyb21Q
b2ludCgwLCBOYU4pOwogICAgIH0sICJQYXNzaW5nIE5hTiBhcyBzZWNvbmQgcGFyYW1ldGVyIHRo
cm93cyIpOwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsK
KyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CiAgICAgICAgIGRv
Y3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoTmFOLCAwKTsKICAgICB9LCAiUGFzc2luZyBOYU4gYXMg
Zmlyc3QgcGFyYW1ldGVyIHRocm93cyIpOwogfSwgIlBhcmFtZXRlciBzaG91bGQgYmUgZmluaXRl
IGZsb2F0aW5nIHBvaW50IHZhbHVlcy4iKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL3JlcGxhY2VhYmxlLXNldHRlci10aHJvd3MtaWYtZGVmaW5lb3ducHJvcGVydHktZmFpbHMu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3JlcGxhY2VhYmxlLXNldHRlci10aHJvd3MtaWYt
ZGVmaW5lb3ducHJvcGVydHktZmFpbHMuaHRtbAppbmRleCBjZmFiZmYzNTFhMjUyNThmMjFjMGZi
ZmFhZTNhNzQ2ODE5OGU2NjgwLi5kY2VhOTNiNTExNmE1YzIyZmVhMjQwYmU4ODM3MDY2YTAyOTYx
ZDdiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9yZXBsYWNlYWJsZS1zZXR0ZXIt
dGhyb3dzLWlmLWRlZmluZW93bnByb3BlcnR5LWZhaWxzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vcmVwbGFjZWFibGUtc2V0dGVyLXRocm93cy1pZi1kZWZpbmVvd25wcm9wZXJ0eS1m
YWlscy5odG1sCkBAIC0xMSw3ICsxMSw3IEBACiBmb3IgKGNvbnN0IGtleSBvZiBbInNlbGYiLCAi
cGFyZW50IiwgIm9yaWdpbiIsICJpbm5lcldpZHRoIl0pIHsKICAgICB0ZXN0KCgpID0+IHsKICAg
ICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdywga2V5LCB7IGNvbmZpZ3VyYWJsZTog
ZmFsc2UgfSk7Ci0gICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvciwgKCkgPT4geyB3
aW5kb3dba2V5XSA9IDE7IH0pOworICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwg
KCkgPT4geyB3aW5kb3dba2V5XSA9IDE7IH0pOwogCiAgICAgICAgIGNvbnN0IGRlc2MgPSBPYmpl
Y3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHdpbmRvdywga2V5KTsKICAgICAgICAgYXNzZXJ0
X2ZhbHNlKCJ2YWx1ZSIgaW4gZGVzYyk7CkBAIC0yNiw3ICsyNiw3IEBAIGZvciAoY29uc3Qga2V5
IG9mIFsic2NyZWVuIiwgImxlbmd0aCIsICJldmVudCIsICJvdXRlckhlaWdodCJdKSB7CiAgICAg
dGVzdCgoKSA9PiB7CiAgICAgICAgIGNvbnN0IHsgc2V0IH0gPSBPYmplY3QuZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKHdpbmRvdywga2V5KTsKICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5
KHdpbmRvdywga2V5LCB7IHZhbHVlOiAxLCB3cml0YWJsZTogZmFsc2UsIGNvbmZpZ3VyYWJsZTog
ZmFsc2UgfSk7Ci0gICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvciwgKCkgPT4geyBz
ZXQuY2FsbCh3aW5kb3csIDIpOyB9KTsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJy
b3IsICgpID0+IHsgc2V0LmNhbGwod2luZG93LCAyKTsgfSk7CiAKICAgICAgICAgY29uc3QgZGVz
YyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iod2luZG93LCBrZXkpOwogICAgICAg
ICBhc3NlcnRfZXF1YWxzKGRlc2MudmFsdWUsIDEpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vd2luZG93LW9wZW5lci1zZXR0ZXItdGhyb3dzLWlmLWRlZmluZW93bnByb3BlcnR5
LWZhaWxzLTEuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3dpbmRvdy1vcGVuZXItc2V0dGVy
LXRocm93cy1pZi1kZWZpbmVvd25wcm9wZXJ0eS1mYWlscy0xLmh0bWwKaW5kZXggNDIzMzkxZDVk
ZmMyNWZlZjQxYWE2YTNhZTJlMGIwNDM5ZmJiN2I2NS4uNTk5YjUxMjUxYjNkMDUyNzUyYWQyNTRi
Y2RjOWM1YWQ2MzIyMTFiZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vd2luZG93
LW9wZW5lci1zZXR0ZXItdGhyb3dzLWlmLWRlZmluZW93bnByb3BlcnR5LWZhaWxzLTEuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS93aW5kb3ctb3BlbmVyLXNldHRlci10aHJvd3MtaWYt
ZGVmaW5lb3ducHJvcGVydHktZmFpbHMtMS5odG1sCkBAIC0xMCw3ICsxMCw3IEBACiA8c2NyaXB0
PgogdGVzdCgoKSA9PiB7CiAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdywgIm9wZW5l
ciIsIHsgY29uZmlndXJhYmxlOiBmYWxzZSB9KTsKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBl
RXJyb3IsICgpID0+IHsgd2luZG93Lm9wZW5lciA9IDE7IH0pOworICAgIGFzc2VydF90aHJvd3Nf
anMoVHlwZUVycm9yLCAoKSA9PiB7IHdpbmRvdy5vcGVuZXIgPSAxOyB9KTsKIAogICAgIGNvbnN0
IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHdpbmRvdywgIm9wZW5lciIp
OwogICAgIGFzc2VydF9mYWxzZSgidmFsdWUiIGluIGRlc2MpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9kb20vd2luZG93LW9wZW5lci1zZXR0ZXItdGhyb3dzLWlmLWRlZmluZW93bnBy
b3BlcnR5LWZhaWxzLTIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3dpbmRvdy1vcGVuZXIt
c2V0dGVyLXRocm93cy1pZi1kZWZpbmVvd25wcm9wZXJ0eS1mYWlscy0yLmh0bWwKaW5kZXggNjZh
YzI5NzkyOWYwMTFlMjhhZDg4NzM0MzU4OTNmMDYzYTY4ZmNiNS4uOTQ2Y2YzYTMyYWYyYTIwYzRl
NTViMTg5MTk5MGYwMjhmZjQyNzRiYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20v
d2luZG93LW9wZW5lci1zZXR0ZXItdGhyb3dzLWlmLWRlZmluZW93bnByb3BlcnR5LWZhaWxzLTIu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS93aW5kb3ctb3BlbmVyLXNldHRlci10aHJv
d3MtaWYtZGVmaW5lb3ducHJvcGVydHktZmFpbHMtMi5odG1sCkBAIC0xMSw3ICsxMSw3IEBACiB0
ZXN0KCgpID0+IHsKICAgICBjb25zdCB7IHNldCB9ID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcih3aW5kb3csICJvcGVuZXIiKTsKICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkod2lu
ZG93LCAib3BlbmVyIiwgeyB2YWx1ZTogMSwgd3JpdGFibGU6IGZhbHNlLCBjb25maWd1cmFibGU6
IGZhbHNlIH0pOwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvciwgKCkgPT4geyBzZXQu
Y2FsbCh3aW5kb3csIDIpOyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkg
PT4geyBzZXQuY2FsbCh3aW5kb3csIDIpOyB9KTsKIAogICAgIGNvbnN0IGRlc2MgPSBPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHdpbmRvdywgIm9wZW5lciIpOwogICAgIGFzc2VydF9l
cXVhbHMoZGVzYy52YWx1ZSwgMSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy9jbGlwYm9hcmQtZXZlbnQtY29uc3RydWN0b3IuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL2NsaXBib2FyZC1ldmVudC1jb25zdHJ1Y3Rvci5odG1sCmluZGV4IDc3NDkzNjE2YTczOThm
NzZmMzA4ZDQ5OTQ1NTA3YWU2NDE1OWYyZjguLmExM2QwM2Q2MmJkZmUyMzE1NWZmODEyMGU0MjZm
N2Y4ODcxNDBlNWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2NsaXBib2Fy
ZC1ldmVudC1jb25zdHJ1Y3Rvci5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2Ns
aXBib2FyZC1ldmVudC1jb25zdHJ1Y3Rvci5odG1sCkBAIC04LDcgKzgsNyBAQAogPGJvZHk+CiA8
c2NyaXB0PgogdGVzdChmdW5jdGlvbigpIHsKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJy
b3IoKSwgZnVuY3Rpb24oKSB7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsIGZ1bmN0
aW9uKCkgewogICAgICAgICBuZXcgQ2xpcGJvYXJkRXZlbnQoKTsKICAgICB9KTsKIH0sICJGaXJz
dCBwYXJhbWV0ZXIgaXMgbWFuZGF0b3J5Iik7CkBAIC02NCw3ICs2NCw3IEBAIHRlc3QoZnVuY3Rp
b24oKSB7CiB9LCAiYnViYmxlcyAvIGNhbmNlbGFibGUgLyBjb21wb3NlZCBtZW1iZXJzIik7CiAK
IHRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1
bmN0aW9uKCkgeworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsK
ICAgICAgICAgbmV3IENsaXBib2FyZEV2ZW50KCJmb28iLCB7Y2xpcGJvYXJkRGF0YTogZG9jdW1l
bnR9KTsKICAgICB9KTsKIH0sICJQYXNzaW5nIGEgYmFkIHR5cGUgZm9yIGNsaXBib2FyZERhdGEg
bWVtYmVyIHNob3VsZCB0aHJvdyIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9maWxl
cy93b3JrZXJzL3Jlc291cmNlcy93b3JrZXItZmlsZS1yZWFkZXItc3luYy1iYWQtcGFyYW1ldGVy
LmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy93b3JrZXJzL3Jlc291cmNlcy93b3JrZXItZmls
ZS1yZWFkZXItc3luYy1iYWQtcGFyYW1ldGVyLmpzCmluZGV4IGM5NWFmY2QwZmU1ZTBkYWFiZTg1
N2Y5NThhNmZlZWQ4NTJmYjUwYjYuLjkxMzQ1NWQ2NmEyZWNlOTg5NmJiOTc5MDZjYjRjNTJiMTEy
ODI1NTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvd29ya2Vycy9yZXNvdXJj
ZXMvd29ya2VyLWZpbGUtcmVhZGVyLXN5bmMtYmFkLXBhcmFtZXRlci5qcworKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2ZpbGVzL3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1maWxlLXJlYWRlci1zeW5j
LWJhZC1wYXJhbWV0ZXIuanMKQEAgLTIsMTggKzIsMTggQEAgaWYgKHNlbGYuaW1wb3J0U2NyaXB0
cykKICAgc2VsZi5pbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5l
c3MuanMnKTsKIAogdGVzdChmdW5jdGlvbigpIHsKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBl
RXJyb3IoKSwgZnVuY3Rpb24oKSB7IG5ldyBGaWxlUmVhZGVyU3luYygpLnJlYWRBc0JpbmFyeVN0
cmluZyhudWxsKTsgfSk7Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0
aW9uKCkgeyBuZXcgRmlsZVJlYWRlclN5bmMoKS5yZWFkQXNBcnJheUJ1ZmZlcihudWxsKTsgfSk7
Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgeyBuZXcgRmls
ZVJlYWRlclN5bmMoKS5yZWFkQXNUZXh0KG51bGwpOyB9KTsKLSAgICBhc3NlcnRfdGhyb3dzKG5l
dyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7IG5ldyBGaWxlUmVhZGVyU3luYygpLnJlYWRBc0Rh
dGFVUkwobnVsbCk7IH0pOworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCBmdW5jdGlv
bigpIHsgbmV3IEZpbGVSZWFkZXJTeW5jKCkucmVhZEFzQmluYXJ5U3RyaW5nKG51bGwpOyB9KTsK
KyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7IG5ldyBGaWxlUmVh
ZGVyU3luYygpLnJlYWRBc0FycmF5QnVmZmVyKG51bGwpOyB9KTsKKyAgICBhc3NlcnRfdGhyb3dz
X2pzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7IG5ldyBGaWxlUmVhZGVyU3luYygpLnJlYWRBc1Rl
eHQobnVsbCk7IH0pOworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCBmdW5jdGlvbigp
IHsgbmV3IEZpbGVSZWFkZXJTeW5jKCkucmVhZEFzRGF0YVVSTChudWxsKTsgfSk7CiB9LCAiVHJ5
aW5nIHRvIHJlYWQgYSBudWxsIHBhcmFtZXRlciIpOwogCiAKIHRlc3QoZnVuY3Rpb24oKSB7Ci0g
ICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgeyBuZXcgRmlsZVJl
YWRlclN5bmMoKS5yZWFkQXNCaW5hcnlTdHJpbmcodW5kZWZpbmVkKTsgfSk7Ci0gICAgYXNzZXJ0
X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgeyBuZXcgRmlsZVJlYWRlclN5bmMo
KS5yZWFkQXNBcnJheUJ1ZmZlcih1bmRlZmluZWQpOyB9KTsKLSAgICBhc3NlcnRfdGhyb3dzKG5l
dyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7IG5ldyBGaWxlUmVhZGVyU3luYygpLnJlYWRBc1Rl
eHQodW5kZWZpbmVkKTsgfSk7Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1
bmN0aW9uKCkgeyBuZXcgRmlsZVJlYWRlclN5bmMoKS5yZWFkQXNEYXRhVVJMKHVuZGVmaW5lZCk7
IH0pOworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsgbmV3IEZp
bGVSZWFkZXJTeW5jKCkucmVhZEFzQmluYXJ5U3RyaW5nKHVuZGVmaW5lZCk7IH0pOworICAgIGFz
c2VydF90aHJvd3NfanMoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsgbmV3IEZpbGVSZWFkZXJTeW5j
KCkucmVhZEFzQXJyYXlCdWZmZXIodW5kZWZpbmVkKTsgfSk7CisgICAgYXNzZXJ0X3Rocm93c19q
cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeyBuZXcgRmlsZVJlYWRlclN5bmMoKS5yZWFkQXNUZXh0
KHVuZGVmaW5lZCk7IH0pOworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCBmdW5jdGlv
bigpIHsgbmV3IEZpbGVSZWFkZXJTeW5jKCkucmVhZEFzRGF0YVVSTCh1bmRlZmluZWQpOyB9KTsK
IH0sICJUcnlpbmcgdG8gcmVhZCBhbiB1bmRlZmluZWQgcGFyYW1ldGVyIik7CiAKIGRvbmUoKTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMveGhyLWJsb2ItcmVxdWVzdC5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy94aHItYmxvYi1yZXF1ZXN0Lmh0bWwKaW5kZXggYWNm
M2E3ZDJiMWE1YTE5ODFkZDg3N2JjMWViOWFiNWJiYWQzMDc3MC4uZjI2YWZkMTIzNzgwN2E1ZGM3
MTg2ZTc1MDMyMDU3ODY1OTNhNmM0YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9maWxl
cy94aHItYmxvYi1yZXF1ZXN0Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy94aHIt
YmxvYi1yZXF1ZXN0Lmh0bWwKQEAgLTUwLDcgKzUwLDcgQEAgZnVuY3Rpb24gdGVzdF9ub3RBbGxv
d2VkX21ldGhvZF9zeW5jKG1ldGhvZCkgewogICAgICAgICAgICAgYXNzZXJ0X3VucmVhY2hlZCgn
RXhjZXB0aW9uIHNob3VsZCBiZSB0aHJvd24gZm9yIHN5bmNocm9ub3VzICcgKyBtZXRob2QgKyAn
IFhIUicpOwogICAgICAgICB9CiAKLSAgICAgICAgYXNzZXJ0X3Rocm93cygnTmV0d29ya0Vycm9y
JywgKCkgPT4geyByZXEuc2VuZCgpOyB9LCAnRXhjZXB0aW9uIHRocm93biBmb3Igc3luY2hyb25v
dXMgJyArIG1ldGhvZCArICcgWEhSJyk7CisgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCdOZXR3
b3JrRXJyb3InLCAoKSA9PiB7IHJlcS5zZW5kKCk7IH0sICdFeGNlcHRpb24gdGhyb3duIGZvciBz
eW5jaHJvbm91cyAnICsgbWV0aG9kICsgJyBYSFInKTsKIAogICAgICAgICBhc3NlcnRfZmFsc2Uo
b25FcnJvciwgJ0Vycm9yIGNhbGxiYWNrIGlzIGNhbGxlZCcpOwogICAgIH0sICdTeW5jaHJvbm91
cyBYSFIgcmVxdWVzdCBzaG91bGQgdGhyb3cgZXhjZXB0aW9uIHdpdGggJyArIG1ldGhvZCk7CkBA
IC05Nyw3ICs5Nyw3IEBAIGZ1bmN0aW9uIHRlc3RfbWV0aG9kX2FzeW5jKG1ldGhvZCwgc2hvdWxk
TG9hZCkgewogCiBmdW5jdGlvbiB0ZXN0X2ZvcmJpZGRlbl9tZXRob2QocmVxdWVzdCkgewogICAg
IHRlc3QoKCkgPT4gewotICAgICAgICBhc3NlcnRfdGhyb3dzKCdTZWN1cml0eUVycm9yJywgKCkg
PT4geworICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgnU2VjdXJpdHlFcnJvcicsICgpID0+IHsK
ICAgICAgICAgICAgIHZhciByZXEgPSBuZXcgWE1MSHR0cFJlcXVlc3Q7CiAgICAgICAgICAgICBy
ZXEub3BlbihyZXF1ZXN0LCB1cmwpOwogICAgICAgICB9KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9tZWRpYWNhcHR1cmVmcm9tZWxlbWVudC9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW0t
ZXhjZXB0aW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYWNhcHR1cmVmcm9tZWxlbWVu
dC9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW0tZXhjZXB0aW9ucy5odG1sCmluZGV4IDY5ZjhkZmVk
Y2VhMWUxYzI3Nzc0OGUxOGQ5ZDIyMmUxZmEzM2QyNDcuLjE5ZGRiMzAwOTgzMDQ5N2NjNWFhMDQ3
NmUyZDgxYmIwMzk0MTAzYWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFjYXB0
dXJlZnJvbWVsZW1lbnQvQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtLWV4Y2VwdGlvbnMuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhY2FwdHVyZWZyb21lbGVtZW50L0NhbnZhc0NhcHR1
cmVNZWRpYVN0cmVhbS1leGNlcHRpb25zLmh0bWwKQEAgLTYsNyArNiw3IEBACiAKIHRlc3QoZnVu
Y3Rpb24oKSB7CiAgIHZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMn
KTsKLSAgYXNzZXJ0X3Rocm93cygiTm90U3VwcG9ydGVkRXJyb3IiLCBmdW5jdGlvbigpIHsgY2Fu
dmFzLmNhcHR1cmVTdHJlYW0oLTAuNSkgfSwKKyAgYXNzZXJ0X3Rocm93c19kb20oIk5vdFN1cHBv
cnRlZEVycm9yIiwgZnVuY3Rpb24oKSB7IGNhbnZhcy5jYXB0dXJlU3RyZWFtKC0wLjUpIH0sCiAg
ICAgICAgICAgICAgICAgImNhbm5vdCBoYXZlIG5lZ2F0aXZlIGZyYW1lIHJhdGUiKTsKIH0sICdj
aGVjayBjYXB0dXJlU3RyZWFtKCkgdGhyb3dzIEV4Y2VwdGlvbiB3aXRoIGludmFsaWQgZnJhbWUg
cmF0ZScpOwogCkBAIC0yMiw3ICsyMiw3IEBAIGZ1bmN0aW9uIG1ha2VBc3luY1Rlc3QoKSB7CiAg
ICAgICBjdHguZmlsbFN0eWxlID0gcGF0dGVybjsKICAgICAgIGN0eC5maWxsUmVjdCgwLCAwLCAx
MDAsIDEwMCk7CiAKLSAgICAgIGFzc2VydF90aHJvd3MoIlNlY3VyaXR5RXJyb3IiLCBmdW5jdGlv
bigpIHsgY2FudmFzLmNhcHR1cmVTdHJlYW0oKSB9LAorICAgICAgYXNzZXJ0X3Rocm93c19kb20o
IlNlY3VyaXR5RXJyb3IiLCBmdW5jdGlvbigpIHsgY2FudmFzLmNhcHR1cmVTdHJlYW0oKSB9LAog
ICAgICAgICAgICAgICAgICJjYW5ub3QgaGF2ZSBjcm9zcyBvcmlnaW4iKTsKICAgICAgIHRlc3Qu
ZG9uZSgpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXNlc3Np
b24vbWV0YWRhdGEvYXJ0d29ya2Rvd25sb2FkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlh
c2Vzc2lvbi9tZXRhZGF0YS9hcnR3b3JrZG93bmxvYWQuaHRtbAppbmRleCBmNmIxMTUyYmRiZTgx
MzExZTIwNGU5YWM5NjE3NjY5MmRiODJlOWJiLi44NDE2MDU5OTI4MWI0NmYzMTc0MTgyY2NlNTYx
YmM5Y2NiYmFjMGNmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc2Vzc2lvbi9t
ZXRhZGF0YS9hcnR3b3JrZG93bmxvYWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlh
c2Vzc2lvbi9tZXRhZGF0YS9hcnR3b3JrZG93bmxvYWQuaHRtbApAQCAtMjAsMTQgKzIwLDE0IEBA
IHByb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4gewogICAgIGlmICghd2luZG93LmludGVybmFs
cykKICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0cygiVGVzdCBuZWVkcyBpbnRlcm5hbHMi
KTsKIAotICAgIHJldHVybiBwcm9taXNlX3JlamVjdHModGVzdCwgJ0ludmFsaWRBY2Nlc3NFcnJv
cicsIGludGVybmFscy5sb2FkQXJ0d29ya0ltYWdlKCJiYWRfaW1hZ2UuanBnIikpOworICAgIHJl
dHVybiBwcm9taXNlX3JlamVjdHNfZG9tKHRlc3QsICdJbnZhbGlkQWNjZXNzRXJyb3InLCBpbnRl
cm5hbHMubG9hZEFydHdvcmtJbWFnZSgiYmFkX2ltYWdlLmpwZyIpKTsKIH0sICJlbnN1cmUgbG9h
ZGluZyBpbnZhbGlkIGFydHdvcmsgY2F1c2VzIGEgZmFpbHVyZSIpOwogCiBwcm9taXNlX3Rlc3Qo
YXN5bmMgKHRlc3QpID0+IHsKICAgICBpZiAoIXdpbmRvdy5pbnRlcm5hbHMpCiAgICAgICAgIHJl
dHVybiBQcm9taXNlLnJlamVjdHMoIlRlc3QgbmVlZHMgaW50ZXJuYWxzIik7CiAKLSAgICByZXR1
cm4gcHJvbWlzZV9yZWplY3RzKHRlc3QsICdJbnZhbGlkQWNjZXNzRXJyb3InLCBpbnRlcm5hbHMu
bG9hZEFydHdvcmtJbWFnZSgiIikpOworICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZG9tKHRl
c3QsICdJbnZhbGlkQWNjZXNzRXJyb3InLCBpbnRlcm5hbHMubG9hZEFydHdvcmtJbWFnZSgiIikp
OwogfSwgImVuc3VyZSBsb2FkaW5nIGEgbm9uLWltYWdlIGNhdXNlcyBhIGZhaWx1cmUiKTsKIAog
ICAgICAgICA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJl
YW0vc2NyZWVuY2FwdHVyZS11c2VyLWdlc3R1cmUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbWVk
aWFzdHJlYW0vc2NyZWVuY2FwdHVyZS11c2VyLWdlc3R1cmUuaHRtbAppbmRleCA5NTgyNjk0Nzk5
MDUxOGVlZTYxNTEzMTQ5MzNkYWI0M2JmNDQ1YTAzLi42N2FiMGExYzE2MjA0NWFjOTc0NWNjMGFh
YzZmMGFlNzZlZjM5NjRiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFt
L3NjcmVlbmNhcHR1cmUtdXNlci1nZXN0dXJlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9t
ZWRpYXN0cmVhbS9zY3JlZW5jYXB0dXJlLXVzZXItZ2VzdHVyZS5odG1sCkBAIC0yNSw2ICsyNSw2
IEBAIHByb21pc2VfdGVzdCgoKSA9PiB7CiAKIAogcHJvbWlzZV90ZXN0KCh0ZXN0KSA9PiB7Ci0g
ICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0ZXN0LCAiSW52YWxpZEFjY2Vzc0Vycm9yIiwgbmF2
aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXREaXNwbGF5TWVkaWEoe3ZpZGVvIDogdHJ1ZX0pKTsKKyAg
ICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2RvbSh0ZXN0LCAiSW52YWxpZEFjY2Vzc0Vycm9yIiwg
bmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXREaXNwbGF5TWVkaWEoe3ZpZGVvIDogdHJ1ZX0pKTsK
IH0sICJEZW55IGdldERpc3BsYXlNZWRpYSBjYWxsIGlmIG5vIHVzZXIgZ2VzdHVyZSIpOwogPC9z
Y3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mZXRjaC9mZXRjaC11cmwtc2VyaWFsaXph
dGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvZmV0Y2gvZmV0Y2gtdXJsLXNlcmlhbGl6YXRpb24uaHRt
bAppbmRleCBkZTc5MzY0MTBlZjE0OTczMmE2OGVhZWM1MWIwNTQ3NTkwMzg4Yzg5Li42NDIyYmQy
MDg0NzYxMjkxNDFlZDIzYzhiMjkyN2QxNmY1NmViYTFmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9mZXRjaC9mZXRjaC11cmwtc2VyaWFsaXphdGlvbi5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zl
dGNoL2ZldGNoLXVybC1zZXJpYWxpemF0aW9uLmh0bWwKQEAgLTE3LDcgKzE3LDcgQEAgZnVuY3Rp
b24gZXhlY3V0ZVRlc3RzKHVybHMpCiAgICAgICAgICAgICB0ZXN0KGZ1bmN0aW9uKCkgewogICAg
ICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJiYXNlIikuc2V0QXR0cmlidXRl
KCJocmVmIiwgdXJsLmJhc2UpOwogICAgICAgICAgICAgICAgIGlmICh1cmwudXNlcm5hbWUgfHwg
dXJsLnBhc3N3b3JkIHx8IHVybC5mYWlsdXJlKQotICAgICAgICAgICAgICAgICAgICBhc3NlcnRf
dGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7ICBuZXcgUmVxdWVzdCh1cmwuaW5w
dXQpOyB9KTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3Is
IGZ1bmN0aW9uKCkgeyAgbmV3IFJlcXVlc3QodXJsLmlucHV0KTsgfSk7CiAgICAgICAgICAgICAg
ICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIHZhciByZXF1ZXN0ID0gbmV3IFJlcXVlc3Qo
dXJsLmlucHV0KTsKICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXF1ZXN0LnVy
bCwgdXJsLmhyZWYpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9mZXRjaC9m
ZXRjaGluZy1zYW1lLXJlc291cmNlLXdpdGgtZGlmZmVyZW50LW9wdGlvbnMuaHRtbCBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvZmV0Y2gvZmV0Y2hpbmctc2FtZS1yZXNvdXJjZS13aXRoLWRpZmZl
cmVudC1vcHRpb25zLmh0bWwKaW5kZXggY2NmOTUzZTFjMjNhMjllYmE0MWYwMTZjMmZkNGEwMDgx
NDM1M2ZhNS4uM2I0ZWYyZGFjNzVjZjM1ODkwMjhmYmU3NGYxNzFmZDk1M2NiMDRkYyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9mZXRjaC9mZXRjaGluZy1zYW1lLXJlc291cmNl
LXdpdGgtZGlmZmVyZW50LW9wdGlvbnMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2ZldGNoL2ZldGNoaW5nLXNhbWUtcmVzb3VyY2Utd2l0aC1kaWZmZXJlbnQtb3B0aW9ucy5odG1s
CkBAIC0yMSw4ICsyMSw4IEBAIHByb21pc2VfdGVzdChmdW5jdGlvbih0KSB7CiAgICAgICAgICAg
ICAgICAgICAgIGFzc2VydF90cnVlKGFycmF5QnVmZmVyLmJ5dGVMZW5ndGggPiAwKTsKICAgICAg
ICAgICAgICAgICB9KTsKICAgICAgICAgICAgIH0pLAotICAgICAgICAgICAgcHJvbWlzZV9yZWpl
Y3RzKHQsIG5ldyBUeXBlRXJyb3IoKSwgZmV0Y2godXJsMSwgeyJtb2RlIjogImNvcnMiLCAiY3Jl
ZGVudGlhbHMiOiAiaW5jbHVkZSJ9KSksCi0gICAgICAgICAgICBwcm9taXNlX3JlamVjdHModCwg
bmV3IFR5cGVFcnJvcigpLCBmZXRjaCh1cmwyLCB7Im1vZGUiOiAiY29ycyIsICJjcmVkZW50aWFs
cyI6ICJpbmNsdWRlIn0pKSwKKyAgICAgICAgICAgIHByb21pc2VfcmVqZWN0c19qcyh0LCBUeXBl
RXJyb3IsIGZldGNoKHVybDEsIHsibW9kZSI6ICJjb3JzIiwgImNyZWRlbnRpYWxzIjogImluY2x1
ZGUifSkpLAorICAgICAgICAgICAgcHJvbWlzZV9yZWplY3RzX2pzKHQsIFR5cGVFcnJvciwgZmV0
Y2godXJsMiwgeyJtb2RlIjogImNvcnMiLCAiY3JlZGVudGlhbHMiOiAiaW5jbHVkZSJ9KSksCiAg
ICAgICAgICAgICBmZXRjaCh1cmwyLCB7Im1vZGUiOiAiY29ycyJ9KS50aGVuKChyZXNwb25zZSkg
PT4gewogICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocmVzcG9uc2UudHlwZSwgImNvcnMi
KTsKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UuYXJyYXlCdWZmZXIoKS50aGVuKChh
cnJheUJ1ZmZlcikgPT4gewpAQCAtNDgsOSArNDgsOSBAQCBwcm9taXNlX3Rlc3QoZnVuY3Rpb24o
dCkgewogICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXNwb25zZS50eXBlLCAib3BhcXVlIik7
CiAgICAgICAgIH0pOwogICAgIH0pLnRoZW4oKCkgPT4gewotICAgICAgICByZXR1cm4gcHJvbWlz
ZV9yZWplY3RzKHQsIG5ldyBUeXBlRXJyb3IoKSwgZmV0Y2godXJsMywgeyJtb2RlIjogImNvcnMi
LCAiY3JlZGVudGlhbHMiOiAiaW5jbHVkZSJ9KSk7CisgICAgICAgIHJldHVybiBwcm9taXNlX3Jl
amVjdHNfanModCwgVHlwZUVycm9yLCBmZXRjaCh1cmwzLCB7Im1vZGUiOiAiY29ycyIsICJjcmVk
ZW50aWFscyI6ICJpbmNsdWRlIn0pKTsKICAgICB9KS50aGVuKCgpID0+IHsKLSAgICAgICAgcmV0
dXJuIHByb21pc2VfcmVqZWN0cyh0LCBuZXcgVHlwZUVycm9yKCksIGZldGNoKHVybDQsIHsibW9k
ZSI6ICJjb3JzIiwgImNyZWRlbnRpYWxzIjogImluY2x1ZGUifSkpOworICAgICAgICByZXR1cm4g
cHJvbWlzZV9yZWplY3RzX2pzKHQsIFR5cGVFcnJvciwgZmV0Y2godXJsNCwgeyJtb2RlIjogImNv
cnMiLCAiY3JlZGVudGlhbHMiOiAiaW5jbHVkZSJ9KSk7CiAgICAgfSkudGhlbigoKSA9PiB7CiAg
ICAgICAgIHJldHVybiBmZXRjaCh1cmw0LCB7Im1vZGUiOiAibm8tY29ycyJ9KS50aGVuKChyZXNw
b25zZSkgPT4gewogICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXNwb25zZS50eXBlLCAib3Bh
cXVlIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ZldGNoL3JlZGlyZWN0
bW9kZS1hbmQtcHJlbG9hZC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9mZXRjaC9yZWRp
cmVjdG1vZGUtYW5kLXByZWxvYWQuaHRtbAppbmRleCBjYmI2NWZmNGYxZmJkY2Y2MmE3Y2UxZjNj
MzUxZjNjZjc2ZDIyMzQ3Li4zMjRiZWE1NTZkZjNkMjVmM2ZhOWM4NzZkNzIwMTExOWE3MzE5ODJk
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ZldGNoL3JlZGlyZWN0bW9kZS1h
bmQtcHJlbG9hZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvZmV0Y2gvcmVkaXJl
Y3Rtb2RlLWFuZC1wcmVsb2FkLmh0bWwKQEAgLTI2LDcgKzI2LDcgQEAgZnVuY3Rpb24gc3RhcnRU
ZXN0cygpCiAgICAgfSwgIkZldGNoIHNob3VsZCBjaGVjayBmb3IgcmVkaXJlY3Rpb25zIGV2ZW4g
aWYgcmVzb3VyY2UgaXMgcHJlbG9hZGVkIChkaWZmZXJlbnQgZmV0Y2ggbW9kZSwgZGlmZmVyZW50
IHJlZGlyZWN0IG1vZGUpIik7CiAKICAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odGVzdCkgewot
ICAgICAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHRlc3QsIG5ldyBUeXBlRXJyb3IoKSwgZmV0
Y2gocHJlbG9hZFVybCwge3JlZGlyZWN0OiAiZXJyb3IiLCBtb2RlOiAiY29ycyIsIGNyZWRlbnRp
YWxzOiAiaW5jbHVkZSJ9KSk7CisgICAgICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNfanModGVz
dCwgVHlwZUVycm9yLCBmZXRjaChwcmVsb2FkVXJsLCB7cmVkaXJlY3Q6ICJlcnJvciIsIG1vZGU6
ICJjb3JzIiwgY3JlZGVudGlhbHM6ICJpbmNsdWRlIn0pKTsKICAgICB9LCAiRmV0Y2ggc2hvdWxk
IGNoZWNrIGZvciByZWRpcmVjdGlvbnMgZXZlbiBpZiByZXNvdXJjZSBpcyBwcmVsb2FkZWQgKGRp
ZmZlcmVudCBmZXRjaCBtb2RlLCBkaWZmZXJlbnQgcmVkaXJlY3QgbW9kZSkgMiIpOwogfQogICAg
IDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9u
L3B1c2hzdGF0ZS1hdC11bmlxdWUtb3JpZ2luLWRlbmllZC5weSBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvbmF2aWdhdGlvbi9wdXNoc3RhdGUtYXQtdW5pcXVlLW9yaWdpbi1kZW5pZWQucHkKaW5k
ZXggNDc1ZWYyMzAyMzk5ZTc2MTY4NzY4YmIxZGIwMjFhNzA3YzNkODllYy4uMjgyMjUxNTQ3ZTMx
NzZmMmI0NDNlYTI5Y2U1NDhmYTY1MWY2MjExMCAxMDA3NTUKLS0tIGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9uYXZpZ2F0aW9uL3B1c2hzdGF0ZS1hdC11bmlxdWUtb3JpZ2luLWRlbmllZC5weQor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcHVzaHN0YXRlLWF0LXVuaXF1
ZS1vcmlnaW4tZGVuaWVkLnB5CkBAIC0xMCw3ICsxMCw3IEBAIHN5cy5zdGRvdXQud3JpdGUoCiAg
ICAgJzxzY3JpcHQ+XG4nCiAgICAgJ3ZhciBvcmlnaW5VUkwgPSBkb2N1bWVudC5VUkw7XG4nCiAg
ICAgJ3Rlc3QoZnVuY3Rpb24gKCkge1xuJwotICAgICcgICAgYXNzZXJ0X3Rocm93cyhcJ1NlY3Vy
aXR5RXJyb3JcJywgZnVuY3Rpb24gKCkge1xuJworICAgICcgICAgYXNzZXJ0X3Rocm93c19kb20o
XCdTZWN1cml0eUVycm9yXCcsIGZ1bmN0aW9uICgpIHtcbicKICAgICAnICAgICAgICBoaXN0b3J5
LnB1c2hTdGF0ZShudWxsLCBudWxsLCBvcmlnaW5VUkwgKyAiL3BhdGgiKTtcbicKICAgICAnICAg
IH0pO1xuJwogICAgICd9LCBcJ3B1c2hTdGF0ZSB0byBhIG5ldyBwYXRoIGluIHVuaXF1ZSBvcmln
aW4gc2hvdWxkIGZhaWwgd2l0aCBTZWN1cml0eUVycm9yXCcpO1xuJwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbi5odG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbi5odG1sCmluZGV4
IDM5MTg1OTAwMDcxMTM5NWVhZGUxNTFhNzQ4YmEyYmRiYjgyNzA4YmUuLjkzYTg3Y2I0OTBjOGYz
ZTIwYmNlY2Y5ZjRhMzMxNGE5YmQ3M2E4MWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvbm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb24uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL25vdGlmaWNhdGlvbnMvbm90aWZpY2F0aW9uLmh0bWwKQEAgLTExLDcgKzExLDcg
QEAKIDxzY3JpcHQ+CiAKIHRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcg
VHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgeyBuZXcgTm90aWZpY2F0aW9uKCk7IH0pOworICAgIGFz
c2VydF90aHJvd3NfanMoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsgbmV3IE5vdGlmaWNhdGlvbigp
OyB9KTsKIH0sICJUaGUgTm90aWZpY2F0aW9uIGNvbnN0cnVjdG9yIHJlcXVpcmVzIGF0IGxlYXN0
IG9uZSBhcmd1bWVudC4iKTsKIAogdGVzdChmdW5jdGlvbigpIHsKQEAgLTUzLDcgKzUzLDcgQEAg
dGVzdChmdW5jdGlvbigpIHsKICAgICBsZXQgbm90aWZpY2F0aW9uMyA9IG5ldyBOb3RpZmljYXRp
b24oInRlc3QgdGl0bGUiLCB7IGRpcjogInJ0bCIgfSk7CiAgICAgYXNzZXJ0X2VxdWFscyhub3Rp
ZmljYXRpb24zLmRpciwgInJ0bCIpOwogCi0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9y
KCksIGZ1bmN0aW9uKCkgeyBuZXcgTm90aWZpY2F0aW9uKCJ0ZXN0IHRpdGxlIiwgeyBkaXI6ICJm
b28iIH0pIH0pOworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsg
bmV3IE5vdGlmaWNhdGlvbigidGVzdCB0aXRsZSIsIHsgZGlyOiAiZm9vIiB9KSB9KTsKIH0sICJU
aGUgTm90aWZpY2F0aW9uT3B0aW9ucyBkaWN0aW9uYXJ5IG9ubHkgYWNjZXB0cyB2YWxpZCBOb3Rp
ZmljYXRpb25EaXJlY3Rpb24gdmFsdWVzLiIpOwogCiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1hZGRyZXNzLWF0dHJp
YnV0ZXMtYW5kLXRvSlNPTi1tZXRob2QuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1hZGRyZXNzLWF0dHJpYnV0ZXMtYW5kLXRvSlNPTi1t
ZXRob2QuaHR0cHMuaHRtbAppbmRleCBjNjAzOWI1MzBjZWY3MmZlOGIxZWNhZDk1ZWEzZTJhNzRm
YjMzNWJkLi5hNDZmOWIyMGM4YTYzNzY5MjE1OTVlNWE1M2QzYzUyMGNjMjQ4OTY1IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtYWRkcmVz
cy1hdHRyaWJ1dGVzLWFuZC10b0pTT04tbWV0aG9kLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LWFkZHJlc3MtYXR0cmlidXRlcy1h
bmQtdG9KU09OLW1ldGhvZC5odHRwcy5odG1sCkBAIC0zMSw4ICszMSw4IEBAIGZ1bmN0aW9uIHJ1
blRlc3QoYnV0dG9uLCBleHBlY3RlZCA9IHt9KSB7CiAgICAgICBhZGRyLmFkZHJlc3NMaW5lIGlu
c3RhbmNlb2YgQXJyYXksCiAgICAgICAiRXhwZWN0ZWQgYWRkcmVzc0xpbmUgdG8gYmUgYW4gYXJy
YXkiCiAgICAgKTsKLSAgICBhc3NlcnRfdGhyb3dzKAotICAgICAgbmV3IFR5cGVFcnJvcigpLAor
ICAgIGFzc2VydF90aHJvd3NfanMoCisgICAgICBUeXBlRXJyb3IsCiAgICAgICAoKSA9PiB7CiAg
ICAgICAgIGFkZHIuYWRkcmVzc0xpbmUucHVzaCgidGhpcyBtdXN0IHRocm93Iik7CiAgICAgICB9
LApAQCAtNTksOCArNTksOCBAQCBmdW5jdGlvbiBydW5UZXN0KGJ1dHRvbiwgZXhwZWN0ZWQgPSB7
fSkgewogICAgIH0KICAgICBhc3NlcnRfZXF1YWxzKGpzb25BZGRyZXNzRW50cmllcy5sZW5ndGgs
IGV4cGVjdGVkRW50cmllcy5sZW5ndGgpOwogICAgIC8vIENoZWNrIHRoYXQgLnRvSlNPTigpIGNy
ZWF0ZWQgYSBmcm96ZW4gYXJyYXkKLSAgICBhc3NlcnRfdGhyb3dzKAotICAgICAgbmV3IFR5cGVF
cnJvcigpLAorICAgIGFzc2VydF90aHJvd3NfanMoCisgICAgICBUeXBlRXJyb3IsCiAgICAgICAo
KSA9PiB7CiAgICAgICAgIGpzb25BZGRyZXNzLmFkZHJlc3NMaW5lLnB1c2goInRoaXMgbXVzdCB0
aHJvdyIpOwogICAgICAgfSwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5
bWVudHJlcXVlc3QvcGF5bWVudC1pcy1zaG93aW5nLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtaXMtc2hvd2luZy5odHRwcy5odG1sCmlu
ZGV4IGE4NGI4YTI0ZGI3ZjNkYTZjMjJjYWUwZjI3MjkxNmNjOGZiMGY5M2UuLjZkMzlkYzQ0ZmQx
MGE2OGI2ZjJhNTFiZmJlZTViMWI2ZWY4ODhjNjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1pcy1zaG93aW5nLmh0dHBzLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LWlzLXNob3dp
bmcuaHR0cHMuaHRtbApAQCAtODEsNyArODEsNyBAQAogICAgICAgICAgIHJldHVybiBbcmVxdWVz
dDIuc2hvdygpXQogICAgICAgICB9CiAgICAgICApOwotICAgICAgYXdhaXQgcHJvbWlzZV9yZWpl
Y3RzKAorICAgICAgYXdhaXQgcHJvbWlzZV9yZWplY3RzX2RvbSgKICAgICAgICAgdCwKICAgICAg
ICAgJ0Fib3J0RXJyb3InLAogICAgICAgICBzaG93UHJvbWlzZTIsCkBAIC04OSw3ICs4OSw3IEBA
CiAgICAgICApOwogCiAgICAgICBhd2FpdCByZXF1ZXN0MS5hYm9ydCgpOwotICAgICAgYXdhaXQg
cHJvbWlzZV9yZWplY3RzKAorICAgICAgYXdhaXQgcHJvbWlzZV9yZWplY3RzX2RvbSgKICAgICAg
ICAgdCwKICAgICAgICAgJ0Fib3J0RXJyb3InLAogICAgICAgICBzaG93UHJvbWlzZTEsCkBAIC0x
MDAsNyArMTAwLDcgQEAKICAgICAgIC8vIGl0IHdpbGwgYWdhaW4gcmVzdWx0IGluIHByb21pc2Ug
cmVqZWN0ZWQgd2l0aCBhbiBJbnZhbGlkU3RhdGVFcnJvci4KICAgICAgIC8vIFNlZTogaHR0cHM6
Ly9naXRodWIuY29tL3czYy9wYXltZW50LXJlcXVlc3QvcHVsbC84MjEKICAgICAgIGNvbnN0IFty
ZWplY3RlZFByb21pc2VdID0gYXdhaXQgYWN0aXZhdGVUaGVuKGFzeW5jICgpID0+IHsgcmV0dXJu
IFtyZXF1ZXN0Mi5zaG93KCldIH0pOwotICAgICAgYXdhaXQgcHJvbWlzZV9yZWplY3RzKAorICAg
ICAgYXdhaXQgcHJvbWlzZV9yZWplY3RzX2RvbSgKICAgICAgICAgdCwKICAgICAgICAgJ0ludmFs
aWRTdGF0ZUVycm9yJywKICAgICAgICAgcmVqZWN0ZWRQcm9taXNlLApAQCAtMTM3LDcgKzEzNyw3
IEBACiAgICAgICAgIH0KICAgICAgICk7CiAKLSAgICAgIGF3YWl0IHByb21pc2VfcmVqZWN0cygK
KyAgICAgIGF3YWl0IHByb21pc2VfcmVqZWN0c19kb20oCiAgICAgICAgIHQsCiAgICAgICAgICdB
Ym9ydEVycm9yJywKICAgICAgICAgd2luZG93U2hvd1Byb21pc2UsCkBAIC0xNDYsOSArMTQ2LDEw
IEBACiAKICAgICAgIC8vIENsZWFudXAKICAgICAgIGF3YWl0IGlmcmFtZVJlcXVlc3QuYWJvcnQo
KTsKLSAgICAgIGF3YWl0IHByb21pc2VfcmVqZWN0cygKKyAgICAgIGF3YWl0IHByb21pc2VfcmVq
ZWN0c19kb20oCiAgICAgICAgIHQsCiAgICAgICAgICdBYm9ydEVycm9yJywKKyAgICAgICAgaWZy
YW1lV2luZG93LkRPTUV4Y2VwdGlvbiwKICAgICAgICAgaWZyYW1lU2hvd1Byb21pc2UsCiAgICAg
ICAgICdhYm9ydCgpIHdhcyBjYWxsZWQnKTsKICAgICAgIGlmcmFtZS5yZW1vdmUoKTsKQEAgLTE3
NywxNiArMTc4LDE3IEBACiAgICAgICAgIH0KICAgICAgICk7CiAKLSAgICAgIGF3YWl0IHByb21p
c2VfcmVqZWN0cygKKyAgICAgIGF3YWl0IHByb21pc2VfcmVqZWN0c19kb20oCiAgICAgICAgIHQs
CiAgICAgICAgICdBYm9ydEVycm9yJywKKyAgICAgICAgaWZyYW1lV2luZG93LkRPTUV4Y2VwdGlv
biwKICAgICAgICAgaWZyYW1lU2hvd1Byb21pc2UsCiAgICAgICAgICdUaGUgdG9wIHdpbmRvdyBp
cyBhbHJlYWR5IHNob3dpbmcgYSBwYXltZW50IHJlcXVlc3QuJywKICAgICAgICk7CiAKICAgICAg
IC8vIENsZWFudXAKICAgICAgIGF3YWl0IHdpbmRvd1JlcXVlc3QuYWJvcnQoKTsKLSAgICAgIGF3
YWl0IHByb21pc2VfcmVqZWN0cygKKyAgICAgIGF3YWl0IHByb21pc2VfcmVqZWN0c19kb20oCiAg
ICAgICAgIHQsCiAgICAgICAgICdBYm9ydEVycm9yJywKICAgICAgICAgd2luZG93U2hvd1Byb21p
c2UsCkBAIC0yMTcsMTUgKzIxOSwxNiBAQAogICAgICAgICB9CiAgICAgICApOwogCi0gICAgICBh
d2FpdCBwcm9taXNlX3JlamVjdHMoCisgICAgICBhd2FpdCBwcm9taXNlX3JlamVjdHNfZG9tKAog
ICAgICAgICB0LAogICAgICAgICAnQWJvcnRFcnJvcicsCisgICAgICAgIGlmcmFtZVdpbmRvdy5E
T01FeGNlcHRpb24sCiAgICAgICAgIGlmcmFtZVNob3dQcm9taXNlLAogICAgICAgICAnRXhwZWN0
ZWQgaWZyYW1lU2hvd1Byb21pc2UgdG8gcmVqZWN0LCByZXF1ZXN0IGlzIGFscmVhZHkgc2hvd2lu
Zy4nLAogICAgICAgKTsKIAogICAgICAgYXdhaXQgd2luZG93UmVxdWVzdC5hYm9ydCgpOwotICAg
ICAgYXdhaXQgcHJvbWlzZV9yZWplY3RzKAorICAgICAgYXdhaXQgcHJvbWlzZV9yZWplY3RzX2Rv
bSgKICAgICAgICAgdCwKICAgICAgICAgJ0Fib3J0RXJyb3InLAogICAgICAgICB3aW5kb3dTaG93
UHJvbWlzZSwKQEAgLTI1Niw3ICsyNTksNyBAQAogICAgICAgKTsKIAogICAgICAgLy8gd2luZG93
U2hvd1Byb21pc2UgYW5kIGlmcmFtZVJlcXVlc3Qgd2lsbCBib3RoIHJlamVjdAotICAgICAgYXdh
aXQgcHJvbWlzZV9yZWplY3RzKAorICAgICAgYXdhaXQgcHJvbWlzZV9yZWplY3RzX2RvbSgKICAg
ICAgICAgdCwKICAgICAgICAgJ0Fib3J0RXJyb3InLAogICAgICAgICB3aW5kb3dTaG93UHJvbWlz
ZSwKQEAgLTI2NCw5ICsyNjcsMTAgQEAKICAgICAgICk7CiAKICAgICAgIGF3YWl0IGlmcmFtZVJl
cXVlc3QuYWJvcnQoKTsKLSAgICAgIGF3YWl0IHByb21pc2VfcmVqZWN0cygKKyAgICAgIGF3YWl0
IHByb21pc2VfcmVqZWN0c19kb20oCiAgICAgICAgIHQsCiAgICAgICAgICdBYm9ydEVycm9yJywK
KyAgICAgICAgaWZyYW1lV2luZG93LkRPTUV4Y2VwdGlvbiwKICAgICAgICAgaWZyYW1lU2hvd1By
b21pc2UsCiAgICAgICAgICdhYm9ydCgpIHdhcyBjYWxsZWQnKTsKICAgICAgIGlmcmFtZS5yZW1v
dmUoKTsKQEAgLTI4NCwxOSArMjg4LDE0IEBACiAgICAgICAvLyBhbmQgdGhlIHJlcXVlc3QgaXMg
c2hvd2luZyBib29sZWFuIHRvIGJlY29tZSBmYWxzZS4KICAgICAgIGlmcmFtZS5zcmMgPSAncmVz
b3VyY2VzL2JsYW5rLmh0bWw/YWJjPTEyMyc7CiAgICAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNv
bHZlID0+IChpZnJhbWUub25sb2FkID0gcmVzb2x2ZSkpOwotICAgICAgYXdhaXQgcHJvbWlzZV9y
ZWplY3RzKAotICAgICAgICB0LAotICAgICAgICAnQWJvcnRFcnJvcicsCi0gICAgICAgIGlmcmFt
ZVNob3dQcm9taXNlLAotICAgICAgICAnTmF2aWdhdGluZyBpZnJhbWUgYXdheSBtdXN0IGNhdXNl
IHRoZSBpZnJhbWVTaG93UHJvbWlzZSB0byByZWplY3QuJywKLSAgICAgICk7CisKICAgICAgIGlm
cmFtZS5yZW1vdmUoKTsKIAogICAgICAgLy8gTm93IHdlIHNob3VsZCBiZSBvayB0byBzcGluIHVw
IGEgbmV3IHBheW1lbnQgcmVxdWVzdAogICAgICAgY29uc3QgcmVxdWVzdCA9IG5ldyB3aW5kb3cu
UGF5bWVudFJlcXVlc3QobWV0aG9kcywgZGV0YWlscyk7CiAgICAgICBjb25zdCBbc2hvd1Byb21p
c2VdID0gYXdhaXQgYWN0aXZhdGVUaGVuKGFzeW5jICgpID0+IHsgcmV0dXJuIFtyZXF1ZXN0LnNo
b3coKV0gfSk7CiAgICAgICBhd2FpdCByZXF1ZXN0LmFib3J0KCk7Ci0gICAgICBhd2FpdCBwcm9t
aXNlX3JlamVjdHMoCisgICAgICBhd2FpdCBwcm9taXNlX3JlamVjdHNfZG9tKAogICAgICAgICB0
LAogICAgICAgICAnQWJvcnRFcnJvcicsCiAgICAgICAgIHNob3dQcm9taXNlLApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LXJlcXVlc3Qt
YWJvcnQtbWV0aG9kLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRy
ZXF1ZXN0L3BheW1lbnQtcmVxdWVzdC1hYm9ydC1tZXRob2QuaHR0cHMuaHRtbAppbmRleCBiNGE3
MzQxMWQ3ZTQ3YjNjZTY2NGYzOWI0NGE3ZGY4ZDVhNGRhZDZjLi45OTg2NmUzOGJhNjhmMDkzNjFk
ODkyZDU0YzU0ZDBlOGNlNTVjZTJkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVxdWVzdC1hYm9ydC1tZXRob2QuaHR0cHMuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVxdWVz
dC1hYm9ydC1tZXRob2QuaHR0cHMuaHRtbApAQCAtNDEsMTUgKzQxLDE1IEBAIGNvbnN0IGRlZmF1
bHREZXRhaWxzID0gT2JqZWN0LmZyZWV6ZSh7CiBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CiAg
IC8vIHJlcXVlc3QgaXMgaW4gImNyZWF0ZWQiIHN0YXRlCiAgIGNvbnN0IHJlcXVlc3QgPSBuZXcg
UGF5bWVudFJlcXVlc3QoZGVmYXVsdE1ldGhvZHMsIGRlZmF1bHREZXRhaWxzKTsKLSAgYXdhaXQg
cHJvbWlzZV9yZWplY3RzKHQsICJJbnZhbGlkU3RhdGVFcnJvciIsIHJlcXVlc3QuYWJvcnQoKSk7
CisgIGF3YWl0IHByb21pc2VfcmVqZWN0c19kb20odCwgIkludmFsaWRTdGF0ZUVycm9yIiwgcmVx
dWVzdC5hYm9ydCgpKTsKIH0sIGBUaHJvd3MgaWYgdGhlIHByb21pc2UgW1tzdGF0ZV1dIGlzIG5v
dCAiaW50ZXJhY3RpdmUiYCk7CiAKIHByb21pc2VfdGVzdChhc3luYyB0ID0+IHsKICAgLy8gcmVx
dWVzdCBpcyBpbiAiY3JlYXRlZCIgc3RhdGUuCiAgIGNvbnN0IHJlcXVlc3QgPSBuZXcgUGF5bWVu
dFJlcXVlc3QoZGVmYXVsdE1ldGhvZHMsIGRlZmF1bHREZXRhaWxzKTsKLSAgYXdhaXQgcHJvbWlz
ZV9yZWplY3RzKHQsICJJbnZhbGlkU3RhdGVFcnJvciIsIHJlcXVlc3QuYWJvcnQoKSk7CisgIGF3
YWl0IHByb21pc2VfcmVqZWN0c19kb20odCwgIkludmFsaWRTdGF0ZUVycm9yIiwgcmVxdWVzdC5h
Ym9ydCgpKTsKICAgLy8gQ2FsbCBpdCBhZ2FpbiwgZm9yIGdvb2QgbWVhc3VyZS4KLSAgYXdhaXQg
cHJvbWlzZV9yZWplY3RzKHQsICJJbnZhbGlkU3RhdGVFcnJvciIsIHJlcXVlc3QuYWJvcnQoKSk7
CisgIGF3YWl0IHByb21pc2VfcmVqZWN0c19kb20odCwgIkludmFsaWRTdGF0ZUVycm9yIiwgcmVx
dWVzdC5hYm9ydCgpKTsKICAgLy8gVGhlIHJlcXVlc3QncyBzdGF0ZSBpcyAiY3JlYXRlZCIsIHNv
IGxldCdzIHNob3cgaXQKICAgLy8gd2hpY2ggY2hhbmdlcyB0aGUgc3RhdGUgdG8gImludGVyYWN0
aXZlLiIuCiAgIGF3YWl0IGFjdGl2YXRlVGhlbihhc3luYyAoKSA9PiB7CkBAIC02Miw3ICs2Miw3
IEBAIHByb21pc2VfdGVzdChhc3luYyB0ID0+IHsKICAgICB9IAogICB9KTsKICAgLy8gVGhlIHJl
cXVlc3QgaXMgbm93ICJjbG9zZWQiLCBzby4uLgotICBhd2FpdCBwcm9taXNlX3JlamVjdHModCwg
IkludmFsaWRTdGF0ZUVycm9yIiwgcmVxdWVzdC5hYm9ydCgpKTsKKyAgYXdhaXQgcHJvbWlzZV9y
ZWplY3RzX2RvbSh0LCAiSW52YWxpZFN0YXRlRXJyb3IiLCByZXF1ZXN0LmFib3J0KCkpOwogfSwg
YENhbGxpbmcgYWJvcnQgbXVzdCBub3QgY2hhbmdlIHRoZSBbW3N0YXRlXV0gdW50aWwgYWZ0ZXIg
ImludGVyYWN0aXZlImApOwogCiB1c2VyX2FjdGl2YXRpb25fdGVzdChhc3luYyB0ID0+IHsKQEAg
LTczLDEwICs3MywxMCBAQCB1c2VyX2FjdGl2YXRpb25fdGVzdChhc3luYyB0ID0+IHsKICAgfSBj
YXRjaCAoZXJyKSB7CiAgICAgYXNzZXJ0X3RydWUoZmFsc2UsICJVbmV4cGVjdGVkIHByb21pc2Ug
cmVqZWN0aW9uOiAiICsgZXJyLm1lc3NhZ2UpOwogICB9Ci0gIGF3YWl0IHByb21pc2VfcmVqZWN0
cyh0LCAiQWJvcnRFcnJvciIsIGFjY2VwdFByb21pc2UpOworICBhd2FpdCBwcm9taXNlX3JlamVj
dHNfZG9tKHQsICJBYm9ydEVycm9yIiwgYWNjZXB0UHJvbWlzZSk7CiAgIC8vIEFzIHJlcXVlc3Qg
aXMgbm93ICJjbG9zZWQiLCB0cnlpbmcgdG8gc2hvdyBpdCB3aWxsIGZhaWwKICAgYXdhaXQgYWN0
aXZhdGVUaGVuKGFzeW5jICgpID0+IHsKLSAgICBhd2FpdCBwcm9taXNlX3JlamVjdHModCwgIklu
dmFsaWRTdGF0ZUVycm9yIiwgcmVxdWVzdC5zaG93KCkpOworICAgIGF3YWl0IHByb21pc2VfcmVq
ZWN0c19kb20odCwgIkludmFsaWRTdGF0ZUVycm9yIiwgcmVxdWVzdC5zaG93KCkpOwogICB9KTsK
IH0sICJjYWxsaW5nIC5hYm9ydCgpIGNhdXNlcyBhY2NlcHRQcm9taXNlIHRvIHJlamVjdCBhbmQg
Y2xvc2VzIHRoZSByZXF1ZXN0LiIpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVxdWVzdC1jYW5tYWtlcGF5bWVudC1tZXRob2Qu
aHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVu
dC1yZXF1ZXN0LWNhbm1ha2VwYXltZW50LW1ldGhvZC5odHRwcy5odG1sCmluZGV4IDQzMjc3ZWFl
NzVjYzJmZThkYTYzZWMyY2Y0ODdiNDJlZTBmMTZjZTEuLmYxZmIyNWJkMGNiNzYxNTU5NWRlYzYw
MjdkMjM5NzliZDEyNjZhYzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5
bWVudHJlcXVlc3QvcGF5bWVudC1yZXF1ZXN0LWNhbm1ha2VwYXltZW50LW1ldGhvZC5odHRwcy5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1y
ZXF1ZXN0LWNhbm1ha2VwYXltZW50LW1ldGhvZC5odHRwcy5odG1sCkBAIC00NCwxMyArNDQsMTMg
QEAgdXNlcl9hY3RpdmF0aW9uX3Rlc3QoYXN5bmMgdCA9PiB7CiAgICAgICBgY2FuTWFrZVBheW1l
bnRQcm9taXNlIHNob3VsZCBoYXZlIHRocm93biBJbnZhbGlkU3RhdGVFcnJvcmAKICAgICApOwog
ICB9IGNhdGNoIChlcnIpIHsKLSAgICBhd2FpdCBwcm9taXNlX3JlamVjdHModCwgIkludmFsaWRT
dGF0ZUVycm9yIiwgY2FuTWFrZVBheW1lbnRQcm9taXNlKTsKKyAgICBhd2FpdCBwcm9taXNlX3Jl
amVjdHNfZG9tKHQsICJJbnZhbGlkU3RhdGVFcnJvciIsIGNhbk1ha2VQYXltZW50UHJvbWlzZSk7
CiAgIH0gZmluYWxseSB7CiAgICAgYXdhaXQgcmVxdWVzdC5hYm9ydCgpOwotICAgIGF3YWl0IHBy
b21pc2VfcmVqZWN0cyh0LCAiQWJvcnRFcnJvciIsIGFjY2VwdFByb21pc2UpOworICAgIGF3YWl0
IHByb21pc2VfcmVqZWN0c19kb20odCwgIkFib3J0RXJyb3IiLCBhY2NlcHRQcm9taXNlKTsKICAg
fQogICAvLyBUaGUgc3RhdGUgc2hvdWxkIGJlICJjbG9zZWQiCi0gIGF3YWl0IHByb21pc2VfcmVq
ZWN0cyh0LCAiSW52YWxpZFN0YXRlRXJyb3IiLCByZXF1ZXN0LmNhbk1ha2VQYXltZW50KCkpOwor
ICBhd2FpdCBwcm9taXNlX3JlamVjdHNfZG9tKHQsICJJbnZhbGlkU3RhdGVFcnJvciIsIHJlcXVl
c3QuY2FuTWFrZVBheW1lbnQoKSk7CiB9LCAnSWYgcmVxdWVzdC5bW3N0YXRlXV0gaXMgImludGVy
YWN0aXZlIiwgdGhlbiByZXR1cm4gYSBwcm9taXNlIHJlamVjdGVkIHdpdGggYW4gIkludmFsaWRT
dGF0ZUVycm9yIiBET01FeGNlcHRpb24uJyk7CiAKIC8vIEZJWE1FOiBUaGlzIGNhbiBiZSByZW1v
dmVkIGluIGZhdm9yIG9mIHRoZSB0ZXN0IGluIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvcGF5bWVudC1yZXF1ZXN0IG9uY2Ugd2Ugc3VwcG9ydCB0ZXN0X2RyaXZlci5ibGVzcygpLgpA
QCAtNTksNyArNTksNyBAQCB1c2VyX2FjdGl2YXRpb25fdGVzdChhc3luYyB0ID0+IHsKICAgY29u
c3QgYWNjZXB0UHJvbWlzZSA9IHJlcXVlc3Quc2hvdygpOyAvLyBTZXRzIHN0YXRlIHRvICJpbnRl
cmFjdGl2ZSIKICAgYWNjZXB0UHJvbWlzZS5jYXRjaCgoKSA9PiB7fSk7IC8vIG5vLW9wLCBqdXN0
IHRvIHNpbGVuY2UgdW5oYW5kbGVkIHJlamVjdGlvbiBpbiBkZXZ0b29scy4KICAgYXdhaXQgcmVx
dWVzdC5hYm9ydCgpOyAvLyBUaGUgc3RhdGUgaXMgbm93ICJjbG9zZWQiCi0gIGF3YWl0IHByb21p
c2VfcmVqZWN0cyh0LCAiSW52YWxpZFN0YXRlRXJyb3IiLCByZXF1ZXN0LmNhbk1ha2VQYXltZW50
KCkpOworICBhd2FpdCBwcm9taXNlX3JlamVjdHNfZG9tKHQsICJJbnZhbGlkU3RhdGVFcnJvciIs
IHJlcXVlc3QuY2FuTWFrZVBheW1lbnQoKSk7CiAgIHRyeSB7CiAgICAgY29uc3QgcmVzdWx0ID0g
YXdhaXQgcmVxdWVzdC5jYW5NYWtlUGF5bWVudCgpOwogICAgIGFzc2VydF90cnVlKApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LXJlcXVl
c3QtbWVyY2hhbnQtdmFsaWRhdGlvbi5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9wYXltZW50cmVxdWVzdC9wYXltZW50LXJlcXVlc3QtbWVyY2hhbnQtdmFsaWRhdGlvbi5odHRw
cy5odG1sCmluZGV4IGIwMGFlZDNmY2EzMTI3MTY3MTQwNGNjNjA0MWM4NDk4ZDE3YWY5NjEuLjYz
ZDY1OTljYWIzM2ZiNDExN2RmZDU4MmQyNTEwNjUzMDA5ODkwMzggMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1yZXF1ZXN0LW1lcmNoYW50
LXZhbGlkYXRpb24uaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1l
bnRyZXF1ZXN0L3BheW1lbnQtcmVxdWVzdC1tZXJjaGFudC12YWxpZGF0aW9uLmh0dHBzLmh0bWwK
QEAgLTM2LDEwICszNiwxMCBAQCB1c2VyX2FjdGl2YXRpb25fdGVzdChhc3luYyB0ID0+IHsKICAg
ICByZXF1ZXN0Lm9ubWVyY2hhbnR2YWxpZGF0aW9uID0gZXZlbnQgPT4gewogICAgICAgICBhc3Nl
cnRfZXF1YWxzKGV2ZW50LnZhbGlkYXRpb25VUkwsICJodHRwczovL3dlYmtpdC5vcmcvIik7CiAg
ICAgICAgIGV2ZW50LmNvbXBsZXRlKHsgfSk7Ci0gICAgICAgIGFzc2VydF90aHJvd3MoIkludmFs
aWRTdGF0ZUVycm9yIiwgKCkgPT4gZXZlbnQuY29tcGxldGUoeyB9KSk7CisgICAgICAgIGFzc2Vy
dF90aHJvd3NfZG9tKCJJbnZhbGlkU3RhdGVFcnJvciIsICgpID0+IGV2ZW50LmNvbXBsZXRlKHsg
fSkpOwogICAgICAgICByZXF1ZXN0LmFib3J0KCk7CiAgICAgfTsKLSAgICBhd2FpdCBwcm9taXNl
X3JlamVjdHModCwgIkFib3J0RXJyb3IiLCByZXF1ZXN0LnNob3coKSk7CisgICAgYXdhaXQgcHJv
bWlzZV9yZWplY3RzX2RvbSh0LCAiQWJvcnRFcnJvciIsIHJlcXVlc3Quc2hvdygpKTsKIH0sICJD
YWxsaW5nIGNvbXBsZXRlKCkgdHdpY2UgdGhyb3dzIGFuIEludmFsaWRTdGF0ZUVycm9yLiIpOwog
CiB1c2VyX2FjdGl2YXRpb25fdGVzdChhc3luYyB0ID0+IHsKQEAgLTUwLDkgKzUwLDkgQEAgdXNl
cl9hY3RpdmF0aW9uX3Rlc3QoYXN5bmMgdCA9PiB7CiAgICAgcmVxdWVzdC5vbm1lcmNoYW50dmFs
aWRhdGlvbiA9IGV2ZW50ID0+IHsKICAgICAgICAgYXNzZXJ0X2VxdWFscyhldmVudC52YWxpZGF0
aW9uVVJMLCAiaHR0cHM6Ly93ZWJraXQub3JnLyIpOwogICAgICAgICByZXF1ZXN0LmFib3J0KCk7
Ci0gICAgICAgIGFzc2VydF90aHJvd3MoIkludmFsaWRTdGF0ZUVycm9yIiwgKCkgPT4gZXZlbnQu
Y29tcGxldGUoeyB9KSk7CisgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlkU3RhdGVF
cnJvciIsICgpID0+IGV2ZW50LmNvbXBsZXRlKHsgfSkpOwogICAgIH07Ci0gICAgYXdhaXQgcHJv
bWlzZV9yZWplY3RzKHQsICJBYm9ydEVycm9yIiwgcmVxdWVzdC5zaG93KCkpOworICAgIGF3YWl0
IHByb21pc2VfcmVqZWN0c19kb20odCwgIkFib3J0RXJyb3IiLCByZXF1ZXN0LnNob3coKSk7CiB9
LCAiQ2FsbGluZyBjb21wbGV0ZSgpIGFmdGVyIGFib3J0KCkgdGhyb3dzIGFuIEludmFsaWRTdGF0
ZUVycm9yLiIpOwogCiB1c2VyX2FjdGl2YXRpb25fdGVzdChhc3luYyB0ID0+IHsKQEAgLTY0LDcg
KzY0LDcgQEAgdXNlcl9hY3RpdmF0aW9uX3Rlc3QoYXN5bmMgdCA9PiB7CiAgICAgICAgIGFzc2Vy
dF9lcXVhbHMoZXZlbnQudmFsaWRhdGlvblVSTCwgImh0dHBzOi8vd2Via2l0Lm9yZy8iKTsKICAg
ICAgICAgZXZlbnQuY29tcGxldGUobmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gcmVq
ZWN0KCkpKTsKICAgICB9OwotICAgIGF3YWl0IHByb21pc2VfcmVqZWN0cyh0LCAiQWJvcnRFcnJv
ciIsIHJlcXVlc3Quc2hvdygpKTsKKyAgICBhd2FpdCBwcm9taXNlX3JlamVjdHNfZG9tKHQsICJB
Ym9ydEVycm9yIiwgcmVxdWVzdC5zaG93KCkpOwogfSwgIkNhbGxpbmcgY29tcGxldGUoKSB3aXRo
IGEgcHJvbWlzZSB0aGF0IGlzIHJlamVjdGVkIGFib3J0cyB0aGUgcmVxdWVzdC4iKTsKIAogdXNl
cl9hY3RpdmF0aW9uX3Rlc3QoYXN5bmMgdCA9PiB7CkBAIC03Niw3ICs3Niw3IEBAIHVzZXJfYWN0
aXZhdGlvbl90ZXN0KGFzeW5jIHQgPT4gewogICAgICAgICBhc3NlcnRfZXF1YWxzKGV2ZW50LnZh
bGlkYXRpb25VUkwsICJodHRwczovL3dlYmtpdC5vcmcvIik7CiAgICAgICAgIGV2ZW50LmNvbXBs
ZXRlKG5ldyBQcm9taXNlKHJlc29sdmUgPT4gcmVzb2x2ZSg3KSkpOwogICAgIH07Ci0gICAgYXdh
aXQgcHJvbWlzZV9yZWplY3RzKHQsIG5ldyBUeXBlRXJyb3IoKSwgcmVxdWVzdC5zaG93KCkpOwor
ICAgIGF3YWl0IHByb21pc2VfcmVqZWN0c19qcyh0LCBUeXBlRXJyb3IsIHJlcXVlc3Quc2hvdygp
KTsKIH0sICJDYWxsaW5nIGNvbXBsZXRlKCkgd2l0aCBhIG51bWJlciBhYm9ydHMgdGhlIHJlcXVl
c3Qgd2l0aCBhIFR5cGVFcnJvci4iKTsKIAogdXNlcl9hY3RpdmF0aW9uX3Rlc3QoYXN5bmMgdCA9
PiB7CkBAIC04OCw3ICs4OCw3IEBAIHVzZXJfYWN0aXZhdGlvbl90ZXN0KGFzeW5jIHQgPT4gewog
ICAgICAgICBhc3NlcnRfZXF1YWxzKGV2ZW50LnZhbGlkYXRpb25VUkwsICJodHRwczovL3dlYmtp
dC5vcmcvIik7CiAgICAgICAgIGV2ZW50LmNvbXBsZXRlKG5ldyBQcm9taXNlKHJlc29sdmUgPT4g
cmVzb2x2ZSh1bmRlZmluZWQpKSk7CiAgICAgfTsKLSAgICBhd2FpdCBwcm9taXNlX3JlamVjdHMo
dCwgbmV3IFR5cGVFcnJvcigpLCByZXF1ZXN0LnNob3coKSk7CisgICAgYXdhaXQgcHJvbWlzZV9y
ZWplY3RzX2pzKHQsIFR5cGVFcnJvciwgcmVxdWVzdC5zaG93KCkpOwogfSwgIkNhbGxpbmcgY29t
cGxldGUoKSB3aXRoIHVuZGVmaW5lZCBhYm9ydHMgdGhlIHJlcXVlc3Qgd2l0aCBhIFR5cGVFcnJv
ci4iKTsKIAogdXNlcl9hY3RpdmF0aW9uX3Rlc3QoYXN5bmMgdCA9PiB7CkBAIC0xMDAsNyArMTAw
LDcgQEAgdXNlcl9hY3RpdmF0aW9uX3Rlc3QoYXN5bmMgdCA9PiB7CiAgICAgICAgIGFzc2VydF9l
cXVhbHMoZXZlbnQudmFsaWRhdGlvblVSTCwgImh0dHBzOi8vd2Via2l0Lm9yZy8iKTsKICAgICAg
ICAgZXZlbnQuY29tcGxldGUobmV3IFByb21pc2UocmVzb2x2ZSA9PiByZXNvbHZlKG51bGwpKSk7
CiAgICAgfTsKLSAgICBhd2FpdCBwcm9taXNlX3JlamVjdHModCwgbmV3IFR5cGVFcnJvcigpLCBy
ZXF1ZXN0LnNob3coKSk7CisgICAgYXdhaXQgcHJvbWlzZV9yZWplY3RzX2pzKHQsIFR5cGVFcnJv
ciwgcmVxdWVzdC5zaG93KCkpOwogfSwgIkNhbGxpbmcgY29tcGxldGUoKSB3aXRoIG51bGwgYWJv
cnRzIHRoZSByZXF1ZXN0IHdpdGggYSBUeXBlRXJyb3IuIik7CiAKIHVzZXJfYWN0aXZhdGlvbl90
ZXN0KGFzeW5jIHQgPT4gewpAQCAtMTEyLDcgKzExMiw3IEBAIHVzZXJfYWN0aXZhdGlvbl90ZXN0
KGFzeW5jIHQgPT4gewogICAgICAgICBhc3NlcnRfZXF1YWxzKGV2ZW50LnZhbGlkYXRpb25VUkws
ICJodHRwczovL3dlYmtpdC5vcmcvIik7CiAgICAgICAgIGV2ZW50LmNvbXBsZXRlKG5ldyBQcm9t
aXNlKHJlc29sdmUgPT4gcmVzb2x2ZSgiIikpKTsKICAgICB9OwotICAgIGF3YWl0IHByb21pc2Vf
cmVqZWN0cyh0LCBuZXcgVHlwZUVycm9yKCksIHJlcXVlc3Quc2hvdygpKTsKKyAgICBhd2FpdCBw
cm9taXNlX3JlamVjdHNfanModCwgVHlwZUVycm9yLCByZXF1ZXN0LnNob3coKSk7CiB9LCAiQ2Fs
bGluZyBjb21wbGV0ZSgpIHdpdGggYSBzdHJpbmcgYWJvcnRzIHRoZSByZXF1ZXN0IHdpdGggYSBU
eXBlRXJyb3IuIik7CiAKIHVzZXJfYWN0aXZhdGlvbl90ZXN0KGFzeW5jIHQgPT4gewpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LXJlcXVl
c3Qtc2hvdy1tZXRob2QuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVu
dHJlcXVlc3QvcGF5bWVudC1yZXF1ZXN0LXNob3ctbWV0aG9kLmh0dHBzLmh0bWwKaW5kZXggNDMy
YTA5ZmU0YzY4Mzg0MWJkOGFhNWFhMzkxOTAwNTQ0NDIwNmNhNS4uOGZkNzg4NGU1MDgwYzcxZDBj
NzU1MjVkOThlYWQ0NDkyZGIyYzRkNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9wYXltZW50cmVxdWVzdC9wYXltZW50LXJlcXVlc3Qtc2hvdy1tZXRob2QuaHR0cHMuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVxdWVz
dC1zaG93LW1ldGhvZC5odHRwcy5odG1sCkBAIC00Niw5ICs0Niw5IEBAIHRlc3QoKCkgPT4gewog
dXNlcl9hY3RpdmF0aW9uX3Rlc3QoYXN5bmMgdCA9PiB7CiAgIGNvbnN0IHJlcXVlc3QgPSBuZXcg
UGF5bWVudFJlcXVlc3QoZGVmYXVsdE1ldGhvZHMsIGRlZmF1bHREZXRhaWxzKTsKICAgY29uc3Qg
YWNjZXB0UHJvbWlzZSA9IHJlcXVlc3Quc2hvdygpOyAvLyBTZXRzIHN0YXRlIHRvICJpbnRlcmFj
dGl2ZSIKLSAgYXdhaXQgcHJvbWlzZV9yZWplY3RzKHQsICJTZWN1cml0eUVycm9yIiwgcmVxdWVz
dC5zaG93KCkpOworICBhd2FpdCBwcm9taXNlX3JlamVjdHNfZG9tKHQsICJTZWN1cml0eUVycm9y
IiwgcmVxdWVzdC5zaG93KCkpOwogICBhd2FpdCByZXF1ZXN0LmFib3J0KCk7Ci0gIGF3YWl0IHBy
b21pc2VfcmVqZWN0cyh0LCAiQWJvcnRFcnJvciIsIGFjY2VwdFByb21pc2UpOworICBhd2FpdCBw
cm9taXNlX3JlamVjdHNfZG9tKHQsICJBYm9ydEVycm9yIiwgYWNjZXB0UHJvbWlzZSk7CiB9LCBg
VGhyb3dzIGlmIHRoZSBwcm9taXNlIFtbc3RhdGVdXSBpcyBub3QgImNyZWF0ZWQiYCk7CiAKIHVz
ZXJfYWN0aXZhdGlvbl90ZXN0KGFzeW5jIHQgPT4gewpAQCAtNTYsOSArNTYsOSBAQCB1c2VyX2Fj
dGl2YXRpb25fdGVzdChhc3luYyB0ID0+IHsKICAgY29uc3QgcmVxdWVzdDIgPSBuZXcgUGF5bWVu
dFJlcXVlc3QoZGVmYXVsdE1ldGhvZHMsIGRlZmF1bHREZXRhaWxzKTsKICAgY29uc3QgYWNjZXB0
UHJvbWlzZTEgPSByZXF1ZXN0MS5zaG93KCk7CiAgIGNvbnN0IGFjY2VwdFByb21pc2UyID0gcmVx
dWVzdDIuc2hvdygpOwotICBhd2FpdCBwcm9taXNlX3JlamVjdHModCwgIlNlY3VyaXR5RXJyb3Ii
LCBhY2NlcHRQcm9taXNlMik7CisgIGF3YWl0IHByb21pc2VfcmVqZWN0c19kb20odCwgIlNlY3Vy
aXR5RXJyb3IiLCBhY2NlcHRQcm9taXNlMik7CiAgIGF3YWl0IHJlcXVlc3QxLmFib3J0KCk7Ci0g
IGF3YWl0IHByb21pc2VfcmVqZWN0cyh0LCAiQWJvcnRFcnJvciIsIGFjY2VwdFByb21pc2UxKTsK
KyAgYXdhaXQgcHJvbWlzZV9yZWplY3RzX2RvbSh0LCAiQWJvcnRFcnJvciIsIGFjY2VwdFByb21p
c2UxKTsKIH0sIGBJZiB0aGUgdXNlciBhZ2VudCdzICJwYXltZW50IHJlcXVlc3QgaXMgc2hvd2lu
ZyIgYm9vbGVhbiBpcyB0cnVlLCB0aGVuIHJldHVybiBhIHByb21pc2UgcmVqZWN0ZWQgd2l0aCBh
biAiQWJvcnRFcnJvciIgRE9NRXhjZXB0aW9uLmApOwogCiB1c2VyX2FjdGl2YXRpb25fdGVzdChh
c3luYyB0ID0+IHsKQEAgLTY2LDcgKzY2LDcgQEAgdXNlcl9hY3RpdmF0aW9uX3Rlc3QoYXN5bmMg
dCA9PiB7CiAgICAgW3sgc3VwcG9ydGVkTWV0aG9kczogInRoaXMtaXMtbm90LXN1cHBvcnRlZCIg
fV0sCiAgICAgZGVmYXVsdERldGFpbHMpOwogICBjb25zdCBhY2NlcHRQcm9taXNlID0gcmVxdWVz
dC5zaG93KCk7Ci0gIGF3YWl0IHByb21pc2VfcmVqZWN0cyh0LCAiTm90U3VwcG9ydGVkRXJyb3Ii
LCBhY2NlcHRQcm9taXNlKTsKKyAgYXdhaXQgcHJvbWlzZV9yZWplY3RzX2RvbSh0LCAiTm90U3Vw
cG9ydGVkRXJyb3IiLCBhY2NlcHRQcm9taXNlKTsKIH0sIGBJZiBwYXltZW50IG1ldGhvZCBjb25z
dWx0YXRpb24gcHJvZHVjZXMgbm8gc3VwcG9ydGVkIG1ldGhvZCBvZiBwYXltZW50LCB0aGVuIHJl
dHVybiBhIHByb21pc2UgcmVqZWN0ZWQgd2l0aCBhICJOb3RTdXBwb3J0ZWRFcnJvciIgRE9NRXhj
ZXB0aW9uLmApOwogCiB1c2VyX2FjdGl2YXRpb25fdGVzdChhc3luYyB0ID0+IHsKQEAgLTc0LDE0
ICs3NCwxNCBAQCB1c2VyX2FjdGl2YXRpb25fdGVzdChhc3luYyB0ID0+IHsKICAgICBbeyBzdXBw
b3J0ZWRNZXRob2RzOiAiaHR0cHM6Ly9hcHBsZS5jb20vYXBwbGUtcGF5IiB9XSwKICAgICBkZWZh
dWx0RGV0YWlscyk7CiAgIGNvbnN0IGFjY2VwdFByb21pc2UgPSByZXF1ZXN0LnNob3coKTsKLSAg
YXdhaXQgcHJvbWlzZV9yZWplY3RzKHQsIG5ldyBUeXBlRXJyb3IsIGFjY2VwdFByb21pc2UpOwor
ICBhd2FpdCBwcm9taXNlX3JlamVjdHNfanModCwgVHlwZUVycm9yLCBhY2NlcHRQcm9taXNlKTsK
IH0sIGBJZiBkYXRhIGNvbnZlcnNpb24gcmVzdWx0cyBpbiBhbiBlcnJvciwgdGhlbiByZXR1cm4g
YSBwcm9taXNlIHJlamVjdGVkIHdpdGggYSAiVHlwZUVycm9yIiBET01FeGNlcHRpb24uYCk7CiAK
IHVzZXJfYWN0aXZhdGlvbl90ZXN0KGFzeW5jIHQgPT4gewogICBjb25zdCByZXF1ZXN0ID0gbmV3
IFBheW1lbnRSZXF1ZXN0KGRlZmF1bHRNZXRob2RzLCBkZWZhdWx0RGV0YWlscyk7CiAgIGNvbnN0
IGFjY2VwdFByb21pc2UgPSByZXF1ZXN0LnNob3coKTsgLy8gU2V0cyBzdGF0ZSB0byAiaW50ZXJh
Y3RpdmUiCiAgIGludGVybmFscy5tb2NrUGF5bWVudENvb3JkaW5hdG9yLmNhbmNlbFBheW1lbnQo
KTsKLSAgYXdhaXQgcHJvbWlzZV9yZWplY3RzKHQsICJBYm9ydEVycm9yIiwgYWNjZXB0UHJvbWlz
ZSk7CisgIGF3YWl0IHByb21pc2VfcmVqZWN0c19kb20odCwgIkFib3J0RXJyb3IiLCBhY2NlcHRQ
cm9taXNlKTsKIH0sIGBJZiB0aGUgdXNlciBhYm9ydHMgdGhlIHBheW1lbnQgcmVxdWVzdCBhbGdv
cml0aG0sIHRoZW4gcmV0dXJuIGEgcHJvbWlzZSByZWplY3RlZCB3aXRoIGFuICJBYm9ydEVycm9y
IiBET01FeGNlcHRpb24uYCk7CiAKIHVzZXJfYWN0aXZhdGlvbl90ZXN0KGFzeW5jIHQgPT4gewpA
QCAtOTIsNyArOTIsNyBAQCB1c2VyX2FjdGl2YXRpb25fdGVzdChhc3luYyB0ID0+IHsKICAgICAg
IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHJlc29sdmUoZGVmYXVsdERldGFpbHMpKTsKICAgICB9
KTsKICAgfSkpOyAvLyBTZXRzIHN0YXRlIHRvICJpbnRlcmFjdGl2ZSIKLSAgYXdhaXQgcHJvbWlz
ZV9yZWplY3RzKHQsICJBYm9ydEVycm9yIiwgYWNjZXB0UHJvbWlzZSk7CisgIGF3YWl0IHByb21p
c2VfcmVqZWN0c19kb20odCwgIkFib3J0RXJyb3IiLCBhY2NlcHRQcm9taXNlKTsKIH0sIGBJZiB0
aGUgdXNlciBhYm9ydHMgdGhlIHBheW1lbnQgcmVxdWVzdCBhbGdvcml0aG0gd2hpbGUgZGV0YWls
cyBhcmUgdXBkYXRpbmcsIHRoZW4gcmVqZWN0IHRoZSBhY2NlcHQgcHJvbWlzZSB3aXRoIGFuICJB
Ym9ydEVycm9yIiB3aGVuIHRoZSBkZXRhaWxzIHNldHRsZS5gKTsKIAogdXNlcl9hY3RpdmF0aW9u
X3Rlc3QoYXN5bmMgdCA9PiB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Bh
eW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVzcG9uc2UtcmVqZWN0cy1pZi1ub3QtYWN0aXZlLmh0dHBz
Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVz
cG9uc2UtcmVqZWN0cy1pZi1ub3QtYWN0aXZlLmh0dHBzLmh0bWwKaW5kZXggMzJkMTAxZjY2NWQz
Zjc5YWIwNmI2MTc4OGY4MjljNDA5ZTBiY2MyOS4uOTJmMTUwNTUyNTJiNTg0ZGNiNTQxNjA4MjNi
YmY2M2YyZDczZTBlMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50
cmVxdWVzdC9wYXltZW50LXJlc3BvbnNlLXJlamVjdHMtaWYtbm90LWFjdGl2ZS5odHRwcy5odG1s
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1yZXNw
b25zZS1yZWplY3RzLWlmLW5vdC1hY3RpdmUuaHR0cHMuaHRtbApAQCAtNTQsNiArNTQsOCBAQCBm
dW5jdGlvbiBtZXRob2ROb3RGdWxseUFjdGl2ZSh0ZXh0LCBtZXRob2ROYW1lLCAuLi5hcmdzKSB7
CiAgICAgICBpZnJhbWUsCiAgICAgICAiL3BheW1lbnQtcmVxdWVzdC9yZXNvdXJjZXMvcGFnZTEu
aHRtbCIKICAgICApOworICAgIGNvbnN0IGlmcmFtZURPTUV4Y2VwdGlvbiA9IGlmcmFtZS5jb250
ZW50V2luZG93LkRPTUV4Y2VwdGlvbjsKKwogICAgIC8vIFdlIG5hdmlnYXRlIHRoZSBpZnJhbWUg
YWdhaW4sIHB1dHRpbmcgcmVzcG9uc2UncyBkb2N1bWVudCBpbnRvIGFuIGluYWN0aXZlIHN0YXRl
LgogICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gewogICAgICAgaWZyYW1lLmFkZEV2
ZW50TGlzdGVuZXIoImxvYWQiLCByZXNvbHZlKTsKQEAgLTYyLDkgKzY0LDEwIEBAIGZ1bmN0aW9u
IG1ldGhvZE5vdEZ1bGx5QWN0aXZlKHRleHQsIG1ldGhvZE5hbWUsIC4uLmFyZ3MpIHsKICAgICAv
LyBOb3csIHJlc3BvbnNlJ3MgcmVsZXZhbnQgZ2xvYmFsIG9iamVjdCdzIGRvY3VtZW50IGlzIG5v
IGxvbmdlciBhY3RpdmUuCiAgICAgLy8gU28sIHByb21pc2UgbmVlZHMgdG8gcmVqZWN0IGFwcHJv
cHJpYXRlbHkuCiAgICAgY29uc3QgcHJvbWlzZSA9IHJlc3BvbnNlW21ldGhvZE5hbWVdKC4uLmFy
Z3MpOwotICAgIGF3YWl0IHByb21pc2VfcmVqZWN0cygKKyAgICBhd2FpdCBwcm9taXNlX3JlamVj
dHNfZG9tKAogICAgICAgdCwKICAgICAgICJBYm9ydEVycm9yIiwKKyAgICAgIGlmcmFtZURPTUV4
Y2VwdGlvbiwKICAgICAgIHByb21pc2UsCiAgICAgICAiSW5hY3RpdmUgZG9jdW1lbnQsIHNvIG11
c3QgdGhyb3cgQWJvcnRFcnJvciIKICAgICApOwpAQCAtODQsNiArODcsNyBAQCBmdW5jdGlvbiBt
ZXRob2RCZWNvbWVzTm90RnVsbHlBY3RpdmUodGV4dCwgbWV0aG9kTmFtZSwgLi4uYXJncykgewog
ICAgICAgaWZyYW1lLAogICAgICAgIi9wYXltZW50LXJlcXVlc3QvcmVzb3VyY2VzL3BhZ2UxLmh0
bWwiCiAgICAgKTsKKyAgICBjb25zdCBpZnJhbWVET01FeGNlcHRpb24gPSBpZnJhbWUuY29udGVu
dFdpbmRvdy5ET01FeGNlcHRpb247CiAKICAgICAvLyB3ZSBnZXQgdGhlIHByb21pc2UgZnJvbSBw
YWdlMS5odG1sLCB3aGlsZSBpdCdzIGFjdGl2ZSEKICAgICBjb25zdCBwcm9taXNlID0gcmVzcG9u
c2VbbWV0aG9kTmFtZV0oLi4uYXJncyk7CkBAIC05Niw5ICsxMDAsMTAgQEAgZnVuY3Rpb24gbWV0
aG9kQmVjb21lc05vdEZ1bGx5QWN0aXZlKHRleHQsIG1ldGhvZE5hbWUsIC4uLmFyZ3MpIHsKIAog
ICAgIC8vIE5vdywgcmVzcG9uc2UncyByZWxldmFudCBnbG9iYWwgb2JqZWN0J3MgZG9jdW1lbnQg
aXMgbm8gbG9uZ2VyIGFjdGl2ZS4KICAgICAvLyBTbywgcHJvbWlzZSBuZWVkcyB0byByZWplY3Qg
YXBwcm9wcmlhdGVseS4KLSAgICBhd2FpdCBwcm9taXNlX3JlamVjdHMoCisgICAgYXdhaXQgcHJv
bWlzZV9yZWplY3RzX2RvbSgKICAgICAgIHQsCiAgICAgICAiQWJvcnRFcnJvciIsCisgICAgICBp
ZnJhbWVET01FeGNlcHRpb24sCiAgICAgICBwcm9taXNlLAogICAgICAgIkluYWN0aXZlIGRvY3Vt
ZW50LCBzbyBtdXN0IHRocm93IEFib3J0RXJyb3IiCiAgICAgKTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1yZXNwb25zZS1yZXRyeS1t
ZXRob2QuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3Qv
cGF5bWVudC1yZXNwb25zZS1yZXRyeS1tZXRob2QuaHR0cHMuaHRtbAppbmRleCA2NGE0MTFhYzVi
MTBmNmIyMzU0ZjAyM2JmNWIyN2ZmMWVjMTc5Njg5Li5jZjYwNTA3N2NiMzJlNmM1MTkyNTFlYjM1
YWQxMzZjYzgyNjE1NTMwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1l
bnRyZXF1ZXN0L3BheW1lbnQtcmVzcG9uc2UtcmV0cnktbWV0aG9kLmh0dHBzLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LXJlc3BvbnNlLXJl
dHJ5LW1ldGhvZC5odHRwcy5odG1sCkBAIC0yOSw3ICsyOSw3IEBAIHByb21pc2VfdGVzdChhc3lu
YyB0ID0+IHsKICAgY29uc3QgeyByZXNwb25zZSB9ID0gYXdhaXQgZ2V0UGF5bWVudFJlcXVlc3RS
ZXNwb25zZSgpOwogICAvLyBzZXRzIHJlc3BvbnNlLltbY29tcGxldGVdXSB0byB0cnVlLgogICBh
d2FpdCByZXNwb25zZS5jb21wbGV0ZSgic3VjY2VzcyIpOwotICByZXR1cm4gcHJvbWlzZV9yZWpl
Y3RzKAorICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2RvbSgKICAgICB0LAogICAgICJJbnZhbGlk
U3RhdGVFcnJvciIsCiAgICAgcmVzcG9uc2UucmV0cnkoe30pLApAQCAtNDAsNyArNDAsNyBAQCBw
cm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CiBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CiAgIGNv
bnN0IHsgcmVzcG9uc2UgfSA9IGF3YWl0IGdldFBheW1lbnRSZXF1ZXN0UmVzcG9uc2UoKTsKICAg
Y29uc3QgcmV0cnlQcm9taXNlID0gcmVzcG9uc2UucmV0cnkoe30pOwotICBhd2FpdCBwcm9taXNl
X3JlamVjdHMoCisgIGF3YWl0IHByb21pc2VfcmVqZWN0c19kb20oCiAgICAgdCwKICAgICAiSW52
YWxpZFN0YXRlRXJyb3IiLAogICAgIHJlc3BvbnNlLnJldHJ5KHt9KSwKQEAgLTU0LDcgKzU0LDcg
QEAgcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4gewogcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4gewog
ICBjb25zdCB7IHJlc3BvbnNlIH0gPSBhd2FpdCBnZXRQYXltZW50UmVxdWVzdFJlc3BvbnNlKCk7
CiAgIGNvbnN0IHJldHJ5UHJvbWlzZSA9IHJlc3BvbnNlLnJldHJ5KHt9KTsKLSAgYXdhaXQgcHJv
bWlzZV9yZWplY3RzKAorICBhd2FpdCBwcm9taXNlX3JlamVjdHNfZG9tKAogICAgIHQsCiAgICAg
IkludmFsaWRTdGF0ZUVycm9yIiwKICAgICByZXNwb25zZS5jb21wbGV0ZSgic3VjY2VzcyIpLApA
QCAtNjgsNyArNjgsNyBAQCBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CiBwcm9taXNlX3Rlc3Qo
YXN5bmMgdCA9PiB7CiAgIGNvbnN0IHsgcmVzcG9uc2UsIHJlcXVlc3QgfSA9IGF3YWl0IGdldFBh
eW1lbnRSZXF1ZXN0UmVzcG9uc2UoKTsKICAgY29uc3QgcmV0cnlQcm9taXNlID0gcmVzcG9uc2Uu
cmV0cnkoe30pOwotICBhd2FpdCBwcm9taXNlX3JlamVjdHMoCisgIGF3YWl0IHByb21pc2VfcmVq
ZWN0c19kb20oCiAgICAgdCwKICAgICAiSW52YWxpZFN0YXRlRXJyb3IiLAogICAgIHJlcXVlc3Qu
YWJvcnQoKSwKQEAgLTk2LDcgKzk2LDcgQEAgcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4gewogICAg
ICJFeHBlY3RlZCB1bmRlZmluZWQgYXMgdGhlIHJlc29sdmUgdmFsdWUiCiAgICk7CiAgIGF3YWl0
IHJlc3BvbnNlLmNvbXBsZXRlKCJzdWNjZXNzIik7Ci0gIGF3YWl0IHByb21pc2VfcmVqZWN0cygK
KyAgYXdhaXQgcHJvbWlzZV9yZWplY3RzX2RvbSgKICAgICB0LAogICAgICJJbnZhbGlkU3RhdGVF
cnJvciIsCiAgICAgcmVzcG9uc2UucmV0cnkoe30pLApAQCAtMTA4LDE5ICsxMDgsMTkgQEAgcHJv
bWlzZV90ZXN0KGFzeW5jIHQgPT4gewogICBjb25zdCB7IHJlc3BvbnNlIH0gPSBhd2FpdCBnZXRQ
YXltZW50UmVxdWVzdFJlc3BvbnNlKCk7CiAgIHZhciBwcm9taXNlID0gcmVzcG9uc2UucmV0cnko
e30pOwogICBpbnRlcm5hbHMubW9ja1BheW1lbnRDb29yZGluYXRvci5jYW5jZWxQYXltZW50KCk7
Ci0gIGF3YWl0IHByb21pc2VfcmVqZWN0cygKKyAgYXdhaXQgcHJvbWlzZV9yZWplY3RzX2RvbSgK
ICAgICB0LAogICAgICJBYm9ydEVycm9yIiwKICAgICBwcm9taXNlLAogICAgICJUaGUgdXNlciBh
Ym9ydGluZyBhIHJldHJ5IHJlamVjdHMgd2l0aCBhIEFib3J0RXJyb3IiCiAgICk7Ci0gIGF3YWl0
IHByb21pc2VfcmVqZWN0cygKKyAgYXdhaXQgcHJvbWlzZV9yZWplY3RzX2RvbSgKICAgICB0LAog
ICAgICJJbnZhbGlkU3RhdGVFcnJvciIsCiAgICAgcmVzcG9uc2UucmV0cnkoe30pLAogICAgICJB
ZnRlciB0aGUgdXNlciBhYm9ydHMsIHJlc3BvbnNlIFtbY29tcGxldGVdXSBpcyB0cnVlIHNvIHJl
dHJ5KCkgbXVzdCByZWplY3Qgd2l0aCBJbnZhbGlkU3RhdGVFcnJvciIKICAgKTsKLSAgYXdhaXQg
cHJvbWlzZV9yZWplY3RzKAorICBhd2FpdCBwcm9taXNlX3JlamVjdHNfZG9tKAogICAgIHQsCiAg
ICAgIkludmFsaWRTdGF0ZUVycm9yIiwKICAgICByZXNwb25zZS5jb21wbGV0ZSgic3VjY2VzcyIp
LApAQCAtMTU4LDEzICsxNTgsMTMgQEAgcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4gewogICBjb25z
dCByZXRyeVByb21pc2UgPSByZXNwb25zZS5yZXRyeSh7fSk7CiAgIGludGVybmFscy5tb2NrUGF5
bWVudENvb3JkaW5hdG9yLmNoYW5nZVNoaXBwaW5nT3B0aW9uKCJvcHRpb24iKTsKICAgYXdhaXQg
c2hpcHBpbmdDaGFuZ2VkUHJvbWlzZTsKLSAgYXdhaXQgcHJvbWlzZV9yZWplY3RzKAorICBhd2Fp
dCBwcm9taXNlX3JlamVjdHNfanMoCiAgICAgdCwKLSAgICBuZXcgVHlwZUVycm9yKCksCisgICAg
VHlwZUVycm9yLAogICAgIHJldHJ5UHJvbWlzZSwKICAgICAicmV0cnkoKSBhYm9ydHMgd2l0aCBh
IFR5cGVFcnJvciwgYmVjYXVzZSB0b3RhbHMnIHZhbHVlIGlzIGludmFsaWQiCiAgICk7Ci0gIGF3
YWl0IHByb21pc2VfcmVqZWN0cygKKyAgYXdhaXQgcHJvbWlzZV9yZWplY3RzX2RvbSgKICAgICB0
LAogICAgICJJbnZhbGlkU3RhdGVFcnJvciIsCiAgICAgcmVzcG9uc2UuY29tcGxldGUoInN1Y2Nl
c3MiKSwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3Qv
cmVqZWN0c19pZl9ub3RfYWN0aXZlLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3BheW1lbnRyZXF1ZXN0L3JlamVjdHNfaWZfbm90X2FjdGl2ZS5odHRwcy5odG1sCmluZGV4IDk2
ZThmNmE0OGMxNjY4NDhlODNlYjZmM2FmMmFkOTExMmQ0YTk3ODYuLjhlMTFlODA3MjM1NDI3MmNj
YjgwOTFjNGY0NDcyYjkzMjUzYmVhNDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvcGF5bWVudHJlcXVlc3QvcmVqZWN0c19pZl9ub3RfYWN0aXZlLmh0dHBzLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9yZWplY3RzX2lmX25vdF9hY3Rp
dmUuaHR0cHMuaHRtbApAQCAtNjIsNiArNjIsNyBAQCBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7
CiAgICAgaWZyYW1lLAogICAgICJyZXNvdXJjZXMvcGFnZTEuaHRtbCIKICAgKTsKKyAgY29uc3Qg
Zmlyc3RDdG9yID0gaWZyYW1lLmNvbnRlbnRXaW5kb3cuRE9NRXhjZXB0aW9uOwogCiAgIC8vIFdl
IG5hdmlnYXRlIHRoZSBpZnJhbWUgYWdhaW4sIHB1dHRpbmcgcmVxdWVzdDEncyBkb2N1bWVudCBp
bnRvIGFuIGluYWN0aXZlIHN0YXRlLgogICBjb25zdCByZXF1ZXN0MiA9IGF3YWl0IGdldExvYWRl
ZFBheW1lbnRSZXF1ZXN0KApAQCAtNzEsOSArNzIsMTAgQEAgcHJvbWlzZV90ZXN0KGFzeW5jIHQg
PT4gewogCiAgIC8vIE5vdywgcmVxdWVzdDEncyByZWxldmFudCBnbG9iYWwgb2JqZWN0J3MgZG9j
dW1lbnQgaXMgbm8gbG9uZ2VyIGFjdGl2ZS4KICAgLy8gU28sIGNhbGwgLnNob3coKSwgYW5kIG1h
a2Ugc3VyZSBpdCByZWplY3RzIGFwcHJvcHJpYXRlbHkuCi0gIGF3YWl0IHByb21pc2VfcmVqZWN0
cygKKyAgYXdhaXQgcHJvbWlzZV9yZWplY3RzX2RvbSgKICAgICB0LAogICAgICJBYm9ydEVycm9y
IiwKKyAgICBmaXJzdEN0b3IsCiAgICAgcmVxdWVzdDEuc2hvdygpLAogICAgICJJbmFjdGl2ZSBk
b2N1bWVudCwgc28gbXVzdCB0aHJvdyBBYm9ydEVycm9yIgogICApOwpAQCAtODMsMTEgKzg1LDEz
IEBAIHByb21pc2VfdGVzdChhc3luYyB0ID0+IHsKICAgICAgIHJlcXVlc3QyLnNob3coKS5jYXRj
aCgoZXJyb3IpID0+IHt9KTsKICAgICBhd2FpdCByZXF1ZXN0Mi5hYm9ydCgpOwogICB9KTsKKyAg
Y29uc3Qgc2Vjb25kQ3RvciA9IGlmcmFtZS5jb250ZW50V2luZG93LkRPTUV4Y2VwdGlvbjsKIAog
ICBhd2FpdCBhY3RpdmF0ZVRoZW4oYXN5bmMgKCkgPT4gewotICAgIGF3YWl0IHByb21pc2VfcmVq
ZWN0cygKKyAgICBhd2FpdCBwcm9taXNlX3JlamVjdHNfZG9tKAogICAgICAgdCwKICAgICAgICJJ
bnZhbGlkU3RhdGVFcnJvciIsCisgICAgICBzZWNvbmRDdG9yLAogICAgICAgcmVxdWVzdDIuc2hv
dygpLAogICAgICAgIkFib3J0IGFscmVhZHkgY2FsbGVkLCBzbyBJbnZhbGlkU3RhdGVFcnJvciIK
ICAgICApOwpAQCAtMTIzLDYgKzEyNyw3IEBAIHByb21pc2VfdGVzdChhc3luYyB0ID0+IHsKICAg
ICBpbm5lcklmcmFtZSwKICAgICAicmVzb3VyY2VzL3BhZ2UyLmh0bWwiCiAgICk7CisgIGNvbnN0
IHJlcXVlc3RXaW5kb3cgPSBpbm5lcklmcmFtZS5jb250ZW50V2luZG93OwogCiAgIC8vIE5hdmln
YXRlIHRoZSBvdXRlciBpZnJhbWUgdG8gYSBuZXcgbG9jYXRpb24uCiAgIC8vIFdhaXQgZm9yIHRo
ZSBsb2FkIGV2ZW50IHRvIGZpcmUuCkBAIC0xMzQsOSArMTM5LDEwIEBAIHByb21pc2VfdGVzdChh
c3luYyB0ID0+IHsKICAgLy8gKGl0IGlzIHRoZSBhY3RpdmUgZG9jdW1lbnQgb2YgdGhlIGlubmVy
IGlmcmFtZSksIGJ1dCBpcyBub3QgZnVsbHkgYWN0aXZlCiAgIC8vIChzaW5jZSB0aGUgcGFyZW50
IG9mIHRoZSBpbm5lciBpZnJhbWUgaXMgaXRzZWxmIG5vIGxvbmdlciBhY3RpdmUpLgogICAvLyBT
bywgY2FsbCByZXF1ZXN0LnNob3coKSBhbmQgbWFrZSBzdXJlIGl0IHJlamVjdHMgYXBwcm9wcmlh
dGVseS4KLSAgYXdhaXQgcHJvbWlzZV9yZWplY3RzKAorICBhd2FpdCBwcm9taXNlX3JlamVjdHNf
ZG9tKAogICAgIHQsCiAgICAgIkFib3J0RXJyb3IiLAorICAgIHJlcXVlc3RXaW5kb3cuRE9NRXhj
ZXB0aW9uLAogICAgIHJlcXVlc3Quc2hvdygpLAogICAgICJBY3RpdmUsIGJ1dCBub3QgZnVsbHkg
YWN0aXZlLCBzbyBtdXN0IHRocm93IEFib3J0RXJyb3IiCiAgICk7CkBAIC0xNTYsNiArMTYyLDcg
QEAgcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4gewogICAgIGlmcmFtZSwKICAgICAicmVzb3VyY2Vz
L3BhZ2UxLmh0bWwiCiAgICk7CisgIGNvbnN0IGlmcmFtZURPTUV4Y2VwdGlvbiA9IGlmcmFtZS5j
b250ZW50V2luZG93LkRPTUV4Y2VwdGlvbjsKICAgLy8gUHJlc2VudCB0aGUgcGF5bWVudCBzaGVl
dC4KICAgYXdhaXQgYWN0aXZhdGVUaGVuKGFzeW5jICgpID0+IHsKICAgICBjb25zdCBzaG93UHJv
bWlzZSA9IHJlcXVlc3Quc2hvdygpOwpAQCAtMTY0LDkgKzE3MSwxMCBAQCBwcm9taXNlX3Rlc3Qo
YXN5bmMgdCA9PiB7CiAgICAgICBpZnJhbWUuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIHJlc29s
dmUpOwogICAgICAgaWZyYW1lLnNyYyA9ICJyZXNvdXJjZXMvcGFnZTIuaHRtbCI7CiAgICAgfSk7
Ci0gICAgYXdhaXQgcHJvbWlzZV9yZWplY3RzKAorICAgIGF3YWl0IHByb21pc2VfcmVqZWN0c19k
b20oCiAgICAgICB0LAogICAgICAgIkFib3J0RXJyb3IiLAorICAgICAgaWZyYW1lRE9NRXhjZXB0
aW9uLAogICAgICAgc2hvd1Byb21pc2UsCiAgICAgICAiVGhlIGlmcmFtZSB3YXMgbmF2aWdhdGVk
IGF3YXksIHNvIHNob3dQcm9taXNlIG11c3QgcmVqZWN0IHdpdGggQWJvcnRFcnJvciIKICAgICAp
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC91cGRh
dGVXaXRoLW1ldGhvZC1wbWktaGFuZGxpbmcuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvcGF5bWVudHJlcXVlc3QvdXBkYXRlV2l0aC1tZXRob2QtcG1pLWhhbmRsaW5nLmh0dHBz
Lmh0bWwKaW5kZXggMTJjNjA5NjhhYjU5N2Y1YzkxMGY4MDdmMTI5MjJjOTRjNTE4NDY3NC4uNTk4
MWM2ZWQyMmFiMDJkMmNiMDg4NDlmOTQyMWFiZmM4ODA0NWM1MyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC91cGRhdGVXaXRoLW1ldGhvZC1wbWktaGFu
ZGxpbmcuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1
ZXN0L3VwZGF0ZVdpdGgtbWV0aG9kLXBtaS1oYW5kbGluZy5odHRwcy5odG1sCkBAIC04Niw3ICs4
Niw3IEBAIGZ1bmN0aW9uIHJ1blRlc3QoYnV0dG9uLCB7IGludmFsaWRNZXRob2QgfSkgewogICAg
IHJlcXVlc3Qub25zaGlwcGluZ2FkZHJlc3NjaGFuZ2UgPSBsaXN0ZW5lcjsKICAgICAvLyByZXF1
ZXN0LmFkZEV2ZW50TGlzdGVuZXIoInNoaXBwaW5nYWRkcmVzc2NoYW5nZSIsIGxpc3RlbmVyLCB7
IG9uY2U6IHRydWUgfSk7CiAgICAgY29uc3Qgc2hvd1Byb21pc2UgPSByZXF1ZXN0LnNob3coKTsK
LSAgICBhd2FpdCBwcm9taXNlX3JlamVjdHModCwgbmV3IFJhbmdlRXJyb3IoKSwgc2hvd1Byb21p
c2UpOworICAgIGF3YWl0IHByb21pc2VfcmVqZWN0c19qcyh0LCBSYW5nZUVycm9yLCBzaG93UHJv
bWlzZSk7CiAgIH0sIGJ1dHRvbi50ZXh0Q29udGVudC50cmltKCkpOwogfQogPC9zY3JpcHQ+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2J5cGFzc2luZy1jb3Jz
LWNoZWNrcy1mb3ItZXh0ZW5zaW9uLXVybHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvYnlwYXNzaW5nLWNvcnMtY2hlY2tzLWZvci1leHRlbnNpb24tdXJscy5odG1sCmlu
ZGV4IDllOGRlYTFmZjdlNTBiZDQ4NWY0YWZiYWIzOTk4YTUwY2VhNzQzMmUuLjc0NTNkNzA0NWQw
M2M0YmNiZjdhNWU0NDgxNmJmZTcyMjA4YTExMzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvYnlwYXNzaW5nLWNvcnMtY2hlY2tzLWZvci1leHRlbnNpb24tdXJs
cy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvYnlwYXNzaW5nLWNv
cnMtY2hlY2tzLWZvci1leHRlbnNpb24tdXJscy5odG1sCkBAIC0xNiw3ICsxNiw3IEBACiAgICAg
dGVzdCgoKSA9PiB7CiAgICAgICAgIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwogICAgICAg
ICB4aHIub3BlbigiR0VUIiwgInNhZmFyaS1leHRlbnNpb246Ly90ZXN0MSIsIGZhbHNlKTsKLSAg
ICAgICAgYXNzZXJ0X3Rocm93cyh7bmFtZTogIk5ldHdvcmtFcnJvciJ9LCAoKSA9PiB7IHhoci5z
ZW5kKCkgfSk7CisgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJOZXR3b3JrRXJyb3IiLCAoKSA9
PiB7IHhoci5zZW5kKCkgfSk7CiAgICAgfSwgIkJ5cGFzc2luZyBDT1JTIG9uIHN5bmNocm9ub3Vz
IFhIUiAtIHNob3VsZCB0cmlnZ2VyIGEgQ09SUyBlcnJvciBtZXNzYWdlIik7CiAKICAgICB0ZXN0
KCgpID0+IHsKQEAgLTI0LDExICsyNCwxMSBAQAogCiAgICAgICAgIHhociA9IG5ldyBYTUxIdHRw
UmVxdWVzdCgpOwogICAgICAgICB4aHIub3BlbigiR0VUIiwgInNhZmFyaS1leHRlbnNpb246Ly90
ZXN0MyIsIGZhbHNlKTsKLSAgICAgICAgYXNzZXJ0X3Rocm93cyh7bmFtZTogIk5ldHdvcmtFcnJv
ciJ9LCAoKSA9PiB7IHhoci5zZW5kKCkgfSk7CisgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJO
ZXR3b3JrRXJyb3IiLCAoKSA9PiB7IHhoci5zZW5kKCkgfSk7CiAgICAgfSwgIkJ5cGFzc2luZyBD
T1JTIG9uIHN5bmNocm9ub3VzIFhIUiAtIHNob3VsZCBub3QgdHJpZ2dlciBhIENPUlMgZXJyb3Ig
bWVzc2FnZSIpOwogCiAgICAgcHJvbWlzZV90ZXN0KCh0ZXN0KSA9PiB7Ci0gICAgICAgIHJldHVy
biBwcm9taXNlX3JlamVjdHModGVzdCwgbmV3IFR5cGVFcnJvciwgZmV0Y2goInNhZmFyaS1leHRl
bnNpb246Ly90ZXN0NCIpKTsKKyAgICAgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19qcyh0ZXN0
LCBUeXBlRXJyb3IsIGZldGNoKCJzYWZhcmktZXh0ZW5zaW9uOi8vdGVzdDQiKSk7CiAgICAgfSwg
IkJ5cGFzc2luZyBDT1JTIG9uIGFzeW5jaHJvbm91cyBmZXRjaCAtIHNob3VsZCBub3QgdHJpZ2dl
ciBhIENPUlMgZXJyb3IgbWVzc2FnZSIpOwogPC9zY3JpcHQ+CiA8L2JvZHk+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NsZWFuLW9yaWdpbi1jc3MtZXhwb3Nl
ZC1yZXNvdXJjZS10aW1pbmcuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
Y2xlYW4tb3JpZ2luLWNzcy1leHBvc2VkLXJlc291cmNlLXRpbWluZy5odG1sCmluZGV4IDM4Y2Fk
ZTVjZGFiZTEwYmRhMDk0MTFmZGMxZDdhOGNmNTNiODk2YjYuLjI3YTc2ODI2ZjE3ZGE3ZDJjNGEx
ZTZhZThlNzMyZDBjYTM0M2ViMGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvY2xlYW4tb3JpZ2luLWNzcy1leHBvc2VkLXJlc291cmNlLXRpbWluZy5odG1sCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY2xlYW4tb3JpZ2luLWNzcy1leHBv
c2VkLXJlc291cmNlLXRpbWluZy5odG1sCkBAIC05LDYgKzksOCBAQAogPGJvZHk+CiA8ZGl2IGlk
PSJteWRpdiIgc3R5bGU9ImZvbnQ6IDEycHggJ2FoZW0nIj5UZXN0PC9kaXY+CiA8c2NyaXB0Pgor
c2V0dXAoeyBzaW5nbGVfdGVzdDogdHJ1ZSB9KTsKKwogaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsK
ICAgICBpbnRlcm5hbHMuY2xlYXJNZW1vcnlDYWNoZSgpOwogICAgIGludGVybmFscy5pbnZhbGlk
YXRlRm9udENhY2hlKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS8xLjEvZnJhbWUtYW5jZXN0b3JzL2ZyYW1lLWFuY2Vz
dG9ycy1vdmVycmlkZXMteGZvLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L2NvbnRlbnRTZWN1cml0eVBvbGljeS8xLjEvZnJhbWUtYW5jZXN0b3JzL2ZyYW1lLWFuY2VzdG9y
cy1vdmVycmlkZXMteGZvLmh0bWwKaW5kZXggNzY5NjExMmM5MDk0YTQyY2Y4YzBjZGRlOTc2NWY0
Zjk2ZGIzNDkyNy4uOGNlZTc2YzljZTc0ZWY0ZWUzYjNiMGM5ZDg5NDJmMGY5YTQ4YWI0ZCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQ
b2xpY3kvMS4xL2ZyYW1lLWFuY2VzdG9ycy9mcmFtZS1hbmNlc3RvcnMtb3ZlcnJpZGVzLXhmby5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5
UG9saWN5LzEuMS9mcmFtZS1hbmNlc3RvcnMvZnJhbWUtYW5jZXN0b3JzLW92ZXJyaWRlcy14Zm8u
aHRtbApAQCAtMTksNyArMTksNyBAQAogICAgICAgICAgICAgdmFyIGkgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdpZnJhbWUnKTsKICAgICAgICAgICAgIGkuc3JjID0gIi4uLy4uL3Jlc291cmNl
cy9mcmFtZS1hbmNlc3RvcnMtYW5kLXgtZnJhbWUtb3B0aW9ucy5wbD9wb2xpY3k9b3RoZXItb3Jp
Z2luLmNvbSZ4Zm89U0FNRU9SSUdJTiI7CiAgICAgICAgICAgICBpLm9ubG9hZCA9IHQuc3RlcF9m
dW5jX2RvbmUoZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3MoCisg
ICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oCiAgICAgICAgICAgICAgICAgICAgICJT
ZWN1cml0eUVycm9yIiwKICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeyBpLmNvbnRl
bnRXaW5kb3cub3JpZ2luIH0sCiAgICAgICAgICAgICAgICAgICAgICJUaGUgc2FtZS1vcmlnaW4g
cGFnZSB3YXMgYmxvY2tlZCBhbmQgc2FuZGJveGVkLiIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvMS4xL3NjcmlwdGhh
c2gtZGVmYXVsdC1zcmMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29u
dGVudFNlY3VyaXR5UG9saWN5LzEuMS9zY3JpcHRoYXNoLWRlZmF1bHQtc3JjLmh0bWwKaW5kZXgg
Zjk3Y2Q1YTIyZDBmYjM0M2NjZTFhZTg4YTA4Njg1ZDNhYjZjMTUwMi4uYmM4ZDhiMWM0YjI0NDIw
MDJjODAwY2RhZWU5NDJhODFkYjEzMTNlMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvMS4xL3NjcmlwdGhhc2gtZGVmYXVs
dC1zcmMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRT
ZWN1cml0eVBvbGljeS8xLjEvc2NyaXB0aGFzaC1kZWZhdWx0LXNyYy5odG1sCkBAIC00LDEwICs0
LDEwIEBACiAgICAgPHRpdGxlPlNjcmlwdCBIYXNoIGFsbG93IGhhc2ggaW4gZGVmYXVsdC1zcmM8
L3RpdGxlPgogICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvdGVzdGhhcm5lc3Mu
anMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvdGVzdGhh
cm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQt
U2VjdXJpdHktUG9saWN5IiBjb250ZW50PSJkZWZhdWx0LXNyYyAqICdzaGEyNTYtb1M5dUh1S1BQ
VC9oZEJPVjdlM0Q5V2EyRzd5VnV4YklQa2FoSi8yNnpFYz0nIj4KKyAgICA8bWV0YSBodHRwLWVx
dWl2PSJDb250ZW50LVNlY3VyaXR5LVBvbGljeSIgY29udGVudD0iZGVmYXVsdC1zcmMgKiAnc2hh
MjU2LUE3ZFpsRWNnaE92QWtkWVYrblUwNEg3cGNlOGxlZUlnZG05cGUvUFJyTlk9JyI+CiAgICAg
PC9oZWFkPgotCiAgICAgPHNjcmlwdD4KLSAgICBkb25lKCk7CisgICAgICAgIHNldHVwKHsgc2lu
Z2xlX3Rlc3Q6IHRydWUgfSk7CisgICAgICAgIGRvbmUoKTsKICAgICA8L3NjcmlwdD4KIDwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNl
Y3VyaXR5UG9saWN5LzEuMS9zdHlsZWhhc2gtZGVmYXVsdC1zcmMuaHRtbCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5LzEuMS9zdHlsZWhhc2gt
ZGVmYXVsdC1zcmMuaHRtbAppbmRleCBiNjQ5MzVhZDlkNTVmOGI2OTMzOWUxNWFhNjdjMDhkZTIy
NzM4NjdlLi4wNzI5ODdiMDBlNzJlZWQxYmQ1MWUwZTY1ZTRlZjg4ZGFkMjI5ZTExIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGlj
eS8xLjEvc3R5bGVoYXNoLWRlZmF1bHQtc3JjLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvMS4xL3N0eWxlaGFzaC1kZWZhdWx0
LXNyYy5odG1sCkBAIC0xMSw2ICsxMSw3IEBACiAgICAgPHAgaWQ9InAiPjwvcD4KICAgICA8c3R5
bGU+cCNwIHsgY29sb3I6IGdyZWVuOyB9PC9zdHlsZT4KICAgICA8c2NyaXB0PgorICAgIHNldHVw
KHsgc2luZ2xlX3Rlc3Q6IHRydWUgfSk7CiAgICAgdmFyIGNvbG9yID0gd2luZG93LmdldENvbXB1
dGVkU3R5bGUoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3AnKSkuY29sb3I7CiAgICAgYXNzZXJ0
X2VxdWFscyhjb2xvciwgInJnYigwLCAxMjgsIDApIik7CiAgICAgZG9uZSgpOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kv
c2NyaXB0LXNyYy1ibG9ja2VkLWVycm9yLWV2ZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9zY3JpcHQtc3JjLWJsb2NrZWQtZXJy
b3ItZXZlbnQuaHRtbAppbmRleCAwZmQxNjljMjczNWZjODAwZjg2ZjIyZjAyNzMzYWEzZDcxNDIz
YWUxLi5iZjUzZTExMDRmNTRmYzZjYTBlYTZmZGQ3ODE2MTFlN2RhM2Y0NTdjIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9z
Y3JpcHQtc3JjLWJsb2NrZWQtZXJyb3ItZXZlbnQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9zY3JpcHQtc3JjLWJsb2NrZWQt
ZXJyb3ItZXZlbnQuaHRtbApAQCAtNiw2ICs2LDcgQEAKICAgICA8c2NyaXB0IHNyYz0iL2pzLXRl
c3QtcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0i
L2pzLXRlc3QtcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KICAgICA8
c2NyaXB0PgorICAgICAgICBzZXR1cCh7IHNpbmdsZV90ZXN0OiB0cnVlIH0pOwogICAgICAgICB3
aW5kb3cucmVzdWx0ID0gZmFsc2U7CiAgICAgICAgIGZ1bmN0aW9uIHNjcmlwdEVycm9yKCkgewog
ICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQsIGZhbHNlLCAiVmFsdWUgc2hvdWxkIG5v
dCBiZSBzZXQiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
Y3Jvc3Mtb3JpZ2luLWNsZWFuLWNzcy1yZXNvdXJjZS10aW1pbmcuaHRtbCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLWNsZWFuLWNzcy1yZXNvdXJjZS10aW1p
bmcuaHRtbAppbmRleCA5OGQ4YmZjMGJjZGFlMGJjYzc4NGNhMWE1NmI0ODY2OGE3NzNmMTdmLi4y
ZTVlNWI0YTBmYzdhZDM0NTNjNDUxZGNhZmJlZTAxYzllYzQ4NWFiIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi1jbGVhbi1jc3MtcmVzb3Vy
Y2UtdGltaW5nLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9z
cy1vcmlnaW4tY2xlYW4tY3NzLXJlc291cmNlLXRpbWluZy5odG1sCkBAIC0xMyw2ICsxMyw3IEBA
IGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CiAgICAgaW50ZXJuYWxzLmNsZWFyTWVtb3J5Q2FjaGUo
KTsKICAgICBpbnRlcm5hbHMuaW52YWxpZGF0ZUZvbnRDYWNoZSgpOwogfQorc2V0dXAoeyBzaW5n
bGVfdGVzdDogdHJ1ZSB9KTsKIGNvbnN0IHdhaXRPbkxvYWQgPSBuZXcgUHJvbWlzZSgocmVzb2x2
ZSkgPT4gewogICAgIHdpbmRvdy5vbmxvYWQgPSByZXNvbHZlOwogfSkKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLWNzcy1yZXNvdXJjZS10
aW1pbmcuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2lu
LWNzcy1yZXNvdXJjZS10aW1pbmcuaHRtbAppbmRleCAxYzcyOGQyYjc3OTZiMWEwODkwY2RlZjUw
MWYyZGUwOGJjNjg4OGE4Li4xZTg0ZWI2YjE0MDJjNzE4OGUxYWEzNGM5MzljNzgxNDNkYTliMWQ0
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdp
bi1jc3MtcmVzb3VyY2UtdGltaW5nLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS9jcm9zcy1vcmlnaW4tY3NzLXJlc291cmNlLXRpbWluZy5odG1sCkBAIC0xMyw2ICsx
Myw3IEBAIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CiAgICAgaW50ZXJuYWxzLmNsZWFyTWVtb3J5
Q2FjaGUoKTsKICAgICBpbnRlcm5hbHMuaW52YWxpZGF0ZUZvbnRDYWNoZSgpOwogfQorc2V0dXAo
eyBzaW5nbGVfdGVzdDogdHJ1ZSB9KTsKIGNvbnN0IHdhaXRPbkxvYWQgPSBuZXcgUHJvbWlzZSgo
cmVzb2x2ZSkgPT4gewogICAgIHdpbmRvdy5vbmxvYWQgPSByZXNvbHZlOwogfSkKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3VicmVzb3VyY2UtaW50ZWdyaXR5L3NyaS1mZXRj
aC5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3VicmVzb3VyY2UtaW50ZWdyaXR5L3NyaS1m
ZXRjaC5qcwppbmRleCBjN2Y5OGQwNDRjOTA3Y2ZhMjM2MTBmNjBhNzVkYTE0NTM4NDk5MzM2Li45
NGE4NzJlNmUzZGI1ZDY2NjZjOWI0NGM0ZGYwYzY2ZDdlMGFhOWEwIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3N1YnJlc291cmNlLWludGVncml0eS9zcmktZmV0Y2guanMKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdWJyZXNvdXJjZS1pbnRlZ3JpdHkvc3JpLWZldGNo
LmpzCkBAIC0yNCw3ICsyNCw3IEBAIGZ1bmN0aW9uIGludGVncml0eShkZXNjLCB1cmwsIG9wdGlv
bnMsIGV4cGVjdGVkRXJyb3IpIHsKICAgICAgICAgfSwgZGVzYyk7CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHRlc3QpIHsKLSAgICAgICAgICAgIHJldHVybiBw
cm9taXNlX3JlamVjdHModGVzdCwgZXhwZWN0ZWRFcnJvciwgZmV0Y2godXJsLCBvcHRpb25zKSk7
CisgICAgICAgICAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2pzKHRlc3QsIGV4cGVjdGVkRXJy
b3IsIGZldGNoKHVybCwgb3B0aW9ucykpOwogICAgICAgICB9LCBkZXNjKTsKICAgICB9CiB9CkBA
IC00MCwyNSArNDAsMjUgQEAgaW50ZWdyaXR5KCJFbXB0eSBzdHJpbmcgaW50ZWdyaXR5IiwgcmVz
b3VyY2UsIHsgJ2ludGVncml0eSc6ICIiIH0pOwogaW50ZWdyaXR5KCJTSEEtMjU2IGludGVncml0
eSIsIHJlc291cmNlLCB7ICdpbnRlZ3JpdHknOiB0b3BTaGEyNTYgfSk7CiBpbnRlZ3JpdHkoIlNI
QS0zODQgaW50ZWdyaXR5IiwgcmVzb3VyY2UsIHsgJ2ludGVncml0eSc6IHRvcFNoYTM4NCB9KTsK
IGludGVncml0eSgiU0hBLTUxMiBpbnRlZ3JpdHkiLCByZXNvdXJjZSwgeyAnaW50ZWdyaXR5Jzog
dG9wU2hhNTEyIH0pOwotaW50ZWdyaXR5KCJJbnZhbGlkIGludGVncml0eSIsIHJlc291cmNlLCB7
ICdpbnRlZ3JpdHknOiBpbnZhbGlkU2hhMjU2IH0sIG5ldyBUeXBlRXJyb3IoKSk7CitpbnRlZ3Jp
dHkoIkludmFsaWQgaW50ZWdyaXR5IiwgcmVzb3VyY2UsIHsgJ2ludGVncml0eSc6IGludmFsaWRT
aGEyNTYgfSwgVHlwZUVycm9yKTsKIGludGVncml0eSgiVW5rbm93biBpbnRlZ3JpdHkiLCByZXNv
dXJjZSwgeyAnaW50ZWdyaXR5JzogdW5rbm93bkFsZ29yaXRobSB9KTsKIGludGVncml0eSgiTXVs
dGlwbGUgaW50ZWdyaXRpZXM6IHZhbGlkIHN0cm9uZ2VyIHRoYW4gaW52YWxpZCIsIHJlc291cmNl
LCB7ICdpbnRlZ3JpdHknOiBpbnZhbGlkU2hhMjU2ICsgIiAiICsgdG9wU2hhMzg0IH0pOwotaW50
ZWdyaXR5KCJNdWx0aXBsZSBpbnRlZ3JpdGllczogaW52YWxpZCBzdHJvbmdlciB0aGFuIHZhbGlk
IiwgcmVzb3VyY2UsIHsgJ2ludGVncml0eSc6IGludmFsaWRTaGE1MTIgKyAiICIgKyB0b3BTaGEz
ODQgfSwgbmV3IFR5cGVFcnJvcigpKTsKK2ludGVncml0eSgiTXVsdGlwbGUgaW50ZWdyaXRpZXM6
IGludmFsaWQgc3Ryb25nZXIgdGhhbiB2YWxpZCIsIHJlc291cmNlLCB7ICdpbnRlZ3JpdHknOiBp
bnZhbGlkU2hhNTEyICsgIiAiICsgdG9wU2hhMzg0IH0sIFR5cGVFcnJvcik7CiBpbnRlZ3JpdHko
Ik11bHRpcGxlIGludGVncml0aWVzOiBpbnZhbGlkIGFzIHN0cm9uZyBhcyB2YWxpZCIsIHJlc291
cmNlLCB7ICdpbnRlZ3JpdHknOiBpbnZhbGlkU2hhNTEyICsgIiAiICsgdG9wU2hhNTEyIH0pOwog
aW50ZWdyaXR5KCJNdWx0aXBsZSBpbnRlZ3JpdGllczogYm90aCBhcmUgdmFsaWQiLCByZXNvdXJj
ZSwgIHsgJ2ludGVncml0eSc6IHRvcFNoYTM4NCArICIgIiArIHRvcFNoYTUxMiB9KTsKLWludGVn
cml0eSgiTXVsdGlwbGUgaW50ZWdyaXRpZXM6IGJvdGggYXJlIGludmFsaWQiLCByZXNvdXJjZSwg
eyAnaW50ZWdyaXR5JzogaW52YWxpZFNoYTI1NiArICIgIiArIGludmFsaWRTaGE1MTIgfSwgbmV3
IFR5cGVFcnJvcigpKTsKK2ludGVncml0eSgiTXVsdGlwbGUgaW50ZWdyaXRpZXM6IGJvdGggYXJl
IGludmFsaWQiLCByZXNvdXJjZSwgeyAnaW50ZWdyaXR5JzogaW52YWxpZFNoYTI1NiArICIgIiAr
IGludmFsaWRTaGE1MTIgfSwgVHlwZUVycm9yKTsKIGludGVncml0eSgiQW5vbnltb3VzIENPUlMg
ZW1wdHkgaW50ZWdyaXR5IiwgY3Jvc3NvcmlnaW5fYW5vbl9yZXNvdXJjZSwgeyAnaW50ZWdyaXR5
JzogIiIgfSk7CiBpbnRlZ3JpdHkoIkFub255bW91cyBDT1JTIFNIQS01MTIgaW50ZWdyaXR5Iiwg
Y3Jvc3NvcmlnaW5fYW5vbl9yZXNvdXJjZSwgeyAnaW50ZWdyaXR5JzogdG9wU2hhNTEyIH0pOwot
aW50ZWdyaXR5KCJBbm9ueW1vdXMgQ09SUyBpbnZhbGlkIGludGVncml0eSIsIGNyb3Nzb3JpZ2lu
X2Fub25fcmVzb3VyY2UsIHsgJ2ludGVncml0eSc6IGludmFsaWRTaGE1MTIgfSwgbmV3IFR5cGVF
cnJvcigpKTsKK2ludGVncml0eSgiQW5vbnltb3VzIENPUlMgaW52YWxpZCBpbnRlZ3JpdHkiLCBj
cm9zc29yaWdpbl9hbm9uX3Jlc291cmNlLCB7ICdpbnRlZ3JpdHknOiBpbnZhbGlkU2hhNTEyIH0s
IFR5cGVFcnJvcik7CiAKIC8vIEZJWE1FOiBVcHN0cmVhbSB0aGVzZSBhZGRpdGlvbmFsIHRlc3Rz
IHRvIHRoZSBvZmZpY2lhbCB3ZWItcGxhdGZvcm0tdGVzdHMgcmVwb3NpdG9yeS4KIAogaW50ZWdy
aXR5KCJDcmVkZW50aWFsIENPUlMgZW1wdHkgaW50ZWdyaXR5IiwgY3Jvc3NvcmlnaW5fY3JlZHNf
cmVzb3VyY2UsIHsgJ2ludGVncml0eSc6ICIiLCAnY3JlZGVudGlhbHMnOiAnaW5jbHVkZScgfSk7
CiBpbnRlZ3JpdHkoIkNyZWRlbnRpYWwgQ09SUyBTSEEtNTEyIGludGVncml0eSIsIGNyb3Nzb3Jp
Z2luX2NyZWRzX3Jlc291cmNlLCB7ICdpbnRlZ3JpdHknOiB0b3BTaGE1MTIsICdjcmVkZW50aWFs
cyc6ICdpbmNsdWRlJyB9KTsKLWludGVncml0eSgiQ3JlZGVudGlhbCBDT1JTIGludmFsaWQgaW50
ZWdyaXR5IiwgY3Jvc3NvcmlnaW5fY3JlZHNfcmVzb3VyY2UsIHsgJ2ludGVncml0eSc6IGludmFs
aWRTaGE1MTIsICdjcmVkZW50aWFscyc6ICdpbmNsdWRlJyB9LCBuZXcgVHlwZUVycm9yKCkpOwot
aW50ZWdyaXR5KCJJbmVsaWdpYmxlIENPUlMgZW1wdHkgaW50ZWdyaXR5IiwgY3Jvc3NvcmlnaW5f
aW5lbGlnaWJsZV9yZXNvdXJjZSwgeyAnaW50ZWdyaXR5JzogIiIgfSwgbmV3IFR5cGVFcnJvcigp
KTsKLWludGVncml0eSgiSW5lbGlnaWJsZSBDT1JTIFNIQS01MTIgaW50ZWdyaXR5IiwgY3Jvc3Nv
cmlnaW5faW5lbGlnaWJsZV9yZXNvdXJjZSwgeyAnaW50ZWdyaXR5JzogdG9wU2hhNTEyIH0sIG5l
dyBUeXBlRXJyb3IoKSk7Ci1pbnRlZ3JpdHkoIkluZWxpZ2libGUgQ09SUyBpbnZhbGlkIGludGVn
cml0eSIsIGNyb3Nzb3JpZ2luX2luZWxpZ2libGVfcmVzb3VyY2UsIHsgJ2ludGVncml0eSc6IGlu
dmFsaWRTaGE1MTIgfSwgbmV3IFR5cGVFcnJvcigpKTsKK2ludGVncml0eSgiQ3JlZGVudGlhbCBD
T1JTIGludmFsaWQgaW50ZWdyaXR5IiwgY3Jvc3NvcmlnaW5fY3JlZHNfcmVzb3VyY2UsIHsgJ2lu
dGVncml0eSc6IGludmFsaWRTaGE1MTIsICdjcmVkZW50aWFscyc6ICdpbmNsdWRlJyB9LCBUeXBl
RXJyb3IpOworaW50ZWdyaXR5KCJJbmVsaWdpYmxlIENPUlMgZW1wdHkgaW50ZWdyaXR5IiwgY3Jv
c3NvcmlnaW5faW5lbGlnaWJsZV9yZXNvdXJjZSwgeyAnaW50ZWdyaXR5JzogIiIgfSwgVHlwZUVy
cm9yKTsKK2ludGVncml0eSgiSW5lbGlnaWJsZSBDT1JTIFNIQS01MTIgaW50ZWdyaXR5IiwgY3Jv
c3NvcmlnaW5faW5lbGlnaWJsZV9yZXNvdXJjZSwgeyAnaW50ZWdyaXR5JzogdG9wU2hhNTEyIH0s
IFR5cGVFcnJvcik7CitpbnRlZ3JpdHkoIkluZWxpZ2libGUgQ09SUyBpbnZhbGlkIGludGVncml0
eSIsIGNyb3Nzb3JpZ2luX2luZWxpZ2libGVfcmVzb3VyY2UsIHsgJ2ludGVncml0eSc6IGludmFs
aWRTaGE1MTIgfSwgVHlwZUVycm9yKTsKIGludGVncml0eSgiU0hBLTI1NiBpbnRlZ3JpdHkgd2l0
aCAnbm8tY29ycycgbW9kZSIsIHJlc291cmNlLCB7ICdpbnRlZ3JpdHknOiB0b3BTaGEyNTYsICdt
b2RlJzogJ25vLWNvcnMnIH0pOwogaW50ZWdyaXR5KCJSZXNvdXJjZSB3aXRoIHplcm8gbGVuZ3Ro
IGJvZHkiLCBlbXB0eV9yZXNvdXJjZSwgeyAnaW50ZWdyaXR5JzogIjQ3REVRcGo4SEJTYSsvVElt
Vys1SkNldVFlUmttNU5NcEpXWkczaFN1RlU9IiB9KTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2VydmljZS13b3JrZXItY3Jvc3NvcmlnaW4t
ZmV0Y2guaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3NlcnZp
Y2Utd29ya2VyLWNyb3Nzb3JpZ2luLWZldGNoLmh0bWwKaW5kZXggZmFkNTA1N2ZhODhjNzUxODVl
MmQ4YWI5ZDlkNzg3YzBlOTFmNDIxNi4uY2U2OGFkNTJlMmI1Yzg5NzhmOTU0M2ZjNjMwZDVlYWUw
MjQ5Y2E3NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZp
Y2Uvc2VydmljZS13b3JrZXItY3Jvc3NvcmlnaW4tZmV0Y2guaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9zZXJ2aWNlLXdvcmtlci1jcm9zc29yaWdpbi1m
ZXRjaC5odG1sCkBAIC05LDcgKzksNyBAQAogcHJvbWlzZV90ZXN0KHRlc3QgPT4gewogICAgIC8v
IFRyaWdnZXJpbmcgcG90ZW50aWFsIHByZWZsaWdodCB0aHJvdWdoIGN1c3RvbSBoZWFkZXIuCiAg
ICAgdmFyIGZldGNoUHJvbWlzZSA9IGZldGNoKCJodHRwOi8vbG9jYWxob3N0OjgwODAvcmVzb3Vy
Y2VzL3NxdWFyZTEwMC5wbmcuZnJvbXNlcnZpY2V3b3JrZXIiLCB7IGhlYWRlcnM6IHsiY3VzdG9t
IjogImhlYWRlciJ9fSk7Ci0gICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0ZXN0LCBuZXcgVHlw
ZUVycm9yKCksIGZldGNoUHJvbWlzZSk7CisgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19qcyh0
ZXN0LCBUeXBlRXJyb3IsIGZldGNoUHJvbWlzZSk7CiB9LCAiVGVzdGluZyB1bmludGVyY2VwdGVk
IGZldGNoIHdpdGggcHJlZmxpZ2h0LCBmZXRjaCBzaG91bGQgZmFpbCIpOwogCiB2YXIgZnJhbWU7
CkBAIC0yNyw3ICsyNyw3IEBAIHByb21pc2VfdGVzdChhc3luYyB0ZXN0ID0+IHsKIHByb21pc2Vf
dGVzdCh0ZXN0ID0+IHsKICAgICAvLyBUcmlnZ2VyaW5nIHBvdGVudGlhbCBwcmVmbGlnaHQgdGhy
b3VnaCBjdXN0b20gaGVhZGVyLgogICAgIHZhciBmZXRjaFByb21pc2UgPSBmcmFtZS5jb250ZW50
V2luZG93LmZldGNoKCJodHRwOi8vbG9jYWxob3N0OjgwODAvcmVzb3VyY2VzL3NxdWFyZTEwMC5w
bmcuZXJyb3IuZnJvbXNlcnZpY2V3b3JrZXIiLCB7IGhlYWRlcnM6IHsiY3VzdG9tIjogImhlYWRl
ciJ9fSk7Ci0gICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0ZXN0LCBuZXcgVHlwZUVycm9yKCks
IGZldGNoUHJvbWlzZSk7CisgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19qcyh0ZXN0LCBmcmFt
ZS5jb250ZW50V2luZG93LlR5cGVFcnJvciwgZmV0Y2hQcm9taXNlKTsKIH0sICJUZXN0aW5nIGlu
dGVyY2VwdGVkIGZldGNoIHdpdGggcHJlZmxpZ2h0LCBmZXRjaCBzaG91bGQgZmFpbCIpOwogPC9z
Y3JpcHQ+CiA8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0
dHByZXF1ZXN0L3NldC1iYWQtaGVhZGVydmFsdWUuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMveG1saHR0cHJlcXVlc3Qvc2V0LWJhZC1oZWFkZXJ2YWx1ZS5odG1sCmluZGV4IDhiYTMwMzMy
MmU2MWZiZmI3NzMyNGFjY2EyOGQ4NTQ3MWM0OTgxODcuLjhjMjgyYzhhMzQ1MGEzNmJhMzFiNTk3
YTM3ZTMyZjA4YmU4YWFlMDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1s
aHR0cHJlcXVlc3Qvc2V0LWJhZC1oZWFkZXJ2YWx1ZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvc2V0LWJhZC1oZWFkZXJ2YWx1ZS5odG1sCkBAIC0xMCwy
MCArMTAsMjIgQEAKICAgPGJvZHk+CiAgICAgPGRpdiBpZD0ibG9nIj48L2Rpdj4KICAgICA8c2Ny
aXB0PgotICAgICAgZnVuY3Rpb24gdHJ5X3ZhbHVlKHZhbHVlLCBleHBlY3RFcnJvcikgeworICAg
ICAgZnVuY3Rpb24gdHJ5X3ZhbHVlKHZhbHVlLCBleHBlY3RFcnJvciwgaXNET01FcnJvcikgewog
ICAgICAgICB0ZXN0KGZ1bmN0aW9uKCkgewogICAgICAgICAgIHZhciBjbGllbnQgPSBuZXcgWE1M
SHR0cFJlcXVlc3QoKQogICAgICAgICAgIGNsaWVudC5vcGVuKCJHRVQiLCAiLi4uIikKLSAgICAg
ICAgICBpZiAoZXhwZWN0RXJyb3IpCi0gICAgICAgICAgICAgIGFzc2VydF90aHJvd3MoZXhwZWN0
RXJyb3IsIGZ1bmN0aW9uKCkgeyBjbGllbnQuc2V0UmVxdWVzdEhlYWRlcigieC10ZXN0IiwgdmFs
dWUpIH0sICcgZ2l2ZW4gdmFsdWUgJyArIHZhbHVlKycsICcpCisgICAgICAgICAgaWYgKGV4cGVj
dEVycm9yICYmIGlzRE9NRXJyb3IpCisgICAgICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKGV4
cGVjdEVycm9yLCBmdW5jdGlvbigpIHsgY2xpZW50LnNldFJlcXVlc3RIZWFkZXIoIngtdGVzdCIs
IHZhbHVlKSB9LCAnIGdpdmVuIHZhbHVlICcgKyB2YWx1ZSsnLCAnKQorICAgICAgICAgIGVsc2Ug
aWYgKGV4cGVjdEVycm9yKQorICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKGV4cGVjdEVy
cm9yLCBmdW5jdGlvbigpIHsgY2xpZW50LnNldFJlcXVlc3RIZWFkZXIoIngtdGVzdCIsIHZhbHVl
KSB9LCAnIGdpdmVuIHZhbHVlICcgKyB2YWx1ZSsnLCAnKQogICAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgICAgY2xpZW50LnNldFJlcXVlc3RIZWFkZXIoIngtdGVzdCIsIHZhbHVlKSAgCiAgICAg
ICAgICAgfSkKICAgICAgIH0KIAotICAgICAgdHJ5X3ZhbHVlKCJ0XHJ0Iiwge25hbWU6J1N5bnRh
eEVycm9yJ30pCi0gICAgICB0cnlfdmFsdWUoInRcbnQiLCB7bmFtZTonU3ludGF4RXJyb3InfSkK
LSAgICAgIHRyeV92YWx1ZSgi776D7729776EIiwge25hbWU6J1R5cGVFcnJvcid9KQorICAgICAg
dHJ5X3ZhbHVlKCJ0XHJ0IiwgJ1N5bnRheEVycm9yJywgdHJ1ZSkKKyAgICAgIHRyeV92YWx1ZSgi
dFxudCIsICdTeW50YXhFcnJvcicsIHRydWUpCisgICAgICB0cnlfdmFsdWUoIu++g++9ve++hCIs
IFR5cGVFcnJvciwgZmFsc2UpCiAgICAgICB0cnlfdmFsdWUoInRcYnQiKQogICAgICAgdHJ5X3Zh
bHVlKCJ0XHZ0IikKICAgICAgIHRyeV92YWx1ZSgidFx0dCIpCkBAIC0zMyw3ICszNSw3IEBACiAg
ICAgICB0ZXN0KGZ1bmN0aW9uKCkgewogICAgICAgICB2YXIgY2xpZW50ID0gbmV3IFhNTEh0dHBS
ZXF1ZXN0KCkKICAgICAgICAgY2xpZW50Lm9wZW4oIkdFVCIsICIuLi4iKQotICAgICAgICBhc3Nl
cnRfdGhyb3dzKHtuYW1lOidUeXBlRXJyb3InfSwgZnVuY3Rpb24oKSB7IGNsaWVudC5zZXRSZXF1
ZXN0SGVhZGVyKCJ4LXRlc3QiKSB9KQorICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJv
ciwgZnVuY3Rpb24oKSB7IGNsaWVudC5zZXRSZXF1ZXN0SGVhZGVyKCJ4LXRlc3QiKSB9KQogICAg
ICAgfSkKICAgICA8L3NjcmlwdD4KICAgPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2Nsb3NlLWluLXVwZ3JhZGVu
ZWVkZWQuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1i
cm93c2luZy9jbG9zZS1pbi11cGdyYWRlbmVlZGVkLmh0bWwKaW5kZXggMmUwMGI0ZTg1NmZjMzQ2
NTgwNTlhZmNmZWIzODE1MzFiMjhiZDE3MS4uMDE1ZWYwYmExOTJmZjRiZTgxOTg5ZTA1ZjA0ODQ2
NjAyYWNiZDE4ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWRE
Qi1wcml2YXRlLWJyb3dzaW5nL2Nsb3NlLWluLXVwZ3JhZGVuZWVkZWQuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvY2xvc2UtaW4t
dXBncmFkZW5lZWRlZC5odG1sCkBAIC0yOSw3ICsyOSw3IEBAIG9wZW5fcnEub25lcnJvciA9IGZ1
bmN0aW9uKGUpIHsKICAgICBhc3NlcnRfdHJ1ZSghIWRiKQogICAgIGFzc2VydF9lcXVhbHMoZGIu
dmVyc2lvbiwgMSkKICAgICBhc3NlcnRfZXF1YWxzKGRiLm9iamVjdFN0b3JlTmFtZXMubGVuZ3Ro
LCAxKQotICAgIGFzc2VydF90aHJvd3MoIkludmFsaWRTdGF0ZUVycm9yIiwgZnVuY3Rpb24oKSB7
IGRiLnRyYW5zYWN0aW9uKCdvcycpIH0pCisgICAgYXNzZXJ0X3Rocm93c19kb20oIkludmFsaWRT
dGF0ZUVycm9yIiwgZnVuY3Rpb24oKSB7IGRiLnRyYW5zYWN0aW9uKCdvcycpIH0pCiAKICAgICB0
aGlzLmRvbmUoKQogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4
ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvci1hZHZhbmNlLWludmFsaWQuaHRtbCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJz
b3ItYWR2YW5jZS1pbnZhbGlkLmh0bWwKaW5kZXggZTI1MDRiOWU0MWU2ODk5MmU3MGI2MTFhNWFk
Mjk2NDhiYTRmMTY3Ni4uNDQ4MmQ2OGQyMTU2ZmI4MjU3N2NmNzY3NmNhMzg0N2M4OGZiMmVjNiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJy
b3dzaW5nL2lkYmN1cnNvci1hZHZhbmNlLWludmFsaWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yLWFkdmFuY2Ut
aW52YWxpZC5odG1sCkBAIC00NiwxMCArNDYsMTAgQEAKICAgICAgICAgICAgICAgICBjdXJzb3Iu
YWR2YW5jZSgxKTsKIAogICAgICAgICAgICAgICAgIC8vIFNlY29uZCB0cnkKLSAgICAgICAgICAg
ICAgICBhc3NlcnRfdGhyb3dzKCdJbnZhbGlkU3RhdGVFcnJvcicsCisgICAgICAgICAgICAgICAg
YXNzZXJ0X3Rocm93c19kb20oJ0ludmFsaWRTdGF0ZUVycm9yJywKICAgICAgICAgICAgICAgICAg
ICAgZnVuY3Rpb24oKSB7IGN1cnNvci5hZHZhbmNlKDEpOyB9LCAnc2Vjb25kIGFkdmFuY2UnKTsK
IAotICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3MoJ0ludmFsaWRTdGF0ZUVycm9yJywKKyAg
ICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgnSW52YWxpZFN0YXRlRXJyb3InLAogICAg
ICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsgY3Vyc29yLmFkdmFuY2UoMyk7IH0sICd0aGly
ZCBhZHZhbmNlJyk7CiAKICAgICAgICAgICAgICAgICBjb3VudCsrOwpAQCAtNjQsMTkgKzY0LDE5
IEBACiAgICAgICAgICAgICBycS5vbnN1Y2Nlc3MgPSB0aGlzLnN0ZXBfZnVuYyhmdW5jdGlvbihl
KSB7CiAgICAgICAgICAgICAgICAgdmFyIGN1cnNvciA9IGUudGFyZ2V0LnJlc3VsdDsKIAotICAg
ICAgICAgICAgICAgIGFzc2VydF90aHJvd3MoeyBuYW1lOiAiVHlwZUVycm9yIiB9LAorICAgICAg
ICAgICAgICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAg
ICBmdW5jdGlvbigpIHsgY3Vyc29yLmFkdmFuY2UoZG9jdW1lbnQpOyB9KTsKIAotICAgICAgICAg
ICAgICAgIGFzc2VydF90aHJvd3MoeyBuYW1lOiAiVHlwZUVycm9yIiB9LAorICAgICAgICAgICAg
ICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICBmdW5j
dGlvbigpIHsgY3Vyc29yLmFkdmFuY2Uoe30pOyB9KTsKIAotICAgICAgICAgICAgICAgIGFzc2Vy
dF90aHJvd3MoeyBuYW1lOiAiVHlwZUVycm9yIiB9LAorICAgICAgICAgICAgICAgIGFzc2VydF90
aHJvd3NfanMoVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsgY3Vy
c29yLmFkdmFuY2UoW10pOyB9KTsKIAotICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3MoeyBu
YW1lOiAiVHlwZUVycm9yIiB9LAorICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3NfanMoVHlw
ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsgY3Vyc29yLmFkdmFuY2Uo
IiIpOyB9KTsKIAotICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3MoeyBuYW1lOiAiVHlwZUVy
cm9yIiB9LAorICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLAogICAg
ICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsgY3Vyc29yLmFkdmFuY2UoIjEgMiIpOyB9KTsK
IAogICAgICAgICAgICAgICAgIHRoaXMuZG9uZSgpOwpAQCAtOTEsMTQgKzkxLDE0IEBACiAgICAg
ICAgICAgICBycS5vbnN1Y2Nlc3MgPSB0aGlzLnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7CiAgICAg
ICAgICAgICAgICAgdmFyIGN1cnNvciA9IGUudGFyZ2V0LnJlc3VsdDsKIAotICAgICAgICAgICAg
ICAgIGFzc2VydF90aHJvd3MoeyBuYW1lOiAiVHlwZUVycm9yIiB9LAorICAgICAgICAgICAgICAg
IGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICBmdW5jdGlv
bigpIHsgY3Vyc29yLmFkdmFuY2UobnVsbCk7IH0pOwogCi0gICAgICAgICAgICAgICAgYXNzZXJ0
X3Rocm93cyh7IG5hbWU6ICJUeXBlRXJyb3IiIH0sCisgICAgICAgICAgICAgICAgYXNzZXJ0X3Ro
cm93c19qcyhUeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyBjdXJz
b3IuYWR2YW5jZSh1bmRlZmluZWQpOyB9KTsKIAogICAgICAgICAgICAgICAgIHZhciBteXZhciA9
IG51bGw7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyh7IG5hbWU6ICJUeXBlRXJyb3Ii
IH0sCisgICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsCiAgICAgICAg
ICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyBjdXJzb3IuYWR2YW5jZShteXZhcik7IH0pOwogCiAg
ICAgICAgICAgICAgICAgdGhpcy5kb25lKCk7CkBAIC0xMTMsNyArMTEzLDcgQEAKICAgICAgICAg
ICAgIHJxLm9uc3VjY2VzcyA9IHRoaXMuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsKICAgICAgICAg
ICAgICAgICB2YXIgY3Vyc29yID0gZS50YXJnZXQucmVzdWx0OwogCi0gICAgICAgICAgICAgICAg
YXNzZXJ0X3Rocm93cyh7IG5hbWU6ICJUeXBlRXJyb3IiIH0sCisgICAgICAgICAgICAgICAgYXNz
ZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkg
eyBjdXJzb3IuYWR2YW5jZSgpOyB9KTsKIAogICAgICAgICAgICAgICAgIHRoaXMuZG9uZSgpOwpA
QCAtMTI4LDI2ICsxMjgsMjYgQEAKICAgICAgICAgICAgIHJxLm9uc3VjY2VzcyA9IHRoaXMuc3Rl
cF9mdW5jKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICB2YXIgY3Vyc29yID0gZS50YXJn
ZXQucmVzdWx0OwogCi0gICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyh7IG5hbWU6ICJUeXBl
RXJyb3IiIH0sCisgICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsCiAg
ICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyBjdXJzb3IuYWR2YW5jZSgtMSk7IH0pOwog
Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyh7IG5hbWU6ICJUeXBlRXJyb3IiIH0sCisg
ICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsCiAgICAgICAgICAgICAg
ICAgICAgIGZ1bmN0aW9uKCkgeyBjdXJzb3IuYWR2YW5jZShOYU4pOyB9KTsKIAotICAgICAgICAg
ICAgICAgIGFzc2VydF90aHJvd3MoeyBuYW1lOiAiVHlwZUVycm9yIiB9LAorICAgICAgICAgICAg
ICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICBmdW5j
dGlvbigpIHsgY3Vyc29yLmFkdmFuY2UoMCk7IH0pOwogCi0gICAgICAgICAgICAgICAgYXNzZXJ0
X3Rocm93cyh7IG5hbWU6ICJUeXBlRXJyb3IiIH0sCisgICAgICAgICAgICAgICAgYXNzZXJ0X3Ro
cm93c19qcyhUeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyBjdXJz
b3IuYWR2YW5jZSgtMCk7IH0pOwogCi0gICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyh7IG5h
bWU6ICJUeXBlRXJyb3IiIH0sCisgICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBl
RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyBjdXJzb3IuYWR2YW5jZShJ
bmZpbml0eSk7IH0pOwogCi0gICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyh7IG5hbWU6ICJU
eXBlRXJyb3IiIH0sCisgICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3Is
CiAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyBjdXJzb3IuYWR2YW5jZSgtSW5maW5p
dHkpOyB9KTsKIAogICAgICAgICAgICAgICAgIHZhciBteXZhciA9IC05OTk5OTk7Ci0gICAgICAg
ICAgICAgICAgYXNzZXJ0X3Rocm93cyh7IG5hbWU6ICJUeXBlRXJyb3IiIH0sCisgICAgICAgICAg
ICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgIGZ1
bmN0aW9uKCkgeyBjdXJzb3IuYWR2YW5jZShteXZhcik7IH0pOwogCiAgICAgICAgICAgICAgICAg
dGhpcy5kb25lKCk7CkBAIC0xNjksNyArMTY5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3Mo
eyBuYW1lOiAiVHlwZUVycm9yIiB9LAorICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3NfanMo
VHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsgY3Vyc29yLmFkdmFu
Y2UoMCk7IH0pOwogCiAgICAgICAgICAgICAgICAgY3Vyc29yLmFkdmFuY2UoMSk7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Npbmcv
aWRiY3Vyc29yX2FkdmFuY2VfaW5kZXgyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
SW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2FkdmFuY2VfaW5kZXgyLmh0bWwK
aW5kZXggMDhmYjA1ZDM2MjdjMzhjMGUxYzlkODgxNzcyNWVmMThmMjZmMjZhZC4uMTFlMDFiMWUz
MzBiYTI0ZWE5ZmZjZjYyNTgxMTUzODNhNTM3MDdiYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9hZHZhbmNl
X2luZGV4Mi5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJp
dmF0ZS1icm93c2luZy9pZGJjdXJzb3JfYWR2YW5jZV9pbmRleDIuaHRtbApAQCAtMzUsNyArMzUs
NyBAQAogICAgICAgICAgICAgdmFyIGN1cnNvciA9IGUudGFyZ2V0LnJlc3VsdDsKIAogICAgICAg
ICAgICAgYXNzZXJ0X3RydWUoY3Vyc29yICE9IG51bGwsICJjdXJzb3IgZXhpc3QiKTsKLSAgICAg
ICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLAorICAgICAgICAgICAgYXNzZXJ0
X3Rocm93c19qcyhUeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7IGN1cnNv
ci5hZHZhbmNlKGRvY3VtZW50KTsgfSk7CiAKICAgICAgICAgICAgIHQuZG9uZSgpOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5n
L2lkYmN1cnNvcl9hZHZhbmNlX2luZGV4My5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9hZHZhbmNlX2luZGV4My5odG1s
CmluZGV4IGY4YTFhZWYwNzA3YTMwNTJhODFjYjQxZjFhOWY4YmU2NzI5M2EyMDEuLjVjYzQ4NGVj
MWE0NDgwMWMxNDk3YmU2MGMzMjY4MmExY2ZmODk2ZDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfYWR2YW5j
ZV9pbmRleDMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXBy
aXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2FkdmFuY2VfaW5kZXgzLmh0bWwKQEAgLTM1LDcgKzM1
LDcgQEAKICAgICAgICAgICAgIHZhciBjdXJzb3IgPSBlLnRhcmdldC5yZXN1bHQ7CiAKICAgICAg
ICAgICAgIGFzc2VydF90cnVlKGN1cnNvciAhPSBudWxsLCAiY3Vyc29yIGV4aXN0Iik7Ci0gICAg
ICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwKKyAgICAgICAgICAgIGFzc2Vy
dF90aHJvd3NfanMoVHlwZUVycm9yLAogICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyBjdXJz
b3IuYWR2YW5jZSgtMSk7IH0pOwogCiAgICAgICAgICAgICB0LmRvbmUoKTsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJj
dXJzb3JfYWR2YW5jZV9pbmRleDYuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRl
eGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfYWR2YW5jZV9pbmRleDYuaHRtbAppbmRl
eCA3NGQ2NTNjMDk5NTE0NjM4MDZjM2QxMjMzYzcwYTNjYzg4ZDViMmJkLi41MzhmNTM2MTI0YjIw
OTZmYmUzYzgwMDhlODk2ZGM2MTE2OTVjMDVlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2FkdmFuY2VfaW5k
ZXg2Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRl
LWJyb3dzaW5nL2lkYmN1cnNvcl9hZHZhbmNlX2luZGV4Ni5odG1sCkBAIC0yNiw3ICsyNiw3IEBA
CiAgICAgICAgICAgICB2YXIgY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKICAgICAgICAg
ICAgIGFzc2VydF90cnVlKGN1cnNvciBpbnN0YW5jZW9mIElEQkN1cnNvcik7CiAKLSAgICAgICAg
ICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAg
ICAgICBjdXJzb3IuYWR2YW5jZSgwKTsKICAgICAgICAgICAgIH0sICJDYWxsaW5nIGFkdmFuY2Uo
KSB3aXRoIGNvdW50IGFyZ3VtZW50IDAgc2hvdWxkIHRocm93IFR5cGVFcnJvci4iKTsKIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dz
aW5nL2lkYmN1cnNvcl9hZHZhbmNlX2luZGV4Ny5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9hZHZhbmNlX2luZGV4Ny5o
dG1sCmluZGV4IDYxN2NkYTA3YWY2YmM5MzhjNTQ2NjJjNGNlNTYzZmRkNWE2MzM4NDkuLjE1Yjg3
MGFjNDJjNzM5Zjc0YjhlNWZhNWRkYWE3NWM3ZGNjNTJkOGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfYWR2
YW5jZV9pbmRleDcuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERC
LXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2FkdmFuY2VfaW5kZXg3Lmh0bWwKQEAgLTI3LDcg
KzI3LDcgQEAKICAgICAgICAgICAgIGFzc2VydF90cnVlKGN1cnNvciBpbnN0YW5jZW9mIElEQkN1
cnNvcik7CiAKICAgICAgICAgICAgIGV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5hYm9ydCgpOwot
ICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygiVHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yIiwgZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiVHJhbnNhY3Rpb25JbmFj
dGl2ZUVycm9yIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgY3Vyc29yLmFkdmFuY2Uo
MSk7CiAgICAgICAgICAgICB9LCAiQ2FsbGluZyBhZHZhbmNlKCkgc2hvdWxkIHRocm93cyBhbiBl
eGNlcHRpb24gVHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yIHdoZW4gdGhlIHRyYW5zYWN0aW9uIGlz
IG5vdCBhY3RpdmUuIik7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9J
bmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfYWR2YW5jZV9pbmRleDguaHRtbCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJj
dXJzb3JfYWR2YW5jZV9pbmRleDguaHRtbAppbmRleCAxY2RlOWFmMWE3YTcxZTBiMzZhODMzOWY1
NTc0NmMzYWQ3YmQwYTYyLi4zMWE3YTNmODU2OWVlOThkOGIzODYyZDAwZGFmODgxZDdjYTY3YzVi
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUt
YnJvd3NpbmcvaWRiY3Vyc29yX2FkdmFuY2VfaW5kZXg4Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9hZHZhbmNl
X2luZGV4OC5odG1sCkBAIC0yNyw3ICsyNyw3IEBACiAgICAgICAgICAgICBhc3NlcnRfdHJ1ZShj
dXJzb3IgaW5zdGFuY2VvZiBJREJDdXJzb3IpOwogCiAgICAgICAgICAgICBjdXJzb3IuYWR2YW5j
ZSgxKTsKLSAgICAgICAgICAgIGFzc2VydF90aHJvd3MoIkludmFsaWRTdGF0ZUVycm9yIiwgZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiSW52YWxpZFN0YXRlRXJy
b3IiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICBjdXJzb3IuYWR2YW5jZSgxKTsKICAg
ICAgICAgICAgIH0sICJDYWxsaW5nIGFkdmFuY2UoKSBzaG91bGQgdGhyb3cgRE9NRXhjZXB0aW9u
IHdoZW4gdGhlIGN1cnNvciBpcyBjdXJyZW50bHkgYmVpbmcgaXRlcmF0ZWQuIik7CiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2lu
Zy9pZGJjdXJzb3JfYWR2YW5jZV9pbmRleDkuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfYWR2YW5jZV9pbmRleDkuaHRt
bAppbmRleCAwOTFjMWJjYmM5YjVjMGM0MzVlMzdhMmVjZWE2ZmYzN2ZlZThjMTAxLi44MzlkM2Vh
OGIyNDBiZTZiZjEyMDk0ODg5MGE2N2Q5OWRhNWM2MTg1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2FkdmFu
Y2VfaW5kZXg5Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1w
cml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9hZHZhbmNlX2luZGV4OS5odG1sCkBAIC0yNiw3ICsy
Niw3IEBACiAgICAgICAgICAgICBhc3NlcnRfdHJ1ZShjdXJzb3IgaW5zdGFuY2VvZiBJREJDdXJz
b3IsICJjdXJzb3IgZXhpc3QiKTsKIAogICAgICAgICAgICAgZGIuZGVsZXRlT2JqZWN0U3RvcmUo
InN0b3JlIik7Ci0gICAgICAgICAgICBhc3NlcnRfdGhyb3dzKCJJbnZhbGlkU3RhdGVFcnJvciIs
IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkludmFsaWRTdGF0
ZUVycm9yIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgY3Vyc29yLmFkdmFuY2UoMSk7
CiAgICAgICAgICAgICB9LCAiSWYgdGhlIGN1cnNvcidzIHNvdXJjZSBvciBlZmZlY3RpdmUgb2Jq
ZWN0IHN0b3JlIGhhcyBiZWVuIGRlbGV0ZWQsIHRoZSBpbXBsZW1lbnRhdGlvbiBNVVNUIHRocm93
IGEgRE9NRXhjZXB0aW9uIG9mIHR5cGUgSW52YWxpZFN0YXRlRXJyb3IiKTsKIApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lk
YmN1cnNvcl9hZHZhbmNlX29iamVjdHN0b3JlMi5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9hZHZhbmNlX29iamVjdHN0
b3JlMi5odG1sCmluZGV4IDVhY2Y3ZmY4MDNhMGM2NTFjNTUwNmNhNDc0OTM1N2RkMzQ3YjdiMjgu
LjYxNDQ5MTgxZWYzZmZiNGRkNTU1NWYwMDQwZTkyMjMxOTQ5NmU3YTkgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJz
b3JfYWR2YW5jZV9vYmplY3RzdG9yZTIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2FkdmFuY2Vfb2JqZWN0c3Rv
cmUyLmh0bWwKQEAgLTI5LDcgKzI5LDcgQEAKICAgICAgICAgICAgIHZhciBjdXJzb3IgPSBldmVu
dC50YXJnZXQucmVzdWx0OwogICAgICAgICAgICAgYXNzZXJ0X3RydWUoY3Vyc29yIGluc3RhbmNl
b2YgSURCQ3Vyc29yKTsKIAotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9y
KCksIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3Is
IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgIGN1cnNvci5hZHZhbmNlKDApOwogICAgICAg
ICAgICAgfSwgIkNhbGxpbmcgYWR2YW5jZSgpIHdpdGggY291bnQgYXJndW1lbnQgMCBzaG91bGQg
dGhyb3cgVHlwZUVycm9yLiIpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2FkdmFuY2Vfb2JqZWN0c3Rv
cmUzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJv
d3NpbmcvaWRiY3Vyc29yX2FkdmFuY2Vfb2JqZWN0c3RvcmUzLmh0bWwKaW5kZXggOThiNTc3NTI0
N2Y0ZWU0YmRmM2RiYmI1ZDI1N2JmNGIwYmE1NzExOS4uOTU2NmY0NWUyNTkzMjIwYmY5ZWIzYjFk
YjkzYjZmOGM3YWNhZGNkZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0lu
ZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9hZHZhbmNlX29iamVjdHN0b3JlMy5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93
c2luZy9pZGJjdXJzb3JfYWR2YW5jZV9vYmplY3RzdG9yZTMuaHRtbApAQCAtMzAsNyArMzAsNyBA
QAogICAgICAgICAgICAgYXNzZXJ0X3RydWUoY3Vyc29yIGluc3RhbmNlb2YgSURCQ3Vyc29yKTsK
IAogICAgICAgICAgICAgZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLmFib3J0KCk7Ci0gICAgICAg
ICAgICBhc3NlcnRfdGhyb3dzKCJUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3IiLCBmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJUcmFuc2FjdGlvbkluYWN0aXZlRXJy
b3IiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICBjdXJzb3IuYWR2YW5jZSgxKTsKICAg
ICAgICAgICAgIH0sICJDYWxsaW5nIGFkdmFuY2UoKSBzaG91bGQgdGhyb3dzIGFuIGV4Y2VwdGlv
biBUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3Igd2hlbiB0aGUgdHJhbnNhY3Rpb24gaXMgbm90IGFj
dGl2ZSIpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERC
LXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2FkdmFuY2Vfb2JqZWN0c3RvcmU0Lmh0bWwgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vy
c29yX2FkdmFuY2Vfb2JqZWN0c3RvcmU0Lmh0bWwKaW5kZXggZGFiZjhlODY5NzM3NjFhOGVkYTcw
YWFkYjk2NGY1NmEyYjliY2RhOS4uMWM4OTQ3ZjA4NzI2ZGY1YTJkMDFhNjhhMzM5MjU3YTJlODkz
ZTNjOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2
YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9hZHZhbmNlX29iamVjdHN0b3JlNC5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJz
b3JfYWR2YW5jZV9vYmplY3RzdG9yZTQuaHRtbApAQCAtMzAsNyArMzAsNyBAQAogICAgICAgICAg
ICAgYXNzZXJ0X3RydWUoY3Vyc29yIGluc3RhbmNlb2YgSURCQ3Vyc29yKTsKIAogICAgICAgICAg
ICAgY3Vyc29yLmFkdmFuY2UoMSk7Ci0gICAgICAgICAgICBhc3NlcnRfdGhyb3dzKCJJbnZhbGlk
U3RhdGVFcnJvciIsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19kb20o
IkludmFsaWRTdGF0ZUVycm9yIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgY3Vyc29y
LmFkdmFuY2UoMSk7CiAgICAgICAgICAgICB9LCAiQ2FsbGluZyBhZHZhbmNlKCkgc2hvdWxkIHRo
cm93IERPTUV4Y2VwdGlvbiB3aGVuIHRoZSBjdXJzb3IgaXMgY3VycmVudGx5IGJlaW5nIGl0ZXJh
dGVkLiIpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERC
LXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2FkdmFuY2Vfb2JqZWN0c3RvcmU1Lmh0bWwgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vy
c29yX2FkdmFuY2Vfb2JqZWN0c3RvcmU1Lmh0bWwKaW5kZXggZmY2MWY2ZjM2NmEzNjg3ZWMzODky
ZjIxNTg3NTc3MDcwYTJhMWUxMS4uYzY3MzgyYTQ0YzkzYzQ0NGYzMWRjYzg4OWRiZDE0YjJjYzA0
ZWExZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2
YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9hZHZhbmNlX29iamVjdHN0b3JlNS5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJz
b3JfYWR2YW5jZV9vYmplY3RzdG9yZTUuaHRtbApAQCAtMjUsNyArMjUsNyBAQAogICAgICAgICAg
ICAgYXNzZXJ0X3RydWUoY3Vyc29yIGluc3RhbmNlb2YgSURCQ3Vyc29yLCAiY3Vyc29yIGV4aXN0
Iik7CiAKICAgICAgICAgICAgIGRiLmRlbGV0ZU9iamVjdFN0b3JlKCJzdG9yZSIpOwotICAgICAg
ICAgICAgYXNzZXJ0X3Rocm93cygiSW52YWxpZFN0YXRlRXJyb3IiLCBmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlkU3RhdGVFcnJvciIsIGZ1bmN0aW9u
KCkgewogICAgICAgICAgICAgICAgIGN1cnNvci5hZHZhbmNlKDEpOwogICAgICAgICAgICAgfSwg
IklmIHRoZSBjdXJzb3IncyBzb3VyY2Ugb3IgZWZmZWN0aXZlIG9iamVjdCBzdG9yZSBoYXMgYmVl
biBkZWxldGVkLCB0aGUgaW1wbGVtZW50YXRpb24gTVVTVCB0aHJvdyBhIERPTUV4Y2VwdGlvbiBv
ZiB0eXBlIEludmFsaWRTdGF0ZUVycm9yIik7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfY29udGludWVf
aW5kZXgyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUt
YnJvd3NpbmcvaWRiY3Vyc29yX2NvbnRpbnVlX2luZGV4Mi5odG1sCmluZGV4IDNhODg5OGNkNmY3
NTMyNWI1ZmY1NDM4NDNjZDExOWIyNWE4OTE4NTIuLmVhNjc1YmRiNmRjOWRkNmUzMjE4NDk4MmIy
MzJlZTZlMzJhMTczODkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRl
eGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfY29udGludWVfaW5kZXgyLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lk
YmN1cnNvcl9jb250aW51ZV9pbmRleDIuaHRtbApAQCAtMzUsNyArMzUsNyBAQAogICAgICAgICBj
dXJzb3JfcnEub25zdWNjZXNzID0gdC5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgewogICAgICAgICAg
ICAgdmFyIGN1cnNvciA9IGUudGFyZ2V0LnJlc3VsdDsKIAotICAgICAgICAgICAgYXNzZXJ0X3Ro
cm93cygiRGF0YUVycm9yIiwKKyAgICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJEYXRhRXJy
b3IiLAogICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyBjdXJzb3IuY29udGludWUoZG9jdW1l
bnQpOyB9KTsKIAogICAgICAgICAgICAgYXNzZXJ0X3RydWUoY3Vyc29yIGluc3RhbmNlb2YgSURC
Q3Vyc29yV2l0aFZhbHVlLCAiY3Vyc29yIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2NvbnRpbnVlX2lu
ZGV4My5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJy
b3dzaW5nL2lkYmN1cnNvcl9jb250aW51ZV9pbmRleDMuaHRtbAppbmRleCA1NWVlZmEzNzIxZjQ1
MTQyZGUyNzdmNzhkNTI4YTk5Mjk3ODJiMGE5Li4xODEwNTc0ZTllNWFkNzMxNzExOWM5MWY0OTg3
NDFlZDgwNzg3MGJmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhl
ZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2NvbnRpbnVlX2luZGV4My5odG1sCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJj
dXJzb3JfY29udGludWVfaW5kZXgzLmh0bWwKQEAgLTQwLDcgKzQwLDcgQEAKICAgICAgICAgICAg
IH0KIAogICAgICAgICAgICAgLy8gRmlyc3QgdGltZSBjaGVja3Mga2V5IGVxdWFsLCBzZWNvbmQg
dGltZSBjaGVja3Mga2V5IGxlc3MgdGhhbgotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygiRGF0
YUVycm9yIiwKKyAgICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJEYXRhRXJyb3IiLAogICAg
ICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyBjdXJzb3IuY29udGludWUocmVjb3Jkc1swXS5pS2V5
KTsgfSk7CiAKICAgICAgICAgICAgIGN1cnNvci5jb250aW51ZSgpOwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNv
cl9jb250aW51ZV9pbmRleDQuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVk
REItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfY29udGludWVfaW5kZXg0Lmh0bWwKaW5kZXgg
ZDQxNmM5ZjU4ZWRkZDBkNDE1ZWY0MWU5MzAxMWEwNzFlOGFjZGEwYS4uMzU1NDZiNDE1MDIyZWEw
YjViY2MzZDc3YWMzNmYxNGEwZmY1NjA2YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9jb250aW51ZV9pbmRl
eDQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUt
YnJvd3NpbmcvaWRiY3Vyc29yX2NvbnRpbnVlX2luZGV4NC5odG1sCkBAIC00Nyw3ICs0Nyw3IEBA
CiAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyZWNv
cmQucEtleSwgcmVjb3Jkc1sxXS5wS2V5LCAic2Vjb25kIHBLZXkiKTsKICAgICAgICAgICAgICAg
ICBhc3NlcnRfZXF1YWxzKHJlY29yZC5pS2V5LCByZWNvcmRzWzFdLmlLZXksICJzZWNvbmQgaUtl
eSIpOwotICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3MoIkRhdGFFcnJvciIsCisgICAgICAg
ICAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkRhdGFFcnJvciIsCiAgICAgICAgICAgICAgICAg
ICAgIGZ1bmN0aW9uKCkgeyBjdXJzb3IuY29udGludWUoImluZGV4S2V5XzIiKTsgfSk7CiAgICAg
ICAgICAgICAgICAgdC5kb25lKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRi
Y3Vyc29yX2NvbnRpbnVlX2luZGV4Ny5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0lu
ZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9jb250aW51ZV9pbmRleDcuaHRtbApp
bmRleCA1YWU2MDk4YWYwZGExOGJiN2M2MTNkMjMxOGU4YWExMzNkNTA5ZGY5Li4zZmUyMDkyYWVh
ZjdmMmE3OGZiMGQzY2I3MjkwNGIyYmNhZDVmMDc5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2NvbnRpbnVl
X2luZGV4Ny5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJp
dmF0ZS1icm93c2luZy9pZGJjdXJzb3JfY29udGludWVfaW5kZXg3Lmh0bWwKQEAgLTI3LDcgKzI3
LDcgQEAKICAgICAgICAgICAgIGFzc2VydF90cnVlKGN1cnNvciBpbnN0YW5jZW9mIElEQkN1cnNv
cik7CiAKICAgICAgICAgICAgIGV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5hYm9ydCgpOwotICAg
ICAgICAgICAgYXNzZXJ0X3Rocm93cygiVHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yIiwgZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiVHJhbnNhY3Rpb25JbmFjdGl2
ZUVycm9yIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgY3Vyc29yLmNvbnRpbnVlKCk7
CiAgICAgICAgICAgICB9LCAiQ2FsbGluZyBjb250aW51ZSgpIHNob3VsZCB0aHJvd3MgYW4gZXhj
ZXB0aW9uIFRyYW5zYWN0aW9uSW5hY3RpdmVFcnJvciB3aGVuIHRoZSB0cmFuc2FjdGlvbiBpcyBu
b3QgYWN0aXZlLiIpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5k
ZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2NvbnRpbnVlX2luZGV4OC5odG1sIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1
cnNvcl9jb250aW51ZV9pbmRleDguaHRtbAppbmRleCA2ZWU1N2Y1YmQyNGQyZjczNDc0NGZhZWM5
MjA5YjlkNmZjYjE2MzJiLi4yZjdhYzIxODEwZDQ5NDgzNTk5ZTIzMjgyNzhlZjczODJjZDJiNGZi
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUt
YnJvd3NpbmcvaWRiY3Vyc29yX2NvbnRpbnVlX2luZGV4OC5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfY29udGlu
dWVfaW5kZXg4Lmh0bWwKQEAgLTI3LDcgKzI3LDcgQEAKICAgICAgICAgICAgIGFzc2VydF90cnVl
KGN1cnNvciBpbnN0YW5jZW9mIElEQkN1cnNvcik7CiAKICAgICAgICAgICAgIGRiLmRlbGV0ZU9i
amVjdFN0b3JlKCJzdG9yZSIpOwotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygiSW52YWxpZFN0
YXRlRXJyb3IiLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJJ
bnZhbGlkU3RhdGVFcnJvciIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgIGN1cnNvci5j
b250aW51ZSgpOwogICAgICAgICAgICAgfSwgIklmIHRoZSBjdXJzb3IncyBzb3VyY2Ugb3IgZWZm
ZWN0aXZlIG9iamVjdCBzdG9yZSBoYXMgYmVlbiBkZWxldGVkLCB0aGUgaW1wbGVtZW50YXRpb24g
TVVTVCB0aHJvdyBhIERPTUV4Y2VwdGlvbiBvZiB0eXBlIEludmFsaWRTdGF0ZUVycm9yIik7CiAK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1i
cm93c2luZy9pZGJjdXJzb3JfY29udGludWVfaW52YWxpZC5odG1sIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9jb250aW51ZV9p
bnZhbGlkLmh0bWwKaW5kZXggNjU3YTZhMDJjMDZlMzU4MGZkMjQ1YmYxMjY2N2IyYjhmM2U1ZTIw
NS4uNWE5YzQwZjYyZjQ2ZTcwMzAyOGUxZWEyMWEyZjFkN2Q2ZjUzMzIyNCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1
cnNvcl9jb250aW51ZV9pbnZhbGlkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9jb250aW51ZV9pbnZhbGlkLmh0
bWwKQEAgLTM5LDEwICszOSwxMCBAQAogICAgICAgICAgICAgY3Vyc29yLmNvbnRpbnVlKHVuZGVm
aW5lZCk7CiAKICAgICAgICAgICAgIC8vIFNlY29uZCB0cnkKLSAgICAgICAgICAgIGFzc2VydF90
aHJvd3MoJ0ludmFsaWRTdGF0ZUVycm9yJywKKyAgICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9t
KCdJbnZhbGlkU3RhdGVFcnJvcicsCiAgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7IGN1cnNv
ci5jb250aW51ZSgpOyB9LCAnc2Vjb25kIGNvbnRpbnVlJyk7CiAKLSAgICAgICAgICAgIGFzc2Vy
dF90aHJvd3MoJ0ludmFsaWRTdGF0ZUVycm9yJywKKyAgICAgICAgICAgIGFzc2VydF90aHJvd3Nf
ZG9tKCdJbnZhbGlkU3RhdGVFcnJvcicsCiAgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7IGN1
cnNvci5jb250aW51ZSgzKTsgfSwgJ3RoaXJkIGNvbnRpbnVlJyk7CiAKICAgICAgICAgICAgIGNv
dW50Kys7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXBy
aXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2NvbnRpbnVlX29iamVjdHN0b3JlMi5odG1sIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNv
cl9jb250aW51ZV9vYmplY3RzdG9yZTIuaHRtbAppbmRleCA0NGU0MzhmZTk3ODg1MmQzNTE0MWZh
Mzk2ZmRhMDk5ZjMxYzliMGQwLi41ZmFiMThjZTY2MTAxNmM0NmQ5ZmIzZDEyZjZmZTZhZDFmMWMz
Y2U3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZh
dGUtYnJvd3NpbmcvaWRiY3Vyc29yX2NvbnRpbnVlX29iamVjdHN0b3JlMi5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJz
b3JfY29udGludWVfb2JqZWN0c3RvcmUyLmh0bWwKQEAgLTI5LDcgKzI5LDcgQEAKICAgICAgICAg
ICAgIHZhciBjdXJzb3IgPSBlLnRhcmdldC5yZXN1bHQ7CiAKICAgICAgICAgICAgIGFzc2VydF90
cnVlKGN1cnNvciBpbnN0YW5jZW9mIElEQkN1cnNvciwgImN1cnNvciBleGlzdHMiKTsKLSAgICAg
ICAgICAgIGFzc2VydF90aHJvd3MoIkRhdGFFcnJvciIsCisgICAgICAgICAgICBhc3NlcnRfdGhy
b3dzX2RvbSgiRGF0YUVycm9yIiwKICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsgY3Vyc29y
LmNvbnRpbnVlKGRvY3VtZW50KTsgfSk7CiAKICAgICAgICAgICAgIHQuZG9uZSgpOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5n
L2lkYmN1cnNvcl9jb250aW51ZV9vYmplY3RzdG9yZTMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfY29udGludWVfb2Jq
ZWN0c3RvcmUzLmh0bWwKaW5kZXggYzgwNDJlNGE0ZGZmMzAwMmJmOTEyZWUzNTBjZjFlNjZhODJl
NjBhOS4uNzQwYWI1ZGM1YTQ2Y2IwMzM4MTFkNDBlNDA1NWE5MTI5MmZjY2U0MCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lk
YmN1cnNvcl9jb250aW51ZV9vYmplY3RzdG9yZTMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2NvbnRpbnVlX29i
amVjdHN0b3JlMy5odG1sCkBAIC0yOSw3ICsyOSw3IEBACiAgICAgICAgICAgICB2YXIgY3Vyc29y
ID0gZS50YXJnZXQucmVzdWx0OwogCiAgICAgICAgICAgICBhc3NlcnRfdHJ1ZShjdXJzb3IgaW5z
dGFuY2VvZiBJREJDdXJzb3IsICJjdXJzb3IgZXhpc3QiKTsKLSAgICAgICAgICAgIGFzc2VydF90
aHJvd3MoIkRhdGFFcnJvciIsCisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiRGF0YUVy
cm9yIiwKICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsgY3Vyc29yLmNvbnRpbnVlKHJlY29y
ZHNbMF0ucEtleSk7IH0pOwogCiAgICAgICAgICAgICB0LmRvbmUoKTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJz
b3JfY29udGludWVfb2JqZWN0c3RvcmU0Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
SW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2NvbnRpbnVlX29iamVjdHN0b3Jl
NC5odG1sCmluZGV4IDYwZDkxZDliMTIyNjJmMTQzZmJhZWMzMzJkYjYyNzMxMjg1YjNmMGIuLmFh
MGZkYjA3MjRhZDM4NjdmZjZkZTRiZGZhMmJiMjFjMjcxZThlNzEgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3Jf
Y29udGludWVfb2JqZWN0c3RvcmU0Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9jb250aW51ZV9vYmplY3RzdG9y
ZTQuaHRtbApAQCAtNDAsNyArNDAsNyBAQAogCiAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAg
ICAgICAgICAgYXNzZXJ0X2VxdWFscyhjdXJzb3IudmFsdWUucEtleSwgcmVjb3Jkc1sxXS5wS2V5
LCAic2Vjb25kIGN1cnNvciBwa2V5Iik7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygi
RGF0YUVycm9yIiwKKyAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiRGF0YUVycm9y
IiwKICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7IGN1cnNvci5jb250aW51ZShyZWNv
cmRzWzJdLnBLZXkpOyB9KTsKICAgICAgICAgICAgICAgICB0LmRvbmUoKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVk
REItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfY29udGludWVfb2JqZWN0c3RvcmU1Lmh0bWwg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRi
Y3Vyc29yX2NvbnRpbnVlX29iamVjdHN0b3JlNS5odG1sCmluZGV4IDAyNjMxNWNiZDAzNTc2YWMy
YzI1ZDI4YjVhOTk5ZmU3YTExNTcyYzUuLmQ2ZjhmM2Q2NmZkNWM1NzRmMDgzMTVmZjY5M2JlYzY5
ODVjM2UyOTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREIt
cHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfY29udGludWVfb2JqZWN0c3RvcmU1Lmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lk
YmN1cnNvcl9jb250aW51ZV9vYmplY3RzdG9yZTUuaHRtbApAQCAtMzEsNyArMzEsNyBAQAogICAg
ICAgICAgICAgYXNzZXJ0X3RydWUoY3Vyc29yIGluc3RhbmNlb2YgSURCQ3Vyc29yLCAiY3Vyc29y
IGV4aXN0cyIpOwogCiAgICAgICAgICAgICBlLnRhcmdldC50cmFuc2FjdGlvbi5hYm9ydCgpOwot
ICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygiVHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yIiwgZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiVHJhbnNhY3Rpb25JbmFj
dGl2ZUVycm9yIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgY3Vyc29yLmNvbnRpbnVl
KCk7CiAgICAgICAgICAgICB9LCAiQ2FsbGluZyBjb250aW51ZSgpIHNob3VsZCB0aHJvd3MgYW4g
ZXhjZXB0aW9uIFRyYW5zYWN0aW9uSW5hY3RpdmVFcnJvciB3aGVuIHRoZSB0cmFuc2FjdGlvbiBp
cyBub3QgYWN0aXZlLiIpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
SW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2NvbnRpbnVlX29iamVjdHN0b3Jl
Ni5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dz
aW5nL2lkYmN1cnNvcl9jb250aW51ZV9vYmplY3RzdG9yZTYuaHRtbAppbmRleCBiNTY5NTU5Zjhl
OTY4ZWUyOTJkYThmY2M0MThiODcwYWFhMmEzYjJkLi5iZjQzNjM4Yjk3YWQwY2UwMDcxOWY4MGVk
NTkwZWUzZWRhYTRmODE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5k
ZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2NvbnRpbnVlX29iamVjdHN0b3JlNi5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93
c2luZy9pZGJjdXJzb3JfY29udGludWVfb2JqZWN0c3RvcmU2Lmh0bWwKQEAgLTI3LDcgKzI3LDcg
QEAKICAgICAgICAgICAgIGFzc2VydF90cnVlKGN1cnNvciBpbnN0YW5jZW9mIElEQkN1cnNvciwg
ImN1cnNvciBleGlzdHMiKTsKIAogICAgICAgICAgICAgZGIuZGVsZXRlT2JqZWN0U3RvcmUoInRl
c3QiKTsKLSAgICAgICAgICAgIGFzc2VydF90aHJvd3MoIkludmFsaWRTdGF0ZUVycm9yIiwgZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiSW52YWxpZFN0YXRlRXJy
b3IiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICBjdXJzb3IuY29udGludWUoKTsKICAg
ICAgICAgICAgIH0sICJJZiB0aGUgY3Vyc29yJ3Mgc291cmNlIG9yIGVmZmVjdGl2ZSBvYmplY3Qg
c3RvcmUgaGFzIGJlZW4gZGVsZXRlZCwgdGhlIGltcGxlbWVudGF0aW9uIE1VU1QgdGhyb3cgYSBE
T01FeGNlcHRpb24gb2YgdHlwZSBJbnZhbGlkU3RhdGVFcnJvciIpOwogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vy
c29yX2RlbGV0ZV9pbmRleDIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVk
REItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfZGVsZXRlX2luZGV4Mi5odG1sCmluZGV4IDEz
M2Y5MTI0NDg4OGY0YjA5NmY0NjNhMDQ4NDMzYzU0ODc1MzExOGMuLjEwYWQ4YmI1ZjVkNGFjNDk0
MDgxZDZjYzU0YTkwNDE5ZjdkNDJhM2EgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfZGVsZXRlX2luZGV4Mi5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93
c2luZy9pZGJjdXJzb3JfZGVsZXRlX2luZGV4Mi5odG1sCkBAIC0zMiw3ICszMiw3IEBACiAgICAg
ICAgICAgICB2YXIgY3Vyc29yID0gZS50YXJnZXQucmVzdWx0OwogCiAgICAgICAgICAgICBhc3Nl
cnRfdHJ1ZShjdXJzb3IgaW5zdGFuY2VvZiBJREJDdXJzb3IsICJjdXJzb3IgZXhpc3QiKTsKLSAg
ICAgICAgICAgIGFzc2VydF90aHJvd3MoJ1JlYWRPbmx5RXJyb3InLCBmdW5jdGlvbigpIHsgY3Vy
c29yLmRlbGV0ZSgpOyB9KTsKKyAgICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCdSZWFkT25s
eUVycm9yJywgZnVuY3Rpb24oKSB7IGN1cnNvci5kZWxldGUoKTsgfSk7CiAgICAgICAgICAgICB0
LmRvbmUoKTsKICAgICAgICAgfSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9kZWxldGVfaW5k
ZXgzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJv
d3NpbmcvaWRiY3Vyc29yX2RlbGV0ZV9pbmRleDMuaHRtbAppbmRleCBjMWMzMDQ0YjNmNWMwYmZj
ZjU1ZmNjMWIwNWMxMTQ5MmFhZWE0YWRmLi43YTZlYjIyNDJiMGJhZTAxNWJiNDJlN2I2NjhjMzAw
MzQ0NDBjNTc5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERC
LXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2RlbGV0ZV9pbmRleDMuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29y
X2RlbGV0ZV9pbmRleDMuaHRtbApAQCAtMzAsNyArMzAsNyBAQAogICAgICAgICB9KTsKIAogICAg
ICAgICBlLnRhcmdldC50cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gdC5zdGVwX2Z1bmMoZnVuY3Rp
b24oZSkgewotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygnVHJhbnNhY3Rpb25JbmFjdGl2ZUVy
cm9yJywgZnVuY3Rpb24oKSB7IHdpbmRvdy5jdXJzb3IuZGVsZXRlKCk7IH0pCisgICAgICAgICAg
ICBhc3NlcnRfdGhyb3dzX2RvbSgnVHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yJywgZnVuY3Rpb24o
KSB7IHdpbmRvdy5jdXJzb3IuZGVsZXRlKCk7IH0pCiAgICAgICAgICAgICB0LmRvbmUoKTsKICAg
ICAgICAgfSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0lu
ZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9kZWxldGVfaW5kZXg0Lmh0bWwgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vy
c29yX2RlbGV0ZV9pbmRleDQuaHRtbAppbmRleCBmZjZlNTc2NzQwOWQ3ZDZmY2Y3YmE4YjhmN2Vj
Mzk1MjM2NGI0ODg0Li4wMDlmODQwOWI0NTdhMmI3OWRmOGNiMjkyMDYyN2FhYWFiNWM3YzAyIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJv
d3NpbmcvaWRiY3Vyc29yX2RlbGV0ZV9pbmRleDQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2RlbGV0ZV9pbmRl
eDQuaHRtbApAQCAtMjcsNyArMjcsNyBAQAogICAgICAgICAgICAgYXNzZXJ0X3RydWUoY3Vyc29y
IGluc3RhbmNlb2YgSURCQ3Vyc29yLCAiY3Vyc29yIGV4aXN0Iik7CiAKICAgICAgICAgICAgIGRi
LmRlbGV0ZU9iamVjdFN0b3JlKCJzdG9yZSIpOwotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygi
SW52YWxpZFN0YXRlRXJyb3IiLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFzc2VydF90aHJv
d3NfZG9tKCJJbnZhbGlkU3RhdGVFcnJvciIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAg
IGN1cnNvci5kZWxldGUoKTsKICAgICAgICAgICAgIH0sICJJZiB0aGUgY3Vyc29yJ3Mgc291cmNl
IG9yIGVmZmVjdGl2ZSBvYmplY3Qgc3RvcmUgaGFzIGJlZW4gZGVsZXRlZCwgdGhlIGltcGxlbWVu
dGF0aW9uIE1VU1QgdGhyb3cgYSBET01FeGNlcHRpb24gb2YgdHlwZSBJbnZhbGlkU3RhdGVFcnJv
ciIpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXBy
aXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2RlbGV0ZV9pbmRleDUuaHRtbCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfZGVsZXRl
X2luZGV4NS5odG1sCmluZGV4IDRmYzBlMjk2N2Q2MmMzNzBkY2I2NGRjMDc1ZGE5MWRhZDVhZmIx
M2EuLjM2MDBhODJhZDQ1ODI5OTliNDIwODdhZWMzMzI0NDUxYTNkNDZmYmYgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJj
dXJzb3JfZGVsZXRlX2luZGV4NS5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9J
bmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfZGVsZXRlX2luZGV4NS5odG1sCkBA
IC0yOCw3ICsyOCw3IEBACiAgICAgICAgICAgICBhc3NlcnRfdHJ1ZShjdXJzb3IgaW5zdGFuY2Vv
ZiBJREJDdXJzb3IsICJjdXJzb3IgZXhpc3QiKTsKIAogICAgICAgICAgICAgY3Vyc29yLmNvbnRp
bnVlKCk7Ci0gICAgICAgICAgICBhc3NlcnRfdGhyb3dzKCJJbnZhbGlkU3RhdGVFcnJvciIsIGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkludmFsaWRTdGF0ZUVy
cm9yIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgY3Vyc29yLmRlbGV0ZSgpOwogICAg
ICAgICAgICAgfSk7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRl
eGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfZGVsZXRlX29iamVjdHN0b3JlMi5odG1s
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lk
YmN1cnNvcl9kZWxldGVfb2JqZWN0c3RvcmUyLmh0bWwKaW5kZXggY2M1N2U5OWY2OTVkNjlmNjlh
NDQyODI3YzZjNjU3OGE2YzI1MzMzYS4uNzc1OWM3MmU5MTY5YmE5YjhjZjM0NDZmOTE2ODA1MDc3
OTFjM2NkMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1w
cml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9kZWxldGVfb2JqZWN0c3RvcmUyLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1
cnNvcl9kZWxldGVfb2JqZWN0c3RvcmUyLmh0bWwKQEAgLTMwLDcgKzMwLDcgQEAKICAgICAgICAg
ICAgIHZhciBjdXJzb3IgPSBlLnRhcmdldC5yZXN1bHQ7CiAKICAgICAgICAgICAgIGFzc2VydF90
cnVlKGN1cnNvciAhPSBudWxsLCAiY3Vyc29yIGV4aXN0Iik7Ci0gICAgICAgICAgICBhc3NlcnRf
dGhyb3dzKCdSZWFkT25seUVycm9yJywgZnVuY3Rpb24oKSB7IGN1cnNvci5kZWxldGUoKTsgfSk7
CisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgnUmVhZE9ubHlFcnJvcicsIGZ1bmN0aW9u
KCkgeyBjdXJzb3IuZGVsZXRlKCk7IH0pOwogICAgICAgICAgICAgdC5kb25lKCk7CiAgICAgICAg
IH0pOwogICAgIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVk
REItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfZGVsZXRlX29iamVjdHN0b3JlMy5odG1sIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1
cnNvcl9kZWxldGVfb2JqZWN0c3RvcmUzLmh0bWwKaW5kZXggYjJmZDgyMDFhZGMzMDI4OWY4NjA4
NTZjZTllYTUzMzhiNzJjZDJmOS4uZjgyNWI4YTQxMmVkYzhkZmEwZTY4NzM5MTBjYzg2ZjQ4ZGE4
ZjczMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2
YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9kZWxldGVfb2JqZWN0c3RvcmUzLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNv
cl9kZWxldGVfb2JqZWN0c3RvcmUzLmh0bWwKQEAgLTI5LDcgKzI5LDcgQEAKICAgICAgICAgfSk7
CiAKICAgICAgICAgZS50YXJnZXQudHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IHQuc3RlcF9mdW5j
KGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIGFzc2VydF90aHJvd3MoJ1RyYW5zYWN0aW9uSW5h
Y3RpdmVFcnJvcicsIGZ1bmN0aW9uKCkgeyB3aW5kb3cuY3Vyc29yLmRlbGV0ZSgpOyB9KQorICAg
ICAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oJ1RyYW5zYWN0aW9uSW5hY3RpdmVFcnJvcicsIGZ1
bmN0aW9uKCkgeyB3aW5kb3cuY3Vyc29yLmRlbGV0ZSgpOyB9KQogICAgICAgICAgICAgdC5kb25l
KCk7CiAgICAgICAgIH0pOwogICAgIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfZGVsZXRlX29iamVjdHN0
b3JlNC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJy
b3dzaW5nL2lkYmN1cnNvcl9kZWxldGVfb2JqZWN0c3RvcmU0Lmh0bWwKaW5kZXggYjk3NzVjOGYx
NjYzMmEzYzM2YWFiMjZhMTliYTk3ZGQ3NjIzNDc5YS4uMTdiMThkMGFmNTE1OWIyYmUxZWVmYWNh
YTczMTY1OWEwMzVhOTI4MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0lu
ZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9kZWxldGVfb2JqZWN0c3RvcmU0Lmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dz
aW5nL2lkYmN1cnNvcl9kZWxldGVfb2JqZWN0c3RvcmU0Lmh0bWwKQEAgLTI2LDcgKzI2LDcgQEAK
ICAgICAgICAgICAgIGFzc2VydF90cnVlKGN1cnNvciBpbnN0YW5jZW9mIElEQkN1cnNvciwgImN1
cnNvciBleGlzdCIpOwogCiAgICAgICAgICAgICBkYi5kZWxldGVPYmplY3RTdG9yZSgic3RvcmUi
KTsKLSAgICAgICAgICAgIGFzc2VydF90aHJvd3MoIkludmFsaWRTdGF0ZUVycm9yIiwgZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiSW52YWxpZFN0YXRlRXJyb3Ii
LCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICBjdXJzb3IuZGVsZXRlKCk7CiAgICAgICAg
ICAgICB9LCAiSWYgdGhlIGN1cnNvcidzIHNvdXJjZSBvciBlZmZlY3RpdmUgb2JqZWN0IHN0b3Jl
IGhhcyBiZWVuIGRlbGV0ZWQsIHRoZSBpbXBsZW1lbnRhdGlvbiBNVVNUIHRocm93IGEgRE9NRXhj
ZXB0aW9uIG9mIHR5cGUgSW52YWxpZFN0YXRlRXJyb3IiKTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9k
ZWxldGVfb2JqZWN0c3RvcmU1Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhl
ZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2RlbGV0ZV9vYmplY3RzdG9yZTUuaHRtbApp
bmRleCA3N2ZhNWYyMzNjZWVmYmVkNDRhOGMxMGVjZWZlOGIwMDVlMjExODlmLi5kZDgyODZmMDhk
MzdjNDg1MTZiNzRjNDY3N2ExZDhkNDk2YTdjNGMxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2RlbGV0ZV9v
YmplY3RzdG9yZTUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERC
LXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2RlbGV0ZV9vYmplY3RzdG9yZTUuaHRtbApAQCAt
MzAsNyArMzAsNyBAQAogICAgICAgICAgICAgYXNzZXJ0X3RydWUoY3Vyc29yIGluc3RhbmNlb2Yg
SURCQ3Vyc29yLCAiY3Vyc29yIGV4aXN0Iik7CiAKICAgICAgICAgICAgIGN1cnNvci5jb250aW51
ZSgpOwotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygiSW52YWxpZFN0YXRlRXJyb3IiLCBmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlkU3RhdGVFcnJv
ciIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgIGN1cnNvci5kZWxldGUoKTsKICAgICAg
ICAgICAgIH0pOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhl
ZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX3VwZGF0ZV9pbmRleDIuaHRtbCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3Jf
dXBkYXRlX2luZGV4Mi5odG1sCmluZGV4IDdkMDAwMWNiYjkxODk3YjQ2MWZhNDBjNGZmYzlmOWE5
ZjUzNjIyNjcuLmEyYzIwNjRjZmIzNzQ2YjBkMWI5MzQxOTQyOGM5ZmYzMGQwMTFiNTUgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2lu
Zy9pZGJjdXJzb3JfdXBkYXRlX2luZGV4Mi5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfdXBkYXRlX2luZGV4Mi5o
dG1sCkBAIC0zMCw3ICszMCw3IEBACiAKICAgICAgICAgY3Vyc29yX3JxLm9uc3VjY2VzcyA9IHQu
c3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgIHZhciBjdXJzb3IgPSBlLnRhcmdl
dC5yZXN1bHQ7Ci0gICAgICAgICAgICBhc3NlcnRfdGhyb3dzKCdSZWFkT25seUVycm9yJywgZnVu
Y3Rpb24oKSB7IGN1cnNvci51cGRhdGUoY3Vyc29yLnZhbHVlKTsgfSk7CisgICAgICAgICAgICBh
c3NlcnRfdGhyb3dzX2RvbSgnUmVhZE9ubHlFcnJvcicsIGZ1bmN0aW9uKCkgeyBjdXJzb3IudXBk
YXRlKGN1cnNvci52YWx1ZSk7IH0pOwogICAgICAgICAgICAgdC5kb25lKCk7CiAgICAgICAgIH0p
OwogICAgIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREIt
cHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfdXBkYXRlX2luZGV4My5odG1sIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl91cGRh
dGVfaW5kZXgzLmh0bWwKaW5kZXggMGRlNjZjYmM2YzMwN2RmM2Y3MWQ4N2UzMzRiMGU0MjYwZGEw
NzE3OC4uNTRmZDIyODdiYTZjYjgyOTNkZWY0ODI1ZDVhN2I3NGFmODE2M2Q4ZCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lk
YmN1cnNvcl91cGRhdGVfaW5kZXgzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl91cGRhdGVfaW5kZXgzLmh0bWwK
QEAgLTMxLDcgKzMxLDcgQEAKICAgICAgICAgfSk7CiAKICAgICAgICAgZS50YXJnZXQudHJhbnNh
Y3Rpb24ub25jb21wbGV0ZSA9IHQuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAg
IGFzc2VydF90aHJvd3MoJ1RyYW5zYWN0aW9uSW5hY3RpdmVFcnJvcicsIGZ1bmN0aW9uKCkgeyB3
aW5kb3cuY3Vyc29yLnVwZGF0ZSh3aW5kb3cucmVjb3JkKTsgfSkKKyAgICAgICAgICAgIGFzc2Vy
dF90aHJvd3NfZG9tKCdUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3InLCBmdW5jdGlvbigpIHsgd2lu
ZG93LmN1cnNvci51cGRhdGUod2luZG93LnJlY29yZCk7IH0pCiAgICAgICAgICAgICB0LmRvbmUo
KTsKICAgICAgICAgfSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl91cGRhdGVfaW5kZXg0Lmh0
bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Npbmcv
aWRiY3Vyc29yX3VwZGF0ZV9pbmRleDQuaHRtbAppbmRleCAyYWQyOTQ1OGNkNzg5N2ZkNGFkZDhj
YzViNDNkZmJjOTdiNzg3ZWRmLi5kMWYxN2QyYzgzNzE2MDdhYTg4YTE1ODJmNmFjNzk5YTBmMjIy
MTIyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZh
dGUtYnJvd3NpbmcvaWRiY3Vyc29yX3VwZGF0ZV9pbmRleDQuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX3VwZGF0
ZV9pbmRleDQuaHRtbApAQCAtMjgsNyArMjgsNyBAQAogCiAgICAgICAgICAgICBkYi5kZWxldGVP
YmplY3RTdG9yZSgic3RvcmUiKTsKICAgICAgICAgICAgIGN1cnNvci52YWx1ZS5pS2V5ICs9ICJf
dXBkYXRlZCI7Ci0gICAgICAgICAgICBhc3NlcnRfdGhyb3dzKCJJbnZhbGlkU3RhdGVFcnJvciIs
IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkludmFsaWRTdGF0
ZUVycm9yIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgY3Vyc29yLnVwZGF0ZShjdXJz
b3IudmFsdWUpOwogICAgICAgICAgICAgfSwgIklmIHRoZSBjdXJzb3IncyBzb3VyY2Ugb3IgZWZm
ZWN0aXZlIG9iamVjdCBzdG9yZSBoYXMgYmVlbiBkZWxldGVkLCB0aGUgaW1wbGVtZW50YXRpb24g
TVVTVCB0aHJvdyBhIERPTUV4Y2VwdGlvbiBvZiB0eXBlIEludmFsaWRTdGF0ZUVycm9yIik7CiAK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1i
cm93c2luZy9pZGJjdXJzb3JfdXBkYXRlX2luZGV4NS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl91cGRhdGVfaW5kZXg1
Lmh0bWwKaW5kZXggYzgyNTNlNTRiMTEwNzVmNzI1NDYxMTc0NWRkYTdkNGUyNmFlMDk2MS4uZmQ0
ZjI4ZmM2NzczYjYyMjBhMjg3NjA5ZDBiMzg2OTdiY2ZkYjI5MyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl91
cGRhdGVfaW5kZXg1Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWRE
Qi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl91cGRhdGVfaW5kZXg1Lmh0bWwKQEAgLTM1LDcg
KzM1LDcgQEAKIAogICAgICAgICAgICAgdmFyIHJlY29yZCA9IGN1cnNvci52YWx1ZTsKICAgICAg
ICAgICAgIHJlY29yZC5kYXRhID0gZG9jdW1lbnQ7Ci0gICAgICAgICAgICBhc3NlcnRfdGhyb3dz
KCdEYXRhQ2xvbmVFcnJvcicsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYXNzZXJ0X3Rocm93
c19kb20oJ0RhdGFDbG9uZUVycm9yJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgY3Vy
c29yLnVwZGF0ZShyZWNvcmQpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB0LmRvbmUo
KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0
ZS1icm93c2luZy9pZGJjdXJzb3JfdXBkYXRlX2luZGV4Ni5odG1sIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl91cGRhdGVfaW5k
ZXg2Lmh0bWwKaW5kZXggZTIyOGQ3OWIzZjU5ZDlmNmU0NDlhNjg4NTZlN2RjMzExOGVkMGUxNS4u
ZWQ3Mjk4YTNiY2U0MmUzOTMwNWZlNDA2ZjM5OTMwNGRhMmYxOGY1OSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNv
cl91cGRhdGVfaW5kZXg2Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4
ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl91cGRhdGVfaW5kZXg2Lmh0bWwKQEAgLTMz
LDcgKzMzLDcgQEAKICAgICAgICAgICAgIHZhciBjdXJzb3IgPSBlLnRhcmdldC5yZXN1bHQ7CiAg
ICAgICAgICAgICBhc3NlcnRfdHJ1ZShjdXJzb3IgaW5zdGFuY2VvZiBJREJDdXJzb3IpOwogCi0g
ICAgICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7IGN1
cnNvci51cGRhdGUoKTsgfSk7CisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJv
ciwgZnVuY3Rpb24oKSB7IGN1cnNvci51cGRhdGUoKTsgfSk7CiAgICAgICAgICAgICB0LmRvbmUo
KTsKICAgICAgICAgfSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl91cGRhdGVfaW5kZXg3Lmh0
bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Npbmcv
aWRiY3Vyc29yX3VwZGF0ZV9pbmRleDcuaHRtbAppbmRleCA3MjcwZWJlZWM4N2Y5MjJjODU0MTI3
NTgyMDNkMTM0NzljZWFkODU5Li40N2FmOWRkMTAxZDI3YjZmMGFlNjIxMTI3NzZkYTJmNmJiOTRi
Y2ZiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZh
dGUtYnJvd3NpbmcvaWRiY3Vyc29yX3VwZGF0ZV9pbmRleDcuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX3VwZGF0
ZV9pbmRleDcuaHRtbApAQCAtMzMsNyArMzMsNyBAQAogICAgICAgICAgICAgdmFyIGN1cnNvciA9
IGUudGFyZ2V0LnJlc3VsdDsKICAgICAgICAgICAgIGFzc2VydF90cnVlKGN1cnNvciBpbnN0YW5j
ZW9mIElEQkN1cnNvcik7CiAKLSAgICAgICAgICAgIGFzc2VydF90aHJvd3MoJ0RhdGFFcnJvcics
IGZ1bmN0aW9uKCkgeyBjdXJzb3IudXBkYXRlKG51bGwpOyB9KTsKKyAgICAgICAgICAgIGFzc2Vy
dF90aHJvd3NfZG9tKCdEYXRhRXJyb3InLCBmdW5jdGlvbigpIHsgY3Vyc29yLnVwZGF0ZShudWxs
KTsgfSk7CiAgICAgICAgICAgICB0LmRvbmUoKTsKICAgICAgICAgfSk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5n
L2lkYmN1cnNvcl91cGRhdGVfb2JqZWN0c3RvcmUyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX3VwZGF0ZV9vYmplY3Rz
dG9yZTIuaHRtbAppbmRleCA2ZWE5MzU4YTc1OTY2NGUyNjg2Yzk1ZDEyODk2NTMxNWFlMjNkNTAy
Li44NTZjYjUwZDU0Yzg1ZDQ2NmI1MGY1ZmE4MDBlNDJhYWRlYjc3ZjNiIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vy
c29yX3VwZGF0ZV9vYmplY3RzdG9yZTIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX3VwZGF0ZV9vYmplY3RzdG9y
ZTIuaHRtbApAQCAtMjgsNyArMjgsNyBAQAogCiAgICAgICAgIGN1cnNvcl9ycS5vbnN1Y2Nlc3Mg
PSB0LnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICB2YXIgY3Vyc29yID0gZS50
YXJnZXQucmVzdWx0OwotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygnUmVhZE9ubHlFcnJvcics
IGZ1bmN0aW9uKCkgeyBjdXJzb3IudXBkYXRlKGN1cnNvci52YWx1ZSk7IH0pOworICAgICAgICAg
ICAgYXNzZXJ0X3Rocm93c19kb20oJ1JlYWRPbmx5RXJyb3InLCBmdW5jdGlvbigpIHsgY3Vyc29y
LnVwZGF0ZShjdXJzb3IudmFsdWUpOyB9KTsKICAgICAgICAgICAgIHQuZG9uZSgpOwogICAgICAg
ICB9KTsKICAgICB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhl
ZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX3VwZGF0ZV9vYmplY3RzdG9yZTMuaHRtbCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJj
dXJzb3JfdXBkYXRlX29iamVjdHN0b3JlMy5odG1sCmluZGV4IGQyODVkNzQ0MDEzZjIzYzQwMzk2
YTVhMDVmODQ5OGRiOWQwMDE4ZGQuLjQ3ZmEwYjdhYTUwZTY0OTEzMjBhNzAwOTk1NTljOGI0YWIw
Y2JkMjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJp
dmF0ZS1icm93c2luZy9pZGJjdXJzb3JfdXBkYXRlX29iamVjdHN0b3JlMy5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJz
b3JfdXBkYXRlX29iamVjdHN0b3JlMy5odG1sCkBAIC0zMCw3ICszMCw3IEBACiAgICAgICAgIH0p
OwogCiAgICAgICAgIGUudGFyZ2V0LnRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSB0LnN0ZXBfZnVu
YyhmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICBhc3NlcnRfdGhyb3dzKCdUcmFuc2FjdGlvbklu
YWN0aXZlRXJyb3InLCBmdW5jdGlvbigpIHsgd2luZG93LmN1cnNvci51cGRhdGUod2luZG93LnJl
Y29yZCk7IH0pCisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgnVHJhbnNhY3Rpb25JbmFj
dGl2ZUVycm9yJywgZnVuY3Rpb24oKSB7IHdpbmRvdy5jdXJzb3IudXBkYXRlKHdpbmRvdy5yZWNv
cmQpOyB9KQogICAgICAgICAgICAgdC5kb25lKCk7CiAgICAgICAgIH0pOwogICAgIH0KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2lu
Zy9pZGJjdXJzb3JfdXBkYXRlX29iamVjdHN0b3JlNS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl91cGRhdGVfb2JqZWN0
c3RvcmU1Lmh0bWwKaW5kZXggMzk2NGRiOTc4MDkyZGM3ZmVjYzk4Yzc5ZmI5MGE2OTk4YmY5ZTQ0
MS4uZDY5NWZmMWRjMzJmYTczOGFkNjYyZjg1NzdlMmQwYzYwNDU2ZTA5MSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1
cnNvcl91cGRhdGVfb2JqZWN0c3RvcmU1Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl91cGRhdGVfb2JqZWN0c3Rv
cmU1Lmh0bWwKQEAgLTI5LDcgKzI5LDcgQEAKIAogICAgICAgICAgICAgZGIuZGVsZXRlT2JqZWN0
U3RvcmUoInRlc3QiKTsKICAgICAgICAgICAgIGN1cnNvci52YWx1ZSArPSAiX3VwZGF0ZWQiOwot
ICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygiSW52YWxpZFN0YXRlRXJyb3IiLCBmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlkU3RhdGVFcnJvciIsIGZ1
bmN0aW9uKCkgewogICAgICAgICAgICAgICAgIGN1cnNvci51cGRhdGUoY3Vyc29yLnZhbHVlKTsK
ICAgICAgICAgICAgIH0sICJJZiB0aGUgY3Vyc29yJ3Mgc291cmNlIG9yIGVmZmVjdGl2ZSBvYmpl
Y3Qgc3RvcmUgaGFzIGJlZW4gZGVsZXRlZCwgdGhlIGltcGxlbWVudGF0aW9uIE1VU1QgdGhyb3cg
YSBET01FeGNlcHRpb24gb2YgdHlwZSBJbnZhbGlkU3RhdGVFcnJvciIpOwogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRi
Y3Vyc29yX3VwZGF0ZV9vYmplY3RzdG9yZTYuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfdXBkYXRlX29iamVjdHN0b3Jl
Ni5odG1sCmluZGV4IGQ0ODIzNGMyODg2NjhjNTI1NzBkY2JmOTI0NGZjNzI2ODBjNjI4YmIuLjdi
ZDQ3NmU5Mjc4NjdiZDFmYWVmMjRhYjEzYzg5MTY1NDEyY2E1ZTkgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3Jf
dXBkYXRlX29iamVjdHN0b3JlNi5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9J
bmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfdXBkYXRlX29iamVjdHN0b3JlNi5o
dG1sCkBAIC0zMyw3ICszMyw3IEBACiAKICAgICAgICAgICAgIHZhciByZWNvcmQgPSBjdXJzb3Iu
dmFsdWU7CiAgICAgICAgICAgICByZWNvcmQuZGF0YSA9IGRvY3VtZW50OwotICAgICAgICAgICAg
YXNzZXJ0X3Rocm93cygnRGF0YUNsb25lRXJyb3InLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
IGFzc2VydF90aHJvd3NfZG9tKCdEYXRhQ2xvbmVFcnJvcicsIGZ1bmN0aW9uKCkgewogICAgICAg
ICAgICAgICAgIGN1cnNvci51cGRhdGUocmVjb3JkKTsKICAgICAgICAgICAgIH0pOwogICAgICAg
ICAgICAgdC5kb25lKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5k
ZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX3VwZGF0ZV9vYmplY3RzdG9yZTcuaHRt
bCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9p
ZGJjdXJzb3JfdXBkYXRlX29iamVjdHN0b3JlNy5odG1sCmluZGV4IGRiOTgwNjNlMDk5N2I0YzIz
NjdiMjNkNGJjMmRhZTljZjEyNTU3YzguLjRhMDAzY2FiNTI4NThjMWQ1NWExZmEyZWFkMTg3ZmY3
MzdkNDgzZDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREIt
cHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfdXBkYXRlX29iamVjdHN0b3JlNy5odG1sCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJj
dXJzb3JfdXBkYXRlX29iamVjdHN0b3JlNy5odG1sCkBAIC0zMSw3ICszMSw3IEBACiAgICAgICAg
ICAgICB2YXIgY3Vyc29yID0gZS50YXJnZXQucmVzdWx0OwogICAgICAgICAgICAgYXNzZXJ0X3Ry
dWUoY3Vyc29yIGluc3RhbmNlb2YgSURCQ3Vyc29yKTsKIAotICAgICAgICAgICAgYXNzZXJ0X3Ro
cm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgeyBjdXJzb3IudXBkYXRlKCk7IH0pOwor
ICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeyBjdXJz
b3IudXBkYXRlKCk7IH0pOwogICAgICAgICAgICAgdC5kb25lKCk7CiAgICAgICAgIH0pOwogICAg
IH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0
ZS1icm93c2luZy9pZGJjdXJzb3JfdXBkYXRlX29iamVjdHN0b3JlOC5odG1sIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl91cGRh
dGVfb2JqZWN0c3RvcmU4Lmh0bWwKaW5kZXggOTQ4YzU0OTE2OWIwNTI4MjVlOGVlNmM2NjMxNjlm
OTk0OTBlY2YwMS4uZGEzNmRkZTg5MmJmYzJlZDc2N2EwODg3MjE4MzhjNjhiMjYxYTMzYSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dz
aW5nL2lkYmN1cnNvcl91cGRhdGVfb2JqZWN0c3RvcmU4Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl91cGRhdGVf
b2JqZWN0c3RvcmU4Lmh0bWwKQEAgLTMxLDcgKzMxLDcgQEAKICAgICAgICAgICAgIHZhciBjdXJz
b3IgPSBlLnRhcmdldC5yZXN1bHQ7CiAgICAgICAgICAgICBhc3NlcnRfdHJ1ZShjdXJzb3IgaW5z
dGFuY2VvZiBJREJDdXJzb3IpOwogCi0gICAgICAgICAgICBhc3NlcnRfdGhyb3dzKCdEYXRhRXJy
b3InLCBmdW5jdGlvbigpIHsgY3Vyc29yLnVwZGF0ZShudWxsKTsgfSk7CisgICAgICAgICAgICBh
c3NlcnRfdGhyb3dzX2RvbSgnRGF0YUVycm9yJywgZnVuY3Rpb24oKSB7IGN1cnNvci51cGRhdGUo
bnVsbCk7IH0pOwogICAgICAgICAgICAgdC5kb25lKCk7CiAgICAgICAgIH0pOwogICAgIH0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93
c2luZy9pZGJkYXRhYmFzZV9jcmVhdGVPYmplY3RTdG9yZTExLmh0bWwgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiZGF0YWJhc2VfY3JlYXRl
T2JqZWN0U3RvcmUxMS5odG1sCmluZGV4IGIyZTIzM2E2ZTY2ZTE3ODAxNTk4NmIzNmQyOTU3ZTEz
MGU1MWNmNTUuLjE3MDdmODE2NjdkYmYwMzAzNTk3YzBlZTc3ZjYwNjgxMjUyMTZlYTMgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2lu
Zy9pZGJkYXRhYmFzZV9jcmVhdGVPYmplY3RTdG9yZTExLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmRhdGFiYXNlX2NyZWF0
ZU9iamVjdFN0b3JlMTEuaHRtbApAQCAtMTQsNyArMTQsNyBAQCB2YXIgdCA9IGFzeW5jX3Rlc3Qo
KSwKIG9wZW5fcnEub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24gKGUpIHsKICAgICB2YXIgZGIg
PSBlLnRhcmdldC5yZXN1bHQ7CiAgICAgZGIuY3JlYXRlT2JqZWN0U3RvcmUoInN0b3JlIik7Ci0g
ICAgYXNzZXJ0X3Rocm93cygiQ29uc3RyYWludEVycm9yIiwgZnVuY3Rpb24oKXsKKyAgICBhc3Nl
cnRfdGhyb3dzX2RvbSgiQ29uc3RyYWludEVycm9yIiwgZnVuY3Rpb24oKXsKICAgICAgICAgZGIu
Y3JlYXRlT2JqZWN0U3RvcmUoInN0b3JlIiwgewogICAgICAgICAgICAga2V5UGF0aDogImtleTEi
LAogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRl
eGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJkYXRhYmFzZV9jcmVhdGVPYmplY3RTdG9yZTMuaHRt
bCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9p
ZGJkYXRhYmFzZV9jcmVhdGVPYmplY3RTdG9yZTMuaHRtbAppbmRleCBhZDEwZTkwZDhiOWViOTI0
ZTA0NTU2MzA3NTdkM2QxZDA5MjdkMjJkLi44NjY1MDk0MjZiYmVlZWJkMDgzNjY4NDkwODA1MjIy
NGJkYWE4NWZiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERC
LXByaXZhdGUtYnJvd3NpbmcvaWRiZGF0YWJhc2VfY3JlYXRlT2JqZWN0U3RvcmUzLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lk
YmRhdGFiYXNlX2NyZWF0ZU9iamVjdFN0b3JlMy5odG1sCkBAIC0xMyw3ICsxMyw3IEBAIHZhciB0
ID0gYXN5bmNfdGVzdCgpLAogb3Blbl9ycS5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbigpIHt9
CiBvcGVuX3JxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChlKSB7CiAgICAgdmFyIGRiID0gZS50YXJn
ZXQucmVzdWx0Ci0gICAgYXNzZXJ0X3Rocm93cygKKyAgICBhc3NlcnRfdGhyb3dzX2RvbSgKICAg
ICAgICAgJ0ludmFsaWRTdGF0ZUVycm9yJywKICAgICAgICAgZnVuY3Rpb24oKSB7IGRiLmNyZWF0
ZU9iamVjdFN0b3JlKCdmYWlscycpIH0pCiAgICAgdC5kb25lKCk7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiZGF0YWJh
c2VfY3JlYXRlT2JqZWN0U3RvcmU0Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5k
ZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiZGF0YWJhc2VfY3JlYXRlT2JqZWN0U3RvcmU0Lmh0
bWwKaW5kZXggYmJjN2ZmZWY1YzAyZDYyZTkxZmM3MDVkNGExZTliMWE1ZDUzN2YxZS4uNGNkNjk5
OTdiNTBhNDljYjAwYTJjOGQ4MDFiOWM3NDEyNGQzYTBiMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmRhdGFiYXNlX2Ny
ZWF0ZU9iamVjdFN0b3JlNC5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRl
eGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJkYXRhYmFzZV9jcmVhdGVPYmplY3RTdG9yZTQuaHRt
bApAQCAtMTMsNyArMTMsNyBAQCB2YXIgdCA9IGFzeW5jX3Rlc3QoKSwKIG9wZW5fcnEub251cGdy
YWRlbmVlZGVkID0gZnVuY3Rpb24oZSkgewogICAgIHZhciBkYiA9IGUudGFyZ2V0LnJlc3VsdAog
ICAgIGRiLmNyZWF0ZU9iamVjdFN0b3JlKCJkdXBlIikKLSAgICBhc3NlcnRfdGhyb3dzKAorICAg
IGFzc2VydF90aHJvd3NfZG9tKAogICAgICAgICAnQ29uc3RyYWludEVycm9yJywKICAgICAgICAg
ZnVuY3Rpb24oKSB7IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCJkdXBlIikgfSkKIApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lk
YmRhdGFiYXNlX2NyZWF0ZU9iamVjdFN0b3JlNi5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmRhdGFiYXNlX2NyZWF0ZU9iamVjdFN0
b3JlNi5odG1sCmluZGV4IDFlM2Y0MDA4OTgxOTNmMmQ0NTU3YzQ3ZjlkNTBkZGI4OTRlNDhlZmQu
LjY0Y2YxOTc3MDAzN2M1YzUyNTM1ODVmOTJjNWVhMTkwYmNkZjk5ZTggMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJkYXRh
YmFzZV9jcmVhdGVPYmplY3RTdG9yZTYuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiZGF0YWJhc2VfY3JlYXRlT2JqZWN0U3Rv
cmU2Lmh0bWwKQEAgLTEzLDExICsxMywxMSBAQCB2YXIgdCA9IGFzeW5jX3Rlc3QoKSwKIG9wZW5f
cnEub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZSkgewogICAgIHZhciBkYiA9IGUudGFyZ2V0
LnJlc3VsdAogCi0gICAgYXNzZXJ0X3Rocm93cygnU3ludGF4RXJyb3InLCBmdW5jdGlvbigpIHsK
KyAgICBhc3NlcnRfdGhyb3dzX2RvbSgnU3ludGF4RXJyb3InLCBmdW5jdGlvbigpIHsKICAgICAg
ICAgICAgIGRiLmNyZWF0ZU9iamVjdFN0b3JlKCJpbnZhbGlka2V5cGF0aCIsIHsga2V5UGF0aDog
IkludmFsaWQgS2V5cGF0aCIgfSkKICAgICAgICAgfSkKIAotICAgIGFzc2VydF90aHJvd3MoJ1N5
bnRheEVycm9yJywgZnVuY3Rpb24oKSB7CisgICAgYXNzZXJ0X3Rocm93c19kb20oJ1N5bnRheEVy
cm9yJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICBkYi5jcmVhdGVPYmplY3RTdG9yZSgiaW52
YWxpZGtleXBhdGgiLCB7IGF1dG9JbmNyZW1lbnQ6IHRydWUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleVBhdGg6ICJJbnZhbGlkIEtleXBh
dGgiIH0pCiAgICAgICAgIH0pCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
SW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiZGF0YWJhc2VfY3JlYXRlT2JqZWN0U3RvcmU5
LWludmFsaWRwYXJhbWV0ZXJzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhl
ZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiZGF0YWJhc2VfY3JlYXRlT2JqZWN0U3RvcmU5LWludmFs
aWRwYXJhbWV0ZXJzLmh0bWwKaW5kZXggYjY3ZjFlZjFiYzdhODViYTcwMjZmYzdhYjhjY2RjN2I3
YjIwMWYzZS4uMDRiNTlmZmU1NzIyYzkxNmE5Yzk3NjYxMzc2MTI2NjRiZGM5YWJiNyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5n
L2lkYmRhdGFiYXNlX2NyZWF0ZU9iamVjdFN0b3JlOS1pbnZhbGlkcGFyYW1ldGVycy5odG1sCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9p
ZGJkYXRhYmFzZV9jcmVhdGVPYmplY3RTdG9yZTktaW52YWxpZHBhcmFtZXRlcnMuaHRtbApAQCAt
MTEsNyArMTEsNyBAQAogICAgICAgICB2YXIgdCA9IGFzeW5jX3Rlc3QoZG9jdW1lbnQudGl0bGUg
KyAiIC0gIiArIGRlc2MpOwogCiAgICAgICAgIGNyZWF0ZWRiKHQpLm9udXBncmFkZW5lZWRlZCA9
IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIGFzc2VydF90aHJvd3MoZXhjZXB0aW9uLCBmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKGV4Y2VwdGlvbiwgZnVuY3Rp
b24oKSB7CiAgICAgICAgICAgICAgICAgZS50YXJnZXQucmVzdWx0LmNyZWF0ZU9iamVjdFN0b3Jl
KCJzdG9yZSIsIHBhcmFtcyk7CiAgICAgICAgICAgICB9KTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmRhdGFiYXNl
X2RlbGV0ZU9iamVjdFN0b3JlMi5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4
ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmRhdGFiYXNlX2RlbGV0ZU9iamVjdFN0b3JlMi5odG1s
CmluZGV4IGU0YTg3ZWNiOWQwZTkxYjYzNWI0ZTZjMDY4MzllMDUxOWJmZTBhYzUuLjhjMGZmZDg1
NDBhMGVlM2E3NmMyZGZjMmIyNDRjZDVjNzNkYWY4OWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJkYXRhYmFzZV9kZWxl
dGVPYmplY3RTdG9yZTIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhl
ZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiZGF0YWJhc2VfZGVsZXRlT2JqZWN0U3RvcmUyLmh0bWwK
QEAgLTE3LDcgKzE3LDcgQEAgb3Blbl9ycS5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihlKQog
CiAgICAgZS50YXJnZXQudHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IHQuc3RlcF9mdW5jKGZ1bmN0
aW9uIChlKQogICAgIHsKLSAgICAgICAgYXNzZXJ0X3Rocm93cygnSW52YWxpZFN0YXRlRXJyb3In
LAorICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgnSW52YWxpZFN0YXRlRXJyb3InLAogICAgICAg
ICAgICAgZnVuY3Rpb24oKSB7IGRiLmRlbGV0ZU9iamVjdFN0b3JlKCJkZWxldGVfb3V0c2lkZSIp
OyB9KTsKICAgICAgICAgdC5kb25lKCk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiZGF0YWJhc2VfZGVs
ZXRlT2JqZWN0U3RvcmUzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERC
LXByaXZhdGUtYnJvd3NpbmcvaWRiZGF0YWJhc2VfZGVsZXRlT2JqZWN0U3RvcmUzLmh0bWwKaW5k
ZXggMDQ5N2MxNjllNTlhZjEzMjE0YTcwNjllY2RmZjY5MDViYjkzMjk1NC4uOGM2NzA4YzEzZTJi
YmJjMGI1ZDlmYTBhMDE5N2VmNDc3MmMwNjhmYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmRhdGFiYXNlX2RlbGV0ZU9i
amVjdFN0b3JlMy5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREIt
cHJpdmF0ZS1icm93c2luZy9pZGJkYXRhYmFzZV9kZWxldGVPYmplY3RTdG9yZTMuaHRtbApAQCAt
MTMsNyArMTMsNyBAQCB2YXIgdCA9IGFzeW5jX3Rlc3QoKSwKIG9wZW5fcnEub251cGdyYWRlbmVl
ZGVkID0gZnVuY3Rpb24oZSkKIHsKICAgICB2YXIgZGIgPSBlLnRhcmdldC5yZXN1bHQ7Ci0gICAg
YXNzZXJ0X3Rocm93cygnTm90Rm91bmRFcnJvcicsCisgICAgYXNzZXJ0X3Rocm93c19kb20oJ05v
dEZvdW5kRXJyb3InLAogICAgICAgICBmdW5jdGlvbigpIHsgZGIuZGVsZXRlT2JqZWN0U3RvcmUo
J3doYXRldmVyJyk7IH0pOwogICAgIHQuZG9uZSgpOwogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmRhdGFiYXNlX2Rl
bGV0ZU9iamVjdFN0b3JlNC1ub3RfcmV1c2VkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiZGF0YWJhc2VfZGVsZXRlT2JqZWN0U3Rv
cmU0LW5vdF9yZXVzZWQuaHRtbAppbmRleCAzZGE3ODlhNjRmYTYzMDEwYTQ0NWYwMTNmNmZiZjUx
ZTE2MmE3NTRjLi44MTI4ODhlOWY1OTA0Zjk4ZDI3MjQ4ZTU0NmM4ZGNmODRjY2M1YjU2IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Np
bmcvaWRiZGF0YWJhc2VfZGVsZXRlT2JqZWN0U3RvcmU0LW5vdF9yZXVzZWQuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiZGF0
YWJhc2VfZGVsZXRlT2JqZWN0U3RvcmU0LW5vdF9yZXVzZWQuaHRtbApAQCAtMjksNyArMjksNyBA
QCBvcGVuX3JxLm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGUpIHsKICAgICBhc3NlcnRfZmFs
c2Uob2JqU3RvcmUyLmluZGV4TmFtZXMuY29udGFpbnMoImlkeCIpLCAiaW5kZXggZXhpc3Qgb24g
bmV3IG9ianN0b3JlIik7CiAgICAgYXNzZXJ0X2VxdWFscyhvYmpTdG9yZTIua2V5UGF0aCwgbnVs
bCwgImtleVBhdGgiKTsKIAotICAgIGFzc2VydF90aHJvd3MoIk5vdEZvdW5kRXJyb3IiLCBmdW5j
dGlvbigpIHsgb2JqU3RvcmUyLmluZGV4KCJpZHgiKTsgfSk7CisgICAgYXNzZXJ0X3Rocm93c19k
b20oIk5vdEZvdW5kRXJyb3IiLCBmdW5jdGlvbigpIHsgb2JqU3RvcmUyLmluZGV4KCJpZHgiKTsg
fSk7CiB9CiAKIG9wZW5fcnEub25zdWNjZXNzID0gZnVuY3Rpb24oZSkgewpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmRh
dGFiYXNlX3RyYW5zYWN0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhl
ZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiZGF0YWJhc2VfdHJhbnNhY3Rpb24uaHRtbAppbmRleCBj
OGMyYzlmNTk0YjQzMjRkNjFlZjQxMjBiNDYzNDk1NzU0MDM0NGIxLi41MGIwMTVmYjczMmU5NTgz
ZWJlMWY2YzFmMmI4ZThlNDUwNDdhMzQ4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiZGF0YWJhc2VfdHJhbnNhY3Rpb24u
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJv
d3NpbmcvaWRiZGF0YWJhc2VfdHJhbnNhY3Rpb24uaHRtbApAQCAtMTUsNyArMTUsNyBAQCBvcGVu
X3JxLm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKCkge307CiBvcGVuX3JxLm9uc3VjY2VzcyA9
IGZ1bmN0aW9uKGUpIHsKICAgICBkYiA9IGUudGFyZ2V0LnJlc3VsdDsKIAotICAgIGFzc2VydF90
aHJvd3MoJ05vdEZvdW5kRXJyb3InLCBmdW5jdGlvbigpIHsgZGIudHJhbnNhY3Rpb24oJ25vbi1l
eGlzdGluZycpOyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzX2RvbSgnTm90Rm91bmRFcnJvcicsIGZ1
bmN0aW9uKCkgeyBkYi50cmFuc2FjdGlvbignbm9uLWV4aXN0aW5nJyk7IH0pOwogICAgIHQuZG9u
ZSgpOwogfTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWRE
Qi1wcml2YXRlLWJyb3dzaW5nL2lkYmRhdGFiYXNlX3RyYW5zYWN0aW9uMy5odG1sIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmRhdGFiYXNl
X3RyYW5zYWN0aW9uMy5odG1sCmluZGV4IDEwODdhZWNjOGRlZWEwOGYyN2YzYWM1OWI2ZTRkNTRl
MDBjZjAzMGQuLjVhNGU3M2NkM2NhOGMzZjI2YmM1NGIzZmM0MjExNDljNDdjYTBmY2EgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2lu
Zy9pZGJkYXRhYmFzZV90cmFuc2FjdGlvbjMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiZGF0YWJhc2VfdHJhbnNhY3Rpb24z
Lmh0bWwKQEAgLTE4LDcgKzE4LDcgQEAKICAgICBvcGVuX3JxLm9uc3VjY2VzcyA9IGZ1bmN0aW9u
KGUpIHsKICAgICAgICAgZGIuY2xvc2UoKTsKIAotICAgICAgICBhc3NlcnRfdGhyb3dzKCdJbnZh
bGlkU3RhdGVFcnJvcicsCisgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCdJbnZhbGlkU3RhdGVF
cnJvcicsCiAgICAgICAgICAgICBmdW5jdGlvbigpIHsgZGIudHJhbnNhY3Rpb24oJ3Rlc3QnKTsg
fSk7CiAKICAgICAgICAgdC5kb25lKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiZGF0YWJhc2VfdHJhbnNhY3Rpb240
Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Np
bmcvaWRiZGF0YWJhc2VfdHJhbnNhY3Rpb240Lmh0bWwKaW5kZXggMjEyMGYwNzlkYmYwY2Q0Mjdk
OTdjMDE3MmViN2M0ZGVhZTc0ZDM2OC4uM2ZhYjQwZjNlZWM5ZWY2YWJiZGMxZDc0ZjhiY2U3YTBl
YjBhMDYxMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1w
cml2YXRlLWJyb3dzaW5nL2lkYmRhdGFiYXNlX3RyYW5zYWN0aW9uNC5odG1sCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJkYXRhYmFz
ZV90cmFuc2FjdGlvbjQuaHRtbApAQCAtMTYsNyArMTYsNyBAQAogICAgIH07CiAKICAgICBvcGVu
X3JxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgYXNzZXJ0X3Rocm93cyh7IG5h
bWU6ICdUeXBlRXJyb3InIH0sCisgICAgICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLAog
ICAgICAgICAgICAgZnVuY3Rpb24oKSB7IGRiLnRyYW5zYWN0aW9uKCd0ZXN0JywgJ3doYXRldmVy
Jyk7IH0pOwogCiAgICAgICAgIHQuZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmRhdGFiYXNlX3RyYW5zYWN0
aW9uNS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJy
b3dzaW5nL2lkYmRhdGFiYXNlX3RyYW5zYWN0aW9uNS5odG1sCmluZGV4IGNlZjZkMmE0MGU3YTg0
OWU5YTYxODg5ODU0N2UyMGY0Y2Y5NmZiMDIuLmQwZDI4OTI4MGVhZjk2OWRmYjZjYjY5OTI1MGU2
MjM5MWQ5ODUyNjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVk
REItcHJpdmF0ZS1icm93c2luZy9pZGJkYXRhYmFzZV90cmFuc2FjdGlvbjUuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiZGF0
YWJhc2VfdHJhbnNhY3Rpb241Lmh0bWwKQEAgLTE1LDcgKzE1LDcgQEAgdmFyIGRiLAogb3Blbl9y
cS5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbigpIHt9Owogb3Blbl9ycS5vbnN1Y2Nlc3MgPSBm
dW5jdGlvbihlKSB7CiAgICAgZGIgPSBlLnRhcmdldC5yZXN1bHQ7Ci0gICAgYXNzZXJ0X3Rocm93
cygnSW52YWxpZEFjY2Vzc0Vycm9yJywgZnVuY3Rpb24oKSB7IGRiLnRyYW5zYWN0aW9uKFtdKTsg
fSk7CisgICAgYXNzZXJ0X3Rocm93c19kb20oJ0ludmFsaWRBY2Nlc3NFcnJvcicsIGZ1bmN0aW9u
KCkgeyBkYi50cmFuc2FjdGlvbihbXSk7IH0pOwogICAgIHQuZG9uZSgpOwogfTsKIDwvc2NyaXB0
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRl
LWJyb3dzaW5nL2lkYmZhY3RvcnlfY21wMi5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmZhY3RvcnlfY21wMi5odG1sCmluZGV4IDg5
MzlkZDJkMzE0MzhkMDI5ZWYzNmJmNWU5NGUyNzI2M2MwNzk5ZWYuLmJlYzI4MTVkMDlhMjkxODEx
ZWI2OTQ4MDI4NGJhMjUxZDk4OTg2ZTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJmYWN0b3J5X2NtcDIuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRi
ZmFjdG9yeV9jbXAyLmh0bWwKQEAgLTksMzEgKzksMzEgQEAKIDxkaXYgaWQ9bG9nPjwvZGl2Pgog
PHNjcmlwdD4KICAgICB0ZXN0KCBmdW5jdGlvbigpIHsKLSAgICAgICAgYXNzZXJ0X3Rocm93cyhu
ZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgeworICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5
cGVFcnJvciwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICBpbmRleGVkREIuY21wKCk7CiAgICAg
ICAgIH0pOwogICAgIH0sICJJREJGYWN0b3J5LmNtcCgpIC0gbm8gYXJndW1lbnQiKTsKIAogICAg
IHRlc3QoIGZ1bmN0aW9uKCkgewotICAgICAgICBhc3NlcnRfdGhyb3dzKCJEYXRhRXJyb3IiLCBm
dW5jdGlvbigpIHsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkRhdGFFcnJvciIsIGZ1bmN0
aW9uKCkgewogICAgICAgICAgICAgaW5kZXhlZERCLmNtcChudWxsLCBudWxsKTsKICAgICAgICAg
fSk7Ci0gICAgICAgIGFzc2VydF90aHJvd3MoIkRhdGFFcnJvciIsIGZ1bmN0aW9uKCkgeworICAg
ICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiRGF0YUVycm9yIiwgZnVuY3Rpb24oKSB7CiAgICAgICAg
ICAgICBpbmRleGVkREIuY21wKDEsIG51bGwpOwogICAgICAgICB9KTsKLSAgICAgICAgYXNzZXJ0
X3Rocm93cygiRGF0YUVycm9yIiwgZnVuY3Rpb24oKSB7CisgICAgICAgIGFzc2VydF90aHJvd3Nf
ZG9tKCJEYXRhRXJyb3IiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgIGluZGV4ZWREQi5jbXAo
bnVsbCwgMSk7CiAgICAgICAgIH0pOwogICAgIH0sICJJREJGYWN0b3J5LmNtcCgpIC0gbnVsbCIp
OwogCiAgICAgdGVzdCggZnVuY3Rpb24oKSB7Ci0gICAgICAgIGFzc2VydF90aHJvd3MoIkRhdGFF
cnJvciIsIGZ1bmN0aW9uKCkgeworICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiRGF0YUVycm9y
IiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICBpbmRleGVkREIuY21wKE5hTiwgTmFOKTsKICAg
ICAgICAgfSk7Ci0gICAgICAgIGFzc2VydF90aHJvd3MoIkRhdGFFcnJvciIsIGZ1bmN0aW9uKCkg
eworICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiRGF0YUVycm9yIiwgZnVuY3Rpb24oKSB7CiAg
ICAgICAgICAgICBpbmRleGVkREIuY21wKDEsIE5hTik7CiAgICAgICAgIH0pOwotICAgICAgICBh
c3NlcnRfdGhyb3dzKCJEYXRhRXJyb3IiLCBmdW5jdGlvbigpIHsKKyAgICAgICAgYXNzZXJ0X3Ro
cm93c19kb20oIkRhdGFFcnJvciIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgaW5kZXhlZERC
LmNtcChOYU4sIDEpOwogICAgICAgICB9KTsKICAgICB9LCAiSURCRmFjdG9yeS5jbXAoKSAtIE5h
TiIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2
YXRlLWJyb3dzaW5nL2lkYmZhY3Rvcnlfb3BlbjkuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJmYWN0b3J5X29wZW45Lmh0bWwKaW5k
ZXggYmQ0NDdlMjQ3ZjdjZjE1ZWE5YmNhY2VkM2JmNTA1MDQ3ZDk5OGRjYS4uYjQxYTAzMzczYWJi
NmY1NzU3NmQ1NjM1M2YyMjlhMTU5NTA0ZThmYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmZhY3Rvcnlfb3BlbjkuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Np
bmcvaWRiZmFjdG9yeV9vcGVuOS5odG1sCkBAIC05LDcgKzksNyBAQCBmdW5jdGlvbiBzaG91bGRf
dGhyb3codmFsLCBuYW1lKSB7CiAgICAgICAgIG5hbWUgPSAoKHR5cGVvZiB2YWwgPT0gIm9iamVj
dCIgJiYgdmFsKSA/ICJvYmplY3QiIDogZm9ybWF0X3ZhbHVlKHZhbCkpCiAgICAgfQogICAgIHRl
c3QoZnVuY3Rpb24oKSB7Ci0gICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVu
Y3Rpb24oKSB7CisgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7
CiAgICAgICAgIHdpbmRvdy5pbmRleGVkREIub3BlbigndGVzdCcsIHZhbCk7CiAgICAgICB9KTsK
ICAgICB9LCAiQ2FsbGluZyBvcGVuKCkgd2l0aCB2ZXJzaW9uIGFyZ3VtZW50ICIgKyBuYW1lICsg
IiBzaG91bGQgdGhyb3cgVHlwZUVycm9yLiIpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiaW5kZXgtbXVsdGllbnRyeS1h
cnJheWtleXBhdGguaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJp
dmF0ZS1icm93c2luZy9pZGJpbmRleC1tdWx0aWVudHJ5LWFycmF5a2V5cGF0aC5odG1sCmluZGV4
IDdkZWRmYmY5YTgzYTU5NmU4Nzc3YTJiMDJlODU3YWNkMDdlMzgzYjQuLmY1MTA2YWZlMTJlYThi
YjAxMzQxZThmNWNmZjgzMTAwZDk2MGI2YWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJpbmRleC1tdWx0aWVudHJ5LWFy
cmF5a2V5cGF0aC5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREIt
cHJpdmF0ZS1icm93c2luZy9pZGJpbmRleC1tdWx0aWVudHJ5LWFycmF5a2V5cGF0aC5odG1sCkBA
IC0xMiw3ICsxMiw3IEBACiAgICAgY3JlYXRlZGIoYXN5bmNfdGVzdChkb2N1bWVudC50aXRsZSwg
e3RpbWVvdXQ6IDEwMDAwfSkpLm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGUpIHsKICAgICAg
ICAgdmFyIHN0b3JlID0gZS50YXJnZXQucmVzdWx0LmNyZWF0ZU9iamVjdFN0b3JlKCJzdG9yZSIp
OwogCi0gICAgICAgIGFzc2VydF90aHJvd3MoJ0ludmFsaWRBY2Nlc3NFcnJvcicsIGZ1bmN0aW9u
KCkgeworICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgnSW52YWxpZEFjY2Vzc0Vycm9yJywgZnVu
Y3Rpb24oKSB7CiAgICAgICAgICAgICBzdG9yZS5jcmVhdGVJbmRleCgnYWN0b3JzJywgWyduYW1l
J10sIHsgbXVsdGlFbnRyeTogdHJ1ZSB9KQogICAgICAgICB9KTsKIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmluZGV4
X2NvdW50NC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRl
LWJyb3dzaW5nL2lkYmluZGV4X2NvdW50NC5odG1sCmluZGV4IGU1OTQ4ZWM1ZGVmMDNmNDdhNDA1
MzJiNTA1ZGI5NmUxY2ExZjllZjguLjkxOWNmNWQ0ZmI3OTJjYjc0YjNjZWZkZWM0NWMxMTQwYzE5
NTgzOWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJp
dmF0ZS1icm93c2luZy9pZGJpbmRleF9jb3VudDQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiaW5kZXhfY291bnQ0Lmh0bWwK
QEAgLTI3LDcgKzI3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAub2JqZWN0U3RvcmUoInN0
b3JlIikKICAgICAgICAgICAgICAgICAgICAgICAuaW5kZXgoImluZGV4Iik7CiAKLSAgICAgICAg
YXNzZXJ0X3Rocm93cygiRGF0YUVycm9yIiwgZnVuY3Rpb24oKSB7CisgICAgICAgIGFzc2VydF90
aHJvd3NfZG9tKCJEYXRhRXJyb3IiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgIGluZGV4LmNv
dW50KE5hTik7CiAgICAgICAgIH0pOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiaW5kZXhfZ2V0NS5odG1sIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmluZGV4
X2dldDUuaHRtbAppbmRleCAwMTUyNDkyNjIyNGEwNjkzMmFlZjYxOGFkNTMxMzhlZjcyZjhmOWI0
Li5jZDA0M2Q5MTY2MmExMzhjNTYyN2M5OTZiNzcwNjFlZWFhMjMwNjY1IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiaW5k
ZXhfZ2V0NS5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJp
dmF0ZS1icm93c2luZy9pZGJpbmRleF9nZXQ1Lmh0bWwKQEAgLTE3LDcgKzE3LDcgQEAKIAogICAg
ICAgICB2YXIgaW5kZXggPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgidGVzdCIsIHsga2V5UGF0aDog
ImtleSIgfSkKICAgICAgICAgICAgICAgICAgICAgICAuY3JlYXRlSW5kZXgoImluZGV4IiwgImlu
ZGV4ZWRQcm9wZXJ0eSIpOwotICAgICAgICBhc3NlcnRfdGhyb3dzKCJEYXRhRXJyb3IiLGZ1bmN0
aW9uKCl7CisgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJEYXRhRXJyb3IiLGZ1bmN0aW9uKCl7
CiAgICAgICAgICAgICBpbmRleC5nZXQoTmFOKTsKICAgICAgICAgfSk7CiAgICAgICAgIHQuZG9u
ZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2
YXRlLWJyb3dzaW5nL2lkYmluZGV4X2dldDYuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJpbmRleF9nZXQ2Lmh0bWwKaW5kZXggYTVi
NzYzZWQ1ZTNkYjM3NjY5NDQ5MDBjMzY2ZGYxZjBhNTRjMzUxZC4uMTQ0Yjk2OTM1Y2ZkMDI4ZGRi
NGY5Y2ZlMzljY2FiNGRkZWE5YzIyOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmluZGV4X2dldDYuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiaW5k
ZXhfZ2V0Ni5odG1sCkBAIC0yMCw3ICsyMCw3IEBACiAgICAgICAgIHN0b3JlLmFkZCh7IGtleTog
MSwgaW5kZXhlZFByb3BlcnR5OiAiZGF0YSIgfSk7CiAgICAgICAgIHN0b3JlLmRlbGV0ZUluZGV4
KCJpbmRleCIpOwogCi0gICAgICAgIGFzc2VydF90aHJvd3MoIkludmFsaWRTdGF0ZUVycm9yIiwg
ZnVuY3Rpb24oKXsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkludmFsaWRTdGF0ZUVycm9y
IiwgZnVuY3Rpb24oKXsKICAgICAgICAgICAgIGluZGV4LmdldCgiZGF0YSIpOwogICAgICAgICB9
KTsKICAgICAgICAgdC5kb25lKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiaW5kZXhfZ2V0Ny5odG1sIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmluZGV4X2dl
dDcuaHRtbAppbmRleCA4OTczNWVhZDg0ZGY1ZjQxNTljNGEyM2U2NzNhNTIyNWMxMGNkZWY0Li4z
NWU2YTVkYTM4N2E3ZDdlZjVkYjNmNDgxYTJlN2FhMDU5MTUzZGQ3IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiaW5kZXhf
Z2V0Ny5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0
ZS1icm93c2luZy9pZGJpbmRleF9nZXQ3Lmh0bWwKQEAgLTIwLDcgKzIwLDcgQEAKIAogICAgICAg
ICBlLnRhcmdldC50cmFuc2FjdGlvbi5hYm9ydCgpOwogCi0gICAgICAgIGFzc2VydF90aHJvd3Mo
IkludmFsaWRTdGF0ZUVycm9yIiwgZnVuY3Rpb24oKXsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19k
b20oIkludmFsaWRTdGF0ZUVycm9yIiwgZnVuY3Rpb24oKXsKICAgICAgICAgICAgIGluZGV4Lmdl
dCgiZGF0YSIpOwogICAgICAgICB9KTsKICAgICAgICAgdC5kb25lKCk7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiaW5k
ZXhfZ2V0S2V5NS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2
YXRlLWJyb3dzaW5nL2lkYmluZGV4X2dldEtleTUuaHRtbAppbmRleCA4MTJjM2NkNDhkZDZhNjIz
NzIyYjZmY2RiOWM3ZjViMTQyYmY5Yzk0Li44ZWRhNTc5MDU4ZmMyZmFhNzQyYmQ2YTNjMGRjMTkx
NmQyOWI1MWU1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERC
LXByaXZhdGUtYnJvd3NpbmcvaWRiaW5kZXhfZ2V0S2V5NS5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJpbmRleF9nZXRLZXk1
Lmh0bWwKQEAgLTE3LDcgKzE3LDcgQEAKIAogICAgICAgICB2YXIgaW5kZXggPSBkYi5jcmVhdGVP
YmplY3RTdG9yZSgidGVzdCIsIHsga2V5UGF0aDogImtleSIgfSkKICAgICAgICAgICAgICAgICAg
ICAgICAuY3JlYXRlSW5kZXgoImluZGV4IiwgImluZGV4ZWRQcm9wZXJ0eSIpOwotICAgICAgICBh
c3NlcnRfdGhyb3dzKCJEYXRhRXJyb3IiLGZ1bmN0aW9uKCl7CisgICAgICAgIGFzc2VydF90aHJv
d3NfZG9tKCJEYXRhRXJyb3IiLGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICBpbmRleC5nZXRLZXko
TmFOKTsKICAgICAgICAgfSk7CiAgICAgICAgIHQuZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmluZGV4X2dl
dEtleTYuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1i
cm93c2luZy9pZGJpbmRleF9nZXRLZXk2Lmh0bWwKaW5kZXggZjBjOGU4ODA1ZTZlNmVjYWZlMjdh
YmNiNWJiZWVmNjZjZmI1Y2Q2OS4uMzZhN2Y3MTdiOTk3MmUyNzcxNzAxNzBjNjQ0NzUyMmI5MzE3
ZjI0OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2
YXRlLWJyb3dzaW5nL2lkYmluZGV4X2dldEtleTYuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiaW5kZXhfZ2V0S2V5Ni5odG1s
CkBAIC0yMCw3ICsyMCw3IEBACiAgICAgICAgIHN0b3JlLmFkZCh7IGtleTogMSwgaW5kZXhlZFBy
b3BlcnR5OiAiZGF0YSIgfSk7CiAgICAgICAgIHN0b3JlLmRlbGV0ZUluZGV4KCJpbmRleCIpOwog
Ci0gICAgICAgIGFzc2VydF90aHJvd3MoIkludmFsaWRTdGF0ZUVycm9yIiwgZnVuY3Rpb24oKXsK
KyAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkludmFsaWRTdGF0ZUVycm9yIiwgZnVuY3Rpb24o
KXsKICAgICAgICAgICAgIGluZGV4LmdldEtleSgiZGF0YSIpOwogICAgICAgICB9KTsKICAgICAg
ICAgdC5kb25lKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhl
ZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiaW5kZXhfZ2V0S2V5Ny5odG1sIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmluZGV4X2dldEtleTcu
aHRtbAppbmRleCAyZGUwODA3OTk3Yjc1MTJjZjRlOTYyMDYzNTI5NTA2NTBjNzU4OTE5Li5iNzBi
Mzg0ZjQ0ZTIyNjg1ZDM5ZTk2YWU2NGUyMGQwYzQ4NzdjYjI2IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiaW5kZXhfZ2V0
S2V5Ny5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0
ZS1icm93c2luZy9pZGJpbmRleF9nZXRLZXk3Lmh0bWwKQEAgLTIwLDcgKzIwLDcgQEAKIAogICAg
ICAgICBlLnRhcmdldC50cmFuc2FjdGlvbi5hYm9ydCgpOwogCi0gICAgICAgIGFzc2VydF90aHJv
d3MoIkludmFsaWRTdGF0ZUVycm9yIiwgZnVuY3Rpb24oKXsKKyAgICAgICAgYXNzZXJ0X3Rocm93
c19kb20oIkludmFsaWRTdGF0ZUVycm9yIiwgZnVuY3Rpb24oKXsKICAgICAgICAgICAgIGluZGV4
LmdldEtleSgiZGF0YSIpOwogICAgICAgICB9KTsKICAgICAgICAgdC5kb25lKCk7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Npbmcv
aWRiaW5kZXhfb3BlbkN1cnNvci5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4
ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmluZGV4X29wZW5DdXJzb3IuaHRtbAppbmRleCBmOWZi
NjhhNTE4M2NkM2ZkN2ZlYTUzYmQ2NDFmZDQ0NzhiNjgwNTg2Li5hM2IwZDAxOWRjY2RjMzhiZTM3
ODI2YTViZDZjNTkxM2M0NjkzZjQzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiaW5kZXhfb3BlbkN1cnNvci5odG1sCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9p
ZGJpbmRleF9vcGVuQ3Vyc29yLmh0bWwKQEAgLTIwLDcgKzIwLDcgQEAKICAgICAgICAgc3RvcmUu
YWRkKHsga2V5OiAxLCBpbmRleGVkUHJvcGVydHk6ICJkYXRhIiB9KTsKICAgICAgICAgc3RvcmUu
ZGVsZXRlSW5kZXgoImluZGV4Iik7CiAKLSAgICAgICAgYXNzZXJ0X3Rocm93cygiSW52YWxpZFN0
YXRlRXJyb3IiLCBmdW5jdGlvbigpeworICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiSW52YWxp
ZFN0YXRlRXJyb3IiLCBmdW5jdGlvbigpewogICAgICAgICAgICAgaW5kZXgub3BlbkN1cnNvcigp
OwogICAgICAgICB9KTsKICAgICAgICAgdC5kb25lKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiaW5kZXhfb3BlbkN1
cnNvcjIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1i
cm93c2luZy9pZGJpbmRleF9vcGVuQ3Vyc29yMi5odG1sCmluZGV4IDAxMzhhY2I1ZWZlNjlkNDI4
OTQzZmU3MDA4YjBiZDBhNTM0ODcwYjEuLjM1OWRjYTExYmFkMzE4NmZiYmUzYTcwYTU0YWRjYmEz
ZGM4YjdjMzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREIt
cHJpdmF0ZS1icm93c2luZy9pZGJpbmRleF9vcGVuQ3Vyc29yMi5odG1sCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJpbmRleF9vcGVu
Q3Vyc29yMi5odG1sCkBAIC0yMCw3ICsyMCw3IEBACiAKICAgICAgICAgZS50YXJnZXQudHJhbnNh
Y3Rpb24uYWJvcnQoKTsKIAotICAgICAgICBhc3NlcnRfdGhyb3dzKCJJbnZhbGlkU3RhdGVFcnJv
ciIsIGZ1bmN0aW9uKCl7CisgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlkU3RhdGVF
cnJvciIsIGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICBpbmRleC5vcGVuQ3Vyc29yKCk7CiAgICAg
ICAgIH0pOwogICAgICAgICB0LmRvbmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJpbmRleF9vcGVuS2V5Q3Vyc29y
Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Np
bmcvaWRiaW5kZXhfb3BlbktleUN1cnNvci5odG1sCmluZGV4IDc1NTVlMDY0ZmIyYTFhMjJjMTdh
OTVmODRiMTQxYmQ1NjlmOTQ0ZTUuLjhkZWE1ODE0YTliMzUwNGY2NGNjYjk5ZDkyZGZiODUxNjZi
ZGE2ZmEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJp
dmF0ZS1icm93c2luZy9pZGJpbmRleF9vcGVuS2V5Q3Vyc29yLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmluZGV4X29wZW5L
ZXlDdXJzb3IuaHRtbApAQCAtMTksNyArMTksNyBAQAogCiAgICAgICAgIHN0b3JlLmFkZCh7IGtl
eTogMSwgaW5kZXhlZFByb3BlcnR5OiAiZGF0YSIgfSk7CiAKLSAgICAgICAgYXNzZXJ0X3Rocm93
cygiRGF0YUVycm9yIiwgZnVuY3Rpb24oKXsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkRh
dGFFcnJvciIsIGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICBpbmRleC5vcGVuS2V5Q3Vyc29yKE5h
Tik7CiAgICAgICAgIH0pOwogICAgICAgICB0LmRvbmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJpbmRleF9vcGVu
S2V5Q3Vyc29yMi5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2
YXRlLWJyb3dzaW5nL2lkYmluZGV4X29wZW5LZXlDdXJzb3IyLmh0bWwKaW5kZXggZDYzMmQxOTFj
MDg1MDBiNTMwMmQ3NWQ2MTFjYjFkNWQwODdlYzFmYS4uZGFiYzE2ZTM1MTJkMDIwNzU4OWJhMDM1
ZGNhMjBiNDlhODkwZjNlOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0lu
ZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmluZGV4X29wZW5LZXlDdXJzb3IyLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lk
YmluZGV4X29wZW5LZXlDdXJzb3IyLmh0bWwKQEAgLTIwLDcgKzIwLDcgQEAKICAgICAgICAgc3Rv
cmUuYWRkKHsga2V5OiAxLCBpbmRleGVkUHJvcGVydHk6ICJkYXRhIiB9KTsKICAgICAgICAgc3Rv
cmUuZGVsZXRlSW5kZXgoImluZGV4Iik7CiAKLSAgICAgICAgYXNzZXJ0X3Rocm93cygiSW52YWxp
ZFN0YXRlRXJyb3IiLCBmdW5jdGlvbigpeworICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiSW52
YWxpZFN0YXRlRXJyb3IiLCBmdW5jdGlvbigpewogICAgICAgICAgICAgaW5kZXgub3BlbktleUN1
cnNvcigpOwogICAgICAgICB9KTsKICAgICAgICAgdC5kb25lKCk7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiaW5kZXhf
b3BlbktleUN1cnNvcjMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREIt
cHJpdmF0ZS1icm93c2luZy9pZGJpbmRleF9vcGVuS2V5Q3Vyc29yMy5odG1sCmluZGV4IDRhMmIy
ZjFhYmUxZmRjY2ZmYjA0OWYwM2U0OGFjZGQzZTVhMjE2ZDEuLjJmMTBjZGFhZTc5M2VhN2MzMDJk
MTIxODAyOTA4YjA2ZDg4OWE0YTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJpbmRleF9vcGVuS2V5Q3Vyc29yMy5odG1s
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2lu
Zy9pZGJpbmRleF9vcGVuS2V5Q3Vyc29yMy5odG1sCkBAIC0yMCw3ICsyMCw3IEBACiAKICAgICAg
ICAgZS50YXJnZXQudHJhbnNhY3Rpb24uYWJvcnQoKTsKIAotICAgICAgICBhc3NlcnRfdGhyb3dz
KCJJbnZhbGlkU3RhdGVFcnJvciIsIGZ1bmN0aW9uKCl7CisgICAgICAgIGFzc2VydF90aHJvd3Nf
ZG9tKCJJbnZhbGlkU3RhdGVFcnJvciIsIGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICBpbmRleC5v
cGVuS2V5Q3Vyc29yKCk7CiAgICAgICAgIH0pOwogICAgICAgICB0LmRvbmUoKTsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9p
ZGJrZXlyYW5nZV9pbmNvcnJlY3QuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRl
eGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJrZXlyYW5nZV9pbmNvcnJlY3QuaHRtbAppbmRleCAx
ZTE5NzkxNDJlZmQ2ODJlMDZkMmUxNzI3NTVmZDQwYmNkYzJiNjcyLi4yNDJkMWEzY2QxODBhYzNi
YzgzYTZlMDA3NzE2MzVlNjQ1Y2VmYzY4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRia2V5cmFuZ2VfaW5jb3JyZWN0Lmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dz
aW5nL2lkYmtleXJhbmdlX2luY29ycmVjdC5odG1sCkBAIC0xNiwyNCArMTYsMjQgQEAKIAogICAg
ICAgICAgICAgLy8gVHlwZUVycm9yOiBib3VuZCByZXF1aXJlcyBtb3JlIHRoYW4gMCBhcmd1bWVu
dHMKICAgICAgICAgICAgIHRlc3QoIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIGFzc2Vy
dF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBh
c3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAg
ICAgIElEQktleVJhbmdlLmJvdW5kKCk7CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAg
ICB9LCAiSURCS2V5UmFuZ2UuYm91bmQoKSAtIGJvdW5kIHJlcXVpcmVzIG1vcmUgdGhhbiAwIGFy
Z3VtZW50cy4iKTsKIAogICAgICAgICAgICAgLy8gTnVsbCBwYXJhbWV0ZXJzCiAgICAgICAgICAg
ICB0ZXN0KCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzKCJEYXRh
RXJyb3IiLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgi
RGF0YUVycm9yIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgIElEQktleVJhbmdl
LmJvdW5kKG51bGwsIG51bGwpOwogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgfSwg
IklEQktleVJhbmdlLmJvdW5kKG51bGwsIG51bGwpIC0gbnVsbCBwYXJhbWV0ZXJzIGFyZSBpbmNv
cnJlY3QuIik7CiAKICAgICAgICAgICAgIC8vIC8vIE51bGwgcGFyYW1ldGVyCiAgICAgICAgICAg
ICB0ZXN0KCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzKCJEYXRh
RXJyb3IiLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgi
RGF0YUVycm9yIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgIElEQktleVJhbmdl
LmJvdW5kKDEsIG51bGwpOwogICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIGFz
c2VydF90aHJvd3MoIkRhdGFFcnJvciIsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGFz
c2VydF90aHJvd3NfZG9tKCJEYXRhRXJyb3IiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAg
ICAgICAgSURCS2V5UmFuZ2UuYm91bmQobnVsbCwgMSk7CiAgICAgICAgICAgICAgICAgfSk7CiAg
ICAgICAgICAgICB9LCAiSURCS2V5UmFuZ2UuYm91bmQoMSwgbnVsbCAvIG51bGwsIDEpIC0gbnVs
bCBwYXJhbWV0ZXIgaXMgaW5jb3JyZWN0LiIpOwpAQCAtNDIsMjMgKzQyLDIzIEBACiAgICAgICAg
ICAgICB0ZXN0KCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICB2YXIgbG93ZXJCYWQgPSBN
YXRoLmZsb29yKE1hdGgucmFuZG9tKCkqMzEpICsgNTsKICAgICAgICAgICAgICAgICB2YXIgdXBw
ZXIgPSBsb3dlckJhZCAtIDE7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygiRGF0YUVy
cm9yIiwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkRh
dGFFcnJvciIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICBJREJLZXlSYW5nZS5i
b3VuZChsb3dlckJhZCwgdXBwZXIpOwogICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAg
ICAgIGFzc2VydF90aHJvd3MoIkRhdGFFcnJvciIsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
ICAgIGFzc2VydF90aHJvd3NfZG9tKCJEYXRhRXJyb3IiLCBmdW5jdGlvbigpIHsKICAgICAgICAg
ICAgICAgICAgICAgSURCS2V5UmFuZ2UuYm91bmQoJ2InLCAnYScpOwogICAgICAgICAgICAgICAg
IH0pOwogICAgICAgICAgICAgfSwgIklEQktleVJhbmdlLmJvdW5kKGxvd2VyLCB1cHBlciAvIGxv
d2VyID4gdXBwZXIpIC0gICdsb3dlcicgaXMgZ3JlYXRlciB0aGFuICd1cHBlcicuIgogICAgICAg
ICAgICAgKTsKIAogICAgICAgICAgICAgdGVzdCggZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAg
ICAgYXNzZXJ0X3Rocm93cygiRGF0YUVycm9yIiwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAg
ICAgYXNzZXJ0X3Rocm93c19kb20oIkRhdGFFcnJvciIsIGZ1bmN0aW9uKCkgewogICAgICAgICAg
ICAgICAgICAgICBJREJLZXlSYW5nZS5ib3VuZCgnYScsIDEpOwogICAgICAgICAgICAgICAgIH0p
OwotICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3MoIkRhdGFFcnJvciIsIGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJEYXRhRXJyb3IiLCBmdW5jdGlv
bigpIHsKICAgICAgICAgICAgICAgICAgICAgSURCS2V5UmFuZ2UuYm91bmQobmV3IERhdGUoKSwg
MSk7CiAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygi
RGF0YUVycm9yIiwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19k
b20oIkRhdGFFcnJvciIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICBJREJLZXlS
YW5nZS5ib3VuZChbMSwgMl0sIDEpOwogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAg
fSwgIklEQktleVJhbmdlLmJvdW5kKERPTVN0cmluZy9EYXRlL0FycmF5LCAxKSAtIEEgRE9NU3Ry
aW5nLCBEYXRlIGFuZCBBcnJheSBhcmUgZ3JlYXRlciB0aGFuIGEgZmxvYXQuIik7CkBAIC02Nywx
NyArNjcsMTcgQEAKICAgICAgICAgICAgIC8vIFJlZmVyZW5jZUVycm9yOiB0aGUgdmFyaWFibGUg
aXMgbm90IGRlZmluZWQKICAgICAgICAgICAgIHRlc3QoIGZ1bmN0aW9uKCkgewogICAgICAgICAg
ICAgICAgIHZhciBnb29kVmFyaWFibGUgPSAxOwotICAgICAgICAgICAgICAgIGFzc2VydF90aHJv
d3MobmV3IFJlZmVyZW5jZUVycm9yKCksIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGFz
c2VydF90aHJvd3NfanMoUmVmZXJlbmNlRXJyb3IsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAg
ICAgICAgICBJREJLZXlSYW5nZS5ib3VuZChub0V4aXN0aW5nVmFyaWFibGUsIDEpOwogICAgICAg
ICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3MobmV3IFJlZmVyZW5j
ZUVycm9yKCksIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3NfanMo
UmVmZXJlbmNlRXJyb3IsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICBJREJLZXlS
YW5nZS5ib3VuZChnb29kVmFyaWFibGUsIG5vRXhpc3RpbmdWYXJpYWJsZSk7CiAgICAgICAgICAg
ICAgICAgfSk7CiAgICAgICAgICAgICB9LCAiSURCS2V5UmFuZ2UuYm91bmQobm9FeGlzdGluZ1Zh
cmlhYmxlLCAxIC8gZ29vZFZhcmlhYmxlLCBub0V4aXN0aW5nVmFyaWFibGUpIC0gbm9FeGlzdGlu
Z1ZhcmlhYmxlIGlzIG5vdCBkZWZpbmVkLiIpOwogCiAgICAgICAgICAgICAvLyBWYWxpZCB0eXBl
IGtleSBlcnJvcgogICAgICAgICAgICAgdGVzdCggZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAg
ICAgYXNzZXJ0X3Rocm93cygiRGF0YUVycm9yIiwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAg
ICAgYXNzZXJ0X3Rocm93c19kb20oIkRhdGFFcnJvciIsIGZ1bmN0aW9uKCkgewogICAgICAgICAg
ICAgICAgICAgICBJREJLZXlSYW5nZS5ib3VuZCh0cnVlLCAxKTsKICAgICAgICAgICAgICAgICB9
KTsKICAgICAgICAgICAgIH0sICJJREJLZXlSYW5nZS5ib3VuZCh0cnVlLCAxKSAtIGJvb2xlYW4g
aXMgbm90IGEgdmFsaWQga2V5IHR5cGUuIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfYWRkMTAu
aHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2lu
Zy9pZGJvYmplY3RzdG9yZV9hZGQxMC5odG1sCmluZGV4IDA4ZjcxNmQzMWRiZmJkOWRkYzdmOGE5
NGE5ODYxMTc2MGM0N2Y3ZmEuLmY4NGY5YzVjYzQ4MTI3YmQzNTNlMmFkZjhmNWVmMzM4YjQzNDRj
YTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0
ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9hZGQxMC5odG1sCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9hZGQx
MC5odG1sCkBAIC0xOCw3ICsxOCw3IEBACiAgICAgICAgIHZhciBycSwKICAgICAgICAgICBvYmpT
dG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCJzdG9yZSIpOwogCi0gICAgICAgIGFzc2VydF90
aHJvd3MoIkRhdGFFcnJvciIsCisgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJEYXRhRXJyb3Ii
LAogICAgICAgICAgICAgZnVuY3Rpb24oKSB7IHJxID0gb2JqU3RvcmUuYWRkKHJlY29yZCk7IH0p
OwogCiAgICAgICAgIGFzc2VydF9lcXVhbHMocnEsIHVuZGVmaW5lZCk7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2Jq
ZWN0c3RvcmVfYWRkMTEuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREIt
cHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9hZGQxMS5odG1sCmluZGV4IGVlNmE0ZTQw
YmEyMWU1OTBjN2E4ZjBiMzRmNDEyZmM4NTViM2M3MDQuLjJhZDY0YjlmZWM5Y2I1NzE4MWYxMmYw
Y2NmOTFiOWU0NTRiY2JmZWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9J
bmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9hZGQxMS5odG1sCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJv
YmplY3RzdG9yZV9hZGQxMS5odG1sCkBAIC0xOCw3ICsxOCw3IEBACiAgICAgICAgIHZhciBycSwK
ICAgICAgICAgICBvYmpTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCJzdG9yZSIsIHsga2V5
UGF0aDogImtleSIgfSk7CiAKLSAgICAgICAgYXNzZXJ0X3Rocm93cygiRGF0YUVycm9yIiwKKyAg
ICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkRhdGFFcnJvciIsCiAgICAgICAgICAgICBmdW5jdGlv
bigpIHsgcnEgPSBvYmpTdG9yZS5hZGQocmVjb3JkKTsgfSk7CiAKICAgICAgICAgYXNzZXJ0X2Vx
dWFscyhycSwgdW5kZWZpbmVkKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9hZGQxMi5odG1sIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9i
amVjdHN0b3JlX2FkZDEyLmh0bWwKaW5kZXggZTE0Y2RhN2I1NTgyYzBlYTViZDc5ZWZlYjE2NjEy
ZGU2OTI0YjEyMS4uM2FmMDgxZjM2NjZjZjZlNjJkOTQ1OTU1NWU2NzA3YjRjZTM3ZWM3ZSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dz
aW5nL2lkYm9iamVjdHN0b3JlX2FkZDEyLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2FkZDEyLmh0bWwK
QEAgLTE4LDcgKzE4LDcgQEAKICAgICAgICAgdmFyIHJxLAogICAgICAgICAgIG9ialN0b3JlID0g
ZGIuY3JlYXRlT2JqZWN0U3RvcmUoInN0b3JlIiwgeyBrZXlQYXRoOiAia2V5IiB9KTsKIAotICAg
ICAgICBhc3NlcnRfdGhyb3dzKCJEYXRhRXJyb3IiLAorICAgICAgICBhc3NlcnRfdGhyb3dzX2Rv
bSgiRGF0YUVycm9yIiwKICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyBycSA9IG9ialN0b3JlLmFk
ZChyZWNvcmQpOyB9KTsKIAogICAgICAgICBhc3NlcnRfZXF1YWxzKHJxLCB1bmRlZmluZWQpOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJy
b3dzaW5nL2lkYm9iamVjdHN0b3JlX2FkZDEzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfYWRkMTMuaHRtbApp
bmRleCAzZjRiMzBkM2FmYzE4MjdhMTEyNTE4MDg3MDc4OTU4OWFiODI2NjUzLi5hNmFkMmYzMDlj
ZTE1MGZmN2ViZjIwM2FmMDg2OWFiN2E2NDUyN2Q5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfYWRk
MTMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUt
YnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfYWRkMTMuaHRtbApAQCAtMTgsNyArMTgsNyBAQAogICAg
ICAgICB2YXIgcnEsCiAgICAgICAgICAgb2JqU3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgi
c3RvcmUiKTsKIAotICAgICAgICBhc3NlcnRfdGhyb3dzKCJEYXRhRXJyb3IiLAorICAgICAgICBh
c3NlcnRfdGhyb3dzX2RvbSgiRGF0YUVycm9yIiwKICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyBy
cSA9IG9ialN0b3JlLmFkZChyZWNvcmQsIHsgdmFsdWU6IDEgfSk7IH0pOwogCiAgICAgICAgIGFz
c2VydF9lcXVhbHMocnEsIHVuZGVmaW5lZCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfYWRkMTUu
aHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2lu
Zy9pZGJvYmplY3RzdG9yZV9hZGQxNS5odG1sCmluZGV4IGMzMjJjYTdkYTBiMThjZjZjMDU0YTE3
YmU3N2EzMjNkZGIyZmQ2MWIuLjBkZjcxMzQyNDM0ODA4YzA3MDI1Mzg4ZWRlOGNkZmZmMGZiMTk0
ZmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0
ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9hZGQxNS5odG1sCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9hZGQx
NS5odG1sCkBAIC0yMSw3ICsyMSw3IEBACiAgICAgICAgIHZhciB0eG4gPSBkYi50cmFuc2FjdGlv
bigic3RvcmUiKTsKICAgICAgICAgdmFyIG9zdG9yZSA9IHR4bi5vYmplY3RTdG9yZSgic3RvcmUi
KTsKICAgICAgICAgdC5zdGVwKGZ1bmN0aW9uKCl7Ci0gICAgICAgICAgICBhc3NlcnRfdGhyb3dz
KCJSZWFkT25seUVycm9yIiwgZnVuY3Rpb24oKXsKKyAgICAgICAgICAgIGFzc2VydF90aHJvd3Nf
ZG9tKCJSZWFkT25seUVycm9yIiwgZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICBvc3RvcmUu
YWRkKHsgcEtleTogInByaW1hcnlLZXlfMCJ9KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9
KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0
ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9hZGQxNi5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2FkZDE2Lmh0
bWwKaW5kZXggMGQxMmUwNDNmNzJhN2ZkZDMyYzBmNmNiOGI0Njk1NmMwMWVmMDIxNC4uZGQ2NWQ5
MDQ2NzA3NmQwNzI5ZTBmYjI4ZGJmYmQ1YzBiNTdiYWEzYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3Jl
X2FkZDE2Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2
YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2FkZDE2Lmh0bWwKQEAgLTIxLDcgKzIxLDcgQEAK
IAogICAgIG9wZW5fcnEub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7CiAgICAgICAgIHQu
c3RlcChmdW5jdGlvbigpewotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygiSW52YWxpZFN0YXRl
RXJyb3IiLCBmdW5jdGlvbigpeworICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkludmFs
aWRTdGF0ZUVycm9yIiwgZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICBvc3RvcmUuYWRkKHsg
cEtleTogInByaW1hcnlLZXlfMCJ9KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93
c2luZy9pZGJvYmplY3RzdG9yZV9hZGQ5Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
SW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfYWRkOS5odG1sCmluZGV4
IGM5MzA0YTAzMTBhNzA5NzFlY2JmNTY2OGMwOWU4ZTNhMWNmYmQwYjMuLjhlMjgyMDBlNmNlZjFh
MjAxNTYzMDcyOTcxN2U5ZGIxMWMzZGRkZTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9hZGQ5Lmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dz
aW5nL2lkYm9iamVjdHN0b3JlX2FkZDkuaHRtbApAQCAtMTYsNyArMTYsNyBAQAogICAgICAgICAg
IGRiID0gZS50YXJnZXQucmVzdWx0LAogICAgICAgICAgIG9ialN0b3JlID0gZGIuY3JlYXRlT2Jq
ZWN0U3RvcmUoInN0b3JlIiwgeyBrZXlQYXRoOiAia2V5IiB9KTsKIAotICAgICAgICBhc3NlcnRf
dGhyb3dzKCJEYXRhRXJyb3IiLAorICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiRGF0YUVycm9y
IiwKICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyBycSA9IG9ialN0b3JlLmFkZChyZWNvcmQsIDEp
OyB9KTsKIAogICAgICAgICBhc3NlcnRfZXF1YWxzKHJxLCB1bmRlZmluZWQpOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lk
Ym9iamVjdHN0b3JlX2NsZWFyMy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4
ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2NsZWFyMy5odG1sCmluZGV4IGQ1
NTA5YWM5NjE2YjFiMzRmMWE3ZjNhYTU3YmIwMmFkZWMwODhlZGUuLjExNzFkYjZlNzc5NGFiNjhi
OWRhZGFhNGMzZWM4ZTYwYzczYmM3ZjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9jbGVhcjMuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Np
bmcvaWRib2JqZWN0c3RvcmVfY2xlYXIzLmh0bWwKQEAgLTI2LDcgKzI2LDcgQEAKICAgICAgICAg
dmFyIHR4biA9IGRiLnRyYW5zYWN0aW9uKCJzdG9yZSIpOwogICAgICAgICB2YXIgb3N0b3JlID0g
dHhuLm9iamVjdFN0b3JlKCJzdG9yZSIpOwogICAgICAgICB0LnN0ZXAoZnVuY3Rpb24oKXsKLSAg
ICAgICAgICAgIGFzc2VydF90aHJvd3MoIlJlYWRPbmx5RXJyb3IiLCBmdW5jdGlvbigpeworICAg
ICAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIlJlYWRPbmx5RXJyb3IiLCBmdW5jdGlvbigpewog
ICAgICAgICAgICAgICAgIG9zdG9yZS5jbGVhcigpOwogICAgICAgICAgICAgfSk7CiAgICAgICAg
IH0pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2
YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2NsZWFyNC5odG1sIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2NsZWFy
NC5odG1sCmluZGV4IDI3NTI1MmIwNGM5MzI2MzgwZjc2MTRlYTZiOGQ1M2NiYWFkNmUwMjUuLjcx
MWI5YmU5OTkyNjQzOWZlOTJiYzFiYTBiNDdjYWJkOTFjYjAxZDAgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3Rz
dG9yZV9jbGVhcjQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERC
LXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfY2xlYXI0Lmh0bWwKQEAgLTIxLDcgKzIx
LDcgQEAKIAogICAgIG9wZW5fcnEub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7CiAgICAg
ICAgIHQuc3RlcChmdW5jdGlvbigpewotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygiSW52YWxp
ZFN0YXRlRXJyb3IiLCBmdW5jdGlvbigpeworICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19kb20o
IkludmFsaWRTdGF0ZUVycm9yIiwgZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICBvc3RvcmUu
Y2xlYXIoKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3Rz
dG9yZV9jb3VudDQuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJp
dmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9jb3VudDQuaHRtbAppbmRleCA5MWRhOGFjOGU1
MjI5ZjMxZGZhMWNhYzY3ZWIyMDQ3NDA1MDZiMjM2Li45ZjRjODhjZDQ0MTc4ZWJiZWJiMmFiYjZl
MmM2MjhkNDYwMGFlZGQ0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5k
ZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfY291bnQ0Lmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9i
amVjdHN0b3JlX2NvdW50NC5odG1sCkBAIC0yMSw3ICsyMSw3IEBACiAKICAgICBvcGVuX3JxLm9u
c3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgewogICAgICAgICB0LnN0ZXAoZnVuY3Rpb24oKXsK
LSAgICAgICAgICAgIGFzc2VydF90aHJvd3MoIkludmFsaWRTdGF0ZUVycm9yIiwgZnVuY3Rpb24o
KXsKKyAgICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlkU3RhdGVFcnJvciIsIGZ1
bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgb3N0b3JlLmNvdW50KCk7CiAgICAgICAgICAgICB9
KTsKICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5k
ZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfY3JlYXRlSW5kZXgxMC5odG1s
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lk
Ym9iamVjdHN0b3JlX2NyZWF0ZUluZGV4MTAuaHRtbAppbmRleCBlNjBlMTE5NzliOTJmZjE1Mzlj
Njk1MWI0YWE5MWE3OTBkNjU0MjhhLi4wNzEyNGYwYzA4Yzg0YmY1YzY2YTYzMzkyOWNhYjhhNjhi
ZmVmMWM4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXBy
aXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfY3JlYXRlSW5kZXgxMC5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmpl
Y3RzdG9yZV9jcmVhdGVJbmRleDEwLmh0bWwKQEAgLTE1LDcgKzE1LDcgQEAgb3Blbl9ycS5vbnVw
Z3JhZGVuZWVkZWQgPSBmdW5jdGlvbiAoZSkgewogICAgIHZhciBkYiA9IGUudGFyZ2V0LnJlc3Vs
dDsKICAgICB2YXIgb3N0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoInN0b3JlIik7CiAgICAg
b3N0b3JlLmNyZWF0ZUluZGV4KCJhIiwgImEiKTsKLSAgICBhc3NlcnRfdGhyb3dzKCJDb25zdHJh
aW50RXJyb3IiLCBmdW5jdGlvbigpeworICAgIGFzc2VydF90aHJvd3NfZG9tKCJDb25zdHJhaW50
RXJyb3IiLCBmdW5jdGlvbigpewogICAgICAgICBvc3RvcmUuY3JlYXRlSW5kZXgoImEiLCAiYSIp
OwogICAgIH0pOwogICAgIHQuZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2NyZWF0ZUlu
ZGV4MTEuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1i
cm93c2luZy9pZGJvYmplY3RzdG9yZV9jcmVhdGVJbmRleDExLmh0bWwKaW5kZXggZDQ0ZDI0NTA2
ZmJkNmQ5NGFlNzQyMTA2NmM1MzEzYjMxNDFkNTE1Mi4uMzgxNDUyMzA3MWNlZGZmOTQ1ZGY4MGJi
NzRiN2UzODhmMjQ4ZjMzNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0lu
ZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2NyZWF0ZUluZGV4MTEuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Np
bmcvaWRib2JqZWN0c3RvcmVfY3JlYXRlSW5kZXgxMS5odG1sCkBAIC0xNCw3ICsxNCw3IEBAIHZh
ciB0ID0gYXN5bmNfdGVzdCgpLAogb3Blbl9ycS5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbiAo
ZSkgewogICAgIHZhciBkYiA9IGUudGFyZ2V0LnJlc3VsdDsKICAgICB2YXIgb3N0b3JlID0gZGIu
Y3JlYXRlT2JqZWN0U3RvcmUoInN0b3JlIik7Ci0gICAgYXNzZXJ0X3Rocm93cygiU3ludGF4RXJy
b3IiLCBmdW5jdGlvbigpeworICAgIGFzc2VydF90aHJvd3NfZG9tKCJTeW50YXhFcnJvciIsIGZ1
bmN0aW9uKCl7CiAgICAgICAgIG9zdG9yZS5jcmVhdGVJbmRleCgiYWIiLCAiLiIpOwogICAgIH0p
OwogICAgIHQuZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0lu
ZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2NyZWF0ZUluZGV4MTIuaHRt
bCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9p
ZGJvYmplY3RzdG9yZV9jcmVhdGVJbmRleDEyLmh0bWwKaW5kZXggNDhhNmQ2YTc3OTBjZGNiOGEy
NjI3Y2UwYTZkOTE2N2FlZWQ0MjhkOC4uMjc3ZmY5NGY3YThlMjZmMDVjMTllMzQ0NmIzZTE5ZjJi
ODc0YTUzOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1w
cml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2NyZWF0ZUluZGV4MTIuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2Jq
ZWN0c3RvcmVfY3JlYXRlSW5kZXgxMi5odG1sCkBAIC0yMSw3ICsyMSw3IEBACiAKICAgICBvcGVu
X3JxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgewogICAgICAgICB0LnN0ZXAoZnVuY3Rp
b24oKXsKLSAgICAgICAgICAgIGFzc2VydF90aHJvd3MoIkludmFsaWRTdGF0ZUVycm9yIiwgZnVu
Y3Rpb24oKXsKKyAgICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlkU3RhdGVFcnJv
ciIsIGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgb3N0b3JlLmNyZWF0ZUluZGV4KCJpbmRl
eCIsICJpbmRleGVkUHJvcGVydHkiKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93
c2luZy9pZGJvYmplY3RzdG9yZV9jcmVhdGVJbmRleDEzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfY3JlYXRl
SW5kZXgxMy5odG1sCmluZGV4IGY1MTIzMWM1MjU3ODNlOTZjMjBkMmU0ZWMzNzFjNTZjYWZhYzBl
ZDkuLjYxNWE5MDEyZGNmMDE3ZGIwYzcyMGYyNjY5ZjMzMzMxZmI2MzZiNzcgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJv
YmplY3RzdG9yZV9jcmVhdGVJbmRleDEzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2NyZWF0ZUluZGV4
MTMuaHRtbApAQCAtMjEsNyArMjEsNyBAQAogICAgICAgICB2YXIgdHhuID0gZGIudHJhbnNhY3Rp
b24oInN0b3JlIiwgInJlYWR3cml0ZSIpOwogICAgICAgICBvc3RvcmUgPSB0eG4ub2JqZWN0U3Rv
cmUoInN0b3JlIik7CiAgICAgICAgIHQuc3RlcChmdW5jdGlvbigpewotICAgICAgICAgICAgYXNz
ZXJ0X3Rocm93cygiSW52YWxpZFN0YXRlRXJyb3IiLCBmdW5jdGlvbigpeworICAgICAgICAgICAg
YXNzZXJ0X3Rocm93c19kb20oIkludmFsaWRTdGF0ZUVycm9yIiwgZnVuY3Rpb24oKXsKICAgICAg
ICAgICAgICAgICBvc3RvcmUuY3JlYXRlSW5kZXgoImluZGV4IiwgImluZGV4ZWRQcm9wZXJ0eSIp
OwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2Rl
bGV0ZTYuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1i
cm93c2luZy9pZGJvYmplY3RzdG9yZV9kZWxldGU2Lmh0bWwKaW5kZXggMjI1NGUwNDMyNWY5M2E0
ZjRmN2U2NmNlYmYwZTkwYTg1MTFiYjA1Zi4uMTVjNzQ4OTUyYjllZWNkYzQyN2ExYmQ4ZTk5YTlk
NzdkOGJlNThkMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWRE
Qi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2RlbGV0ZTYuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0
c3RvcmVfZGVsZXRlNi5odG1sCkBAIC0yNiw3ICsyNiw3IEBACiAgICAgICAgIHZhciB0eG4gPSBk
Yi50cmFuc2FjdGlvbigic3RvcmUiKTsKICAgICAgICAgdmFyIG9zdG9yZSA9IHR4bi5vYmplY3RT
dG9yZSgic3RvcmUiKTsKICAgICAgICAgdC5zdGVwKGZ1bmN0aW9uKCl7Ci0gICAgICAgICAgICBh
c3NlcnRfdGhyb3dzKCJSZWFkT25seUVycm9yIiwgZnVuY3Rpb24oKXsKKyAgICAgICAgICAgIGFz
c2VydF90aHJvd3NfZG9tKCJSZWFkT25seUVycm9yIiwgZnVuY3Rpb24oKXsKICAgICAgICAgICAg
ICAgICBvc3RvcmUuZGVsZXRlKCJwcmltYXJ5S2V5XzAiKTsKICAgICAgICAgICAgIH0pOwogICAg
ICAgICB9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREIt
cHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9kZWxldGU3Lmh0bWwgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVf
ZGVsZXRlNy5odG1sCmluZGV4IGJmMTU3Yjk3NDE0YWEzMDc5NzgyNjAxMzkxZjllY2JiN2MxNDFm
OTQuLjA2MWQ2YmRkNDEwZGNlY2VmMGYxOTAzOTlmNjg0YTlhYTY0ZDM5NTMgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJv
YmplY3RzdG9yZV9kZWxldGU3Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0lu
ZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2RlbGV0ZTcuaHRtbApAQCAt
MjMsNyArMjMsNyBAQAogCiAgICAgb3Blbl9ycS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZlbnQp
IHsKICAgICAgICAgdC5zdGVwKGZ1bmN0aW9uKCl7Ci0gICAgICAgICAgICBhc3NlcnRfdGhyb3dz
KCJJbnZhbGlkU3RhdGVFcnJvciIsIGZ1bmN0aW9uKCl7CisgICAgICAgICAgICBhc3NlcnRfdGhy
b3dzX2RvbSgiSW52YWxpZFN0YXRlRXJyb3IiLCBmdW5jdGlvbigpewogICAgICAgICAgICAgICAg
IG9zdG9yZS5kZWxldGUoInByaW1hcnlLZXlfMCIpOwogICAgICAgICAgICAgfSk7CiAgICAgICAg
IH0pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2
YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2RlbGV0ZUluZGV4Lmh0bWwgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVf
ZGVsZXRlSW5kZXguaHRtbAppbmRleCBkZjJmN2ZhZGM5NjdjNTg4NDNiMDVlNmEwMWE3ZDU4YzI1
NWQ4ZmYxLi5iZGE0MjM1NDJlMjYxYWI1YTVmYWQyOTg4ZmYwOWIwMmJhYjNmYWExIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Npbmcv
aWRib2JqZWN0c3RvcmVfZGVsZXRlSW5kZXguaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfZGVsZXRlSW5k
ZXguaHRtbApAQCAtMzIsNyArMzIsNyBAQAogICAgICAgICAgICAgICBvYmpTdG9yZSA9IGRiLnRy
YW5zYWN0aW9uKCJ0ZXN0IikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5vYmplY3RTdG9y
ZSgidGVzdCIpOwogCi0gICAgICAgICAgICBhc3NlcnRfdGhyb3dzKCdOb3RGb3VuZEVycm9yJywK
KyAgICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCdOb3RGb3VuZEVycm9yJywKICAgICAgICAg
ICAgICAgICBmdW5jdGlvbigpIHsgaW5kZXggPSBvYmpTdG9yZS5pbmRleCgiaW5kZXgiKSB9KTsK
ICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoaW5kZXgsIHVuZGVmaW5lZCk7CiAgICAgICAgICAg
ICB0LmRvbmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVk
REItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9kZWxldGVkLmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3Rv
cmVfZGVsZXRlZC5odG1sCmluZGV4IGNlNzJiYmE2ZGIxMTMwN2U2NzViNjNlZjYzZGM3NDM1MzYw
ZDYxZGQuLjhlMmZjNWNiNzZiMDUyNjhlYjM0M2E0MThlYTc0MDBkM2NiZGI5NDEgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9p
ZGJvYmplY3RzdG9yZV9kZWxldGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2RlbGV0ZWQuaHRtbApA
QCAtMjgsMTYgKzI4LDE2IEBACiAgICAgICAgIGRiLmRlbGV0ZU9iamVjdFN0b3JlKCJzdG9yZSIp
OwogICAgICAgICBhc3NlcnRfZXF1YWxzKGRiLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoLCAwLCAi
b2JqZWN0U3RvcmVOYW1lcy5sZW5ndGggYWZ0ZXIgZGVsZXRlIik7CiAKLSAgICAgICAgYXNzZXJ0
X3Rocm93cyhET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIsIGZ1bmN0aW9uKCkgeyBvYmpT
dG9yZS5hZGQoMik7IH0pOwotICAgICAgICBhc3NlcnRfdGhyb3dzKERPTUV4Y2VwdGlvbi5JTlZB
TElEX1NUQVRFX0VSUiwgZnVuY3Rpb24oKSB7IG9ialN0b3JlLnB1dCgzKTsgfSk7Ci0gICAgICAg
IGFzc2VydF90aHJvd3MoRE9NRXhjZXB0aW9uLklOVkFMSURfU1RBVEVfRVJSLCBmdW5jdGlvbigp
IHsgb2JqU3RvcmUuZ2V0KDEpOyB9KTsKLSAgICAgICAgYXNzZXJ0X3Rocm93cyhET01FeGNlcHRp
b24uSU5WQUxJRF9TVEFURV9FUlIsIGZ1bmN0aW9uKCkgeyBvYmpTdG9yZS5jbGVhcigpOyB9KTsK
LSAgICAgICAgYXNzZXJ0X3Rocm93cyhET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIsIGZ1
bmN0aW9uKCkgeyBvYmpTdG9yZS5jb3VudCgpOyB9KTsKLSAgICAgICAgYXNzZXJ0X3Rocm93cyhE
T01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIsIGZ1bmN0aW9uKCkgeyBvYmpTdG9yZS5kZWxl
dGUoMSk7IH0pOwotICAgICAgICBhc3NlcnRfdGhyb3dzKERPTUV4Y2VwdGlvbi5JTlZBTElEX1NU
QVRFX0VSUiwgZnVuY3Rpb24oKSB7IG9ialN0b3JlLm9wZW5DdXJzb3IoKTsgfSk7Ci0gICAgICAg
IGFzc2VydF90aHJvd3MoRE9NRXhjZXB0aW9uLklOVkFMSURfU1RBVEVfRVJSLCBmdW5jdGlvbigp
IHsgb2JqU3RvcmUuaW5kZXgoImlkeCIpOyB9KTsKLSAgICAgICAgYXNzZXJ0X3Rocm93cyhET01F
eGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIsIGZ1bmN0aW9uKCkgeyBvYmpTdG9yZS5kZWxldGVJ
bmRleCgiaWR4Iik7IH0pOwotICAgICAgICBhc3NlcnRfdGhyb3dzKERPTUV4Y2VwdGlvbi5JTlZB
TElEX1NUQVRFX0VSUiwgZnVuY3Rpb24oKSB7IG9ialN0b3JlLmNyZWF0ZUluZGV4KCJpZHgyIiwg
ImEiKTsgfSk7CisgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKERPTUV4Y2VwdGlvbi5JTlZBTElE
X1NUQVRFX0VSUiwgZnVuY3Rpb24oKSB7IG9ialN0b3JlLmFkZCgyKTsgfSk7CisgICAgICAgIGFz
c2VydF90aHJvd3NfZG9tKERPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUiwgZnVuY3Rpb24o
KSB7IG9ialN0b3JlLnB1dCgzKTsgfSk7CisgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKERPTUV4
Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUiwgZnVuY3Rpb24oKSB7IG9ialN0b3JlLmdldCgxKTsg
fSk7CisgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKERPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRF
X0VSUiwgZnVuY3Rpb24oKSB7IG9ialN0b3JlLmNsZWFyKCk7IH0pOworICAgICAgICBhc3NlcnRf
dGhyb3dzX2RvbShET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIsIGZ1bmN0aW9uKCkgeyBv
YmpTdG9yZS5jb3VudCgpOyB9KTsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oRE9NRXhjZXB0
aW9uLklOVkFMSURfU1RBVEVfRVJSLCBmdW5jdGlvbigpIHsgb2JqU3RvcmUuZGVsZXRlKDEpOyB9
KTsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oRE9NRXhjZXB0aW9uLklOVkFMSURfU1RBVEVf
RVJSLCBmdW5jdGlvbigpIHsgb2JqU3RvcmUub3BlbkN1cnNvcigpOyB9KTsKKyAgICAgICAgYXNz
ZXJ0X3Rocm93c19kb20oRE9NRXhjZXB0aW9uLklOVkFMSURfU1RBVEVfRVJSLCBmdW5jdGlvbigp
IHsgb2JqU3RvcmUuaW5kZXgoImlkeCIpOyB9KTsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19kb20o
RE9NRXhjZXB0aW9uLklOVkFMSURfU1RBVEVfRVJSLCBmdW5jdGlvbigpIHsgb2JqU3RvcmUuZGVs
ZXRlSW5kZXgoImlkeCIpOyB9KTsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oRE9NRXhjZXB0
aW9uLklOVkFMSURfU1RBVEVfRVJSLCBmdW5jdGlvbigpIHsgb2JqU3RvcmUuY3JlYXRlSW5kZXgo
ImlkeDIiLCAiYSIpOyB9KTsKICAgICB9CiAKICAgICBvcGVuX3JxLm9uc3VjY2VzcyA9IGZ1bmN0
aW9uKCkgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1w
cml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2dldDYuaHRtbCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9nZXQ2
Lmh0bWwKaW5kZXggNWE3YjU0NzdiOGE1NThjMDJlZDdiMmIxMmMzMDhlNzQ1NjIwNzFjNS4uZmE1
ZmM2YmZjNmJkNTQzOTBlNzU4MDg5YzNjYjQ5ZDM3OGQyOTRhNyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0
b3JlX2dldDYuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXBy
aXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfZ2V0Ni5odG1sCkBAIC0yMCw3ICsyMCw3IEBA
CiAgICAgICAgIHZhciBzdG9yZSA9IGRiLnRyYW5zYWN0aW9uKCJzdG9yZSIpCiAgICAgICAgICAg
ICAgICAgICAgICAgLm9iamVjdFN0b3JlKCJzdG9yZSIpOwogICAgICAgICBzdG9yZS50cmFuc2Fj
dGlvbi5hYm9ydCgpOwotICAgICAgICBhc3NlcnRfdGhyb3dzKCJUcmFuc2FjdGlvbkluYWN0aXZl
RXJyb3IiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJUcmFuc2Fj
dGlvbkluYWN0aXZlRXJyb3IiLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBzdG9yZS5nZXQo
MSk7CiAgICAgICAgIH0sICJ0aHJvdyBUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3Igb24gYWJvcnRl
ZCB0cmFuc2FjdGlvbi4iKTsKICAgICAgICAgdC5kb25lKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3Rv
cmVfZ2V0Ny5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRl
LWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2dldDcuaHRtbAppbmRleCA3OTU2MTBjOWVlYTJmYjhk
M2E3NzM1ZGUxMjlhMGFlNjFlZTcyYTE1Li5hYWRlOWFhNGM4ZmI5NWYwNjRhOTdlNzdjMjFmMmI1
MGM1ZTZjYWQ0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERC
LXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfZ2V0Ny5odG1sCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9y
ZV9nZXQ3Lmh0bWwKQEAgLTE5LDcgKzE5LDcgQEAKICAgICBvcGVuX3JxLm9uc3VjY2VzcyA9IGZ1
bmN0aW9uKGUpIHsKICAgICAgICAgdmFyIHN0b3JlID0gZGIudHJhbnNhY3Rpb24oInN0b3JlIikK
ICAgICAgICAgICAgICAgICAgICAgICAub2JqZWN0U3RvcmUoInN0b3JlIikKLSAgICAgICAgYXNz
ZXJ0X3Rocm93cygiRGF0YUVycm9yIiwgZnVuY3Rpb24gKCkgeworICAgICAgICBhc3NlcnRfdGhy
b3dzX2RvbSgiRGF0YUVycm9yIiwgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgc3RvcmUuZ2V0
KG51bGwpCiAgICAgICAgIH0sICJ0aHJvdyBEYXRhRXJyb3Igd2hlbiB1c2luZyBpbnZhbGlkIGtl
eS4iKTsKICAgICAgICAgdC5kb25lKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfb3BlbkN1cnNv
cl9pbnZhbGlkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZh
dGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfb3BlbkN1cnNvcl9pbnZhbGlkLmh0bWwKaW5kZXgg
Y2ZiMzMzMzA5MjQ0ZDgyNTBlNjk1ZTFiOTIxN2FhMGJhN2QzNjViYy4uOWJjMjg3MzQyNDI3Zjlm
YjNiNDRlZjA1M2FmNDkxNTBiZjA4ZWJkZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX29wZW5DdXJz
b3JfaW52YWxpZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREIt
cHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9vcGVuQ3Vyc29yX2ludmFsaWQuaHRtbApA
QCAtMjgsMTMgKzI4LDEzIEBACiAgICAgICAgIGFzeW5jX3Rlc3QoZG9jdW1lbnQudGl0bGUgKyAi
IC0gcGFzcyBzb21ldGhpbmcgb3RoZXIgdGhhbiBudW1iZXIiKS5zdGVwKGZ1bmN0aW9uKGUpIHsK
ICAgICAgICAgICAgIHZhciBpZHggPSBkYi50cmFuc2FjdGlvbigidGVzdCIpLm9iamVjdFN0b3Jl
KCJ0ZXN0IikuaW5kZXgoImluZGV4Iik7CiAKLSAgICAgICAgICAgIGFzc2VydF90aHJvd3MoIkRh
dGFFcnJvciIsCisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiRGF0YUVycm9yIiwKICAg
ICAgICAgICAgICAgICBmdW5jdGlvbigpIHsgaWR4Lm9wZW5DdXJzb3IoeyBsb3dlcjogImEiIH0p
OyB9KTsKIAotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygiRGF0YUVycm9yIiwKKyAgICAgICAg
ICAgIGFzc2VydF90aHJvd3NfZG9tKCJEYXRhRXJyb3IiLAogICAgICAgICAgICAgICAgIGZ1bmN0
aW9uKCkgeyBpZHgub3BlbkN1cnNvcih7IGxvd2VyOiAiYSIsIGxvd2VyT3BlbjogZmFsc2UgfSk7
IH0pOwogCi0gICAgICAgICAgICBhc3NlcnRfdGhyb3dzKCJEYXRhRXJyb3IiLAorICAgICAgICAg
ICAgYXNzZXJ0X3Rocm93c19kb20oIkRhdGFFcnJvciIsCiAgICAgICAgICAgICAgICAgZnVuY3Rp
b24oKSB7IGlkeC5vcGVuQ3Vyc29yKHsgbG93ZXI6ICJhIiwgbG93ZXJPcGVuOiBmYWxzZSwgdXBw
ZXI6IG51bGwsIHVwcGVyT3BlbjogZmFsc2UgfSk7IH0pOwogCiAgICAgICAgICAgICB0aGlzLmRv
bmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJp
dmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9wdXQxMC5odG1sIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX3B1dDEw
Lmh0bWwKaW5kZXggNGQyOWJhMzlmNzRmYTEyMGUyMjRiZmJjOGYyZDMyZjU1ZWZlZWQ0MS4uOWI2
YWYxNzQ0ZDMwNzZiYjM4OTE4MWI4NzRjY2U2MmY4MGUxMTJlMiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0
b3JlX3B1dDEwLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1w
cml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX3B1dDEwLmh0bWwKQEAgLTE4LDcgKzE4LDcg
QEAKICAgICAgICAgdmFyIHJxLAogICAgICAgICAgIG9ialN0b3JlID0gZGIuY3JlYXRlT2JqZWN0
U3RvcmUoInN0b3JlIiwgeyBrZXlQYXRoOiAia2V5IiB9KTsKIAotICAgICAgICBhc3NlcnRfdGhy
b3dzKCJEYXRhRXJyb3IiLAorICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiRGF0YUVycm9yIiwK
ICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyBycSA9IG9ialN0b3JlLnB1dChyZWNvcmQpOyB9KTsK
IAogICAgICAgICBhc3NlcnRfZXF1YWxzKHJxLCB1bmRlZmluZWQpOwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVj
dHN0b3JlX3B1dDExLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXBy
aXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfcHV0MTEuaHRtbAppbmRleCAyZmVkNDMzOWM2
M2FlNTA1OGFlMDUzMGU1YmRjM2VkMzFmNDYzMTMxLi41NDY0MzUzY2YzYWVmOTEyOGRlMjY2ODMy
YTE5MTc4OGU2NjliMWIwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5k
ZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfcHV0MTEuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2Jq
ZWN0c3RvcmVfcHV0MTEuaHRtbApAQCAtMTgsNyArMTgsNyBAQAogICAgICAgICB2YXIgcnEsCiAg
ICAgICAgICAgb2JqU3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgic3RvcmUiLCB7IGtleVBh
dGg6ICJrZXkiIH0pOwogCi0gICAgICAgIGFzc2VydF90aHJvd3MoIkRhdGFFcnJvciIsCisgICAg
ICAgIGFzc2VydF90aHJvd3NfZG9tKCJEYXRhRXJyb3IiLAogICAgICAgICAgICAgZnVuY3Rpb24o
KSB7IHJxID0gb2JqU3RvcmUucHV0KHJlY29yZCk7IH0pOwogCiAgICAgICAgIGFzc2VydF9lcXVh
bHMocnEsIHVuZGVmaW5lZCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
SW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfcHV0MTIuaHRtbCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmpl
Y3RzdG9yZV9wdXQxMi5odG1sCmluZGV4IGRkNWVhZmU4Y2I4NTkyMDBkNGM3ZTUxZDI2NDYyYTg1
NTdhMjRlZTIuLjZlZTNjNGI1ZWYzYjM5YmViYTg0MzdlZjVkYmI3Mzg2OWZkOTA2ZjcgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2lu
Zy9pZGJvYmplY3RzdG9yZV9wdXQxMi5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9wdXQxMi5odG1sCkBA
IC0xOCw3ICsxOCw3IEBACiAgICAgICAgIHZhciBycSwKICAgICAgICAgICBvYmpTdG9yZSA9IGRi
LmNyZWF0ZU9iamVjdFN0b3JlKCJzdG9yZSIsIHsga2V5UGF0aDogImtleSIgfSk7CiAKLSAgICAg
ICAgYXNzZXJ0X3Rocm93cygiRGF0YUVycm9yIiwKKyAgICAgICAgYXNzZXJ0X3Rocm93c19kb20o
IkRhdGFFcnJvciIsCiAgICAgICAgICAgICBmdW5jdGlvbigpIHsgcnEgPSBvYmpTdG9yZS5wdXQo
cmVjb3JkKTsgfSk7CiAKICAgICAgICAgYXNzZXJ0X2VxdWFscyhycSwgdW5kZWZpbmVkKTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93
c2luZy9pZGJvYmplY3RzdG9yZV9wdXQxMy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX3B1dDEzLmh0bWwKaW5k
ZXggMDdiOTAzYWYxYzAxNTI4YWVlZGY3NWQwNTU5N2VjNjM5ZTBjNzUwZS4uZWM5YTlmMGM1MjAy
ZDhhYjU2YmZlNGY5YTg1NWY4ZDQ1NDc1NGI5NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX3B1dDEz
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJy
b3dzaW5nL2lkYm9iamVjdHN0b3JlX3B1dDEzLmh0bWwKQEAgLTE4LDcgKzE4LDcgQEAKICAgICAg
ICAgdmFyIHJxLAogICAgICAgICAgIG9ialN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoInN0
b3JlIik7CiAKLSAgICAgICAgYXNzZXJ0X3Rocm93cygiRGF0YUVycm9yIiwKKyAgICAgICAgYXNz
ZXJ0X3Rocm93c19kb20oIkRhdGFFcnJvciIsCiAgICAgICAgICAgICBmdW5jdGlvbigpIHsgcnEg
PSBvYmpTdG9yZS5wdXQocmVjb3JkLCB7IHZhbHVlOiAxIH0pOyB9KTsKIAogICAgICAgICBhc3Nl
cnRfZXF1YWxzKHJxLCB1bmRlZmluZWQpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX3B1dDE1Lmh0
bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Npbmcv
aWRib2JqZWN0c3RvcmVfcHV0MTUuaHRtbAppbmRleCA2NWZkNzE2NmU4MDMzYTVkOTg3YTQ5ZGNh
NDFhMDllMTg2YmFjOTYxLi41NDUyZmY3MTgzMTZiNzQ4ZjYzZmEzNDY5M2JiMTViZjM0YTMxYTM4
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUt
YnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfcHV0MTUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfcHV0MTUu
aHRtbApAQCAtMjEsNyArMjEsNyBAQAogICAgICAgICB2YXIgdHhuID0gZGIudHJhbnNhY3Rpb24o
InN0b3JlIik7CiAgICAgICAgIHZhciBvc3RvcmUgPSB0eG4ub2JqZWN0U3RvcmUoInN0b3JlIik7
CiAgICAgICAgIHQuc3RlcChmdW5jdGlvbigpewotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygi
UmVhZE9ubHlFcnJvciIsIGZ1bmN0aW9uKCl7CisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2Rv
bSgiUmVhZE9ubHlFcnJvciIsIGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgb3N0b3JlLnB1
dCh7cEtleTogInByaW1hcnlLZXlfMCJ9KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1i
cm93c2luZy9pZGJvYmplY3RzdG9yZV9wdXQxNi5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX3B1dDE2Lmh0bWwK
aW5kZXggMTRkYzg2ODFjZDMyNjc3YTc1YmY1NmJkMjRiODVjOTJlYzIzOTNjOC4uMGU5MWNkZWNl
MGJiMjhjMTA4MDE2OWVlNzEzODg0NDM2Y2IxODQ0MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX3B1
dDE2Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRl
LWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX3B1dDE2Lmh0bWwKQEAgLTIxLDcgKzIxLDcgQEAKIAog
ICAgIG9wZW5fcnEub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7CiAgICAgICAgIHQuc3Rl
cChmdW5jdGlvbigpewotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygiSW52YWxpZFN0YXRlRXJy
b3IiLCBmdW5jdGlvbigpeworICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkludmFsaWRT
dGF0ZUVycm9yIiwgZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICBvc3RvcmUucHV0KHtwS2V5
OiAicHJpbWFyeUtleV8wIn0pOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5n
L2lkYm9iamVjdHN0b3JlX3B1dDkuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRl
eGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9wdXQ5Lmh0bWwKaW5kZXggNzc5
YWVkN2YxNjc2ZWEyOTQ3NDA1OTlhNWFhNDhjMTYyZjFlNWViYy4uMjNhZTliOTYwNTMyNzRiNzky
NjIwNDVmZjE2NzBhNDY5ZTdmMzI3MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX3B1dDkuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Npbmcv
aWRib2JqZWN0c3RvcmVfcHV0OS5odG1sCkBAIC0xNiw3ICsxNiw3IEBACiAgICAgICAgICAgZGIg
PSBlLnRhcmdldC5yZXN1bHQsCiAgICAgICAgICAgb2JqU3RvcmUgPSBkYi5jcmVhdGVPYmplY3RT
dG9yZSgic3RvcmUiLCB7IGtleVBhdGg6ICJrZXkiIH0pOwogCi0gICAgICAgIGFzc2VydF90aHJv
d3MoIkRhdGFFcnJvciIsCisgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJEYXRhRXJyb3IiLAog
ICAgICAgICAgICAgZnVuY3Rpb24oKSB7IHJxID0gb2JqU3RvcmUucHV0KHJlY29yZCwgMSk7IH0p
OwogCiAgICAgICAgIGFzc2VydF9lcXVhbHMocnEsIHVuZGVmaW5lZCk7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Npbmcva2V5X2lu
dmFsaWQuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1i
cm93c2luZy9rZXlfaW52YWxpZC5odG1sCmluZGV4IGY3MmRhMzc1OWI1NGJkN2M1Zjg0NTQxN2Y0
NjllYTE1YTU2OTcxM2EuLjY2M2QyMTYwOTlhMGIzNDQ2NGI1ZTA2YjI3ZjhlNjNhYjBlZGJjMmIg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1i
cm93c2luZy9rZXlfaW52YWxpZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9J
bmRleGVkREItcHJpdmF0ZS1icm93c2luZy9rZXlfaW52YWxpZC5odG1sCkBAIC0zMiwxMyArMzIs
MTMgQEAKICAgICAgICAgLy8gc2V0IHRoZSBjdXJyZW50IHRlc3QsIGFuZCBydW4gaXQKICAgICAg
ICAgZGIuc2V0VGVzdCh0KS5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAg
ICAgICBvYmpTdG9yZSA9IG9ialN0b3JlIHx8IGUudGFyZ2V0LnJlc3VsdC5jcmVhdGVPYmplY3RT
dG9yZSgic3RvcmUiKTsKLSAgICAgICAgICAgIGFzc2VydF90aHJvd3MoJ0RhdGFFcnJvcicsIGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oJ0RhdGFFcnJvcicsIGZ1
bmN0aW9uKCkgewogICAgICAgICAgICAgICAgIG9ialN0b3JlLmFkZCgidmFsdWUiLCBrZXkpOwog
ICAgICAgICAgICAgfSk7CiAKICAgICAgICAgICAgIGlmIChpc19jbG9uZWFibGUoa2V5KSkgewog
ICAgICAgICAgICAgICAgIG9ialN0b3JlMiA9IG9ialN0b3JlMiB8fCBlLnRhcmdldC5yZXN1bHQu
Y3JlYXRlT2JqZWN0U3RvcmUoInN0b3JlMiIsIHsga2V5UGF0aDogWyJ4IiwgImtleXBhdGgiXSB9
KTsKLSAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzKCdEYXRhRXJyb3InLCBmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgnRGF0YUVycm9yJywgZnVuY3Rp
b24oKSB7CiAgICAgICAgICAgICAgICAgICAgIG9ialN0b3JlMi5hZGQoeyB4OiAidmFsdWUiLCBr
ZXlwYXRoOiBrZXkgfSk7CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB9CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Np
bmcva2V5cGF0aF9pbnZhbGlkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhl
ZERCLXByaXZhdGUtYnJvd3Npbmcva2V5cGF0aF9pbnZhbGlkLmh0bWwKaW5kZXggY2MxZDQ0NDE2
ZmJlYWQyZWVmYmE3ZTRkMTFlYTA3NzRlNWYyMjkwMi4uM2NiZmJlODBlMmExNWE1NmE0MTkxMDhl
NWI1NzA0MzhlOTMzYjg0YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0lu
ZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2tleXBhdGhfaW52YWxpZC5odG1sCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9rZXlwYXRoX2lu
dmFsaWQuaHRtbApAQCAtMjAsMTIgKzIwLDEyIEBACiAKICAgICAgICAgb3BlbnJxLm9udXBncmFk
ZW5lZWRlZCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgIHZhciBkYiA9IGUudGFyZ2V0LnJl
c3VsdDsKLSAgICAgICAgICAgIGFzc2VydF90aHJvd3MoJ1N5bnRheEVycm9yJywgZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgnU3ludGF4RXJyb3InLCBmdW5jdGlv
bigpIHsKICAgICAgICAgICAgICAgICAgICAgZGIuY3JlYXRlT2JqZWN0U3RvcmUoc3RvcmVfbmFt
ZSwgeyBrZXlQYXRoOiBrZXlwYXRoIH0pCiAgICAgICAgICAgICAgICAgfSwgImNyZWF0ZU9iamVj
dFN0b3JlIHdpdGgga2V5UGF0aCIpOwogCiAgICAgICAgICAgICBzdG9yZSA9IGRiLmNyZWF0ZU9i
amVjdFN0b3JlKHN0b3JlX25hbWUpOwotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygnU3ludGF4
RXJyb3InLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCdTeW50
YXhFcnJvcicsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICBzdG9yZS5jcmVhdGVJ
bmRleCgnaW5kZXgnLCBrZXlwYXRoKTsKICAgICAgICAgICAgICAgICB9LCAiY3JlYXRlSW5kZXgg
d2l0aCBrZXlQYXRoIik7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9J
bmRleGVkREItcHJpdmF0ZS1icm93c2luZy90cmFuc2FjdGlvbi1jcmVhdGVfaW5fdmVyc2lvbmNo
YW5nZS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJy
b3dzaW5nL3RyYW5zYWN0aW9uLWNyZWF0ZV9pbl92ZXJzaW9uY2hhbmdlLmh0bWwKaW5kZXggMDAy
NzkxNmQyZTUwNTgyNjhhMDM5M2RhOTc2YTk2MWRhZTdlNmU0Ni4uMDRhMWYxN2U5ZjY4NTIxZjc0
YTZmMDY3Yzg5MTdiYmYwMWI5NDkyMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL3RyYW5zYWN0aW9uLWNyZWF0ZV9pbl92ZXJz
aW9uY2hhbmdlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1w
cml2YXRlLWJyb3dzaW5nL3RyYW5zYWN0aW9uLWNyZWF0ZV9pbl92ZXJzaW9uY2hhbmdlLmh0bWwK
QEAgLTE3LDE0ICsxNywxNCBAQAogICAgICAgICAgICAgLmFkZCgidmVyc2lvbmNoYW5nZTEiLCAx
KQogICAgICAgICAgICAgLmFkZEV2ZW50TGlzdGVuZXIoInN1Y2Nlc3MiLCBsb2coInZlcnNpb25j
aGFuZ2VfYWRkLnN1Y2Nlc3MiKSkKIAotICAgICAgICBhc3NlcnRfdGhyb3dzKCdJbnZhbGlkU3Rh
dGVFcnJvcicsIGZ1bmN0aW9uKCkgeyBkYi50cmFuc2FjdGlvbigic3RvcmUiKSB9KQorICAgICAg
ICBhc3NlcnRfdGhyb3dzX2RvbSgnSW52YWxpZFN0YXRlRXJyb3InLCBmdW5jdGlvbigpIHsgZGIu
dHJhbnNhY3Rpb24oInN0b3JlIikgfSkKIAogICAgICAgICBlLnRhcmdldC50cmFuc2FjdGlvbgog
ICAgICAgICAgICAgLm9iamVjdFN0b3JlKCJzdG9yZSIpCiAgICAgICAgICAgICAuY291bnQoMikK
ICAgICAgICAgICAgIC5hZGRFdmVudExpc3RlbmVyKCJzdWNjZXNzIiwgbG9nKCJ2ZXJzaW9uY2hh
bmdlX2NvdW50LnN1Y2Nlc3MiKSkKIAotICAgICAgICBhc3NlcnRfdGhyb3dzKCdJbnZhbGlkU3Rh
dGVFcnJvcicsIGZ1bmN0aW9uKCkgeyBkYi50cmFuc2FjdGlvbigic3RvcmUiLCAicmVhZHdyaXRl
IikgfSkKKyAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oJ0ludmFsaWRTdGF0ZUVycm9yJywgZnVu
Y3Rpb24oKSB7IGRiLnRyYW5zYWN0aW9uKCJzdG9yZSIsICJyZWFkd3JpdGUiKSB9KQogCiAgICAg
ICAgIG9wZW5fcnEudHJhbnNhY3Rpb24KICAgICAgICAgICAgIC5vYmplY3RTdG9yZSgic3RvcmUi
KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW50ZXJzZWN0aW9uLW9ic2VydmVyL2ludGVyc2Vj
dGlvbi1vYnNlcnZlci1pbnRlcmZhY2UuaHRtbCBiL0xheW91dFRlc3RzL2ludGVyc2VjdGlvbi1v
YnNlcnZlci9pbnRlcnNlY3Rpb24tb2JzZXJ2ZXItaW50ZXJmYWNlLmh0bWwKaW5kZXggMDliMTM0
MzBmZTQxYTlkNWEyN2Y5Nzc3MjhjZDBlOWY0OGJhNWQxOC4uYzJkMjkxOWIxYWU5N2YyNjBkMmE5
Y2NiOGZkNThhNTVjYjMwOWRjNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW50ZXJzZWN0aW9u
LW9ic2VydmVyL2ludGVyc2VjdGlvbi1vYnNlcnZlci1pbnRlcmZhY2UuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9pbnRlcnNlY3Rpb24tb2JzZXJ2ZXIvaW50ZXJzZWN0aW9uLW9ic2VydmVyLWludGVy
ZmFjZS5odG1sCkBAIC01OCwzMiArNTgsMzIgQEAKICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFs
cyhvYnNlcnZlci50aHJlc2hvbGRzLCBbTnVtYmVyLk1JTl9WQUxVRV0pOwogICAgIH0sJ1NtYWxs
UG9zaXRpdmVUaHJlc2hvbGQnKTsKICAgICB0ZXN0KGZ1bmN0aW9uKCkgewotICAgICAgICBhc3Nl
cnRfdGhyb3dzKFJhbmdlRXJyb3IoKSwgZnVuY3Rpb24oKSB7CisgICAgICAgIGFzc2VydF90aHJv
d3NfanMoUmFuZ2VFcnJvciwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICBuZXcgSW50ZXJzZWN0
aW9uT2JzZXJ2ZXIoZnVuY3Rpb24oKSB7fSwgIHsgdGhyZXNob2xkOiAtTnVtYmVyLk1JTl9WQUxV
RSB9KTsKICAgICAgICAgfSkKICAgICB9LCdTbWFsbE5lZ2F0aXZlVGhyZXNob2xkJyk7CiAgICAg
dGVzdChmdW5jdGlvbigpIHsKLSAgICAgICAgYXNzZXJ0X3Rocm93cyhSYW5nZUVycm9yKCksIGZ1
bmN0aW9uKCkgeworICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFJhbmdlRXJyb3IsIGZ1bmN0aW9u
KCkgewogICAgICAgICAgICAgbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGZ1bmN0aW9uKCkge30s
ICB7IHRocmVzaG9sZDogTnVtYmVyLk1BWF9WQUxVRSB9KTsKICAgICAgICAgfSkKICAgICB9LCdM
YXJnZVBvc2l0aXZlVGhyZXNob2xkJyk7CiAgICAgdGVzdChmdW5jdGlvbigpIHsKLSAgICAgICAg
YXNzZXJ0X3Rocm93cyhSYW5nZUVycm9yKCksIGZ1bmN0aW9uKCkgeworICAgICAgICBhc3NlcnRf
dGhyb3dzX2pzKFJhbmdlRXJyb3IsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgbmV3IEludGVy
c2VjdGlvbk9ic2VydmVyKGZ1bmN0aW9uKCkge30sICB7IHRocmVzaG9sZDogLU51bWJlci5NQVhf
VkFMVUUgfSk7CiAgICAgICAgIH0pCiAgICAgfSwnTGFyZ2VOZWdhdGl2ZVRocmVzaG9sZCcpOwog
ICAgIHRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgICAgIGFzc2VydF90aHJvd3MoVHlwZUVycm9yKCks
IGZ1bmN0aW9uKCkgeworICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgZnVuY3Rp
b24oKSB7CiAgICAgICAgICAgICBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24oKSB7
fSwgIHsgdGhyZXNob2xkOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkgfSk7CiAgICAgICAgIH0p
CiAgICAgfSwnUG9zaXRpdmVJbmZpbml0eVRocmVzaG9sZCcpOwogICAgIHRlc3QoZnVuY3Rpb24o
KSB7Ci0gICAgICAgIGFzc2VydF90aHJvd3MoVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgeworICAg
ICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAg
ICBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24oKSB7fSwgIHsgdGhyZXNob2xkOiBO
dW1iZXIuTkVHQVRJVkVfSU5GSU5JVFkgfSk7CiAgICAgICAgIH0pCiAgICAgfSwnTmVnYXRpdmVJ
bmZpbml0eVRocmVzaG9sZCcpOwogICAgIHRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgICAgIGFzc2Vy
dF90aHJvd3MoVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgeworICAgICAgICBhc3NlcnRfdGhyb3dz
X2pzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICBuZXcgSW50ZXJzZWN0aW9u
T2JzZXJ2ZXIoZnVuY3Rpb24oKSB7fSwgIHsgdGhyZXNob2xkOiBOdW1iZXIuTmFOIH0pOwogICAg
ICAgICB9KQogICAgIH0sJ05hTlRocmVzaG9sZCcpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
anMvZG9tL2RvbS1nZXR0ZXJzLXR5cGUtY2hlY2suaHRtbCBiL0xheW91dFRlc3RzL2pzL2RvbS9k
b20tZ2V0dGVycy10eXBlLWNoZWNrLmh0bWwKaW5kZXggN2ZlNDMyNDY4YTY5NjQ4MzA3OTJlMWIw
MTgxZjU5MWZjMDZmOWVhMS4uZmFlMTVmN2RlNmQ5ZmQ2MGFiYWRiYTNmN2RkZmQ1ZjVlYTRmMWEw
YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvZG9tL2RvbS1nZXR0ZXJzLXR5cGUtY2hlY2su
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20vZG9tLWdldHRlcnMtdHlwZS1jaGVjay5odG1s
CkBAIC0xNiwxMCArMTYsMTAgQEAKICAgICB9LCAiRE9NIGdldHRlciBzaG91bGQgYmUgYSBmdW5j
dGlvbiIpOwogCiAgICAgdGVzdCgoKSA9PiB7Ci0gICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5
cGVFcnJvcigpLCAoKSA9PiB7IGdldHRlcigpOyB9LCAiRE9NIGdldHRlciB0aHJvd3MgYW4gZXJy
b3Igd2l0aCB1bmRlZmluZWQiKTsKLSAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9y
KCksICgpID0+IHsgZ2V0dGVyLmNhbGwobnVsbCk7IH0sICJET00gZ2V0dGVyIHRocm93cyBhbiBl
cnJvciB3aXRoIG51bGwiKTsKLSAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCks
ICgpID0+IHsgZ2V0dGVyLmNhbGwoe30pOyB9LCAiRE9NIGdldHRlciB0aHJvd3MgYW4gZXJyb3Ig
d2l0aCB1bnJlbGF0ZWQgb2JqZWN0Iik7Ci0gICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVF
cnJvcigpLCAoKSA9PiB7IGdldHRlci5jYWxsKGRvY3VtZW50LmNyZWF0ZVRleHQoIkhlbGxvIikp
OyB9LCAiRE9NIGdldHRlciB0aHJvd3MgYW4gZXJyb3Igd2l0aCB1bnJlbGF0ZWQgRE9NIG9iamVj
dCIpOworICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4geyBnZXR0ZXIo
KTsgfSwgIkRPTSBnZXR0ZXIgdGhyb3dzIGFuIGVycm9yIHdpdGggdW5kZWZpbmVkIik7CisgICAg
ICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiB7IGdldHRlci5jYWxsKG51bGwp
OyB9LCAiRE9NIGdldHRlciB0aHJvd3MgYW4gZXJyb3Igd2l0aCBudWxsIik7CisgICAgICAgIGFz
c2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiB7IGdldHRlci5jYWxsKHt9KTsgfSwgIkRP
TSBnZXR0ZXIgdGhyb3dzIGFuIGVycm9yIHdpdGggdW5yZWxhdGVkIG9iamVjdCIpOworICAgICAg
ICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4geyBnZXR0ZXIuY2FsbChkb2N1bWVu
dC5jcmVhdGVUZXh0KCJIZWxsbyIpKTsgfSwgIkRPTSBnZXR0ZXIgdGhyb3dzIGFuIGVycm9yIHdp
dGggdW5yZWxhdGVkIERPTSBvYmplY3QiKTsKICAgICB9LCAiRE9NIGdldHRlciB0aHJvd3MgYW4g
ZXJyb3Igd2l0aCB1bnJlbGF0ZWQgdmFsdWVzIik7CiAKICAgICB0ZXN0KCgpID0+IHsKQEAgLTMy
LDE0ICszMiwxNCBAQAogICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCAic2Ny
b2xsVG9wIiwgewogICAgICAgICAgICAgZ2V0OiBnZXR0ZXIKICAgICAgICAgfSk7Ci0gICAgICAg
IGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiB7IG9iamVjdC5zY3JvbGxUb3A7
IH0pOworICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4geyBvYmplY3Qu
c2Nyb2xsVG9wOyB9KTsKICAgICB9LCAiRE9NIGdldHRlciBhY2Nlc3MgdGhyb3dzIGFuIGVycm9y
IHdpdGggdW5yZWxhdGVkIG9iamVjdCIpOwogCiAgICAgdGVzdCgoKSA9PiB7CiAgICAgICAgIHZh
ciBvYmplY3QgPSB7CiAgICAgICAgICAgICBfX3Byb3RvX186IEVsZW1lbnQucHJvdG90eXBlCiAg
ICAgICAgIH07Ci0gICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiB7
IG9iamVjdC5zY3JvbGxUb3A7IH0pOworICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJv
ciwgKCkgPT4geyBvYmplY3Quc2Nyb2xsVG9wOyB9KTsKICAgICB9LCAiRE9NIGdldHRlciBhY2Nl
c3MgdGhyb3VnaCBFbGVtZW50LnByb3RvdHlwZSB0aHJvd3MgYW4gZXJyb3Igd2l0aCB1bnJlbGF0
ZWQgb2JqZWN0Iik7CiA8L3NjcmlwdD4KIDwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2pzL2RvbS9sZWdhY3ktcGxhdGZvcm0tb2JqZWN0LWRlZmluZU93blByb3BlcnR5Lmh0bWwgYi9M
YXlvdXRUZXN0cy9qcy9kb20vbGVnYWN5LXBsYXRmb3JtLW9iamVjdC1kZWZpbmVPd25Qcm9wZXJ0
eS5odG1sCmluZGV4IGQ0YTkyYmM3MjMyZmUwNWRiMTkwYzc2MmRjYWI0MjBkMzE4ZmIyNjUuLjQ1
ZmY1ZWFjN2UyYjNlMTFmZGQ3ZGVkOGUxODYwMDkwZTU0OTFhMGEgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2pzL2RvbS9sZWdhY3ktcGxhdGZvcm0tb2JqZWN0LWRlZmluZU93blByb3BlcnR5Lmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL2xlZ2FjeS1wbGF0Zm9ybS1vYmplY3QtZGVmaW5l
T3duUHJvcGVydHkuaHRtbApAQCAtNTIsNyArNTIsNyBAQAogICAgICAgICBlbGVtZW50LmRhdGFz
ZXRbImEiXSA9ICJ2YWx1ZTEiOwogICAgICAgICBlbGVtZW50LmRhdGFzZXRbImIiXSA9ICJ2YWx1
ZTIiOwogICAgICAgICAKLSAgICAgICAgYXNzZXJ0X3Rocm93cygiU3ludGF4RXJyb3IiLCAoKSA9
PiB7CisgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJTeW50YXhFcnJvciIsICgpID0+IHsKICAg
ICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlbGVtZW50LmRhdGFzZXQsICItaW52YWxp
ZCIsIHsgdmFsdWU6ICJ2YWx1ZTMiIH0pOyAgICAgICAgICAgIAogICAgICAgICB9KTsKICAgICAg
ICAgYXNzZXJ0X25vdF9lcXVhbHMoZWxlbWVudC5kYXRhc2V0WyItaW52YWxpZCJdLCAndmFsdWUz
Jyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vcG9zdC1tZXNzYWdlLXN5bWJvbC5o
dG1sIGIvTGF5b3V0VGVzdHMvanMvZG9tL3Bvc3QtbWVzc2FnZS1zeW1ib2wuaHRtbAppbmRleCA3
YTFjZTAwYzM5ZDRlYzhmZWQyNjRkNmU3M2E1OTM0NTc1YjI3NmFkLi5iY2I2NjhhNTQxOGNkM2Vh
ZDYwZTQ1MWM2NjQ3MWY5ZjY2NGJhMTAwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9kb20v
cG9zdC1tZXNzYWdlLXN5bWJvbC5odG1sCisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9wb3N0LW1l
c3NhZ2Utc3ltYm9sLmh0bWwKQEAgLTcsMTYgKzcsMTYgQEAKIDxib2R5PgogPHNjcmlwdD4KIHRl
c3QoKCkgPT4gewotICAgIGFzc2VydF90aHJvd3MoIkRBVEFfQ0xPTkVfRVJSIiwgKCkgPT4gewor
ICAgIGFzc2VydF90aHJvd3NfZG9tKCJEQVRBX0NMT05FX0VSUiIsICgpID0+IHsKICAgICAgICAg
d2luZG93LnBvc3RNZXNzYWdlKFN5bWJvbCgiQ29jb2EiKSwgIioiKTsKICAgICB9KTsKLSAgICBh
c3NlcnRfdGhyb3dzKCJEQVRBX0NMT05FX0VSUiIsICgpID0+IHsKKyAgICBhc3NlcnRfdGhyb3dz
X2RvbSgiREFUQV9DTE9ORV9FUlIiLCAoKSA9PiB7CiAgICAgICAgIHdpbmRvdy5wb3N0TWVzc2Fn
ZSh7MDogU3ltYm9sKCJDb2NvYSIpfSwgIioiKTsKICAgICB9KTsKLSAgICBhc3NlcnRfdGhyb3dz
KCJEQVRBX0NMT05FX0VSUiIsICgpID0+IHsKKyAgICBhc3NlcnRfdGhyb3dzX2RvbSgiREFUQV9D
TE9ORV9FUlIiLCAoKSA9PiB7CiAgICAgICAgIHdpbmRvdy5wb3N0TWVzc2FnZSh7aGVsbG86IFN5
bWJvbCgiQ29jb2EiKX0sICIqIik7CiAgICAgfSk7Ci0gICAgYXNzZXJ0X3Rocm93cygiREFUQV9D
TE9ORV9FUlIiLCAoKSA9PiB7CisgICAgYXNzZXJ0X3Rocm93c19kb20oIkRBVEFfQ0xPTkVfRVJS
IiwgKCkgPT4gewogICAgICAgICB3aW5kb3cucG9zdE1lc3NhZ2UoW1N5bWJvbCgiQ29jb2EiKV0s
ICIqIik7CiAgICAgfSk7CiB9LCAiVGVzdHMgdGhhdCBwb3N0aW5nIGEgbWVzc2FnZSB0aGF0IGNv
bnRhaW5zIFN5bWJvbHMgZmFpbHMuIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20v
cXVldWUtbWljcm90YXNrLXdpbmRvdy5odG1sIGIvTGF5b3V0VGVzdHMvanMvZG9tL3F1ZXVlLW1p
Y3JvdGFzay13aW5kb3cuaHRtbAppbmRleCA0YjVlNGY5NDUzYjUxZTYzNjY5OTU3YzYwYzVmMTA1
NmEwMmNlOGQ0Li43YTVjMTM3ZjI0ZjA0N2E4ZDdmYmYzNDc3MWIwMWYzYTEyOWNkZjU5IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9kb20vcXVldWUtbWljcm90YXNrLXdpbmRvdy5odG1sCisr
KyBiL0xheW91dFRlc3RzL2pzL2RvbS9xdWV1ZS1taWNyb3Rhc2std2luZG93Lmh0bWwKQEAgLTc3
LDMxICs3NywzMSBAQCBwcm9taXNlX3Rlc3QoKCkgPT4gewogfSwgYHF1ZXVlTWljcm90YXNrIGFu
ZCBQcm9taXNlIHVzZXMgdGhlIHNhbWUgTWljcm90YXNrIHF1ZXVlYCk7CiAKIHRlc3QoKCkgPT4g
ewotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvciwgKCkgPT4geworICAgIGFzc2VydF90
aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiB7CiAgICAgICAgIHNlbGYucXVldWVNaWNyb3Rhc2so
KTsKICAgICB9KTsKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IsICgpID0+IHsKKyAg
ICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gewogICAgICAgICBzZWxmLnF1ZXVl
TWljcm90YXNrKG51bGwpOwogICAgIH0pOwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJv
ciwgKCkgPT4geworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiB7CiAgICAg
ICAgIHNlbGYucXVldWVNaWNyb3Rhc2sodW5kZWZpbmVkKTsKICAgICB9KTsKLSAgICBhc3NlcnRf
dGhyb3dzKG5ldyBUeXBlRXJyb3IsICgpID0+IHsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVF
cnJvciwgKCkgPT4gewogICAgICAgICBzZWxmLnF1ZXVlTWljcm90YXNrKDQyKTsKICAgICB9KTsK
LSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IsICgpID0+IHsKKyAgICBhc3NlcnRfdGhy
b3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gewogICAgICAgICBzZWxmLnF1ZXVlTWljcm90YXNrKCI0
MiIpOwogICAgIH0pOwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvciwgKCkgPT4gewor
ICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiB7CiAgICAgICAgIHNlbGYucXVl
dWVNaWNyb3Rhc2sodHJ1ZSk7CiAgICAgfSk7Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVy
cm9yLCAoKSA9PiB7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IHsKICAg
ICAgICAgc2VsZi5xdWV1ZU1pY3JvdGFzayhTeW1ib2woIjQyIikpOwogICAgIH0pOwotICAgIGFz
c2VydF90aHJvd3MobmV3IFR5cGVFcnJvciwgKCkgPT4geworICAgIGFzc2VydF90aHJvd3NfanMo
VHlwZUVycm9yLCAoKSA9PiB7CiAgICAgICAgIHNlbGYucXVldWVNaWNyb3Rhc2soe30pOwogICAg
IH0pOwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvciwgKCkgPT4geworICAgIGFzc2Vy
dF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiB7CiAgICAgICAgIHNlbGYucXVldWVNaWNyb3Rh
c2soeyBoYW5kbGVFdmVudCgpIHsgfSB9KTsKICAgICB9KTsKIH0sIGBxdWV1ZU1pY3JvdGFzayBz
aG91bGQgcmVqZWN0IG5vbi1mdW5jdGlvbiBhcmd1bWVudHNgKTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL21lZGlhL3RyYWNrL29wZXJhL2ludGVyZmFjZXMvVGV4dFRyYWNrQ3VlL3ZlcnRpY2Fs
Lmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay9vcGVyYS9pbnRlcmZhY2VzL1RleHRUcmFj
a0N1ZS92ZXJ0aWNhbC5odG1sCmluZGV4IDUwODQ1YWViZjEyOTRlZjFmY2FkNmQ0ODc4NTVlMTUz
OGNkZjM1NmIuLjhkMjEwNWM4OTJhMTM2NTUzOWZiM2M4YTg2N2E0NjU5YzZiZGVjNTIgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL29wZXJhL2ludGVyZmFjZXMvVGV4dFRyYWNr
Q3VlL3ZlcnRpY2FsLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svb3BlcmEvaW50
ZXJmYWNlcy9UZXh0VHJhY2tDdWUvdmVydGljYWwuaHRtbApAQCAtMjYsNyArMjYsNyBAQCB0ZXN0
KGZ1bmN0aW9uKCl7CiAgICAgYXNzZXJ0X2VxdWFscyhjMS52ZXJ0aWNhbCwgJ3JsJyk7CiAgICAg
YzEudmVydGljYWwgPSAnbHInOwogICAgIGFzc2VydF9lcXVhbHMoYzEudmVydGljYWwsICdscicp
OwotICAgIGFzc2VydF90aHJvd3MoJ1NZTlRBWF9FUlInLCBmdW5jdGlvbigpIHsKKyAgICBhc3Nl
cnRfdGhyb3dzX2RvbSgnU1lOVEFYX0VSUicsIGZ1bmN0aW9uKCkgewogICAgICAgICBjMS52ZXJ0
aWNhbCA9ICdybFx1MDAwMCc7CiAgICAgfSk7CiB9LCBkb2N1bWVudC50aXRsZSsnLCBzY3JpcHQt
Y3JlYXRlZCBjdWUnKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL29wZXJh
L3Jlc291cmNlcy9pZGxoYXJuZXNzLmpzIGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svb3BlcmEv
cmVzb3VyY2VzL2lkbGhhcm5lc3MuanMKaW5kZXggYjYyN2I0MGY4ZmNhOGQ4M2NhZGM5NmQzNzgx
ZTEwMWQzM2U3MmQ3OC4uNzAwNzBhMWNjYzA0OGVlYmM0NDJhNDM0MWZmMWM5NDJjOWM4ZjJhNyAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svb3BlcmEvcmVzb3VyY2VzL2lkbGhh
cm5lc3MuanMKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svb3BlcmEvcmVzb3VyY2VzL2lk
bGhhcm5lc3MuanMKQEAgLTk0NCwxMSArOTQ0LDExIEBAIElkbEV4Y2VwdGlvbi5wcm90b3R5cGUu
dGVzdF9tZW1iZXJzID0gZnVuY3Rpb24oKQogICAgICAgICAgICAgICAgIC8vIHRoZSBleGNlcHRp
b24gb24gd2hpY2ggdGhlIGV4Y2VwdGlvbiBmaWVsZCB3YXMgZGVjbGFyZWQsCiAgICAgICAgICAg
ICAgICAgLy8gdGhlbiB0aHJvdyBhIFR5cGVFcnJvci4iCiAgICAgICAgICAgICAgICAgLy8gVE9E
TzogVGVzdCBvbiBhIHBsYXRmb3JtIG9iamVjdCByZXByZXNlbnRpbmcgYW4gZXhjZXB0aW9uLgot
ICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigp
CisgICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkK
ICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIHdpbmRvd1t0aGlzLm5hbWVd
LnByb3RvdHlwZVttZW1iZXIubmFtZV07CiAgICAgICAgICAgICAgICAgfS5iaW5kKHRoaXMpLCAi
Z2V0dGluZyBwcm9wZXJ0eSBvbiBwcm90b3R5cGUgb2JqZWN0IG11c3QgdGhyb3cgVHlwZUVycm9y
Iik7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0
aW9uKCkKKyAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgZnVuY3Rp
b24oKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgZGVzYy5nZXQuY2Fs
bCh7fSk7CiAgICAgICAgICAgICAgICAgfS5iaW5kKHRoaXMpLCAiY2FsbGluZyBnZXR0ZXIgb24g
d3Jvbmcgb2JqZWN0IHR5cGUgbXVzdCB0aHJvdyBUeXBlRXJyb3IiKTsKQEAgLTEwODMsMTEgKzEw
ODMsMTEgQEAgSWRsSW50ZXJmYWNlLnByb3RvdHlwZS50ZXN0X3NlbGYgPSBmdW5jdGlvbigpCiAg
ICAgICAgICAgICAvLwogICAgICAgICAgICAgLy8gIklmIEkgd2FzIG5vdCBkZWNsYXJlZCB3aXRo
IGEgW0NvbnN0cnVjdG9yXSBleHRlbmRlZCBhdHRyaWJ1dGUsCiAgICAgICAgICAgICAvLyB0aGVu
IHRocm93IGEgVHlwZUVycm9yLiIKLSAgICAgICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVF
cnJvcigpLCBmdW5jdGlvbigpCisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJv
ciwgZnVuY3Rpb24oKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHdpbmRvd1t0aGlz
Lm5hbWVdKCk7CiAgICAgICAgICAgICB9LmJpbmQodGhpcyksICJpbnRlcmZhY2Ugb2JqZWN0IGRp
ZG4ndCB0aHJvdyBUeXBlRXJyb3Igd2hlbiBjYWxsZWQgYXMgYSBmdW5jdGlvbiIpOwotICAgICAg
ICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkKKyAgICAgICAg
ICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCBmdW5jdGlvbigpCiAgICAgICAgICAgICB7
CiAgICAgICAgICAgICAgICAgbmV3IHdpbmRvd1t0aGlzLm5hbWVdKCk7CiAgICAgICAgICAgICB9
LmJpbmQodGhpcyksICJpbnRlcmZhY2Ugb2JqZWN0IGRpZG4ndCB0aHJvdyBUeXBlRXJyb3Igd2hl
biBjYWxsZWQgYXMgYSBjb25zdHJ1Y3RvciIpOwpAQCAtMTMxMSw3ICsxMzExLDcgQEAgSWRsSW50
ZXJmYWNlLnByb3RvdHlwZS50ZXN0X21lbWJlcnMgPSBmdW5jdGlvbigpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnaW50ZXJmYWNlICInICsgdGhpcy5uYW1lICsgJyIgZG9l
cyBub3QgaGF2ZSBvd24gcHJvcGVydHkgInByb3RvdHlwZSInKTsKIAogICAgICAgICAgICAgICAg
IC8vIFRPRE86IE5lZWRzIHRvIHRlc3QgZm9yIExlbmllbnRUaGlzLgotICAgICAgICAgICAgICAg
IGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
ICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAg
ICAgICAgICAgIHdpbmRvd1t0aGlzLm5hbWVdLnByb3RvdHlwZVttZW1iZXIubmFtZV07CiAgICAg
ICAgICAgICAgICAgfS5iaW5kKHRoaXMpLCAiZ2V0dGluZyBwcm9wZXJ0eSBvbiBwcm90b3R5cGUg
b2JqZWN0IG11c3QgdGhyb3cgVHlwZUVycm9yIik7CiAKQEAgLTEzODQsNyArMTM4NCw3IEBAIElk
bEludGVyZmFjZS5wcm90b3R5cGUudGVzdF9tZW1iZXJzID0gZnVuY3Rpb24oKQogICAgICAgICAg
ICAgICAgIC8vCiAgICAgICAgICAgICAgICAgLy8gVE9ETzogV2UgY3VycmVudGx5IGlnbm9yZSB0
aGUgc3RhdGljIGFuZCBbSW1wbGljaXRUaGlzXQogICAgICAgICAgICAgICAgIC8vIGNhc2VzLgot
ICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgZnVuY3Rpb24o
KSB7CiAgICAgICAgICAgICAgICAgICAgIHdpbmRvd1t0aGlzLm5hbWVdLnByb3RvdHlwZVttZW1i
ZXIubmFtZV0uYXBwbHkobnVsbCwgYXJncyk7CiAgICAgICAgICAgICAgICAgfSwgImNhbGxpbmcg
b3BlcmF0aW9uIHdpdGggdGhpcyA9IG51bGwgZGlkbid0IHRocm93IFR5cGVFcnJvciIpOwogCkBA
IC0xMzkzLDcgKzEzOTMsNyBAQCBJZGxJbnRlcmZhY2UucHJvdG90eXBlLnRlc3RfbWVtYmVycyA9
IGZ1bmN0aW9uKCkKICAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgIC8vIFRPRE86
IFRlc3QgYSBwbGF0Zm9ybSBvYmplY3QgdGhhdCBpbXBsZW1lbnRzIHNvbWUgb3RoZXIKICAgICAg
ICAgICAgICAgICAvLyBpbnRlcmZhY2UuICAoSGF2ZSB0byBiZSBzdXJlIHRvIGdldCBpbmhlcml0
YW5jZSByaWdodC4pCi0gICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9y
KCksIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVy
cm9yLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgd2luZG93W3RoaXMubmFtZV0u
cHJvdG90eXBlW21lbWJlci5uYW1lXS5hcHBseSh7fSwgYXJncyk7CiAgICAgICAgICAgICAgICAg
fSwgImNhbGxpbmcgb3BlcmF0aW9uIHdpdGggdGhpcyA9IHt9IGRpZG4ndCB0aHJvdyBUeXBlRXJy
b3IiKTsKICAgICAgICAgICAgIH0uYmluZCh0aGlzKSwgdGhpcy5uYW1lICsgIiBpbnRlcmZhY2U6
IG9wZXJhdGlvbiAiICsgbWVtYmVyLm5hbWUgKwpAQCAtMTU2NSw3ICsxNTY1LDcgQEAgSWRsSW50
ZXJmYWNlLnByb3RvdHlwZS50ZXN0X2ludGVyZmFjZV9vZiA9IGZ1bmN0aW9uKGRlc2MsIG9iaiwg
ZXhjZXB0aW9uLCBleHBlY3QKICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAg
ICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkKKyAgICAgICAgICAg
ICAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkKICAgICAgICAg
ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgb2JqW21lbWJlci5uYW1lXS5h
cHBseShvYmosIGFyZ3MpOwogICAgICAgICAgICAgICAgICAgICB9LmJpbmQodGhpcyksICJDYWxs
ZWQgd2l0aCAiICsgaSArICIgYXJndW1lbnRzIik7CkBAIC0xNjM0LDcgKzE2MzQsNyBAQCBmdW5j
dGlvbiBkb19pbnRlcmZhY2VfYXR0cmlidXRlX2Fzc2VydHMob2JqLCBtZW1iZXIpCiAgICAgYXNz
ZXJ0X2VxdWFscyh0eXBlb2YgZGVzYy5nZXQsICJmdW5jdGlvbiIsICJnZXR0ZXIgbXVzdCBiZSBG
dW5jdGlvbiIpOwogICAgIGFzc2VydF9lcXVhbHMoZGVzYy5nZXQubGVuZ3RoLCAwLCAiZ2V0dGVy
IGxlbmd0aCBtdXN0IGJlIDAiKTsKICAgICAvLyBUT0RPOiBBY2NvdW50IGZvciBMZW5pZW50VGhp
cwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpCisgICAgYXNz
ZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIGRlc2Mu
Z2V0LmNhbGwoe30pOwogICAgIH0uYmluZCh0aGlzKSwgImNhbGxpbmcgZ2V0dGVyIG9uIHdyb25n
IG9iamVjdCB0eXBlIG11c3QgdGhyb3cgVHlwZUVycm9yIik7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9tZWRpYS90cmFjay90ZXh0dHJhY2tjdWUvdGV4dHRyYWNrY3VlLWNvbnN0cnVjdG9yLmh0
bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90ZXh0dHJhY2tjdWUvdGV4dHRyYWNrY3VlLWNv
bnN0cnVjdG9yLmh0bWwKaW5kZXggNGI1NDBlNDZmZTA0ZTEyZDIwZGU1YjRkOGY5NDYyZWJjZTM4
MTkzMC4uOWUzYTY2ZWVlMzBkYjAyOThiY2MxODQwMWJjZDgwMDJjMGU4M2E0NCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdGV4dHRyYWNrY3VlL3RleHR0cmFja2N1ZS1jb25z
dHJ1Y3Rvci5odG1sCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RleHR0cmFja2N1ZS90
ZXh0dHJhY2tjdWUtY29uc3RydWN0b3IuaHRtbApAQCAtNywxMyArNywxMyBAQCBpZiAod2luZG93
LmludGVybmFscykKICAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0R2VuZXJpY0N1ZUFQSUVuYWJs
ZWQodHJ1ZSk7CiAKIHRlc3QoIHRlc3QgPT4gewotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVF
cnJvciwgXyA9PiB7IG5ldyBUZXh0VHJhY2tDdWUoMCwgMTAsICIiKSB9KTsKLSAgICBhc3NlcnRf
dGhyb3dzKG5ldyBUeXBlRXJyb3IsIF8gPT4geyBuZXcgVGV4dFRyYWNrQ3VlKDAsIDEwLCB7IH0p
IH0pOwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvciwgXyA9PiB7IG5ldyBUZXh0VHJh
Y2tDdWUoMCwgMTAsIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKSB9KTsKKyAgICBhc3Nl
cnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgXyA9PiB7IG5ldyBUZXh0VHJhY2tDdWUoMCwgMTAsICIi
KSB9KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgXyA9PiB7IG5ldyBUZXh0VHJh
Y2tDdWUoMCwgMTAsIHsgfSkgfSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsIF8g
PT4geyBuZXcgVGV4dFRyYWNrQ3VlKDAsIDEwLCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYn
KSkgfSk7CiB9LCAnVGV4dFRyYWNrQ3VlIHNob3VsZCB0aHJvdyAiVHlwZUVycm9yIiBpZiB0aGUg
Y3VlIG5vZGUgaXMgbm90IGEgZG9jdW1lbnRGcmFnbWVudCcpOwogCiB0ZXN0KCB0ZXN0ID0+IHsK
LSAgICBhc3NlcnRfdGhyb3dzKCJJbnZhbGlkTm9kZVR5cGVFcnJvciIsIF8gPT4geyBuZXcgVGV4
dFRyYWNrQ3VlKDAsIDEwLCBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkpIH0pOwor
ICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlkTm9kZVR5cGVFcnJvciIsIF8gPT4geyBuZXcg
VGV4dFRyYWNrQ3VlKDAsIDEwLCBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkpIH0p
OwogfSwgJ1RleHRUcmFja0N1ZSBzaG91bGQgdGhyb3cgIkludmFsaWROb2RlVHlwZUVycm9yIiBp
ZiBwYXNzZWQgYW4gaW52YWxpZCBkb2N1bWVudEZyYWdtZW50Jyk7CiAKIGZ1bmN0aW9uIGNyZWF0
ZVZhbGlkQ3VlRnJhZ21lbnQoKQpAQCAtMzYsNyArMzYsNyBAQCB0ZXN0KCB0ZXN0ID0+IHsKICAg
ICBsZXQgdmFsaWRDdWUgPSBuZXcgVGV4dFRyYWNrQ3VlKDAsIDEwLCBmcmFnbWVudCk7CiAKICAg
ICBmcmFnbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0YWJsZScpKTsK
LSAgICBhc3NlcnRfdGhyb3dzKCJJbnZhbGlkTm9kZVR5cGVFcnJvciIsIF8gPT4geyBuZXcgVGV4
dFRyYWNrQ3VlKDAsIDEwLCBmcmFnbWVudCkgfSk7CisgICAgYXNzZXJ0X3Rocm93c19kb20oIklu
dmFsaWROb2RlVHlwZUVycm9yIiwgXyA9PiB7IG5ldyBUZXh0VHJhY2tDdWUoMCwgMTAsIGZyYWdt
ZW50KSB9KTsKIAogfSwgYFRleHRUcmFja0N1ZSBzaG91bGQgdGhyb3cgIkludmFsaWROb2RlVHlw
ZUVycm9yIiBpZiBkb2N1bWVudEZyYWdtZW50IGhhcyBhbiBpbnZhbGlkIG5vZGVgKTsKIApAQCAt
NDUsMTEgKzQ1LDExIEBAIHRlc3QoIHRlc3QgPT4gewogICAgIGxldCB2YWxpZEN1ZSA9IG5ldyBU
ZXh0VHJhY2tDdWUoMCwgMTAsIGZyYWdtZW50KTsKIAogICAgIGZyYWdtZW50LmZpcnN0Q2hpbGQu
cmVtb3ZlQXR0cmlidXRlKCdjdWViYWNrZ3JvdW5kJykKLSAgICBhc3NlcnRfdGhyb3dzKCJJbnZh
bGlkU3RhdGVFcnJvciIsIF8gPT4geyBuZXcgVGV4dFRyYWNrQ3VlKDAsIDEwLCBmcmFnbWVudCkg
fSk7CisgICAgYXNzZXJ0X3Rocm93c19kb20oIkludmFsaWRTdGF0ZUVycm9yIiwgXyA9PiB7IG5l
dyBUZXh0VHJhY2tDdWUoMCwgMTAsIGZyYWdtZW50KSB9KTsKIAogICAgIGZyYWdtZW50ID0gY3Jl
YXRlVmFsaWRDdWVGcmFnbWVudCgpOwogICAgIGZyYWdtZW50LmZpcnN0Q2hpbGQuZmlyc3RDaGls
ZC5yZW1vdmVBdHRyaWJ1dGUoJ2N1ZScpCi0gICAgYXNzZXJ0X3Rocm93cygiSW52YWxpZFN0YXRl
RXJyb3IiLCBfID0+IHsgbmV3IFRleHRUcmFja0N1ZSgwLCAxMCwgZnJhZ21lbnQpIH0pOworICAg
IGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlkU3RhdGVFcnJvciIsIF8gPT4geyBuZXcgVGV4dFRy
YWNrQ3VlKDAsIDEwLCBmcmFnbWVudCkgfSk7CiB9LCBgVGV4dFRyYWNrQ3VlIHNob3VsZCB0aHJv
dyAiSW52YWxpZFN0YXRlRXJyb3IiIGlmIGRvY3VtZW50RnJhZ21lbnQgZG9lc24ndCBoYXZlICdj
dWViYWNrZ3JvdW5kJyBhbmQgJ2N1ZScgbm9kZXNgKTsKIAogdGVzdCggdGVzdCA9PiB7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay93M2MvaW50ZXJmYWNlcy9UZXh0VHJhY2tD
dWUvYWxpZ24uaHRtbCBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3czYy9pbnRlcmZhY2VzL1Rl
eHRUcmFja0N1ZS9hbGlnbi5odG1sCmluZGV4IGJlNzBkYzMzNDdhM2I3MWVjNjdkZDkzMGY4MjBl
MWI2MDRlMTg5YWYuLjJmMmNjYzc5OWZhMmFjMzE1OTBhMGNlNTkxODgyZWMwOWZkMTAxNjkgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3czYy9pbnRlcmZhY2VzL1RleHRUcmFj
a0N1ZS9hbGlnbi5odG1sCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3czYy9pbnRlcmZh
Y2VzL1RleHRUcmFja0N1ZS9hbGlnbi5odG1sCkBAIC0yMSw3ICsyMSw3IEBAIHRlc3QoZnVuY3Rp
b24oKXsKICAgICBhc3NlcnRfZXF1YWxzKGMxLmFsaWduLCAnc3RhcnQnKTsKICAgICBjMS5hbGln
biA9ICdlbmQnOwogICAgIGFzc2VydF9lcXVhbHMoYzEuYWxpZ24sICdlbmQnKTsKLSAgICBhc3Nl
cnRfdGhyb3dzKCdTWU5UQVhfRVJSJywgZnVuY3Rpb24oKSB7CisgICAgYXNzZXJ0X3Rocm93c19k
b20oJ1NZTlRBWF9FUlInLCBmdW5jdGlvbigpIHsKICAgICAgICAgYzEuYWxpZ24gPSAnc3RhcnRc
dTAwMDAnOwogICAgIH0pOwogfSwgZG9jdW1lbnQudGl0bGUrJywgc2NyaXB0LWNyZWF0ZWQgY3Vl
Jyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy9wb2ludGVyLWV2
ZW50cy1pbXBsaWNpdC1jYXB0dXJlLXJlbGVhc2UtZXhjZXB0aW9uLmh0bWwgYi9MYXlvdXRUZXN0
cy9wb2ludGVyZXZlbnRzL2lvcy9wb2ludGVyLWV2ZW50cy1pbXBsaWNpdC1jYXB0dXJlLXJlbGVh
c2UtZXhjZXB0aW9uLmh0bWwKaW5kZXggNGQ0OGUyZjlhZDg1YzI2YmZhOGFlYmNiNGNmNjMzMmUz
YmFjNzcyOC4uNDZiNjQyM2FmYmJmZjE0YzhkZDc1YjYzY2E4NjQ5NjQzZGIzYzNmYSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvcG9pbnRlci1ldmVudHMtaW1wbGlj
aXQtY2FwdHVyZS1yZWxlYXNlLWV4Y2VwdGlvbi5odG1sCisrKyBiL0xheW91dFRlc3RzL3BvaW50
ZXJldmVudHMvaW9zL3BvaW50ZXItZXZlbnRzLWltcGxpY2l0LWNhcHR1cmUtcmVsZWFzZS1leGNl
cHRpb24uaHRtbApAQCAtMTUsNyArMTUsNyBAQAogdGFyZ2V0X3Rlc3QoKHRhcmdldCwgdGVzdCkg
PT4gewogICAgIHRhcmdldC5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVyZG93biIsIGV2ZW50ID0+
IHsKICAgICAgICAgYXNzZXJ0X3RydWUodGFyZ2V0Lmhhc1BvaW50ZXJDYXB0dXJlKGV2ZW50LnBv
aW50ZXJJZCkpOwotICAgICAgICBhc3NlcnRfdGhyb3dzKCJOb3RGb3VuZEVycm9yIiwgKCkgPT4g
dGFyZ2V0LnJlbGVhc2VQb2ludGVyQ2FwdHVyZShldmVudC5wb2ludGVySWQgKyAxKSk7CisgICAg
ICAgIGFzc2VydF90aHJvd3NfZG9tKCJOb3RGb3VuZEVycm9yIiwgKCkgPT4gdGFyZ2V0LnJlbGVh
c2VQb2ludGVyQ2FwdHVyZShldmVudC5wb2ludGVySWQgKyAxKSk7CiAgICAgICAgIGFzc2VydF90
cnVlKHRhcmdldC5oYXNQb2ludGVyQ2FwdHVyZShldmVudC5wb2ludGVySWQpKTsKICAgICB9KTsK
ICAgICB1aS50YXAoeyB4OiA1MCwgeTogNTAgfSkudGhlbigoKSA9PiB0ZXN0LmRvbmUoKSk7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy9wb2ludGVyLWV2ZW50cy1z
ZXQtcG9pbnRlci1jYXB0dXJlLWV4Y2VwdGlvbnMuaHRtbCBiL0xheW91dFRlc3RzL3BvaW50ZXJl
dmVudHMvaW9zL3BvaW50ZXItZXZlbnRzLXNldC1wb2ludGVyLWNhcHR1cmUtZXhjZXB0aW9ucy5o
dG1sCmluZGV4IGUzMjU2MTUxZTJhMWM2N2MxNzhlZWU3NmJkMjdkNWM4MzZlMmY4YzguLjRmZDAw
OGQ4YTFhYWNhOTIxMjllY2ZhN2MzMDJkZGRkMDJkNGE5YjggMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3BvaW50ZXJldmVudHMvaW9zL3BvaW50ZXItZXZlbnRzLXNldC1wb2ludGVyLWNhcHR1cmUt
ZXhjZXB0aW9ucy5odG1sCisrKyBiL0xheW91dFRlc3RzL3BvaW50ZXJldmVudHMvaW9zL3BvaW50
ZXItZXZlbnRzLXNldC1wb2ludGVyLWNhcHR1cmUtZXhjZXB0aW9ucy5odG1sCkBAIC0xMywxMSAr
MTMsMTEgQEAKICd1c2Ugc3RyaWN0JzsKIAogdGFyZ2V0X3Rlc3QoKHRhcmdldCwgdGVzdCkgPT4g
ewotICAgIGFzc2VydF90aHJvd3MoIk5vdEZvdW5kRXJyb3IiLCAoKSA9PiBkb2N1bWVudC5ib2R5
LnNldFBvaW50ZXJDYXB0dXJlKDEwKSwgIkNhbGxpbmcgc2V0UG9pbnRlckNhcHR1cmUoKSB3aXRo
IGFuIGludmFsaWQgcG9pbnRlciBpZCB0aHJvd3MgYSBOb3RGb3VuZEVycm9yIGV4Y2VwdGlvbi4i
KTsKKyAgICBhc3NlcnRfdGhyb3dzX2RvbSgiTm90Rm91bmRFcnJvciIsICgpID0+IGRvY3VtZW50
LmJvZHkuc2V0UG9pbnRlckNhcHR1cmUoMTApLCAiQ2FsbGluZyBzZXRQb2ludGVyQ2FwdHVyZSgp
IHdpdGggYW4gaW52YWxpZCBwb2ludGVyIGlkIHRocm93cyBhIE5vdEZvdW5kRXJyb3IgZXhjZXB0
aW9uLiIpOwogCiAgICAgdGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoInBvaW50ZXJkb3duIiwgZXZl
bnQgPT4gewogICAgICAgICBhc3NlcnRfdHJ1ZSh0YXJnZXQuaGFzUG9pbnRlckNhcHR1cmUoZXZl
bnQucG9pbnRlcklkKSk7Ci0gICAgICAgIGFzc2VydF90aHJvd3MoIkludmFsaWRTdGF0ZUVycm9y
IiwgKCkgPT4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iikuc2V0UG9pbnRlckNhcHR1cmUo
ZXZlbnQucG9pbnRlcklkKSwgIkNhbGxpbmcgc2V0UG9pbnRlckNhcHR1cmUoKSB3aXRoIGEgdmFs
aWQgcG9pbnRlciBpZCBvbiBhIGRpc2Nvbm5lY3RlZCBlbGVtZW50IHRocm93cyBhbiBJbnZhbGlk
U3RhdGVFcnJvciBleGNlcHRpb24uIik7CisgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZh
bGlkU3RhdGVFcnJvciIsICgpID0+IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLnNldFBv
aW50ZXJDYXB0dXJlKGV2ZW50LnBvaW50ZXJJZCksICJDYWxsaW5nIHNldFBvaW50ZXJDYXB0dXJl
KCkgd2l0aCBhIHZhbGlkIHBvaW50ZXIgaWQgb24gYSBkaXNjb25uZWN0ZWQgZWxlbWVudCB0aHJv
d3MgYW4gSW52YWxpZFN0YXRlRXJyb3IgZXhjZXB0aW9uLiIpOwogICAgIH0pOwogICAgIHVpLnRh
cCh7IHg6IDUwLCB5OiA1MCB9KS50aGVuKCgpID0+IHRlc3QuZG9uZSgpKTsKIH0sICJUaGUgc2V0
UG9pbnRlckNhcHR1cmUoKSBtZXRob2QgY2FuIHRocm93LiIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcG9pbnRlcmV2ZW50cy9wb2ludGVyLWlkLWNyYXNoLmh0bWwgYi9MYXlvdXRUZXN0cy9w
b2ludGVyZXZlbnRzL3BvaW50ZXItaWQtY3Jhc2guaHRtbAppbmRleCA3MDYzZGI0Zjg5ZTM1NmZk
YzgxZWM0MDRhNjRiYjI5OWVjZjRiYmFlLi4yZGRjZTcwODMwMWNhYWVjN2MyNmI1NjgzYmRmNGNm
YmFkN2ZkZjY0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL3BvaW50ZXIt
aWQtY3Jhc2guaHRtbAorKysgYi9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL3BvaW50ZXItaWQt
Y3Jhc2guaHRtbApAQCAtMTQsOCArMTQsOCBAQCB0ZXN0KCgpID0+IHsKICAgICBjb25zdCBlbGVt
ZW50ID0gZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJk
aXYiKSk7CiAgICAgZm9yIChsZXQgdmFsdWUgb2YgWzAsIE51bWJlci5NQVhfVkFMVUUsIE51bWJl
ci5NSU5fVkFMVUUsIE51bWJlci5NQVhfVkFMVUUgKyAxLCBOdW1iZXIuTUlOX1ZBTFVFIC0gMV0p
IHsKICAgICAgICAgZWxlbWVudC5oYXNQb2ludGVyQ2FwdHVyZSh2YWx1ZSk7Ci0gICAgICAgIGFz
c2VydF90aHJvd3MoIk5vdEZvdW5kRXJyb3IiLCAoKSA9PiBlbGVtZW50LnNldFBvaW50ZXJDYXB0
dXJlKHZhbHVlKSkKLSAgICAgICAgYXNzZXJ0X3Rocm93cygiTm90Rm91bmRFcnJvciIsICgpID0+
IGVsZW1lbnQucmVsZWFzZVBvaW50ZXJDYXB0dXJlKHZhbHVlKSkKKyAgICAgICAgYXNzZXJ0X3Ro
cm93c19kb20oIk5vdEZvdW5kRXJyb3IiLCAoKSA9PiBlbGVtZW50LnNldFBvaW50ZXJDYXB0dXJl
KHZhbHVlKSkKKyAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIk5vdEZvdW5kRXJyb3IiLCAoKSA9
PiBlbGVtZW50LnJlbGVhc2VQb2ludGVyQ2FwdHVyZSh2YWx1ZSkpCiAgICAgfQogICAgIGVsZW1l
bnQucmVtb3ZlKCk7CiB9LCAiQ2hlY2tpbmcgMCBjYW4gYmUgdXNlZCBhcyBhIFBvaW50ZXIgSUQu
Iik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvV2ViSURMUGFyc2VyLmpzIGIv
TGF5b3V0VGVzdHMvcmVzb3VyY2VzL1dlYklETFBhcnNlci5qcwppbmRleCA5ZTUwNGZjNmUxZmRl
ZmQxOWNjN2Y3MTgyMmUzZGJmZDRiZTVlNjc4Li4zMjJmMGUxMWE2YWU1NmViNjVhMWU1NzQ4MmZm
NTIwYjA2NTdkY2Q2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvV2ViSURMUGFy
c2VyLmpzCisrKyBiL0xheW91dFRlc3RzL3Jlc291cmNlcy9XZWJJRExQYXJzZXIuanMKQEAgLTEs
MTAxMiArMSwzNzI0IEBACisoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRp
b24ocm9vdCwgZmFjdG9yeSkgeworCWlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0
eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0JykKKwkJbW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7
CisJZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpCisJ
CWRlZmluZShbXSwgZmFjdG9yeSk7CisJZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVj
dCcpCisJCWV4cG9ydHNbIldlYklETDIiXSA9IGZhY3RvcnkoKTsKKwllbHNlCisJCXJvb3RbIldl
YklETDIiXSA9IGZhY3RvcnkoKTsKK30pKGdsb2JhbFRoaXMsIGZ1bmN0aW9uKCkgeworcmV0dXJu
IC8qKioqKiovICgoKSA9PiB7IC8vIHdlYnBhY2tCb290c3RyYXAKKy8qKioqKiovIAkidXNlIHN0
cmljdCI7CisvKioqKioqLyAJdmFyIF9fd2VicGFja19tb2R1bGVzX18gPSAoWworLyogMCAqLywK
Ky8qIDEgKi8KKy8qKiovICgoX191bnVzZWRfd2VicGFja19fX3dlYnBhY2tfbW9kdWxlX18sIF9f
d2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pID0+IHsKIAorX193ZWJwYWNr
X3JlcXVpcmVfXy5yKF9fd2VicGFja19leHBvcnRzX18pOworLyogaGFybW9ueSBleHBvcnQgKi8g
X193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIHsKKy8qIGhhcm1vbnkg
ZXhwb3J0ICovICAgInBhcnNlIjogKCkgPT4gKC8qIGJpbmRpbmcgKi8gcGFyc2UpCisvKiBoYXJt
b255IGV4cG9ydCAqLyB9KTsKKy8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfdG9rZW5pc2VyX2pz
X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpOwor
LyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9wcm9kdWN0aW9uc19lbnVtX2pzX19XRUJQQUNLX0lN
UE9SVEVEX01PRFVMRV8xX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1KTsKKy8qIGhhcm1vbnkg
aW1wb3J0ICovIHZhciBfcHJvZHVjdGlvbnNfaW5jbHVkZXNfanNfX1dFQlBBQ0tfSU1QT1JURURf
TU9EVUxFXzJfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTYpOworLyogaGFybW9ueSBpbXBvcnQg
Ki8gdmFyIF9wcm9kdWN0aW9uc19leHRlbmRlZF9hdHRyaWJ1dGVzX2pzX19XRUJQQUNLX0lNUE9S
VEVEX01PRFVMRV8zX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgpOworLyogaGFybW9ueSBpbXBv
cnQgKi8gdmFyIF9wcm9kdWN0aW9uc190eXBlZGVmX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVM
RV80X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE3KTsKKy8qIGhhcm1vbnkgaW1wb3J0ICovIHZh
ciBfcHJvZHVjdGlvbnNfY2FsbGJhY2tfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzVfXyA9
IF9fd2VicGFja19yZXF1aXJlX18oMTgpOworLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9wcm9k
dWN0aW9uc19pbnRlcmZhY2VfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzZfXyA9IF9fd2Vi
cGFja19yZXF1aXJlX18oMTkpOworLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9wcm9kdWN0aW9u
c19taXhpbl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfN19fID0gX193ZWJwYWNrX3JlcXVp
cmVfXygyNSk7CisvKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX3Byb2R1Y3Rpb25zX2RpY3Rpb25h
cnlfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzhfXyA9IF9fd2VicGFja19yZXF1aXJlX18o
MjYpOworLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9wcm9kdWN0aW9uc19uYW1lc3BhY2VfanNf
X1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzlfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMjgpOwor
LyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9wcm9kdWN0aW9uc19jYWxsYmFja19pbnRlcmZhY2Vf
anNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzEwX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI5
KTsKKy8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfcHJvZHVjdGlvbnNfaGVscGVyc19qc19fV0VC
UEFDS19JTVBPUlRFRF9NT0RVTEVfMTFfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7CiAKLShm
dW5jdGlvbiAoKSB7Ci0gICAgdmFyIHRva2VuaXNlID0gZnVuY3Rpb24gKHN0cikgewotICAgICAg
ICB2YXIgdG9rZW5zID0gW10KLSAgICAgICAgLCAgIHJlID0gewotICAgICAgICAgICAgICAgICJm
bG9hdCI6ICAgICAgICAvXi0/KChbMC05XStcLlswLTldKnxbMC05XSpcLlswLTldKykoW0VlXVst
K10/WzAtOV0rKT98WzAtOV0rW0VlXVstK10/WzAtOV0rKS8KLSAgICAgICAgICAgICwgICAiaW50
ZWdlciI6ICAgICAgL14tPygwKFtYeF1bMC05QS1GYS1mXSt8WzAtN10qKXxbMS05XVswLTldKikv
Ci0gICAgICAgICAgICAsICAgImlkZW50aWZpZXIiOiAgIC9eW0EtWl9hLXpdWzAtOUEtWl9hLXpd
Ki8KLSAgICAgICAgICAgICwgICAic3RyaW5nIjogICAgICAgL14iW14iXSoiLwotICAgICAgICAg
ICAgLCAgICJ3aGl0ZXNwYWNlIjogICAvXig/OltcdFxuXHIgXSt8W1x0XG5cciBdKigoXC9cLy4q
fFwvXCooLnxcbnxccikqP1wqXC8pW1x0XG5cciBdKikpKy8KLSAgICAgICAgICAgICwgICAib3Ro
ZXIiOiAgICAgICAgL15bXlx0XG5cciAwLTlBLVpfYS16XS8KLSAgICAgICAgICAgIH0KLSAgICAg
ICAgLCAgIHR5cGVzID0gW10KLSAgICAgICAgOwotICAgICAgICBmb3IgKHZhciBrIGluIHJlKSB0
eXBlcy5wdXNoKGspOwotICAgICAgICB3aGlsZSAoc3RyLmxlbmd0aCA+IDApIHsKLSAgICAgICAg
ICAgIHZhciBtYXRjaGVkID0gZmFsc2U7Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0gMCwgbiA9
IHR5cGVzLmxlbmd0aDsgaSA8IG47IGkrKykgewotICAgICAgICAgICAgICAgIHZhciB0eXBlID0g
dHlwZXNbaV07Ci0gICAgICAgICAgICAgICAgc3RyID0gc3RyLnJlcGxhY2UocmVbdHlwZV0sIGZ1
bmN0aW9uICh0b2spIHsKLSAgICAgICAgICAgICAgICAgICAgdG9rZW5zLnB1c2goeyB0eXBlOiB0
eXBlLCB2YWx1ZTogdG9rIH0pOwotICAgICAgICAgICAgICAgICAgICBtYXRjaGVkID0gdHJ1ZTsK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuICIiOwotICAgICAgICAgICAgICAgIH0pOwotICAg
ICAgICAgICAgICAgIGlmIChtYXRjaGVkKSBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGlmIChtYXRjaGVkKSBjb250aW51ZTsKLSAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigi
VG9rZW4gc3RyZWFtIG5vdCBwcm9ncmVzc2luZyIpOworCisKKworCisKKworCisKKworCisKKwor
LyoqCisgKiBAcGFyYW0ge1Rva2VuaXNlcn0gdG9rZW5pc2VyCisgKiBAcGFyYW0ge29iamVjdH0g
b3B0aW9ucworICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5jb25jcmV0ZV0KKyAqLworZnVu
Y3Rpb24gcGFyc2VCeVRva2Vucyh0b2tlbmlzZXIsIG9wdGlvbnMpIHsKKyAgY29uc3Qgc291cmNl
ID0gdG9rZW5pc2VyLnNvdXJjZTsKKworICBmdW5jdGlvbiBlcnJvcihzdHIpIHsKKyAgICB0b2tl
bmlzZXIuZXJyb3Ioc3RyKTsKKyAgfQorCisgIGZ1bmN0aW9uIGNvbnN1bWUoLi4uY2FuZGlkYXRl
cykgeworICAgIHJldHVybiB0b2tlbmlzZXIuY29uc3VtZSguLi5jYW5kaWRhdGVzKTsKKyAgfQor
CisgIGZ1bmN0aW9uIGNhbGxiYWNrKCkgeworICAgIGNvbnN0IGNhbGxiYWNrID0gY29uc3VtZSgi
Y2FsbGJhY2siKTsKKyAgICBpZiAoIWNhbGxiYWNrKSByZXR1cm47CisgICAgaWYgKHRva2VuaXNl
ci5wcm9iZSgiaW50ZXJmYWNlIikpIHsKKyAgICAgIHJldHVybiBfcHJvZHVjdGlvbnNfY2FsbGJh
Y2tfaW50ZXJmYWNlX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xMF9fLkNhbGxiYWNrSW50
ZXJmYWNlLnBhcnNlKHRva2VuaXNlciwgY2FsbGJhY2spOworICAgIH0KKyAgICByZXR1cm4gX3By
b2R1Y3Rpb25zX2NhbGxiYWNrX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X18uQ2FsbGJh
Y2tGdW5jdGlvbi5wYXJzZSh0b2tlbmlzZXIsIGNhbGxiYWNrKTsKKyAgfQorCisgIGZ1bmN0aW9u
IGludGVyZmFjZV8ob3B0cykgeworICAgIGNvbnN0IGJhc2UgPSBjb25zdW1lKCJpbnRlcmZhY2Ui
KTsKKyAgICBpZiAoIWJhc2UpIHJldHVybjsKKyAgICBjb25zdCByZXQgPQorICAgICAgX3Byb2R1
Y3Rpb25zX21peGluX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV83X18uTWl4aW4ucGFyc2Uo
dG9rZW5pc2VyLCBiYXNlLCBvcHRzKSB8fAorICAgICAgX3Byb2R1Y3Rpb25zX2ludGVyZmFjZV9q
c19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNl9fLkludGVyZmFjZS5wYXJzZSh0b2tlbmlzZXIs
IGJhc2UsIG9wdHMpIHx8CisgICAgICBlcnJvcigiSW50ZXJmYWNlIGhhcyBubyBwcm9wZXIgYm9k
eSIpOworICAgIHJldHVybiByZXQ7CisgIH0KKworICBmdW5jdGlvbiBwYXJ0aWFsKCkgeworICAg
IGNvbnN0IHBhcnRpYWwgPSBjb25zdW1lKCJwYXJ0aWFsIik7CisgICAgaWYgKCFwYXJ0aWFsKSBy
ZXR1cm47CisgICAgcmV0dXJuICgKKyAgICAgIF9wcm9kdWN0aW9uc19kaWN0aW9uYXJ5X2pzX19X
RUJQQUNLX0lNUE9SVEVEX01PRFVMRV84X18uRGljdGlvbmFyeS5wYXJzZSh0b2tlbmlzZXIsIHsg
cGFydGlhbCB9KSB8fAorICAgICAgaW50ZXJmYWNlXyh7IHBhcnRpYWwgfSkgfHwKKyAgICAgIF9w
cm9kdWN0aW9uc19uYW1lc3BhY2VfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzlfXy5OYW1l
c3BhY2UucGFyc2UodG9rZW5pc2VyLCB7IHBhcnRpYWwgfSkgfHwKKyAgICAgIGVycm9yKCJQYXJ0
aWFsIGRvZXNuJ3QgYXBwbHkgdG8gYW55dGhpbmciKQorICAgICk7CisgIH0KKworICBmdW5jdGlv
biBkZWZpbml0aW9uKCkgeworICAgIHJldHVybiAoCisgICAgICBjYWxsYmFjaygpIHx8CisgICAg
ICBpbnRlcmZhY2VfKCkgfHwKKyAgICAgIHBhcnRpYWwoKSB8fAorICAgICAgX3Byb2R1Y3Rpb25z
X2RpY3Rpb25hcnlfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzhfXy5EaWN0aW9uYXJ5LnBh
cnNlKHRva2VuaXNlcikgfHwKKyAgICAgIF9wcm9kdWN0aW9uc19lbnVtX2pzX19XRUJQQUNLX0lN
UE9SVEVEX01PRFVMRV8xX18uRW51bS5wYXJzZSh0b2tlbmlzZXIpIHx8CisgICAgICBfcHJvZHVj
dGlvbnNfdHlwZWRlZl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fLlR5cGVkZWYucGFy
c2UodG9rZW5pc2VyKSB8fAorICAgICAgX3Byb2R1Y3Rpb25zX2luY2x1ZGVzX2pzX19XRUJQQUNL
X0lNUE9SVEVEX01PRFVMRV8yX18uSW5jbHVkZXMucGFyc2UodG9rZW5pc2VyKSB8fAorICAgICAg
X3Byb2R1Y3Rpb25zX25hbWVzcGFjZV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfOV9fLk5h
bWVzcGFjZS5wYXJzZSh0b2tlbmlzZXIpCisgICAgKTsKKyAgfQorCisgIGZ1bmN0aW9uIGRlZmlu
aXRpb25zKCkgeworICAgIGlmICghc291cmNlLmxlbmd0aCkgcmV0dXJuIFtdOworICAgIGNvbnN0
IGRlZnMgPSBbXTsKKyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgY29uc3QgZWEgPSBfcHJvZHVj
dGlvbnNfZXh0ZW5kZWRfYXR0cmlidXRlc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19f
LkV4dGVuZGVkQXR0cmlidXRlcy5wYXJzZSh0b2tlbmlzZXIpOworICAgICAgY29uc3QgZGVmID0g
ZGVmaW5pdGlvbigpOworICAgICAgaWYgKCFkZWYpIHsKKyAgICAgICAgaWYgKGVhLmxlbmd0aCkg
ZXJyb3IoIlN0cmF5IGV4dGVuZGVkIGF0dHJpYnV0ZXMiKTsKKyAgICAgICAgYnJlYWs7CisgICAg
ICB9CisgICAgICAoMCxfcHJvZHVjdGlvbnNfaGVscGVyc19qc19fV0VCUEFDS19JTVBPUlRFRF9N
T0RVTEVfMTFfXy5hdXRvUGFyZW50ZXIpKGRlZikuZXh0QXR0cnMgPSBlYTsKKyAgICAgIGRlZnMu
cHVzaChkZWYpOworICAgIH0KKyAgICBjb25zdCBlb2YgPSB0b2tlbmlzZXIuY29uc3VtZVR5cGUo
ImVvZiIpOworICAgIGlmIChvcHRpb25zLmNvbmNyZXRlKSB7CisgICAgICBkZWZzLnB1c2goZW9m
KTsKKyAgICB9CisgICAgcmV0dXJuIGRlZnM7CisgIH0KKyAgY29uc3QgcmVzID0gZGVmaW5pdGlv
bnMoKTsKKyAgaWYgKHRva2VuaXNlci5wb3NpdGlvbiA8IHNvdXJjZS5sZW5ndGgpIGVycm9yKCJV
bnJlY29nbmlzZWQgdG9rZW5zIik7CisgIHJldHVybiByZXM7Cit9CisKKy8qKgorICogQHBhcmFt
IHtzdHJpbmd9IHN0cgorICogQHBhcmFtIHtvYmplY3R9IFtvcHRpb25zXQorICogQHBhcmFtIHsq
fSBbb3B0aW9ucy5zb3VyY2VOYW1lXQorICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5jb25j
cmV0ZV0KKyAqLworZnVuY3Rpb24gcGFyc2Uoc3RyLCBvcHRpb25zID0ge30pIHsKKyAgY29uc3Qg
dG9rZW5pc2VyID0gbmV3IF90b2tlbmlzZXJfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBf
Xy5Ub2tlbmlzZXIoc3RyKTsKKyAgaWYgKHR5cGVvZiBvcHRpb25zLnNvdXJjZU5hbWUgIT09ICJ1
bmRlZmluZWQiKSB7CisgICAgdG9rZW5pc2VyLnNvdXJjZS5uYW1lID0gb3B0aW9ucy5zb3VyY2VO
YW1lOworICB9CisgIHJldHVybiBwYXJzZUJ5VG9rZW5zKHRva2VuaXNlciwgb3B0aW9ucyk7Cit9
CisKKworLyoqKi8gfSksCisvKiAyICovCisvKioqLyAoKF9fdW51c2VkX3dlYnBhY2tfX193ZWJw
YWNrX21vZHVsZV9fLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSA9
PiB7CisKK19fd2VicGFja19yZXF1aXJlX18ucihfX3dlYnBhY2tfZXhwb3J0c19fKTsKKy8qIGhh
cm1vbnkgZXhwb3J0ICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19f
LCB7CisvKiBoYXJtb255IGV4cG9ydCAqLyAgICJ0eXBlTmFtZUtleXdvcmRzIjogKCkgPT4gKC8q
IGJpbmRpbmcgKi8gdHlwZU5hbWVLZXl3b3JkcyksCisvKiBoYXJtb255IGV4cG9ydCAqLyAgICJz
dHJpbmdUeXBlcyI6ICgpID0+ICgvKiBiaW5kaW5nICovIHN0cmluZ1R5cGVzKSwKKy8qIGhhcm1v
bnkgZXhwb3J0ICovICAgImFyZ3VtZW50TmFtZUtleXdvcmRzIjogKCkgPT4gKC8qIGJpbmRpbmcg
Ki8gYXJndW1lbnROYW1lS2V5d29yZHMpLAorLyogaGFybW9ueSBleHBvcnQgKi8gICAiVG9rZW5p
c2VyIjogKCkgPT4gKC8qIGJpbmRpbmcgKi8gVG9rZW5pc2VyKSwKKy8qIGhhcm1vbnkgZXhwb3J0
ICovICAgIldlYklETFBhcnNlRXJyb3IiOiAoKSA9PiAoLyogYmluZGluZyAqLyBXZWJJRExQYXJz
ZUVycm9yKQorLyogaGFybW9ueSBleHBvcnQgKi8gfSk7CisvKiBoYXJtb255IGltcG9ydCAqLyB2
YXIgX2Vycm9yX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18gPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDMpOworLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9wcm9kdWN0aW9uc19oZWxwZXJz
X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQp
OworCisKKworLy8gVGhlc2UgcmVndWxhciBleHByZXNzaW9ucyB1c2UgdGhlIHN0aWNreSBmbGFn
IHNvIHRoZXkgd2lsbCBvbmx5IG1hdGNoIGF0CisvLyB0aGUgY3VycmVudCBsb2NhdGlvbiAoaWUu
IHRoZSBvZmZzZXQgb2YgbGFzdEluZGV4KS4KK2NvbnN0IHRva2VuUmUgPSB7CisgIC8vIFRoaXMg
ZXhwcmVzc2lvbiB1c2VzIGEgbG9va2FoZWFkIGFzc2VydGlvbiB0byBjYXRjaCBmYWxzZSBtYXRj
aGVzCisgIC8vIGFnYWluc3QgaW50ZWdlcnMgZWFybHkuCisgIGRlY2ltYWw6CisgICAgLy0/KD89
WzAtOV0qXC58WzAtOV0rW2VFXSkoKFswLTldK1wuWzAtOV0qfFswLTldKlwuWzAtOV0rKShbRWVd
Wy0rXT9bMC05XSspP3xbMC05XStbRWVdWy0rXT9bMC05XSspL3ksCisgIGludGVnZXI6IC8tPygw
KFtYeF1bMC05QS1GYS1mXSt8WzAtN10qKXxbMS05XVswLTldKikveSwKKyAgaWRlbnRpZmllcjog
L1tfLV0/W0EtWmEtel1bMC05QS1aX2Etei1dKi95LAorICBzdHJpbmc6IC8iW14iXSoiL3ksCisg
IHdoaXRlc3BhY2U6IC9bXHRcblxyIF0rL3ksCisgIGNvbW1lbnQ6IC9cL1wvLip8XC9cKigufFxu
KSo/XCpcLy95LAorICBvdGhlcjogL1teXHRcblxyIDAtOUEtWmEtel0veSwKK307CisKK2NvbnN0
IHR5cGVOYW1lS2V5d29yZHMgPSBbCisgICJBcnJheUJ1ZmZlciIsCisgICJEYXRhVmlldyIsCisg
ICJJbnQ4QXJyYXkiLAorICAiSW50MTZBcnJheSIsCisgICJJbnQzMkFycmF5IiwKKyAgIlVpbnQ4
QXJyYXkiLAorICAiVWludDE2QXJyYXkiLAorICAiVWludDMyQXJyYXkiLAorICAiVWludDhDbGFt
cGVkQXJyYXkiLAorICAiRmxvYXQzMkFycmF5IiwKKyAgIkZsb2F0NjRBcnJheSIsCisgICJhbnki
LAorICAib2JqZWN0IiwKKyAgInN5bWJvbCIsCitdOworCitjb25zdCBzdHJpbmdUeXBlcyA9IFsi
Qnl0ZVN0cmluZyIsICJET01TdHJpbmciLCAiVVNWU3RyaW5nIl07CisKK2NvbnN0IGFyZ3VtZW50
TmFtZUtleXdvcmRzID0gWworICAiYXN5bmMiLAorICAiYXR0cmlidXRlIiwKKyAgImNhbGxiYWNr
IiwKKyAgImNvbnN0IiwKKyAgImNvbnN0cnVjdG9yIiwKKyAgImRlbGV0ZXIiLAorICAiZGljdGlv
bmFyeSIsCisgICJlbnVtIiwKKyAgImdldHRlciIsCisgICJpbmNsdWRlcyIsCisgICJpbmhlcml0
IiwKKyAgImludGVyZmFjZSIsCisgICJpdGVyYWJsZSIsCisgICJtYXBsaWtlIiwKKyAgIm5hbWVz
cGFjZSIsCisgICJwYXJ0aWFsIiwKKyAgInJlcXVpcmVkIiwKKyAgInNldGxpa2UiLAorICAic2V0
dGVyIiwKKyAgInN0YXRpYyIsCisgICJzdHJpbmdpZmllciIsCisgICJ0eXBlZGVmIiwKKyAgInVu
cmVzdHJpY3RlZCIsCitdOworCitjb25zdCBub25SZWdleFRlcm1pbmFscyA9IFsKKyAgIi1JbmZp
bml0eSIsCisgICJGcm96ZW5BcnJheSIsCisgICJJbmZpbml0eSIsCisgICJOYU4iLAorICAiT2Jz
ZXJ2YWJsZUFycmF5IiwKKyAgIlByb21pc2UiLAorICAiYmlnaW50IiwKKyAgImJvb2xlYW4iLAor
ICAiYnl0ZSIsCisgICJkb3VibGUiLAorICAiZmFsc2UiLAorICAiZmxvYXQiLAorICAibG9uZyIs
CisgICJtaXhpbiIsCisgICJudWxsIiwKKyAgIm9jdGV0IiwKKyAgIm9wdGlvbmFsIiwKKyAgIm9y
IiwKKyAgInJlYWRvbmx5IiwKKyAgInJlY29yZCIsCisgICJzZXF1ZW5jZSIsCisgICJzaG9ydCIs
CisgICJ0cnVlIiwKKyAgInVuZGVmaW5lZCIsCisgICJ1bnNpZ25lZCIsCisgICJ2b2lkIiwKK10u
Y29uY2F0KGFyZ3VtZW50TmFtZUtleXdvcmRzLCBzdHJpbmdUeXBlcywgdHlwZU5hbWVLZXl3b3Jk
cyk7CisKK2NvbnN0IHB1bmN0dWF0aW9ucyA9IFsKKyAgIigiLAorICAiKSIsCisgICIsIiwKKyAg
Ii4uLiIsCisgICI6IiwKKyAgIjsiLAorICAiPCIsCisgICI9IiwKKyAgIj4iLAorICAiPyIsCisg
ICJbIiwKKyAgIl0iLAorICAieyIsCisgICJ9IiwKK107CisKK2NvbnN0IHJlc2VydmVkID0gWwor
ICAvLyAiY29uc3RydWN0b3IiIGlzIG5vdyBhIGtleXdvcmQKKyAgIl9jb25zdHJ1Y3RvciIsCisg
ICJ0b1N0cmluZyIsCisgICJfdG9TdHJpbmciLAorXTsKKworLyoqCisgKiBAdHlwZWRlZiB7QXJy
YXlJdGVtVHlwZTxSZXR1cm5UeXBlPHR5cGVvZiB0b2tlbmlzZT4+fSBUb2tlbgorICogQHBhcmFt
IHtzdHJpbmd9IHN0cgorICovCitmdW5jdGlvbiB0b2tlbmlzZShzdHIpIHsKKyAgY29uc3QgdG9r
ZW5zID0gW107CisgIGxldCBsYXN0Q2hhckluZGV4ID0gMDsKKyAgbGV0IHRyaXZpYSA9ICIiOwor
ICBsZXQgbGluZSA9IDE7CisgIGxldCBpbmRleCA9IDA7CisgIHdoaWxlIChsYXN0Q2hhckluZGV4
IDwgc3RyLmxlbmd0aCkgeworICAgIGNvbnN0IG5leHRDaGFyID0gc3RyLmNoYXJBdChsYXN0Q2hh
ckluZGV4KTsKKyAgICBsZXQgcmVzdWx0ID0gLTE7CisKKyAgICBpZiAoL1tcdFxuXHIgXS8udGVz
dChuZXh0Q2hhcikpIHsKKyAgICAgIHJlc3VsdCA9IGF0dGVtcHRUb2tlbk1hdGNoKCJ3aGl0ZXNw
YWNlIiwgeyBub0ZsdXNoVHJpdmlhOiB0cnVlIH0pOworICAgIH0gZWxzZSBpZiAobmV4dENoYXIg
PT09ICIvIikgeworICAgICAgcmVzdWx0ID0gYXR0ZW1wdFRva2VuTWF0Y2goImNvbW1lbnQiLCB7
IG5vRmx1c2hUcml2aWE6IHRydWUgfSk7CisgICAgfQorCisgICAgaWYgKHJlc3VsdCAhPT0gLTEp
IHsKKyAgICAgIGNvbnN0IGN1cnJlbnRUcml2aWEgPSB0b2tlbnMucG9wKCkudmFsdWU7CisgICAg
ICBsaW5lICs9IChjdXJyZW50VHJpdmlhLm1hdGNoKC9cbi9nKSB8fCBbXSkubGVuZ3RoOworICAg
ICAgdHJpdmlhICs9IGN1cnJlbnRUcml2aWE7CisgICAgICBpbmRleCAtPSAxOworICAgIH0gZWxz
ZSBpZiAoL1stMC05LkEtWl9hLXpdLy50ZXN0KG5leHRDaGFyKSkgeworICAgICAgcmVzdWx0ID0g
YXR0ZW1wdFRva2VuTWF0Y2goImRlY2ltYWwiKTsKKyAgICAgIGlmIChyZXN1bHQgPT09IC0xKSB7
CisgICAgICAgIHJlc3VsdCA9IGF0dGVtcHRUb2tlbk1hdGNoKCJpbnRlZ2VyIik7CisgICAgICB9
CisgICAgICBpZiAocmVzdWx0ID09PSAtMSkgeworICAgICAgICByZXN1bHQgPSBhdHRlbXB0VG9r
ZW5NYXRjaCgiaWRlbnRpZmllciIpOworICAgICAgICBjb25zdCBsYXN0SW5kZXggPSB0b2tlbnMu
bGVuZ3RoIC0gMTsKKyAgICAgICAgY29uc3QgdG9rZW4gPSB0b2tlbnNbbGFzdEluZGV4XTsKKyAg
ICAgICAgaWYgKHJlc3VsdCAhPT0gLTEpIHsKKyAgICAgICAgICBpZiAocmVzZXJ2ZWQuaW5jbHVk
ZXModG9rZW4udmFsdWUpKSB7CisgICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gYCR7KDAsX3By
b2R1Y3Rpb25zX2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXy51bmVzY2Fw
ZSkoCisgICAgICAgICAgICAgIHRva2VuLnZhbHVlCisgICAgICAgICAgICApfSBpcyBhIHJlc2Vy
dmVkIGlkZW50aWZpZXIgYW5kIG11c3Qgbm90IGJlIHVzZWQuYDsKKyAgICAgICAgICAgIHRocm93
IG5ldyBXZWJJRExQYXJzZUVycm9yKAorICAgICAgICAgICAgICAoMCxfZXJyb3JfanNfX1dFQlBB
Q0tfSU1QT1JURURfTU9EVUxFXzBfXy5zeW50YXhFcnJvcikodG9rZW5zLCBsYXN0SW5kZXgsIG51
bGwsIG1lc3NhZ2UpCisgICAgICAgICAgICApOworICAgICAgICAgIH0gZWxzZSBpZiAobm9uUmVn
ZXhUZXJtaW5hbHMuaW5jbHVkZXModG9rZW4udmFsdWUpKSB7CisgICAgICAgICAgICB0b2tlbi50
eXBlID0gImlubGluZSI7CisgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0
b2tlbnM7Ci0gICAgfTsKLSAgICAKLSAgICB2YXIgcGFyc2UgPSBmdW5jdGlvbiAodG9rZW5zLCBv
cHQpIHsKLSAgICAgICAgdmFyIGxpbmUgPSAxOwotICAgICAgICB0b2tlbnMgPSB0b2tlbnMuc2xp
Y2UoKTsKLSAgICAgICAgCi0gICAgICAgIHZhciBGTE9BVCA9ICJmbG9hdCIKLSAgICAgICAgLCAg
IElOVCA9ICJpbnRlZ2VyIgotICAgICAgICAsICAgSUQgPSAiaWRlbnRpZmllciIKLSAgICAgICAg
LCAgIFNUUiA9ICJzdHJpbmciCi0gICAgICAgICwgICBPVEhFUiA9ICJvdGhlciIKLSAgICAgICAg
OwotICAgICAgICAKLSAgICAgICAgdmFyIFdlYklETFBhcnNlRXJyb3IgPSBmdW5jdGlvbiAoc3Ry
LCBsaW5lLCBpbnB1dCwgdG9rZW5zKSB7Ci0gICAgICAgICAgICB0aGlzLm1lc3NhZ2UgPSBzdHI7
Ci0gICAgICAgICAgICB0aGlzLmxpbmUgPSBsaW5lOwotICAgICAgICAgICAgdGhpcy5pbnB1dCA9
IGlucHV0OwotICAgICAgICAgICAgdGhpcy50b2tlbnMgPSB0b2tlbnM7Ci0gICAgICAgIH07Ci0g
ICAgICAgIFdlYklETFBhcnNlRXJyb3IucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkg
ewotICAgICAgICAgICAgcmV0dXJuIHRoaXMubWVzc2FnZSArICIsIGxpbmUgIiArIHRoaXMubGlu
ZSArICIgKHRva2VuczogJyIgKyB0aGlzLmlucHV0ICsgIicpXG4iICsKLSAgICAgICAgICAgICAg
ICAgICBKU09OLnN0cmluZ2lmeSh0aGlzLnRva2VucywgbnVsbCwgNCk7Ci0gICAgICAgIH07Ci0g
ICAgICAgIAotICAgICAgICB2YXIgZXJyb3IgPSBmdW5jdGlvbiAoc3RyKSB7Ci0gICAgICAgICAg
ICB2YXIgdG9rID0gIiIsIG51bVRva2VucyA9IDAsIG1heFRva2VucyA9IDU7Ci0gICAgICAgICAg
ICB3aGlsZSAobnVtVG9rZW5zIDwgbWF4VG9rZW5zICYmIHRva2Vucy5sZW5ndGggPiBudW1Ub2tl
bnMpIHsKLSAgICAgICAgICAgICAgICB0b2sgKz0gdG9rZW5zW251bVRva2Vuc10udmFsdWU7Ci0g
ICAgICAgICAgICAgICAgbnVtVG9rZW5zKys7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB0
aHJvdyBuZXcgV2ViSURMUGFyc2VFcnJvcihzdHIsIGxpbmUsIHRvaywgdG9rZW5zLnNsaWNlKDAs
IDUpKTsKLSAgICAgICAgfTsKLSAgICAgICAgCi0gICAgICAgIHZhciBsYXN0X3Rva2VuID0gbnVs
bDsKLSAgICAgICAgCi0gICAgICAgIHZhciBjb25zdW1lID0gZnVuY3Rpb24gKHR5cGUsIHZhbHVl
KSB7Ci0gICAgICAgICAgICBpZiAoIXRva2Vucy5sZW5ndGggfHwgdG9rZW5zWzBdLnR5cGUgIT09
IHR5cGUpIHJldHVybjsKLSAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICJ1bmRlZmlu
ZWQiIHx8IHRva2Vuc1swXS52YWx1ZSA9PT0gdmFsdWUpIHsKLSAgICAgICAgICAgICAgICAgbGFz
dF90b2tlbiA9IHRva2Vucy5zaGlmdCgpOwotICAgICAgICAgICAgICAgICBpZiAodHlwZSA9PT0g
SUQpIGxhc3RfdG9rZW4udmFsdWUgPSBsYXN0X3Rva2VuLnZhbHVlLnJlcGxhY2UoL15fLywgIiIp
OwotICAgICAgICAgICAgICAgICByZXR1cm4gbGFzdF90b2tlbjsKLSAgICAgICAgICAgICB9Ci0g
ICAgICAgIH07Ci0gICAgICAgIAotICAgICAgICB2YXIgd3MgPSBmdW5jdGlvbiAoKSB7Ci0gICAg
ICAgICAgICBpZiAoIXRva2Vucy5sZW5ndGgpIHJldHVybjsKLSAgICAgICAgICAgIGlmICh0b2tl
bnNbMF0udHlwZSA9PT0gIndoaXRlc3BhY2UiKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHQgPSB0
b2tlbnMuc2hpZnQoKTsKLSAgICAgICAgICAgICAgICB0LnZhbHVlLnJlcGxhY2UoL1xuL2csIGZ1
bmN0aW9uIChtKSB7IGxpbmUrKzsgcmV0dXJuIG07IH0pOwotICAgICAgICAgICAgICAgIHJldHVy
biB0OwotICAgICAgICAgICAgfQotICAgICAgICB9OwotICAgICAgICAKLSAgICAgICAgdmFyIGFs
bF93cyA9IGZ1bmN0aW9uIChzdG9yZSwgcGVhKSB7IC8vIHBlYSA9PSBwb3N0IGV4dGVuZGVkIGF0
dHJpYnV0ZSwgdHBlYSA9IHNhbWUgZm9yIHR5cGVzCi0gICAgICAgICAgICB2YXIgdCA9IHsgdHlw
ZTogIndoaXRlc3BhY2UiLCB2YWx1ZTogIiIgfTsKLSAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7
Ci0gICAgICAgICAgICAgICAgdmFyIHcgPSB3cygpOwotICAgICAgICAgICAgICAgIGlmICghdykg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgdC52YWx1ZSArPSB3LnZhbHVlOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgaWYgKHQudmFsdWUubGVuZ3RoID4gMCkgewotICAgICAgICAgICAgICAg
IGlmIChzdG9yZSkgewotICAgICAgICAgICAgICAgICAgICB2YXIgdyA9IHQudmFsdWUKLSAgICAg
ICAgICAgICAgICAgICAgLCAgIHJlID0gewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3
cyI6ICAgICAgICAgICAgICAgICAgIC9eKFtcdFxuXHIgXSspLwotICAgICAgICAgICAgICAgICAg
ICAgICAgLCAgICJsaW5lLWNvbW1lbnQiOiAgICAgICAgIC9eXC9cLyguKilcbj8vbQotICAgICAg
ICAgICAgICAgICAgICAgICAgLCAgICJtdWx0aWxpbmUtY29tbWVudCI6ICAgIC9eXC9cKigoPzou
fFxufFxyKSo/KVwqXC8vCi0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgICwgICB3c1R5cGVzID0gW10KLSAgICAgICAgICAgICAgICAgICAgOwotICAgICAgICAg
ICAgICAgICAgICBmb3IgKHZhciBrIGluIHJlKSB3c1R5cGVzLnB1c2goayk7Ci0gICAgICAgICAg
ICAgICAgICAgIHdoaWxlICh3Lmxlbmd0aCkgewotICAgICAgICAgICAgICAgICAgICAgICAgdmFy
IG1hdGNoZWQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAw
LCBuID0gd3NUeXBlcy5sZW5ndGg7IGkgPCBuOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2YXIgdHlwZSA9IHdzVHlwZXNbaV07Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdyA9IHcucmVwbGFjZShyZVt0eXBlXSwgZnVuY3Rpb24gKHRvaywgbTEpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmUucHVzaCh7IHR5cGU6IHR5cGUgKyAocGVhID8g
KCItIiArIHBlYSkgOiAiIiksIHZhbHVlOiBtMSB9KTsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbWF0Y2hlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiAiIjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAobWF0Y2hlZCkgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2hlZCkgY29udGludWU7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlN1cnByaXNpbmcgd2hpdGUg
c3BhY2UgY29uc3RydWN0LiIpOyAvLyB0aGlzIHNob3VsZG4ndCBoYXBwZW4KLSAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gdDsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLSAgICAgICAgCi0gICAgICAgIHZhciBpbnRlZ2Vy
X3R5cGUgPSBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICB2YXIgcmV0ID0gIiI7Ci0gICAgICAg
ICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgIGlmIChjb25zdW1lKElELCAidW5zaWduZWQiKSkg
cmV0ID0gInVuc2lnbmVkICI7Ci0gICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgIGlm
IChjb25zdW1lKElELCAic2hvcnQiKSkgcmV0dXJuIHJldCArICJzaG9ydCI7Ci0gICAgICAgICAg
ICBpZiAoY29uc3VtZShJRCwgImxvbmciKSkgewotICAgICAgICAgICAgICAgIHJldCArPSAibG9u
ZyI7Ci0gICAgICAgICAgICAgICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICAgICAgaWYgKGNvbnN1
bWUoSUQsICJsb25nIikpIHJldHVybiByZXQgKyAiIGxvbmciOwotICAgICAgICAgICAgICAgIHJl
dHVybiByZXQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAocmV0KSBlcnJvcigiRmFp
bGVkIHRvIHBhcnNlIGludGVnZXIgdHlwZSIpOwotICAgICAgICB9OwotICAgICAgICAKLSAgICAg
ICAgdmFyIGZsb2F0X3R5cGUgPSBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICB2YXIgcmV0ID0g
IiI7Ci0gICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgIGlmIChjb25zdW1lKElELCAi
dW5yZXN0cmljdGVkIikpIHJldCA9ICJ1bnJlc3RyaWN0ZWQgIjsKLSAgICAgICAgICAgIGFsbF93
cygpOwotICAgICAgICAgICAgaWYgKGNvbnN1bWUoSUQsICJmbG9hdCIpKSByZXR1cm4gcmV0ICsg
ImZsb2F0IjsKLSAgICAgICAgICAgIGlmIChjb25zdW1lKElELCAiZG91YmxlIikpIHJldHVybiBy
ZXQgKyAiZG91YmxlIjsKLSAgICAgICAgICAgIGlmIChyZXQpIGVycm9yKCJGYWlsZWQgdG8gcGFy
c2UgZmxvYXQgdHlwZSIpOwotICAgICAgICB9OwotICAgICAgICAKLSAgICAgICAgdmFyIHByaW1p
dGl2ZV90eXBlID0gZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgdmFyIG51bV90eXBlID0gaW50
ZWdlcl90eXBlKCkgfHwgZmxvYXRfdHlwZSgpOwotICAgICAgICAgICAgaWYgKG51bV90eXBlKSBy
ZXR1cm4gbnVtX3R5cGU7Ci0gICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgIGlmIChj
b25zdW1lKElELCAiYm9vbGVhbiIpKSByZXR1cm4gImJvb2xlYW4iOwotICAgICAgICAgICAgaWYg
KGNvbnN1bWUoSUQsICJieXRlIikpIHJldHVybiAiYnl0ZSI7Ci0gICAgICAgICAgICBpZiAoY29u
c3VtZShJRCwgIm9jdGV0IikpIHJldHVybiAib2N0ZXQiOwotICAgICAgICB9OwotICAgICAgICAK
LSAgICAgICAgdmFyIGNvbnN0X3ZhbHVlID0gZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgaWYg
KGNvbnN1bWUoSUQsICJ0cnVlIikpIHJldHVybiB7IHR5cGU6ICJib29sZWFuIiwgdmFsdWU6IHRy
dWUgfTsKLSAgICAgICAgICAgIGlmIChjb25zdW1lKElELCAiZmFsc2UiKSkgcmV0dXJuIHsgdHlw
ZTogImJvb2xlYW4iLCB2YWx1ZTogZmFsc2UgfTsKLSAgICAgICAgICAgIGlmIChjb25zdW1lKElE
LCAibnVsbCIpKSByZXR1cm4geyB0eXBlOiAibnVsbCIgfTsKLSAgICAgICAgICAgIGlmIChjb25z
dW1lKElELCAiSW5maW5pdHkiKSkgcmV0dXJuIHsgdHlwZTogIkluZmluaXR5IiwgbmVnYXRpdmU6
IGZhbHNlIH07Ci0gICAgICAgICAgICBpZiAoY29uc3VtZShJRCwgIk5hTiIpKSByZXR1cm4geyB0
eXBlOiAiTmFOIiB9OwotICAgICAgICAgICAgdmFyIHJldCA9IGNvbnN1bWUoRkxPQVQpIHx8IGNv
bnN1bWUoSU5UKTsKLSAgICAgICAgICAgIGlmIChyZXQpIHJldHVybiB7IHR5cGU6ICJudW1iZXIi
LCB2YWx1ZTogMSAqIHJldC52YWx1ZSB9OwotICAgICAgICAgICAgdmFyIHRvayA9IGNvbnN1bWUo
T1RIRVIsICItIik7Ci0gICAgICAgICAgICBpZiAodG9rKSB7Ci0gICAgICAgICAgICAgICAgaWYg
KGNvbnN1bWUoSUQsICJJbmZpbml0eSIpKSByZXR1cm4geyB0eXBlOiAiSW5maW5pdHkiLCBuZWdh
dGl2ZTogdHJ1ZSB9OwotICAgICAgICAgICAgICAgIGVsc2UgdG9rZW5zLnVuc2hpZnQodG9rKTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLSAgICAgICAgCi0gICAgICAgIHZhciB0eXBlX3N1
ZmZpeCA9IGZ1bmN0aW9uIChvYmopIHsKLSAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7Ci0gICAg
ICAgICAgICAgICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICAgICAgaWYgKGNvbnN1bWUoT1RIRVIs
ICI/IikpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG9iai5udWxsYWJsZSkgZXJyb3IoIkNh
bid0IG51bGxhYmxlIG1vcmUgdGhhbiBvbmNlIik7Ci0gICAgICAgICAgICAgICAgICAgIG9iai5u
dWxsYWJsZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2Ug
aWYgKGNvbnN1bWUoT1RIRVIsICJbIikpIHsKLSAgICAgICAgICAgICAgICAgICAgYWxsX3dzKCk7
Ci0gICAgICAgICAgICAgICAgICAgIGNvbnN1bWUoT1RIRVIsICJdIikgfHwgZXJyb3IoIlVudGVy
bWluYXRlZCBhcnJheSB0eXBlIik7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghb2JqLmFycmF5
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBvYmouYXJyYXkgPSAxOwotICAgICAgICAgICAg
ICAgICAgICAgICAgb2JqLm51bGxhYmxlQXJyYXkgPSBbb2JqLm51bGxhYmxlXTsKLSAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIG9iai5hcnJheSsrOwotICAgICAgICAgICAgICAgICAgICAgICAgb2JqLm51bGxh
YmxlQXJyYXkucHVzaChvYmoubnVsbGFibGUpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgICAgIG9iai5udWxsYWJsZSA9IGZhbHNlOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICBlbHNlIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsK
LSAgICAgICAgCi0gICAgICAgIHZhciBzaW5nbGVfdHlwZSA9IGZ1bmN0aW9uICgpIHsKLSAgICAg
ICAgICAgIHZhciBwcmltID0gcHJpbWl0aXZlX3R5cGUoKQotICAgICAgICAgICAgLCAgIHJldCA9
IHsgc2VxdWVuY2U6IGZhbHNlLCBnZW5lcmljOiBudWxsLCBudWxsYWJsZTogZmFsc2UsIGFycmF5
OiBmYWxzZSwgdW5pb246IGZhbHNlIH0KLSAgICAgICAgICAgICwgICBuYW1lCi0gICAgICAgICAg
ICAsICAgdmFsdWUKLSAgICAgICAgICAgIDsKLSAgICAgICAgICAgIGlmIChwcmltKSB7Ci0gICAg
ICAgICAgICAgICAgcmV0LmlkbFR5cGUgPSBwcmltOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgZWxzZSBpZiAobmFtZSA9IGNvbnN1bWUoSUQpKSB7Ci0gICAgICAgICAgICAgICAgdmFsdWUg
PSBuYW1lLnZhbHVlOwotICAgICAgICAgICAgICAgIGFsbF93cygpOwotICAgICAgICAgICAgICAg
IC8vIEdlbmVyaWMgdHlwZXMKLSAgICAgICAgICAgICAgICBpZiAoY29uc3VtZShPVEhFUiwgIjwi
KSkgewotICAgICAgICAgICAgICAgICAgICAvLyBiYWNrd2FyZHMgY29tcGF0Ci0gICAgICAgICAg
ICAgICAgICAgIGlmICh2YWx1ZSA9PT0gInNlcXVlbmNlIikgewotICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0LnNlcXVlbmNlID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgICAgICByZXQuZ2VuZXJpYyA9IHZhbHVlOwotICAgICAgICAgICAgICAgICAgICBy
ZXQuaWRsVHlwZSA9IHR5cGUoKSB8fCBlcnJvcigiRXJyb3IgcGFyc2luZyBnZW5lcmljIHR5cGUg
IiArIHZhbHVlKTsKLSAgICAgICAgICAgICAgICAgICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmICghY29uc3VtZShPVEhFUiwgIj4iKSkgZXJyb3IoIlVudGVybWluYXRlZCBnZW5l
cmljIHR5cGUgIiArIHZhbHVlKTsKLSAgICAgICAgICAgICAgICAgICAgdHlwZV9zdWZmaXgocmV0
KTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldC5pZGxUeXBlID0g
dmFsdWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
dHlwZV9zdWZmaXgocmV0KTsKLSAgICAgICAgICAgIGlmIChyZXQubnVsbGFibGUgJiYgIXJldC5h
cnJheSAmJiByZXQuaWRsVHlwZSA9PT0gImFueSIpIGVycm9yKCJUeXBlIGFueSBjYW5ub3QgYmUg
bWFkZSBudWxsYWJsZSIpOwotICAgICAgICAgICAgcmV0dXJuIHJldDsKLSAgICAgICAgfTsKLSAg
ICAgICAgCi0gICAgICAgIHZhciB1bmlvbl90eXBlID0gZnVuY3Rpb24gKCkgewotICAgICAgICAg
ICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoT1RIRVIsICIoIikpIHJldHVy
bjsKLSAgICAgICAgICAgIHZhciByZXQgPSB7IHNlcXVlbmNlOiBmYWxzZSwgZ2VuZXJpYzogbnVs
bCwgbnVsbGFibGU6IGZhbHNlLCBhcnJheTogZmFsc2UsIHVuaW9uOiB0cnVlLCBpZGxUeXBlOiBb
XSB9OwotICAgICAgICAgICAgdmFyIGZzdCA9IHR5cGUoKSB8fCBlcnJvcigiVW5pb24gdHlwZSB3
aXRoIG5vIGNvbnRlbnQiKTsKLSAgICAgICAgICAgIHJldC5pZGxUeXBlLnB1c2goZnN0KTsKLSAg
ICAgICAgICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgICAgICAgICAgYWxsX3dzKCk7Ci0gICAg
ICAgICAgICAgICAgaWYgKCFjb25zdW1lKElELCAib3IiKSkgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgdmFyIHR5cCA9IHR5cGUoKSB8fCBlcnJvcigiTm8gdHlwZSBhZnRlciAnb3InIGluIHVuaW9u
IHR5cGUiKTsKLSAgICAgICAgICAgICAgICByZXQuaWRsVHlwZS5wdXNoKHR5cCk7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoT1RIRVIsICIpIikpIGVycm9yKCJVbnRl
cm1pbmF0ZWQgdW5pb24gdHlwZSIpOwotICAgICAgICAgICAgdHlwZV9zdWZmaXgocmV0KTsKLSAg
ICAgICAgICAgIHJldHVybiByZXQ7Ci0gICAgICAgIH07Ci0gICAgICAgIAotICAgICAgICB2YXIg
dHlwZSA9IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIHJldHVybiBzaW5nbGVfdHlwZSgpIHx8
IHVuaW9uX3R5cGUoKTsKLSAgICAgICAgfTsKLSAgICAgICAgCi0gICAgICAgIHZhciBhcmd1bWVu
dCA9IGZ1bmN0aW9uIChzdG9yZSkgewotICAgICAgICAgICAgdmFyIHJldCA9IHsgb3B0aW9uYWw6
IGZhbHNlLCB2YXJpYWRpYzogZmFsc2UgfTsKLSAgICAgICAgICAgIHJldC5leHRBdHRycyA9IGV4
dGVuZGVkX2F0dHJzKHN0b3JlKTsKLSAgICAgICAgICAgIGFsbF93cyhzdG9yZSwgInBlYSIpOwot
ICAgICAgICAgICAgdmFyIG9wdF90b2tlbiA9IGNvbnN1bWUoSUQsICJvcHRpb25hbCIpOwotICAg
ICAgICAgICAgaWYgKG9wdF90b2tlbikgewotICAgICAgICAgICAgICAgIHJldC5vcHRpb25hbCA9
IHRydWU7Ci0gICAgICAgICAgICAgICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICByZXQuaWRsVHlwZSA9IHR5cGUoKTsKLSAgICAgICAgICAgIGlmICghcmV0LmlkbFR5cGUp
IHsKLSAgICAgICAgICAgICAgICBpZiAob3B0X3Rva2VuKSB0b2tlbnMudW5zaGlmdChvcHRfdG9r
ZW4pOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IHZhciB0eXBlX3Rva2VuID0gbGFzdF90b2tlbjsKLSAgICAgICAgICAgIGlmICghcmV0Lm9wdGlv
bmFsKSB7Ci0gICAgICAgICAgICAgICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICAgICAgaWYgKHRv
a2Vucy5sZW5ndGggPj0gMyAmJgotICAgICAgICAgICAgICAgICAgICB0b2tlbnNbMF0udHlwZSA9
PT0gIm90aGVyIiAmJiB0b2tlbnNbMF0udmFsdWUgPT09ICIuIiAmJgotICAgICAgICAgICAgICAg
ICAgICB0b2tlbnNbMV0udHlwZSA9PT0gIm90aGVyIiAmJiB0b2tlbnNbMV0udmFsdWUgPT09ICIu
IiAmJgotICAgICAgICAgICAgICAgICAgICB0b2tlbnNbMl0udHlwZSA9PT0gIm90aGVyIiAmJiB0
b2tlbnNbMl0udmFsdWUgPT09ICIuIgotICAgICAgICAgICAgICAgICAgICApIHsKLSAgICAgICAg
ICAgICAgICAgICAgdG9rZW5zLnNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAgICAgIHRva2Vucy5z
aGlmdCgpOwotICAgICAgICAgICAgICAgICAgICB0b2tlbnMuc2hpZnQoKTsKLSAgICAgICAgICAg
ICAgICAgICAgcmV0LnZhcmlhZGljID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgIHZhciBuYW1lID0gY29u
c3VtZShJRCk7Ci0gICAgICAgICAgICBpZiAoIW5hbWUpIHsKLSAgICAgICAgICAgICAgICBpZiAo
b3B0X3Rva2VuKSB0b2tlbnMudW5zaGlmdChvcHRfdG9rZW4pOwotICAgICAgICAgICAgICAgIHRv
a2Vucy51bnNoaWZ0KHR5cGVfdG9rZW4pOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIHJldC5uYW1lID0gbmFtZS52YWx1ZTsKLSAgICAgICAgICAg
IGlmIChyZXQub3B0aW9uYWwpIHsKLSAgICAgICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAg
ICAgICAgICByZXRbImRlZmF1bHQiXSA9IGRlZmF1bHRfKCk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICByZXR1cm4gcmV0OwotICAgICAgICB9OwotICAgICAgICAKLSAgICAgICAgdmFyIGFy
Z3VtZW50X2xpc3QgPSBmdW5jdGlvbiAoc3RvcmUpIHsKLSAgICAgICAgICAgIHZhciByZXQgPSBb
XQotICAgICAgICAgICAgLCAgIGFyZyA9IGFyZ3VtZW50KHN0b3JlID8gcmV0IDogbnVsbCkKLSAg
ICAgICAgICAgIDsKLSAgICAgICAgICAgIGlmICghYXJnKSByZXR1cm47Ci0gICAgICAgICAgICBy
ZXQucHVzaChhcmcpOwotICAgICAgICAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgICAgICAg
ICBhbGxfd3Moc3RvcmUgPyByZXQgOiBudWxsKTsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1
bWUoT1RIRVIsICIsIikpIHJldHVybiByZXQ7Ci0gICAgICAgICAgICAgICAgdmFyIG54dCA9IGFy
Z3VtZW50KHN0b3JlID8gcmV0IDogbnVsbCkgfHwgZXJyb3IoIlRyYWlsaW5nIGNvbW1hIGluIGFy
Z3VtZW50cyBsaXN0Iik7Ci0gICAgICAgICAgICAgICAgcmV0LnB1c2gobnh0KTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfTsKLSAgICAgICAgCi0gICAgICAgIHZhciB0eXBlX3BhaXIgPSBmdW5j
dGlvbiAoKSB7Ci0gICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgIHZhciBrID0gdHlw
ZSgpOwotICAgICAgICAgICAgaWYgKCFrKSByZXR1cm47Ci0gICAgICAgICAgICBhbGxfd3MoKQot
ICAgICAgICAgICAgaWYgKCFjb25zdW1lKE9USEVSLCAiLCIpKSByZXR1cm47Ci0gICAgICAgICAg
ICBhbGxfd3MoKTsKLSAgICAgICAgICAgIHZhciB2ID0gdHlwZSgpOwotICAgICAgICAgICAgaWYg
KCF2KSByZXR1cm47Ci0gICAgICAgICAgICByZXR1cm4gW2ssIHZdOwotICAgICAgICB9OwotICAg
ICAgICAKLSAgICAgICAgdmFyIHNpbXBsZV9leHRlbmRlZF9hdHRyID0gZnVuY3Rpb24gKHN0b3Jl
KSB7Ci0gICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgIHZhciBuYW1lID0gY29uc3Vt
ZShJRCk7Ci0gICAgICAgICAgICBpZiAoIW5hbWUpIHJldHVybjsKLSAgICAgICAgICAgIHZhciBy
ZXQgPSB7Ci0gICAgICAgICAgICAgICAgbmFtZTogbmFtZS52YWx1ZQotICAgICAgICAgICAgLCAg
ICJhcmd1bWVudHMiOiBudWxsCi0gICAgICAgICAgICB9OwotICAgICAgICAgICAgYWxsX3dzKCk7
Ci0gICAgICAgICAgICB2YXIgZXEgPSBjb25zdW1lKE9USEVSLCAiPSIpOwotICAgICAgICAgICAg
aWYgKGVxKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHJoczsKLSAgICAgICAgICAgICAgICBhbGxf
d3MoKTsKLSAgICAgICAgICAgICAgICBpZiAocmhzID0gY29uc3VtZShJRCkpIHsKLSAgICAgICAg
ICAgICAgICAgIHJldC5yaHMgPSByaHMKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgZWxzZSBpZiAoY29uc3VtZShPVEhFUiwgIigiKSkgewotICAgICAgICAgICAgICAgICAgICAv
LyBbRXhwb3NlZD0oV2luZG93LFdvcmtlcildCi0gICAgICAgICAgICAgICAgICAgIHJocyA9IFtd
OwotICAgICAgICAgICAgICAgICAgICB2YXIgaWQgPSBjb25zdW1lKElEKTsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKGlkKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgcmhzID0gW2lkLnZhbHVl
XTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVy
cyhyaHMpOwotICAgICAgICAgICAgICAgICAgICBjb25zdW1lKE9USEVSLCAiKSIpIHx8IGVycm9y
KCJVbmV4cGVjdGVkIHRva2VuIGluIGV4dGVuZGVkIGF0dHJpYnV0ZSBhcmd1bWVudCBsaXN0IG9y
IHR5cGUgcGFpciIpOwotICAgICAgICAgICAgICAgICAgICByZXQucmhzID0gewotICAgICAgICAg
ICAgICAgICAgICAgICAgdHlwZTogImlkZW50aWZpZXItbGlzdCIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICB2YWx1ZTogcmhzCi0gICAgICAgICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIGlmICghcmV0LnJocykgcmV0dXJuIGVycm9yKCJObyByaWdo
dCBoYW5kIHNpZGUgdG8gZXh0ZW5kZWQgYXR0cmlidXRlIGFzc2lnbm1lbnQiKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGFsbF93cygpOwotICAgICAgICAgICAgaWYgKGNvbnN1bWUoT1RI
RVIsICIoIikpIHsKLSAgICAgICAgICAgICAgICB2YXIgYXJncywgcGFpcjsKLSAgICAgICAgICAg
ICAgICAvLyBbQ29uc3RydWN0b3IoRE9NU3RyaW5nIHN0cildCi0gICAgICAgICAgICAgICAgaWYg
KGFyZ3MgPSBhcmd1bWVudF9saXN0KHN0b3JlKSkgewotICAgICAgICAgICAgICAgICAgICByZXRb
ImFyZ3VtZW50cyJdID0gYXJnczsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
Ly8gW01hcENsYXNzKERPTVN0cmluZywgRE9NU3RyaW5nKV0KLSAgICAgICAgICAgICAgICBlbHNl
IGlmIChwYWlyID0gdHlwZV9wYWlyKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0LnR5cGVQ
YWlyID0gcGFpcjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgLy8gW0NvbnN0
cnVjdG9yKCldCi0gICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHJl
dFsiYXJndW1lbnRzIl0gPSBbXTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
YWxsX3dzKCk7Ci0gICAgICAgICAgICAgICAgY29uc3VtZShPVEhFUiwgIikiKSB8fCBlcnJvcigi
VW5leHBlY3RlZCB0b2tlbiBpbiBleHRlbmRlZCBhdHRyaWJ1dGUgYXJndW1lbnQgbGlzdCBvciB0
eXBlIHBhaXIiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiByZXQ7Ci0gICAg
ICAgIH07Ci0gICAgICAgIAotICAgICAgICAvLyBOb3RlOiB3ZSBwYXJzZSBzb21ldGhpbmcgc2lt
cGxlciB0aGFuIHRoZSBvZmZpY2lhbCBzeW50YXguIEl0J3MgYWxsIHRoYXQgZXZlcgotICAgICAg
ICAvLyBzZWVtcyB0byBiZSB1c2VkCi0gICAgICAgIHZhciBleHRlbmRlZF9hdHRycyA9IGZ1bmN0
aW9uIChzdG9yZSkgewotICAgICAgICAgICAgdmFyIGVhcyA9IFtdOwotICAgICAgICAgICAgYWxs
X3dzKHN0b3JlKTsKLSAgICAgICAgICAgIGlmICghY29uc3VtZShPVEhFUiwgIlsiKSkgcmV0dXJu
IGVhczsKLSAgICAgICAgICAgIGVhc1swXSA9IHNpbXBsZV9leHRlbmRlZF9hdHRyKHN0b3JlKSB8
fCBlcnJvcigiRXh0ZW5kZWQgYXR0cmlidXRlIHdpdGggbm90IGNvbnRlbnQiKTsKLSAgICAgICAg
ICAgIGFsbF93cygpOwotICAgICAgICAgICAgd2hpbGUgKGNvbnN1bWUoT1RIRVIsICIsIikpIHsK
LSAgICAgICAgICAgICAgICBlYXMucHVzaChzaW1wbGVfZXh0ZW5kZWRfYXR0cihzdG9yZSkgfHwg
ZXJyb3IoIlRyYWlsaW5nIGNvbW1hIGluIGV4dGVuZGVkIGF0dHJpYnV0ZSIpKTsKLSAgICAgICAg
ICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNvbnN1bWUoT1RI
RVIsICJdIikgfHwgZXJyb3IoIk5vIGVuZCBvZiBleHRlbmRlZCBhdHRyaWJ1dGUiKTsKLSAgICAg
ICAgICAgIHJldHVybiBlYXM7Ci0gICAgICAgIH07Ci0gICAgICAgIAotICAgICAgICB2YXIgZGVm
YXVsdF8gPSBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAg
IGlmIChjb25zdW1lKE9USEVSLCAiPSIpKSB7Ci0gICAgICAgICAgICAgICAgYWxsX3dzKCk7Ci0g
ICAgICAgICAgICAgICAgdmFyIGRlZiA9IGNvbnN0X3ZhbHVlKCk7Ci0gICAgICAgICAgICAgICAg
aWYgKGRlZikgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGVmOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIGlmIChjb25zdW1lKE9USEVSLCAiWyIpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGlmICghY29uc3VtZShPVEhFUiwgIl0iKSkgZXJyb3IoIkRlZmF1
bHQgc2VxdWVuY2UgdmFsdWUgbXVzdCBiZSBlbXB0eSIpOwotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4geyB0eXBlOiAic2VxdWVuY2UiLCB2YWx1ZTogW10gfTsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBzdHIgPSBj
b25zdW1lKFNUUikgfHwgZXJyb3IoIk5vIHZhbHVlIGZvciBkZWZhdWx0Iik7Ci0gICAgICAgICAg
ICAgICAgICAgIHN0ci52YWx1ZSA9IHN0ci52YWx1ZS5yZXBsYWNlKC9eIi8sICIiKS5yZXBsYWNl
KC8iJC8sICIiKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0cjsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0gICAgICAgIAotICAgICAgICB2YXIg
Y29uc3RfID0gZnVuY3Rpb24gKHN0b3JlKSB7Ci0gICAgICAgICAgICBhbGxfd3Moc3RvcmUsICJw
ZWEiKTsKLSAgICAgICAgICAgIGlmICghY29uc3VtZShJRCwgImNvbnN0IikpIHJldHVybjsKLSAg
ICAgICAgICAgIHZhciByZXQgPSB7IHR5cGU6ICJjb25zdCIsIG51bGxhYmxlOiBmYWxzZSB9Owot
ICAgICAgICAgICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICB2YXIgdHlwID0gcHJpbWl0aXZlX3R5
cGUoKTsKLSAgICAgICAgICAgIGlmICghdHlwKSB7Ci0gICAgICAgICAgICAgICAgdHlwID0gY29u
c3VtZShJRCkgfHwgZXJyb3IoIk5vIHR5cGUgZm9yIGNvbnN0Iik7Ci0gICAgICAgICAgICAgICAg
dHlwID0gdHlwLnZhbHVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0LmlkbFR5cGUg
PSB0eXA7Ci0gICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgIGlmIChjb25zdW1lKE9U
SEVSLCAiPyIpKSB7Ci0gICAgICAgICAgICAgICAgcmV0Lm51bGxhYmxlID0gdHJ1ZTsKLSAgICAg
ICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHZhciBuYW1l
ID0gY29uc3VtZShJRCkgfHwgZXJyb3IoIk5vIG5hbWUgZm9yIGNvbnN0Iik7Ci0gICAgICAgICAg
ICByZXQubmFtZSA9IG5hbWUudmFsdWU7Ci0gICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAg
ICAgIGNvbnN1bWUoT1RIRVIsICI9IikgfHwgZXJyb3IoIk5vIHZhbHVlIGFzc2lnbm1lbnQgZm9y
IGNvbnN0Iik7Ci0gICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgIHZhciBjbnQgPSBj
b25zdF92YWx1ZSgpOwotICAgICAgICAgICAgaWYgKGNudCkgcmV0LnZhbHVlID0gY250OwotICAg
ICAgICAgICAgZWxzZSBlcnJvcigiTm8gdmFsdWUgZm9yIGNvbnN0Iik7Ci0gICAgICAgICAgICBh
bGxfd3MoKTsKLSAgICAgICAgICAgIGNvbnN1bWUoT1RIRVIsICI7IikgfHwgZXJyb3IoIlVudGVy
bWluYXRlZCBjb25zdCIpOwotICAgICAgICAgICAgcmV0dXJuIHJldDsKLSAgICAgICAgfTsKLSAg
ICAgICAgCi0gICAgICAgIHZhciBpbmhlcml0YW5jZSA9IGZ1bmN0aW9uICgpIHsKLSAgICAgICAg
ICAgIGFsbF93cygpOwotICAgICAgICAgICAgaWYgKGNvbnN1bWUoT1RIRVIsICI6IikpIHsKLSAg
ICAgICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgICAgICB2YXIgaW5oID0gY29uc3Vt
ZShJRCkgfHwgZXJyb3IgKCJObyB0eXBlIGluIGluaGVyaXRhbmNlIik7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIGluaC52YWx1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLSAgICAgICAg
Ci0gICAgICAgIHZhciBvcGVyYXRpb25fcmVzdCA9IGZ1bmN0aW9uIChyZXQsIHN0b3JlKSB7Ci0g
ICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgIGlmICghcmV0KSByZXQgPSB7fTsKLSAg
ICAgICAgICAgIHZhciBuYW1lID0gY29uc3VtZShJRCk7Ci0gICAgICAgICAgICByZXQubmFtZSA9
IG5hbWUgPyBuYW1lLnZhbHVlIDogbnVsbDsKLSAgICAgICAgICAgIGFsbF93cygpOwotICAgICAg
ICAgICAgY29uc3VtZShPVEhFUiwgIigiKSB8fCBlcnJvcigiSW52YWxpZCBvcGVyYXRpb24iKTsK
LSAgICAgICAgICAgIHJldFsiYXJndW1lbnRzIl0gPSBhcmd1bWVudF9saXN0KHN0b3JlKSB8fCBb
XTsKLSAgICAgICAgICAgIGFsbF93cygpOwotICAgICAgICAgICAgY29uc3VtZShPVEhFUiwgIiki
KSB8fCBlcnJvcigiVW50ZXJtaW5hdGVkIG9wZXJhdGlvbiIpOwotICAgICAgICAgICAgYWxsX3dz
KCk7Ci0gICAgICAgICAgICBjb25zdW1lKE9USEVSLCAiOyIpIHx8IGVycm9yKCJVbnRlcm1pbmF0
ZWQgb3BlcmF0aW9uIik7Ci0gICAgICAgICAgICByZXR1cm4gcmV0OwotICAgICAgICB9OwotICAg
ICAgICAKLSAgICAgICAgdmFyIGNhbGxiYWNrID0gZnVuY3Rpb24gKHN0b3JlKSB7Ci0gICAgICAg
ICAgICBhbGxfd3Moc3RvcmUsICJwZWEiKTsKLSAgICAgICAgICAgIHZhciByZXQ7Ci0gICAgICAg
ICAgICBpZiAoIWNvbnN1bWUoSUQsICJjYWxsYmFjayIpKSByZXR1cm47Ci0gICAgICAgICAgICBh
bGxfd3MoKTsKLSAgICAgICAgICAgIHZhciB0b2sgPSBjb25zdW1lKElELCAiaW50ZXJmYWNlIik7
Ci0gICAgICAgICAgICBpZiAodG9rKSB7Ci0gICAgICAgICAgICAgICAgdG9rZW5zLnVuc2hpZnQo
dG9rKTsKLSAgICAgICAgICAgICAgICByZXQgPSBpbnRlcmZhY2VfKCk7Ci0gICAgICAgICAgICAg
ICAgcmV0LnR5cGUgPSAiY2FsbGJhY2sgaW50ZXJmYWNlIjsKLSAgICAgICAgICAgICAgICByZXR1
cm4gcmV0OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdmFyIG5hbWUgPSBjb25zdW1lKElE
KSB8fCBlcnJvcigiTm8gbmFtZSBmb3IgY2FsbGJhY2siKTsKLSAgICAgICAgICAgIHJldCA9IHsg
dHlwZTogImNhbGxiYWNrIiwgbmFtZTogbmFtZS52YWx1ZSB9OwotICAgICAgICAgICAgYWxsX3dz
KCk7Ci0gICAgICAgICAgICBjb25zdW1lKE9USEVSLCAiPSIpIHx8IGVycm9yKCJObyBhc3NpZ25t
ZW50IGluIGNhbGxiYWNrIik7Ci0gICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgIHJl
dC5pZGxUeXBlID0gcmV0dXJuX3R5cGUoKTsKLSAgICAgICAgICAgIGFsbF93cygpOwotICAgICAg
ICAgICAgY29uc3VtZShPVEhFUiwgIigiKSB8fCBlcnJvcigiTm8gYXJndW1lbnRzIGluIGNhbGxi
YWNrIik7Ci0gICAgICAgICAgICByZXRbImFyZ3VtZW50cyJdID0gYXJndW1lbnRfbGlzdChzdG9y
ZSkgfHwgW107Ci0gICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgIGNvbnN1bWUoT1RI
RVIsICIpIikgfHwgZXJyb3IoIlVudGVybWluYXRlZCBjYWxsYmFjayIpOwotICAgICAgICAgICAg
YWxsX3dzKCk7Ci0gICAgICAgICAgICBjb25zdW1lKE9USEVSLCAiOyIpIHx8IGVycm9yKCJVbnRl
cm1pbmF0ZWQgY2FsbGJhY2siKTsKLSAgICAgICAgICAgIHJldHVybiByZXQ7Ci0gICAgICAgIH07
CisgICAgICB9CisgICAgfSBlbHNlIGlmIChuZXh0Q2hhciA9PT0gJyInKSB7CisgICAgICByZXN1
bHQgPSBhdHRlbXB0VG9rZW5NYXRjaCgic3RyaW5nIik7CisgICAgfQogCi0gICAgICAgIHZhciBh
dHRyaWJ1dGUgPSBmdW5jdGlvbiAoc3RvcmUpIHsKLSAgICAgICAgICAgIGFsbF93cyhzdG9yZSwg
InBlYSIpOwotICAgICAgICAgICAgdmFyIGdyYWJiZWQgPSBbXQotICAgICAgICAgICAgLCAgIHJl
dCA9IHsKLSAgICAgICAgICAgICAgICB0eXBlOiAgICAgICAgICAgImF0dHJpYnV0ZSIKLSAgICAg
ICAgICAgICwgICAic3RhdGljIjogICAgICAgZmFsc2UKLSAgICAgICAgICAgICwgICBzdHJpbmdp
ZmllcjogICAgZmFsc2UKLSAgICAgICAgICAgICwgICBpbmhlcml0OiAgICAgICAgZmFsc2UKLSAg
ICAgICAgICAgICwgICByZWFkb25seTogICAgICAgZmFsc2UKLSAgICAgICAgICAgIH07Ci0gICAg
ICAgICAgICBpZiAoY29uc3VtZShJRCwgInN0YXRpYyIpKSB7Ci0gICAgICAgICAgICAgICAgcmV0
WyJzdGF0aWMiXSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgZ3JhYmJlZC5wdXNoKGxhc3RfdG9r
ZW4pOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAoY29uc3VtZShJRCwgInN0
cmluZ2lmaWVyIikpIHsKLSAgICAgICAgICAgICAgICByZXQuc3RyaW5naWZpZXIgPSB0cnVlOwot
ICAgICAgICAgICAgICAgIGdyYWJiZWQucHVzaChsYXN0X3Rva2VuKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIHZhciB3ID0gYWxsX3dzKCk7Ci0gICAgICAgICAgICBpZiAodykgZ3JhYmJl
ZC5wdXNoKHcpOwotICAgICAgICAgICAgaWYgKGNvbnN1bWUoSUQsICJpbmhlcml0IikpIHsKLSAg
ICAgICAgICAgICAgICBpZiAocmV0WyJzdGF0aWMiXSB8fCByZXQuc3RyaW5naWZpZXIpIGVycm9y
KCJDYW5ub3QgaGF2ZSBhIHN0YXRpYyBvciBzdHJpbmdpZmllciBpbmhlcml0Iik7Ci0gICAgICAg
ICAgICAgICAgcmV0LmluaGVyaXQgPSB0cnVlOwotICAgICAgICAgICAgICAgIGdyYWJiZWQucHVz
aChsYXN0X3Rva2VuKTsKLSAgICAgICAgICAgICAgICB2YXIgdyA9IGFsbF93cygpOwotICAgICAg
ICAgICAgICAgIGlmICh3KSBncmFiYmVkLnB1c2godyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBpZiAoY29uc3VtZShJRCwgInJlYWRvbmx5IikpIHsKLSAgICAgICAgICAgICAgICByZXQu
cmVhZG9ubHkgPSB0cnVlOwotICAgICAgICAgICAgICAgIGdyYWJiZWQucHVzaChsYXN0X3Rva2Vu
KTsKLSAgICAgICAgICAgICAgICB2YXIgdyA9IGFsbF93cygpOwotICAgICAgICAgICAgICAgIGlm
ICh3KSBncmFiYmVkLnB1c2godyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoIWNv
bnN1bWUoSUQsICJhdHRyaWJ1dGUiKSkgewotICAgICAgICAgICAgICAgIHRva2VucyA9IGdyYWJi
ZWQuY29uY2F0KHRva2Vucyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICByZXQuaWRsVHlwZSA9IHR5cGUo
KSB8fCBlcnJvcigiTm8gdHlwZSBpbiBhdHRyaWJ1dGUiKTsKLSAgICAgICAgICAgIGlmIChyZXQu
aWRsVHlwZS5zZXF1ZW5jZSkgZXJyb3IoIkF0dHJpYnV0ZXMgY2Fubm90IGFjY2VwdCBzZXF1ZW5j
ZSB0eXBlcyIpOwotICAgICAgICAgICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICB2YXIgbmFtZSA9
IGNvbnN1bWUoSUQpIHx8IGVycm9yKCJObyBuYW1lIGluIGF0dHJpYnV0ZSIpOwotICAgICAgICAg
ICAgcmV0Lm5hbWUgPSBuYW1lLnZhbHVlOwotICAgICAgICAgICAgYWxsX3dzKCk7Ci0gICAgICAg
ICAgICBjb25zdW1lKE9USEVSLCAiOyIpIHx8IGVycm9yKCJVbnRlcm1pbmF0ZWQgYXR0cmlidXRl
Iik7Ci0gICAgICAgICAgICByZXR1cm4gcmV0OwotICAgICAgICB9OwotICAgICAgICAKLSAgICAg
ICAgdmFyIHJldHVybl90eXBlID0gZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgdmFyIHR5cCA9
IHR5cGUoKTsKLSAgICAgICAgICAgIGlmICghdHlwKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNv
bnN1bWUoSUQsICJ2b2lkIikpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJ2b2lkIjsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSBlcnJvcigiTm8gcmV0dXJu
IHR5cGUiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiB0eXA7Ci0gICAgICAg
IH07Ci0gICAgICAgIAotICAgICAgICB2YXIgb3BlcmF0aW9uID0gZnVuY3Rpb24gKHN0b3JlKSB7
Ci0gICAgICAgICAgICBhbGxfd3Moc3RvcmUsICJwZWEiKTsKLSAgICAgICAgICAgIHZhciByZXQg
PSB7Ci0gICAgICAgICAgICAgICAgdHlwZTogICAgICAgICAgICJvcGVyYXRpb24iCi0gICAgICAg
ICAgICAsICAgZ2V0dGVyOiAgICAgICAgIGZhbHNlCi0gICAgICAgICAgICAsICAgc2V0dGVyOiAg
ICAgICAgIGZhbHNlCi0gICAgICAgICAgICAsICAgY3JlYXRvcjogICAgICAgIGZhbHNlCi0gICAg
ICAgICAgICAsICAgZGVsZXRlcjogICAgICAgIGZhbHNlCi0gICAgICAgICAgICAsICAgbGVnYWN5
Y2FsbGVyOiAgIGZhbHNlCi0gICAgICAgICAgICAsICAgInN0YXRpYyI6ICAgICAgIGZhbHNlCi0g
ICAgICAgICAgICAsICAgc3RyaW5naWZpZXI6ICAgIGZhbHNlCi0gICAgICAgICAgICB9OwotICAg
ICAgICAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAg
ICAgICAgICAgICBpZiAoY29uc3VtZShJRCwgImdldHRlciIpKSByZXQuZ2V0dGVyID0gdHJ1ZTsK
LSAgICAgICAgICAgICAgICBlbHNlIGlmIChjb25zdW1lKElELCAic2V0dGVyIikpIHJldC5zZXR0
ZXIgPSB0cnVlOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNvbnN1bWUoSUQsICJjcmVhdG9y
IikpIHJldC5jcmVhdG9yID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChjb25zdW1l
KElELCAiZGVsZXRlciIpKSByZXQuZGVsZXRlciA9IHRydWU7Ci0gICAgICAgICAgICAgICAgZWxz
ZSBpZiAoY29uc3VtZShJRCwgImxlZ2FjeWNhbGxlciIpKSByZXQubGVnYWN5Y2FsbGVyID0gdHJ1
ZTsKLSAgICAgICAgICAgICAgICBlbHNlIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgaWYgKHJldC5nZXR0ZXIgfHwgcmV0LnNldHRlciB8fCByZXQuY3JlYXRvciB8fCByZXQuZGVs
ZXRlciB8fCByZXQubGVnYWN5Y2FsbGVyKSB7Ci0gICAgICAgICAgICAgICAgYWxsX3dzKCk7Ci0g
ICAgICAgICAgICAgICAgcmV0LmlkbFR5cGUgPSByZXR1cm5fdHlwZSgpOwotICAgICAgICAgICAg
ICAgIG9wZXJhdGlvbl9yZXN0KHJldCwgc3RvcmUpOwotICAgICAgICAgICAgICAgIHJldHVybiBy
ZXQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoY29uc3VtZShJRCwgInN0YXRpYyIp
KSB7Ci0gICAgICAgICAgICAgICAgcmV0WyJzdGF0aWMiXSA9IHRydWU7Ci0gICAgICAgICAgICAg
ICAgcmV0LmlkbFR5cGUgPSByZXR1cm5fdHlwZSgpOwotICAgICAgICAgICAgICAgIG9wZXJhdGlv
bl9yZXN0KHJldCwgc3RvcmUpOwotICAgICAgICAgICAgICAgIHJldHVybiByZXQ7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChjb25zdW1lKElELCAic3RyaW5naWZpZXIiKSkg
ewotICAgICAgICAgICAgICAgIHJldC5zdHJpbmdpZmllciA9IHRydWU7LQotICAgICAgICAgICAg
ICAgIGFsbF93cygpOwotICAgICAgICAgICAgICAgIGlmIChjb25zdW1lKE9USEVSLCAiOyIpKSBy
ZXR1cm4gcmV0OwotICAgICAgICAgICAgICAgIHJldC5pZGxUeXBlID0gcmV0dXJuX3R5cGUoKTsK
LSAgICAgICAgICAgICAgICBvcGVyYXRpb25fcmVzdChyZXQsIHN0b3JlKTsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gcmV0OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0LmlkbFR5cGUg
PSByZXR1cm5fdHlwZSgpOwotICAgICAgICAgICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICBpZiAo
Y29uc3VtZShJRCwgIml0ZXJhdG9yIikpIHsKLSAgICAgICAgICAgICAgICBhbGxfd3MoKTsKLSAg
ICAgICAgICAgICAgICByZXQudHlwZSA9ICJpdGVyYXRvciI7Ci0gICAgICAgICAgICAgICAgaWYg
KGNvbnN1bWUoSUQsICJvYmplY3QiKSkgewotICAgICAgICAgICAgICAgICAgICByZXQuaXRlcmF0
b3JPYmplY3QgPSAib2JqZWN0IjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
ZWxzZSBpZiAoY29uc3VtZShPVEhFUiwgIj0iKSkgewotICAgICAgICAgICAgICAgICAgICBhbGxf
d3MoKTsKLSAgICAgICAgICAgICAgICAgICAgdmFyIG5hbWUgPSBjb25zdW1lKElEKSB8fCBlcnJv
cigiTm8gcmlnaHQgaGFuZCBzaWRlIGluIGl0ZXJhdG9yIik7Ci0gICAgICAgICAgICAgICAgICAg
IHJldC5pdGVyYXRvck9iamVjdCA9IG5hbWUudmFsdWU7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIGFsbF93cygpOwotICAgICAgICAgICAgICAgIGNvbnN1bWUoT1RIRVIsICI7
IikgfHwgZXJyb3IoIlVudGVybWluYXRlZCBpdGVyYXRvciIpOwotICAgICAgICAgICAgICAgIHJl
dHVybiByZXQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAg
ICAgICBvcGVyYXRpb25fcmVzdChyZXQsIHN0b3JlKTsKLSAgICAgICAgICAgICAgICByZXR1cm4g
cmV0OwotICAgICAgICAgICAgfQotICAgICAgICB9OwotICAgICAgICAKLSAgICAgICAgdmFyIGlk
ZW50aWZpZXJzID0gZnVuY3Rpb24gKGFycikgewotICAgICAgICAgICAgd2hpbGUgKHRydWUpIHsK
LSAgICAgICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgICAgICBpZiAoY29uc3VtZShP
VEhFUiwgIiwiKSkgewotICAgICAgICAgICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAg
ICAgICAgICAgdmFyIG5hbWUgPSBjb25zdW1lKElEKSB8fCBlcnJvcigiVHJhaWxpbmcgY29tbWEg
aW4gaWRlbnRpZmllcnMgbGlzdCIpOwotICAgICAgICAgICAgICAgICAgICBhcnIucHVzaChuYW1l
LnZhbHVlKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSBicmVhazsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLSAgICAgICAgCi0gICAgICAgIHZhciBzZXJpYWxp
c2VyID0gZnVuY3Rpb24gKHN0b3JlKSB7Ci0gICAgICAgICAgICBhbGxfd3Moc3RvcmUsICJwZWEi
KTsKLSAgICAgICAgICAgIGlmICghY29uc3VtZShJRCwgInNlcmlhbGl6ZXIiKSkgcmV0dXJuOwot
ICAgICAgICAgICAgdmFyIHJldCA9IHsgdHlwZTogInNlcmlhbGl6ZXIiIH07Ci0gICAgICAgICAg
ICBhbGxfd3MoKTsKLSAgICAgICAgICAgIGlmIChjb25zdW1lKE9USEVSLCAiPSIpKSB7Ci0gICAg
ICAgICAgICAgICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICAgICAgaWYgKGNvbnN1bWUoT1RIRVIs
ICJ7IikpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0LnBhdHRlcm5NYXAgPSB0cnVlOwotICAg
ICAgICAgICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgICAgICAgICAgdmFyIGlkID0g
Y29uc3VtZShJRCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpZCAmJiBpZC52YWx1ZSA9PT0g
ImdldHRlciIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldC5uYW1lcyA9IFsiZ2V0dGVy
Il07Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAo
aWQgJiYgaWQudmFsdWUgPT09ICJpbmhlcml0IikgewotICAgICAgICAgICAgICAgICAgICAgICAg
cmV0Lm5hbWVzID0gWyJpbmhlcml0Il07Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZGVudGlm
aWVycyhyZXQubmFtZXMpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
ICAgIGVsc2UgaWYgKGlkKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXQubmFtZXMgPSBb
aWQudmFsdWVdOwotICAgICAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllcnMocmV0Lm5hbWVz
KTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBlbHNlIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHJldC5uYW1lcyA9IFtdOwotICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgICAgIGFsbF93cygpOwotICAgICAgICAgICAgICAgICAgICBj
b25zdW1lKE9USEVSLCAifSIpIHx8IGVycm9yKCJVbnRlcm1pbmF0ZWQgc2VyaWFsaXplciBwYXR0
ZXJuIG1hcCIpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIGlmIChj
b25zdW1lKE9USEVSLCAiWyIpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldC5wYXR0ZXJuTGlz
dCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGFsbF93cygpOwotICAgICAgICAgICAgICAg
ICAgICB2YXIgaWQgPSBjb25zdW1lKElEKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGlkICYm
IGlkLnZhbHVlID09PSAiZ2V0dGVyIikgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0Lm5h
bWVzID0gWyJnZXR0ZXIiXTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
ICAgICBlbHNlIGlmIChpZCkgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0Lm5hbWVzID0g
W2lkLnZhbHVlXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXJzKHJldC5uYW1l
cyk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICByZXQubmFtZXMgPSBbXTsKLSAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgICAgICAgICAg
Y29uc3VtZShPVEhFUiwgIl0iKSB8fCBlcnJvcigiVW50ZXJtaW5hdGVkIHNlcmlhbGl6ZXIgcGF0
dGVybiBsaXN0Iik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgICAgICAgICB2YXIgbmFtZSA9IGNvbnN1bWUoSUQpIHx8IGVycm9yKCJJbnZh
bGlkIHNlcmlhbGl6ZXIiKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0Lm5hbWUgPSBuYW1lLnZh
bHVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAg
ICAgICAgICAgICBjb25zdW1lKE9USEVSLCAiOyIpIHx8IGVycm9yKCJVbnRlcm1pbmF0ZWQgc2Vy
aWFsaXplciIpOwotICAgICAgICAgICAgICAgIHJldHVybiByZXQ7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBlbHNlIGlmIChjb25zdW1lKE9USEVSLCAiOyIpKSB7Ci0gICAgICAgICAgICAg
ICAgLy8gbm9vcCwganVzdCBwYXJzaW5nCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNl
IHsKLSAgICAgICAgICAgICAgICByZXQuaWRsVHlwZSA9IHJldHVybl90eXBlKCk7Ci0gICAgICAg
ICAgICAgICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICAgICAgcmV0Lm9wZXJhdGlvbiA9IG9wZXJh
dGlvbl9yZXN0KG51bGwsIHN0b3JlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVy
biByZXQ7Ci0gICAgICAgIH07CisgICAgZm9yIChjb25zdCBwdW5jdHVhdGlvbiBvZiBwdW5jdHVh
dGlvbnMpIHsKKyAgICAgIGlmIChzdHIuc3RhcnRzV2l0aChwdW5jdHVhdGlvbiwgbGFzdENoYXJJ
bmRleCkpIHsKKyAgICAgICAgdG9rZW5zLnB1c2goeworICAgICAgICAgIHR5cGU6ICJpbmxpbmUi
LAorICAgICAgICAgIHZhbHVlOiBwdW5jdHVhdGlvbiwKKyAgICAgICAgICB0cml2aWEsCisgICAg
ICAgICAgbGluZSwKKyAgICAgICAgICBpbmRleCwKKyAgICAgICAgfSk7CisgICAgICAgIHRyaXZp
YSA9ICIiOworICAgICAgICBsYXN0Q2hhckluZGV4ICs9IHB1bmN0dWF0aW9uLmxlbmd0aDsKKyAg
ICAgICAgcmVzdWx0ID0gbGFzdENoYXJJbmRleDsKKyAgICAgICAgYnJlYWs7CisgICAgICB9Cisg
ICAgfQorCisgICAgLy8gb3RoZXIgYXMgdGhlIGxhc3QgdHJ5CisgICAgaWYgKHJlc3VsdCA9PT0g
LTEpIHsKKyAgICAgIHJlc3VsdCA9IGF0dGVtcHRUb2tlbk1hdGNoKCJvdGhlciIpOworICAgIH0K
KyAgICBpZiAocmVzdWx0ID09PSAtMSkgeworICAgICAgdGhyb3cgbmV3IEVycm9yKCJUb2tlbiBz
dHJlYW0gbm90IHByb2dyZXNzaW5nIik7CisgICAgfQorICAgIGxhc3RDaGFySW5kZXggPSByZXN1
bHQ7CisgICAgaW5kZXggKz0gMTsKKyAgfQorCisgIC8vIHJlbWFpbmluZyB0cml2aWEgYXMgZW9m
CisgIHRva2Vucy5wdXNoKHsKKyAgICB0eXBlOiAiZW9mIiwKKyAgICB2YWx1ZTogIiIsCisgICAg
dHJpdmlhLAorICB9KTsKKworICByZXR1cm4gdG9rZW5zOworCisgIC8qKgorICAgKiBAcGFyYW0g
e2tleW9mIHR5cGVvZiB0b2tlblJlfSB0eXBlCisgICAqIEBwYXJhbSB7b2JqZWN0fSBvcHRpb25z
CisgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMubm9GbHVzaFRyaXZpYV0KKyAgICovCisg
IGZ1bmN0aW9uIGF0dGVtcHRUb2tlbk1hdGNoKHR5cGUsIHsgbm9GbHVzaFRyaXZpYSB9ID0ge30p
IHsKKyAgICBjb25zdCByZSA9IHRva2VuUmVbdHlwZV07CisgICAgcmUubGFzdEluZGV4ID0gbGFz
dENoYXJJbmRleDsKKyAgICBjb25zdCByZXN1bHQgPSByZS5leGVjKHN0cik7CisgICAgaWYgKHJl
c3VsdCkgeworICAgICAgdG9rZW5zLnB1c2goeyB0eXBlLCB2YWx1ZTogcmVzdWx0WzBdLCB0cml2
aWEsIGxpbmUsIGluZGV4IH0pOworICAgICAgaWYgKCFub0ZsdXNoVHJpdmlhKSB7CisgICAgICAg
IHRyaXZpYSA9ICIiOworICAgICAgfQorICAgICAgcmV0dXJuIHJlLmxhc3RJbmRleDsKKyAgICB9
CisgICAgcmV0dXJuIC0xOworICB9Cit9CisKK2NsYXNzIFRva2VuaXNlciB7CisgIC8qKgorICAg
KiBAcGFyYW0ge3N0cmluZ30gaWRsCisgICAqLworICBjb25zdHJ1Y3RvcihpZGwpIHsKKyAgICB0
aGlzLnNvdXJjZSA9IHRva2VuaXNlKGlkbCk7CisgICAgdGhpcy5wb3NpdGlvbiA9IDA7CisgIH0K
KworICAvKioKKyAgICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2UKKyAgICogQHJldHVybiB7bmV2
ZXJ9CisgICAqLworICBlcnJvcihtZXNzYWdlKSB7CisgICAgdGhyb3cgbmV3IFdlYklETFBhcnNl
RXJyb3IoCisgICAgICAoMCxfZXJyb3JfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXy5z
eW50YXhFcnJvcikodGhpcy5zb3VyY2UsIHRoaXMucG9zaXRpb24sIHRoaXMuY3VycmVudCwgbWVz
c2FnZSkKKyAgICApOworICB9CisKKyAgLyoqCisgICAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlCisg
ICAqLworICBwcm9iZVR5cGUodHlwZSkgeworICAgIHJldHVybiAoCisgICAgICB0aGlzLnNvdXJj
ZS5sZW5ndGggPiB0aGlzLnBvc2l0aW9uICYmCisgICAgICB0aGlzLnNvdXJjZVt0aGlzLnBvc2l0
aW9uXS50eXBlID09PSB0eXBlCisgICAgKTsKKyAgfQorCisgIC8qKgorICAgKiBAcGFyYW0ge3N0
cmluZ30gdmFsdWUKKyAgICovCisgIHByb2JlKHZhbHVlKSB7CisgICAgcmV0dXJuICgKKyAgICAg
IHRoaXMucHJvYmVUeXBlKCJpbmxpbmUiKSAmJiB0aGlzLnNvdXJjZVt0aGlzLnBvc2l0aW9uXS52
YWx1ZSA9PT0gdmFsdWUKKyAgICApOworICB9CisKKyAgLyoqCisgICAqIEBwYXJhbSAgey4uLnN0
cmluZ30gY2FuZGlkYXRlcworICAgKi8KKyAgY29uc3VtZVR5cGUoLi4uY2FuZGlkYXRlcykgewor
ICAgIGZvciAoY29uc3QgdHlwZSBvZiBjYW5kaWRhdGVzKSB7CisgICAgICBpZiAoIXRoaXMucHJv
YmVUeXBlKHR5cGUpKSBjb250aW51ZTsKKyAgICAgIGNvbnN0IHRva2VuID0gdGhpcy5zb3VyY2Vb
dGhpcy5wb3NpdGlvbl07CisgICAgICB0aGlzLnBvc2l0aW9uKys7CisgICAgICByZXR1cm4gdG9r
ZW47CisgICAgfQorICB9CisKKyAgLyoqCisgICAqIEBwYXJhbSAgey4uLnN0cmluZ30gY2FuZGlk
YXRlcworICAgKi8KKyAgY29uc3VtZSguLi5jYW5kaWRhdGVzKSB7CisgICAgaWYgKCF0aGlzLnBy
b2JlVHlwZSgiaW5saW5lIikpIHJldHVybjsKKyAgICBjb25zdCB0b2tlbiA9IHRoaXMuc291cmNl
W3RoaXMucG9zaXRpb25dOworICAgIGZvciAoY29uc3QgdmFsdWUgb2YgY2FuZGlkYXRlcykgewor
ICAgICAgaWYgKHRva2VuLnZhbHVlICE9PSB2YWx1ZSkgY29udGludWU7CisgICAgICB0aGlzLnBv
c2l0aW9uKys7CisgICAgICByZXR1cm4gdG9rZW47CisgICAgfQorICB9CisKKyAgLyoqCisgICAq
IEBwYXJhbSB7bnVtYmVyfSBwb3NpdGlvbgorICAgKi8KKyAgdW5jb25zdW1lKHBvc2l0aW9uKSB7
CisgICAgdGhpcy5wb3NpdGlvbiA9IHBvc2l0aW9uOworICB9Cit9CisKK2NsYXNzIFdlYklETFBh
cnNlRXJyb3IgZXh0ZW5kcyBFcnJvciB7CisgIC8qKgorICAgKiBAcGFyYW0ge29iamVjdH0gb3B0
aW9ucworICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5tZXNzYWdlCisgICAqIEBwYXJhbSB7
c3RyaW5nfSBvcHRpb25zLmJhcmVNZXNzYWdlCisgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25z
LmNvbnRleHQKKyAgICogQHBhcmFtIHtudW1iZXJ9IG9wdGlvbnMubGluZQorICAgKiBAcGFyYW0g
eyp9IG9wdGlvbnMuc291cmNlTmFtZQorICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5pbnB1
dAorICAgKiBAcGFyYW0geypbXX0gb3B0aW9ucy50b2tlbnMKKyAgICovCisgIGNvbnN0cnVjdG9y
KHsKKyAgICBtZXNzYWdlLAorICAgIGJhcmVNZXNzYWdlLAorICAgIGNvbnRleHQsCisgICAgbGlu
ZSwKKyAgICBzb3VyY2VOYW1lLAorICAgIGlucHV0LAorICAgIHRva2VucywKKyAgfSkgeworICAg
IHN1cGVyKG1lc3NhZ2UpOworCisgICAgdGhpcy5uYW1lID0gIldlYklETFBhcnNlRXJyb3IiOyAv
LyBub3QgdG8gYmUgbWFuZ2xlZAorICAgIHRoaXMuYmFyZU1lc3NhZ2UgPSBiYXJlTWVzc2FnZTsK
KyAgICB0aGlzLmNvbnRleHQgPSBjb250ZXh0OworICAgIHRoaXMubGluZSA9IGxpbmU7CisgICAg
dGhpcy5zb3VyY2VOYW1lID0gc291cmNlTmFtZTsKKyAgICB0aGlzLmlucHV0ID0gaW5wdXQ7Cisg
ICAgdGhpcy50b2tlbnMgPSB0b2tlbnM7CisgIH0KK30KKworCisvKioqLyB9KSwKKy8qIDMgKi8K
Ky8qKiovICgoX191bnVzZWRfd2VicGFja19fX3dlYnBhY2tfbW9kdWxlX18sIF9fd2VicGFja19l
eHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pID0+IHsKKworX193ZWJwYWNrX3JlcXVpcmVf
Xy5yKF9fd2VicGFja19leHBvcnRzX18pOworLyogaGFybW9ueSBleHBvcnQgKi8gX193ZWJwYWNr
X3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIHsKKy8qIGhhcm1vbnkgZXhwb3J0ICov
ICAgInN5bnRheEVycm9yIjogKCkgPT4gKC8qIGJpbmRpbmcgKi8gc3ludGF4RXJyb3IpLAorLyog
aGFybW9ueSBleHBvcnQgKi8gICAidmFsaWRhdGlvbkVycm9yIjogKCkgPT4gKC8qIGJpbmRpbmcg
Ki8gdmFsaWRhdGlvbkVycm9yKQorLyogaGFybW9ueSBleHBvcnQgKi8gfSk7CisvKioKKyAqIEBw
YXJhbSB7c3RyaW5nfSB0ZXh0CisgKi8KK2Z1bmN0aW9uIGxhc3RMaW5lKHRleHQpIHsKKyAgY29u
c3Qgc3BsaXR0ZWQgPSB0ZXh0LnNwbGl0KCJcbiIpOworICByZXR1cm4gc3BsaXR0ZWRbc3BsaXR0
ZWQubGVuZ3RoIC0gMV07Cit9CisKK2Z1bmN0aW9uIGFwcGVuZElmRXhpc3QoYmFzZSwgdGFyZ2V0
KSB7CisgIGxldCByZXN1bHQgPSBiYXNlOworICBpZiAodGFyZ2V0KSB7CisgICAgcmVzdWx0ICs9
IGAgJHt0YXJnZXR9YDsKKyAgfQorICByZXR1cm4gcmVzdWx0OworfQogCi0gICAgICAgIHZhciBp
dGVyYWJsZV90eXBlID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBpZiAoY29uc3VtZShJRCwg
Iml0ZXJhYmxlIikpIHJldHVybiAiaXRlcmFibGUiOwotICAgICAgICAgICAgZWxzZSBpZiAoY29u
c3VtZShJRCwgImxlZ2FjeWl0ZXJhYmxlIikpIHJldHVybiAibGVnYWN5aXRlcmFibGUiOwotICAg
ICAgICAgICAgZWxzZSBpZiAoY29uc3VtZShJRCwgIm1hcGxpa2UiKSkgcmV0dXJuICJtYXBsaWtl
IjsKLSAgICAgICAgICAgIGVsc2UgaWYgKGNvbnN1bWUoSUQsICJzZXRsaWtlIikpIHJldHVybiAi
c2V0bGlrZSI7Ci0gICAgICAgICAgICBlbHNlIHJldHVybjsKK2Z1bmN0aW9uIGNvbnRleHRBc1Rl
eHQobm9kZSkgeworICBjb25zdCBoaWVyYXJjaHkgPSBbbm9kZV07CisgIHdoaWxlIChub2RlICYm
IG5vZGUucGFyZW50KSB7CisgICAgY29uc3QgeyBwYXJlbnQgfSA9IG5vZGU7CisgICAgaGllcmFy
Y2h5LnVuc2hpZnQocGFyZW50KTsKKyAgICBub2RlID0gcGFyZW50OworICB9CisgIHJldHVybiBo
aWVyYXJjaHkubWFwKChuKSA9PiBhcHBlbmRJZkV4aXN0KG4udHlwZSwgbi5uYW1lKSkuam9pbigi
IC0+ICIpOworfQorCisvKioKKyAqIEB0eXBlZGVmIHtvYmplY3R9IFdlYklETDJFcnJvck9wdGlv
bnMKKyAqIEBwcm9wZXJ0eSB7ImVycm9yIiB8ICJ3YXJuaW5nIn0gW2xldmVsXQorICogQHByb3Bl
cnR5IHtGdW5jdGlvbn0gW2F1dG9maXhdCisgKgorICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2Ug
ZXJyb3IgbWVzc2FnZQorICogQHBhcmFtIHsiU3ludGF4IiB8ICJWYWxpZGF0aW9uIn0ga2luZCBl
cnJvciB0eXBlCisgKiBAcGFyYW0ge1dlYklETDJFcnJvck9wdGlvbnN9IFtvcHRpb25zXQorICov
CitmdW5jdGlvbiBlcnJvcigKKyAgc291cmNlLAorICBwb3NpdGlvbiwKKyAgY3VycmVudCwKKyAg
bWVzc2FnZSwKKyAga2luZCwKKyAgeyBsZXZlbCA9ICJlcnJvciIsIGF1dG9maXgsIHJ1bGVOYW1l
IH0gPSB7fQorKSB7CisgIC8qKgorICAgKiBAcGFyYW0ge251bWJlcn0gY291bnQKKyAgICovCisg
IGZ1bmN0aW9uIHNsaWNlVG9rZW5zKGNvdW50KSB7CisgICAgcmV0dXJuIGNvdW50ID4gMAorICAg
ICAgPyBzb3VyY2Uuc2xpY2UocG9zaXRpb24sIHBvc2l0aW9uICsgY291bnQpCisgICAgICA6IHNv
dXJjZS5zbGljZShNYXRoLm1heChwb3NpdGlvbiArIGNvdW50LCAwKSwgcG9zaXRpb24pOworICB9
CisKKyAgZnVuY3Rpb24gdG9rZW5zVG9UZXh0KGlucHV0cywgeyBwcmVjZWRlcyB9ID0ge30pIHsK
KyAgICBjb25zdCB0ZXh0ID0gaW5wdXRzLm1hcCgodCkgPT4gdC50cml2aWEgKyB0LnZhbHVlKS5q
b2luKCIiKTsKKyAgICBjb25zdCBuZXh0VG9rZW4gPSBzb3VyY2VbcG9zaXRpb25dOworICAgIGlm
IChuZXh0VG9rZW4udHlwZSA9PT0gImVvZiIpIHsKKyAgICAgIHJldHVybiB0ZXh0OworICAgIH0K
KyAgICBpZiAocHJlY2VkZXMpIHsKKyAgICAgIHJldHVybiB0ZXh0ICsgbmV4dFRva2VuLnRyaXZp
YTsKKyAgICB9CisgICAgcmV0dXJuIHRleHQuc2xpY2UobmV4dFRva2VuLnRyaXZpYS5sZW5ndGgp
OworICB9CisKKyAgY29uc3QgbWF4VG9rZW5zID0gNTsgLy8gYXJiaXRyYXJ5IGJ1dCB3b3JrcyB3
ZWxsIGVub3VnaAorICBjb25zdCBsaW5lID0KKyAgICBzb3VyY2VbcG9zaXRpb25dLnR5cGUgIT09
ICJlb2YiCisgICAgICA/IHNvdXJjZVtwb3NpdGlvbl0ubGluZQorICAgICAgOiBzb3VyY2UubGVu
Z3RoID4gMQorICAgICAgPyBzb3VyY2VbcG9zaXRpb24gLSAxXS5saW5lCisgICAgICA6IDE7CisK
KyAgY29uc3QgcHJlY2VkaW5nTGFzdExpbmUgPSBsYXN0TGluZSgKKyAgICB0b2tlbnNUb1RleHQo
c2xpY2VUb2tlbnMoLW1heFRva2VucyksIHsgcHJlY2VkZXM6IHRydWUgfSkKKyAgKTsKKworICBj
b25zdCBzdWJzZXF1ZW50VG9rZW5zID0gc2xpY2VUb2tlbnMobWF4VG9rZW5zKTsKKyAgY29uc3Qg
c3Vic2VxdWVudFRleHQgPSB0b2tlbnNUb1RleHQoc3Vic2VxdWVudFRva2Vucyk7CisgIGNvbnN0
IHN1YnNlcXVlbnRGaXJzdExpbmUgPSBzdWJzZXF1ZW50VGV4dC5zcGxpdCgiXG4iKVswXTsKKwor
ICBjb25zdCBzcGFjZWQgPSAiICIucmVwZWF0KHByZWNlZGluZ0xhc3RMaW5lLmxlbmd0aCkgKyAi
XiI7CisgIGNvbnN0IHNvdXJjZUNvbnRleHQgPSBwcmVjZWRpbmdMYXN0TGluZSArIHN1YnNlcXVl
bnRGaXJzdExpbmUgKyAiXG4iICsgc3BhY2VkOworCisgIGNvbnN0IGNvbnRleHRUeXBlID0ga2lu
ZCA9PT0gIlN5bnRheCIgPyAic2luY2UiIDogImluc2lkZSI7CisgIGNvbnN0IGluU291cmNlTmFt
ZSA9IHNvdXJjZS5uYW1lID8gYCBpbiAke3NvdXJjZS5uYW1lfWAgOiAiIjsKKyAgY29uc3QgZ3Jh
bW1hdGljYWxDb250ZXh0ID0KKyAgICBjdXJyZW50ICYmIGN1cnJlbnQubmFtZQorICAgICAgPyBg
LCAke2NvbnRleHRUeXBlfSBcYCR7Y3VycmVudC5wYXJ0aWFsID8gInBhcnRpYWwgIiA6ICIifSR7
Y29udGV4dEFzVGV4dCgKKyAgICAgICAgICBjdXJyZW50CisgICAgICAgICl9XGBgCisgICAgICA6
ICIiOworICBjb25zdCBjb250ZXh0ID0gYCR7a2luZH0gZXJyb3IgYXQgbGluZSAke2xpbmV9JHtp
blNvdXJjZU5hbWV9JHtncmFtbWF0aWNhbENvbnRleHR9OlxuJHtzb3VyY2VDb250ZXh0fWA7Cisg
IHJldHVybiB7CisgICAgbWVzc2FnZTogYCR7Y29udGV4dH0gJHttZXNzYWdlfWAsCisgICAgYmFy
ZU1lc3NhZ2U6IG1lc3NhZ2UsCisgICAgY29udGV4dCwKKyAgICBsaW5lLAorICAgIHNvdXJjZU5h
bWU6IHNvdXJjZS5uYW1lLAorICAgIGxldmVsLAorICAgIHJ1bGVOYW1lLAorICAgIGF1dG9maXgs
CisgICAgaW5wdXQ6IHN1YnNlcXVlbnRUZXh0LAorICAgIHRva2Vuczogc3Vic2VxdWVudFRva2Vu
cywKKyAgfTsKK30KKworLyoqCisgKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZSBlcnJvciBtZXNz
YWdlCisgKi8KK2Z1bmN0aW9uIHN5bnRheEVycm9yKHNvdXJjZSwgcG9zaXRpb24sIGN1cnJlbnQs
IG1lc3NhZ2UpIHsKKyAgcmV0dXJuIGVycm9yKHNvdXJjZSwgcG9zaXRpb24sIGN1cnJlbnQsIG1l
c3NhZ2UsICJTeW50YXgiKTsKK30KKworLyoqCisgKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZSBl
cnJvciBtZXNzYWdlCisgKiBAcGFyYW0ge1dlYklETDJFcnJvck9wdGlvbnN9IFtvcHRpb25zXQor
ICovCitmdW5jdGlvbiB2YWxpZGF0aW9uRXJyb3IoCisgIHRva2VuLAorICBjdXJyZW50LAorICBy
dWxlTmFtZSwKKyAgbWVzc2FnZSwKKyAgb3B0aW9ucyA9IHt9CispIHsKKyAgb3B0aW9ucy5ydWxl
TmFtZSA9IHJ1bGVOYW1lOworICByZXR1cm4gZXJyb3IoCisgICAgY3VycmVudC5zb3VyY2UsCisg
ICAgdG9rZW4uaW5kZXgsCisgICAgY3VycmVudCwKKyAgICBtZXNzYWdlLAorICAgICJWYWxpZGF0
aW9uIiwKKyAgICBvcHRpb25zCisgICk7Cit9CisKKworLyoqKi8gfSksCisvKiA0ICovCisvKioq
LyAoKF9fdW51c2VkX3dlYnBhY2tfX193ZWJwYWNrX21vZHVsZV9fLCBfX3dlYnBhY2tfZXhwb3J0
c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSA9PiB7CisKK19fd2VicGFja19yZXF1aXJlX18ucihf
X3dlYnBhY2tfZXhwb3J0c19fKTsKKy8qIGhhcm1vbnkgZXhwb3J0ICovIF9fd2VicGFja19yZXF1
aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCB7CisvKiBoYXJtb255IGV4cG9ydCAqLyAgICJ1
bmVzY2FwZSI6ICgpID0+ICgvKiBiaW5kaW5nICovIHVuZXNjYXBlKSwKKy8qIGhhcm1vbnkgZXhw
b3J0ICovICAgImxpc3QiOiAoKSA9PiAoLyogYmluZGluZyAqLyBsaXN0KSwKKy8qIGhhcm1vbnkg
ZXhwb3J0ICovICAgImNvbnN0X3ZhbHVlIjogKCkgPT4gKC8qIGJpbmRpbmcgKi8gY29uc3RfdmFs
dWUpLAorLyogaGFybW9ueSBleHBvcnQgKi8gICAiY29uc3RfZGF0YSI6ICgpID0+ICgvKiBiaW5k
aW5nICovIGNvbnN0X2RhdGEpLAorLyogaGFybW9ueSBleHBvcnQgKi8gICAicHJpbWl0aXZlX3R5
cGUiOiAoKSA9PiAoLyogYmluZGluZyAqLyBwcmltaXRpdmVfdHlwZSksCisvKiBoYXJtb255IGV4
cG9ydCAqLyAgICJhcmd1bWVudF9saXN0IjogKCkgPT4gKC8qIGJpbmRpbmcgKi8gYXJndW1lbnRf
bGlzdCksCisvKiBoYXJtb255IGV4cG9ydCAqLyAgICJ0eXBlX3dpdGhfZXh0ZW5kZWRfYXR0cmli
dXRlcyI6ICgpID0+ICgvKiBiaW5kaW5nICovIHR5cGVfd2l0aF9leHRlbmRlZF9hdHRyaWJ1dGVz
KSwKKy8qIGhhcm1vbnkgZXhwb3J0ICovICAgInJldHVybl90eXBlIjogKCkgPT4gKC8qIGJpbmRp
bmcgKi8gcmV0dXJuX3R5cGUpLAorLyogaGFybW9ueSBleHBvcnQgKi8gICAic3RyaW5naWZpZXIi
OiAoKSA9PiAoLyogYmluZGluZyAqLyBzdHJpbmdpZmllciksCisvKiBoYXJtb255IGV4cG9ydCAq
LyAgICJnZXRMYXN0SW5kZW50YXRpb24iOiAoKSA9PiAoLyogYmluZGluZyAqLyBnZXRMYXN0SW5k
ZW50YXRpb24pLAorLyogaGFybW9ueSBleHBvcnQgKi8gICAiZ2V0TWVtYmVySW5kZW50YXRpb24i
OiAoKSA9PiAoLyogYmluZGluZyAqLyBnZXRNZW1iZXJJbmRlbnRhdGlvbiksCisvKiBoYXJtb255
IGV4cG9ydCAqLyAgICJhdXRvZml4QWRkRXhwb3NlZFdpbmRvdyI6ICgpID0+ICgvKiBiaW5kaW5n
ICovIGF1dG9maXhBZGRFeHBvc2VkV2luZG93KSwKKy8qIGhhcm1vbnkgZXhwb3J0ICovICAgImdl
dEZpcnN0VG9rZW4iOiAoKSA9PiAoLyogYmluZGluZyAqLyBnZXRGaXJzdFRva2VuKSwKKy8qIGhh
cm1vbnkgZXhwb3J0ICovICAgImZpbmRMYXN0SW5kZXgiOiAoKSA9PiAoLyogYmluZGluZyAqLyBm
aW5kTGFzdEluZGV4KSwKKy8qIGhhcm1vbnkgZXhwb3J0ICovICAgImF1dG9QYXJlbnRlciI6ICgp
ID0+ICgvKiBiaW5kaW5nICovIGF1dG9QYXJlbnRlcikKKy8qIGhhcm1vbnkgZXhwb3J0ICovIH0p
OworLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF90eXBlX2pzX19XRUJQQUNLX0lNUE9SVEVEX01P
RFVMRV8wX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpOworLyogaGFybW9ueSBpbXBvcnQgKi8g
dmFyIF9hcmd1bWVudF9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fID0gX193ZWJwYWNr
X3JlcXVpcmVfXygxMSk7CisvKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2V4dGVuZGVkX2F0dHJp
YnV0ZXNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXyA9IF9fd2VicGFja19yZXF1aXJl
X18oOCk7CisvKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX29wZXJhdGlvbl9qc19fV0VCUEFDS19J
TVBPUlRFRF9NT0RVTEVfM19fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMyk7CisvKiBoYXJtb255
IGltcG9ydCAqLyB2YXIgX2F0dHJpYnV0ZV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9f
ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNCk7CisvKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX3Rv
a2VuaXNlcl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fID0gX193ZWJwYWNrX3JlcXVp
cmVfXygyKTsKKworCisKKworCisKKworLyoqCisgKiBAcGFyYW0ge3N0cmluZ30gaWRlbnRpZmll
cgorICovCitmdW5jdGlvbiB1bmVzY2FwZShpZGVudGlmaWVyKSB7CisgIHJldHVybiBpZGVudGlm
aWVyLnN0YXJ0c1dpdGgoIl8iKSA/IGlkZW50aWZpZXIuc2xpY2UoMSkgOiBpZGVudGlmaWVyOwor
fQorCisvKioKKyAqIFBhcnNlcyBjb21tYS1zZXBhcmF0ZWQgbGlzdAorICogQHBhcmFtIHtpbXBv
cnQoIi4uL3Rva2VuaXNlciIpLlRva2VuaXNlcn0gdG9rZW5pc2VyCisgKiBAcGFyYW0ge29iamVj
dH0gYXJncworICogQHBhcmFtIHtGdW5jdGlvbn0gYXJncy5wYXJzZXIgcGFyc2VyIGZ1bmN0aW9u
IGZvciBlYWNoIGl0ZW0KKyAqIEBwYXJhbSB7Ym9vbGVhbn0gW2FyZ3MuYWxsb3dEYW5nbGVyXSB3
aGV0aGVyIHRvIGFsbG93IGRhbmdsaW5nIGNvbW1hCisgKiBAcGFyYW0ge3N0cmluZ30gW2FyZ3Mu
bGlzdE5hbWVdIHRoZSBuYW1lIHRvIGJlIHNob3duIG9uIGVycm9yIG1lc3NhZ2VzCisgKi8KK2Z1
bmN0aW9uIGxpc3QodG9rZW5pc2VyLCB7IHBhcnNlciwgYWxsb3dEYW5nbGVyLCBsaXN0TmFtZSA9
ICJsaXN0IiB9KSB7CisgIGNvbnN0IGZpcnN0ID0gcGFyc2VyKHRva2VuaXNlcik7CisgIGlmICgh
Zmlyc3QpIHsKKyAgICByZXR1cm4gW107CisgIH0KKyAgZmlyc3QudG9rZW5zLnNlcGFyYXRvciA9
IHRva2VuaXNlci5jb25zdW1lKCIsIik7CisgIGNvbnN0IGl0ZW1zID0gW2ZpcnN0XTsKKyAgd2hp
bGUgKGZpcnN0LnRva2Vucy5zZXBhcmF0b3IpIHsKKyAgICBjb25zdCBpdGVtID0gcGFyc2VyKHRv
a2VuaXNlcik7CisgICAgaWYgKCFpdGVtKSB7CisgICAgICBpZiAoIWFsbG93RGFuZ2xlcikgewor
ICAgICAgICB0b2tlbmlzZXIuZXJyb3IoYFRyYWlsaW5nIGNvbW1hIGluICR7bGlzdE5hbWV9YCk7
CisgICAgICB9CisgICAgICBicmVhazsKKyAgICB9CisgICAgaXRlbS50b2tlbnMuc2VwYXJhdG9y
ID0gdG9rZW5pc2VyLmNvbnN1bWUoIiwiKTsKKyAgICBpdGVtcy5wdXNoKGl0ZW0pOworICAgIGlm
ICghaXRlbS50b2tlbnMuc2VwYXJhdG9yKSBicmVhazsKKyAgfQorICByZXR1cm4gaXRlbXM7Cit9
CisKKy8qKgorICogQHBhcmFtIHtpbXBvcnQoIi4uL3Rva2VuaXNlciIpLlRva2VuaXNlcn0gdG9r
ZW5pc2VyCisgKi8KK2Z1bmN0aW9uIGNvbnN0X3ZhbHVlKHRva2VuaXNlcikgeworICByZXR1cm4g
KAorICAgIHRva2VuaXNlci5jb25zdW1lVHlwZSgiZGVjaW1hbCIsICJpbnRlZ2VyIikgfHwKKyAg
ICB0b2tlbmlzZXIuY29uc3VtZSgidHJ1ZSIsICJmYWxzZSIsICJJbmZpbml0eSIsICItSW5maW5p
dHkiLCAiTmFOIikKKyAgKTsKK30KKworLyoqCisgKiBAcGFyYW0ge29iamVjdH0gdG9rZW4KKyAq
IEBwYXJhbSB7c3RyaW5nfSB0b2tlbi50eXBlCisgKiBAcGFyYW0ge3N0cmluZ30gdG9rZW4udmFs
dWUKKyAqLworZnVuY3Rpb24gY29uc3RfZGF0YSh7IHR5cGUsIHZhbHVlIH0pIHsKKyAgc3dpdGNo
ICh0eXBlKSB7CisgICAgY2FzZSAiZGVjaW1hbCI6CisgICAgY2FzZSAiaW50ZWdlciI6CisgICAg
ICByZXR1cm4geyB0eXBlOiAibnVtYmVyIiwgdmFsdWUgfTsKKyAgICBjYXNlICJzdHJpbmciOgor
ICAgICAgcmV0dXJuIHsgdHlwZTogInN0cmluZyIsIHZhbHVlOiB2YWx1ZS5zbGljZSgxLCAtMSkg
fTsKKyAgfQorCisgIHN3aXRjaCAodmFsdWUpIHsKKyAgICBjYXNlICJ0cnVlIjoKKyAgICBjYXNl
ICJmYWxzZSI6CisgICAgICByZXR1cm4geyB0eXBlOiAiYm9vbGVhbiIsIHZhbHVlOiB2YWx1ZSA9
PT0gInRydWUiIH07CisgICAgY2FzZSAiSW5maW5pdHkiOgorICAgIGNhc2UgIi1JbmZpbml0eSI6
CisgICAgICByZXR1cm4geyB0eXBlOiAiSW5maW5pdHkiLCBuZWdhdGl2ZTogdmFsdWUuc3RhcnRz
V2l0aCgiLSIpIH07CisgICAgY2FzZSAiWyI6CisgICAgICByZXR1cm4geyB0eXBlOiAic2VxdWVu
Y2UiLCB2YWx1ZTogW10gfTsKKyAgICBjYXNlICJ7IjoKKyAgICAgIHJldHVybiB7IHR5cGU6ICJk
aWN0aW9uYXJ5IiB9OworICAgIGRlZmF1bHQ6CisgICAgICByZXR1cm4geyB0eXBlOiB2YWx1ZSB9
OworICB9Cit9CisKKy8qKgorICogQHBhcmFtIHtpbXBvcnQoIi4uL3Rva2VuaXNlciIpLlRva2Vu
aXNlcn0gdG9rZW5pc2VyCisgKi8KK2Z1bmN0aW9uIHByaW1pdGl2ZV90eXBlKHRva2VuaXNlcikg
eworICBmdW5jdGlvbiBpbnRlZ2VyX3R5cGUoKSB7CisgICAgY29uc3QgcHJlZml4ID0gdG9rZW5p
c2VyLmNvbnN1bWUoInVuc2lnbmVkIik7CisgICAgY29uc3QgYmFzZSA9IHRva2VuaXNlci5jb25z
dW1lKCJzaG9ydCIsICJsb25nIik7CisgICAgaWYgKGJhc2UpIHsKKyAgICAgIGNvbnN0IHBvc3Rm
aXggPSB0b2tlbmlzZXIuY29uc3VtZSgibG9uZyIpOworICAgICAgcmV0dXJuIG5ldyBfdHlwZV9q
c19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fLlR5cGUoeyBzb3VyY2UsIHRva2VuczogeyBw
cmVmaXgsIGJhc2UsIHBvc3RmaXggfSB9KTsKKyAgICB9CisgICAgaWYgKHByZWZpeCkgdG9rZW5p
c2VyLmVycm9yKCJGYWlsZWQgdG8gcGFyc2UgaW50ZWdlciB0eXBlIik7CisgIH0KKworICBmdW5j
dGlvbiBkZWNpbWFsX3R5cGUoKSB7CisgICAgY29uc3QgcHJlZml4ID0gdG9rZW5pc2VyLmNvbnN1
bWUoInVucmVzdHJpY3RlZCIpOworICAgIGNvbnN0IGJhc2UgPSB0b2tlbmlzZXIuY29uc3VtZSgi
ZmxvYXQiLCAiZG91YmxlIik7CisgICAgaWYgKGJhc2UpIHsKKyAgICAgIHJldHVybiBuZXcgX3R5
cGVfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXy5UeXBlKHsgc291cmNlLCB0b2tlbnM6
IHsgcHJlZml4LCBiYXNlIH0gfSk7CisgICAgfQorICAgIGlmIChwcmVmaXgpIHRva2VuaXNlci5l
cnJvcigiRmFpbGVkIHRvIHBhcnNlIGZsb2F0IHR5cGUiKTsKKyAgfQorCisgIGNvbnN0IHsgc291
cmNlIH0gPSB0b2tlbmlzZXI7CisgIGNvbnN0IG51bV90eXBlID0gaW50ZWdlcl90eXBlKHRva2Vu
aXNlcikgfHwgZGVjaW1hbF90eXBlKHRva2VuaXNlcik7CisgIGlmIChudW1fdHlwZSkgcmV0dXJu
IG51bV90eXBlOworICBjb25zdCBiYXNlID0gdG9rZW5pc2VyLmNvbnN1bWUoCisgICAgImJpZ2lu
dCIsCisgICAgImJvb2xlYW4iLAorICAgICJieXRlIiwKKyAgICAib2N0ZXQiLAorICAgICJ1bmRl
ZmluZWQiCisgICk7CisgIGlmIChiYXNlKSB7CisgICAgcmV0dXJuIG5ldyBfdHlwZV9qc19fV0VC
UEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fLlR5cGUoeyBzb3VyY2UsIHRva2VuczogeyBiYXNlIH0g
fSk7CisgIH0KK30KKworLyoqCisgKiBAcGFyYW0ge2ltcG9ydCgiLi4vdG9rZW5pc2VyIikuVG9r
ZW5pc2VyfSB0b2tlbmlzZXIKKyAqLworZnVuY3Rpb24gYXJndW1lbnRfbGlzdCh0b2tlbmlzZXIp
IHsKKyAgcmV0dXJuIGxpc3QodG9rZW5pc2VyLCB7CisgICAgcGFyc2VyOiBfYXJndW1lbnRfanNf
X1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXy5Bcmd1bWVudC5wYXJzZSwKKyAgICBsaXN0TmFt
ZTogImFyZ3VtZW50cyBsaXN0IiwKKyAgfSk7Cit9CisKKy8qKgorICogQHBhcmFtIHtpbXBvcnQo
Ii4uL3Rva2VuaXNlciIpLlRva2VuaXNlcn0gdG9rZW5pc2VyCisgKiBAcGFyYW0ge3N0cmluZ30g
dHlwZU5hbWUKKyAqLworZnVuY3Rpb24gdHlwZV93aXRoX2V4dGVuZGVkX2F0dHJpYnV0ZXModG9r
ZW5pc2VyLCB0eXBlTmFtZSkgeworICBjb25zdCBleHRBdHRycyA9IF9leHRlbmRlZF9hdHRyaWJ1
dGVzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18uRXh0ZW5kZWRBdHRyaWJ1dGVzLnBh
cnNlKHRva2VuaXNlcik7CisgIGNvbnN0IHJldCA9IF90eXBlX2pzX19XRUJQQUNLX0lNUE9SVEVE
X01PRFVMRV8wX18uVHlwZS5wYXJzZSh0b2tlbmlzZXIsIHR5cGVOYW1lKTsKKyAgaWYgKHJldCkg
YXV0b1BhcmVudGVyKHJldCkuZXh0QXR0cnMgPSBleHRBdHRyczsKKyAgcmV0dXJuIHJldDsKK30K
KworLyoqCisgKiBAcGFyYW0ge2ltcG9ydCgiLi4vdG9rZW5pc2VyIikuVG9rZW5pc2VyfSB0b2tl
bmlzZXIKKyAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlTmFtZQorICovCitmdW5jdGlvbiByZXR1cm5f
dHlwZSh0b2tlbmlzZXIsIHR5cGVOYW1lKSB7CisgIGNvbnN0IHR5cCA9IF90eXBlX2pzX19XRUJQ
QUNLX0lNUE9SVEVEX01PRFVMRV8wX18uVHlwZS5wYXJzZSh0b2tlbmlzZXIsIHR5cGVOYW1lIHx8
ICJyZXR1cm4tdHlwZSIpOworICBpZiAodHlwKSB7CisgICAgcmV0dXJuIHR5cDsKKyAgfQorICBj
b25zdCB2b2lkVG9rZW4gPSB0b2tlbmlzZXIuY29uc3VtZSgidm9pZCIpOworICBpZiAodm9pZFRv
a2VuKSB7CisgICAgY29uc3QgcmV0ID0gbmV3IF90eXBlX2pzX19XRUJQQUNLX0lNUE9SVEVEX01P
RFVMRV8wX18uVHlwZSh7CisgICAgICBzb3VyY2U6IHRva2VuaXNlci5zb3VyY2UsCisgICAgICB0
b2tlbnM6IHsgYmFzZTogdm9pZFRva2VuIH0sCisgICAgfSk7CisgICAgcmV0LnR5cGUgPSAicmV0
dXJuLXR5cGUiOworICAgIHJldHVybiByZXQ7CisgIH0KK30KKworLyoqCisgKiBAcGFyYW0ge2lt
cG9ydCgiLi4vdG9rZW5pc2VyIikuVG9rZW5pc2VyfSB0b2tlbmlzZXIKKyAqLworZnVuY3Rpb24g
c3RyaW5naWZpZXIodG9rZW5pc2VyKSB7CisgIGNvbnN0IHNwZWNpYWwgPSB0b2tlbmlzZXIuY29u
c3VtZSgic3RyaW5naWZpZXIiKTsKKyAgaWYgKCFzcGVjaWFsKSByZXR1cm47CisgIGNvbnN0IG1l
bWJlciA9CisgICAgX2F0dHJpYnV0ZV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fLkF0
dHJpYnV0ZS5wYXJzZSh0b2tlbmlzZXIsIHsgc3BlY2lhbCB9KSB8fAorICAgIF9vcGVyYXRpb25f
anNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfXy5PcGVyYXRpb24ucGFyc2UodG9rZW5pc2Vy
LCB7IHNwZWNpYWwgfSkgfHwKKyAgICB0b2tlbmlzZXIuZXJyb3IoIlVudGVybWluYXRlZCBzdHJp
bmdpZmllciIpOworICByZXR1cm4gbWVtYmVyOworfQorCisvKioKKyAqIEBwYXJhbSB7c3RyaW5n
fSBzdHIKKyAqLworZnVuY3Rpb24gZ2V0TGFzdEluZGVudGF0aW9uKHN0cikgeworICBjb25zdCBs
aW5lcyA9IHN0ci5zcGxpdCgiXG4iKTsKKyAgLy8gdGhlIGZpcnN0IGxpbmUgdmlzdWFsbHkgYmlu
ZHMgdG8gdGhlIHByZWNlZGluZyB0b2tlbgorICBpZiAobGluZXMubGVuZ3RoKSB7CisgICAgY29u
c3QgbWF0Y2ggPSBsaW5lc1tsaW5lcy5sZW5ndGggLSAxXS5tYXRjaCgvXlxzKy8pOworICAgIGlm
IChtYXRjaCkgeworICAgICAgcmV0dXJuIG1hdGNoWzBdOworICAgIH0KKyAgfQorICByZXR1cm4g
IiI7Cit9CisKKy8qKgorICogQHBhcmFtIHtzdHJpbmd9IHBhcmVudFRyaXZpYQorICovCitmdW5j
dGlvbiBnZXRNZW1iZXJJbmRlbnRhdGlvbihwYXJlbnRUcml2aWEpIHsKKyAgY29uc3QgaW5kZW50
YXRpb24gPSBnZXRMYXN0SW5kZW50YXRpb24ocGFyZW50VHJpdmlhKTsKKyAgY29uc3QgaW5kZW50
Q2ggPSBpbmRlbnRhdGlvbi5pbmNsdWRlcygiXHQiKSA/ICJcdCIgOiAiICAiOworICByZXR1cm4g
aW5kZW50YXRpb24gKyBpbmRlbnRDaDsKK30KKworLyoqCisgKiBAcGFyYW0ge29iamVjdH0gZGVm
CisgKiBAcGFyYW0ge2ltcG9ydCgiLi9leHRlbmRlZC1hdHRyaWJ1dGVzLmpzIikuRXh0ZW5kZWRB
dHRyaWJ1dGVzfSBkZWYuZXh0QXR0cnMKKyAqLworZnVuY3Rpb24gYXV0b2ZpeEFkZEV4cG9zZWRX
aW5kb3coZGVmKSB7CisgIHJldHVybiAoKSA9PiB7CisgICAgaWYgKGRlZi5leHRBdHRycy5sZW5n
dGgpIHsKKyAgICAgIGNvbnN0IHRva2VuaXNlciA9IG5ldyBfdG9rZW5pc2VyX2pzX19XRUJQQUNL
X0lNUE9SVEVEX01PRFVMRV81X18uVG9rZW5pc2VyKCJFeHBvc2VkPVdpbmRvdywiKTsKKyAgICAg
IGNvbnN0IGV4cG9zZWQgPSBfZXh0ZW5kZWRfYXR0cmlidXRlc19qc19fV0VCUEFDS19JTVBPUlRF
RF9NT0RVTEVfMl9fLlNpbXBsZUV4dGVuZGVkQXR0cmlidXRlLnBhcnNlKHRva2VuaXNlcik7Cisg
ICAgICBleHBvc2VkLnRva2Vucy5zZXBhcmF0b3IgPSB0b2tlbmlzZXIuY29uc3VtZSgiLCIpOwor
ICAgICAgY29uc3QgZXhpc3RpbmcgPSBkZWYuZXh0QXR0cnNbMF07CisgICAgICBpZiAoIS9eXHMv
LnRlc3QoZXhpc3RpbmcudG9rZW5zLm5hbWUudHJpdmlhKSkgeworICAgICAgICBleGlzdGluZy50
b2tlbnMubmFtZS50cml2aWEgPSBgICR7ZXhpc3RpbmcudG9rZW5zLm5hbWUudHJpdmlhfWA7Cisg
ICAgICB9CisgICAgICBkZWYuZXh0QXR0cnMudW5zaGlmdChleHBvc2VkKTsKKyAgICB9IGVsc2Ug
eworICAgICAgYXV0b1BhcmVudGVyKGRlZikuZXh0QXR0cnMgPSBfZXh0ZW5kZWRfYXR0cmlidXRl
c19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fLkV4dGVuZGVkQXR0cmlidXRlcy5wYXJz
ZSgKKyAgICAgICAgbmV3IF90b2tlbmlzZXJfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzVf
Xy5Ub2tlbmlzZXIoIltFeHBvc2VkPVdpbmRvd10iKQorICAgICAgKTsKKyAgICAgIGNvbnN0IHRy
aXZpYSA9IGRlZi50b2tlbnMuYmFzZS50cml2aWE7CisgICAgICBkZWYuZXh0QXR0cnMudG9rZW5z
Lm9wZW4udHJpdmlhID0gdHJpdmlhOworICAgICAgZGVmLnRva2Vucy5iYXNlLnRyaXZpYSA9IGBc
biR7Z2V0TGFzdEluZGVudGF0aW9uKHRyaXZpYSl9YDsKKyAgICB9CisgIH07Cit9CisKKy8qKgor
ICogR2V0IHRoZSBmaXJzdCBzeW50YXggdG9rZW4gZm9yIHRoZSBnaXZlbiBJREwgb2JqZWN0Lgor
ICogQHBhcmFtIHsqfSBkYXRhCisgKi8KK2Z1bmN0aW9uIGdldEZpcnN0VG9rZW4oZGF0YSkgewor
ICBpZiAoZGF0YS5leHRBdHRycy5sZW5ndGgpIHsKKyAgICByZXR1cm4gZGF0YS5leHRBdHRycy50
b2tlbnMub3BlbjsKKyAgfQorICBpZiAoZGF0YS50eXBlID09PSAib3BlcmF0aW9uIiAmJiAhZGF0
YS5zcGVjaWFsKSB7CisgICAgcmV0dXJuIGdldEZpcnN0VG9rZW4oZGF0YS5pZGxUeXBlKTsKKyAg
fQorICBjb25zdCB0b2tlbnMgPSBPYmplY3QudmFsdWVzKGRhdGEudG9rZW5zKS5zb3J0KCh4LCB5
KSA9PiB4LmluZGV4IC0geS5pbmRleCk7CisgIHJldHVybiB0b2tlbnNbMF07Cit9CisKKy8qKgor
ICogQHRlbXBsYXRlIFQKKyAqIEBwYXJhbSB7VFtdfSBhcnJheQorICogQHBhcmFtIHsoaXRlbTog
VCkgPT4gYm9vbGVhbn0gcHJlZGljYXRlCisgKi8KK2Z1bmN0aW9uIGZpbmRMYXN0SW5kZXgoYXJy
YXksIHByZWRpY2F0ZSkgeworICBjb25zdCBpbmRleCA9IGFycmF5LnNsaWNlKCkucmV2ZXJzZSgp
LmZpbmRJbmRleChwcmVkaWNhdGUpOworICBpZiAoaW5kZXggPT09IC0xKSB7CisgICAgcmV0dXJu
IGluZGV4OworICB9CisgIHJldHVybiBhcnJheS5sZW5ndGggLSBpbmRleCAtIDE7Cit9CisKKy8q
KgorICogUmV0dXJucyBhIHByb3h5IHRoYXQgYXV0by1hc3NpZ24gYHBhcmVudGAgZmllbGQuCisg
KiBAdGVtcGxhdGUgVAorICogQHBhcmFtIHtUfSBkYXRhCisgKiBAcGFyYW0geyp9IFtwYXJlbnRd
IFRoZSBvYmplY3QgdGhhdCB3aWxsIGJlIGFzc2lnbmVkIHRvIGBwYXJlbnRgLgorICogICAgICAg
ICAgICAgICAgICAgICBJZiBhYnNlbnQsIGl0IHdpbGwgYmUgYGRhdGFgIGJ5IGRlZmF1bHQuCisg
KiBAcmV0dXJuIHtUfQorICovCitmdW5jdGlvbiBhdXRvUGFyZW50ZXIoZGF0YSwgcGFyZW50KSB7
CisgIGlmICghcGFyZW50KSB7CisgICAgLy8gRGVmYXVsdHMgdG8gYGRhdGFgIHVubGVzcyBzcGVj
aWZpZWQgb3RoZXJ3aXNlLgorICAgIHBhcmVudCA9IGRhdGE7CisgIH0KKyAgaWYgKCFkYXRhKSB7
CisgICAgLy8gVGhpcyBhbGxvd3MgYGF1dG9QYXJlbnRlcih1bmRlZmluZWQpYCB3aGljaCBhZ2Fp
biBhbGxvd3MKKyAgICAvLyBgYXV0b1BhcmVudGVyKHBhcnNlKCkpYCB3aGVyZSB0aGUgZnVuY3Rp
b24gbWF5IHJldHVybiBub3RoaW5nLgorICAgIHJldHVybiBkYXRhOworICB9CisgIHJldHVybiBu
ZXcgUHJveHkoZGF0YSwgeworICAgIGdldCh0YXJnZXQsIHApIHsKKyAgICAgIGNvbnN0IHZhbHVl
ID0gdGFyZ2V0W3BdOworICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7CisgICAgICAg
IC8vIFdyYXBzIHRoZSBhcnJheSBzbyB0aGF0IGFueSBhZGRlZCBpdGVtcyB3aWxsIGFsc28gYXV0
b21hdGljYWxseQorICAgICAgICAvLyBnZXQgdGhlaXIgYHBhcmVudGAgdmFsdWVzLgorICAgICAg
ICByZXR1cm4gYXV0b1BhcmVudGVyKHZhbHVlLCB0YXJnZXQpOworICAgICAgfQorICAgICAgcmV0
dXJuIHZhbHVlOworICAgIH0sCisgICAgc2V0KHRhcmdldCwgcCwgdmFsdWUpIHsKKyAgICAgIHRh
cmdldFtwXSA9IHZhbHVlOworICAgICAgaWYgKCF2YWx1ZSkgeworICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHsKKyAgICAgICAgLy8g
QXNzaWduaW5nIGFuIGFycmF5IHdpbGwgYWRkIGBwYXJlbnRgIHRvIGl0cyBpdGVtcy4KKyAgICAg
ICAgZm9yIChjb25zdCBpdGVtIG9mIHZhbHVlKSB7CisgICAgICAgICAgaWYgKHR5cGVvZiBpdGVt
LnBhcmVudCAhPT0gInVuZGVmaW5lZCIpIHsKKyAgICAgICAgICAgIGl0ZW0ucGFyZW50ID0gcGFy
ZW50OworICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFs
dWUucGFyZW50ICE9PSAidW5kZWZpbmVkIikgeworICAgICAgICB2YWx1ZS5wYXJlbnQgPSBwYXJl
bnQ7CisgICAgICB9CisgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9LAorICB9KTsKK30KKworCisv
KioqLyB9KSwKKy8qIDUgKi8KKy8qKiovICgoX191bnVzZWRfd2VicGFja19fX3dlYnBhY2tfbW9k
dWxlX18sIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pID0+IHsKKwor
X193ZWJwYWNrX3JlcXVpcmVfXy5yKF9fd2VicGFja19leHBvcnRzX18pOworLyogaGFybW9ueSBl
eHBvcnQgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIHsKKy8q
IGhhcm1vbnkgZXhwb3J0ICovICAgIlR5cGUiOiAoKSA9PiAoLyogYmluZGluZyAqLyBUeXBlKQor
LyogaGFybW9ueSBleHBvcnQgKi8gfSk7CisvKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2Jhc2Vf
anNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNik7
CisvKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JURURf
TU9EVUxFXzFfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7CisvKiBoYXJtb255IGltcG9ydCAq
LyB2YXIgX3Rva2VuaXNlcl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fID0gX193ZWJw
YWNrX3JlcXVpcmVfXygyKTsKKy8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfZXJyb3JfanNfX1dF
QlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7CisvKiBo
YXJtb255IGltcG9ydCAqLyB2YXIgX3ZhbGlkYXRvcnNfaGVscGVyc19qc19fV0VCUEFDS19JTVBP
UlRFRF9NT0RVTEVfNF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3KTsKKy8qIGhhcm1vbnkgaW1w
b3J0ICovIHZhciBfZXh0ZW5kZWRfYXR0cmlidXRlc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RV
TEVfNV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4KTsKKworCisKKworCisKKworLyoqCisgKiBA
cGFyYW0ge2ltcG9ydCgiLi4vdG9rZW5pc2VyIikuVG9rZW5pc2VyfSB0b2tlbmlzZXIKKyAqIEBw
YXJhbSB7c3RyaW5nfSB0eXBlTmFtZQorICovCitmdW5jdGlvbiBnZW5lcmljX3R5cGUodG9rZW5p
c2VyLCB0eXBlTmFtZSkgeworICBjb25zdCBiYXNlID0gdG9rZW5pc2VyLmNvbnN1bWUoCisgICAg
IkZyb3plbkFycmF5IiwKKyAgICAiT2JzZXJ2YWJsZUFycmF5IiwKKyAgICAiUHJvbWlzZSIsCisg
ICAgInNlcXVlbmNlIiwKKyAgICAicmVjb3JkIgorICApOworICBpZiAoIWJhc2UpIHsKKyAgICBy
ZXR1cm47CisgIH0KKyAgY29uc3QgcmV0ID0gKDAsX2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JU
RURfTU9EVUxFXzFfXy5hdXRvUGFyZW50ZXIpKAorICAgIG5ldyBUeXBlKHsgc291cmNlOiB0b2tl
bmlzZXIuc291cmNlLCB0b2tlbnM6IHsgYmFzZSB9IH0pCisgICk7CisgIHJldC50b2tlbnMub3Bl
biA9CisgICAgdG9rZW5pc2VyLmNvbnN1bWUoIjwiKSB8fAorICAgIHRva2VuaXNlci5lcnJvcihg
Tm8gb3BlbmluZyBicmFja2V0IGFmdGVyICR7YmFzZS52YWx1ZX1gKTsKKyAgc3dpdGNoIChiYXNl
LnZhbHVlKSB7CisgICAgY2FzZSAiUHJvbWlzZSI6IHsKKyAgICAgIGlmICh0b2tlbmlzZXIucHJv
YmUoIlsiKSkKKyAgICAgICAgdG9rZW5pc2VyLmVycm9yKCJQcm9taXNlIHR5cGUgY2Fubm90IGhh
dmUgZXh0ZW5kZWQgYXR0cmlidXRlIik7CisgICAgICBjb25zdCBzdWJ0eXBlID0KKyAgICAgICAg
KDAsX2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXy5yZXR1cm5fdHlwZSko
dG9rZW5pc2VyLCB0eXBlTmFtZSkgfHwKKyAgICAgICAgdG9rZW5pc2VyLmVycm9yKCJNaXNzaW5n
IFByb21pc2Ugc3VidHlwZSIpOworICAgICAgcmV0LnN1YnR5cGUucHVzaChzdWJ0eXBlKTsKKyAg
ICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlICJzZXF1ZW5jZSI6CisgICAgY2FzZSAiRnJvemVu
QXJyYXkiOgorICAgIGNhc2UgIk9ic2VydmFibGVBcnJheSI6IHsKKyAgICAgIGNvbnN0IHN1YnR5
cGUgPQorICAgICAgICAoMCxfaGVscGVyc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9f
LnR5cGVfd2l0aF9leHRlbmRlZF9hdHRyaWJ1dGVzKSh0b2tlbmlzZXIsIHR5cGVOYW1lKSB8fAor
ICAgICAgICB0b2tlbmlzZXIuZXJyb3IoYE1pc3NpbmcgJHtiYXNlLnZhbHVlfSBzdWJ0eXBlYCk7
CisgICAgICByZXQuc3VidHlwZS5wdXNoKHN1YnR5cGUpOworICAgICAgYnJlYWs7CisgICAgfQor
ICAgIGNhc2UgInJlY29yZCI6IHsKKyAgICAgIGlmICh0b2tlbmlzZXIucHJvYmUoIlsiKSkKKyAg
ICAgICAgdG9rZW5pc2VyLmVycm9yKCJSZWNvcmQga2V5IGNhbm5vdCBoYXZlIGV4dGVuZGVkIGF0
dHJpYnV0ZSIpOworICAgICAgY29uc3Qga2V5VHlwZSA9CisgICAgICAgIHRva2VuaXNlci5jb25z
dW1lKC4uLl90b2tlbmlzZXJfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXy5zdHJpbmdU
eXBlcykgfHwKKyAgICAgICAgdG9rZW5pc2VyLmVycm9yKGBSZWNvcmQga2V5IG11c3QgYmUgb25l
IG9mOiAke190b2tlbmlzZXJfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXy5zdHJpbmdU
eXBlcy5qb2luKCIsICIpfWApOworICAgICAgY29uc3Qga2V5SWRsVHlwZSA9IG5ldyBUeXBlKHsK
KyAgICAgICAgc291cmNlOiB0b2tlbmlzZXIuc291cmNlLAorICAgICAgICB0b2tlbnM6IHsgYmFz
ZToga2V5VHlwZSB9LAorICAgICAgfSk7CisgICAgICBrZXlJZGxUeXBlLnRva2Vucy5zZXBhcmF0
b3IgPQorICAgICAgICB0b2tlbmlzZXIuY29uc3VtZSgiLCIpIHx8CisgICAgICAgIHRva2VuaXNl
ci5lcnJvcigiTWlzc2luZyBjb21tYSBhZnRlciByZWNvcmQga2V5IHR5cGUiKTsKKyAgICAgIGtl
eUlkbFR5cGUudHlwZSA9IHR5cGVOYW1lOworICAgICAgY29uc3QgdmFsdWVUeXBlID0KKyAgICAg
ICAgKDAsX2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXy50eXBlX3dpdGhf
ZXh0ZW5kZWRfYXR0cmlidXRlcykodG9rZW5pc2VyLCB0eXBlTmFtZSkgfHwKKyAgICAgICAgdG9r
ZW5pc2VyLmVycm9yKCJFcnJvciBwYXJzaW5nIGdlbmVyaWMgdHlwZSByZWNvcmQiKTsKKyAgICAg
IHJldC5zdWJ0eXBlLnB1c2goa2V5SWRsVHlwZSwgdmFsdWVUeXBlKTsKKyAgICAgIGJyZWFrOwor
ICAgIH0KKyAgfQorICBpZiAoIXJldC5pZGxUeXBlKSB0b2tlbmlzZXIuZXJyb3IoYEVycm9yIHBh
cnNpbmcgZ2VuZXJpYyB0eXBlICR7YmFzZS52YWx1ZX1gKTsKKyAgcmV0LnRva2Vucy5jbG9zZSA9
CisgICAgdG9rZW5pc2VyLmNvbnN1bWUoIj4iKSB8fAorICAgIHRva2VuaXNlci5lcnJvcihgTWlz
c2luZyBjbG9zaW5nIGJyYWNrZXQgYWZ0ZXIgJHtiYXNlLnZhbHVlfWApOworICByZXR1cm4gcmV0
LnRoaXM7Cit9CisKKy8qKgorICogQHBhcmFtIHtpbXBvcnQoIi4uL3Rva2VuaXNlciIpLlRva2Vu
aXNlcn0gdG9rZW5pc2VyCisgKi8KK2Z1bmN0aW9uIHR5cGVfc3VmZml4KHRva2VuaXNlciwgb2Jq
KSB7CisgIGNvbnN0IG51bGxhYmxlID0gdG9rZW5pc2VyLmNvbnN1bWUoIj8iKTsKKyAgaWYgKG51
bGxhYmxlKSB7CisgICAgb2JqLnRva2Vucy5udWxsYWJsZSA9IG51bGxhYmxlOworICB9CisgIGlm
ICh0b2tlbmlzZXIucHJvYmUoIj8iKSkgdG9rZW5pc2VyLmVycm9yKCJDYW4ndCBudWxsYWJsZSBt
b3JlIHRoYW4gb25jZSIpOworfQorCisvKioKKyAqIEBwYXJhbSB7aW1wb3J0KCIuLi90b2tlbmlz
ZXIiKS5Ub2tlbmlzZXJ9IHRva2VuaXNlcgorICogQHBhcmFtIHtzdHJpbmd9IHR5cGVOYW1lCisg
Ki8KK2Z1bmN0aW9uIHNpbmdsZV90eXBlKHRva2VuaXNlciwgdHlwZU5hbWUpIHsKKyAgbGV0IHJl
dCA9IGdlbmVyaWNfdHlwZSh0b2tlbmlzZXIsIHR5cGVOYW1lKSB8fCAoMCxfaGVscGVyc19qc19f
V0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fLnByaW1pdGl2ZV90eXBlKSh0b2tlbmlzZXIpOwor
ICBpZiAoIXJldCkgeworICAgIGNvbnN0IGJhc2UgPQorICAgICAgdG9rZW5pc2VyLmNvbnN1bWVU
eXBlKCJpZGVudGlmaWVyIikgfHwKKyAgICAgIHRva2VuaXNlci5jb25zdW1lKC4uLl90b2tlbmlz
ZXJfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXy5zdHJpbmdUeXBlcywgLi4uX3Rva2Vu
aXNlcl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fLnR5cGVOYW1lS2V5d29yZHMpOwor
ICAgIGlmICghYmFzZSkgeworICAgICAgcmV0dXJuOworICAgIH0KKyAgICByZXQgPSBuZXcgVHlw
ZSh7IHNvdXJjZTogdG9rZW5pc2VyLnNvdXJjZSwgdG9rZW5zOiB7IGJhc2UgfSB9KTsKKyAgICBp
ZiAodG9rZW5pc2VyLnByb2JlKCI8IikpCisgICAgICB0b2tlbmlzZXIuZXJyb3IoYFVuc3VwcG9y
dGVkIGdlbmVyaWMgdHlwZSAke2Jhc2UudmFsdWV9YCk7CisgIH0KKyAgaWYgKHJldC5nZW5lcmlj
ID09PSAiUHJvbWlzZSIgJiYgdG9rZW5pc2VyLnByb2JlKCI/IikpIHsKKyAgICB0b2tlbmlzZXIu
ZXJyb3IoIlByb21pc2UgdHlwZSBjYW5ub3QgYmUgbnVsbGFibGUiKTsKKyAgfQorICByZXQudHlw
ZSA9IHR5cGVOYW1lIHx8IG51bGw7CisgIHR5cGVfc3VmZml4KHRva2VuaXNlciwgcmV0KTsKKyAg
aWYgKHJldC5udWxsYWJsZSAmJiByZXQuaWRsVHlwZSA9PT0gImFueSIpCisgICAgdG9rZW5pc2Vy
LmVycm9yKCJUeXBlIGBhbnlgIGNhbm5vdCBiZSBtYWRlIG51bGxhYmxlIik7CisgIHJldHVybiBy
ZXQ7Cit9CiAKLSAgICAgICAgdmFyIHJlYWRvbmx5X2l0ZXJhYmxlX3R5cGUgPSBmdW5jdGlvbigp
IHsKLSAgICAgICAgICAgIGlmIChjb25zdW1lKElELCAibWFwbGlrZSIpKSByZXR1cm4gIm1hcGxp
a2UiOwotICAgICAgICAgICAgZWxzZSBpZiAoY29uc3VtZShJRCwgInNldGxpa2UiKSkgcmV0dXJu
ICJzZXRsaWtlIjsKLSAgICAgICAgICAgIGVsc2UgcmV0dXJuOworLyoqCisgKiBAcGFyYW0ge2lt
cG9ydCgiLi4vdG9rZW5pc2VyIikuVG9rZW5pc2VyfSB0b2tlbmlzZXIKKyAqIEBwYXJhbSB7c3Ry
aW5nfSB0eXBlCisgKi8KK2Z1bmN0aW9uIHVuaW9uX3R5cGUodG9rZW5pc2VyLCB0eXBlKSB7Cisg
IGNvbnN0IHRva2VucyA9IHt9OworICB0b2tlbnMub3BlbiA9IHRva2VuaXNlci5jb25zdW1lKCIo
Iik7CisgIGlmICghdG9rZW5zLm9wZW4pIHJldHVybjsKKyAgY29uc3QgcmV0ID0gKDAsX2hlbHBl
cnNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXy5hdXRvUGFyZW50ZXIpKG5ldyBUeXBl
KHsgc291cmNlOiB0b2tlbmlzZXIuc291cmNlLCB0b2tlbnMgfSkpOworICByZXQudHlwZSA9IHR5
cGUgfHwgbnVsbDsKKyAgd2hpbGUgKHRydWUpIHsKKyAgICBjb25zdCB0eXAgPQorICAgICAgKDAs
X2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXy50eXBlX3dpdGhfZXh0ZW5k
ZWRfYXR0cmlidXRlcykodG9rZW5pc2VyKSB8fAorICAgICAgdG9rZW5pc2VyLmVycm9yKCJObyB0
eXBlIGFmdGVyIG9wZW4gcGFyZW50aGVzaXMgb3IgJ29yJyBpbiB1bmlvbiB0eXBlIik7CisgICAg
aWYgKHR5cC5pZGxUeXBlID09PSAiYW55IikKKyAgICAgIHRva2VuaXNlci5lcnJvcigiVHlwZSBg
YW55YCBjYW5ub3QgYmUgaW5jbHVkZWQgaW4gYSB1bmlvbiB0eXBlIik7CisgICAgaWYgKHR5cC5n
ZW5lcmljID09PSAiUHJvbWlzZSIpCisgICAgICB0b2tlbmlzZXIuZXJyb3IoIlR5cGUgYFByb21p
c2VgIGNhbm5vdCBiZSBpbmNsdWRlZCBpbiBhIHVuaW9uIHR5cGUiKTsKKyAgICByZXQuc3VidHlw
ZS5wdXNoKHR5cCk7CisgICAgY29uc3Qgb3IgPSB0b2tlbmlzZXIuY29uc3VtZSgib3IiKTsKKyAg
ICBpZiAob3IpIHsKKyAgICAgIHR5cC50b2tlbnMuc2VwYXJhdG9yID0gb3I7CisgICAgfSBlbHNl
IGJyZWFrOworICB9CisgIGlmIChyZXQuaWRsVHlwZS5sZW5ndGggPCAyKSB7CisgICAgdG9rZW5p
c2VyLmVycm9yKAorICAgICAgIkF0IGxlYXN0IHR3byB0eXBlcyBhcmUgZXhwZWN0ZWQgaW4gYSB1
bmlvbiB0eXBlIGJ1dCBmb3VuZCBsZXNzIgorICAgICk7CisgIH0KKyAgdG9rZW5zLmNsb3NlID0K
KyAgICB0b2tlbmlzZXIuY29uc3VtZSgiKSIpIHx8IHRva2VuaXNlci5lcnJvcigiVW50ZXJtaW5h
dGVkIHVuaW9uIHR5cGUiKTsKKyAgdHlwZV9zdWZmaXgodG9rZW5pc2VyLCByZXQpOworICByZXR1
cm4gcmV0LnRoaXM7Cit9CisKK2NsYXNzIFR5cGUgZXh0ZW5kcyBfYmFzZV9qc19fV0VCUEFDS19J
TVBPUlRFRF9NT0RVTEVfMF9fLkJhc2UgeworICAvKioKKyAgICogQHBhcmFtIHtpbXBvcnQoIi4u
L3Rva2VuaXNlciIpLlRva2VuaXNlcn0gdG9rZW5pc2VyCisgICAqIEBwYXJhbSB7c3RyaW5nfSB0
eXBlTmFtZQorICAgKi8KKyAgc3RhdGljIHBhcnNlKHRva2VuaXNlciwgdHlwZU5hbWUpIHsKKyAg
ICByZXR1cm4gc2luZ2xlX3R5cGUodG9rZW5pc2VyLCB0eXBlTmFtZSkgfHwgdW5pb25fdHlwZSh0
b2tlbmlzZXIsIHR5cGVOYW1lKTsKKyAgfQorCisgIGNvbnN0cnVjdG9yKHsgc291cmNlLCB0b2tl
bnMgfSkgeworICAgIHN1cGVyKHsgc291cmNlLCB0b2tlbnMgfSk7CisgICAgT2JqZWN0LmRlZmlu
ZVByb3BlcnR5KHRoaXMsICJzdWJ0eXBlIiwgeyB2YWx1ZTogW10sIHdyaXRhYmxlOiB0cnVlIH0p
OworICAgIHRoaXMuZXh0QXR0cnMgPSBuZXcgX2V4dGVuZGVkX2F0dHJpYnV0ZXNfanNfX1dFQlBB
Q0tfSU1QT1JURURfTU9EVUxFXzVfXy5FeHRlbmRlZEF0dHJpYnV0ZXMoe30pOworICB9CisKKyAg
Z2V0IGdlbmVyaWMoKSB7CisgICAgaWYgKHRoaXMuc3VidHlwZS5sZW5ndGggJiYgdGhpcy50b2tl
bnMuYmFzZSkgeworICAgICAgcmV0dXJuIHRoaXMudG9rZW5zLmJhc2UudmFsdWU7CisgICAgfQor
ICAgIHJldHVybiAiIjsKKyAgfQorICBnZXQgbnVsbGFibGUoKSB7CisgICAgcmV0dXJuIEJvb2xl
YW4odGhpcy50b2tlbnMubnVsbGFibGUpOworICB9CisgIGdldCB1bmlvbigpIHsKKyAgICByZXR1
cm4gQm9vbGVhbih0aGlzLnN1YnR5cGUubGVuZ3RoKSAmJiAhdGhpcy50b2tlbnMuYmFzZTsKKyAg
fQorICBnZXQgaWRsVHlwZSgpIHsKKyAgICBpZiAodGhpcy5zdWJ0eXBlLmxlbmd0aCkgeworICAg
ICAgcmV0dXJuIHRoaXMuc3VidHlwZTsKKyAgICB9CisgICAgLy8gQWRkaW5nIHByZWZpeGVzL3Bv
c3RmaXhlcyBmb3IgInVucmVzdHJpY3RlZCBmbG9hdCIsIGV0Yy4KKyAgICBjb25zdCBuYW1lID0g
W3RoaXMudG9rZW5zLnByZWZpeCwgdGhpcy50b2tlbnMuYmFzZSwgdGhpcy50b2tlbnMucG9zdGZp
eF0KKyAgICAgIC5maWx0ZXIoKHQpID0+IHQpCisgICAgICAubWFwKCh0KSA9PiB0LnZhbHVlKQor
ICAgICAgLmpvaW4oIiAiKTsKKyAgICByZXR1cm4gKDAsX2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1Q
T1JURURfTU9EVUxFXzFfXy51bmVzY2FwZSkobmFtZSk7CisgIH0KKworICAqdmFsaWRhdGUoZGVm
cykgeworICAgIHlpZWxkKiB0aGlzLmV4dEF0dHJzLnZhbGlkYXRlKGRlZnMpOworCisgICAgaWYg
KHRoaXMuaWRsVHlwZSA9PT0gInZvaWQiKSB7CisgICAgICBjb25zdCBtZXNzYWdlID0gYFxgdm9p
ZFxgIGlzIG5vdyByZXBsYWNlZCBieSBcYHVuZGVmaW5lZFxgLiBSZWZlciB0byB0aGUgXAorW3Jl
bGV2YW50IEdpdEh1YiBpc3N1ZV0oaHR0cHM6Ly9naXRodWIuY29tL2hleWNhbS93ZWJpZGwvaXNz
dWVzLzYwKSBcCitmb3IgbW9yZSBpbmZvcm1hdGlvbi5gOworICAgICAgeWllbGQgKDAsX2Vycm9y
X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX18udmFsaWRhdGlvbkVycm9yKSh0aGlzLnRv
a2Vucy5iYXNlLCB0aGlzLCAicmVwbGFjZS12b2lkIiwgbWVzc2FnZSwgeworICAgICAgICBhdXRv
Zml4OiByZXBsYWNlVm9pZCh0aGlzKSwKKyAgICAgIH0pOworICAgIH0KKworICAgIC8qCisgICAg
ICogSWYgYSB1bmlvbiBpcyBudWxsYWJsZSwgaXRzIHN1YnVuaW9ucyBjYW5ub3QgaW5jbHVkZSBh
IGRpY3Rpb25hcnkKKyAgICAgKiBJZiBub3QsIHN1YnVuaW9ucyBtYXkgaW5jbHVkZSBkaWN0aW9u
YXJpZXMgaWYgZWFjaCB1bmlvbiBpcyBub3QgbnVsbGFibGUKKyAgICAgKi8KKyAgICBjb25zdCB0
eXBlZGVmID0gIXRoaXMudW5pb24gJiYgZGVmcy51bmlxdWUuZ2V0KHRoaXMuaWRsVHlwZSk7Cisg
ICAgY29uc3QgdGFyZ2V0ID0gdGhpcy51bmlvbgorICAgICAgPyB0aGlzCisgICAgICA6IHR5cGVk
ZWYgJiYgdHlwZWRlZi50eXBlID09PSAidHlwZWRlZiIKKyAgICAgID8gdHlwZWRlZi5pZGxUeXBl
CisgICAgICA6IHVuZGVmaW5lZDsKKyAgICBpZiAodGFyZ2V0ICYmIHRoaXMubnVsbGFibGUpIHsK
KyAgICAgIC8vIGRvIG5vdCBhbGxvdyBhbnkgZGljdGlvbmFyeQorICAgICAgY29uc3QgeyByZWZl
cmVuY2UgfSA9ICgwLF92YWxpZGF0b3JzX2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9E
VUxFXzRfXy5pZGxUeXBlSW5jbHVkZXNEaWN0aW9uYXJ5KSh0YXJnZXQsIGRlZnMpIHx8IHt9Owor
ICAgICAgaWYgKHJlZmVyZW5jZSkgeworICAgICAgICBjb25zdCB0YXJnZXRUb2tlbiA9ICh0aGlz
LnVuaW9uID8gcmVmZXJlbmNlIDogdGhpcykudG9rZW5zLmJhc2U7CisgICAgICAgIGNvbnN0IG1l
c3NhZ2UgPSAiTnVsbGFibGUgdW5pb24gY2Fubm90IGluY2x1ZGUgYSBkaWN0aW9uYXJ5IHR5cGUu
IjsKKyAgICAgICAgeWllbGQgKDAsX2Vycm9yX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8z
X18udmFsaWRhdGlvbkVycm9yKSgKKyAgICAgICAgICB0YXJnZXRUb2tlbiwKKyAgICAgICAgICB0
aGlzLAorICAgICAgICAgICJuby1udWxsYWJsZS11bmlvbi1kaWN0IiwKKyAgICAgICAgICBtZXNz
YWdlCisgICAgICAgICk7CisgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgIC8vIGFsbG93IHNv
bWUgZGljdGlvbmFyeQorICAgICAgZm9yIChjb25zdCBzdWJ0eXBlIG9mIHRoaXMuc3VidHlwZSkg
eworICAgICAgICB5aWVsZCogc3VidHlwZS52YWxpZGF0ZShkZWZzKTsKKyAgICAgIH0KKyAgICB9
CisgIH0KKworICAvKiogQHBhcmFtIHtpbXBvcnQoIi4uL3dyaXRlci5qcyIpLldyaXRlcil9IHcg
Ki8KKyAgd3JpdGUodykgeworICAgIGNvbnN0IHR5cGVfYm9keSA9ICgpID0+IHsKKyAgICAgIGlm
ICh0aGlzLnVuaW9uIHx8IHRoaXMuZ2VuZXJpYykgeworICAgICAgICByZXR1cm4gdy50cy53cmFw
KFsKKyAgICAgICAgICB3LnRva2VuKHRoaXMudG9rZW5zLmJhc2UsIHcudHMuZ2VuZXJpYyksCisg
ICAgICAgICAgdy50b2tlbih0aGlzLnRva2Vucy5vcGVuKSwKKyAgICAgICAgICAuLi50aGlzLnN1
YnR5cGUubWFwKCh0KSA9PiB0LndyaXRlKHcpKSwKKyAgICAgICAgICB3LnRva2VuKHRoaXMudG9r
ZW5zLmNsb3NlKSwKKyAgICAgICAgXSk7CisgICAgICB9CisgICAgICBjb25zdCBmaXJzdFRva2Vu
ID0gdGhpcy50b2tlbnMucHJlZml4IHx8IHRoaXMudG9rZW5zLmJhc2U7CisgICAgICBjb25zdCBw
cmVmaXggPSB0aGlzLnRva2Vucy5wcmVmaXgKKyAgICAgICAgPyBbdGhpcy50b2tlbnMucHJlZml4
LnZhbHVlLCB3LnRzLnRyaXZpYSh0aGlzLnRva2Vucy5iYXNlLnRyaXZpYSldCisgICAgICAgIDog
W107CisgICAgICBjb25zdCByZWYgPSB3LnJlZmVyZW5jZSgKKyAgICAgICAgdy50cy53cmFwKFsK
KyAgICAgICAgICAuLi5wcmVmaXgsCisgICAgICAgICAgdGhpcy50b2tlbnMuYmFzZS52YWx1ZSwK
KyAgICAgICAgICB3LnRva2VuKHRoaXMudG9rZW5zLnBvc3RmaXgpLAorICAgICAgICBdKSwKKyAg
ICAgICAgeyB1bmVzY2FwZWQ6IHRoaXMuaWRsVHlwZSwgY29udGV4dDogdGhpcyB9CisgICAgICAp
OworICAgICAgcmV0dXJuIHcudHMud3JhcChbdy50cy50cml2aWEoZmlyc3RUb2tlbi50cml2aWEp
LCByZWZdKTsKKyAgICB9OworICAgIHJldHVybiB3LnRzLndyYXAoWworICAgICAgdGhpcy5leHRB
dHRycy53cml0ZSh3KSwKKyAgICAgIHR5cGVfYm9keSgpLAorICAgICAgdy50b2tlbih0aGlzLnRv
a2Vucy5udWxsYWJsZSksCisgICAgICB3LnRva2VuKHRoaXMudG9rZW5zLnNlcGFyYXRvciksCisg
ICAgXSk7CisgIH0KK30KKworLyoqCisgKiBAcGFyYW0ge1R5cGV9IHR5cGUKKyAqLworZnVuY3Rp
b24gcmVwbGFjZVZvaWQodHlwZSkgeworICByZXR1cm4gKCkgPT4geworICAgIHR5cGUudG9rZW5z
LmJhc2UudmFsdWUgPSAidW5kZWZpbmVkIjsKKyAgfTsKK30KKworCisvKioqLyB9KSwKKy8qIDYg
Ki8KKy8qKiovICgoX191bnVzZWRfd2VicGFja19fX3dlYnBhY2tfbW9kdWxlX18sIF9fd2VicGFj
a19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pID0+IHsKKworX193ZWJwYWNrX3JlcXVp
cmVfXy5yKF9fd2VicGFja19leHBvcnRzX18pOworLyogaGFybW9ueSBleHBvcnQgKi8gX193ZWJw
YWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIHsKKy8qIGhhcm1vbnkgZXhwb3J0
ICovICAgIkJhc2UiOiAoKSA9PiAoLyogYmluZGluZyAqLyBCYXNlKQorLyogaGFybW9ueSBleHBv
cnQgKi8gfSk7CisvLyBAdHMtY2hlY2sKKworY2xhc3MgQmFzZSB7CisgIC8qKgorICAgKiBAcGFy
YW0ge29iamVjdH0gaW5pdGlhbGl6ZXIKKyAgICogQHBhcmFtIHtCYXNlWyJzb3VyY2UiXX0gaW5p
dGlhbGl6ZXIuc291cmNlCisgICAqIEBwYXJhbSB7QmFzZVsidG9rZW5zIl19IGluaXRpYWxpemVy
LnRva2VucworICAgKi8KKyAgY29uc3RydWN0b3IoeyBzb3VyY2UsIHRva2VucyB9KSB7CisgICAg
T2JqZWN0LmRlZmluZVByb3BlcnRpZXModGhpcywgeworICAgICAgc291cmNlOiB7IHZhbHVlOiBz
b3VyY2UgfSwKKyAgICAgIHRva2VuczogeyB2YWx1ZTogdG9rZW5zLCB3cml0YWJsZTogdHJ1ZSB9
LAorICAgICAgcGFyZW50OiB7IHZhbHVlOiBudWxsLCB3cml0YWJsZTogdHJ1ZSB9LAorICAgICAg
dGhpczogeyB2YWx1ZTogdGhpcyB9LCAvLyB1c2VmdWwgd2hlbiBlc2NhcGluZyBmcm9tIHByb3h5
CisgICAgfSk7CisgIH0KKworICB0b0pTT04oKSB7CisgICAgY29uc3QganNvbiA9IHsgdHlwZTog
dW5kZWZpbmVkLCBuYW1lOiB1bmRlZmluZWQsIGluaGVyaXRhbmNlOiB1bmRlZmluZWQgfTsKKyAg
ICBsZXQgcHJvdG8gPSB0aGlzOworICAgIHdoaWxlIChwcm90byAhPT0gT2JqZWN0LnByb3RvdHlw
ZSkgeworICAgICAgY29uc3QgZGVzY01hcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3JzKHByb3RvKTsKKyAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRy
aWVzKGRlc2NNYXApKSB7CisgICAgICAgIGlmICh2YWx1ZS5lbnVtZXJhYmxlIHx8IHZhbHVlLmdl
dCkgeworICAgICAgICAgIC8vIEB0cy1pZ25vcmUgLSBhbGxvdyBpbmRleGluZyBoZXJlCisgICAg
ICAgICAganNvbltrZXldID0gdGhpc1trZXldOwogICAgICAgICB9CisgICAgICB9CisgICAgICBw
cm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihwcm90byk7CisgICAgfQorICAgIHJldHVybiBq
c29uOworICB9Cit9CiAKLSAgICAgICAgdmFyIGl0ZXJhYmxlID0gZnVuY3Rpb24gKHN0b3JlKSB7
Ci0gICAgICAgICAgICBhbGxfd3Moc3RvcmUsICJwZWEiKTsKLSAgICAgICAgICAgIHZhciBncmFi
YmVkID0gW10sCi0gICAgICAgICAgICAgICAgcmV0ID0ge3R5cGU6IG51bGwsIGlkbFR5cGU6IG51
bGwsIHJlYWRvbmx5OiBmYWxzZX07Ci0gICAgICAgICAgICBpZiAoY29uc3VtZShJRCwgInJlYWRv
bmx5IikpIHsKLSAgICAgICAgICAgICAgICByZXQucmVhZG9ubHkgPSB0cnVlOwotICAgICAgICAg
ICAgICAgIGdyYWJiZWQucHVzaChsYXN0X3Rva2VuKTsKLSAgICAgICAgICAgICAgICB2YXIgdyA9
IGFsbF93cygpOwotICAgICAgICAgICAgICAgIGlmICh3KSBncmFiYmVkLnB1c2godyk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICB2YXIgY29uc3VtZUl0VHlwZSA9IHJldC5yZWFkb25seSA/
IHJlYWRvbmx5X2l0ZXJhYmxlX3R5cGUgOiBpdGVyYWJsZV90eXBlOwogCi0gICAgICAgICAgICB2
YXIgaXR0eXBlID0gY29uc3VtZUl0VHlwZSgpOwotICAgICAgICAgICAgaWYgKCFpdHR5cGUpIHsK
LSAgICAgICAgICAgICAgICB0b2tlbnMgPSBncmFiYmVkLmNvbmNhdCh0b2tlbnMpOwotICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KKy8qKiovIH0pLAorLyogNyAqLworLyoq
Ki8gKChfX3VudXNlZF93ZWJwYWNrX19fd2VicGFja19tb2R1bGVfXywgX193ZWJwYWNrX2V4cG9y
dHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykgPT4gewogCi0gICAgICAgICAgICB2YXIgc2Vjb25k
VHlwZVJlcXVpcmVkID0gaXR0eXBlID09PSAibWFwbGlrZSI7Ci0gICAgICAgICAgICB2YXIgc2Vj
b25kVHlwZUFsbG93ZWQgPSBzZWNvbmRUeXBlUmVxdWlyZWQgfHwgaXR0eXBlID09PSAiaXRlcmFi
bGUiOwotICAgICAgICAgICAgcmV0LnR5cGUgPSBpdHR5cGU7Ci0gICAgICAgICAgICBpZiAocmV0
LnR5cGUgIT09ICdtYXBsaWtlJyAmJiByZXQudHlwZSAhPT0gJ3NldGxpa2UnKQotICAgICAgICAg
ICAgICAgIGRlbGV0ZSByZXQucmVhZG9ubHk7Ci0gICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAg
ICAgICAgIGlmIChjb25zdW1lKE9USEVSLCAiPCIpKSB7Ci0gICAgICAgICAgICAgICAgcmV0Lmlk
bFR5cGUgPSB0eXBlKCkgfHwgZXJyb3IoIkVycm9yIHBhcnNpbmcgIiArIGl0dHlwZSArICIgZGVj
bGFyYXRpb24iKTsKLSAgICAgICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgICAgICBp
ZiAoc2Vjb25kVHlwZUFsbG93ZWQpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIHR5cGUyID0g
bnVsbDsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnN1bWUoT1RIRVIsICIsIikpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGFsbF93cygpOwotICAgICAgICAgICAgICAgICAgICAgICAg
dHlwZTIgPSB0eXBlKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBhbGxfd3MoKTsgICAgICAg
ICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
ICAgICBpZiAodHlwZTIpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXQuaWRsVHlwZSA9IFty
ZXQuaWRsVHlwZSwgdHlwZTJdOwotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChzZWNvbmRU
eXBlUmVxdWlyZWQpCi0gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcigiTWlzc2luZyBzZWNv
bmQgdHlwZSBhcmd1bWVudCBpbiAiICsgaXR0eXBlICsgIiBkZWNsYXJhdGlvbiIpOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoT1RIRVIsICI+IikpIGVy
cm9yKCJVbnRlcm1pbmF0ZWQgIiArIGl0dHlwZSArICIgZGVjbGFyYXRpb24iKTsKLSAgICAgICAg
ICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoT1RIRVIsICI7
IikpIGVycm9yKCJNaXNzaW5nIHNlbWljb2xvbiBhZnRlciAiICsgaXR0eXBlICsgIiBkZWNsYXJh
dGlvbiIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
IGVycm9yKCJFcnJvciBwYXJzaW5nICIgKyBpdHR5cGUgKyAiIGRlY2xhcmF0aW9uIik7Ci0KLSAg
ICAgICAgICAgIHJldHVybiByZXQ7ICAgICAgICAgICAgCi0gICAgICAgIH0gICAgICAgIAotICAg
ICAgICAKLSAgICAgICAgdmFyIGludGVyZmFjZV8gPSBmdW5jdGlvbiAoaXNQYXJ0aWFsLCBzdG9y
ZSkgewotICAgICAgICAgICAgYWxsX3dzKGlzUGFydGlhbCA/IG51bGwgOiBzdG9yZSwgInBlYSIp
OwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKElELCAiaW50ZXJmYWNlIikpIHJldHVybjsKLSAg
ICAgICAgICAgIGFsbF93cygpOwotICAgICAgICAgICAgdmFyIG5hbWUgPSBjb25zdW1lKElEKSB8
fCBlcnJvcigiTm8gbmFtZSBmb3IgaW50ZXJmYWNlIik7Ci0gICAgICAgICAgICB2YXIgbWVtcyA9
IFtdCi0gICAgICAgICAgICAsICAgcmV0ID0gewotICAgICAgICAgICAgICAgIHR5cGU6ICAgImlu
dGVyZmFjZSIKLSAgICAgICAgICAgICwgICBuYW1lOiAgIG5hbWUudmFsdWUKLSAgICAgICAgICAg
ICwgICBwYXJ0aWFsOiAgICBmYWxzZQotICAgICAgICAgICAgLCAgIG1lbWJlcnM6ICAgIG1lbXMK
LSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICBpZiAoIWlzUGFydGlhbCkgcmV0LmluaGVyaXRh
bmNlID0gaW5oZXJpdGFuY2UoKSB8fCBudWxsOwotICAgICAgICAgICAgYWxsX3dzKCk7Ci0gICAg
ICAgICAgICBjb25zdW1lKE9USEVSLCAieyIpIHx8IGVycm9yKCJCb2R5bGVzcyBpbnRlcmZhY2Ui
KTsKLSAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgICAgICAgICAgYWxsX3dzKHN0
b3JlID8gbWVtcyA6IG51bGwpOwotICAgICAgICAgICAgICAgIGlmIChjb25zdW1lKE9USEVSLCAi
fSIpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGFsbF93cygpOwotICAgICAgICAgICAgICAgICAg
ICBjb25zdW1lKE9USEVSLCAiOyIpIHx8IGVycm9yKCJNaXNzaW5nIHNlbWljb2xvbiBhZnRlciBp
bnRlcmZhY2UiKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgdmFyIGVhID0gZXh0ZW5kZWRfYXR0cnMoc3RvcmUgPyBt
ZW1zIDogbnVsbCk7Ci0gICAgICAgICAgICAgICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICAgICAg
dmFyIGNudCA9IGNvbnN0XyhzdG9yZSA/IG1lbXMgOiBudWxsKTsKLSAgICAgICAgICAgICAgICBp
ZiAoY250KSB7Ci0gICAgICAgICAgICAgICAgICAgIGNudC5leHRBdHRycyA9IGVhOwotICAgICAg
ICAgICAgICAgICAgICByZXQubWVtYmVycy5wdXNoKGNudCk7Ci0gICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB2YXIgbWVtID0g
KG9wdC5hbGxvd05lc3RlZFR5cGVkZWZzICYmIHR5cGVkZWYoc3RvcmUgPyBtZW1zIDogbnVsbCkp
IHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZXJhYmxlKHN0b3JlID8gbWVtcyA6IG51
bGwpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIHNlcmlhbGlzZXIoc3RvcmUgPyBtZW1z
IDogbnVsbCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlKHN0b3JlID8g
bWVtcyA6IG51bGwpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbihzdG9y
ZSA/IG1lbXMgOiBudWxsKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcigiVW5r
bm93biBtZW1iZXIiKTsKLSAgICAgICAgICAgICAgICBtZW0uZXh0QXR0cnMgPSBlYTsKLSAgICAg
ICAgICAgICAgICByZXQubWVtYmVycy5wdXNoKG1lbSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH07Ci0gICAgICAgIAotICAgICAgICB2YXIgcGFydGlhbCA9IGZ1bmN0aW9uIChzdG9yZSkgewot
ICAgICAgICAgICAgYWxsX3dzKHN0b3JlLCAicGVhIik7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1
bWUoSUQsICJwYXJ0aWFsIikpIHJldHVybjsKLSAgICAgICAgICAgIHZhciB0aGluZyA9IGRpY3Rp
b25hcnkodHJ1ZSwgc3RvcmUpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnRlcmZhY2Vf
KHRydWUsIHN0b3JlKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IoIlBhcnRpYWwg
ZG9lc24ndCBhcHBseSB0byBhbnl0aGluZyIpOwotICAgICAgICAgICAgdGhpbmcucGFydGlhbCA9
IHRydWU7Ci0gICAgICAgICAgICByZXR1cm4gdGhpbmc7Ci0gICAgICAgIH07Ci0gICAgICAgIAot
ICAgICAgICB2YXIgZGljdGlvbmFyeSA9IGZ1bmN0aW9uIChpc1BhcnRpYWwsIHN0b3JlKSB7Ci0g
ICAgICAgICAgICBhbGxfd3MoaXNQYXJ0aWFsID8gbnVsbCA6IHN0b3JlLCAicGVhIik7Ci0gICAg
ICAgICAgICBpZiAoIWNvbnN1bWUoSUQsICJkaWN0aW9uYXJ5IikpIHJldHVybjsKLSAgICAgICAg
ICAgIGFsbF93cygpOwotICAgICAgICAgICAgdmFyIG5hbWUgPSBjb25zdW1lKElEKSB8fCBlcnJv
cigiTm8gbmFtZSBmb3IgZGljdGlvbmFyeSIpOwotICAgICAgICAgICAgdmFyIG1lbXMgPSBbXQot
ICAgICAgICAgICAgLCAgIHJldCA9IHsKLSAgICAgICAgICAgICAgICB0eXBlOiAgICJkaWN0aW9u
YXJ5IgotICAgICAgICAgICAgLCAgIG5hbWU6ICAgbmFtZS52YWx1ZQotICAgICAgICAgICAgLCAg
IHBhcnRpYWw6ICAgIGZhbHNlCi0gICAgICAgICAgICAsICAgbWVtYmVyczogICAgbWVtcwotICAg
ICAgICAgICAgfTsKLSAgICAgICAgICAgIGlmICghaXNQYXJ0aWFsKSByZXQuaW5oZXJpdGFuY2Ug
PSBpbmhlcml0YW5jZSgpIHx8IG51bGw7Ci0gICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAg
ICAgIGNvbnN1bWUoT1RIRVIsICJ7IikgfHwgZXJyb3IoIkJvZHlsZXNzIGRpY3Rpb25hcnkiKTsK
LSAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgICAgICAgICAgYWxsX3dzKHN0b3Jl
ID8gbWVtcyA6IG51bGwpOwotICAgICAgICAgICAgICAgIGlmIChjb25zdW1lKE9USEVSLCAifSIp
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGFsbF93cygpOwotICAgICAgICAgICAgICAgICAgICBj
b25zdW1lKE9USEVSLCAiOyIpIHx8IGVycm9yKCJNaXNzaW5nIHNlbWljb2xvbiBhZnRlciBkaWN0
aW9uYXJ5Iik7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIHZhciBlYSA9IGV4dGVuZGVkX2F0dHJzKHN0b3JlID8gbWVt
cyA6IG51bGwpOwotICAgICAgICAgICAgICAgIGFsbF93cyhzdG9yZSA/IG1lbXMgOiBudWxsLCAi
cGVhIik7Ci0gICAgICAgICAgICAgICAgdmFyIHJlcXVpcmVkID0gY29uc3VtZShJRCwgInJlcXVp
cmVkIik7Ci0gICAgICAgICAgICAgICAgdmFyIHR5cCA9IHR5cGUoKSB8fCBlcnJvcigiTm8gdHlw
ZSBmb3IgZGljdGlvbmFyeSBtZW1iZXIiKTsKLSAgICAgICAgICAgICAgICBhbGxfd3MoKTsKLSAg
ICAgICAgICAgICAgICB2YXIgbmFtZSA9IGNvbnN1bWUoSUQpIHx8IGVycm9yKCJObyBuYW1lIGZv
ciBkaWN0aW9uYXJ5IG1lbWJlciIpOwotICAgICAgICAgICAgICAgIHZhciBkZmx0ID0gZGVmYXVs
dF8oKTsKLSAgICAgICAgICAgICAgICBpZiAocmVxdWlyZWQgJiYgZGZsdCkgZXJyb3IoIlJlcXVp
cmVkIG1lbWJlciBtdXN0IG5vdCBoYXZlIGEgZGVmYXVsdCIpOwotICAgICAgICAgICAgICAgIHJl
dC5tZW1iZXJzLnB1c2goewotICAgICAgICAgICAgICAgICAgICB0eXBlOiAgICAgICAiZmllbGQi
Ci0gICAgICAgICAgICAgICAgLCAgIG5hbWU6ICAgICAgIG5hbWUudmFsdWUKLSAgICAgICAgICAg
ICAgICAsICAgcmVxdWlyZWQ6ICAgISFyZXF1aXJlZAotICAgICAgICAgICAgICAgICwgICBpZGxU
eXBlOiAgICB0eXAKLSAgICAgICAgICAgICAgICAsICAgZXh0QXR0cnM6ICAgZWEKLSAgICAgICAg
ICAgICAgICAsICAgImRlZmF1bHQiOiAgZGZsdAotICAgICAgICAgICAgICAgIH0pOwotICAgICAg
ICAgICAgICAgIGFsbF93cygpOwotICAgICAgICAgICAgICAgIGNvbnN1bWUoT1RIRVIsICI7Iikg
fHwgZXJyb3IoIlVudGVybWluYXRlZCBkaWN0aW9uYXJ5IG1lbWJlciIpOwotICAgICAgICAgICAg
fQotICAgICAgICB9OwotICAgICAgICAKLSAgICAgICAgdmFyIGV4Y2VwdGlvbiA9IGZ1bmN0aW9u
IChzdG9yZSkgewotICAgICAgICAgICAgYWxsX3dzKHN0b3JlLCAicGVhIik7Ci0gICAgICAgICAg
ICBpZiAoIWNvbnN1bWUoSUQsICJleGNlcHRpb24iKSkgcmV0dXJuOwotICAgICAgICAgICAgYWxs
X3dzKCk7Ci0gICAgICAgICAgICB2YXIgbmFtZSA9IGNvbnN1bWUoSUQpIHx8IGVycm9yKCJObyBu
YW1lIGZvciBleGNlcHRpb24iKTsKLSAgICAgICAgICAgIHZhciBtZW1zID0gW10KLSAgICAgICAg
ICAgICwgICByZXQgPSB7Ci0gICAgICAgICAgICAgICAgdHlwZTogICAiZXhjZXB0aW9uIgotICAg
ICAgICAgICAgLCAgIG5hbWU6ICAgbmFtZS52YWx1ZQotICAgICAgICAgICAgLCAgIG1lbWJlcnM6
ICAgIG1lbXMKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICByZXQuaW5oZXJpdGFuY2UgPSBp
bmhlcml0YW5jZSgpIHx8IG51bGw7Ci0gICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAg
IGNvbnN1bWUoT1RIRVIsICJ7IikgfHwgZXJyb3IoIkJvZHlsZXNzIGV4Y2VwdGlvbiIpOwotICAg
ICAgICAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgICAgICAgICBhbGxfd3Moc3RvcmUgPyBt
ZW1zIDogbnVsbCk7Ci0gICAgICAgICAgICAgICAgaWYgKGNvbnN1bWUoT1RIRVIsICJ9IikpIHsK
LSAgICAgICAgICAgICAgICAgICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnN1
bWUoT1RIRVIsICI7IikgfHwgZXJyb3IoIk1pc3Npbmcgc2VtaWNvbG9uIGFmdGVyIGV4Y2VwdGlv
biIpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0OwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICB2YXIgZWEgPSBleHRlbmRlZF9hdHRycyhzdG9yZSA/IG1lbXMgOiBu
dWxsKTsKLSAgICAgICAgICAgICAgICBhbGxfd3Moc3RvcmUgPyBtZW1zIDogbnVsbCwgInBlYSIp
OwotICAgICAgICAgICAgICAgIHZhciBjbnQgPSBjb25zdF8oKTsKLSAgICAgICAgICAgICAgICBp
ZiAoY250KSB7Ci0gICAgICAgICAgICAgICAgICAgIGNudC5leHRBdHRycyA9IGVhOwotICAgICAg
ICAgICAgICAgICAgICByZXQubWVtYmVycy5wdXNoKGNudCk7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICB2YXIgdHlwID0gdHlw
ZSgpOwotICAgICAgICAgICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgICAgICAgICAg
dmFyIG5hbWUgPSBjb25zdW1lKElEKTsKLSAgICAgICAgICAgICAgICAgICAgYWxsX3dzKCk7Ci0g
ICAgICAgICAgICAgICAgICAgIGlmICghdHlwIHx8ICFuYW1lIHx8ICFjb25zdW1lKE9USEVSLCAi
OyIpKSBlcnJvcigiVW5rbm93biBtZW1iZXIgaW4gZXhjZXB0aW9uIGJvZHkiKTsKLSAgICAgICAg
ICAgICAgICAgICAgcmV0Lm1lbWJlcnMucHVzaCh7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0
eXBlOiAgICAgICAiZmllbGQiCi0gICAgICAgICAgICAgICAgICAgICwgICBuYW1lOiAgICAgICBu
YW1lLnZhbHVlCi0gICAgICAgICAgICAgICAgICAgICwgICBpZGxUeXBlOiAgICB0eXAKLSAgICAg
ICAgICAgICAgICAgICAgLCAgIGV4dEF0dHJzOiAgIGVhCi0gICAgICAgICAgICAgICAgICAgIH0p
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLSAgICAgICAg
Ci0gICAgICAgIHZhciBlbnVtXyA9IGZ1bmN0aW9uIChzdG9yZSkgewotICAgICAgICAgICAgYWxs
X3dzKHN0b3JlLCAicGVhIik7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoSUQsICJlbnVtIikp
IHJldHVybjsKLSAgICAgICAgICAgIGFsbF93cygpOwotICAgICAgICAgICAgdmFyIG5hbWUgPSBj
b25zdW1lKElEKSB8fCBlcnJvcigiTm8gbmFtZSBmb3IgZW51bSIpOwotICAgICAgICAgICAgdmFy
IHZhbHMgPSBbXQotICAgICAgICAgICAgLCAgIHJldCA9IHsKLSAgICAgICAgICAgICAgICB0eXBl
OiAgICJlbnVtIgotICAgICAgICAgICAgLCAgIG5hbWU6ICAgbmFtZS52YWx1ZQotICAgICAgICAg
ICAgLCAgIHZhbHVlczogdmFscwotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIGFsbF93cygp
OwotICAgICAgICAgICAgY29uc3VtZShPVEhFUiwgInsiKSB8fCBlcnJvcigiTm8gY3VybHkgZm9y
IGVudW0iKTsKLSAgICAgICAgICAgIHZhciBzYXdfY29tbWEgPSBmYWxzZTsKLSAgICAgICAgICAg
IHdoaWxlICh0cnVlKSB7Ci0gICAgICAgICAgICAgICAgYWxsX3dzKHN0b3JlID8gdmFscyA6IG51
bGwpOwotICAgICAgICAgICAgICAgIGlmIChjb25zdW1lKE9USEVSLCAifSIpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGFsbF93cygpOwotICAgICAgICAgICAgICAgICAgICBjb25zdW1lKE9USEVS
LCAiOyIpIHx8IGVycm9yKCJObyBzZW1pY29sb24gYWZ0ZXIgZW51bSIpOwotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gcmV0OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB2
YXIgdmFsID0gY29uc3VtZShTVFIpIHx8IGVycm9yKCJVbmV4cGVjdGVkIHZhbHVlIGluIGVudW0i
KTsKLSAgICAgICAgICAgICAgICByZXQudmFsdWVzLnB1c2godmFsLnZhbHVlLnJlcGxhY2UoLyIv
ZywgIiIpKTsKLSAgICAgICAgICAgICAgICBhbGxfd3Moc3RvcmUgPyB2YWxzIDogbnVsbCk7Ci0g
ICAgICAgICAgICAgICAgaWYgKGNvbnN1bWUoT1RIRVIsICIsIikpIHsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKHN0b3JlKSB2YWxzLnB1c2goeyB0eXBlOiAiLCIgfSk7Ci0gICAgICAgICAgICAg
ICAgICAgIGFsbF93cyhzdG9yZSA/IHZhbHMgOiBudWxsKTsKLSAgICAgICAgICAgICAgICAgICAg
c2F3X2NvbW1hID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgICAgIHNhd19jb21tYSA9IGZhbHNlOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLSAgICAgICAgCi0gICAgICAgIHZhciB0
eXBlZGVmID0gZnVuY3Rpb24gKHN0b3JlKSB7Ci0gICAgICAgICAgICBhbGxfd3Moc3RvcmUsICJw
ZWEiKTsKLSAgICAgICAgICAgIGlmICghY29uc3VtZShJRCwgInR5cGVkZWYiKSkgcmV0dXJuOwot
ICAgICAgICAgICAgdmFyIHJldCA9IHsKLSAgICAgICAgICAgICAgICB0eXBlOiAgICJ0eXBlZGVm
IgotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIGFsbF93cygpOwotICAgICAgICAgICAgcmV0
LnR5cGVFeHRBdHRycyA9IGV4dGVuZGVkX2F0dHJzKCk7Ci0gICAgICAgICAgICBhbGxfd3Moc3Rv
cmUsICJ0cGVhIik7Ci0gICAgICAgICAgICByZXQuaWRsVHlwZSA9IHR5cGUoKSB8fCBlcnJvcigi
Tm8gdHlwZSBpbiB0eXBlZGVmIik7Ci0gICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAg
IHZhciBuYW1lID0gY29uc3VtZShJRCkgfHwgZXJyb3IoIk5vIG5hbWUgaW4gdHlwZWRlZiIpOwot
ICAgICAgICAgICAgcmV0Lm5hbWUgPSBuYW1lLnZhbHVlOwotICAgICAgICAgICAgYWxsX3dzKCk7
Ci0gICAgICAgICAgICBjb25zdW1lKE9USEVSLCAiOyIpIHx8IGVycm9yKCJVbnRlcm1pbmF0ZWQg
dHlwZWRlZiIpOwotICAgICAgICAgICAgcmV0dXJuIHJldDsKLSAgICAgICAgfTsKLSAgICAgICAg
Ci0gICAgICAgIHZhciBpbXBsZW1lbnRzXyA9IGZ1bmN0aW9uIChzdG9yZSkgewotICAgICAgICAg
ICAgYWxsX3dzKHN0b3JlLCAicGVhIik7Ci0gICAgICAgICAgICB2YXIgdGFyZ2V0ID0gY29uc3Vt
ZShJRCk7Ci0gICAgICAgICAgICBpZiAoIXRhcmdldCkgcmV0dXJuOwotICAgICAgICAgICAgdmFy
IHcgPSBhbGxfd3MoKTsKLSAgICAgICAgICAgIGlmIChjb25zdW1lKElELCAiaW1wbGVtZW50cyIp
KSB7Ci0gICAgICAgICAgICAgICAgdmFyIHJldCA9IHsKLSAgICAgICAgICAgICAgICAgICAgdHlw
ZTogICAiaW1wbGVtZW50cyIKLSAgICAgICAgICAgICAgICAsICAgdGFyZ2V0OiB0YXJnZXQudmFs
dWUKLSAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgICAgIGFsbF93cygpOwotICAgICAg
ICAgICAgICAgIHZhciBpbXAgPSBjb25zdW1lKElEKSB8fCBlcnJvcigiSW5jb21wbGV0ZSBpbXBs
ZW1lbnRzIHN0YXRlbWVudCIpOwotICAgICAgICAgICAgICAgIHJldFsiaW1wbGVtZW50cyJdID0g
aW1wLnZhbHVlOwotICAgICAgICAgICAgICAgIGFsbF93cygpOwotICAgICAgICAgICAgICAgIGNv
bnN1bWUoT1RIRVIsICI7IikgfHwgZXJyb3IoIk5vIHRlcm1pbmF0aW5nIDsgZm9yIGltcGxlbWVu
dHMgc3RhdGVtZW50Iik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIC8vIHJvbGxiYWNrCi0gICAg
ICAgICAgICAgICAgdG9rZW5zLnVuc2hpZnQodyk7Ci0gICAgICAgICAgICAgICAgdG9rZW5zLnVu
c2hpZnQodGFyZ2V0KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLSAgICAgICAgCi0gICAg
ICAgIHZhciBkZWZpbml0aW9uID0gZnVuY3Rpb24gKHN0b3JlKSB7Ci0gICAgICAgICAgICByZXR1
cm4gIGNhbGxiYWNrKHN0b3JlKSAgICAgICAgICAgICB8fAotICAgICAgICAgICAgICAgICAgICBp
bnRlcmZhY2VfKGZhbHNlLCBzdG9yZSkgICAgfHwKLSAgICAgICAgICAgICAgICAgICAgcGFydGlh
bChzdG9yZSkgICAgICAgICAgICAgIHx8Ci0gICAgICAgICAgICAgICAgICAgIGRpY3Rpb25hcnko
ZmFsc2UsIHN0b3JlKSAgICB8fAotICAgICAgICAgICAgICAgICAgICBleGNlcHRpb24oc3RvcmUp
ICAgICAgICAgICAgfHwKLSAgICAgICAgICAgICAgICAgICAgZW51bV8oc3RvcmUpICAgICAgICAg
ICAgICAgIHx8Ci0gICAgICAgICAgICAgICAgICAgIHR5cGVkZWYoc3RvcmUpICAgICAgICAgICAg
ICB8fAotICAgICAgICAgICAgICAgICAgICBpbXBsZW1lbnRzXyhzdG9yZSkKLSAgICAgICAgICAg
ICAgICAgICAgOwotICAgICAgICB9OwotICAgICAgICAKLSAgICAgICAgdmFyIGRlZmluaXRpb25z
ID0gZnVuY3Rpb24gKHN0b3JlKSB7Ci0gICAgICAgICAgICBpZiAoIXRva2Vucy5sZW5ndGgpIHJl
dHVybiBbXTsKLSAgICAgICAgICAgIHZhciBkZWZzID0gW107Ci0gICAgICAgICAgICB3aGlsZSAo
dHJ1ZSkgewotICAgICAgICAgICAgICAgIHZhciBlYSA9IGV4dGVuZGVkX2F0dHJzKHN0b3JlID8g
ZGVmcyA6IG51bGwpCi0gICAgICAgICAgICAgICAgLCAgIGRlZiA9IGRlZmluaXRpb24oc3RvcmUg
PyBkZWZzIDogbnVsbCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFkZWYpIHsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKGVhLmxlbmd0aCkgZXJyb3IoIlN0cmF5IGV4dGVuZGVkIGF0dHJpYnV0ZXMi
KTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIGRlZi5leHRBdHRycyA9IGVhOwotICAgICAgICAgICAgICAgIGRlZnMucHVzaChk
ZWYpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIGRlZnM7CitfX3dlYnBhY2tf
cmVxdWlyZV9fLnIoX193ZWJwYWNrX2V4cG9ydHNfXyk7CisvKiBoYXJtb255IGV4cG9ydCAqLyBf
X3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgeworLyogaGFybW9ueSBl
eHBvcnQgKi8gICAiaWRsVHlwZUluY2x1ZGVzRGljdGlvbmFyeSI6ICgpID0+ICgvKiBiaW5kaW5n
ICovIGlkbFR5cGVJbmNsdWRlc0RpY3Rpb25hcnkpLAorLyogaGFybW9ueSBleHBvcnQgKi8gICAi
ZGljdGlvbmFyeUluY2x1ZGVzUmVxdWlyZWRGaWVsZCI6ICgpID0+ICgvKiBiaW5kaW5nICovIGRp
Y3Rpb25hcnlJbmNsdWRlc1JlcXVpcmVkRmllbGQpCisvKiBoYXJtb255IGV4cG9ydCAqLyB9KTsK
Ky8vIEB0cy1jaGVjaworCisvKioKKyAqIEB0eXBlZGVmIHtpbXBvcnQoIi4uL3Byb2R1Y3Rpb25z
L2RpY3Rpb25hcnkuanMiKS5EaWN0aW9uYXJ5fSBEaWN0aW9uYXJ5CisgKgorICogQHBhcmFtIHsq
fSBpZGxUeXBlCisgKiBAcGFyYW0ge2ltcG9ydCgiLi4vdmFsaWRhdG9yLmpzIikuRGVmaW5pdGlv
bnN9IGRlZnMKKyAqIEBwYXJhbSB7b2JqZWN0fSBbb3B0aW9uc10KKyAqIEBwYXJhbSB7Ym9vbGVh
bn0gW29wdGlvbnMudXNlTnVsbGFibGVJbm5lcl0gdXNlIHdoZW4gdGhlIGlucHV0IGlkbFR5cGUg
aXMgbnVsbGFibGUgYW5kIHlvdSB3YW50IHRvIHVzZSBpdHMgaW5uZXIgdHlwZQorICogQHJldHVy
biB7eyByZWZlcmVuY2U6ICosIGRpY3Rpb25hcnk6IERpY3Rpb25hcnkgfX0gdGhlIHR5cGUgcmVm
ZXJlbmNlIHRoYXQgdWx0aW1hdGVseSBpbmNsdWRlcyBkaWN0aW9uYXJ5LgorICovCitmdW5jdGlv
biBpZGxUeXBlSW5jbHVkZXNEaWN0aW9uYXJ5KAorICBpZGxUeXBlLAorICBkZWZzLAorICB7IHVz
ZU51bGxhYmxlSW5uZXIgfSA9IHt9CispIHsKKyAgaWYgKCFpZGxUeXBlLnVuaW9uKSB7CisgICAg
Y29uc3QgZGVmID0gZGVmcy51bmlxdWUuZ2V0KGlkbFR5cGUuaWRsVHlwZSk7CisgICAgaWYgKCFk
ZWYpIHsKKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGRlZi50eXBlID09PSAidHlwZWRl
ZiIpIHsKKyAgICAgIGNvbnN0IHsgdHlwZWRlZkluY2x1ZGVzRGljdGlvbmFyeSB9ID0gZGVmcy5j
YWNoZTsKKyAgICAgIGlmICh0eXBlZGVmSW5jbHVkZXNEaWN0aW9uYXJ5LmhhcyhkZWYpKSB7Cisg
ICAgICAgIC8vIE5vdGUgdGhhdCB0aGlzIGFsc28gaGFsdHMgd2hlbiBpdCBtZXQgaW5kZXRlcm1p
bmF0ZSBzdGF0ZQorICAgICAgICAvLyB0byBwcmV2ZW50IGluZmluaXRlIHJlY3Vyc2lvbgorICAg
ICAgICByZXR1cm4gdHlwZWRlZkluY2x1ZGVzRGljdGlvbmFyeS5nZXQoZGVmKTsKKyAgICAgIH0K
KyAgICAgIGRlZnMuY2FjaGUudHlwZWRlZkluY2x1ZGVzRGljdGlvbmFyeS5zZXQoZGVmLCB1bmRl
ZmluZWQpOyAvLyBpbmRldGVybWluYXRlIHN0YXRlCisgICAgICBjb25zdCByZXN1bHQgPSBpZGxU
eXBlSW5jbHVkZXNEaWN0aW9uYXJ5KGRlZi5pZGxUeXBlLCBkZWZzKTsKKyAgICAgIGRlZnMuY2Fj
aGUudHlwZWRlZkluY2x1ZGVzRGljdGlvbmFyeS5zZXQoZGVmLCByZXN1bHQpOworICAgICAgaWYg
KHJlc3VsdCkgeworICAgICAgICByZXR1cm4geworICAgICAgICAgIHJlZmVyZW5jZTogaWRsVHlw
ZSwKKyAgICAgICAgICBkaWN0aW9uYXJ5OiByZXN1bHQuZGljdGlvbmFyeSwKICAgICAgICAgfTsK
LSAgICAgICAgdmFyIHJlcyA9IGRlZmluaXRpb25zKG9wdC53cyk7Ci0gICAgICAgIGlmICh0b2tl
bnMubGVuZ3RoKSBlcnJvcigiVW5yZWNvZ25pc2VkIHRva2VucyIpOwotICAgICAgICByZXR1cm4g
cmVzOworICAgICAgfQorICAgIH0KKyAgICBpZiAoZGVmLnR5cGUgPT09ICJkaWN0aW9uYXJ5IiAm
JiAodXNlTnVsbGFibGVJbm5lciB8fCAhaWRsVHlwZS5udWxsYWJsZSkpIHsKKyAgICAgIHJldHVy
biB7CisgICAgICAgIHJlZmVyZW5jZTogaWRsVHlwZSwKKyAgICAgICAgZGljdGlvbmFyeTogZGVm
LAorICAgICAgfTsKKyAgICB9CisgIH0KKyAgZm9yIChjb25zdCBzdWJ0eXBlIG9mIGlkbFR5cGUu
c3VidHlwZSkgeworICAgIGNvbnN0IHJlc3VsdCA9IGlkbFR5cGVJbmNsdWRlc0RpY3Rpb25hcnko
c3VidHlwZSwgZGVmcyk7CisgICAgaWYgKHJlc3VsdCkgeworICAgICAgaWYgKHN1YnR5cGUudW5p
b24pIHsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgIH0KKyAgICAgIHJldHVybiB7Cisg
ICAgICAgIHJlZmVyZW5jZTogc3VidHlwZSwKKyAgICAgICAgZGljdGlvbmFyeTogcmVzdWx0LmRp
Y3Rpb25hcnksCisgICAgICB9OworICAgIH0KKyAgfQorfQorCisvKioKKyAqIEBwYXJhbSB7Kn0g
ZGljdCBkaWN0aW9uYXJ5IHR5cGUKKyAqIEBwYXJhbSB7aW1wb3J0KCIuLi92YWxpZGF0b3IuanMi
KS5EZWZpbml0aW9uc30gZGVmcworICogQHJldHVybiB7Ym9vbGVhbn0KKyAqLworZnVuY3Rpb24g
ZGljdGlvbmFyeUluY2x1ZGVzUmVxdWlyZWRGaWVsZChkaWN0LCBkZWZzKSB7CisgIGlmIChkZWZz
LmNhY2hlLmRpY3Rpb25hcnlJbmNsdWRlc1JlcXVpcmVkRmllbGQuaGFzKGRpY3QpKSB7CisgICAg
cmV0dXJuIGRlZnMuY2FjaGUuZGljdGlvbmFyeUluY2x1ZGVzUmVxdWlyZWRGaWVsZC5nZXQoZGlj
dCk7CisgIH0KKyAgLy8gU2V0IGNhY2hlZCByZXN1bHQgdG8gaW5kZXRlcm1pbmF0ZSB0byBzaG9y
dC1jaXJjdWl0IGNpcmN1bGFyIGRlZmluaXRpb25zLgorICAvLyBUaGUgZmluYWwgcmVzdWx0IHdp
bGwgYmUgdXBkYXRlZCB0byB0cnVlIG9yIGZhbHNlLgorICBkZWZzLmNhY2hlLmRpY3Rpb25hcnlJ
bmNsdWRlc1JlcXVpcmVkRmllbGQuc2V0KGRpY3QsIHVuZGVmaW5lZCk7CisgIGxldCByZXN1bHQg
PSBkaWN0Lm1lbWJlcnMuc29tZSgoZmllbGQpID0+IGZpZWxkLnJlcXVpcmVkKTsKKyAgaWYgKCFy
ZXN1bHQgJiYgZGljdC5pbmhlcml0YW5jZSkgeworICAgIGNvbnN0IHN1cGVyZGljdCA9IGRlZnMu
dW5pcXVlLmdldChkaWN0LmluaGVyaXRhbmNlKTsKKyAgICBpZiAoIXN1cGVyZGljdCkgeworICAg
ICAgLy8gQXNzdW1lIHJlcXVpcmVkIG1lbWJlcnMgaW4gdGhlIHN1cGVydHlwZSBpZiBpdCBpcyB1
bmtub3duLgorICAgICAgcmVzdWx0ID0gdHJ1ZTsKKyAgICB9IGVsc2UgaWYgKGRpY3Rpb25hcnlJ
bmNsdWRlc1JlcXVpcmVkRmllbGQoc3VwZXJkaWN0LCBkZWZzKSkgeworICAgICAgcmVzdWx0ID0g
dHJ1ZTsKKyAgICB9CisgIH0KKyAgZGVmcy5jYWNoZS5kaWN0aW9uYXJ5SW5jbHVkZXNSZXF1aXJl
ZEZpZWxkLnNldChkaWN0LCByZXN1bHQpOworICByZXR1cm4gcmVzdWx0OworfQorCisKKy8qKiov
IH0pLAorLyogOCAqLworLyoqKi8gKChfX3VudXNlZF93ZWJwYWNrX19fd2VicGFja19tb2R1bGVf
XywgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykgPT4geworCitfX3dl
YnBhY2tfcmVxdWlyZV9fLnIoX193ZWJwYWNrX2V4cG9ydHNfXyk7CisvKiBoYXJtb255IGV4cG9y
dCAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgeworLyogaGFy
bW9ueSBleHBvcnQgKi8gICAiU2ltcGxlRXh0ZW5kZWRBdHRyaWJ1dGUiOiAoKSA9PiAoLyogYmlu
ZGluZyAqLyBTaW1wbGVFeHRlbmRlZEF0dHJpYnV0ZSksCisvKiBoYXJtb255IGV4cG9ydCAqLyAg
ICJFeHRlbmRlZEF0dHJpYnV0ZXMiOiAoKSA9PiAoLyogYmluZGluZyAqLyBFeHRlbmRlZEF0dHJp
YnV0ZXMpCisvKiBoYXJtb255IGV4cG9ydCAqLyB9KTsKKy8qIGhhcm1vbnkgaW1wb3J0ICovIHZh
ciBfYmFzZV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fID0gX193ZWJwYWNrX3JlcXVp
cmVfXyg2KTsKKy8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfYXJyYXlfYmFzZV9qc19fV0VCUEFD
S19JTVBPUlRFRF9NT0RVTEVfMV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5KTsKKy8qIGhhcm1v
bnkgaW1wb3J0ICovIHZhciBfdG9rZW5fanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXyA9
IF9fd2VicGFja19yZXF1aXJlX18oMTApOworLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9oZWxw
ZXJzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDQpOworLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9lcnJvcl9qc19fV0VCUEFDS19JTVBPUlRF
RF9NT0RVTEVfNF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTsKKworCisKKworCisKKy8qKgor
ICogQHBhcmFtIHtpbXBvcnQoIi4uL3Rva2VuaXNlciIpLlRva2VuaXNlcn0gdG9rZW5pc2VyCisg
KiBAcGFyYW0ge3N0cmluZ30gdG9rZW5OYW1lCisgKi8KK2Z1bmN0aW9uIHRva2Vucyh0b2tlbmlz
ZXIsIHRva2VuTmFtZSkgeworICByZXR1cm4gKDAsX2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JU
RURfTU9EVUxFXzNfXy5saXN0KSh0b2tlbmlzZXIsIHsKKyAgICBwYXJzZXI6IF90b2tlbl9qc19f
V0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fLldyYXBwZWRUb2tlbi5wYXJzZXIodG9rZW5pc2Vy
LCB0b2tlbk5hbWUpLAorICAgIGxpc3ROYW1lOiB0b2tlbk5hbWUgKyAiIGxpc3QiLAorICB9KTsK
K30KKworY29uc3QgZXh0QXR0clZhbHVlU3ludGF4ID0gWyJpZGVudGlmaWVyIiwgImRlY2ltYWwi
LCAiaW50ZWdlciIsICJzdHJpbmciXTsKKworY29uc3Qgc2hvdWxkQmVMZWdhY3lQcmVmaXhlZCA9
IFsKKyAgIk5vSW50ZXJmYWNlT2JqZWN0IiwKKyAgIkxlbmllbnRTZXR0ZXIiLAorICAiTGVuaWVu
dFRoaXMiLAorICAiVHJlYXROb25PYmplY3RBc051bGwiLAorICAiVW5mb3JnZWFibGUiLAorXTsK
KworY29uc3QgcmVuYW1lZExlZ2FjaWVzID0gbmV3IE1hcChbCisgIC4uLnNob3VsZEJlTGVnYWN5
UHJlZml4ZWQubWFwKChuYW1lKSA9PiBbbmFtZSwgYExlZ2FjeSR7bmFtZX1gXSksCisgIFsiTmFt
ZWRDb25zdHJ1Y3RvciIsICJMZWdhY3lGYWN0b3J5RnVuY3Rpb24iXSwKKyAgWyJPdmVycmlkZUJ1
aWx0aW5zIiwgIkxlZ2FjeU92ZXJyaWRlQnVpbHRJbnMiXSwKKyAgWyJUcmVhdE51bGxBcyIsICJM
ZWdhY3lOdWxsVG9FbXB0eVN0cmluZyJdLAorXSk7CisKKy8qKgorICogVGhpcyB3aWxsIGFsbG93
IGEgc2V0IG9mIGV4dGVuZGVkIGF0dHJpYnV0ZSB2YWx1ZXMgdG8gYmUgcGFyc2VkLgorICogQHBh
cmFtIHtpbXBvcnQoIi4uL3Rva2VuaXNlciIpLlRva2VuaXNlcn0gdG9rZW5pc2VyCisgKi8KK2Z1
bmN0aW9uIGV4dEF0dHJMaXN0SXRlbXModG9rZW5pc2VyKSB7CisgIGZvciAoY29uc3Qgc3ludGF4
IG9mIGV4dEF0dHJWYWx1ZVN5bnRheCkgeworICAgIGNvbnN0IHRva3MgPSB0b2tlbnModG9rZW5p
c2VyLCBzeW50YXgpOworICAgIGlmICh0b2tzLmxlbmd0aCkgeworICAgICAgcmV0dXJuIHRva3M7
CisgICAgfQorICB9CisgIHRva2VuaXNlci5lcnJvcigKKyAgICBgRXhwZWN0ZWQgaWRlbnRpZmll
cnMsIHN0cmluZ3MsIGRlY2ltYWxzLCBvciBpbnRlZ2VycyBidXQgbm9uZSBmb3VuZGAKKyAgKTsK
K30KKworY2xhc3MgRXh0ZW5kZWRBdHRyaWJ1dGVQYXJhbWV0ZXJzIGV4dGVuZHMgX2Jhc2VfanNf
X1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXy5CYXNlIHsKKyAgLyoqCisgICAqIEBwYXJhbSB7
aW1wb3J0KCIuLi90b2tlbmlzZXIiKS5Ub2tlbmlzZXJ9IHRva2VuaXNlcgorICAgKi8KKyAgc3Rh
dGljIHBhcnNlKHRva2VuaXNlcikgeworICAgIGNvbnN0IHRva2VucyA9IHsgYXNzaWduOiB0b2tl
bmlzZXIuY29uc3VtZSgiPSIpIH07CisgICAgY29uc3QgcmV0ID0gKDAsX2hlbHBlcnNfanNfX1dF
QlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfXy5hdXRvUGFyZW50ZXIpKAorICAgICAgbmV3IEV4dGVu
ZGVkQXR0cmlidXRlUGFyYW1ldGVycyh7IHNvdXJjZTogdG9rZW5pc2VyLnNvdXJjZSwgdG9rZW5z
IH0pCisgICAgKTsKKyAgICBpZiAodG9rZW5zLmFzc2lnbikgeworICAgICAgdG9rZW5zLnNlY29u
ZGFyeU5hbWUgPSB0b2tlbmlzZXIuY29uc3VtZVR5cGUoLi4uZXh0QXR0clZhbHVlU3ludGF4KTsK
KyAgICB9CisgICAgdG9rZW5zLm9wZW4gPSB0b2tlbmlzZXIuY29uc3VtZSgiKCIpOworICAgIGlm
ICh0b2tlbnMub3BlbikgeworICAgICAgcmV0Lmxpc3QgPSByZXQucmhzSXNMaXN0CisgICAgICAg
ID8gLy8gW0V4cG9zZWQ9KFdpbmRvdyxXb3JrZXIpXQorICAgICAgICAgIGV4dEF0dHJMaXN0SXRl
bXModG9rZW5pc2VyKQorICAgICAgICA6IC8vIFtMZWdhY3lGYWN0b3J5RnVuY3Rpb249QXVkaW8o
RE9NU3RyaW5nIHNyYyldIG9yIFtDb25zdHJ1Y3RvcihET01TdHJpbmcgc3RyKV0KKyAgICAgICAg
ICAoMCxfaGVscGVyc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fLmFyZ3VtZW50X2xp
c3QpKHRva2VuaXNlcik7CisgICAgICB0b2tlbnMuY2xvc2UgPQorICAgICAgICB0b2tlbmlzZXIu
Y29uc3VtZSgiKSIpIHx8CisgICAgICAgIHRva2VuaXNlci5lcnJvcigiVW5leHBlY3RlZCB0b2tl
biBpbiBleHRlbmRlZCBhdHRyaWJ1dGUgYXJndW1lbnQgbGlzdCIpOworICAgIH0gZWxzZSBpZiAo
cmV0Lmhhc1JocyAmJiAhdG9rZW5zLnNlY29uZGFyeU5hbWUpIHsKKyAgICAgIHRva2VuaXNlci5l
cnJvcigiTm8gcmlnaHQgaGFuZCBzaWRlIHRvIGV4dGVuZGVkIGF0dHJpYnV0ZSBhc3NpZ25tZW50
Iik7CisgICAgfQorICAgIHJldHVybiByZXQudGhpczsKKyAgfQorCisgIGdldCByaHNJc0xpc3Qo
KSB7CisgICAgcmV0dXJuIHRoaXMudG9rZW5zLmFzc2lnbiAmJiAhdGhpcy50b2tlbnMuc2Vjb25k
YXJ5TmFtZTsKKyAgfQorCisgIGdldCByaHNUeXBlKCkgeworICAgIGlmICh0aGlzLnJoc0lzTGlz
dCkgeworICAgICAgcmV0dXJuIHRoaXMubGlzdFswXS50b2tlbnMudmFsdWUudHlwZSArICItbGlz
dCI7CisgICAgfQorICAgIGlmICh0aGlzLnRva2Vucy5zZWNvbmRhcnlOYW1lKSB7CisgICAgICBy
ZXR1cm4gdGhpcy50b2tlbnMuc2Vjb25kYXJ5TmFtZS50eXBlOworICAgIH0KKyAgICByZXR1cm4g
bnVsbDsKKyAgfQorCisgIC8qKiBAcGFyYW0ge2ltcG9ydCgiLi4vd3JpdGVyLmpzIikuV3JpdGVy
KX0gdyAqLworICB3cml0ZSh3KSB7CisgICAgZnVuY3Rpb24gZXh0ZW5kZWRfYXR0cmlidXRlX2xp
c3RpdGVtKGl0ZW0pIHsKKyAgICAgIHJldHVybiB3LnRzLndyYXAoWworICAgICAgICB3LnRva2Vu
KGl0ZW0udG9rZW5zLnZhbHVlKSwKKyAgICAgICAgdy50b2tlbihpdGVtLnRva2Vucy5zZXBhcmF0
b3IpLAorICAgICAgXSk7CisgICAgfQorICAgIGNvbnN0IHsgcmhzVHlwZSB9ID0gdGhpczsKKyAg
ICByZXR1cm4gdy50cy53cmFwKFsKKyAgICAgIHcudG9rZW4odGhpcy50b2tlbnMuYXNzaWduKSwK
KyAgICAgIHcucmVmZXJlbmNlX3Rva2VuKHRoaXMudG9rZW5zLnNlY29uZGFyeU5hbWUsIHRoaXMu
cGFyZW50KSwKKyAgICAgIHcudG9rZW4odGhpcy50b2tlbnMub3BlbiksCisgICAgICAuLi4oIXRo
aXMubGlzdAorICAgICAgICA/IFtdCisgICAgICAgIDogdGhpcy5saXN0Lm1hcCgocCkgPT4gewor
ICAgICAgICAgICAgcmV0dXJuIHJoc1R5cGUgPT09ICJpZGVudGlmaWVyLWxpc3QiCisgICAgICAg
ICAgICAgID8gdy5pZGVudGlmaWVyKHAsIHRoaXMucGFyZW50KQorICAgICAgICAgICAgICA6IHJo
c1R5cGUgJiYgcmhzVHlwZS5lbmRzV2l0aCgiLWxpc3QiKQorICAgICAgICAgICAgICA/IGV4dGVu
ZGVkX2F0dHJpYnV0ZV9saXN0aXRlbShwKQorICAgICAgICAgICAgICA6IHAud3JpdGUodyk7Cisg
ICAgICAgICAgfSkpLAorICAgICAgdy50b2tlbih0aGlzLnRva2Vucy5jbG9zZSksCisgICAgXSk7
CisgIH0KK30KKworY2xhc3MgU2ltcGxlRXh0ZW5kZWRBdHRyaWJ1dGUgZXh0ZW5kcyBfYmFzZV9q
c19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fLkJhc2UgeworICAvKioKKyAgICogQHBhcmFt
IHtpbXBvcnQoIi4uL3Rva2VuaXNlciIpLlRva2VuaXNlcn0gdG9rZW5pc2VyCisgICAqLworICBz
dGF0aWMgcGFyc2UodG9rZW5pc2VyKSB7CisgICAgY29uc3QgbmFtZSA9IHRva2VuaXNlci5jb25z
dW1lVHlwZSgiaWRlbnRpZmllciIpOworICAgIGlmIChuYW1lKSB7CisgICAgICByZXR1cm4gbmV3
IFNpbXBsZUV4dGVuZGVkQXR0cmlidXRlKHsKKyAgICAgICAgc291cmNlOiB0b2tlbmlzZXIuc291
cmNlLAorICAgICAgICB0b2tlbnM6IHsgbmFtZSB9LAorICAgICAgICBwYXJhbXM6IEV4dGVuZGVk
QXR0cmlidXRlUGFyYW1ldGVycy5wYXJzZSh0b2tlbmlzZXIpLAorICAgICAgfSk7CisgICAgfQor
ICB9CisKKyAgY29uc3RydWN0b3IoeyBzb3VyY2UsIHRva2VucywgcGFyYW1zIH0pIHsKKyAgICBz
dXBlcih7IHNvdXJjZSwgdG9rZW5zIH0pOworICAgIHBhcmFtcy5wYXJlbnQgPSB0aGlzOworICAg
IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCAicGFyYW1zIiwgeyB2YWx1ZTogcGFyYW1zIH0p
OworICB9CisKKyAgZ2V0IHR5cGUoKSB7CisgICAgcmV0dXJuICJleHRlbmRlZC1hdHRyaWJ1dGUi
OworICB9CisgIGdldCBuYW1lKCkgeworICAgIHJldHVybiB0aGlzLnRva2Vucy5uYW1lLnZhbHVl
OworICB9CisgIGdldCByaHMoKSB7CisgICAgY29uc3QgeyByaHNUeXBlOiB0eXBlLCB0b2tlbnMs
IGxpc3QgfSA9IHRoaXMucGFyYW1zOworICAgIGlmICghdHlwZSkgeworICAgICAgcmV0dXJuIG51
bGw7CisgICAgfQorICAgIGNvbnN0IHZhbHVlID0gdGhpcy5wYXJhbXMucmhzSXNMaXN0CisgICAg
ICA/IGxpc3QKKyAgICAgIDogKDAsX2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxF
XzNfXy51bmVzY2FwZSkodG9rZW5zLnNlY29uZGFyeU5hbWUudmFsdWUpOworICAgIHJldHVybiB7
IHR5cGUsIHZhbHVlIH07CisgIH0KKyAgZ2V0IGFyZ3VtZW50cygpIHsKKyAgICBjb25zdCB7IHJo
c0lzTGlzdCwgbGlzdCB9ID0gdGhpcy5wYXJhbXM7CisgICAgaWYgKCFsaXN0IHx8IHJoc0lzTGlz
dCkgeworICAgICAgcmV0dXJuIFtdOworICAgIH0KKyAgICByZXR1cm4gbGlzdDsKKyAgfQorCisg
ICp2YWxpZGF0ZShkZWZzKSB7CisgICAgY29uc3QgeyBuYW1lIH0gPSB0aGlzOworICAgIGlmIChu
YW1lID09PSAiTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QiKSB7CisgICAgICBjb25zdCBtZXNzYWdl
ID0gYFxgW0xlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0XVxgIGV4dGVuZGVkIGF0dHJpYnV0ZSBpcyBh
biBcCit1bmRlc2lyYWJsZSBmZWF0dXJlIHRoYXQgbWF5IGJlIHJlbW92ZWQgZnJvbSBXZWIgSURM
IGluIHRoZSBmdXR1cmUuIFJlZmVyIHRvIHRoZSBcCitbcmVsZXZhbnQgdXBzdHJlYW0gUFJdKGh0
dHBzOi8vZ2l0aHViLmNvbS9oZXljYW0vd2ViaWRsL3B1bGwvNjA5KSBmb3IgbW9yZSBcCitpbmZv
cm1hdGlvbi5gOworICAgICAgeWllbGQgKDAsX2Vycm9yX2pzX19XRUJQQUNLX0lNUE9SVEVEX01P
RFVMRV80X18udmFsaWRhdGlvbkVycm9yKSgKKyAgICAgICAgdGhpcy50b2tlbnMubmFtZSwKKyAg
ICAgICAgdGhpcywKKyAgICAgICAgIm5vLW5vaW50ZXJmYWNlb2JqZWN0IiwKKyAgICAgICAgbWVz
c2FnZSwKKyAgICAgICAgeyBsZXZlbDogIndhcm5pbmciIH0KKyAgICAgICk7CisgICAgfSBlbHNl
IGlmIChyZW5hbWVkTGVnYWNpZXMuaGFzKG5hbWUpKSB7CisgICAgICBjb25zdCBtZXNzYWdlID0g
YFxgWyR7bmFtZX1dXGAgZXh0ZW5kZWQgYXR0cmlidXRlIGlzIGEgbGVnYWN5IGZlYXR1cmUgXAor
dGhhdCBpcyBub3cgcmVuYW1lZCB0byBcYFske3JlbmFtZWRMZWdhY2llcy5nZXQobmFtZSl9XVxg
LiBSZWZlciB0byB0aGUgXAorW3JlbGV2YW50IHVwc3RyZWFtIFBSXShodHRwczovL2dpdGh1Yi5j
b20vaGV5Y2FtL3dlYmlkbC9wdWxsLzg3MCkgZm9yIG1vcmUgXAoraW5mb3JtYXRpb24uYDsKKyAg
ICAgIHlpZWxkICgwLF9lcnJvcl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fLnZhbGlk
YXRpb25FcnJvcikodGhpcy50b2tlbnMubmFtZSwgdGhpcywgInJlbmFtZWQtbGVnYWN5IiwgbWVz
c2FnZSwgeworICAgICAgICBsZXZlbDogIndhcm5pbmciLAorICAgICAgICBhdXRvZml4OiByZW5h
bWVMZWdhY3lFeHRlbmRlZEF0dHJpYnV0ZSh0aGlzKSwKKyAgICAgIH0pOworICAgIH0KKyAgICBm
b3IgKGNvbnN0IGFyZyBvZiB0aGlzLmFyZ3VtZW50cykgeworICAgICAgeWllbGQqIGFyZy52YWxp
ZGF0ZShkZWZzKTsKKyAgICB9CisgIH0KKworICAvKiogQHBhcmFtIHtpbXBvcnQoIi4uL3dyaXRl
ci5qcyIpLldyaXRlcil9IHcgKi8KKyAgd3JpdGUodykgeworICAgIHJldHVybiB3LnRzLndyYXAo
WworICAgICAgdy50cy50cml2aWEodGhpcy50b2tlbnMubmFtZS50cml2aWEpLAorICAgICAgdy50
cy5leHRlbmRlZEF0dHJpYnV0ZSgKKyAgICAgICAgdy50cy53cmFwKFsKKyAgICAgICAgICB3LnRz
LmV4dGVuZGVkQXR0cmlidXRlUmVmZXJlbmNlKHRoaXMubmFtZSksCisgICAgICAgICAgdGhpcy5w
YXJhbXMud3JpdGUodyksCisgICAgICAgIF0pCisgICAgICApLAorICAgICAgdy50b2tlbih0aGlz
LnRva2Vucy5zZXBhcmF0b3IpLAorICAgIF0pOworICB9Cit9CisKKy8qKgorICogQHBhcmFtIHtT
aW1wbGVFeHRlbmRlZEF0dHJpYnV0ZX0gZXh0QXR0cgorICovCitmdW5jdGlvbiByZW5hbWVMZWdh
Y3lFeHRlbmRlZEF0dHJpYnV0ZShleHRBdHRyKSB7CisgIHJldHVybiAoKSA9PiB7CisgICAgY29u
c3QgeyBuYW1lIH0gPSBleHRBdHRyOworICAgIGV4dEF0dHIudG9rZW5zLm5hbWUudmFsdWUgPSBy
ZW5hbWVkTGVnYWNpZXMuZ2V0KG5hbWUpOworICAgIGlmIChuYW1lID09PSAiVHJlYXROdWxsQXMi
KSB7CisgICAgICBleHRBdHRyLnBhcmFtcy50b2tlbnMgPSB7fTsKKyAgICB9CisgIH07Cit9CisK
Ky8vIE5vdGU6IHdlIHBhcnNlIHNvbWV0aGluZyBzaW1wbGVyIHRoYW4gdGhlIG9mZmljaWFsIHN5
bnRheC4gSXQncyBhbGwgdGhhdCBldmVyCisvLyBzZWVtcyB0byBiZSB1c2VkCitjbGFzcyBFeHRl
bmRlZEF0dHJpYnV0ZXMgZXh0ZW5kcyBfYXJyYXlfYmFzZV9qc19fV0VCUEFDS19JTVBPUlRFRF9N
T0RVTEVfMV9fLkFycmF5QmFzZSB7CisgIC8qKgorICAgKiBAcGFyYW0ge2ltcG9ydCgiLi4vdG9r
ZW5pc2VyIikuVG9rZW5pc2VyfSB0b2tlbmlzZXIKKyAgICovCisgIHN0YXRpYyBwYXJzZSh0b2tl
bmlzZXIpIHsKKyAgICBjb25zdCB0b2tlbnMgPSB7fTsKKyAgICB0b2tlbnMub3BlbiA9IHRva2Vu
aXNlci5jb25zdW1lKCJbIik7CisgICAgaWYgKCF0b2tlbnMub3BlbikgcmV0dXJuIG5ldyBFeHRl
bmRlZEF0dHJpYnV0ZXMoe30pOworICAgIGNvbnN0IHJldCA9IG5ldyBFeHRlbmRlZEF0dHJpYnV0
ZXMoeyBzb3VyY2U6IHRva2VuaXNlci5zb3VyY2UsIHRva2VucyB9KTsKKyAgICByZXQucHVzaCgK
KyAgICAgIC4uLigwLF9oZWxwZXJzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX18ubGlz
dCkodG9rZW5pc2VyLCB7CisgICAgICAgIHBhcnNlcjogU2ltcGxlRXh0ZW5kZWRBdHRyaWJ1dGUu
cGFyc2UsCisgICAgICAgIGxpc3ROYW1lOiAiZXh0ZW5kZWQgYXR0cmlidXRlIiwKKyAgICAgIH0p
CisgICAgKTsKKyAgICB0b2tlbnMuY2xvc2UgPQorICAgICAgdG9rZW5pc2VyLmNvbnN1bWUoIl0i
KSB8fAorICAgICAgdG9rZW5pc2VyLmVycm9yKCJVbmV4cGVjdGVkIGNsb3NpbmcgdG9rZW4gb2Yg
ZXh0ZW5kZWQgYXR0cmlidXRlIik7CisgICAgaWYgKCFyZXQubGVuZ3RoKSB7CisgICAgICB0b2tl
bmlzZXIuZXJyb3IoIkZvdW5kIGFuIGVtcHR5IGV4dGVuZGVkIGF0dHJpYnV0ZSIpOworICAgIH0K
KyAgICBpZiAodG9rZW5pc2VyLnByb2JlKCJbIikpIHsKKyAgICAgIHRva2VuaXNlci5lcnJvcigK
KyAgICAgICAgIklsbGVnYWwgZG91YmxlIGV4dGVuZGVkIGF0dHJpYnV0ZSBsaXN0cywgY29uc2lk
ZXIgbWVyZ2luZyB0aGVtIgorICAgICAgKTsKKyAgICB9CisgICAgcmV0dXJuIHJldDsKKyAgfQor
CisgICp2YWxpZGF0ZShkZWZzKSB7CisgICAgZm9yIChjb25zdCBleHRBdHRyIG9mIHRoaXMpIHsK
KyAgICAgIHlpZWxkKiBleHRBdHRyLnZhbGlkYXRlKGRlZnMpOworICAgIH0KKyAgfQorCisgIC8q
KiBAcGFyYW0ge2ltcG9ydCgiLi4vd3JpdGVyLmpzIikuV3JpdGVyKX0gdyAqLworICB3cml0ZSh3
KSB7CisgICAgaWYgKCF0aGlzLmxlbmd0aCkgcmV0dXJuICIiOworICAgIHJldHVybiB3LnRzLndy
YXAoWworICAgICAgdy50b2tlbih0aGlzLnRva2Vucy5vcGVuKSwKKyAgICAgIC4uLnRoaXMubWFw
KChlYSkgPT4gZWEud3JpdGUodykpLAorICAgICAgdy50b2tlbih0aGlzLnRva2Vucy5jbG9zZSks
CisgICAgXSk7CisgIH0KK30KKworCisvKioqLyB9KSwKKy8qIDkgKi8KKy8qKiovICgoX191bnVz
ZWRfd2VicGFja19fX3dlYnBhY2tfbW9kdWxlX18sIF9fd2VicGFja19leHBvcnRzX18sIF9fd2Vi
cGFja19yZXF1aXJlX18pID0+IHsKKworX193ZWJwYWNrX3JlcXVpcmVfXy5yKF9fd2VicGFja19l
eHBvcnRzX18pOworLyogaGFybW9ueSBleHBvcnQgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9f
d2VicGFja19leHBvcnRzX18sIHsKKy8qIGhhcm1vbnkgZXhwb3J0ICovICAgIkFycmF5QmFzZSI6
ICgpID0+ICgvKiBiaW5kaW5nICovIEFycmF5QmFzZSkKKy8qIGhhcm1vbnkgZXhwb3J0ICovIH0p
OworLy8gQHRzLWNoZWNrCisKK2NsYXNzIEFycmF5QmFzZSBleHRlbmRzIEFycmF5IHsKKyAgY29u
c3RydWN0b3IoeyBzb3VyY2UsIHRva2VucyB9KSB7CisgICAgc3VwZXIoKTsKKyAgICBPYmplY3Qu
ZGVmaW5lUHJvcGVydGllcyh0aGlzLCB7CisgICAgICBzb3VyY2U6IHsgdmFsdWU6IHNvdXJjZSB9
LAorICAgICAgdG9rZW5zOiB7IHZhbHVlOiB0b2tlbnMgfSwKKyAgICAgIHBhcmVudDogeyB2YWx1
ZTogbnVsbCwgd3JpdGFibGU6IHRydWUgfSwKKyAgICB9KTsKKyAgfQorfQorCisKKy8qKiovIH0p
LAorLyogMTAgKi8KKy8qKiovICgoX191bnVzZWRfd2VicGFja19fX3dlYnBhY2tfbW9kdWxlX18s
IF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pID0+IHsKKworX193ZWJw
YWNrX3JlcXVpcmVfXy5yKF9fd2VicGFja19leHBvcnRzX18pOworLyogaGFybW9ueSBleHBvcnQg
Ki8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIHsKKy8qIGhhcm1v
bnkgZXhwb3J0ICovICAgIldyYXBwZWRUb2tlbiI6ICgpID0+ICgvKiBiaW5kaW5nICovIFdyYXBw
ZWRUb2tlbikKKy8qIGhhcm1vbnkgZXhwb3J0ICovIH0pOworLyogaGFybW9ueSBpbXBvcnQgKi8g
dmFyIF9iYXNlX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18gPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDYpOworLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9oZWxwZXJzX2pzX19XRUJQQUNL
X0lNUE9SVEVEX01PRFVMRV8xX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpOworLy8gQHRzLWNo
ZWNrCisKKworCisKK2NsYXNzIFdyYXBwZWRUb2tlbiBleHRlbmRzIF9iYXNlX2pzX19XRUJQQUNL
X0lNUE9SVEVEX01PRFVMRV8wX18uQmFzZSB7CisgIC8qKgorICAgKiBAcGFyYW0ge2ltcG9ydCgi
Li4vdG9rZW5pc2VyIikuVG9rZW5pc2VyfSB0b2tlbmlzZXIKKyAgICogQHBhcmFtIHtzdHJpbmd9
IHR5cGUKKyAgICovCisgIHN0YXRpYyBwYXJzZXIodG9rZW5pc2VyLCB0eXBlKSB7CisgICAgcmV0
dXJuICgpID0+IHsKKyAgICAgIGNvbnN0IHZhbHVlID0gdG9rZW5pc2VyLmNvbnN1bWVUeXBlKHR5
cGUpOworICAgICAgaWYgKHZhbHVlKSB7CisgICAgICAgIHJldHVybiBuZXcgV3JhcHBlZFRva2Vu
KHsKKyAgICAgICAgICBzb3VyY2U6IHRva2VuaXNlci5zb3VyY2UsCisgICAgICAgICAgdG9rZW5z
OiB7IHZhbHVlIH0sCisgICAgICAgIH0pOworICAgICAgfQogICAgIH07CisgIH0KKworICBnZXQg
dmFsdWUoKSB7CisgICAgcmV0dXJuICgwLF9oZWxwZXJzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01P
RFVMRV8xX18udW5lc2NhcGUpKHRoaXMudG9rZW5zLnZhbHVlLnZhbHVlKTsKKyAgfQorfQorCisK
Ky8qKiovIH0pLAorLyogMTEgKi8KKy8qKiovICgoX191bnVzZWRfd2VicGFja19fX3dlYnBhY2tf
bW9kdWxlX18sIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pID0+IHsK
KworX193ZWJwYWNrX3JlcXVpcmVfXy5yKF9fd2VicGFja19leHBvcnRzX18pOworLyogaGFybW9u
eSBleHBvcnQgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIHsK
Ky8qIGhhcm1vbnkgZXhwb3J0ICovICAgIkFyZ3VtZW50IjogKCkgPT4gKC8qIGJpbmRpbmcgKi8g
QXJndW1lbnQpCisvKiBoYXJtb255IGV4cG9ydCAqLyB9KTsKKy8qIGhhcm1vbnkgaW1wb3J0ICov
IHZhciBfYmFzZV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fID0gX193ZWJwYWNrX3Jl
cXVpcmVfXyg2KTsKKy8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfZGVmYXVsdF9qc19fV0VCUEFD
S19JTVBPUlRFRF9NT0RVTEVfMV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMik7CisvKiBoYXJt
b255IGltcG9ydCAqLyB2YXIgX2V4dGVuZGVkX2F0dHJpYnV0ZXNfanNfX1dFQlBBQ0tfSU1QT1JU
RURfTU9EVUxFXzJfXyA9IF9fd2VicGFja19yZXF1aXJlX18oOCk7CisvKiBoYXJtb255IGltcG9y
dCAqLyB2YXIgX2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfXyA9IF9fd2Vi
cGFja19yZXF1aXJlX18oNCk7CisvKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX3Rva2VuaXNlcl9q
c19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTsK
Ky8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfZXJyb3JfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9E
VUxFXzVfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7CisvKiBoYXJtb255IGltcG9ydCAqLyB2
YXIgX3ZhbGlkYXRvcnNfaGVscGVyc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNl9fID0g
X193ZWJwYWNrX3JlcXVpcmVfXyg3KTsKKy8vIEB0cy1jaGVjaworCisKIAotICAgIHZhciBpbk5v
ZGUgPSB0eXBlb2YgbW9kdWxlICE9PSAidW5kZWZpbmVkIiAmJiBtb2R1bGUuZXhwb3J0cwotICAg
ICwgICBvYmogPSB7Ci0gICAgICAgICAgICBwYXJzZTogIGZ1bmN0aW9uIChzdHIsIG9wdCkgewot
ICAgICAgICAgICAgICAgIGlmICghb3B0KSBvcHQgPSB7fTsKLSAgICAgICAgICAgICAgICB2YXIg
dG9rZW5zID0gdG9rZW5pc2Uoc3RyKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2UodG9r
ZW5zLCBvcHQpOworCisKKworCisKKworY2xhc3MgQXJndW1lbnQgZXh0ZW5kcyBfYmFzZV9qc19f
V0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fLkJhc2UgeworICAvKioKKyAgICogQHBhcmFtIHtp
bXBvcnQoIi4uL3Rva2VuaXNlciIpLlRva2VuaXNlcn0gdG9rZW5pc2VyCisgICAqLworICBzdGF0
aWMgcGFyc2UodG9rZW5pc2VyKSB7CisgICAgY29uc3Qgc3RhcnRfcG9zaXRpb24gPSB0b2tlbmlz
ZXIucG9zaXRpb247CisgICAgLyoqIEB0eXBlIHtCYXNlWyJ0b2tlbnMiXX0gKi8KKyAgICBjb25z
dCB0b2tlbnMgPSB7fTsKKyAgICBjb25zdCByZXQgPSAoMCxfaGVscGVyc19qc19fV0VCUEFDS19J
TVBPUlRFRF9NT0RVTEVfM19fLmF1dG9QYXJlbnRlcikoCisgICAgICBuZXcgQXJndW1lbnQoeyBz
b3VyY2U6IHRva2VuaXNlci5zb3VyY2UsIHRva2VucyB9KQorICAgICk7CisgICAgcmV0LmV4dEF0
dHJzID0gX2V4dGVuZGVkX2F0dHJpYnV0ZXNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJf
Xy5FeHRlbmRlZEF0dHJpYnV0ZXMucGFyc2UodG9rZW5pc2VyKTsKKyAgICB0b2tlbnMub3B0aW9u
YWwgPSB0b2tlbmlzZXIuY29uc3VtZSgib3B0aW9uYWwiKTsKKyAgICByZXQuaWRsVHlwZSA9ICgw
LF9oZWxwZXJzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX18udHlwZV93aXRoX2V4dGVu
ZGVkX2F0dHJpYnV0ZXMpKHRva2VuaXNlciwgImFyZ3VtZW50LXR5cGUiKTsKKyAgICBpZiAoIXJl
dC5pZGxUeXBlKSB7CisgICAgICByZXR1cm4gdG9rZW5pc2VyLnVuY29uc3VtZShzdGFydF9wb3Np
dGlvbik7CisgICAgfQorICAgIGlmICghdG9rZW5zLm9wdGlvbmFsKSB7CisgICAgICB0b2tlbnMu
dmFyaWFkaWMgPSB0b2tlbmlzZXIuY29uc3VtZSgiLi4uIik7CisgICAgfQorICAgIHRva2Vucy5u
YW1lID0KKyAgICAgIHRva2VuaXNlci5jb25zdW1lVHlwZSgiaWRlbnRpZmllciIpIHx8CisgICAg
ICB0b2tlbmlzZXIuY29uc3VtZSguLi5fdG9rZW5pc2VyX2pzX19XRUJQQUNLX0lNUE9SVEVEX01P
RFVMRV80X18uYXJndW1lbnROYW1lS2V5d29yZHMpOworICAgIGlmICghdG9rZW5zLm5hbWUpIHsK
KyAgICAgIHJldHVybiB0b2tlbmlzZXIudW5jb25zdW1lKHN0YXJ0X3Bvc2l0aW9uKTsKKyAgICB9
CisgICAgcmV0LmRlZmF1bHQgPSB0b2tlbnMub3B0aW9uYWwgPyBfZGVmYXVsdF9qc19fV0VCUEFD
S19JTVBPUlRFRF9NT0RVTEVfMV9fLkRlZmF1bHQucGFyc2UodG9rZW5pc2VyKSA6IG51bGw7Cisg
ICAgcmV0dXJuIHJldC50aGlzOworICB9CisKKyAgZ2V0IHR5cGUoKSB7CisgICAgcmV0dXJuICJh
cmd1bWVudCI7CisgIH0KKyAgZ2V0IG9wdGlvbmFsKCkgeworICAgIHJldHVybiAhIXRoaXMudG9r
ZW5zLm9wdGlvbmFsOworICB9CisgIGdldCB2YXJpYWRpYygpIHsKKyAgICByZXR1cm4gISF0aGlz
LnRva2Vucy52YXJpYWRpYzsKKyAgfQorICBnZXQgbmFtZSgpIHsKKyAgICByZXR1cm4gKDAsX2hl
bHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfXy51bmVzY2FwZSkodGhpcy50b2tl
bnMubmFtZS52YWx1ZSk7CisgIH0KKworICAvKioKKyAgICogQHBhcmFtIHtpbXBvcnQoIi4uL3Zh
bGlkYXRvci5qcyIpLkRlZmluaXRpb25zfSBkZWZzCisgICAqLworICAqdmFsaWRhdGUoZGVmcykg
eworICAgIHlpZWxkKiB0aGlzLmV4dEF0dHJzLnZhbGlkYXRlKGRlZnMpOworICAgIHlpZWxkKiB0
aGlzLmlkbFR5cGUudmFsaWRhdGUoZGVmcyk7CisgICAgY29uc3QgcmVzdWx0ID0gKDAsX3ZhbGlk
YXRvcnNfaGVscGVyc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNl9fLmlkbFR5cGVJbmNs
dWRlc0RpY3Rpb25hcnkpKHRoaXMuaWRsVHlwZSwgZGVmcywgeworICAgICAgdXNlTnVsbGFibGVJ
bm5lcjogdHJ1ZSwKKyAgICB9KTsKKyAgICBpZiAocmVzdWx0KSB7CisgICAgICBpZiAodGhpcy5p
ZGxUeXBlLm51bGxhYmxlKSB7CisgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgRGljdGlvbmFyeSBh
cmd1bWVudHMgY2Fubm90IGJlIG51bGxhYmxlLmA7CisgICAgICAgIHlpZWxkICgwLF9lcnJvcl9q
c19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fLnZhbGlkYXRpb25FcnJvcikoCisgICAgICAg
ICAgdGhpcy50b2tlbnMubmFtZSwKKyAgICAgICAgICB0aGlzLAorICAgICAgICAgICJuby1udWxs
YWJsZS1kaWN0LWFyZyIsCisgICAgICAgICAgbWVzc2FnZQorICAgICAgICApOworICAgICAgfSBl
bHNlIGlmICghdGhpcy5vcHRpb25hbCkgeworICAgICAgICBpZiAoCisgICAgICAgICAgdGhpcy5w
YXJlbnQgJiYKKyAgICAgICAgICAhKDAsX3ZhbGlkYXRvcnNfaGVscGVyc19qc19fV0VCUEFDS19J
TVBPUlRFRF9NT0RVTEVfNl9fLmRpY3Rpb25hcnlJbmNsdWRlc1JlcXVpcmVkRmllbGQpKHJlc3Vs
dC5kaWN0aW9uYXJ5LCBkZWZzKSAmJgorICAgICAgICAgIGlzTGFzdFJlcXVpcmVkQXJndW1lbnQo
dGhpcykKKyAgICAgICAgKSB7CisgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IGBEaWN0aW9uYXJ5
IGFyZ3VtZW50IG11c3QgYmUgb3B0aW9uYWwgaWYgaXQgaGFzIG5vIHJlcXVpcmVkIGZpZWxkc2A7
CisgICAgICAgICAgeWllbGQgKDAsX2Vycm9yX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81
X18udmFsaWRhdGlvbkVycm9yKSgKKyAgICAgICAgICAgIHRoaXMudG9rZW5zLm5hbWUsCisgICAg
ICAgICAgICB0aGlzLAorICAgICAgICAgICAgImRpY3QtYXJnLW9wdGlvbmFsIiwKKyAgICAgICAg
ICAgIG1lc3NhZ2UsCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGF1dG9maXg6IGF1dG9m
aXhEaWN0aW9uYXJ5QXJndW1lbnRPcHRpb25hbGl0eSh0aGlzKSwKICAgICAgICAgICAgIH0KKyAg
ICAgICAgICApOworICAgICAgICB9CisgICAgICB9IGVsc2UgaWYgKCF0aGlzLmRlZmF1bHQpIHsK
KyAgICAgICAgY29uc3QgbWVzc2FnZSA9IGBPcHRpb25hbCBkaWN0aW9uYXJ5IGFyZ3VtZW50cyBt
dXN0IGhhdmUgYSBkZWZhdWx0IHZhbHVlIG9mIFxge31cYC5gOworICAgICAgICB5aWVsZCAoMCxf
ZXJyb3JfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzVfXy52YWxpZGF0aW9uRXJyb3IpKAor
ICAgICAgICAgIHRoaXMudG9rZW5zLm5hbWUsCisgICAgICAgICAgdGhpcywKKyAgICAgICAgICAi
ZGljdC1hcmctZGVmYXVsdCIsCisgICAgICAgICAgbWVzc2FnZSwKKyAgICAgICAgICB7CisgICAg
ICAgICAgICBhdXRvZml4OiBhdXRvZml4T3B0aW9uYWxEaWN0aW9uYXJ5RGVmYXVsdFZhbHVlKHRo
aXMpLAorICAgICAgICAgIH0KKyAgICAgICAgKTsKKyAgICAgIH0KKyAgICB9CisgIH0KKworICAv
KiogQHBhcmFtIHtpbXBvcnQoIi4uL3dyaXRlci5qcyIpLldyaXRlcn0gdyAqLworICB3cml0ZSh3
KSB7CisgICAgcmV0dXJuIHcudHMud3JhcChbCisgICAgICB0aGlzLmV4dEF0dHJzLndyaXRlKHcp
LAorICAgICAgdy50b2tlbih0aGlzLnRva2Vucy5vcHRpb25hbCksCisgICAgICB3LnRzLnR5cGUo
dGhpcy5pZGxUeXBlLndyaXRlKHcpKSwKKyAgICAgIHcudG9rZW4odGhpcy50b2tlbnMudmFyaWFk
aWMpLAorICAgICAgdy5uYW1lX3Rva2VuKHRoaXMudG9rZW5zLm5hbWUsIHsgZGF0YTogdGhpcyB9
KSwKKyAgICAgIHRoaXMuZGVmYXVsdCA/IHRoaXMuZGVmYXVsdC53cml0ZSh3KSA6ICIiLAorICAg
ICAgdy50b2tlbih0aGlzLnRva2Vucy5zZXBhcmF0b3IpLAorICAgIF0pOworICB9Cit9CisKKy8q
KgorICogQHBhcmFtIHtBcmd1bWVudH0gYXJnCisgKi8KK2Z1bmN0aW9uIGlzTGFzdFJlcXVpcmVk
QXJndW1lbnQoYXJnKSB7CisgIGNvbnN0IGxpc3QgPSBhcmcucGFyZW50LmFyZ3VtZW50cyB8fCBh
cmcucGFyZW50Lmxpc3Q7CisgIGNvbnN0IGluZGV4ID0gbGlzdC5pbmRleE9mKGFyZyk7CisgIGNv
bnN0IHJlcXVpcmVkRXhpc3RzID0gbGlzdC5zbGljZShpbmRleCArIDEpLnNvbWUoKGEpID0+ICFh
Lm9wdGlvbmFsKTsKKyAgcmV0dXJuICFyZXF1aXJlZEV4aXN0czsKK30KKworLyoqCisgKiBAcGFy
YW0ge0FyZ3VtZW50fSBhcmcKKyAqLworZnVuY3Rpb24gYXV0b2ZpeERpY3Rpb25hcnlBcmd1bWVu
dE9wdGlvbmFsaXR5KGFyZykgeworICByZXR1cm4gKCkgPT4geworICAgIGNvbnN0IGZpcnN0VG9r
ZW4gPSAoMCxfaGVscGVyc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fLmdldEZpcnN0
VG9rZW4pKGFyZy5pZGxUeXBlKTsKKyAgICBhcmcudG9rZW5zLm9wdGlvbmFsID0geworICAgICAg
dHlwZTogIm9wdGlvbmFsIiwKKyAgICAgIHZhbHVlOiAib3B0aW9uYWwiLAorICAgICAgdHJpdmlh
OiBmaXJzdFRva2VuLnRyaXZpYSwKKyAgICB9OworICAgIGZpcnN0VG9rZW4udHJpdmlhID0gIiAi
OworICAgIGF1dG9maXhPcHRpb25hbERpY3Rpb25hcnlEZWZhdWx0VmFsdWUoYXJnKSgpOworICB9
OworfQorCisvKioKKyAqIEBwYXJhbSB7QXJndW1lbnR9IGFyZworICovCitmdW5jdGlvbiBhdXRv
Zml4T3B0aW9uYWxEaWN0aW9uYXJ5RGVmYXVsdFZhbHVlKGFyZykgeworICByZXR1cm4gKCkgPT4g
eworICAgIGFyZy5kZWZhdWx0ID0gX2RlZmF1bHRfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxF
XzFfXy5EZWZhdWx0LnBhcnNlKG5ldyBfdG9rZW5pc2VyX2pzX19XRUJQQUNLX0lNUE9SVEVEX01P
RFVMRV80X18uVG9rZW5pc2VyKCIgPSB7fSIpKTsKKyAgfTsKK30KKworCisvKioqLyB9KSwKKy8q
IDEyICovCisvKioqLyAoKF9fdW51c2VkX3dlYnBhY2tfX193ZWJwYWNrX21vZHVsZV9fLCBfX3dl
YnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSA9PiB7CisKK19fd2VicGFja19y
ZXF1aXJlX18ucihfX3dlYnBhY2tfZXhwb3J0c19fKTsKKy8qIGhhcm1vbnkgZXhwb3J0ICovIF9f
d2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCB7CisvKiBoYXJtb255IGV4
cG9ydCAqLyAgICJEZWZhdWx0IjogKCkgPT4gKC8qIGJpbmRpbmcgKi8gRGVmYXVsdCkKKy8qIGhh
cm1vbnkgZXhwb3J0ICovIH0pOworLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9iYXNlX2pzX19X
RUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpOworLyog
aGFybW9ueSBpbXBvcnQgKi8gdmFyIF9oZWxwZXJzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVM
RV8xX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpOworCisKKworY2xhc3MgRGVmYXVsdCBleHRl
bmRzIF9iYXNlX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18uQmFzZSB7CisgIC8qKgor
ICAgKiBAcGFyYW0ge2ltcG9ydCgiLi4vdG9rZW5pc2VyIikuVG9rZW5pc2VyfSB0b2tlbmlzZXIK
KyAgICovCisgIHN0YXRpYyBwYXJzZSh0b2tlbmlzZXIpIHsKKyAgICBjb25zdCBhc3NpZ24gPSB0
b2tlbmlzZXIuY29uc3VtZSgiPSIpOworICAgIGlmICghYXNzaWduKSB7CisgICAgICByZXR1cm4g
bnVsbDsKKyAgICB9CisgICAgY29uc3QgZGVmID0KKyAgICAgICgwLF9oZWxwZXJzX2pzX19XRUJQ
QUNLX0lNUE9SVEVEX01PRFVMRV8xX18uY29uc3RfdmFsdWUpKHRva2VuaXNlcikgfHwKKyAgICAg
IHRva2VuaXNlci5jb25zdW1lVHlwZSgic3RyaW5nIikgfHwKKyAgICAgIHRva2VuaXNlci5jb25z
dW1lKCJudWxsIiwgIlsiLCAieyIpIHx8CisgICAgICB0b2tlbmlzZXIuZXJyb3IoIk5vIHZhbHVl
IGZvciBkZWZhdWx0Iik7CisgICAgY29uc3QgZXhwcmVzc2lvbiA9IFtkZWZdOworICAgIGlmIChk
ZWYudmFsdWUgPT09ICJbIikgeworICAgICAgY29uc3QgY2xvc2UgPQorICAgICAgICB0b2tlbmlz
ZXIuY29uc3VtZSgiXSIpIHx8CisgICAgICAgIHRva2VuaXNlci5lcnJvcigiRGVmYXVsdCBzZXF1
ZW5jZSB2YWx1ZSBtdXN0IGJlIGVtcHR5Iik7CisgICAgICBleHByZXNzaW9uLnB1c2goY2xvc2Up
OworICAgIH0gZWxzZSBpZiAoZGVmLnZhbHVlID09PSAieyIpIHsKKyAgICAgIGNvbnN0IGNsb3Nl
ID0KKyAgICAgICAgdG9rZW5pc2VyLmNvbnN1bWUoIn0iKSB8fAorICAgICAgICB0b2tlbmlzZXIu
ZXJyb3IoIkRlZmF1bHQgZGljdGlvbmFyeSB2YWx1ZSBtdXN0IGJlIGVtcHR5Iik7CisgICAgICBl
eHByZXNzaW9uLnB1c2goY2xvc2UpOworICAgIH0KKyAgICByZXR1cm4gbmV3IERlZmF1bHQoewor
ICAgICAgc291cmNlOiB0b2tlbmlzZXIuc291cmNlLAorICAgICAgdG9rZW5zOiB7IGFzc2lnbiB9
LAorICAgICAgZXhwcmVzc2lvbiwKKyAgICB9KTsKKyAgfQorCisgIGNvbnN0cnVjdG9yKHsgc291
cmNlLCB0b2tlbnMsIGV4cHJlc3Npb24gfSkgeworICAgIHN1cGVyKHsgc291cmNlLCB0b2tlbnMg
fSk7CisgICAgZXhwcmVzc2lvbi5wYXJlbnQgPSB0aGlzOworICAgIE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eSh0aGlzLCAiZXhwcmVzc2lvbiIsIHsgdmFsdWU6IGV4cHJlc3Npb24gfSk7CisgIH0KKwor
ICBnZXQgdHlwZSgpIHsKKyAgICByZXR1cm4gKDAsX2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JU
RURfTU9EVUxFXzFfXy5jb25zdF9kYXRhKSh0aGlzLmV4cHJlc3Npb25bMF0pLnR5cGU7CisgIH0K
KyAgZ2V0IHZhbHVlKCkgeworICAgIHJldHVybiAoMCxfaGVscGVyc19qc19fV0VCUEFDS19JTVBP
UlRFRF9NT0RVTEVfMV9fLmNvbnN0X2RhdGEpKHRoaXMuZXhwcmVzc2lvblswXSkudmFsdWU7Cisg
IH0KKyAgZ2V0IG5lZ2F0aXZlKCkgeworICAgIHJldHVybiAoMCxfaGVscGVyc19qc19fV0VCUEFD
S19JTVBPUlRFRF9NT0RVTEVfMV9fLmNvbnN0X2RhdGEpKHRoaXMuZXhwcmVzc2lvblswXSkubmVn
YXRpdmU7CisgIH0KKworICAvKiogQHBhcmFtIHtpbXBvcnQoIi4uL3dyaXRlci5qcyIpLldyaXRl
cil9IHcgKi8KKyAgd3JpdGUodykgeworICAgIHJldHVybiB3LnRzLndyYXAoWworICAgICAgdy50
b2tlbih0aGlzLnRva2Vucy5hc3NpZ24pLAorICAgICAgLi4udGhpcy5leHByZXNzaW9uLm1hcCgo
dCkgPT4gdy50b2tlbih0KSksCisgICAgXSk7CisgIH0KK30KKworCisvKioqLyB9KSwKKy8qIDEz
ICovCisvKioqLyAoKF9fdW51c2VkX3dlYnBhY2tfX193ZWJwYWNrX21vZHVsZV9fLCBfX3dlYnBh
Y2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSA9PiB7CisKK19fd2VicGFja19yZXF1
aXJlX18ucihfX3dlYnBhY2tfZXhwb3J0c19fKTsKKy8qIGhhcm1vbnkgZXhwb3J0ICovIF9fd2Vi
cGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCB7CisvKiBoYXJtb255IGV4cG9y
dCAqLyAgICJPcGVyYXRpb24iOiAoKSA9PiAoLyogYmluZGluZyAqLyBPcGVyYXRpb24pCisvKiBo
YXJtb255IGV4cG9ydCAqLyB9KTsKKy8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfYmFzZV9qc19f
V0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2KTsKKy8q
IGhhcm1vbnkgaW1wb3J0ICovIHZhciBfaGVscGVyc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RV
TEVfMV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTsKKy8qIGhhcm1vbnkgaW1wb3J0ICovIHZh
ciBfZXJyb3JfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXyA9IF9fd2VicGFja19yZXF1
aXJlX18oMyk7CisKKworCisKK2NsYXNzIE9wZXJhdGlvbiBleHRlbmRzIF9iYXNlX2pzX19XRUJQ
QUNLX0lNUE9SVEVEX01PRFVMRV8wX18uQmFzZSB7CisgIC8qKgorICAgKiBAdHlwZWRlZiB7aW1w
b3J0KCIuLi90b2tlbmlzZXIuanMiKS5Ub2tlbn0gVG9rZW4KKyAgICoKKyAgICogQHBhcmFtIHtp
bXBvcnQoIi4uL3Rva2VuaXNlci5qcyIpLlRva2VuaXNlcn0gdG9rZW5pc2VyCisgICAqIEBwYXJh
bSB7b2JqZWN0fSBbb3B0aW9uc10KKyAgICogQHBhcmFtIHtUb2tlbn0gW29wdGlvbnMuc3BlY2lh
bF0KKyAgICogQHBhcmFtIHtUb2tlbn0gW29wdGlvbnMucmVndWxhcl0KKyAgICovCisgIHN0YXRp
YyBwYXJzZSh0b2tlbmlzZXIsIHsgc3BlY2lhbCwgcmVndWxhciB9ID0ge30pIHsKKyAgICBjb25z
dCB0b2tlbnMgPSB7IHNwZWNpYWwgfTsKKyAgICBjb25zdCByZXQgPSAoMCxfaGVscGVyc19qc19f
V0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fLmF1dG9QYXJlbnRlcikoCisgICAgICBuZXcgT3Bl
cmF0aW9uKHsgc291cmNlOiB0b2tlbmlzZXIuc291cmNlLCB0b2tlbnMgfSkKKyAgICApOworICAg
IGlmIChzcGVjaWFsICYmIHNwZWNpYWwudmFsdWUgPT09ICJzdHJpbmdpZmllciIpIHsKKyAgICAg
IHRva2Vucy50ZXJtaW5hdGlvbiA9IHRva2VuaXNlci5jb25zdW1lKCI7Iik7CisgICAgICBpZiAo
dG9rZW5zLnRlcm1pbmF0aW9uKSB7CisgICAgICAgIHJldC5hcmd1bWVudHMgPSBbXTsKKyAgICAg
ICAgcmV0dXJuIHJldDsKKyAgICAgIH0KKyAgICB9CisgICAgaWYgKCFzcGVjaWFsICYmICFyZWd1
bGFyKSB7CisgICAgICB0b2tlbnMuc3BlY2lhbCA9IHRva2VuaXNlci5jb25zdW1lKCJnZXR0ZXIi
LCAic2V0dGVyIiwgImRlbGV0ZXIiKTsKKyAgICB9CisgICAgcmV0LmlkbFR5cGUgPQorICAgICAg
KDAsX2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXy5yZXR1cm5fdHlwZSko
dG9rZW5pc2VyKSB8fCB0b2tlbmlzZXIuZXJyb3IoIk1pc3NpbmcgcmV0dXJuIHR5cGUiKTsKKyAg
ICB0b2tlbnMubmFtZSA9CisgICAgICB0b2tlbmlzZXIuY29uc3VtZVR5cGUoImlkZW50aWZpZXIi
KSB8fCB0b2tlbmlzZXIuY29uc3VtZSgiaW5jbHVkZXMiKTsKKyAgICB0b2tlbnMub3BlbiA9Cisg
ICAgICB0b2tlbmlzZXIuY29uc3VtZSgiKCIpIHx8IHRva2VuaXNlci5lcnJvcigiSW52YWxpZCBv
cGVyYXRpb24iKTsKKyAgICByZXQuYXJndW1lbnRzID0gKDAsX2hlbHBlcnNfanNfX1dFQlBBQ0tf
SU1QT1JURURfTU9EVUxFXzFfXy5hcmd1bWVudF9saXN0KSh0b2tlbmlzZXIpOworICAgIHRva2Vu
cy5jbG9zZSA9CisgICAgICB0b2tlbmlzZXIuY29uc3VtZSgiKSIpIHx8IHRva2VuaXNlci5lcnJv
cigiVW50ZXJtaW5hdGVkIG9wZXJhdGlvbiIpOworICAgIHRva2Vucy50ZXJtaW5hdGlvbiA9Cisg
ICAgICB0b2tlbmlzZXIuY29uc3VtZSgiOyIpIHx8CisgICAgICB0b2tlbmlzZXIuZXJyb3IoIlVu
dGVybWluYXRlZCBvcGVyYXRpb24sIGV4cGVjdGVkIGA7YCIpOworICAgIHJldHVybiByZXQudGhp
czsKKyAgfQorCisgIGdldCB0eXBlKCkgeworICAgIHJldHVybiAib3BlcmF0aW9uIjsKKyAgfQor
ICBnZXQgbmFtZSgpIHsKKyAgICBjb25zdCB7IG5hbWUgfSA9IHRoaXMudG9rZW5zOworICAgIGlm
ICghbmFtZSkgeworICAgICAgcmV0dXJuICIiOworICAgIH0KKyAgICByZXR1cm4gKDAsX2hlbHBl
cnNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXy51bmVzY2FwZSkobmFtZS52YWx1ZSk7
CisgIH0KKyAgZ2V0IHNwZWNpYWwoKSB7CisgICAgaWYgKCF0aGlzLnRva2Vucy5zcGVjaWFsKSB7
CisgICAgICByZXR1cm4gIiI7CisgICAgfQorICAgIHJldHVybiB0aGlzLnRva2Vucy5zcGVjaWFs
LnZhbHVlOworICB9CisKKyAgKnZhbGlkYXRlKGRlZnMpIHsKKyAgICB5aWVsZCogdGhpcy5leHRB
dHRycy52YWxpZGF0ZShkZWZzKTsKKyAgICBpZiAoIXRoaXMubmFtZSAmJiBbIiIsICJzdGF0aWMi
XS5pbmNsdWRlcyh0aGlzLnNwZWNpYWwpKSB7CisgICAgICBjb25zdCBtZXNzYWdlID0gYFJlZ3Vs
YXIgb3Igc3RhdGljIG9wZXJhdGlvbnMgbXVzdCBoYXZlIGJvdGggYSByZXR1cm4gdHlwZSBhbmQg
YW4gaWRlbnRpZmllci5gOworICAgICAgeWllbGQgKDAsX2Vycm9yX2pzX19XRUJQQUNLX0lNUE9S
VEVEX01PRFVMRV8yX18udmFsaWRhdGlvbkVycm9yKSh0aGlzLnRva2Vucy5vcGVuLCB0aGlzLCAi
aW5jb21wbGV0ZS1vcCIsIG1lc3NhZ2UpOworICAgIH0KKyAgICBpZiAodGhpcy5pZGxUeXBlKSB7
CisgICAgICB5aWVsZCogdGhpcy5pZGxUeXBlLnZhbGlkYXRlKGRlZnMpOworICAgIH0KKyAgICBm
b3IgKGNvbnN0IGFyZ3VtZW50IG9mIHRoaXMuYXJndW1lbnRzKSB7CisgICAgICB5aWVsZCogYXJn
dW1lbnQudmFsaWRhdGUoZGVmcyk7CisgICAgfQorICB9CisKKyAgLyoqIEBwYXJhbSB7aW1wb3J0
KCIuLi93cml0ZXIuanMiKS5Xcml0ZXJ9IHcgKi8KKyAgd3JpdGUodykgeworICAgIGNvbnN0IHsg
cGFyZW50IH0gPSB0aGlzOworICAgIGNvbnN0IGJvZHkgPSB0aGlzLmlkbFR5cGUKKyAgICAgID8g
WworICAgICAgICAgIHcudHMudHlwZSh0aGlzLmlkbFR5cGUud3JpdGUodykpLAorICAgICAgICAg
IHcubmFtZV90b2tlbih0aGlzLnRva2Vucy5uYW1lLCB7IGRhdGE6IHRoaXMsIHBhcmVudCB9KSwK
KyAgICAgICAgICB3LnRva2VuKHRoaXMudG9rZW5zLm9wZW4pLAorICAgICAgICAgIHcudHMud3Jh
cCh0aGlzLmFyZ3VtZW50cy5tYXAoKGFyZykgPT4gYXJnLndyaXRlKHcpKSksCisgICAgICAgICAg
dy50b2tlbih0aGlzLnRva2Vucy5jbG9zZSksCisgICAgICAgIF0KKyAgICAgIDogW107CisgICAg
cmV0dXJuIHcudHMuZGVmaW5pdGlvbigKKyAgICAgIHcudHMud3JhcChbCisgICAgICAgIHRoaXMu
ZXh0QXR0cnMud3JpdGUodyksCisgICAgICAgIHRoaXMudG9rZW5zLm5hbWUKKyAgICAgICAgICA/
IHcudG9rZW4odGhpcy50b2tlbnMuc3BlY2lhbCkKKyAgICAgICAgICA6IHcudG9rZW4odGhpcy50
b2tlbnMuc3BlY2lhbCwgdy50cy5uYW1lbGVzcywgeyBkYXRhOiB0aGlzLCBwYXJlbnQgfSksCisg
ICAgICAgIC4uLmJvZHksCisgICAgICAgIHcudG9rZW4odGhpcy50b2tlbnMudGVybWluYXRpb24p
LAorICAgICAgXSksCisgICAgICB7IGRhdGE6IHRoaXMsIHBhcmVudCB9CisgICAgKTsKKyAgfQor
fQorCisKKy8qKiovIH0pLAorLyogMTQgKi8KKy8qKiovICgoX191bnVzZWRfd2VicGFja19fX3dl
YnBhY2tfbW9kdWxlX18sIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18p
ID0+IHsKKworX193ZWJwYWNrX3JlcXVpcmVfXy5yKF9fd2VicGFja19leHBvcnRzX18pOworLyog
aGFybW9ueSBleHBvcnQgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRz
X18sIHsKKy8qIGhhcm1vbnkgZXhwb3J0ICovICAgIkF0dHJpYnV0ZSI6ICgpID0+ICgvKiBiaW5k
aW5nICovIEF0dHJpYnV0ZSkKKy8qIGhhcm1vbnkgZXhwb3J0ICovIH0pOworLyogaGFybW9ueSBp
bXBvcnQgKi8gdmFyIF9lcnJvcl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fID0gX193
ZWJwYWNrX3JlcXVpcmVfXygzKTsKKy8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfdmFsaWRhdG9y
c19oZWxwZXJzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18gPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDcpOworLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9iYXNlX2pzX19XRUJQQUNLX0lN
UE9SVEVEX01PRFVMRV8yX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpOworLyogaGFybW9ueSBp
bXBvcnQgKi8gdmFyIF9oZWxwZXJzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX18gPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDQpOworLy8gQHRzLWNoZWNrCisKKworCisKKworCitjbGFzcyBB
dHRyaWJ1dGUgZXh0ZW5kcyBfYmFzZV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fLkJh
c2UgeworICAvKioKKyAgICogQHBhcmFtIHtpbXBvcnQoIi4uL3Rva2VuaXNlci5qcyIpLlRva2Vu
aXNlcn0gdG9rZW5pc2VyCisgICAqIEBwYXJhbSB7b2JqZWN0fSBbb3B0aW9uc10KKyAgICogQHBh
cmFtIHtpbXBvcnQoIi4uL3Rva2VuaXNlci5qcyIpLlRva2VufSBbb3B0aW9ucy5zcGVjaWFsXQor
ICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLm5vSW5oZXJpdF0KKyAgICogQHBhcmFtIHti
b29sZWFufSBbb3B0aW9ucy5yZWFkb25seV0KKyAgICovCisgIHN0YXRpYyBwYXJzZSgKKyAgICB0
b2tlbmlzZXIsCisgICAgeyBzcGVjaWFsLCBub0luaGVyaXQgPSBmYWxzZSwgcmVhZG9ubHkgPSBm
YWxzZSB9ID0ge30KKyAgKSB7CisgICAgY29uc3Qgc3RhcnRfcG9zaXRpb24gPSB0b2tlbmlzZXIu
cG9zaXRpb247CisgICAgY29uc3QgdG9rZW5zID0geyBzcGVjaWFsIH07CisgICAgY29uc3QgcmV0
ID0gKDAsX2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfXy5hdXRvUGFyZW50
ZXIpKAorICAgICAgbmV3IEF0dHJpYnV0ZSh7IHNvdXJjZTogdG9rZW5pc2VyLnNvdXJjZSwgdG9r
ZW5zIH0pCisgICAgKTsKKyAgICBpZiAoIXNwZWNpYWwgJiYgIW5vSW5oZXJpdCkgeworICAgICAg
dG9rZW5zLnNwZWNpYWwgPSB0b2tlbmlzZXIuY29uc3VtZSgiaW5oZXJpdCIpOworICAgIH0KKyAg
ICBpZiAocmV0LnNwZWNpYWwgPT09ICJpbmhlcml0IiAmJiB0b2tlbmlzZXIucHJvYmUoInJlYWRv
bmx5IikpIHsKKyAgICAgIHRva2VuaXNlci5lcnJvcigiSW5oZXJpdGVkIGF0dHJpYnV0ZXMgY2Fu
bm90IGJlIHJlYWQtb25seSIpOworICAgIH0KKyAgICB0b2tlbnMucmVhZG9ubHkgPSB0b2tlbmlz
ZXIuY29uc3VtZSgicmVhZG9ubHkiKTsKKyAgICBpZiAocmVhZG9ubHkgJiYgIXRva2Vucy5yZWFk
b25seSAmJiB0b2tlbmlzZXIucHJvYmUoImF0dHJpYnV0ZSIpKSB7CisgICAgICB0b2tlbmlzZXIu
ZXJyb3IoIkF0dHJpYnV0ZXMgbXVzdCBiZSByZWFkb25seSBpbiB0aGlzIGNvbnRleHQiKTsKKyAg
ICB9CisgICAgdG9rZW5zLmJhc2UgPSB0b2tlbmlzZXIuY29uc3VtZSgiYXR0cmlidXRlIik7Cisg
ICAgaWYgKCF0b2tlbnMuYmFzZSkgeworICAgICAgdG9rZW5pc2VyLnVuY29uc3VtZShzdGFydF9w
b3NpdGlvbik7CisgICAgICByZXR1cm47CisgICAgfQorICAgIHJldC5pZGxUeXBlID0KKyAgICAg
ICgwLF9oZWxwZXJzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX18udHlwZV93aXRoX2V4
dGVuZGVkX2F0dHJpYnV0ZXMpKHRva2VuaXNlciwgImF0dHJpYnV0ZS10eXBlIikgfHwKKyAgICAg
IHRva2VuaXNlci5lcnJvcigiQXR0cmlidXRlIGxhY2tzIGEgdHlwZSIpOworICAgIHRva2Vucy5u
YW1lID0KKyAgICAgIHRva2VuaXNlci5jb25zdW1lVHlwZSgiaWRlbnRpZmllciIpIHx8CisgICAg
ICB0b2tlbmlzZXIuY29uc3VtZSgiYXN5bmMiLCAicmVxdWlyZWQiKSB8fAorICAgICAgdG9rZW5p
c2VyLmVycm9yKCJBdHRyaWJ1dGUgbGFja3MgYSBuYW1lIik7CisgICAgdG9rZW5zLnRlcm1pbmF0
aW9uID0KKyAgICAgIHRva2VuaXNlci5jb25zdW1lKCI7IikgfHwKKyAgICAgIHRva2VuaXNlci5l
cnJvcigiVW50ZXJtaW5hdGVkIGF0dHJpYnV0ZSwgZXhwZWN0ZWQgYDtgIik7CisgICAgcmV0dXJu
IHJldC50aGlzOworICB9CisKKyAgZ2V0IHR5cGUoKSB7CisgICAgcmV0dXJuICJhdHRyaWJ1dGUi
OworICB9CisgIGdldCBzcGVjaWFsKCkgeworICAgIGlmICghdGhpcy50b2tlbnMuc3BlY2lhbCkg
eworICAgICAgcmV0dXJuICIiOworICAgIH0KKyAgICByZXR1cm4gdGhpcy50b2tlbnMuc3BlY2lh
bC52YWx1ZTsKKyAgfQorICBnZXQgcmVhZG9ubHkoKSB7CisgICAgcmV0dXJuICEhdGhpcy50b2tl
bnMucmVhZG9ubHk7CisgIH0KKyAgZ2V0IG5hbWUoKSB7CisgICAgcmV0dXJuICgwLF9oZWxwZXJz
X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX18udW5lc2NhcGUpKHRoaXMudG9rZW5zLm5h
bWUudmFsdWUpOworICB9CisKKyAgKnZhbGlkYXRlKGRlZnMpIHsKKyAgICB5aWVsZCogdGhpcy5l
eHRBdHRycy52YWxpZGF0ZShkZWZzKTsKKyAgICB5aWVsZCogdGhpcy5pZGxUeXBlLnZhbGlkYXRl
KGRlZnMpOworCisgICAgc3dpdGNoICh0aGlzLmlkbFR5cGUuZ2VuZXJpYykgeworICAgICAgY2Fz
ZSAic2VxdWVuY2UiOgorICAgICAgY2FzZSAicmVjb3JkIjogeworICAgICAgICBjb25zdCBtZXNz
YWdlID0gYEF0dHJpYnV0ZXMgY2Fubm90IGFjY2VwdCAke3RoaXMuaWRsVHlwZS5nZW5lcmljfSB0
eXBlcy5gOworICAgICAgICB5aWVsZCAoMCxfZXJyb3JfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9E
VUxFXzBfXy52YWxpZGF0aW9uRXJyb3IpKAorICAgICAgICAgIHRoaXMudG9rZW5zLm5hbWUsCisg
ICAgICAgICAgdGhpcywKKyAgICAgICAgICAiYXR0ci1pbnZhbGlkLXR5cGUiLAorICAgICAgICAg
IG1lc3NhZ2UKKyAgICAgICAgKTsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgICBkZWZh
dWx0OiB7CisgICAgICAgIGNvbnN0IHsgcmVmZXJlbmNlIH0gPQorICAgICAgICAgICgwLF92YWxp
ZGF0b3JzX2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXy5pZGxUeXBlSW5j
bHVkZXNEaWN0aW9uYXJ5KSh0aGlzLmlkbFR5cGUsIGRlZnMpIHx8IHt9OworICAgICAgICBpZiAo
cmVmZXJlbmNlKSB7CisgICAgICAgICAgY29uc3QgdGFyZ2V0VG9rZW4gPSAodGhpcy5pZGxUeXBl
LnVuaW9uID8gcmVmZXJlbmNlIDogdGhpcy5pZGxUeXBlKQorICAgICAgICAgICAgLnRva2Vucy5i
YXNlOworICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSAiQXR0cmlidXRlcyBjYW5ub3QgYWNjZXB0
IGRpY3Rpb25hcnkgdHlwZXMuIjsKKyAgICAgICAgICB5aWVsZCAoMCxfZXJyb3JfanNfX1dFQlBB
Q0tfSU1QT1JURURfTU9EVUxFXzBfXy52YWxpZGF0aW9uRXJyb3IpKAorICAgICAgICAgICAgdGFy
Z2V0VG9rZW4sCisgICAgICAgICAgICB0aGlzLAorICAgICAgICAgICAgImF0dHItaW52YWxpZC10
eXBlIiwKKyAgICAgICAgICAgIG1lc3NhZ2UKKyAgICAgICAgICApOworICAgICAgICB9CisgICAg
ICB9CisgICAgfQorICB9CisKKyAgLyoqIEBwYXJhbSB7aW1wb3J0KCIuLi93cml0ZXIuanMiKS5X
cml0ZXJ9IHcgKi8KKyAgd3JpdGUodykgeworICAgIGNvbnN0IHsgcGFyZW50IH0gPSB0aGlzOwor
ICAgIHJldHVybiB3LnRzLmRlZmluaXRpb24oCisgICAgICB3LnRzLndyYXAoWworICAgICAgICB0
aGlzLmV4dEF0dHJzLndyaXRlKHcpLAorICAgICAgICB3LnRva2VuKHRoaXMudG9rZW5zLnNwZWNp
YWwpLAorICAgICAgICB3LnRva2VuKHRoaXMudG9rZW5zLnJlYWRvbmx5KSwKKyAgICAgICAgdy50
b2tlbih0aGlzLnRva2Vucy5iYXNlKSwKKyAgICAgICAgdy50cy50eXBlKHRoaXMuaWRsVHlwZS53
cml0ZSh3KSksCisgICAgICAgIHcubmFtZV90b2tlbih0aGlzLnRva2Vucy5uYW1lLCB7IGRhdGE6
IHRoaXMsIHBhcmVudCB9KSwKKyAgICAgICAgdy50b2tlbih0aGlzLnRva2Vucy50ZXJtaW5hdGlv
biksCisgICAgICBdKSwKKyAgICAgIHsgZGF0YTogdGhpcywgcGFyZW50IH0KKyAgICApOworICB9
Cit9CisKKworLyoqKi8gfSksCisvKiAxNSAqLworLyoqKi8gKChfX3VudXNlZF93ZWJwYWNrX19f
d2VicGFja19tb2R1bGVfXywgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVf
XykgPT4geworCitfX3dlYnBhY2tfcmVxdWlyZV9fLnIoX193ZWJwYWNrX2V4cG9ydHNfXyk7Cisv
KiBoYXJtb255IGV4cG9ydCAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9y
dHNfXywgeworLyogaGFybW9ueSBleHBvcnQgKi8gICAiRW51bSI6ICgpID0+ICgvKiBiaW5kaW5n
ICovIEVudW0pCisvKiBoYXJtb255IGV4cG9ydCAqLyB9KTsKKy8qIGhhcm1vbnkgaW1wb3J0ICov
IHZhciBfaGVscGVyc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fID0gX193ZWJwYWNr
X3JlcXVpcmVfXyg0KTsKKy8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfdG9rZW5fanNfX1dFQlBB
Q0tfSU1QT1JURURfTU9EVUxFXzFfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTApOworLyogaGFy
bW9ueSBpbXBvcnQgKi8gdmFyIF9iYXNlX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18g
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpOworCisKKworCitjbGFzcyBFbnVtVmFsdWUgZXh0ZW5k
cyBfdG9rZW5fanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXy5XcmFwcGVkVG9rZW4gewor
ICAvKioKKyAgICogQHBhcmFtIHtpbXBvcnQoIi4uL3Rva2VuaXNlciIpLlRva2VuaXNlcn0gdG9r
ZW5pc2VyCisgICAqLworICBzdGF0aWMgcGFyc2UodG9rZW5pc2VyKSB7CisgICAgY29uc3QgdmFs
dWUgPSB0b2tlbmlzZXIuY29uc3VtZVR5cGUoInN0cmluZyIpOworICAgIGlmICh2YWx1ZSkgewor
ICAgICAgcmV0dXJuIG5ldyBFbnVtVmFsdWUoeyBzb3VyY2U6IHRva2VuaXNlci5zb3VyY2UsIHRv
a2VuczogeyB2YWx1ZSB9IH0pOworICAgIH0KKyAgfQorCisgIGdldCB0eXBlKCkgeworICAgIHJl
dHVybiAiZW51bS12YWx1ZSI7CisgIH0KKyAgZ2V0IHZhbHVlKCkgeworICAgIHJldHVybiBzdXBl
ci52YWx1ZS5zbGljZSgxLCAtMSk7CisgIH0KKworICAvKiogQHBhcmFtIHtpbXBvcnQoIi4uL3dy
aXRlci5qcyIpLldyaXRlcn0gdyAqLworICB3cml0ZSh3KSB7CisgICAgY29uc3QgeyBwYXJlbnQg
fSA9IHRoaXM7CisgICAgcmV0dXJuIHcudHMud3JhcChbCisgICAgICB3LnRzLnRyaXZpYSh0aGlz
LnRva2Vucy52YWx1ZS50cml2aWEpLAorICAgICAgdy50cy5kZWZpbml0aW9uKAorICAgICAgICB3
LnRzLndyYXAoWyciJywgdy50cy5uYW1lKHRoaXMudmFsdWUsIHsgZGF0YTogdGhpcywgcGFyZW50
IH0pLCAnIiddKSwKKyAgICAgICAgeyBkYXRhOiB0aGlzLCBwYXJlbnQgfQorICAgICAgKSwKKyAg
ICAgIHcudG9rZW4odGhpcy50b2tlbnMuc2VwYXJhdG9yKSwKKyAgICBdKTsKKyAgfQorfQorCitj
bGFzcyBFbnVtIGV4dGVuZHMgX2Jhc2VfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXy5C
YXNlIHsKKyAgLyoqCisgICAqIEBwYXJhbSB7aW1wb3J0KCIuLi90b2tlbmlzZXIiKS5Ub2tlbmlz
ZXJ9IHRva2VuaXNlcgorICAgKi8KKyAgc3RhdGljIHBhcnNlKHRva2VuaXNlcikgeworICAgIC8q
KiBAdHlwZSB7QmFzZVsidG9rZW5zIl19ICovCisgICAgY29uc3QgdG9rZW5zID0ge307CisgICAg
dG9rZW5zLmJhc2UgPSB0b2tlbmlzZXIuY29uc3VtZSgiZW51bSIpOworICAgIGlmICghdG9rZW5z
LmJhc2UpIHsKKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgdG9rZW5zLm5hbWUgPQorICAgICAg
dG9rZW5pc2VyLmNvbnN1bWVUeXBlKCJpZGVudGlmaWVyIikgfHwKKyAgICAgIHRva2VuaXNlci5l
cnJvcigiTm8gbmFtZSBmb3IgZW51bSIpOworICAgIGNvbnN0IHJldCA9ICgwLF9oZWxwZXJzX2pz
X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18uYXV0b1BhcmVudGVyKShuZXcgRW51bSh7IHNv
dXJjZTogdG9rZW5pc2VyLnNvdXJjZSwgdG9rZW5zIH0pKTsKKyAgICB0b2tlbmlzZXIuY3VycmVu
dCA9IHJldC50aGlzOworICAgIHRva2Vucy5vcGVuID0gdG9rZW5pc2VyLmNvbnN1bWUoInsiKSB8
fCB0b2tlbmlzZXIuZXJyb3IoIkJvZHlsZXNzIGVudW0iKTsKKyAgICByZXQudmFsdWVzID0gKDAs
X2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXy5saXN0KSh0b2tlbmlzZXIs
IHsKKyAgICAgIHBhcnNlcjogRW51bVZhbHVlLnBhcnNlLAorICAgICAgYWxsb3dEYW5nbGVyOiB0
cnVlLAorICAgICAgbGlzdE5hbWU6ICJlbnVtZXJhdGlvbiIsCisgICAgfSk7CisgICAgaWYgKHRv
a2VuaXNlci5wcm9iZVR5cGUoInN0cmluZyIpKSB7CisgICAgICB0b2tlbmlzZXIuZXJyb3IoIk5v
IGNvbW1hIGJldHdlZW4gZW51bSB2YWx1ZXMiKTsKKyAgICB9CisgICAgdG9rZW5zLmNsb3NlID0K
KyAgICAgIHRva2VuaXNlci5jb25zdW1lKCJ9IikgfHwgdG9rZW5pc2VyLmVycm9yKCJVbmV4cGVj
dGVkIHZhbHVlIGluIGVudW0iKTsKKyAgICBpZiAoIXJldC52YWx1ZXMubGVuZ3RoKSB7CisgICAg
ICB0b2tlbmlzZXIuZXJyb3IoIk5vIHZhbHVlIGluIGVudW0iKTsKKyAgICB9CisgICAgdG9rZW5z
LnRlcm1pbmF0aW9uID0KKyAgICAgIHRva2VuaXNlci5jb25zdW1lKCI7IikgfHwgdG9rZW5pc2Vy
LmVycm9yKCJObyBzZW1pY29sb24gYWZ0ZXIgZW51bSIpOworICAgIHJldHVybiByZXQudGhpczsK
KyAgfQorCisgIGdldCB0eXBlKCkgeworICAgIHJldHVybiAiZW51bSI7CisgIH0KKyAgZ2V0IG5h
bWUoKSB7CisgICAgcmV0dXJuICgwLF9oZWxwZXJzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVM
RV8wX18udW5lc2NhcGUpKHRoaXMudG9rZW5zLm5hbWUudmFsdWUpOworICB9CisKKyAgLyoqIEBw
YXJhbSB7aW1wb3J0KCIuLi93cml0ZXIuanMiKS5Xcml0ZXJ9IHcgKi8KKyAgd3JpdGUodykgewor
ICAgIHJldHVybiB3LnRzLmRlZmluaXRpb24oCisgICAgICB3LnRzLndyYXAoWworICAgICAgICB0
aGlzLmV4dEF0dHJzLndyaXRlKHcpLAorICAgICAgICB3LnRva2VuKHRoaXMudG9rZW5zLmJhc2Up
LAorICAgICAgICB3Lm5hbWVfdG9rZW4odGhpcy50b2tlbnMubmFtZSwgeyBkYXRhOiB0aGlzIH0p
LAorICAgICAgICB3LnRva2VuKHRoaXMudG9rZW5zLm9wZW4pLAorICAgICAgICB3LnRzLndyYXAo
dGhpcy52YWx1ZXMubWFwKCh2KSA9PiB2LndyaXRlKHcpKSksCisgICAgICAgIHcudG9rZW4odGhp
cy50b2tlbnMuY2xvc2UpLAorICAgICAgICB3LnRva2VuKHRoaXMudG9rZW5zLnRlcm1pbmF0aW9u
KSwKKyAgICAgIF0pLAorICAgICAgeyBkYXRhOiB0aGlzIH0KKyAgICApOworICB9Cit9CisKKwor
LyoqKi8gfSksCisvKiAxNiAqLworLyoqKi8gKChfX3VudXNlZF93ZWJwYWNrX19fd2VicGFja19t
b2R1bGVfXywgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykgPT4gewor
CitfX3dlYnBhY2tfcmVxdWlyZV9fLnIoX193ZWJwYWNrX2V4cG9ydHNfXyk7CisvKiBoYXJtb255
IGV4cG9ydCAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgewor
LyogaGFybW9ueSBleHBvcnQgKi8gICAiSW5jbHVkZXMiOiAoKSA9PiAoLyogYmluZGluZyAqLyBJ
bmNsdWRlcykKKy8qIGhhcm1vbnkgZXhwb3J0ICovIH0pOworLyogaGFybW9ueSBpbXBvcnQgKi8g
dmFyIF9iYXNlX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18gPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDYpOworLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9oZWxwZXJzX2pzX19XRUJQQUNL
X0lNUE9SVEVEX01PRFVMRV8xX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpOworLy8gQHRzLWNo
ZWNrCisKKworCisKK2NsYXNzIEluY2x1ZGVzIGV4dGVuZHMgX2Jhc2VfanNfX1dFQlBBQ0tfSU1Q
T1JURURfTU9EVUxFXzBfXy5CYXNlIHsKKyAgLyoqCisgICAqIEBwYXJhbSB7aW1wb3J0KCIuLi90
b2tlbmlzZXIiKS5Ub2tlbmlzZXJ9IHRva2VuaXNlcgorICAgKi8KKyAgc3RhdGljIHBhcnNlKHRv
a2VuaXNlcikgeworICAgIGNvbnN0IHRhcmdldCA9IHRva2VuaXNlci5jb25zdW1lVHlwZSgiaWRl
bnRpZmllciIpOworICAgIGlmICghdGFyZ2V0KSB7CisgICAgICByZXR1cm47CisgICAgfQorICAg
IGNvbnN0IHRva2VucyA9IHsgdGFyZ2V0IH07CisgICAgdG9rZW5zLmluY2x1ZGVzID0gdG9rZW5p
c2VyLmNvbnN1bWUoImluY2x1ZGVzIik7CisgICAgaWYgKCF0b2tlbnMuaW5jbHVkZXMpIHsKKyAg
ICAgIHRva2VuaXNlci51bmNvbnN1bWUodGFyZ2V0LmluZGV4KTsKKyAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgdG9rZW5zLm1peGluID0KKyAgICAgIHRva2VuaXNlci5jb25zdW1lVHlwZSgiaWRl
bnRpZmllciIpIHx8CisgICAgICB0b2tlbmlzZXIuZXJyb3IoIkluY29tcGxldGUgaW5jbHVkZXMg
c3RhdGVtZW50Iik7CisgICAgdG9rZW5zLnRlcm1pbmF0aW9uID0KKyAgICAgIHRva2VuaXNlci5j
b25zdW1lKCI7IikgfHwKKyAgICAgIHRva2VuaXNlci5lcnJvcigiTm8gdGVybWluYXRpbmcgOyBm
b3IgaW5jbHVkZXMgc3RhdGVtZW50Iik7CisgICAgcmV0dXJuIG5ldyBJbmNsdWRlcyh7IHNvdXJj
ZTogdG9rZW5pc2VyLnNvdXJjZSwgdG9rZW5zIH0pOworICB9CisKKyAgZ2V0IHR5cGUoKSB7Cisg
ICAgcmV0dXJuICJpbmNsdWRlcyI7CisgIH0KKyAgZ2V0IHRhcmdldCgpIHsKKyAgICByZXR1cm4g
KDAsX2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXy51bmVzY2FwZSkodGhp
cy50b2tlbnMudGFyZ2V0LnZhbHVlKTsKKyAgfQorICBnZXQgaW5jbHVkZXMoKSB7CisgICAgcmV0
dXJuICgwLF9oZWxwZXJzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18udW5lc2NhcGUp
KHRoaXMudG9rZW5zLm1peGluLnZhbHVlKTsKKyAgfQorCisgIC8qKiBAcGFyYW0ge2ltcG9ydCgi
Li4vd3JpdGVyLmpzIikuV3JpdGVyfSB3ICovCisgIHdyaXRlKHcpIHsKKyAgICByZXR1cm4gdy50
cy5kZWZpbml0aW9uKAorICAgICAgdy50cy53cmFwKFsKKyAgICAgICAgdGhpcy5leHRBdHRycy53
cml0ZSh3KSwKKyAgICAgICAgdy5yZWZlcmVuY2VfdG9rZW4odGhpcy50b2tlbnMudGFyZ2V0LCB0
aGlzKSwKKyAgICAgICAgdy50b2tlbih0aGlzLnRva2Vucy5pbmNsdWRlcyksCisgICAgICAgIHcu
cmVmZXJlbmNlX3Rva2VuKHRoaXMudG9rZW5zLm1peGluLCB0aGlzKSwKKyAgICAgICAgdy50b2tl
bih0aGlzLnRva2Vucy50ZXJtaW5hdGlvbiksCisgICAgICBdKSwKKyAgICAgIHsgZGF0YTogdGhp
cyB9CisgICAgKTsKKyAgfQorfQorCisKKy8qKiovIH0pLAorLyogMTcgKi8KKy8qKiovICgoX191
bnVzZWRfd2VicGFja19fX3dlYnBhY2tfbW9kdWxlX18sIF9fd2VicGFja19leHBvcnRzX18sIF9f
d2VicGFja19yZXF1aXJlX18pID0+IHsKKworX193ZWJwYWNrX3JlcXVpcmVfXy5yKF9fd2VicGFj
a19leHBvcnRzX18pOworLyogaGFybW9ueSBleHBvcnQgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5k
KF9fd2VicGFja19leHBvcnRzX18sIHsKKy8qIGhhcm1vbnkgZXhwb3J0ICovICAgIlR5cGVkZWYi
OiAoKSA9PiAoLyogYmluZGluZyAqLyBUeXBlZGVmKQorLyogaGFybW9ueSBleHBvcnQgKi8gfSk7
CisvKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2Jhc2VfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9E
VUxFXzBfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNik7CisvKiBoYXJtb255IGltcG9ydCAqLyB2
YXIgX2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXyA9IF9fd2VicGFja19y
ZXF1aXJlX18oNCk7CisKKworCitjbGFzcyBUeXBlZGVmIGV4dGVuZHMgX2Jhc2VfanNfX1dFQlBB
Q0tfSU1QT1JURURfTU9EVUxFXzBfXy5CYXNlIHsKKyAgLyoqCisgICAqIEBwYXJhbSB7aW1wb3J0
KCIuLi90b2tlbmlzZXIiKS5Ub2tlbmlzZXJ9IHRva2VuaXNlcgorICAgKi8KKyAgc3RhdGljIHBh
cnNlKHRva2VuaXNlcikgeworICAgIC8qKiBAdHlwZSB7QmFzZVsidG9rZW5zIl19ICovCisgICAg
Y29uc3QgdG9rZW5zID0ge307CisgICAgY29uc3QgcmV0ID0gKDAsX2hlbHBlcnNfanNfX1dFQlBB
Q0tfSU1QT1JURURfTU9EVUxFXzFfXy5hdXRvUGFyZW50ZXIpKG5ldyBUeXBlZGVmKHsgc291cmNl
OiB0b2tlbmlzZXIuc291cmNlLCB0b2tlbnMgfSkpOworICAgIHRva2Vucy5iYXNlID0gdG9rZW5p
c2VyLmNvbnN1bWUoInR5cGVkZWYiKTsKKyAgICBpZiAoIXRva2Vucy5iYXNlKSB7CisgICAgICBy
ZXR1cm47CisgICAgfQorICAgIHJldC5pZGxUeXBlID0KKyAgICAgICgwLF9oZWxwZXJzX2pzX19X
RUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18udHlwZV93aXRoX2V4dGVuZGVkX2F0dHJpYnV0ZXMp
KHRva2VuaXNlciwgInR5cGVkZWYtdHlwZSIpIHx8CisgICAgICB0b2tlbmlzZXIuZXJyb3IoIlR5
cGVkZWYgbGFja3MgYSB0eXBlIik7CisgICAgdG9rZW5zLm5hbWUgPQorICAgICAgdG9rZW5pc2Vy
LmNvbnN1bWVUeXBlKCJpZGVudGlmaWVyIikgfHwKKyAgICAgIHRva2VuaXNlci5lcnJvcigiVHlw
ZWRlZiBsYWNrcyBhIG5hbWUiKTsKKyAgICB0b2tlbmlzZXIuY3VycmVudCA9IHJldC50aGlzOwor
ICAgIHRva2Vucy50ZXJtaW5hdGlvbiA9CisgICAgICB0b2tlbmlzZXIuY29uc3VtZSgiOyIpIHx8
CisgICAgICB0b2tlbmlzZXIuZXJyb3IoIlVudGVybWluYXRlZCB0eXBlZGVmLCBleHBlY3RlZCBg
O2AiKTsKKyAgICByZXR1cm4gcmV0LnRoaXM7CisgIH0KKworICBnZXQgdHlwZSgpIHsKKyAgICBy
ZXR1cm4gInR5cGVkZWYiOworICB9CisgIGdldCBuYW1lKCkgeworICAgIHJldHVybiAoMCxfaGVs
cGVyc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fLnVuZXNjYXBlKSh0aGlzLnRva2Vu
cy5uYW1lLnZhbHVlKTsKKyAgfQorCisgICp2YWxpZGF0ZShkZWZzKSB7CisgICAgeWllbGQqIHRo
aXMuaWRsVHlwZS52YWxpZGF0ZShkZWZzKTsKKyAgfQorCisgIC8qKiBAcGFyYW0ge2ltcG9ydCgi
Li4vd3JpdGVyLmpzIikuV3JpdGVyfSB3ICovCisgIHdyaXRlKHcpIHsKKyAgICByZXR1cm4gdy50
cy5kZWZpbml0aW9uKAorICAgICAgdy50cy53cmFwKFsKKyAgICAgICAgdGhpcy5leHRBdHRycy53
cml0ZSh3KSwKKyAgICAgICAgdy50b2tlbih0aGlzLnRva2Vucy5iYXNlKSwKKyAgICAgICAgdy50
cy50eXBlKHRoaXMuaWRsVHlwZS53cml0ZSh3KSksCisgICAgICAgIHcubmFtZV90b2tlbih0aGlz
LnRva2Vucy5uYW1lLCB7IGRhdGE6IHRoaXMgfSksCisgICAgICAgIHcudG9rZW4odGhpcy50b2tl
bnMudGVybWluYXRpb24pLAorICAgICAgXSksCisgICAgICB7IGRhdGE6IHRoaXMgfQorICAgICk7
CisgIH0KK30KKworCisvKioqLyB9KSwKKy8qIDE4ICovCisvKioqLyAoKF9fdW51c2VkX3dlYnBh
Y2tfX193ZWJwYWNrX21vZHVsZV9fLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVx
dWlyZV9fKSA9PiB7CisKK19fd2VicGFja19yZXF1aXJlX18ucihfX3dlYnBhY2tfZXhwb3J0c19f
KTsKKy8qIGhhcm1vbnkgZXhwb3J0ICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tf
ZXhwb3J0c19fLCB7CisvKiBoYXJtb255IGV4cG9ydCAqLyAgICJDYWxsYmFja0Z1bmN0aW9uIjog
KCkgPT4gKC8qIGJpbmRpbmcgKi8gQ2FsbGJhY2tGdW5jdGlvbikKKy8qIGhhcm1vbnkgZXhwb3J0
ICovIH0pOworLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9iYXNlX2pzX19XRUJQQUNLX0lNUE9S
VEVEX01PRFVMRV8wX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpOworLyogaGFybW9ueSBpbXBv
cnQgKi8gdmFyIF9oZWxwZXJzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18gPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDQpOworCisKKworY2xhc3MgQ2FsbGJhY2tGdW5jdGlvbiBleHRlbmRz
IF9iYXNlX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18uQmFzZSB7CisgIC8qKgorICAg
KiBAcGFyYW0ge2ltcG9ydCgiLi4vdG9rZW5pc2VyLmpzIikuVG9rZW5pc2VyfSB0b2tlbmlzZXIK
KyAgICovCisgIHN0YXRpYyBwYXJzZSh0b2tlbmlzZXIsIGJhc2UpIHsKKyAgICBjb25zdCB0b2tl
bnMgPSB7IGJhc2UgfTsKKyAgICBjb25zdCByZXQgPSAoMCxfaGVscGVyc19qc19fV0VCUEFDS19J
TVBPUlRFRF9NT0RVTEVfMV9fLmF1dG9QYXJlbnRlcikoCisgICAgICBuZXcgQ2FsbGJhY2tGdW5j
dGlvbih7IHNvdXJjZTogdG9rZW5pc2VyLnNvdXJjZSwgdG9rZW5zIH0pCisgICAgKTsKKyAgICB0
b2tlbnMubmFtZSA9CisgICAgICB0b2tlbmlzZXIuY29uc3VtZVR5cGUoImlkZW50aWZpZXIiKSB8
fAorICAgICAgdG9rZW5pc2VyLmVycm9yKCJDYWxsYmFjayBsYWNrcyBhIG5hbWUiKTsKKyAgICB0
b2tlbmlzZXIuY3VycmVudCA9IHJldC50aGlzOworICAgIHRva2Vucy5hc3NpZ24gPQorICAgICAg
dG9rZW5pc2VyLmNvbnN1bWUoIj0iKSB8fCB0b2tlbmlzZXIuZXJyb3IoIkNhbGxiYWNrIGxhY2tz
IGFuIGFzc2lnbm1lbnQiKTsKKyAgICByZXQuaWRsVHlwZSA9CisgICAgICAoMCxfaGVscGVyc19q
c19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fLnJldHVybl90eXBlKSh0b2tlbmlzZXIpIHx8
IHRva2VuaXNlci5lcnJvcigiQ2FsbGJhY2sgbGFja3MgYSByZXR1cm4gdHlwZSIpOworICAgIHRv
a2Vucy5vcGVuID0KKyAgICAgIHRva2VuaXNlci5jb25zdW1lKCIoIikgfHwKKyAgICAgIHRva2Vu
aXNlci5lcnJvcigiQ2FsbGJhY2sgbGFja3MgcGFyZW50aGVzZXMgZm9yIGFyZ3VtZW50cyIpOwor
ICAgIHJldC5hcmd1bWVudHMgPSAoMCxfaGVscGVyc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RV
TEVfMV9fLmFyZ3VtZW50X2xpc3QpKHRva2VuaXNlcik7CisgICAgdG9rZW5zLmNsb3NlID0KKyAg
ICAgIHRva2VuaXNlci5jb25zdW1lKCIpIikgfHwgdG9rZW5pc2VyLmVycm9yKCJVbnRlcm1pbmF0
ZWQgY2FsbGJhY2siKTsKKyAgICB0b2tlbnMudGVybWluYXRpb24gPQorICAgICAgdG9rZW5pc2Vy
LmNvbnN1bWUoIjsiKSB8fAorICAgICAgdG9rZW5pc2VyLmVycm9yKCJVbnRlcm1pbmF0ZWQgY2Fs
bGJhY2ssIGV4cGVjdGVkIGA7YCIpOworICAgIHJldHVybiByZXQudGhpczsKKyAgfQorCisgIGdl
dCB0eXBlKCkgeworICAgIHJldHVybiAiY2FsbGJhY2siOworICB9CisgIGdldCBuYW1lKCkgewor
ICAgIHJldHVybiAoMCxfaGVscGVyc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fLnVu
ZXNjYXBlKSh0aGlzLnRva2Vucy5uYW1lLnZhbHVlKTsKKyAgfQorCisgICp2YWxpZGF0ZShkZWZz
KSB7CisgICAgeWllbGQqIHRoaXMuZXh0QXR0cnMudmFsaWRhdGUoZGVmcyk7CisgICAgeWllbGQq
IHRoaXMuaWRsVHlwZS52YWxpZGF0ZShkZWZzKTsKKyAgfQorCisgIC8qKiBAcGFyYW0ge2ltcG9y
dCgiLi4vd3JpdGVyLmpzIikuV3JpdGVyfSB3ICovCisgIHdyaXRlKHcpIHsKKyAgICByZXR1cm4g
dy50cy5kZWZpbml0aW9uKAorICAgICAgdy50cy53cmFwKFsKKyAgICAgICAgdGhpcy5leHRBdHRy
cy53cml0ZSh3KSwKKyAgICAgICAgdy50b2tlbih0aGlzLnRva2Vucy5iYXNlKSwKKyAgICAgICAg
dy5uYW1lX3Rva2VuKHRoaXMudG9rZW5zLm5hbWUsIHsgZGF0YTogdGhpcyB9KSwKKyAgICAgICAg
dy50b2tlbih0aGlzLnRva2Vucy5hc3NpZ24pLAorICAgICAgICB3LnRzLnR5cGUodGhpcy5pZGxU
eXBlLndyaXRlKHcpKSwKKyAgICAgICAgdy50b2tlbih0aGlzLnRva2Vucy5vcGVuKSwKKyAgICAg
ICAgLi4udGhpcy5hcmd1bWVudHMubWFwKChhcmcpID0+IGFyZy53cml0ZSh3KSksCisgICAgICAg
IHcudG9rZW4odGhpcy50b2tlbnMuY2xvc2UpLAorICAgICAgICB3LnRva2VuKHRoaXMudG9rZW5z
LnRlcm1pbmF0aW9uKSwKKyAgICAgIF0pLAorICAgICAgeyBkYXRhOiB0aGlzIH0KKyAgICApOwor
ICB9Cit9CisKKworLyoqKi8gfSksCisvKiAxOSAqLworLyoqKi8gKChfX3VudXNlZF93ZWJwYWNr
X19fd2VicGFja19tb2R1bGVfXywgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVp
cmVfXykgPT4geworCitfX3dlYnBhY2tfcmVxdWlyZV9fLnIoX193ZWJwYWNrX2V4cG9ydHNfXyk7
CisvKiBoYXJtb255IGV4cG9ydCAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4
cG9ydHNfXywgeworLyogaGFybW9ueSBleHBvcnQgKi8gICAiSW50ZXJmYWNlIjogKCkgPT4gKC8q
IGJpbmRpbmcgKi8gSW50ZXJmYWNlKQorLyogaGFybW9ueSBleHBvcnQgKi8gfSk7CisvKiBoYXJt
b255IGltcG9ydCAqLyB2YXIgX2NvbnRhaW5lcl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVf
MF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMCk7CisvKiBoYXJtb255IGltcG9ydCAqLyB2YXIg
X2F0dHJpYnV0ZV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fID0gX193ZWJwYWNrX3Jl
cXVpcmVfXygxNCk7CisvKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX29wZXJhdGlvbl9qc19fV0VC
UEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMyk7CisvKiBo
YXJtb255IGltcG9ydCAqLyB2YXIgX2NvbnN0YW50X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVM
RV8zX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIxKTsKKy8qIGhhcm1vbnkgaW1wb3J0ICovIHZh
ciBfaXRlcmFibGVfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfXyA9IF9fd2VicGFja19y
ZXF1aXJlX18oMjIpOworLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9oZWxwZXJzX2pzX19XRUJQ
QUNLX0lNUE9SVEVEX01PRFVMRV81X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpOworLyogaGFy
bW9ueSBpbXBvcnQgKi8gdmFyIF9lcnJvcl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNl9f
ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTsKKy8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfdmFs
aWRhdG9yc19pbnRlcmZhY2VfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzdfXyA9IF9fd2Vi
cGFja19yZXF1aXJlX18oMjMpOworLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9jb25zdHJ1Y3Rv
cl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfOF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygy
NCk7CisvKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX3Rva2VuaXNlcl9qc19fV0VCUEFDS19JTVBP
UlRFRF9NT0RVTEVfOV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTsKKy8qIGhhcm1vbnkgaW1w
b3J0ICovIHZhciBfZXh0ZW5kZWRfYXR0cmlidXRlc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RV
TEVfMTBfXyA9IF9fd2VicGFja19yZXF1aXJlX18oOCk7CisKKworCisKKworCisKKworCisKKwor
CisvKioKKyAqIEBwYXJhbSB7aW1wb3J0KCIuLi90b2tlbmlzZXIiKS5Ub2tlbmlzZXJ9IHRva2Vu
aXNlcgorICovCitmdW5jdGlvbiBzdGF0aWNfbWVtYmVyKHRva2VuaXNlcikgeworICBjb25zdCBz
cGVjaWFsID0gdG9rZW5pc2VyLmNvbnN1bWUoInN0YXRpYyIpOworICBpZiAoIXNwZWNpYWwpIHJl
dHVybjsKKyAgY29uc3QgbWVtYmVyID0KKyAgICBfYXR0cmlidXRlX2pzX19XRUJQQUNLX0lNUE9S
VEVEX01PRFVMRV8xX18uQXR0cmlidXRlLnBhcnNlKHRva2VuaXNlciwgeyBzcGVjaWFsIH0pIHx8
CisgICAgX29wZXJhdGlvbl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fLk9wZXJhdGlv
bi5wYXJzZSh0b2tlbmlzZXIsIHsgc3BlY2lhbCB9KSB8fAorICAgIHRva2VuaXNlci5lcnJvcigi
Tm8gYm9keSBpbiBzdGF0aWMgbWVtYmVyIik7CisgIHJldHVybiBtZW1iZXI7Cit9CisKK2NsYXNz
IEludGVyZmFjZSBleHRlbmRzIF9jb250YWluZXJfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxF
XzBfXy5Db250YWluZXIgeworICAvKioKKyAgICogQHBhcmFtIHtpbXBvcnQoIi4uL3Rva2VuaXNl
ciIpLlRva2VuaXNlcn0gdG9rZW5pc2VyCisgICAqLworICBzdGF0aWMgcGFyc2UodG9rZW5pc2Vy
LCBiYXNlLCB7IHBhcnRpYWwgPSBudWxsIH0gPSB7fSkgeworICAgIGNvbnN0IHRva2VucyA9IHsg
cGFydGlhbCwgYmFzZSB9OworICAgIHJldHVybiBfY29udGFpbmVyX2pzX19XRUJQQUNLX0lNUE9S
VEVEX01PRFVMRV8wX18uQ29udGFpbmVyLnBhcnNlKAorICAgICAgdG9rZW5pc2VyLAorICAgICAg
bmV3IEludGVyZmFjZSh7IHNvdXJjZTogdG9rZW5pc2VyLnNvdXJjZSwgdG9rZW5zIH0pLAorICAg
ICAgeworICAgICAgICB0eXBlOiAiaW50ZXJmYWNlIiwKKyAgICAgICAgaW5oZXJpdGFibGU6ICFw
YXJ0aWFsLAorICAgICAgICBhbGxvd2VkTWVtYmVyczogWworICAgICAgICAgIFtfY29uc3RhbnRf
anNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfXy5Db25zdGFudC5wYXJzZV0sCisgICAgICAg
ICAgW19jb25zdHJ1Y3Rvcl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfOF9fLkNvbnN0cnVj
dG9yLnBhcnNlXSwKKyAgICAgICAgICBbc3RhdGljX21lbWJlcl0sCisgICAgICAgICAgW19oZWxw
ZXJzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X18uc3RyaW5naWZpZXJdLAorICAgICAg
ICAgIFtfaXRlcmFibGVfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfXy5JdGVyYWJsZUxp
a2UucGFyc2VdLAorICAgICAgICAgIFtfYXR0cmlidXRlX2pzX19XRUJQQUNLX0lNUE9SVEVEX01P
RFVMRV8xX18uQXR0cmlidXRlLnBhcnNlXSwKKyAgICAgICAgICBbX29wZXJhdGlvbl9qc19fV0VC
UEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fLk9wZXJhdGlvbi5wYXJzZV0sCisgICAgICAgIF0sCisg
ICAgICB9CisgICAgKTsKKyAgfQorCisgIGdldCB0eXBlKCkgeworICAgIHJldHVybiAiaW50ZXJm
YWNlIjsKKyAgfQorCisgICp2YWxpZGF0ZShkZWZzKSB7CisgICAgeWllbGQqIHRoaXMuZXh0QXR0
cnMudmFsaWRhdGUoZGVmcyk7CisgICAgaWYgKAorICAgICAgIXRoaXMucGFydGlhbCAmJgorICAg
ICAgdGhpcy5leHRBdHRycy5ldmVyeSgoZXh0QXR0cikgPT4gZXh0QXR0ci5uYW1lICE9PSAiRXhw
b3NlZCIpCisgICAgKSB7CisgICAgICBjb25zdCBtZXNzYWdlID0gYEludGVyZmFjZXMgbXVzdCBo
YXZlIFxgW0V4cG9zZWRdXGAgZXh0ZW5kZWQgYXR0cmlidXRlLiBcCitUbyBmaXgsIGFkZCwgZm9y
IGV4YW1wbGUsIFxgW0V4cG9zZWQ9V2luZG93XVxgLiBQbGVhc2UgYWxzbyBjb25zaWRlciBjYXJl
ZnVsbHkgXAoraWYgeW91ciBpbnRlcmZhY2Ugc2hvdWxkIGFsc28gYmUgZXhwb3NlZCBpbiBhIFdv
cmtlciBzY29wZS4gUmVmZXIgdG8gdGhlIFwKK1tXZWJJREwgc3BlYyBzZWN0aW9uIG9uIEV4cG9z
ZWRdKGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI0V4cG9zZWQpIFwKK2ZvciBtb3Jl
IGluZm9ybWF0aW9uLmA7CisgICAgICB5aWVsZCAoMCxfZXJyb3JfanNfX1dFQlBBQ0tfSU1QT1JU
RURfTU9EVUxFXzZfXy52YWxpZGF0aW9uRXJyb3IpKAorICAgICAgICB0aGlzLnRva2Vucy5uYW1l
LAorICAgICAgICB0aGlzLAorICAgICAgICAicmVxdWlyZS1leHBvc2VkIiwKKyAgICAgICAgbWVz
c2FnZSwKKyAgICAgICAgeworICAgICAgICAgIGF1dG9maXg6ICgwLF9oZWxwZXJzX2pzX19XRUJQ
QUNLX0lNUE9SVEVEX01PRFVMRV81X18uYXV0b2ZpeEFkZEV4cG9zZWRXaW5kb3cpKHRoaXMpLAor
ICAgICAgICB9CisgICAgICApOworICAgIH0KKyAgICBjb25zdCBvbGRDb25zdHJ1Y3RvcnMgPSB0
aGlzLmV4dEF0dHJzLmZpbHRlcigKKyAgICAgIChleHRBdHRyKSA9PiBleHRBdHRyLm5hbWUgPT09
ICJDb25zdHJ1Y3RvciIKKyAgICApOworICAgIGZvciAoY29uc3QgY29uc3RydWN0b3Igb2Ygb2xk
Q29uc3RydWN0b3JzKSB7CisgICAgICBjb25zdCBtZXNzYWdlID0gYENvbnN0cnVjdG9ycyBzaG91
bGQgbm93IGJlIHJlcHJlc2VudGVkIGFzIGEgXGBjb25zdHJ1Y3RvcigpXGAgb3BlcmF0aW9uIG9u
IHRoZSBpbnRlcmZhY2UgXAoraW5zdGVhZCBvZiBcYFtDb25zdHJ1Y3Rvcl1cYCBleHRlbmRlZCBh
dHRyaWJ1dGUuIFJlZmVyIHRvIHRoZSBcCitbV2ViSURMIHNwZWMgc2VjdGlvbiBvbiBjb25zdHJ1
Y3RvciBvcGVyYXRpb25zXShodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNpZGwtY29u
c3RydWN0b3JzKSBcCitmb3IgbW9yZSBpbmZvcm1hdGlvbi5gOworICAgICAgeWllbGQgKDAsX2Vy
cm9yX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82X18udmFsaWRhdGlvbkVycm9yKSgKKyAg
ICAgICAgY29uc3RydWN0b3IudG9rZW5zLm5hbWUsCisgICAgICAgIHRoaXMsCisgICAgICAgICJj
b25zdHJ1Y3Rvci1tZW1iZXIiLAorICAgICAgICBtZXNzYWdlLAorICAgICAgICB7CisgICAgICAg
ICAgYXV0b2ZpeDogYXV0b2ZpeENvbnN0cnVjdG9yKHRoaXMsIGNvbnN0cnVjdG9yKSwKKyAgICAg
ICAgfQorICAgICAgKTsKKyAgICB9CisKKyAgICBjb25zdCBpc0dsb2JhbCA9IHRoaXMuZXh0QXR0
cnMuc29tZSgoZXh0QXR0cikgPT4gZXh0QXR0ci5uYW1lID09PSAiR2xvYmFsIik7CisgICAgaWYg
KGlzR2xvYmFsKSB7CisgICAgICBjb25zdCBmYWN0b3J5RnVuY3Rpb25zID0gdGhpcy5leHRBdHRy
cy5maWx0ZXIoCisgICAgICAgIChleHRBdHRyKSA9PiBleHRBdHRyLm5hbWUgPT09ICJMZWdhY3lG
YWN0b3J5RnVuY3Rpb24iCisgICAgICApOworICAgICAgZm9yIChjb25zdCBuYW1lZCBvZiBmYWN0
b3J5RnVuY3Rpb25zKSB7CisgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgSW50ZXJmYWNlcyBtYXJr
ZWQgYXMgXGBbR2xvYmFsXVxgIGNhbm5vdCBoYXZlIGZhY3RvcnkgZnVuY3Rpb25zLmA7CisgICAg
ICAgIHlpZWxkICgwLF9lcnJvcl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNl9fLnZhbGlk
YXRpb25FcnJvcikoCisgICAgICAgICAgbmFtZWQudG9rZW5zLm5hbWUsCisgICAgICAgICAgdGhp
cywKKyAgICAgICAgICAibm8tY29uc3RydWN0aWJsZS1nbG9iYWwiLAorICAgICAgICAgIG1lc3Nh
Z2UKKyAgICAgICAgKTsKKyAgICAgIH0KKworICAgICAgY29uc3QgY29uc3RydWN0b3JzID0gdGhp
cy5tZW1iZXJzLmZpbHRlcigKKyAgICAgICAgKG1lbWJlcikgPT4gbWVtYmVyLnR5cGUgPT09ICJj
b25zdHJ1Y3RvciIKKyAgICAgICk7CisgICAgICBmb3IgKGNvbnN0IG5hbWVkIG9mIGNvbnN0cnVj
dG9ycykgeworICAgICAgICBjb25zdCBtZXNzYWdlID0gYEludGVyZmFjZXMgbWFya2VkIGFzIFxg
W0dsb2JhbF1cYCBjYW5ub3QgaGF2ZSBjb25zdHJ1Y3RvcnMuYDsKKyAgICAgICAgeWllbGQgKDAs
X2Vycm9yX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82X18udmFsaWRhdGlvbkVycm9yKSgK
KyAgICAgICAgICBuYW1lZC50b2tlbnMuYmFzZSwKKyAgICAgICAgICB0aGlzLAorICAgICAgICAg
ICJuby1jb25zdHJ1Y3RpYmxlLWdsb2JhbCIsCisgICAgICAgICAgbWVzc2FnZQorICAgICAgICAp
OworICAgICAgfQorICAgIH0KKworICAgIHlpZWxkKiBzdXBlci52YWxpZGF0ZShkZWZzKTsKKyAg
ICBpZiAoIXRoaXMucGFydGlhbCkgeworICAgICAgeWllbGQqICgwLF92YWxpZGF0b3JzX2ludGVy
ZmFjZV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfN19fLmNoZWNrSW50ZXJmYWNlTWVtYmVy
RHVwbGljYXRpb24pKGRlZnMsIHRoaXMpOworICAgIH0KKyAgfQorfQorCitmdW5jdGlvbiBhdXRv
Zml4Q29uc3RydWN0b3IoaW50ZXJmYWNlRGVmLCBjb25zdHJ1Y3RvckV4dEF0dHIpIHsKKyAgaW50
ZXJmYWNlRGVmID0gKDAsX2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzVfXy5h
dXRvUGFyZW50ZXIpKGludGVyZmFjZURlZik7CisgIHJldHVybiAoKSA9PiB7CisgICAgY29uc3Qg
aW5kZW50YXRpb24gPSAoMCxfaGVscGVyc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9f
LmdldExhc3RJbmRlbnRhdGlvbikoCisgICAgICBpbnRlcmZhY2VEZWYuZXh0QXR0cnMudG9rZW5z
Lm9wZW4udHJpdmlhCisgICAgKTsKKyAgICBjb25zdCBtZW1iZXJJbmRlbnQgPSBpbnRlcmZhY2VE
ZWYubWVtYmVycy5sZW5ndGgKKyAgICAgID8gKDAsX2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JU
RURfTU9EVUxFXzVfXy5nZXRMYXN0SW5kZW50YXRpb24pKCgwLF9oZWxwZXJzX2pzX19XRUJQQUNL
X0lNUE9SVEVEX01PRFVMRV81X18uZ2V0Rmlyc3RUb2tlbikoaW50ZXJmYWNlRGVmLm1lbWJlcnNb
MF0pLnRyaXZpYSkKKyAgICAgIDogKDAsX2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9E
VUxFXzVfXy5nZXRNZW1iZXJJbmRlbnRhdGlvbikoaW5kZW50YXRpb24pOworICAgIGNvbnN0IGNv
bnN0cnVjdG9yT3AgPSBfY29uc3RydWN0b3JfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzhf
Xy5Db25zdHJ1Y3Rvci5wYXJzZSgKKyAgICAgIG5ldyBfdG9rZW5pc2VyX2pzX19XRUJQQUNLX0lN
UE9SVEVEX01PRFVMRV85X18uVG9rZW5pc2VyKGBcbiR7bWVtYmVySW5kZW50fWNvbnN0cnVjdG9y
KCk7YCkKKyAgICApOworICAgIGNvbnN0cnVjdG9yT3AuZXh0QXR0cnMgPSBuZXcgX2V4dGVuZGVk
X2F0dHJpYnV0ZXNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzEwX18uRXh0ZW5kZWRBdHRy
aWJ1dGVzKHt9KTsKKyAgICAoMCxfaGVscGVyc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVf
NV9fLmF1dG9QYXJlbnRlcikoY29uc3RydWN0b3JPcCkuYXJndW1lbnRzID0gY29uc3RydWN0b3JF
eHRBdHRyLmFyZ3VtZW50czsKKworICAgIGNvbnN0IGV4aXN0aW5nSW5kZXggPSAoMCxfaGVscGVy
c19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fLmZpbmRMYXN0SW5kZXgpKAorICAgICAg
aW50ZXJmYWNlRGVmLm1lbWJlcnMsCisgICAgICAobSkgPT4gbS50eXBlID09PSAiY29uc3RydWN0
b3IiCisgICAgKTsKKyAgICBpbnRlcmZhY2VEZWYubWVtYmVycy5zcGxpY2UoZXhpc3RpbmdJbmRl
eCArIDEsIDAsIGNvbnN0cnVjdG9yT3ApOworCisgICAgY29uc3QgeyBjbG9zZSB9ID0gaW50ZXJm
YWNlRGVmLnRva2VuczsKKyAgICBpZiAoIWNsb3NlLnRyaXZpYS5pbmNsdWRlcygiXG4iKSkgewor
ICAgICAgY2xvc2UudHJpdmlhICs9IGBcbiR7aW5kZW50YXRpb259YDsKKyAgICB9CisKKyAgICBj
b25zdCB7IGV4dEF0dHJzIH0gPSBpbnRlcmZhY2VEZWY7CisgICAgY29uc3QgaW5kZXggPSBleHRB
dHRycy5pbmRleE9mKGNvbnN0cnVjdG9yRXh0QXR0cik7CisgICAgY29uc3QgcmVtb3ZlZCA9IGV4
dEF0dHJzLnNwbGljZShpbmRleCwgMSk7CisgICAgaWYgKCFleHRBdHRycy5sZW5ndGgpIHsKKyAg
ICAgIGV4dEF0dHJzLnRva2Vucy5vcGVuID0gZXh0QXR0cnMudG9rZW5zLmNsb3NlID0gdW5kZWZp
bmVkOworICAgIH0gZWxzZSBpZiAoZXh0QXR0cnMubGVuZ3RoID09PSBpbmRleCkgeworICAgICAg
ZXh0QXR0cnNbaW5kZXggLSAxXS50b2tlbnMuc2VwYXJhdG9yID0gdW5kZWZpbmVkOworICAgIH0g
ZWxzZSBpZiAoIWV4dEF0dHJzW2luZGV4XS50b2tlbnMubmFtZS50cml2aWEudHJpbSgpKSB7Cisg
ICAgICBleHRBdHRyc1tpbmRleF0udG9rZW5zLm5hbWUudHJpdmlhID0gcmVtb3ZlZFswXS50b2tl
bnMubmFtZS50cml2aWE7CisgICAgfQorICB9OworfQorCisKKy8qKiovIH0pLAorLyogMjAgKi8K
Ky8qKiovICgoX191bnVzZWRfd2VicGFja19fX3dlYnBhY2tfbW9kdWxlX18sIF9fd2VicGFja19l
eHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pID0+IHsKKworX193ZWJwYWNrX3JlcXVpcmVf
Xy5yKF9fd2VicGFja19leHBvcnRzX18pOworLyogaGFybW9ueSBleHBvcnQgKi8gX193ZWJwYWNr
X3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIHsKKy8qIGhhcm1vbnkgZXhwb3J0ICov
ICAgIkNvbnRhaW5lciI6ICgpID0+ICgvKiBiaW5kaW5nICovIENvbnRhaW5lcikKKy8qIGhhcm1v
bnkgZXhwb3J0ICovIH0pOworLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9iYXNlX2pzX19XRUJQ
QUNLX0lNUE9SVEVEX01PRFVMRV8wX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpOworLyogaGFy
bW9ueSBpbXBvcnQgKi8gdmFyIF9leHRlbmRlZF9hdHRyaWJ1dGVzX2pzX19XRUJQQUNLX0lNUE9S
VEVEX01PRFVMRV8xX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgpOworLyogaGFybW9ueSBpbXBv
cnQgKi8gdmFyIF9oZWxwZXJzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18gPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDQpOworCisKKworCisvKioKKyAqIEBwYXJhbSB7aW1wb3J0KCIuLi90
b2tlbmlzZXIuanMiKS5Ub2tlbmlzZXJ9IHRva2VuaXNlcgorICovCitmdW5jdGlvbiBpbmhlcml0
YW5jZSh0b2tlbmlzZXIpIHsKKyAgY29uc3QgY29sb24gPSB0b2tlbmlzZXIuY29uc3VtZSgiOiIp
OworICBpZiAoIWNvbG9uKSB7CisgICAgcmV0dXJuIHt9OworICB9CisgIGNvbnN0IGluaGVyaXRh
bmNlID0KKyAgICB0b2tlbmlzZXIuY29uc3VtZVR5cGUoImlkZW50aWZpZXIiKSB8fAorICAgIHRv
a2VuaXNlci5lcnJvcigiSW5oZXJpdGFuY2UgbGFja3MgYSB0eXBlIik7CisgIHJldHVybiB7IGNv
bG9uLCBpbmhlcml0YW5jZSB9OworfQorCitjbGFzcyBDb250YWluZXIgZXh0ZW5kcyBfYmFzZV9q
c19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fLkJhc2UgeworICAvKioKKyAgICogQHRlbXBs
YXRlIFQKKyAgICogQHBhcmFtIHtpbXBvcnQoIi4uL3Rva2VuaXNlci5qcyIpLlRva2VuaXNlcn0g
dG9rZW5pc2VyCisgICAqIEBwYXJhbSB7VH0gaW5zdGFuY2UKKyAgICogQHBhcmFtIHsqfSBhcmdz
CisgICAqLworICBzdGF0aWMgcGFyc2UodG9rZW5pc2VyLCBpbnN0YW5jZSwgeyB0eXBlLCBpbmhl
cml0YWJsZSwgYWxsb3dlZE1lbWJlcnMgfSkgeworICAgIGNvbnN0IHsgdG9rZW5zIH0gPSBpbnN0
YW5jZTsKKyAgICB0b2tlbnMubmFtZSA9CisgICAgICB0b2tlbmlzZXIuY29uc3VtZVR5cGUoImlk
ZW50aWZpZXIiKSB8fAorICAgICAgdG9rZW5pc2VyLmVycm9yKGBNaXNzaW5nIG5hbWUgaW4gJHtp
bnN0YW5jZS50eXBlfWApOworICAgIHRva2VuaXNlci5jdXJyZW50ID0gaW5zdGFuY2U7CisgICAg
aW5zdGFuY2UgPSAoMCxfaGVscGVyc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fLmF1
dG9QYXJlbnRlcikoaW5zdGFuY2UpOworICAgIGlmIChpbmhlcml0YWJsZSkgeworICAgICAgT2Jq
ZWN0LmFzc2lnbih0b2tlbnMsIGluaGVyaXRhbmNlKHRva2VuaXNlcikpOworICAgIH0KKyAgICB0
b2tlbnMub3BlbiA9IHRva2VuaXNlci5jb25zdW1lKCJ7IikgfHwgdG9rZW5pc2VyLmVycm9yKGBC
b2R5bGVzcyAke3R5cGV9YCk7CisgICAgaW5zdGFuY2UubWVtYmVycyA9IFtdOworICAgIHdoaWxl
ICh0cnVlKSB7CisgICAgICB0b2tlbnMuY2xvc2UgPSB0b2tlbmlzZXIuY29uc3VtZSgifSIpOwor
ICAgICAgaWYgKHRva2Vucy5jbG9zZSkgeworICAgICAgICB0b2tlbnMudGVybWluYXRpb24gPQor
ICAgICAgICAgIHRva2VuaXNlci5jb25zdW1lKCI7IikgfHwKKyAgICAgICAgICB0b2tlbmlzZXIu
ZXJyb3IoYE1pc3Npbmcgc2VtaWNvbG9uIGFmdGVyICR7dHlwZX1gKTsKKyAgICAgICAgcmV0dXJu
IGluc3RhbmNlLnRoaXM7CisgICAgICB9CisgICAgICBjb25zdCBlYSA9IF9leHRlbmRlZF9hdHRy
aWJ1dGVzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18uRXh0ZW5kZWRBdHRyaWJ1dGVz
LnBhcnNlKHRva2VuaXNlcik7CisgICAgICBsZXQgbWVtOworICAgICAgZm9yIChjb25zdCBbcGFy
c2VyLCAuLi5hcmdzXSBvZiBhbGxvd2VkTWVtYmVycykgeworICAgICAgICBtZW0gPSAoMCxfaGVs
cGVyc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fLmF1dG9QYXJlbnRlcikocGFyc2Vy
KHRva2VuaXNlciwgLi4uYXJncykpOworICAgICAgICBpZiAobWVtKSB7CisgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGlmICghbWVtKSB7CisgICAgICAgIHRva2Vu
aXNlci5lcnJvcigiVW5rbm93biBtZW1iZXIiKTsKKyAgICAgIH0KKyAgICAgIG1lbS5leHRBdHRy
cyA9IGVhOworICAgICAgaW5zdGFuY2UubWVtYmVycy5wdXNoKG1lbS50aGlzKTsKKyAgICB9Cisg
IH0KKworICBnZXQgcGFydGlhbCgpIHsKKyAgICByZXR1cm4gISF0aGlzLnRva2Vucy5wYXJ0aWFs
OworICB9CisgIGdldCBuYW1lKCkgeworICAgIHJldHVybiAoMCxfaGVscGVyc19qc19fV0VCUEFD
S19JTVBPUlRFRF9NT0RVTEVfMl9fLnVuZXNjYXBlKSh0aGlzLnRva2Vucy5uYW1lLnZhbHVlKTsK
KyAgfQorICBnZXQgaW5oZXJpdGFuY2UoKSB7CisgICAgaWYgKCF0aGlzLnRva2Vucy5pbmhlcml0
YW5jZSkgeworICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorICAgIHJldHVybiAoMCxfaGVscGVy
c19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fLnVuZXNjYXBlKSh0aGlzLnRva2Vucy5p
bmhlcml0YW5jZS52YWx1ZSk7CisgIH0KKworICAqdmFsaWRhdGUoZGVmcykgeworICAgIGZvciAo
Y29uc3QgbWVtYmVyIG9mIHRoaXMubWVtYmVycykgeworICAgICAgaWYgKG1lbWJlci52YWxpZGF0
ZSkgeworICAgICAgICB5aWVsZCogbWVtYmVyLnZhbGlkYXRlKGRlZnMpOworICAgICAgfQorICAg
IH0KKyAgfQorCisgIC8qKiBAcGFyYW0ge2ltcG9ydCgiLi4vd3JpdGVyLmpzIikuV3JpdGVyfSB3
ICovCisgIHdyaXRlKHcpIHsKKyAgICBjb25zdCBpbmhlcml0YW5jZSA9ICgpID0+IHsKKyAgICAg
IGlmICghdGhpcy50b2tlbnMuaW5oZXJpdGFuY2UpIHsKKyAgICAgICAgcmV0dXJuICIiOworICAg
ICAgfQorICAgICAgcmV0dXJuIHcudHMud3JhcChbCisgICAgICAgIHcudG9rZW4odGhpcy50b2tl
bnMuY29sb24pLAorICAgICAgICB3LnRzLnRyaXZpYSh0aGlzLnRva2Vucy5pbmhlcml0YW5jZS50
cml2aWEpLAorICAgICAgICB3LnRzLmluaGVyaXRhbmNlKAorICAgICAgICAgIHcucmVmZXJlbmNl
KHRoaXMudG9rZW5zLmluaGVyaXRhbmNlLnZhbHVlLCB7IGNvbnRleHQ6IHRoaXMgfSkKKyAgICAg
ICAgKSwKKyAgICAgIF0pOwogICAgIH07CiAKLSAgICBpZiAoaW5Ob2RlKSBtb2R1bGUuZXhwb3J0
cyA9IG9iajsKLSAgICBlbHNlICAgICAgICBzZWxmLldlYklETDIgPSBvYmo7Ci19KCkpOworICAg
IHJldHVybiB3LnRzLmRlZmluaXRpb24oCisgICAgICB3LnRzLndyYXAoWworICAgICAgICB0aGlz
LmV4dEF0dHJzLndyaXRlKHcpLAorICAgICAgICB3LnRva2VuKHRoaXMudG9rZW5zLmNhbGxiYWNr
KSwKKyAgICAgICAgdy50b2tlbih0aGlzLnRva2Vucy5wYXJ0aWFsKSwKKyAgICAgICAgdy50b2tl
bih0aGlzLnRva2Vucy5iYXNlKSwKKyAgICAgICAgdy50b2tlbih0aGlzLnRva2Vucy5taXhpbiks
CisgICAgICAgIHcubmFtZV90b2tlbih0aGlzLnRva2Vucy5uYW1lLCB7IGRhdGE6IHRoaXMgfSks
CisgICAgICAgIGluaGVyaXRhbmNlKCksCisgICAgICAgIHcudG9rZW4odGhpcy50b2tlbnMub3Bl
biksCisgICAgICAgIHcudHMud3JhcCh0aGlzLm1lbWJlcnMubWFwKChtKSA9PiBtLndyaXRlKHcp
KSksCisgICAgICAgIHcudG9rZW4odGhpcy50b2tlbnMuY2xvc2UpLAorICAgICAgICB3LnRva2Vu
KHRoaXMudG9rZW5zLnRlcm1pbmF0aW9uKSwKKyAgICAgIF0pLAorICAgICAgeyBkYXRhOiB0aGlz
IH0KKyAgICApOworICB9Cit9CisKKworLyoqKi8gfSksCisvKiAyMSAqLworLyoqKi8gKChfX3Vu
dXNlZF93ZWJwYWNrX19fd2VicGFja19tb2R1bGVfXywgX193ZWJwYWNrX2V4cG9ydHNfXywgX193
ZWJwYWNrX3JlcXVpcmVfXykgPT4geworCitfX3dlYnBhY2tfcmVxdWlyZV9fLnIoX193ZWJwYWNr
X2V4cG9ydHNfXyk7CisvKiBoYXJtb255IGV4cG9ydCAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQo
X193ZWJwYWNrX2V4cG9ydHNfXywgeworLyogaGFybW9ueSBleHBvcnQgKi8gICAiQ29uc3RhbnQi
OiAoKSA9PiAoLyogYmluZGluZyAqLyBDb25zdGFudCkKKy8qIGhhcm1vbnkgZXhwb3J0ICovIH0p
OworLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9iYXNlX2pzX19XRUJQQUNLX0lNUE9SVEVEX01P
RFVMRV8wX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpOworLyogaGFybW9ueSBpbXBvcnQgKi8g
dmFyIF90eXBlX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18gPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDUpOworLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9oZWxwZXJzX2pzX19XRUJQQUNL
X0lNUE9SVEVEX01PRFVMRV8yX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpOworCisKKworCitj
bGFzcyBDb25zdGFudCBleHRlbmRzIF9iYXNlX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8w
X18uQmFzZSB7CisgIC8qKgorICAgKiBAcGFyYW0ge2ltcG9ydCgiLi4vdG9rZW5pc2VyLmpzIiku
VG9rZW5pc2VyfSB0b2tlbmlzZXIKKyAgICovCisgIHN0YXRpYyBwYXJzZSh0b2tlbmlzZXIpIHsK
KyAgICAvKiogQHR5cGUge0Jhc2VbInRva2VucyJdfSAqLworICAgIGNvbnN0IHRva2VucyA9IHt9
OworICAgIHRva2Vucy5iYXNlID0gdG9rZW5pc2VyLmNvbnN1bWUoImNvbnN0Iik7CisgICAgaWYg
KCF0b2tlbnMuYmFzZSkgeworICAgICAgcmV0dXJuOworICAgIH0KKyAgICBsZXQgaWRsVHlwZSA9
ICgwLF9oZWxwZXJzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18ucHJpbWl0aXZlX3R5
cGUpKHRva2VuaXNlcik7CisgICAgaWYgKCFpZGxUeXBlKSB7CisgICAgICBjb25zdCBiYXNlID0K
KyAgICAgICAgdG9rZW5pc2VyLmNvbnN1bWVUeXBlKCJpZGVudGlmaWVyIikgfHwKKyAgICAgICAg
dG9rZW5pc2VyLmVycm9yKCJDb25zdCBsYWNrcyBhIHR5cGUiKTsKKyAgICAgIGlkbFR5cGUgPSBu
ZXcgX3R5cGVfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXy5UeXBlKHsgc291cmNlOiB0
b2tlbmlzZXIuc291cmNlLCB0b2tlbnM6IHsgYmFzZSB9IH0pOworICAgIH0KKyAgICBpZiAodG9r
ZW5pc2VyLnByb2JlKCI/IikpIHsKKyAgICAgIHRva2VuaXNlci5lcnJvcigiVW5leHBlY3RlZCBu
dWxsYWJsZSBjb25zdGFudCB0eXBlIik7CisgICAgfQorICAgIGlkbFR5cGUudHlwZSA9ICJjb25z
dC10eXBlIjsKKyAgICB0b2tlbnMubmFtZSA9CisgICAgICB0b2tlbmlzZXIuY29uc3VtZVR5cGUo
ImlkZW50aWZpZXIiKSB8fAorICAgICAgdG9rZW5pc2VyLmVycm9yKCJDb25zdCBsYWNrcyBhIG5h
bWUiKTsKKyAgICB0b2tlbnMuYXNzaWduID0KKyAgICAgIHRva2VuaXNlci5jb25zdW1lKCI9Iikg
fHwgdG9rZW5pc2VyLmVycm9yKCJDb25zdCBsYWNrcyB2YWx1ZSBhc3NpZ25tZW50Iik7CisgICAg
dG9rZW5zLnZhbHVlID0KKyAgICAgICgwLF9oZWxwZXJzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01P
RFVMRV8yX18uY29uc3RfdmFsdWUpKHRva2VuaXNlcikgfHwgdG9rZW5pc2VyLmVycm9yKCJDb25z
dCBsYWNrcyBhIHZhbHVlIik7CisgICAgdG9rZW5zLnRlcm1pbmF0aW9uID0KKyAgICAgIHRva2Vu
aXNlci5jb25zdW1lKCI7IikgfHwKKyAgICAgIHRva2VuaXNlci5lcnJvcigiVW50ZXJtaW5hdGVk
IGNvbnN0LCBleHBlY3RlZCBgO2AiKTsKKyAgICBjb25zdCByZXQgPSBuZXcgQ29uc3RhbnQoeyBz
b3VyY2U6IHRva2VuaXNlci5zb3VyY2UsIHRva2VucyB9KTsKKyAgICAoMCxfaGVscGVyc19qc19f
V0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fLmF1dG9QYXJlbnRlcikocmV0KS5pZGxUeXBlID0g
aWRsVHlwZTsKKyAgICByZXR1cm4gcmV0OworICB9CisKKyAgZ2V0IHR5cGUoKSB7CisgICAgcmV0
dXJuICJjb25zdCI7CisgIH0KKyAgZ2V0IG5hbWUoKSB7CisgICAgcmV0dXJuICgwLF9oZWxwZXJz
X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18udW5lc2NhcGUpKHRoaXMudG9rZW5zLm5h
bWUudmFsdWUpOworICB9CisgIGdldCB2YWx1ZSgpIHsKKyAgICByZXR1cm4gKDAsX2hlbHBlcnNf
anNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXy5jb25zdF9kYXRhKSh0aGlzLnRva2Vucy52
YWx1ZSk7CisgIH0KKworICAvKiogQHBhcmFtIHtpbXBvcnQoIi4uL3dyaXRlci5qcyIpLldyaXRl
cn0gdyAqLworICB3cml0ZSh3KSB7CisgICAgY29uc3QgeyBwYXJlbnQgfSA9IHRoaXM7CisgICAg
cmV0dXJuIHcudHMuZGVmaW5pdGlvbigKKyAgICAgIHcudHMud3JhcChbCisgICAgICAgIHRoaXMu
ZXh0QXR0cnMud3JpdGUodyksCisgICAgICAgIHcudG9rZW4odGhpcy50b2tlbnMuYmFzZSksCisg
ICAgICAgIHcudHMudHlwZSh0aGlzLmlkbFR5cGUud3JpdGUodykpLAorICAgICAgICB3Lm5hbWVf
dG9rZW4odGhpcy50b2tlbnMubmFtZSwgeyBkYXRhOiB0aGlzLCBwYXJlbnQgfSksCisgICAgICAg
IHcudG9rZW4odGhpcy50b2tlbnMuYXNzaWduKSwKKyAgICAgICAgdy50b2tlbih0aGlzLnRva2Vu
cy52YWx1ZSksCisgICAgICAgIHcudG9rZW4odGhpcy50b2tlbnMudGVybWluYXRpb24pLAorICAg
ICAgXSksCisgICAgICB7IGRhdGE6IHRoaXMsIHBhcmVudCB9CisgICAgKTsKKyAgfQorfQorCisK
Ky8qKiovIH0pLAorLyogMjIgKi8KKy8qKiovICgoX191bnVzZWRfd2VicGFja19fX3dlYnBhY2tf
bW9kdWxlX18sIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pID0+IHsK
KworX193ZWJwYWNrX3JlcXVpcmVfXy5yKF9fd2VicGFja19leHBvcnRzX18pOworLyogaGFybW9u
eSBleHBvcnQgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIHsK
Ky8qIGhhcm1vbnkgZXhwb3J0ICovICAgIkl0ZXJhYmxlTGlrZSI6ICgpID0+ICgvKiBiaW5kaW5n
ICovIEl0ZXJhYmxlTGlrZSkKKy8qIGhhcm1vbnkgZXhwb3J0ICovIH0pOworLyogaGFybW9ueSBp
bXBvcnQgKi8gdmFyIF9iYXNlX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18gPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDYpOworLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9oZWxwZXJzX2pz
X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpOwor
CisKKworY2xhc3MgSXRlcmFibGVMaWtlIGV4dGVuZHMgX2Jhc2VfanNfX1dFQlBBQ0tfSU1QT1JU
RURfTU9EVUxFXzBfXy5CYXNlIHsKKyAgLyoqCisgICAqIEBwYXJhbSB7aW1wb3J0KCIuLi90b2tl
bmlzZXIuanMiKS5Ub2tlbmlzZXJ9IHRva2VuaXNlcgorICAgKi8KKyAgc3RhdGljIHBhcnNlKHRv
a2VuaXNlcikgeworICAgIGNvbnN0IHN0YXJ0X3Bvc2l0aW9uID0gdG9rZW5pc2VyLnBvc2l0aW9u
OworICAgIGNvbnN0IHRva2VucyA9IHt9OworICAgIGNvbnN0IHJldCA9ICgwLF9oZWxwZXJzX2pz
X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18uYXV0b1BhcmVudGVyKSgKKyAgICAgIG5ldyBJ
dGVyYWJsZUxpa2UoeyBzb3VyY2U6IHRva2VuaXNlci5zb3VyY2UsIHRva2VucyB9KQorICAgICk7
CisgICAgdG9rZW5zLnJlYWRvbmx5ID0gdG9rZW5pc2VyLmNvbnN1bWUoInJlYWRvbmx5Iik7Cisg
ICAgaWYgKCF0b2tlbnMucmVhZG9ubHkpIHsKKyAgICAgIHRva2Vucy5hc3luYyA9IHRva2VuaXNl
ci5jb25zdW1lKCJhc3luYyIpOworICAgIH0KKyAgICB0b2tlbnMuYmFzZSA9IHRva2Vucy5yZWFk
b25seQorICAgICAgPyB0b2tlbmlzZXIuY29uc3VtZSgibWFwbGlrZSIsICJzZXRsaWtlIikKKyAg
ICAgIDogdG9rZW5zLmFzeW5jCisgICAgICA/IHRva2VuaXNlci5jb25zdW1lKCJpdGVyYWJsZSIp
CisgICAgICA6IHRva2VuaXNlci5jb25zdW1lKCJpdGVyYWJsZSIsICJtYXBsaWtlIiwgInNldGxp
a2UiKTsKKyAgICBpZiAoIXRva2Vucy5iYXNlKSB7CisgICAgICB0b2tlbmlzZXIudW5jb25zdW1l
KHN0YXJ0X3Bvc2l0aW9uKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjb25zdCB7IHR5
cGUgfSA9IHJldDsKKyAgICBjb25zdCBzZWNvbmRUeXBlUmVxdWlyZWQgPSB0eXBlID09PSAibWFw
bGlrZSI7CisgICAgY29uc3Qgc2Vjb25kVHlwZUFsbG93ZWQgPSBzZWNvbmRUeXBlUmVxdWlyZWQg
fHwgdHlwZSA9PT0gIml0ZXJhYmxlIjsKKyAgICBjb25zdCBhcmd1bWVudEFsbG93ZWQgPSByZXQu
YXN5bmMgJiYgdHlwZSA9PT0gIml0ZXJhYmxlIjsKKworICAgIHRva2Vucy5vcGVuID0KKyAgICAg
IHRva2VuaXNlci5jb25zdW1lKCI8IikgfHwKKyAgICAgIHRva2VuaXNlci5lcnJvcihgTWlzc2lu
ZyBsZXNzLXRoYW4gc2lnbiBcYDxcYCBpbiAke3R5cGV9IGRlY2xhcmF0aW9uYCk7CisgICAgY29u
c3QgZmlyc3QgPQorICAgICAgKDAsX2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxF
XzFfXy50eXBlX3dpdGhfZXh0ZW5kZWRfYXR0cmlidXRlcykodG9rZW5pc2VyKSB8fAorICAgICAg
dG9rZW5pc2VyLmVycm9yKGBNaXNzaW5nIGEgdHlwZSBhcmd1bWVudCBpbiAke3R5cGV9IGRlY2xh
cmF0aW9uYCk7CisgICAgcmV0LmlkbFR5cGUgPSBbZmlyc3RdOworICAgIHJldC5hcmd1bWVudHMg
PSBbXTsKKworICAgIGlmIChzZWNvbmRUeXBlQWxsb3dlZCkgeworICAgICAgZmlyc3QudG9rZW5z
LnNlcGFyYXRvciA9IHRva2VuaXNlci5jb25zdW1lKCIsIik7CisgICAgICBpZiAoZmlyc3QudG9r
ZW5zLnNlcGFyYXRvcikgeworICAgICAgICByZXQuaWRsVHlwZS5wdXNoKCgwLF9oZWxwZXJzX2pz
X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18udHlwZV93aXRoX2V4dGVuZGVkX2F0dHJpYnV0
ZXMpKHRva2VuaXNlcikpOworICAgICAgfSBlbHNlIGlmIChzZWNvbmRUeXBlUmVxdWlyZWQpIHsK
KyAgICAgICAgdG9rZW5pc2VyLmVycm9yKGBNaXNzaW5nIHNlY29uZCB0eXBlIGFyZ3VtZW50IGlu
ICR7dHlwZX0gZGVjbGFyYXRpb25gKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB0b2tlbnMuY2xv
c2UgPQorICAgICAgdG9rZW5pc2VyLmNvbnN1bWUoIj4iKSB8fAorICAgICAgdG9rZW5pc2VyLmVy
cm9yKGBNaXNzaW5nIGdyZWF0ZXItdGhhbiBzaWduIFxgPlxgIGluICR7dHlwZX0gZGVjbGFyYXRp
b25gKTsKKworICAgIGlmICh0b2tlbmlzZXIucHJvYmUoIigiKSkgeworICAgICAgaWYgKGFyZ3Vt
ZW50QWxsb3dlZCkgeworICAgICAgICB0b2tlbnMuYXJnc09wZW4gPSB0b2tlbmlzZXIuY29uc3Vt
ZSgiKCIpOworICAgICAgICByZXQuYXJndW1lbnRzLnB1c2goLi4uKDAsX2hlbHBlcnNfanNfX1dF
QlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXy5hcmd1bWVudF9saXN0KSh0b2tlbmlzZXIpKTsKKyAg
ICAgICAgdG9rZW5zLmFyZ3NDbG9zZSA9CisgICAgICAgICAgdG9rZW5pc2VyLmNvbnN1bWUoIiki
KSB8fAorICAgICAgICAgIHRva2VuaXNlci5lcnJvcigiVW50ZXJtaW5hdGVkIGFzeW5jIGl0ZXJh
YmxlIGFyZ3VtZW50IGxpc3QiKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHRva2VuaXNlci5l
cnJvcihgQXJndW1lbnRzIGFyZSBvbmx5IGFsbG93ZWQgZm9yIFxgYXN5bmMgaXRlcmFibGVcYGAp
OworICAgICAgfQorICAgIH0KKworICAgIHRva2Vucy50ZXJtaW5hdGlvbiA9CisgICAgICB0b2tl
bmlzZXIuY29uc3VtZSgiOyIpIHx8CisgICAgICB0b2tlbmlzZXIuZXJyb3IoYE1pc3Npbmcgc2Vt
aWNvbG9uIGFmdGVyICR7dHlwZX0gZGVjbGFyYXRpb25gKTsKKworICAgIHJldHVybiByZXQudGhp
czsKKyAgfQorCisgIGdldCB0eXBlKCkgeworICAgIHJldHVybiB0aGlzLnRva2Vucy5iYXNlLnZh
bHVlOworICB9CisgIGdldCByZWFkb25seSgpIHsKKyAgICByZXR1cm4gISF0aGlzLnRva2Vucy5y
ZWFkb25seTsKKyAgfQorICBnZXQgYXN5bmMoKSB7CisgICAgcmV0dXJuICEhdGhpcy50b2tlbnMu
YXN5bmM7CisgIH0KKworICAqdmFsaWRhdGUoZGVmcykgeworICAgIGZvciAoY29uc3QgdHlwZSBv
ZiB0aGlzLmlkbFR5cGUpIHsKKyAgICAgIHlpZWxkKiB0eXBlLnZhbGlkYXRlKGRlZnMpOworICAg
IH0KKyAgICBmb3IgKGNvbnN0IGFyZ3VtZW50IG9mIHRoaXMuYXJndW1lbnRzKSB7CisgICAgICB5
aWVsZCogYXJndW1lbnQudmFsaWRhdGUoZGVmcyk7CisgICAgfQorICB9CisKKyAgLyoqIEBwYXJh
bSB7aW1wb3J0KCIuLi93cml0ZXIuanMiKS5Xcml0ZXJ9IHcgKi8KKyAgd3JpdGUodykgeworICAg
IHJldHVybiB3LnRzLmRlZmluaXRpb24oCisgICAgICB3LnRzLndyYXAoWworICAgICAgICB0aGlz
LmV4dEF0dHJzLndyaXRlKHcpLAorICAgICAgICB3LnRva2VuKHRoaXMudG9rZW5zLnJlYWRvbmx5
KSwKKyAgICAgICAgdy50b2tlbih0aGlzLnRva2Vucy5hc3luYyksCisgICAgICAgIHcudG9rZW4o
dGhpcy50b2tlbnMuYmFzZSwgdy50cy5nZW5lcmljKSwKKyAgICAgICAgdy50b2tlbih0aGlzLnRv
a2Vucy5vcGVuKSwKKyAgICAgICAgdy50cy53cmFwKHRoaXMuaWRsVHlwZS5tYXAoKHQpID0+IHQu
d3JpdGUodykpKSwKKyAgICAgICAgdy50b2tlbih0aGlzLnRva2Vucy5jbG9zZSksCisgICAgICAg
IHcudG9rZW4odGhpcy50b2tlbnMuYXJnc09wZW4pLAorICAgICAgICB3LnRzLndyYXAodGhpcy5h
cmd1bWVudHMubWFwKChhcmcpID0+IGFyZy53cml0ZSh3KSkpLAorICAgICAgICB3LnRva2VuKHRo
aXMudG9rZW5zLmFyZ3NDbG9zZSksCisgICAgICAgIHcudG9rZW4odGhpcy50b2tlbnMudGVybWlu
YXRpb24pLAorICAgICAgXSksCisgICAgICB7IGRhdGE6IHRoaXMsIHBhcmVudDogdGhpcy5wYXJl
bnQgfQorICAgICk7CisgIH0KK30KKworCisvKioqLyB9KSwKKy8qIDIzICovCisvKioqLyAoKF9f
dW51c2VkX3dlYnBhY2tfX193ZWJwYWNrX21vZHVsZV9fLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBf
X3dlYnBhY2tfcmVxdWlyZV9fKSA9PiB7CisKK19fd2VicGFja19yZXF1aXJlX18ucihfX3dlYnBh
Y2tfZXhwb3J0c19fKTsKKy8qIGhhcm1vbnkgZXhwb3J0ICovIF9fd2VicGFja19yZXF1aXJlX18u
ZChfX3dlYnBhY2tfZXhwb3J0c19fLCB7CisvKiBoYXJtb255IGV4cG9ydCAqLyAgICJjaGVja0lu
dGVyZmFjZU1lbWJlckR1cGxpY2F0aW9uIjogKCkgPT4gKC8qIGJpbmRpbmcgKi8gY2hlY2tJbnRl
cmZhY2VNZW1iZXJEdXBsaWNhdGlvbikKKy8qIGhhcm1vbnkgZXhwb3J0ICovIH0pOworLyogaGFy
bW9ueSBpbXBvcnQgKi8gdmFyIF9lcnJvcl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9f
ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTsKKy8vIEB0cy1jaGVjaworCisKKworZnVuY3Rpb24q
IGNoZWNrSW50ZXJmYWNlTWVtYmVyRHVwbGljYXRpb24oZGVmcywgaSkgeworICBjb25zdCBvcE5h
bWVzID0gbmV3IFNldChnZXRPcGVyYXRpb25zKGkpLm1hcCgob3ApID0+IG9wLm5hbWUpKTsKKyAg
Y29uc3QgcGFydGlhbHMgPSBkZWZzLnBhcnRpYWxzLmdldChpLm5hbWUpIHx8IFtdOworICBjb25z
dCBtaXhpbnMgPSBkZWZzLm1peGluTWFwLmdldChpLm5hbWUpIHx8IFtdOworICBmb3IgKGNvbnN0
IGV4dCBvZiBbLi4ucGFydGlhbHMsIC4uLm1peGluc10pIHsKKyAgICBjb25zdCBhZGRpdGlvbnMg
PSBnZXRPcGVyYXRpb25zKGV4dCk7CisgICAgeWllbGQqIGZvckVhY2hFeHRlbnNpb24oYWRkaXRp
b25zLCBvcE5hbWVzLCBleHQsIGkpOworICAgIGZvciAoY29uc3QgYWRkaXRpb24gb2YgYWRkaXRp
b25zKSB7CisgICAgICBvcE5hbWVzLmFkZChhZGRpdGlvbi5uYW1lKTsKKyAgICB9CisgIH0KKwor
ICBmdW5jdGlvbiogZm9yRWFjaEV4dGVuc2lvbihhZGRpdGlvbnMsIGV4aXN0aW5ncywgZXh0LCBi
YXNlKSB7CisgICAgZm9yIChjb25zdCBhZGRpdGlvbiBvZiBhZGRpdGlvbnMpIHsKKyAgICAgIGNv
bnN0IHsgbmFtZSB9ID0gYWRkaXRpb247CisgICAgICBpZiAobmFtZSAmJiBleGlzdGluZ3MuaGFz
KG5hbWUpKSB7CisgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgVGhlIG9wZXJhdGlvbiAiJHtuYW1l
fSIgaGFzIGFscmVhZHkgYmVlbiBkZWZpbmVkIGZvciB0aGUgYmFzZSBpbnRlcmZhY2UgIiR7YmFz
ZS5uYW1lfSIgZWl0aGVyIGluIGl0c2VsZiBvciBpbiBhIG1peGluYDsKKyAgICAgICAgeWllbGQg
KDAsX2Vycm9yX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18udmFsaWRhdGlvbkVycm9y
KSgKKyAgICAgICAgICBhZGRpdGlvbi50b2tlbnMubmFtZSwKKyAgICAgICAgICBleHQsCisgICAg
ICAgICAgIm5vLWNyb3NzLW92ZXJsb2FkIiwKKyAgICAgICAgICBtZXNzYWdlCisgICAgICAgICk7
CisgICAgICB9CisgICAgfQorICB9CisKKyAgZnVuY3Rpb24gZ2V0T3BlcmF0aW9ucyhpKSB7Cisg
ICAgcmV0dXJuIGkubWVtYmVycy5maWx0ZXIoKHsgdHlwZSB9KSA9PiB0eXBlID09PSAib3BlcmF0
aW9uIik7CisgIH0KK30KKworCisvKioqLyB9KSwKKy8qIDI0ICovCisvKioqLyAoKF9fdW51c2Vk
X3dlYnBhY2tfX193ZWJwYWNrX21vZHVsZV9fLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBh
Y2tfcmVxdWlyZV9fKSA9PiB7CisKK19fd2VicGFja19yZXF1aXJlX18ucihfX3dlYnBhY2tfZXhw
b3J0c19fKTsKKy8qIGhhcm1vbnkgZXhwb3J0ICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dl
YnBhY2tfZXhwb3J0c19fLCB7CisvKiBoYXJtb255IGV4cG9ydCAqLyAgICJDb25zdHJ1Y3RvciI6
ICgpID0+ICgvKiBiaW5kaW5nICovIENvbnN0cnVjdG9yKQorLyogaGFybW9ueSBleHBvcnQgKi8g
fSk7CisvKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2Jhc2VfanNfX1dFQlBBQ0tfSU1QT1JURURf
TU9EVUxFXzBfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNik7CisvKiBoYXJtb255IGltcG9ydCAq
LyB2YXIgX2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXyA9IF9fd2VicGFj
a19yZXF1aXJlX18oNCk7CisKKworCitjbGFzcyBDb25zdHJ1Y3RvciBleHRlbmRzIF9iYXNlX2pz
X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18uQmFzZSB7CisgIC8qKgorICAgKiBAcGFyYW0g
e2ltcG9ydCgiLi4vdG9rZW5pc2VyIikuVG9rZW5pc2VyfSB0b2tlbmlzZXIKKyAgICovCisgIHN0
YXRpYyBwYXJzZSh0b2tlbmlzZXIpIHsKKyAgICBjb25zdCBiYXNlID0gdG9rZW5pc2VyLmNvbnN1
bWUoImNvbnN0cnVjdG9yIik7CisgICAgaWYgKCFiYXNlKSB7CisgICAgICByZXR1cm47CisgICAg
fQorICAgIC8qKiBAdHlwZSB7QmFzZVsidG9rZW5zIl19ICovCisgICAgY29uc3QgdG9rZW5zID0g
eyBiYXNlIH07CisgICAgdG9rZW5zLm9wZW4gPQorICAgICAgdG9rZW5pc2VyLmNvbnN1bWUoIigi
KSB8fAorICAgICAgdG9rZW5pc2VyLmVycm9yKCJObyBhcmd1bWVudCBsaXN0IGluIGNvbnN0cnVj
dG9yIik7CisgICAgY29uc3QgYXJncyA9ICgwLF9oZWxwZXJzX2pzX19XRUJQQUNLX0lNUE9SVEVE
X01PRFVMRV8xX18uYXJndW1lbnRfbGlzdCkodG9rZW5pc2VyKTsKKyAgICB0b2tlbnMuY2xvc2Ug
PQorICAgICAgdG9rZW5pc2VyLmNvbnN1bWUoIikiKSB8fCB0b2tlbmlzZXIuZXJyb3IoIlVudGVy
bWluYXRlZCBjb25zdHJ1Y3RvciIpOworICAgIHRva2Vucy50ZXJtaW5hdGlvbiA9CisgICAgICB0
b2tlbmlzZXIuY29uc3VtZSgiOyIpIHx8CisgICAgICB0b2tlbmlzZXIuZXJyb3IoIk5vIHNlbWlj
b2xvbiBhZnRlciBjb25zdHJ1Y3RvciIpOworICAgIGNvbnN0IHJldCA9IG5ldyBDb25zdHJ1Y3Rv
cih7IHNvdXJjZTogdG9rZW5pc2VyLnNvdXJjZSwgdG9rZW5zIH0pOworICAgICgwLF9oZWxwZXJz
X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18uYXV0b1BhcmVudGVyKShyZXQpLmFyZ3Vt
ZW50cyA9IGFyZ3M7CisgICAgcmV0dXJuIHJldDsKKyAgfQorCisgIGdldCB0eXBlKCkgeworICAg
IHJldHVybiAiY29uc3RydWN0b3IiOworICB9CisKKyAgKnZhbGlkYXRlKGRlZnMpIHsKKyAgICBp
ZiAodGhpcy5pZGxUeXBlKSB7CisgICAgICB5aWVsZCogdGhpcy5pZGxUeXBlLnZhbGlkYXRlKGRl
ZnMpOworICAgIH0KKyAgICBmb3IgKGNvbnN0IGFyZ3VtZW50IG9mIHRoaXMuYXJndW1lbnRzKSB7
CisgICAgICB5aWVsZCogYXJndW1lbnQudmFsaWRhdGUoZGVmcyk7CisgICAgfQorICB9CisKKyAg
LyoqIEBwYXJhbSB7aW1wb3J0KCIuLi93cml0ZXIuanMiKS5Xcml0ZXJ9IHcgKi8KKyAgd3JpdGUo
dykgeworICAgIGNvbnN0IHsgcGFyZW50IH0gPSB0aGlzOworICAgIHJldHVybiB3LnRzLmRlZmlu
aXRpb24oCisgICAgICB3LnRzLndyYXAoWworICAgICAgICB0aGlzLmV4dEF0dHJzLndyaXRlKHcp
LAorICAgICAgICB3LnRva2VuKHRoaXMudG9rZW5zLmJhc2UsIHcudHMubmFtZWxlc3MsIHsgZGF0
YTogdGhpcywgcGFyZW50IH0pLAorICAgICAgICB3LnRva2VuKHRoaXMudG9rZW5zLm9wZW4pLAor
ICAgICAgICB3LnRzLndyYXAodGhpcy5hcmd1bWVudHMubWFwKChhcmcpID0+IGFyZy53cml0ZSh3
KSkpLAorICAgICAgICB3LnRva2VuKHRoaXMudG9rZW5zLmNsb3NlKSwKKyAgICAgICAgdy50b2tl
bih0aGlzLnRva2Vucy50ZXJtaW5hdGlvbiksCisgICAgICBdKSwKKyAgICAgIHsgZGF0YTogdGhp
cywgcGFyZW50IH0KKyAgICApOworICB9Cit9CisKKworLyoqKi8gfSksCisvKiAyNSAqLworLyoq
Ki8gKChfX3VudXNlZF93ZWJwYWNrX19fd2VicGFja19tb2R1bGVfXywgX193ZWJwYWNrX2V4cG9y
dHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykgPT4geworCitfX3dlYnBhY2tfcmVxdWlyZV9fLnIo
X193ZWJwYWNrX2V4cG9ydHNfXyk7CisvKiBoYXJtb255IGV4cG9ydCAqLyBfX3dlYnBhY2tfcmVx
dWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgeworLyogaGFybW9ueSBleHBvcnQgKi8gICAi
TWl4aW4iOiAoKSA9PiAoLyogYmluZGluZyAqLyBNaXhpbikKKy8qIGhhcm1vbnkgZXhwb3J0ICov
IH0pOworLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9jb250YWluZXJfanNfX1dFQlBBQ0tfSU1Q
T1JURURfTU9EVUxFXzBfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMjApOworLyogaGFybW9ueSBp
bXBvcnQgKi8gdmFyIF9jb25zdGFudF9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fID0g
X193ZWJwYWNrX3JlcXVpcmVfXygyMSk7CisvKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2F0dHJp
YnV0ZV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fID0gX193ZWJwYWNrX3JlcXVpcmVf
XygxNCk7CisvKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX29wZXJhdGlvbl9qc19fV0VCUEFDS19J
TVBPUlRFRF9NT0RVTEVfM19fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMyk7CisvKiBoYXJtb255
IGltcG9ydCAqLyB2YXIgX2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfXyA9
IF9fd2VicGFja19yZXF1aXJlX18oNCk7CisKKworCisKKworCitjbGFzcyBNaXhpbiBleHRlbmRz
IF9jb250YWluZXJfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXy5Db250YWluZXIgewor
ICAvKioKKyAgICogQHR5cGVkZWYge2ltcG9ydCgiLi4vdG9rZW5pc2VyLmpzIikuVG9rZW59IFRv
a2VuCisgICAqCisgICAqIEBwYXJhbSB7aW1wb3J0KCIuLi90b2tlbmlzZXIuanMiKS5Ub2tlbmlz
ZXJ9IHRva2VuaXNlcgorICAgKiBAcGFyYW0ge1Rva2VufSBiYXNlCisgICAqIEBwYXJhbSB7b2Jq
ZWN0fSBbb3B0aW9uc10KKyAgICogQHBhcmFtIHtUb2tlbn0gW29wdGlvbnMucGFydGlhbF0KKyAg
ICovCisgIHN0YXRpYyBwYXJzZSh0b2tlbmlzZXIsIGJhc2UsIHsgcGFydGlhbCB9ID0ge30pIHsK
KyAgICBjb25zdCB0b2tlbnMgPSB7IHBhcnRpYWwsIGJhc2UgfTsKKyAgICB0b2tlbnMubWl4aW4g
PSB0b2tlbmlzZXIuY29uc3VtZSgibWl4aW4iKTsKKyAgICBpZiAoIXRva2Vucy5taXhpbikgewor
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICByZXR1cm4gX2NvbnRhaW5lcl9qc19fV0VCUEFDS19J
TVBPUlRFRF9NT0RVTEVfMF9fLkNvbnRhaW5lci5wYXJzZSgKKyAgICAgIHRva2VuaXNlciwKKyAg
ICAgIG5ldyBNaXhpbih7IHNvdXJjZTogdG9rZW5pc2VyLnNvdXJjZSwgdG9rZW5zIH0pLAorICAg
ICAgeworICAgICAgICB0eXBlOiAiaW50ZXJmYWNlIG1peGluIiwKKyAgICAgICAgYWxsb3dlZE1l
bWJlcnM6IFsKKyAgICAgICAgICBbX2NvbnN0YW50X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVM
RV8xX18uQ29uc3RhbnQucGFyc2VdLAorICAgICAgICAgIFtfaGVscGVyc19qc19fV0VCUEFDS19J
TVBPUlRFRF9NT0RVTEVfNF9fLnN0cmluZ2lmaWVyXSwKKyAgICAgICAgICBbX2F0dHJpYnV0ZV9q
c19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fLkF0dHJpYnV0ZS5wYXJzZSwgeyBub0luaGVy
aXQ6IHRydWUgfV0sCisgICAgICAgICAgW19vcGVyYXRpb25fanNfX1dFQlBBQ0tfSU1QT1JURURf
TU9EVUxFXzNfXy5PcGVyYXRpb24ucGFyc2UsIHsgcmVndWxhcjogdHJ1ZSB9XSwKKyAgICAgICAg
XSwKKyAgICAgIH0KKyAgICApOworICB9CisKKyAgZ2V0IHR5cGUoKSB7CisgICAgcmV0dXJuICJp
bnRlcmZhY2UgbWl4aW4iOworICB9Cit9CisKKworLyoqKi8gfSksCisvKiAyNiAqLworLyoqKi8g
KChfX3VudXNlZF93ZWJwYWNrX19fd2VicGFja19tb2R1bGVfXywgX193ZWJwYWNrX2V4cG9ydHNf
XywgX193ZWJwYWNrX3JlcXVpcmVfXykgPT4geworCitfX3dlYnBhY2tfcmVxdWlyZV9fLnIoX193
ZWJwYWNrX2V4cG9ydHNfXyk7CisvKiBoYXJtb255IGV4cG9ydCAqLyBfX3dlYnBhY2tfcmVxdWly
ZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgeworLyogaGFybW9ueSBleHBvcnQgKi8gICAiRGlj
dGlvbmFyeSI6ICgpID0+ICgvKiBiaW5kaW5nICovIERpY3Rpb25hcnkpCisvKiBoYXJtb255IGV4
cG9ydCAqLyB9KTsKKy8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfY29udGFpbmVyX2pzX19XRUJQ
QUNLX0lNUE9SVEVEX01PRFVMRV8wX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwKTsKKy8qIGhh
cm1vbnkgaW1wb3J0ICovIHZhciBfZmllbGRfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFf
XyA9IF9fd2VicGFja19yZXF1aXJlX18oMjcpOworLy8gQHRzLWNoZWNrCisKKworCisKK2NsYXNz
IERpY3Rpb25hcnkgZXh0ZW5kcyBfY29udGFpbmVyX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVM
RV8wX18uQ29udGFpbmVyIHsKKyAgLyoqCisgICAqIEBwYXJhbSB7aW1wb3J0KCIuLi90b2tlbmlz
ZXIiKS5Ub2tlbmlzZXJ9IHRva2VuaXNlcgorICAgKiBAcGFyYW0ge29iamVjdH0gW29wdGlvbnNd
CisgICAqIEBwYXJhbSB7aW1wb3J0KCIuLi90b2tlbmlzZXIuanMiKS5Ub2tlbn0gW29wdGlvbnMu
cGFydGlhbF0KKyAgICovCisgIHN0YXRpYyBwYXJzZSh0b2tlbmlzZXIsIHsgcGFydGlhbCB9ID0g
e30pIHsKKyAgICBjb25zdCB0b2tlbnMgPSB7IHBhcnRpYWwgfTsKKyAgICB0b2tlbnMuYmFzZSA9
IHRva2VuaXNlci5jb25zdW1lKCJkaWN0aW9uYXJ5Iik7CisgICAgaWYgKCF0b2tlbnMuYmFzZSkg
eworICAgICAgcmV0dXJuOworICAgIH0KKyAgICByZXR1cm4gX2NvbnRhaW5lcl9qc19fV0VCUEFD
S19JTVBPUlRFRF9NT0RVTEVfMF9fLkNvbnRhaW5lci5wYXJzZSgKKyAgICAgIHRva2VuaXNlciwK
KyAgICAgIG5ldyBEaWN0aW9uYXJ5KHsgc291cmNlOiB0b2tlbmlzZXIuc291cmNlLCB0b2tlbnMg
fSksCisgICAgICB7CisgICAgICAgIHR5cGU6ICJkaWN0aW9uYXJ5IiwKKyAgICAgICAgaW5oZXJp
dGFibGU6ICFwYXJ0aWFsLAorICAgICAgICBhbGxvd2VkTWVtYmVyczogW1tfZmllbGRfanNfX1dF
QlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXy5GaWVsZC5wYXJzZV1dLAorICAgICAgfQorICAgICk7
CisgIH0KKworICBnZXQgdHlwZSgpIHsKKyAgICByZXR1cm4gImRpY3Rpb25hcnkiOworICB9Cit9
CisKKworLyoqKi8gfSksCisvKiAyNyAqLworLyoqKi8gKChfX3VudXNlZF93ZWJwYWNrX19fd2Vi
cGFja19tb2R1bGVfXywgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykg
PT4geworCitfX3dlYnBhY2tfcmVxdWlyZV9fLnIoX193ZWJwYWNrX2V4cG9ydHNfXyk7CisvKiBo
YXJtb255IGV4cG9ydCAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNf
XywgeworLyogaGFybW9ueSBleHBvcnQgKi8gICAiRmllbGQiOiAoKSA9PiAoLyogYmluZGluZyAq
LyBGaWVsZCkKKy8qIGhhcm1vbnkgZXhwb3J0ICovIH0pOworLyogaGFybW9ueSBpbXBvcnQgKi8g
dmFyIF9iYXNlX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18gPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDYpOworLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9oZWxwZXJzX2pzX19XRUJQQUNL
X0lNUE9SVEVEX01PRFVMRV8xX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpOworLyogaGFybW9u
eSBpbXBvcnQgKi8gdmFyIF9leHRlbmRlZF9hdHRyaWJ1dGVzX2pzX19XRUJQQUNLX0lNUE9SVEVE
X01PRFVMRV8yX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgpOworLyogaGFybW9ueSBpbXBvcnQg
Ki8gdmFyIF9kZWZhdWx0X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX18gPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDEyKTsKKworCisKKworCitjbGFzcyBGaWVsZCBleHRlbmRzIF9iYXNlX2pz
X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18uQmFzZSB7CisgIC8qKgorICAgKiBAcGFyYW0g
e2ltcG9ydCgiLi4vdG9rZW5pc2VyIikuVG9rZW5pc2VyfSB0b2tlbmlzZXIKKyAgICovCisgIHN0
YXRpYyBwYXJzZSh0b2tlbmlzZXIpIHsKKyAgICAvKiogQHR5cGUge0Jhc2VbInRva2VucyJdfSAq
LworICAgIGNvbnN0IHRva2VucyA9IHt9OworICAgIGNvbnN0IHJldCA9ICgwLF9oZWxwZXJzX2pz
X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18uYXV0b1BhcmVudGVyKShuZXcgRmllbGQoeyBz
b3VyY2U6IHRva2VuaXNlci5zb3VyY2UsIHRva2VucyB9KSk7CisgICAgcmV0LmV4dEF0dHJzID0g
X2V4dGVuZGVkX2F0dHJpYnV0ZXNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXy5FeHRl
bmRlZEF0dHJpYnV0ZXMucGFyc2UodG9rZW5pc2VyKTsKKyAgICB0b2tlbnMucmVxdWlyZWQgPSB0
b2tlbmlzZXIuY29uc3VtZSgicmVxdWlyZWQiKTsKKyAgICByZXQuaWRsVHlwZSA9CisgICAgICAo
MCxfaGVscGVyc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fLnR5cGVfd2l0aF9leHRl
bmRlZF9hdHRyaWJ1dGVzKSh0b2tlbmlzZXIsICJkaWN0aW9uYXJ5LXR5cGUiKSB8fAorICAgICAg
dG9rZW5pc2VyLmVycm9yKCJEaWN0aW9uYXJ5IG1lbWJlciBsYWNrcyBhIHR5cGUiKTsKKyAgICB0
b2tlbnMubmFtZSA9CisgICAgICB0b2tlbmlzZXIuY29uc3VtZVR5cGUoImlkZW50aWZpZXIiKSB8
fAorICAgICAgdG9rZW5pc2VyLmVycm9yKCJEaWN0aW9uYXJ5IG1lbWJlciBsYWNrcyBhIG5hbWUi
KTsKKyAgICByZXQuZGVmYXVsdCA9IF9kZWZhdWx0X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVM
RV8zX18uRGVmYXVsdC5wYXJzZSh0b2tlbmlzZXIpOworICAgIGlmICh0b2tlbnMucmVxdWlyZWQg
JiYgcmV0LmRlZmF1bHQpCisgICAgICB0b2tlbmlzZXIuZXJyb3IoIlJlcXVpcmVkIG1lbWJlciBt
dXN0IG5vdCBoYXZlIGEgZGVmYXVsdCIpOworICAgIHRva2Vucy50ZXJtaW5hdGlvbiA9CisgICAg
ICB0b2tlbmlzZXIuY29uc3VtZSgiOyIpIHx8CisgICAgICB0b2tlbmlzZXIuZXJyb3IoIlVudGVy
bWluYXRlZCBkaWN0aW9uYXJ5IG1lbWJlciwgZXhwZWN0ZWQgYDtgIik7CisgICAgcmV0dXJuIHJl
dC50aGlzOworICB9CisKKyAgZ2V0IHR5cGUoKSB7CisgICAgcmV0dXJuICJmaWVsZCI7CisgIH0K
KyAgZ2V0IG5hbWUoKSB7CisgICAgcmV0dXJuICgwLF9oZWxwZXJzX2pzX19XRUJQQUNLX0lNUE9S
VEVEX01PRFVMRV8xX18udW5lc2NhcGUpKHRoaXMudG9rZW5zLm5hbWUudmFsdWUpOworICB9Cisg
IGdldCByZXF1aXJlZCgpIHsKKyAgICByZXR1cm4gISF0aGlzLnRva2Vucy5yZXF1aXJlZDsKKyAg
fQorCisgICp2YWxpZGF0ZShkZWZzKSB7CisgICAgeWllbGQqIHRoaXMuaWRsVHlwZS52YWxpZGF0
ZShkZWZzKTsKKyAgfQorCisgIC8qKiBAcGFyYW0ge2ltcG9ydCgiLi4vd3JpdGVyLmpzIikuV3Jp
dGVyfSB3ICovCisgIHdyaXRlKHcpIHsKKyAgICBjb25zdCB7IHBhcmVudCB9ID0gdGhpczsKKyAg
ICByZXR1cm4gdy50cy5kZWZpbml0aW9uKAorICAgICAgdy50cy53cmFwKFsKKyAgICAgICAgdGhp
cy5leHRBdHRycy53cml0ZSh3KSwKKyAgICAgICAgdy50b2tlbih0aGlzLnRva2Vucy5yZXF1aXJl
ZCksCisgICAgICAgIHcudHMudHlwZSh0aGlzLmlkbFR5cGUud3JpdGUodykpLAorICAgICAgICB3
Lm5hbWVfdG9rZW4odGhpcy50b2tlbnMubmFtZSwgeyBkYXRhOiB0aGlzLCBwYXJlbnQgfSksCisg
ICAgICAgIHRoaXMuZGVmYXVsdCA/IHRoaXMuZGVmYXVsdC53cml0ZSh3KSA6ICIiLAorICAgICAg
ICB3LnRva2VuKHRoaXMudG9rZW5zLnRlcm1pbmF0aW9uKSwKKyAgICAgIF0pLAorICAgICAgeyBk
YXRhOiB0aGlzLCBwYXJlbnQgfQorICAgICk7CisgIH0KK30KKworCisvKioqLyB9KSwKKy8qIDI4
ICovCisvKioqLyAoKF9fdW51c2VkX3dlYnBhY2tfX193ZWJwYWNrX21vZHVsZV9fLCBfX3dlYnBh
Y2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSA9PiB7CisKK19fd2VicGFja19yZXF1
aXJlX18ucihfX3dlYnBhY2tfZXhwb3J0c19fKTsKKy8qIGhhcm1vbnkgZXhwb3J0ICovIF9fd2Vi
cGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCB7CisvKiBoYXJtb255IGV4cG9y
dCAqLyAgICJOYW1lc3BhY2UiOiAoKSA9PiAoLyogYmluZGluZyAqLyBOYW1lc3BhY2UpCisvKiBo
YXJtb255IGV4cG9ydCAqLyB9KTsKKy8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfY29udGFpbmVy
X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIw
KTsKKy8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfYXR0cmlidXRlX2pzX19XRUJQQUNLX0lNUE9S
VEVEX01PRFVMRV8xX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE0KTsKKy8qIGhhcm1vbnkgaW1w
b3J0ICovIHZhciBfb3BlcmF0aW9uX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18gPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDEzKTsKKy8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfZXJyb3Jf
anNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7
CisvKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JURURf
TU9EVUxFXzRfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7CisvKiBoYXJtb255IGltcG9ydCAq
LyB2YXIgX2NvbnN0YW50X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X18gPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDIxKTsKKworCisKKworCisKKworY2xhc3MgTmFtZXNwYWNlIGV4dGVuZHMg
X2NvbnRhaW5lcl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fLkNvbnRhaW5lciB7Cisg
IC8qKgorICAgKiBAcGFyYW0ge2ltcG9ydCgiLi4vdG9rZW5pc2VyIikuVG9rZW5pc2VyfSB0b2tl
bmlzZXIKKyAgICogQHBhcmFtIHtvYmplY3R9IFtvcHRpb25zXQorICAgKiBAcGFyYW0ge2ltcG9y
dCgiLi4vdG9rZW5pc2VyLmpzIikuVG9rZW59IFtvcHRpb25zLnBhcnRpYWxdCisgICAqLworICBz
dGF0aWMgcGFyc2UodG9rZW5pc2VyLCB7IHBhcnRpYWwgfSA9IHt9KSB7CisgICAgY29uc3QgdG9r
ZW5zID0geyBwYXJ0aWFsIH07CisgICAgdG9rZW5zLmJhc2UgPSB0b2tlbmlzZXIuY29uc3VtZSgi
bmFtZXNwYWNlIik7CisgICAgaWYgKCF0b2tlbnMuYmFzZSkgeworICAgICAgcmV0dXJuOworICAg
IH0KKyAgICByZXR1cm4gX2NvbnRhaW5lcl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9f
LkNvbnRhaW5lci5wYXJzZSgKKyAgICAgIHRva2VuaXNlciwKKyAgICAgIG5ldyBOYW1lc3BhY2Uo
eyBzb3VyY2U6IHRva2VuaXNlci5zb3VyY2UsIHRva2VucyB9KSwKKyAgICAgIHsKKyAgICAgICAg
dHlwZTogIm5hbWVzcGFjZSIsCisgICAgICAgIGFsbG93ZWRNZW1iZXJzOiBbCisgICAgICAgICAg
W19hdHRyaWJ1dGVfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXy5BdHRyaWJ1dGUucGFy
c2UsIHsgbm9Jbmhlcml0OiB0cnVlLCByZWFkb25seTogdHJ1ZSB9XSwKKyAgICAgICAgICBbX2Nv
bnN0YW50X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X18uQ29uc3RhbnQucGFyc2VdLAor
ICAgICAgICAgIFtfb3BlcmF0aW9uX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18uT3Bl
cmF0aW9uLnBhcnNlLCB7IHJlZ3VsYXI6IHRydWUgfV0sCisgICAgICAgIF0sCisgICAgICB9Cisg
ICAgKTsKKyAgfQorCisgIGdldCB0eXBlKCkgeworICAgIHJldHVybiAibmFtZXNwYWNlIjsKKyAg
fQorCisgICp2YWxpZGF0ZShkZWZzKSB7CisgICAgaWYgKAorICAgICAgIXRoaXMucGFydGlhbCAm
JgorICAgICAgdGhpcy5leHRBdHRycy5ldmVyeSgoZXh0QXR0cikgPT4gZXh0QXR0ci5uYW1lICE9
PSAiRXhwb3NlZCIpCisgICAgKSB7CisgICAgICBjb25zdCBtZXNzYWdlID0gYE5hbWVzcGFjZXMg
bXVzdCBoYXZlIFtFeHBvc2VkXSBleHRlbmRlZCBhdHRyaWJ1dGUuIFwKK1RvIGZpeCwgYWRkLCBm
b3IgZXhhbXBsZSwgW0V4cG9zZWQ9V2luZG93XS4gUGxlYXNlIGFsc28gY29uc2lkZXIgY2FyZWZ1
bGx5IFwKK2lmIHlvdXIgbmFtZXNwYWNlIHNob3VsZCBhbHNvIGJlIGV4cG9zZWQgaW4gYSBXb3Jr
ZXIgc2NvcGUuIFJlZmVyIHRvIHRoZSBcCitbV2ViSURMIHNwZWMgc2VjdGlvbiBvbiBFeHBvc2Vk
XShodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNFeHBvc2VkKSBcCitmb3IgbW9yZSBp
bmZvcm1hdGlvbi5gOworICAgICAgeWllbGQgKDAsX2Vycm9yX2pzX19XRUJQQUNLX0lNUE9SVEVE
X01PRFVMRV8zX18udmFsaWRhdGlvbkVycm9yKSgKKyAgICAgICAgdGhpcy50b2tlbnMubmFtZSwK
KyAgICAgICAgdGhpcywKKyAgICAgICAgInJlcXVpcmUtZXhwb3NlZCIsCisgICAgICAgIG1lc3Nh
Z2UsCisgICAgICAgIHsKKyAgICAgICAgICBhdXRvZml4OiAoMCxfaGVscGVyc19qc19fV0VCUEFD
S19JTVBPUlRFRF9NT0RVTEVfNF9fLmF1dG9maXhBZGRFeHBvc2VkV2luZG93KSh0aGlzKSwKKyAg
ICAgICAgfQorICAgICAgKTsKKyAgICB9CisgICAgeWllbGQqIHN1cGVyLnZhbGlkYXRlKGRlZnMp
OworICB9Cit9CisKKworLyoqKi8gfSksCisvKiAyOSAqLworLyoqKi8gKChfX3VudXNlZF93ZWJw
YWNrX19fd2VicGFja19tb2R1bGVfXywgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3Jl
cXVpcmVfXykgPT4geworCitfX3dlYnBhY2tfcmVxdWlyZV9fLnIoX193ZWJwYWNrX2V4cG9ydHNf
Xyk7CisvKiBoYXJtb255IGV4cG9ydCAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNr
X2V4cG9ydHNfXywgeworLyogaGFybW9ueSBleHBvcnQgKi8gICAiQ2FsbGJhY2tJbnRlcmZhY2Ui
OiAoKSA9PiAoLyogYmluZGluZyAqLyBDYWxsYmFja0ludGVyZmFjZSkKKy8qIGhhcm1vbnkgZXhw
b3J0ICovIH0pOworLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9jb250YWluZXJfanNfX1dFQlBB
Q0tfSU1QT1JURURfTU9EVUxFXzBfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMjApOworLyogaGFy
bW9ueSBpbXBvcnQgKi8gdmFyIF9vcGVyYXRpb25fanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxF
XzFfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTMpOworLyogaGFybW9ueSBpbXBvcnQgKi8gdmFy
IF9jb25zdGFudF9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fID0gX193ZWJwYWNrX3Jl
cXVpcmVfXygyMSk7CisvLyBAdHMtY2hlY2sKKworCisKKworCitjbGFzcyBDYWxsYmFja0ludGVy
ZmFjZSBleHRlbmRzIF9jb250YWluZXJfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXy5D
b250YWluZXIgeworICAvKioKKyAgICogQHBhcmFtIHtpbXBvcnQoIi4uL3Rva2VuaXNlciIpLlRv
a2VuaXNlcn0gdG9rZW5pc2VyCisgICAqLworICBzdGF0aWMgcGFyc2UodG9rZW5pc2VyLCBjYWxs
YmFjaywgeyBwYXJ0aWFsID0gbnVsbCB9ID0ge30pIHsKKyAgICBjb25zdCB0b2tlbnMgPSB7IGNh
bGxiYWNrIH07CisgICAgdG9rZW5zLmJhc2UgPSB0b2tlbmlzZXIuY29uc3VtZSgiaW50ZXJmYWNl
Iik7CisgICAgaWYgKCF0b2tlbnMuYmFzZSkgeworICAgICAgcmV0dXJuOworICAgIH0KKyAgICBy
ZXR1cm4gX2NvbnRhaW5lcl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fLkNvbnRhaW5l
ci5wYXJzZSgKKyAgICAgIHRva2VuaXNlciwKKyAgICAgIG5ldyBDYWxsYmFja0ludGVyZmFjZSh7
IHNvdXJjZTogdG9rZW5pc2VyLnNvdXJjZSwgdG9rZW5zIH0pLAorICAgICAgeworICAgICAgICB0
eXBlOiAiY2FsbGJhY2sgaW50ZXJmYWNlIiwKKyAgICAgICAgaW5oZXJpdGFibGU6ICFwYXJ0aWFs
LAorICAgICAgICBhbGxvd2VkTWVtYmVyczogWworICAgICAgICAgIFtfY29uc3RhbnRfanNfX1dF
QlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXy5Db25zdGFudC5wYXJzZV0sCisgICAgICAgICAgW19v
cGVyYXRpb25fanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXy5PcGVyYXRpb24ucGFyc2Us
IHsgcmVndWxhcjogdHJ1ZSB9XSwKKyAgICAgICAgXSwKKyAgICAgIH0KKyAgICApOworICB9CisK
KyAgZ2V0IHR5cGUoKSB7CisgICAgcmV0dXJuICJjYWxsYmFjayBpbnRlcmZhY2UiOworICB9Cit9
CisKKworLyoqKi8gfSksCisvKiAzMCAqLworLyoqKi8gKChfX3VudXNlZF93ZWJwYWNrX19fd2Vi
cGFja19tb2R1bGVfXywgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykg
PT4geworCitfX3dlYnBhY2tfcmVxdWlyZV9fLnIoX193ZWJwYWNrX2V4cG9ydHNfXyk7CisvKiBo
YXJtb255IGV4cG9ydCAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNf
XywgeworLyogaGFybW9ueSBleHBvcnQgKi8gICAiV3JpdGVyIjogKCkgPT4gKC8qIGJpbmRpbmcg
Ki8gV3JpdGVyKSwKKy8qIGhhcm1vbnkgZXhwb3J0ICovICAgIndyaXRlIjogKCkgPT4gKC8qIGJp
bmRpbmcgKi8gd3JpdGUpCisvKiBoYXJtb255IGV4cG9ydCAqLyB9KTsKK2Z1bmN0aW9uIG5vb3Ao
YXJnKSB7CisgIHJldHVybiBhcmc7Cit9CisKK2NvbnN0IHRlbXBsYXRlcyA9IHsKKyAgd3JhcDog
KGl0ZW1zKSA9PiBpdGVtcy5qb2luKCIiKSwKKyAgdHJpdmlhOiBub29wLAorICBuYW1lOiBub29w
LAorICByZWZlcmVuY2U6IG5vb3AsCisgIHR5cGU6IG5vb3AsCisgIGdlbmVyaWM6IG5vb3AsCisg
IG5hbWVsZXNzOiBub29wLAorICBpbmhlcml0YW5jZTogbm9vcCwKKyAgZGVmaW5pdGlvbjogbm9v
cCwKKyAgZXh0ZW5kZWRBdHRyaWJ1dGU6IG5vb3AsCisgIGV4dGVuZGVkQXR0cmlidXRlUmVmZXJl
bmNlOiBub29wLAorfTsKKworY2xhc3MgV3JpdGVyIHsKKyAgY29uc3RydWN0b3IodHMpIHsKKyAg
ICB0aGlzLnRzID0gT2JqZWN0LmFzc2lnbih7fSwgdGVtcGxhdGVzLCB0cyk7CisgIH0KKworICBy
ZWZlcmVuY2UocmF3LCB7IHVuZXNjYXBlZCwgY29udGV4dCB9KSB7CisgICAgaWYgKCF1bmVzY2Fw
ZWQpIHsKKyAgICAgIHVuZXNjYXBlZCA9IHJhdy5zdGFydHNXaXRoKCJfIikgPyByYXcuc2xpY2Uo
MSkgOiByYXc7CisgICAgfQorICAgIHJldHVybiB0aGlzLnRzLnJlZmVyZW5jZShyYXcsIHVuZXNj
YXBlZCwgY29udGV4dCk7CisgIH0KKworICB0b2tlbih0LCB3cmFwcGVyID0gbm9vcCwgLi4uYXJn
cykgeworICAgIGlmICghdCkgeworICAgICAgcmV0dXJuICIiOworICAgIH0KKyAgICBjb25zdCB2
YWx1ZSA9IHdyYXBwZXIodC52YWx1ZSwgLi4uYXJncyk7CisgICAgcmV0dXJuIHRoaXMudHMud3Jh
cChbdGhpcy50cy50cml2aWEodC50cml2aWEpLCB2YWx1ZV0pOworICB9CisKKyAgcmVmZXJlbmNl
X3Rva2VuKHQsIGNvbnRleHQpIHsKKyAgICByZXR1cm4gdGhpcy50b2tlbih0LCB0aGlzLnJlZmVy
ZW5jZS5iaW5kKHRoaXMpLCB7IGNvbnRleHQgfSk7CisgIH0KKworICBuYW1lX3Rva2VuKHQsIGFy
ZykgeworICAgIHJldHVybiB0aGlzLnRva2VuKHQsIHRoaXMudHMubmFtZSwgYXJnKTsKKyAgfQor
CisgIGlkZW50aWZpZXIoaWQsIGNvbnRleHQpIHsKKyAgICByZXR1cm4gdGhpcy50cy53cmFwKFsK
KyAgICAgIHRoaXMucmVmZXJlbmNlX3Rva2VuKGlkLnRva2Vucy52YWx1ZSwgY29udGV4dCksCisg
ICAgICB0aGlzLnRva2VuKGlkLnRva2Vucy5zZXBhcmF0b3IpLAorICAgIF0pOworICB9Cit9CisK
K2Z1bmN0aW9uIHdyaXRlKGFzdCwgeyB0ZW1wbGF0ZXM6IHRzID0gdGVtcGxhdGVzIH0gPSB7fSkg
eworICB0cyA9IE9iamVjdC5hc3NpZ24oe30sIHRlbXBsYXRlcywgdHMpOworCisgIGNvbnN0IHcg
PSBuZXcgV3JpdGVyKHRzKTsKKworICBmdW5jdGlvbiBkaXNwYXRjaChpdCkgeworICAgIGlmIChp
dC50eXBlID09PSAiZW9mIikgeworICAgICAgcmV0dXJuIHRzLnRyaXZpYShpdC50cml2aWEpOwor
ICAgIH0KKyAgICByZXR1cm4gaXQud3JpdGUodyk7CisgIH0KKyAgcmV0dXJuIHRzLndyYXAoYXN0
Lm1hcChkaXNwYXRjaCkpOworfQorCisKKy8qKiovIH0pLAorLyogMzEgKi8KKy8qKiovICgoX191
bnVzZWRfd2VicGFja19fX3dlYnBhY2tfbW9kdWxlX18sIF9fd2VicGFja19leHBvcnRzX18sIF9f
d2VicGFja19yZXF1aXJlX18pID0+IHsKKworX193ZWJwYWNrX3JlcXVpcmVfXy5yKF9fd2VicGFj
a19leHBvcnRzX18pOworLyogaGFybW9ueSBleHBvcnQgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5k
KF9fd2VicGFja19leHBvcnRzX18sIHsKKy8qIGhhcm1vbnkgZXhwb3J0ICovICAgInZhbGlkYXRl
IjogKCkgPT4gKC8qIGJpbmRpbmcgKi8gdmFsaWRhdGUpCisvKiBoYXJtb255IGV4cG9ydCAqLyB9
KTsKKy8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfZXJyb3JfanNfX1dFQlBBQ0tfSU1QT1JURURf
TU9EVUxFXzBfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7CisKKworZnVuY3Rpb24gZ2V0TWl4
aW5NYXAoYWxsLCB1bmlxdWUpIHsKKyAgY29uc3QgbWFwID0gbmV3IE1hcCgpOworICBjb25zdCBp
bmNsdWRlcyA9IGFsbC5maWx0ZXIoKGRlZikgPT4gZGVmLnR5cGUgPT09ICJpbmNsdWRlcyIpOwor
ICBmb3IgKGNvbnN0IGluY2x1ZGUgb2YgaW5jbHVkZXMpIHsKKyAgICBjb25zdCBtaXhpbiA9IHVu
aXF1ZS5nZXQoaW5jbHVkZS5pbmNsdWRlcyk7CisgICAgaWYgKCFtaXhpbikgeworICAgICAgY29u
dGludWU7CisgICAgfQorICAgIGNvbnN0IGFycmF5ID0gbWFwLmdldChpbmNsdWRlLnRhcmdldCk7
CisgICAgaWYgKGFycmF5KSB7CisgICAgICBhcnJheS5wdXNoKG1peGluKTsKKyAgICB9IGVsc2Ug
eworICAgICAgbWFwLnNldChpbmNsdWRlLnRhcmdldCwgW21peGluXSk7CisgICAgfQorICB9Cisg
IHJldHVybiBtYXA7Cit9CisKKy8qKgorICogQHR5cGVkZWYge1JldHVyblR5cGU8dHlwZW9mIGdy
b3VwRGVmaW5pdGlvbnM+fSBEZWZpbml0aW9ucworICovCitmdW5jdGlvbiBncm91cERlZmluaXRp
b25zKGFsbCkgeworICBjb25zdCB1bmlxdWUgPSBuZXcgTWFwKCk7CisgIGNvbnN0IGR1cGxpY2F0
ZXMgPSBuZXcgU2V0KCk7CisgIGNvbnN0IHBhcnRpYWxzID0gbmV3IE1hcCgpOworICBmb3IgKGNv
bnN0IGRlZiBvZiBhbGwpIHsKKyAgICBpZiAoZGVmLnBhcnRpYWwpIHsKKyAgICAgIGNvbnN0IGFy
cmF5ID0gcGFydGlhbHMuZ2V0KGRlZi5uYW1lKTsKKyAgICAgIGlmIChhcnJheSkgeworICAgICAg
ICBhcnJheS5wdXNoKGRlZik7CisgICAgICB9IGVsc2UgeworICAgICAgICBwYXJ0aWFscy5zZXQo
ZGVmLm5hbWUsIFtkZWZdKTsKKyAgICAgIH0KKyAgICAgIGNvbnRpbnVlOworICAgIH0KKyAgICBp
ZiAoIWRlZi5uYW1lKSB7CisgICAgICBjb250aW51ZTsKKyAgICB9CisgICAgaWYgKCF1bmlxdWUu
aGFzKGRlZi5uYW1lKSkgeworICAgICAgdW5pcXVlLnNldChkZWYubmFtZSwgZGVmKTsKKyAgICB9
IGVsc2UgeworICAgICAgZHVwbGljYXRlcy5hZGQoZGVmKTsKKyAgICB9CisgIH0KKyAgcmV0dXJu
IHsKKyAgICBhbGwsCisgICAgdW5pcXVlLAorICAgIHBhcnRpYWxzLAorICAgIGR1cGxpY2F0ZXMs
CisgICAgbWl4aW5NYXA6IGdldE1peGluTWFwKGFsbCwgdW5pcXVlKSwKKyAgICBjYWNoZTogewor
ICAgICAgdHlwZWRlZkluY2x1ZGVzRGljdGlvbmFyeTogbmV3IFdlYWtNYXAoKSwKKyAgICAgIGRp
Y3Rpb25hcnlJbmNsdWRlc1JlcXVpcmVkRmllbGQ6IG5ldyBXZWFrTWFwKCksCisgICAgfSwKKyAg
fTsKK30KKworZnVuY3Rpb24qIGNoZWNrRHVwbGljYXRlZE5hbWVzKHsgdW5pcXVlLCBkdXBsaWNh
dGVzIH0pIHsKKyAgZm9yIChjb25zdCBkdXAgb2YgZHVwbGljYXRlcykgeworICAgIGNvbnN0IHsg
bmFtZSB9ID0gZHVwOworICAgIGNvbnN0IG1lc3NhZ2UgPSBgVGhlIG5hbWUgIiR7bmFtZX0iIG9m
IHR5cGUgIiR7CisgICAgICB1bmlxdWUuZ2V0KG5hbWUpLnR5cGUKKyAgICB9IiB3YXMgYWxyZWFk
eSBzZWVuYDsKKyAgICB5aWVsZCAoMCxfZXJyb3JfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxF
XzBfXy52YWxpZGF0aW9uRXJyb3IpKGR1cC50b2tlbnMubmFtZSwgZHVwLCAibm8tZHVwbGljYXRl
IiwgbWVzc2FnZSk7CisgIH0KK30KKworZnVuY3Rpb24qIHZhbGlkYXRlSXRlcmFibGUoYXN0KSB7
CisgIGNvbnN0IGRlZnMgPSBncm91cERlZmluaXRpb25zKGFzdCk7CisgIGZvciAoY29uc3QgZGVm
IG9mIGRlZnMuYWxsKSB7CisgICAgaWYgKGRlZi52YWxpZGF0ZSkgeworICAgICAgeWllbGQqIGRl
Zi52YWxpZGF0ZShkZWZzKTsKKyAgICB9CisgIH0KKyAgeWllbGQqIGNoZWNrRHVwbGljYXRlZE5h
bWVzKGRlZnMpOworfQorCisvLyBSZW1vdmUgdGhpcyBvbmNlIGFsbCBvZiBvdXIgc3VwcG9ydCB0
YXJnZXRzIGV4cG9zZSBgLmZsYXQoKWAgYnkgZGVmYXVsdAorZnVuY3Rpb24gZmxhdHRlbihhcnJh
eSkgeworICBpZiAoYXJyYXkuZmxhdCkgeworICAgIHJldHVybiBhcnJheS5mbGF0KCk7CisgIH0K
KyAgcmV0dXJuIFtdLmNvbmNhdCguLi5hcnJheSk7Cit9CisKKy8qKgorICogQHBhcmFtIHsqfSBh
c3QgQVNUIG9yIGFycmF5IG9mIEFTVHMKKyAqLworZnVuY3Rpb24gdmFsaWRhdGUoYXN0KSB7Cisg
IHJldHVybiBbLi4udmFsaWRhdGVJdGVyYWJsZShmbGF0dGVuKGFzdCkpXTsKK30KKworCisvKioq
LyB9KQorLyoqKioqKi8gCV0pOworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qKioqKiovIAkvLyBUaGUg
bW9kdWxlIGNhY2hlCisvKioqKioqLyAJdmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9
OworLyoqKioqKi8gCQorLyoqKioqKi8gCS8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uCisvKioqKioq
LyAJZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkgeworLyoqKioqKi8gCQkv
LyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGUKKy8qKioqKiovIAkJdmFyIGNhY2hlZE1vZHVs
ZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07CisvKioqKioqLyAJCWlmIChj
YWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkgeworLyoqKioqKi8gCQkJcmV0dXJuIGNhY2hlZE1v
ZHVsZS5leHBvcnRzOworLyoqKioqKi8gCQl9CisvKioqKioqLyAJCS8vIENyZWF0ZSBhIG5ldyBt
b2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpCisvKioqKioqLyAJCXZhciBtb2R1bGUg
PSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0geworLyoqKioqKi8gCQkJLy8g
bm8gbW9kdWxlLmlkIG5lZWRlZAorLyoqKioqKi8gCQkJLy8gbm8gbW9kdWxlLmxvYWRlZCBuZWVk
ZWQKKy8qKioqKiovIAkJCWV4cG9ydHM6IHt9CisvKioqKioqLyAJCX07CisvKioqKioqLyAJCisv
KioqKioqLyAJCS8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvbgorLyoqKioqKi8gCQlfX3dl
YnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXShtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBh
Y2tfcmVxdWlyZV9fKTsKKy8qKioqKiovIAkKKy8qKioqKiovIAkJLy8gUmV0dXJuIHRoZSBleHBv
cnRzIG9mIHRoZSBtb2R1bGUKKy8qKioqKiovIAkJcmV0dXJuIG1vZHVsZS5leHBvcnRzOworLyoq
KioqKi8gCX0KKy8qKioqKiovIAkKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKioqKioqLyAJLyogd2Vi
cGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzICovCisvKioqKioqLyAJKCgpID0+
IHsKKy8qKioqKiovIAkJLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhw
b3J0cworLyoqKioqKi8gCQlfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5p
dGlvbikgPT4geworLyoqKioqKi8gCQkJZm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikgeworLyoq
KioqKi8gCQkJCWlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFf
X3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkgeworLyoqKioqKi8gCQkJCQlPYmpl
Y3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDog
ZGVmaW5pdGlvbltrZXldIH0pOworLyoqKioqKi8gCQkJCX0KKy8qKioqKiovIAkJCX0KKy8qKioq
KiovIAkJfTsKKy8qKioqKiovIAl9KSgpOworLyoqKioqKi8gCQorLyoqKioqKi8gCS8qIHdlYnBh
Y2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQgKi8KKy8qKioqKiovIAkoKCkgPT4g
eworLyoqKioqKi8gCQlfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2Jq
ZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpCisvKioqKioqLyAJ
fSkoKTsKKy8qKioqKiovIAkKKy8qKioqKiovIAkvKiB3ZWJwYWNrL3J1bnRpbWUvbWFrZSBuYW1l
c3BhY2Ugb2JqZWN0ICovCisvKioqKioqLyAJKCgpID0+IHsKKy8qKioqKiovIAkJLy8gZGVmaW5l
IF9fZXNNb2R1bGUgb24gZXhwb3J0cworLyoqKioqKi8gCQlfX3dlYnBhY2tfcmVxdWlyZV9fLnIg
PSAoZXhwb3J0cykgPT4geworLyoqKioqKi8gCQkJaWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVm
aW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7CisvKioqKioqLyAJCQkJT2JqZWN0LmRlZmlu
ZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScg
fSk7CisvKioqKioqLyAJCQl9CisvKioqKioqLyAJCQlPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhw
b3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pOworLyoqKioqKi8gCQl9OworLyoq
KioqKi8gCX0pKCk7CisvKioqKioqLyAJCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwordmFyIF9fd2VicGFj
a19leHBvcnRzX18gPSB7fTsKKy8vIFRoaXMgZW50cnkgbmVlZCB0byBiZSB3cmFwcGVkIGluIGFu
IElJRkUgYmVjYXVzZSBpdCBuZWVkIHRvIGJlIGlzb2xhdGVkIGFnYWluc3Qgb3RoZXIgbW9kdWxl
cyBpbiB0aGUgY2h1bmsuCisoKCkgPT4geworX193ZWJwYWNrX3JlcXVpcmVfXy5yKF9fd2VicGFj
a19leHBvcnRzX18pOworLyogaGFybW9ueSBleHBvcnQgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5k
KF9fd2VicGFja19leHBvcnRzX18sIHsKKy8qIGhhcm1vbnkgZXhwb3J0ICovICAgInBhcnNlIjog
KCkgPT4gKC8qIHJlZXhwb3J0IHNhZmUgKi8gX2xpYl93ZWJpZGwyX2pzX19XRUJQQUNLX0lNUE9S
VEVEX01PRFVMRV8wX18ucGFyc2UpLAorLyogaGFybW9ueSBleHBvcnQgKi8gICAid3JpdGUiOiAo
KSA9PiAoLyogcmVleHBvcnQgc2FmZSAqLyBfbGliX3dyaXRlcl9qc19fV0VCUEFDS19JTVBPUlRF
RF9NT0RVTEVfMV9fLndyaXRlKSwKKy8qIGhhcm1vbnkgZXhwb3J0ICovICAgInZhbGlkYXRlIjog
KCkgPT4gKC8qIHJlZXhwb3J0IHNhZmUgKi8gX2xpYl92YWxpZGF0b3JfanNfX1dFQlBBQ0tfSU1Q
T1JURURfTU9EVUxFXzJfXy52YWxpZGF0ZSksCisvKiBoYXJtb255IGV4cG9ydCAqLyAgICJXZWJJ
RExQYXJzZUVycm9yIjogKCkgPT4gKC8qIHJlZXhwb3J0IHNhZmUgKi8gX2xpYl90b2tlbmlzZXJf
anNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfXy5XZWJJRExQYXJzZUVycm9yKQorLyogaGFy
bW9ueSBleHBvcnQgKi8gfSk7CisvKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2xpYl93ZWJpZGwy
X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEp
OworLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9saWJfd3JpdGVyX2pzX19XRUJQQUNLX0lNUE9S
VEVEX01PRFVMRV8xX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMwKTsKKy8qIGhhcm1vbnkgaW1w
b3J0ICovIHZhciBfbGliX3ZhbGlkYXRvcl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9f
ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMSk7CisvKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2xp
Yl90b2tlbmlzZXJfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfXyA9IF9fd2VicGFja19y
ZXF1aXJlX18oMik7CisKKworCisKKworfSkoKTsKKworLyoqKioqKi8gCXJldHVybiBfX3dlYnBh
Y2tfZXhwb3J0c19fOworLyoqKioqKi8gfSkoKQorOworfSk7CisvLyMgc291cmNlTWFwcGluZ1VS
TD13ZWJpZGwyLmpzLm1hcApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3Jlc291cmNlcy9pZGxoYXJuZXNzLmpzIGIvTGF5b3V0VGVzdHMvcmVzb3Vy
Y2VzL2lkbGhhcm5lc3MuanMKaW5kZXggMjViOWFmNWMzZTc5ZGNjZDBiMTIyMjM1YjkwZDYwMDA2
YTM2M2RlZS4uNmFlYzAyZTNhYmUwNmIyMGQxMWJiNDZiZmQ1Yjc0MjMyNjg1MWM4NiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL2lkbGhhcm5lc3MuanMKKysrIGIvTGF5b3V0VGVz
dHMvcmVzb3VyY2VzL2lkbGhhcm5lc3MuanMKQEAgLTEsMTQgKzEsNCBAQAotLyoKLURpc3RyaWJ1
dGVkIHVuZGVyIGJvdGggdGhlIFczQyBUZXN0IFN1aXRlIExpY2Vuc2UgWzFdIGFuZCB0aGUgVzND
Ci0zLWNsYXVzZSBCU0QgTGljZW5zZSBbMl0uIFRvIGNvbnRyaWJ1dGUgdG8gYSBXM0MgVGVzdCBT
dWl0ZSwgc2VlIHRoZQotcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCi0KLVsx
XSBodHRwOi8vd3d3LnczLm9yZy9Db25zb3J0aXVtL0xlZ2FsLzIwMDgvMDQtdGVzdHN1aXRlLWxp
Y2Vuc2UKLVsyXSBodHRwOi8vd3d3LnczLm9yZy9Db25zb3J0aXVtL0xlZ2FsLzIwMDgvMDMtYnNk
LWxpY2Vuc2UKLVszXSBodHRwOi8vd3d3LnczLm9yZy8yMDA0LzEwLzI3LXRlc3RjYXNlcwotKi8K
LQotLyogRm9yIHVzZXIgZG9jdW1lbnRhdGlvbiBzZWUgZG9jcy9pZGxoYXJuZXNzLm1kICovCisv
KiBGb3IgdXNlciBkb2N1bWVudGF0aW9uIHNlZSBkb2NzL193cml0aW5nLXRlc3RzL2lkbGhhcm5l
c3MubWQgKi8KIAogLyoqCiAgKiBOb3RlcyBmb3IgcGVvcGxlIHdobyB3YW50IHRvIGVkaXQgdGhp
cyBmaWxlIChub3QganVzdCB1c2UgaXQgYXMgYSBsaWJyYXJ5KToKQEAgLTQ4LDIwICszOCwzMCBA
QCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAqLwogKGZ1bmN0aW9uKCl7
CiAidXNlIHN0cmljdCI7CisvLyBTdXBwb3J0IHN1YnNldFRlc3RCeUtleSBmcm9tIC9jb21tb24v
c3Vic2V0LXRlc3RzLWJ5LWtleS5qcywgYnV0IG1ha2UgaXQgb3B0aW9uYWwKK2lmICghKCdzdWJz
ZXRUZXN0QnlLZXknIGluIHNlbGYpKSB7CisgICAgc2VsZi5zdWJzZXRUZXN0QnlLZXkgPSBmdW5j
dGlvbihrZXksIGNhbGxiYWNrLCAuLi5hcmdzKSB7CisgICAgICByZXR1cm4gY2FsbGJhY2soLi4u
YXJncyk7CisgICAgfQorICAgIHNlbGYuc2hvdWxkUnVuU3ViVGVzdCA9ICgpID0+IHRydWU7Cit9
CiAvLy8gSGVscGVycyAvLy8KIGZ1bmN0aW9uIGNvbnN0VmFsdWUgKGNudCkKLS8vQHsKIHsKICAg
ICBpZiAoY250LnR5cGUgPT09ICJudWxsIikgcmV0dXJuIG51bGw7CiAgICAgaWYgKGNudC50eXBl
ID09PSAiTmFOIikgcmV0dXJuIE5hTjsKICAgICBpZiAoY250LnR5cGUgPT09ICJJbmZpbml0eSIp
IHJldHVybiBjbnQubmVnYXRpdmUgPyAtSW5maW5pdHkgOiBJbmZpbml0eTsKKyAgICBpZiAoY250
LnR5cGUgPT09ICJudW1iZXIiKSByZXR1cm4gK2NudC52YWx1ZTsKICAgICByZXR1cm4gY250LnZh
bHVlOwogfQogCi0vL0B9CiBmdW5jdGlvbiBtaW5PdmVybG9hZExlbmd0aChvdmVybG9hZHMpCi0v
L0B7CiB7CisgICAgLy8gIlRoZSB2YWx1ZSBvZiB0aGUgRnVuY3Rpb24gb2JqZWN04oCZcyDigJxs
ZW5ndGjigJ0gcHJvcGVydHkgaXMKKyAgICAvLyBhIE51bWJlciBkZXRlcm1pbmVkIGFzIGZvbGxv
d3M6CisgICAgLy8gIi4gLiAuCisgICAgLy8gIlJldHVybiB0aGUgbGVuZ3RoIG9mIHRoZSBzaG9y
dGVzdCBhcmd1bWVudCBsaXN0IG9mIHRoZQorICAgIC8vIGVudHJpZXMgaW4gUy4iCiAgICAgaWYg
KCFvdmVybG9hZHMubGVuZ3RoKSB7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KQEAgLTc0LDE4
ICs3NCw0MyBAQCBmdW5jdGlvbiBtaW5PdmVybG9hZExlbmd0aChvdmVybG9hZHMpCiAgICAgLnJl
ZHVjZShmdW5jdGlvbihtLCBuKSB7IHJldHVybiBNYXRoLm1pbihtLCBuKTsgfSk7CiB9CiAKLS8v
QH0KLWZ1bmN0aW9uIHRocm93T3JSZWplY3QoYV90ZXN0LCBvcGVyYXRpb24sIGZuLCBvYmosIGFy
Z3MsICBtZXNzYWdlLCBjYikKLS8vQHsKKy8vIEEgaGVscGVyIHRvIGdldCB0aGUgZ2xvYmFsIG9m
IGEgRnVuY3Rpb24gb2JqZWN0LiAgVGhpcyBpcyBuZWVkZWQgdG8gZGV0ZXJtaW5lCisvLyB3aGlj
aCBnbG9iYWwgZXhjZXB0aW9ucyB0aGUgZnVuY3Rpb24gdGhyb3dzIHdpbGwgY29tZSBmcm9tLgor
ZnVuY3Rpb24gZ2xvYmFsT2YoZnVuYykKK3sKKyAgICB0cnkgeworICAgICAgICAvLyBVc2UgdGhl
IGZhY3QgdGhhdCAuY29uc3RydWN0b3IgZm9yIGEgRnVuY3Rpb24gb2JqZWN0IGlzIG5vcm1hbGx5
IHRoZQorICAgICAgICAvLyBGdW5jdGlvbiBjb25zdHJ1Y3Rvciwgd2hpY2ggY2FuIGJlIHVzZWQg
dG8gbWludCBhIG5ldyBmdW5jdGlvbiBpbiB0aGUKKyAgICAgICAgLy8gcmlnaHQgZ2xvYmFsLgor
ICAgICAgICByZXR1cm4gZnVuYy5jb25zdHJ1Y3RvcigicmV0dXJuIHRoaXM7IikoKTsKKyAgICB9
IGNhdGNoIChlKSB7CisgICAgfQorICAgIC8vIElmIHRoZSBhYm92ZSBmYWlscywgYmVjYXVzZSBz
b21lb25lIGdhdmUgdXMgYSBub24tZnVuY3Rpb24sIG9yIGEgZnVuY3Rpb24KKyAgICAvLyB3aXRo
IGEgd2VpcmQgcHJvdG8gY2hhaW4gb3Igd2VpcmQgLmNvbnN0cnVjdG9yIHByb3BlcnR5LCBqdXN0
IGZhbGwgYmFjaworICAgIC8vIHRvICdzZWxmJy4KKyAgICByZXR1cm4gc2VsZjsKK30KKworLy8g
aHR0cHM6Ly9lc2Rpc2N1c3Mub3JnL3RvcGljL2lzY29uc3RydWN0b3IjY29udGVudC0xMQorZnVu
Y3Rpb24gaXNDb25zdHJ1Y3RvcihvKSB7CisgICAgdHJ5IHsKKyAgICAgICAgbmV3IChuZXcgUHJv
eHkobywge2NvbnN0cnVjdDogKCkgPT4gKHt9KX0pKTsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfSBjYXRjaChlKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2Z1bmN0
aW9uIHRocm93T3JSZWplY3QoYV90ZXN0LCBvcGVyYXRpb24sIGZuLCBvYmosIGFyZ3MsIG1lc3Nh
Z2UsIGNiKQogewogICAgIGlmIChvcGVyYXRpb24uaWRsVHlwZS5nZW5lcmljICE9PSAiUHJvbWlz
ZSIpIHsKLSAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkg
eworICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKGdsb2JhbE9mKGZuKS5UeXBlRXJyb3IsIGZ1bmN0
aW9uKCkgewogICAgICAgICAgICAgZm4uYXBwbHkob2JqLCBhcmdzKTsKICAgICAgICAgfSwgbWVz
c2FnZSk7CiAgICAgICAgIGNiKCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgdHJ5IHsKLSAgICAg
ICAgICAgIHByb21pc2VfcmVqZWN0cyhhX3Rlc3QsIG5ldyBUeXBlRXJyb3IoKSwgZm4uYXBwbHko
b2JqLCBhcmdzKSkudGhlbihjYiwgY2IpOworICAgICAgICAgICAgcHJvbWlzZV9yZWplY3RzX2pz
KGFfdGVzdCwgVHlwZUVycm9yLCBmbi5hcHBseShvYmosIGFyZ3MpLCBtZXNzYWdlKS50aGVuKGNi
LCBjYik7CiAgICAgICAgIH0gY2F0Y2ggKGUpewogICAgICAgICAgICAgYV90ZXN0LnN0ZXAoZnVu
Y3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0X3VucmVhY2hlZCgiVGhyb3dzIFwiIiAr
IGUgKyAiXCIgaW5zdGVhZCBvZiByZWplY3RpbmcgcHJvbWlzZSIpOwpAQCAtOTUsOSArMTIwLDcg
QEAgZnVuY3Rpb24gdGhyb3dPclJlamVjdChhX3Rlc3QsIG9wZXJhdGlvbiwgZm4sIG9iaiwgYXJn
cywgIG1lc3NhZ2UsIGNiKQogICAgIH0KIH0KIAotLy9AfQogZnVuY3Rpb24gYXdhaXROQ2FsbGJh
Y2tzKG4sIGNiLCBjdHgpCi0vL0B7CiB7CiAgICAgdmFyIGNvdW50ZXIgPSAwOwogICAgIHJldHVy
biBmdW5jdGlvbigpIHsKQEAgLTEwOCwyNCArMTMxLDI3IEBAIGZ1bmN0aW9uIGF3YWl0TkNhbGxi
YWNrcyhuLCBjYiwgY3R4KQogICAgIH07CiB9CiAKLS8vQH0KLXZhciBmcm91bmQgPQotLy9Aewot
KGZ1bmN0aW9uKCl7Ci0gICAgaWYgKE1hdGguZnJvdW5kKSByZXR1cm4gTWF0aC5mcm91bmQ7Cisv
Ly8gSWRsSGFybmVzc0Vycm9yIC8vLworLy8gRW50cnkgcG9pbnQKK3NlbGYuSWRsSGFybmVzc0Vy
cm9yID0gZnVuY3Rpb24obWVzc2FnZSkKK3sKKyAgICAvKioKKyAgICAgKiBNZXNzYWdlIHRvIGJl
IHByaW50ZWQgYXMgdGhlIGVycm9yJ3MgdG9TdHJpbmcgaW52b2NhdGlvbi4KKyAgICAgKi8KKyAg
ICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlOworfTsKKworSWRsSGFybmVzc0Vycm9yLnByb3RvdHlw
ZSA9IE9iamVjdC5jcmVhdGUoRXJyb3IucHJvdG90eXBlKTsKKworSWRsSGFybmVzc0Vycm9yLnBy
b3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uKCkKK3sKKyAgICByZXR1cm4gdGhpcy5tZXNzYWdl
OworfTsKIAotICAgIHZhciBhcnIgPSBuZXcgRmxvYXQzMkFycmF5KDEpOwotICAgIHJldHVybiBm
dW5jdGlvbiBmcm91bmQobikgewotICAgICAgICBhcnJbMF0gPSBuOwotICAgICAgICByZXR1cm4g
YXJyWzBdOwotICAgIH07Ci19KSgpOwotLy9AfQogCiAvLy8gSWRsQXJyYXkgLy8vCiAvLyBFbnRy
eSBwb2ludAogc2VsZi5JZGxBcnJheSA9IGZ1bmN0aW9uKCkKLS8vQHsKIHsKICAgICAvKioKICAg
ICAgKiBBIG1hcCBmcm9tIHN0cmluZ3MgdG8gdGhlIGNvcnJlc3BvbmRpbmcgbmFtZWQgSWRsT2Jq
ZWN0LCBzdWNoIGFzCkBAIC0xNDgsOTIgKzE3NCwyNzkgQEAgc2VsZi5JZGxBcnJheSA9IGZ1bmN0
aW9uKCkKIAogICAgIC8qKgogICAgICAqIFdoZW4gYWRkaW5nIG11bHRpcGxlIGNvbGxlY3Rpb25z
IG9mIElETHMgb25lIGF0IGEgdGltZSwgYW4gZWFybGllciBvbmUKLSAgICAgKiBtaWdodCBjb250
YWluIGEgcGFydGlhbCBpbnRlcmZhY2Ugb3IgaW1wbGVtZW50cyBzdGF0ZW1lbnQgdGhhdCBkZXBl
bmRzCisgICAgICogbWlnaHQgY29udGFpbiBhIHBhcnRpYWwgaW50ZXJmYWNlIG9yIGluY2x1ZGVz
IHN0YXRlbWVudCB0aGF0IGRlcGVuZHMKICAgICAgKiBvbiBhIGxhdGVyIG9uZS4gIFNhdmUgdGhl
c2UgdXAgYW5kIGhhbmRsZSB0aGVtIHJpZ2h0IGJlZm9yZSB3ZSBydW4KICAgICAgKiB0ZXN0cy4K
ICAgICAgKgotICAgICAqIC5wYXJ0aWFscyBpcyBzaW1wbHkgYW4gYXJyYXkgb2Ygb2JqZWN0cyBm
cm9tIFdlYklETFBhcnNlci5qcycKLSAgICAgKiAicGFydGlhbGludGVyZmFjZSIgcHJvZHVjdGlv
bi4gIC5pbXBsZW1lbnRzIG1hcHMgc3RyaW5ncyB0byBhcnJheXMgb2YKLSAgICAgKiBzdHJpbmdz
LCBzdWNoIHRoYXQKLSAgICAgKgotICAgICAqICAgQSBpbXBsZW1lbnRzIEI7Ci0gICAgICogICBB
IGltcGxlbWVudHMgQzsKLSAgICAgKiAgIEQgaW1wbGVtZW50cyBFOwotICAgICAqCi0gICAgICog
cmVzdWx0cyBpbiB7IEE6IFsiQiIsICJDIl0sIEQ6IFsiRSJdIH0uCisgICAgICogQm90aCB0aGlz
LnBhcnRpYWxzIGFuZCB0aGlzLmluY2x1ZGVzIHdpbGwgYmUgdGhlIG9iamVjdHMgYXMgcGFyc2Vk
IGJ5CisgICAgICogV2ViSURMUGFyc2VyLmpzLCBub3Qgd3JhcHBlZCBpbiBJZGxJbnRlcmZhY2Ug
b3Igc2ltaWxhci4KICAgICAgKi8KICAgICB0aGlzLnBhcnRpYWxzID0gW107Ci0gICAgdGhpc1si
aW1wbGVtZW50cyJdID0ge307CisgICAgdGhpcy5pbmNsdWRlcyA9IFtdOworCisgICAgLyoqCisg
ICAgICogUmVjb3JkIG9mIHNraXBwZWQgSURMIGl0ZW1zLCBpbiBjYXNlIHdlIGxhdGVyIHJlYWxp
emUgdGhhdCB0aGV5IGFyZSBhCisgICAgICogZGVwZW5kZW5jeSAodG8gcmV0cm9hY3RpdmVseSBw
cm9jZXNzIHRoZW0pLgorICAgICAqLworICAgIHRoaXMuc2tpcHBlZCA9IG5ldyBNYXAoKTsKIH07
CiAKLS8vQH0KLUlkbEFycmF5LnByb3RvdHlwZS5hZGRfaWRscyA9IGZ1bmN0aW9uKHJhd19pZGxz
KQotLy9AeworSWRsQXJyYXkucHJvdG90eXBlLmFkZF9pZGxzID0gZnVuY3Rpb24ocmF3X2lkbHMs
IG9wdGlvbnMpCiB7CiAgICAgLyoqIEVudHJ5IHBvaW50LiAgU2VlIGRvY3VtZW50YXRpb24gYXQg
YmVnaW5uaW5nIG9mIGZpbGUuICovCi0gICAgdGhpcy5pbnRlcm5hbF9hZGRfaWRscyhXZWJJREwy
LnBhcnNlKHJhd19pZGxzKSk7CisgICAgdGhpcy5pbnRlcm5hbF9hZGRfaWRscyhXZWJJREwyLnBh
cnNlKHJhd19pZGxzKSwgb3B0aW9ucyk7CiB9OwogCi0vL0B9Ci1JZGxBcnJheS5wcm90b3R5cGUu
YWRkX3VudGVzdGVkX2lkbHMgPSBmdW5jdGlvbihyYXdfaWRscykKLS8vQHsKK0lkbEFycmF5LnBy
b3RvdHlwZS5hZGRfdW50ZXN0ZWRfaWRscyA9IGZ1bmN0aW9uKHJhd19pZGxzLCBvcHRpb25zKQog
ewogICAgIC8qKiBFbnRyeSBwb2ludC4gIFNlZSBkb2N1bWVudGF0aW9uIGF0IGJlZ2lubmluZyBv
ZiBmaWxlLiAqLwogICAgIHZhciBwYXJzZWRfaWRscyA9IFdlYklETDIucGFyc2UocmF3X2lkbHMp
OwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGFyc2VkX2lkbHMubGVuZ3RoOyBpKyspCi0gICAg
eworICAgIHRoaXMubWFya19hc191bnRlc3RlZChwYXJzZWRfaWRscyk7CisgICAgdGhpcy5pbnRl
cm5hbF9hZGRfaWRscyhwYXJzZWRfaWRscywgb3B0aW9ucyk7Cit9OworCitJZGxBcnJheS5wcm90
b3R5cGUubWFya19hc191bnRlc3RlZCA9IGZ1bmN0aW9uIChwYXJzZWRfaWRscykKK3sKKyAgICBm
b3IgKHZhciBpID0gMDsgaSA8IHBhcnNlZF9pZGxzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgIHBh
cnNlZF9pZGxzW2ldLnVudGVzdGVkID0gdHJ1ZTsKLSAgICAgICAgaWYgKCJtZW1iZXJzIiBpbiBw
YXJzZWRfaWRsc1tpXSkKLSAgICAgICAgewotICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGog
PCBwYXJzZWRfaWRsc1tpXS5tZW1iZXJzLmxlbmd0aDsgaisrKQotICAgICAgICAgICAgeworICAg
ICAgICBpZiAoIm1lbWJlcnMiIGluIHBhcnNlZF9pZGxzW2ldKSB7CisgICAgICAgICAgICBmb3Ig
KHZhciBqID0gMDsgaiA8IHBhcnNlZF9pZGxzW2ldLm1lbWJlcnMubGVuZ3RoOyBqKyspIHsKICAg
ICAgICAgICAgICAgICBwYXJzZWRfaWRsc1tpXS5tZW1iZXJzW2pdLnVudGVzdGVkID0gdHJ1ZTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLSAgICB0aGlzLmludGVybmFsX2FkZF9p
ZGxzKHBhcnNlZF9pZGxzKTsKIH07CiAKLS8vQH0KLUlkbEFycmF5LnByb3RvdHlwZS5pbnRlcm5h
bF9hZGRfaWRscyA9IGZ1bmN0aW9uKHBhcnNlZF9pZGxzKQotLy9AeworSWRsQXJyYXkucHJvdG90
eXBlLmlzX2V4Y2x1ZGVkX2J5X29wdGlvbnMgPSBmdW5jdGlvbiAobmFtZSwgb3B0aW9ucykKK3sK
KyAgICByZXR1cm4gb3B0aW9ucyAmJgorICAgICAgICAob3B0aW9ucy5leGNlcHQgJiYgb3B0aW9u
cy5leGNlcHQuaW5jbHVkZXMobmFtZSkKKyAgICAgICAgIHx8IG9wdGlvbnMub25seSAmJiAhb3B0
aW9ucy5vbmx5LmluY2x1ZGVzKG5hbWUpKTsKK307CisKK0lkbEFycmF5LnByb3RvdHlwZS5hZGRf
ZGVwZW5kZW5jeV9pZGxzID0gZnVuY3Rpb24ocmF3X2lkbHMsIG9wdGlvbnMpCit7CisgICAgcmV0
dXJuIHRoaXMuaW50ZXJuYWxfYWRkX2RlcGVuZGVuY3lfaWRscyhXZWJJREwyLnBhcnNlKHJhd19p
ZGxzKSwgb3B0aW9ucyk7Cit9OworCitJZGxBcnJheS5wcm90b3R5cGUuaW50ZXJuYWxfYWRkX2Rl
cGVuZGVuY3lfaWRscyA9IGZ1bmN0aW9uKHBhcnNlZF9pZGxzLCBvcHRpb25zKQoreworICAgIGNv
bnN0IG5ld19vcHRpb25zID0geyBvbmx5OiBbXSB9CisKKyAgICBjb25zdCBhbGxfZGVwcyA9IG5l
dyBTZXQoKTsKKyAgICBPYmplY3QudmFsdWVzKHRoaXMubWVtYmVycykuZm9yRWFjaCh2ID0+IHsK
KyAgICAgICAgaWYgKHYuYmFzZSkgeworICAgICAgICAgICAgYWxsX2RlcHMuYWRkKHYuYmFzZSk7
CisgICAgICAgIH0KKyAgICB9KTsKKyAgICAvLyBBZGQgYm90aCAnQScgYW5kICdCJyBmb3IgZWFj
aCAnQSBpbmNsdWRlcyBCJyBlbnRyeS4KKyAgICB0aGlzLmluY2x1ZGVzLmZvckVhY2goaSA9PiB7
CisgICAgICAgIGFsbF9kZXBzLmFkZChpLnRhcmdldCk7CisgICAgICAgIGFsbF9kZXBzLmFkZChp
LmluY2x1ZGVzKTsKKyAgICB9KTsKKyAgICB0aGlzLnBhcnRpYWxzLmZvckVhY2gocCA9PiBhbGxf
ZGVwcy5hZGQocC5uYW1lKSk7CisgICAgLy8gQWRkICdUeXBlT2ZUeXBlJyBmb3IgZWFjaCAidHlw
ZWRlZiBUeXBlT2ZUeXBlIE15VHlwZTsiIGVudHJ5LgorICAgIE9iamVjdC5lbnRyaWVzKHRoaXMu
bWVtYmVycykuZm9yRWFjaCgoW2ssIHZdKSA9PiB7CisgICAgICAgIGlmICh2IGluc3RhbmNlb2Yg
SWRsVHlwZWRlZikgeworICAgICAgICAgICAgbGV0IGRlZnMgPSB2LmlkbFR5cGUudW5pb24KKyAg
ICAgICAgICAgICAgICA/IHYuaWRsVHlwZS5pZGxUeXBlLm1hcCh0ID0+IHQuaWRsVHlwZSkKKyAg
ICAgICAgICAgICAgICA6IFt2LmlkbFR5cGUuaWRsVHlwZV07CisgICAgICAgICAgICBkZWZzLmZv
ckVhY2goZCA9PiBhbGxfZGVwcy5hZGQoZCkpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICAv
LyBBZGQgdGhlIGF0dHJpYnV0ZSBpZGxUeXBlcyBvZiBhbGwgdGhlIG5lc3RlZCBtZW1iZXJzIG9m
IGlkbHMuCisgICAgY29uc3QgYXR0ckRlcHMgPSBwYXJzZWRJZGxzID0+IHsKKyAgICAgICAgcmV0
dXJuIHBhcnNlZElkbHMucmVkdWNlKChkZXBzLCBwYXJzZWQpID0+IHsKKyAgICAgICAgICAgIGlm
IChwYXJzZWQubWVtYmVycykgeworICAgICAgICAgICAgICAgIGZvciAoY29uc3QgYXR0ciBvZiBP
YmplY3QudmFsdWVzKHBhcnNlZC5tZW1iZXJzKS5maWx0ZXIobSA9PiBtLnR5cGUgPT09ICdhdHRy
aWJ1dGUnKSkgeworICAgICAgICAgICAgICAgICAgICBsZXQgYXR0clR5cGUgPSBhdHRyLmlkbFR5
cGU7CisgICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGZvciBnZW5lcmljIG1lbWJlcnMgKGUu
Zy4gRnJvemVuQXJyYXk8TXlUeXBlPikKKyAgICAgICAgICAgICAgICAgICAgaWYgKGF0dHJUeXBl
LmdlbmVyaWMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlcHMuYWRkKGF0dHJUeXBlLmdl
bmVyaWMpOworICAgICAgICAgICAgICAgICAgICAgICAgYXR0clR5cGUgPSBhdHRyVHlwZS5pZGxU
eXBlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGRlcHMuYWRk
KGF0dHJUeXBlLmlkbFR5cGUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGlmIChwYXJzZWQuYmFzZSBpbiB0aGlzLm1lbWJlcnMpIHsKKyAgICAgICAgICAg
ICAgICBhdHRyRGVwcyhbdGhpcy5tZW1iZXJzW3BhcnNlZC5iYXNlXV0pLmZvckVhY2goZGVwID0+
IGRlcHMuYWRkKGRlcCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGRlcHM7
CisgICAgICAgIH0sIG5ldyBTZXQoKSk7CisgICAgfTsKKworICAgIGNvbnN0IHRlc3RlZE1lbWJl
cnMgPSBPYmplY3QudmFsdWVzKHRoaXMubWVtYmVycykuZmlsdGVyKG0gPT4gIW0udW50ZXN0ZWQg
JiYgbS5tZW1iZXJzKTsKKyAgICBhdHRyRGVwcyh0ZXN0ZWRNZW1iZXJzKS5mb3JFYWNoKGRlcCA9
PiBhbGxfZGVwcy5hZGQoZGVwKSk7CisKKyAgICBjb25zdCB0ZXN0ZWRQYXJ0aWFscyA9IHRoaXMu
cGFydGlhbHMuZmlsdGVyKG0gPT4gIW0udW50ZXN0ZWQgJiYgbS5tZW1iZXJzKTsKKyAgICBhdHRy
RGVwcyh0ZXN0ZWRQYXJ0aWFscykuZm9yRWFjaChkZXAgPT4gYWxsX2RlcHMuYWRkKGRlcCkpOwor
CisKKyAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmV4Y2VwdCAmJiBvcHRpb25zLm9ubHkpIHsK
KyAgICAgICAgdGhyb3cgbmV3IElkbEhhcm5lc3NFcnJvcigiVGhlIG9ubHkgYW5kIGV4Y2VwdCBv
cHRpb25zIGNhbid0IGJlIHVzZWQgdG9nZXRoZXIuIik7CisgICAgfQorCisgICAgY29uc3QgZGVm
aW5lZF9vcl91bnRlc3RlZCA9IG5hbWUgPT4geworICAgICAgICAvLyBOT1RFOiBEZXBzIGFyZSB1
bnRlc3RlZCwgc28gd2UncmUgbGVuaWVudCwgYW5kIHNraXAgcmUtZW5jb3VudGVyZWQgZGVmaW5p
dGlvbnMuCisgICAgICAgIC8vIGUuZy4gZm9yICdpZGwnIGNvbnRhaW5pbmcgQTpCLCBCOkMsIEM6
RAorICAgICAgICAvLyAgICAgIGFycmF5LmFkZF9pZGxzKGlkbCwge29ubHk6IFsnQScsJ0InXX0p
LgorICAgICAgICAvLyAgICAgIGFycmF5LmFkZF9kZXBlbmRlbmN5X2lkbHMoaWRsKTsKKyAgICAg
ICAgLy8gQiB3b3VsZCBiZSBlbmNvdW50ZXJlZCBhcyB0ZXN0ZWQsIGFuZCBlbmNvdW50ZXJlZCBh
cyBhIGRlcCwgc28gd2UgaWdub3JlLgorICAgICAgICByZXR1cm4gbmFtZSBpbiB0aGlzLm1lbWJl
cnMKKyAgICAgICAgICAgIHx8IHRoaXMuaXNfZXhjbHVkZWRfYnlfb3B0aW9ucyhuYW1lLCBvcHRp
b25zKTsKKyAgICB9CisgICAgLy8gTWFwcyBuYW1lIC0+IFtwYXJzZWRfaWRsLCAuLi5dCisgICAg
Y29uc3QgcHJvY2VzcyA9IGZ1bmN0aW9uKHBhcnNlZCkgeworICAgICAgICB2YXIgZGVwcyA9IFtd
OworICAgICAgICBpZiAocGFyc2VkLm5hbWUpIHsKKyAgICAgICAgICAgIGRlcHMucHVzaChwYXJz
ZWQubmFtZSk7CisgICAgICAgIH0gZWxzZSBpZiAocGFyc2VkLnR5cGUgPT09ICJpbmNsdWRlcyIp
IHsKKyAgICAgICAgICAgIGRlcHMucHVzaChwYXJzZWQudGFyZ2V0KTsKKyAgICAgICAgICAgIGRl
cHMucHVzaChwYXJzZWQuaW5jbHVkZXMpOworICAgICAgICB9CisKKyAgICAgICAgZGVwcyA9IGRl
cHMuZmlsdGVyKGZ1bmN0aW9uKG5hbWUpIHsKKyAgICAgICAgICAgIGlmICghbmFtZQorICAgICAg
ICAgICAgICAgIHx8IG5hbWUgPT09IHBhcnNlZC5uYW1lICYmIGRlZmluZWRfb3JfdW50ZXN0ZWQo
bmFtZSkKKyAgICAgICAgICAgICAgICB8fCAhYWxsX2RlcHMuaGFzKG5hbWUpKSB7CisgICAgICAg
ICAgICAgICAgLy8gRmxhZyBhcyBza2lwcGVkLCBpZiBpdCdzIG5vdCBhbHJlYWR5IHByb2Nlc3Nl
ZCwgc28gd2UgY2FuCisgICAgICAgICAgICAgICAgLy8gY29tZSBiYWNrIHRvIGl0IGxhdGVyIGlm
IHdlIHJldHJvc3BlY3RpdmVseSBjYWxsIGl0IGEgZGVwLgorICAgICAgICAgICAgICAgIGlmIChu
YW1lICYmICEobmFtZSBpbiB0aGlzLm1lbWJlcnMpKSB7CisgICAgICAgICAgICAgICAgICAgIHRo
aXMuc2tpcHBlZC5oYXMobmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgID8gdGhpcy5za2lw
cGVkLmdldChuYW1lKS5wdXNoKHBhcnNlZCkKKyAgICAgICAgICAgICAgICAgICAgICAgIDogdGhp
cy5za2lwcGVkLnNldChuYW1lLCBbcGFyc2VkXSk7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICB9LmJpbmQodGhpcykpOworCisgICAgICAgIGRlcHMuZm9yRWFjaChm
dW5jdGlvbihuYW1lKSB7CisgICAgICAgICAgICBpZiAoIW5ld19vcHRpb25zLm9ubHkuaW5jbHVk
ZXMobmFtZSkpIHsKKyAgICAgICAgICAgICAgICBuZXdfb3B0aW9ucy5vbmx5LnB1c2gobmFtZSk7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNvbnN0IGZvbGxvd191cCA9IG5ldyBTZXQo
KTsKKyAgICAgICAgICAgIGZvciAoY29uc3QgZGVwX3R5cGUgb2YgWyJpbmhlcml0YW5jZSIsICJp
bmNsdWRlcyJdKSB7CisgICAgICAgICAgICAgICAgaWYgKHBhcnNlZFtkZXBfdHlwZV0pIHsKKyAg
ICAgICAgICAgICAgICAgICAgY29uc3QgaW5oZXJpdGluZyA9IHBhcnNlZFtkZXBfdHlwZV07Cisg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGluaGVyaXRvciA9IHBhcnNlZC5uYW1lIHx8IHBhcnNl
ZC50YXJnZXQ7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRlcHMgPSBbaW5oZXJpdGluZ107
CisgICAgICAgICAgICAgICAgICAgIC8vIEZvciBBIGluY2x1ZGVzIEIsIHdlIGNhbiBpZ25vcmUg
QSwgdW5sZXNzIEIgKG9yIHNvbWUgb2YgaXRzCisgICAgICAgICAgICAgICAgICAgIC8vIG1lbWJl
cnMpIGlzIGJlaW5nIHRlc3RlZC4KKyAgICAgICAgICAgICAgICAgICAgaWYgKGRlcF90eXBlICE9
PSAiaW5jbHVkZXMiCisgICAgICAgICAgICAgICAgICAgICAgICB8fCBpbmhlcml0aW5nIGluIHRo
aXMubWVtYmVycyAmJiAhdGhpcy5tZW1iZXJzW2luaGVyaXRpbmddLnVudGVzdGVkCisgICAgICAg
ICAgICAgICAgICAgICAgICB8fCB0aGlzLnBhcnRpYWxzLnNvbWUoZnVuY3Rpb24ocCkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcC5uYW1lID09PSBpbmhlcml0aW5n
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBkZXBzLnB1c2goaW5oZXJpdG9yKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICBmb3IgKGNvbnN0IGRlcCBvZiBkZXBzKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoIW5ld19vcHRpb25zLm9ubHkuaW5jbHVkZXMoZGVwKSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG5ld19vcHRpb25zLm9ubHkucHVzaChkZXApOworICAgICAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgYWxsX2RlcHMuYWRkKGRl
cCk7CisgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dfdXAuYWRkKGRlcCk7CisgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGZvciAoY29uc3QgZGVmZXJyZWQgb2YgZm9sbG93X3VwKSB7CisgICAgICAgICAgICAg
ICAgaWYgKHRoaXMuc2tpcHBlZC5oYXMoZGVmZXJyZWQpKSB7CisgICAgICAgICAgICAgICAgICAg
IGNvbnN0IG5leHQgPSB0aGlzLnNraXBwZWQuZ2V0KGRlZmVycmVkKTsKKyAgICAgICAgICAgICAg
ICAgICAgdGhpcy5za2lwcGVkLmRlbGV0ZShkZWZlcnJlZCk7CisgICAgICAgICAgICAgICAgICAg
IG5leHQuZm9yRWFjaChwcm9jZXNzKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CisgICAgICAgIH0uYmluZCh0aGlzKSk7CisgICAgfS5iaW5kKHRoaXMpOworCisgICAgZm9yIChs
ZXQgcGFyc2VkIG9mIHBhcnNlZF9pZGxzKSB7CisgICAgICAgIHByb2Nlc3MocGFyc2VkKTsKKyAg
ICB9CisKKyAgICB0aGlzLm1hcmtfYXNfdW50ZXN0ZWQocGFyc2VkX2lkbHMpOworCisgICAgaWYg
KG5ld19vcHRpb25zLm9ubHkubGVuZ3RoKSB7CisgICAgICAgIHRoaXMuaW50ZXJuYWxfYWRkX2lk
bHMocGFyc2VkX2lkbHMsIG5ld19vcHRpb25zKTsKKyAgICB9Cit9CisKK0lkbEFycmF5LnByb3Rv
dHlwZS5pbnRlcm5hbF9hZGRfaWRscyA9IGZ1bmN0aW9uKHBhcnNlZF9pZGxzLCBvcHRpb25zKQog
ewogICAgIC8qKgogICAgICAqIEludGVybmFsIGhlbHBlciBjYWxsZWQgYnkgYWRkX2lkbHMoKSBh
bmQgYWRkX3VudGVzdGVkX2lkbHMoKS4KKyAgICAgKgogICAgICAqIHBhcnNlZF9pZGxzIGlzIGFu
IGFycmF5IG9mIG9iamVjdHMgdGhhdCBjb21lIGZyb20gV2ViSURMUGFyc2VyLmpzJ3MKICAgICAg
KiAiZGVmaW5pdGlvbnMiIHByb2R1Y3Rpb24uICBUaGUgYWRkX3VudGVzdGVkX2lkbHMoKSBlbnRy
eSBwb2ludAogICAgICAqIGFkZGl0aW9uYWxseSBzZXRzIGFuIC51bnRlc3RlZCBwcm9wZXJ0eSBv
biBlYWNoIG9iamVjdCAoYW5kIGl0cwogICAgICAqIC5tZW1iZXJzKSBzbyB0aGF0IHRoZXknbGwg
YmUgc2tpcHBlZCBieSB0ZXN0KCkgLS0gdGhleSdsbCBvbmx5IGJlCiAgICAgICogdXNlZCBmb3Ig
YmFzZSBpbnRlcmZhY2VzIG9mIHRlc3RlZCBpbnRlcmZhY2VzLCByZXR1cm4gdHlwZXMsIGV0Yy4K
KyAgICAgKgorICAgICAqIG9wdGlvbnMgaXMgYSBkaWN0aW9uYXJ5IHRoYXQgY2FuIGhhdmUgYW4g
b25seSBvciBleGNlcHQgbWVtYmVyIHdoaWNoIGFyZQorICAgICAqIGFycmF5cy4gSWYgb25seSBp
cyBnaXZlbiB0aGVuIG9ubHkgbWVtYmVycywgcGFydGlhbHMgYW5kIGludGVyZmFjZQorICAgICAq
IHRhcmdldHMgbGlzdGVkIHdpbGwgYmUgYWRkZWQsIGFuZCBpZiBleGNlcHQgaXMgZ2l2ZW4gb25s
eSB0aG9zZSB0aGF0CisgICAgICogYXJlbid0IGxpc3RlZCB3aWxsIGJlIGFkZGVkLiBPbmx5IG9u
ZSBvZiBvbmx5IGFuZCBleGNlcHQgY2FuIGJlIHVzZWQuCiAgICAgICovCisKKyAgICBpZiAob3B0
aW9ucyAmJiBvcHRpb25zLm9ubHkgJiYgb3B0aW9ucy5leGNlcHQpCisgICAgeworICAgICAgICB0
aHJvdyBuZXcgSWRsSGFybmVzc0Vycm9yKCJUaGUgb25seSBhbmQgZXhjZXB0IG9wdGlvbnMgY2Fu
J3QgYmUgdXNlZCB0b2dldGhlci4iKTsKKyAgICB9CisKKyAgICB2YXIgc2hvdWxkX3NraXAgPSBu
YW1lID0+IHsKKyAgICAgICAgcmV0dXJuIHRoaXMuaXNfZXhjbHVkZWRfYnlfb3B0aW9ucyhuYW1l
LCBvcHRpb25zKTsKKyAgICB9CisKICAgICBwYXJzZWRfaWRscy5mb3JFYWNoKGZ1bmN0aW9uKHBh
cnNlZF9pZGwpCiAgICAgewotICAgICAgICBpZiAocGFyc2VkX2lkbC50eXBlID09ICJpbnRlcmZh
Y2UiICYmIHBhcnNlZF9pZGwucGFydGlhbCkKKyAgICAgICAgdmFyIHBhcnRpYWxfdHlwZXMgPSBb
CisgICAgICAgICAgICAiaW50ZXJmYWNlIiwKKyAgICAgICAgICAgICJpbnRlcmZhY2UgbWl4aW4i
LAorICAgICAgICAgICAgImRpY3Rpb25hcnkiLAorICAgICAgICAgICAgIm5hbWVzcGFjZSIsCisg
ICAgICAgIF07CisgICAgICAgIGlmIChwYXJzZWRfaWRsLnBhcnRpYWwgJiYgcGFydGlhbF90eXBl
cy5pbmNsdWRlcyhwYXJzZWRfaWRsLnR5cGUpKQogICAgICAgICB7CisgICAgICAgICAgICBpZiAo
c2hvdWxkX3NraXAocGFyc2VkX2lkbC5uYW1lKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICB9CiAgICAgICAgICAgICB0aGlzLnBhcnRpYWxzLnB1
c2gocGFyc2VkX2lkbCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICBpZiAocGFyc2VkX2lkbC50eXBlID09ICJpbXBsZW1lbnRzIikKKyAgICAgICAgaWYgKHBhcnNl
ZF9pZGwudHlwZSA9PSAiaW5jbHVkZXMiKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIShw
YXJzZWRfaWRsLnRhcmdldCBpbiB0aGlzWyJpbXBsZW1lbnRzIl0pKQorICAgICAgICAgICAgaWYg
KHNob3VsZF9za2lwKHBhcnNlZF9pZGwudGFyZ2V0KSkKICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICB0aGlzWyJpbXBsZW1lbnRzIl1bcGFyc2VkX2lkbC50YXJnZXRdID0gW107CisgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgdGhpc1siaW1w
bGVtZW50cyJdW3BhcnNlZF9pZGwudGFyZ2V0XS5wdXNoKHBhcnNlZF9pZGxbImltcGxlbWVudHMi
XSk7CisgICAgICAgICAgICB0aGlzLmluY2x1ZGVzLnB1c2gocGFyc2VkX2lkbCk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBwYXJzZWRfaWRsLmFycmF5ID0gdGhp
czsKKyAgICAgICAgaWYgKHNob3VsZF9za2lwKHBhcnNlZF9pZGwubmFtZSkpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogICAgICAgICBpZiAocGFyc2VkX2lkbC5u
YW1lIGluIHRoaXMubWVtYmVycykKICAgICAgICAgewotICAgICAgICAgICAgdGhyb3cgIkR1cGxp
Y2F0ZSBpZGVudGlmaWVyICIgKyBwYXJzZWRfaWRsLm5hbWU7CisgICAgICAgICAgICB0aHJvdyBu
ZXcgSWRsSGFybmVzc0Vycm9yKCJEdXBsaWNhdGUgaWRlbnRpZmllciAiICsgcGFyc2VkX2lkbC5u
YW1lKTsKICAgICAgICAgfQorCiAgICAgICAgIHN3aXRjaChwYXJzZWRfaWRsLnR5cGUpCiAgICAg
ICAgIHsKICAgICAgICAgY2FzZSAiaW50ZXJmYWNlIjoKICAgICAgICAgICAgIHRoaXMubWVtYmVy
c1twYXJzZWRfaWRsLm5hbWVdID0KLSAgICAgICAgICAgICAgICBuZXcgSWRsSW50ZXJmYWNlKHBh
cnNlZF9pZGwsIC8qIGlzX2NhbGxiYWNrID0gKi8gZmFsc2UpOworICAgICAgICAgICAgICAgIG5l
dyBJZGxJbnRlcmZhY2UocGFyc2VkX2lkbCwgLyogaXNfY2FsbGJhY2sgPSAqLyBmYWxzZSwgLyog
aXNfbWl4aW4gPSAqLyBmYWxzZSk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNl
ICJpbnRlcmZhY2UgbWl4aW4iOgorICAgICAgICAgICAgdGhpcy5tZW1iZXJzW3BhcnNlZF9pZGwu
bmFtZV0gPQorICAgICAgICAgICAgICAgIG5ldyBJZGxJbnRlcmZhY2UocGFyc2VkX2lkbCwgLyog
aXNfY2FsbGJhY2sgPSAqLyBmYWxzZSwgLyogaXNfbWl4aW4gPSAqLyB0cnVlKTsKICAgICAgICAg
ICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgImRpY3Rpb25hcnkiOgpAQCAtMjQ3LDggKzQ2MCw3
IEBAIElkbEFycmF5LnByb3RvdHlwZS5pbnRlcm5hbF9hZGRfaWRscyA9IGZ1bmN0aW9uKHBhcnNl
ZF9pZGxzKQogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSAiY2FsbGJhY2siOgot
ICAgICAgICAgICAgLy8gVE9ETwotICAgICAgICAgICAgY29uc29sZS5sb2coImNhbGxiYWNrIG5v
dCB5ZXQgc3VwcG9ydGVkIik7CisgICAgICAgICAgICB0aGlzLm1lbWJlcnNbcGFyc2VkX2lkbC5u
YW1lXSA9IG5ldyBJZGxDYWxsYmFjayhwYXJzZWRfaWRsKTsKICAgICAgICAgICAgIGJyZWFrOwog
CiAgICAgICAgIGNhc2UgImVudW0iOgpAQCAtMjU3LDcgKzQ2OSwxMSBAQCBJZGxBcnJheS5wcm90
b3R5cGUuaW50ZXJuYWxfYWRkX2lkbHMgPSBmdW5jdGlvbihwYXJzZWRfaWRscykKIAogICAgICAg
ICBjYXNlICJjYWxsYmFjayBpbnRlcmZhY2UiOgogICAgICAgICAgICAgdGhpcy5tZW1iZXJzW3Bh
cnNlZF9pZGwubmFtZV0gPQotICAgICAgICAgICAgICAgIG5ldyBJZGxJbnRlcmZhY2UocGFyc2Vk
X2lkbCwgLyogaXNfY2FsbGJhY2sgPSAqLyB0cnVlKTsKKyAgICAgICAgICAgICAgICBuZXcgSWRs
SW50ZXJmYWNlKHBhcnNlZF9pZGwsIC8qIGlzX2NhbGxiYWNrID0gKi8gdHJ1ZSwgLyogaXNfbWl4
aW4gPSAqLyBmYWxzZSk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlICJuYW1l
c3BhY2UiOgorICAgICAgICAgICAgdGhpcy5tZW1iZXJzW3BhcnNlZF9pZGwubmFtZV0gPSBuZXcg
SWRsTmFtZXNwYWNlKHBhcnNlZF9pZGwpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAg
ZGVmYXVsdDoKQEAgLTI2Niw5ICs0ODIsNyBAQCBJZGxBcnJheS5wcm90b3R5cGUuaW50ZXJuYWxf
YWRkX2lkbHMgPSBmdW5jdGlvbihwYXJzZWRfaWRscykKICAgICB9LmJpbmQodGhpcykpOwogfTsK
IAotLy9AfQogSWRsQXJyYXkucHJvdG90eXBlLmFkZF9vYmplY3RzID0gZnVuY3Rpb24oZGljdCkK
LS8vQHsKIHsKICAgICAvKiogRW50cnkgcG9pbnQuICBTZWUgZG9jdW1lbnRhdGlvbiBhdCBiZWdp
bm5pbmcgb2YgZmlsZS4gKi8KICAgICBmb3IgKHZhciBrIGluIGRpY3QpCkBAIC0yODQsMTExICs0
OTgsMjIzIEBAIElkbEFycmF5LnByb3RvdHlwZS5hZGRfb2JqZWN0cyA9IGZ1bmN0aW9uKGRpY3Qp
CiAgICAgfQogfTsKIAotLy9AfQogSWRsQXJyYXkucHJvdG90eXBlLnByZXZlbnRfbXVsdGlwbGVf
dGVzdGluZyA9IGZ1bmN0aW9uKG5hbWUpCi0vL0B7CiB7CiAgICAgLyoqIEVudHJ5IHBvaW50LiAg
U2VlIGRvY3VtZW50YXRpb24gYXQgYmVnaW5uaW5nIG9mIGZpbGUuICovCiAgICAgdGhpcy5tZW1i
ZXJzW25hbWVdLnByZXZlbnRfbXVsdGlwbGVfdGVzdGluZyA9IHRydWU7CiB9OwogCi0vL0B9Ci1J
ZGxBcnJheS5wcm90b3R5cGUucmVjdXJzaXZlbHlfZ2V0X2ltcGxlbWVudHMgPSBmdW5jdGlvbihp
bnRlcmZhY2VfbmFtZSkKLS8vQHsKK0lkbEFycmF5LnByb3RvdHlwZS5pc19qc29uX3R5cGUgPSBm
dW5jdGlvbih0eXBlKQogewogICAgIC8qKgotICAgICAqIEhlbHBlciBmdW5jdGlvbiBmb3IgdGVz
dCgpLiAgUmV0dXJucyBhbiBhcnJheSBvZiB0aGluZ3MgdGhhdCBpbXBsZW1lbnQKLSAgICAgKiBp
bnRlcmZhY2VfbmFtZSwgc28gaWYgdGhlIElETCBjb250YWlucwotICAgICAqCi0gICAgICogICBB
IGltcGxlbWVudHMgQjsKLSAgICAgKiAgIEIgaW1wbGVtZW50cyBDOwotICAgICAqICAgQiBpbXBs
ZW1lbnRzIEQ7Ci0gICAgICoKLSAgICAgKiB0aGVuIHJlY3Vyc2l2ZWx5X2dldF9pbXBsZW1lbnRz
KCJBIikgc2hvdWxkIHJldHVybiBbIkIiLCAiQyIsICJEIl0uCisgICAgICogQ2hlY2tzIHdoZXRo
ZXIgdHlwZSBpcyBhIEpTT04gdHlwZSBhcyBwZXIKKyAgICAgKiBodHRwczovL2hleWNhbS5naXRo
dWIuaW8vd2ViaWRsLyNkZm4tanNvbi10eXBlcwogICAgICAqLwotICAgIHZhciByZXQgPSB0aGlz
WyJpbXBsZW1lbnRzIl1baW50ZXJmYWNlX25hbWVdOwotICAgIGlmIChyZXQgPT09IHVuZGVmaW5l
ZCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBbXTsKKworICAgIHZhciBpZGxUeXBlID0gdHlwZS5p
ZGxUeXBlOworCisgICAgaWYgKHR5cGUuZ2VuZXJpYyA9PSAiUHJvbWlzZSIpIHsgcmV0dXJuIGZh
bHNlOyB9CisKKyAgICAvLyAgbnVsbGFibGUgYW5kIGFubm90YXRlZCB0eXBlcyBkb24ndCBuZWVk
IHRvIGJlIGhhbmRsZWQgc2VwYXJhdGVseSwKKyAgICAvLyAgYXMgd2ViaWRsMiBkb2Vzbid0IHJl
cHJlc2VudCB0aGVtIHdyYXBwZWQtdXAgKGFzIHRoZXkncmUgZGVzY3JpYmVkCisgICAgLy8gIGlu
IFdlYklETCkuCisKKyAgICAvLyB1bmlvbiBhbmQgcmVjb3JkIHR5cGVzCisgICAgaWYgKHR5cGUu
dW5pb24gfHwgdHlwZS5nZW5lcmljID09ICJyZWNvcmQiKSB7CisgICAgICAgIHJldHVybiBpZGxU
eXBlLmV2ZXJ5KHRoaXMuaXNfanNvbl90eXBlLCB0aGlzKTsKKyAgICB9CisKKyAgICAvLyBzZXF1
ZW5jZSB0eXBlcworICAgIGlmICh0eXBlLmdlbmVyaWMgPT0gInNlcXVlbmNlIiB8fCB0eXBlLmdl
bmVyaWMgPT0gIkZyb3plbkFycmF5IikgeworICAgICAgICByZXR1cm4gdGhpcy5pc19qc29uX3R5
cGUoaWRsVHlwZVswXSk7CiAgICAgfQotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpc1siaW1w
bGVtZW50cyJdW2ludGVyZmFjZV9uYW1lXS5sZW5ndGg7IGkrKykKKworICAgIGlmICh0eXBlb2Yg
aWRsVHlwZSAhPSAic3RyaW5nIikgeyB0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgdHlwZSAi
ICsgSlNPTi5zdHJpbmdpZnkoaWRsVHlwZSkpOyB9CisKKyAgICBzd2l0Y2ggKGlkbFR5cGUpCiAg
ICAgewotICAgICAgICByZXQgPSByZXQuY29uY2F0KHRoaXMucmVjdXJzaXZlbHlfZ2V0X2ltcGxl
bWVudHMocmV0W2ldKSk7Ci0gICAgICAgIGlmIChyZXQuaW5kZXhPZihyZXRbaV0pICE9IHJldC5s
YXN0SW5kZXhPZihyZXRbaV0pKQotICAgICAgICB7Ci0gICAgICAgICAgICB0aHJvdyAiQ2lyY3Vs
YXIgaW1wbGVtZW50cyBzdGF0ZW1lbnRzIGludm9sdmluZyAiICsgcmV0W2ldOwotICAgICAgICB9
CisgICAgICAgLy8gIE51bWVyaWMgdHlwZXMKKyAgICAgICBjYXNlICJieXRlIjoKKyAgICAgICBj
YXNlICJvY3RldCI6CisgICAgICAgY2FzZSAic2hvcnQiOgorICAgICAgIGNhc2UgInVuc2lnbmVk
IHNob3J0IjoKKyAgICAgICBjYXNlICJsb25nIjoKKyAgICAgICBjYXNlICJ1bnNpZ25lZCBsb25n
IjoKKyAgICAgICBjYXNlICJsb25nIGxvbmciOgorICAgICAgIGNhc2UgInVuc2lnbmVkIGxvbmcg
bG9uZyI6CisgICAgICAgY2FzZSAiZmxvYXQiOgorICAgICAgIGNhc2UgImRvdWJsZSI6CisgICAg
ICAgY2FzZSAidW5yZXN0cmljdGVkIGZsb2F0IjoKKyAgICAgICBjYXNlICJ1bnJlc3RyaWN0ZWQg
ZG91YmxlIjoKKyAgICAgICAvLyBib29sZWFuCisgICAgICAgY2FzZSAiYm9vbGVhbiI6CisgICAg
ICAgLy8gc3RyaW5nIHR5cGVzCisgICAgICAgY2FzZSAiRE9NU3RyaW5nIjoKKyAgICAgICBjYXNl
ICJCeXRlU3RyaW5nIjoKKyAgICAgICBjYXNlICJVU1ZTdHJpbmciOgorICAgICAgIC8vIG9iamVj
dCB0eXBlCisgICAgICAgY2FzZSAib2JqZWN0IjoKKyAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgY2FzZSAiRXJyb3IiOgorICAgICAgIGNhc2UgIkRPTUV4Y2VwdGlvbiI6CisgICAgICAg
Y2FzZSAiSW50OEFycmF5IjoKKyAgICAgICBjYXNlICJJbnQxNkFycmF5IjoKKyAgICAgICBjYXNl
ICJJbnQzMkFycmF5IjoKKyAgICAgICBjYXNlICJVaW50OEFycmF5IjoKKyAgICAgICBjYXNlICJV
aW50MTZBcnJheSI6CisgICAgICAgY2FzZSAiVWludDMyQXJyYXkiOgorICAgICAgIGNhc2UgIlVp
bnQ4Q2xhbXBlZEFycmF5IjoKKyAgICAgICBjYXNlICJGbG9hdDMyQXJyYXkiOgorICAgICAgIGNh
c2UgIkZsb2F0NjRBcnJheSI6CisgICAgICAgY2FzZSAiQXJyYXlCdWZmZXIiOgorICAgICAgIGNh
c2UgIkRhdGFWaWV3IjoKKyAgICAgICBjYXNlICJhbnkiOgorICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgdmFyIHRoaW5nID0gdGhpcy5tZW1iZXJz
W2lkbFR5cGVdOworICAgICAgICAgICBpZiAoIXRoaW5nKSB7IHRocm93IG5ldyBFcnJvcigiVHlw
ZSAiICsgaWRsVHlwZSArICIgbm90IGZvdW5kIik7IH0KKyAgICAgICAgICAgaWYgKHRoaW5nIGlu
c3RhbmNlb2YgSWRsRW51bSkgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgICAgICAgIGlmICh0aGlu
ZyBpbnN0YW5jZW9mIElkbFR5cGVkZWYpIHsKKyAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmlz
X2pzb25fdHlwZSh0aGluZy5pZGxUeXBlKTsKKyAgICAgICAgICAgfQorCisgICAgICAgICAgIC8v
ICBkaWN0aW9uYXJpZXMgd2hlcmUgYWxsIG9mIHRoZWlyIG1lbWJlcnMgYXJlIEpTT04gdHlwZXMK
KyAgICAgICAgICAgaWYgKHRoaW5nIGluc3RhbmNlb2YgSWRsRGljdGlvbmFyeSkgeworICAgICAg
ICAgICAgICAgY29uc3QgbWFwID0gbmV3IE1hcCgpOworICAgICAgICAgICAgICAgZm9yIChjb25z
dCBkaWN0IG9mIHRoaW5nLmdldF9yZXZlcnNlX2luaGVyaXRhbmNlX3N0YWNrKCkpIHsKKyAgICAg
ICAgICAgICAgICAgICBmb3IgKGNvbnN0IG0gb2YgZGljdC5tZW1iZXJzKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgIG1hcC5zZXQobS5uYW1lLCBtLmlkbFR5cGUpOworICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgIHJldHVybiBBcnJheS5mcm9t
KG1hcC52YWx1ZXMoKSkuZXZlcnkodGhpcy5pc19qc29uX3R5cGUsIHRoaXMpOworICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgLy8gIGludGVyZmFjZSB0eXBlcyB0aGF0IGhhdmUgYSB0b0pTT04g
b3BlcmF0aW9uIGRlY2xhcmVkIG9uIHRoZW1zZWx2ZXMgb3IKKyAgICAgICAgICAgLy8gIG9uZSBv
ZiB0aGVpciBpbmhlcml0ZWQgaW50ZXJmYWNlcy4KKyAgICAgICAgICAgaWYgKHRoaW5nIGluc3Rh
bmNlb2YgSWRsSW50ZXJmYWNlKSB7CisgICAgICAgICAgICAgICB2YXIgYmFzZTsKKyAgICAgICAg
ICAgICAgIHdoaWxlICh0aGluZykKKyAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICBpZiAodGhpbmcuaGFzX3RvX2pzb25fcmVndWxhcl9vcGVyYXRpb24oKSkgeyByZXR1cm4gdHJ1
ZTsgfQorICAgICAgICAgICAgICAgICAgIHZhciBtaXhpbnMgPSB0aGlzLmluY2x1ZGVzW3RoaW5n
Lm5hbWVdOworICAgICAgICAgICAgICAgICAgIGlmIChtaXhpbnMpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgbWl4aW5zID0gbWl4aW5zLm1hcChmdW5jdGlvbihpZCkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdmFyIG1peGluID0gdGhpcy5tZW1iZXJzW2lkXTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICghbWl4aW4pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoIkludGVyZmFjZSAiICsgaWQgKyAiIG5vdCBmb3VuZCAoaW1w
bGVtZW50ZWQgYnkgIiArIHRoaW5nLm5hbWUgKyAiKSIpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1peGluOworICAgICAg
ICAgICAgICAgICAgICAgICB9LCB0aGlzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1p
eGlucy5zb21lKGZ1bmN0aW9uKG0pIHsgcmV0dXJuIG0uaGFzX3RvX2pzb25fcmVndWxhcl9vcGVy
YXRpb24oKSB9ICkpIHsgcmV0dXJuIHRydWU7IH0KKyAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgaWYgKCF0aGluZy5iYXNlKSB7IHJldHVybiBmYWxzZTsgfQorICAgICAg
ICAgICAgICAgICAgIGJhc2UgPSB0aGlzLm1lbWJlcnNbdGhpbmcuYmFzZV07CisgICAgICAgICAg
ICAgICAgICAgaWYgKCFiYXNlKSB7CisgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBF
cnJvcigiSW50ZXJmYWNlICIgKyB0aGluZy5iYXNlICsgIiBub3QgZm91bmQgKGluaGVyaXRlZCBi
eSAiICsgdGhpbmcubmFtZSArICIpIik7CisgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgIHRoaW5nID0gYmFzZTsKKyAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgfQorICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQotICAgIHJldHVybiByZXQ7CiB9OwogCitmdW5jdGlvbiBleHBvc3VyZV9zZXQob2JqZWN0
LCBkZWZhdWx0X3NldCkgeworICAgIHZhciBleHBvc2VkID0gb2JqZWN0LmV4dEF0dHJzICYmIG9i
amVjdC5leHRBdHRycy5maWx0ZXIoYSA9PiBhLm5hbWUgPT09ICJFeHBvc2VkIik7CisgICAgaWYg
KGV4cG9zZWQgJiYgZXhwb3NlZC5sZW5ndGggPiAxKSB7CisgICAgICAgIHRocm93IG5ldyBJZGxI
YXJuZXNzRXJyb3IoCisgICAgICAgICAgICBgTXVsdGlwbGUgJ0V4cG9zZWQnIGV4dGVuZGVkIGF0
dHJpYnV0ZXMgb24gJHtvYmplY3QubmFtZX1gKTsKKyAgICB9CisKKyAgICBsZXQgcmVzdWx0ID0g
ZGVmYXVsdF9zZXQgfHwgWyJXaW5kb3ciXTsKKyAgICBpZiAocmVzdWx0ICYmICEocmVzdWx0IGlu
c3RhbmNlb2YgU2V0KSkgeworICAgICAgICByZXN1bHQgPSBuZXcgU2V0KHJlc3VsdCk7CisgICAg
fQorICAgIGlmIChleHBvc2VkICYmIGV4cG9zZWQubGVuZ3RoKSB7CisgICAgICAgIGNvbnN0IHsg
cmhzIH0gPSBleHBvc2VkWzBdOworICAgICAgICAvLyBDb3VsZCBiZSBhIGxpc3Qgb3IgYSBzdHJp
bmcuCisgICAgICAgIGNvbnN0IHNldCA9IHJocy50eXBlID09PSAiaWRlbnRpZmllci1saXN0IiA/
CisgICAgICAgICAgICByaHMudmFsdWUubWFwKGlkID0+IGlkLnZhbHVlKSA6CisgICAgICAgICAg
ICBbIHJocy52YWx1ZSBdOworICAgICAgICByZXN1bHQgPSBuZXcgU2V0KHNldCk7CisgICAgfQor
ICAgIGlmIChyZXN1bHQgJiYgcmVzdWx0LmhhcygiV29ya2VyIikpIHsKKyAgICAgICAgcmVzdWx0
LmRlbGV0ZSgiV29ya2VyIik7CisgICAgICAgIHJlc3VsdC5hZGQoIkRlZGljYXRlZFdvcmtlciIp
OworICAgICAgICByZXN1bHQuYWRkKCJTZXJ2aWNlV29ya2VyIik7CisgICAgICAgIHJlc3VsdC5h
ZGQoIlNoYXJlZFdvcmtlciIpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBmdW5j
dGlvbiBleHBvc2VkX2luKGdsb2JhbHMpIHsKLSAgICBpZiAoJ2RvY3VtZW50JyBpbiBzZWxmKSB7
Ci0gICAgICAgIHJldHVybiBnbG9iYWxzLmluZGV4T2YoIldpbmRvdyIpID49IDA7CisgICAgaWYg
KCdXaW5kb3cnIGluIHNlbGYpIHsKKyAgICAgICAgcmV0dXJuIGdsb2JhbHMuaGFzKCJXaW5kb3ci
KTsKICAgICB9CiAgICAgaWYgKCdEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZScgaW4gc2VsZiAm
JgogICAgICAgICBzZWxmIGluc3RhbmNlb2YgRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUpIHsK
LSAgICAgICAgcmV0dXJuIGdsb2JhbHMuaW5kZXhPZigiV29ya2VyIikgPj0gMCB8fAotICAgICAg
ICAgICAgICAgZ2xvYmFscy5pbmRleE9mKCJEZWRpY2F0ZWRXb3JrZXIiKSA+PSAwOworICAgICAg
ICByZXR1cm4gZ2xvYmFscy5oYXMoIkRlZGljYXRlZFdvcmtlciIpOwogICAgIH0KICAgICBpZiAo
J1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlJyBpbiBzZWxmICYmCiAgICAgICAgIHNlbGYgaW5zdGFu
Y2VvZiBTaGFyZWRXb3JrZXJHbG9iYWxTY29wZSkgewotICAgICAgICByZXR1cm4gZ2xvYmFscy5p
bmRleE9mKCJXb3JrZXIiKSA+PSAwIHx8Ci0gICAgICAgICAgICAgICBnbG9iYWxzLmluZGV4T2Yo
IlNoYXJlZFdvcmtlciIpID49IDA7CisgICAgICAgIHJldHVybiBnbG9iYWxzLmhhcygiU2hhcmVk
V29ya2VyIik7CiAgICAgfQogICAgIGlmICgnU2VydmljZVdvcmtlckdsb2JhbFNjb3BlJyBpbiBz
ZWxmICYmCiAgICAgICAgIHNlbGYgaW5zdGFuY2VvZiBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUp
IHsKLSAgICAgICAgcmV0dXJuIGdsb2JhbHMuaW5kZXhPZigiV29ya2VyIikgPj0gMCB8fAotICAg
ICAgICAgICAgICAgZ2xvYmFscy5pbmRleE9mKCJTZXJ2aWNlV29ya2VyIikgPj0gMDsKKyAgICAg
ICAgcmV0dXJuIGdsb2JhbHMuaGFzKCJTZXJ2aWNlV29ya2VyIik7CisgICAgfQorICAgIHRocm93
IG5ldyBJZGxIYXJuZXNzRXJyb3IoIlVuZXhwZWN0ZWQgZ2xvYmFsIG9iamVjdCIpOworfQorCisv
KioKKyAqIEFzc2VydHMgdGhhdCB0aGUgZ2l2ZW4gZXJyb3IgbWVzc2FnZSBpcyB0aHJvd24gZm9y
IHRoZSBnaXZlbiBmdW5jdGlvbi4KKyAqIEBwYXJhbSB7c3RyaW5nfElkbEhhcm5lc3NFcnJvcn0g
ZXJyb3IgRXhwZWN0ZWQgRXJyb3IgbWVzc2FnZS4KKyAqIEBwYXJhbSB7RnVuY3Rpb259IGlkbEFy
cmF5RnVuYyBGdW5jdGlvbiBvcGVyYXRpbmcgb24gYW4gSWRsQXJyYXkgdGhhdCBzaG91bGQgdGhy
b3cuCisgKi8KK0lkbEFycmF5LnByb3RvdHlwZS5hc3NlcnRfdGhyb3dzID0gZnVuY3Rpb24oZXJy
b3IsIGlkbEFycmF5RnVuYykKK3sKKyAgICB0cnkgeworICAgICAgICBpZGxBcnJheUZ1bmMuY2Fs
bCh0aGlzLCB0aGlzKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGlmIChlIGluc3RhbmNl
b2YgQXNzZXJ0aW9uRXJyb3IpIHsKKyAgICAgICAgICAgIHRocm93IGU7CisgICAgICAgIH0KKyAg
ICAgICAgLy8gQXNzZXJ0aW9ucyBmb3IgYmVoYXZpb3VyIG9mIHRoZSBpZGxoYXJuZXNzLmpzIGVu
Z2luZS4KKyAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgSWRsSGFybmVzc0Vycm9yKSB7Cisg
ICAgICAgICAgICBlcnJvciA9IGVycm9yLm1lc3NhZ2U7CisgICAgICAgIH0KKyAgICAgICAgaWYg
KGUubWVzc2FnZSAhPT0gZXJyb3IpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJZGxIYXJuZXNz
RXJyb3IoYCR7aWRsQXJyYXlGdW5jfSB0aHJldyAiJHtlfSIsIG5vdCB0aGUgZXhwZWN0ZWQgSWRs
SGFybmVzc0Vycm9yICIke2Vycm9yfSJgKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47CiAg
ICAgfQotICAgIHRocm93ICJVbmV4cGVjdGVkIGdsb2JhbCBvYmplY3QiOworICAgIHRocm93IG5l
dyBJZGxIYXJuZXNzRXJyb3IoYCR7aWRsQXJyYXlGdW5jfSBkaWQgbm90IHRocm93IHRoZSBleHBl
Y3RlZCBJZGxIYXJuZXNzRXJyb3JgKTsKIH0KIAotLy9AfQogSWRsQXJyYXkucHJvdG90eXBlLnRl
c3QgPSBmdW5jdGlvbigpCi0vL0B7CiB7CiAgICAgLyoqIEVudHJ5IHBvaW50LiAgU2VlIGRvY3Vt
ZW50YXRpb24gYXQgYmVnaW5uaW5nIG9mIGZpbGUuICovCiAKLSAgICAvLyBGaXJzdCBtZXJnZSBp
biBhbGwgdGhlIHBhcnRpYWwgaW50ZXJmYWNlcyBhbmQgaW1wbGVtZW50cyBzdGF0ZW1lbnRzIHdl
Ci0gICAgLy8gZW5jb3VudGVyZWQuCi0gICAgdGhpcy5wYXJ0aWFscy5mb3JFYWNoKGZ1bmN0aW9u
KHBhcnNlZF9pZGwpCi0gICAgewotICAgICAgICBpZiAoIShwYXJzZWRfaWRsLm5hbWUgaW4gdGhp
cy5tZW1iZXJzKQotICAgICAgICB8fCAhKHRoaXMubWVtYmVyc1twYXJzZWRfaWRsLm5hbWVdIGlu
c3RhbmNlb2YgSWRsSW50ZXJmYWNlKSkKLSAgICAgICAgewotICAgICAgICAgICAgdGhyb3cgIlBh
cnRpYWwgaW50ZXJmYWNlICIgKyBwYXJzZWRfaWRsLm5hbWUgKyAiIHdpdGggbm8gb3JpZ2luYWwg
aW50ZXJmYWNlIjsKKyAgICAvLyBGaXJzdCBtZXJnZSBpbiBhbGwgcGFydGlhbCBkZWZpbml0aW9u
cyBhbmQgaW50ZXJmYWNlIG1peGlucy4KKyAgICB0aGlzLm1lcmdlX3BhcnRpYWxzKCk7CisgICAg
dGhpcy5tZXJnZV9taXhpbnMoKTsKKworICAgIC8vIEFzc2VydCBCIGRlZmluZWQgZm9yIEEgOiBC
CisgICAgZm9yIChjb25zdCBtZW1iZXIgb2YgT2JqZWN0LnZhbHVlcyh0aGlzLm1lbWJlcnMpLmZp
bHRlcihtID0+IG0uYmFzZSkpIHsKKyAgICAgICAgY29uc3QgbGhzID0gbWVtYmVyLm5hbWU7Cisg
ICAgICAgIGNvbnN0IHJocyA9IG1lbWJlci5iYXNlOworICAgICAgICBpZiAoIShyaHMgaW4gdGhp
cy5tZW1iZXJzKSkgdGhyb3cgbmV3IElkbEhhcm5lc3NFcnJvcihgJHtsaHN9IGluaGVyaXRzICR7
cmhzfSwgYnV0ICR7cmhzfSBpcyB1bmRlZmluZWQuYCk7CisgICAgICAgIGNvbnN0IGxoc19pc19p
bnRlcmZhY2UgPSB0aGlzLm1lbWJlcnNbbGhzXSBpbnN0YW5jZW9mIElkbEludGVyZmFjZTsKKyAg
ICAgICAgY29uc3QgcmhzX2lzX2ludGVyZmFjZSA9IHRoaXMubWVtYmVyc1tyaHNdIGluc3RhbmNl
b2YgSWRsSW50ZXJmYWNlOworICAgICAgICBpZiAocmhzX2lzX2ludGVyZmFjZSAhPSBsaHNfaXNf
aW50ZXJmYWNlKSB7CisgICAgICAgICAgICBpZiAoIWxoc19pc19pbnRlcmZhY2UpIHRocm93IG5l
dyBJZGxIYXJuZXNzRXJyb3IoYCR7bGhzfSBpbmhlcml0cyAke3Joc30sIGJ1dCAke2xoc30gaXMg
bm90IGFuIGludGVyZmFjZS5gKTsKKyAgICAgICAgICAgIGlmICghcmhzX2lzX2ludGVyZmFjZSkg
dGhyb3cgbmV3IElkbEhhcm5lc3NFcnJvcihgJHtsaHN9IGluaGVyaXRzICR7cmhzfSwgYnV0ICR7
cmhzfSBpcyBub3QgYW4gaW50ZXJmYWNlLmApOwogICAgICAgICB9Ci0gICAgICAgIGlmIChwYXJz
ZWRfaWRsLmV4dEF0dHJzKQotICAgICAgICB7Ci0gICAgICAgICAgICBwYXJzZWRfaWRsLmV4dEF0
dHJzLmZvckVhY2goZnVuY3Rpb24oZXh0QXR0cikKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICB0aGlzLm1lbWJlcnNbcGFyc2VkX2lkbC5uYW1lXS5leHRBdHRycy5wdXNoKGV4dEF0dHIp
OwotICAgICAgICAgICAgfS5iaW5kKHRoaXMpKTsKLSAgICAgICAgfQotICAgICAgICBwYXJzZWRf
aWRsLm1lbWJlcnMuZm9yRWFjaChmdW5jdGlvbihtZW1iZXIpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIHRoaXMubWVtYmVyc1twYXJzZWRfaWRsLm5hbWVdLm1lbWJlcnMucHVzaChuZXcgSWRsSW50
ZXJmYWNlTWVtYmVyKG1lbWJlcikpOwotICAgICAgICB9LmJpbmQodGhpcykpOwotICAgIH0uYmlu
ZCh0aGlzKSk7Ci0gICAgdGhpcy5wYXJ0aWFscyA9IFtdOwotCi0gICAgZm9yICh2YXIgbGhzIGlu
IHRoaXNbImltcGxlbWVudHMiXSkKLSAgICB7Ci0gICAgICAgIHRoaXMucmVjdXJzaXZlbHlfZ2V0
X2ltcGxlbWVudHMobGhzKS5mb3JFYWNoKGZ1bmN0aW9uKHJocykKLSAgICAgICAgewotICAgICAg
ICAgICAgdmFyIGVyclN0ciA9IGxocyArICIgaW1wbGVtZW50cyAiICsgcmhzICsgIiwgYnV0ICI7
Ci0gICAgICAgICAgICBpZiAoIShsaHMgaW4gdGhpcy5tZW1iZXJzKSkgdGhyb3cgZXJyU3RyICsg
bGhzICsgIiBpcyB1bmRlZmluZWQuIjsKLSAgICAgICAgICAgIGlmICghKHRoaXMubWVtYmVyc1ts
aHNdIGluc3RhbmNlb2YgSWRsSW50ZXJmYWNlKSkgdGhyb3cgZXJyU3RyICsgbGhzICsgIiBpcyBu
b3QgYW4gaW50ZXJmYWNlLiI7Ci0gICAgICAgICAgICBpZiAoIShyaHMgaW4gdGhpcy5tZW1iZXJz
KSkgdGhyb3cgZXJyU3RyICsgcmhzICsgIiBpcyB1bmRlZmluZWQuIjsKLSAgICAgICAgICAgIGlm
ICghKHRoaXMubWVtYmVyc1tyaHNdIGluc3RhbmNlb2YgSWRsSW50ZXJmYWNlKSkgdGhyb3cgZXJy
U3RyICsgcmhzICsgIiBpcyBub3QgYW4gaW50ZXJmYWNlLiI7Ci0gICAgICAgICAgICB0aGlzLm1l
bWJlcnNbcmhzXS5tZW1iZXJzLmZvckVhY2goZnVuY3Rpb24obWVtYmVyKQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIHRoaXMubWVtYmVyc1tsaHNdLm1lbWJlcnMucHVzaChuZXcgSWRs
SW50ZXJmYWNlTWVtYmVyKG1lbWJlcikpOwotICAgICAgICAgICAgfS5iaW5kKHRoaXMpKTsKLSAg
ICAgICAgfS5iaW5kKHRoaXMpKTsKKyAgICAgICAgLy8gQ2hlY2sgZm9yIGNpcmN1bGFyIGRlcGVu
ZGVuY2llcy4KKyAgICAgICAgbWVtYmVyLmdldF9yZXZlcnNlX2luaGVyaXRhbmNlX3N0YWNrKCk7
CiAgICAgfQotICAgIHRoaXNbImltcGxlbWVudHMiXSA9IHt9OwogCiAgICAgT2JqZWN0LmdldE93
blByb3BlcnR5TmFtZXModGhpcy5tZW1iZXJzKS5mb3JFYWNoKGZ1bmN0aW9uKG1lbWJlck5hbWUp
IHsKICAgICAgICAgdmFyIG1lbWJlciA9IHRoaXMubWVtYmVyc1ttZW1iZXJOYW1lXTsKQEAgLTM5
NiwxNSArNzIyLDkgQEAgSWRsQXJyYXkucHJvdG90eXBlLnRlc3QgPSBmdW5jdGlvbigpCiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICB2YXIgZXhwb3NlZCA9IG1lbWJl
ci5leHRBdHRycy5maWx0ZXIoZnVuY3Rpb24oYSkgeyByZXR1cm4gYS5uYW1lID09ICJFeHBvc2Vk
IiB9KTsKLSAgICAgICAgaWYgKGV4cG9zZWQubGVuZ3RoID4gMSkgewotICAgICAgICAgICAgdGhy
b3cgIlVuZXhwZWN0ZWQgRXhwb3NlZCBleHRlbmRlZCBhdHRyaWJ1dGVzIG9uICIgKyBtZW1iZXJO
YW1lICsgIjogIiArIGV4cG9zZWQ7Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgZ2xvYmFscyA9
IGV4cG9zZWQubGVuZ3RoID09PSAxCi0gICAgICAgICAgICAgICAgICAgID8gZXhwb3NlZFswXS5y
aHMudmFsdWUKLSAgICAgICAgICAgICAgICAgICAgOiBbIldpbmRvdyJdOworICAgICAgICB2YXIg
Z2xvYmFscyA9IGV4cG9zdXJlX3NldChtZW1iZXIpOwogICAgICAgICBtZW1iZXIuZXhwb3NlZCA9
IGV4cG9zZWRfaW4oZ2xvYmFscyk7CisgICAgICAgIG1lbWJlci5leHBvc3VyZVNldCA9IGdsb2Jh
bHM7CiAgICAgfS5iaW5kKHRoaXMpKTsKIAogICAgIC8vIE5vdyBydW4gdGVzdCgpIG9uIGV2ZXJ5
IG1lbWJlciwgYW5kIHRlc3Rfb2JqZWN0KCkgZm9yIGV2ZXJ5IG9iamVjdC4KQEAgLTQxMywxOCAr
NzMzLDE5NCBAQCBJZGxBcnJheS5wcm90b3R5cGUudGVzdCA9IGZ1bmN0aW9uKCkKICAgICAgICAg
dGhpcy5tZW1iZXJzW25hbWVdLnRlc3QoKTsKICAgICAgICAgaWYgKG5hbWUgaW4gdGhpcy5vYmpl
Y3RzKQogICAgICAgICB7Ci0gICAgICAgICAgICB0aGlzLm9iamVjdHNbbmFtZV0uZm9yRWFjaChm
dW5jdGlvbihzdHIpCisgICAgICAgICAgICBjb25zdCBvYmplY3RzID0gdGhpcy5vYmplY3RzW25h
bWVdOworICAgICAgICAgICAgaWYgKCFvYmplY3RzIHx8ICFBcnJheS5pc0FycmF5KG9iamVjdHMp
KSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElkbEhhcm5lc3NFcnJvcihgSW52YWxpZCBv
ciBlbXB0eSBvYmplY3RzIGZvciBtZW1iZXIgJHtuYW1lfWApOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgb2JqZWN0cy5mb3JFYWNoKGZ1bmN0aW9uKHN0cikKICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBpZiAoIXRoaXMubWVtYmVyc1tuYW1lXSB8fCAhKHRoaXMubWVtYmVyc1tu
YW1lXSBpbnN0YW5jZW9mIElkbEludGVyZmFjZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhy
b3cgbmV3IElkbEhhcm5lc3NFcnJvcihgSW52YWxpZCBvYmplY3QgbWVtYmVyIG5hbWUgJHtuYW1l
fWApOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB0aGlzLm1lbWJlcnNbbmFt
ZV0udGVzdF9vYmplY3Qoc3RyKTsKICAgICAgICAgICAgIH0uYmluZCh0aGlzKSk7CiAgICAgICAg
IH0KICAgICB9CiB9OwogCi0vL0B9CitJZGxBcnJheS5wcm90b3R5cGUubWVyZ2VfcGFydGlhbHMg
PSBmdW5jdGlvbigpCit7CisgICAgY29uc3QgdGVzdGVkUGFydGlhbHMgPSBuZXcgTWFwKCk7Cisg
ICAgdGhpcy5wYXJ0aWFscy5mb3JFYWNoKGZ1bmN0aW9uKHBhcnNlZF9pZGwpCisgICAgeworICAg
ICAgICBjb25zdCBvcmlnaW5hbEV4aXN0cyA9IHBhcnNlZF9pZGwubmFtZSBpbiB0aGlzLm1lbWJl
cnMKKyAgICAgICAgICAgICYmICh0aGlzLm1lbWJlcnNbcGFyc2VkX2lkbC5uYW1lXSBpbnN0YW5j
ZW9mIElkbEludGVyZmFjZQorICAgICAgICAgICAgICAgIHx8IHRoaXMubWVtYmVyc1twYXJzZWRf
aWRsLm5hbWVdIGluc3RhbmNlb2YgSWRsRGljdGlvbmFyeQorICAgICAgICAgICAgICAgIHx8IHRo
aXMubWVtYmVyc1twYXJzZWRfaWRsLm5hbWVdIGluc3RhbmNlb2YgSWRsTmFtZXNwYWNlKTsKKwor
ICAgICAgICAvLyBFbnN1cmUgdW5pcXVlIHRlc3QgbmFtZSBpbiBjYXNlIG9mIG11bHRpcGxlIHBh
cnRpYWxzLgorICAgICAgICBsZXQgcGFydGlhbFRlc3ROYW1lID0gcGFyc2VkX2lkbC5uYW1lOwor
ICAgICAgICBsZXQgcGFydGlhbFRlc3RDb3VudCA9IDE7CisgICAgICAgIGlmICh0ZXN0ZWRQYXJ0
aWFscy5oYXMocGFyc2VkX2lkbC5uYW1lKSkgeworICAgICAgICAgICAgcGFydGlhbFRlc3RDb3Vu
dCArPSB0ZXN0ZWRQYXJ0aWFscy5nZXQocGFyc2VkX2lkbC5uYW1lKTsKKyAgICAgICAgICAgIHBh
cnRpYWxUZXN0TmFtZSA9IGAke3BhcnRpYWxUZXN0TmFtZX1bJHtwYXJ0aWFsVGVzdENvdW50fV1g
OworICAgICAgICB9CisgICAgICAgIHRlc3RlZFBhcnRpYWxzLnNldChwYXJzZWRfaWRsLm5hbWUs
IHBhcnRpYWxUZXN0Q291bnQpOworCisgICAgICAgIGlmICghcGFyc2VkX2lkbC51bnRlc3RlZCkg
eworICAgICAgICAgICAgdGVzdChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0
X3RydWUob3JpZ2luYWxFeGlzdHMsIGBPcmlnaW5hbCAke3BhcnNlZF9pZGwudHlwZX0gc2hvdWxk
IGJlIGRlZmluZWRgKTsKKworICAgICAgICAgICAgICAgIHZhciBleHBlY3RlZDsKKyAgICAgICAg
ICAgICAgICBzd2l0Y2ggKHBhcnNlZF9pZGwudHlwZSkgeworICAgICAgICAgICAgICAgICAgICBj
YXNlICdkaWN0aW9uYXJ5JzogZXhwZWN0ZWQgPSBJZGxEaWN0aW9uYXJ5OyBicmVhazsKKyAgICAg
ICAgICAgICAgICAgICAgY2FzZSAnbmFtZXNwYWNlJzogZXhwZWN0ZWQgPSBJZGxOYW1lc3BhY2U7
IGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlICdpbnRlcmZhY2UnOgorICAgICAgICAg
ICAgICAgICAgICBjYXNlICdpbnRlcmZhY2UgbWl4aW4nOgorICAgICAgICAgICAgICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQgPSBJZGxJbnRlcmZhY2U7
IGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBhc3NlcnRfdHJ1ZSgK
KyAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQucHJvdG90eXBlLmlzUHJvdG90eXBlT2YodGhp
cy5tZW1iZXJzW3BhcnNlZF9pZGwubmFtZV0pLAorICAgICAgICAgICAgICAgICAgICBgT3JpZ2lu
YWwgJHtwYXJzZWRfaWRsLm5hbWV9IGRlZmluaXRpb24gc2hvdWxkIGhhdmUgdHlwZSAke3BhcnNl
ZF9pZGwudHlwZX1gKTsKKyAgICAgICAgICAgIH0uYmluZCh0aGlzKSwgYFBhcnRpYWwgJHtwYXJz
ZWRfaWRsLnR5cGV9ICR7cGFydGlhbFRlc3ROYW1lfTogb3JpZ2luYWwgJHtwYXJzZWRfaWRsLnR5
cGV9IGRlZmluZWRgKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIW9yaWdpbmFsRXhpc3RzKSB7
CisgICAgICAgICAgICAvLyBOb3QgZ29vZC4uIGJ1dCBrZWVwIGNhbG0gYW5kIGNhcnJ5IG9uLgor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHBhcnNlZF9pZGwu
ZXh0QXR0cnMpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIFNwZWNpYWwtY2FzZSAiRXhwb3Nl
ZCIuIE11c3QgYmUgYSBzdWJzZXQgb2Ygb3JpZ2luYWwgaW50ZXJmYWNlJ3MgZXhwb3N1cmUuCisg
ICAgICAgICAgICAvLyBFeHBvc2VkIG9uIGEgcGFydGlhbCBpcyB0aGUgZXF1aXZhbGVudCBvZiBo
YXZpbmcgdGhlIHNhbWUgRXhwb3NlZCBvbiBhbGwgbmVzdGVkIG1lbWJlcnMuCisgICAgICAgICAg
ICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2hleWNhbS93ZWJpZGwvaXNzdWVzLzE1NCBmb3Ig
ZGlzY3JlcGVuY3kgYmV0d2VlbiBFeHBvc2VkIGFuZAorICAgICAgICAgICAgLy8gb3RoZXIgZXh0
ZW5kZWQgYXR0cmlidXRlcyBvbiBwYXJ0aWFsIGludGVyZmFjZXMuCisgICAgICAgICAgICBjb25z
dCBleHBvc3VyZUF0dHIgPSBwYXJzZWRfaWRsLmV4dEF0dHJzLmZpbmQoYSA9PiBhLm5hbWUgPT09
ICJFeHBvc2VkIik7CisgICAgICAgICAgICBpZiAoZXhwb3N1cmVBdHRyKSB7CisgICAgICAgICAg
ICAgICAgaWYgKCFwYXJzZWRfaWRsLnVudGVzdGVkKSB7CisgICAgICAgICAgICAgICAgICAgIHRl
c3QoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFydGlhbEV4
cG9zdXJlID0gZXhwb3N1cmVfc2V0KHBhcnNlZF9pZGwpOworICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgbWVtYmVyRXhwb3N1cmUgPSBleHBvc3VyZV9zZXQodGhpcy5tZW1iZXJzW3BhcnNl
ZF9pZGwubmFtZV0pOworICAgICAgICAgICAgICAgICAgICAgICAgcGFydGlhbEV4cG9zdXJlLmZv
ckVhY2gobmFtZSA9PiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFtZW1iZXJF
eHBvc3VyZSB8fCAhbWVtYmVyRXhwb3N1cmUuaGFzKG5hbWUpKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRocm93IG5ldyBJZGxIYXJuZXNzRXJyb3IoCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBgUGFydGlhbCAke3BhcnNlZF9pZGwubmFtZX0gJHtwYXJz
ZWRfaWRsLnR5cGV9IGlzIGV4cG9zZWQgdG8gJyR7bmFtZX0nLCB0aGUgb3JpZ2luYWwgJHtwYXJz
ZWRfaWRsLnR5cGV9IGlzIG5vdC5gKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgfS5iaW5kKHRo
aXMpLCBgUGFydGlhbCAke3BhcnNlZF9pZGwudHlwZX0gJHtwYXJ0aWFsVGVzdE5hbWV9OiB2YWxp
ZCBleHBvc3VyZSBzZXRgKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcGFy
c2VkX2lkbC5tZW1iZXJzLmZvckVhY2goZnVuY3Rpb24gKG1lbWJlcikgeworICAgICAgICAgICAg
ICAgICAgICBtZW1iZXIuZXh0QXR0cnMucHVzaChleHBvc3VyZUF0dHIpOworICAgICAgICAgICAg
ICAgIH0uYmluZCh0aGlzKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHBhcnNlZF9p
ZGwuZXh0QXR0cnMuZm9yRWFjaChmdW5jdGlvbihleHRBdHRyKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIC8vICJFeHBvc2VkIiBhbHJlYWR5IGhhbmRsZWQgYWJvdmUuCisgICAgICAg
ICAgICAgICAgaWYgKGV4dEF0dHIubmFtZSA9PT0gIkV4cG9zZWQiKSB7CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdGhpcy5t
ZW1iZXJzW3BhcnNlZF9pZGwubmFtZV0uZXh0QXR0cnMucHVzaChleHRBdHRyKTsKKyAgICAgICAg
ICAgIH0uYmluZCh0aGlzKSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHBhcnNlZF9pZGwubWVt
YmVycy5sZW5ndGgpIHsKKyAgICAgICAgICAgIHRlc3QoZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgICAgIHZhciBjbGFzaCA9IHBhcnNlZF9pZGwubWVtYmVycy5maW5kKGZ1bmN0aW9uKG1lbWJl
cikgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5tZW1iZXJzW3BhcnNlZF9pZGwu
bmFtZV0ubWVtYmVycy5maW5kKGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiB0aGlzLmFyZV9kdXBsaWNhdGVfbWVtYmVycyhtLCBtZW1iZXIpOworICAgICAgICAg
ICAgICAgICAgICB9LmJpbmQodGhpcykpOworICAgICAgICAgICAgICAgIH0uYmluZCh0aGlzKSk7
CisgICAgICAgICAgICAgICAgcGFyc2VkX2lkbC5tZW1iZXJzLmZvckVhY2goZnVuY3Rpb24obWVt
YmVyKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5tZW1iZXJz
W3BhcnNlZF9pZGwubmFtZV0ubWVtYmVycy5wdXNoKG5ldyBJZGxJbnRlcmZhY2VNZW1iZXIobWVt
YmVyKSk7CisgICAgICAgICAgICAgICAgfS5iaW5kKHRoaXMpKTsKKyAgICAgICAgICAgICAgICBh
c3NlcnRfdHJ1ZSghY2xhc2gsICJtZW1iZXIgIiArIChjbGFzaCAmJiBjbGFzaC5uYW1lKSArICIg
aXMgdW5pcXVlIik7CisgICAgICAgICAgICB9LmJpbmQodGhpcyksIGBQYXJ0aWFsICR7cGFyc2Vk
X2lkbC50eXBlfSAke3BhcnRpYWxUZXN0TmFtZX06IG1lbWJlciBuYW1lcyBhcmUgdW5pcXVlYCk7
CisgICAgICAgIH0KKyAgICB9LmJpbmQodGhpcykpOworICAgIHRoaXMucGFydGlhbHMgPSBbXTsK
K30KKworSWRsQXJyYXkucHJvdG90eXBlLm1lcmdlX21peGlucyA9IGZ1bmN0aW9uKCkKK3sKKyAg
ICBmb3IgKGNvbnN0IHBhcnNlZF9pZGwgb2YgdGhpcy5pbmNsdWRlcykKKyAgICB7CisgICAgICAg
IGNvbnN0IGxocyA9IHBhcnNlZF9pZGwudGFyZ2V0OworICAgICAgICBjb25zdCByaHMgPSBwYXJz
ZWRfaWRsLmluY2x1ZGVzOworCisgICAgICAgIHZhciBlcnJTdHIgPSBsaHMgKyAiIGluY2x1ZGVz
ICIgKyByaHMgKyAiLCBidXQgIjsKKyAgICAgICAgaWYgKCEobGhzIGluIHRoaXMubWVtYmVycykp
IHRocm93IGVyclN0ciArIGxocyArICIgaXMgdW5kZWZpbmVkLiI7CisgICAgICAgIGlmICghKHRo
aXMubWVtYmVyc1tsaHNdIGluc3RhbmNlb2YgSWRsSW50ZXJmYWNlKSkgdGhyb3cgZXJyU3RyICsg
bGhzICsgIiBpcyBub3QgYW4gaW50ZXJmYWNlLiI7CisgICAgICAgIGlmICghKHJocyBpbiB0aGlz
Lm1lbWJlcnMpKSB0aHJvdyBlcnJTdHIgKyByaHMgKyAiIGlzIHVuZGVmaW5lZC4iOworICAgICAg
ICBpZiAoISh0aGlzLm1lbWJlcnNbcmhzXSBpbnN0YW5jZW9mIElkbEludGVyZmFjZSkpIHRocm93
IGVyclN0ciArIHJocyArICIgaXMgbm90IGFuIGludGVyZmFjZS4iOworCisgICAgICAgIGlmICh0
aGlzLm1lbWJlcnNbcmhzXS5tZW1iZXJzLmxlbmd0aCkgeworICAgICAgICAgICAgdGVzdChmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICAgICAgdmFyIGNsYXNoID0gdGhpcy5tZW1iZXJzW3Joc10u
bWVtYmVycy5maW5kKGZ1bmN0aW9uKG1lbWJlcikgeworICAgICAgICAgICAgICAgICAgICByZXR1
cm4gdGhpcy5tZW1iZXJzW2xoc10ubWVtYmVycy5maW5kKGZ1bmN0aW9uKG0pIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFyZV9kdXBsaWNhdGVfbWVtYmVycyhtLCBtZW1i
ZXIpOworICAgICAgICAgICAgICAgICAgICB9LmJpbmQodGhpcykpOworICAgICAgICAgICAgICAg
IH0uYmluZCh0aGlzKSk7CisgICAgICAgICAgICAgICAgdGhpcy5tZW1iZXJzW3Joc10ubWVtYmVy
cy5mb3JFYWNoKGZ1bmN0aW9uKG1lbWJlcikgeworICAgICAgICAgICAgICAgICAgICBhc3NlcnRf
dHJ1ZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWVtYmVyc1tsaHNdLm1lbWJlcnMu
ZXZlcnkobSA9PiAhdGhpcy5hcmVfZHVwbGljYXRlX21lbWJlcnMobSwgbWVtYmVyKSksCisgICAg
ICAgICAgICAgICAgICAgICAgICAibWVtYmVyICIgKyBtZW1iZXIubmFtZSArICIgaXMgdW5pcXVl
Iik7CisgICAgICAgICAgICAgICAgICAgIHRoaXMubWVtYmVyc1tsaHNdLm1lbWJlcnMucHVzaChu
ZXcgSWRsSW50ZXJmYWNlTWVtYmVyKG1lbWJlcikpOworICAgICAgICAgICAgICAgIH0uYmluZCh0
aGlzKSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0X3RydWUoIWNsYXNoLCAibWVtYmVyICIgKyAo
Y2xhc2ggJiYgY2xhc2gubmFtZSkgKyAiIGlzIHVuaXF1ZSIpOworICAgICAgICAgICAgfS5iaW5k
KHRoaXMpLCBsaHMgKyAiIGluY2x1ZGVzICIgKyByaHMgKyAiOiBtZW1iZXIgbmFtZXMgYXJlIHVu
aXF1ZSIpOworICAgICAgICB9CisgICAgfQorICAgIHRoaXMuaW5jbHVkZXMgPSBbXTsKK30KKwor
SWRsQXJyYXkucHJvdG90eXBlLmFyZV9kdXBsaWNhdGVfbWVtYmVycyA9IGZ1bmN0aW9uKG0xLCBt
MikgeworICAgIGlmIChtMS5uYW1lICE9PSBtMi5uYW1lKSB7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisgICAgaWYgKG0xLnR5cGUgPT09ICdvcGVyYXRpb24nICYmIG0yLnR5cGUgPT09
ICdvcGVyYXRpb24nCisgICAgICAgICYmIG0xLmFyZ3VtZW50cy5sZW5ndGggIT09IG0yLmFyZ3Vt
ZW50cy5sZW5ndGgpIHsKKyAgICAgICAgLy8gTWV0aG9kIG92ZXJsb2FkLiBUT0RPOiBEZWVwIGNv
bXBhcmlzb24gb2YgYXJndW1lbnRzLgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAg
IHJldHVybiB0cnVlOworfQorCiBJZGxBcnJheS5wcm90b3R5cGUuYXNzZXJ0X3R5cGVfaXMgPSBm
dW5jdGlvbih2YWx1ZSwgdHlwZSkKLS8vQHsKIHsKKyAgICBpZiAodHlwZS5pZGxUeXBlIGluIHRo
aXMubWVtYmVycworICAgICYmIHRoaXMubWVtYmVyc1t0eXBlLmlkbFR5cGVdIGluc3RhbmNlb2Yg
SWRsVHlwZWRlZikgeworICAgICAgICB0aGlzLmFzc2VydF90eXBlX2lzKHZhbHVlLCB0aGlzLm1l
bWJlcnNbdHlwZS5pZGxUeXBlXS5pZGxUeXBlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGlmICh0eXBlLm51bGxhYmxlICYmIHZhbHVlID09PSBudWxsKQorICAgIHsKKyAgICAgICAg
Ly8gVGhpcyBpcyBmaW5lCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAodHlwZS51
bmlvbikgeworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHR5cGUuaWRsVHlwZS5sZW5ndGg7
IGkrKykgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICB0aGlzLmFzc2VydF90
eXBlX2lzKHZhbHVlLCB0eXBlLmlkbFR5cGVbaV0pOworICAgICAgICAgICAgICAgIC8vIE5vIEFz
c2VydGlvbkVycm9yLCBzbyB3ZSBtYXRjaCBvbmUgdHlwZSBpbiB0aGUgdW5pb24KKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoZSBpbnN0YW5jZW9mIEFzc2VydGlvbkVycm9yKSB7CisgICAgICAgICAgICAgICAgICAg
IC8vIFdlIGRpZG4ndCBtYXRjaCB0aGlzIHR5cGUsIGxldCdzIHRyeSBzb21lIG90aGVycworICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgdGhyb3cgZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAvLyBUT0RP
OiBJcyB0aGVyZSBhIG5pY2Ugd2F5IHRvIGxpc3QgdGhlIHVuaW9uJ3MgdHlwZXMgaW4gdGhlIG1l
c3NhZ2U/CisgICAgICAgIGFzc2VydF90cnVlKGZhbHNlLCAiQXR0cmlidXRlIGhhcyB2YWx1ZSAi
ICsgZm9ybWF0X3ZhbHVlKHZhbHVlKQorICAgICAgICAgICAgICAgICAgICArICIgd2hpY2ggZG9l
c24ndCBtYXRjaCBhbnkgb2YgdGhlIHR5cGVzIGluIHRoZSB1bmlvbiIpOworCisgICAgfQorCiAg
ICAgLyoqCiAgICAgICogSGVscGVyIGZ1bmN0aW9uIHRoYXQgdGVzdHMgdGhhdCB2YWx1ZSBpcyBh
biBpbnN0YW5jZSBvZiB0eXBlIGFjY29yZGluZwogICAgICAqIHRvIHRoZSBydWxlcyBvZiBXZWJJ
REwuICB2YWx1ZSBpcyBhbnkgSmF2YVNjcmlwdCB2YWx1ZSwgYW5kIHR5cGUgaXMgYW4KQEAgLTQz
OCw0MyArOTM0LDQ5IEBAIElkbEFycmF5LnByb3RvdHlwZS5hc3NlcnRfdHlwZV9pcyA9IGZ1bmN0
aW9uKHZhbHVlLCB0eXBlKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKHR5cGUu
bnVsbGFibGUgJiYgdmFsdWUgPT09IG51bGwpCi0gICAgewotICAgICAgICAvLyBUaGlzIGlzIGZp
bmUKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIGlmICh0eXBlLmFycmF5KQogICAgIHsK
ICAgICAgICAgLy8gVE9ETzogbm90IHN1cHBvcnRlZCB5ZXQKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGlmICh0eXBlLnNlcXVlbmNlKQorICAgIGlmICh0eXBlLmdlbmVyaWMgPT09ICJz
ZXF1ZW5jZSIpCiAgICAgewotICAgICAgICBhc3NlcnRfdHJ1ZShBcnJheS5pc0FycmF5KHZhbHVl
KSwgImlzIG5vdCBhcnJheSIpOworICAgICAgICBhc3NlcnRfdHJ1ZShBcnJheS5pc0FycmF5KHZh
bHVlKSwgInNob3VsZCBiZSBhbiBBcnJheSIpOwogICAgICAgICBpZiAoIXZhbHVlLmxlbmd0aCkK
ICAgICAgICAgewogICAgICAgICAgICAgLy8gTm90aGluZyB3ZSBjYW4gZG8uCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgdGhpcy5hc3NlcnRfdHlwZV9pcyh2YWx1ZVsw
XSwgdHlwZS5pZGxUeXBlLmlkbFR5cGUpOworICAgICAgICB0aGlzLmFzc2VydF90eXBlX2lzKHZh
bHVlWzBdLCB0eXBlLmlkbFR5cGVbMF0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAg
aWYgKHR5cGUuZ2VuZXJpYyA9PT0gIlByb21pc2UiKSB7Ci0gICAgICAgIGFzc2VydF90cnVlKCJ0
aGVuIiBpbiB2YWx1ZSwgIkF0dHJpYnV0ZSB3aXRoIGEgUHJvbWlzZSB0eXBlIGhhcyBhIHRoZW4g
cHJvcGVydHkiKTsKKyAgICAgICAgYXNzZXJ0X3RydWUoInRoZW4iIGluIHZhbHVlLCAiQXR0cmli
dXRlIHdpdGggYSBQcm9taXNlIHR5cGUgc2hvdWxkIGhhdmUgYSB0aGVuIHByb3BlcnR5Iik7CiAg
ICAgICAgIC8vIFRPRE86IElkZWFsbHksIHdlIHdvdWxkIGNoZWNrIG9uIHByb2plY3QgZnVsZmls
bG1lbnQKICAgICAgICAgLy8gdGhhdCB3ZSBnZXQgdGhlIHJpZ2h0IHR5cGUKICAgICAgICAgLy8g
YnV0IHRoYXQgd291bGQgcmVxdWlyZSBtYWtpbmcgdGhlIHR5cGUgY2hlY2sgYXN5bmMKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIHR5cGUgPSB0eXBlLmlkbFR5cGU7CisgICAgaWYgKHR5
cGUuZ2VuZXJpYyA9PT0gIkZyb3plbkFycmF5IikgeworICAgICAgICBhc3NlcnRfdHJ1ZShBcnJh
eS5pc0FycmF5KHZhbHVlKSwgIlZhbHVlIHNob3VsZCBiZSBhcnJheSIpOworICAgICAgICBhc3Nl
cnRfdHJ1ZShPYmplY3QuaXNGcm96ZW4odmFsdWUpLCAiVmFsdWUgc2hvdWxkIGJlIGZyb3plbiIp
OworICAgICAgICBpZiAoIXZhbHVlLmxlbmd0aCkKKyAgICAgICAgeworICAgICAgICAgICAgLy8g
Tm90aGluZyB3ZSBjYW4gZG8uCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAg
ICAgdGhpcy5hc3NlcnRfdHlwZV9pcyh2YWx1ZVswXSwgdHlwZS5pZGxUeXBlWzBdKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIHR5cGUgPSBBcnJheS5pc0FycmF5KHR5cGUuaWRsVHlw
ZSkgPyB0eXBlLmlkbFR5cGVbMF0gOiB0eXBlLmlkbFR5cGU7CiAKICAgICBzd2l0Y2godHlwZSkK
ICAgICB7Ci0gICAgICAgIGNhc2UgInZvaWQiOgorICAgICAgICBjYXNlICJ1bmRlZmluZWQiOgog
ICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh2YWx1ZSwgdW5kZWZpbmVkKTsKICAgICAgICAgICAg
IHJldHVybjsKIApAQCAtNDg0LDM4ICs5ODYsMzggQEAgSWRsQXJyYXkucHJvdG90eXBlLmFzc2Vy
dF90eXBlX2lzID0gZnVuY3Rpb24odmFsdWUsIHR5cGUpCiAKICAgICAgICAgY2FzZSAiYnl0ZSI6
CiAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiB2YWx1ZSwgIm51bWJlciIpOwotICAg
ICAgICAgICAgYXNzZXJ0X2VxdWFscyh2YWx1ZSwgTWF0aC5mbG9vcih2YWx1ZSksICJub3QgYW4g
aW50ZWdlciIpOwotICAgICAgICAgICAgYXNzZXJ0X3RydWUoLTEyOCA8PSB2YWx1ZSAmJiB2YWx1
ZSA8PSAxMjcsICJieXRlICIgKyB2YWx1ZSArICIgbm90IGluIHJhbmdlIFstMTI4LCAxMjddIik7
CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHZhbHVlLCBNYXRoLmZsb29yKHZhbHVlKSwgInNo
b3VsZCBiZSBhbiBpbnRlZ2VyIik7CisgICAgICAgICAgICBhc3NlcnRfdHJ1ZSgtMTI4IDw9IHZh
bHVlICYmIHZhbHVlIDw9IDEyNywgImJ5dGUgIiArIHZhbHVlICsgIiBzaG91bGQgYmUgaW4gcmFu
Z2UgWy0xMjgsIDEyN10iKTsKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBjYXNlICJv
Y3RldCI6CiAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiB2YWx1ZSwgIm51bWJlciIp
OwotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh2YWx1ZSwgTWF0aC5mbG9vcih2YWx1ZSksICJu
b3QgYW4gaW50ZWdlciIpOwotICAgICAgICAgICAgYXNzZXJ0X3RydWUoMCA8PSB2YWx1ZSAmJiB2
YWx1ZSA8PSAyNTUsICJvY3RldCAiICsgdmFsdWUgKyAiIG5vdCBpbiByYW5nZSBbMCwgMjU1XSIp
OworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh2YWx1ZSwgTWF0aC5mbG9vcih2YWx1ZSksICJz
aG91bGQgYmUgYW4gaW50ZWdlciIpOworICAgICAgICAgICAgYXNzZXJ0X3RydWUoMCA8PSB2YWx1
ZSAmJiB2YWx1ZSA8PSAyNTUsICJvY3RldCAiICsgdmFsdWUgKyAiIHNob3VsZCBiZSBpbiByYW5n
ZSBbMCwgMjU1XSIpOwogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGNhc2UgInNob3J0
IjoKICAgICAgICAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIHZhbHVlLCAibnVtYmVyIik7Ci0g
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHZhbHVlLCBNYXRoLmZsb29yKHZhbHVlKSwgIm5vdCBh
biBpbnRlZ2VyIik7Ci0gICAgICAgICAgICBhc3NlcnRfdHJ1ZSgtMzI3NjggPD0gdmFsdWUgJiYg
dmFsdWUgPD0gMzI3NjcsICJzaG9ydCAiICsgdmFsdWUgKyAiIG5vdCBpbiByYW5nZSBbLTMyNzY4
LCAzMjc2N10iKTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHModmFsdWUsIE1hdGguZmxvb3Io
dmFsdWUpLCAic2hvdWxkIGJlIGFuIGludGVnZXIiKTsKKyAgICAgICAgICAgIGFzc2VydF90cnVl
KC0zMjc2OCA8PSB2YWx1ZSAmJiB2YWx1ZSA8PSAzMjc2NywgInNob3J0ICIgKyB2YWx1ZSArICIg
c2hvdWxkIGJlIGluIHJhbmdlIFstMzI3NjgsIDMyNzY3XSIpOwogICAgICAgICAgICAgcmV0dXJu
OwogCiAgICAgICAgIGNhc2UgInVuc2lnbmVkIHNob3J0IjoKICAgICAgICAgICAgIGFzc2VydF9l
cXVhbHModHlwZW9mIHZhbHVlLCAibnVtYmVyIik7Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxz
KHZhbHVlLCBNYXRoLmZsb29yKHZhbHVlKSwgIm5vdCBhbiBpbnRlZ2VyIik7Ci0gICAgICAgICAg
ICBhc3NlcnRfdHJ1ZSgwIDw9IHZhbHVlICYmIHZhbHVlIDw9IDY1NTM1LCAidW5zaWduZWQgc2hv
cnQgIiArIHZhbHVlICsgIiBub3QgaW4gcmFuZ2UgWzAsIDY1NTM1XSIpOworICAgICAgICAgICAg
YXNzZXJ0X2VxdWFscyh2YWx1ZSwgTWF0aC5mbG9vcih2YWx1ZSksICJzaG91bGQgYmUgYW4gaW50
ZWdlciIpOworICAgICAgICAgICAgYXNzZXJ0X3RydWUoMCA8PSB2YWx1ZSAmJiB2YWx1ZSA8PSA2
NTUzNSwgInVuc2lnbmVkIHNob3J0ICIgKyB2YWx1ZSArICIgc2hvdWxkIGJlIGluIHJhbmdlIFsw
LCA2NTUzNV0iKTsKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBjYXNlICJsb25nIjoK
ICAgICAgICAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIHZhbHVlLCAibnVtYmVyIik7Ci0gICAg
ICAgICAgICBhc3NlcnRfZXF1YWxzKHZhbHVlLCBNYXRoLmZsb29yKHZhbHVlKSwgIm5vdCBhbiBp
bnRlZ2VyIik7Ci0gICAgICAgICAgICBhc3NlcnRfdHJ1ZSgtMjE0NzQ4MzY0OCA8PSB2YWx1ZSAm
JiB2YWx1ZSA8PSAyMTQ3NDgzNjQ3LCAibG9uZyAiICsgdmFsdWUgKyAiIG5vdCBpbiByYW5nZSBb
LTIxNDc0ODM2NDgsIDIxNDc0ODM2NDddIik7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHZh
bHVlLCBNYXRoLmZsb29yKHZhbHVlKSwgInNob3VsZCBiZSBhbiBpbnRlZ2VyIik7CisgICAgICAg
ICAgICBhc3NlcnRfdHJ1ZSgtMjE0NzQ4MzY0OCA8PSB2YWx1ZSAmJiB2YWx1ZSA8PSAyMTQ3NDgz
NjQ3LCAibG9uZyAiICsgdmFsdWUgKyAiIHNob3VsZCBiZSBpbiByYW5nZSBbLTIxNDc0ODM2NDgs
IDIxNDc0ODM2NDddIik7CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgY2FzZSAidW5z
aWduZWQgbG9uZyI6CiAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiB2YWx1ZSwgIm51
bWJlciIpOwotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh2YWx1ZSwgTWF0aC5mbG9vcih2YWx1
ZSksICJub3QgYW4gaW50ZWdlciIpOwotICAgICAgICAgICAgYXNzZXJ0X3RydWUoMCA8PSB2YWx1
ZSAmJiB2YWx1ZSA8PSA0Mjk0OTY3Mjk1LCAidW5zaWduZWQgbG9uZyAiICsgdmFsdWUgKyAiIG5v
dCBpbiByYW5nZSBbMCwgNDI5NDk2NzI5NV0iKTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMo
dmFsdWUsIE1hdGguZmxvb3IodmFsdWUpLCAic2hvdWxkIGJlIGFuIGludGVnZXIiKTsKKyAgICAg
ICAgICAgIGFzc2VydF90cnVlKDAgPD0gdmFsdWUgJiYgdmFsdWUgPD0gNDI5NDk2NzI5NSwgInVu
c2lnbmVkIGxvbmcgIiArIHZhbHVlICsgIiBzaG91bGQgYmUgaW4gcmFuZ2UgWzAsIDQyOTQ5Njcy
OTVdIik7CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgY2FzZSAibG9uZyBsb25nIjoK
QEAgLTUyNSwxMiArMTAyNywxMiBAQCBJZGxBcnJheS5wcm90b3R5cGUuYXNzZXJ0X3R5cGVfaXMg
PSBmdW5jdGlvbih2YWx1ZSwgdHlwZSkKICAgICAgICAgY2FzZSAidW5zaWduZWQgbG9uZyBsb25n
IjoKICAgICAgICAgY2FzZSAiRE9NVGltZVN0YW1wIjoKICAgICAgICAgICAgIGFzc2VydF9lcXVh
bHModHlwZW9mIHZhbHVlLCAibnVtYmVyIik7Ci0gICAgICAgICAgICBhc3NlcnRfdHJ1ZSgwIDw9
IHZhbHVlLCAidW5zaWduZWQgbG9uZyBsb25nIGlzIG5lZ2F0aXZlIik7CisgICAgICAgICAgICBh
c3NlcnRfdHJ1ZSgwIDw9IHZhbHVlLCAidW5zaWduZWQgbG9uZyBsb25nIHNob3VsZCBiZSBwb3Np
dGl2ZSIpOwogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGNhc2UgImZsb2F0IjoKICAg
ICAgICAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIHZhbHVlLCAibnVtYmVyIik7Ci0gICAgICAg
ICAgICBhc3NlcnRfZXF1YWxzKHZhbHVlLCBmcm91bmQodmFsdWUpLCAiZmxvYXQgcm91bmRlZCB0
byAzMi1iaXQgZmxvYXQgc2hvdWxkIGJlIGl0c2VsZiIpOworICAgICAgICAgICAgYXNzZXJ0X2Vx
dWFscyh2YWx1ZSwgTWF0aC5mcm91bmQodmFsdWUpLCAiZmxvYXQgcm91bmRlZCB0byAzMi1iaXQg
ZmxvYXQgc2hvdWxkIGJlIGl0c2VsZiIpOwogICAgICAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHMo
dmFsdWUsIEluZmluaXR5KTsKICAgICAgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKHZhbHVlLCAt
SW5maW5pdHkpOwogICAgICAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHModmFsdWUsIE5hTik7CkBA
IC01NDYsNyArMTA0OCw3IEBAIElkbEFycmF5LnByb3RvdHlwZS5hc3NlcnRfdHlwZV9pcyA9IGZ1
bmN0aW9uKHZhbHVlLCB0eXBlKQogCiAgICAgICAgIGNhc2UgInVucmVzdHJpY3RlZCBmbG9hdCI6
CiAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiB2YWx1ZSwgIm51bWJlciIpOwotICAg
ICAgICAgICAgYXNzZXJ0X2VxdWFscyh2YWx1ZSwgZnJvdW5kKHZhbHVlKSwgInVucmVzdHJpY3Rl
ZCBmbG9hdCByb3VuZGVkIHRvIDMyLWJpdCBmbG9hdCBzaG91bGQgYmUgaXRzZWxmIik7CisgICAg
ICAgICAgICBhc3NlcnRfZXF1YWxzKHZhbHVlLCBNYXRoLmZyb3VuZCh2YWx1ZSksICJ1bnJlc3Ry
aWN0ZWQgZmxvYXQgcm91bmRlZCB0byAzMi1iaXQgZmxvYXQgc2hvdWxkIGJlIGl0c2VsZiIpOwog
ICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGNhc2UgInVucmVzdHJpY3RlZCBkb3VibGUi
OgpAQCAtNTY3LDE0ICsxMDY5LDI2IEBAIElkbEFycmF5LnByb3RvdHlwZS5hc3NlcnRfdHlwZV9p
cyA9IGZ1bmN0aW9uKHZhbHVlLCB0eXBlKQogICAgICAgICAgICAgYXNzZXJ0X3JlZ2V4cF9tYXRj
aCh2YWx1ZSwgL14oW1x4MDAtXHVkN2ZmXHVlMDAwLVx1ZmZmZl18W1x1ZDgwMC1cdWRiZmZdW1x1
ZGMwMC1cdWRmZmZdKSokLyk7CiAgICAgICAgICAgICByZXR1cm47CiAKKyAgICAgICAgY2FzZSAi
QXJyYXlCdWZmZXJWaWV3IjoKKyAgICAgICAgICAgIGFzc2VydF90cnVlKEFycmF5QnVmZmVyLmlz
Vmlldyh2YWx1ZSkpOworICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAgIGNhc2UgIm9iamVj
dCI6Ci0gICAgICAgICAgICBhc3NlcnRfdHJ1ZSh0eXBlb2YgdmFsdWUgPT0gIm9iamVjdCIgfHwg
dHlwZW9mIHZhbHVlID09ICJmdW5jdGlvbiIsICJ3cm9uZyB0eXBlOiBub3Qgb2JqZWN0IG9yIGZ1
bmN0aW9uIik7CisgICAgICAgICAgICBhc3NlcnRfaW5fYXJyYXkodHlwZW9mIHZhbHVlLCBbIm9i
amVjdCIsICJmdW5jdGlvbiJdLCAid3JvbmcgdHlwZTogbm90IG9iamVjdCBvciBmdW5jdGlvbiIp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIC8vIFRoaXMgaXMgYSBjYXRjaC1h
bGwgZm9yIGFueSBJREwgdHlwZSBuYW1lIHdoaWNoIGZvbGxvd3MgSlMgY2xhc3MKKyAgICAvLyBz
ZW1hbnRpY3MuIFRoaXMgaW5jbHVkZXMgc29tZSBub24taW50ZXJmYWNlIElETCB0eXBlcyAoZS5n
LiBJbnQ4QXJyYXksCisgICAgLy8gRnVuY3Rpb24sIC4uLiksIGFzIHdlbGwgYXMgYW55IGludGVy
ZmFjZSB0eXBlcyB0aGF0IGFyZSBub3QgaW4gdGhlIElETAorICAgIC8vIHRoYXQgaXMgZmVkIHRv
IHRoZSBoYXJuZXNzLiBJZiBhbiBJREwgdHlwZSBkb2VzIG5vdCBmb2xsb3cgSlMgY2xhc3MKKyAg
ICAvLyBzZW1hbnRpY3MgdGhlbiBpdCBzaG91bGQgZ28gaW4gdGhlIHN3aXRjaCBzdGF0ZW1lbnQg
YWJvdmUuIElmIGFuIElETAorICAgIC8vIHR5cGUgbmVlZHMgZnVsbCBjaGVja2luZywgdGhlbiB0
aGUgdGVzdCBzaG91bGQgaW5jbHVkZSBpdCBpbiB0aGUgSURMIGl0CisgICAgLy8gZmVlZHMgdG8g
dGhlIGhhcm5lc3MuCiAgICAgaWYgKCEodHlwZSBpbiB0aGlzLm1lbWJlcnMpKQogICAgIHsKLSAg
ICAgICAgdGhyb3cgIlVucmVjb2duaXplZCB0eXBlICIgKyB0eXBlOworICAgICAgICBhc3NlcnRf
dHJ1ZSh2YWx1ZSBpbnN0YW5jZW9mIHNlbGZbdHlwZV0sICJ3cm9uZyB0eXBlOiBub3QgYSAiICsg
dHlwZSk7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAodGhpcy5tZW1iZXJzW3R5
cGVdIGluc3RhbmNlb2YgSWRsSW50ZXJmYWNlKQpAQCAtNTgyLDE0ICsxMDk2LDE0IEBAIElkbEFy
cmF5LnByb3RvdHlwZS5hc3NlcnRfdHlwZV9pcyA9IGZ1bmN0aW9uKHZhbHVlLCB0eXBlKQogICAg
ICAgICAvLyBXZSBkb24ndCB3YW50IHRvIHJ1biB0aGUgZnVsbAogICAgICAgICAvLyBJZGxJbnRl
cmZhY2UucHJvdG90eXBlLnRlc3RfaW5zdGFuY2Vfb2YsIGJlY2F1c2UgdGhhdCBjb3VsZCByZXN1
bHQKICAgICAgICAgLy8gaW4gYW4gaW5maW5pdGUgbG9vcC4gIFRPRE86IFRoaXMgbWVhbnMgd2Ug
ZG9uJ3QgaGF2ZSB0ZXN0cyBmb3IKLSAgICAgICAgLy8gTm9JbnRlcmZhY2VPYmplY3QgaW50ZXJm
YWNlcywgYW5kIHdlIGFsc28gY2FuJ3QgdGVzdCBvYmplY3RzIHRoYXQKLSAgICAgICAgLy8gY29t
ZSBmcm9tIGFub3RoZXIgc2VsZi4KLSAgICAgICAgYXNzZXJ0X3RydWUodHlwZW9mIHZhbHVlID09
ICJvYmplY3QiIHx8IHR5cGVvZiB2YWx1ZSA9PSAiZnVuY3Rpb24iLCAid3JvbmcgdHlwZTogbm90
IG9iamVjdCBvciBmdW5jdGlvbiIpOworICAgICAgICAvLyBMZWdhY3lOb0ludGVyZmFjZU9iamVj
dCBpbnRlcmZhY2VzLCBhbmQgd2UgYWxzbyBjYW4ndCB0ZXN0IG9iamVjdHMKKyAgICAgICAgLy8g
dGhhdCBjb21lIGZyb20gYW5vdGhlciBzZWxmLgorICAgICAgICBhc3NlcnRfaW5fYXJyYXkodHlw
ZW9mIHZhbHVlLCBbIm9iamVjdCIsICJmdW5jdGlvbiJdLCAid3JvbmcgdHlwZTogbm90IG9iamVj
dCBvciBmdW5jdGlvbiIpOwogICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBPYmplY3QKLSAg
ICAgICAgJiYgIXRoaXMubWVtYmVyc1t0eXBlXS5oYXNfZXh0ZW5kZWRfYXR0cmlidXRlKCJOb0lu
dGVyZmFjZU9iamVjdCIpCisgICAgICAgICYmICF0aGlzLm1lbWJlcnNbdHlwZV0uaGFzX2V4dGVu
ZGVkX2F0dHJpYnV0ZSgiTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QiKQogICAgICAgICAmJiB0eXBl
IGluIHNlbGYpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGFzc2VydF90cnVlKHZhbHVlIGluc3Rh
bmNlb2Ygc2VsZlt0eXBlXSwgIm5vdCBpbnN0YW5jZW9mICIgKyB0eXBlKTsKKyAgICAgICAgICAg
IGFzc2VydF90cnVlKHZhbHVlIGluc3RhbmNlb2Ygc2VsZlt0eXBlXSwgImluc3RhbmNlb2YgIiAr
IHR5cGUpOwogICAgICAgICB9CiAgICAgfQogICAgIGVsc2UgaWYgKHRoaXMubWVtYmVyc1t0eXBl
XSBpbnN0YW5jZW9mIElkbEVudW0pCkBAIC02MDAsMjEgKzExMTQsMTkgQEAgSWRsQXJyYXkucHJv
dG90eXBlLmFzc2VydF90eXBlX2lzID0gZnVuY3Rpb24odmFsdWUsIHR5cGUpCiAgICAgewogICAg
ICAgICAvLyBUT0RPOiBUZXN0IHdoZW4gd2UgYWN0dWFsbHkgaGF2ZSBzb21ldGhpbmcgdG8gdGVz
dCB0aGlzIG9uCiAgICAgfQotICAgIGVsc2UgaWYgKHRoaXMubWVtYmVyc1t0eXBlXSBpbnN0YW5j
ZW9mIElkbFR5cGVkZWYpCisgICAgZWxzZSBpZiAodGhpcy5tZW1iZXJzW3R5cGVdIGluc3RhbmNl
b2YgSWRsQ2FsbGJhY2spCiAgICAgewotICAgICAgICAvLyBUT0RPOiBUZXN0IHdoZW4gd2UgYWN0
dWFsbHkgaGF2ZSBzb21ldGhpbmcgdG8gdGVzdCB0aGlzIG9uCisgICAgICAgIGFzc2VydF9lcXVh
bHModHlwZW9mIHZhbHVlLCAiZnVuY3Rpb24iKTsKICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAg
ICAgICAgdGhyb3cgIlR5cGUgIiArIHR5cGUgKyAiIGlzbid0IGFuIGludGVyZmFjZSBvciBkaWN0
aW9uYXJ5IjsKKyAgICAgICAgdGhyb3cgbmV3IElkbEhhcm5lc3NFcnJvcigiVHlwZSAiICsgdHlw
ZSArICIgaXNuJ3QgYW4gaW50ZXJmYWNlLCBjYWxsYmFjayBvciBkaWN0aW9uYXJ5Iik7CiAgICAg
fQogfTsKLS8vQH0KIAogLy8vIElkbE9iamVjdCAvLy8KIGZ1bmN0aW9uIElkbE9iamVjdCgpIHt9
CiBJZGxPYmplY3QucHJvdG90eXBlLnRlc3QgPSBmdW5jdGlvbigpCi0vL0B7CiB7CiAgICAgLyoq
CiAgICAgICogQnkgZGVmYXVsdCwgdGhpcyBkb2VzIG5vdGhpbmcsIHNvIG5vIGFjdHVhbCB0ZXN0
cyBhcmUgcnVuIGZvciBJZGxPYmplY3RzCkBAIC02MjIsOSArMTEzNCw3IEBAIElkbE9iamVjdC5w
cm90b3R5cGUudGVzdCA9IGZ1bmN0aW9uKCkKICAgICAgKi8KIH07CiAKLS8vQH0KIElkbE9iamVj
dC5wcm90b3R5cGUuaGFzX2V4dGVuZGVkX2F0dHJpYnV0ZSA9IGZ1bmN0aW9uKG5hbWUpCi0vL0B7
CiB7CiAgICAgLyoqCiAgICAgICogVGhpcyBpcyBvbmx5IG1lYW5pbmdmdWwgZm9yIHRoaW5ncyB0
aGF0IHN1cHBvcnQgZXh0ZW5kZWQgYXR0cmlidXRlcywKQEAgLTYzNiwxMiArMTE0NiwxMCBAQCBJ
ZGxPYmplY3QucHJvdG90eXBlLmhhc19leHRlbmRlZF9hdHRyaWJ1dGUgPSBmdW5jdGlvbihuYW1l
KQogICAgIH0pOwogfTsKIAotLy9AfQogCiAvLy8gSWRsRGljdGlvbmFyeSAvLy8KIC8vIFVzZWQg
Zm9yIElkbEFycmF5LnByb3RvdHlwZS5hc3NlcnRfdHlwZV9pcwogZnVuY3Rpb24gSWRsRGljdGlv
bmFyeShvYmopCi0vL0B7CiB7CiAgICAgLyoqCiAgICAgICogb2JqIGlzIGFuIG9iamVjdCBwcm9k
dWNlZCBieSB0aGUgV2ViSURMUGFyc2VyLmpzICJkaWN0aW9uYXJ5IgpAQCAtNjUxLDYgKzExNTks
OSBAQCBmdW5jdGlvbiBJZGxEaWN0aW9uYXJ5KG9iaikKICAgICAvKiogU2VsZi1leHBsYW5hdG9y
eS4gKi8KICAgICB0aGlzLm5hbWUgPSBvYmoubmFtZTsKIAorICAgIC8qKiBBIGJhY2stcmVmZXJl
bmNlIHRvIG91ciBJZGxBcnJheS4gKi8KKyAgICB0aGlzLmFycmF5ID0gb2JqLmFycmF5OworCiAg
ICAgLyoqIEFuIGFycmF5IG9mIG9iamVjdHMgcHJvZHVjZWQgYnkgdGhlICJkaWN0aW9uYXJ5TWVt
YmVyIiBwcm9kdWN0aW9uLiAqLwogICAgIHRoaXMubWVtYmVycyA9IG9iai5tZW1iZXJzOwogCkBA
IC02NjEsMTIgKzExNzIsMTQgQEAgZnVuY3Rpb24gSWRsRGljdGlvbmFyeShvYmopCiAgICAgdGhp
cy5iYXNlID0gb2JqLmluaGVyaXRhbmNlOwogfQogCi0vL0B9CiBJZGxEaWN0aW9uYXJ5LnByb3Rv
dHlwZSA9IE9iamVjdC5jcmVhdGUoSWRsT2JqZWN0LnByb3RvdHlwZSk7CiAKK0lkbERpY3Rpb25h
cnkucHJvdG90eXBlLmdldF9yZXZlcnNlX2luaGVyaXRhbmNlX3N0YWNrID0gZnVuY3Rpb24oKSB7
CisgICAgcmV0dXJuIElkbEludGVyZmFjZS5wcm90b3R5cGUuZ2V0X3JldmVyc2VfaW5oZXJpdGFu
Y2Vfc3RhY2suY2FsbCh0aGlzKTsKK307CisKIC8vLyBJZGxJbnRlcmZhY2UgLy8vCi1mdW5jdGlv
biBJZGxJbnRlcmZhY2Uob2JqLCBpc19jYWxsYmFjaykKLS8vQHsKK2Z1bmN0aW9uIElkbEludGVy
ZmFjZShvYmosIGlzX2NhbGxiYWNrLCBpc19taXhpbikKIHsKICAgICAvKioKICAgICAgKiBvYmog
aXMgYW4gb2JqZWN0IHByb2R1Y2VkIGJ5IHRoZSBXZWJJRExQYXJzZXIuanMgImludGVyZmFjZSIg
cHJvZHVjdGlvbi4KQEAgLTY5MCw5ICsxMjAzLDkgQEAgZnVuY3Rpb24gSWRsSW50ZXJmYWNlKG9i
aiwgaXNfY2FsbGJhY2spCiAKICAgICAvKiogQW4gYXJyYXkgb2YgSWRsSW50ZXJmYWNlTWVtYmVy
cy4gKi8KICAgICB0aGlzLm1lbWJlcnMgPSBvYmoubWVtYmVycy5tYXAoZnVuY3Rpb24obSl7cmV0
dXJuIG5ldyBJZGxJbnRlcmZhY2VNZW1iZXIobSk7IH0pOwotICAgIGlmICh0aGlzLmhhc19leHRl
bmRlZF9hdHRyaWJ1dGUoIlVuZm9yZ2VhYmxlIikpIHsKKyAgICBpZiAodGhpcy5oYXNfZXh0ZW5k
ZWRfYXR0cmlidXRlKCJMZWdhY3lVbmZvcmdlYWJsZSIpKSB7CiAgICAgICAgIHRoaXMubWVtYmVy
cwotICAgICAgICAgICAgLmZpbHRlcihmdW5jdGlvbihtKSB7IHJldHVybiAhbVsic3RhdGljIl0g
JiYgKG0udHlwZSA9PSAiYXR0cmlidXRlIiB8fCBtLnR5cGUgPT0gIm9wZXJhdGlvbiIpOyB9KQor
ICAgICAgICAgICAgLmZpbHRlcihmdW5jdGlvbihtKSB7IHJldHVybiBtLnNwZWNpYWwgIT09ICJz
dGF0aWMiICYmIChtLnR5cGUgPT0gImF0dHJpYnV0ZSIgfHwgbS50eXBlID09ICJvcGVyYXRpb24i
KTsgfSkKICAgICAgICAgICAgIC5mb3JFYWNoKGZ1bmN0aW9uKG0pIHsgcmV0dXJuIG0uaXNVbmZv
cmdlYWJsZSA9IHRydWU7IH0pOwogICAgIH0KIApAQCAtNzAzLDM5ICsxMjE2LDE3NCBAQCBmdW5j
dGlvbiBJZGxJbnRlcmZhY2Uob2JqLCBpc19jYWxsYmFjaykKICAgICB0aGlzLmJhc2UgPSBvYmou
aW5oZXJpdGFuY2U7CiAKICAgICB0aGlzLl9pc19jYWxsYmFjayA9IGlzX2NhbGxiYWNrOworICAg
IHRoaXMuX2lzX21peGluID0gaXNfbWl4aW47CiB9Ci0vL0B9CiBJZGxJbnRlcmZhY2UucHJvdG90
eXBlID0gT2JqZWN0LmNyZWF0ZShJZGxPYmplY3QucHJvdG90eXBlKTsKIElkbEludGVyZmFjZS5w
cm90b3R5cGUuaXNfY2FsbGJhY2sgPSBmdW5jdGlvbigpCi0vL0B7CiB7CiAgICAgcmV0dXJuIHRo
aXMuX2lzX2NhbGxiYWNrOwogfTsKLS8vQH0KKworSWRsSW50ZXJmYWNlLnByb3RvdHlwZS5pc19t
aXhpbiA9IGZ1bmN0aW9uKCkKK3sKKyAgICByZXR1cm4gdGhpcy5faXNfbWl4aW47Cit9OwogCiBJ
ZGxJbnRlcmZhY2UucHJvdG90eXBlLmhhc19jb25zdGFudHMgPSBmdW5jdGlvbigpCi0vL0B7CiB7
CiAgICAgcmV0dXJuIHRoaXMubWVtYmVycy5zb21lKGZ1bmN0aW9uKG1lbWJlcikgewogICAgICAg
ICByZXR1cm4gbWVtYmVyLnR5cGUgPT09ICJjb25zdCI7CiAgICAgfSk7CiB9OwotLy9AfQorCitJ
ZGxJbnRlcmZhY2UucHJvdG90eXBlLmdldF91bnNjb3BhYmxlcyA9IGZ1bmN0aW9uKCkKK3sKKyAg
ICByZXR1cm4gdGhpcy5tZW1iZXJzLmZpbHRlcihmdW5jdGlvbihtZW1iZXIpIHsKKyAgICAgICAg
cmV0dXJuIG1lbWJlci5pc1Vuc2NvcGFibGU7CisgICAgfSk7Cit9OwogCiBJZGxJbnRlcmZhY2Uu
cHJvdG90eXBlLmlzX2dsb2JhbCA9IGZ1bmN0aW9uKCkKLS8vQHsKIHsKICAgICByZXR1cm4gdGhp
cy5leHRBdHRycy5zb21lKGZ1bmN0aW9uKGF0dHJpYnV0ZSkgewotICAgICAgICByZXR1cm4gYXR0
cmlidXRlLm5hbWUgPT09ICJHbG9iYWwiIHx8Ci0gICAgICAgICAgICAgICBhdHRyaWJ1dGUubmFt
ZSA9PT0gIlByaW1hcnlHbG9iYWwiOworICAgICAgICByZXR1cm4gYXR0cmlidXRlLm5hbWUgPT09
ICJHbG9iYWwiOworICAgIH0pOworfTsKKworLyoqCisgKiBWYWx1ZSBvZiB0aGUgTGVnYWN5TmFt
ZXNwYWNlIGV4dGVuZGVkIGF0dHJpYnV0ZSwgaWYgYW55LgorICoKKyAqIGh0dHBzOi8vaGV5Y2Ft
LmdpdGh1Yi5pby93ZWJpZGwvI0xlZ2FjeU5hbWVzcGFjZQorICovCitJZGxJbnRlcmZhY2UucHJv
dG90eXBlLmdldF9sZWdhY3lfbmFtZXNwYWNlID0gZnVuY3Rpb24oKQoreworICAgIHZhciBsZWdh
Y3lOYW1lc3BhY2UgPSB0aGlzLmV4dEF0dHJzLmZpbmQoZnVuY3Rpb24oYXR0cmlidXRlKSB7Cisg
ICAgICAgIHJldHVybiBhdHRyaWJ1dGUubmFtZSA9PT0gIkxlZ2FjeU5hbWVzcGFjZSI7CisgICAg
fSk7CisgICAgcmV0dXJuIGxlZ2FjeU5hbWVzcGFjZSA/IGxlZ2FjeU5hbWVzcGFjZS5yaHMudmFs
dWUgOiB1bmRlZmluZWQ7Cit9OworCitJZGxJbnRlcmZhY2UucHJvdG90eXBlLmdldF9pbnRlcmZh
Y2Vfb2JqZWN0X293bmVyID0gZnVuY3Rpb24oKQoreworICAgIHZhciBsZWdhY3lOYW1lc3BhY2Ug
PSB0aGlzLmdldF9sZWdhY3lfbmFtZXNwYWNlKCk7CisgICAgcmV0dXJuIGxlZ2FjeU5hbWVzcGFj
ZSA/IHNlbGZbbGVnYWN5TmFtZXNwYWNlXSA6IHNlbGY7Cit9OworCitJZGxJbnRlcmZhY2UucHJv
dG90eXBlLnNob3VsZF9oYXZlX2ludGVyZmFjZV9vYmplY3QgPSBmdW5jdGlvbigpCit7CisgICAg
Ly8gIkZvciBldmVyeSBpbnRlcmZhY2UgdGhhdCBpcyBleHBvc2VkIGluIGEgZ2l2ZW4gRUNNQVNj
cmlwdCBnbG9iYWwKKyAgICAvLyBlbnZpcm9ubWVudCBhbmQ6CisgICAgLy8gKiBpcyBhIGNhbGxi
YWNrIGludGVyZmFjZSB0aGF0IGhhcyBjb25zdGFudHMgZGVjbGFyZWQgb24gaXQsIG9yCisgICAg
Ly8gKiBpcyBhIG5vbi1jYWxsYmFjayBpbnRlcmZhY2UgdGhhdCBpcyBub3QgZGVjbGFyZWQgd2l0
aCB0aGUKKyAgICAvLyAgIFtMZWdhY3lOb0ludGVyZmFjZU9iamVjdF0gZXh0ZW5kZWQgYXR0cmli
dXRlLAorICAgIC8vIGEgY29ycmVzcG9uZGluZyBwcm9wZXJ0eSBNVVNUIGV4aXN0IG9uIHRoZSBF
Q01BU2NyaXB0IGdsb2JhbCBvYmplY3QuCisKKyAgICByZXR1cm4gdGhpcy5pc19jYWxsYmFjaygp
ID8gdGhpcy5oYXNfY29uc3RhbnRzKCkgOiAhdGhpcy5oYXNfZXh0ZW5kZWRfYXR0cmlidXRlKCJM
ZWdhY3lOb0ludGVyZmFjZU9iamVjdCIpOworfTsKKworSWRsSW50ZXJmYWNlLnByb3RvdHlwZS5h
c3NlcnRfaW50ZXJmYWNlX29iamVjdF9leGlzdHMgPSBmdW5jdGlvbigpCit7CisgICAgdmFyIG93
bmVyID0gdGhpcy5nZXRfbGVnYWN5X25hbWVzcGFjZSgpIHx8ICJzZWxmIjsKKyAgICBhc3NlcnRf
b3duX3Byb3BlcnR5KHNlbGZbb3duZXJdLCB0aGlzLm5hbWUsIG93bmVyICsgIiBkb2VzIG5vdCBo
YXZlIG93biBwcm9wZXJ0eSAiICsgZm9ybWF0X3ZhbHVlKHRoaXMubmFtZSkpOworfTsKKworSWRs
SW50ZXJmYWNlLnByb3RvdHlwZS5nZXRfaW50ZXJmYWNlX29iamVjdCA9IGZ1bmN0aW9uKCkgewor
ICAgIGlmICghdGhpcy5zaG91bGRfaGF2ZV9pbnRlcmZhY2Vfb2JqZWN0KCkpIHsKKyAgICAgICAg
dmFyIHJlYXNvbiA9IHRoaXMuaXNfY2FsbGJhY2soKSA/ICJsYWNrIG9mIGRlY2xhcmVkIGNvbnN0
YW50cyIgOiAiZGVjbGFyZWQgW0xlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0XSBhdHRyaWJ1dGUiOwor
ICAgICAgICB0aHJvdyBuZXcgSWRsSGFybmVzc0Vycm9yKHRoaXMubmFtZSArICIgaGFzIG5vIGlu
dGVyZmFjZSBvYmplY3QgZHVlIHRvICIgKyByZWFzb24pOworICAgIH0KKworICAgIHJldHVybiB0
aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0X293bmVyKClbdGhpcy5uYW1lXTsKK307CisKK0lkbElu
dGVyZmFjZS5wcm90b3R5cGUuZ2V0X3F1YWxpZmllZF9uYW1lID0gZnVuY3Rpb24oKSB7CisgICAg
Ly8gaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jcXVhbGlmaWVkLW5hbWUKKyAgICB2
YXIgbGVnYWN5TmFtZXNwYWNlID0gdGhpcy5nZXRfbGVnYWN5X25hbWVzcGFjZSgpOworICAgIGlm
IChsZWdhY3lOYW1lc3BhY2UpIHsKKyAgICAgICAgcmV0dXJuIGxlZ2FjeU5hbWVzcGFjZSArICIu
IiArIHRoaXMubmFtZTsKKyAgICB9CisgICAgcmV0dXJuIHRoaXMubmFtZTsKK307CisKK0lkbElu
dGVyZmFjZS5wcm90b3R5cGUuaGFzX3RvX2pzb25fcmVndWxhcl9vcGVyYXRpb24gPSBmdW5jdGlv
bigpIHsKKyAgICByZXR1cm4gdGhpcy5tZW1iZXJzLnNvbWUoZnVuY3Rpb24obSkgeworICAgICAg
ICByZXR1cm4gbS5pc190b19qc29uX3JlZ3VsYXJfb3BlcmF0aW9uKCk7CisgICAgfSk7Cit9Owor
CitJZGxJbnRlcmZhY2UucHJvdG90eXBlLmhhc19kZWZhdWx0X3RvX2pzb25fcmVndWxhcl9vcGVy
YXRpb24gPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gdGhpcy5tZW1iZXJzLnNvbWUoZnVuY3Rp
b24obSkgeworICAgICAgICByZXR1cm4gbS5pc190b19qc29uX3JlZ3VsYXJfb3BlcmF0aW9uKCkg
JiYgbS5oYXNfZXh0ZW5kZWRfYXR0cmlidXRlKCJEZWZhdWx0Iik7CiAgICAgfSk7CiB9OwotLy9A
fQorCisvKioKKyAqIEltcGxlbWVudGF0aW9uIG9mIGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93
ZWJpZGwvI2NyZWF0ZS1hbi1pbmhlcml0YW5jZS1zdGFjaworICogd2l0aCB0aGUgb3JkZXIgcmV2
ZXJzZWQuCisgKgorICogVGhlIG9yZGVyIGlzIHJldmVyc2VkIHNvIHRoYXQgdGhlIGJhc2UgY2xh
c3MgY29tZXMgZmlyc3QgaW4gdGhlIGxpc3QsIGJlY2F1c2UKKyAqIHRoaXMgaXMgd2hhdCBhbGwg
Y2FsbCBzaXRlcyBuZWVkLgorICoKKyAqIFNvIGdpdmVuOgorICoKKyAqICAgQSA6IEIge307Cisg
KiAgIEIgOiBDIHt9OworICogICBDIHt9OworICoKKyAqIHRoZW4gQS5nZXRfcmV2ZXJzZV9pbmhl
cml0YW5jZV9zdGFjaygpIHJldHVybnMgW0MsIEIsIEFdLAorICogYW5kIEIuZ2V0X3JldmVyc2Vf
aW5oZXJpdGFuY2Vfc3RhY2soKSByZXR1cm5zIFtDLCBCXS4KKyAqCisgKiBOb3RlOiBhcyBkaWN0
aW9uYXJ5IGluaGVyaXRhbmNlIGlzIGV4cHJlc3NlZCBpZGVudGljYWxseSBieSB0aGUgQVNULAor
ICogdGhpcyB3b3JrcyBqdXN0IGFzIHdlbGwgZm9yIGdldHRpbmcgYSBzdGFjayBvZiBpbmhlcml0
ZWQgZGljdGlvbmFyaWVzLgorICovCitJZGxJbnRlcmZhY2UucHJvdG90eXBlLmdldF9yZXZlcnNl
X2luaGVyaXRhbmNlX3N0YWNrID0gZnVuY3Rpb24oKSB7CisgICAgY29uc3Qgc3RhY2sgPSBbdGhp
c107CisgICAgbGV0IGlkbF9pbnRlcmZhY2UgPSB0aGlzOworICAgIHdoaWxlIChpZGxfaW50ZXJm
YWNlLmJhc2UpIHsKKyAgICAgICAgY29uc3QgYmFzZSA9IHRoaXMuYXJyYXkubWVtYmVyc1tpZGxf
aW50ZXJmYWNlLmJhc2VdOworICAgICAgICBpZiAoIWJhc2UpIHsKKyAgICAgICAgICAgIHRocm93
IG5ldyBFcnJvcihpZGxfaW50ZXJmYWNlLnR5cGUgKyAiICIgKyBpZGxfaW50ZXJmYWNlLmJhc2Ug
KyAiIG5vdCBmb3VuZCAoaW5oZXJpdGVkIGJ5ICIgKyBpZGxfaW50ZXJmYWNlLm5hbWUgKyAiKSIp
OworICAgICAgICB9IGVsc2UgaWYgKHN0YWNrLmluZGV4T2YoYmFzZSkgPiAtMSkgeworICAgICAg
ICAgICAgc3RhY2sudW5zaGlmdChiYXNlKTsKKyAgICAgICAgICAgIGNvbnN0IGRlcF9jaGFpbiA9
IHN0YWNrLm1hcChpID0+IGkubmFtZSkuam9pbignLCcpOworICAgICAgICAgICAgdGhyb3cgbmV3
IElkbEhhcm5lc3NFcnJvcihgJHt0aGlzLm5hbWV9IGhhcyBhIGNpcmN1bGFyIGRlcGVuZGVuY3k6
ICR7ZGVwX2NoYWlufWApOworICAgICAgICB9CisgICAgICAgIGlkbF9pbnRlcmZhY2UgPSBiYXNl
OworICAgICAgICBzdGFjay51bnNoaWZ0KGlkbF9pbnRlcmZhY2UpOworICAgIH0KKyAgICByZXR1
cm4gc3RhY2s7Cit9OworCisvKioKKyAqIEltcGxlbWVudGF0aW9uIG9mCisgKiBodHRwczovL2hl
eWNhbS5naXRodWIuaW8vd2ViaWRsLyNkZWZhdWx0LXRvanNvbi1vcGVyYXRpb24KKyAqIGZvciB0
ZXN0aW5nIHB1cnBvc2VzLgorICoKKyAqIENvbGxlY3RzIHRoZSBJREwgdHlwZXMgb2YgdGhlIGF0
dHJpYnV0ZXMgdGhhdCBtZWV0IHRoZSBjcml0ZXJpYQorICogZm9yIGluY2x1c2lvbiBpbiB0aGUg
ZGVmYXVsdCB0b0pTT04gb3BlcmF0aW9uIGZvciBlYXN5CisgKiBjb21wYXJpc29uIHdpdGggYWN0
dWFsIHZhbHVlCisgKi8KK0lkbEludGVyZmFjZS5wcm90b3R5cGUuZGVmYXVsdF90b19qc29uX29w
ZXJhdGlvbiA9IGZ1bmN0aW9uKCkgeworICAgIGNvbnN0IG1hcCA9IG5ldyBNYXAoKQorICAgIGxl
dCBpc0RlZmF1bHQgPSBmYWxzZTsKKyAgICBmb3IgKGNvbnN0IEkgb2YgdGhpcy5nZXRfcmV2ZXJz
ZV9pbmhlcml0YW5jZV9zdGFjaygpKSB7CisgICAgICAgIGlmIChJLmhhc19kZWZhdWx0X3RvX2pz
b25fcmVndWxhcl9vcGVyYXRpb24oKSkgeworICAgICAgICAgICAgaXNEZWZhdWx0ID0gdHJ1ZTsK
KyAgICAgICAgICAgIGZvciAoY29uc3QgbSBvZiBJLm1lbWJlcnMpIHsKKyAgICAgICAgICAgICAg
ICBpZiAobS5zcGVjaWFsICE9PSAic3RhdGljIiAmJiBtLnR5cGUgPT0gImF0dHJpYnV0ZSIgJiYg
SS5hcnJheS5pc19qc29uX3R5cGUobS5pZGxUeXBlKSkgeworICAgICAgICAgICAgICAgICAgICBt
YXAuc2V0KG0ubmFtZSwgbS5pZGxUeXBlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9CisgICAgICAgIH0gZWxzZSBpZiAoSS5oYXNfdG9fanNvbl9yZWd1bGFyX29wZXJhdGlvbigp
KSB7CisgICAgICAgICAgICBpc0RlZmF1bHQgPSBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICByZXR1cm4gaXNEZWZhdWx0ID8gbWFwIDogbnVsbDsKK307CiAKIElkbEludGVyZmFjZS5wcm90
b3R5cGUudGVzdCA9IGZ1bmN0aW9uKCkKLS8vQHsKIHsKLSAgICBpZiAodGhpcy5oYXNfZXh0ZW5k
ZWRfYXR0cmlidXRlKCJOb0ludGVyZmFjZU9iamVjdCIpKQorICAgIGlmICh0aGlzLmhhc19leHRl
bmRlZF9hdHRyaWJ1dGUoIkxlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0IikgfHwgdGhpcy5pc19taXhp
bigpKQogICAgIHsKICAgICAgICAgLy8gTm8gdGVzdHMgdG8gZG8gd2l0aG91dCBhbiBpbnN0YW5j
ZS4gIFRPRE86IFdlIHNob3VsZCBzdGlsbCBiZSBhYmxlCiAgICAgICAgIC8vIHRvIHJ1biB0ZXN0
cyBvbiB0aGUgcHJvdG90eXBlIG9iamVjdCwgaWYgd2Ugb2J0YWluIG9uZSB0aHJvdWdoIHNvbWUK
QEAgLTc0MywxMCArMTM5MSwxNiBAQCBJZGxJbnRlcmZhY2UucHJvdG90eXBlLnRlc3QgPSBmdW5j
dGlvbigpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIXRoaXMuZXhwb3NlZCkg
ewotICAgICAgICB0ZXN0KGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKHRo
aXMubmFtZSBpbiBzZWxmKTsKLSAgICAgICAgfS5iaW5kKHRoaXMpLCB0aGlzLm5hbWUgKyAiIGlu
dGVyZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFjZSBvYmplY3QiKTsK
KyAgICAvLyBJZiB0aGUgaW50ZXJmYWNlIG9iamVjdCBpcyBub3QgZXhwb3NlZCwgb25seSB0ZXN0
IHRoYXQuIE1lbWJlcnMgY2FuJ3QgYmUKKyAgICAvLyB0ZXN0ZWQgZWl0aGVyLCBidXQgb2JqZWN0
cyBjb3VsZCBzdGlsbCBiZSB0ZXN0ZWQgaW4gfHRlc3Rfb2JqZWN0fC4KKyAgICBpZiAoIXRoaXMu
ZXhwb3NlZCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy51bnRlc3RlZCkKKyAgICAgICAgewor
ICAgICAgICAgICAgc3Vic2V0VGVzdEJ5S2V5KHRoaXMubmFtZSwgdGVzdCwgZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKHRoaXMubmFtZSBpbiBzZWxmKTsKKyAgICAg
ICAgICAgIH0uYmluZCh0aGlzKSwgdGhpcy5uYW1lICsgIiBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBh
bmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2Ugb2JqZWN0Iik7CisgICAgICAgIH0KICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApAQCAtNzY1LDQ0ICsxNDE5LDM5IEBAIElkbEludGVyZmFjZS5wcm90
b3R5cGUudGVzdCA9IGZ1bmN0aW9uKCkKICAgICAvLyBpbnRlcmZhY2UgYXJlIHN0aWxsIHRlc3Rl
ZC4KICAgICB0aGlzLnRlc3RfbWVtYmVycygpOwogfTsKLS8vQH0KKworSWRsSW50ZXJmYWNlLnBy
b3RvdHlwZS5jb25zdHJ1Y3RvcnMgPSBmdW5jdGlvbigpCit7CisgICAgcmV0dXJuIHRoaXMubWVt
YmVycworICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uKG0pIHsgcmV0dXJuIG0udHlwZSA9PSAiY29u
c3RydWN0b3IiOyB9KTsKK30KIAogSWRsSW50ZXJmYWNlLnByb3RvdHlwZS50ZXN0X3NlbGYgPSBm
dW5jdGlvbigpCi0vL0B7CiB7Ci0gICAgdGVzdChmdW5jdGlvbigpCisgICAgc3Vic2V0VGVzdEJ5
S2V5KHRoaXMubmFtZSwgdGVzdCwgZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgLy8gVGhpcyBm
dW5jdGlvbiB0ZXN0cyBXZWJJREwgYXMgb2YgMjAxNS0wMS0xMy4KLQotICAgICAgICAvLyAiRm9y
IGV2ZXJ5IGludGVyZmFjZSB0aGF0IGlzIGV4cG9zZWQgaW4gYSBnaXZlbiBFQ01BU2NyaXB0IGds
b2JhbAotICAgICAgICAvLyBlbnZpcm9ubWVudCBhbmQ6Ci0gICAgICAgIC8vICogaXMgYSBjYWxs
YmFjayBpbnRlcmZhY2UgdGhhdCBoYXMgY29uc3RhbnRzIGRlY2xhcmVkIG9uIGl0LCBvcgotICAg
ICAgICAvLyAqIGlzIGEgbm9uLWNhbGxiYWNrIGludGVyZmFjZSB0aGF0IGlzIG5vdCBkZWNsYXJl
ZCB3aXRoIHRoZQotICAgICAgICAvLyAgIFtOb0ludGVyZmFjZU9iamVjdF0gZXh0ZW5kZWQgYXR0
cmlidXRlLAotICAgICAgICAvLyBhIGNvcnJlc3BvbmRpbmcgcHJvcGVydHkgTVVTVCBleGlzdCBv
biB0aGUgRUNNQVNjcmlwdCBnbG9iYWwgb2JqZWN0LgorICAgICAgICBpZiAoIXRoaXMuc2hvdWxk
X2hhdmVfaW50ZXJmYWNlX29iamVjdCgpKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKwogICAgICAgICAvLyBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgaXMgdGhlIGlkZW50aWZp
ZXIgb2YgdGhlIGludGVyZmFjZSwgYW5kIGl0cwogICAgICAgICAvLyB2YWx1ZSBpcyBhbiBvYmpl
Y3QgY2FsbGVkIHRoZSBpbnRlcmZhY2Ugb2JqZWN0LgogICAgICAgICAvLyBUaGUgcHJvcGVydHkg
aGFzIHRoZSBhdHRyaWJ1dGVzIHsgW1tXcml0YWJsZV1dOiB0cnVlLAogICAgICAgICAvLyBbW0Vu
dW1lcmFibGVdXTogZmFsc2UsIFtbQ29uZmlndXJhYmxlXV06IHRydWUgfS4iCi0gICAgICAgIGlm
ICh0aGlzLmlzX2NhbGxiYWNrKCkgJiYgIXRoaXMuaGFzX2NvbnN0YW50cygpKSB7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLQogICAgICAgICAvLyBUT0RPOiBTaG91bGQgd2UgdGVz
dCBoZXJlIHRoYXQgdGhlIHByb3BlcnR5IGlzIGFjdHVhbGx5IHdyaXRhYmxlCiAgICAgICAgIC8v
IGV0Yy4sIG9yIHRydXN0IGdldE93blByb3BlcnR5RGVzY3JpcHRvcj8KLSAgICAgICAgYXNzZXJ0
X293bl9wcm9wZXJ0eShzZWxmLCB0aGlzLm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgInNlbGYgZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVydHkgIiArIGZvcm1hdF92YWx1ZSh0aGlz
Lm5hbWUpKTsKLSAgICAgICAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKHNlbGYsIHRoaXMubmFtZSk7Ci0gICAgICAgIGFzc2VydF9mYWxzZSgiZ2V0IiBpbiBkZXNj
LCAic2VsZidzIHByb3BlcnR5ICIgKyBmb3JtYXRfdmFsdWUodGhpcy5uYW1lKSArICIgaGFzIGdl
dHRlciIpOwotICAgICAgICBhc3NlcnRfZmFsc2UoInNldCIgaW4gZGVzYywgInNlbGYncyBwcm9w
ZXJ0eSAiICsgZm9ybWF0X3ZhbHVlKHRoaXMubmFtZSkgKyAiIGhhcyBzZXR0ZXIiKTsKLSAgICAg
ICAgYXNzZXJ0X3RydWUoZGVzYy53cml0YWJsZSwgInNlbGYncyBwcm9wZXJ0eSAiICsgZm9ybWF0
X3ZhbHVlKHRoaXMubmFtZSkgKyAiIGlzIG5vdCB3cml0YWJsZSIpOwotICAgICAgICBhc3NlcnRf
ZmFsc2UoZGVzYy5lbnVtZXJhYmxlLCAic2VsZidzIHByb3BlcnR5ICIgKyBmb3JtYXRfdmFsdWUo
dGhpcy5uYW1lKSArICIgaXMgZW51bWVyYWJsZSIpOwotICAgICAgICBhc3NlcnRfdHJ1ZShkZXNj
LmNvbmZpZ3VyYWJsZSwgInNlbGYncyBwcm9wZXJ0eSAiICsgZm9ybWF0X3ZhbHVlKHRoaXMubmFt
ZSkgKyAiIGlzIG5vdCBjb25maWd1cmFibGUiKTsKKyAgICAgICAgdGhpcy5hc3NlcnRfaW50ZXJm
YWNlX29iamVjdF9leGlzdHMoKTsKKyAgICAgICAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKHRoaXMuZ2V0X2ludGVyZmFjZV9vYmplY3Rfb3duZXIoKSwgdGhpcy5u
YW1lKTsKKyAgICAgICAgYXNzZXJ0X2ZhbHNlKCJnZXQiIGluIGRlc2MsICJzZWxmJ3MgcHJvcGVy
dHkgIiArIGZvcm1hdF92YWx1ZSh0aGlzLm5hbWUpICsgIiBzaG91bGQgbm90IGhhdmUgYSBnZXR0
ZXIiKTsKKyAgICAgICAgYXNzZXJ0X2ZhbHNlKCJzZXQiIGluIGRlc2MsICJzZWxmJ3MgcHJvcGVy
dHkgIiArIGZvcm1hdF92YWx1ZSh0aGlzLm5hbWUpICsgIiBzaG91bGQgbm90IGhhdmUgYSBzZXR0
ZXIiKTsKKyAgICAgICAgYXNzZXJ0X3RydWUoZGVzYy53cml0YWJsZSwgInNlbGYncyBwcm9wZXJ0
eSAiICsgZm9ybWF0X3ZhbHVlKHRoaXMubmFtZSkgKyAiIHNob3VsZCBiZSB3cml0YWJsZSIpOwor
ICAgICAgICBhc3NlcnRfZmFsc2UoZGVzYy5lbnVtZXJhYmxlLCAic2VsZidzIHByb3BlcnR5ICIg
KyBmb3JtYXRfdmFsdWUodGhpcy5uYW1lKSArICIgc2hvdWxkIG5vdCBiZSBlbnVtZXJhYmxlIik7
CisgICAgICAgIGFzc2VydF90cnVlKGRlc2MuY29uZmlndXJhYmxlLCAic2VsZidzIHByb3BlcnR5
ICIgKyBmb3JtYXRfdmFsdWUodGhpcy5uYW1lKSArICIgc2hvdWxkIGJlIGNvbmZpZ3VyYWJsZSIp
OwogCiAgICAgICAgIGlmICh0aGlzLmlzX2NhbGxiYWNrKCkpIHsKICAgICAgICAgICAgIC8vICJU
aGUgaW50ZXJuYWwgW1tQcm90b3R5cGVdXSBwcm9wZXJ0eSBvZiBhbiBpbnRlcmZhY2Ugb2JqZWN0
IGZvcgogICAgICAgICAgICAgLy8gYSBjYWxsYmFjayBpbnRlcmZhY2UgbXVzdCBiZSB0aGUgRnVu
Y3Rpb24ucHJvdG90eXBlIG9iamVjdC4iCi0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKE9iamVj
dC5nZXRQcm90b3R5cGVPZihzZWxmW3RoaXMubmFtZV0pLCBGdW5jdGlvbi5wcm90b3R5cGUsCisg
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzLmdldF9p
bnRlcmZhY2Vfb2JqZWN0KCkpLCBGdW5jdGlvbi5wcm90b3R5cGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJwcm90b3R5cGUgb2Ygc2VsZidzIHByb3BlcnR5ICIgKyBmb3JtYXRfdmFsdWUo
dGhpcy5uYW1lKSArICIgaXMgbm90IE9iamVjdC5wcm90b3R5cGUiKTsKIAogICAgICAgICAgICAg
cmV0dXJuOwpAQCAtODIyLDggKzE0NzEsNiBAQCBJZGxJbnRlcmZhY2UucHJvdG90eXBlLnRlc3Rf
c2VsZiA9IGZ1bmN0aW9uKCkKIAogICAgICAgICAvLyAiKiBJdHMgW1tDb25zdHJ1Y3RdXSBpbnRl
cm5hbCBwcm9wZXJ0eSBpcyBzZXQgYXMgZGVzY3JpYmVkIGluCiAgICAgICAgIC8vICAgIEVDTUEt
MjYyIHNlY3Rpb24gMTkuMi4yLjMuIgotICAgICAgICAvLyBUZXN0ZWQgYmVsb3cgaWYgbm8gY29u
c3RydWN0b3IgaXMgZGVmaW5lZC4gIFRPRE86IHRlc3QgY29uc3RydWN0b3JzCi0gICAgICAgIC8v
IGlmIGRlZmluZWQuCiAKICAgICAgICAgLy8gIiogSXRzIEBAaGFzSW5zdGFuY2UgcHJvcGVydHkg
aXMgc2V0IGFzIGRlc2NyaWJlZCBpbiBFQ01BLTI2MgogICAgICAgICAvLyAgICBzZWN0aW9uIDE5
LjIuMy44LCB1bmxlc3Mgb3RoZXJ3aXNlIHNwZWNpZmllZC4iCkBAIC04MzIsMjQgKzE0NzksMTkg
QEAgSWRsSW50ZXJmYWNlLnByb3RvdHlwZS50ZXN0X3NlbGYgPSBmdW5jdGlvbigpCiAgICAgICAg
IC8vIEVTNiAocmV2IDMwKSAxOS4xLjMuNjoKICAgICAgICAgLy8gIkVsc2UsIGlmIE8gaGFzIGEg
W1tDYWxsXV0gaW50ZXJuYWwgbWV0aG9kLCB0aGVuIGxldCBidWlsdGluVGFnIGJlCiAgICAgICAg
IC8vICJGdW5jdGlvbiIuIgotICAgICAgICBhc3NlcnRfY2xhc3Nfc3RyaW5nKHNlbGZbdGhpcy5u
YW1lXSwgIkZ1bmN0aW9uIiwgImNsYXNzIHN0cmluZyBvZiAiICsgdGhpcy5uYW1lKTsKKyAgICAg
ICAgYXNzZXJ0X2NsYXNzX3N0cmluZyh0aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0KCksICJGdW5j
dGlvbiIsICJjbGFzcyBzdHJpbmcgb2YgIiArIHRoaXMubmFtZSk7CiAKICAgICAgICAgLy8gIlRo
ZSBbW1Byb3RvdHlwZV1dIGludGVybmFsIHByb3BlcnR5IG9mIGFuIGludGVyZmFjZSBvYmplY3Qg
Zm9yIGEKICAgICAgICAgLy8gbm9uLWNhbGxiYWNrIGludGVyZmFjZSBpcyBkZXRlcm1pbmVkIGFz
IGZvbGxvd3M6IgotICAgICAgICB2YXIgcHJvdG90eXBlID0gT2JqZWN0LmdldFByb3RvdHlwZU9m
KHNlbGZbdGhpcy5uYW1lXSk7CisgICAgICAgIHZhciBwcm90b3R5cGUgPSBPYmplY3QuZ2V0UHJv
dG90eXBlT2YodGhpcy5nZXRfaW50ZXJmYWNlX29iamVjdCgpKTsKICAgICAgICAgaWYgKHRoaXMu
YmFzZSkgewogICAgICAgICAgICAgLy8gIiogSWYgdGhlIGludGVyZmFjZSBpbmhlcml0cyBmcm9t
IHNvbWUgb3RoZXIgaW50ZXJmYWNlLCB0aGUKICAgICAgICAgICAgIC8vICAgIHZhbHVlIG9mIFtb
UHJvdG90eXBlXV0gaXMgdGhlIGludGVyZmFjZSBvYmplY3QgZm9yIHRoYXQgb3RoZXIKICAgICAg
ICAgICAgIC8vICAgIGludGVyZmFjZS4iCi0gICAgICAgICAgICB2YXIgaGFzX2ludGVyZmFjZV9v
YmplY3QgPQotICAgICAgICAgICAgICAgICF0aGlzLmFycmF5Ci0gICAgICAgICAgICAgICAgICAg
ICAubWVtYmVyc1t0aGlzLmJhc2VdCi0gICAgICAgICAgICAgICAgICAgICAuaGFzX2V4dGVuZGVk
X2F0dHJpYnV0ZSgiTm9JbnRlcmZhY2VPYmplY3QiKTsKLSAgICAgICAgICAgIGlmIChoYXNfaW50
ZXJmYWNlX29iamVjdCkgewotICAgICAgICAgICAgICAgIGFzc2VydF9vd25fcHJvcGVydHkoc2Vs
ZiwgdGhpcy5iYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Nob3Vs
ZCBpbmhlcml0IGZyb20gJyArIHRoaXMuYmFzZSArCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnLCBidXQgc2VsZiBoYXMgbm8gc3VjaCBwcm9wZXJ0eScpOwotICAgICAgICAg
ICAgICAgIGFzc2VydF9lcXVhbHMocHJvdG90eXBlLCBzZWxmW3RoaXMuYmFzZV0sCisgICAgICAg
ICAgICB2YXIgaW5oZXJpdGVkX2ludGVyZmFjZSA9IHRoaXMuYXJyYXkubWVtYmVyc1t0aGlzLmJh
c2VdOworICAgICAgICAgICAgaWYgKCFpbmhlcml0ZWRfaW50ZXJmYWNlLmhhc19leHRlbmRlZF9h
dHRyaWJ1dGUoIkxlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0IikpIHsKKyAgICAgICAgICAgICAgICBp
bmhlcml0ZWRfaW50ZXJmYWNlLmFzc2VydF9pbnRlcmZhY2Vfb2JqZWN0X2V4aXN0cygpOworICAg
ICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocHJvdG90eXBlLCBpbmhlcml0ZWRfaW50ZXJmYWNl
LmdldF9pbnRlcmZhY2Vfb2JqZWN0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
cHJvdG90eXBlIG9mICcgKyB0aGlzLm5hbWUgKyAnIGlzIG5vdCAnICsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRoaXMuYmFzZSk7CiAgICAgICAgICAgICB9CkBAIC04NjEsODggKzE1
MDMsMjUyIEBAIElkbEludGVyZmFjZS5wcm90b3R5cGUudGVzdF9zZWxmID0gZnVuY3Rpb24oKQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAicHJvdG90eXBlIG9mIHNlbGYncyBwcm9wZXJ0eSAi
ICsgZm9ybWF0X3ZhbHVlKHRoaXMubmFtZSkgKyAiIGlzIG5vdCBGdW5jdGlvbi5wcm90b3R5cGUi
KTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICghdGhpcy5oYXNfZXh0ZW5kZWRfYXR0cmlidXRl
KCJDb25zdHJ1Y3RvciIpKSB7Ci0gICAgICAgICAgICAvLyAiVGhlIGludGVybmFsIFtbQ2FsbF1d
IG1ldGhvZCBvZiB0aGUgaW50ZXJmYWNlIG9iamVjdCBiZWhhdmVzIGFzCi0gICAgICAgICAgICAv
LyBmb2xsb3dzIC4gLiAuCi0gICAgICAgICAgICAvLwotICAgICAgICAgICAgLy8gIklmIEkgd2Fz
IG5vdCBkZWNsYXJlZCB3aXRoIGEgW0NvbnN0cnVjdG9yXSBleHRlbmRlZCBhdHRyaWJ1dGUsCi0g
ICAgICAgICAgICAvLyB0aGVuIHRocm93IGEgVHlwZUVycm9yLiIKLSAgICAgICAgICAgIGFzc2Vy
dF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBz
ZWxmW3RoaXMubmFtZV0oKTsKLSAgICAgICAgICAgIH0uYmluZCh0aGlzKSwgImludGVyZmFjZSBv
YmplY3QgZGlkbid0IHRocm93IFR5cGVFcnJvciB3aGVuIGNhbGxlZCBhcyBhIGZ1bmN0aW9uIik7
Ci0gICAgICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7
Ci0gICAgICAgICAgICAgICAgbmV3IHNlbGZbdGhpcy5uYW1lXSgpOwotICAgICAgICAgICAgfS5i
aW5kKHRoaXMpLCAiaW50ZXJmYWNlIG9iamVjdCBkaWRuJ3QgdGhyb3cgVHlwZUVycm9yIHdoZW4g
Y2FsbGVkIGFzIGEgY29uc3RydWN0b3IiKTsKKyAgICAgICAgLy8gQWx3YXlzIHRlc3QgZm9yIFtb
Q29uc3RydWN0XV06CisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9oZXljYW0vd2ViaWRs
L2lzc3Vlcy82OTgKKyAgICAgICAgYXNzZXJ0X3RydWUoaXNDb25zdHJ1Y3Rvcih0aGlzLmdldF9p
bnRlcmZhY2Vfb2JqZWN0KCkpLCAiaW50ZXJmYWNlIG9iamVjdCBtdXN0IHBhc3MgSXNDb25zdHJ1
Y3RvciBjaGVjayIpOworCisgICAgICAgIGlmICghdGhpcy5jb25zdHJ1Y3RvcnMoKS5sZW5ndGgp
IHsKKyAgICAgICAgICAgIC8vICJJZiBJIHdhcyBub3QgZGVjbGFyZWQgd2l0aCBhIGNvbnN0cnVj
dG9yIG9wZXJhdGlvbiwgdGhlbiB0aHJvdyBhIFR5cGVFcnJvci4iCisgICAgICAgICAgICB2YXIg
aW50ZXJmYWNlX29iamVjdCA9IHRoaXMuZ2V0X2ludGVyZmFjZV9vYmplY3QoKTsKKyAgICAgICAg
ICAgIGFzc2VydF90aHJvd3NfanMoZ2xvYmFsT2YoaW50ZXJmYWNlX29iamVjdCkuVHlwZUVycm9y
LCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBpbnRlcmZhY2Vfb2JqZWN0KCk7CisgICAg
ICAgICAgICB9LCAiaW50ZXJmYWNlIG9iamVjdCBkaWRuJ3QgdGhyb3cgVHlwZUVycm9yIHdoZW4g
Y2FsbGVkIGFzIGEgZnVuY3Rpb24iKTsKKyAgICAgICAgICAgIGFzc2VydF90aHJvd3NfanMoZ2xv
YmFsT2YoaW50ZXJmYWNlX29iamVjdCkuVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgICAgICBuZXcgaW50ZXJmYWNlX29iamVjdCgpOworICAgICAgICAgICAgfSwgImludGVyZmFj
ZSBvYmplY3QgZGlkbid0IHRocm93IFR5cGVFcnJvciB3aGVuIGNhbGxlZCBhcyBhIGNvbnN0cnVj
dG9yIik7CiAgICAgICAgIH0KICAgICB9LmJpbmQodGhpcyksIHRoaXMubmFtZSArICIgaW50ZXJm
YWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIG9iamVjdCIpOwogCi0g
ICAgaWYgKCF0aGlzLmlzX2NhbGxiYWNrKCkpIHsKLSAgICAgICAgdGVzdChmdW5jdGlvbigpIHsK
KyAgICBpZiAodGhpcy5zaG91bGRfaGF2ZV9pbnRlcmZhY2Vfb2JqZWN0KCkgJiYgIXRoaXMuaXNf
Y2FsbGJhY2soKSkgeworICAgICAgICBzdWJzZXRUZXN0QnlLZXkodGhpcy5uYW1lLCB0ZXN0LCBm
dW5jdGlvbigpIHsKICAgICAgICAgICAgIC8vIFRoaXMgZnVuY3Rpb24gdGVzdHMgV2ViSURMIGFz
IG9mIDIwMTQtMTAtMjUuCiAgICAgICAgICAgICAvLyBodHRwczovL2hleWNhbS5naXRodWIuaW8v
d2ViaWRsLyNlcy1pbnRlcmZhY2UtY2FsbAogCi0gICAgICAgICAgICBhc3NlcnRfb3duX3Byb3Bl
cnR5KHNlbGYsIHRoaXMubmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNl
bGYgZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVydHkgIiArIGZvcm1hdF92YWx1ZSh0aGlzLm5hbWUp
KTsKKyAgICAgICAgICAgIHRoaXMuYXNzZXJ0X2ludGVyZmFjZV9vYmplY3RfZXhpc3RzKCk7CiAK
ICAgICAgICAgICAgIC8vICJJbnRlcmZhY2Ugb2JqZWN0cyBmb3Igbm9uLWNhbGxiYWNrIGludGVy
ZmFjZXMgTVVTVCBoYXZlIGEKICAgICAgICAgICAgIC8vIHByb3BlcnR5IG5hbWVkIOKAnGxlbmd0
aOKAnSB3aXRoIGF0dHJpYnV0ZXMgeyBbW1dyaXRhYmxlXV06IGZhbHNlLAogICAgICAgICAgICAg
Ly8gW1tFbnVtZXJhYmxlXV06IGZhbHNlLCBbW0NvbmZpZ3VyYWJsZV1dOiB0cnVlIH0gd2hvc2Ug
dmFsdWUgaXMKICAgICAgICAgICAgIC8vIGEgTnVtYmVyLiIKLSAgICAgICAgICAgIGFzc2VydF9v
d25fcHJvcGVydHkoc2VsZlt0aGlzLm5hbWVdLCAibGVuZ3RoIik7Ci0gICAgICAgICAgICB2YXIg
ZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc2VsZlt0aGlzLm5hbWVdLCAi
bGVuZ3RoIik7Ci0gICAgICAgICAgICBhc3NlcnRfZmFsc2UoImdldCIgaW4gZGVzYywgdGhpcy5u
YW1lICsgIi5sZW5ndGggaGFzIGdldHRlciIpOwotICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKCJz
ZXQiIGluIGRlc2MsIHRoaXMubmFtZSArICIubGVuZ3RoIGhhcyBzZXR0ZXIiKTsKLSAgICAgICAg
ICAgIGFzc2VydF9mYWxzZShkZXNjLndyaXRhYmxlLCB0aGlzLm5hbWUgKyAiLmxlbmd0aCBpcyB3
cml0YWJsZSIpOwotICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKGRlc2MuZW51bWVyYWJsZSwgdGhp
cy5uYW1lICsgIi5sZW5ndGggaXMgZW51bWVyYWJsZSIpOwotICAgICAgICAgICAgYXNzZXJ0X3Ry
dWUoZGVzYy5jb25maWd1cmFibGUsIHRoaXMubmFtZSArICIubGVuZ3RoIGlzIG5vdCBjb25maWd1
cmFibGUiKTsKLQotICAgICAgICAgICAgdmFyIGNvbnN0cnVjdG9ycyA9IHRoaXMuZXh0QXR0cnMK
LSAgICAgICAgICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uKGF0dHIpIHsgcmV0dXJuIGF0dHIubmFt
ZSA9PSAiQ29uc3RydWN0b3IiOyB9KTsKKyAgICAgICAgICAgIGFzc2VydF9vd25fcHJvcGVydHko
dGhpcy5nZXRfaW50ZXJmYWNlX29iamVjdCgpLCAibGVuZ3RoIik7CisgICAgICAgICAgICB2YXIg
ZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGhpcy5nZXRfaW50ZXJmYWNl
X29iamVjdCgpLCAibGVuZ3RoIik7CisgICAgICAgICAgICBhc3NlcnRfZmFsc2UoImdldCIgaW4g
ZGVzYywgdGhpcy5uYW1lICsgIi5sZW5ndGggc2hvdWxkIG5vdCBoYXZlIGEgZ2V0dGVyIik7Cisg
ICAgICAgICAgICBhc3NlcnRfZmFsc2UoInNldCIgaW4gZGVzYywgdGhpcy5uYW1lICsgIi5sZW5n
dGggc2hvdWxkIG5vdCBoYXZlIGEgc2V0dGVyIik7CisgICAgICAgICAgICBhc3NlcnRfZmFsc2Uo
ZGVzYy53cml0YWJsZSwgdGhpcy5uYW1lICsgIi5sZW5ndGggc2hvdWxkIG5vdCBiZSB3cml0YWJs
ZSIpOworICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKGRlc2MuZW51bWVyYWJsZSwgdGhpcy5uYW1l
ICsgIi5sZW5ndGggc2hvdWxkIG5vdCBiZSBlbnVtZXJhYmxlIik7CisgICAgICAgICAgICBhc3Nl
cnRfdHJ1ZShkZXNjLmNvbmZpZ3VyYWJsZSwgdGhpcy5uYW1lICsgIi5sZW5ndGggc2hvdWxkIGJl
IGNvbmZpZ3VyYWJsZSIpOworCisgICAgICAgICAgICB2YXIgY29uc3RydWN0b3JzID0gdGhpcy5j
b25zdHJ1Y3RvcnMoKTsKICAgICAgICAgICAgIHZhciBleHBlY3RlZF9sZW5ndGggPSBtaW5PdmVy
bG9hZExlbmd0aChjb25zdHJ1Y3RvcnMpOwotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhzZWxm
W3RoaXMubmFtZV0ubGVuZ3RoLCBleHBlY3RlZF9sZW5ndGgsICJ3cm9uZyB2YWx1ZSBmb3IgIiAr
IHRoaXMubmFtZSArICIubGVuZ3RoIik7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHRoaXMu
Z2V0X2ludGVyZmFjZV9vYmplY3QoKS5sZW5ndGgsIGV4cGVjdGVkX2xlbmd0aCwgIndyb25nIHZh
bHVlIGZvciAiICsgdGhpcy5uYW1lICsgIi5sZW5ndGgiKTsKICAgICAgICAgfS5iaW5kKHRoaXMp
LCB0aGlzLm5hbWUgKyAiIGludGVyZmFjZSBvYmplY3QgbGVuZ3RoIik7CiAgICAgfQogCi0gICAg
aWYgKCF0aGlzLmlzX2NhbGxiYWNrKCkgfHwgdGhpcy5oYXNfY29uc3RhbnRzKCkpIHsKLSAgICAg
ICAgdGVzdChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIC8vIFRoaXMgZnVuY3Rpb24gdGVzdHMg
V2ViSURMIGFzIG9mIDIwMTUtMTEtMTcuCi0gICAgICAgICAgICAvLyBodHRwczovL2hleWNhbS5n
aXRodWIuaW8vd2ViaWRsLyNpbnRlcmZhY2Utb2JqZWN0CisgICAgaWYgKHRoaXMuc2hvdWxkX2hh
dmVfaW50ZXJmYWNlX29iamVjdCgpKSB7CisgICAgICAgIHN1YnNldFRlc3RCeUtleSh0aGlzLm5h
bWUsIHRlc3QsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgLy8gVGhpcyBmdW5jdGlvbiB0ZXN0
cyBXZWJJREwgYXMgb2YgMjAxNS0xMS0xNy4KKyAgICAgICAgICAgIC8vIGh0dHBzOi8vaGV5Y2Ft
LmdpdGh1Yi5pby93ZWJpZGwvI2ludGVyZmFjZS1vYmplY3QKKworICAgICAgICAgICAgdGhpcy5h
c3NlcnRfaW50ZXJmYWNlX29iamVjdF9leGlzdHMoKTsKKworICAgICAgICAgICAgLy8gIkFsbCBp
bnRlcmZhY2Ugb2JqZWN0cyBtdXN0IGhhdmUgYSBwcm9wZXJ0eSBuYW1lZCDigJxuYW1l4oCdIHdp
dGgKKyAgICAgICAgICAgIC8vIGF0dHJpYnV0ZXMgeyBbW1dyaXRhYmxlXV06IGZhbHNlLCBbW0Vu
dW1lcmFibGVdXTogZmFsc2UsCisgICAgICAgICAgICAvLyBbW0NvbmZpZ3VyYWJsZV1dOiB0cnVl
IH0gd2hvc2UgdmFsdWUgaXMgdGhlIGlkZW50aWZpZXIgb2YgdGhlCisgICAgICAgICAgICAvLyBj
b3JyZXNwb25kaW5nIGludGVyZmFjZS4iCisKKyAgICAgICAgICAgIGFzc2VydF9vd25fcHJvcGVy
dHkodGhpcy5nZXRfaW50ZXJmYWNlX29iamVjdCgpLCAibmFtZSIpOworICAgICAgICAgICAgdmFy
IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRoaXMuZ2V0X2ludGVyZmFj
ZV9vYmplY3QoKSwgIm5hbWUiKTsKKyAgICAgICAgICAgIGFzc2VydF9mYWxzZSgiZ2V0IiBpbiBk
ZXNjLCB0aGlzLm5hbWUgKyAiLm5hbWUgc2hvdWxkIG5vdCBoYXZlIGEgZ2V0dGVyIik7CisgICAg
ICAgICAgICBhc3NlcnRfZmFsc2UoInNldCIgaW4gZGVzYywgdGhpcy5uYW1lICsgIi5uYW1lIHNo
b3VsZCBub3QgaGF2ZSBhIHNldHRlciIpOworICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKGRlc2Mu
d3JpdGFibGUsIHRoaXMubmFtZSArICIubmFtZSBzaG91bGQgbm90IGJlIHdyaXRhYmxlIik7Cisg
ICAgICAgICAgICBhc3NlcnRfZmFsc2UoZGVzYy5lbnVtZXJhYmxlLCB0aGlzLm5hbWUgKyAiLm5h
bWUgc2hvdWxkIG5vdCBiZSBlbnVtZXJhYmxlIik7CisgICAgICAgICAgICBhc3NlcnRfdHJ1ZShk
ZXNjLmNvbmZpZ3VyYWJsZSwgdGhpcy5uYW1lICsgIi5uYW1lIHNob3VsZCBiZSBjb25maWd1cmFi
bGUiKTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHModGhpcy5nZXRfaW50ZXJmYWNlX29iamVj
dCgpLm5hbWUsIHRoaXMubmFtZSwgIndyb25nIHZhbHVlIGZvciAiICsgdGhpcy5uYW1lICsgIi5u
YW1lIik7CisgICAgICAgIH0uYmluZCh0aGlzKSwgdGhpcy5uYW1lICsgIiBpbnRlcmZhY2Ugb2Jq
ZWN0IG5hbWUiKTsKKyAgICB9CisKKworICAgIGlmICh0aGlzLmhhc19leHRlbmRlZF9hdHRyaWJ1
dGUoIkxlZ2FjeVdpbmRvd0FsaWFzIikpIHsKKyAgICAgICAgc3Vic2V0VGVzdEJ5S2V5KHRoaXMu
bmFtZSwgdGVzdCwgZnVuY3Rpb24oKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgYWxpYXNB
dHRycyA9IHRoaXMuZXh0QXR0cnMuZmlsdGVyKGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8ubmFtZSA9
PT0gIkxlZ2FjeVdpbmRvd0FsaWFzIjsgfSk7CisgICAgICAgICAgICBpZiAoYWxpYXNBdHRycy5s
ZW5ndGggPiAxKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElkbEhhcm5lc3NFcnJvcigi
SW52YWxpZCBJREw6IG11bHRpcGxlIExlZ2FjeVdpbmRvd0FsaWFzIGV4dGVuZGVkIGF0dHJpYnV0
ZXMgb24gIiArIHRoaXMubmFtZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAodGhp
cy5pc19jYWxsYmFjaygpKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElkbEhhcm5lc3NF
cnJvcigiSW52YWxpZCBJREw6IExlZ2FjeVdpbmRvd0FsaWFzIGV4dGVuZGVkIGF0dHJpYnV0ZSBv
biBub24taW50ZXJmYWNlICIgKyB0aGlzLm5hbWUpOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgaWYgKCF0aGlzLmV4cG9zdXJlU2V0LmhhcygiV2luZG93IikpIHsKKyAgICAgICAgICAgICAg
ICB0aHJvdyBuZXcgSWRsSGFybmVzc0Vycm9yKCJJbnZhbGlkIElETDogTGVnYWN5V2luZG93QWxp
YXMgZXh0ZW5kZWQgYXR0cmlidXRlIG9uICIgKyB0aGlzLm5hbWUgKyAiIHdoaWNoIGlzIG5vdCBl
eHBvc2VkIGluIFdpbmRvdyIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gVE9ETzog
d2hlbiB0ZXN0aW5nIG9mIFtMZWdhY3lOb0ludGVyZmFjZU9iamVjdF0gaW50ZXJmYWNlcyBpcyBz
dXBwb3J0ZWQsCisgICAgICAgICAgICAvLyBjaGVjayB0aGF0IGl0J3Mgbm90IHNwZWNpZmllZCB0
b2dldGhlciB3aXRoIExlZ2FjeVdpbmRvd0FsaWFzLgorCisgICAgICAgICAgICAvLyBUT0RPOiBt
YXliZSBjaGVjayB0aGF0IFtMZWdhY3lXaW5kb3dBbGlhc13CoGlzIG5vdCBzcGVjaWZpZWQgb24g
YSBwYXJ0aWFsIGludGVyZmFjZS4KIAotICAgICAgICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0eShz
ZWxmLCB0aGlzLm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZWxmIGRv
ZXMgbm90IGhhdmUgb3duIHByb3BlcnR5ICIgKyBmb3JtYXRfdmFsdWUodGhpcy5uYW1lKSk7Cisg
ICAgICAgICAgICB2YXIgcmhzID0gYWxpYXNBdHRyc1swXS5yaHM7CisgICAgICAgICAgICBpZiAo
IXJocykgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBJZGxIYXJuZXNzRXJyb3IoIkludmFs
aWQgSURMOiBMZWdhY3lXaW5kb3dBbGlhcyBleHRlbmRlZCBhdHRyaWJ1dGUgb24gIiArIHRoaXMu
bmFtZSArICIgd2l0aG91dCBpZGVudGlmaWVyIik7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICB2YXIgYWxpYXNlczsKKyAgICAgICAgICAgIGlmIChyaHMudHlwZSA9PT0gImlkZW50aWZpZXIt
bGlzdCIpIHsKKyAgICAgICAgICAgICAgICBhbGlhc2VzID0gcmhzLnZhbHVlLm1hcChpZCA9PiBp
ZC52YWx1ZSk7CisgICAgICAgICAgICB9IGVsc2UgeyAvLyByaHMudHlwZSA9PT0gaWRlbnRpZmll
cgorICAgICAgICAgICAgICAgIGFsaWFzZXMgPSBbIHJocy52YWx1ZSBdOworICAgICAgICAgICAg
fQogCi0gICAgICAgICAgICAvLyAiQWxsIGludGVyZmFjZSBvYmplY3RzIG11c3QgaGF2ZSBhIHBy
b3BlcnR5IG5hbWVkIOKAnG5hbWXigJ0gd2l0aAotICAgICAgICAgICAgLy8gYXR0cmlidXRlcyB7
IFtbV3JpdGFibGVdXTogZmFsc2UsIFtbRW51bWVyYWJsZV1dOiBmYWxzZSwKLSAgICAgICAgICAg
IC8vIFtbQ29uZmlndXJhYmxlXV06IHRydWUgfSB3aG9zZSB2YWx1ZSBpcyB0aGUgaWRlbnRpZmll
ciBvZiB0aGUKLSAgICAgICAgICAgIC8vIGNvcnJlc3BvbmRpbmcgaW50ZXJmYWNlLiIKKyAgICAg
ICAgICAgIC8vIE9LIG5vdyBhY3R1YWxseSBjaGVjayB0aGUgYWxpYXNlcy4uLgorICAgICAgICAg
ICAgdmFyIGFsaWFzOworICAgICAgICAgICAgaWYgKGV4cG9zZWRfaW4oZXhwb3N1cmVfc2V0KHRo
aXMsIHRoaXMuZXhwb3N1cmVTZXQpKSAmJiAnZG9jdW1lbnQnIGluIHNlbGYpIHsKKyAgICAgICAg
ICAgICAgICBmb3IgKGFsaWFzIG9mIGFsaWFzZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgYXNz
ZXJ0X3RydWUoYWxpYXMgaW4gc2VsZiwgYWxpYXMgKyAiIHNob3VsZCBleGlzdCIpOworICAgICAg
ICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHNlbGZbYWxpYXNdLCB0aGlzLmdldF9pbnRlcmZh
Y2Vfb2JqZWN0KCksICJzZWxmLiIgKyBhbGlhcyArICIgc2hvdWxkIGJlIHRoZSBzYW1lIHZhbHVl
IGFzIHNlbGYuIiArIHRoaXMuZ2V0X3F1YWxpZmllZF9uYW1lKCkpOworICAgICAgICAgICAgICAg
ICAgICB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc2VsZiwgYWxp
YXMpOworICAgICAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGRlc2MudmFsdWUsIHRoaXMu
Z2V0X2ludGVyZmFjZV9vYmplY3QoKSwgIndyb25nIHZhbHVlIGluICIgKyBhbGlhcyArICIgcHJv
cGVydHkgZGVzY3JpcHRvciIpOworICAgICAgICAgICAgICAgICAgICBhc3NlcnRfdHJ1ZShkZXNj
LndyaXRhYmxlLCBhbGlhcyArICIgc2hvdWxkIGJlIHdyaXRhYmxlIik7CisgICAgICAgICAgICAg
ICAgICAgIGFzc2VydF9mYWxzZShkZXNjLmVudW1lcmFibGUsIGFsaWFzICsgIiBzaG91bGQgbm90
IGJlIGVudW1lcmFibGUiKTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X3RydWUoZGVzYy5j
b25maWd1cmFibGUsIGFsaWFzICsgIiBzaG91bGQgYmUgY29uZmlndXJhYmxlIik7CisgICAgICAg
ICAgICAgICAgICAgIGFzc2VydF9mYWxzZSgnZ2V0JyBpbiBkZXNjLCBhbGlhcyArICIgc2hvdWxk
IG5vdCBoYXZlIGEgZ2V0dGVyIik7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydF9mYWxzZSgn
c2V0JyBpbiBkZXNjLCBhbGlhcyArICIgc2hvdWxkIG5vdCBoYXZlIGEgc2V0dGVyIik7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBmb3Ig
KGFsaWFzIG9mIGFsaWFzZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKGFs
aWFzIGluIHNlbGYsIGFsaWFzICsgIiBzaG91bGQgbm90IGV4aXN0Iik7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KHNl
bGZbdGhpcy5uYW1lXSwgIm5hbWUiKTsKLSAgICAgICAgICAgIHZhciBkZXNjID0gT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihzZWxmW3RoaXMubmFtZV0sICJuYW1lIik7Ci0gICAgICAg
ICAgICBhc3NlcnRfZmFsc2UoImdldCIgaW4gZGVzYywgdGhpcy5uYW1lICsgIi5uYW1lIGhhcyBn
ZXR0ZXIiKTsKLSAgICAgICAgICAgIGFzc2VydF9mYWxzZSgic2V0IiBpbiBkZXNjLCB0aGlzLm5h
bWUgKyAiLm5hbWUgaGFzIHNldHRlciIpOwotICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKGRlc2Mu
d3JpdGFibGUsIHRoaXMubmFtZSArICIubmFtZSBpcyB3cml0YWJsZSIpOwotICAgICAgICAgICAg
YXNzZXJ0X2ZhbHNlKGRlc2MuZW51bWVyYWJsZSwgdGhpcy5uYW1lICsgIi5uYW1lIGlzIGVudW1l
cmFibGUiKTsKLSAgICAgICAgICAgIGFzc2VydF90cnVlKGRlc2MuY29uZmlndXJhYmxlLCB0aGlz
Lm5hbWUgKyAiLm5hbWUgaXMgbm90IGNvbmZpZ3VyYWJsZSIpOwotICAgICAgICAgICAgYXNzZXJ0
X2VxdWFscyhzZWxmW3RoaXMubmFtZV0ubmFtZSwgdGhpcy5uYW1lLCAid3JvbmcgdmFsdWUgZm9y
ICIgKyB0aGlzLm5hbWUgKyAiLm5hbWUiKTsKLSAgICAgICAgfS5iaW5kKHRoaXMpLCB0aGlzLm5h
bWUgKyAiIGludGVyZmFjZSBvYmplY3QgbmFtZSIpOworICAgICAgICB9LmJpbmQodGhpcyksIHRo
aXMubmFtZSArICIgaW50ZXJmYWNlOiBsZWdhY3kgd2luZG93IGFsaWFzIik7CiAgICAgfQogCi0g
ICAgLy8gVE9ETzogVGVzdCBuYW1lZCBjb25zdHJ1Y3RvcnMgaWYgSSBmaW5kIGFueSBpbnRlcmZh
Y2VzIHRoYXQgaGF2ZSB0aGVtLgorICAgIGlmICh0aGlzLmhhc19leHRlbmRlZF9hdHRyaWJ1dGUo
IkxlZ2FjeUZhY3RvcnlGdW5jdGlvbiIpKSB7CisgICAgICAgIHZhciBjb25zdHJ1Y3RvcnMgPSB0
aGlzLmV4dEF0dHJzCisgICAgICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uKGF0dHIpIHsgcmV0dXJu
IGF0dHIubmFtZSA9PSAiTGVnYWN5RmFjdG9yeUZ1bmN0aW9uIjsgfSk7CisgICAgICAgIGlmIChj
b25zdHJ1Y3RvcnMubGVuZ3RoICE9PSAxKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWRsSGFy
bmVzc0Vycm9yKCJJbnRlcm5hbCBlcnJvcjogbWlzc2luZyBzdXBwb3J0IGZvciBtdWx0aXBsZSBM
ZWdhY3lGYWN0b3J5RnVuY3Rpb24gZXh0ZW5kZWQgYXR0cmlidXRlcyIpOworICAgICAgICB9Cisg
ICAgICAgIHZhciBjb25zdHJ1Y3RvciA9IGNvbnN0cnVjdG9yc1swXTsKKyAgICAgICAgdmFyIG1p
bl9sZW5ndGggPSBtaW5PdmVybG9hZExlbmd0aChbY29uc3RydWN0b3JdKTsKKworICAgICAgICBz
dWJzZXRUZXN0QnlLZXkodGhpcy5uYW1lLCB0ZXN0LCBmdW5jdGlvbigpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIC8vIFRoaXMgZnVuY3Rpb24gdGVzdHMgV2ViSURMIGFzIG9mIDIwMTktMDEtMTQu
CisKKyAgICAgICAgICAgIC8vICJmb3IgZXZlcnkgW0xlZ2FjeUZhY3RvcnlGdW5jdGlvbl0gZXh0
ZW5kZWQgYXR0cmlidXRlIG9uIGFuIGV4cG9zZWQKKyAgICAgICAgICAgIC8vIGludGVyZmFjZSwg
YSBjb3JyZXNwb25kaW5nIHByb3BlcnR5IG11c3QgZXhpc3Qgb24gdGhlIEVDTUFTY3JpcHQKKyAg
ICAgICAgICAgIC8vIGdsb2JhbCBvYmplY3QuIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eSBpcyB0
aGUKKyAgICAgICAgICAgIC8vIFtMZWdhY3lGYWN0b3J5RnVuY3Rpb25dJ3MgaWRlbnRpZmllciwg
YW5kIGl0cyB2YWx1ZSBpcyBhbiBvYmplY3QKKyAgICAgICAgICAgIC8vIGNhbGxlZCBhIG5hbWVk
IGNvbnN0cnVjdG9yLCAuLi4gLiBUaGUgcHJvcGVydHkgaGFzIHRoZSBhdHRyaWJ1dGVzCisgICAg
ICAgICAgICAvLyB7IFtbV3JpdGFibGVdXTogdHJ1ZSwgW1tFbnVtZXJhYmxlXV06IGZhbHNlLAor
ICAgICAgICAgICAgLy8gW1tDb25maWd1cmFibGVdXTogdHJ1ZSB9LiIKKyAgICAgICAgICAgIHZh
ciBuYW1lID0gY29uc3RydWN0b3IucmhzLnZhbHVlOworICAgICAgICAgICAgYXNzZXJ0X293bl9w
cm9wZXJ0eShzZWxmLCBuYW1lKTsKKyAgICAgICAgICAgIHZhciBkZXNjID0gT2JqZWN0LmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihzZWxmLCBuYW1lKTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVh
bHMoZGVzYy52YWx1ZSwgc2VsZltuYW1lXSwgIndyb25nIHZhbHVlIGluICIgKyBuYW1lICsgIiBw
cm9wZXJ0eSBkZXNjcmlwdG9yIik7CisgICAgICAgICAgICBhc3NlcnRfdHJ1ZShkZXNjLndyaXRh
YmxlLCBuYW1lICsgIiBzaG91bGQgYmUgd3JpdGFibGUiKTsKKyAgICAgICAgICAgIGFzc2VydF9m
YWxzZShkZXNjLmVudW1lcmFibGUsIG5hbWUgKyAiIHNob3VsZCBub3QgYmUgZW51bWVyYWJsZSIp
OworICAgICAgICAgICAgYXNzZXJ0X3RydWUoZGVzYy5jb25maWd1cmFibGUsIG5hbWUgKyAiIHNo
b3VsZCBiZSBjb25maWd1cmFibGUiKTsKKyAgICAgICAgICAgIGFzc2VydF9mYWxzZSgiZ2V0IiBp
biBkZXNjLCBuYW1lICsgIiBzaG91bGQgbm90IGhhdmUgYSBnZXR0ZXIiKTsKKyAgICAgICAgICAg
IGFzc2VydF9mYWxzZSgic2V0IiBpbiBkZXNjLCBuYW1lICsgIiBzaG91bGQgbm90IGhhdmUgYSBz
ZXR0ZXIiKTsKKyAgICAgICAgfS5iaW5kKHRoaXMpLCB0aGlzLm5hbWUgKyAiIGludGVyZmFjZTog
bmFtZWQgY29uc3RydWN0b3IiKTsKKworICAgICAgICBzdWJzZXRUZXN0QnlLZXkodGhpcy5uYW1l
LCB0ZXN0LCBmdW5jdGlvbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIFRoaXMgZnVuY3Rp
b24gdGVzdHMgV2ViSURMIGFzIG9mIDIwMTktMDEtMTQuCisKKyAgICAgICAgICAgIC8vICIyLiBM
ZXQgRiBiZSAhIENyZWF0ZUJ1aWx0aW5GdW5jdGlvbihyZWFsbSwgc3RlcHMsCisgICAgICAgICAg
ICAvLyAgICAgcmVhbG0uW1tJbnRyaW5zaWNzXV0uW1slRnVuY3Rpb25Qcm90b3R5cGUlXV0pLiIK
KyAgICAgICAgICAgIHZhciBuYW1lID0gY29uc3RydWN0b3IucmhzLnZhbHVlOworICAgICAgICAg
ICAgdmFyIHZhbHVlID0gc2VsZltuYW1lXTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHModHlw
ZW9mIHZhbHVlLCAiZnVuY3Rpb24iLCAidHlwZSBvZiB2YWx1ZSBpbiAiICsgbmFtZSArICIgcHJv
cGVydHkgZGVzY3JpcHRvciIpOworICAgICAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHModmFsdWUs
IHRoaXMuZ2V0X2ludGVyZmFjZV9vYmplY3QoKSwgIndyb25nIHZhbHVlIGluICIgKyBuYW1lICsg
IiBwcm9wZXJ0eSBkZXNjcmlwdG9yIik7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKE9iamVj
dC5nZXRQcm90b3R5cGVPZih2YWx1ZSksIEZ1bmN0aW9uLnByb3RvdHlwZSwgIndyb25nIHZhbHVl
IGZvciAiICsgbmFtZSArICIncyBwcm90b3R5cGUiKTsKKyAgICAgICAgfS5iaW5kKHRoaXMpLCB0
aGlzLm5hbWUgKyAiIGludGVyZmFjZTogbmFtZWQgY29uc3RydWN0b3Igb2JqZWN0Iik7CisKKyAg
ICAgICAgc3Vic2V0VGVzdEJ5S2V5KHRoaXMubmFtZSwgdGVzdCwgZnVuY3Rpb24oKQorICAgICAg
ICB7CisgICAgICAgICAgICAvLyBUaGlzIGZ1bmN0aW9uIHRlc3RzIFdlYklETCBhcyBvZiAyMDE5
LTAxLTE0LgorCisgICAgICAgICAgICAvLyAiNy4gTGV0IHByb3RvIGJlIHRoZSBpbnRlcmZhY2Ug
cHJvdG90eXBlIG9iamVjdCBvZiBpbnRlcmZhY2UgSQorICAgICAgICAgICAgLy8gICAgIGluIHJl
YWxtLgorICAgICAgICAgICAgLy8gIjguIFBlcmZvcm0gISBEZWZpbmVQcm9wZXJ0eU9yVGhyb3co
RiwgInByb3RvdHlwZSIsCisgICAgICAgICAgICAvLyAgICAgUHJvcGVydHlEZXNjcmlwdG9yewor
ICAgICAgICAgICAgLy8gICAgICAgICBbW1ZhbHVlXV06IHByb3RvLCBbW1dyaXRhYmxlXV06IGZh
bHNlLAorICAgICAgICAgICAgLy8gICAgICAgICBbW0VudW1lcmFibGVdXTogZmFsc2UsIFtbQ29u
ZmlndXJhYmxlXV06IGZhbHNlCisgICAgICAgICAgICAvLyAgICAgfSkuIgorICAgICAgICAgICAg
dmFyIG5hbWUgPSBjb25zdHJ1Y3Rvci5yaHMudmFsdWU7CisgICAgICAgICAgICB2YXIgZXhwZWN0
ZWQgPSB0aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0KCkucHJvdG90eXBlOworICAgICAgICAgICAg
dmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNlbGZbbmFtZV0sICJw
cm90b3R5cGUiKTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZGVzYy52YWx1ZSwgZXhwZWN0
ZWQsICJ3cm9uZyB2YWx1ZSBmb3IgIiArIG5hbWUgKyAiLnByb3RvdHlwZSIpOworICAgICAgICAg
ICAgYXNzZXJ0X2ZhbHNlKGRlc2Mud3JpdGFibGUsICJwcm90b3R5cGUgc2hvdWxkIG5vdCBiZSB3
cml0YWJsZSIpOworICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKGRlc2MuZW51bWVyYWJsZSwgInBy
b3RvdHlwZSBzaG91bGQgbm90IGJlIGVudW1lcmFibGUiKTsKKyAgICAgICAgICAgIGFzc2VydF9m
YWxzZShkZXNjLmNvbmZpZ3VyYWJsZSwgInByb3RvdHlwZSBzaG91bGQgbm90IGJlIGNvbmZpZ3Vy
YWJsZSIpOworICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKCJnZXQiIGluIGRlc2MsICJwcm90b3R5
cGUgc2hvdWxkIG5vdCBoYXZlIGEgZ2V0dGVyIik7CisgICAgICAgICAgICBhc3NlcnRfZmFsc2Uo
InNldCIgaW4gZGVzYywgInByb3RvdHlwZSBzaG91bGQgbm90IGhhdmUgYSBzZXR0ZXIiKTsKKyAg
ICAgICAgfS5iaW5kKHRoaXMpLCB0aGlzLm5hbWUgKyAiIGludGVyZmFjZTogbmFtZWQgY29uc3Ry
dWN0b3IgcHJvdG90eXBlIHByb3BlcnR5Iik7CisKKyAgICAgICAgc3Vic2V0VGVzdEJ5S2V5KHRo
aXMubmFtZSwgdGVzdCwgZnVuY3Rpb24oKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBUaGlz
IGZ1bmN0aW9uIHRlc3RzIFdlYklETCBhcyBvZiAyMDE5LTAxLTE0LgorCisgICAgICAgICAgICAv
LyAiMy4gUGVyZm9ybSAhIFNldEZ1bmN0aW9uTmFtZShGLCBpZCkuIgorICAgICAgICAgICAgdmFy
IG5hbWUgPSBjb25zdHJ1Y3Rvci5yaHMudmFsdWU7CisgICAgICAgICAgICB2YXIgZGVzYyA9IE9i
amVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc2VsZltuYW1lXSwgIm5hbWUiKTsKKyAgICAg
ICAgICAgIGFzc2VydF9lcXVhbHMoZGVzYy52YWx1ZSwgbmFtZSwgIndyb25nIHZhbHVlIGZvciAi
ICsgbmFtZSArICIubmFtZSIpOworICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKGRlc2Mud3JpdGFi
bGUsICJuYW1lIHNob3VsZCBub3QgYmUgd3JpdGFibGUiKTsKKyAgICAgICAgICAgIGFzc2VydF9m
YWxzZShkZXNjLmVudW1lcmFibGUsICJuYW1lIHNob3VsZCBub3QgYmUgZW51bWVyYWJsZSIpOwor
ICAgICAgICAgICAgYXNzZXJ0X3RydWUoZGVzYy5jb25maWd1cmFibGUsICJuYW1lIHNob3VsZCBi
ZSBjb25maWd1cmFibGUiKTsKKyAgICAgICAgICAgIGFzc2VydF9mYWxzZSgiZ2V0IiBpbiBkZXNj
LCAibmFtZSBzaG91bGQgbm90IGhhdmUgYSBnZXR0ZXIiKTsKKyAgICAgICAgICAgIGFzc2VydF9m
YWxzZSgic2V0IiBpbiBkZXNjLCAibmFtZSBzaG91bGQgbm90IGhhdmUgYSBzZXR0ZXIiKTsKKyAg
ICAgICAgfS5iaW5kKHRoaXMpLCB0aGlzLm5hbWUgKyAiIGludGVyZmFjZTogbmFtZWQgY29uc3Ry
dWN0b3IgbmFtZSIpOworCisgICAgICAgIHN1YnNldFRlc3RCeUtleSh0aGlzLm5hbWUsIHRlc3Qs
IGZ1bmN0aW9uKCkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gVGhpcyBmdW5jdGlvbiB0ZXN0
cyBXZWJJREwgYXMgb2YgMjAxOS0wMS0xNC4KKworICAgICAgICAgICAgLy8gIjQuIEluaXRpYWxp
emUgUyB0byB0aGUgZWZmZWN0aXZlIG92ZXJsb2FkIHNldCBmb3IgY29uc3RydWN0b3JzCisgICAg
ICAgICAgICAvLyAgICAgd2l0aCBpZGVudGlmaWVyIGlkIG9uIGludGVyZmFjZSBJIGFuZCB3aXRo
IGFyZ3VtZW50IGNvdW50IDAuCisgICAgICAgICAgICAvLyAiNS4gTGV0IGxlbmd0aCBiZSB0aGUg
bGVuZ3RoIG9mIHRoZSBzaG9ydGVzdCBhcmd1bWVudCBsaXN0IG9mCisgICAgICAgICAgICAvLyAg
ICAgdGhlIGVudHJpZXMgaW4gUy4KKyAgICAgICAgICAgIC8vICI2LiBQZXJmb3JtICEgU2V0RnVu
Y3Rpb25MZW5ndGgoRiwgbGVuZ3RoKS4iCisgICAgICAgICAgICB2YXIgbmFtZSA9IGNvbnN0cnVj
dG9yLnJocy52YWx1ZTsKKyAgICAgICAgICAgIHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihzZWxmW25hbWVdLCAibGVuZ3RoIik7CisgICAgICAgICAgICBhc3NlcnRf
ZXF1YWxzKGRlc2MudmFsdWUsIG1pbl9sZW5ndGgsICJ3cm9uZyB2YWx1ZSBmb3IgIiArIG5hbWUg
KyAiLmxlbmd0aCIpOworICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKGRlc2Mud3JpdGFibGUsICJs
ZW5ndGggc2hvdWxkIG5vdCBiZSB3cml0YWJsZSIpOworICAgICAgICAgICAgYXNzZXJ0X2ZhbHNl
KGRlc2MuZW51bWVyYWJsZSwgImxlbmd0aCBzaG91bGQgbm90IGJlIGVudW1lcmFibGUiKTsKKyAg
ICAgICAgICAgIGFzc2VydF90cnVlKGRlc2MuY29uZmlndXJhYmxlLCAibGVuZ3RoIHNob3VsZCBi
ZSBjb25maWd1cmFibGUiKTsKKyAgICAgICAgICAgIGFzc2VydF9mYWxzZSgiZ2V0IiBpbiBkZXNj
LCAibGVuZ3RoIHNob3VsZCBub3QgaGF2ZSBhIGdldHRlciIpOworICAgICAgICAgICAgYXNzZXJ0
X2ZhbHNlKCJzZXQiIGluIGRlc2MsICJsZW5ndGggc2hvdWxkIG5vdCBoYXZlIGEgc2V0dGVyIik7
CisgICAgICAgIH0uYmluZCh0aGlzKSwgdGhpcy5uYW1lICsgIiBpbnRlcmZhY2U6IG5hbWVkIGNv
bnN0cnVjdG9yIGxlbmd0aCIpOworCisgICAgICAgIHN1YnNldFRlc3RCeUtleSh0aGlzLm5hbWUs
IHRlc3QsIGZ1bmN0aW9uKCkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gVGhpcyBmdW5jdGlv
biB0ZXN0cyBXZWJJREwgYXMgb2YgMjAxOS0wMS0xNC4KKworICAgICAgICAgICAgLy8gIjEuIExl
dCBzdGVwcyBiZSB0aGUgZm9sbG93aW5nIHN0ZXBzOgorICAgICAgICAgICAgLy8gIiAgICAxLiBJ
ZiBOZXdUYXJnZXQgaXMgdW5kZWZpbmVkLCB0aGVuIHRocm93IGEgVHlwZUVycm9yLiIKKyAgICAg
ICAgICAgIHZhciBuYW1lID0gY29uc3RydWN0b3IucmhzLnZhbHVlOworICAgICAgICAgICAgdmFy
IGFyZ3MgPSBjb25zdHJ1Y3Rvci5hcmd1bWVudHMubWFwKGZ1bmN0aW9uKGFyZykgeworICAgICAg
ICAgICAgICAgIHJldHVybiBjcmVhdGVfc3VpdGFibGVfb2JqZWN0KGFyZy5pZGxUeXBlKTsKKyAg
ICAgICAgICAgIH0pOworICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhnbG9iYWxPZihzZWxm
W25hbWVdKS5UeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHNlbGZbbmFt
ZV0oLi4uYXJncyk7CisgICAgICAgICAgICB9LmJpbmQodGhpcykpOworICAgICAgICB9LmJpbmQo
dGhpcyksIHRoaXMubmFtZSArICIgaW50ZXJmYWNlOiBuYW1lZCBjb25zdHJ1Y3RvciB3aXRob3V0
ICduZXcnIik7CisgICAgfQogCi0gICAgdGVzdChmdW5jdGlvbigpCisgICAgc3Vic2V0VGVzdEJ5
S2V5KHRoaXMubmFtZSwgdGVzdCwgZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgLy8gVGhpcyBm
dW5jdGlvbiB0ZXN0cyBXZWJJREwgYXMgb2YgMjAxNS0wMS0yMS4KICAgICAgICAgLy8gaHR0cHM6
Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jaW50ZXJmYWNlLW9iamVjdAogCi0gICAgICAgIGlm
ICh0aGlzLmlzX2NhbGxiYWNrKCkgJiYgIXRoaXMuaGFzX2NvbnN0YW50cygpKSB7CisgICAgICAg
IGlmICghdGhpcy5zaG91bGRfaGF2ZV9pbnRlcmZhY2Vfb2JqZWN0KCkpIHsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGFzc2VydF9vd25fcHJvcGVydHkoc2VsZiwg
dGhpcy5uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZWxmIGRvZXMgbm90IGhh
dmUgb3duIHByb3BlcnR5ICIgKyBmb3JtYXRfdmFsdWUodGhpcy5uYW1lKSk7CisgICAgICAgIHRo
aXMuYXNzZXJ0X2ludGVyZmFjZV9vYmplY3RfZXhpc3RzKCk7CiAKICAgICAgICAgaWYgKHRoaXMu
aXNfY2FsbGJhY2soKSkgewotICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKCJwcm90b3R5cGUiIGlu
IHNlbGZbdGhpcy5uYW1lXSwKKyAgICAgICAgICAgIGFzc2VydF9mYWxzZSgicHJvdG90eXBlIiBp
biB0aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
dGhpcy5uYW1lICsgJyBzaG91bGQgbm90IGhhdmUgYSAicHJvdG90eXBlIiBwcm9wZXJ0eScpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC05NTQsMTggKzE3NjAsMTggQEAgSWRs
SW50ZXJmYWNlLnByb3RvdHlwZS50ZXN0X3NlbGYgPSBmdW5jdGlvbigpCiAgICAgICAgIC8vIHBy
b3BlcnRpZXMgdGhhdCBjb3JyZXNwb25kIHRvIHRoZSByZWd1bGFyIGF0dHJpYnV0ZXMgYW5kIHJl
Z3VsYXIKICAgICAgICAgLy8gb3BlcmF0aW9ucyBkZWZpbmVkIG9uIHRoZSBpbnRlcmZhY2UsIGFu
ZCBpcyBkZXNjcmliZWQgaW4gbW9yZSBkZXRhaWwKICAgICAgICAgLy8gaW4gc2VjdGlvbiA0LjUu
NCBiZWxvdy4iCi0gICAgICAgIGFzc2VydF9vd25fcHJvcGVydHkoc2VsZlt0aGlzLm5hbWVdLCAi
cHJvdG90eXBlIiwKKyAgICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0eSh0aGlzLmdldF9pbnRlcmZh
Y2Vfb2JqZWN0KCksICJwcm90b3R5cGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdp
bnRlcmZhY2UgIicgKyB0aGlzLm5hbWUgKyAnIiBkb2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0eSAi
cHJvdG90eXBlIicpOwotICAgICAgICB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3Ioc2VsZlt0aGlzLm5hbWVdLCAicHJvdG90eXBlIik7Ci0gICAgICAgIGFzc2VydF9m
YWxzZSgiZ2V0IiBpbiBkZXNjLCB0aGlzLm5hbWUgKyAiLnByb3RvdHlwZSBoYXMgZ2V0dGVyIik7
Ci0gICAgICAgIGFzc2VydF9mYWxzZSgic2V0IiBpbiBkZXNjLCB0aGlzLm5hbWUgKyAiLnByb3Rv
dHlwZSBoYXMgc2V0dGVyIik7Ci0gICAgICAgIGFzc2VydF9mYWxzZShkZXNjLndyaXRhYmxlLCB0
aGlzLm5hbWUgKyAiLnByb3RvdHlwZSBpcyB3cml0YWJsZSIpOwotICAgICAgICBhc3NlcnRfZmFs
c2UoZGVzYy5lbnVtZXJhYmxlLCB0aGlzLm5hbWUgKyAiLnByb3RvdHlwZSBpcyBlbnVtZXJhYmxl
Iik7Ci0gICAgICAgIGFzc2VydF9mYWxzZShkZXNjLmNvbmZpZ3VyYWJsZSwgdGhpcy5uYW1lICsg
Ii5wcm90b3R5cGUgaXMgY29uZmlndXJhYmxlIik7CisgICAgICAgIHZhciBkZXNjID0gT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0KCksICJw
cm90b3R5cGUiKTsKKyAgICAgICAgYXNzZXJ0X2ZhbHNlKCJnZXQiIGluIGRlc2MsIHRoaXMubmFt
ZSArICIucHJvdG90eXBlIHNob3VsZCBub3QgaGF2ZSBhIGdldHRlciIpOworICAgICAgICBhc3Nl
cnRfZmFsc2UoInNldCIgaW4gZGVzYywgdGhpcy5uYW1lICsgIi5wcm90b3R5cGUgc2hvdWxkIG5v
dCBoYXZlIGEgc2V0dGVyIik7CisgICAgICAgIGFzc2VydF9mYWxzZShkZXNjLndyaXRhYmxlLCB0
aGlzLm5hbWUgKyAiLnByb3RvdHlwZSBzaG91bGQgbm90IGJlIHdyaXRhYmxlIik7CisgICAgICAg
IGFzc2VydF9mYWxzZShkZXNjLmVudW1lcmFibGUsIHRoaXMubmFtZSArICIucHJvdG90eXBlIHNo
b3VsZCBub3QgYmUgZW51bWVyYWJsZSIpOworICAgICAgICBhc3NlcnRfZmFsc2UoZGVzYy5jb25m
aWd1cmFibGUsIHRoaXMubmFtZSArICIucHJvdG90eXBlIHNob3VsZCBub3QgYmUgY29uZmlndXJh
YmxlIik7CiAKICAgICAgICAgLy8gTmV4dCwgdGVzdCB0aGF0IHRoZSBbW1Byb3RvdHlwZV1dIG9m
IHRoZSBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdAogICAgICAgICAvLyBpcyBjb3JyZWN0LiAo
VGhpcyBpcyBtYWRlIHNvbWV3aGF0IGRpZmZpY3VsdCBieSB0aGUgZXhpc3RlbmNlIG9mCi0gICAg
ICAgIC8vIFtOb0ludGVyZmFjZU9iamVjdF0uKQorICAgICAgICAvLyBbTGVnYWN5Tm9JbnRlcmZh
Y2VPYmplY3RdLikKICAgICAgICAgLy8gVE9ETzogQXJ5ZWggdGhpbmtzIHRoZXJlJ3MgYXQgbGVh
c3Qgb3RoZXIgcGxhY2UgaW4gdGhpcyBmaWxlIHdoZXJlCiAgICAgICAgIC8vICAgICAgIHdlIHRy
eSB0byBmaWd1cmUgb3V0IGlmIGFuIGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0IGlzCiAgICAg
ICAgIC8vICAgICAgIGNvcnJlY3QuIENvbnNvbGlkYXRlIHRoYXQgY29kZS4KQEAgLTk3MywxODEg
KzE3NzksMzkzIEBAIElkbEludGVyZmFjZS5wcm90b3R5cGUudGVzdF9zZWxmID0gZnVuY3Rpb24o
KQogICAgICAgICAvLyAiVGhlIGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0IGZvciBhIGdpdmVu
IGludGVyZmFjZSBBIG11c3QgaGF2ZSBhbgogICAgICAgICAvLyBpbnRlcm5hbCBbW1Byb3RvdHlw
ZV1dIHByb3BlcnR5IHdob3NlIHZhbHVlIGlzIHJldHVybmVkIGZyb20gdGhlCiAgICAgICAgIC8v
IGZvbGxvd2luZyBzdGVwczoKLSAgICAgICAgLy8gIklmIEEgaXMgZGVjbGFyZWQgd2l0aCB0aGUg
W0dsb2JhbF0gb3IgW1ByaW1hcnlHbG9iYWxdIGV4dGVuZGVkCisgICAgICAgIC8vICJJZiBBIGlz
IGRlY2xhcmVkIHdpdGggdGhlIFtHbG9iYWxdIGV4dGVuZGVkCiAgICAgICAgIC8vIGF0dHJpYnV0
ZSwgYW5kIEEgc3VwcG9ydHMgbmFtZWQgcHJvcGVydGllcywgdGhlbiByZXR1cm4gdGhlIG5hbWVk
Ci0gICAgICAgIC8vIHByb3BlcnRpZXMgb2JqZWN0IGZvciBBLCBhcyBkZWZpbmVkIGluIHNlY3Rp
b24gNC41LjUgYmVsb3cuCisgICAgICAgIC8vIHByb3BlcnRpZXMgb2JqZWN0IGZvciBBLCBhcyBk
ZWZpbmVkIGluIMKnMy42LjQgTmFtZWQgcHJvcGVydGllcworICAgICAgICAvLyBvYmplY3QuCiAg
ICAgICAgIC8vICJPdGhlcndpc2UsIGlmIEEgaXMgZGVjbGFyZWQgdG8gaW5oZXJpdCBmcm9tIGFu
b3RoZXIgaW50ZXJmYWNlLCB0aGVuCiAgICAgICAgIC8vIHJldHVybiB0aGUgaW50ZXJmYWNlIHBy
b3RvdHlwZSBvYmplY3QgZm9yIHRoZSBpbmhlcml0ZWQgaW50ZXJmYWNlLgotICAgICAgICAvLyAi
T3RoZXJ3aXNlLCBpZiBBIGlzIGRlY2xhcmVkIHdpdGggdGhlIFtBcnJheUNsYXNzXSBleHRlbmRl
ZAotICAgICAgICAvLyBhdHRyaWJ1dGUsIHRoZW4gcmV0dXJuICVBcnJheVByb3RvdHlwZSUgKFtF
Q01BLTI2Ml0sIHNlY3Rpb24KLSAgICAgICAgLy8gNi4xLjcuNCkuCi0gICAgICAgIC8vICJPdGhl
cndpc2UsIHJldHVybiAlT2JqZWN0UHJvdG90eXBlJSAoW0VDTUEtMjYyXSwgc2VjdGlvbiA2LjEu
Ny40KS4KLSAgICAgICAgLy8gKFtFQ01BLTI2Ml0sIHNlY3Rpb24gMTUuMi40KS4KKyAgICAgICAg
Ly8gIk90aGVyd2lzZSwgcmV0dXJuICVPYmplY3RQcm90b3R5cGUlLgorICAgICAgICAvLworICAg
ICAgICAvLyAiSW4gdGhlIEVDTUFTY3JpcHQgYmluZGluZywgdGhlIERPTUV4Y2VwdGlvbiB0eXBl
IGhhcyBzb21lIGFkZGl0aW9uYWwKKyAgICAgICAgLy8gcmVxdWlyZW1lbnRzOgorICAgICAgICAv
LworICAgICAgICAvLyAgICAgIlVubGlrZSBub3JtYWwgaW50ZXJmYWNlIHR5cGVzLCB0aGUgaW50
ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QKKyAgICAgICAgLy8gICAgIGZvciBET01FeGNlcHRpb24g
bXVzdCBoYXZlIGFzIGl0cyBbW1Byb3RvdHlwZV1dIHRoZSBpbnRyaW5zaWMKKyAgICAgICAgLy8g
ICAgIG9iamVjdCAlRXJyb3JQcm90b3R5cGUlLiIKKyAgICAgICAgLy8KICAgICAgICAgaWYgKHRo
aXMubmFtZSA9PT0gIldpbmRvdyIpIHsKLSAgICAgICAgICAgIGFzc2VydF9jbGFzc19zdHJpbmco
T2JqZWN0LmdldFByb3RvdHlwZU9mKHNlbGZbdGhpcy5uYW1lXS5wcm90b3R5cGUpLAorICAgICAg
ICAgICAgYXNzZXJ0X2NsYXNzX3N0cmluZyhPYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcy5nZXRf
aW50ZXJmYWNlX29iamVjdCgpLnByb3RvdHlwZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdXaW5kb3dQcm9wZXJ0aWVzJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ0NsYXNzIG5hbWUgZm9yIHByb3RvdHlwZSBvZiBXaW5kb3cnICsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJy5wcm90b3R5cGUgaXMgbm90ICJXaW5kb3dQcm9wZXJ0aWVzIicp
OwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgdmFyIGluaGVyaXRfaW50ZXJmYWNlLCBp
bmhlcml0X2ludGVyZmFjZV9oYXNfaW50ZXJmYWNlX29iamVjdDsKKyAgICAgICAgICAgIHZhciBp
bmhlcml0X2ludGVyZmFjZSwgaW5oZXJpdF9pbnRlcmZhY2VfaW50ZXJmYWNlX29iamVjdDsKICAg
ICAgICAgICAgIGlmICh0aGlzLmJhc2UpIHsKICAgICAgICAgICAgICAgICBpbmhlcml0X2ludGVy
ZmFjZSA9IHRoaXMuYmFzZTsKLSAgICAgICAgICAgICAgICBpbmhlcml0X2ludGVyZmFjZV9oYXNf
aW50ZXJmYWNlX29iamVjdCA9Ci0gICAgICAgICAgICAgICAgICAgICF0aGlzLmFycmF5Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgLm1lbWJlcnNbaW5oZXJpdF9pbnRlcmZhY2VdCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgLmhhc19leHRlbmRlZF9hdHRyaWJ1dGUoIk5vSW50ZXJmYWNlT2Jq
ZWN0Iik7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaGFzX2V4dGVuZGVkX2F0dHJpYnV0
ZSgnQXJyYXlDbGFzcycpKSB7Ci0gICAgICAgICAgICAgICAgaW5oZXJpdF9pbnRlcmZhY2UgPSAn
QXJyYXknOwotICAgICAgICAgICAgICAgIGluaGVyaXRfaW50ZXJmYWNlX2hhc19pbnRlcmZhY2Vf
b2JqZWN0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB2YXIgcGFyZW50ID0gdGhpcy5hcnJheS5t
ZW1iZXJzW2luaGVyaXRfaW50ZXJmYWNlXTsKKyAgICAgICAgICAgICAgICBpZiAoIXBhcmVudC5o
YXNfZXh0ZW5kZWRfYXR0cmlidXRlKCJMZWdhY3lOb0ludGVyZmFjZU9iamVjdCIpKSB7CisgICAg
ICAgICAgICAgICAgICAgIHBhcmVudC5hc3NlcnRfaW50ZXJmYWNlX29iamVjdF9leGlzdHMoKTsK
KyAgICAgICAgICAgICAgICAgICAgaW5oZXJpdF9pbnRlcmZhY2VfaW50ZXJmYWNlX29iamVjdCA9
IHBhcmVudC5nZXRfaW50ZXJmYWNlX29iamVjdCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0gZWxzZSBpZiAodGhpcy5uYW1lID09PSAiRE9NRXhjZXB0aW9uIikgeworICAgICAg
ICAgICAgICAgIGluaGVyaXRfaW50ZXJmYWNlID0gJ0Vycm9yJzsKKyAgICAgICAgICAgICAgICBp
bmhlcml0X2ludGVyZmFjZV9pbnRlcmZhY2Vfb2JqZWN0ID0gc2VsZi5FcnJvcjsKICAgICAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgaW5oZXJpdF9pbnRlcmZhY2UgPSAnT2JqZWN0
JzsKLSAgICAgICAgICAgICAgICBpbmhlcml0X2ludGVyZmFjZV9oYXNfaW50ZXJmYWNlX29iamVj
dCA9IHRydWU7CisgICAgICAgICAgICAgICAgaW5oZXJpdF9pbnRlcmZhY2VfaW50ZXJmYWNlX29i
amVjdCA9IHNlbGYuT2JqZWN0OwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGluaGVy
aXRfaW50ZXJmYWNlX2hhc19pbnRlcmZhY2Vfb2JqZWN0KSB7Ci0gICAgICAgICAgICAgICAgYXNz
ZXJ0X293bl9wcm9wZXJ0eShzZWxmLCBpbmhlcml0X2ludGVyZmFjZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICdzaG91bGQgaW5oZXJpdCBmcm9tICcgKyBpbmhlcml0X2lu
dGVyZmFjZSArICcsIGJ1dCBzZWxmIGhhcyBubyBzdWNoIHByb3BlcnR5Jyk7Ci0gICAgICAgICAg
ICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0eShzZWxmW2luaGVyaXRfaW50ZXJmYWNlXSwgJ3Byb3Rv
dHlwZScsCisgICAgICAgICAgICBpZiAoaW5oZXJpdF9pbnRlcmZhY2VfaW50ZXJmYWNlX29iamVj
dCkgeworICAgICAgICAgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKGluaGVyaXRfaW50ZXJmYWNl
X2ludGVyZmFjZV9vYmplY3QsIHVuZGVmaW5lZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnc2hvdWxkIGluaGVyaXQgZnJvbSAnICsgaW5oZXJpdF9pbnRlcmZhY2UgKyAnLCBi
dXQgdGhlcmUgaXMgbm8gc3VjaCBwcm9wZXJ0eScpOworICAgICAgICAgICAgICAgIGFzc2VydF9v
d25fcHJvcGVydHkoaW5oZXJpdF9pbnRlcmZhY2VfaW50ZXJmYWNlX29iamVjdCwgJ3Byb3RvdHlw
ZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2hvdWxkIGluaGVyaXQg
ZnJvbSAnICsgaW5oZXJpdF9pbnRlcmZhY2UgKyAnLCBidXQgdGhhdCBvYmplY3QgaGFzIG5vICJw
cm90b3R5cGUiIHByb3BlcnR5Jyk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhPYmpl
Y3QuZ2V0UHJvdG90eXBlT2Yoc2VsZlt0aGlzLm5hbWVdLnByb3RvdHlwZSksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZWxmW2luaGVyaXRfaW50ZXJmYWNlXS5wcm90b3R5cGUsCisg
ICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhPYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcy5n
ZXRfaW50ZXJmYWNlX29iamVjdCgpLnByb3RvdHlwZSksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbmhlcml0X2ludGVyZmFjZV9pbnRlcmZhY2Vfb2JqZWN0LnByb3RvdHlwZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcm90b3R5cGUgb2YgJyArIHRoaXMubmFtZSAr
ICcucHJvdG90eXBlIGlzIG5vdCAnICsgaW5oZXJpdF9pbnRlcmZhY2UgKyAnLnByb3RvdHlwZScp
OwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAvLyBXZSBjYW4ndCB0ZXN0
IHRoYXQgd2UgZ2V0IHRoZSBjb3JyZWN0IG9iamVjdCwgYmVjYXVzZSB0aGlzIGlzIHRoZQogICAg
ICAgICAgICAgICAgIC8vIG9ubHkgd2F5IHRvIGdldCBvdXIgaGFuZHMgb24gaXQuIFdlIG9ubHkg
dGVzdCB0aGF0IGl0cyBjbGFzcwogICAgICAgICAgICAgICAgIC8vIHN0cmluZywgYXQgbGVhc3Qs
IGlzIGNvcnJlY3QuCi0gICAgICAgICAgICAgICAgYXNzZXJ0X2NsYXNzX3N0cmluZyhPYmplY3Qu
Z2V0UHJvdG90eXBlT2Yoc2VsZlt0aGlzLm5hbWVdLnByb3RvdHlwZSksCisgICAgICAgICAgICAg
ICAgYXNzZXJ0X2NsYXNzX3N0cmluZyhPYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcy5nZXRfaW50
ZXJmYWNlX29iamVjdCgpLnByb3RvdHlwZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbmhlcml0X2ludGVyZmFjZSArICdQcm90b3R5cGUnLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ0NsYXNzIG5hbWUgZm9yIHByb3RvdHlwZSBvZiAnICsgdGhp
cy5uYW1lICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcucHJvdG90eXBl
IGlzIG5vdCAiJyArIGluaGVyaXRfaW50ZXJmYWNlICsgJ1Byb3RvdHlwZSInKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQorCisgICAgICAgIC8vICJUaGUgY2xhc3Mgc3RyaW5nIG9mIGFuIGlu
dGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0IGlzIHRoZQorICAgICAgICAvLyBjb25jYXRlbmF0aW9u
IG9mIHRoZSBpbnRlcmZhY2XigJlzIHF1YWxpZmllZCBpZGVudGlmaWVyIGFuZCB0aGUgc3RyaW5n
CisgICAgICAgIC8vIOKAnFByb3RvdHlwZeKAnS4iCisKKyAgICAgICAgLy8gU2tpcCB0aGVzZSB0
ZXN0cyBmb3Igbm93IGR1ZSB0byBhIHNwZWNpZmljYXRpb24gaXNzdWUgYWJvdXQKKyAgICAgICAg
Ly8gcHJvdG90eXBlIG5hbWUuCisgICAgICAgIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9CdWdzL1B1
YmxpYy9zaG93X2J1Zy5jZ2k/aWQ9MjgyNDQKKworICAgICAgICAvLyBhc3NlcnRfY2xhc3Nfc3Ry
aW5nKHRoaXMuZ2V0X2ludGVyZmFjZV9vYmplY3QoKS5wcm90b3R5cGUsIHRoaXMuZ2V0X3F1YWxp
ZmllZF9uYW1lKCkgKyAiUHJvdG90eXBlIiwKKyAgICAgICAgLy8gICAgICAgICAgICAgICAgICAg
ICAiY2xhc3Mgc3RyaW5nIG9mICIgKyB0aGlzLm5hbWUgKyAiLnByb3RvdHlwZSIpOworCisgICAg
ICAgIC8vIFN0cmluZygpIHNob3VsZCBlbmQgdXAgY2FsbGluZyB7fS50b1N0cmluZyBpZiBub3Ro
aW5nIGRlZmluZXMgYQorICAgICAgICAvLyBzdHJpbmdpZmllci4KKyAgICAgICAgaWYgKCF0aGlz
Lmhhc19zdHJpbmdpZmllcigpKSB7CisgICAgICAgICAgICAvLyBhc3NlcnRfZXF1YWxzKFN0cmlu
Zyh0aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0KCkucHJvdG90eXBlKSwgIltvYmplY3QgIiArIHRo
aXMuZ2V0X3F1YWxpZmllZF9uYW1lKCkgKyAiUHJvdG90eXBlXSIsCisgICAgICAgICAgICAvLyAg
ICAgICAgICJTdHJpbmcoIiArIHRoaXMubmFtZSArICIucHJvdG90eXBlKSIpOworICAgICAgICB9
CiAgICAgfS5iaW5kKHRoaXMpLCB0aGlzLm5hbWUgKyAiIGludGVyZmFjZTogZXhpc3RlbmNlIGFu
ZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0Iik7CiAKLSAgICB0ZXN0
KGZ1bmN0aW9uKCkKKyAgICAvLyAiSWYgdGhlIGludGVyZmFjZSBpcyBkZWNsYXJlZCB3aXRoIHRo
ZSBbR2xvYmFsXQorICAgIC8vIGV4dGVuZGVkIGF0dHJpYnV0ZSwgb3IgdGhlIGludGVyZmFjZSBp
cyBpbiB0aGUgc2V0IG9mIGluaGVyaXRlZAorICAgIC8vIGludGVyZmFjZXMgZm9yIGFueSBvdGhl
ciBpbnRlcmZhY2UgdGhhdCBpcyBkZWNsYXJlZCB3aXRoIG9uZSBvZiB0aGVzZQorICAgIC8vIGF0
dHJpYnV0ZXMsIHRoZW4gdGhlIGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0IG11c3QgYmUgYW4g
aW1tdXRhYmxlCisgICAgLy8gcHJvdG90eXBlIGV4b3RpYyBvYmplY3QuIgorICAgIC8vIGh0dHBz
Oi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2ludGVyZmFjZS1wcm90b3R5cGUtb2JqZWN0Cisg
ICAgaWYgKHRoaXMuaXNfZ2xvYmFsKCkpIHsKKyAgICAgICAgdGhpcy50ZXN0X2ltbXV0YWJsZV9w
cm90b3R5cGUoImludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0IiwgdGhpcy5nZXRfaW50ZXJmYWNl
X29iamVjdCgpLnByb3RvdHlwZSk7CisgICAgfQorCisgICAgc3Vic2V0VGVzdEJ5S2V5KHRoaXMu
bmFtZSwgdGVzdCwgZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgaWYgKHRoaXMuaXNfY2FsbGJh
Y2soKSAmJiAhdGhpcy5oYXNfY29uc3RhbnRzKCkpIHsKKyAgICAgICAgaWYgKCF0aGlzLnNob3Vs
ZF9oYXZlX2ludGVyZmFjZV9vYmplY3QoKSkgewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKLSAgICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0eShzZWxmLCB0aGlzLm5hbWUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgInNlbGYgZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVydHkg
IiArIGZvcm1hdF92YWx1ZSh0aGlzLm5hbWUpKTsKKyAgICAgICAgdGhpcy5hc3NlcnRfaW50ZXJm
YWNlX29iamVjdF9leGlzdHMoKTsKIAogICAgICAgICBpZiAodGhpcy5pc19jYWxsYmFjaygpKSB7
Ci0gICAgICAgICAgICBhc3NlcnRfZmFsc2UoInByb3RvdHlwZSIgaW4gc2VsZlt0aGlzLm5hbWVd
LAorICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKCJwcm90b3R5cGUiIGluIHRoaXMuZ2V0X2ludGVy
ZmFjZV9vYmplY3QoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5hbWUgKyAnIHNo
b3VsZCBub3QgaGF2ZSBhICJwcm90b3R5cGUiIHByb3BlcnR5Jyk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KIAotICAgICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KHNlbGZbdGhpcy5u
YW1lXSwgInByb3RvdHlwZSIsCisgICAgICAgIGFzc2VydF9vd25fcHJvcGVydHkodGhpcy5nZXRf
aW50ZXJmYWNlX29iamVjdCgpLCAicHJvdG90eXBlIiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnaW50ZXJmYWNlICInICsgdGhpcy5uYW1lICsgJyIgZG9lcyBub3QgaGF2ZSBvd24gcHJv
cGVydHkgInByb3RvdHlwZSInKTsKIAotICAgICAgICAvLyAiSWYgdGhlIFtOb0ludGVyZmFjZU9i
amVjdF0gZXh0ZW5kZWQgYXR0cmlidXRlIHdhcyBub3Qgc3BlY2lmaWVkIG9uCi0gICAgICAgIC8v
IHRoZSBpbnRlcmZhY2UsIHRoZW4gdGhlIGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0IG11c3Qg
YWxzbyBoYXZlIGEKKyAgICAgICAgLy8gIklmIHRoZSBbTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3Rd
IGV4dGVuZGVkIGF0dHJpYnV0ZSB3YXMgbm90IHNwZWNpZmllZAorICAgICAgICAvLyBvbiB0aGUg
aW50ZXJmYWNlLCB0aGVuIHRoZSBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCBtdXN0IGFsc28g
aGF2ZSBhCiAgICAgICAgIC8vIHByb3BlcnR5IG5hbWVkIOKAnGNvbnN0cnVjdG9y4oCdIHdpdGgg
YXR0cmlidXRlcyB7IFtbV3JpdGFibGVdXTogdHJ1ZSwKICAgICAgICAgLy8gW1tFbnVtZXJhYmxl
XV06IGZhbHNlLCBbW0NvbmZpZ3VyYWJsZV1dOiB0cnVlIH0gd2hvc2UgdmFsdWUgaXMgYQogICAg
ICAgICAvLyByZWZlcmVuY2UgdG8gdGhlIGludGVyZmFjZSBvYmplY3QgZm9yIHRoZSBpbnRlcmZh
Y2UuIgotICAgICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KHNlbGZbdGhpcy5uYW1lXS5wcm90b3R5
cGUsICJjb25zdHJ1Y3RvciIsCisgICAgICAgIGFzc2VydF9vd25fcHJvcGVydHkodGhpcy5nZXRf
aW50ZXJmYWNlX29iamVjdCgpLnByb3RvdHlwZSwgImNvbnN0cnVjdG9yIiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0aGlzLm5hbWUgKyAnLnByb3RvdHlwZSBkb2VzIG5vdCBoYXZlIG93
biBwcm9wZXJ0eSAiY29uc3RydWN0b3IiJyk7Ci0gICAgICAgIHZhciBkZXNjID0gT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihzZWxmW3RoaXMubmFtZV0ucHJvdG90eXBlLCAiY29uc3Ry
dWN0b3IiKTsKLSAgICAgICAgYXNzZXJ0X2ZhbHNlKCJnZXQiIGluIGRlc2MsIHRoaXMubmFtZSAr
ICIucHJvdG90eXBlLmNvbnN0cnVjdG9yIGhhcyBnZXR0ZXIiKTsKLSAgICAgICAgYXNzZXJ0X2Zh
bHNlKCJzZXQiIGluIGRlc2MsIHRoaXMubmFtZSArICIucHJvdG90eXBlLmNvbnN0cnVjdG9yIGhh
cyBzZXR0ZXIiKTsKLSAgICAgICAgYXNzZXJ0X3RydWUoZGVzYy53cml0YWJsZSwgdGhpcy5uYW1l
ICsgIi5wcm90b3R5cGUuY29uc3RydWN0b3IgaXMgbm90IHdyaXRhYmxlIik7Ci0gICAgICAgIGFz
c2VydF9mYWxzZShkZXNjLmVudW1lcmFibGUsIHRoaXMubmFtZSArICIucHJvdG90eXBlLmNvbnN0
cnVjdG9yIGlzIGVudW1lcmFibGUiKTsKLSAgICAgICAgYXNzZXJ0X3RydWUoZGVzYy5jb25maWd1
cmFibGUsIHRoaXMubmFtZSArICIucHJvdG90eXBlLmNvbnN0cnVjdG9yIGluIG5vdCBjb25maWd1
cmFibGUiKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhzZWxmW3RoaXMubmFtZV0ucHJvdG90eXBl
LmNvbnN0cnVjdG9yLCBzZWxmW3RoaXMubmFtZV0sCisgICAgICAgIHZhciBkZXNjID0gT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0KCkucHJv
dG90eXBlLCAiY29uc3RydWN0b3IiKTsKKyAgICAgICAgYXNzZXJ0X2ZhbHNlKCJnZXQiIGluIGRl
c2MsIHRoaXMubmFtZSArICIucHJvdG90eXBlLmNvbnN0cnVjdG9yIHNob3VsZCBub3QgaGF2ZSBh
IGdldHRlciIpOworICAgICAgICBhc3NlcnRfZmFsc2UoInNldCIgaW4gZGVzYywgdGhpcy5uYW1l
ICsgIi5wcm90b3R5cGUuY29uc3RydWN0b3Igc2hvdWxkIG5vdCBoYXZlIGEgc2V0dGVyIik7Cisg
ICAgICAgIGFzc2VydF90cnVlKGRlc2Mud3JpdGFibGUsIHRoaXMubmFtZSArICIucHJvdG90eXBl
LmNvbnN0cnVjdG9yIHNob3VsZCBiZSB3cml0YWJsZSIpOworICAgICAgICBhc3NlcnRfZmFsc2Uo
ZGVzYy5lbnVtZXJhYmxlLCB0aGlzLm5hbWUgKyAiLnByb3RvdHlwZS5jb25zdHJ1Y3RvciBzaG91
bGQgbm90IGJlIGVudW1lcmFibGUiKTsKKyAgICAgICAgYXNzZXJ0X3RydWUoZGVzYy5jb25maWd1
cmFibGUsIHRoaXMubmFtZSArICIucHJvdG90eXBlLmNvbnN0cnVjdG9yIHNob3VsZCBiZSBjb25m
aWd1cmFibGUiKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyh0aGlzLmdldF9pbnRlcmZhY2Vfb2Jq
ZWN0KCkucHJvdG90eXBlLmNvbnN0cnVjdG9yLCB0aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0KCks
CiAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uYW1lICsgJy5wcm90b3R5cGUuY29uc3RydWN0
b3IgaXMgbm90IHRoZSBzYW1lIG9iamVjdCBhcyAnICsgdGhpcy5uYW1lKTsKICAgICB9LmJpbmQo
dGhpcyksIHRoaXMubmFtZSArICcgaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMg
b2YgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3RcJ3MgImNvbnN0cnVjdG9yIiBwcm9wZXJ0eScp
OworCisKKyAgICBzdWJzZXRUZXN0QnlLZXkodGhpcy5uYW1lLCB0ZXN0LCBmdW5jdGlvbigpCisg
ICAgeworICAgICAgICBpZiAoIXRoaXMuc2hvdWxkX2hhdmVfaW50ZXJmYWNlX29iamVjdCgpKSB7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB0aGlzLmFzc2VydF9p
bnRlcmZhY2Vfb2JqZWN0X2V4aXN0cygpOworCisgICAgICAgIGlmICh0aGlzLmlzX2NhbGxiYWNr
KCkpIHsKKyAgICAgICAgICAgIGFzc2VydF9mYWxzZSgicHJvdG90eXBlIiBpbiB0aGlzLmdldF9p
bnRlcmZhY2Vfb2JqZWN0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uYW1lICsg
JyBzaG91bGQgbm90IGhhdmUgYSAicHJvdG90eXBlIiBwcm9wZXJ0eScpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0eSh0aGlzLmdl
dF9pbnRlcmZhY2Vfb2JqZWN0KCksICJwcm90b3R5cGUiLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdpbnRlcmZhY2UgIicgKyB0aGlzLm5hbWUgKyAnIiBkb2VzIG5vdCBoYXZlIG93biBw
cm9wZXJ0eSAicHJvdG90eXBlIicpOworCisgICAgICAgIC8vIElmIHRoZSBpbnRlcmZhY2UgaGFz
IGFueSBtZW1iZXIgZGVjbGFyZWQgd2l0aCB0aGUgW1Vuc2NvcGFibGVdIGV4dGVuZGVkCisgICAg
ICAgIC8vIGF0dHJpYnV0ZSwgdGhlbiB0aGVyZSBtdXN0IGJlIGEgcHJvcGVydHkgb24gdGhlIGlu
dGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0CisgICAgICAgIC8vIHdob3NlIG5hbWUgaXMgdGhlIEBA
dW5zY29wYWJsZXMgc3ltYm9sLCB3aGljaCBoYXMgdGhlIGF0dHJpYnV0ZXMKKyAgICAgICAgLy8g
eyBbW1dyaXRhYmxlXV06IGZhbHNlLCBbW0VudW1lcmFibGVdXTogZmFsc2UsIFtbQ29uZmlndXJh
YmxlXV06IHRydWUgfSwKKyAgICAgICAgLy8gYW5kIHdob3NlIHZhbHVlIGlzIGFuIG9iamVjdCBj
cmVhdGVkIGFzIGZvbGxvd3MuLi4KKyAgICAgICAgdmFyIHVuc2NvcGFibGVzID0gdGhpcy5nZXRf
dW5zY29wYWJsZXMoKS5tYXAobSA9PiBtLm5hbWUpOworICAgICAgICB2YXIgcHJvdG8gPSB0aGlz
LmdldF9pbnRlcmZhY2Vfb2JqZWN0KCkucHJvdG90eXBlOworICAgICAgICBpZiAodW5zY29wYWJs
ZXMubGVuZ3RoICE9IDApIHsKKyAgICAgICAgICAgIGFzc2VydF9vd25fcHJvcGVydHkoCisgICAg
ICAgICAgICAgICAgcHJvdG8sIFN5bWJvbC51bnNjb3BhYmxlcywKKyAgICAgICAgICAgICAgICB0
aGlzLm5hbWUgKyAnLnByb3RvdHlwZSBzaG91bGQgaGF2ZSBhbiBAQHVuc2NvcGFibGVzIHByb3Bl
cnR5Jyk7CisgICAgICAgICAgICB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IocHJvdG8sIFN5bWJvbC51bnNjb3BhYmxlcyk7CisgICAgICAgICAgICBhc3NlcnRfZmFs
c2UoImdldCIgaW4gZGVzYywKKyAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5hbWUgKyAi
LnByb3RvdHlwZVtTeW1ib2wudW5zY29wYWJsZXNdIHNob3VsZCBub3QgaGF2ZSBhIGdldHRlciIp
OworICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKCJzZXQiIGluIGRlc2MsIHRoaXMubmFtZSArICIu
cHJvdG90eXBlW1N5bWJvbC51bnNjb3BhYmxlc10gc2hvdWxkIG5vdCBoYXZlIGEgc2V0dGVyIik7
CisgICAgICAgICAgICBhc3NlcnRfZmFsc2UoZGVzYy53cml0YWJsZSwgdGhpcy5uYW1lICsgIi5w
cm90b3R5cGVbU3ltYm9sLnVuc2NvcGFibGVzXSBzaG91bGQgbm90IGJlIHdyaXRhYmxlIik7Cisg
ICAgICAgICAgICBhc3NlcnRfZmFsc2UoZGVzYy5lbnVtZXJhYmxlLCB0aGlzLm5hbWUgKyAiLnBy
b3RvdHlwZVtTeW1ib2wudW5zY29wYWJsZXNdIHNob3VsZCBub3QgYmUgZW51bWVyYWJsZSIpOwor
ICAgICAgICAgICAgYXNzZXJ0X3RydWUoZGVzYy5jb25maWd1cmFibGUsIHRoaXMubmFtZSArICIu
cHJvdG90eXBlW1N5bWJvbC51bnNjb3BhYmxlc10gc2hvdWxkIGJlIGNvbmZpZ3VyYWJsZSIpOwor
ICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhkZXNjLnZhbHVlLCBwcm90b1tTeW1ib2wudW5zY29w
YWJsZXNdLAorICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5hbWUgKyAnLnByb3RvdHlw
ZVtTeW1ib2wudW5zY29wYWJsZXNdIHNob3VsZCBiZSBpbiB0aGUgZGVzY3JpcHRvcicpOworICAg
ICAgICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgZGVzYy52YWx1ZSwgIm9iamVjdCIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmFtZSArICcucHJvdG90eXBlW1N5bWJvbC51bnNj
b3BhYmxlc10gc2hvdWxkIGJlIGFuIG9iamVjdCcpOworICAgICAgICAgICAgYXNzZXJ0X2VxdWFs
cyhPYmplY3QuZ2V0UHJvdG90eXBlT2YoZGVzYy52YWx1ZSksIG51bGwsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRoaXMubmFtZSArICcucHJvdG90eXBlW1N5bWJvbC51bnNjb3BhYmxlc10g
c2hvdWxkIGhhdmUgYSBudWxsIHByb3RvdHlwZScpOworICAgICAgICAgICAgYXNzZXJ0X2VxdWFs
cyhPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGRlc2MudmFsdWUpLmxlbmd0aCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5u
YW1lICsgJy5wcm90b3R5cGVbU3ltYm9sLnVuc2NvcGFibGVzXSBzaG91bGQgaGF2ZSB0aGUgcmln
aHQgbnVtYmVyIG9mIHN5bWJvbC1uYW1lZCBwcm9wZXJ0aWVzJyk7CisKKyAgICAgICAgICAgIC8v
IENoZWNrIHRoYXQgd2UgZG8gbm90IGhhdmUgX2V4dHJhXyB1bnNjb3BhYmxlcy4gIENoZWNraW5n
IHRoYXQgd2UKKyAgICAgICAgICAgIC8vIGhhdmUgYWxsIHRoZSBvbmVzIHdlIHNob3VsZCB3aWxs
IGhhcHBlbiBpbiB0aGUgcGVyLW1lbWJlciB0ZXN0cy4KKyAgICAgICAgICAgIHZhciBvYnNlcnZl
ZCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGRlc2MudmFsdWUpOworICAgICAgICAgICAg
Zm9yICh2YXIgcHJvcCBvZiBvYnNlcnZlZCkgeworICAgICAgICAgICAgICAgIGFzc2VydF9ub3Rf
ZXF1YWxzKHVuc2NvcGFibGVzLmluZGV4T2YocHJvcCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5u
YW1lICsgJy5wcm90b3R5cGVbU3ltYm9sLnVuc2NvcGFibGVzXSBoYXMgdW5leHBlY3RlZCBwcm9w
ZXJ0eSAiJyArIHByb3AgKyAnIicpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KHRoaXMuZ2V0X2ludGVyZmFjZV9vYmplY3QoKS5wcm90b3R5cGUsIFN5bWJvbC51bnNjb3BhYmxl
cyksCisgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgdGhpcy5uYW1lICsgJy5wcm90b3R5cGUgc2hvdWxkIG5vdCBoYXZlIEBAdW5z
Y29wYWJsZXMnKTsKKyAgICAgICAgfQorICAgIH0uYmluZCh0aGlzKSwgdGhpcy5uYW1lICsgJyBp
bnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2UgcHJvdG90eXBl
IG9iamVjdFwncyBAQHVuc2NvcGFibGVzIHByb3BlcnR5Jyk7Cit9OworCitJZGxJbnRlcmZhY2Uu
cHJvdG90eXBlLnRlc3RfaW1tdXRhYmxlX3Byb3RvdHlwZSA9IGZ1bmN0aW9uKHR5cGUsIG9iaikK
K3sKKyAgICBpZiAodHlwZW9mIE9iamVjdC5zZXRQcm90b3R5cGVPZiAhPT0gImZ1bmN0aW9uIikg
eworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc3Vic2V0VGVzdEJ5S2V5KHRoaXMubmFt
ZSwgdGVzdCwgZnVuY3Rpb24odCkgeworICAgICAgICB2YXIgb3JpZ2luYWxWYWx1ZSA9IE9iamVj
dC5nZXRQcm90b3R5cGVPZihvYmopOworICAgICAgICB2YXIgbmV3VmFsdWUgPSBPYmplY3QuY3Jl
YXRlKG51bGwpOworCisgICAgICAgIHQuYWRkX2NsZWFudXAoZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICB0cnkgeworICAgICAgICAgICAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZihvYmosIG9y
aWdpbmFsVmFsdWUpOworICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7fQorICAgICAgICB9KTsK
KworICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2JqLCBuZXdWYWx1ZSk7CisgICAgICAgIH0p
OworCisgICAgICAgIGFzc2VydF9lcXVhbHMoCisgICAgICAgICAgICAgICAgT2JqZWN0LmdldFBy
b3RvdHlwZU9mKG9iaiksCisgICAgICAgICAgICAgICAgb3JpZ2luYWxWYWx1ZSwKKyAgICAgICAg
ICAgICAgICAib3JpZ2luYWwgdmFsdWUgbm90IG1vZGlmaWVkIgorICAgICAgICAgICAgKTsKKyAg
ICB9LmJpbmQodGhpcyksIHRoaXMubmFtZSArICIgaW50ZXJmYWNlOiBpbnRlcm5hbCBbW1NldFBy
b3RvdHlwZU9mXV0gbWV0aG9kICIgKworICAgICAgICAib2YgIiArIHR5cGUgKyAiIC0gc2V0dGlu
ZyB0byBhIG5ldyB2YWx1ZSB2aWEgT2JqZWN0LnNldFByb3RvdHlwZU9mICIgKworICAgICAgICAi
c2hvdWxkIHRocm93IGEgVHlwZUVycm9yIik7CisKKyAgICBzdWJzZXRUZXN0QnlLZXkodGhpcy5u
YW1lLCB0ZXN0LCBmdW5jdGlvbih0KSB7CisgICAgICAgIHZhciBvcmlnaW5hbFZhbHVlID0gT2Jq
ZWN0LmdldFByb3RvdHlwZU9mKG9iaik7CisgICAgICAgIHZhciBuZXdWYWx1ZSA9IE9iamVjdC5j
cmVhdGUobnVsbCk7CisKKyAgICAgICAgdC5hZGRfY2xlYW51cChmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgIGxldCBzZXR0ZXIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKAorICAg
ICAgICAgICAgICAgIE9iamVjdC5wcm90b3R5cGUsICdfX3Byb3RvX18nCisgICAgICAgICAgICAp
LnNldDsKKworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBzZXR0ZXIuY2FsbChv
YmosIG9yaWdpbmFsVmFsdWUpOworICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7fQorICAgICAg
ICB9KTsKKworICAgICAgICAvLyBXZSBuZWVkIHRvIGZpbmQgdGhlIGFjdHVhbCBzZXR0ZXIgZm9y
IHRoZSAnX19wcm90b19fJyBwcm9wZXJ0eSwgc28gd2UKKyAgICAgICAgLy8gY2FuIGRldGVybWlu
ZSB0aGUgcmlnaHQgZ2xvYmFsIGZvciBpdC4gIFdhbGsgdXAgdGhlIHByb3RvdHlwZSBjaGFpbgor
ICAgICAgICAvLyBsb29raW5nIGZvciB0aGF0IHByb3BlcnR5IHVudGlsIHdlIGZpbmQgaXQuCisg
ICAgICAgIGxldCBzZXR0ZXI7CisgICAgICAgIHsKKyAgICAgICAgICAgIGxldCBjdXIgPSBvYmo7
CisgICAgICAgICAgICB3aGlsZSAoY3VyKSB7CisgICAgICAgICAgICAgICAgY29uc3QgZGVzYyA9
IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoY3VyLCAiX19wcm90b19fIik7CisgICAg
ICAgICAgICAgICAgaWYgKGRlc2MpIHsKKyAgICAgICAgICAgICAgICAgICAgc2V0dGVyID0gZGVz
Yy5zZXQ7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBjdXIgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoY3VyKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKGdsb2JhbE9mKHNldHRl
cikuVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIG9iai5fX3Byb3RvX18gPSBu
ZXdWYWx1ZTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgYXNzZXJ0X2VxdWFscygKKyAgICAgICAg
ICAgICAgICBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqKSwKKyAgICAgICAgICAgICAgICBvcmln
aW5hbFZhbHVlLAorICAgICAgICAgICAgICAgICJvcmlnaW5hbCB2YWx1ZSBub3QgbW9kaWZpZWQi
CisgICAgICAgICAgICApOworICAgIH0uYmluZCh0aGlzKSwgdGhpcy5uYW1lICsgIiBpbnRlcmZh
Y2U6IGludGVybmFsIFtbU2V0UHJvdG90eXBlT2ZdXSBtZXRob2QgIiArCisgICAgICAgICJvZiAi
ICsgdHlwZSArICIgLSBzZXR0aW5nIHRvIGEgbmV3IHZhbHVlIHZpYSBfX3Byb3RvX18gIiArCisg
ICAgICAgICJzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3IiKTsKKworICAgIHN1YnNldFRlc3RCeUtl
eSh0aGlzLm5hbWUsIHRlc3QsIGZ1bmN0aW9uKHQpIHsKKyAgICAgICAgdmFyIG9yaWdpbmFsVmFs
dWUgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqKTsKKyAgICAgICAgdmFyIG5ld1ZhbHVlID0g
T2JqZWN0LmNyZWF0ZShudWxsKTsKKworICAgICAgICB0LmFkZF9jbGVhbnVwKGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBSZWZsZWN0LnNldFByb3RvdHlw
ZU9mKG9iaiwgb3JpZ2luYWxWYWx1ZSk7CisgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHt9Cisg
ICAgICAgIH0pOworCisgICAgICAgIGFzc2VydF9mYWxzZShSZWZsZWN0LnNldFByb3RvdHlwZU9m
KG9iaiwgbmV3VmFsdWUpKTsKKworICAgICAgICBhc3NlcnRfZXF1YWxzKAorICAgICAgICAgICAg
ICAgIE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmopLAorICAgICAgICAgICAgICAgIG9yaWdpbmFs
VmFsdWUsCisgICAgICAgICAgICAgICAgIm9yaWdpbmFsIHZhbHVlIG5vdCBtb2RpZmllZCIKKyAg
ICAgICAgICAgICk7CisgICAgfS5iaW5kKHRoaXMpLCB0aGlzLm5hbWUgKyAiIGludGVyZmFjZTog
aW50ZXJuYWwgW1tTZXRQcm90b3R5cGVPZl1dIG1ldGhvZCAiICsKKyAgICAgICAgIm9mICIgKyB0
eXBlICsgIiAtIHNldHRpbmcgdG8gYSBuZXcgdmFsdWUgdmlhIFJlZmxlY3Quc2V0UHJvdG90eXBl
T2YgIiArCisgICAgICAgICJzaG91bGQgcmV0dXJuIGZhbHNlIik7CisKKyAgICBzdWJzZXRUZXN0
QnlLZXkodGhpcy5uYW1lLCB0ZXN0LCBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIG9yaWdpbmFs
VmFsdWUgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqKTsKKworICAgICAgICBPYmplY3Quc2V0
UHJvdG90eXBlT2Yob2JqLCBvcmlnaW5hbFZhbHVlKTsKKyAgICB9LmJpbmQodGhpcyksIHRoaXMu
bmFtZSArICIgaW50ZXJmYWNlOiBpbnRlcm5hbCBbW1NldFByb3RvdHlwZU9mXV0gbWV0aG9kICIg
KworICAgICAgICAib2YgIiArIHR5cGUgKyAiIC0gc2V0dGluZyB0byBpdHMgb3JpZ2luYWwgdmFs
dWUgdmlhIE9iamVjdC5zZXRQcm90b3R5cGVPZiAiICsKKyAgICAgICAgInNob3VsZCBub3QgdGhy
b3ciKTsKKworICAgIHN1YnNldFRlc3RCeUtleSh0aGlzLm5hbWUsIHRlc3QsIGZ1bmN0aW9uKCkg
eworICAgICAgICB2YXIgb3JpZ2luYWxWYWx1ZSA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmop
OworCisgICAgICAgIG9iai5fX3Byb3RvX18gPSBvcmlnaW5hbFZhbHVlOworICAgIH0uYmluZCh0
aGlzKSwgdGhpcy5uYW1lICsgIiBpbnRlcmZhY2U6IGludGVybmFsIFtbU2V0UHJvdG90eXBlT2Zd
XSBtZXRob2QgIiArCisgICAgICAgICJvZiAiICsgdHlwZSArICIgLSBzZXR0aW5nIHRvIGl0cyBv
cmlnaW5hbCB2YWx1ZSB2aWEgX19wcm90b19fICIgKworICAgICAgICAic2hvdWxkIG5vdCB0aHJv
dyIpOworCisgICAgc3Vic2V0VGVzdEJ5S2V5KHRoaXMubmFtZSwgdGVzdCwgZnVuY3Rpb24oKSB7
CisgICAgICAgIHZhciBvcmlnaW5hbFZhbHVlID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iaik7
CisKKyAgICAgICAgYXNzZXJ0X3RydWUoUmVmbGVjdC5zZXRQcm90b3R5cGVPZihvYmosIG9yaWdp
bmFsVmFsdWUpKTsKKyAgICB9LmJpbmQodGhpcyksIHRoaXMubmFtZSArICIgaW50ZXJmYWNlOiBp
bnRlcm5hbCBbW1NldFByb3RvdHlwZU9mXV0gbWV0aG9kICIgKworICAgICAgICAib2YgIiArIHR5
cGUgKyAiIC0gc2V0dGluZyB0byBpdHMgb3JpZ2luYWwgdmFsdWUgdmlhIFJlZmxlY3Quc2V0UHJv
dG90eXBlT2YgIiArCisgICAgICAgICJzaG91bGQgcmV0dXJuIHRydWUiKTsKIH07CiAKLS8vQH0K
IElkbEludGVyZmFjZS5wcm90b3R5cGUudGVzdF9tZW1iZXJfY29uc3QgPSBmdW5jdGlvbihtZW1i
ZXIpCi0vL0B7CiB7CiAgICAgaWYgKCF0aGlzLmhhc19jb25zdGFudHMoKSkgewotICAgICAgICB0
aHJvdyAiSW50ZXJuYWwgZXJyb3I6IHRlc3RfbWVtYmVyX2NvbnN0IGNhbGxlZCB3aXRob3V0IGFu
eSBjb25zdGFudHMiOworICAgICAgICB0aHJvdyBuZXcgSWRsSGFybmVzc0Vycm9yKCJJbnRlcm5h
bCBlcnJvcjogdGVzdF9tZW1iZXJfY29uc3QgY2FsbGVkIHdpdGhvdXQgYW55IGNvbnN0YW50cyIp
OwogICAgIH0KIAotICAgIHRlc3QoZnVuY3Rpb24oKQorICAgIHN1YnNldFRlc3RCeUtleSh0aGlz
Lm5hbWUsIHRlc3QsIGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIGFzc2VydF9vd25fcHJvcGVy
dHkoc2VsZiwgdGhpcy5uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZWxmIGRv
ZXMgbm90IGhhdmUgb3duIHByb3BlcnR5ICIgKyBmb3JtYXRfdmFsdWUodGhpcy5uYW1lKSk7Cisg
ICAgICAgIHRoaXMuYXNzZXJ0X2ludGVyZmFjZV9vYmplY3RfZXhpc3RzKCk7CiAKICAgICAgICAg
Ly8gIkZvciBlYWNoIGNvbnN0YW50IGRlZmluZWQgb24gYW4gaW50ZXJmYWNlIEEsIHRoZXJlIG11
c3QgYmUKICAgICAgICAgLy8gYSBjb3JyZXNwb25kaW5nIHByb3BlcnR5IG9uIHRoZSBpbnRlcmZh
Y2Ugb2JqZWN0LCBpZiBpdAogICAgICAgICAvLyBleGlzdHMuIgotICAgICAgICBhc3NlcnRfb3du
X3Byb3BlcnR5KHNlbGZbdGhpcy5uYW1lXSwgbWVtYmVyLm5hbWUpOworICAgICAgICBhc3NlcnRf
b3duX3Byb3BlcnR5KHRoaXMuZ2V0X2ludGVyZmFjZV9vYmplY3QoKSwgbWVtYmVyLm5hbWUpOwog
ICAgICAgICAvLyAiVGhlIHZhbHVlIG9mIHRoZSBwcm9wZXJ0eSBpcyB0aGF0IHdoaWNoIGlzIG9i
dGFpbmVkIGJ5CiAgICAgICAgIC8vIGNvbnZlcnRpbmcgdGhlIGNvbnN0YW504oCZcyBJREwgdmFs
dWUgdG8gYW4gRUNNQVNjcmlwdAogICAgICAgICAvLyB2YWx1ZS4iCi0gICAgICAgIGFzc2VydF9l
cXVhbHMoc2VsZlt0aGlzLm5hbWVdW21lbWJlci5uYW1lXSwgY29uc3RWYWx1ZShtZW1iZXIudmFs
dWUpLAorICAgICAgICBhc3NlcnRfZXF1YWxzKHRoaXMuZ2V0X2ludGVyZmFjZV9vYmplY3QoKVtt
ZW1iZXIubmFtZV0sIGNvbnN0VmFsdWUobWVtYmVyLnZhbHVlKSwKICAgICAgICAgICAgICAgICAg
ICAgICAicHJvcGVydHkgaGFzIHdyb25nIHZhbHVlIik7CiAgICAgICAgIC8vICJUaGUgcHJvcGVy
dHkgaGFzIGF0dHJpYnV0ZXMgeyBbW1dyaXRhYmxlXV06IGZhbHNlLAogICAgICAgICAvLyBbW0Vu
dW1lcmFibGVdXTogdHJ1ZSwgW1tDb25maWd1cmFibGVdXTogZmFsc2UgfS4iCi0gICAgICAgIHZh
ciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzZWxmW3RoaXMubmFtZV0s
IG1lbWJlci5uYW1lKTsKLSAgICAgICAgYXNzZXJ0X2ZhbHNlKCJnZXQiIGluIGRlc2MsICJwcm9w
ZXJ0eSBoYXMgZ2V0dGVyIik7Ci0gICAgICAgIGFzc2VydF9mYWxzZSgic2V0IiBpbiBkZXNjLCAi
cHJvcGVydHkgaGFzIHNldHRlciIpOwotICAgICAgICBhc3NlcnRfZmFsc2UoZGVzYy53cml0YWJs
ZSwgInByb3BlcnR5IGlzIHdyaXRhYmxlIik7Ci0gICAgICAgIGFzc2VydF90cnVlKGRlc2MuZW51
bWVyYWJsZSwgInByb3BlcnR5IGlzIG5vdCBlbnVtZXJhYmxlIik7Ci0gICAgICAgIGFzc2VydF9m
YWxzZShkZXNjLmNvbmZpZ3VyYWJsZSwgInByb3BlcnR5IGlzIGNvbmZpZ3VyYWJsZSIpOworICAg
ICAgICB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGhpcy5nZXRf
aW50ZXJmYWNlX29iamVjdCgpLCBtZW1iZXIubmFtZSk7CisgICAgICAgIGFzc2VydF9mYWxzZSgi
Z2V0IiBpbiBkZXNjLCAicHJvcGVydHkgc2hvdWxkIG5vdCBoYXZlIGEgZ2V0dGVyIik7CisgICAg
ICAgIGFzc2VydF9mYWxzZSgic2V0IiBpbiBkZXNjLCAicHJvcGVydHkgc2hvdWxkIG5vdCBoYXZl
IGEgc2V0dGVyIik7CisgICAgICAgIGFzc2VydF9mYWxzZShkZXNjLndyaXRhYmxlLCAicHJvcGVy
dHkgc2hvdWxkIG5vdCBiZSB3cml0YWJsZSIpOworICAgICAgICBhc3NlcnRfdHJ1ZShkZXNjLmVu
dW1lcmFibGUsICJwcm9wZXJ0eSBzaG91bGQgYmUgZW51bWVyYWJsZSIpOworICAgICAgICBhc3Nl
cnRfZmFsc2UoZGVzYy5jb25maWd1cmFibGUsICJwcm9wZXJ0eSBzaG91bGQgbm90IGJlIGNvbmZp
Z3VyYWJsZSIpOwogICAgIH0uYmluZCh0aGlzKSwgdGhpcy5uYW1lICsgIiBpbnRlcmZhY2U6IGNv
bnN0YW50ICIgKyBtZW1iZXIubmFtZSArICIgb24gaW50ZXJmYWNlIG9iamVjdCIpOwogCiAgICAg
Ly8gIkluIGFkZGl0aW9uLCBhIHByb3BlcnR5IHdpdGggdGhlIHNhbWUgY2hhcmFjdGVyaXN0aWNz
IG11c3QKICAgICAvLyBleGlzdCBvbiB0aGUgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QuIgot
ICAgIHRlc3QoZnVuY3Rpb24oKQorICAgIHN1YnNldFRlc3RCeUtleSh0aGlzLm5hbWUsIHRlc3Qs
IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIGFzc2VydF9vd25fcHJvcGVydHkoc2VsZiwgdGhp
cy5uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZWxmIGRvZXMgbm90IGhhdmUg
b3duIHByb3BlcnR5ICIgKyBmb3JtYXRfdmFsdWUodGhpcy5uYW1lKSk7CisgICAgICAgIHRoaXMu
YXNzZXJ0X2ludGVyZmFjZV9vYmplY3RfZXhpc3RzKCk7CiAKICAgICAgICAgaWYgKHRoaXMuaXNf
Y2FsbGJhY2soKSkgewotICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKCJwcm90b3R5cGUiIGluIHNl
bGZbdGhpcy5uYW1lXSwKKyAgICAgICAgICAgIGFzc2VydF9mYWxzZSgicHJvdG90eXBlIiBpbiB0
aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhp
cy5uYW1lICsgJyBzaG91bGQgbm90IGhhdmUgYSAicHJvdG90eXBlIiBwcm9wZXJ0eScpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0
eShzZWxmW3RoaXMubmFtZV0sICJwcm90b3R5cGUiLAorICAgICAgICBhc3NlcnRfb3duX3Byb3Bl
cnR5KHRoaXMuZ2V0X2ludGVyZmFjZV9vYmplY3QoKSwgInByb3RvdHlwZSIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ2ludGVyZmFjZSAiJyArIHRoaXMubmFtZSArICciIGRvZXMgbm90
IGhhdmUgb3duIHByb3BlcnR5ICJwcm90b3R5cGUiJyk7CiAKLSAgICAgICAgYXNzZXJ0X293bl9w
cm9wZXJ0eShzZWxmW3RoaXMubmFtZV0ucHJvdG90eXBlLCBtZW1iZXIubmFtZSk7Ci0gICAgICAg
IGFzc2VydF9lcXVhbHMoc2VsZlt0aGlzLm5hbWVdLnByb3RvdHlwZVttZW1iZXIubmFtZV0sIGNv
bnN0VmFsdWUobWVtYmVyLnZhbHVlKSwKKyAgICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0eSh0aGlz
LmdldF9pbnRlcmZhY2Vfb2JqZWN0KCkucHJvdG90eXBlLCBtZW1iZXIubmFtZSk7CisgICAgICAg
IGFzc2VydF9lcXVhbHModGhpcy5nZXRfaW50ZXJmYWNlX29iamVjdCgpLnByb3RvdHlwZVttZW1i
ZXIubmFtZV0sIGNvbnN0VmFsdWUobWVtYmVyLnZhbHVlKSwKICAgICAgICAgICAgICAgICAgICAg
ICAicHJvcGVydHkgaGFzIHdyb25nIHZhbHVlIik7Ci0gICAgICAgIHZhciBkZXNjID0gT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzZWxmW3RoaXMubmFtZV0sIG1lbWJlci5uYW1lKTsK
LSAgICAgICAgYXNzZXJ0X2ZhbHNlKCJnZXQiIGluIGRlc2MsICJwcm9wZXJ0eSBoYXMgZ2V0dGVy
Iik7Ci0gICAgICAgIGFzc2VydF9mYWxzZSgic2V0IiBpbiBkZXNjLCAicHJvcGVydHkgaGFzIHNl
dHRlciIpOwotICAgICAgICBhc3NlcnRfZmFsc2UoZGVzYy53cml0YWJsZSwgInByb3BlcnR5IGlz
IHdyaXRhYmxlIik7Ci0gICAgICAgIGFzc2VydF90cnVlKGRlc2MuZW51bWVyYWJsZSwgInByb3Bl
cnR5IGlzIG5vdCBlbnVtZXJhYmxlIik7Ci0gICAgICAgIGFzc2VydF9mYWxzZShkZXNjLmNvbmZp
Z3VyYWJsZSwgInByb3BlcnR5IGlzIGNvbmZpZ3VyYWJsZSIpOworICAgICAgICB2YXIgZGVzYyA9
IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGhpcy5nZXRfaW50ZXJmYWNlX29iamVj
dCgpLCBtZW1iZXIubmFtZSk7CisgICAgICAgIGFzc2VydF9mYWxzZSgiZ2V0IiBpbiBkZXNjLCAi
cHJvcGVydHkgc2hvdWxkIG5vdCBoYXZlIGEgZ2V0dGVyIik7CisgICAgICAgIGFzc2VydF9mYWxz
ZSgic2V0IiBpbiBkZXNjLCAicHJvcGVydHkgc2hvdWxkIG5vdCBoYXZlIGEgc2V0dGVyIik7Cisg
ICAgICAgIGFzc2VydF9mYWxzZShkZXNjLndyaXRhYmxlLCAicHJvcGVydHkgc2hvdWxkIG5vdCBi
ZSB3cml0YWJsZSIpOworICAgICAgICBhc3NlcnRfdHJ1ZShkZXNjLmVudW1lcmFibGUsICJwcm9w
ZXJ0eSBzaG91bGQgYmUgZW51bWVyYWJsZSIpOworICAgICAgICBhc3NlcnRfZmFsc2UoZGVzYy5j
b25maWd1cmFibGUsICJwcm9wZXJ0eSBzaG91bGQgbm90IGJlIGNvbmZpZ3VyYWJsZSIpOwogICAg
IH0uYmluZCh0aGlzKSwgdGhpcy5uYW1lICsgIiBpbnRlcmZhY2U6IGNvbnN0YW50ICIgKyBtZW1i
ZXIubmFtZSArICIgb24gaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QiKTsKIH07CiAKIAotLy9A
fQogSWRsSW50ZXJmYWNlLnByb3RvdHlwZS50ZXN0X21lbWJlcl9hdHRyaWJ1dGUgPSBmdW5jdGlv
bihtZW1iZXIpCi0vL0B7CiAgIHsKLSAgICB2YXIgYV90ZXN0ID0gYXN5bmNfdGVzdCh0aGlzLm5h
bWUgKyAiIGludGVyZmFjZTogYXR0cmlidXRlICIgKyBtZW1iZXIubmFtZSk7CisgICAgaWYgKCFz
aG91bGRSdW5TdWJUZXN0KHRoaXMubmFtZSkpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICB2YXIgYV90ZXN0ID0gc3Vic2V0VGVzdEJ5S2V5KHRoaXMubmFtZSwgYXN5bmNfdGVzdCwgdGhp
cy5uYW1lICsgIiBpbnRlcmZhY2U6IGF0dHJpYnV0ZSAiICsgbWVtYmVyLm5hbWUpOwogICAgIGFf
dGVzdC5zdGVwKGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIGlmICh0aGlzLmlzX2NhbGxiYWNr
KCkgJiYgIXRoaXMuaGFzX2NvbnN0YW50cygpKSB7Ci0gICAgICAgICAgICBhX3Rlc3QuZG9uZSgp
CisgICAgICAgIGlmICghdGhpcy5zaG91bGRfaGF2ZV9pbnRlcmZhY2Vfb2JqZWN0KCkpIHsKKyAg
ICAgICAgICAgIGFfdGVzdC5kb25lKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IAotICAgICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KHNlbGYsIHRoaXMubmFtZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAic2VsZiBkb2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0eSAiICsg
Zm9ybWF0X3ZhbHVlKHRoaXMubmFtZSkpOwotICAgICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KHNl
bGZbdGhpcy5uYW1lXSwgInByb3RvdHlwZSIsCisgICAgICAgIHRoaXMuYXNzZXJ0X2ludGVyZmFj
ZV9vYmplY3RfZXhpc3RzKCk7CisgICAgICAgIGFzc2VydF9vd25fcHJvcGVydHkodGhpcy5nZXRf
aW50ZXJmYWNlX29iamVjdCgpLCAicHJvdG90eXBlIiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnaW50ZXJmYWNlICInICsgdGhpcy5uYW1lICsgJyIgZG9lcyBub3QgaGF2ZSBvd24gcHJv
cGVydHkgInByb3RvdHlwZSInKTsKIAotICAgICAgICBpZiAobWVtYmVyWyJzdGF0aWMiXSkgewot
ICAgICAgICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0eShzZWxmW3RoaXMubmFtZV0sIG1lbWJlci5u
YW1lLAorICAgICAgICBpZiAobWVtYmVyLnNwZWNpYWwgPT09ICJzdGF0aWMiKSB7CisgICAgICAg
ICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KHRoaXMuZ2V0X2ludGVyZmFjZV9vYmplY3QoKSwgbWVt
YmVyLm5hbWUsCiAgICAgICAgICAgICAgICAgIlRoZSBpbnRlcmZhY2Ugb2JqZWN0IG11c3QgaGF2
ZSBhIHByb3BlcnR5ICIgKwogICAgICAgICAgICAgICAgIGZvcm1hdF92YWx1ZShtZW1iZXIubmFt
ZSkpOwogICAgICAgICAgICAgYV90ZXN0LmRvbmUoKTsKLSAgICAgICAgfSBlbHNlIGlmICh0aGlz
LmlzX2dsb2JhbCgpKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICB0aGlzLmRvX21lbWJlcl91bnNjb3BhYmxlX2Fzc2VydHMobWVtYmVyKTsKKworICAgICAgICBp
ZiAodGhpcy5pc19nbG9iYWwoKSkgewogICAgICAgICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0eShz
ZWxmLCBtZW1iZXIubmFtZSwKICAgICAgICAgICAgICAgICAiVGhlIGdsb2JhbCBvYmplY3QgbXVz
dCBoYXZlIGEgcHJvcGVydHkgIiArCiAgICAgICAgICAgICAgICAgZm9ybWF0X3ZhbHVlKG1lbWJl
ci5uYW1lKSk7Ci0gICAgICAgICAgICBhc3NlcnRfZmFsc2UobWVtYmVyLm5hbWUgaW4gc2VsZlt0
aGlzLm5hbWVdLnByb3RvdHlwZSwKLSAgICAgICAgICAgICAgICAiVGhlIHByb3RvdHlwZSBvYmpl
Y3QgbXVzdCBub3QgaGF2ZSBhIHByb3BlcnR5ICIgKworICAgICAgICAgICAgYXNzZXJ0X2ZhbHNl
KG1lbWJlci5uYW1lIGluIHRoaXMuZ2V0X2ludGVyZmFjZV9vYmplY3QoKS5wcm90b3R5cGUsCisg
ICAgICAgICAgICAgICAgIlRoZSBwcm90b3R5cGUgb2JqZWN0IHNob3VsZCBub3QgaGF2ZSBhIHBy
b3BlcnR5ICIgKwogICAgICAgICAgICAgICAgIGZvcm1hdF92YWx1ZShtZW1iZXIubmFtZSkpOwog
CiAgICAgICAgICAgICB2YXIgZ2V0dGVyID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihzZWxmLCBtZW1iZXIubmFtZSkuZ2V0OwpAQCAtMTE3NCw2OSArMjE5Miw2NiBAQCBJZGxJbnRl
cmZhY2UucHJvdG90eXBlLnRlc3RfbWVtYmVyX2F0dHJpYnV0ZSA9IGZ1bmN0aW9uKG1lbWJlcikK
ICAgICAgICAgICAgIC8vIHNpbmNlIGl0IHdpbGwgY2FsbCBkb25lKCkgb24gYV90ZXN0LgogICAg
ICAgICAgICAgdGhpcy5kb19pbnRlcmZhY2VfYXR0cmlidXRlX2Fzc2VydHMoc2VsZiwgbWVtYmVy
LCBhX3Rlc3QpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgYXNzZXJ0X3RydWUobWVt
YmVyLm5hbWUgaW4gc2VsZlt0aGlzLm5hbWVdLnByb3RvdHlwZSwKKyAgICAgICAgICAgIGFzc2Vy
dF90cnVlKG1lbWJlci5uYW1lIGluIHRoaXMuZ2V0X2ludGVyZmFjZV9vYmplY3QoKS5wcm90b3R5
cGUsCiAgICAgICAgICAgICAgICAgIlRoZSBwcm90b3R5cGUgb2JqZWN0IG11c3QgaGF2ZSBhIHBy
b3BlcnR5ICIgKwogICAgICAgICAgICAgICAgIGZvcm1hdF92YWx1ZShtZW1iZXIubmFtZSkpOwog
Ci0gICAgICAgICAgICBpZiAoIW1lbWJlci5oYXNfZXh0ZW5kZWRfYXR0cmlidXRlKCJMZW5pZW50
VGhpcyIpKSB7CisgICAgICAgICAgICBpZiAoIW1lbWJlci5oYXNfZXh0ZW5kZWRfYXR0cmlidXRl
KCJMZWdhY3lMZW5pZW50VGhpcyIpKSB7CiAgICAgICAgICAgICAgICAgaWYgKG1lbWJlci5pZGxU
eXBlLmdlbmVyaWMgIT09ICJQcm9taXNlIikgewotICAgICAgICAgICAgICAgICAgICBhc3NlcnRf
dGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBzZWxmW3RoaXMubmFtZV0ucHJvdG90eXBlW21lbWJlci5uYW1lXTsKKyAgICAgICAgICAg
ICAgICAgICAgLy8gdGhpcy5nZXRfaW50ZXJmYWNlX29iamVjdCgpIHJldHVybnMgYSB0aGluZyBp
biBvdXIgZ2xvYmFsCisgICAgICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVy
cm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0X2ludGVy
ZmFjZV9vYmplY3QoKS5wcm90b3R5cGVbbWVtYmVyLm5hbWVdOwogICAgICAgICAgICAgICAgICAg
ICB9LmJpbmQodGhpcyksICJnZXR0aW5nIHByb3BlcnR5IG9uIHByb3RvdHlwZSBvYmplY3QgbXVz
dCB0aHJvdyBUeXBlRXJyb3IiKTsKICAgICAgICAgICAgICAgICAgICAgLy8gZG9faW50ZXJmYWNl
X2F0dHJpYnV0ZV9hc3NlcnRzIG11c3QgYmUgdGhlIGxhc3QgdGhpbmcgd2UKICAgICAgICAgICAg
ICAgICAgICAgLy8gZG8sIHNpbmNlIGl0IHdpbGwgY2FsbCBkb25lKCkgb24gYV90ZXN0LgotICAg
ICAgICAgICAgICAgICAgICB0aGlzLmRvX2ludGVyZmFjZV9hdHRyaWJ1dGVfYXNzZXJ0cyhzZWxm
W3RoaXMubmFtZV0ucHJvdG90eXBlLCBtZW1iZXIsIGFfdGVzdCk7CisgICAgICAgICAgICAgICAg
ICAgIHRoaXMuZG9faW50ZXJmYWNlX2F0dHJpYnV0ZV9hc3NlcnRzKHRoaXMuZ2V0X2ludGVyZmFj
ZV9vYmplY3QoKS5wcm90b3R5cGUsIG1lbWJlciwgYV90ZXN0KTsKICAgICAgICAgICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBwcm9taXNlX3JlamVjdHMoYV90ZXN0LCBuZXcg
VHlwZUVycm9yKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmW3Ro
aXMubmFtZV0ucHJvdG90eXBlW21lbWJlci5uYW1lXSkKLSAgICAgICAgICAgICAgICAgICAgICAg
IC50aGVuKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICBwcm9taXNlX3JlamVjdHNf
anMoYV90ZXN0LCBUeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0KCkucHJvdG90eXBlW21lbWJlci5uYW1lXSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIC50aGVuKGFfdGVzdC5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZG9faW50ZXJmYWNlX2F0dHJpYnV0ZV9h
c3NlcnRzIG11c3QgYmUgdGhlIGxhc3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0
aGluZyB3ZSBkbywgc2luY2UgaXQgd2lsbCBjYWxsIGRvbmUoKSBvbiBhX3Rlc3QuCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdGhpcy5kb19pbnRlcmZhY2VfYXR0cmlidXRlX2Fzc2VydHMo
c2VsZlt0aGlzLm5hbWVdLnByb3RvdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
aGlzLmRvX2ludGVyZmFjZV9hdHRyaWJ1dGVfYXNzZXJ0cyh0aGlzLmdldF9pbnRlcmZhY2Vfb2Jq
ZWN0KCkucHJvdG90eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1lbWJlciwgYV90ZXN0KTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIH0uYmluZCh0aGlzKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9LmJpbmQo
dGhpcykpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgICAgIGFzc2VydF9lcXVhbHMoc2VsZlt0aGlzLm5hbWVdLnByb3RvdHlwZVttZW1iZXIu
bmFtZV0sIHVuZGVmaW5lZCwKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHRoaXMuZ2V0
X2ludGVyZmFjZV9vYmplY3QoKS5wcm90b3R5cGVbbWVtYmVyLm5hbWVdLCB1bmRlZmluZWQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2V0dGluZyBwcm9wZXJ0eSBvbiBwcm90b3R5
cGUgb2JqZWN0IG11c3QgcmV0dXJuIHVuZGVmaW5lZCIpOwogICAgICAgICAgICAgICAvLyBkb19p
bnRlcmZhY2VfYXR0cmlidXRlX2Fzc2VydHMgbXVzdCBiZSB0aGUgbGFzdCB0aGluZyB3ZSBkbywK
ICAgICAgICAgICAgICAgLy8gc2luY2UgaXQgd2lsbCBjYWxsIGRvbmUoKSBvbiBhX3Rlc3QuCi0g
ICAgICAgICAgICAgIHRoaXMuZG9faW50ZXJmYWNlX2F0dHJpYnV0ZV9hc3NlcnRzKHNlbGZbdGhp
cy5uYW1lXS5wcm90b3R5cGUsIG1lbWJlciwgYV90ZXN0KTsKKyAgICAgICAgICAgICAgdGhpcy5k
b19pbnRlcmZhY2VfYXR0cmlidXRlX2Fzc2VydHModGhpcy5nZXRfaW50ZXJmYWNlX29iamVjdCgp
LnByb3RvdHlwZSwgbWVtYmVyLCBhX3Rlc3QpOwogICAgICAgICAgICAgfQotCiAgICAgICAgIH0K
ICAgICB9LmJpbmQodGhpcykpOwogfTsKIAotLy9AfQogSWRsSW50ZXJmYWNlLnByb3RvdHlwZS50
ZXN0X21lbWJlcl9vcGVyYXRpb24gPSBmdW5jdGlvbihtZW1iZXIpCi0vL0B7CiB7Ci0gICAgdmFy
IGFfdGVzdCA9IGFzeW5jX3Rlc3QodGhpcy5uYW1lICsgIiBpbnRlcmZhY2U6IG9wZXJhdGlvbiAi
ICsgbWVtYmVyLm5hbWUgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICIoIiArIG1lbWJl
ci5hcmd1bWVudHMubWFwKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlv
bihtKSB7cmV0dXJuIG0uaWRsVHlwZS5pZGxUeXBlOyB9ICkKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICArIikiKTsKKyAgICBpZiAoIXNob3VsZFJ1blN1YlRlc3QodGhpcy5uYW1lKSkgewor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIHZhciBhX3Rlc3QgPSBzdWJzZXRUZXN0QnlLZXko
dGhpcy5uYW1lLCBhc3luY190ZXN0LCB0aGlzLm5hbWUgKyAiIGludGVyZmFjZTogb3BlcmF0aW9u
ICIgKyBtZW1iZXIpOwogICAgIGFfdGVzdC5zdGVwKGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAg
IC8vIFRoaXMgZnVuY3Rpb24gdGVzdHMgV2ViSURMIGFzIG9mIDIwMTUtMTItMjkuCiAgICAgICAg
IC8vIGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2VzLW9wZXJhdGlvbnMKIAotICAg
ICAgICBpZiAodGhpcy5pc19jYWxsYmFjaygpICYmICF0aGlzLmhhc19jb25zdGFudHMoKSkgewor
ICAgICAgICBpZiAoIXRoaXMuc2hvdWxkX2hhdmVfaW50ZXJmYWNlX29iamVjdCgpKSB7CiAgICAg
ICAgICAgICBhX3Rlc3QuZG9uZSgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
LSAgICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0eShzZWxmLCB0aGlzLm5hbWUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgInNlbGYgZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVydHkgIiArIGZv
cm1hdF92YWx1ZSh0aGlzLm5hbWUpKTsKKyAgICAgICAgdGhpcy5hc3NlcnRfaW50ZXJmYWNlX29i
amVjdF9leGlzdHMoKTsKIAogICAgICAgICBpZiAodGhpcy5pc19jYWxsYmFjaygpKSB7Ci0gICAg
ICAgICAgICBhc3NlcnRfZmFsc2UoInByb3RvdHlwZSIgaW4gc2VsZlt0aGlzLm5hbWVdLAorICAg
ICAgICAgICAgYXNzZXJ0X2ZhbHNlKCJwcm90b3R5cGUiIGluIHRoaXMuZ2V0X2ludGVyZmFjZV9v
YmplY3QoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5hbWUgKyAnIHNob3VsZCBu
b3QgaGF2ZSBhICJwcm90b3R5cGUiIHByb3BlcnR5Jyk7CiAgICAgICAgICAgICBhX3Rlc3QuZG9u
ZSgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgYXNzZXJ0X293
bl9wcm9wZXJ0eShzZWxmW3RoaXMubmFtZV0sICJwcm90b3R5cGUiLAorICAgICAgICBhc3NlcnRf
b3duX3Byb3BlcnR5KHRoaXMuZ2V0X2ludGVyZmFjZV9vYmplY3QoKSwgInByb3RvdHlwZSIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludGVyZmFjZSAiJyArIHRoaXMubmFtZSArICci
IGRvZXMgbm90IGhhdmUgb3duIHByb3BlcnR5ICJwcm90b3R5cGUiJyk7CiAKICAgICAgICAgLy8g
IkZvciBlYWNoIHVuaXF1ZSBpZGVudGlmaWVyIG9mIGFuIGV4cG9zZWQgb3BlcmF0aW9uIGRlZmlu
ZWQgb24gdGhlCkBAIC0xMjUwLDEyICsyMjY1LDEyIEBAIElkbEludGVyZmFjZS5wcm90b3R5cGUu
dGVzdF9tZW1iZXJfb3BlcmF0aW9uID0gZnVuY3Rpb24obWVtYmVyKQogICAgICAgICB2YXIgbWVt
YmVySG9sZGVyT2JqZWN0OwogICAgICAgICAvLyAiKiBJZiB0aGUgb3BlcmF0aW9uIGlzIHN0YXRp
YywgdGhlbiB0aGUgcHJvcGVydHkgZXhpc3RzIG9uIHRoZQogICAgICAgICAvLyAgICBpbnRlcmZh
Y2Ugb2JqZWN0LiIKLSAgICAgICAgaWYgKG1lbWJlclsic3RhdGljIl0pIHsKLSAgICAgICAgICAg
IGFzc2VydF9vd25fcHJvcGVydHkoc2VsZlt0aGlzLm5hbWVdLCBtZW1iZXIubmFtZSwKKyAgICAg
ICAgaWYgKG1lbWJlci5zcGVjaWFsID09PSAic3RhdGljIikgeworICAgICAgICAgICAgYXNzZXJ0
X293bl9wcm9wZXJ0eSh0aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0KCksIG1lbWJlci5uYW1lLAog
ICAgICAgICAgICAgICAgICAgICAiaW50ZXJmYWNlIG9iamVjdCBtaXNzaW5nIHN0YXRpYyBvcGVy
YXRpb24iKTsKLSAgICAgICAgICAgIG1lbWJlckhvbGRlck9iamVjdCA9IHNlbGZbdGhpcy5uYW1l
XTsKKyAgICAgICAgICAgIG1lbWJlckhvbGRlck9iamVjdCA9IHRoaXMuZ2V0X2ludGVyZmFjZV9v
YmplY3QoKTsKICAgICAgICAgLy8gIiogT3RoZXJ3aXNlLCBbLi4uXSBpZiB0aGUgaW50ZXJmYWNl
IHdhcyBkZWNsYXJlZCB3aXRoIHRoZSBbR2xvYmFsXQotICAgICAgICAvLyAgICBvciBbUHJpbWFy
eUdsb2JhbF0gZXh0ZW5kZWQgYXR0cmlidXRlLCB0aGVuIHRoZSBwcm9wZXJ0eSBleGlzdHMKKyAg
ICAgICAgLy8gICAgZXh0ZW5kZWQgYXR0cmlidXRlLCB0aGVuIHRoZSBwcm9wZXJ0eSBleGlzdHMK
ICAgICAgICAgLy8gICAgb24gZXZlcnkgb2JqZWN0IHRoYXQgaW1wbGVtZW50cyB0aGUgaW50ZXJm
YWNlLiIKICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzX2dsb2JhbCgpKSB7CiAgICAgICAgICAg
ICBhc3NlcnRfb3duX3Byb3BlcnR5KHNlbGYsIG1lbWJlci5uYW1lLApAQCAtMTI2NCwxNyArMjI3
OSw0MyBAQCBJZGxJbnRlcmZhY2UucHJvdG90eXBlLnRlc3RfbWVtYmVyX29wZXJhdGlvbiA9IGZ1
bmN0aW9uKG1lbWJlcikKICAgICAgICAgLy8gIiogT3RoZXJ3aXNlLCB0aGUgcHJvcGVydHkgZXhp
c3RzIHNvbGVseSBvbiB0aGUgaW50ZXJmYWNl4oCZcwogICAgICAgICAvLyAgICBpbnRlcmZhY2Ug
cHJvdG90eXBlIG9iamVjdC4iCiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBhc3NlcnRf
b3duX3Byb3BlcnR5KHNlbGZbdGhpcy5uYW1lXS5wcm90b3R5cGUsIG1lbWJlci5uYW1lLAorICAg
ICAgICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0eSh0aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0KCku
cHJvdG90eXBlLCBtZW1iZXIubmFtZSwKICAgICAgICAgICAgICAgICAgICAgImludGVyZmFjZSBw
cm90b3R5cGUgb2JqZWN0IG1pc3Npbmcgbm9uLXN0YXRpYyBvcGVyYXRpb24iKTsKLSAgICAgICAg
ICAgIG1lbWJlckhvbGRlck9iamVjdCA9IHNlbGZbdGhpcy5uYW1lXS5wcm90b3R5cGU7CisgICAg
ICAgICAgICBtZW1iZXJIb2xkZXJPYmplY3QgPSB0aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0KCku
cHJvdG90eXBlOwogICAgICAgICB9CisgICAgICAgIHRoaXMuZG9fbWVtYmVyX3Vuc2NvcGFibGVf
YXNzZXJ0cyhtZW1iZXIpOwogICAgICAgICB0aGlzLmRvX21lbWJlcl9vcGVyYXRpb25fYXNzZXJ0
cyhtZW1iZXJIb2xkZXJPYmplY3QsIG1lbWJlciwgYV90ZXN0KTsKICAgICB9LmJpbmQodGhpcykp
OwogfTsKIAotLy9AfQorSWRsSW50ZXJmYWNlLnByb3RvdHlwZS5kb19tZW1iZXJfdW5zY29wYWJs
ZV9hc3NlcnRzID0gZnVuY3Rpb24obWVtYmVyKQoreworICAgIC8vIENoZWNrIHRoYXQgaWYgdGhl
IG1lbWJlciBpcyB1bnNjb3BhYmxlIHRoZW4gaXQncyBpbiB0aGUKKyAgICAvLyBAQHVuc2NvcGFi
bGVzIG9iamVjdCBwcm9wZXJseS4KKyAgICBpZiAoIW1lbWJlci5pc1Vuc2NvcGFibGUpIHsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHZhciB1bnNjb3BhYmxlcyA9IHRoaXMuZ2V0X2lu
dGVyZmFjZV9vYmplY3QoKS5wcm90b3R5cGVbU3ltYm9sLnVuc2NvcGFibGVzXTsKKyAgICB2YXIg
cHJvcCA9IG1lbWJlci5uYW1lOworICAgIHZhciBwcm9wRGVzYyA9IE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IodW5zY29wYWJsZXMsIHByb3ApOworICAgIGFzc2VydF9lcXVhbHModHlw
ZW9mIHByb3BEZXNjLCAib2JqZWN0IiwKKyAgICAgICAgICAgICAgICAgIHRoaXMubmFtZSArICcu
cHJvdG90eXBlW1N5bWJvbC51bnNjb3BhYmxlc10uJyArIHByb3AgKyAnIG11c3QgZXhpc3QnKQor
ICAgIGFzc2VydF9mYWxzZSgiZ2V0IiBpbiBwcm9wRGVzYywKKyAgICAgICAgICAgICAgICAgdGhp
cy5uYW1lICsgJy5wcm90b3R5cGVbU3ltYm9sLnVuc2NvcGFibGVzXS4nICsgcHJvcCArICcgbXVz
dCBoYXZlIG5vIGdldHRlcicpOworICAgIGFzc2VydF9mYWxzZSgic2V0IiBpbiBwcm9wRGVzYywK
KyAgICAgICAgICAgICAgICAgdGhpcy5uYW1lICsgJy5wcm90b3R5cGVbU3ltYm9sLnVuc2NvcGFi
bGVzXS4nICsgcHJvcCArICcgbXVzdCBoYXZlIG5vIHNldHRlcicpOworICAgIGFzc2VydF90cnVl
KHByb3BEZXNjLndyaXRhYmxlLAorICAgICAgICAgICAgICAgIHRoaXMubmFtZSArICcucHJvdG90
eXBlW1N5bWJvbC51bnNjb3BhYmxlc10uJyArIHByb3AgKyAnIG11c3QgYmUgd3JpdGFibGUnKTsK
KyAgICBhc3NlcnRfdHJ1ZShwcm9wRGVzYy5lbnVtZXJhYmxlLAorICAgICAgICAgICAgICAgIHRo
aXMubmFtZSArICcucHJvdG90eXBlW1N5bWJvbC51bnNjb3BhYmxlc10uJyArIHByb3AgKyAnIG11
c3QgYmUgZW51bWVyYWJsZScpOworICAgIGFzc2VydF90cnVlKHByb3BEZXNjLmNvbmZpZ3VyYWJs
ZSwKKyAgICAgICAgICAgICAgICB0aGlzLm5hbWUgKyAnLnByb3RvdHlwZVtTeW1ib2wudW5zY29w
YWJsZXNdLicgKyBwcm9wICsgJyBtdXN0IGJlIGNvbmZpZ3VyYWJsZScpOworICAgIGFzc2VydF9l
cXVhbHMocHJvcERlc2MudmFsdWUsIHRydWUsCisgICAgICAgICAgICAgICAgICB0aGlzLm5hbWUg
KyAnLnByb3RvdHlwZVtTeW1ib2wudW5zY29wYWJsZXNdLicgKyBwcm9wICsgJyBtdXN0IGhhdmUg
dGhlIHZhbHVlIGB0cnVlYCcpOworfTsKKwogSWRsSW50ZXJmYWNlLnByb3RvdHlwZS5kb19tZW1i
ZXJfb3BlcmF0aW9uX2Fzc2VydHMgPSBmdW5jdGlvbihtZW1iZXJIb2xkZXJPYmplY3QsIG1lbWJl
ciwgYV90ZXN0KQotLy9AewogewogICAgIHZhciBkb25lID0gYV90ZXN0LmRvbmUuYmluZChhX3Rl
c3QpOwogICAgIHZhciBvcGVyYXRpb25VbmZvcmdlYWJsZSA9IG1lbWJlci5pc1VuZm9yZ2VhYmxl
OwpAQCAtMTI4MiwyNyArMjMyMywyOSBAQCBJZGxJbnRlcmZhY2UucHJvdG90eXBlLmRvX21lbWJl
cl9vcGVyYXRpb25fYXNzZXJ0cyA9IGZ1bmN0aW9uKG1lbWJlckhvbGRlck9iamVjdAogICAgIC8v
ICJUaGUgcHJvcGVydHkgaGFzIGF0dHJpYnV0ZXMgeyBbW1dyaXRhYmxlXV06IEIsCiAgICAgLy8g
W1tFbnVtZXJhYmxlXV06IHRydWUsIFtbQ29uZmlndXJhYmxlXV06IEIgfSwgd2hlcmUgQiBpcyBm
YWxzZSBpZiB0aGUKICAgICAvLyBvcGVyYXRpb24gaXMgdW5mb3JnZWFibGUgb24gdGhlIGludGVy
ZmFjZSwgYW5kIHRydWUgb3RoZXJ3aXNlIi4KLSAgICBhc3NlcnRfZmFsc2UoImdldCIgaW4gZGVz
YywgInByb3BlcnR5IGhhcyBnZXR0ZXIiKTsKLSAgICBhc3NlcnRfZmFsc2UoInNldCIgaW4gZGVz
YywgInByb3BlcnR5IGhhcyBzZXR0ZXIiKTsKKyAgICBhc3NlcnRfZmFsc2UoImdldCIgaW4gZGVz
YywgInByb3BlcnR5IHNob3VsZCBub3QgaGF2ZSBhIGdldHRlciIpOworICAgIGFzc2VydF9mYWxz
ZSgic2V0IiBpbiBkZXNjLCAicHJvcGVydHkgc2hvdWxkIG5vdCBoYXZlIGEgc2V0dGVyIik7CiAg
ICAgYXNzZXJ0X2VxdWFscyhkZXNjLndyaXRhYmxlLCAhb3BlcmF0aW9uVW5mb3JnZWFibGUsCiAg
ICAgICAgICAgICAgICAgICAicHJvcGVydHkgc2hvdWxkIGJlIHdyaXRhYmxlIGlmIGFuZCBvbmx5
IGlmIG5vdCB1bmZvcmdlYWJsZSIpOwotICAgIGFzc2VydF90cnVlKGRlc2MuZW51bWVyYWJsZSwg
InByb3BlcnR5IGlzIG5vdCBlbnVtZXJhYmxlIik7CisgICAgYXNzZXJ0X3RydWUoZGVzYy5lbnVt
ZXJhYmxlLCAicHJvcGVydHkgc2hvdWxkIGJlIGVudW1lcmFibGUiKTsKICAgICBhc3NlcnRfZXF1
YWxzKGRlc2MuY29uZmlndXJhYmxlLCAhb3BlcmF0aW9uVW5mb3JnZWFibGUsCiAgICAgICAgICAg
ICAgICAgICAicHJvcGVydHkgc2hvdWxkIGJlIGNvbmZpZ3VyYWJsZSBpZiBhbmQgb25seSBpZiBu
b3QgdW5mb3JnZWFibGUiKTsKICAgICAvLyAiVGhlIHZhbHVlIG9mIHRoZSBwcm9wZXJ0eSBpcyBh
IEZ1bmN0aW9uIG9iamVjdCB3aG9zZQogICAgIC8vIGJlaGF2aW9yIGlzIGFzIGZvbGxvd3MgLiAu
IC4iCiAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgbWVtYmVySG9sZGVyT2JqZWN0W21lbWJlci5u
YW1lXSwgImZ1bmN0aW9uIiwKICAgICAgICAgICAgICAgICAgICJwcm9wZXJ0eSBtdXN0IGJlIGEg
ZnVuY3Rpb24iKTsKLSAgICAvLyAiVGhlIHZhbHVlIG9mIHRoZSBGdW5jdGlvbiBvYmplY3TigJlz
IOKAnGxlbmd0aOKAnSBwcm9wZXJ0eSBpcwotICAgIC8vIGEgTnVtYmVyIGRldGVybWluZWQgYXMg
Zm9sbG93czoKLSAgICAvLyAiLiAuIC4KLSAgICAvLyAiUmV0dXJuIHRoZSBsZW5ndGggb2YgdGhl
IHNob3J0ZXN0IGFyZ3VtZW50IGxpc3Qgb2YgdGhlCi0gICAgLy8gZW50cmllcyBpbiBTLiIKLSAg
ICBhc3NlcnRfZXF1YWxzKG1lbWJlckhvbGRlck9iamVjdFttZW1iZXIubmFtZV0ubGVuZ3RoLAot
ICAgICAgICBtaW5PdmVybG9hZExlbmd0aCh0aGlzLm1lbWJlcnMuZmlsdGVyKGZ1bmN0aW9uKG0p
IHsKLSAgICAgICAgICAgIHJldHVybiBtLnR5cGUgPT0gIm9wZXJhdGlvbiIgJiYgbS5uYW1lID09
IG1lbWJlci5uYW1lOwotICAgICAgICB9KSksCisKKyAgICBjb25zdCBjdG9ycyA9IHRoaXMubWVt
YmVycy5maWx0ZXIoZnVuY3Rpb24obSkgeworICAgICAgICByZXR1cm4gbS50eXBlID09ICJvcGVy
YXRpb24iICYmIG0ubmFtZSA9PSBtZW1iZXIubmFtZTsKKyAgICB9KTsKKyAgICBhc3NlcnRfZXF1
YWxzKAorICAgICAgICBtZW1iZXJIb2xkZXJPYmplY3RbbWVtYmVyLm5hbWVdLmxlbmd0aCwKKyAg
ICAgICAgbWluT3ZlcmxvYWRMZW5ndGgoY3RvcnMpLAogICAgICAgICAicHJvcGVydHkgaGFzIHdy
b25nIC5sZW5ndGgiKTsKKyAgICBhc3NlcnRfZXF1YWxzKAorICAgICAgICBtZW1iZXJIb2xkZXJP
YmplY3RbbWVtYmVyLm5hbWVdLm5hbWUsCisgICAgICAgIG1lbWJlci5uYW1lLAorICAgICAgICAi
cHJvcGVydHkgaGFzIHdyb25nIC5uYW1lIik7CiAKICAgICAvLyBNYWtlIHNvbWUgc3VpdGFibGUg
YXJndW1lbnRzCiAgICAgdmFyIGFyZ3MgPSBtZW1iZXIuYXJndW1lbnRzLm1hcChmdW5jdGlvbihh
cmcpIHsKQEAgLTEzMTksNyArMjM2Miw3IEBAIElkbEludGVyZmFjZS5wcm90b3R5cGUuZG9fbWVt
YmVyX29wZXJhdGlvbl9hc3NlcnRzID0gZnVuY3Rpb24obWVtYmVySG9sZGVyT2JqZWN0CiAgICAg
Ly8gY2hlY2sgZm9yIGdsb2JhbHMsIHNpbmNlIG90aGVyd2lzZSB3ZSdsbCBpbnZva2Ugd2luZG93
LmNsb3NlKCkuICBBbmQgd2UKICAgICAvLyBoYXZlIHRvIHNraXAgdGhpcyB0ZXN0IGZvciBhbnl0
aGluZyB0aGF0IG9uIHRoZSBwcm90byBjaGFpbiBvZiAic2VsZiIsCiAgICAgLy8gc2luY2UgdGhh
dCBkb2VzIGluIGZhY3QgaGF2ZSBpbXBsaWNpdC10aGlzIGJlaGF2aW9yLgotICAgIGlmICghbWVt
YmVyWyJzdGF0aWMiXSkgeworICAgIGlmIChtZW1iZXIuc3BlY2lhbCAhPT0gInN0YXRpYyIpIHsK
ICAgICAgICAgdmFyIGNiOwogICAgICAgICBpZiAoIXRoaXMuaXNfZ2xvYmFsKCkgJiYKICAgICAg
ICAgICAgIG1lbWJlckhvbGRlck9iamVjdFttZW1iZXIubmFtZV0gIT0gc2VsZlttZW1iZXIubmFt
ZV0pCkBAIC0xMzQzLDcxICsyMzg2LDEyMiBAQCBJZGxJbnRlcmZhY2UucHJvdG90eXBlLmRvX21l
bWJlcl9vcGVyYXRpb25fYXNzZXJ0cyA9IGZ1bmN0aW9uKG1lbWJlckhvbGRlck9iamVjdAogICAg
IH0KIH0KIAotLy9AfQotSWRsSW50ZXJmYWNlLnByb3RvdHlwZS5hZGRfaXRlcmFibGVfbWVtYmVy
cyA9IGZ1bmN0aW9uKG1lbWJlcikKLS8vQHsKLXsKLSAgICB0aGlzLm1lbWJlcnMucHVzaCh7dHlw
ZTogIm9wZXJhdGlvbiIsIG5hbWU6ICJlbnRyaWVzIiwgaWRsVHlwZTogIml0ZXJhdG9yIiwgYXJn
dW1lbnRzOiBbXX0pOwotICAgIHRoaXMubWVtYmVycy5wdXNoKHt0eXBlOiAib3BlcmF0aW9uIiwg
bmFtZTogImtleXMiLCBpZGxUeXBlOiAiaXRlcmF0b3IiLCBhcmd1bWVudHM6IFtdfSk7Ci0gICAg
dGhpcy5tZW1iZXJzLnB1c2goe3R5cGU6ICJvcGVyYXRpb24iLCBuYW1lOiAidmFsdWVzIiwgaWRs
VHlwZTogIml0ZXJhdG9yIiwgYXJndW1lbnRzOiBbXX0pOwotICAgIHRoaXMubWVtYmVycy5wdXNo
KHt0eXBlOiAib3BlcmF0aW9uIiwgbmFtZTogImZvckVhY2giLCBpZGxUeXBlOiAidm9pZCIsIGFy
Z3VtZW50czoKLSAgICAgICAgW3sgbmFtZTogImNhbGxiYWNrIiwgaWRsVHlwZToge2lkbFR5cGU6
ICJmdW5jdGlvbiJ9fSwKLSAgICAgICAgeyBuYW1lOiAidGhpc1ZhbHVlIiwgaWRsVHlwZToge2lk
bFR5cGU6ICJhbnkifSwgb3B0aW9uYWw6IHRydWV9XX0pOworSWRsSW50ZXJmYWNlLnByb3RvdHlw
ZS50ZXN0X3RvX2pzb25fb3BlcmF0aW9uID0gZnVuY3Rpb24oZGVzYywgbWVtYmVySG9sZGVyT2Jq
ZWN0LCBtZW1iZXIpIHsKKyAgICB2YXIgaW5zdGFuY2VOYW1lID0gbWVtYmVySG9sZGVyT2JqZWN0
ICYmIG1lbWJlckhvbGRlck9iamVjdC5jb25zdHJ1Y3Rvci5uYW1lCisgICAgICAgIHx8IG1lbWJl
ci5uYW1lICsgIiBvYmplY3QiOworICAgIGlmIChtZW1iZXIuaGFzX2V4dGVuZGVkX2F0dHJpYnV0
ZSgiRGVmYXVsdCIpKSB7CisgICAgICAgIHN1YnNldFRlc3RCeUtleSh0aGlzLm5hbWUsIHRlc3Qs
IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdmFyIG1hcCA9IHRoaXMuZGVmYXVsdF90b19qc29u
X29wZXJhdGlvbigpOworICAgICAgICAgICAgdmFyIGpzb24gPSBtZW1iZXJIb2xkZXJPYmplY3Qu
dG9KU09OKCk7CisgICAgICAgICAgICBtYXAuZm9yRWFjaChmdW5jdGlvbih0eXBlLCBrKSB7Cisg
ICAgICAgICAgICAgICAgYXNzZXJ0X3RydWUoayBpbiBqc29uLCAicHJvcGVydHkgIiArIEpTT04u
c3RyaW5naWZ5KGspICsgIiBzaG91bGQgYmUgcHJlc2VudCBpbiB0aGUgb3V0cHV0IG9mICIgKyB0
aGlzLm5hbWUgKyAiLnByb3RvdHlwZS50b0pTT04oKSIpOworICAgICAgICAgICAgICAgIHZhciBk
ZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihqc29uLCBrKTsKKyAg
ICAgICAgICAgICAgICBhc3NlcnRfdHJ1ZShkZXNjcmlwdG9yLndyaXRhYmxlLCAicHJvcGVydHkg
IiArIGsgKyAiIHNob3VsZCBiZSB3cml0YWJsZSIpOworICAgICAgICAgICAgICAgIGFzc2VydF90
cnVlKGRlc2NyaXB0b3IuY29uZmlndXJhYmxlLCAicHJvcGVydHkgIiArIGsgKyAiIHNob3VsZCBi
ZSBjb25maWd1cmFibGUiKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfdHJ1ZShkZXNjcmlwdG9y
LmVudW1lcmFibGUsICJwcm9wZXJ0eSAiICsgayArICIgc2hvdWxkIGJlIGVudW1lcmFibGUiKTsK
KyAgICAgICAgICAgICAgICB0aGlzLmFycmF5LmFzc2VydF90eXBlX2lzKGpzb25ba10sIHR5cGUp
OworICAgICAgICAgICAgICAgIGRlbGV0ZSBqc29uW2tdOworICAgICAgICAgICAgfSwgdGhpcyk7
CisgICAgICAgIH0uYmluZCh0aGlzKSwgdGhpcy5uYW1lICsgIiBpbnRlcmZhY2U6IGRlZmF1bHQg
dG9KU09OIG9wZXJhdGlvbiBvbiAiICsgZGVzYyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgc3Vi
c2V0VGVzdEJ5S2V5KHRoaXMubmFtZSwgdGVzdCwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBh
c3NlcnRfdHJ1ZSh0aGlzLmFycmF5LmlzX2pzb25fdHlwZShtZW1iZXIuaWRsVHlwZSksIEpTT04u
c3RyaW5naWZ5KG1lbWJlci5pZGxUeXBlKSArICIgaXMgbm90IGFuIGFwcHJvcHJpYXRlIHJldHVy
biB2YWx1ZSBmb3IgdGhlIHRvSlNPTiBvcGVyYXRpb24gb2YgIiArIGluc3RhbmNlTmFtZSk7Cisg
ICAgICAgICAgICB0aGlzLmFycmF5LmFzc2VydF90eXBlX2lzKG1lbWJlckhvbGRlck9iamVjdC50
b0pTT04oKSwgbWVtYmVyLmlkbFR5cGUpOworICAgICAgICB9LmJpbmQodGhpcyksIHRoaXMubmFt
ZSArICIgaW50ZXJmYWNlOiB0b0pTT04gb3BlcmF0aW9uIG9uICIgKyBkZXNjKTsKKyAgICB9CiB9
OwogCi0vL0B9CiBJZGxJbnRlcmZhY2UucHJvdG90eXBlLnRlc3RfbWVtYmVyX2l0ZXJhYmxlID0g
ZnVuY3Rpb24obWVtYmVyKQotLy9AewogewotICAgIHZhciBpbnRlcmZhY2VOYW1lID0gdGhpcy5u
YW1lOwotICAgIHZhciBpc1BhaXJJdGVyYXRvciA9IG1lbWJlci5pZGxUeXBlIGluc3RhbmNlb2Yg
QXJyYXk7Ci0gICAgdGVzdChmdW5jdGlvbigpCisgICAgc3Vic2V0VGVzdEJ5S2V5KHRoaXMubmFt
ZSwgdGVzdCwgZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgdmFyIGRlc2NyaXB0b3IgPSBPYmpl
Y3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNlbGZbaW50ZXJmYWNlTmFtZV0ucHJvdG90eXBl
LCBTeW1ib2wuaXRlcmF0b3IpOwotICAgICAgICBhc3NlcnRfdHJ1ZShkZXNjcmlwdG9yLndyaXRh
YmxlLCAicHJvcGVydHkgaXMgbm90IHdyaXRhYmxlIik7Ci0gICAgICAgIGFzc2VydF90cnVlKGRl
c2NyaXB0b3IuY29uZmlndXJhYmxlLCAicHJvcGVydHkgaXMgbm90IGNvbmZpZ3VyYWJsZSIpOwot
ICAgICAgICBhc3NlcnRfZmFsc2UoZGVzY3JpcHRvci5lbnVtZXJhYmxlLCAicHJvcGVydHkgaXMg
ZW51bWVyYWJsZSIpOwotICAgICAgICBhc3NlcnRfZXF1YWxzKHNlbGZbaW50ZXJmYWNlTmFtZV0u
cHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl0ubmFtZSwgaXNQYWlySXRlcmF0b3IgPyAiZW50cmll
cyIgOiAidmFsdWVzIiwgIkBAaXRlcmF0b3IgZnVuY3Rpb24gZG9lcyBub3QgaGF2ZSB0aGUgcmln
aHQgbmFtZSIpOwotICAgIH0sICJUZXN0aW5nIFN5bWJvbC5pdGVyYXRvciBwcm9wZXJ0eSBvZiBp
dGVyYWJsZSBpbnRlcmZhY2UgIiArIGludGVyZmFjZU5hbWUpOwotCi0gICAgaWYgKGlzUGFpckl0
ZXJhdG9yKSB7Ci0gICAgICAgIHRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBhc3NlcnRf
ZXF1YWxzKHNlbGZbaW50ZXJmYWNlTmFtZV0ucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl0sIHNl
bGZbaW50ZXJmYWNlTmFtZV0ucHJvdG90eXBlWyJlbnRyaWVzIl0sICJlbnRyaWVzIG1ldGhvZCBp
cyBub3QgdGhlIHNhbWUgYXMgQEBpdGVyYXRvciIpOwotICAgICAgICB9LCAiVGVzdGluZyBwYWly
IGl0ZXJhYmxlIGludGVyZmFjZSAiICsgaW50ZXJmYWNlTmFtZSk7Ci0gICAgfSBlbHNlIHsKLSAg
ICAgICAgdGVzdChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIFsiZW50cmllcyIsICJrZXlzIiwg
InZhbHVlcyIsICJmb3JFYWNoIiwgU3ltYm9sLkl0ZXJhdG9yXS5mb3JFYWNoKGZ1bmN0aW9uKHBy
b3BlcnR5KSB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhzZWxmW2ludGVyZmFjZU5h
bWVdLnByb3RvdHlwZVtwcm9wZXJ0eV0sIEFycmF5LnByb3RvdHlwZVtwcm9wZXJ0eV0sIHByb3Bl
cnR5ICsgIiBmdW5jdGlvbiBpcyBub3QgdGhlIHNhbWUgYXMgQXJyYXkgb25lIik7CisgICAgICAg
IHZhciBpc1BhaXJJdGVyYXRvciA9IG1lbWJlci5pZGxUeXBlLmxlbmd0aCA9PT0gMjsKKyAgICAg
ICAgdmFyIHByb3RvID0gdGhpcy5nZXRfaW50ZXJmYWNlX29iamVjdCgpLnByb3RvdHlwZTsKKyAg
ICAgICAgdmFyIGl0ZXJhdG9yRGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
cHJvdG8sIFN5bWJvbC5pdGVyYXRvcik7CisKKyAgICAgICAgYXNzZXJ0X3RydWUoaXRlcmF0b3JE
ZXNjLndyaXRhYmxlLCAiQEBpdGVyYXRvciBwcm9wZXJ0eSBzaG91bGQgYmUgd3JpdGFibGUiKTsK
KyAgICAgICAgYXNzZXJ0X3RydWUoaXRlcmF0b3JEZXNjLmNvbmZpZ3VyYWJsZSwgIkBAaXRlcmF0
b3IgcHJvcGVydHkgc2hvdWxkIGJlIGNvbmZpZ3VyYWJsZSIpOworICAgICAgICBhc3NlcnRfZmFs
c2UoaXRlcmF0b3JEZXNjLmVudW1lcmFibGUsICJAQGl0ZXJhdG9yIHByb3BlcnR5IHNob3VsZCBu
b3QgYmUgZW51bWVyYWJsZSIpOworICAgICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBpdGVyYXRv
ckRlc2MudmFsdWUsICJmdW5jdGlvbiIsICJAQGl0ZXJhdG9yIHByb3BlcnR5IHNob3VsZCBiZSBh
IGZ1bmN0aW9uIik7CisgICAgICAgIGFzc2VydF9lcXVhbHMoaXRlcmF0b3JEZXNjLnZhbHVlLmxl
bmd0aCwgMCwgIkBAaXRlcmF0b3IgZnVuY3Rpb24gb2JqZWN0IGxlbmd0aCBzaG91bGQgYmUgMCIp
OworICAgICAgICBhc3NlcnRfZXF1YWxzKGl0ZXJhdG9yRGVzYy52YWx1ZS5uYW1lLCBpc1BhaXJJ
dGVyYXRvciA/ICJlbnRyaWVzIiA6ICJ2YWx1ZXMiLCAiQEBpdGVyYXRvciBmdW5jdGlvbiBvYmpl
Y3Qgc2hvdWxkIGhhdmUgdGhlIHJpZ2h0IG5hbWUiKTsKKworICAgICAgICBpZiAoaXNQYWlySXRl
cmF0b3IpIHsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocHJvdG9bImVudHJpZXMiXSwgcHJv
dG9bU3ltYm9sLml0ZXJhdG9yXSwgImVudHJpZXMgbWV0aG9kIHNob3VsZCBiZSB0aGUgc2FtZSBh
cyBAQGl0ZXJhdG9yIG1ldGhvZCIpOworICAgICAgICAgICAgWworICAgICAgICAgICAgICAgIFsi
ZW50cmllcyIsIDBdLAorICAgICAgICAgICAgICAgIFsia2V5cyIsIDBdLAorICAgICAgICAgICAg
ICAgIFsidmFsdWVzIiwgMF0sCisgICAgICAgICAgICAgICAgWyJmb3JFYWNoIiwgMV0KKyAgICAg
ICAgICAgIF0uZm9yRWFjaCgoW3Byb3BlcnR5LCBsZW5ndGhdKSA9PiB7CisgICAgICAgICAgICAg
ICAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHByb3RvLCBwcm9w
ZXJ0eSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgZGVzYy52YWx1ZSwg
ImZ1bmN0aW9uIiwgcHJvcGVydHkgKyAiIHByb3BlcnR5IHNob3VsZCBiZSBhIGZ1bmN0aW9uIik7
CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhkZXNjLnZhbHVlLmxlbmd0aCwgbGVuZ3Ro
LCBwcm9wZXJ0eSArICIgZnVuY3Rpb24gb2JqZWN0IGxlbmd0aCBzaG91bGQgYmUgIiArIGxlbmd0
aCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhkZXNjLnZhbHVlLm5hbWUsIHByb3Bl
cnR5LCBwcm9wZXJ0eSArICIgZnVuY3Rpb24gb2JqZWN0IHNob3VsZCBoYXZlIHRoZSByaWdodCBu
YW1lIik7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgfSwgIlRlc3RpbmcgdmFsdWUgaXRlcmFi
bGUgaW50ZXJmYWNlICIgKyBpbnRlcmZhY2VOYW1lKTsKLSAgICB9CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHByb3RvW1N5bWJvbC5pdGVyYXRvcl0sIEFycmF5
LnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdLCAiQEBpdGVyYXRvciBtZXRob2Qgc2hvdWxkIGJl
IHRoZSBzYW1lIGFzIEFycmF5IHByb3RvdHlwZSdzIik7CisgICAgICAgICAgICBbImVudHJpZXMi
LCAia2V5cyIsICJ2YWx1ZXMiLCAiZm9yRWFjaCIsIFN5bWJvbC5pdGVyYXRvcl0uZm9yRWFjaChw
cm9wZXJ0eSA9PiB7CisgICAgICAgICAgICAgICAgdmFyIHByb3BlcnR5TmFtZSA9IHByb3BlcnR5
ID09PSBTeW1ib2wuaXRlcmF0b3IgPyAiQEBpdGVyYXRvciIgOiBwcm9wZXJ0eTsKKyAgICAgICAg
ICAgICAgICBhc3NlcnRfZXF1YWxzKHByb3RvW3Byb3BlcnR5XSwgQXJyYXkucHJvdG90eXBlW3By
b3BlcnR5XSwgcHJvcGVydHlOYW1lICsgIiBtZXRob2Qgc2hvdWxkIGJlIHRoZSBzYW1lIGFzIEFy
cmF5IHByb3RvdHlwZSdzIik7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgIH0uYmlu
ZCh0aGlzKSwgdGhpcy5uYW1lICsgIiBpbnRlcmZhY2U6IGl0ZXJhYmxlPCIgKyBtZW1iZXIuaWRs
VHlwZS5tYXAoZnVuY3Rpb24odCkgeyByZXR1cm4gdC5pZGxUeXBlOyB9KS5qb2luKCIsICIpICsg
Ij4iKTsKK307CisKK0lkbEludGVyZmFjZS5wcm90b3R5cGUudGVzdF9tZW1iZXJfYXN5bmNfaXRl
cmFibGUgPSBmdW5jdGlvbihtZW1iZXIpCit7CisgICAgc3Vic2V0VGVzdEJ5S2V5KHRoaXMubmFt
ZSwgdGVzdCwgZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIGlzUGFpckl0ZXJhdG9yID0g
bWVtYmVyLmlkbFR5cGUubGVuZ3RoID09PSAyOworICAgICAgICB2YXIgcHJvdG8gPSB0aGlzLmdl
dF9pbnRlcmZhY2Vfb2JqZWN0KCkucHJvdG90eXBlOworICAgICAgICB2YXIgaXRlcmF0b3JEZXNj
ID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihwcm90bywgU3ltYm9sLmFzeW5jSXRl
cmF0b3IpOworCisgICAgICAgIGFzc2VydF90cnVlKGl0ZXJhdG9yRGVzYy53cml0YWJsZSwgIkBA
YXN5bmNJdGVyYXRvciBwcm9wZXJ0eSBzaG91bGQgYmUgd3JpdGFibGUiKTsKKyAgICAgICAgYXNz
ZXJ0X3RydWUoaXRlcmF0b3JEZXNjLmNvbmZpZ3VyYWJsZSwgIkBAYXN5bmNJdGVyYXRvciBwcm9w
ZXJ0eSBzaG91bGQgYmUgY29uZmlndXJhYmxlIik7CisgICAgICAgIGFzc2VydF9mYWxzZShpdGVy
YXRvckRlc2MuZW51bWVyYWJsZSwgIkBAYXN5bmNJdGVyYXRvciBwcm9wZXJ0eSBzaG91bGQgbm90
IGJlIGVudW1lcmFibGUiKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgaXRlcmF0b3JE
ZXNjLnZhbHVlLCAiZnVuY3Rpb24iLCAiQEBhc3luY0l0ZXJhdG9yIHByb3BlcnR5IHNob3VsZCBi
ZSBhIGZ1bmN0aW9uIik7CisgICAgICAgIGFzc2VydF9lcXVhbHMoaXRlcmF0b3JEZXNjLnZhbHVl
Lmxlbmd0aCwgMCwgIkBAYXN5bmNJdGVyYXRvciBmdW5jdGlvbiBvYmplY3QgbGVuZ3RoIHNob3Vs
ZCBiZSAwIik7CisgICAgICAgIGFzc2VydF9lcXVhbHMoaXRlcmF0b3JEZXNjLnZhbHVlLm5hbWUs
IGlzUGFpckl0ZXJhdG9yID8gImVudHJpZXMiIDogInZhbHVlcyIsICJAQGFzeW5jSXRlcmF0b3Ig
ZnVuY3Rpb24gb2JqZWN0IHNob3VsZCBoYXZlIHRoZSByaWdodCBuYW1lIik7CisKKyAgICAgICAg
aWYgKGlzUGFpckl0ZXJhdG9yKSB7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHByb3RvWyJl
bnRyaWVzIl0sIHByb3RvW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSwgImVudHJpZXMgbWV0aG9kIHNo
b3VsZCBiZSB0aGUgc2FtZSBhcyBAQGFzeW5jSXRlcmF0b3IgbWV0aG9kIik7CisgICAgICAgICAg
ICBbImVudHJpZXMiLCAia2V5cyIsICJ2YWx1ZXMiXS5mb3JFYWNoKHByb3BlcnR5ID0+IHsKKyAg
ICAgICAgICAgICAgICB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
cHJvdG8sIHByb3BlcnR5KTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBk
ZXNjLnZhbHVlLCAiZnVuY3Rpb24iLCBwcm9wZXJ0eSArICIgcHJvcGVydHkgc2hvdWxkIGJlIGEg
ZnVuY3Rpb24iKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGRlc2MudmFsdWUubGVu
Z3RoLCAwLCBwcm9wZXJ0eSArICIgZnVuY3Rpb24gb2JqZWN0IGxlbmd0aCBzaG91bGQgYmUgMCIp
OworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZGVzYy52YWx1ZS5uYW1lLCBwcm9wZXJ0
eSwgcHJvcGVydHkgKyAiIGZ1bmN0aW9uIG9iamVjdCBzaG91bGQgaGF2ZSB0aGUgcmlnaHQgbmFt
ZSIpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBhc3Nl
cnRfZXF1YWxzKHByb3RvWyJ2YWx1ZXMiXSwgcHJvdG9bU3ltYm9sLmFzeW5jSXRlcmF0b3JdLCAi
dmFsdWVzIG1ldGhvZCBzaG91bGQgYmUgdGhlIHNhbWUgYXMgQEBhc3luY0l0ZXJhdG9yIG1ldGhv
ZCIpOworICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKCJlbnRyaWVzIiBpbiBwcm90bywgInNob3Vs
ZCBub3QgaGF2ZSBhbiBlbnRyaWVzIG1ldGhvZCIpOworICAgICAgICAgICAgYXNzZXJ0X2ZhbHNl
KCJrZXlzIiBpbiBwcm90bywgInNob3VsZCBub3QgaGF2ZSBhIGtleXMgbWV0aG9kIik7CisgICAg
ICAgIH0KKyAgICB9LmJpbmQodGhpcyksIHRoaXMubmFtZSArICIgaW50ZXJmYWNlOiBhc3luYyBp
dGVyYWJsZTwiICsgbWVtYmVyLmlkbFR5cGUubWFwKGZ1bmN0aW9uKHQpIHsgcmV0dXJuIHQuaWRs
VHlwZTsgfSkuam9pbigiLCAiKSArICI+Iik7CiB9OwogCi0vL0B9CiBJZGxJbnRlcmZhY2UucHJv
dG90eXBlLnRlc3RfbWVtYmVyX3N0cmluZ2lmaWVyID0gZnVuY3Rpb24obWVtYmVyKQotLy9Aewog
ewotICAgIHRlc3QoZnVuY3Rpb24oKQorICAgIHN1YnNldFRlc3RCeUtleSh0aGlzLm5hbWUsIHRl
c3QsIGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIGlmICh0aGlzLmlzX2NhbGxiYWNrKCkgJiYg
IXRoaXMuaGFzX2NvbnN0YW50cygpKSB7CisgICAgICAgIGlmICghdGhpcy5zaG91bGRfaGF2ZV9p
bnRlcmZhY2Vfb2JqZWN0KCkpIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0g
ICAgICAgIGFzc2VydF9vd25fcHJvcGVydHkoc2VsZiwgdGhpcy5uYW1lLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJzZWxmIGRvZXMgbm90IGhhdmUgb3duIHByb3BlcnR5ICIgKyBmb3Jt
YXRfdmFsdWUodGhpcy5uYW1lKSk7CisgICAgICAgIHRoaXMuYXNzZXJ0X2ludGVyZmFjZV9vYmpl
Y3RfZXhpc3RzKCk7CiAKICAgICAgICAgaWYgKHRoaXMuaXNfY2FsbGJhY2soKSkgewotICAgICAg
ICAgICAgYXNzZXJ0X2ZhbHNlKCJwcm90b3R5cGUiIGluIHNlbGZbdGhpcy5uYW1lXSwKKyAgICAg
ICAgICAgIGFzc2VydF9mYWxzZSgicHJvdG90eXBlIiBpbiB0aGlzLmdldF9pbnRlcmZhY2Vfb2Jq
ZWN0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uYW1lICsgJyBzaG91bGQgbm90
IGhhdmUgYSAicHJvdG90eXBlIiBwcm9wZXJ0eScpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKLSAgICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0eShzZWxmW3RoaXMubmFtZV0sICJw
cm90b3R5cGUiLAorICAgICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KHRoaXMuZ2V0X2ludGVyZmFj
ZV9vYmplY3QoKSwgInByb3RvdHlwZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lu
dGVyZmFjZSAiJyArIHRoaXMubmFtZSArICciIGRvZXMgbm90IGhhdmUgb3duIHByb3BlcnR5ICJw
cm90b3R5cGUiJyk7CiAKICAgICAgICAgLy8gIi4gLiAuIHRoZSBwcm9wZXJ0eSBleGlzdHMgb24g
dGhlIGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0LiIKLSAgICAgICAgdmFyIGludGVyZmFjZVBy
b3RvdHlwZU9iamVjdCA9IHNlbGZbdGhpcy5uYW1lXS5wcm90b3R5cGU7Ci0gICAgICAgIGFzc2Vy
dF9vd25fcHJvcGVydHkoc2VsZlt0aGlzLm5hbWVdLnByb3RvdHlwZSwgInRvU3RyaW5nIiwKKyAg
ICAgICAgdmFyIGludGVyZmFjZVByb3RvdHlwZU9iamVjdCA9IHRoaXMuZ2V0X2ludGVyZmFjZV9v
YmplY3QoKS5wcm90b3R5cGU7CisgICAgICAgIGFzc2VydF9vd25fcHJvcGVydHkoaW50ZXJmYWNl
UHJvdG90eXBlT2JqZWN0LCAidG9TdHJpbmciLAogICAgICAgICAgICAgICAgICJpbnRlcmZhY2Ug
cHJvdG90eXBlIG9iamVjdCBtaXNzaW5nIG5vbi1zdGF0aWMgb3BlcmF0aW9uIik7CiAKICAgICAg
ICAgdmFyIHN0cmluZ2lmaWVyVW5mb3JnZWFibGUgPSBtZW1iZXIuaXNVbmZvcmdlYWJsZTsKQEAg
LTE0MTUsMTEgKzI1MDksMTEgQEAgSWRsSW50ZXJmYWNlLnByb3RvdHlwZS50ZXN0X21lbWJlcl9z
dHJpbmdpZmllciA9IGZ1bmN0aW9uKG1lbWJlcikKICAgICAgICAgLy8gIlRoZSBwcm9wZXJ0eSBo
YXMgYXR0cmlidXRlcyB7IFtbV3JpdGFibGVdXTogQiwKICAgICAgICAgLy8gW1tFbnVtZXJhYmxl
XV06IHRydWUsIFtbQ29uZmlndXJhYmxlXV06IEIgfSwgd2hlcmUgQiBpcyBmYWxzZSBpZiB0aGUK
ICAgICAgICAgLy8gc3RyaW5naWZpZXIgaXMgdW5mb3JnZWFibGUgb24gdGhlIGludGVyZmFjZSwg
YW5kIHRydWUgb3RoZXJ3aXNlLiIKLSAgICAgICAgYXNzZXJ0X2ZhbHNlKCJnZXQiIGluIGRlc2Ms
ICJwcm9wZXJ0eSBoYXMgZ2V0dGVyIik7Ci0gICAgICAgIGFzc2VydF9mYWxzZSgic2V0IiBpbiBk
ZXNjLCAicHJvcGVydHkgaGFzIHNldHRlciIpOworICAgICAgICBhc3NlcnRfZmFsc2UoImdldCIg
aW4gZGVzYywgInByb3BlcnR5IHNob3VsZCBub3QgaGF2ZSBhIGdldHRlciIpOworICAgICAgICBh
c3NlcnRfZmFsc2UoInNldCIgaW4gZGVzYywgInByb3BlcnR5IHNob3VsZCBub3QgaGF2ZSBhIHNl
dHRlciIpOwogICAgICAgICBhc3NlcnRfZXF1YWxzKGRlc2Mud3JpdGFibGUsICFzdHJpbmdpZmll
clVuZm9yZ2VhYmxlLAogICAgICAgICAgICAgICAgICAgICAgICJwcm9wZXJ0eSBzaG91bGQgYmUg
d3JpdGFibGUgaWYgYW5kIG9ubHkgaWYgbm90IHVuZm9yZ2VhYmxlIik7Ci0gICAgICAgIGFzc2Vy
dF90cnVlKGRlc2MuZW51bWVyYWJsZSwgInByb3BlcnR5IGlzIG5vdCBlbnVtZXJhYmxlIik7Cisg
ICAgICAgIGFzc2VydF90cnVlKGRlc2MuZW51bWVyYWJsZSwgInByb3BlcnR5IHNob3VsZCBiZSBl
bnVtZXJhYmxlIik7CiAgICAgICAgIGFzc2VydF9lcXVhbHMoZGVzYy5jb25maWd1cmFibGUsICFz
dHJpbmdpZmllclVuZm9yZ2VhYmxlLAogICAgICAgICAgICAgICAgICAgICAgICJwcm9wZXJ0eSBz
aG91bGQgYmUgY29uZmlndXJhYmxlIGlmIGFuZCBvbmx5IGlmIG5vdCB1bmZvcmdlYWJsZSIpOwog
ICAgICAgICAvLyAiVGhlIHZhbHVlIG9mIHRoZSBwcm9wZXJ0eSBpcyBhIEZ1bmN0aW9uIG9iamVj
dCwgd2hpY2ggYmVoYXZlcyBhcwpAQCAtMTQzMiw4ICsyNTI2LDggQEAgSWRsSW50ZXJmYWNlLnBy
b3RvdHlwZS50ZXN0X21lbWJlcl9zdHJpbmdpZmllciA9IGZ1bmN0aW9uKG1lbWJlcikKICAgICAg
ICAgICAgICJwcm9wZXJ0eSBoYXMgd3JvbmcgLmxlbmd0aCIpOwogCiAgICAgICAgIC8vICJMZXQg
TyBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgVG9PYmplY3Qgb24gdGhlIHRoaXMgdmFsdWUuIgot
ICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7Ci0gICAg
ICAgICAgICBzZWxmW3RoaXMubmFtZV0ucHJvdG90eXBlLnRvU3RyaW5nLmFwcGx5KG51bGwsIFtd
KTsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhnbG9iYWxPZihpbnRlcmZhY2VQcm90b3R5cGVP
YmplY3QudG9TdHJpbmcpLlR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBpbnRl
cmZhY2VQcm90b3R5cGVPYmplY3QudG9TdHJpbmcuYXBwbHkobnVsbCwgW10pOwogICAgICAgICB9
LCAiY2FsbGluZyBzdHJpbmdpZmllciB3aXRoIHRoaXMgPSBudWxsIGRpZG4ndCB0aHJvdyBUeXBl
RXJyb3IiKTsKIAogICAgICAgICAvLyAiSWYgTyBpcyBub3QgYW4gb2JqZWN0IHRoYXQgaW1wbGVt
ZW50cyB0aGUgaW50ZXJmYWNlIG9uIHdoaWNoIHRoZQpAQCAtMTQ0MSwzMyArMjUzNSwzMSBAQCBJ
ZGxJbnRlcmZhY2UucHJvdG90eXBlLnRlc3RfbWVtYmVyX3N0cmluZ2lmaWVyID0gZnVuY3Rpb24o
bWVtYmVyKQogICAgICAgICAvLwogICAgICAgICAvLyBUT0RPOiBUZXN0IGEgcGxhdGZvcm0gb2Jq
ZWN0IHRoYXQgaW1wbGVtZW50cyBzb21lIG90aGVyCiAgICAgICAgIC8vIGludGVyZmFjZS4gIChI
YXZlIHRvIGJlIHN1cmUgdG8gZ2V0IGluaGVyaXRhbmNlIHJpZ2h0LikKLSAgICAgICAgYXNzZXJ0
X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgc2VsZlt0
aGlzLm5hbWVdLnByb3RvdHlwZS50b1N0cmluZy5hcHBseSh7fSwgW10pOworICAgICAgICBhc3Nl
cnRfdGhyb3dzX2pzKGdsb2JhbE9mKGludGVyZmFjZVByb3RvdHlwZU9iamVjdC50b1N0cmluZyku
VHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGludGVyZmFjZVByb3RvdHlwZU9i
amVjdC50b1N0cmluZy5hcHBseSh7fSwgW10pOwogICAgICAgICB9LCAiY2FsbGluZyBzdHJpbmdp
ZmllciB3aXRoIHRoaXMgPSB7fSBkaWRuJ3QgdGhyb3cgVHlwZUVycm9yIik7CiAgICAgfS5iaW5k
KHRoaXMpLCB0aGlzLm5hbWUgKyAiIGludGVyZmFjZTogc3RyaW5naWZpZXIiKTsKIH07CiAKLS8v
QH0KIElkbEludGVyZmFjZS5wcm90b3R5cGUudGVzdF9tZW1iZXJzID0gZnVuY3Rpb24oKQotLy9A
ewogewogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5tZW1iZXJzLmxlbmd0aDsgaSsrKQog
ICAgIHsKICAgICAgICAgdmFyIG1lbWJlciA9IHRoaXMubWVtYmVyc1tpXTsKLSAgICAgICAgc3dp
dGNoIChtZW1iZXIudHlwZSkgewotICAgICAgICBjYXNlICJpdGVyYWJsZSI6Ci0gICAgICAgICAg
ICB0aGlzLmFkZF9pdGVyYWJsZV9tZW1iZXJzKG1lbWJlcik7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgLy8gVE9ETzogYWRkIHNldGxpa2UgYW5kIG1hcGxpa2UgaGFuZGxpbmcuCi0gICAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKG1lbWJlci51bnRl
c3RlZCkgeworICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICB9CiAKLSAgICBm
b3IgKHZhciBpID0gMDsgaSA8IHRoaXMubWVtYmVycy5sZW5ndGg7IGkrKykKLSAgICB7Ci0gICAg
ICAgIHZhciBtZW1iZXIgPSB0aGlzLm1lbWJlcnNbaV07Ci0gICAgICAgIGlmIChtZW1iZXIudW50
ZXN0ZWQpIHsKKyAgICAgICAgaWYgKCFleHBvc2VkX2luKGV4cG9zdXJlX3NldChtZW1iZXIsIHRo
aXMuZXhwb3N1cmVTZXQpKSkgeworICAgICAgICAgICAgc3Vic2V0VGVzdEJ5S2V5KHRoaXMubmFt
ZSwgdGVzdCwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgLy8gSXQncyBub3QgZXhwb3Nl
ZCwgc28gd2Ugc2hvdWxkbid0IGZpbmQgaXQgYW55d2hlcmUuCisgICAgICAgICAgICAgICAgYXNz
ZXJ0X2ZhbHNlKG1lbWJlci5uYW1lIGluIHRoaXMuZ2V0X2ludGVyZmFjZV9vYmplY3QoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBpbnRlcmZhY2Ugb2JqZWN0IG11c3Qgbm90
IGhhdmUgYSBwcm9wZXJ0eSAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0
X3ZhbHVlKG1lbWJlci5uYW1lKSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKG1lbWJl
ci5uYW1lIGluIHRoaXMuZ2V0X2ludGVyZmFjZV9vYmplY3QoKS5wcm90b3R5cGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJUaGUgcHJvdG90eXBlIG9iamVjdCBtdXN0IG5vdCBoYXZl
IGEgcHJvcGVydHkgIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdF92YWx1
ZShtZW1iZXIubmFtZSkpOworICAgICAgICAgICAgfS5iaW5kKHRoaXMpLCB0aGlzLm5hbWUgKyAi
IGludGVyZmFjZTogbWVtYmVyICIgKyBtZW1iZXIubmFtZSk7CiAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgfQogCkBAIC0xNDgzLDcgKzI1NzUsNyBAQCBJZGxJbnRlcmZhY2UucHJvdG90
eXBlLnRlc3RfbWVtYmVycyA9IGZ1bmN0aW9uKCkKICAgICAgICAgICAgIHsKICAgICAgICAgICAg
ICAgICB0aGlzLnRlc3RfbWVtYmVyX2F0dHJpYnV0ZShtZW1iZXIpOwogICAgICAgICAgICAgfQot
ICAgICAgICAgICAgaWYgKG1lbWJlci5zdHJpbmdpZmllcikgeworICAgICAgICAgICAgaWYgKG1l
bWJlci5zcGVjaWFsID09PSAic3RyaW5naWZpZXIiKSB7CiAgICAgICAgICAgICAgICAgdGhpcy50
ZXN0X21lbWJlcl9zdHJpbmdpZmllcihtZW1iZXIpOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgYnJlYWs7CkBAIC0xNDk4LDEzICsyNTkwLDE3IEBAIElkbEludGVyZmFjZS5wcm90b3R5cGUu
dGVzdF9tZW1iZXJzID0gZnVuY3Rpb24oKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAg
ICAgICAgICAgdGhpcy50ZXN0X21lbWJlcl9vcGVyYXRpb24obWVtYmVyKTsKICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKG1lbWJlci5zdHJpbmdpZmllcikgeworICAg
ICAgICAgICAgfSBlbHNlIGlmIChtZW1iZXIuc3BlY2lhbCA9PT0gInN0cmluZ2lmaWVyIikgewog
ICAgICAgICAgICAgICAgIHRoaXMudGVzdF9tZW1iZXJfc3RyaW5naWZpZXIobWVtYmVyKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgIml0ZXJhYmxl
IjoKLSAgICAgICAgICAgIHRoaXMudGVzdF9tZW1iZXJfaXRlcmFibGUobWVtYmVyKTsKKyAgICAg
ICAgICAgIGlmIChtZW1iZXIuYXN5bmMpIHsKKyAgICAgICAgICAgICAgICB0aGlzLnRlc3RfbWVt
YmVyX2FzeW5jX2l0ZXJhYmxlKG1lbWJlcik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIHRoaXMudGVzdF9tZW1iZXJfaXRlcmFibGUobWVtYmVyKTsKKyAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgLy8g
VE9ETzogY2hlY2sgbW9yZSBtZW1iZXIgdHlwZXMuCkBAIC0xNTEzLDkgKzI2MDksNyBAQCBJZGxJ
bnRlcmZhY2UucHJvdG90eXBlLnRlc3RfbWVtYmVycyA9IGZ1bmN0aW9uKCkKICAgICB9CiB9Owog
Ci0vL0B9CiBJZGxJbnRlcmZhY2UucHJvdG90eXBlLnRlc3Rfb2JqZWN0ID0gZnVuY3Rpb24oZGVz
YykKLS8vQHsKIHsKICAgICB2YXIgb2JqLCBleGNlcHRpb24gPSBudWxsOwogICAgIHRyeQpAQCAt
MTUyNywxOCArMjYyMSwyNSBAQCBJZGxJbnRlcmZhY2UucHJvdG90eXBlLnRlc3Rfb2JqZWN0ID0g
ZnVuY3Rpb24oZGVzYykKICAgICAgICAgZXhjZXB0aW9uID0gZTsKICAgICB9CiAKLSAgICB2YXIg
ZXhwZWN0ZWRfdHlwZW9mID0KLSAgICAgICAgdGhpcy5tZW1iZXJzLnNvbWUoZnVuY3Rpb24obWVt
YmVyKSB7IHJldHVybiBtZW1iZXIubGVnYWN5Y2FsbGVyOyB9KQotICAgICAgICA/ICJmdW5jdGlv
biIKLSAgICAgICAgOiAib2JqZWN0IjsKKyAgICB2YXIgZXhwZWN0ZWRfdHlwZW9mOworICAgIGlm
ICh0aGlzLm5hbWUgPT0gIkhUTUxBbGxDb2xsZWN0aW9uIikKKyAgICB7CisgICAgICAgIC8vIFJl
c3VsdCBvZiBbW0lzSFRNTEREQV1dIHNsb3QKKyAgICAgICAgZXhwZWN0ZWRfdHlwZW9mID0gInVu
ZGVmaW5lZCI7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIGV4cGVjdGVkX3R5cGVv
ZiA9ICJvYmplY3QiOworICAgIH0KIAogICAgIHRoaXMudGVzdF9wcmltYXJ5X2ludGVyZmFjZV9v
ZihkZXNjLCBvYmosIGV4Y2VwdGlvbiwgZXhwZWN0ZWRfdHlwZW9mKTsKKwogICAgIHZhciBjdXJy
ZW50X2ludGVyZmFjZSA9IHRoaXM7CiAgICAgd2hpbGUgKGN1cnJlbnRfaW50ZXJmYWNlKQogICAg
IHsKICAgICAgICAgaWYgKCEoY3VycmVudF9pbnRlcmZhY2UubmFtZSBpbiB0aGlzLmFycmF5Lm1l
bWJlcnMpKQogICAgICAgICB7Ci0gICAgICAgICAgICB0aHJvdyAiSW50ZXJmYWNlICIgKyBjdXJy
ZW50X2ludGVyZmFjZS5uYW1lICsgIiBub3QgZm91bmQgKGluaGVyaXRlZCBieSAiICsgdGhpcy5u
YW1lICsgIikiOworICAgICAgICAgICAgdGhyb3cgbmV3IElkbEhhcm5lc3NFcnJvcigiSW50ZXJm
YWNlICIgKyBjdXJyZW50X2ludGVyZmFjZS5uYW1lICsgIiBub3QgZm91bmQgKGluaGVyaXRlZCBi
eSAiICsgdGhpcy5uYW1lICsgIikiKTsKICAgICAgICAgfQogICAgICAgICBpZiAoY3VycmVudF9p
bnRlcmZhY2UucHJldmVudF9tdWx0aXBsZV90ZXN0aW5nICYmIGN1cnJlbnRfaW50ZXJmYWNlLmFs
cmVhZHlfdGVzdGVkKQogICAgICAgICB7CkBAIC0xNTQ5LDI0ICsyNjUwLDQwIEBAIElkbEludGVy
ZmFjZS5wcm90b3R5cGUudGVzdF9vYmplY3QgPSBmdW5jdGlvbihkZXNjKQogICAgIH0KIH07CiAK
LS8vQH0KIElkbEludGVyZmFjZS5wcm90b3R5cGUudGVzdF9wcmltYXJ5X2ludGVyZmFjZV9vZiA9
IGZ1bmN0aW9uKGRlc2MsIG9iaiwgZXhjZXB0aW9uLCBleHBlY3RlZF90eXBlb2YpCi0vL0B7CiB7
CisgICAgLy8gT25seSB0aGUgb2JqZWN0IGl0c2VsZiwgbm90IGl0cyBtZW1iZXJzLCBhcmUgdGVz
dGVkIGhlcmUsIHNvIGlmIHRoZQorICAgIC8vIGludGVyZmFjZSBpcyB1bnRlc3RlZCwgdGhlcmUg
aXMgbm90aGluZyB0byBkby4KKyAgICBpZiAodGhpcy51bnRlc3RlZCkKKyAgICB7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICAvLyAiVGhlIGludGVybmFsIFtbU2V0UHJvdG90eXBlT2Zd
XSBtZXRob2Qgb2YgZXZlcnkgcGxhdGZvcm0gb2JqZWN0IHRoYXQKKyAgICAvLyBpbXBsZW1lbnRz
IGFuIGludGVyZmFjZSB3aXRoIHRoZSBbR2xvYmFsXSBleHRlbmRlZAorICAgIC8vIGF0dHJpYnV0
ZSBtdXN0IGV4ZWN1dGUgdGhlIHNhbWUgYWxnb3JpdGhtIGFzIGlzIGRlZmluZWQgZm9yIHRoZQor
ICAgIC8vIFtbU2V0UHJvdG90eXBlT2ZdXSBpbnRlcm5hbCBtZXRob2Qgb2YgYW4gaW1tdXRhYmxl
IHByb3RvdHlwZSBleG90aWMKKyAgICAvLyBvYmplY3QuIgorICAgIC8vIGh0dHBzOi8vaGV5Y2Ft
LmdpdGh1Yi5pby93ZWJpZGwvI3BsYXRmb3JtLW9iamVjdC1zZXRwcm90b3R5cGVvZgorICAgIGlm
ICh0aGlzLmlzX2dsb2JhbCgpKQorICAgIHsKKyAgICAgICAgdGhpcy50ZXN0X2ltbXV0YWJsZV9w
cm90b3R5cGUoImdsb2JhbCBwbGF0Zm9ybSBvYmplY3QiLCBvYmopOworICAgIH0KKworCiAgICAg
Ly8gV2UgY2FuJ3QgZWFzaWx5IHRlc3QgdGhhdCBpdHMgcHJvdG90eXBlIGlzIGNvcnJlY3QgaWYg
dGhlcmUncyBubwogICAgIC8vIGludGVyZmFjZSBvYmplY3QsIG9yIHRoZSBvYmplY3QgaXMgZnJv
bSBhIGRpZmZlcmVudCBnbG9iYWwgZW52aXJvbm1lbnQKICAgICAvLyAobm90IGluc3RhbmNlb2Yg
T2JqZWN0KS4gIFRPRE86IHRlc3QgaW4gdGhpcyBjYXNlIHRoYXQgaXRzIHByb3RvdHlwZSBhdAog
ICAgIC8vIGxlYXN0IGxvb2tzIGNvcnJlY3QsIGV2ZW4gaWYgd2UgY2FuJ3QgdGVzdCB0aGF0IGl0
J3MgYWN0dWFsbHkgY29ycmVjdC4KLSAgICBpZiAoIXRoaXMuaGFzX2V4dGVuZGVkX2F0dHJpYnV0
ZSgiTm9JbnRlcmZhY2VPYmplY3QiKQorICAgIGlmICh0aGlzLnNob3VsZF9oYXZlX2ludGVyZmFj
ZV9vYmplY3QoKQogICAgICYmICh0eXBlb2Ygb2JqICE9IGV4cGVjdGVkX3R5cGVvZiB8fCBvYmog
aW5zdGFuY2VvZiBPYmplY3QpKQogICAgIHsKLSAgICAgICAgdGVzdChmdW5jdGlvbigpCisgICAg
ICAgIHN1YnNldFRlc3RCeUtleSh0aGlzLm5hbWUsIHRlc3QsIGZ1bmN0aW9uKCkKICAgICAgICAg
ewogICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhleGNlcHRpb24sIG51bGwsICJVbmV4cGVjdGVk
IGV4Y2VwdGlvbiB3aGVuIGV2YWx1YXRpbmcgb2JqZWN0Iik7CiAgICAgICAgICAgICBhc3NlcnRf
ZXF1YWxzKHR5cGVvZiBvYmosIGV4cGVjdGVkX3R5cGVvZiwgIndyb25nIHR5cGVvZiBvYmplY3Qi
KTsKLSAgICAgICAgICAgIGFzc2VydF9vd25fcHJvcGVydHkoc2VsZiwgdGhpcy5uYW1lLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2VsZiBkb2VzIG5vdCBoYXZlIG93biBwcm9w
ZXJ0eSAiICsgZm9ybWF0X3ZhbHVlKHRoaXMubmFtZSkpOwotICAgICAgICAgICAgYXNzZXJ0X293
bl9wcm9wZXJ0eShzZWxmW3RoaXMubmFtZV0sICJwcm90b3R5cGUiLAorICAgICAgICAgICAgdGhp
cy5hc3NlcnRfaW50ZXJmYWNlX29iamVjdF9leGlzdHMoKTsKKyAgICAgICAgICAgIGFzc2VydF9v
d25fcHJvcGVydHkodGhpcy5nZXRfaW50ZXJmYWNlX29iamVjdCgpLCAicHJvdG90eXBlIiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludGVyZmFjZSAiJyArIHRoaXMubmFtZSAr
ICciIGRvZXMgbm90IGhhdmUgb3duIHByb3BlcnR5ICJwcm90b3R5cGUiJyk7CiAKICAgICAgICAg
ICAgIC8vICJUaGUgdmFsdWUgb2YgdGhlIGludGVybmFsIFtbUHJvdG90eXBlXV0gcHJvcGVydHkg
b2YgdGhlCkBAIC0xNTc0LDM5ICsyNjkxLDUwIEBAIElkbEludGVyZmFjZS5wcm90b3R5cGUudGVz
dF9wcmltYXJ5X2ludGVyZmFjZV9vZiA9IGZ1bmN0aW9uKGRlc2MsIG9iaiwgZXhjZXB0aW9uCiAg
ICAgICAgICAgICAvLyBpbnRlcmZhY2UgZnJvbSB0aGUgcGxhdGZvcm0gb2JqZWN04oCZcyBhc3Nv
Y2lhdGVkIGdsb2JhbAogICAgICAgICAgICAgLy8gZW52aXJvbm1lbnQuIgogICAgICAgICAgICAg
YXNzZXJ0X2VxdWFscyhPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2VsZlt0aGlzLm5hbWVdLnByb3RvdHlwZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGhpcy5nZXRfaW50ZXJmYWNlX29iamVjdCgpLnByb3RvdHlwZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGVzYyArICIncyBwcm90b3R5cGUgaXMgbm90ICIgKyB0aGlzLm5h
bWUgKyAiLnByb3RvdHlwZSIpOwogICAgICAgICB9LmJpbmQodGhpcyksIHRoaXMubmFtZSArICIg
bXVzdCBiZSBwcmltYXJ5IGludGVyZmFjZSBvZiAiICsgZGVzYyk7CiAgICAgfQogCiAgICAgLy8g
IlRoZSBjbGFzcyBzdHJpbmcgb2YgYSBwbGF0Zm9ybSBvYmplY3QgdGhhdCBpbXBsZW1lbnRzIG9u
ZSBvciBtb3JlCi0gICAgLy8gaW50ZXJmYWNlcyBtdXN0IGJlIHRoZSBpZGVudGlmaWVyIG9mIHRo
ZSBwcmltYXJ5IGludGVyZmFjZSBvZiB0aGUKKyAgICAvLyBpbnRlcmZhY2VzIG11c3QgYmUgdGhl
IHF1YWxpZmllZCBuYW1lIG9mIHRoZSBwcmltYXJ5IGludGVyZmFjZSBvZiB0aGUKICAgICAvLyBw
bGF0Zm9ybSBvYmplY3QuIgotICAgIHRlc3QoZnVuY3Rpb24oKQorICAgIHN1YnNldFRlc3RCeUtl
eSh0aGlzLm5hbWUsIHRlc3QsIGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIGFzc2VydF9lcXVh
bHMoZXhjZXB0aW9uLCBudWxsLCAiVW5leHBlY3RlZCBleGNlcHRpb24gd2hlbiBldmFsdWF0aW5n
IG9iamVjdCIpOwogICAgICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBvYmosIGV4cGVjdGVkX3R5
cGVvZiwgIndyb25nIHR5cGVvZiBvYmplY3QiKTsKLSAgICAgICAgYXNzZXJ0X2NsYXNzX3N0cmlu
ZyhvYmosIHRoaXMubmFtZSwgImNsYXNzIHN0cmluZyBvZiAiICsgZGVzYyk7CisgICAgICAgIGFz
c2VydF9jbGFzc19zdHJpbmcob2JqLCB0aGlzLmdldF9xdWFsaWZpZWRfbmFtZSgpLCAiY2xhc3Mg
c3RyaW5nIG9mICIgKyBkZXNjKTsKICAgICAgICAgaWYgKCF0aGlzLmhhc19zdHJpbmdpZmllcigp
KQogICAgICAgICB7Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKFN0cmluZyhvYmopLCAiW29i
amVjdCAiICsgdGhpcy5uYW1lICsgIl0iLCAiU3RyaW5nKCIgKyBkZXNjICsgIikiKTsKKyAgICAg
ICAgICAgIGFzc2VydF9lcXVhbHMoU3RyaW5nKG9iaiksICJbb2JqZWN0ICIgKyB0aGlzLmdldF9x
dWFsaWZpZWRfbmFtZSgpICsgIl0iLCAiU3RyaW5nKCIgKyBkZXNjICsgIikiKTsKICAgICAgICAg
fQogICAgIH0uYmluZCh0aGlzKSwgIlN0cmluZ2lmaWNhdGlvbiBvZiAiICsgZGVzYyk7CiB9Owog
Ci0vL0B9CiBJZGxJbnRlcmZhY2UucHJvdG90eXBlLnRlc3RfaW50ZXJmYWNlX29mID0gZnVuY3Rp
b24oZGVzYywgb2JqLCBleGNlcHRpb24sIGV4cGVjdGVkX3R5cGVvZikKLS8vQHsKIHsKICAgICAv
LyBUT0RPOiBJbmRleGVkIGFuZCBuYW1lZCBwcm9wZXJ0aWVzLCBtb3JlIGNoZWNrcyBvbiBpbnRl
cmZhY2UgbWVtYmVycwogICAgIHRoaXMuYWxyZWFkeV90ZXN0ZWQgPSB0cnVlOworICAgIGlmICgh
c2hvdWxkUnVuU3ViVGVzdCh0aGlzLm5hbWUpKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAK
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubWVtYmVycy5sZW5ndGg7IGkrKykKICAgICB7
CiAgICAgICAgIHZhciBtZW1iZXIgPSB0aGlzLm1lbWJlcnNbaV07CisgICAgICAgIGlmIChtZW1i
ZXIudW50ZXN0ZWQpIHsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAg
IGlmICghZXhwb3NlZF9pbihleHBvc3VyZV9zZXQobWVtYmVyLCB0aGlzLmV4cG9zdXJlU2V0KSkp
IHsKKyAgICAgICAgICAgIHN1YnNldFRlc3RCeUtleSh0aGlzLm5hbWUsIHRlc3QsIGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZXhjZXB0aW9uLCBudWxsLCAiVW5l
eHBlY3RlZCBleGNlcHRpb24gd2hlbiBldmFsdWF0aW5nIG9iamVjdCIpOworICAgICAgICAgICAg
ICAgIGFzc2VydF9mYWxzZShtZW1iZXIubmFtZSBpbiBvYmopOworICAgICAgICAgICAgfS5iaW5k
KHRoaXMpLCB0aGlzLm5hbWUgKyAiIGludGVyZmFjZTogIiArIGRlc2MgKyAnIG11c3Qgbm90IGhh
dmUgcHJvcGVydHkgIicgKyBtZW1iZXIubmFtZSArICciJyk7CisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgfQogICAgICAgICBpZiAobWVtYmVyLnR5cGUgPT0gImF0dHJpYnV0ZSIgJiYg
bWVtYmVyLmlzVW5mb3JnZWFibGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHZhciBhX3Rlc3Qg
PSBhc3luY190ZXN0KHRoaXMubmFtZSArICIgaW50ZXJmYWNlOiAiICsgZGVzYyArICcgbXVzdCBo
YXZlIG93biBwcm9wZXJ0eSAiJyArIG1lbWJlci5uYW1lICsgJyInKTsKKyAgICAgICAgICAgIHZh
ciBhX3Rlc3QgPSBzdWJzZXRUZXN0QnlLZXkodGhpcy5uYW1lLCBhc3luY190ZXN0LCB0aGlzLm5h
bWUgKyAiIGludGVyZmFjZTogIiArIGRlc2MgKyAnIG11c3QgaGF2ZSBvd24gcHJvcGVydHkgIicg
KyBtZW1iZXIubmFtZSArICciJyk7CiAgICAgICAgICAgICBhX3Rlc3Quc3RlcChmdW5jdGlvbigp
IHsKICAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGV4Y2VwdGlvbiwgbnVsbCwgIlVuZXhw
ZWN0ZWQgZXhjZXB0aW9uIHdoZW4gZXZhbHVhdGluZyBvYmplY3QiKTsKICAgICAgICAgICAgICAg
ICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBvYmosIGV4cGVjdGVkX3R5cGVvZiwgIndyb25nIHR5cGVv
ZiBvYmplY3QiKTsKQEAgLTE2MTgsNyArMjc0Niw3IEBAIElkbEludGVyZmFjZS5wcm90b3R5cGUu
dGVzdF9pbnRlcmZhY2Vfb2YgPSBmdW5jdGlvbihkZXNjLCBvYmosIGV4Y2VwdGlvbiwgZXhwZWN0
CiAgICAgICAgICAgICAgICAgIG1lbWJlci5uYW1lICYmCiAgICAgICAgICAgICAgICAgIG1lbWJl
ci5pc1VuZm9yZ2VhYmxlKQogICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgYV90ZXN0ID0gYXN5
bmNfdGVzdCh0aGlzLm5hbWUgKyAiIGludGVyZmFjZTogIiArIGRlc2MgKyAnIG11c3QgaGF2ZSBv
d24gcHJvcGVydHkgIicgKyBtZW1iZXIubmFtZSArICciJyk7CisgICAgICAgICAgICB2YXIgYV90
ZXN0ID0gc3Vic2V0VGVzdEJ5S2V5KHRoaXMubmFtZSwgYXN5bmNfdGVzdCwgdGhpcy5uYW1lICsg
IiBpbnRlcmZhY2U6ICIgKyBkZXNjICsgJyBtdXN0IGhhdmUgb3duIHByb3BlcnR5ICInICsgbWVt
YmVyLm5hbWUgKyAnIicpOwogICAgICAgICAgICAgYV90ZXN0LnN0ZXAoZnVuY3Rpb24oKQogICAg
ICAgICAgICAgewogICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZXhjZXB0aW9uLCBudWxs
LCAiVW5leHBlY3RlZCBleGNlcHRpb24gd2hlbiBldmFsdWF0aW5nIG9iamVjdCIpOwpAQCAtMTYz
MywxMSArMjc2MSwxMSBAQCBJZGxJbnRlcmZhY2UucHJvdG90eXBlLnRlc3RfaW50ZXJmYWNlX29m
ID0gZnVuY3Rpb24oZGVzYywgb2JqLCBleGNlcHRpb24sIGV4cGVjdAogICAgICAgICB8fCBtZW1i
ZXIudHlwZSA9PSAib3BlcmF0aW9uIikKICAgICAgICAgJiYgbWVtYmVyLm5hbWUpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIHRlc3QoZnVuY3Rpb24oKQorICAgICAgICAgICAgc3Vic2V0VGVzdEJ5
S2V5KHRoaXMubmFtZSwgdGVzdCwgZnVuY3Rpb24oKQogICAgICAgICAgICAgewogICAgICAgICAg
ICAgICAgIGFzc2VydF9lcXVhbHMoZXhjZXB0aW9uLCBudWxsLCAiVW5leHBlY3RlZCBleGNlcHRp
b24gd2hlbiBldmFsdWF0aW5nIG9iamVjdCIpOwogICAgICAgICAgICAgICAgIGFzc2VydF9lcXVh
bHModHlwZW9mIG9iaiwgZXhwZWN0ZWRfdHlwZW9mLCAid3JvbmcgdHlwZW9mIG9iamVjdCIpOwot
ICAgICAgICAgICAgICAgIGlmICghbWVtYmVyWyJzdGF0aWMiXSkgeworICAgICAgICAgICAgICAg
IGlmIChtZW1iZXIuc3BlY2lhbCAhPT0gInN0YXRpYyIpIHsKICAgICAgICAgICAgICAgICAgICAg
aWYgKCF0aGlzLmlzX2dsb2JhbCgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnRf
aW5oZXJpdHMob2JqLCBtZW1iZXIubmFtZSk7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7
CkBAIC0xNjY0LDcgKzI3OTIsMTUgQEAgSWRsSW50ZXJmYWNlLnByb3RvdHlwZS50ZXN0X2ludGVy
ZmFjZV9vZiA9IGZ1bmN0aW9uKGRlc2MsIG9iaiwgZXhjZXB0aW9uLCBleHBlY3QKICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhyb3duKQog
ICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRo
aXMuYXJyYXkuYXNzZXJ0X3R5cGVfaXMocHJvcGVydHksIG1lbWJlci5pZGxUeXBlKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5uYW1lID09ICJEb2N1bWVudCIgJiYgbWVt
YmVyLm5hbWUgPT0gImFsbCIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXN1bHQgb2YgW1tJc0hUTUxEREFdXSBzbG90
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIHBy
b3BlcnR5LCAidW5kZWZpbmVkIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXJyYXkuYXNzZXJ0X3R5
cGVfaXMocHJvcGVydHksIG1lbWJlci5pZGxUeXBlKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgaWYgKG1lbWJlci50eXBlID09ICJvcGVyYXRpb24iKQpAQCAt
MTY3MiwzMCArMjgwOCwzNCBAQCBJZGxJbnRlcmZhY2UucHJvdG90eXBlLnRlc3RfaW50ZXJmYWNl
X29mID0gZnVuY3Rpb24oZGVzYywgb2JqLCBleGNlcHRpb24sIGV4cGVjdAogICAgICAgICAgICAg
ICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2Ygb2JqW21lbWJlci5uYW1lXSwgImZ1bmN0
aW9uIik7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB9LmJpbmQodGhpcyksIHRoaXMubmFtZSArICIgaW50ZXJmYWNlOiAiICsgZGVzYyArICcg
bXVzdCBpbmhlcml0IHByb3BlcnR5ICInICsgbWVtYmVyLm5hbWUgKyAnIiB3aXRoIHRoZSBwcm9w
ZXIgdHlwZSAoJyArIGkgKyAnKScpOworICAgICAgICAgICAgfS5iaW5kKHRoaXMpLCB0aGlzLm5h
bWUgKyAiIGludGVyZmFjZTogIiArIGRlc2MgKyAnIG11c3QgaW5oZXJpdCBwcm9wZXJ0eSAiJyAr
IG1lbWJlciArICciIHdpdGggdGhlIHByb3BlciB0eXBlJyk7CiAgICAgICAgIH0KICAgICAgICAg
Ly8gVE9ETzogVGhpcyBpcyB3cm9uZyBpZiB0aGVyZSBhcmUgbXVsdGlwbGUgb3BlcmF0aW9ucyB3
aXRoIHRoZSBzYW1lCiAgICAgICAgIC8vIGlkZW50aWZpZXIuCiAgICAgICAgIC8vIFRPRE86IFRl
c3QgcGFzc2luZyBhcmd1bWVudHMgb2YgdGhlIHdyb25nIHR5cGUuCiAgICAgICAgIGlmIChtZW1i
ZXIudHlwZSA9PSAib3BlcmF0aW9uIiAmJiBtZW1iZXIubmFtZSAmJiBtZW1iZXIuYXJndW1lbnRz
Lmxlbmd0aCkKICAgICAgICAgewotICAgICAgICAgICAgdmFyIGFfdGVzdCA9IGFzeW5jX3Rlc3Qo
IHRoaXMubmFtZSArICIgaW50ZXJmYWNlOiBjYWxsaW5nICIgKyBtZW1iZXIubmFtZSArCi0gICAg
ICAgICAgICAiKCIgKyBtZW1iZXIuYXJndW1lbnRzLm1hcChmdW5jdGlvbihtKSB7IHJldHVybiBt
LmlkbFR5cGUuaWRsVHlwZTsgfSkgKwotICAgICAgICAgICAgIikgb24gIiArIGRlc2MgKyAiIHdp
dGggdG9vIGZldyBhcmd1bWVudHMgbXVzdCB0aHJvdyBUeXBlRXJyb3IiKTsKKyAgICAgICAgICAg
IHZhciBkZXNjcmlwdGlvbiA9CisgICAgICAgICAgICAgICAgdGhpcy5uYW1lICsgIiBpbnRlcmZh
Y2U6IGNhbGxpbmcgIiArIG1lbWJlciArICIgb24gIiArIGRlc2MgKworICAgICAgICAgICAgICAg
ICIgd2l0aCB0b28gZmV3IGFyZ3VtZW50cyBtdXN0IHRocm93IFR5cGVFcnJvciI7CisgICAgICAg
ICAgICB2YXIgYV90ZXN0ID0gc3Vic2V0VGVzdEJ5S2V5KHRoaXMubmFtZSwgYXN5bmNfdGVzdCwg
ZGVzY3JpcHRpb24pOwogICAgICAgICAgICAgYV90ZXN0LnN0ZXAoZnVuY3Rpb24oKQogICAgICAg
ICAgICAgewogICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZXhjZXB0aW9uLCBudWxsLCAi
VW5leHBlY3RlZCBleGNlcHRpb24gd2hlbiBldmFsdWF0aW5nIG9iamVjdCIpOwogICAgICAgICAg
ICAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIG9iaiwgZXhwZWN0ZWRfdHlwZW9mLCAid3Jvbmcg
dHlwZW9mIG9iamVjdCIpOwotICAgICAgICAgICAgICAgIGlmICghbWVtYmVyWyJzdGF0aWMiXSkg
eworICAgICAgICAgICAgICAgIHZhciBmbjsKKyAgICAgICAgICAgICAgICBpZiAobWVtYmVyLnNw
ZWNpYWwgIT09ICJzdGF0aWMiKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5pc19n
bG9iYWwoKSAmJiAhbWVtYmVyLmlzVW5mb3JnZWFibGUpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGFzc2VydF9pbmhlcml0cyhvYmosIG1lbWJlci5uYW1lKTsKICAgICAgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydF9vd25fcHJvcGVydHko
b2JqLCBtZW1iZXIubmFtZSk7CiAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgZm4gPSBvYmpbbWVtYmVyLm5hbWVdOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBhc3Nl
cnRfZmFsc2UobWVtYmVyLm5hbWUgaW4gb2JqKTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0
X293bl9wcm9wZXJ0eShvYmouY29uc3RydWN0b3IsIG1lbWJlci5uYW1lLCAiaW50ZXJmYWNlIG9i
amVjdCBtdXN0IGhhdmUgc3RhdGljIG9wZXJhdGlvbiBhcyBvd24gcHJvcGVydHkiKTsKKyAgICAg
ICAgICAgICAgICAgICAgZm4gPSBvYmouY29uc3RydWN0b3JbbWVtYmVyLm5hbWVdOwogICAgICAg
ICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIHZhciBtaW5MZW5ndGggPSBtaW5PdmVybG9h
ZExlbmd0aCh0aGlzLm1lbWJlcnMuZmlsdGVyKGZ1bmN0aW9uKG0pIHsKQEAgLTE3MDQsNyArMjg0
NCw3IEBAIElkbEludGVyZmFjZS5wcm90b3R5cGUudGVzdF9pbnRlcmZhY2Vfb2YgPSBmdW5jdGlv
bihkZXNjLCBvYmosIGV4Y2VwdGlvbiwgZXhwZWN0CiAgICAgICAgICAgICAgICAgdmFyIGFyZ3Mg
PSBbXTsKICAgICAgICAgICAgICAgICB2YXIgY2IgPSBhd2FpdE5DYWxsYmFja3MobWluTGVuZ3Ro
LCBhX3Rlc3QuZG9uZS5iaW5kKGFfdGVzdCkpOwogICAgICAgICAgICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgbWluTGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgdGhyb3dPclJl
amVjdChhX3Rlc3QsIG1lbWJlciwgb2JqW21lbWJlci5uYW1lXSwgb2JqLCBhcmdzLCAgIkNhbGxl
ZCB3aXRoICIgKyBpICsgIiBhcmd1bWVudHMiLCBjYik7CisgICAgICAgICAgICAgICAgICAgIHRo
cm93T3JSZWplY3QoYV90ZXN0LCBtZW1iZXIsIGZuLCBvYmosIGFyZ3MsICJDYWxsZWQgd2l0aCAi
ICsgaSArICIgYXJndW1lbnRzIiwgY2IpOwogCiAgICAgICAgICAgICAgICAgICAgIGFyZ3MucHVz
aChjcmVhdGVfc3VpdGFibGVfb2JqZWN0KG1lbWJlci5hcmd1bWVudHNbaV0uaWRsVHlwZSkpOwog
ICAgICAgICAgICAgICAgIH0KQEAgLTE3MTMsMTQgKzI4NTMsMjEgQEAgSWRsSW50ZXJmYWNlLnBy
b3RvdHlwZS50ZXN0X2ludGVyZmFjZV9vZiA9IGZ1bmN0aW9uKGRlc2MsIG9iaiwgZXhjZXB0aW9u
LCBleHBlY3QKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9LmJpbmQodGhpcykpOwog
ICAgICAgICB9CisKKyAgICAgICAgaWYgKG1lbWJlci5pc190b19qc29uX3JlZ3VsYXJfb3BlcmF0
aW9uKCkpIHsKKyAgICAgICAgICAgIHRoaXMudGVzdF90b19qc29uX29wZXJhdGlvbihkZXNjLCBv
YmosIG1lbWJlcik7CisgICAgICAgIH0KICAgICB9CiB9OwogCi0vL0B9CiBJZGxJbnRlcmZhY2Uu
cHJvdG90eXBlLmhhc19zdHJpbmdpZmllciA9IGZ1bmN0aW9uKCkKLS8vQHsKIHsKLSAgICBpZiAo
dGhpcy5tZW1iZXJzLnNvbWUoZnVuY3Rpb24obWVtYmVyKSB7IHJldHVybiBtZW1iZXIuc3RyaW5n
aWZpZXI7IH0pKSB7CisgICAgaWYgKHRoaXMubmFtZSA9PT0gIkRPTUV4Y2VwdGlvbiIpIHsKKyAg
ICAgICAgLy8gdG9TdHJpbmcgaXMgaW5oZXJpdGVkIGZyb20gRXJyb3IsIHNvIGRvbid0IGFzc3Vt
ZSB3ZSBoYXZlIHRoZQorICAgICAgICAvLyBkZWZhdWx0IHN0cmluZ2lmZXIKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorICAgIGlmICh0aGlzLm1lbWJlcnMuc29tZShmdW5jdGlvbihtZW1i
ZXIpIHsgcmV0dXJuIG1lbWJlci5zcGVjaWFsID09PSAic3RyaW5naWZpZXIiOyB9KSkgewogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgaWYgKHRoaXMuYmFzZSAmJgpAQCAtMTczMCw5
ICsyODc3LDcgQEAgSWRsSW50ZXJmYWNlLnByb3RvdHlwZS5oYXNfc3RyaW5naWZpZXIgPSBmdW5j
dGlvbigpCiAgICAgcmV0dXJuIGZhbHNlOwogfTsKIAotLy9AfQogSWRsSW50ZXJmYWNlLnByb3Rv
dHlwZS5kb19pbnRlcmZhY2VfYXR0cmlidXRlX2Fzc2VydHMgPSBmdW5jdGlvbihvYmosIG1lbWJl
ciwgYV90ZXN0KQotLy9AewogewogICAgIC8vIFRoaXMgZnVuY3Rpb24gdGVzdHMgV2ViSURMIGFz
IG9mIDIwMTUtMDEtMjcuCiAgICAgLy8gVE9ETzogQ29uc2lkZXIgW0V4cG9zZWRdLgpAQCAtMTc0
MywyNyArMjg4OCwyMiBAQCBJZGxJbnRlcmZhY2UucHJvdG90eXBlLmRvX2ludGVyZmFjZV9hdHRy
aWJ1dGVfYXNzZXJ0cyA9IGZ1bmN0aW9uKG9iaiwgbWVtYmVyLCBhXwogCiAgICAgdmFyIHBlbmRp
bmdQcm9taXNlcyA9IFtdOwogCi0gICAgLy8gIkZvciBlYWNoIGV4cG9zZWQgYXR0cmlidXRlIG9m
IHRoZSBpbnRlcmZhY2UsIHdoZXRoZXIgaXQgd2FzIGRlY2xhcmVkIG9uCi0gICAgLy8gdGhlIGlu
dGVyZmFjZSBpdHNlbGYgb3Igb25lIG9mIGl0cyBjb25zZXF1ZW50aWFsIGludGVyZmFjZXMsIHRo
ZXJlIE1VU1QKLSAgICAvLyBleGlzdCBhIGNvcnJlc3BvbmRpbmcgcHJvcGVydHkuIFRoZSBjaGFy
YWN0ZXJpc3RpY3Mgb2YgdGhpcyBwcm9wZXJ0eSBhcmUKLSAgICAvLyBhcyBmb2xsb3dzOiIKLQog
ICAgIC8vICJUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgaXMgdGhlIGlkZW50aWZpZXIgb2YgdGhl
IGF0dHJpYnV0ZS4iCiAgICAgYXNzZXJ0X293bl9wcm9wZXJ0eShvYmosIG1lbWJlci5uYW1lKTsK
IAogICAgIC8vICJUaGUgcHJvcGVydHkgaGFzIGF0dHJpYnV0ZXMgeyBbW0dldF1dOiBHLCBbW1Nl
dF1dOiBTLCBbW0VudW1lcmFibGVdXToKICAgICAvLyB0cnVlLCBbW0NvbmZpZ3VyYWJsZV1dOiBj
b25maWd1cmFibGUgfSwgd2hlcmU6CiAgICAgLy8gImNvbmZpZ3VyYWJsZSBpcyBmYWxzZSBpZiB0
aGUgYXR0cmlidXRlIHdhcyBkZWNsYXJlZCB3aXRoIHRoZQotICAgIC8vIFtVbmZvcmdlYWJsZV0g
ZXh0ZW5kZWQgYXR0cmlidXRlIGFuZCB0cnVlIG90aGVyd2lzZTsKKyAgICAvLyBbTGVnYWN5VW5m
b3JnZWFibGVdIGV4dGVuZGVkIGF0dHJpYnV0ZSBhbmQgdHJ1ZSBvdGhlcndpc2U7CiAgICAgLy8g
IkcgaXMgdGhlIGF0dHJpYnV0ZSBnZXR0ZXIsIGRlZmluZWQgYmVsb3c7IGFuZAogICAgIC8vICJT
IGlzIHRoZSBhdHRyaWJ1dGUgc2V0dGVyLCBhbHNvIGRlZmluZWQgYmVsb3cuIgogICAgIHZhciBk
ZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIG1lbWJlci5uYW1lKTsK
LSAgICBhc3NlcnRfZmFsc2UoInZhbHVlIiBpbiBkZXNjLCAncHJvcGVydHkgZGVzY3JpcHRvciBo
YXMgdmFsdWUgYnV0IGlzIHN1cHBvc2VkIHRvIGJlIGFjY2Vzc29yJyk7Ci0gICAgYXNzZXJ0X2Zh
bHNlKCJ3cml0YWJsZSIgaW4gZGVzYywgJ3Byb3BlcnR5IGRlc2NyaXB0b3IgaGFzICJ3cml0YWJs
ZSIgZmllbGQgYnV0IGlzIHN1cHBvc2VkIHRvIGJlIGFjY2Vzc29yJyk7Ci0gICAgYXNzZXJ0X3Ry
dWUoZGVzYy5lbnVtZXJhYmxlLCAicHJvcGVydHkgaXMgbm90IGVudW1lcmFibGUiKTsKKyAgICBh
c3NlcnRfZmFsc2UoInZhbHVlIiBpbiBkZXNjLCAncHJvcGVydHkgZGVzY3JpcHRvciBzaG91bGQg
bm90IGhhdmUgYSAidmFsdWUiIGZpZWxkJyk7CisgICAgYXNzZXJ0X2ZhbHNlKCJ3cml0YWJsZSIg
aW4gZGVzYywgJ3Byb3BlcnR5IGRlc2NyaXB0b3Igc2hvdWxkIG5vdCBoYXZlIGEgIndyaXRhYmxl
IiBmaWVsZCcpOworICAgIGFzc2VydF90cnVlKGRlc2MuZW51bWVyYWJsZSwgInByb3BlcnR5IHNo
b3VsZCBiZSBlbnVtZXJhYmxlIik7CiAgICAgaWYgKG1lbWJlci5pc1VuZm9yZ2VhYmxlKQogICAg
IHsKLSAgICAgICAgYXNzZXJ0X2ZhbHNlKGRlc2MuY29uZmlndXJhYmxlLCAiW1VuZm9yZ2VhYmxl
XSBwcm9wZXJ0eSBtdXN0IG5vdCBiZSBjb25maWd1cmFibGUiKTsKKyAgICAgICAgYXNzZXJ0X2Zh
bHNlKGRlc2MuY29uZmlndXJhYmxlLCAiW0xlZ2FjeVVuZm9yZ2VhYmxlXSBwcm9wZXJ0eSBtdXN0
IG5vdCBiZSBjb25maWd1cmFibGUiKTsKICAgICB9CiAgICAgZWxzZQogICAgIHsKQEAgLTE3NzYs
MTkgKzI5MTYsMTkgQEAgSWRsSW50ZXJmYWNlLnByb3RvdHlwZS5kb19pbnRlcmZhY2VfYXR0cmli
dXRlX2Fzc2VydHMgPSBmdW5jdGlvbihvYmosIG1lbWJlciwgYV8KICAgICBhc3NlcnRfZXF1YWxz
KHR5cGVvZiBkZXNjLmdldCwgImZ1bmN0aW9uIiwgImdldHRlciBtdXN0IGJlIEZ1bmN0aW9uIik7
CiAKICAgICAvLyAiSWYgdGhlIGF0dHJpYnV0ZSBpcyBhIHJlZ3VsYXIgYXR0cmlidXRlLCB0aGVu
OiIKLSAgICBpZiAoIW1lbWJlclsic3RhdGljIl0pIHsKKyAgICBpZiAobWVtYmVyLnNwZWNpYWwg
IT09ICJzdGF0aWMiKSB7CiAgICAgICAgIC8vICJJZiBPIGlzIG5vdCBhIHBsYXRmb3JtIG9iamVj
dCB0aGF0IGltcGxlbWVudHMgSSwgdGhlbjoKLSAgICAgICAgLy8gIklmIHRoZSBhdHRyaWJ1dGUg
d2FzIHNwZWNpZmllZCB3aXRoIHRoZSBbTGVuaWVudFRoaXNdIGV4dGVuZGVkCisgICAgICAgIC8v
ICJJZiB0aGUgYXR0cmlidXRlIHdhcyBzcGVjaWZpZWQgd2l0aCB0aGUgW0xlZ2FjeUxlbmllbnRU
aGlzXSBleHRlbmRlZAogICAgICAgICAvLyBhdHRyaWJ1dGUsIHRoZW4gcmV0dXJuIHVuZGVmaW5l
ZC4KICAgICAgICAgLy8gIk90aGVyd2lzZSwgdGhyb3cgYSBUeXBlRXJyb3IuIgotICAgICAgICBp
ZiAoIW1lbWJlci5oYXNfZXh0ZW5kZWRfYXR0cmlidXRlKCJMZW5pZW50VGhpcyIpKSB7CisgICAg
ICAgIGlmICghbWVtYmVyLmhhc19leHRlbmRlZF9hdHRyaWJ1dGUoIkxlZ2FjeUxlbmllbnRUaGlz
IikpIHsKICAgICAgICAgICAgIGlmIChtZW1iZXIuaWRsVHlwZS5nZW5lcmljICE9PSAiUHJvbWlz
ZSIpIHsKLSAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhnbG9iYWxPZihkZXNj
LmdldCkuVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgZGVzYy5n
ZXQuY2FsbCh7fSk7CiAgICAgICAgICAgICAgICAgfS5iaW5kKHRoaXMpLCAiY2FsbGluZyBnZXR0
ZXIgb24gd3Jvbmcgb2JqZWN0IHR5cGUgbXVzdCB0aHJvdyBUeXBlRXJyb3IiKTsKICAgICAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgcGVuZGluZ1Byb21pc2VzLnB1c2goCi0gICAg
ICAgICAgICAgICAgICAgIHByb21pc2VfcmVqZWN0cyhhX3Rlc3QsIG5ldyBUeXBlRXJyb3IoKSwg
ZGVzYy5nZXQuY2FsbCh7fSksCisgICAgICAgICAgICAgICAgICAgIHByb21pc2VfcmVqZWN0c19q
cyhhX3Rlc3QsIFR5cGVFcnJvciwgZGVzYy5nZXQuY2FsbCh7fSksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiY2FsbGluZyBnZXR0ZXIgb24gd3Jvbmcgb2JqZWN0IHR5cGUg
bXVzdCByZWplY3QgdGhlIHJldHVybiBwcm9taXNlIHdpdGggVHlwZUVycm9yIikpOwogICAgICAg
ICAgICAgfQogICAgICAgICB9IGVsc2UgewpAQCAtMTgwMSwxMCArMjk0MSwxNiBAQCBJZGxJbnRl
cmZhY2UucHJvdG90eXBlLmRvX2ludGVyZmFjZV9hdHRyaWJ1dGVfYXNzZXJ0cyA9IGZ1bmN0aW9u
KG9iaiwgbWVtYmVyLCBhXwogICAgIC8vIHZhbHVlIDAuIgogICAgIGFzc2VydF9lcXVhbHMoZGVz
Yy5nZXQubGVuZ3RoLCAwLCAiZ2V0dGVyIGxlbmd0aCBtdXN0IGJlIDAiKTsKIAorICAgIC8vICJM
ZXQgbmFtZSBiZSB0aGUgc3RyaW5nICJnZXQgIiBwcmVwZW5kZWQgdG8gYXR0cmlidXRl4oCZcyBp
ZGVudGlmaWVyLiIKKyAgICAvLyAiUGVyZm9ybSAhIFNldEZ1bmN0aW9uTmFtZShGLCBuYW1lKS4i
CisgICAgYXNzZXJ0X2VxdWFscyhkZXNjLmdldC5uYW1lLCAiZ2V0ICIgKyBtZW1iZXIubmFtZSwK
KyAgICAgICAgImdldHRlciBtdXN0IGhhdmUgdGhlIG5hbWUgJ2dldCAiICsgbWVtYmVyLm5hbWUg
KyAiJyIpOworCiAKICAgICAvLyBUT0RPOiBUZXN0IGNhbGxpbmcgc2V0dGVyIG9uIHRoZSBpbnRl
cmZhY2UgcHJvdG90eXBlIChzaG91bGQgdGhyb3cKICAgICAvLyBUeXBlRXJyb3IgaW4gbW9zdCBj
YXNlcykuCiAgICAgaWYgKG1lbWJlci5yZWFkb25seQorICAgICYmICFtZW1iZXIuaGFzX2V4dGVu
ZGVkX2F0dHJpYnV0ZSgiTGVnYWN5TGVuaWVudFNldHRlciIpCiAgICAgJiYgIW1lbWJlci5oYXNf
ZXh0ZW5kZWRfYXR0cmlidXRlKCJQdXRGb3J3YXJkcyIpCiAgICAgJiYgIW1lbWJlci5oYXNfZXh0
ZW5kZWRfYXR0cmlidXRlKCJSZXBsYWNlYWJsZSIpKQogICAgIHsKQEAgLTE4MjAsMTUgKzI5NjYs
MTUgQEAgSWRsSW50ZXJmYWNlLnByb3RvdHlwZS5kb19pbnRlcmZhY2VfYXR0cmlidXRlX2Fzc2Vy
dHMgPSBmdW5jdGlvbihvYmosIG1lbWJlciwgYV8KICAgICAgICAgYXNzZXJ0X2VxdWFscyh0eXBl
b2YgZGVzYy5zZXQsICJmdW5jdGlvbiIsICJzZXR0ZXIgbXVzdCBiZSBmdW5jdGlvbiBmb3IgUHV0
Rm9yd2FyZHMsIFJlcGxhY2VhYmxlLCBvciBub24tcmVhZG9ubHkgYXR0cmlidXRlcyIpOwogCiAg
ICAgICAgIC8vICJJZiB0aGUgYXR0cmlidXRlIGlzIGEgcmVndWxhciBhdHRyaWJ1dGUsIHRoZW46
IgotICAgICAgICBpZiAoIW1lbWJlclsic3RhdGljIl0pIHsKKyAgICAgICAgaWYgKG1lbWJlci5z
cGVjaWFsICE9PSAic3RhdGljIikgewogICAgICAgICAgICAgLy8gIklmIC92YWxpZFRoaXMvIGlz
IGZhbHNlIGFuZCB0aGUgYXR0cmlidXRlIHdhcyBub3Qgc3BlY2lmaWVkCi0gICAgICAgICAgICAv
LyB3aXRoIHRoZSBbTGVuaWVudFRoaXNdIGV4dGVuZGVkIGF0dHJpYnV0ZSwgdGhlbiB0aHJvdyBh
CisgICAgICAgICAgICAvLyB3aXRoIHRoZSBbTGVnYWN5TGVuaWVudFRoaXNdIGV4dGVuZGVkIGF0
dHJpYnV0ZSwgdGhlbiB0aHJvdyBhCiAgICAgICAgICAgICAvLyBUeXBlRXJyb3IuIgogICAgICAg
ICAgICAgLy8gIklmIHRoZSBhdHRyaWJ1dGUgaXMgZGVjbGFyZWQgd2l0aCBhIFtSZXBsYWNlYWJs
ZV0gZXh0ZW5kZWQKICAgICAgICAgICAgIC8vIGF0dHJpYnV0ZSwgdGhlbjogLi4uIgogICAgICAg
ICAgICAgLy8gIklmIHZhbGlkVGhpcyBpcyBmYWxzZSwgdGhlbiByZXR1cm4uIgotICAgICAgICAg
ICAgaWYgKCFtZW1iZXIuaGFzX2V4dGVuZGVkX2F0dHJpYnV0ZSgiTGVuaWVudFRoaXMiKSkgewot
ICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgIGlmICghbWVtYmVyLmhhc19leHRlbmRlZF9hdHRyaWJ1dGUoIkxlZ2Fj
eUxlbmllbnRUaGlzIikpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKGdsb2Jh
bE9mKGRlc2Muc2V0KS5UeXBlRXJyb3IsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAg
ICBkZXNjLnNldC5jYWxsKHt9KTsKICAgICAgICAgICAgICAgICB9LmJpbmQodGhpcyksICJjYWxs
aW5nIHNldHRlciBvbiB3cm9uZyBvYmplY3QgdHlwZSBtdXN0IHRocm93IFR5cGVFcnJvciIpOwog
ICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTE4NDAsMjIgKzI5ODYsMjUgQEAgSWRsSW50ZXJmYWNl
LnByb3RvdHlwZS5kb19pbnRlcmZhY2VfYXR0cmlidXRlX2Fzc2VydHMgPSBmdW5jdGlvbihvYmos
IG1lbWJlciwgYV8KICAgICAgICAgLy8gIlRoZSB2YWx1ZSBvZiB0aGUgRnVuY3Rpb24gb2JqZWN0
4oCZcyDigJxsZW5ndGjigJ0gcHJvcGVydHkgaXMgdGhlIE51bWJlcgogICAgICAgICAvLyB2YWx1
ZSAxLiIKICAgICAgICAgYXNzZXJ0X2VxdWFscyhkZXNjLnNldC5sZW5ndGgsIDEsICJzZXR0ZXIg
bGVuZ3RoIG11c3QgYmUgMSIpOworCisgICAgICAgIC8vICJMZXQgbmFtZSBiZSB0aGUgc3RyaW5n
ICJzZXQgIiBwcmVwZW5kZWQgdG8gaWQuIgorICAgICAgICAvLyAiUGVyZm9ybSAhIFNldEZ1bmN0
aW9uTmFtZShGLCBuYW1lKS4iCisgICAgICAgIGFzc2VydF9lcXVhbHMoZGVzYy5zZXQubmFtZSwg
InNldCAiICsgbWVtYmVyLm5hbWUsCisgICAgICAgICAgICAiVGhlIGF0dHJpYnV0ZSBzZXR0ZXIg
bXVzdCBoYXZlIHRoZSBuYW1lICdzZXQgIiArIG1lbWJlci5uYW1lICsgIiciKTsKICAgICB9CiAK
ICAgICBQcm9taXNlLmFsbChwZW5kaW5nUHJvbWlzZXMpLnRoZW4oYV90ZXN0LmRvbmUuYmluZChh
X3Rlc3QpKTsKIH0KLS8vQH0KIAogLy8vIElkbEludGVyZmFjZU1lbWJlciAvLy8KIGZ1bmN0aW9u
IElkbEludGVyZmFjZU1lbWJlcihvYmopCi0vL0B7CiB7CiAgICAgLyoqCiAgICAgICogb2JqIGlz
IGFuIG9iamVjdCBwcm9kdWNlZCBieSB0aGUgV2ViSURMUGFyc2VyLmpzICJpZk1lbWJlciIgcHJv
ZHVjdGlvbi4KICAgICAgKiBXZSBqdXN0IGZvcndhcmQgYWxsIHByb3BlcnRpZXMgdG8gdGhpcyBv
YmplY3Qgd2l0aG91dCBtb2RpZmljYXRpb24sCiAgICAgICogZXhjZXB0IGZvciBzcGVjaWFsIGV4
dEF0dHJzIGhhbmRsaW5nLgogICAgICAqLwotICAgIGZvciAodmFyIGsgaW4gb2JqKQorICAgIGZv
ciAodmFyIGsgaW4gb2JqLnRvSlNPTigpKQogICAgIHsKICAgICAgICAgdGhpc1trXSA9IG9ialtr
XTsKICAgICB9CkBAIC0xODY0LDE1ICszMDEzLDUyIEBAIGZ1bmN0aW9uIElkbEludGVyZmFjZU1l
bWJlcihvYmopCiAgICAgICAgIHRoaXMuZXh0QXR0cnMgPSBbXTsKICAgICB9CiAKLSAgICB0aGlz
LmlzVW5mb3JnZWFibGUgPSB0aGlzLmhhc19leHRlbmRlZF9hdHRyaWJ1dGUoIlVuZm9yZ2VhYmxl
Iik7CisgICAgdGhpcy5pc1VuZm9yZ2VhYmxlID0gdGhpcy5oYXNfZXh0ZW5kZWRfYXR0cmlidXRl
KCJMZWdhY3lVbmZvcmdlYWJsZSIpOworICAgIHRoaXMuaXNVbnNjb3BhYmxlID0gdGhpcy5oYXNf
ZXh0ZW5kZWRfYXR0cmlidXRlKCJVbnNjb3BhYmxlIik7CiB9CiAKLS8vQH0KIElkbEludGVyZmFj
ZU1lbWJlci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKElkbE9iamVjdC5wcm90b3R5cGUpOwog
CitJZGxJbnRlcmZhY2VNZW1iZXIucHJvdG90eXBlLnRvSlNPTiA9IGZ1bmN0aW9uKCkgeworICAg
IHJldHVybiB0aGlzOworfTsKKworSWRsSW50ZXJmYWNlTWVtYmVyLnByb3RvdHlwZS5pc190b19q
c29uX3JlZ3VsYXJfb3BlcmF0aW9uID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIHRoaXMudHlw
ZSA9PSAib3BlcmF0aW9uIiAmJiB0aGlzLnNwZWNpYWwgIT09ICJzdGF0aWMiICYmIHRoaXMubmFt
ZSA9PSAidG9KU09OIjsKK307CisKK0lkbEludGVyZmFjZU1lbWJlci5wcm90b3R5cGUudG9TdHJp
bmcgPSBmdW5jdGlvbigpIHsKKyAgICBmdW5jdGlvbiBmb3JtYXRUeXBlKHR5cGUpIHsKKyAgICAg
ICAgdmFyIHJlc3VsdDsKKyAgICAgICAgaWYgKHR5cGUuZ2VuZXJpYykgeworICAgICAgICAgICAg
cmVzdWx0ID0gdHlwZS5nZW5lcmljICsgIjwiICsgdHlwZS5pZGxUeXBlLm1hcChmb3JtYXRUeXBl
KS5qb2luKCIsICIpICsgIj4iOworICAgICAgICB9IGVsc2UgaWYgKHR5cGUudW5pb24pIHsKKyAg
ICAgICAgICAgIHJlc3VsdCA9ICIoIiArIHR5cGUuc3VidHlwZS5tYXAoZm9ybWF0VHlwZSkuam9p
bigiIG9yICIpICsgIikiOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmVzdWx0ID0g
dHlwZS5pZGxUeXBlOworICAgICAgICB9CisgICAgICAgIGlmICh0eXBlLm51bGxhYmxlKSB7Cisg
ICAgICAgICAgICByZXN1bHQgKz0gIj8iCisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKKyAgICB9CisKKyAgICBpZiAodGhpcy50eXBlID09PSAib3BlcmF0aW9uIikgeworICAgICAg
ICB2YXIgYXJncyA9IHRoaXMuYXJndW1lbnRzLm1hcChmdW5jdGlvbihtKSB7CisgICAgICAgICAg
ICByZXR1cm4gWworICAgICAgICAgICAgICAgIG0ub3B0aW9uYWwgPyAib3B0aW9uYWwgIiA6ICIi
LAorICAgICAgICAgICAgICAgIGZvcm1hdFR5cGUobS5pZGxUeXBlKSwKKyAgICAgICAgICAgICAg
ICBtLnZhcmlhZGljID8gIi4uLiIgOiAiIiwKKyAgICAgICAgICAgIF0uam9pbigiIik7CisgICAg
ICAgIH0pLmpvaW4oIiwgIik7CisgICAgICAgIHJldHVybiB0aGlzLm5hbWUgKyAiKCIgKyBhcmdz
ICsgIikiOworICAgIH0KKworICAgIHJldHVybiB0aGlzLm5hbWU7Cit9CisKIC8vLyBJbnRlcm5h
bCBoZWxwZXIgZnVuY3Rpb25zIC8vLwogZnVuY3Rpb24gY3JlYXRlX3N1aXRhYmxlX29iamVjdCh0
eXBlKQotLy9AewogewogICAgIC8qKgogICAgICAqIHR5cGUgaXMgYW4gb2JqZWN0IHByb2R1Y2Vk
IGJ5IHRoZSBXZWJJRExQYXJzZXIuanMgInR5cGUiIHByb2R1Y3Rpb24uICBXZQpAQCAtMTkwOCwx
MiArMzA5NCwxMCBAQCBmdW5jdGlvbiBjcmVhdGVfc3VpdGFibGVfb2JqZWN0KHR5cGUpCiAgICAg
fQogICAgIHJldHVybiBudWxsOwogfQotLy9AfQogCiAvLy8gSWRsRW51bSAvLy8KIC8vIFVzZWQg
Zm9yIElkbEFycmF5LnByb3RvdHlwZS5hc3NlcnRfdHlwZV9pcwogZnVuY3Rpb24gSWRsRW51bShv
YmopCi0vL0B7CiB7CiAgICAgLyoqCiAgICAgICogb2JqIGlzIGFuIG9iamVjdCBwcm9kdWNlZCBi
eSB0aGUgV2ViSURMUGFyc2VyLmpzICJkaWN0aW9uYXJ5IgpAQCAtMTkyNywxNCArMzExMSwzMCBA
QCBmdW5jdGlvbiBJZGxFbnVtKG9iaikKICAgICB0aGlzLnZhbHVlcyA9IG9iai52YWx1ZXM7CiAK
IH0KLS8vQH0KIAogSWRsRW51bS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKElkbE9iamVjdC5w
cm90b3R5cGUpOwogCisvLy8gSWRsQ2FsbGJhY2sgLy8vCisvLyBVc2VkIGZvciBJZGxBcnJheS5w
cm90b3R5cGUuYXNzZXJ0X3R5cGVfaXMKK2Z1bmN0aW9uIElkbENhbGxiYWNrKG9iaikKK3sKKyAg
ICAvKioKKyAgICAgKiBvYmogaXMgYW4gb2JqZWN0IHByb2R1Y2VkIGJ5IHRoZSBXZWJJRExQYXJz
ZXIuanMgImNhbGxiYWNrIgorICAgICAqIHByb2R1Y3Rpb24uCisgICAgICovCisKKyAgICAvKiog
U2VsZi1leHBsYW5hdG9yeS4gKi8KKyAgICB0aGlzLm5hbWUgPSBvYmoubmFtZTsKKworICAgIC8q
KiBBcmd1bWVudHMgZm9yIHRoZSBjYWxsYmFjay4gKi8KKyAgICB0aGlzLmFyZ3VtZW50cyA9IG9i
ai5hcmd1bWVudHM7Cit9CisKK0lkbENhbGxiYWNrLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUo
SWRsT2JqZWN0LnByb3RvdHlwZSk7CisKIC8vLyBJZGxUeXBlZGVmIC8vLwogLy8gVXNlZCBmb3Ig
SWRsQXJyYXkucHJvdG90eXBlLmFzc2VydF90eXBlX2lzCiBmdW5jdGlvbiBJZGxUeXBlZGVmKG9i
aikKLS8vQHsKIHsKICAgICAvKioKICAgICAgKiBvYmogaXMgYW4gb2JqZWN0IHByb2R1Y2VkIGJ5
IHRoZSBXZWJJRExQYXJzZXIuanMgInR5cGVkZWYiCkBAIC0xOTQ0LDEzICszMTQ0LDI2NCBAQCBm
dW5jdGlvbiBJZGxUeXBlZGVmKG9iaikKICAgICAvKiogU2VsZi1leHBsYW5hdG9yeS4gKi8KICAg
ICB0aGlzLm5hbWUgPSBvYmoubmFtZTsKIAotICAgIC8qKiBBbiBhcnJheSBvZiB2YWx1ZXMgcHJv
ZHVjZWQgYnkgdGhlICJ0eXBlZGVmIiBwcm9kdWN0aW9uLiAqLwotICAgIHRoaXMudmFsdWVzID0g
b2JqLnZhbHVlczsKKyAgICAvKiogVGhlIGlkbFR5cGUgdGhhdCB3ZSBhcmUgc3VwcG9zZWQgdG8g
YmUgdHlwZWRlZmZpbmcgdG8uICovCisgICAgdGhpcy5pZGxUeXBlID0gb2JqLmlkbFR5cGU7CiAK
IH0KLS8vQH0KIAogSWRsVHlwZWRlZi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKElkbE9iamVj
dC5wcm90b3R5cGUpOwogCisvLy8gSWRsTmFtZXNwYWNlIC8vLworZnVuY3Rpb24gSWRsTmFtZXNw
YWNlKG9iaikKK3sKKyAgICB0aGlzLm5hbWUgPSBvYmoubmFtZTsKKyAgICB0aGlzLmV4dEF0dHJz
ID0gb2JqLmV4dEF0dHJzOworICAgIHRoaXMudW50ZXN0ZWQgPSBvYmoudW50ZXN0ZWQ7CisgICAg
LyoqIEEgYmFjay1yZWZlcmVuY2UgdG8gb3VyIElkbEFycmF5LiAqLworICAgIHRoaXMuYXJyYXkg
PSBvYmouYXJyYXk7CisKKyAgICAvKiogQW4gYXJyYXkgb2YgSWRsSW50ZXJmYWNlTWVtYmVycy4g
Ki8KKyAgICB0aGlzLm1lbWJlcnMgPSBvYmoubWVtYmVycy5tYXAobSA9PiBuZXcgSWRsSW50ZXJm
YWNlTWVtYmVyKG0pKTsKK30KKworSWRsTmFtZXNwYWNlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVh
dGUoSWRsT2JqZWN0LnByb3RvdHlwZSk7CisKK0lkbE5hbWVzcGFjZS5wcm90b3R5cGUuZG9fbWVt
YmVyX29wZXJhdGlvbl9hc3NlcnRzID0gZnVuY3Rpb24gKG1lbWJlckhvbGRlck9iamVjdCwgbWVt
YmVyLCBhX3Rlc3QpCit7CisgICAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKG1lbWJlckhvbGRlck9iamVjdCwgbWVtYmVyLm5hbWUpOworCisgICAgYXNzZXJ0X2Zh
bHNlKCJnZXQiIGluIGRlc2MsICJwcm9wZXJ0eSBzaG91bGQgbm90IGhhdmUgYSBnZXR0ZXIiKTsK
KyAgICBhc3NlcnRfZmFsc2UoInNldCIgaW4gZGVzYywgInByb3BlcnR5IHNob3VsZCBub3QgaGF2
ZSBhIHNldHRlciIpOworICAgIGFzc2VydF9lcXVhbHMoCisgICAgICAgIGRlc2Mud3JpdGFibGUs
CisgICAgICAgICFtZW1iZXIuaXNVbmZvcmdlYWJsZSwKKyAgICAgICAgInByb3BlcnR5IHNob3Vs
ZCBiZSB3cml0YWJsZSBpZiBhbmQgb25seSBpZiBub3QgdW5mb3JnZWFibGUiKTsKKyAgICBhc3Nl
cnRfdHJ1ZShkZXNjLmVudW1lcmFibGUsICJwcm9wZXJ0eSBzaG91bGQgYmUgZW51bWVyYWJsZSIp
OworICAgIGFzc2VydF9lcXVhbHMoCisgICAgICAgIGRlc2MuY29uZmlndXJhYmxlLAorICAgICAg
ICAhbWVtYmVyLmlzVW5mb3JnZWFibGUsCisgICAgICAgICJwcm9wZXJ0eSBzaG91bGQgYmUgY29u
ZmlndXJhYmxlIGlmIGFuZCBvbmx5IGlmIG5vdCB1bmZvcmdlYWJsZSIpOworCisgICAgYXNzZXJ0
X2VxdWFscygKKyAgICAgICAgdHlwZW9mIG1lbWJlckhvbGRlck9iamVjdFttZW1iZXIubmFtZV0s
CisgICAgICAgICJmdW5jdGlvbiIsCisgICAgICAgICAicHJvcGVydHkgbXVzdCBiZSBhIGZ1bmN0
aW9uIik7CisKKyAgICBhc3NlcnRfZXF1YWxzKAorICAgICAgICBtZW1iZXJIb2xkZXJPYmplY3Rb
bWVtYmVyLm5hbWVdLmxlbmd0aCwKKyAgICAgICAgbWluT3ZlcmxvYWRMZW5ndGgodGhpcy5tZW1i
ZXJzLmZpbHRlcihmdW5jdGlvbihtKSB7CisgICAgICAgICAgICByZXR1cm4gbS50eXBlID09ICJv
cGVyYXRpb24iICYmIG0ubmFtZSA9PSBtZW1iZXIubmFtZTsKKyAgICAgICAgfSkpLAorICAgICAg
ICAib3BlcmF0aW9uIGhhcyB3cm9uZyAubGVuZ3RoIik7CisgICAgYV90ZXN0LmRvbmUoKTsKK30K
KworSWRsTmFtZXNwYWNlLnByb3RvdHlwZS50ZXN0X21lbWJlcl9vcGVyYXRpb24gPSBmdW5jdGlv
bihtZW1iZXIpCit7CisgICAgaWYgKCFzaG91bGRSdW5TdWJUZXN0KHRoaXMubmFtZSkpIHsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICB2YXIgYV90ZXN0ID0gc3Vic2V0VGVzdEJ5S2V5KAor
ICAgICAgICB0aGlzLm5hbWUsCisgICAgICAgIGFzeW5jX3Rlc3QsCisgICAgICAgIHRoaXMubmFt
ZSArICcgbmFtZXNwYWNlOiBvcGVyYXRpb24gJyArIG1lbWJlcik7CisgICAgYV90ZXN0LnN0ZXAo
ZnVuY3Rpb24oKSB7CisgICAgICAgIGFzc2VydF9vd25fcHJvcGVydHkoCisgICAgICAgICAgICBz
ZWxmW3RoaXMubmFtZV0sCisgICAgICAgICAgICBtZW1iZXIubmFtZSwKKyAgICAgICAgICAgICdu
YW1lc3BhY2Ugb2JqZWN0IG1pc3Npbmcgb3BlcmF0aW9uICcgKyBmb3JtYXRfdmFsdWUobWVtYmVy
Lm5hbWUpKTsKKworICAgICAgICB0aGlzLmRvX21lbWJlcl9vcGVyYXRpb25fYXNzZXJ0cyhzZWxm
W3RoaXMubmFtZV0sIG1lbWJlciwgYV90ZXN0KTsKKyAgICB9LmJpbmQodGhpcykpOworfTsKKwor
SWRsTmFtZXNwYWNlLnByb3RvdHlwZS50ZXN0X21lbWJlcl9hdHRyaWJ1dGUgPSBmdW5jdGlvbiAo
bWVtYmVyKQoreworICAgIGlmICghc2hvdWxkUnVuU3ViVGVzdCh0aGlzLm5hbWUpKSB7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgdmFyIGFfdGVzdCA9IHN1YnNldFRlc3RCeUtleSgKKyAg
ICAgICAgdGhpcy5uYW1lLAorICAgICAgICBhc3luY190ZXN0LAorICAgICAgICB0aGlzLm5hbWUg
KyAnIG5hbWVzcGFjZTogYXR0cmlidXRlICcgKyBtZW1iZXIubmFtZSk7CisgICAgYV90ZXN0LnN0
ZXAoZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0eSgKKyAgICAg
ICAgICAgIHNlbGZbdGhpcy5uYW1lXSwKKyAgICAgICAgICAgIG1lbWJlci5uYW1lLAorICAgICAg
ICAgICAgdGhpcy5uYW1lICsgJyBkb2VzIG5vdCBoYXZlIHByb3BlcnR5ICcgKyBmb3JtYXRfdmFs
dWUobWVtYmVyLm5hbWUpKTsKKworICAgICAgICB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3Ioc2VsZlt0aGlzLm5hbWVdLCBtZW1iZXIubmFtZSk7CisgICAgICAgIGFz
c2VydF9lcXVhbHMoZGVzYy5zZXQsIHVuZGVmaW5lZCwgInNldHRlciBtdXN0IGJlIHVuZGVmaW5l
ZCBmb3IgbmFtZXNwYWNlIG1lbWJlcnMiKTsKKyAgICAgICAgYV90ZXN0LmRvbmUoKTsKKyAgICB9
LmJpbmQodGhpcykpOworfTsKKworSWRsTmFtZXNwYWNlLnByb3RvdHlwZS50ZXN0X3NlbGYgPSBm
dW5jdGlvbiAoKQoreworICAgIC8qKgorICAgICAqIFRPRE8obHVrZWJqZXJyaW5nKTogQXNzZXJ0
OgorICAgICAqIC0gIk5vdGUgdGhhdCB1bmxpa2UgaW50ZXJmYWNlcyBvciBkaWN0aW9uYXJpZXMs
IG5hbWVzcGFjZXMgZG8gbm90IGNyZWF0ZSB0eXBlcy4iCisgICAgICovCisKKyAgICBzdWJzZXRU
ZXN0QnlLZXkodGhpcy5uYW1lLCB0ZXN0LCAoKSA9PiB7CisgICAgICAgIGFzc2VydF90cnVlKHRo
aXMuZXh0QXR0cnMuZXZlcnkobyA9PiBvLm5hbWUgPT09ICJFeHBvc2VkIiB8fCBvLm5hbWUgPT09
ICJTZWN1cmVDb250ZXh0IiksCisgICAgICAgICAgICAiT25seSB0aGUgW0V4cG9zZWRdIGFuZCBb
U2VjdXJlQ29udGV4dF0gZXh0ZW5kZWQgYXR0cmlidXRlcyBhcmUgYXBwbGljYWJsZSB0byBuYW1l
c3BhY2VzIik7CisgICAgICAgIGFzc2VydF90cnVlKHRoaXMuaGFzX2V4dGVuZGVkX2F0dHJpYnV0
ZSgiRXhwb3NlZCIpLAorICAgICAgICAgICAgIk5hbWVzcGFjZXMgbXVzdCBiZSBhbm5vdGF0ZWQg
d2l0aCB0aGUgW0V4cG9zZWRdIGV4dGVuZGVkIGF0dHJpYnV0ZSIpOworICAgIH0sIGAke3RoaXMu
bmFtZX0gbmFtZXNwYWNlOiBleHRlbmRlZCBhdHRyaWJ1dGVzYCk7CisKKyAgICBjb25zdCBuYW1l
c3BhY2VPYmplY3QgPSBzZWxmW3RoaXMubmFtZV07CisKKyAgICBzdWJzZXRUZXN0QnlLZXkodGhp
cy5uYW1lLCB0ZXN0LCAoKSA9PiB7CisgICAgICAgIGNvbnN0IGRlc2MgPSBPYmplY3QuZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKHNlbGYsIHRoaXMubmFtZSk7CisgICAgICAgIGFzc2VydF9lcXVh
bHMoZGVzYy52YWx1ZSwgbmFtZXNwYWNlT2JqZWN0LCBgd3JvbmcgdmFsdWUgZm9yICR7dGhpcy5u
YW1lfSBuYW1lc3BhY2Ugb2JqZWN0YCk7CisgICAgICAgIGFzc2VydF90cnVlKGRlc2Mud3JpdGFi
bGUsICJuYW1lc3BhY2Ugb2JqZWN0IHNob3VsZCBiZSB3cml0YWJsZSIpOworICAgICAgICBhc3Nl
cnRfZmFsc2UoZGVzYy5lbnVtZXJhYmxlLCAibmFtZXNwYWNlIG9iamVjdCBzaG91bGQgbm90IGJl
IGVudW1lcmFibGUiKTsKKyAgICAgICAgYXNzZXJ0X3RydWUoZGVzYy5jb25maWd1cmFibGUsICJu
YW1lc3BhY2Ugb2JqZWN0IHNob3VsZCBiZSBjb25maWd1cmFibGUiKTsKKyAgICAgICAgYXNzZXJ0
X2ZhbHNlKCJnZXQiIGluIGRlc2MsICJuYW1lc3BhY2Ugb2JqZWN0IHNob3VsZCBub3QgaGF2ZSBh
IGdldHRlciIpOworICAgICAgICBhc3NlcnRfZmFsc2UoInNldCIgaW4gZGVzYywgIm5hbWVzcGFj
ZSBvYmplY3Qgc2hvdWxkIG5vdCBoYXZlIGEgc2V0dGVyIik7CisgICAgfSwgYCR7dGhpcy5uYW1l
fSBuYW1lc3BhY2U6IHByb3BlcnR5IGRlc2NyaXB0b3JgKTsKKworICAgIHN1YnNldFRlc3RCeUtl
eSh0aGlzLm5hbWUsIHRlc3QsICgpID0+IHsKKyAgICAgICAgYXNzZXJ0X3RydWUoT2JqZWN0Lmlz
RXh0ZW5zaWJsZShuYW1lc3BhY2VPYmplY3QpKTsKKyAgICB9LCBgJHt0aGlzLm5hbWV9IG5hbWVz
cGFjZTogW1tFeHRlbnNpYmxlXV0gaXMgdHJ1ZWApOworCisgICAgc3Vic2V0VGVzdEJ5S2V5KHRo
aXMubmFtZSwgdGVzdCwgKCkgPT4geworICAgICAgICBhc3NlcnRfdHJ1ZShuYW1lc3BhY2VPYmpl
Y3QgaW5zdGFuY2VvZiBPYmplY3QpOworCisgICAgICAgIGlmICh0aGlzLm5hbWUgPT09ICJjb25z
b2xlIikgeworICAgICAgICAgICAgLy8gaHR0cHM6Ly9jb25zb2xlLnNwZWMud2hhdHdnLm9yZy8j
Y29uc29sZS1uYW1lc3BhY2UKKyAgICAgICAgICAgIGNvbnN0IG5hbWVzcGFjZVByb3RvdHlwZSA9
IE9iamVjdC5nZXRQcm90b3R5cGVPZihuYW1lc3BhY2VPYmplY3QpOworICAgICAgICAgICAgYXNz
ZXJ0X2VxdWFscyhSZWZsZWN0Lm93bktleXMobmFtZXNwYWNlUHJvdG90eXBlKS5sZW5ndGgsIDAp
OworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhPYmplY3QuZ2V0UHJvdG90eXBlT2YobmFtZXNw
YWNlUHJvdG90eXBlKSwgT2JqZWN0LnByb3RvdHlwZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBhc3NlcnRfZXF1YWxzKE9iamVjdC5nZXRQcm90b3R5cGVPZihuYW1lc3BhY2VPYmpl
Y3QpLCBPYmplY3QucHJvdG90eXBlKTsKKyAgICAgICAgfQorICAgIH0sIGAke3RoaXMubmFtZX0g
bmFtZXNwYWNlOiBbW1Byb3RvdHlwZV1dIGlzIE9iamVjdC5wcm90b3R5cGVgKTsKKworICAgIHN1
YnNldFRlc3RCeUtleSh0aGlzLm5hbWUsIHRlc3QsICgpID0+IHsKKyAgICAgICAgYXNzZXJ0X2Vx
dWFscyh0eXBlb2YgbmFtZXNwYWNlT2JqZWN0LCAib2JqZWN0Iik7CisgICAgfSwgYCR7dGhpcy5u
YW1lfSBuYW1lc3BhY2U6IHR5cGVvZiBpcyAib2JqZWN0ImApOworCisgICAgc3Vic2V0VGVzdEJ5
S2V5KHRoaXMubmFtZSwgdGVzdCwgKCkgPT4geworICAgICAgICBhc3NlcnRfZXF1YWxzKAorICAg
ICAgICAgICAgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuYW1lc3BhY2VPYmplY3Qs
ICJsZW5ndGgiKSwKKyAgICAgICAgICAgIHVuZGVmaW5lZCwKKyAgICAgICAgICAgICJsZW5ndGgg
cHJvcGVydHkgbXVzdCBiZSB1bmRlZmluZWQiCisgICAgICAgICk7CisgICAgfSwgYCR7dGhpcy5u
YW1lfSBuYW1lc3BhY2U6IGhhcyBubyBsZW5ndGggcHJvcGVydHlgKTsKKworICAgIHN1YnNldFRl
c3RCeUtleSh0aGlzLm5hbWUsIHRlc3QsICgpID0+IHsKKyAgICAgICAgYXNzZXJ0X2VxdWFscygK
KyAgICAgICAgICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobmFtZXNwYWNlT2Jq
ZWN0LCAibmFtZSIpLAorICAgICAgICAgICAgdW5kZWZpbmVkLAorICAgICAgICAgICAgIm5hbWUg
cHJvcGVydHkgbXVzdCBiZSB1bmRlZmluZWQiCisgICAgICAgICk7CisgICAgfSwgYCR7dGhpcy5u
YW1lfSBuYW1lc3BhY2U6IGhhcyBubyBuYW1lIHByb3BlcnR5YCk7Cit9OworCitJZGxOYW1lc3Bh
Y2UucHJvdG90eXBlLnRlc3QgPSBmdW5jdGlvbiAoKQoreworICAgIGlmICghdGhpcy51bnRlc3Rl
ZCkgeworICAgICAgICB0aGlzLnRlc3Rfc2VsZigpOworICAgIH0KKworICAgIGZvciAoY29uc3Qg
diBvZiBPYmplY3QudmFsdWVzKHRoaXMubWVtYmVycykpIHsKKyAgICAgICAgc3dpdGNoICh2LnR5
cGUpIHsKKworICAgICAgICBjYXNlICdvcGVyYXRpb24nOgorICAgICAgICAgICAgdGhpcy50ZXN0
X21lbWJlcl9vcGVyYXRpb24odik7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNl
ICdhdHRyaWJ1dGUnOgorICAgICAgICAgICAgdGhpcy50ZXN0X21lbWJlcl9hdHRyaWJ1dGUodik7
CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgdGhy
b3cgJ0ludmFsaWQgbmFtZXNwYWNlIG1lbWJlciAnICsgdi5uYW1lICsgJzogJyArIHYudHlwZSAr
ICcgbm90IHN1cHBvcnRlZCc7CisgICAgICAgIH0KKyAgICB9OworfTsKKwogfSgpKTsKKworLyoq
CisgKiBpZGxfdGVzdCBpcyBhIHByb21pc2VfdGVzdCB3cmFwcGVyIHRoYXQgaGFuZGxlcyB0aGUg
ZmV0Y2hpbmcgb2YgdGhlIElETCwKKyAqIGF2b2lkaW5nIHJlcGV0aXRpdmUgYm9pbGVycGxhdGUu
CisgKgorICogQHBhcmFtIHtTdHJpbmd8U3RyaW5nW119IHNyY3MgU3BlYyBuYW1lKHMpIGZvciBz
b3VyY2UgaWRsIGZpbGVzIChmZXRjaGVkIGZyb20KKyAqICAgICAgL2ludGVyZmFjZXMve25hbWV9
LmlkbCkuCisgKiBAcGFyYW0ge1N0cmluZ3xTdHJpbmdbXX0gZGVwcyBTcGVjIG5hbWUocykgZm9y
IGRlcGVuZGVuY3kgaWRsIGZpbGVzIChmZXRjaGVkCisgKiAgICAgIGZyb20gL2ludGVyZmFjZXMv
e25hbWV9LmlkbCkuIE9yZGVyIGlzIGltcG9ydGFudCAtIGRlcGVuZGVuY2llcyBmcm9tCisgKiAg
ICAgIGVhY2ggc291cmNlIHdpbGwgb25seSBiZSBpbmNsdWRlZCBpZiB0aGV5J3JlIGFscmVhZHkg
a25vdyB0byBiZSBhCisgKiAgICAgIGRlcGVuZGVuY3kgKGkuZS4gaGF2ZSBhbHJlYWR5IGJlZW4g
c2VlbikuCisgKiBAcGFyYW0ge0Z1bmN0aW9ufSBzZXR1cF9mdW5jIEZ1bmN0aW9uIGZvciBleHRy
YSBzZXR1cCBvZiB0aGUgaWRsX2FycmF5LCBzdWNoCisgKiAgICAgIGFzIGFkZGluZyBvYmplY3Rz
LiBEbyBub3QgY2FsbCBpZGxfYXJyYXkudGVzdCgpIGluIHRoZSBzZXR1cDsgaXQgaXMKKyAqICAg
ICAgY2FsbGVkIGJ5IHRoaXMgZnVuY3Rpb24gKGlkbF90ZXN0KS4KKyAqLworZnVuY3Rpb24gaWRs
X3Rlc3Qoc3JjcywgZGVwcywgaWRsX3NldHVwX2Z1bmMpIHsKKyAgICByZXR1cm4gcHJvbWlzZV90
ZXN0KGZ1bmN0aW9uICh0KSB7CisgICAgICAgIHZhciBpZGxfYXJyYXkgPSBuZXcgSWRsQXJyYXko
KTsKKyAgICAgICAgdmFyIHNldHVwX2Vycm9yID0gbnVsbDsKKyAgICAgICAgY29uc3QgdmFsaWRh
dGlvbklnbm9yZWQgPSBbCisgICAgICAgICAgICAiY29uc3RydWN0b3ItbWVtYmVyIiwKKyAgICAg
ICAgICAgICJkaWN0LWFyZy1kZWZhdWx0IiwKKyAgICAgICAgICAgICJyZXF1aXJlLWV4cG9zZWQi
CisgICAgICAgIF07CisgICAgICAgIHJldHVybiBQcm9taXNlLmFsbCgKKyAgICAgICAgICAgIHNy
Y3MuY29uY2F0KGRlcHMpLm1hcChmZXRjaF9zcGVjKSkKKyAgICAgICAgICAgIC50aGVuKGZ1bmN0
aW9uKHJlc3VsdHMpIHsKKyAgICAgICAgICAgICAgICBjb25zdCBhc3RBcnJheSA9IHJlc3VsdHMu
bWFwKHJlc3VsdCA9PgorICAgICAgICAgICAgICAgICAgICBXZWJJREwyLnBhcnNlKHJlc3VsdC5p
ZGwsIHsgc291cmNlTmFtZTogcmVzdWx0LnNwZWMgfSkKKyAgICAgICAgICAgICAgICApOworICAg
ICAgICAgICAgICAgIHRlc3QoKCkgPT4geworICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWxp
ZGF0aW9ucyA9IFdlYklETDIudmFsaWRhdGUoYXN0QXJyYXkpCisgICAgICAgICAgICAgICAgICAg
ICAgICAuZmlsdGVyKHYgPT4gIXZhbGlkYXRpb25JZ25vcmVkLmluY2x1ZGVzKHYucnVsZU5hbWUp
KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHZhbGlkYXRpb25zLmxlbmd0aCkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IHZhbGlkYXRpb25zLm1hcCh2ID0+IHYu
bWVzc2FnZSkuam9pbigiXG5cbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3
IEVycm9yKG1lc3NhZ2UpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
fSwgImlkbF90ZXN0IHZhbGlkYXRpb24iKTsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHNyY3MubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgaWRsX2FycmF5
LmludGVybmFsX2FkZF9pZGxzKGFzdEFycmF5W2ldKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgZm9yICh2YXIgaSA9IHNyY3MubGVuZ3RoOyBpIDwgc3Jjcy5sZW5ndGggKyBk
ZXBzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIGlkbF9hcnJheS5pbnRlcm5h
bF9hZGRfZGVwZW5kZW5jeV9pZGxzKGFzdEFycmF5W2ldKTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9KQorICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICAgICAgaWYgKGlkbF9zZXR1cF9mdW5jKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBp
ZGxfc2V0dXBfZnVuYyhpZGxfYXJyYXksIHQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0pCisgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24oZSkgeyBzZXR1cF9lcnJvciA9IGUg
fHwgJ0lETCBzZXR1cCBmYWlsZWQuJzsgfSkKKyAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgICAgICAgICB2YXIgZXJyb3IgPSBzZXR1cF9lcnJvcjsKKyAgICAgICAgICAg
ICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICBpZGxfYXJyYXkudGVzdCgpOyAvLyBUZXN0
IHdoYXQgd2UgY2FuLgorICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAg
ICAgICAgICAgLy8gSWYgdGVzdGluZyBmYWlscyBoYXJkIGhlcmUsIHRoZSBvcmlnaW5hbCBzZXR1
cCBlcnJvcgorICAgICAgICAgICAgICAgICAgICAvLyBpcyBtb3JlIGxpa2VseSB0byBiZSB0aGUg
cmVhbCBjYXVzZS4KKyAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBlcnJvciB8fCBlOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgICAg
ICAgICAgICAgdGhyb3cgZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSk7
CisgICAgfSwgJ2lkbF90ZXN0IHNldHVwJyk7Cit9CisKKy8qKgorICogZmV0Y2hfc3BlYyBpcyBh
IHNob3J0aGFuZCBmb3IgYSBQcm9taXNlIHRoYXQgZmV0Y2hlcyB0aGUgc3BlYydzIGNvbnRlbnQu
CisgKi8KK2Z1bmN0aW9uIGZldGNoX3NwZWMoc3BlYykgeworICAgIHZhciB1cmwgPSAnL2ludGVy
ZmFjZXMvJyArIHNwZWMgKyAnLmlkbCc7CisgICAgcmV0dXJuIGZldGNoKHVybCkudGhlbihmdW5j
dGlvbiAocikgeworICAgICAgICBpZiAoIXIub2spIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJ
ZGxIYXJuZXNzRXJyb3IoIkVycm9yIGZldGNoaW5nICIgKyB1cmwgKyAiLiIpOworICAgICAgICB9
CisgICAgICAgIHJldHVybiByLnRleHQoKTsKKyAgICB9KS50aGVuKGlkbCA9PiAoeyBzcGVjLCBp
ZGwgfSkpOworfQogLy8gdmltOiBzZXQgZXhwYW5kdGFiIHNoaWZ0d2lkdGg9NCB0YWJzdG9wPTQg
Zm9sZG1hcmtlcj1AeyxAfSBmb2xkbWV0aG9kPW1hcmtlcjoKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3Jlc291cmNlcy90ZXN0aGFybmVzcy5jc3MgYi9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvdGVz
dGhhcm5lc3MuY3NzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNjUwODRmM2Y4MjEx
NmY4NWYwYTVlY2M1YWQ3ODhiZjhjZGE0NzEyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3Jlc291cmNlcy90ZXN0aGFybmVzcy5jc3MK
KysrIC9kZXYvbnVsbApAQCAtMSw5MiArMCwwIEBACi1odG1sIHsKLSAgICBmb250LWZhbWlseTpE
ZWphVnUgU2FucywgQml0c3RyZWFtIFZlcmEgU2FucywgQXJpYWwsIFNhbnM7Ci19Ci0KLSNsb2cg
Lndhcm5pbmcsCi0jbG9nIC53YXJuaW5nIGEgewotICBjb2xvcjogYmxhY2s7Ci0gIGJhY2tncm91
bmQ6IHllbGxvdzsKLX0KLQotI2xvZyAuZXJyb3IsCi0jbG9nIC5lcnJvciBhIHsKLSAgY29sb3I6
IHdoaXRlOwotICBiYWNrZ3JvdW5kOiByZWQ7Ci19Ci0KLSNsb2cgcHJlIHsKLSAgYm9yZGVyOiAx
cHggc29saWQgYmxhY2s7Ci0gIHBhZGRpbmc6IDFlbTsKLX0KLQotc2VjdGlvbiNzdW1tYXJ5IHsK
LSAgICBtYXJnaW4tYm90dG9tOjFlbTsKLX0KLQotdGFibGUjcmVzdWx0cyB7Ci0gICAgYm9yZGVy
LWNvbGxhcHNlOmNvbGxhcHNlOwotICAgIHRhYmxlLWxheW91dDpmaXhlZDsKLSAgICB3aWR0aDox
MDAlOwotfQotCi10YWJsZSNyZXN1bHRzIHRoOmZpcnN0LWNoaWxkLAotdGFibGUjcmVzdWx0cyB0
ZDpmaXJzdC1jaGlsZCB7Ci0gICAgd2lkdGg6NGVtOwotfQotCi10YWJsZSNyZXN1bHRzIHRoOmxh
c3QtY2hpbGQsCi10YWJsZSNyZXN1bHRzIHRkOmxhc3QtY2hpbGQgewotICAgIHdpZHRoOjUwJTsK
LX0KLQotdGFibGUjcmVzdWx0cy5hc3NlcnRpb25zIHRoOmxhc3QtY2hpbGQsCi10YWJsZSNyZXN1
bHRzLmFzc2VydGlvbnMgdGQ6bGFzdC1jaGlsZCB7Ci0gICAgd2lkdGg6MzUlOwotfQotCi10YWJs
ZSNyZXN1bHRzIHRoIHsKLSAgICBwYWRkaW5nOjA7Ci0gICAgcGFkZGluZy1ib3R0b206MC41ZW07
Ci0gICAgYm9yZGVyLWJvdHRvbTptZWRpdW0gc29saWQgYmxhY2s7Ci19Ci0KLXRhYmxlI3Jlc3Vs
dHMgdGQgewotICAgIHBhZGRpbmc6MWVtOwotICAgIHBhZGRpbmctYm90dG9tOjAuNWVtOwotICAg
IGJvcmRlci1ib3R0b206dGhpbiBzb2xpZCBibGFjazsKLX0KLQotdHIucGFzcyA+IHRkOmZpcnN0
LWNoaWxkIHsKLSAgICBjb2xvcjpncmVlbjsKLX0KLQotdHIuZmFpbCA+IHRkOmZpcnN0LWNoaWxk
IHsKLSAgICBjb2xvcjpyZWQ7Ci19Ci0KLXRyLnRpbWVvdXQgPiB0ZDpmaXJzdC1jaGlsZCB7Ci0g
ICAgY29sb3I6cmVkOwotfQotCi10ci5ub3RydW4gPiB0ZDpmaXJzdC1jaGlsZCB7Ci0gICAgY29s
b3I6Ymx1ZTsKLX0KLQotLnBhc3MgPiB0ZDpmaXJzdC1jaGlsZCwgLmZhaWwgPiB0ZDpmaXJzdC1j
aGlsZCwgLnRpbWVvdXQgPiB0ZDpmaXJzdC1jaGlsZCwgLm5vdHJ1biA+IHRkOmZpcnN0LWNoaWxk
IHsKLSAgICBmb250LXZhcmlhbnQ6c21hbGwtY2FwczsKLX0KLQotdGFibGUjcmVzdWx0cyBzcGFu
IHsKLSAgICBkaXNwbGF5OmJsb2NrOwotfQotCi10YWJsZSNyZXN1bHRzIHNwYW4uZXhwZWN0ZWQg
ewotICAgIGZvbnQtZmFtaWx5OkRlamFWdSBTYW5zIE1vbm8sIEJpdHN0cmVhbSBWZXJhIFNhbnMg
TW9ubywgTW9ub3NwYWNlOwotICAgIHdoaXRlLXNwYWNlOnByZTsKLX0KLQotdGFibGUjcmVzdWx0
cyBzcGFuLmFjdHVhbCB7Ci0gICAgZm9udC1mYW1pbHk6RGVqYVZ1IFNhbnMgTW9ubywgQml0c3Ry
ZWFtIFZlcmEgU2FucyBNb25vLCBNb25vc3BhY2U7Ci0gICAgd2hpdGUtc3BhY2U6cHJlOwotfQot
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMgYi9MYXlv
dXRUZXN0cy9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMKaW5kZXggMTU1OTEwNDJhYTRjYjBmZGQ3
NWZlM2JmNTZiOWJkZmI2M2ZkMTYxZC4uZjg1YjE5ZmQ5YmQ5MGMzNDc2ZGVkY2JlNTgyNWI4MmZi
NDBkZTgyYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpz
CisrKyBiL0xheW91dFRlc3RzL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcwpAQCAtMSwyMSArMSwx
MSBAQAogLypnbG9iYWwgc2VsZiovCiAvKmpzaGludCBsYXRlZGVmOiBub2Z1bmMqLwotLyoKLURp
c3RyaWJ1dGVkIHVuZGVyIGJvdGggdGhlIFczQyBUZXN0IFN1aXRlIExpY2Vuc2UgWzFdIGFuZCB0
aGUgVzNDCi0zLWNsYXVzZSBCU0QgTGljZW5zZSBbMl0uIFRvIGNvbnRyaWJ1dGUgdG8gYSBXM0Mg
VGVzdCBTdWl0ZSwgc2VlIHRoZQotcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10u
Ci0KLVsxXSBodHRwOi8vd3d3LnczLm9yZy9Db25zb3J0aXVtL0xlZ2FsLzIwMDgvMDQtdGVzdHN1
aXRlLWxpY2Vuc2UKLVsyXSBodHRwOi8vd3d3LnczLm9yZy9Db25zb3J0aXVtL0xlZ2FsLzIwMDgv
MDMtYnNkLWxpY2Vuc2UKLVszXSBodHRwOi8vd3d3LnczLm9yZy8yMDA0LzEwLzI3LXRlc3RjYXNl
cwotKi8KIAogLyogRG9jdW1lbnRhdGlvbjogaHR0cHM6Ly93ZWItcGxhdGZvcm0tdGVzdHMub3Jn
L3dyaXRpbmctdGVzdHMvdGVzdGhhcm5lc3MtYXBpLmh0bWwKICAqICguLi9kb2NzL193cml0aW5n
LXRlc3RzL3Rlc3RoYXJuZXNzLWFwaS5tZCkgKi8KIAogKGZ1bmN0aW9uIChnbG9iYWxfc2NvcGUp
CiB7Ci0gICAgdmFyIGRlYnVnID0gZmFsc2U7CiAgICAgLy8gZGVmYXVsdCB0aW1lb3V0IGlzIDEw
IHNlY29uZHMsIHRlc3QgY2FuIG92ZXJyaWRlIGlmIG5lZWRlZAogICAgIHZhciBzZXR0aW5ncyA9
IHsKICAgICAgICAgb3V0cHV0OnRydWUsCkBAIC0yNCw3ICsxNCw4IEBAIHBvbGljaWVzIGFuZCBj
b250cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAgICAgICAgImxvbmciOjYwMDAwCiAgICAgICAg
IH0sCiAgICAgICAgIHRlc3RfdGltZW91dDpudWxsLAotICAgICAgICBtZXNzYWdlX2V2ZW50czog
WyJzdGFydCIsICJ0ZXN0X3N0YXRlIiwgInJlc3VsdCIsICJjb21wbGV0aW9uIl0KKyAgICAgICAg
bWVzc2FnZV9ldmVudHM6IFsic3RhcnQiLCAidGVzdF9zdGF0ZSIsICJyZXN1bHQiLCAiY29tcGxl
dGlvbiJdLAorICAgICAgICBkZWJ1ZzogZmFsc2UsCiAgICAgfTsKIAogICAgIHZhciB4aHRtbF9u
cyA9ICJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIjsKQEAgLTg3LDE0ICs3OCwxNSBAQCBw
b2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Q6IHRlc3Quc3RydWN0dXJlZF9jbG9uZSgpfSk7
CiAgICAgICAgICAgICAgICAgICAgICB9XSwKICAgICAgICAgICAgIGNvbXBsZXRpb246IFthZGRf
Y29tcGxldGlvbl9jYWxsYmFjaywgcmVtb3ZlX2NvbXBsZXRpb25fY2FsbGJhY2ssCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKHRlc3RzLCBoYXJuZXNzX3N0YXR1cykgeworICAg
ICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICh0ZXN0cywgaGFybmVzc19zdGF0dXMsIGFz
c2VydHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNsb25lZF90ZXN0cyA9
IG1hcCh0ZXN0cywgZnVuY3Rpb24odGVzdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRlc3Quc3RydWN0dXJlZF9jbG9uZSgpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpc19vYmouX2Rp
c3BhdGNoKCJjb21wbGV0aW9uX2NhbGxiYWNrIiwgW3Rlc3RzLCBoYXJuZXNzX3N0YXR1c10sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dHlwZTogImNv
bXBsZXRlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0ZXN0czogY2xvbmVkX3Rlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0YXR1czogaGFybmVzc19zdGF0dXMuc3RydWN0dXJlZF9jbG9uZSgp
fSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rh
dHVzOiBoYXJuZXNzX3N0YXR1cy5zdHJ1Y3R1cmVkX2Nsb25lKCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0czogYXNzZXJ0cy5tYXAoYXNz
ZXJ0ID0+IGFzc2VydC5zdHJ1Y3R1cmVkX2Nsb25lKCkpfSk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgfV0KICAgICAgICAgfQogCkBAIC0xMzEsMTEgKzEyMyw3IEBAIHBvbGljaWVzIGFuZCBj
b250cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhhc19z
ZWxlY3RvcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHdbc2VsZWN0b3JdLmFwcGx5KHVuZGVmaW5lZCwgY2FsbGJh
Y2tfYXJncyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGVidWcpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRocm93IGU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfSBjYXRjaCAoZSkge30KICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBpZiAoc3VwcG9ydHNfcG9z
dF9tZXNzYWdlKHcpICYmIHcgIT09IHNlbGYpIHsKQEAgLTE5Miw4ICsxODAsOCBAQCBwb2xpY2ll
cyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgICAgIHRoaXNfb2JqLm91dHB1
dF9oYW5kbGVyLnNob3dfc3RhdHVzKCk7CiAgICAgICAgIH0pOwogCi0gICAgICAgIGFkZF9jb21w
bGV0aW9uX2NhbGxiYWNrKGZ1bmN0aW9uICh0ZXN0cywgaGFybmVzc19zdGF0dXMpIHsKLSAgICAg
ICAgICAgIHRoaXNfb2JqLm91dHB1dF9oYW5kbGVyLnNob3dfcmVzdWx0cyh0ZXN0cywgaGFybmVz
c19zdGF0dXMpOworICAgICAgICBhZGRfY29tcGxldGlvbl9jYWxsYmFjayhmdW5jdGlvbiAodGVz
dHMsIGhhcm5lc3Nfc3RhdHVzLCBhc3NlcnRzX3J1bikgeworICAgICAgICAgICAgdGhpc19vYmou
b3V0cHV0X2hhbmRsZXIuc2hvd19yZXN1bHRzKHRlc3RzLCBoYXJuZXNzX3N0YXR1cywgYXNzZXJ0
c19ydW4pOwogICAgICAgICB9KTsKICAgICAgICAgdGhpcy5zZXR1cF9tZXNzYWdlcyhzZXR0aW5n
cy5tZXNzYWdlX2V2ZW50cyk7CiAgICAgfTsKQEAgLTMxNCwxNCArMzAyLDE1IEBAIHBvbGljaWVz
IGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAgICAgICAgICAgICAgICB9KTsKICAg
ICAgICAgICAgICAgICB9KTsKICAgICAgICAgYWRkX2NvbXBsZXRpb25fY2FsbGJhY2soCi0gICAg
ICAgICAgICAgICAgZnVuY3Rpb24odGVzdHMsIGhhcm5lc3Nfc3RhdHVzKSB7CisgICAgICAgICAg
ICAgICAgZnVuY3Rpb24odGVzdHMsIGhhcm5lc3Nfc3RhdHVzLCBhc3NlcnRzKSB7CiAgICAgICAg
ICAgICAgICAgICAgIHRoaXNfb2JqLl9kaXNwYXRjaCh7CiAgICAgICAgICAgICAgICAgICAgICAg
ICB0eXBlOiAiY29tcGxldGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgdGVzdHM6IG1hcCh0
ZXN0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbih0ZXN0KSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0ZXN0LnN0cnVjdHVyZWRfY2xvbmUo
KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHN0YXR1czogaGFybmVzc19zdGF0dXMuc3RydWN0dXJlZF9jbG9uZSgpCisgICAgICAgICAg
ICAgICAgICAgICAgICBzdGF0dXM6IGhhcm5lc3Nfc3RhdHVzLnN0cnVjdHVyZWRfY2xvbmUoKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydHM6IGFzc2VydHMubWFwKGFzc2VydCA9PiBh
c3NlcnQuc3RydWN0dXJlZF9jbG9uZSgpKSwKICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAg
ICAgICAgICAgICAgfSk7CiAgICAgfTsKQEAgLTM5OCwyMCArMzg3LDcgQEAgcG9saWNpZXMgYW5k
IGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAgIHNlbGYuYWRkRXZlbnRMaXN0ZW5lcigi
bWVzc2FnZSIsCiAgICAgICAgICAgICAgICAgZnVuY3Rpb24oZXZlbnQpIHsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKGV2ZW50LmRhdGEgJiYgZXZlbnQuZGF0YS50eXBlICYmIGV2ZW50LmRhdGEu
dHlwZSA9PT0gImNvbm5lY3QiKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnQu
cG9ydHMgJiYgZXZlbnQucG9ydHNbMF0pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBJZiBhIE1lc3NhZ2VDaGFubmVsIHdhcyBwYXNzZWQsIHRoZW4gdXNlIGl0IHRvCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gc2VuZCByZXN1bHRzIGJhY2sgdG8gdGhlIG1haW4gd2lu
ZG93LiAgVGhpcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFsbG93cyB0aGUgdGVz
dHMgdG8gd29yayBldmVuIGlmIHRoZSBicm93c2VyCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gZG9lcyBub3QgZnVsbHkgc3VwcG9ydCBNZXNzYWdlRXZlbnQuc291cmNlIGluCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2VydmljZVdvcmtlcnMgeWV0LgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRoaXNfb2JqLl9hZGRfbWVzc2FnZV9wb3J0KGV2ZW50LnBvcnRz
WzBdKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wb3J0c1swXS5zdGFydCgp
OwotICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBNZXNzYWdlQ2hhbm5lbCwgdGhlbiBhdHRlbXB0IHRv
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXNlIHRoZSBNZXNzYWdlRXZlbnQuc291
cmNlIHRvIHNlbmQgcmVzdWx0cwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJhY2sg
dG8gdGhlIG1haW4gd2luZG93LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXNfb2Jq
Ll9hZGRfbWVzc2FnZV9wb3J0KGV2ZW50LnNvdXJjZSk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzX29iai5fYWRkX21lc3NhZ2VfcG9ydChl
dmVudC5zb3VyY2UpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfSwg
ZmFsc2UpOwogCkBAIC01MTMsMTEgKzQ4OSw3IEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24g
Zm9ybXMgWzNdLgogICAgICAgICAgICAgcmV0dXJuIG5ldyBEZWRpY2F0ZWRXb3JrZXJUZXN0RW52
aXJvbm1lbnQoKTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICghKCdsb2NhdGlvbicgaW4gZ2xv
YmFsX3Njb3BlKSkgewotICAgICAgICAgICAgcmV0dXJuIG5ldyBTaGVsbFRlc3RFbnZpcm9ubWVu
dCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCB0
ZXN0IGVudmlyb25tZW50Iik7CisgICAgICAgIHJldHVybiBuZXcgU2hlbGxUZXN0RW52aXJvbm1l
bnQoKTsKICAgICB9CiAKICAgICB2YXIgdGVzdF9lbnZpcm9ubWVudCA9IGNyZWF0ZV90ZXN0X2Vu
dmlyb25tZW50KCk7CkBAIC01MzMsMjMgKzUwNSw2NSBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0
aW9uIGZvcm1zIFszXS4KICAgICAgICAgICAgIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2Fs
bCh3b3JrZXIpID09ICdbb2JqZWN0IFNlcnZpY2VXb3JrZXJdJzsKICAgICB9CiAKKyAgICB2YXIg
c2Vlbl9mdW5jX25hbWUgPSBPYmplY3QuY3JlYXRlKG51bGwpOworCisgICAgZnVuY3Rpb24gZ2V0
X3Rlc3RfbmFtZShmdW5jLCBuYW1lKQorICAgIHsKKyAgICAgICAgaWYgKG5hbWUpIHsKKyAgICAg
ICAgICAgIHJldHVybiBuYW1lOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGZ1bmMpIHsKKyAg
ICAgICAgICAgIHZhciBmdW5jX2NvZGUgPSBmdW5jLnRvU3RyaW5nKCk7CisKKyAgICAgICAgICAg
IC8vIFRyeSBhbmQgbWF0Y2ggd2l0aCBicmFja2V0cywgYnV0IGZhbGxiYWNrIHRvIG1hdGNoaW5n
IHdpdGhvdXQKKyAgICAgICAgICAgIHZhciBhcnJvdyA9IGZ1bmNfY29kZS5tYXRjaCgvXlwoXClc
cyo9PlxzKig/OnsoLiopfVxzKnwoLiopKSQvKTsKKworICAgICAgICAgICAgLy8gQ2hlY2sgZm9y
IEpTIGxpbmUgc2VwYXJhdG9ycworICAgICAgICAgICAgaWYgKGFycm93ICE9PSBudWxsICYmICEv
W1x1MDAwQVx1MDAwRFx1MjAyOFx1MjAyOV0vLnRlc3QoZnVuY19jb2RlKSkgeworICAgICAgICAg
ICAgICAgIHZhciB0cmltbWVkID0gKGFycm93WzFdICE9PSB1bmRlZmluZWQgPyBhcnJvd1sxXSA6
IGFycm93WzJdKS50cmltKCk7CisgICAgICAgICAgICAgICAgLy8gZHJvcCB0cmFpbGluZyA7IGlm
IHRoZXJlJ3Mgbm8gZWFybGllciBvbmVzCisgICAgICAgICAgICAgICAgdHJpbW1lZCA9IHRyaW1t
ZWQucmVwbGFjZSgvXihbXjtdKikoO1xzKikrJC8sICIkMSIpOworCisgICAgICAgICAgICAgICAg
aWYgKHRyaW1tZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgbGV0IG5hbWUgPSB0cmltbWVkOwor
ICAgICAgICAgICAgICAgICAgICBpZiAoc2Vlbl9mdW5jX25hbWVbdHJpbW1lZF0pIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgc3VidGVzdCBuYW1lIGFscmVhZHkgZXhpc3RzLCBz
byBhZGQgYSBzdWZmaXguCisgICAgICAgICAgICAgICAgICAgICAgICBuYW1lICs9ICIgIiArIHNl
ZW5fZnVuY19uYW1lW3RyaW1tZWRdOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgICAgICAgICAgc2Vlbl9mdW5jX25hbWVbdHJpbW1lZF0gPSAwOworICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHNlZW5fZnVuY19uYW1lW3RyaW1t
ZWRdICs9IDE7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuYW1lOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB0ZXN0X2Vu
dmlyb25tZW50Lm5leHRfZGVmYXVsdF90ZXN0X25hbWUoKTsKKyAgICB9CisKICAgICAvKgogICAg
ICAqIEFQSSBmdW5jdGlvbnMKICAgICAgKi8KICAgICBmdW5jdGlvbiB0ZXN0KGZ1bmMsIG5hbWUs
IHByb3BlcnRpZXMpCiAgICAgewotICAgICAgICB2YXIgdGVzdF9uYW1lID0gbmFtZSA/IG5hbWUg
OiB0ZXN0X2Vudmlyb25tZW50Lm5leHRfZGVmYXVsdF90ZXN0X25hbWUoKTsKLSAgICAgICAgcHJv
cGVydGllcyA9IHByb3BlcnRpZXMgPyBwcm9wZXJ0aWVzIDoge307CisgICAgICAgIGlmICh0ZXN0
cy5wcm9taXNlX3NldHVwX2NhbGxlZCkgeworICAgICAgICAgICAgdGVzdHMuc3RhdHVzLnN0YXR1
cyA9IHRlc3RzLnN0YXR1cy5FUlJPUjsKKyAgICAgICAgICAgIHRlc3RzLnN0YXR1cy5tZXNzYWdl
ID0gJ2B0ZXN0YCBpbnZva2VkIGFmdGVyIGBwcm9taXNlX3NldHVwYCc7CisgICAgICAgICAgICB0
ZXN0cy5jb21wbGV0ZSgpOworICAgICAgICB9CisgICAgICAgIHZhciB0ZXN0X25hbWUgPSBnZXRf
dGVzdF9uYW1lKGZ1bmMsIG5hbWUpOwogICAgICAgICB2YXIgdGVzdF9vYmogPSBuZXcgVGVzdCh0
ZXN0X25hbWUsIHByb3BlcnRpZXMpOwogICAgICAgICB2YXIgdmFsdWUgPSB0ZXN0X29iai5zdGVw
KGZ1bmMsIHRlc3Rfb2JqLCB0ZXN0X29iaik7CiAKICAgICAgICAgaWYgKHZhbHVlICE9PSB1bmRl
ZmluZWQpIHsKLSAgICAgICAgICAgIHZhciBtc2cgPSAiVGVzdCBuYW1lZCBcIiIgKyB0ZXN0X25h
bWUgKwotICAgICAgICAgICAgICAgICJcIiBpbmFwcHJvcHJpYXRlbHkgcmV0dXJuZWQgYSB2YWx1
ZSI7CisgICAgICAgICAgICB2YXIgbXNnID0gJ1Rlc3QgbmFtZWQgIicgKyB0ZXN0X25hbWUgKwor
ICAgICAgICAgICAgICAgICciIHBhc3NlZCBhIGZ1bmN0aW9uIHRvIGB0ZXN0YCB0aGF0IHJldHVy
bmVkIGEgdmFsdWUuJzsKIAogICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBpZiAo
dmFsdWUgJiYgdmFsdWUuaGFzT3duUHJvcGVydHkoInRoZW4iKSkgewotICAgICAgICAgICAgICAg
ICAgICBtc2cgKz0gIiwgY29uc2lkZXIgdXNpbmcgYHByb21pc2VfdGVzdGAgaW5zdGVhZCI7Cisg
ICAgICAgICAgICAgICAgaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZS50aGVuID09PSAnZnVuY3Rp
b24nKSB7CisgICAgICAgICAgICAgICAgICAgIG1zZyArPSAnIENvbnNpZGVyIHVzaW5nIGBwcm9t
aXNlX3Rlc3RgIGluc3RlYWQgd2hlbiAnICsKKyAgICAgICAgICAgICAgICAgICAgICAgICd1c2lu
ZyBQcm9taXNlcyBvciBhc3luYy9hd2FpdC4nOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIH0gY2F0Y2ggKGVycikge30KIApAQCAtNTY0LDIyICs1NzgsNTUgQEAgcG9saWNpZXMgYW5k
IGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAKICAgICBmdW5jdGlvbiBhc3luY190ZXN0KGZ1bmMs
IG5hbWUsIHByb3BlcnRpZXMpCiAgICAgeworICAgICAgICBpZiAodGVzdHMucHJvbWlzZV9zZXR1
cF9jYWxsZWQpIHsKKyAgICAgICAgICAgIHRlc3RzLnN0YXR1cy5zdGF0dXMgPSB0ZXN0cy5zdGF0
dXMuRVJST1I7CisgICAgICAgICAgICB0ZXN0cy5zdGF0dXMubWVzc2FnZSA9ICdgYXN5bmNfdGVz
dGAgaW52b2tlZCBhZnRlciBgcHJvbWlzZV9zZXR1cGAnOworICAgICAgICAgICAgdGVzdHMuY29t
cGxldGUoKTsKKyAgICAgICAgfQogICAgICAgICBpZiAodHlwZW9mIGZ1bmMgIT09ICJmdW5jdGlv
biIpIHsKICAgICAgICAgICAgIHByb3BlcnRpZXMgPSBuYW1lOwogICAgICAgICAgICAgbmFtZSA9
IGZ1bmM7CiAgICAgICAgICAgICBmdW5jID0gbnVsbDsKICAgICAgICAgfQotICAgICAgICB2YXIg
dGVzdF9uYW1lID0gbmFtZSA/IG5hbWUgOiB0ZXN0X2Vudmlyb25tZW50Lm5leHRfZGVmYXVsdF90
ZXN0X25hbWUoKTsKLSAgICAgICAgcHJvcGVydGllcyA9IHByb3BlcnRpZXMgPyBwcm9wZXJ0aWVz
IDoge307CisgICAgICAgIHZhciB0ZXN0X25hbWUgPSBnZXRfdGVzdF9uYW1lKGZ1bmMsIG5hbWUp
OwogICAgICAgICB2YXIgdGVzdF9vYmogPSBuZXcgVGVzdCh0ZXN0X25hbWUsIHByb3BlcnRpZXMp
OwogICAgICAgICBpZiAoZnVuYykgewotICAgICAgICAgICAgdGVzdF9vYmouc3RlcChmdW5jLCB0
ZXN0X29iaiwgdGVzdF9vYmopOworICAgICAgICAgICAgdmFyIHZhbHVlID0gdGVzdF9vYmouc3Rl
cChmdW5jLCB0ZXN0X29iaiwgdGVzdF9vYmopOworCisgICAgICAgICAgICAvLyBUZXN0IGF1dGhv
cnMgc29tZXRpbWVzIHJldHVybiB2YWx1ZXMgdG8gYXN5bmNfdGVzdCwgZXhwZWN0aW5nIHVzCisg
ICAgICAgICAgICAvLyB0byBoYW5kbGUgdGhlIHZhbHVlIHNvbWVob3cuIE1ha2UgZG9pbmcgc28g
YSBoYXJuZXNzIGVycm9yIHRvIGJlCisgICAgICAgICAgICAvLyBjbGVhciB0aGlzIGlzIGludmFs
aWQsIGFuZCBwb2ludCBhdXRob3JzIHRvIHByb21pc2VfdGVzdCBpZiBpdAorICAgICAgICAgICAg
Ly8gbWF5IGJlIGFwcHJvcHJpYXRlLgorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIE5v
dGUgdGhhdCB3ZSBvbmx5IHBlcmZvcm0gdGhpcyBjaGVjayBvbiB0aGUgaW5pdGlhbCBmdW5jdGlv
bgorICAgICAgICAgICAgLy8gcGFzc2VkIHRvIGFzeW5jX3Rlc3QsIG5vdCBvbiBhbnkgbGF0ZXIg
c3RlcHMgLSB3ZSBoYXZlbid0IHNlZW4gYQorICAgICAgICAgICAgLy8gY29uc2lzdGVudCBwcm9i
bGVtIHdpdGggdGhvc2UgKGFuZCBpdCdzIGhhcmRlciB0byBjaGVjaykuCisgICAgICAgICAgICBp
ZiAodmFsdWUgIT09IHVuZGVmaW5lZCkgeworICAgICAgICAgICAgICAgIHZhciBtc2cgPSAnVGVz
dCBuYW1lZCAiJyArIHRlc3RfbmFtZSArCisgICAgICAgICAgICAgICAgICAgICciIHBhc3NlZCBh
IGZ1bmN0aW9uIHRvIGBhc3luY190ZXN0YCB0aGF0IHJldHVybmVkIGEgdmFsdWUuJzsKKworICAg
ICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSAmJiB0eXBl
b2YgdmFsdWUudGhlbiA9PT0gJ2Z1bmN0aW9uJykgeworICAgICAgICAgICAgICAgICAgICAgICAg
bXNnICs9ICcgQ29uc2lkZXIgdXNpbmcgYHByb21pc2VfdGVzdGAgaW5zdGVhZCB3aGVuICcgKwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1c2luZyBQcm9taXNlcyBvciBhc3luYy9hd2Fp
dC4nOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJy
KSB7fQorCisgICAgICAgICAgICAgICAgdGVzdHMuc2V0X3N0YXR1cyh0ZXN0cy5zdGF0dXMuRVJS
T1IsIG1zZyk7CisgICAgICAgICAgICAgICAgdGVzdHMuY29tcGxldGUoKTsKKyAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgICAgICByZXR1cm4gdGVzdF9vYmo7CiAgICAgfQogCiAgICAgZnVu
Y3Rpb24gcHJvbWlzZV90ZXN0KGZ1bmMsIG5hbWUsIHByb3BlcnRpZXMpIHsKLSAgICAgICAgdmFy
IHRlc3QgPSBhc3luY190ZXN0KG5hbWUsIHByb3BlcnRpZXMpOworICAgICAgICBpZiAodHlwZW9m
IGZ1bmMgIT09ICJmdW5jdGlvbiIpIHsKKyAgICAgICAgICAgIHByb3BlcnRpZXMgPSBuYW1lOwor
ICAgICAgICAgICAgbmFtZSA9IGZ1bmM7CisgICAgICAgICAgICBmdW5jID0gbnVsbDsKKyAgICAg
ICAgfQorICAgICAgICB2YXIgdGVzdF9uYW1lID0gZ2V0X3Rlc3RfbmFtZShmdW5jLCBuYW1lKTsK
KyAgICAgICAgdmFyIHRlc3QgPSBuZXcgVGVzdCh0ZXN0X25hbWUsIHByb3BlcnRpZXMpOwogICAg
ICAgICB0ZXN0Ll9pc19wcm9taXNlX3Rlc3QgPSB0cnVlOwogCiAgICAgICAgIC8vIElmIHRoZXJl
IGlzIG5vIHByb21pc2UgdGVzdHMgcXVldWUgbWFrZSBvbmUuCkBAIC02MjQsMTAgKzY3MSw4NyBA
QCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgfSk7CiAgICAg
fQogCi0gICAgZnVuY3Rpb24gcHJvbWlzZV9yZWplY3RzKHRlc3QsIGV4cGVjdGVkLCBwcm9taXNl
LCBkZXNjcmlwdGlvbikgewotICAgICAgICByZXR1cm4gcHJvbWlzZS50aGVuKHRlc3QudW5yZWFj
aGVkX2Z1bmMoIlNob3VsZCBoYXZlIHJlamVjdGVkOiAiICsgZGVzY3JpcHRpb24pKS5jYXRjaChm
dW5jdGlvbihlKSB7Ci0gICAgICAgICAgICBhc3NlcnRfdGhyb3dzKGV4cGVjdGVkLCBmdW5jdGlv
bigpIHsgdGhyb3cgZSB9LCBkZXNjcmlwdGlvbik7Ci0gICAgICAgIH0pOworICAgIC8qKgorICAg
ICAqIE1ha2UgYSBjb3B5IG9mIGEgUHJvbWlzZSBpbiB0aGUgY3VycmVudCByZWFsbS4KKyAgICAg
KgorICAgICAqIEBwYXJhbSB7UHJvbWlzZX0gcHJvbWlzZSB0aGUgZ2l2ZW4gcHJvbWlzZSB0aGF0
IG1heSBiZSBmcm9tIGEgZGlmZmVyZW50CisgICAgICogICAgICAgICAgICAgICAgICAgICAgICAg
IHJlYWxtCisgICAgICogQHJldHVybnMge1Byb21pc2V9CisgICAgICoKKyAgICAgKiBBbiBhcmJp
dHJhcnkgcHJvbWlzZSBwcm92aWRlZCBieSB0aGUgY2FsbGVyIG1heSBoYXZlIG9yaWdpbmF0ZWQg
aW4KKyAgICAgKiBhbm90aGVyIGZyYW1lIHRoYXQgaGF2ZSBzaW5jZSBuYXZpZ2F0ZWQgYXdheSwg
cmVuZGVyaW5nIHRoZSBmcmFtZSdzCisgICAgICogZG9jdW1lbnQgaW5hY3RpdmUuIFN1Y2ggYSBw
cm9taXNlIGNhbm5vdCBiZSB1c2VkIHdpdGggYGF3YWl0YCBvcgorICAgICAqIFByb21pc2UucmVz
b2x2ZSgpLCBhcyBtaWNyb3Rhc2tzIGFzc29jaWF0ZWQgd2l0aCBpdCBtYXkgYmUgcHJldmVudGVk
CisgICAgICogZnJvbSBiZWluZyBydW4uIFNlZSBodHRwczovL2dpdGh1Yi5jb20vd2hhdHdnL2h0
bWwvaXNzdWVzLzUzMTkgZm9yIGEKKyAgICAgKiBwYXJ0aWN1bGFyIGNhc2UuCisgICAgICoKKyAg
ICAgKiBJbiBmdW5jdGlvbnMgd2UgZGVmaW5lIGhlcmUsIHRoZXJlIGlzIGFuIGV4cGVjdGF0aW9u
IGZyb20gdGhlIGNhbGxlcgorICAgICAqIHRoYXQgdGhlIHByb21pc2UgaXMgZnJvbSB0aGUgY3Vy
cmVudCByZWFsbSwgdGhhdCBjYW4gYWx3YXlzIGJlIHVzZWQgd2l0aAorICAgICAqIGBhd2FpdGAs
IGV0Yy4gV2UgdGhlcmVmb3JlIGNyZWF0ZSBhIG5ldyBwcm9taXNlIGluIHRoaXMgcmVhbG0gdGhh
dAorICAgICAqIGluaGVyaXQgdGhlIHZhbHVlIGFuZCBzdGF0dXMgZnJvbSB0aGUgZ2l2ZW4gcHJv
bWlzZS4KKyAgICAgKi8KKworICAgIGZ1bmN0aW9uIGJyaW5nX3Byb21pc2VfdG9fY3VycmVudF9y
ZWFsbShwcm9taXNlKSB7CisgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShwcm9taXNlLnRoZW4u
YmluZChwcm9taXNlKSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gcHJvbWlzZV9yZWplY3RzX2pz
KHRlc3QsIGNvbnN0cnVjdG9yLCBwcm9taXNlLCBkZXNjcmlwdGlvbikgeworICAgICAgICByZXR1
cm4gYnJpbmdfcHJvbWlzZV90b19jdXJyZW50X3JlYWxtKHByb21pc2UpCisgICAgICAgICAgICAu
dGhlbih0ZXN0LnVucmVhY2hlZF9mdW5jKCJTaG91bGQgaGF2ZSByZWplY3RlZDogIiArIGRlc2Ny
aXB0aW9uKSkKKyAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbihlKSB7CisgICAgICAgICAgICAg
ICAgYXNzZXJ0X3Rocm93c19qc19pbXBsKGNvbnN0cnVjdG9yLCBmdW5jdGlvbigpIHsgdGhyb3cg
ZSB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiwg
InByb21pc2VfcmVqZWN0c19qcyIpOworICAgICAgICAgICAgfSk7CisgICAgfQorCisgICAgLyoq
CisgICAgICogQXNzZXJ0IHRoYXQgYSBQcm9taXNlIGlzIHJlamVjdGVkIHdpdGggdGhlIHJpZ2h0
IERPTUV4Y2VwdGlvbi4KKyAgICAgKgorICAgICAqIEBwYXJhbSB0ZXN0IHRoZSB0ZXN0IGFyZ3Vt
ZW50IHBhc3NlZCB0byBwcm9taXNlX3Rlc3QKKyAgICAgKiBAcGFyYW0ge251bWJlcnxzdHJpbmd9
IHR5cGUuICBTZWUgZG9jdW1lbnRhdGlvbiBmb3IgYXNzZXJ0X3Rocm93c19kb20uCisgICAgICoK
KyAgICAgKiBGb3IgdGhlIHJlbWFpbmluZyBhcmd1bWVudHMsIHRoZXJlIGFyZSB0d28gd2F5cyBv
ZiBjYWxsaW5nCisgICAgICogcHJvbWlzZV9yZWplY3RzX2RvbToKKyAgICAgKgorICAgICAqIDEp
IElmIHRoZSBET01FeGNlcHRpb24gaXMgZXhwZWN0ZWQgdG8gY29tZSBmcm9tIHRoZSBjdXJyZW50
IGdsb2JhbCwgdGhlCisgICAgICogdGhpcmQgYXJndW1lbnQgc2hvdWxkIGJlIHRoZSBwcm9taXNl
IGV4cGVjdGVkIHRvIHJlamVjdCwgYW5kIGEgZm91cnRoLAorICAgICAqIG9wdGlvbmFsLCBhcmd1
bWVudCBpcyB0aGUgYXNzZXJ0aW9uIGRlc2NyaXB0aW9uLgorICAgICAqCisgICAgICogMikgSWYg
dGhlIERPTUV4Y2VwdGlvbiBpcyBleHBlY3RlZCB0byBjb21lIGZyb20gc29tZSBvdGhlciBnbG9i
YWwsIHRoZQorICAgICAqIHRoaXJkIGFyZ3VtZW50IHNob3VsZCBiZSB0aGUgRE9NRXhjZXB0aW9u
IGNvbnN0cnVjdG9yIGZyb20gdGhhdCBnbG9iYWwsCisgICAgICogdGhlIGZvdXJ0aCBhcmd1bWVu
dCB0aGUgcHJvbWlzZSBleHBlY3RlZCB0byByZWplY3QsIGFuZCB0aGUgZmlmdGgsCisgICAgICog
b3B0aW9uYWwsIGFyZ3VtZW50IHRoZSBhc3NlcnRpb24gZGVzY3JpcHRpb24uCisgICAgICovCisK
KyAgICBmdW5jdGlvbiBwcm9taXNlX3JlamVjdHNfZG9tKHRlc3QsIHR5cGUsIHByb21pc2VPckNv
bnN0cnVjdG9yLCBkZXNjcmlwdGlvbk9yUHJvbWlzZSwgbWF5YmVEZXNjcmlwdGlvbikgeworICAg
ICAgICBsZXQgY29uc3RydWN0b3IsIHByb21pc2UsIGRlc2NyaXB0aW9uOworICAgICAgICBpZiAo
dHlwZW9mIHByb21pc2VPckNvbnN0cnVjdG9yID09PSAiZnVuY3Rpb24iICYmCisgICAgICAgICAg
ICBwcm9taXNlT3JDb25zdHJ1Y3Rvci5uYW1lID09PSAiRE9NRXhjZXB0aW9uIikgeworICAgICAg
ICAgICAgY29uc3RydWN0b3IgPSBwcm9taXNlT3JDb25zdHJ1Y3RvcjsKKyAgICAgICAgICAgIHBy
b21pc2UgPSBkZXNjcmlwdGlvbk9yUHJvbWlzZTsKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uID0g
bWF5YmVEZXNjcmlwdGlvbjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGNvbnN0cnVj
dG9yID0gc2VsZi5ET01FeGNlcHRpb247CisgICAgICAgICAgICBwcm9taXNlID0gcHJvbWlzZU9y
Q29uc3RydWN0b3I7CisgICAgICAgICAgICBkZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uT3JQcm9t
aXNlOworICAgICAgICAgICAgYXNzZXJ0KG1heWJlRGVzY3JpcHRpb24gPT09IHVuZGVmaW5lZCwK
KyAgICAgICAgICAgICAgICAgICAiVG9vIG1hbnkgYXJncyBwYXNlZCB0byBuby1jb25zdHJ1Y3Rv
ciB2ZXJzaW9uIG9mIHByb21pc2VfcmVqZWN0c19kb20iKTsKKyAgICAgICAgfQorICAgICAgICBy
ZXR1cm4gYnJpbmdfcHJvbWlzZV90b19jdXJyZW50X3JlYWxtKHByb21pc2UpCisgICAgICAgICAg
ICAudGhlbih0ZXN0LnVucmVhY2hlZF9mdW5jKCJTaG91bGQgaGF2ZSByZWplY3RlZDogIiArIGRl
c2NyaXB0aW9uKSkKKyAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbihlKSB7CisgICAgICAgICAg
ICAgICAgYXNzZXJ0X3Rocm93c19kb21faW1wbCh0eXBlLCBmdW5jdGlvbigpIHsgdGhyb3cgZSB9
LCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJw
cm9taXNlX3JlamVjdHNfZG9tIiwgY29uc3RydWN0b3IpOworICAgICAgICAgICAgfSk7CisgICAg
fQorCisgICAgZnVuY3Rpb24gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodGVzdCwgZXhjZXB0aW9u
LCBwcm9taXNlLCBkZXNjcmlwdGlvbikgeworICAgICAgICByZXR1cm4gYnJpbmdfcHJvbWlzZV90
b19jdXJyZW50X3JlYWxtKHByb21pc2UpCisgICAgICAgICAgICAudGhlbih0ZXN0LnVucmVhY2hl
ZF9mdW5jKCJTaG91bGQgaGF2ZSByZWplY3RlZDogIiArIGRlc2NyaXB0aW9uKSkKKyAgICAgICAg
ICAgIC5jYXRjaChmdW5jdGlvbihlKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19l
eGFjdGx5X2ltcGwoZXhjZXB0aW9uLCBmdW5jdGlvbigpIHsgdGhyb3cgZSB9LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uLCAicHJvbWlzZV9y
ZWplY3RzX2V4YWN0bHkiKTsKKyAgICAgICAgICAgIH0pOwogICAgIH0KIAogICAgIC8qKgpAQCAt
NzY5LDkgKzg5Myw1NiBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAg
ICAgICAgdGVzdF9lbnZpcm9ubWVudC5vbl9uZXdfaGFybmVzc19wcm9wZXJ0aWVzKHByb3BlcnRp
ZXMpOwogICAgIH0KIAorICAgIGZ1bmN0aW9uIHByb21pc2Vfc2V0dXAoZnVuYywgbWF5YmVfcHJv
cGVydGllcykKKyAgICB7CisgICAgICAgIGlmICh0eXBlb2YgZnVuYyAhPT0gImZ1bmN0aW9uIikg
eworICAgICAgICAgICAgdGVzdHMuc2V0X3N0YXR1cyh0ZXN0cy5zdGF0dXMuRVJST1IsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJwcm9taXNlX3Rlc3QgaW52b2tlZCB3aXRob3V0IGEg
ZnVuY3Rpb24iKTsKKyAgICAgICAgICAgIHRlc3RzLmNvbXBsZXRlKCk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgdGVzdHMucHJvbWlzZV9zZXR1cF9jYWxsZWQgPSB0
cnVlOworCisgICAgICAgIGlmICghdGVzdHMucHJvbWlzZV90ZXN0cykgeworICAgICAgICAgICAg
dGVzdHMucHJvbWlzZV90ZXN0cyA9IFByb21pc2UucmVzb2x2ZSgpOworICAgICAgICB9CisKKyAg
ICAgICAgdGVzdHMucHJvbWlzZV90ZXN0cyA9IHRlc3RzLnByb21pc2VfdGVzdHMKKyAgICAgICAg
ICAgIC50aGVuKGZ1bmN0aW9uKCkKKyAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgICB2YXIgcHJvcGVydGllcyA9IG1heWJlX3Byb3BlcnRpZXMgfHwge307CisgICAgICAg
ICAgICAgICAgICAgICAgdmFyIHJlc3VsdDsKKworICAgICAgICAgICAgICAgICAgICAgIHRlc3Rz
LnNldHVwKG51bGwsIHByb3BlcnRpZXMpOworICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9
IGZ1bmMoKTsKKyAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2Vudmlyb25tZW50Lm9uX25ld19o
YXJuZXNzX3Byb3BlcnRpZXMocHJvcGVydGllcyk7CisKKyAgICAgICAgICAgICAgICAgICAgICBp
ZiAoIXJlc3VsdCB8fCB0eXBlb2YgcmVzdWx0LnRoZW4gIT09ICJmdW5jdGlvbiIpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgdGhyb3cgIk5vbi10aGVuYWJsZSByZXR1cm5lZCBieSBmdW5j
dGlvbiBwYXNzZWQgdG8gYHByb21pc2Vfc2V0dXBgIjsKKyAgICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgICAgICAg
IH0pCisgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24oZSkKKyAgICAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgICAgIHRlc3RzLnNldF9zdGF0dXModGVzdHMuc3RhdHVzLkVS
Uk9SLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyhlKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlICYmIGUuc3RhY2spOwor
ICAgICAgICAgICAgICAgICAgICAgICB0ZXN0cy5jb21wbGV0ZSgpOworICAgICAgICAgICAgICAg
ICAgIH0pOworICAgIH0KKwogICAgIGZ1bmN0aW9uIGRvbmUoKSB7CiAgICAgICAgIGlmICh0ZXN0
cy50ZXN0cy5sZW5ndGggPT09IDApIHsKLSAgICAgICAgICAgIHRlc3RzLnNldF9maWxlX2lzX3Rl
c3QoKTsKKyAgICAgICAgICAgIC8vIGBkb25lYCBpcyBpbnZva2VkIGFmdGVyIGhhbmRsaW5nIHVu
Y2F1Z2h0IGV4Y2VwdGlvbnMsIHNvIGlmIHRoZQorICAgICAgICAgICAgLy8gaGFybmVzcyBzdGF0
dXMgaXMgYWxyZWFkeSBzZXQsIHRoZSBjb3JyZXNwb25kaW5nIG1lc3NhZ2UgaXMgbW9yZQorICAg
ICAgICAgICAgLy8gZGVzY3JpcHRpdmUgdGhhbiB0aGUgZ2VuZXJpYyBtZXNzYWdlIGRlZmluZWQg
aGVyZS4KKyAgICAgICAgICAgIGlmICh0ZXN0cy5zdGF0dXMuc3RhdHVzID09PSBudWxsKSB7Cisg
ICAgICAgICAgICAgICAgdGVzdHMuc3RhdHVzLnN0YXR1cyA9IHRlc3RzLnN0YXR1cy5FUlJPUjsK
KyAgICAgICAgICAgICAgICB0ZXN0cy5zdGF0dXMubWVzc2FnZSA9ICJkb25lKCkgd2FzIGNhbGxl
ZCB3aXRob3V0IGZpcnN0IGRlZmluaW5nIGFueSB0ZXN0cyI7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHRlc3RzLmNvbXBsZXRlKCk7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KICAgICAgICAgaWYgKHRlc3RzLmZpbGVfaXNfdGVzdCkgewogICAgICAgICAgICAgLy8gZmls
ZSBpcyB0ZXN0IGZpbGVzIG5ldmVyIGhhdmUgYXN5bmNocm9ub3VzIGNsZWFudXAgbG9naWMsCkBA
IC03OTQsNiArOTY1LDEyIEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgog
ICAgICAgICAgICAgICAgIH0pOwogICAgIH0KIAorICAgIC8qCisgICAgICogUmVnaXN0ZXIgYSBm
dW5jdGlvbiBhcyBhIERPTSBldmVudCBsaXN0ZW5lciB0byB0aGUgZ2l2ZW4gb2JqZWN0IGZvciB0
aGUKKyAgICAgKiBldmVudCBidWJibGluZyBwaGFzZS4KKyAgICAgKgorICAgICAqIFRoaXMgZnVu
Y3Rpb24gd2FzIGRlcHJlY2F0ZWQgaW4gTm92ZW1iZXIgb2YgMjAxOS4KKyAgICAgKi8KICAgICBm
dW5jdGlvbiBvbl9ldmVudChvYmplY3QsIGV2ZW50LCBjYWxsYmFjaykKICAgICB7CiAgICAgICAg
IG9iamVjdC5hZGRFdmVudExpc3RlbmVyKGV2ZW50LCBjYWxsYmFjaywgZmFsc2UpOwpAQCAtODEw
LDkgKzk4NywxMiBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICBl
eHBvc2UodGVzdCwgJ3Rlc3QnKTsKICAgICBleHBvc2UoYXN5bmNfdGVzdCwgJ2FzeW5jX3Rlc3Qn
KTsKICAgICBleHBvc2UocHJvbWlzZV90ZXN0LCAncHJvbWlzZV90ZXN0Jyk7Ci0gICAgZXhwb3Nl
KHByb21pc2VfcmVqZWN0cywgJ3Byb21pc2VfcmVqZWN0cycpOworICAgIGV4cG9zZShwcm9taXNl
X3JlamVjdHNfanMsICdwcm9taXNlX3JlamVjdHNfanMnKTsKKyAgICBleHBvc2UocHJvbWlzZV9y
ZWplY3RzX2RvbSwgJ3Byb21pc2VfcmVqZWN0c19kb20nKTsKKyAgICBleHBvc2UocHJvbWlzZV9y
ZWplY3RzX2V4YWN0bHksICdwcm9taXNlX3JlamVjdHNfZXhhY3RseScpOwogICAgIGV4cG9zZShn
ZW5lcmF0ZV90ZXN0cywgJ2dlbmVyYXRlX3Rlc3RzJyk7CiAgICAgZXhwb3NlKHNldHVwLCAnc2V0
dXAnKTsKKyAgICBleHBvc2UocHJvbWlzZV9zZXR1cCwgJ3Byb21pc2Vfc2V0dXAnKTsKICAgICBl
eHBvc2UoZG9uZSwgJ2RvbmUnKTsKICAgICBleHBvc2Uob25fZXZlbnQsICdvbl9ldmVudCcpOwog
ICAgIGV4cG9zZShzdGVwX3RpbWVvdXQsICdzdGVwX3RpbWVvdXQnKTsKQEAgLTkxNCwxMiArMTA5
NCwyMCBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgICAg
IHNlZW4ucHVzaCh2YWwpOwogICAgICAgICB9CiAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZh
bCkpIHsKLSAgICAgICAgICAgIHJldHVybiAiWyIgKyB2YWwubWFwKGZ1bmN0aW9uKHgpIHtyZXR1
cm4gZm9ybWF0X3ZhbHVlKHgsIHNlZW4pO30pLmpvaW4oIiwgIikgKyAiXSI7CisgICAgICAgICAg
ICBsZXQgb3V0cHV0ID0gIlsiOworICAgICAgICAgICAgaWYgKHZhbC5iZWdpbkVsbGlwc2lzICE9
PSB1bmRlZmluZWQpIHsKKyAgICAgICAgICAgICAgICBvdXRwdXQgKz0gIuKApiwgIjsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIG91dHB1dCArPSB2YWwubWFwKGZ1bmN0aW9uKHgpIHtyZXR1
cm4gZm9ybWF0X3ZhbHVlKHgsIHNlZW4pO30pLmpvaW4oIiwgIik7CisgICAgICAgICAgICBpZiAo
dmFsLmVuZEVsbGlwc2lzICE9PSB1bmRlZmluZWQpIHsKKyAgICAgICAgICAgICAgICBvdXRwdXQg
Kz0gIiwg4oCmIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBvdXRwdXQgKyAi
XSI7CiAgICAgICAgIH0KIAogICAgICAgICBzd2l0Y2ggKHR5cGVvZiB2YWwpIHsKICAgICAgICAg
Y2FzZSAic3RyaW5nIjoKLSAgICAgICAgICAgIHZhbCA9IHZhbC5yZXBsYWNlKCJcXCIsICJcXFxc
Iik7CisgICAgICAgICAgICB2YWwgPSB2YWwucmVwbGFjZSgvXFwvZywgIlxcXFwiKTsKICAgICAg
ICAgICAgIGZvciAodmFyIHAgaW4gcmVwbGFjZW1lbnRzKSB7CiAgICAgICAgICAgICAgICAgdmFy
IHJlcGxhY2UgPSAiXFwiICsgcmVwbGFjZW1lbnRzW3BdOwogICAgICAgICAgICAgICAgIHZhbCA9
IHZhbC5yZXBsYWNlKFJlZ0V4cChTdHJpbmcuZnJvbUNoYXJDb2RlKHApLCAiZyIpLCByZXBsYWNl
KTsKQEAgLTk4NCwxOSArMTE3Miw1MyBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1z
IFszXS4KICAgICAgKiBBc3NlcnRpb25zCiAgICAgICovCiAKKyAgICBmdW5jdGlvbiBleHBvc2Vf
YXNzZXJ0KGYsIG5hbWUpIHsKKyAgICAgICAgZnVuY3Rpb24gYXNzZXJ0X3dyYXBwZXIoLi4uYXJn
cykgeworICAgICAgICAgICAgbGV0IHN0YXR1cyA9IFRlc3Quc3RhdHVzZXMuVElNRU9VVDsKKyAg
ICAgICAgICAgIGxldCBzdGFjayA9IG51bGw7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAg
ICAgICAgIGlmIChzZXR0aW5ncy5kZWJ1ZykgeworICAgICAgICAgICAgICAgICAgICBjb25zb2xl
LmRlYnVnKCJBU1NFUlQiLCBuYW1lLCB0ZXN0cy5jdXJyZW50X3Rlc3QgJiYgdGVzdHMuY3VycmVu
dF90ZXN0Lm5hbWUsIGFyZ3MpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBp
ZiAodGVzdHMub3V0cHV0KSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RzLnNldF9hc3NlcnQo
bmFtZSwgYXJncyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNvbnN0IHJ2
ID0gZi5hcHBseSh1bmRlZmluZWQsIGFyZ3MpOworICAgICAgICAgICAgICAgIHN0YXR1cyA9IFRl
c3Quc3RhdHVzZXMuUEFTUzsKKyAgICAgICAgICAgICAgICByZXR1cm4gcnY7CisgICAgICAgICAg
ICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIEFzc2VydGlv
bkVycm9yKSB7CisgICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IFRlc3Quc3RhdHVzZXMuRkFJ
TDsKKyAgICAgICAgICAgICAgICAgICAgc3RhY2sgPSBlLnN0YWNrOworICAgICAgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBzdGF0dXMgPSBUZXN0LnN0YXR1c2VzLkVS
Uk9SOworICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdGhyb3cgZTsKKyAgICAg
ICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICAgICAgaWYgKHRlc3RzLm91dHB1dCAmJiAh
c3RhY2spIHsKKyAgICAgICAgICAgICAgICAgICAgc3RhY2sgPSBnZXRfc3RhY2soKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKHRlc3RzLm91dHB1dCkgeworICAgICAg
ICAgICAgICAgICAgICB0ZXN0cy5zZXRfYXNzZXJ0X3N0YXR1cyhzdGF0dXMsIHN0YWNrKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZXhwb3Nl
KGFzc2VydF93cmFwcGVyLCBuYW1lKTsKKyAgICB9CisKICAgICBmdW5jdGlvbiBhc3NlcnRfdHJ1
ZShhY3R1YWwsIGRlc2NyaXB0aW9uKQogICAgIHsKICAgICAgICAgYXNzZXJ0KGFjdHVhbCA9PT0g
dHJ1ZSwgImFzc2VydF90cnVlIiwgZGVzY3JpcHRpb24sCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJleHBlY3RlZCB0cnVlIGdvdCAke2FjdHVhbH0iLCB7YWN0dWFsOmFjdHVhbH0p
OwogICAgIH0KLSAgICBleHBvc2UoYXNzZXJ0X3RydWUsICJhc3NlcnRfdHJ1ZSIpOworICAgIGV4
cG9zZV9hc3NlcnQoYXNzZXJ0X3RydWUsICJhc3NlcnRfdHJ1ZSIpOwogCiAgICAgZnVuY3Rpb24g
YXNzZXJ0X2ZhbHNlKGFjdHVhbCwgZGVzY3JpcHRpb24pCiAgICAgewogICAgICAgICBhc3NlcnQo
YWN0dWFsID09PSBmYWxzZSwgImFzc2VydF9mYWxzZSIsIGRlc2NyaXB0aW9uLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIGZhbHNlIGdvdCAke2FjdHVhbH0iLCB7
YWN0dWFsOmFjdHVhbH0pOwogICAgIH0KLSAgICBleHBvc2UoYXNzZXJ0X2ZhbHNlLCAiYXNzZXJ0
X2ZhbHNlIik7CisgICAgZXhwb3NlX2Fzc2VydChhc3NlcnRfZmFsc2UsICJhc3NlcnRfZmFsc2Ui
KTsKIAogICAgIGZ1bmN0aW9uIHNhbWVfdmFsdWUoeCwgeSkgewogICAgICAgICBpZiAoeSAhPT0g
eSkgewpAQCAtMTAyNiw3ICsxMjQ4LDcgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3Jt
cyBbM10uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhw
ZWN0ZWQgJHtleHBlY3RlZH0gYnV0IGdvdCAke2FjdHVhbH0iLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAge2V4cGVjdGVkOmV4cGVjdGVkLCBhY3R1YWw6YWN0
dWFsfSk7CiAgICAgfQotICAgIGV4cG9zZShhc3NlcnRfZXF1YWxzLCAiYXNzZXJ0X2VxdWFscyIp
OworICAgIGV4cG9zZV9hc3NlcnQoYXNzZXJ0X2VxdWFscywgImFzc2VydF9lcXVhbHMiKTsKIAog
ICAgIGZ1bmN0aW9uIGFzc2VydF9ub3RfZXF1YWxzKGFjdHVhbCwgZXhwZWN0ZWQsIGRlc2NyaXB0
aW9uKQogICAgIHsKQEAgLTEwMzgsNyArMTI2MCw3IEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRp
b24gZm9ybXMgWzNdLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJnb3QgZGlzYWxsb3dlZCB2YWx1ZSAke2FjdHVhbH0iLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHthY3R1YWw6YWN0dWFsfSk7CiAgICAgfQotICAg
IGV4cG9zZShhc3NlcnRfbm90X2VxdWFscywgImFzc2VydF9ub3RfZXF1YWxzIik7CisgICAgZXhw
b3NlX2Fzc2VydChhc3NlcnRfbm90X2VxdWFscywgImFzc2VydF9ub3RfZXF1YWxzIik7CiAKICAg
ICBmdW5jdGlvbiBhc3NlcnRfaW5fYXJyYXkoYWN0dWFsLCBleHBlY3RlZCwgZGVzY3JpcHRpb24p
CiAgICAgewpAQCAtMTA0Niw4ICsxMjY4LDEwIEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24g
Zm9ybXMgWzNdLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAidmFsdWUgJHthY3R1YWx9IG5vdCBpbiBhcnJheSAke2V4cGVjdGVkfSIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHthY3R1YWw6YWN0dWFsLCBleHBl
Y3RlZDpleHBlY3RlZH0pOwogICAgIH0KLSAgICBleHBvc2UoYXNzZXJ0X2luX2FycmF5LCAiYXNz
ZXJ0X2luX2FycmF5Iik7CisgICAgZXhwb3NlX2Fzc2VydChhc3NlcnRfaW5fYXJyYXksICJhc3Nl
cnRfaW5fYXJyYXkiKTsKIAorICAgIC8vIFRoaXMgZnVuY3Rpb24gd2FzIGRlcHJlY2F0ZWQgaW4g
SnVseSBvZiAyMDE1LgorICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3Jt
LXRlc3RzL3dwdC9pc3N1ZXMvMjAzMwogICAgIGZ1bmN0aW9uIGFzc2VydF9vYmplY3RfZXF1YWxz
KGFjdHVhbCwgZXhwZWN0ZWQsIGRlc2NyaXB0aW9uKQogICAgIHsKICAgICAgICAgIGFzc2VydCh0
eXBlb2YgYWN0dWFsID09PSAib2JqZWN0IiAmJiBhY3R1YWwgIT09IG51bGwsICJhc3NlcnRfb2Jq
ZWN0X2VxdWFscyIsIGRlc2NyaXB0aW9uLApAQCAtMTA3MCw3ICsxMjk0LDcgQEAgcG9saWNpZXMg
YW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICAgICAgICAgICBhc3NlcnQoc2FtZV92YWx1ZShhY3R1YWxbcF0sIGV4cGVjdGVk
W3BdKSwgImFzc2VydF9vYmplY3RfZXF1YWxzIiwgZGVzY3JpcHRpb24sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInByb3BlcnR5ICR7cH0g
ZXhwZWN0ZWQgJHtleHBlY3RlZH0gZ290ICR7YWN0dWFsfSIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3A6cCwgZXhwZWN0ZWQ6ZXhwZWN0
ZWQsIGFjdHVhbDphY3R1YWx9KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB7cDpwLCBleHBlY3RlZDpleHBlY3RlZFtwXSwgYWN0dWFsOmFj
dHVhbFtwXX0pOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgIGZvciAocCBpbiBleHBlY3RlZCkgewpAQCAtMTA4MiwzMiArMTMwNiw2NCBAQCBwb2xpY2ll
cyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgIH0KICAgICAgICAgIGNoZWNr
X2VxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIFtdKTsKICAgICB9Ci0gICAgZXhwb3NlKGFzc2VydF9v
YmplY3RfZXF1YWxzLCAiYXNzZXJ0X29iamVjdF9lcXVhbHMiKTsKKyAgICBleHBvc2VfYXNzZXJ0
KGFzc2VydF9vYmplY3RfZXF1YWxzLCAiYXNzZXJ0X29iamVjdF9lcXVhbHMiKTsKIAogICAgIGZ1
bmN0aW9uIGFzc2VydF9hcnJheV9lcXVhbHMoYWN0dWFsLCBleHBlY3RlZCwgZGVzY3JpcHRpb24p
CiAgICAgeworICAgICAgICBjb25zdCBtYXhfYXJyYXlfbGVuZ3RoID0gMjA7CisgICAgICAgIGZ1
bmN0aW9uIHNob3J0ZW5fYXJyYXkoYXJyLCBvZmZzZXQgPSAwKSB7CisgICAgICAgICAgICAvLyBN
YWtlICIsIOKApiIgb25seSBzaG93IHVwIHdoZW4gaXQgd291bGQgbGlrZWx5IHJlZHVjZSB0aGUg
bGVuZ3RoLCBub3QgYWNjb3VudGluZyBmb3IKKyAgICAgICAgICAgIC8vIGZvbnRzLgorICAgICAg
ICAgICAgaWYgKGFyci5sZW5ndGggPCBtYXhfYXJyYXlfbGVuZ3RoICsgMikgeworICAgICAgICAg
ICAgICAgIHJldHVybiBhcnI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBCeSBkZWZh
dWx0IHdlIHdhbnQgaGFsZiB0aGUgZWxlbWVudHMgYWZ0ZXIgdGhlIG9mZnNldCBhbmQgaGFsZiBi
ZWZvcmUKKyAgICAgICAgICAgIC8vIEJ1dCBpZiB0aGF0IHRha2VzIHVzIHBhc3QgdGhlIGVuZCBv
ZiB0aGUgYXJyYXksIHdlIGhhdmUgbW9yZSBiZWZvcmUsIGFuZAorICAgICAgICAgICAgLy8gaWYg
aXQgdGFrZXMgdXMgYmVmb3JlIHRoZSBzdGFydCB3ZSBoYXZlIG1vcmUgYWZ0ZXIuCisgICAgICAg
ICAgICBjb25zdCBsZW5ndGhfYWZ0ZXJfb2Zmc2V0ID0gTWF0aC5mbG9vcihtYXhfYXJyYXlfbGVu
Z3RoIC8gMik7CisgICAgICAgICAgICBsZXQgdXBwZXJfYm91bmQgPSBNYXRoLm1pbihsZW5ndGhf
YWZ0ZXJfb2Zmc2V0ICsgb2Zmc2V0LCBhcnIubGVuZ3RoKTsKKyAgICAgICAgICAgIGNvbnN0IGxv
d2VyX2JvdW5kID0gTWF0aC5tYXgodXBwZXJfYm91bmQgLSBtYXhfYXJyYXlfbGVuZ3RoLCAwKTsK
KworICAgICAgICAgICAgaWYgKGxvd2VyX2JvdW5kID09PSAwKSB7CisgICAgICAgICAgICAgICAg
dXBwZXJfYm91bmQgPSBtYXhfYXJyYXlfbGVuZ3RoOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBjb25zdCBvdXRwdXQgPSBhcnIuc2xpY2UobG93ZXJfYm91bmQsIHVwcGVyX2JvdW5kKTsK
KyAgICAgICAgICAgIGlmIChsb3dlcl9ib3VuZCA+IDApIHsKKyAgICAgICAgICAgICAgICBvdXRw
dXQuYmVnaW5FbGxpcHNpcyA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAo
dXBwZXJfYm91bmQgPCBhcnIubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgb3V0cHV0LmVuZEVs
bGlwc2lzID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBvdXRwdXQ7
CisgICAgICAgIH0KKwogICAgICAgICBhc3NlcnQodHlwZW9mIGFjdHVhbCA9PT0gIm9iamVjdCIg
JiYgYWN0dWFsICE9PSBudWxsICYmICJsZW5ndGgiIGluIGFjdHVhbCwKICAgICAgICAgICAgICAg
ICJhc3NlcnRfYXJyYXlfZXF1YWxzIiwgZGVzY3JpcHRpb24sCiAgICAgICAgICAgICAgICAidmFs
dWUgaXMgJHthY3R1YWx9LCBleHBlY3RlZCBhcnJheSIsCiAgICAgICAgICAgICAgICB7YWN0dWFs
OmFjdHVhbH0pOwogICAgICAgICBhc3NlcnQoYWN0dWFsLmxlbmd0aCA9PT0gZXhwZWN0ZWQubGVu
Z3RoLAogICAgICAgICAgICAgICAgImFzc2VydF9hcnJheV9lcXVhbHMiLCBkZXNjcmlwdGlvbiwK
LSAgICAgICAgICAgICAgICJsZW5ndGhzIGRpZmZlciwgZXhwZWN0ZWQgJHtleHBlY3RlZH0gZ290
ICR7YWN0dWFsfSIsCi0gICAgICAgICAgICAgICB7ZXhwZWN0ZWQ6ZXhwZWN0ZWQubGVuZ3RoLCBh
Y3R1YWw6YWN0dWFsLmxlbmd0aH0pOworICAgICAgICAgICAgICAgImxlbmd0aHMgZGlmZmVyLCBl
eHBlY3RlZCBhcnJheSAke2V4cGVjdGVkfSBsZW5ndGggJHtleHBlY3RlZExlbmd0aH0sIGdvdCAk
e2FjdHVhbH0gbGVuZ3RoICR7YWN0dWFsTGVuZ3RofSIsCisgICAgICAgICAgICAgICB7ZXhwZWN0
ZWQ6c2hvcnRlbl9hcnJheShleHBlY3RlZCwgZXhwZWN0ZWQubGVuZ3RoIC0gMSksIGV4cGVjdGVk
TGVuZ3RoOmV4cGVjdGVkLmxlbmd0aCwKKyAgICAgICAgICAgICAgICBhY3R1YWw6c2hvcnRlbl9h
cnJheShhY3R1YWwsIGFjdHVhbC5sZW5ndGggLSAxKSwgYWN0dWFsTGVuZ3RoOmFjdHVhbC5sZW5n
dGgKKyAgICAgICAgICAgICAgIH0pOwogCiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYWN0
dWFsLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICBhc3NlcnQoYWN0dWFsLmhhc093blByb3Bl
cnR5KGkpID09PSBleHBlY3RlZC5oYXNPd25Qcm9wZXJ0eShpKSwKICAgICAgICAgICAgICAgICAg
ICAiYXNzZXJ0X2FycmF5X2VxdWFscyIsIGRlc2NyaXB0aW9uLAotICAgICAgICAgICAgICAgICAg
ICJwcm9wZXJ0eSAke2l9LCBwcm9wZXJ0eSBleHBlY3RlZCB0byBiZSAke2V4cGVjdGVkfSBidXQg
d2FzICR7YWN0dWFsfSIsCisgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIHByb3BlcnR5ICR7
aX0gdG8gYmUgJHtleHBlY3RlZH0gYnV0IHdhcyAke2FjdHVhbH0gKGV4cGVjdGVkIGFycmF5ICR7
YXJyYXlFeHBlY3RlZH0gZ290ICR7YXJyYXlBY3R1YWx9KSIsCiAgICAgICAgICAgICAgICAgICAg
e2k6aSwgZXhwZWN0ZWQ6ZXhwZWN0ZWQuaGFzT3duUHJvcGVydHkoaSkgPyAicHJlc2VudCIgOiAi
bWlzc2luZyIsCi0gICAgICAgICAgICAgICAgICAgYWN0dWFsOmFjdHVhbC5oYXNPd25Qcm9wZXJ0
eShpKSA/ICJwcmVzZW50IiA6ICJtaXNzaW5nIn0pOworICAgICAgICAgICAgICAgICAgICBhY3R1
YWw6YWN0dWFsLmhhc093blByb3BlcnR5KGkpID8gInByZXNlbnQiIDogIm1pc3NpbmciLAorICAg
ICAgICAgICAgICAgICAgICBhcnJheUV4cGVjdGVkOnNob3J0ZW5fYXJyYXkoZXhwZWN0ZWQsIGkp
LCBhcnJheUFjdHVhbDpzaG9ydGVuX2FycmF5KGFjdHVhbCwgaSl9KTsKICAgICAgICAgICAgIGFz
c2VydChzYW1lX3ZhbHVlKGV4cGVjdGVkW2ldLCBhY3R1YWxbaV0pLAogICAgICAgICAgICAgICAg
ICAgICJhc3NlcnRfYXJyYXlfZXF1YWxzIiwgZGVzY3JpcHRpb24sCi0gICAgICAgICAgICAgICAg
ICAgInByb3BlcnR5ICR7aX0sIGV4cGVjdGVkICR7ZXhwZWN0ZWR9IGJ1dCBnb3QgJHthY3R1YWx9
IiwKLSAgICAgICAgICAgICAgICAgICB7aTppLCBleHBlY3RlZDpleHBlY3RlZFtpXSwgYWN0dWFs
OmFjdHVhbFtpXX0pOworICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCBwcm9wZXJ0eSAke2l9
IHRvIGJlICR7ZXhwZWN0ZWR9IGJ1dCBnb3QgJHthY3R1YWx9IChleHBlY3RlZCBhcnJheSAke2Fy
cmF5RXhwZWN0ZWR9IGdvdCAke2FycmF5QWN0dWFsfSkiLAorICAgICAgICAgICAgICAgICAgIHtp
OmksIGV4cGVjdGVkOmV4cGVjdGVkW2ldLCBhY3R1YWw6YWN0dWFsW2ldLAorICAgICAgICAgICAg
ICAgICAgICBhcnJheUV4cGVjdGVkOnNob3J0ZW5fYXJyYXkoZXhwZWN0ZWQsIGkpLCBhcnJheUFj
dHVhbDpzaG9ydGVuX2FycmF5KGFjdHVhbCwgaSl9KTsKICAgICAgICAgfQogICAgIH0KLSAgICBl
eHBvc2UoYXNzZXJ0X2FycmF5X2VxdWFscywgImFzc2VydF9hcnJheV9lcXVhbHMiKTsKKyAgICBl
eHBvc2VfYXNzZXJ0KGFzc2VydF9hcnJheV9lcXVhbHMsICJhc3NlcnRfYXJyYXlfZXF1YWxzIik7
CiAKICAgICBmdW5jdGlvbiBhc3NlcnRfYXJyYXlfYXBwcm94X2VxdWFscyhhY3R1YWwsIGV4cGVj
dGVkLCBlcHNpbG9uLCBkZXNjcmlwdGlvbikKICAgICB7CkBAIC0xMTI0LDcgKzEzODAsNyBAQCBw
b2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgICAgICAgICAgICAi
YXNzZXJ0X2FycmF5X2FwcHJveF9lcXVhbHMiLCBkZXNjcmlwdGlvbiwKICAgICAgICAgICAgICAg
ICAgICAicHJvcGVydHkgJHtpfSwgcHJvcGVydHkgZXhwZWN0ZWQgdG8gYmUgJHtleHBlY3RlZH0g
YnV0IHdhcyAke2FjdHVhbH0iLAogICAgICAgICAgICAgICAgICAgIHtpOmksIGV4cGVjdGVkOmV4
cGVjdGVkLmhhc093blByb3BlcnR5KGkpID8gInByZXNlbnQiIDogIm1pc3NpbmciLAotICAgICAg
ICAgICAgICAgICAgIGFjdHVhbDphY3R1YWwuaGFzT3duUHJvcGVydHkoaSkgPyAicHJlc2VudCIg
OiAibWlzc2luZyJ9KTsKKyAgICAgICAgICAgICAgICAgICAgYWN0dWFsOmFjdHVhbC5oYXNPd25Q
cm9wZXJ0eShpKSA/ICJwcmVzZW50IiA6ICJtaXNzaW5nIn0pOwogICAgICAgICAgICAgYXNzZXJ0
KHR5cGVvZiBhY3R1YWxbaV0gPT09ICJudW1iZXIiLAogICAgICAgICAgICAgICAgICAgICJhc3Nl
cnRfYXJyYXlfYXBwcm94X2VxdWFscyIsIGRlc2NyaXB0aW9uLAogICAgICAgICAgICAgICAgICAg
ICJwcm9wZXJ0eSAke2l9LCBleHBlY3RlZCBhIG51bWJlciBidXQgZ290IGEgJHt0eXBlX2FjdHVh
bH0iLApAQCAtMTEzNSw3ICsxMzkxLDcgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3Jt
cyBbM10uCiAgICAgICAgICAgICAgICAgICAge2k6aSwgZXhwZWN0ZWQ6ZXhwZWN0ZWRbaV0sIGFj
dHVhbDphY3R1YWxbaV0sIGVwc2lsb246ZXBzaWxvbn0pOwogICAgICAgICB9CiAgICAgfQotICAg
IGV4cG9zZShhc3NlcnRfYXJyYXlfYXBwcm94X2VxdWFscywgImFzc2VydF9hcnJheV9hcHByb3hf
ZXF1YWxzIik7CisgICAgZXhwb3NlX2Fzc2VydChhc3NlcnRfYXJyYXlfYXBwcm94X2VxdWFscywg
ImFzc2VydF9hcnJheV9hcHByb3hfZXF1YWxzIik7CiAKICAgICBmdW5jdGlvbiBhc3NlcnRfYXBw
cm94X2VxdWFscyhhY3R1YWwsIGV4cGVjdGVkLCBlcHNpbG9uLCBkZXNjcmlwdGlvbikKICAgICB7
CkBAIC0xMTQ3LDEyICsxNDAzLDE4IEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMg
WzNdLgogICAgICAgICAgICAgICAgImV4cGVjdGVkIGEgbnVtYmVyIGJ1dCBnb3QgYSAke3R5cGVf
YWN0dWFsfSIsCiAgICAgICAgICAgICAgICB7dHlwZV9hY3R1YWw6dHlwZW9mIGFjdHVhbH0pOwog
Ci0gICAgICAgIGFzc2VydChNYXRoLmFicyhhY3R1YWwgLSBleHBlY3RlZCkgPD0gZXBzaWxvbiwK
LSAgICAgICAgICAgICAgICJhc3NlcnRfYXBwcm94X2VxdWFscyIsIGRlc2NyaXB0aW9uLAotICAg
ICAgICAgICAgICAgImV4cGVjdGVkICR7ZXhwZWN0ZWR9ICsvLSAke2Vwc2lsb259IGJ1dCBnb3Qg
JHthY3R1YWx9IiwKLSAgICAgICAgICAgICAgIHtleHBlY3RlZDpleHBlY3RlZCwgYWN0dWFsOmFj
dHVhbCwgZXBzaWxvbjplcHNpbG9ufSk7CisgICAgICAgIC8vIFRoZSBlcHNpbG9uIG1hdGggYmVs
b3cgZG9lcyBub3QgcGxhY2UgbmljZSB3aXRoIE5hTiBhbmQgSW5maW5pdHkKKyAgICAgICAgLy8g
QnV0IGluIHRoaXMgY2FzZSBJbmZpbml0eSA9IEluZmluaXR5IGFuZCBOYU4gPSBOYU4KKyAgICAg
ICAgaWYgKGlzRmluaXRlKGFjdHVhbCkgfHwgaXNGaW5pdGUoZXhwZWN0ZWQpKSB7CisgICAgICAg
ICAgICBhc3NlcnQoTWF0aC5hYnMoYWN0dWFsIC0gZXhwZWN0ZWQpIDw9IGVwc2lsb24sCisgICAg
ICAgICAgICAgICAgICAgImFzc2VydF9hcHByb3hfZXF1YWxzIiwgZGVzY3JpcHRpb24sCisgICAg
ICAgICAgICAgICAgICAgImV4cGVjdGVkICR7ZXhwZWN0ZWR9ICsvLSAke2Vwc2lsb259IGJ1dCBn
b3QgJHthY3R1YWx9IiwKKyAgICAgICAgICAgICAgICAgICB7ZXhwZWN0ZWQ6ZXhwZWN0ZWQsIGFj
dHVhbDphY3R1YWwsIGVwc2lsb246ZXBzaWxvbn0pOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgYXNzZXJ0X2VxdWFscyhhY3R1YWwsIGV4cGVjdGVkKTsKKyAgICAgICAgfQogICAgIH0K
LSAgICBleHBvc2UoYXNzZXJ0X2FwcHJveF9lcXVhbHMsICJhc3NlcnRfYXBwcm94X2VxdWFscyIp
OworICAgIGV4cG9zZV9hc3NlcnQoYXNzZXJ0X2FwcHJveF9lcXVhbHMsICJhc3NlcnRfYXBwcm94
X2VxdWFscyIpOwogCiAgICAgZnVuY3Rpb24gYXNzZXJ0X2xlc3NfdGhhbihhY3R1YWwsIGV4cGVj
dGVkLCBkZXNjcmlwdGlvbikKICAgICB7CkBAIC0xMTY5LDcgKzE0MzEsNyBAQCBwb2xpY2llcyBh
bmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgICAgICAgICJleHBlY3RlZCBhIG51
bWJlciBsZXNzIHRoYW4gJHtleHBlY3RlZH0gYnV0IGdvdCAke2FjdHVhbH0iLAogICAgICAgICAg
ICAgICAge2V4cGVjdGVkOmV4cGVjdGVkLCBhY3R1YWw6YWN0dWFsfSk7CiAgICAgfQotICAgIGV4
cG9zZShhc3NlcnRfbGVzc190aGFuLCAiYXNzZXJ0X2xlc3NfdGhhbiIpOworICAgIGV4cG9zZV9h
c3NlcnQoYXNzZXJ0X2xlc3NfdGhhbiwgImFzc2VydF9sZXNzX3RoYW4iKTsKIAogICAgIGZ1bmN0
aW9uIGFzc2VydF9ncmVhdGVyX3RoYW4oYWN0dWFsLCBleHBlY3RlZCwgZGVzY3JpcHRpb24pCiAg
ICAgewpAQCAtMTE4Niw3ICsxNDQ4LDcgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3Jt
cyBbM10uCiAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgYSBudW1iZXIgZ3JlYXRlciB0aGFuICR7
ZXhwZWN0ZWR9IGJ1dCBnb3QgJHthY3R1YWx9IiwKICAgICAgICAgICAgICAgIHtleHBlY3RlZDpl
eHBlY3RlZCwgYWN0dWFsOmFjdHVhbH0pOwogICAgIH0KLSAgICBleHBvc2UoYXNzZXJ0X2dyZWF0
ZXJfdGhhbiwgImFzc2VydF9ncmVhdGVyX3RoYW4iKTsKKyAgICBleHBvc2VfYXNzZXJ0KGFzc2Vy
dF9ncmVhdGVyX3RoYW4sICJhc3NlcnRfZ3JlYXRlcl90aGFuIik7CiAKICAgICBmdW5jdGlvbiBh
c3NlcnRfYmV0d2Vlbl9leGNsdXNpdmUoYWN0dWFsLCBsb3dlciwgdXBwZXIsIGRlc2NyaXB0aW9u
KQogICAgIHsKQEAgLTEyMDQsNyArMTQ2Niw3IEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24g
Zm9ybXMgWzNdLgogICAgICAgICAgICAgICAgImFuZCBsZXNzIHRoYW4gJHt1cHBlcn0gYnV0IGdv
dCAke2FjdHVhbH0iLAogICAgICAgICAgICAgICAge2xvd2VyOmxvd2VyLCB1cHBlcjp1cHBlciwg
YWN0dWFsOmFjdHVhbH0pOwogICAgIH0KLSAgICBleHBvc2UoYXNzZXJ0X2JldHdlZW5fZXhjbHVz
aXZlLCAiYXNzZXJ0X2JldHdlZW5fZXhjbHVzaXZlIik7CisgICAgZXhwb3NlX2Fzc2VydChhc3Nl
cnRfYmV0d2Vlbl9leGNsdXNpdmUsICJhc3NlcnRfYmV0d2Vlbl9leGNsdXNpdmUiKTsKIAogICAg
IGZ1bmN0aW9uIGFzc2VydF9sZXNzX3RoYW5fZXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgZGVzY3Jp
cHRpb24pCiAgICAgewpAQCAtMTIyMSw3ICsxNDgzLDcgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1
dGlvbiBmb3JtcyBbM10uCiAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgYSBudW1iZXIgbGVzcyB0
aGFuIG9yIGVxdWFsIHRvICR7ZXhwZWN0ZWR9IGJ1dCBnb3QgJHthY3R1YWx9IiwKICAgICAgICAg
ICAgICAgIHtleHBlY3RlZDpleHBlY3RlZCwgYWN0dWFsOmFjdHVhbH0pOwogICAgIH0KLSAgICBl
eHBvc2UoYXNzZXJ0X2xlc3NfdGhhbl9lcXVhbCwgImFzc2VydF9sZXNzX3RoYW5fZXF1YWwiKTsK
KyAgICBleHBvc2VfYXNzZXJ0KGFzc2VydF9sZXNzX3RoYW5fZXF1YWwsICJhc3NlcnRfbGVzc190
aGFuX2VxdWFsIik7CiAKICAgICBmdW5jdGlvbiBhc3NlcnRfZ3JlYXRlcl90aGFuX2VxdWFsKGFj
dHVhbCwgZXhwZWN0ZWQsIGRlc2NyaXB0aW9uKQogICAgIHsKQEAgLTEyMzgsNyArMTUwMCw3IEBA
IHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAgICAgICAgICAgImV4
cGVjdGVkIGEgbnVtYmVyIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAke2V4cGVjdGVkfSBidXQg
Z290ICR7YWN0dWFsfSIsCiAgICAgICAgICAgICAgICB7ZXhwZWN0ZWQ6ZXhwZWN0ZWQsIGFjdHVh
bDphY3R1YWx9KTsKICAgICB9Ci0gICAgZXhwb3NlKGFzc2VydF9ncmVhdGVyX3RoYW5fZXF1YWws
ICJhc3NlcnRfZ3JlYXRlcl90aGFuX2VxdWFsIik7CisgICAgZXhwb3NlX2Fzc2VydChhc3NlcnRf
Z3JlYXRlcl90aGFuX2VxdWFsLCAiYXNzZXJ0X2dyZWF0ZXJfdGhhbl9lcXVhbCIpOwogCiAgICAg
ZnVuY3Rpb24gYXNzZXJ0X2JldHdlZW5faW5jbHVzaXZlKGFjdHVhbCwgbG93ZXIsIHVwcGVyLCBk
ZXNjcmlwdGlvbikKICAgICB7CkBAIC0xMjU2LDcgKzE1MTgsNyBAQCBwb2xpY2llcyBhbmQgY29u
dHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgICAgICAgICJhbmQgbGVzcyB0aGFuIG9yIGVx
dWFsIHRvICR7dXBwZXJ9IGJ1dCBnb3QgJHthY3R1YWx9IiwKICAgICAgICAgICAgICAgIHtsb3dl
cjpsb3dlciwgdXBwZXI6dXBwZXIsIGFjdHVhbDphY3R1YWx9KTsKICAgICB9Ci0gICAgZXhwb3Nl
KGFzc2VydF9iZXR3ZWVuX2luY2x1c2l2ZSwgImFzc2VydF9iZXR3ZWVuX2luY2x1c2l2ZSIpOwor
ICAgIGV4cG9zZV9hc3NlcnQoYXNzZXJ0X2JldHdlZW5faW5jbHVzaXZlLCAiYXNzZXJ0X2JldHdl
ZW5faW5jbHVzaXZlIik7CiAKICAgICBmdW5jdGlvbiBhc3NlcnRfcmVnZXhwX21hdGNoKGFjdHVh
bCwgZXhwZWN0ZWQsIGRlc2NyaXB0aW9uKSB7CiAgICAgICAgIC8qCkBAIC0xMjY3LDMzICsxNTI5
LDM4IEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAgICAgICAg
ICAgImV4cGVjdGVkICR7ZXhwZWN0ZWR9IGJ1dCBnb3QgJHthY3R1YWx9IiwKICAgICAgICAgICAg
ICAgIHtleHBlY3RlZDpleHBlY3RlZCwgYWN0dWFsOmFjdHVhbH0pOwogICAgIH0KLSAgICBleHBv
c2UoYXNzZXJ0X3JlZ2V4cF9tYXRjaCwgImFzc2VydF9yZWdleHBfbWF0Y2giKTsKKyAgICBleHBv
c2VfYXNzZXJ0KGFzc2VydF9yZWdleHBfbWF0Y2gsICJhc3NlcnRfcmVnZXhwX21hdGNoIik7CiAK
ICAgICBmdW5jdGlvbiBhc3NlcnRfY2xhc3Nfc3RyaW5nKG9iamVjdCwgY2xhc3Nfc3RyaW5nLCBk
ZXNjcmlwdGlvbikgewotICAgICAgICBhc3NlcnRfZXF1YWxzKHt9LnRvU3RyaW5nLmNhbGwob2Jq
ZWN0KSwgIltvYmplY3QgIiArIGNsYXNzX3N0cmluZyArICJdIiwKLSAgICAgICAgICAgICAgICAg
ICAgICBkZXNjcmlwdGlvbik7CisgICAgICAgIHZhciBhY3R1YWwgPSB7fS50b1N0cmluZy5jYWxs
KG9iamVjdCk7CisgICAgICAgIHZhciBleHBlY3RlZCA9ICJbb2JqZWN0ICIgKyBjbGFzc19zdHJp
bmcgKyAiXSI7CisgICAgICAgIGFzc2VydChzYW1lX3ZhbHVlKGFjdHVhbCwgZXhwZWN0ZWQpLCAi
YXNzZXJ0X2NsYXNzX3N0cmluZyIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkICR7ZXhwZWN0ZWR9IGJ1dCBnb3QgJHth
Y3R1YWx9IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtl
eHBlY3RlZDpleHBlY3RlZCwgYWN0dWFsOmFjdHVhbH0pOwogICAgIH0KLSAgICBleHBvc2UoYXNz
ZXJ0X2NsYXNzX3N0cmluZywgImFzc2VydF9jbGFzc19zdHJpbmciKTsKLQorICAgIGV4cG9zZV9h
c3NlcnQoYXNzZXJ0X2NsYXNzX3N0cmluZywgImFzc2VydF9jbGFzc19zdHJpbmciKTsKIAogICAg
IGZ1bmN0aW9uIGFzc2VydF9vd25fcHJvcGVydHkob2JqZWN0LCBwcm9wZXJ0eV9uYW1lLCBkZXNj
cmlwdGlvbikgewogICAgICAgICBhc3NlcnQob2JqZWN0Lmhhc093blByb3BlcnR5KHByb3BlcnR5
X25hbWUpLAogICAgICAgICAgICAgICAgImFzc2VydF9vd25fcHJvcGVydHkiLCBkZXNjcmlwdGlv
biwKICAgICAgICAgICAgICAgICJleHBlY3RlZCBwcm9wZXJ0eSAke3B9IG1pc3NpbmciLCB7cDpw
cm9wZXJ0eV9uYW1lfSk7CiAgICAgfQotICAgIGV4cG9zZShhc3NlcnRfb3duX3Byb3BlcnR5LCAi
YXNzZXJ0X293bl9wcm9wZXJ0eSIpOworICAgIGV4cG9zZV9hc3NlcnQoYXNzZXJ0X293bl9wcm9w
ZXJ0eSwgImFzc2VydF9vd25fcHJvcGVydHkiKTsKIAogICAgIGZ1bmN0aW9uIGFzc2VydF9ub3Rf
b3duX3Byb3BlcnR5KG9iamVjdCwgcHJvcGVydHlfbmFtZSwgZGVzY3JpcHRpb24pIHsKICAgICAg
ICAgYXNzZXJ0KCFvYmplY3QuaGFzT3duUHJvcGVydHkocHJvcGVydHlfbmFtZSksCiAgICAgICAg
ICAgICAgICAiYXNzZXJ0X25vdF9vd25fcHJvcGVydHkiLCBkZXNjcmlwdGlvbiwKICAgICAgICAg
ICAgICAgICJ1bmV4cGVjdGVkIHByb3BlcnR5ICR7cH0gaXMgZm91bmQgb24gb2JqZWN0Iiwge3A6
cHJvcGVydHlfbmFtZX0pOwogICAgIH0KLSAgICBleHBvc2UoYXNzZXJ0X25vdF9vd25fcHJvcGVy
dHksICJhc3NlcnRfbm90X293bl9wcm9wZXJ0eSIpOworICAgIGV4cG9zZV9hc3NlcnQoYXNzZXJ0
X25vdF9vd25fcHJvcGVydHksICJhc3NlcnRfbm90X293bl9wcm9wZXJ0eSIpOwogCiAgICAgZnVu
Y3Rpb24gX2Fzc2VydF9pbmhlcml0cyhuYW1lKSB7CiAgICAgICAgIHJldHVybiBmdW5jdGlvbiAo
b2JqZWN0LCBwcm9wZXJ0eV9uYW1lLCBkZXNjcmlwdGlvbikKICAgICAgICAgewotICAgICAgICAg
ICAgYXNzZXJ0KHR5cGVvZiBvYmplY3QgPT09ICJvYmplY3QiIHx8IHR5cGVvZiBvYmplY3QgPT09
ICJmdW5jdGlvbiIsCisgICAgICAgICAgICBhc3NlcnQoKHR5cGVvZiBvYmplY3QgPT09ICJvYmpl
Y3QiICYmIG9iamVjdCAhPT0gbnVsbCkgfHwKKyAgICAgICAgICAgICAgICAgICB0eXBlb2Ygb2Jq
ZWN0ID09PSAiZnVuY3Rpb24iIHx8CisgICAgICAgICAgICAgICAgICAgLy8gT3IgaGFzIFtbSXNI
VE1MRERBXV0gc2xvdAorICAgICAgICAgICAgICAgICAgIFN0cmluZyhvYmplY3QpID09PSAiW29i
amVjdCBIVE1MQWxsQ29sbGVjdGlvbl0iLAogICAgICAgICAgICAgICAgICAgIG5hbWUsIGRlc2Ny
aXB0aW9uLAogICAgICAgICAgICAgICAgICAgICJwcm92aWRlZCB2YWx1ZSBpcyBub3QgYW4gb2Jq
ZWN0Iik7CiAKQEAgLTEzMTIsOCArMTU3OSw4IEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24g
Zm9ybXMgWzNdLgogICAgICAgICAgICAgICAgICAgIHtwOnByb3BlcnR5X25hbWV9KTsKICAgICAg
ICAgfTsKICAgICB9Ci0gICAgZXhwb3NlKF9hc3NlcnRfaW5oZXJpdHMoImFzc2VydF9pbmhlcml0
cyIpLCAiYXNzZXJ0X2luaGVyaXRzIik7Ci0gICAgZXhwb3NlKF9hc3NlcnRfaW5oZXJpdHMoImFz
c2VydF9pZGxfYXR0cmlidXRlIiksICJhc3NlcnRfaWRsX2F0dHJpYnV0ZSIpOworICAgIGV4cG9z
ZV9hc3NlcnQoX2Fzc2VydF9pbmhlcml0cygiYXNzZXJ0X2luaGVyaXRzIiksICJhc3NlcnRfaW5o
ZXJpdHMiKTsKKyAgICBleHBvc2VfYXNzZXJ0KF9hc3NlcnRfaW5oZXJpdHMoImFzc2VydF9pZGxf
YXR0cmlidXRlIiksICJhc3NlcnRfaWRsX2F0dHJpYnV0ZSIpOwogCiAgICAgZnVuY3Rpb24gYXNz
ZXJ0X3JlYWRvbmx5KG9iamVjdCwgcHJvcGVydHlfbmFtZSwgZGVzY3JpcHRpb24pCiAgICAgewpA
QCAtMTMzMCw1MCArMTU5NywxNTYgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBb
M10uCiAgICAgICAgICAgICAgb2JqZWN0W3Byb3BlcnR5X25hbWVdID0gaW5pdGlhbF92YWx1ZTsK
ICAgICAgICAgIH0KICAgICB9Ci0gICAgZXhwb3NlKGFzc2VydF9yZWFkb25seSwgImFzc2VydF9y
ZWFkb25seSIpOworICAgIGV4cG9zZV9hc3NlcnQoYXNzZXJ0X3JlYWRvbmx5LCAiYXNzZXJ0X3Jl
YWRvbmx5Iik7CiAKICAgICAvKioKLSAgICAgKiBBc3NlcnQgYW4gRXhjZXB0aW9uIHdpdGggdGhl
IGV4cGVjdGVkIGNvZGUgaXMgdGhyb3duLgorICAgICAqIEFzc2VydCBhIEpTIEVycm9yIHdpdGgg
dGhlIGV4cGVjdGVkIGNvbnN0cnVjdG9yIGlzIHRocm93bi4KICAgICAgKgotICAgICAqIEBwYXJh
bSB7b2JqZWN0fG51bWJlcnxzdHJpbmd9IGNvZGUgVGhlIGV4cGVjdGVkIGV4Y2VwdGlvbiBjb2Rl
LgorICAgICAqIEBwYXJhbSB7b2JqZWN0fSBjb25zdHJ1Y3RvciBUaGUgZXhwZWN0ZWQgZXhjZXB0
aW9uIGNvbnN0cnVjdG9yLgogICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgRnVuY3Rpb24g
d2hpY2ggc2hvdWxkIHRocm93LgogICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjcmlwdGlvbiBF
cnJvciBkZXNjcmlwdGlvbiBmb3IgdGhlIGNhc2UgdGhhdCB0aGUgZXJyb3IgaXMgbm90IHRocm93
bi4KICAgICAgKi8KLSAgICBmdW5jdGlvbiBhc3NlcnRfdGhyb3dzKGNvZGUsIGZ1bmMsIGRlc2Ny
aXB0aW9uKQorICAgIGZ1bmN0aW9uIGFzc2VydF90aHJvd3NfanMoY29uc3RydWN0b3IsIGZ1bmMs
IGRlc2NyaXB0aW9uKQorICAgIHsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19qc19pbXBsKGNvbnN0
cnVjdG9yLCBmdW5jLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJhc3NlcnRfdGhyb3dzX2pzIik7CisgICAgfQorICAgIGV4cG9zZV9hc3NlcnQoYXNzZXJ0X3Ro
cm93c19qcywgImFzc2VydF90aHJvd3NfanMiKTsKKworICAgIC8qKgorICAgICAqIExpa2UgYXNz
ZXJ0X3Rocm93c19qcyBidXQgYWxsb3dzIHNwZWNpZnlpbmcgdGhlIGFzc2VydGlvbiB0eXBlCisg
ICAgICogKGFzc2VydF90aHJvd3NfanMgb3IgcHJvbWlzZV9yZWplY3RzX2pzLCBpbiBwcmFjdGlj
ZSkuCisgICAgICovCisgICAgZnVuY3Rpb24gYXNzZXJ0X3Rocm93c19qc19pbXBsKGNvbnN0cnVj
dG9yLCBmdW5jLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYXNzZXJ0aW9uX3R5cGUpCiAgICAgewogICAgICAgICB0cnkgewogICAgICAgICAgICAgZnVu
Yy5jYWxsKHRoaXMpOwotICAgICAgICAgICAgYXNzZXJ0KGZhbHNlLCAiYXNzZXJ0X3Rocm93cyIs
IGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgYXNzZXJ0KGZhbHNlLCBhc3NlcnRpb25fdHlwZSwg
ZGVzY3JpcHRpb24sCiAgICAgICAgICAgICAgICAgICAgIiR7ZnVuY30gZGlkIG5vdCB0aHJvdyIs
IHtmdW5jOmZ1bmN9KTsKICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgaWYgKGUg
aW5zdGFuY2VvZiBBc3NlcnRpb25FcnJvcikgewogICAgICAgICAgICAgICAgIHRocm93IGU7CiAg
ICAgICAgICAgICB9CiAKKyAgICAgICAgICAgIC8vIEJhc2ljIHNhbml0eS1jaGVja3Mgb24gdGhl
IHRocm93biBleGNlcHRpb24uCiAgICAgICAgICAgICBhc3NlcnQodHlwZW9mIGUgPT09ICJvYmpl
Y3QiLAotICAgICAgICAgICAgICAgICAgICJhc3NlcnRfdGhyb3dzIiwgZGVzY3JpcHRpb24sCisg
ICAgICAgICAgICAgICAgICAgYXNzZXJ0aW9uX3R5cGUsIGRlc2NyaXB0aW9uLAogICAgICAgICAg
ICAgICAgICAgICIke2Z1bmN9IHRocmV3ICR7ZX0gd2l0aCB0eXBlICR7dHlwZX0sIG5vdCBhbiBv
YmplY3QiLAogICAgICAgICAgICAgICAgICAgIHtmdW5jOmZ1bmMsIGU6ZSwgdHlwZTp0eXBlb2Yg
ZX0pOwogCiAgICAgICAgICAgICBhc3NlcnQoZSAhPT0gbnVsbCwKLSAgICAgICAgICAgICAgICAg
ICAiYXNzZXJ0X3Rocm93cyIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAgICAgIGFzc2Vy
dGlvbl90eXBlLCBkZXNjcmlwdGlvbiwKICAgICAgICAgICAgICAgICAgICAiJHtmdW5jfSB0aHJl
dyBudWxsLCBub3QgYW4gb2JqZWN0IiwKICAgICAgICAgICAgICAgICAgICB7ZnVuYzpmdW5jfSk7
CiAKLSAgICAgICAgICAgIGlmIChjb2RlID09PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgdGhy
b3cgbmV3IEFzc2VydGlvbkVycm9yKCdUZXN0IGJ1ZzogbmVlZCB0byBwYXNzIGV4Y2VwdGlvbiB0
byBhc3NlcnRfdGhyb3dzKCknKTsKKyAgICAgICAgICAgIC8vIEJhc2ljIHNhbml0eS1jaGVjayBv
biB0aGUgcGFzc2VkLWluIGNvbnN0cnVjdG9yCisgICAgICAgICAgICBhc3NlcnQodHlwZW9mIGNv
bnN0cnVjdG9yID09ICJmdW5jdGlvbiIsCisgICAgICAgICAgICAgICAgICAgYXNzZXJ0aW9uX3R5
cGUsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAgICAgICIke2NvbnN0cnVjdG9yfSBpcyBu
b3QgYSBjb25zdHJ1Y3RvciIsCisgICAgICAgICAgICAgICAgICAge2NvbnN0cnVjdG9yOmNvbnN0
cnVjdG9yfSk7CisgICAgICAgICAgICB2YXIgb2JqID0gY29uc3RydWN0b3I7CisgICAgICAgICAg
ICB3aGlsZSAob2JqKSB7CisgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvYmogPT09ICJmdW5j
dGlvbiIgJiYKKyAgICAgICAgICAgICAgICAgICAgb2JqLm5hbWUgPT09ICJFcnJvciIpIHsKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIG9iaiA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmopOwogICAgICAgICAgICAgfQotICAg
ICAgICAgICAgaWYgKHR5cGVvZiBjb2RlID09PSAib2JqZWN0IikgewotICAgICAgICAgICAgICAg
IGFzc2VydCgibmFtZSIgaW4gZSAmJiBlLm5hbWUgPT0gY29kZS5uYW1lLAotICAgICAgICAgICAg
ICAgICAgICAgICAiYXNzZXJ0X3Rocm93cyIsIGRlc2NyaXB0aW9uLAotICAgICAgICAgICAgICAg
ICAgICAgICAiJHtmdW5jfSB0aHJldyAke2FjdHVhbH0gKCR7YWN0dWFsX25hbWV9KSBleHBlY3Rl
ZCAke2V4cGVjdGVkfSAoJHtleHBlY3RlZF9uYW1lfSkiLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAge2Z1bmM6ZnVuYywgYWN0dWFsOmUsIGFjdHVhbF9uYW1lOmUubmFtZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZDpjb2RlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX25hbWU6Y29kZS5uYW1l
fSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgYXNzZXJ0KG9iaiAhPSBu
dWxsLAorICAgICAgICAgICAgICAgICAgIGFzc2VydGlvbl90eXBlLCBkZXNjcmlwdGlvbiwKKyAg
ICAgICAgICAgICAgICAgICAiJHtjb25zdHJ1Y3Rvcn0gaXMgbm90IGFuIEVycm9yIHN1YnR5cGUi
LAorICAgICAgICAgICAgICAgICAgIHtjb25zdHJ1Y3Rvcjpjb25zdHJ1Y3Rvcn0pOworCisgICAg
ICAgICAgICAvLyBBbmQgY2hlY2tpbmcgdGhhdCBvdXIgZXhjZXB0aW9uIGlzIHJlYXNvbmFibGUK
KyAgICAgICAgICAgIGFzc2VydChlLmNvbnN0cnVjdG9yID09PSBjb25zdHJ1Y3RvciAmJgorICAg
ICAgICAgICAgICAgICAgIGUubmFtZSA9PT0gY29uc3RydWN0b3IubmFtZSwKKyAgICAgICAgICAg
ICAgICAgICBhc3NlcnRpb25fdHlwZSwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAg
IiR7ZnVuY30gdGhyZXcgJHthY3R1YWx9ICgke2FjdHVhbF9uYW1lfSkgZXhwZWN0ZWQgaW5zdGFu
Y2Ugb2YgJHtleHBlY3RlZH0gKCR7ZXhwZWN0ZWRfbmFtZX0pIiwKKyAgICAgICAgICAgICAgICAg
ICB7ZnVuYzpmdW5jLCBhY3R1YWw6ZSwgYWN0dWFsX25hbWU6ZS5uYW1lLAorICAgICAgICAgICAg
ICAgICAgICBleHBlY3RlZDpjb25zdHJ1Y3RvciwKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0
ZWRfbmFtZTpjb25zdHJ1Y3Rvci5uYW1lfSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioK
KyAgICAgKiBBc3NlcnQgYSBET01FeGNlcHRpb24gd2l0aCB0aGUgZXhwZWN0ZWQgdHlwZSBpcyB0
aHJvd24uCisgICAgICoKKyAgICAgKiBAcGFyYW0ge251bWJlcnxzdHJpbmd9IHR5cGUgVGhlIGV4
cGVjdGVkIGV4Y2VwdGlvbiBuYW1lIG9yIGNvZGUuICBTZWUgdGhlCisgICAgICogICAgICAgIHRh
YmxlIG9mIG5hbWVzIGFuZCBjb2RlcyBhdAorICAgICAqICAgICAgICBodHRwczovL2hleWNhbS5n
aXRodWIuaW8vd2ViaWRsLyNkZm4tZXJyb3ItbmFtZXMtdGFibGUKKyAgICAgKiAgICAgICAgSWYg
YSBudW1iZXIgaXMgcGFzc2VkIGl0IHNob3VsZCBiZSBvbmUgb2YgdGhlIG51bWVyaWMgY29kZSB2
YWx1ZXMKKyAgICAgKiAgICAgICAgaW4gdGhhdCB0YWJsZSAoZS5nLiAzLCA0LCBldGMpLiAgSWYg
YSBzdHJpbmcgaXMgcGFzc2VkIGl0IGNhbgorICAgICAqICAgICAgICBlaXRoZXIgYmUgYW4gZXhj
ZXB0aW9uIG5hbWUgKGUuZy4gIkhpZXJhcmNoeVJlcXVlc3RFcnJvciIsCisgICAgICogICAgICAg
ICJXcm9uZ0RvY3VtZW50RXJyb3IiKSBvciB0aGUgbmFtZSBvZiB0aGUgY29ycmVzcG9uZGluZyBl
cnJvciBjb2RlCisgICAgICogICAgICAgIChlLmcuICJISUVSQVJDSFlfUkVRVUVTVF9FUlIiLCAi
V1JPTkdfRE9DVU1FTlRfRVJSIikuCisgICAgICoKKyAgICAgKiBGb3IgdGhlIHJlbWFpbmluZyBh
cmd1bWVudHMsIHRoZXJlIGFyZSB0d28gd2F5cyBvZiBjYWxsaW5nCisgICAgICogcHJvbWlzZV9y
ZWplY3RzX2RvbToKKyAgICAgKgorICAgICAqIDEpIElmIHRoZSBET01FeGNlcHRpb24gaXMgZXhw
ZWN0ZWQgdG8gY29tZSBmcm9tIHRoZSBjdXJyZW50IGdsb2JhbCwgdGhlCisgICAgICogc2Vjb25k
IGFyZ3VtZW50IHNob3VsZCBiZSB0aGUgZnVuY3Rpb24gZXhwZWN0ZWQgdG8gdGhyb3cgYW5kIGEg
dGhpcmQsCisgICAgICogb3B0aW9uYWwsIGFyZ3VtZW50IGlzIHRoZSBhc3NlcnRpb24gZGVzY3Jp
cHRpb24uCisgICAgICoKKyAgICAgKiAyKSBJZiB0aGUgRE9NRXhjZXB0aW9uIGlzIGV4cGVjdGVk
IHRvIGNvbWUgZnJvbSBzb21lIG90aGVyIGdsb2JhbCwgdGhlCisgICAgICogc2Vjb25kIGFyZ3Vt
ZW50IHNob3VsZCBiZSB0aGUgRE9NRXhjZXB0aW9uIGNvbnN0cnVjdG9yIGZyb20gdGhhdCBnbG9i
YWwsCisgICAgICogdGhlIHRoaXJkIGFyZ3VtZW50IHRoZSBmdW5jdGlvbiBleHBlY3RlZCB0byB0
aHJvdywgYW5kIHRoZSBmb3VydGgsIG9wdGlvbmFsLAorICAgICAqIGFyZ3VtZW50IHRoZSBhc3Nl
cnRpb24gZGVzY3JpcHRpb24uCisgICAgICovCisgICAgZnVuY3Rpb24gYXNzZXJ0X3Rocm93c19k
b20odHlwZSwgZnVuY09yQ29uc3RydWN0b3IsIGRlc2NyaXB0aW9uT3JGdW5jLCBtYXliZURlc2Ny
aXB0aW9uKQorICAgIHsKKyAgICAgICAgbGV0IGNvbnN0cnVjdG9yLCBmdW5jLCBkZXNjcmlwdGlv
bjsKKyAgICAgICAgaWYgKGZ1bmNPckNvbnN0cnVjdG9yLm5hbWUgPT09ICJET01FeGNlcHRpb24i
KSB7CisgICAgICAgICAgICBjb25zdHJ1Y3RvciA9IGZ1bmNPckNvbnN0cnVjdG9yOworICAgICAg
ICAgICAgZnVuYyA9IGRlc2NyaXB0aW9uT3JGdW5jOworICAgICAgICAgICAgZGVzY3JpcHRpb24g
PSBtYXliZURlc2NyaXB0aW9uOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgY29uc3Ry
dWN0b3IgPSBzZWxmLkRPTUV4Y2VwdGlvbjsKKyAgICAgICAgICAgIGZ1bmMgPSBmdW5jT3JDb25z
dHJ1Y3RvcjsKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb25PckZ1bmM7Cisg
ICAgICAgICAgICBhc3NlcnQobWF5YmVEZXNjcmlwdGlvbiA9PT0gdW5kZWZpbmVkLAorICAgICAg
ICAgICAgICAgICAgICJUb28gbWFueSBhcmdzIHBhc2VkIHRvIG5vLWNvbnN0cnVjdG9yIHZlcnNp
b24gb2YgYXNzZXJ0X3Rocm93c19kb20iKTsKKyAgICAgICAgfQorICAgICAgICBhc3NlcnRfdGhy
b3dzX2RvbV9pbXBsKHR5cGUsIGZ1bmMsIGRlc2NyaXB0aW9uLCAiYXNzZXJ0X3Rocm93c19kb20i
LCBjb25zdHJ1Y3RvcikKKyAgICB9CisgICAgZXhwb3NlX2Fzc2VydChhc3NlcnRfdGhyb3dzX2Rv
bSwgImFzc2VydF90aHJvd3NfZG9tIik7CisKKyAgICAvKioKKyAgICAgKiBTaW1pbGFyIHRvIGFz
c2VydF90aHJvd3NfZG9tIGJ1dCBhbGxvd3Mgc3BlY2lmeWluZyB0aGUgYXNzZXJ0aW9uIHR5cGUK
KyAgICAgKiAoYXNzZXJ0X3Rocm93c19kb20gb3IgcHJvbWlzZV9yZWplY3RzX2RvbSwgaW4gcHJh
Y3RpY2UpLiAgVGhlCisgICAgICogImNvbnN0cnVjdG9yIiBhcmd1bWVudCBtdXN0IGJlIHRoZSBE
T01FeGNlcHRpb24gY29uc3RydWN0b3IgZnJvbSB0aGUKKyAgICAgKiBnbG9iYWwgd2UgZXhwZWN0
IHRoZSBleGNlcHRpb24gdG8gY29tZSBmcm9tLgorICAgICAqLworICAgIGZ1bmN0aW9uIGFzc2Vy
dF90aHJvd3NfZG9tX2ltcGwodHlwZSwgZnVuYywgZGVzY3JpcHRpb24sIGFzc2VydGlvbl90eXBl
LCBjb25zdHJ1Y3RvcikKKyAgICB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBmdW5jLmNh
bGwodGhpcyk7CisgICAgICAgICAgICBhc3NlcnQoZmFsc2UsIGFzc2VydGlvbl90eXBlLCBkZXNj
cmlwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAiJHtmdW5jfSBkaWQgbm90IHRocm93Iiwge2Z1
bmM6ZnVuY30pOworICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICBpZiAoZSBpbnN0
YW5jZW9mIEFzc2VydGlvbkVycm9yKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgZTsKICAgICAg
ICAgICAgIH0KIAotICAgICAgICAgICAgdmFyIGNvZGVfbmFtZV9tYXAgPSB7CisgICAgICAgICAg
ICAvLyBCYXNpYyBzYW5pdHktY2hlY2tzIG9uIHRoZSB0aHJvd24gZXhjZXB0aW9uLgorICAgICAg
ICAgICAgYXNzZXJ0KHR5cGVvZiBlID09PSAib2JqZWN0IiwKKyAgICAgICAgICAgICAgICAgICBh
c3NlcnRpb25fdHlwZSwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgIiR7ZnVuY30g
dGhyZXcgJHtlfSB3aXRoIHR5cGUgJHt0eXBlfSwgbm90IGFuIG9iamVjdCIsCisgICAgICAgICAg
ICAgICAgICAge2Z1bmM6ZnVuYywgZTplLCB0eXBlOnR5cGVvZiBlfSk7CisKKyAgICAgICAgICAg
IGFzc2VydChlICE9PSBudWxsLAorICAgICAgICAgICAgICAgICAgIGFzc2VydGlvbl90eXBlLCBk
ZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAiJHtmdW5jfSB0aHJldyBudWxsLCBub3Qg
YW4gb2JqZWN0IiwKKyAgICAgICAgICAgICAgICAgICB7ZnVuYzpmdW5jfSk7CisKKyAgICAgICAg
ICAgIC8vIFNhbml0eS1jaGVjayBvdXIgdHlwZQorICAgICAgICAgICAgYXNzZXJ0KHR5cGVvZiB0
eXBlID09ICJudW1iZXIiIHx8CisgICAgICAgICAgICAgICAgICAgdHlwZW9mIHR5cGUgPT0gInN0
cmluZyIsCisgICAgICAgICAgICAgICAgICAgYXNzZXJ0aW9uX3R5cGUsIGRlc2NyaXB0aW9uLAor
ICAgICAgICAgICAgICAgICAgICIke3R5cGV9IGlzIG5vdCBhIG51bWJlciBvciBzdHJpbmciLAor
ICAgICAgICAgICAgICAgICAgIHt0eXBlOnR5cGV9KTsKKworICAgICAgICAgICAgdmFyIGNvZGVu
YW1lX25hbWVfbWFwID0gewogICAgICAgICAgICAgICAgIElOREVYX1NJWkVfRVJSOiAnSW5kZXhT
aXplRXJyb3InLAogICAgICAgICAgICAgICAgIEhJRVJBUkNIWV9SRVFVRVNUX0VSUjogJ0hpZXJh
cmNoeVJlcXVlc3RFcnJvcicsCiAgICAgICAgICAgICAgICAgV1JPTkdfRE9DVU1FTlRfRVJSOiAn
V3JvbmdEb2N1bWVudEVycm9yJywKQEAgLTEzOTgsOCArMTc3MSw2IEBAIHBvbGljaWVzIGFuZCBj
b250cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAgICAgICAgICAgIERBVEFfQ0xPTkVfRVJSOiAn
RGF0YUNsb25lRXJyb3InCiAgICAgICAgICAgICB9OwogCi0gICAgICAgICAgICB2YXIgbmFtZSA9
IGNvZGUgaW4gY29kZV9uYW1lX21hcCA/IGNvZGVfbmFtZV9tYXBbY29kZV0gOiBjb2RlOwotCiAg
ICAgICAgICAgICB2YXIgbmFtZV9jb2RlX21hcCA9IHsKICAgICAgICAgICAgICAgICBJbmRleFNp
emVFcnJvcjogMSwKICAgICAgICAgICAgICAgICBIaWVyYXJjaHlSZXF1ZXN0RXJyb3I6IDMsCkBA
IC0xNDQzLDE5ICsxODE0LDIzIEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNd
LgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgdmFyIHJl
cXVpcmVkX3Byb3BzID0geyBjb2RlOiBjb2RlIH07CisgICAgICAgICAgICB2YXIgcmVxdWlyZWRf
cHJvcHMgPSB7fTsKKyAgICAgICAgICAgIHZhciBuYW1lOwogCi0gICAgICAgICAgICBpZiAodHlw
ZW9mIGNvZGUgPT09ICJudW1iZXIiKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNvZGUgPT09IDAp
IHsKLSAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbkVycm9yKCdUZXN0IGJ1
ZzogYW1iaWd1b3VzIERPTUV4Y2VwdGlvbiBjb2RlIDAgcGFzc2VkIHRvIGFzc2VydF90aHJvd3Mo
KScpOwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIShjb2RlIGluIGNvZGVfbmFtZV9tYXAp
KSB7Ci0gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25FcnJvcignVGVzdCBi
dWc6IHVucmVjb2duaXplZCBET01FeGNlcHRpb24gY29kZSAiJyArIGNvZGUgKyAnIiBwYXNzZWQg
dG8gYXNzZXJ0X3Rocm93cygpJyk7CisgICAgICAgICAgICBpZiAodHlwZW9mIHR5cGUgPT09ICJu
dW1iZXIiKSB7CisgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09IDApIHsKKyAgICAgICAgICAg
ICAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbkVycm9yKCdUZXN0IGJ1ZzogYW1iaWd1b3VzIERP
TUV4Y2VwdGlvbiBjb2RlIDAgcGFzc2VkIHRvIGFzc2VydF90aHJvd3NfZG9tKCknKTsKKyAgICAg
ICAgICAgICAgICB9IGVsc2UgaWYgKCEodHlwZSBpbiBjb2RlX25hbWVfbWFwKSkgeworICAgICAg
ICAgICAgICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRXJyb3IoJ1Rlc3QgYnVnOiB1bnJlY29n
bml6ZWQgRE9NRXhjZXB0aW9uIGNvZGUgIicgKyB0eXBlICsgJyIgcGFzc2VkIHRvIGFzc2VydF90
aHJvd3NfZG9tKCknKTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbmFtZSA9
IGNvZGVfbmFtZV9tYXBbY29kZV07Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBjb2Rl
ID09PSAic3RyaW5nIikgeworICAgICAgICAgICAgICAgIG5hbWUgPSBjb2RlX25hbWVfbWFwW3R5
cGVdOworICAgICAgICAgICAgICAgIHJlcXVpcmVkX3Byb3BzLmNvZGUgPSB0eXBlOworICAgICAg
ICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdHlwZSA9PT0gInN0cmluZyIpIHsKKyAgICAgICAgICAg
ICAgICBuYW1lID0gdHlwZSBpbiBjb2RlbmFtZV9uYW1lX21hcCA/IGNvZGVuYW1lX25hbWVfbWFw
W3R5cGVdIDogdHlwZTsKICAgICAgICAgICAgICAgICBpZiAoIShuYW1lIGluIG5hbWVfY29kZV9t
YXApKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25FcnJvcignVGVz
dCBidWc6IHVucmVjb2duaXplZCBET01FeGNlcHRpb24gY29kZSAiJyArIGNvZGUgKyAnIiBwYXNz
ZWQgdG8gYXNzZXJ0X3Rocm93cygpJyk7CisgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBB
c3NlcnRpb25FcnJvcignVGVzdCBidWc6IHVucmVjb2duaXplZCBET01FeGNlcHRpb24gY29kZSBu
YW1lIG9yIG5hbWUgIicgKyB0eXBlICsgJyIgcGFzc2VkIHRvIGFzc2VydF90aHJvd3NfZG9tKCkn
KTsKICAgICAgICAgICAgICAgICB9CisKICAgICAgICAgICAgICAgICByZXF1aXJlZF9wcm9wcy5j
b2RlID0gbmFtZV9jb2RlX21hcFtuYW1lXTsKICAgICAgICAgICAgIH0KIApAQCAtMTQ2NywyNiAr
MTg0Miw2NSBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAg
ICAgICAgICByZXF1aXJlZF9wcm9wcy5uYW1lID0gbmFtZTsKICAgICAgICAgICAgIH0KIAotICAg
ICAgICAgICAgLy9XZSdkIGxpa2UgdG8gdGVzdCB0aGF0IGUgaW5zdGFuY2VvZiB0aGUgYXBwcm9w
cmlhdGUgaW50ZXJmYWNlLAotICAgICAgICAgICAgLy9idXQgd2UgY2FuJ3QsIGJlY2F1c2Ugd2Ug
ZG9uJ3Qga25vdyB3aGF0IHdpbmRvdyBpdCB3YXMgY3JlYXRlZAotICAgICAgICAgICAgLy9pbi4g
IEl0IG1pZ2h0IGJlIGFuIGluc3RhbmNlb2YgdGhlIGFwcHJvcHJpYXRlIGludGVyZmFjZSBvbiBz
b21lCi0gICAgICAgICAgICAvL3Vua25vd24gb3RoZXIgd2luZG93LiAgVE9ETzogV29yayBhcm91
bmQgdGhpcyBzb21laG93PwotCiAgICAgICAgICAgICBmb3IgKHZhciBwcm9wIGluIHJlcXVpcmVk
X3Byb3BzKSB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0KHByb3AgaW4gZSAmJiBlW3Byb3BdID09
IHJlcXVpcmVkX3Byb3BzW3Byb3BdLAotICAgICAgICAgICAgICAgICAgICAgICAiYXNzZXJ0X3Ro
cm93cyIsIGRlc2NyaXB0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAiJHtmdW5jfSB0aHJl
dyAke2V9IHRoYXQgaXMgbm90IGEgRE9NRXhjZXB0aW9uICIgKyBjb2RlICsgIjogcHJvcGVydHkg
JHtwcm9wfSBpcyBlcXVhbCB0byAke2FjdHVhbH0sIGV4cGVjdGVkICR7ZXhwZWN0ZWR9IiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0aW9uX3R5cGUsIGRlc2NyaXB0aW9uLAorICAgICAg
ICAgICAgICAgICAgICAgICAiJHtmdW5jfSB0aHJldyAke2V9IHRoYXQgaXMgbm90IGEgRE9NRXhj
ZXB0aW9uICIgKyB0eXBlICsgIjogcHJvcGVydHkgJHtwcm9wfSBpcyBlcXVhbCB0byAke2FjdHVh
bH0sIGV4cGVjdGVkICR7ZXhwZWN0ZWR9IiwKICAgICAgICAgICAgICAgICAgICAgICAge2Z1bmM6
ZnVuYywgZTplLCBwcm9wOnByb3AsIGFjdHVhbDplW3Byb3BdLCBleHBlY3RlZDpyZXF1aXJlZF9w
cm9wc1twcm9wXX0pOwogICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBDaGVjayB0aGF0
IHRoZSBleGNlcHRpb24gaXMgZnJvbSB0aGUgcmlnaHQgZ2xvYmFsLiAgVGhpcyBjaGVjayBpcyBs
YXN0CisgICAgICAgICAgICAvLyBzbyBtb3JlIHNwZWNpZmljLCBhbmQgbW9yZSBpbmZvcm1hdGl2
ZSwgY2hlY2tzIG9uIHRoZSBwcm9wZXJ0aWVzIGNhbgorICAgICAgICAgICAgLy8gaGFwcGVuIGlu
IGNhc2UgYSB0b3RhbGx5IGluY29ycmVjdCBleGNlcHRpb24gaXMgdGhyb3duLgorICAgICAgICAg
ICAgYXNzZXJ0KGUuY29uc3RydWN0b3IgPT09IGNvbnN0cnVjdG9yLAorICAgICAgICAgICAgICAg
ICAgIGFzc2VydGlvbl90eXBlLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAiJHtm
dW5jfSB0aHJldyBhbiBleGNlcHRpb24gZnJvbSB0aGUgd3JvbmcgZ2xvYmFsIiwKKyAgICAgICAg
ICAgICAgICAgICB7ZnVuY30pOworCisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAg
KiBBc3NlcnQgdGhlIHByb3ZpZGVkIHZhbHVlIGlzIHRocm93bi4KKyAgICAgKgorICAgICAqIEBw
YXJhbSB7dmFsdWV9IGV4Y2VwdGlvbiBUaGUgZXhwZWN0ZWQgZXhjZXB0aW9uLgorICAgICAqIEBw
YXJhbSB7RnVuY3Rpb259IGZ1bmMgRnVuY3Rpb24gd2hpY2ggc2hvdWxkIHRocm93LgorICAgICAq
IEBwYXJhbSB7c3RyaW5nfSBkZXNjcmlwdGlvbiBFcnJvciBkZXNjcmlwdGlvbiBmb3IgdGhlIGNh
c2UgdGhhdCB0aGUgZXJyb3IgaXMgbm90IHRocm93bi4KKyAgICAgKi8KKyAgICBmdW5jdGlvbiBh
c3NlcnRfdGhyb3dzX2V4YWN0bHkoZXhjZXB0aW9uLCBmdW5jLCBkZXNjcmlwdGlvbikKKyAgICB7
CisgICAgICAgIGFzc2VydF90aHJvd3NfZXhhY3RseV9pbXBsKGV4Y2VwdGlvbiwgZnVuYywgZGVz
Y3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhc3NlcnRfdGhy
b3dzX2V4YWN0bHkiKTsKKyAgICB9CisgICAgZXhwb3NlX2Fzc2VydChhc3NlcnRfdGhyb3dzX2V4
YWN0bHksICJhc3NlcnRfdGhyb3dzX2V4YWN0bHkiKTsKKworICAgIC8qKgorICAgICAqIExpa2Ug
YXNzZXJ0X3Rocm93c19leGFjdGx5IGJ1dCBhbGxvd3Mgc3BlY2lmeWluZyB0aGUgYXNzZXJ0aW9u
IHR5cGUKKyAgICAgKiAoYXNzZXJ0X3Rocm93c19leGFjdGx5IG9yIHByb21pc2VfcmVqZWN0c19l
eGFjdGx5LCBpbiBwcmFjdGljZSkuCisgICAgICovCisgICAgZnVuY3Rpb24gYXNzZXJ0X3Rocm93
c19leGFjdGx5X2ltcGwoZXhjZXB0aW9uLCBmdW5jLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnRpb25fdHlwZSkKKyAgICB7CisgICAg
ICAgIHRyeSB7CisgICAgICAgICAgICBmdW5jLmNhbGwodGhpcyk7CisgICAgICAgICAgICBhc3Nl
cnQoZmFsc2UsIGFzc2VydGlvbl90eXBlLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICAg
ICAiJHtmdW5jfSBkaWQgbm90IHRocm93Iiwge2Z1bmM6ZnVuY30pOworICAgICAgICB9IGNhdGNo
IChlKSB7CisgICAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIEFzc2VydGlvbkVycm9yKSB7Cisg
ICAgICAgICAgICAgICAgdGhyb3cgZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYXNz
ZXJ0KHNhbWVfdmFsdWUoZSwgZXhjZXB0aW9uKSwgYXNzZXJ0aW9uX3R5cGUsIGRlc2NyaXB0aW9u
LAorICAgICAgICAgICAgICAgICAgICIke2Z1bmN9IHRocmV3ICR7ZX0gYnV0IHdlIGV4cGVjdGVk
IGl0IHRvIHRocm93ICR7ZXhjZXB0aW9ufSIsCisgICAgICAgICAgICAgICAgICAge2Z1bmM6ZnVu
YywgZTplLCBleGNlcHRpb246ZXhjZXB0aW9ufSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgZXhw
b3NlKGFzc2VydF90aHJvd3MsICJhc3NlcnRfdGhyb3dzIik7CiAKICAgICBmdW5jdGlvbiBhc3Nl
cnRfdW5yZWFjaGVkKGRlc2NyaXB0aW9uKSB7CiAgICAgICAgICBhc3NlcnQoZmFsc2UsICJhc3Nl
cnRfdW5yZWFjaGVkIiwgZGVzY3JpcHRpb24sCiAgICAgICAgICAgICAgICAgIlJlYWNoZWQgdW5y
ZWFjaGFibGUgY29kZSIpOwogICAgIH0KLSAgICBleHBvc2UoYXNzZXJ0X3VucmVhY2hlZCwgImFz
c2VydF91bnJlYWNoZWQiKTsKKyAgICBleHBvc2VfYXNzZXJ0KGFzc2VydF91bnJlYWNoZWQsICJh
c3NlcnRfdW5yZWFjaGVkIik7CiAKICAgICBmdW5jdGlvbiBhc3NlcnRfYW55KGFzc2VydF9mdW5j
LCBhY3R1YWwsIGV4cGVjdGVkX2FycmF5KQogICAgIHsKQEAgLTE1MDcsOCArMTkyMSw0OCBAQCBw
b2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgICAgIHRocm93IG5l
dyBBc3NlcnRpb25FcnJvcihlcnJvcnMuam9pbigiXG5cbiIpKTsKICAgICAgICAgfQogICAgIH0K
KyAgICAvLyBGSVhNRTogYXNzZXJ0X2FueSBjYW5ub3QgdXNlIGV4cG9zZV9hc3NlcnQsIGJlY2F1
c2UgYXNzZXJ0X3dyYXBwZXIgZG9lcworICAgIC8vIG5vdCBzdXBwb3J0IG5lc3RlZCBhc3NlcnQg
Y2FsbHMgKGUuZy4gdG8gYXNzZXJ0X2Z1bmMpLiBXZSBuZWVkIHRvCisgICAgLy8gc3VwcG9ydCBi
eXBhc3NpbmcgYXNzZXJ0X3dyYXBwZXIgZm9yIHRoZSBpbm5lciBhc3NlcnRzIGhlcmUuCiAgICAg
ZXhwb3NlKGFzc2VydF9hbnksICJhc3NlcnRfYW55Iik7CiAKKyAgICAvKioKKyAgICAgKiBBc3Nl
cnQgdGhhdCBhIGZlYXR1cmUgaXMgaW1wbGVtZW50ZWQsIGJhc2VkIG9uIGEgJ3RydXRoeScgY29u
ZGl0aW9uLgorICAgICAqCisgICAgICogVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgdXNlZCB0byBl
YXJseS1leGl0IGZyb20gdGVzdHMgaW4gd2hpY2ggdGhlcmUgaXMKKyAgICAgKiBubyBwb2ludCBj
b250aW51aW5nIHdpdGhvdXQgc3VwcG9ydCBmb3IgYSBub24tb3B0aW9uYWwgc3BlYyBvciBzcGVj
CisgICAgICogZmVhdHVyZS4gRm9yIGV4YW1wbGU6CisgICAgICoKKyAgICAgKiAgICAgYXNzZXJ0
X2ltcGxlbWVudHMod2luZG93LkZvbywgJ0ZvbyBpcyBub3Qgc3VwcG9ydGVkJyk7CisgICAgICoK
KyAgICAgKiBAcGFyYW0ge29iamVjdH0gY29uZGl0aW9uIFRoZSB0cnV0aHkgdmFsdWUgdG8gdGVz
dAorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjcmlwdGlvbiBFcnJvciBkZXNjcmlwdGlvbiBm
b3IgdGhlIGNhc2UgdGhhdCB0aGUgY29uZGl0aW9uIGlzIG5vdCB0cnV0aHkuCisgICAgICovCisg
ICAgZnVuY3Rpb24gYXNzZXJ0X2ltcGxlbWVudHMoY29uZGl0aW9uLCBkZXNjcmlwdGlvbikgewor
ICAgICAgICBhc3NlcnQoISFjb25kaXRpb24sICJhc3NlcnRfaW1wbGVtZW50cyIsIGRlc2NyaXB0
aW9uKTsKKyAgICB9CisgICAgZXhwb3NlX2Fzc2VydChhc3NlcnRfaW1wbGVtZW50cywgImFzc2Vy
dF9pbXBsZW1lbnRzIikKKworICAgIC8qKgorICAgICAqIEFzc2VydCB0aGF0IGFuIG9wdGlvbmFs
IGZlYXR1cmUgaXMgaW1wbGVtZW50ZWQsIGJhc2VkIG9uIGEgJ3RydXRoeScgY29uZGl0aW9uLgor
ICAgICAqCisgICAgICogVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgdXNlZCB0byBlYXJseS1leGl0
IGZyb20gdGVzdHMgaW4gd2hpY2ggdGhlcmUgaXMKKyAgICAgKiBubyBwb2ludCBjb250aW51aW5n
IHdpdGhvdXQgc3VwcG9ydCBmb3IgYW4gZXhwbGljaXRseSBvcHRpb25hbCBzcGVjIG9yCisgICAg
ICogc3BlYyBmZWF0dXJlLiBGb3IgZXhhbXBsZToKKyAgICAgKgorICAgICAqICAgICBhc3NlcnRf
aW1wbGVtZW50c19vcHRpb25hbCh2aWRlby5jYW5QbGF5VHlwZSgidmlkZW8vd2VibSIpLAorICAg
ICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2VibSB2aWRlbyBwbGF5YmFjayBu
b3Qgc3VwcG9ydGVkIik7CisgICAgICoKKyAgICAgKiBAcGFyYW0ge29iamVjdH0gY29uZGl0aW9u
IFRoZSB0cnV0aHkgdmFsdWUgdG8gdGVzdAorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjcmlw
dGlvbiBFcnJvciBkZXNjcmlwdGlvbiBmb3IgdGhlIGNhc2UgdGhhdCB0aGUgY29uZGl0aW9uIGlz
IG5vdCB0cnV0aHkuCisgICAgICovCisgICAgZnVuY3Rpb24gYXNzZXJ0X2ltcGxlbWVudHNfb3B0
aW9uYWwoY29uZGl0aW9uLCBkZXNjcmlwdGlvbikgeworICAgICAgICBpZiAoIWNvbmRpdGlvbikg
eworICAgICAgICAgICAgdGhyb3cgbmV3IE9wdGlvbmFsRmVhdHVyZVVuc3VwcG9ydGVkRXJyb3Io
ZGVzY3JpcHRpb24pOworICAgICAgICB9CisgICAgfQorICAgIGV4cG9zZV9hc3NlcnQoYXNzZXJ0
X2ltcGxlbWVudHNfb3B0aW9uYWwsICJhc3NlcnRfaW1wbGVtZW50c19vcHRpb25hbCIpCisKICAg
ICBmdW5jdGlvbiBUZXN0KG5hbWUsIHByb3BlcnRpZXMpCiAgICAgewogICAgICAgICBpZiAodGVz
dHMuZmlsZV9pc190ZXN0ICYmIHRlc3RzLnRlc3RzLmxlbmd0aCkgewpAQCAtMTUyMyw3ICsxOTc3
LDcgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAgIHRoaXMu
dGltZW91dF9pZCA9IG51bGw7CiAgICAgICAgIHRoaXMuaW5kZXggPSBudWxsOwogCi0gICAgICAg
IHRoaXMucHJvcGVydGllcyA9IHByb3BlcnRpZXM7CisgICAgICAgIHRoaXMucHJvcGVydGllcyA9
IHByb3BlcnRpZXMgfHwge307CiAgICAgICAgIHRoaXMudGltZW91dF9sZW5ndGggPSBzZXR0aW5n
cy50ZXN0X3RpbWVvdXQ7CiAgICAgICAgIGlmICh0aGlzLnRpbWVvdXRfbGVuZ3RoICE9PSBudWxs
KSB7CiAgICAgICAgICAgICB0aGlzLnRpbWVvdXRfbGVuZ3RoICo9IHRlc3RzLnRpbWVvdXRfbXVs
dGlwbGllcjsKQEAgLTE1NTMsNyArMjAwNyw4IEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24g
Zm9ybXMgWzNdLgogICAgICAgICBQQVNTOjAsCiAgICAgICAgIEZBSUw6MSwKICAgICAgICAgVElN
RU9VVDoyLAotICAgICAgICBOT1RSVU46MworICAgICAgICBOT1RSVU46MywKKyAgICAgICAgUFJF
Q09ORElUSU9OX0ZBSUxFRDo0CiAgICAgfTsKIAogICAgIFRlc3QucHJvdG90eXBlID0gbWVyZ2Uo
e30sIFRlc3Quc3RhdHVzZXMpOwpAQCAtMTU2Niw2ICsyMDIxLDE4IEBAIHBvbGljaWVzIGFuZCBj
b250cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAgICBDT01QTEVURTo0CiAgICAgfTsKIAorICAg
IFRlc3QucHJvdG90eXBlLnN0YXR1c19mb3JtYXRzID0geworICAgICAgICAwOiAiUGFzcyIsCisg
ICAgICAgIDE6ICJGYWlsIiwKKyAgICAgICAgMjogIlRpbWVvdXQiLAorICAgICAgICAzOiAiTm90
IFJ1biIsCisgICAgICAgIDQ6ICJPcHRpb25hbCBGZWF0dXJlIFVuc3VwcG9ydGVkIiwKKyAgICB9
CisKKyAgICBUZXN0LnByb3RvdHlwZS5mb3JtYXRfc3RhdHVzID0gZnVuY3Rpb24oKSB7CisgICAg
ICAgIHJldHVybiB0aGlzLnN0YXR1c19mb3JtYXRzW3RoaXMuc3RhdHVzXTsKKyAgICB9CisKICAg
ICBUZXN0LnByb3RvdHlwZS5zdHJ1Y3R1cmVkX2Nsb25lID0gZnVuY3Rpb24oKQogICAgIHsKICAg
ICAgICAgaWYgKCF0aGlzLl9zdHJ1Y3R1cmVkX2Nsb25lKSB7CkBAIC0xNTkwLDExICsyMDU3LDE2
IEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAgICBpZiAodGhp
cy5waGFzZSA+IHRoaXMucGhhc2VzLlNUQVJURUQpIHsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQorCisgICAgICAgIGlmIChzZXR0aW5ncy5kZWJ1ZyAmJiB0aGlzLnBoYXNlICE9PSB0
aGlzLnBoYXNlcy5TVEFSVEVEKSB7CisgICAgICAgICAgICBjb25zb2xlLmxvZygiVEVTVCBTVEFS
VCIsIHRoaXMubmFtZSk7CisgICAgICAgIH0KICAgICAgICAgdGhpcy5waGFzZSA9IHRoaXMucGhh
c2VzLlNUQVJURUQ7CiAgICAgICAgIC8vSWYgd2UgZG9uJ3QgZ2V0IGEgcmVzdWx0IGJlZm9yZSB0
aGUgaGFybmVzcyB0aW1lcyBvdXQgdGhhdCB3aWxsIGJlIGEgdGVzdCB0aW1lb3V0CiAgICAgICAg
IHRoaXMuc2V0X3N0YXR1cyh0aGlzLlRJTUVPVVQsICJUZXN0IHRpbWVkIG91dCIpOwogCiAgICAg
ICAgIHRlc3RzLnN0YXJ0ZWQgPSB0cnVlOworICAgICAgICB0ZXN0cy5jdXJyZW50X3Rlc3QgPSB0
aGlzOwogICAgICAgICB0ZXN0cy5ub3RpZnlfdGVzdF9zdGF0ZSh0aGlzKTsKIAogICAgICAgICBp
ZiAodGhpcy50aW1lb3V0X2lkID09PSBudWxsKSB7CkBAIC0xNjA3LDE4ICsyMDc5LDI1IEBAIHBv
bGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAgICAgICAgdGhpc19vYmog
PSB0aGlzOwogICAgICAgICB9CiAKKyAgICAgICAgaWYgKHNldHRpbmdzLmRlYnVnKSB7CisgICAg
ICAgICAgICBjb25zb2xlLmRlYnVnKCJURVNUIFNURVAiLCB0aGlzLm5hbWUpOworICAgICAgICB9
CisKICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgIHJldHVybiBmdW5jLmFwcGx5KHRoaXNfb2Jq
LCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDIpKTsKICAgICAgICAgfSBj
YXRjaCAoZSkgewogICAgICAgICAgICAgaWYgKHRoaXMucGhhc2UgPj0gdGhpcy5waGFzZXMuSEFT
X1JFU1VMVCkgewogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIHZhciBzdGF0dXMgPSBlIGluc3RhbmNlb2YgT3B0aW9uYWxGZWF0dXJlVW5zdXBwb3J0
ZWRFcnJvciA/IHRoaXMuUFJFQ09ORElUSU9OX0ZBSUxFRCA6IHRoaXMuRkFJTDsKICAgICAgICAg
ICAgIHZhciBtZXNzYWdlID0gU3RyaW5nKCh0eXBlb2YgZSA9PT0gIm9iamVjdCIgJiYgZSAhPT0g
bnVsbCkgPyBlLm1lc3NhZ2UgOiBlKTsKICAgICAgICAgICAgIHZhciBzdGFjayA9IGUuc3RhY2sg
PyBlLnN0YWNrIDogbnVsbDsKIAotICAgICAgICAgICAgdGhpcy5zZXRfc3RhdHVzKHRoaXMuRkFJ
TCwgbWVzc2FnZSwgc3RhY2spOworICAgICAgICAgICAgdGhpcy5zZXRfc3RhdHVzKHN0YXR1cywg
bWVzc2FnZSwgc3RhY2spOwogICAgICAgICAgICAgdGhpcy5waGFzZSA9IHRoaXMucGhhc2VzLkhB
U19SRVNVTFQ7CiAgICAgICAgICAgICB0aGlzLmRvbmUoKTsKKyAgICAgICAgfSBmaW5hbGx5IHsK
KyAgICAgICAgICAgIHRoaXMuY3VycmVudF90ZXN0ID0gbnVsbDsKICAgICAgICAgfQogICAgIH07
CiAKQEAgLTE2NjgsNiArMjE0NywxMDUgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3Jt
cyBbM10uCiAgICAgICAgIHJldHVybiBzZXRUaW1lb3V0KHRoaXMuc3RlcF9mdW5jKGZ1bmN0aW9u
KCkgewogICAgICAgICAgICAgcmV0dXJuIGYuYXBwbHkodGVzdF90aGlzLCBhcmdzKTsKICAgICAg
ICAgfSksIHRpbWVvdXQgKiB0ZXN0cy50aW1lb3V0X211bHRpcGxpZXIpOworICAgIH07CisKKyAg
ICBUZXN0LnByb3RvdHlwZS5zdGVwX3dhaXRfZnVuYyA9IGZ1bmN0aW9uKGNvbmQsIGZ1bmMsIGRl
c2NyaXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dGltZW91dD0zMDAwLCBpbnRlcnZhbD0xMDApIHsKKyAgICAgICAgLyoqCisgICAgICAgICAqIFBv
bGwgZm9yIGEgZnVuY3Rpb24gdG8gcmV0dXJuIHRydWUsIGFuZCBjYWxsIGEgY2FsbGJhY2sKKyAg
ICAgICAgICogZnVuY3Rpb24gb25jZSBpdCBkb2VzLCBvciBhc3NlcnQgaWYgYSB0aW1lb3V0IGlz
CisgICAgICAgICAqIHJlYWNoZWQuIFRoaXMgaXMgcHJlZmVycmVkIG92ZXIgYSBzaW1wbGUgc3Rl
cF90aW1lb3V0CisgICAgICAgICAqIHdoZW5ldmVyIHBvc3NpYmxlIHNpbmNlIGl0IGFsbG93cyB0
aGUgdGltZW91dCB0byBiZSBsb25nZXIKKyAgICAgICAgICogdG8gcmVkdWNlIGludGVybWl0dGVu
dHMgd2l0aG91dCBjb21wcm9taXNpbmcgdGVzdCBleGVjdXRpb24KKyAgICAgICAgICogc3BlZWQg
d2hlbiB0aGUgY29uZGl0aW9uIGlzIHF1aWNrbHkgbWV0LgorICAgICAgICAgKgorICAgICAgICAg
KiBAcGFyYW0ge0Z1bmN0aW9ufSBjb25kIEEgZnVuY3Rpb24gdGFraW5nIG5vIGFyZ3VtZW50cyBh
bmQKKyAgICAgICAgICogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5pbmcgYSBib29sZWFu
LiBUaGUgY2FsbGJhY2sgaXMgY2FsbGVkCisgICAgICAgICAqICAgICAgICAgICAgICAgICAgICAg
ICAgd2hlbiB0aGlzIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZS4KKyAgICAgICAgICogQHBhcmFtIHtG
dW5jdGlvbn0gZnVuYyBBIGZ1bmN0aW9uIHRha2luZyBubyBhcmd1bWVudHMgdG8gY2FsbCBvbmNl
CisgICAgICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGNvbmRpdGlvbiBpcyBtZXQu
CisgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjcmlwdGlvbiBFcnJvciBtZXNzYWdlIHRv
IGFkZCB0byBhc3NlcnQgaW4gY2FzZSBvZgorICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZmFpbHVyZS4KKyAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IHRpbWVvdXQgVGlt
ZW91dCBpbiBtcy4gVGhpcyBpcyBtdWx0aXBsaWVkIGJ5IHRoZSBnbG9iYWwKKyAgICAgICAgICog
ICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dF9tdWx0aXBsaWVyCisgICAgICAgICAqIEBw
YXJhbSB7bnVtYmVyfSBpbnRlcnZhbCBQb2xsaW5nIGludGVydmFsIGluIG1zCisgICAgICAgICAq
CisgICAgICAgICAqKi8KKworICAgICAgICB2YXIgdGltZW91dF9mdWxsID0gdGltZW91dCAqIHRl
c3RzLnRpbWVvdXRfbXVsdGlwbGllcjsKKyAgICAgICAgdmFyIHJlbWFpbmluZyA9IE1hdGguY2Vp
bCh0aW1lb3V0X2Z1bGwgLyBpbnRlcnZhbCk7CisgICAgICAgIHZhciB0ZXN0X3RoaXMgPSB0aGlz
OworCisgICAgICAgIHZhciB3YWl0X2Zvcl9pbm5lciA9IHRlc3RfdGhpcy5zdGVwX2Z1bmMoKCkg
PT4geworICAgICAgICAgICAgaWYgKGNvbmQoKSkgeworICAgICAgICAgICAgICAgIGZ1bmMoKTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYocmVtYWluaW5nID09PSAw
KSB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydChmYWxzZSwgInN0ZXBfd2FpdF9mdW5jIiwg
ZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGltZWQgb3V0IHdhaXRp
bmcgb24gY29uZGl0aW9uIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJl
bWFpbmluZy0tOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQod2FpdF9mb3JfaW5uZXIsIGlu
dGVydmFsKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisKKyAgICAgICAgd2FpdF9mb3Jf
aW5uZXIoKTsKKyAgICB9OworCisgICAgVGVzdC5wcm90b3R5cGUuc3RlcF93YWl0X2Z1bmNfZG9u
ZSA9IGZ1bmN0aW9uKGNvbmQsIGZ1bmMsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PTMwMDAsIGludGVydmFsPTEw
MCkgeworICAgICAgICAvKioKKyAgICAgICAgICogUG9sbCBmb3IgYSBmdW5jdGlvbiB0byByZXR1
cm4gdHJ1ZSwgYW5kIGludm9rZSBhIGNhbGxiYWNrCisgICAgICAgICAqIGZvbGxvd2VkIGJ5IHRo
aXMuZG9uZSgpIG9uY2UgaXQgZG9lcywgb3IgYXNzZXJ0IGlmIGEgdGltZW91dAorICAgICAgICAg
KiBpcyByZWFjaGVkLiBUaGlzIGlzIHByZWZlcnJlZCBvdmVyIGEgc2ltcGxlIHN0ZXBfdGltZW91
dAorICAgICAgICAgKiB3aGVuZXZlciBwb3NzaWJsZSBzaW5jZSBpdCBhbGxvd3MgdGhlIHRpbWVv
dXQgdG8gYmUgbG9uZ2VyCisgICAgICAgICAqIHRvIHJlZHVjZSBpbnRlcm1pdHRlbnRzIHdpdGhv
dXQgY29tcHJvbWlzaW5nIHRlc3QgZXhlY3V0aW9uIHNwZWVkCisgICAgICAgICAqIHdoZW4gdGhl
IGNvbmRpdGlvbiBpcyBxdWlja2x5IG1ldC4KKyAgICAgICAgICoKKyAgICAgICAgICogQHBhcmFt
IHtGdW5jdGlvbn0gY29uZCBBIGZ1bmN0aW9uIHRha2luZyBubyBhcmd1bWVudHMgYW5kCisgICAg
ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuaW5nIGEgYm9vbGVhbi4gVGhlIGNh
bGxiYWNrIGlzIGNhbGxlZAorICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4g
dGhpcyBmdW5jdGlvbiByZXR1cm5zIHRydWUuCisgICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259
IGZ1bmMgQSBmdW5jdGlvbiB0YWtpbmcgbm8gYXJndW1lbnRzIHRvIGNhbGwgb25jZQorICAgICAg
ICAgKiAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBjb25kaXRpb24gaXMgbWV0LgorICAgICAg
ICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzY3JpcHRpb24gRXJyb3IgbWVzc2FnZSB0byBhZGQgdG8g
YXNzZXJ0IGluIGNhc2Ugb2YKKyAgICAgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZhaWx1cmUuCisgICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0aW1lb3V0IFRpbWVvdXQgaW4g
bXMuIFRoaXMgaXMgbXVsdGlwbGllZCBieSB0aGUgZ2xvYmFsCisgICAgICAgICAqICAgICAgICAg
ICAgICAgICAgICAgICAgIHRpbWVvdXRfbXVsdGlwbGllcgorICAgICAgICAgKiBAcGFyYW0ge251
bWJlcn0gaW50ZXJ2YWwgUG9sbGluZyBpbnRlcnZhbCBpbiBtcworICAgICAgICAgKgorICAgICAg
ICAgKiovCisKKyAgICAgICAgIHRoaXMuc3RlcF93YWl0X2Z1bmMoY29uZCwgKCkgPT4geworICAg
ICAgICAgICAgaWYgKGZ1bmMpIHsKKyAgICAgICAgICAgICAgICBmdW5jKCk7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICB0aGlzLmRvbmUoKTsKKyAgICAgICAgIH0sIGRlc2NyaXB0aW9uLCB0
aW1lb3V0LCBpbnRlcnZhbCk7CisgICAgfQorCisgICAgVGVzdC5wcm90b3R5cGUuc3RlcF93YWl0
ID0gZnVuY3Rpb24oY29uZCwgZGVzY3JpcHRpb24sIHRpbWVvdXQ9MzAwMCwgaW50ZXJ2YWw9MTAw
KSB7CisgICAgICAgIC8qKgorICAgICAgICAgKiBQb2xsIGZvciBhIGZ1bmN0aW9uIHRvIHJldHVy
biB0cnVlLCBhbmQgcmVzb2x2ZSBhIHByb21pc2UKKyAgICAgICAgICogb25jZSBpdCBkb2VzLCBv
ciBhc3NlcnQgaWYgYSB0aW1lb3V0IGlzIHJlYWNoZWQuIFRoaXMgaXMKKyAgICAgICAgICogcHJl
ZmVycmVkIG92ZXIgYSBzaW1wbGUgc3RlcF90aW1lb3V0IHdoZW5ldmVyIHBvc3NpYmxlCisgICAg
ICAgICAqIHNpbmNlIGl0IGFsbG93cyB0aGUgdGltZW91dCB0byBiZSBsb25nZXIgdG8gcmVkdWNl
CisgICAgICAgICAqIGludGVybWl0dGVudHMgd2l0aG91dCBjb21wcm9taXNpbmcgdGVzdCBleGVj
dXRpb24gc3BlZWQKKyAgICAgICAgICogd2hlbiB0aGUgY29uZGl0aW9uIGlzIHF1aWNrbHkgbWV0
LgorICAgICAgICAgKgorICAgICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjb25kIEEgZnVuY3Rp
b24gdGFraW5nIG5vIGFyZ3VtZW50cyBhbmQKKyAgICAgICAgICogICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm5pbmcgYSBib29sZWFuLgorICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGVz
Y3JpcHRpb24gRXJyb3IgbWVzc2FnZSB0byBhZGQgdG8gYXNzZXJ0IGluIGNhc2Ugb2YKKyAgICAg
ICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWx1cmUuCisgICAgICAgICAqIEBw
YXJhbSB7bnVtYmVyfSB0aW1lb3V0IFRpbWVvdXQgaW4gbXMuIFRoaXMgaXMgbXVsdGlwbGllZCBi
eSB0aGUgZ2xvYmFsCisgICAgICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXRf
bXVsdGlwbGllcgorICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gaW50ZXJ2YWwgUG9sbGluZyBp
bnRlcnZhbCBpbiBtcworICAgICAgICAgKiBAcmV0dXJucyB7UHJvbWlzZX0gUHJvbWlzZSByZXNv
bHZlZCBvbmNlIGNvbmQgaXMgbWV0LgorICAgICAgICAgKgorICAgICAgICAgKiovCisKKyAgICAg
ICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4geworICAgICAgICAgICAgdGhpcy5zdGVw
X3dhaXRfZnVuYyhjb25kLCByZXNvbHZlLCBkZXNjcmlwdGlvbiwgdGltZW91dCwgaW50ZXJ2YWwp
OworICAgICAgICB9KTsKICAgICB9CiAKICAgICAvKgpAQCAtMTczNyw2ICsyMzE1LDEyIEBAIHBv
bGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAgICAgICAgY2xlYXJUaW1l
b3V0KHRoaXMudGltZW91dF9pZCk7CiAgICAgICAgIH0KIAorICAgICAgICBpZiAoc2V0dGluZ3Mu
ZGVidWcpIHsKKyAgICAgICAgICAgIGNvbnNvbGUubG9nKCJURVNUIERPTkUiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgdGhpcy5zdGF0dXMsCisgICAgICAgICAgICAgICAgICAgICAgICB0aGlz
Lm5hbWUsKQorICAgICAgICB9CisKICAgICAgICAgdGhpcy5jbGVhbnVwKCk7CiAgICAgfTsKIApA
QCAtMTkzNiw2ICsyNTIwLDEwIEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNd
LgogICAgICAgICAgICAgICAgIH0pOwogICAgIH0KIAorICAgIFJlbW90ZVRlc3QucHJvdG90eXBl
LmZvcm1hdF9zdGF0dXMgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIFRlc3QucHJvdG90
eXBlLnN0YXR1c19mb3JtYXRzW3RoaXMuc3RhdHVzXTsKKyAgICB9CisKICAgICAvKgogICAgICAq
IEEgUmVtb3RlQ29udGV4dCBsaXN0ZW5zIGZvciB0ZXN0IGV2ZW50cyBmcm9tIGEgcmVtb3RlIHRl
c3QgY29udGV4dCwgc3VjaAogICAgICAqIGFzIGFub3RoZXIgd2luZG93IG9yIGEgd29ya2VyLiBU
aGVzZSBldmVudHMgYXJlIHRoZW4gdXNlZCB0byBjb25zdHJ1Y3QKQEAgLTIwNDQsNiArMjYzMiwx
NiBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgICAgIHRl
c3RzLnNldF9zdGF0dXMoZGF0YS5zdGF0dXMuc3RhdHVzLCBkYXRhLnN0YXR1cy5tZXNzYWdlLCBk
YXRhLnN0YXR1cy5zYWNrKTsKICAgICAgICAgfQogCisgICAgICAgIGZvciAobGV0IGFzc2VydCBv
ZiBkYXRhLmFzc2VydHMpIHsKKyAgICAgICAgICAgIHZhciByZWNvcmQgPSBuZXcgQXNzZXJ0UmVj
b3JkKCk7CisgICAgICAgICAgICByZWNvcmQuYXNzZXJ0X25hbWUgPSBhc3NlcnQuYXNzZXJ0X25h
bWU7CisgICAgICAgICAgICByZWNvcmQuYXJncyA9IGFzc2VydC5hcmdzOworICAgICAgICAgICAg
cmVjb3JkLnRlc3QgPSBhc3NlcnQudGVzdCAhPSBudWxsID8gdGhpcy50ZXN0c1thc3NlcnQudGVz
dC5pbmRleF0gOiBudWxsOworICAgICAgICAgICAgcmVjb3JkLnN0YXR1cyA9IGFzc2VydC5zdGF0
dXM7CisgICAgICAgICAgICByZWNvcmQuc3RhY2sgPSBhc3NlcnQuc3RhY2s7CisgICAgICAgICAg
ICB0ZXN0cy5hc3NlcnRzX3J1bi5wdXNoKHJlY29yZCk7CisgICAgICAgIH0KKwogICAgICAgICB0
aGlzLm1lc3NhZ2VfdGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCB0aGlzLm1l
c3NhZ2VfaGFuZGxlcik7CiAgICAgICAgIHRoaXMucnVubmluZyA9IGZhbHNlOwogCkBAIC0yMDg3
LDExICsyNjg1LDIwIEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAg
IFRlc3RzU3RhdHVzLnN0YXR1c2VzID0gewogICAgICAgICBPSzowLAogICAgICAgICBFUlJPUjox
LAotICAgICAgICBUSU1FT1VUOjIKKyAgICAgICAgVElNRU9VVDoyLAorICAgICAgICBQUkVDT05E
SVRJT05fRkFJTEVEOjMKICAgICB9OwogCiAgICAgVGVzdHNTdGF0dXMucHJvdG90eXBlID0gbWVy
Z2Uoe30sIFRlc3RzU3RhdHVzLnN0YXR1c2VzKTsKIAorICAgIFRlc3RzU3RhdHVzLnByb3RvdHlw
ZS5mb3JtYXRzID0geworICAgICAgICAwOiAiT0siLAorICAgICAgICAxOiAiRXJyb3IiLAorICAg
ICAgICAyOiAiVGltZW91dCIsCisgICAgICAgIDM6ICJPcHRpb25hbCBGZWF0dXJlIFVuc3VwcG9y
dGVkIgorICAgIH0KKworCiAgICAgVGVzdHNTdGF0dXMucHJvdG90eXBlLnN0cnVjdHVyZWRfY2xv
bmUgPSBmdW5jdGlvbigpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX3N0cnVjdHVyZWRfY2xv
bmUpIHsKQEAgLTIxMDYsNiArMjcxMywyNyBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZv
cm1zIFszXS4KICAgICAgICAgcmV0dXJuIHRoaXMuX3N0cnVjdHVyZWRfY2xvbmU7CiAgICAgfTsK
IAorICAgIFRlc3RzU3RhdHVzLnByb3RvdHlwZS5mb3JtYXRfc3RhdHVzID0gZnVuY3Rpb24oKSB7
CisgICAgICAgIHJldHVybiB0aGlzLmZvcm1hdHNbdGhpcy5zdGF0dXNdOworICAgIH0KKworICAg
IGZ1bmN0aW9uIEFzc2VydFJlY29yZCh0ZXN0LCBhc3NlcnRfbmFtZSwgYXJncyA9IFtdKSB7Cisg
ICAgICAgIHRoaXMuYXNzZXJ0X25hbWUgPSBhc3NlcnRfbmFtZTsKKyAgICAgICAgdGhpcy50ZXN0
ID0gdGVzdDsKKyAgICAgICAgLy8gQXZvaWQga2VlcGluZyBjb21wbGV4IG9iamVjdHMgYWxpdmUK
KyAgICAgICAgdGhpcy5hcmdzID0gYXJncy5tYXAoeCA9PiBmb3JtYXRfdmFsdWUoeCkucmVwbGFj
ZSgvXG4vZywgIiAiKSk7CisgICAgICAgIHRoaXMuc3RhdHVzID0gbnVsbDsKKyAgICB9CisKKyAg
ICBBc3NlcnRSZWNvcmQucHJvdG90eXBlLnN0cnVjdHVyZWRfY2xvbmUgPSBmdW5jdGlvbigpIHsK
KyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgIGFzc2VydF9uYW1lOiB0aGlzLmFzc2VydF9u
YW1lLAorICAgICAgICAgICAgdGVzdDogdGhpcy50ZXN0ID8gdGhpcy50ZXN0LnN0cnVjdHVyZWRf
Y2xvbmUoKSA6IG51bGwsCisgICAgICAgICAgICBhcmdzOiB0aGlzLmFyZ3MsCisgICAgICAgICAg
ICBzdGF0dXM6IHRoaXMuc3RhdHVzLAorICAgICAgICB9CisgICAgfQorCiAgICAgZnVuY3Rpb24g
VGVzdHMoKQogICAgIHsKICAgICAgICAgdGhpcy50ZXN0cyA9IFtdOwpAQCAtMjEyOCw2ICsyNzU2
LDEwIEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAgICB0aGlz
LmFsbG93X3VuY2F1Z2h0X2V4Y2VwdGlvbiA9IGZhbHNlOwogCiAgICAgICAgIHRoaXMuZmlsZV9p
c190ZXN0ID0gZmFsc2U7CisgICAgICAgIC8vIFRoaXMgdmFsdWUgaXMgbGF6aWx5IGluaXRpYWxp
emVkIGluIG9yZGVyIHRvIGF2b2lkIGludHJvZHVjaW5nIGEKKyAgICAgICAgLy8gZGVwZW5kZW5j
eSBvbiBFQ01BU2NyaXB0IDIwMTUgUHJvbWlzZXMgdG8gYWxsIHRlc3RzLgorICAgICAgICB0aGlz
LnByb21pc2VfdGVzdHMgPSBudWxsOworICAgICAgICB0aGlzLnByb21pc2Vfc2V0dXBfY2FsbGVk
ID0gZmFsc2U7CiAKICAgICAgICAgdGhpcy50aW1lb3V0X211bHRpcGxpZXIgPSAxOwogICAgICAg
ICB0aGlzLnRpbWVvdXRfbGVuZ3RoID0gdGVzdF9lbnZpcm9ubWVudC50ZXN0X3RpbWVvdXQoKTsK
QEAgLTIxMzgsOCArMjc3MCwyMSBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFsz
XS4KICAgICAgICAgdGhpcy50ZXN0X2RvbmVfY2FsbGJhY2tzID0gW107CiAgICAgICAgIHRoaXMu
YWxsX2RvbmVfY2FsbGJhY2tzID0gW107CiAKKyAgICAgICAgdGhpcy5oaWRlX3Rlc3Rfc3RhdGUg
PSBmYWxzZTsKICAgICAgICAgdGhpcy5wZW5kaW5nX3JlbW90ZXMgPSBbXTsKIAorICAgICAgICB0
aGlzLmN1cnJlbnRfdGVzdCA9IG51bGw7CisgICAgICAgIHRoaXMuYXNzZXJ0c19ydW4gPSBbXTsK
KworICAgICAgICAvLyBUcmFjayB3aGV0aGVyIG91dHB1dCBpcyBlbmFibGVkLCBhbmQgdGh1cyB3
aGV0aGVyIG9yIG5vdCB3ZSBzaG91bGQKKyAgICAgICAgLy8gdHJhY2sgYXNzZXJ0cy4KKyAgICAg
ICAgLy8KKyAgICAgICAgLy8gT24gd29ya2VycyB3ZSBkb24ndCBnZXQgcHJvcGVydGllcyBzZXQg
ZnJvbSB0ZXN0aGFybmVzc3JlcG9ydC5qcywgc28KKyAgICAgICAgLy8gd2UgZG9uJ3Qga25vdyB3
aGV0aGVyIG9yIG5vdCB0byB0cmFjayBhc3NlcnRzLiBUbyBhdm9pZCB0aGUKKyAgICAgICAgLy8g
cmVzdWx0aW5nIHBlcmZvcm1hbmNlIGhpdCwgd2UgYXNzdW1lIHdlIGFyZSBub3QgbWVhbnQgdG8u
IFRoaXMgbWVhbnMKKyAgICAgICAgLy8gdGhhdCBhc3NlcnQgdHJhY2tpbmcgZG9lcyBub3QgZnVu
Y3Rpb24gb24gd29ya2Vycy4KKyAgICAgICAgdGhpcy5vdXRwdXQgPSBzZXR0aW5ncy5vdXRwdXQg
JiYgJ2RvY3VtZW50JyBpbiBnbG9iYWxfc2NvcGU7CisKICAgICAgICAgdGhpcy5zdGF0dXMgPSBu
ZXcgVGVzdHNTdGF0dXMoKTsKIAogICAgICAgICB2YXIgdGhpc19vYmogPSB0aGlzOwpAQCAtMjE3
OCwxMSArMjgyMywxOSBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAg
ICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0
KHRoaXMudGltZW91dF9pZCk7CiAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICB9IGVsc2UgaWYgKHAgPT0gInNpbmdsZV90ZXN0IiAmJiB2YWx1ZSkgeworICAgICAgICAgICAg
ICAgICAgICB0aGlzLnNldF9maWxlX2lzX3Rlc3QoKTsKICAgICAgICAgICAgICAgICB9IGVsc2Ug
aWYgKHAgPT0gInRpbWVvdXRfbXVsdGlwbGllciIpIHsKICAgICAgICAgICAgICAgICAgICAgdGhp
cy50aW1lb3V0X211bHRpcGxpZXIgPSB2YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHRo
aXMudGltZW91dF9sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRpbWVv
dXRfbGVuZ3RoICo9IHRoaXMudGltZW91dF9tdWx0aXBsaWVyOwogICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwID09ICJoaWRlX3Rlc3Rfc3RhdGUiKSB7
CisgICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZV90ZXN0X3N0YXRlID0gdmFsdWU7CisgICAg
ICAgICAgICAgICAgfSBlbHNlIGlmIChwID09ICJvdXRwdXQiKSB7CisgICAgICAgICAgICAgICAg
ICAgIHRoaXMub3V0cHV0ID0gdmFsdWU7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwID09
PSAiZGVidWciKSB7CisgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzLmRlYnVnID0gdmFsdWU7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0yMTkxLDkg
KzI4NDQsMTAgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAg
ICAgICB0cnkgewogICAgICAgICAgICAgICAgIGZ1bmMoKTsKICAgICAgICAgICAgIH0gY2F0Y2gg
KGUpIHsKLSAgICAgICAgICAgICAgICB0aGlzLnN0YXR1cy5zdGF0dXMgPSB0aGlzLnN0YXR1cy5F
UlJPUjsKKyAgICAgICAgICAgICAgICB0aGlzLnN0YXR1cy5zdGF0dXMgPSBlIGluc3RhbmNlb2Yg
T3B0aW9uYWxGZWF0dXJlVW5zdXBwb3J0ZWRFcnJvciA/IHRoaXMuc3RhdHVzLlBSRUNPTkRJVElP
Tl9GQUlMRUQgOiB0aGlzLnN0YXR1cy5FUlJPUjsKICAgICAgICAgICAgICAgICB0aGlzLnN0YXR1
cy5tZXNzYWdlID0gU3RyaW5nKGUpOwogICAgICAgICAgICAgICAgIHRoaXMuc3RhdHVzLnN0YWNr
ID0gZS5zdGFjayA/IGUuc3RhY2sgOiBudWxsOworICAgICAgICAgICAgICAgIHRoaXMuY29tcGxl
dGUoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICB0aGlzLnNldF90aW1lb3V0
KCk7CkBAIC0yMjA2LDcgKzI4NjAsNyBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1z
IFszXS4KICAgICAgICAgdGhpcy53YWl0X2Zvcl9maW5pc2ggPSB0cnVlOwogICAgICAgICB0aGlz
LmZpbGVfaXNfdGVzdCA9IHRydWU7CiAgICAgICAgIC8vIENyZWF0ZSB0aGUgdGVzdCwgd2hpY2gg
d2lsbCBhZGQgaXQgdG8gdGhlIGxpc3Qgb2YgdGVzdHMKLSAgICAgICAgYXN5bmNfdGVzdCgpOwor
ICAgICAgICB0ZXN0cy5jdXJyZW50X3Rlc3QgPSBhc3luY190ZXN0KCk7CiAgICAgfTsKIAogICAg
IFRlc3RzLnByb3RvdHlwZS5zZXRfc3RhdHVzID0gZnVuY3Rpb24oc3RhdHVzLCBtZXNzYWdlLCBz
dGFjaykKQEAgLTIzNzAsNiArMzAyNCwxNiBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZv
cm1zIFszXS4KICAgICAgICAgICAgICAgICAgIGFsbF9jb21wbGV0ZSk7CiAgICAgfTsKIAorICAg
IFRlc3RzLnByb3RvdHlwZS5zZXRfYXNzZXJ0ID0gZnVuY3Rpb24oYXNzZXJ0X25hbWUsIGFyZ3Mp
IHsKKyAgICAgICAgdGhpcy5hc3NlcnRzX3J1bi5wdXNoKG5ldyBBc3NlcnRSZWNvcmQodGhpcy5j
dXJyZW50X3Rlc3QsIGFzc2VydF9uYW1lLCBhcmdzKSkKKyAgICB9CisKKyAgICBUZXN0cy5wcm90
b3R5cGUuc2V0X2Fzc2VydF9zdGF0dXMgPSBmdW5jdGlvbihzdGF0dXMsIHN0YWNrKSB7CisgICAg
ICAgIGxldCBhc3NlcnRfcmVjb3JkID0gdGhpcy5hc3NlcnRzX3J1blt0aGlzLmFzc2VydHNfcnVu
Lmxlbmd0aCAtIDFdOworICAgICAgICBhc3NlcnRfcmVjb3JkLnN0YXR1cyA9IHN0YXR1czsKKyAg
ICAgICAgYXNzZXJ0X3JlY29yZC5zdGFjayA9IHN0YWNrOworICAgIH0KKwogICAgIC8qKgogICAg
ICAqIFVwZGF0ZSB0aGUgaGFybmVzcyBzdGF0dXMgdG8gcmVmbGVjdCBhbiB1bnJlY292ZXJhYmxl
IGhhcm5lc3MgZXJyb3IgdGhhdAogICAgICAqIHNob3VsZCBjYW5jZWwgYWxsIGZ1cnRoZXIgdGVz
dGluZy4gVXBkYXRlIGFsbCBwcmV2aW91c2x5LWRlZmluZWQgdGVzdHMKQEAgLTI0MTIsMjIgKzMw
NzYsMTYgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgfQogCiAg
ICAgZnVuY3Rpb24gc2FuaXRpemVfdW5wYWlyZWRfc3Vycm9nYXRlcyhzdHIpIHsKLSAgICAgICAg
cmV0dXJuIHN0ci5yZXBsYWNlKC8oW1x1ZDgwMC1cdWRiZmZdKSg/IVtcdWRjMDAtXHVkZmZmXSkv
ZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKF8sIHVucGFpcmVkKQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBjb2RlX3VuaXRfc3RyKHVucGFpcmVkKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0pCi0gICAgICAgICAgICAgICAgICAvLyBUaGlzIHJlcGxhY2VtZW50IGlzIGludGVudGlv
bmFsbHkgaW1wbGVtZW50ZWQgd2l0aG91dCBhbgotICAgICAgICAgICAgICAgICAgLy8gRVMyMDE4
IG5lZ2F0aXZlIGxvb2tiZWhpbmQgYXNzZXJ0aW9uIHRvIHN1cHBvcnQgcnVudGltZXMKLSAgICAg
ICAgICAgICAgICAgIC8vIHdoaWNoIGRvIG5vdCB5ZXQgaW1wbGVtZW50IHRoYXQgbGFuZ3VhZ2Ug
ZmVhdHVyZS4KLSAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC8oXnxbXlx1ZDgwMC1cdWRiZmZd
KShbXHVkYzAwLVx1ZGZmZl0pL2csCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlv
bihfLCBwcmV2aW91cywgdW5wYWlyZWQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmICgvW1x1ZGMwMC1cdWRmZmZdLy50ZXN0KHByZXZpb3VzKSkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHByZXZpb3VzID0gY29kZV91bml0X3N0cihwcmV2aW91cyk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBwcmV2aW91cyArIGNvZGVfdW5pdF9zdHIodW5wYWlyZWQpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgIHJldHVybiBzdHIucmVwbGFjZSgKKyAg
ICAgICAgICAgIC8oW1x1ZDgwMC1cdWRiZmZdKykoPyFbXHVkYzAwLVx1ZGZmZl0pfChefFteXHVk
ODAwLVx1ZGJmZl0pKFtcdWRjMDAtXHVkZmZmXSspL2csCisgICAgICAgICAgICBmdW5jdGlvbihf
LCBsb3csIHByZWZpeCwgaGlnaCkgeworICAgICAgICAgICAgICAgIHZhciBvdXRwdXQgPSBwcmVm
aXggfHwgIiI7ICAvLyBwcmVmaXggbWF5IGJlIHVuZGVmaW5lZAorICAgICAgICAgICAgICAgIHZh
ciBzdHJpbmcgPSBsb3cgfHwgaGlnaDsgIC8vIG9ubHkgb25lIG9mIHRoZXNlIGFsdGVybmF0ZXMg
Y2FuIG1hdGNoCisgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHJpbmcubGVu
Z3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0ICs9IGNvZGVfdW5pdF9zdHIo
c3RyaW5nW2ldKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIG91
dHB1dDsKKyAgICAgICAgICAgIH0pOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHNhbml0aXplX2Fs
bF91bnBhaXJlZF9zdXJyb2dhdGVzKHRlc3RzKSB7CkBAIC0yNDczLDcgKzMxMzEsNyBAQCBwb2xp
Y2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgZm9yRWFjaCAodGhpcy5h
bGxfZG9uZV9jYWxsYmFja3MsCiAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGNhbGxiYWNrKQog
ICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayh0aGlzX29i
ai50ZXN0cywgdGhpc19vYmouc3RhdHVzKTsKKyAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNr
KHRoaXNfb2JqLnRlc3RzLCB0aGlzX29iai5zdGF0dXMsIHRoaXNfb2JqLmFzc2VydHNfcnVuKTsK
ICAgICAgICAgICAgICAgICAgfSk7CiAgICAgfTsKIApAQCAtMjQ4NCwyNCArMzE0Miw4IEBAIHBv
bGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAgICB2YXIgbWVzc2FnZV9w
b3J0OwogCiAgICAgICAgIGlmIChpc19zZXJ2aWNlX3dvcmtlcih3b3JrZXIpKSB7Ci0gICAgICAg
ICAgICBpZiAod2luZG93Lk1lc3NhZ2VDaGFubmVsKSB7Ci0gICAgICAgICAgICAgICAgLy8gVGhl
IFNlcnZpY2VXb3JrZXIncyBpbXBsaWNpdCBNZXNzYWdlUG9ydCBpcyBjdXJyZW50bHkgbm90Ci0g
ICAgICAgICAgICAgICAgLy8gcmVsaWFibHkgYWNjZXNzaWJsZSBmcm9tIHRoZSBTZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUgZHVlIHRvCi0gICAgICAgICAgICAgICAgLy8gQmxpbmsgc2V0dGluZyBN
ZXNzYWdlRXZlbnQuc291cmNlIHRvIG51bGwgZm9yIG1lc3NhZ2VzIHNlbnQKLSAgICAgICAgICAg
ICAgICAvLyB2aWEgU2VydmljZVdvcmtlci5wb3N0TWVzc2FnZSgpLiBVbnRpbCB0aGF0J3MgcmVz
b2x2ZWQsCi0gICAgICAgICAgICAgICAgLy8gY3JlYXRlIGFuIGV4cGxpY2l0IE1lc3NhZ2VDaGFu
bmVsIGFuZCBwYXNzIG9uZSBlbmQgdG8gdGhlCi0gICAgICAgICAgICAgICAgLy8gd29ya2VyLgot
ICAgICAgICAgICAgICAgIHZhciBtZXNzYWdlX2NoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWwo
KTsKLSAgICAgICAgICAgICAgICBtZXNzYWdlX3BvcnQgPSBtZXNzYWdlX2NoYW5uZWwucG9ydDE7
Ci0gICAgICAgICAgICAgICAgbWVzc2FnZV9wb3J0LnN0YXJ0KCk7Ci0gICAgICAgICAgICAgICAg
d29ya2VyLnBvc3RNZXNzYWdlKHt0eXBlOiAiY29ubmVjdCJ9LCBbbWVzc2FnZV9jaGFubmVsLnBv
cnQyXSk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIC8vIElmIE1lc3Nh
Z2VDaGFubmVsIGlzIG5vdCBhdmFpbGFibGUsIHRoZW4gdHJ5IHRoZQotICAgICAgICAgICAgICAg
IC8vIFNlcnZpY2VXb3JrZXIucG9zdE1lc3NhZ2UoKSBhcHByb2FjaCB1c2luZyBNZXNzYWdlRXZl
bnQuc291cmNlCi0gICAgICAgICAgICAgICAgLy8gb24gdGhlIG90aGVyIGVuZC4KLSAgICAgICAg
ICAgICAgICBtZXNzYWdlX3BvcnQgPSBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlcjsKLSAgICAgICAg
ICAgICAgICB3b3JrZXIucG9zdE1lc3NhZ2Uoe3R5cGU6ICJjb25uZWN0In0pOwotICAgICAgICAg
ICAgfQorICAgICAgICAgICAgbWVzc2FnZV9wb3J0ID0gbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXI7
CisgICAgICAgICAgICB3b3JrZXIucG9zdE1lc3NhZ2Uoe3R5cGU6ICJjb25uZWN0In0pOwogICAg
ICAgICB9IGVsc2UgaWYgKGlzX3NoYXJlZF93b3JrZXIod29ya2VyKSkgewogICAgICAgICAgICAg
bWVzc2FnZV9wb3J0ID0gd29ya2VyLnBvcnQ7CiAgICAgICAgICAgICBtZXNzYWdlX3BvcnQuc3Rh
cnQoKTsKQEAgLTI3MDQsNyArMzM0Niw3IEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9y
bXMgWzNdLgogICAgICAgICAgICAgdGhpcy5waGFzZSA9IHRoaXMuSEFWRV9SRVNVTFRTOwogICAg
ICAgICB9CiAgICAgICAgIHZhciBkb25lX2NvdW50ID0gdGVzdHMudGVzdHMubGVuZ3RoIC0gdGVz
dHMubnVtX3BlbmRpbmc7Ci0gICAgICAgIGlmICh0aGlzLm91dHB1dF9ub2RlKSB7CisgICAgICAg
IGlmICh0aGlzLm91dHB1dF9ub2RlICYmICF0ZXN0cy5oaWRlX3Rlc3Rfc3RhdGUpIHsKICAgICAg
ICAgICAgIGlmIChkb25lX2NvdW50IDwgMTAwIHx8CiAgICAgICAgICAgICAgICAgKGRvbmVfY291
bnQgPCAxMDAwICYmIGRvbmVfY291bnQgJSAxMDAgPT09IDApIHx8CiAgICAgICAgICAgICAgICAg
ZG9uZV9jb3VudCAlIDEwMDAgPT09IDApIHsKQEAgLTI3MTUsNyArMzM1Nyw3IEBAIHBvbGljaWVz
IGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAgICB9CiAgICAgfTsKIAotICAgIE91
dHB1dC5wcm90b3R5cGUuc2hvd19yZXN1bHRzID0gZnVuY3Rpb24gKHRlc3RzLCBoYXJuZXNzX3N0
YXR1cykgeworICAgIE91dHB1dC5wcm90b3R5cGUuc2hvd19yZXN1bHRzID0gZnVuY3Rpb24gKHRl
c3RzLCBoYXJuZXNzX3N0YXR1cywgYXNzZXJ0c19ydW4pIHsKICAgICAgICAgaWYgKHRoaXMucGhh
c2UgPj0gdGhpcy5DT01QTEVURSkgewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBA
IC0yNzQ0LDIxICszMzg2LDEwIEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNd
LgogICAgICAgICAgICAgaGVhZHNbMF0uYXBwZW5kQ2hpbGQoc3R5bGVzaGVldCk7CiAgICAgICAg
IH0KIAotICAgICAgICB2YXIgc3RhdHVzX3RleHRfaGFybmVzcyA9IHt9OwotICAgICAgICBzdGF0
dXNfdGV4dF9oYXJuZXNzW2hhcm5lc3Nfc3RhdHVzLk9LXSA9ICJPSyI7Ci0gICAgICAgIHN0YXR1
c190ZXh0X2hhcm5lc3NbaGFybmVzc19zdGF0dXMuRVJST1JdID0gIkVycm9yIjsKLSAgICAgICAg
c3RhdHVzX3RleHRfaGFybmVzc1toYXJuZXNzX3N0YXR1cy5USU1FT1VUXSA9ICJUaW1lb3V0IjsK
LQotICAgICAgICB2YXIgc3RhdHVzX3RleHQgPSB7fTsKLSAgICAgICAgc3RhdHVzX3RleHRbVGVz
dC5wcm90b3R5cGUuUEFTU10gPSAiUGFzcyI7Ci0gICAgICAgIHN0YXR1c190ZXh0W1Rlc3QucHJv
dG90eXBlLkZBSUxdID0gIkZhaWwiOwotICAgICAgICBzdGF0dXNfdGV4dFtUZXN0LnByb3RvdHlw
ZS5USU1FT1VUXSA9ICJUaW1lb3V0IjsKLSAgICAgICAgc3RhdHVzX3RleHRbVGVzdC5wcm90b3R5
cGUuTk9UUlVOXSA9ICJOb3QgUnVuIjsKLQogICAgICAgICB2YXIgc3RhdHVzX251bWJlciA9IHt9
OwogICAgICAgICBmb3JFYWNoKHRlc3RzLAogICAgICAgICAgICAgICAgIGZ1bmN0aW9uKHRlc3Qp
IHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXR1cyA9IHN0YXR1c190ZXh0W3Rlc3Quc3Rh
dHVzXTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXR1cyA9IHRlc3QuZm9ybWF0X3N0YXR1
cygpOwogICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzX251bWJlci5oYXNPd25Qcm9wZXJ0
eShzdGF0dXMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXNfbnVtYmVyW3N0YXR1
c10gKz0gMTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTI3NzUsOCArMzQwNiw3
IEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBbImgyIiwge30sICJTdW1tYXJ5Il0sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgewotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc3RhdHVzID0g
c3RhdHVzX3RleHRfaGFybmVzc1toYXJuZXNzX3N0YXR1cy5zdGF0dXNdOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXR1cyA9IGhhcm5lc3Nfc3RhdHVzLmZvcm1h
dF9zdGF0dXMoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBydiA9
IFtbInNlY3Rpb24iLCB7fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgWyJwIiwge30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiSGFybmVzcyBzdGF0dXM6ICIsCkBAIC0yNzk4LDEzICszNDI4LDE0IEBAIHBv
bGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHZhciBydiA9IFtbImRpdiIsIHt9XV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2YXIgaSA9IDA7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3
aGlsZSAoc3RhdHVzX3RleHQuaGFzT3duUHJvcGVydHkoaSkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzX251bWJlci5oYXNPd25Qcm9wZXJ0eShz
dGF0dXNfdGV4dFtpXSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdmFyIHN0YXR1cyA9IHN0YXR1c190ZXh0W2ldOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBydlswXS5wdXNoKFsiZGl2IiwgeyJjbGFzcyI6c3RhdHVz
X2NsYXNzKHN0YXR1cyl9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hp
bGUgKFRlc3QucHJvdG90eXBlLnN0YXR1c19mb3JtYXRzLmhhc093blByb3BlcnR5KGkpKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXR1c19udW1iZXIu
aGFzT3duUHJvcGVydHkoVGVzdC5wcm90b3R5cGUuc3RhdHVzX2Zvcm1hdHNbaV0pKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzdGF0dXMgPSBUZXN0
LnByb3RvdHlwZS5zdGF0dXNfZm9ybWF0c1tpXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcnZbMF0ucHVzaChbImRpdiIsIHt9LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImxhYmVsIiwge30sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBb
ImlucHV0Iiwge3R5cGU6ImNoZWNrYm94IiwgY2hlY2tlZDoiY2hlY2tlZCJ9XSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c19u
dW1iZXJbc3RhdHVzXSArICIgIiArIHN0YXR1c11dKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c19udW1iZXJbc3RhdHVzXSAr
ICIgIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFsic3BhbiIsIHsiY2xhc3MiOnN0YXR1c19jbGFzcyhzdGF0dXMpfSwgc3RhdHVzXV1d
KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSsrOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQpAQCAtMjgyNCwxMyArMzQ1NSwxMyBAQCBwb2xpY2llcyBhbmQgY29u
dHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3VsdF9jbGFzcyA9IGVsZW1lbnQucGFyZW50
Tm9kZS5nZXRBdHRyaWJ1dGUoImNsYXNzIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2YXIgcmVzdWx0X2NsYXNzID0gZWxlbWVudC5xdWVyeVNlbGVjdG9yKCJzcGFuW2NsYXNz
XSIpLmdldEF0dHJpYnV0ZSgiY2xhc3MiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHZhciBzdHlsZV9lbGVtZW50ID0gb3V0cHV0X2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoInN0
eWxlI2hpZGUtIiArIHJlc3VsdF9jbGFzcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2YXIgaW5wdXRfZWxlbWVudCA9IGVsZW1lbnQucXVlcnlTZWxlY3RvcigiaW5wdXQiKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc3R5bGVfZWxlbWVudCAmJiAh
aW5wdXRfZWxlbWVudC5jaGVja2VkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3R5bGVfZWxlbWVudCA9IG91dHB1dF9kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoeGh0
bWxfbnMsICJzdHlsZSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
eWxlX2VsZW1lbnQuaWQgPSAiaGlkZS0iICsgcmVzdWx0X2NsYXNzOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0eWxlX2VsZW1lbnQudGV4dENvbnRlbnQgPSAidGFibGUj
cmVzdWx0cyA+IHRib2R5ID4gdHIuIityZXN1bHRfY2xhc3MrIntkaXNwbGF5Om5vbmV9IjsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZV9lbGVtZW50LnRleHRDb250
ZW50ID0gInRhYmxlI3Jlc3VsdHMgPiB0Ym9keSA+IHRyLm92ZXJhbGwtIityZXN1bHRfY2xhc3Mr
IntkaXNwbGF5Om5vbmV9IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBv
dXRwdXRfZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzdHlsZV9lbGVtZW50KTsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc3R5bGVfZWxlbWVudCAmJiBpbnB1
dF9lbGVtZW50LmNoZWNrZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdHlsZV9lbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoc3R5bGVfZWxlbWVudCk7CkBA
IC0yODcxLDYgKzM1MDIsNTIgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10u
CiAgICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgIH0KIAorICAgICAgICB2YXIgYXNzZXJ0
c19ydW5fYnlfdGVzdCA9IG5ldyBNYXAoKTsKKyAgICAgICAgYXNzZXJ0c19ydW4uZm9yRWFjaChh
c3NlcnQgPT4geworICAgICAgICAgICAgaWYgKCFhc3NlcnRzX3J1bl9ieV90ZXN0Lmhhcyhhc3Nl
cnQudGVzdCkpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnRzX3J1bl9ieV90ZXN0LnNldChhc3Nl
cnQudGVzdCwgW10pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYXNzZXJ0c19ydW5fYnlf
dGVzdC5nZXQoYXNzZXJ0LnRlc3QpLnB1c2goYXNzZXJ0KTsKKyAgICAgICAgfSk7CisKKyAgICAg
ICAgZnVuY3Rpb24gZ2V0X2Fzc2VydHNfb3V0cHV0KHRlc3QpIHsKKyAgICAgICAgICAgIHZhciBh
c3NlcnRzID0gYXNzZXJ0c19ydW5fYnlfdGVzdC5nZXQodGVzdCk7CisgICAgICAgICAgICBpZiAo
IWFzc2VydHMpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gIk5vIGFzc2VydHMgcmFuIjsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIHJ2ID0gIjx0YWJsZT4iOworICAgICAgICAgICAgcnYg
Kz0gYXNzZXJ0cy5tYXAoYXNzZXJ0ID0+IHsKKyAgICAgICAgICAgICAgICB2YXIgb3V0cHV0X2Zu
ID0gIjxzdHJvbmc+IiArIGVzY2FwZV9odG1sKGFzc2VydC5hc3NlcnRfbmFtZSkgKyAiPC9zdHJv
bmc+KCI7CisgICAgICAgICAgICAgICAgdmFyIHByZWZpeF9sZW4gPSBvdXRwdXRfZm4ubGVuZ3Ro
OworICAgICAgICAgICAgICAgIHZhciBvdXRwdXRfYXJncyA9IGFzc2VydC5hcmdzOworICAgICAg
ICAgICAgICAgIHZhciBvdXRwdXRfbGVuID0gb3V0cHV0X2FyZ3MucmVkdWNlKChwcmV2LCBjdXJy
ZW50KSA9PiBwcmV2K2N1cnJlbnQsIHByZWZpeF9sZW4pOworICAgICAgICAgICAgICAgIGlmIChv
dXRwdXRfbGVuW291dHB1dF9sZW4ubGVuZ3RoIC0gMV0gPiA1MCkgeworICAgICAgICAgICAgICAg
ICAgICBvdXRwdXRfYXJncyA9IG91dHB1dF9hcmdzLm1hcCgoeCwgaSkgPT4KKyAgICAgICAgICAg
ICAgICAgICAgKGkgPiAwID8gIiAgIi5yZXBlYXQocHJlZml4X2xlbikgOiAiIiApKyB4ICsgKGkg
PCBvdXRwdXRfYXJncy5sZW5ndGggLSAxID8gIixcbiIgOiAiIikpOworICAgICAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIG91dHB1dF9hcmdzID0gb3V0cHV0X2FyZ3Mu
bWFwKCh4LCBpKSA9PiB4ICsgKGkgPCBvdXRwdXRfYXJncy5sZW5ndGggLSAxID8gIiwgIiA6ICIi
KSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG91dHB1dF9mbiArPSBlc2Nh
cGVfaHRtbChvdXRwdXRfYXJncy5qb2luKCIiKSk7CisgICAgICAgICAgICAgICAgb3V0cHV0X2Zu
ICs9ICcpJzsKKyAgICAgICAgICAgICAgICB2YXIgb3V0cHV0X2xvY2F0aW9uOworICAgICAgICAg
ICAgICAgIGlmIChhc3NlcnQuc3RhY2spIHsKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0X2xv
Y2F0aW9uID0gYXNzZXJ0LnN0YWNrLnNwbGl0KCJcbiIsIDEpWzBdLnJlcGxhY2UoL0A/XHcrOlwv
XC9bXiAiXC9dKyg/OjpcZCspPy9nLCAiICIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICByZXR1cm4gIjx0ciBjbGFzcz0nb3ZlcmFsbC0iICsKKyAgICAgICAgICAgICAgICAg
ICAgc3RhdHVzX2NsYXNzKFRlc3QucHJvdG90eXBlLnN0YXR1c19mb3JtYXRzW2Fzc2VydC5zdGF0
dXNdKSArICInPiIgKworICAgICAgICAgICAgICAgICAgICAiPHRkIGNsYXNzPSciICsKKyAgICAg
ICAgICAgICAgICAgICAgc3RhdHVzX2NsYXNzKFRlc3QucHJvdG90eXBlLnN0YXR1c19mb3JtYXRz
W2Fzc2VydC5zdGF0dXNdKSArICInPiIgKworICAgICAgICAgICAgICAgICAgICBUZXN0LnByb3Rv
dHlwZS5zdGF0dXNfZm9ybWF0c1thc3NlcnQuc3RhdHVzXSArICI8L3RkPiIgKworICAgICAgICAg
ICAgICAgICAgICAiPHRkPjxwcmU+IiArCisgICAgICAgICAgICAgICAgICAgIG91dHB1dF9mbiAr
CisgICAgICAgICAgICAgICAgICAgIChvdXRwdXRfbG9jYXRpb24gPyAiXG4iICsgZXNjYXBlX2h0
bWwob3V0cHV0X2xvY2F0aW9uKSA6ICIiKSArCisgICAgICAgICAgICAgICAgICAgICI8L3ByZT48
L3RkPjwvdHI+IjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICkuam9pbigiXG4iKTsKKyAg
ICAgICAgICAgIHJ2ICs9ICI8L3RhYmxlPiI7CisgICAgICAgICAgICByZXR1cm4gcnY7CisgICAg
ICAgIH0KKwogICAgICAgICBsb2cuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KHhodG1sX25zLCAic2VjdGlvbiIpKTsKICAgICAgICAgdmFyIGFzc2VydGlvbnMgPSBoYXNfYXNz
ZXJ0aW9ucygpOwogICAgICAgICB2YXIgaHRtbCA9ICI8aDI+RGV0YWlsczwvaDI+PHRhYmxlIGlk
PSdyZXN1bHRzJyAiICsgKGFzc2VydGlvbnMgPyAiY2xhc3M9J2Fzc2VydGlvbnMnIiA6ICIiICkg
KyAiPiIgKwpAQCAtMjg3OSwxOSArMzU1NiwyNiBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9u
IGZvcm1zIFszXS4KICAgICAgICAgICAgICI8dGg+TWVzc2FnZTwvdGg+PC90cj48L3RoZWFkPiIg
KwogICAgICAgICAgICAgIjx0Ym9keT4iOwogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRl
c3RzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICBodG1sICs9ICc8dHIgY2xhc3M9IicgKwot
ICAgICAgICAgICAgICAgIGVzY2FwZV9odG1sKHN0YXR1c19jbGFzcyhzdGF0dXNfdGV4dFt0ZXN0
c1tpXS5zdGF0dXNdKSkgKwotICAgICAgICAgICAgICAgICciPjx0ZD4nICsKLSAgICAgICAgICAg
ICAgICBlc2NhcGVfaHRtbChzdGF0dXNfdGV4dFt0ZXN0c1tpXS5zdGF0dXNdKSArCisgICAgICAg
ICAgICB2YXIgdGVzdCA9IHRlc3RzW2ldOworICAgICAgICAgICAgaHRtbCArPSAnPHRyIGNsYXNz
PSJvdmVyYWxsLScgKworICAgICAgICAgICAgICAgIHN0YXR1c19jbGFzcyh0ZXN0LmZvcm1hdF9z
dGF0dXMoKSkgKworICAgICAgICAgICAgICAgICciPicgKworICAgICAgICAgICAgICAgICc8dGQg
Y2xhc3M9IicgKworICAgICAgICAgICAgICAgIHN0YXR1c19jbGFzcyh0ZXN0LmZvcm1hdF9zdGF0
dXMoKSkgKworICAgICAgICAgICAgICAgICciPicgKworICAgICAgICAgICAgICAgIHRlc3QuZm9y
bWF0X3N0YXR1cygpICsKICAgICAgICAgICAgICAgICAiPC90ZD48dGQ+IiArCi0gICAgICAgICAg
ICAgICAgZXNjYXBlX2h0bWwodGVzdHNbaV0ubmFtZSkgKworICAgICAgICAgICAgICAgIGVzY2Fw
ZV9odG1sKHRlc3QubmFtZSkgKwogICAgICAgICAgICAgICAgICI8L3RkPjx0ZD4iICsKLSAgICAg
ICAgICAgICAgICAoYXNzZXJ0aW9ucyA/IGVzY2FwZV9odG1sKGdldF9hc3NlcnRpb24odGVzdHNb
aV0pKSArICI8L3RkPjx0ZD4iIDogIiIpICsKLSAgICAgICAgICAgICAgICBlc2NhcGVfaHRtbCh0
ZXN0c1tpXS5tZXNzYWdlID8gdGVzdHNbaV0ubWVzc2FnZSA6ICIgIikgKworICAgICAgICAgICAg
ICAgIChhc3NlcnRpb25zID8gZXNjYXBlX2h0bWwoZ2V0X2Fzc2VydGlvbih0ZXN0KSkgKyAiPC90
ZD48dGQ+IiA6ICIiKSArCisgICAgICAgICAgICAgICAgZXNjYXBlX2h0bWwodGVzdC5tZXNzYWdl
ID8gdGVzdHNbaV0ubWVzc2FnZSA6ICIgIikgKwogICAgICAgICAgICAgICAgICh0ZXN0c1tpXS5z
dGFjayA/ICI8cHJlPiIgKwogICAgICAgICAgICAgICAgICBlc2NhcGVfaHRtbCh0ZXN0c1tpXS5z
dGFjaykgKwotICAgICAgICAgICAgICAgICAiPC9wcmU+IjogIiIpICsKLSAgICAgICAgICAgICAg
ICAiPC90ZD48L3RyPiI7CisgICAgICAgICAgICAgICAgICI8L3ByZT4iOiAiIik7CisgICAgICAg
ICAgICBpZiAoISh0ZXN0IGluc3RhbmNlb2YgUmVtb3RlVGVzdCkpIHsKKyAgICAgICAgICAgICAg
ICAgaHRtbCArPSAiPGRldGFpbHM+PHN1bW1hcnk+QXNzZXJ0cyBydW48L3N1bW1hcnk+IiArIGdl
dF9hc3NlcnRzX291dHB1dCh0ZXN0KSArICI8L2RldGFpbHM+IgorICAgICAgICAgICAgfQorICAg
ICAgICAgICAgaHRtbCArPSAiPC90ZD48L3RyPiI7CiAgICAgICAgIH0KICAgICAgICAgaHRtbCAr
PSAiPC90Ym9keT48L3RhYmxlPiI7CiAgICAgICAgIHRyeSB7CkBAIC0zMDczLDkgKzM3NTcsNiBA
QCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgKi8KICAgICBmdW5j
dGlvbiBhc3NlcnQoZXhwZWN0ZWRfdHJ1ZSwgZnVuY3Rpb25fbmFtZSwgZGVzY3JpcHRpb24sIGVy
cm9yLCBzdWJzdGl0dXRpb25zKQogICAgIHsKLSAgICAgICAgaWYgKHRlc3RzLnRlc3RzLmxlbmd0
aCA9PT0gMCkgewotICAgICAgICAgICAgdGVzdHMuc2V0X2ZpbGVfaXNfdGVzdCgpOwotICAgICAg
ICB9CiAgICAgICAgIGlmIChleHBlY3RlZF90cnVlICE9PSB0cnVlKSB7CiAgICAgICAgICAgICB2
YXIgbXNnID0gbWFrZV9tZXNzYWdlKGZ1bmN0aW9uX25hbWUsIGRlc2NyaXB0aW9uLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciwgc3Vic3RpdHV0aW9ucyk7CkBAIC0z
MDg1LDE0ICszNzY2LDE3IEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgog
CiAgICAgZnVuY3Rpb24gQXNzZXJ0aW9uRXJyb3IobWVzc2FnZSkKICAgICB7CisgICAgICAgIGlm
ICh0eXBlb2YgbWVzc2FnZSA9PSAic3RyaW5nIikgeworICAgICAgICAgICAgbWVzc2FnZSA9IHNh
bml0aXplX3VucGFpcmVkX3N1cnJvZ2F0ZXMobWVzc2FnZSk7CisgICAgICAgIH0KICAgICAgICAg
dGhpcy5tZXNzYWdlID0gbWVzc2FnZTsKLSAgICAgICAgdGhpcy5zdGFjayA9IHRoaXMuZ2V0X3N0
YWNrKCk7CisgICAgICAgIHRoaXMuc3RhY2sgPSBnZXRfc3RhY2soKTsKICAgICB9CiAgICAgZXhw
b3NlKEFzc2VydGlvbkVycm9yLCAiQXNzZXJ0aW9uRXJyb3IiKTsKIAogICAgIEFzc2VydGlvbkVy
cm9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoRXJyb3IucHJvdG90eXBlKTsKIAotICAgIEFz
c2VydGlvbkVycm9yLnByb3RvdHlwZS5nZXRfc3RhY2sgPSBmdW5jdGlvbigpIHsKKyAgICBjb25z
dCBnZXRfc3RhY2sgPSBmdW5jdGlvbigpIHsKICAgICAgICAgdmFyIHN0YWNrID0gbmV3IEVycm9y
KCkuc3RhY2s7CiAgICAgICAgIC8vIElFMTEgZG9lcyBub3QgaW5pdGlhbGl6ZSAnRXJyb3Iuc3Rh
Y2snIHVudGlsIHRoZSBvYmplY3QgaXMgdGhyb3duLgogICAgICAgICBpZiAoIXN0YWNrKSB7CkBA
IC0zMTM4LDYgKzM4MjIsMTMgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10u
CiAgICAgICAgIHJldHVybiBsaW5lcy5zbGljZShpKS5qb2luKCJcbiIpOwogICAgIH0KIAorICAg
IGZ1bmN0aW9uIE9wdGlvbmFsRmVhdHVyZVVuc3VwcG9ydGVkRXJyb3IobWVzc2FnZSkKKyAgICB7
CisgICAgICAgIEFzc2VydGlvbkVycm9yLmNhbGwodGhpcywgbWVzc2FnZSk7CisgICAgfQorICAg
IE9wdGlvbmFsRmVhdHVyZVVuc3VwcG9ydGVkRXJyb3IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0
ZShBc3NlcnRpb25FcnJvci5wcm90b3R5cGUpOworICAgIGV4cG9zZShPcHRpb25hbEZlYXR1cmVV
bnN1cHBvcnRlZEVycm9yLCAiT3B0aW9uYWxGZWF0dXJlVW5zdXBwb3J0ZWRFcnJvciIpOworCiAg
ICAgZnVuY3Rpb24gbWFrZV9tZXNzYWdlKGZ1bmN0aW9uX25hbWUsIGRlc2NyaXB0aW9uLCBlcnJv
ciwgc3Vic3RpdHV0aW9ucykKICAgICB7CiAgICAgICAgIGZvciAodmFyIHAgaW4gc3Vic3RpdHV0
aW9ucykgewpAQCAtMzMwNiw3ICszOTk3LDcgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBm
b3JtcyBbM10uCiAgICAgZnVuY3Rpb24gZ2V0X3RpdGxlKCkKICAgICB7CiAgICAgICAgIGlmICgn
ZG9jdW1lbnQnIGluIGdsb2JhbF9zY29wZSkgewotICAgICAgICAgICAgLy9Eb24ndCB1c2UgZG9j
dW1lbnQudGl0bGUgdG8gd29yayBhcm91bmQgYW4gT3BlcmEgYnVnIGluIFhIVE1MIGRvY3VtZW50
cworICAgICAgICAgICAgLy9Eb24ndCB1c2UgZG9jdW1lbnQudGl0bGUgdG8gd29yayBhcm91bmQg
YW4gT3BlcmEvUHJlc3RvIGJ1ZyBpbiBYSFRNTCBkb2N1bWVudHMKICAgICAgICAgICAgIHZhciB0
aXRsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0aXRsZSIpWzBdOwogICAgICAg
ICAgICAgaWYgKHRpdGxlICYmIHRpdGxlLmZpcnN0Q2hpbGQgJiYgdGl0bGUuZmlyc3RDaGlsZC5k
YXRhKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRpdGxlLmZpcnN0Q2hpbGQuZGF0YTsKQEAg
LTMzNjUsMzggKzQwNTYsNTYgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10u
CiAgICAgdmFyIHRlc3RzID0gbmV3IFRlc3RzKCk7CiAKICAgICBpZiAoZ2xvYmFsX3Njb3BlLmFk
ZEV2ZW50TGlzdGVuZXIpIHsKLSAgICAgICAgdmFyIGVycm9yX2hhbmRsZXIgPSBmdW5jdGlvbihl
KSB7Ci0gICAgICAgICAgICBpZiAodGVzdHMudGVzdHMubGVuZ3RoID09PSAwICYmICF0ZXN0cy5h
bGxvd191bmNhdWdodF9leGNlcHRpb24pIHsKLSAgICAgICAgICAgICAgICB0ZXN0cy5zZXRfZmls
ZV9pc190ZXN0KCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHZhciBzdGFjazsKLSAg
ICAgICAgICAgIGlmIChlLmVycm9yICYmIGUuZXJyb3Iuc3RhY2spIHsKLSAgICAgICAgICAgICAg
ICBzdGFjayA9IGUuZXJyb3Iuc3RhY2s7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgICAgIHN0YWNrID0gZS5maWxlbmFtZSArICI6IiArIGUubGluZW5vICsgIjoiICsgZS5jb2xu
bzsKLSAgICAgICAgICAgIH0KLQorICAgICAgICB2YXIgZXJyb3JfaGFuZGxlciA9IGZ1bmN0aW9u
KGVycm9yLCBtZXNzYWdlLCBzdGFjaykgeworICAgICAgICAgICAgdmFyIG9wdGlvbmFsX3Vuc3Vw
cG9ydGVkID0gZXJyb3IgaW5zdGFuY2VvZiBPcHRpb25hbEZlYXR1cmVVbnN1cHBvcnRlZEVycm9y
OwogICAgICAgICAgICAgaWYgKHRlc3RzLmZpbGVfaXNfdGVzdCkgewogICAgICAgICAgICAgICAg
IHZhciB0ZXN0ID0gdGVzdHMudGVzdHNbMF07CiAgICAgICAgICAgICAgICAgaWYgKHRlc3QucGhh
c2UgPj0gdGVzdC5waGFzZXMuSEFTX1JFU1VMVCkgewogICAgICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHRlc3Quc2V0X3N0YXR1cyh0
ZXN0LkZBSUwsIGUubWVzc2FnZSwgc3RhY2spOworICAgICAgICAgICAgICAgIHZhciBzdGF0dXMg
PSBvcHRpb25hbF91bnN1cHBvcnRlZCA/IHRlc3QuUFJFQ09ORElUSU9OX0ZBSUxFRCA6IHRlc3Qu
RkFJTDsKKyAgICAgICAgICAgICAgICB0ZXN0LnNldF9zdGF0dXMoc3RhdHVzLCBtZXNzYWdlLCBz
dGFjayk7CiAgICAgICAgICAgICAgICAgdGVzdC5waGFzZSA9IHRlc3QucGhhc2VzLkhBU19SRVNV
TFQ7Ci0gICAgICAgICAgICAgICAgLy8gVGhlIGZvbGxvd2luZyBmdW5jdGlvbiBpbnZvY2F0aW9u
IGlzIHN1cGVyZmx1b3VzLgotICAgICAgICAgICAgICAgIC8vIFRPRE86IFJlbW92ZS4KLSAgICAg
ICAgICAgICAgICB0ZXN0LmRvbmUoKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRlc3RzLmFs
bG93X3VuY2F1Z2h0X2V4Y2VwdGlvbikgewotICAgICAgICAgICAgICAgIHRlc3RzLnN0YXR1cy5z
dGF0dXMgPSB0ZXN0cy5zdGF0dXMuRVJST1I7Ci0gICAgICAgICAgICAgICAgdGVzdHMuc3RhdHVz
Lm1lc3NhZ2UgPSBlLm1lc3NhZ2U7CisgICAgICAgICAgICAgICAgdmFyIHN0YXR1cyA9IG9wdGlv
bmFsX3Vuc3VwcG9ydGVkID8gdGVzdHMuc3RhdHVzLlBSRUNPTkRJVElPTl9GQUlMRUQgOiB0ZXN0
cy5zdGF0dXMuRVJST1I7CisgICAgICAgICAgICAgICAgdGVzdHMuc3RhdHVzLnN0YXR1cyA9IHN0
YXR1czsKKyAgICAgICAgICAgICAgICB0ZXN0cy5zdGF0dXMubWVzc2FnZSA9IG1lc3NhZ2U7CiAg
ICAgICAgICAgICAgICAgdGVzdHMuc3RhdHVzLnN0YWNrID0gc3RhY2s7CiAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICBkb25lKCk7CisKKyAgICAgICAgICAgIC8vIERvIG5vdCB0cmFuc2l0aW9u
IHRvIHRoZSAiY29tcGxldGUiIHBoYXNlIGlmIHRoZSB0ZXN0IGhhcyBiZWVuCisgICAgICAgICAg
ICAvLyBjb25maWd1cmVkIHRvIGFsbG93IHVuY2F1Z2h0IGV4Y2VwdGlvbnMuIFRoaXMgZ2l2ZXMg
dGhlIHRlc3QgYW4KKyAgICAgICAgICAgIC8vIG9wcG9ydHVuaXR5IHRvIGRlZmluZSBzdWJ0ZXN0
cyBiYXNlZCBvbiB0aGUgZXhjZXB0aW9uIHJlcG9ydGluZworICAgICAgICAgICAgLy8gYmVoYXZp
b3IuCisgICAgICAgICAgICBpZiAoIXRlc3RzLmFsbG93X3VuY2F1Z2h0X2V4Y2VwdGlvbikgewor
ICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAotICAg
ICAgICBhZGRFdmVudExpc3RlbmVyKCJlcnJvciIsIGVycm9yX2hhbmRsZXIsIGZhbHNlKTsKLSAg
ICAgICAgYWRkRXZlbnRMaXN0ZW5lcigidW5oYW5kbGVkcmVqZWN0aW9uIiwgZnVuY3Rpb24oZSl7
IGVycm9yX2hhbmRsZXIoZS5yZWFzb24pOyB9LCBmYWxzZSk7CisgICAgICAgIGFkZEV2ZW50TGlz
dGVuZXIoImVycm9yIiwgZnVuY3Rpb24oZSkgeworICAgICAgICAgICAgdmFyIG1lc3NhZ2UgPSBl
Lm1lc3NhZ2U7CisgICAgICAgICAgICB2YXIgc3RhY2s7CisgICAgICAgICAgICBpZiAoZS5lcnJv
ciAmJiBlLmVycm9yLnN0YWNrKSB7CisgICAgICAgICAgICAgICAgc3RhY2sgPSBlLmVycm9yLnN0
YWNrOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBzdGFjayA9IGUuZmls
ZW5hbWUgKyAiOiIgKyBlLmxpbmVubyArICI6IiArIGUuY29sbm87CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBlcnJvcl9oYW5kbGVyKGUuZXJyb3IsIG1lc3NhZ2UsIHN0YWNrKTsKKyAgICAg
ICAgfSwgZmFsc2UpOworCisgICAgICAgIGFkZEV2ZW50TGlzdGVuZXIoInVuaGFuZGxlZHJlamVj
dGlvbiIsIGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgICAgIHZhciBtZXNzYWdlOworICAgICAgICAg
ICAgaWYgKGUucmVhc29uICYmIGUucmVhc29uLm1lc3NhZ2UpIHsKKyAgICAgICAgICAgICAgICBt
ZXNzYWdlID0gIlVuaGFuZGxlZCByZWplY3Rpb246ICIgKyBlLnJlYXNvbi5tZXNzYWdlOworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtZXNzYWdlID0gIlVuaGFuZGxlZCBy
ZWplY3Rpb24iOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdmFyIHN0YWNrOworICAgICAg
ICAgICAgaWYgKGUucmVhc29uICYmIGUucmVhc29uLnN0YWNrKSB7CisgICAgICAgICAgICAgICAg
c3RhY2sgPSBlLnJlYXNvbi5zdGFjazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVycm9y
X2hhbmRsZXIoZS5yZWFzb24sIG1lc3NhZ2UsIHN0YWNrKTsKKyAgICAgICAgfSwgZmFsc2UpOwog
ICAgIH0KIAogICAgIHRlc3RfZW52aXJvbm1lbnQub25fdGVzdHNfcmVhZHkoKTsKQEAgLTM0MzEs
NTAgKzQxNDAsNjIgQEAgdGFibGUjcmVzdWx0cyB7XAogICAgIHdpZHRoOjEwMCU7XAogfVwKIFwK
LXRhYmxlI3Jlc3VsdHMgdGg6Zmlyc3QtY2hpbGQsXAotdGFibGUjcmVzdWx0cyB0ZDpmaXJzdC1j
aGlsZCB7XAotICAgIHdpZHRoOjRlbTtcCit0YWJsZSNyZXN1bHRzID4gdGhlYWQgPiB0ciA+IHRo
OmZpcnN0LWNoaWxkLFwKK3RhYmxlI3Jlc3VsdHMgPiB0Ym9keSA+IHRyID4gdGQ6Zmlyc3QtY2hp
bGQge1wKKyAgICB3aWR0aDo4ZW07XAogfVwKIFwKLXRhYmxlI3Jlc3VsdHMgdGg6bGFzdC1jaGls
ZCxcCi10YWJsZSNyZXN1bHRzIHRkOmxhc3QtY2hpbGQge1wKK3RhYmxlI3Jlc3VsdHMgPiB0aGVh
ZCA+IHRyID4gdGg6bGFzdC1jaGlsZCxcCit0YWJsZSNyZXN1bHRzID4gdGhlYWQgPiB0ciA+IHRk
Omxhc3QtY2hpbGQge1wKICAgICB3aWR0aDo1MCU7XAogfVwKIFwKLXRhYmxlI3Jlc3VsdHMuYXNz
ZXJ0aW9ucyB0aDpsYXN0LWNoaWxkLFwKLXRhYmxlI3Jlc3VsdHMuYXNzZXJ0aW9ucyB0ZDpsYXN0
LWNoaWxkIHtcCit0YWJsZSNyZXN1bHRzLmFzc2VydGlvbnMgPiB0aGVhZCA+IHRyID4gdGg6bGFz
dC1jaGlsZCxcCit0YWJsZSNyZXN1bHRzLmFzc2VydGlvbnMgPiB0Ym9keSA+IHRyID4gdGQ6bGFz
dC1jaGlsZCB7XAogICAgIHdpZHRoOjM1JTtcCiB9XAogXAotdGFibGUjcmVzdWx0cyB0aCB7XAor
dGFibGUjcmVzdWx0cyA+IHRoZWFkID4gPiB0ciA+IHRoIHtcCiAgICAgcGFkZGluZzowO1wKICAg
ICBwYWRkaW5nLWJvdHRvbTowLjVlbTtcCiAgICAgYm9yZGVyLWJvdHRvbTptZWRpdW0gc29saWQg
YmxhY2s7XAogfVwKIFwKLXRhYmxlI3Jlc3VsdHMgdGQge1wKK3RhYmxlI3Jlc3VsdHMgPiB0Ym9k
eSA+IHRyPiB0ZCB7XAogICAgIHBhZGRpbmc6MWVtO1wKICAgICBwYWRkaW5nLWJvdHRvbTowLjVl
bTtcCiAgICAgYm9yZGVyLWJvdHRvbTp0aGluIHNvbGlkIGJsYWNrO1wKIH1cCiBcCi10ci5wYXNz
ID4gdGQ6Zmlyc3QtY2hpbGQge1wKKy5wYXNzIHtcCiAgICAgY29sb3I6Z3JlZW47XAogfVwKIFwK
LXRyLmZhaWwgPiB0ZDpmaXJzdC1jaGlsZCB7XAorLmZhaWwge1wKICAgICBjb2xvcjpyZWQ7XAog
fVwKIFwKLXRyLnRpbWVvdXQgPiB0ZDpmaXJzdC1jaGlsZCB7XAordHIudGltZW91dCB7XAogICAg
IGNvbG9yOnJlZDtcCiB9XAogXAotdHIubm90cnVuID4gdGQ6Zmlyc3QtY2hpbGQge1wKK3RyLm5v
dHJ1biB7XAogICAgIGNvbG9yOmJsdWU7XAogfVwKIFwKLS5wYXNzID4gdGQ6Zmlyc3QtY2hpbGQs
IC5mYWlsID4gdGQ6Zmlyc3QtY2hpbGQsIC50aW1lb3V0ID4gdGQ6Zmlyc3QtY2hpbGQsIC5ub3Ry
dW4gPiB0ZDpmaXJzdC1jaGlsZCB7XAordHIub3B0aW9uYWx1bnN1cHBvcnRlZCB7XAorICAgIGNv
bG9yOmJsdWU7XAorfVwKK1wKKy5vayB7XAorICAgIGNvbG9yOmdyZWVuO1wKK31cCitcCisuZXJy
b3Ige1wKKyAgICBjb2xvcjpyZWQ7XAorfVwKK1wKKy5wYXNzLCAuZmFpbCwgLnRpbWVvdXQsIC5u
b3RydW4sIC5vcHRpb25hbHVuc3VwcG9ydGVkIC5vaywgLnRpbWVvdXQsIC5lcnJvciB7XAogICAg
IGZvbnQtdmFyaWFudDpzbWFsbC1jYXBzO1wKIH1cCiBcCkBAIC0zNDkxLDIzICs0MjEyLDcgQEAg
dGFibGUjcmVzdWx0cyBzcGFuLmFjdHVhbCB7XAogICAgIGZvbnQtZmFtaWx5OkRlamFWdSBTYW5z
IE1vbm8sIEJpdHN0cmVhbSBWZXJhIFNhbnMgTW9ubywgTW9ub3NwYWNlO1wKICAgICB3aGl0ZS1z
cGFjZTpwcmU7XAogfVwKLVwKLXNwYW4ub2sge1wKLSAgICBjb2xvcjpncmVlbjtcCi19XAotXAot
dHIuZXJyb3Ige1wKLSAgICBjb2xvcjpyZWQ7XAotfVwKLVwKLXNwYW4udGltZW91dCB7XAotICAg
IGNvbG9yOnJlZDtcCi19XAotXAotc3Bhbi5vaywgc3Bhbi50aW1lb3V0LCBzcGFuLmVycm9yIHtc
Ci0gICAgZm9udC12YXJpYW50OnNtYWxsLWNhcHM7XAotfVwKICI7CiAKLX0pKHRoaXMpOworfSko
c2VsZik7CiAvLyB2aW06IHNldCBleHBhbmR0YWIgc2hpZnR3aWR0aD00IHRhYnN0b3A9NDoKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2Uvd2Vic3FsL29wZW5EYXRhYmFzZS1kZXByZWNh
dGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS93ZWJzcWwvb3BlbkRhdGFiYXNlLWRlcHJl
Y2F0aW9uLmh0bWwKaW5kZXggYjAzNjg0NGVlYmM1MWYxMjA0NWMxNjExZmZjZTdhMjgwNGIzOGI2
NC4uMDkwZjk5ZDI1MjlhZGRkMjI2OWJiNmNmN2Y5YjU3OTE2MWI1MGMwZiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS93ZWJzcWwvb3BlbkRhdGFiYXNlLWRlcHJlY2F0aW9uLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS93ZWJzcWwvb3BlbkRhdGFiYXNlLWRlcHJlY2F0aW9u
Lmh0bWwKQEAgLTgsNiArOCw3IEBACiAgICAgPC9oZWFkPgogICAgIDxib2R5PgogICAgICAgICA8
c2NyaXB0Pgorc2V0dXAoeyBzaW5nbGVfdGVzdDogdHJ1ZSB9KTsKIGFzc2VydF9lcXVhbHMoT2Jq
ZWN0LmtleXMod2luZG93KS5pbmRleE9mKCJvcGVuRGF0YWJhc2UiKSwgLTEpOwogd2luZG93Lm9w
ZW5EYXRhYmFzZShudWxsLCBudWxsLCBudWxsLCBudWxsKTsKIGRvbmUoKTsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW0tY29udHJvbGxlci5qcyBi
L0xheW91dFRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW0tY29udHJvbGxlci5qcwpp
bmRleCBmZTgyZmE1YTFhMzZiMDYxNzZmNjQzMDEwNjg2MzYxZjNiYmJjNDBiLi4wOTI0MDQ1MDZm
MzBhZWRiZTY4MjAwNjlkNGU4MDM0ZGQxYTI5YTAxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9z
dHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtLWNvbnRyb2xsZXIuanMKKysrIGIvTGF5b3V0VGVz
dHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbS1jb250cm9sbGVyLmpzCkBAIC0yMCw3ICsy
MCw3IEBAIHRlc3QoZnVuY3Rpb24oKSB7CiAgICAgICAgIHR5cGU6ICJieXRlcyIKICAgICB9KTsK
IAotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigiQ2FuIG9ubHkgY2FsbCBSZWFkYWJs
ZUJ5dGVTdHJlYW1Db250cm9sbGVyLmVycm9yIG9uIGluc3RhbmNlcyBvZiBSZWFkYWJsZUJ5dGVT
dHJlYW1Db250cm9sbGVyIiksCisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsCiAgICAg
ICAgIGZ1bmN0aW9uKCkgeyBjb250cm9sbGVyLmVycm9yLmFwcGx5KHJzKTsgfSk7CiB9LCAiQ2Fs
bGluZyBlcnJvcigpIHdpdGggYSB0aGlzIG9iamVjdCBkaWZmZXJlbnQgZnJvbSBSZWFkYWJsZUJ5
dGVTdHJlYW1Db250cm9sbGVyIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvciIpOwogCkBAIC0zNCw3
ICszNCw3IEBAIHRlc3QoZnVuY3Rpb24oKSB7CiAgICAgICAgIHR5cGU6ICJieXRlcyIKICAgICB9
KTsKIAotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigiQ2FuIG9ubHkgY2FsbCBSZWFk
YWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyLmNsb3NlIG9uIGluc3RhbmNlcyBvZiBSZWFkYWJsZUJ5
dGVTdHJlYW1Db250cm9sbGVyIiksCisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsCiAg
ICAgICAgIGZ1bmN0aW9uKCkgeyBjb250cm9sbGVyLmNsb3NlLmFwcGx5KHJzKTsgfSk7CiB9LCAi
Q2FsbGluZyBjbG9zZSgpIHdpdGggYSB0aGlzIG9iamVjdCBkaWZmZXJlbnQgZnJvbSBSZWFkYWJs
ZUJ5dGVTdHJlYW1Db250cm9sbGVyIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvciIpOwogCkBAIC00
OCw3ICs0OCw3IEBAIHRlc3QoZnVuY3Rpb24oKSB7CiAgICAgICAgIHR5cGU6ICJieXRlcyIKICAg
ICB9KTsKIAotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigiQ2FuIG9ubHkgY2FsbCBS
ZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyLmVucXVldWUgb24gaW5zdGFuY2VzIG9mIFJlYWRh
YmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIiKSwKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJv
ciwKICAgICAgICAgZnVuY3Rpb24oKSB7IGNvbnRyb2xsZXIuZW5xdWV1ZS5hcHBseShycywgbmV3
IEludDhBcnJheSgxKSk7IH0pOwogfSwgIkNhbGxpbmcgZW5xdWV1ZSgpIHdpdGggYSB0aGlzIG9i
amVjdCBkaWZmZXJlbnQgZnJvbSBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyIHNob3VsZCB0
aHJvdyBhIFR5cGVFcnJvciIpOwogCkBAIC02NSw3ICs2NSw3IEBAIHRlc3QoZnVuY3Rpb24oKSB7
CiAgICAgY29udHJvbGxlci5lbnF1ZXVlKG5ldyBJbnQ4QXJyYXkoMikpOwogICAgIGNvbnRyb2xs
ZXIuY2xvc2UoKTsKIAotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigiUmVhZGFibGVC
eXRlU3RyZWFtQ29udHJvbGxlciBpcyByZXF1ZXN0ZWQgdG8gY2xvc2UiKSwKKyAgICBhc3NlcnRf
dGhyb3dzX2pzKFR5cGVFcnJvciwKICAgICAgICAgZnVuY3Rpb24oKSB7IGNvbnRyb2xsZXIuZW5x
dWV1ZShuZXcgSW50OEFycmF5KDEpKTsgfSk7CiB9LCAiQ2FsbGluZyBlbnF1ZXVlKCkgd2hlbiBj
bG9zZSBoYXMgYmVlbiByZXF1ZXN0ZWQgYnV0IG5vdCB5ZXQgcGVyZm9ybWVkIHNob3VsZCB0aHJv
dyBhIFR5cGVFcnJvciIpOwogCkBAIC04MCw3ICs4MCw3IEBAIHRlc3QoZnVuY3Rpb24oKSB7CiAg
ICAgfSk7CiAgICAgY29udHJvbGxlci5jbG9zZSgpOwogCi0gICAgYXNzZXJ0X3Rocm93cyhuZXcg
VHlwZUVycm9yKCJSZWFkYWJsZVN0cmVhbSBpcyBub3QgcmVhZGFibGUiKSwKKyAgICBhc3NlcnRf
dGhyb3dzX2pzKFR5cGVFcnJvciwKICAgICAgICAgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICBj
b250cm9sbGVyLmVucXVldWUobmV3IEludDhBcnJheSgxKSk7CiAgICAgICAgIH0pOwpAQCAtOTgs
NyArOTgsNyBAQCB0ZXN0KGZ1bmN0aW9uKCkgewogCiAgICAgY29uc3QgaW52YWxpZENodW5rID0g
ZnVuY3Rpb24oKSB7fTsKIAotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigiUHJvdmlk
ZWQgY2h1bmsgaXMgbm90IGFuIG9iamVjdCIpLAorICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVy
cm9yLAogICAgICAgICBmdW5jdGlvbigpIHsgY29udHJvbGxlci5lbnF1ZXVlKGludmFsaWRDaHVu
ayk7IH0pOwogfSwgIkNhbGxpbmcgZW5xdWV1ZSgpIHdpdGggYSBjaHVuayB0aGF0IGlzIG5vdCBh
biBvYmplY3Qgc2hvdWxkIHRyaG93IGEgVHlwZUVycm9yIik7CiAKQEAgLTExNCw3ICsxMTQsNyBA
QCB0ZXN0KGZ1bmN0aW9uKCkgewogCiAgICAgY29uc3QgaW52YWxpZENodW5rID0ge307CiAKLSAg
ICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoIlByb3ZpZGVkIGNodW5rIGlzIG5vdCBhbiBv
YmplY3QiKSwKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwKICAgICAgICAgZnVuY3Rp
b24oKSB7IGNvbnRyb2xsZXIuZW5xdWV1ZShpbnZhbGlkQ2h1bmspOyB9KTsKIH0sICJDYWxsaW5n
IGVucXVldWUoKSB3aXRoIGEgY2h1bmsgdGhhdCBpcyBub3QgYW4gQXJyYXlCdWZmZXJWaWV3IHNo
b3VsZCB0aHJvdyBhIFR5cGVFcnJvciIpOwogCkBAIC0xMjgsNyArMTI4LDcgQEAgdGVzdChmdW5j
dGlvbigpIHsKICAgICAgICAgdHlwZTogImJ5dGVzIgogICAgIH0pOwogCi0gICAgYXNzZXJ0X3Ro
cm93cyhuZXcgVHlwZUVycm9yKCJSZWFkYWJsZVN0cmVhbSBpcyBub3QgcmVhZGFibGUiKSwKKyAg
ICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwKICAgICAgICAgZnVuY3Rpb24oKSB7CiAgICAg
ICAgICAgICBjb250cm9sbGVyLmNsb3NlKCk7CiAgICAgICAgICAgICBjb250cm9sbGVyLmVycm9y
KCk7CkBAIC0xNDUsNyArMTQ1LDcgQEAgdGVzdChmdW5jdGlvbigpIHsKICAgICAgICAgdHlwZTog
ImJ5dGVzIgogICAgIH0pOwogCi0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCJSZWFk
YWJsZVN0cmVhbSBpcyBub3QgcmVhZGFibGUiKSwKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVF
cnJvciwKICAgICAgICAgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICBjb250cm9sbGVyLmVycm9y
KCk7CiAgICAgICAgICAgICBjb250cm9sbGVyLmVycm9yKCk7CkBAIC0xNjIsNyArMTYyLDcgQEAg
dGVzdChmdW5jdGlvbigpIHsKICAgICAgICAgdHlwZTogImJ5dGVzIgogICAgIH0pOwogCi0gICAg
YXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCJDbG9zZSBoYXMgYWxyZWFkeSBiZWVuIHJlcXVl
c3RlZCIpLAorICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLAogICAgICAgICBmdW5jdGlv
bigpIHsKICAgICAgICAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKTsKICAgICAgICAgICAgIGNvbnRy
b2xsZXIuY2xvc2UoKTsKQEAgLTE3OSw3ICsxNzksNyBAQCB0ZXN0KGZ1bmN0aW9uKCkgewogICAg
ICAgICB0eXBlOiAiYnl0ZXMiCiAgICAgfSk7CiAKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBl
RXJyb3IoIlJlYWRhYmxlU3RyZWFtIGlzIG5vdCByZWFkYWJsZSIpLAorICAgIGFzc2VydF90aHJv
d3NfanMoVHlwZUVycm9yLAogICAgICAgICBmdW5jdGlvbigpIHsKICAgICAgICAgICAgIGNvbnRy
b2xsZXIuZXJyb3IoKTsKICAgICAgICAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKTsKQEAgLTE5OCw3
ICsxOTgsNyBAQCBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odGVzdCkgewogICAgIGNvbnN0IG15RXJy
b3IgPSBuZXcgRXJyb3IoIm15IGVycm9yIik7CiAgICAgY29udHJvbGxlci5lcnJvcihteUVycm9y
KTsKIAotICAgIHJldHVybiBwcm9taXNlX3JlamVjdHModGVzdCwgbXlFcnJvciwgcnMuZ2V0UmVh
ZGVyKCkucmVhZCgpKTsKKyAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodGVzdCwg
bXlFcnJvciwgcnMuZ2V0UmVhZGVyKCkucmVhZCgpKTsKIH0sICJDYWxsaW5nIHJlYWQoKSBvbiBh
IHJlYWRlciBhc3NvY2lhdGVkIHRvIGEgY29udHJvbGxlciB0aGF0IGhhcyBiZWVuIGVycm9yZWQg
c2hvdWxkIGZhaWwgd2l0aCBwcm92aWRlZCBlcnJvciIpOwogCiBwcm9taXNlX3Rlc3QoZnVuY3Rp
b24oKSB7CkBAIC0yMzQsNyArMjM0LDcgQEAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHRlc3QpIHsK
ICAgICBsZXQgcmVhZGluZ1Byb21pc2UgPSBycy5nZXRSZWFkZXIoKS5yZWFkKCk7CiAgICAgY29u
dHJvbGxlci5lcnJvcihteUVycm9yKTsKIAotICAgIHJldHVybiBwcm9taXNlX3JlamVjdHModGVz
dCwgbXlFcnJvciwgcmVhZGluZ1Byb21pc2UpOworICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNf
ZXhhY3RseSh0ZXN0LCBteUVycm9yLCByZWFkaW5nUHJvbWlzZSk7CiB9LCAiUGVuZGluZyByZWFk
aW5nIHByb21pc2Ugc2hvdWxkIGJlIHJlamVjdGVkIGlmIGNvbnRyb2xsZXIgaXMgZXJyb3JlZCAo
Y2FzZSB3aGVyZSBhdXRvQWxsb2NhdGVDaHVua1NpemUgaXMgdW5kZWZpbmVkKSIpOwogCiBwcm9t
aXNlX3Rlc3QoZnVuY3Rpb24odGVzdCkgewpAQCAtMjUyLDcgKzI1Miw3IEBAIHByb21pc2VfdGVz
dChmdW5jdGlvbih0ZXN0KSB7CiAgICAgbGV0IHJlYWRpbmdQcm9taXNlID0gcnMuZ2V0UmVhZGVy
KCkucmVhZCgpOwogICAgIGNvbnRyb2xsZXIuZXJyb3IobXlFcnJvcik7CiAKLSAgICByZXR1cm4g
cHJvbWlzZV9yZWplY3RzKHRlc3QsIG15RXJyb3IsIHJlYWRpbmdQcm9taXNlKTsKKyAgICByZXR1
cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodGVzdCwgbXlFcnJvciwgcmVhZGluZ1Byb21pc2Up
OwogfSwgIlBlbmRpbmcgcmVhZGluZyBwcm9taXNlIHNob3VsZCBiZSByZWplY3RlZCBpZiBjb250
cm9sbGVyIGlzIGVycm9yZWQgKGNhc2Ugd2hlcmUgYXV0b0FsbG9jYXRlQ2h1bmtTaXplIGlzIHNw
ZWNpZmllZCkiKTsKIAogcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKCkgewpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tYnlvYi1yZWFkZXIuanMgYi9MYXlvdXRU
ZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1ieW9iLXJlYWRlci5qcwppbmRleCBhOTcxOWY3
ZTgxNGZlZDI2MDNiMGM3ODhlZjc1Nzg2OWM4MzBjMzNkLi5iMDgyMzVmZTVmYmQzZjcxODA4ZjNh
ZTY4NTZlYzA0ZjBhMzEwNWNjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRh
YmxlLXN0cmVhbS1ieW9iLXJlYWRlci5qcworKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRh
YmxlLXN0cmVhbS1ieW9iLXJlYWRlci5qcwpAQCAtMTQsMTQgKzE0LDE0IEBAIHRlc3QoZnVuY3Rp
b24oKSB7CiB0ZXN0KGZ1bmN0aW9uKCkgewogICAgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3Ry
ZWFtKCk7CiAgICAgY29uc3QgdG1wID0gMTI7Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVy
cm9yKCJDYW4gb25seSBjYWxsIFJlYWRhYmxlU3RyZWFtLmdldFJlYWRlciBvbiBpbnN0YW5jZXMg
b2YgUmVhZGFibGVTdHJlYW0iKSwKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwKICAg
ICAgICAgZnVuY3Rpb24oKSB7IHJzLmdldFJlYWRlci5hcHBseSh0bXApOyB9KTsKIH0sICJDYWxs
aW5nIGdldFJlYWRlcigpIHdpdGggYSB0aGlzIG9iamVjdCBkaWZmZXJlbnQgZnJvbSBSZWFkYWJs
ZVN0cmVhbSBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3IiKTsKIAogdGVzdChmdW5jdGlvbigpIHsK
ICAgICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgpOwogCi0gICAgYXNzZXJ0X3Rocm93
cyhuZXcgVHlwZUVycm9yKCJSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIgbmVlZHMgYSBSZWFkYWJs
ZUJ5dGVTdHJlYW1Db250cm9sbGVyIiksCisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3Is
CiAgICAgICAgIGZ1bmN0aW9uKCkgeyBycy5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicgfSk7IH0p
OwogfSwgIkNhbGxpbmcgZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pIHdpdGggYSBSZWFkYWJs
ZVN0cmVhbSB3aG9zZSBjb250cm9sbGVyIGlzIGEgUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJv
bGxlciBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3IiKTsKIApAQCAtMjksOSArMjksNyBAQCBwcm9t
aXNlX3Rlc3QoZnVuY3Rpb24odGVzdCkgewogICAgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3Ry
ZWFtKHsgdHlwZTogJ2J5dGVzJyB9KTsKICAgICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFkZXIo
eyBtb2RlOiAnYnlvYicgfSk7CiAgICAgbGV0IHJwID0gcmVhZGVyLmNhbmNlbC5hcHBseShycyk7
Ci0gICAgY29uc3QgbXlFcnJvcj0gbmV3IFR5cGVFcnJvcigiQ2FuIG9ubHkgY2FsbCBSZWFkYWJs
ZVN0cmVhbUJZT0JSZWFkZXIuY2FuY2VsKCkgb24gaW5zdGFuY2VzIG9mIFJlYWRhYmxlU3RyZWFt
QllPQlJlYWRlciIpOwotCi0gICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0ZXN0LCBteUVycm9y
LCBycCk7CisgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19qcyh0ZXN0LCBUeXBlRXJyb3IsIHJw
KTsKIH0sICJDYWxsaW5nIFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlci5jYW5jZWwoKSB3aXRoIGEg
dGhpcyBvYmplY3QgZGlmZmVyZW50IGZyb20gUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyIHNob3Vs
ZCBiZSByZWplY3RlZCIpOwogCiBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odGVzdCkgewpAQCAtNDks
NyArNDcsNyBAQCBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odGVzdCkgewogICAgIGNvbnRyb2xsZXIu
ZXJyb3IobXlFcnJvcik7CiAgICAgbGV0IHJwID0gcmVhZGVyLmNhbmNlbCgiU2FtcGxlIHJlYXNv
biIpOwogCi0gICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0ZXN0LCBteUVycm9yLCBycCk7Cisg
ICAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHRlc3QsIG15RXJyb3IsIHJwKTsKIH0s
ICJDYWxsaW5nIFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlci5jYW5jZWwoKSBvbiBhIFJlYWRhYmxl
U3RyZWFtIHRoYXQgaGFzIGJlZW4gZXJyb3JlZCBzaG91bGQgcmVzdWx0IGluIGEgcHJvbWlzZSBy
ZWplY3RlZCB3aXRoIHRoZSBzYW1lIGVycm9yIik7CiAKIHByb21pc2VfdGVzdChmdW5jdGlvbih0
ZXN0KSB7CkBAIC0xMjYsNyArMTI0LDcgQEAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHRlc3QpIHsK
ICAgICBjb25zdCBteUVycm9yID0gbmV3IFR5cGVFcnJvcigiU2FtcGxlIGVycm9yIik7CiAgICAg
Y29udHJvbGxlci5lcnJvcihteUVycm9yKTsKIAotICAgIHJldHVybiBwcm9taXNlX3JlamVjdHMo
dGVzdCwgbXlFcnJvciwgcmVhZGVyLmNsb3NlZCk7CisgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0
c19leGFjdGx5KHRlc3QsIG15RXJyb3IsIHJlYWRlci5jbG9zZWQpOwogfSwgIklmIGNvbnRyb2xs
ZXIgaXMgZXJyb3JlZCBhZnRlciBSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIgY3JlYXRpb24sIFJl
YWRhYmxlU3RyZWFtQllPQlJlYWRlci5jbG9zZWQgc2hvdWxkIGJlIGEgcHJvbWlzZSByZWplY3Rl
ZCB3aXRoIHRoZSBzYW1lIGVycm9yIik7CiAKIHByb21pc2VfdGVzdChmdW5jdGlvbih0ZXN0KSB7
CkBAIC0xNDMsMTMgKzE0MSwxMyBAQCBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odGVzdCkgewogICAg
IGNvbnRyb2xsZXIuZXJyb3IobXlFcnJvcik7CiAgICAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVh
ZGVyKHsgbW9kZTogJ2J5b2InIH0pOwogCi0gICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0ZXN0
LCBteUVycm9yLCByZWFkZXIuY2xvc2VkKTsKKyAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4
YWN0bHkodGVzdCwgbXlFcnJvciwgcmVhZGVyLmNsb3NlZCk7CiB9LCAiSWYgY29udHJvbGxlciBo
YXMgYWxyZWFkeSBiZWVuIGVycm9yZWQgd2hlbiBSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIgaXMg
Y3JlYXRlZCwgUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyLmNsb3NlZCBzaG91bGQgYmUgYSBwcm9t
aXNlIHJlamVjdGVkIHdpdGggdGhlIHNhbWUgZXJyb3IiKTsKIAogdGVzdChmdW5jdGlvbigpIHsK
ICAgICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7IHR5cGU6ICdieXRlcycgfSk7CiAg
ICAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOwotICAgIGFz
c2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigiQ2FuIG9ubHkgY2FsbCBSZWFkYWJsZVN0cmVhbUJZ
T0JSZWFkZXIucmVsZWFzZUxvY2soKSBvbiBpbnN0YW5jZXMgb2YgUmVhZGFibGVTdHJlYW1CWU9C
UmVhZGVyIiksCisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsCiAgICAgICAgIGZ1bmN0
aW9uKCkgeyByZWFkZXIucmVsZWFzZUxvY2suYXBwbHkocnMpOyB9KTsKIH0sICJDYWxsaW5nIFJl
YWRhYmxlU3RyZWFtQllPQlJlYWRlci5yZWxlYXNlTG9jaygpIHdpdGggYSB0aGlzIG9iamVjdCBk
aWZmZXJlbnQgZnJvbSBSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIgc2hvdWxkIGJlIHJlamVjdGVk
Iik7CiAKQEAgLTE2MCw5ICsxNTgsNyBAQCBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odGVzdCkgewog
CiAgICAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOwogICAg
IHJlYWRlci5yZWxlYXNlTG9jaygpOwotICAgIGNvbnN0IG15RXJyb3IgPSBuZXcgVHlwZUVycm9y
KCk7Ci0KLSAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHRlc3QsIG15RXJyb3IsIHJlYWRlci5j
bG9zZWQpOworICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNfanModGVzdCwgVHlwZUVycm9yLCBy
ZWFkZXIuY2xvc2VkKTsKIH0sICJDYWxsaW5nIFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlci5yZWxl
YXNlTG9jaygpIG9uIGEgc3RyZWFtIHRoYXQgaXMgcmVhZGFibGUgc2hvdWxkIHJlc3VsdCBpbiBS
ZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIuY2xvc2VkIHByb21pc2UgdG8gYmUgcmVqZWN0ZWQgd2l0
aCBhIFR5cGVFcnJvciIpOwogCiBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odGVzdCkgewpAQCAtMTc4
LDE4ICsxNzQsMTQgQEAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHRlc3QpIHsKICAgICBjb25zdCBy
ZWFkZXIgPSBycy5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicgfSk7CiAgICAgY29udHJvbGxlci5j
bG9zZSgpOwogICAgIHJlYWRlci5yZWxlYXNlTG9jaygpOwotICAgIGNvbnN0IG15RXJyb3IgPSBu
ZXcgVHlwZUVycm9yKCk7Ci0KLSAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHRlc3QsIG15RXJy
b3IsIHJlYWRlci5jbG9zZWQpOworICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNfanModGVzdCwg
VHlwZUVycm9yLCByZWFkZXIuY2xvc2VkKTsKIH0sICJDYWxsaW5nIFJlYWRhYmxlU3RyZWFtQllP
QlJlYWRlci5yZWxlYXNlTG9jaygpIG9uIGEgc3RyZWFtIHRoYXQgaXMgbm90IHJlYWRhYmxlIHNo
b3VsZCByZXN1bHQgaW4gUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyLmNsb3NlZCBwcm9taXNlIHRv
IGJlIHJlamVjdGVkIHdpdGggYSBUeXBlRXJyb3IiKTsKIAogcHJvbWlzZV90ZXN0KGZ1bmN0aW9u
KHRlc3QpIHsKICAgICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7IHR5cGU6ICdieXRl
cycgfSk7CiAgICAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0p
OwogICAgIGxldCBycCA9IHJlYWRlci5yZWFkLmFwcGx5KHJzKTsKLSAgICBjb25zdCBteUVycm9y
PSBuZXcgVHlwZUVycm9yKCJDYW4gb25seSBjYWxsIFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlci5y
ZWFkKCkgb24gaW5zdGFuY2VzIG9mIFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlciIpOwotCi0gICAg
cmV0dXJuIHByb21pc2VfcmVqZWN0cyh0ZXN0LCBteUVycm9yLCBycCk7CisgICAgcmV0dXJuIHBy
b21pc2VfcmVqZWN0c19qcyh0ZXN0LCBUeXBlRXJyb3IsIHJwKTsKIH0sICJDYWxsaW5nIFJlYWRh
YmxlU3RyZWFtQllPQlJlYWRlci5yZWFkKCkgd2l0aCBhIHRoaXMgb2JqZWN0IGRpZmZlcmVudCBm
cm9tIFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlciBzaG91bGQgYmUgcmVqZWN0ZWQiKTsKIAogZG9u
ZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tYnlv
Yi1yZXF1ZXN0LmpzIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tYnlvYi1y
ZXF1ZXN0LmpzCmluZGV4IGQ1YTZmOGU3NzhmN2MyZDQ5ZDMyYjFiNDQyYThmODhjNzkxOTNmYjMu
LjAxOWVmOTcwODJmYjQ5MjYwOTE3NTJhMDBmNzQxNDY0MTk3YTJmZDggMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtLWJ5b2ItcmVxdWVzdC5qcworKysgYi9M
YXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1ieW9iLXJlcXVlc3QuanMKQEAgLTU2
LDcgKzU2LDcgQEAgdGVzdChmdW5jdGlvbigpIHsKICAgICBycy5nZXRSZWFkZXIoKS5yZWFkKCk7
CiAgICAgY29uc3QgYnlvYlJlcSA9IGNvbnRyb2xsZXIuYnlvYlJlcXVlc3Q7CiAKLSAgICBhc3Nl
cnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoIkNhbiBvbmx5IGNhbGwgUmVhZGFibGVTdHJlYW1CWU9C
UmVxdWVzdC5yZXNwb25kIG9uIGluc3RhbmNlcyBvZiBSZWFkYWJsZVN0cmVhbUJZT0JSZXF1ZXN0
IiksCisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsCiAgICAgICAgIGZ1bmN0aW9uKCkg
eyBieW9iUmVxLnJlc3BvbmQuYXBwbHkocnMsIDEpOyB9KTsKIAogfSwgIkNhbGxpbmcgcmVzcG9u
ZCgpIHdpdGggYSB0aGlzIG9iamVjdCBkaWZmZXJlbnQgZnJvbSBSZWFkYWJsZVN0cmVhbUJZT0JS
ZXF1ZXN0IHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvciIpOwpAQCAtNzUsNyArNzUsNyBAQCB0ZXN0
KGZ1bmN0aW9uKCkgewogICAgIHJzLmdldFJlYWRlcigpLnJlYWQoKTsKICAgICBjb25zdCBieW9i
UmVxID0gY29udHJvbGxlci5ieW9iUmVxdWVzdDsKIAotICAgIGFzc2VydF90aHJvd3MobmV3IFJh
bmdlRXJyb3IoImJ5dGVzV3JpdHRlbiBoYXMgYW4gaW5jb3JyZWN0IHZhbHVlIiksCisgICAgYXNz
ZXJ0X3Rocm93c19qcyhSYW5nZUVycm9yLAogICAgICAgICBmdW5jdGlvbigpIHsgYnlvYlJlcS5y
ZXNwb25kKC0xKTsgfSk7CiB9LCAiQ2FsbGluZyByZXNwb25kKCkgd2l0aCBhIG5lZ2F0aXZlIGJ5
dGVzV3JpdHRlbiB2YWx1ZSBzaG91bGQgdGhyb3cgYSBSYW5nZUVycm9yIik7CiAKQEAgLTkzLDcg
KzkzLDcgQEAgdGVzdChmdW5jdGlvbigpIHsKICAgICBycy5nZXRSZWFkZXIoKS5yZWFkKCk7CiAg
ICAgY29uc3QgYnlvYlJlcSA9IGNvbnRyb2xsZXIuYnlvYlJlcXVlc3Q7CiAKLSAgICBhc3NlcnRf
dGhyb3dzKG5ldyBSYW5nZUVycm9yKCJieXRlc1dyaXR0ZW4gaGFzIGFuIGluY29ycmVjdCB2YWx1
ZSIpLAorICAgIGFzc2VydF90aHJvd3NfanMoUmFuZ2VFcnJvciwKICAgICAgICAgZnVuY3Rpb24o
KSB7IGJ5b2JSZXEucmVzcG9uZCgiYWJjIik7IH0pOwogfSwgIkNhbGxpbmcgcmVzcG9uZCgpIHdp
dGggYSBieXRlc1dyaXR0ZW4gdmFsdWUgd2hpY2ggaXMgbm90IGEgbnVtYmVyIHNob3VsZCB0aHJv
dyBhIFJhbmdlRXJyb3IiKTsKIApAQCAtMTExLDcgKzExMSw3IEBAIHRlc3QoZnVuY3Rpb24oKSB7
CiAgICAgcnMuZ2V0UmVhZGVyKCkucmVhZCgpOwogICAgIGNvbnN0IGJ5b2JSZXEgPSBjb250cm9s
bGVyLmJ5b2JSZXF1ZXN0OwogCi0gICAgYXNzZXJ0X3Rocm93cyhuZXcgUmFuZ2VFcnJvcigiYnl0
ZXNXcml0dGVuIGhhcyBhbiBpbmNvcnJlY3QgdmFsdWUiKSwKKyAgICBhc3NlcnRfdGhyb3dzX2pz
KFJhbmdlRXJyb3IsCiAgICAgICAgIGZ1bmN0aW9uKCkgeyBieW9iUmVxLnJlc3BvbmQoTnVtYmVy
LlBPU0lUSVZFX0lORklOSVRZKTsgfSk7CiB9LCAiQ2FsbGluZyByZXNwb25kKCkgd2l0aCBhIHBv
c2l0aXZlIGluZmluaXR5IGJ5dGVzV3JpdHRlbiB2YWx1ZSBzaG91bGQgdGhyb3cgYSBSYW5nZUVy
cm9yIik7CiAKQEAgLTEzMCw3ICsxMzAsNyBAQCB0ZXN0KGZ1bmN0aW9uKCkgewogICAgIGNvbnN0
IGJ5b2JSZXEgPSBjb250cm9sbGVyLmJ5b2JSZXF1ZXN0OwogICAgIGNvbnRyb2xsZXIuY2xvc2Uo
KTsKIAotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigiYnl0ZXNXcml0dGVuIGlzIGRp
ZmZlcmVudCBmcm9tIDAgZXZlbiB0aG91Z2ggc3RyZWFtIGlzIGNsb3NlZCIpLAorICAgIGFzc2Vy
dF90aHJvd3NfanMoVHlwZUVycm9yLAogICAgICAgICBmdW5jdGlvbigpIHsgYnlvYlJlcS5yZXNw
b25kKDEpOyB9KTsKIH0sICJDYWxsaW5nIHJlc3BvbmQoKSB3aXRoIGEgYnl0ZXNXcml0dGVuIHZh
bHVlIGRpZmZlcmVudCBmcm9tIDAgd2hlbiBzdHJlYW0gaXMgY2xvc2VkIHNob3VsZCB0aHJvdyBh
IFR5cGVFcnJvciIpOwogCkBAIC0xNjgsNyArMTY4LDcgQEAgdGVzdChmdW5jdGlvbigpIHsKIAog
ICAgIHJzLmdldFJlYWRlcigpLnJlYWQoKTsKICAgICBjb25zdCBieW9iUmVxID0gY29udHJvbGxl
ci5ieW9iUmVxdWVzdDsKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBSYW5nZUVycm9yKCJieXRlc1dy
aXR0ZW4gdmFsdWUgaXMgdG9vIGdyZWF0IiksCisgICAgYXNzZXJ0X3Rocm93c19qcyhSYW5nZUVy
cm9yLAogICAgICAgICBmdW5jdGlvbigpIHsgYnlvYlJlcS5yZXNwb25kKDE3KTsgfSk7CiAKIH0s
ICJDYWxsaW5nIHJlc3BvbmQoKSB3aXRoIGEgYnl0ZXNXcml0dGVuIHZhbHVlIGdyZWF0ZXIgdGhh
biBhdXRvQWxsb2NhdGVDaHVua1NpemUgc2hvdWxkIGZhaWwiKTsKQEAgLTIxMiw3ICsyMTIsNyBA
QCB0ZXN0KGZ1bmN0aW9uKCkgewogICAgIHJzLmdldFJlYWRlcigpLnJlYWQoKTsKICAgICBjb25z
dCBieW9iUmVxID0gY29udHJvbGxlci5ieW9iUmVxdWVzdDsKIAotICAgIGFzc2VydF90aHJvd3Mo
bmV3IFR5cGVFcnJvcigiQ2FuIG9ubHkgY2FsbCBSZWFkYWJsZVN0cmVhbUJZT0JSZXF1ZXN0LnJl
c3BvbmRXaXRoTmV3VmlldyBvbiBpbnN0YW5jZXMgb2YgUmVhZGFibGVTdHJlYW1CWU9CUmVxdWVz
dCIpLAorICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLAogICAgICAgICBmdW5jdGlvbigp
IHsgYnlvYlJlcS5yZXNwb25kV2l0aE5ld1ZpZXcuYXBwbHkocnMsIG5ldyBVaW50OEFycmF5KDEp
KTsgfSk7CiAKIH0sICJDYWxsaW5nIHJlc3BvbmRXaXRoTmV3VmlldygpIHdpdGggYSB0aGlzIG9i
amVjdCBkaWZmZXJlbnQgZnJvbSBSZWFkYWJsZVN0cmVhbUJZT0JSZXF1ZXN0IHNob3VsZCB0aHJv
dyBhIFR5cGVFcnJvciIpOwpAQCAtMjMxLDcgKzIzMSw3IEBAIHRlc3QoZnVuY3Rpb24oKSB7CiAg
ICAgcnMuZ2V0UmVhZGVyKCkucmVhZCgpOwogICAgIGNvbnN0IGJ5b2JSZXEgPSBjb250cm9sbGVy
LmJ5b2JSZXF1ZXN0OwogCi0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCJQcm92aWRl
ZCB2aWV3IGlzIG5vdCBhbiBvYmplY3QiKSwKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJv
ciwKICAgICAgICAgZnVuY3Rpb24oKSB7IGJ5b2JSZXEucmVzcG9uZFdpdGhOZXdWaWV3KGZ1bmN0
aW9uKCkge30pOyB9KTsKIAogfSwgIkNhbGxpbmcgcmVzcG9uZFdpdGhOZXdWaWV3KCkgd2l0aCBh
biBhcmd1bWVudCB0aGF0IGlzIG5vdCBhbiBvYmplY3Qgc2hvdWxkIHRocm93IGEgVHlwZUVycm9y
Iik7CkBAIC0yNTAsNyArMjUwLDcgQEAgdGVzdChmdW5jdGlvbigpIHsKICAgICBycy5nZXRSZWFk
ZXIoKS5yZWFkKCk7CiAgICAgY29uc3QgYnlvYlJlcSA9IGNvbnRyb2xsZXIuYnlvYlJlcXVlc3Q7
CiAKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoIlByb3ZpZGVkIHZpZXcgaXMgbm90
IGFuIEFycmF5QnVmZmVyVmlldyIpLAorICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLAog
ICAgICAgICBmdW5jdGlvbigpIHsgYnlvYlJlcS5yZXNwb25kV2l0aE5ld1ZpZXcoe30pOyB9KTsK
IAogfSwgIkNhbGxpbmcgcmVzcG9uZFdpdGhOZXdWaWV3KCkgd2l0aCBhbiBhcmd1bWVudCB0aGF0
IGlzIG5vdCBhbiBBcnJheUJ1ZmZlclZpZXcgc2hvdWxkIHRocm93IGEgVHlwZUVycm9yIik7CkBA
IC0yODcsMTAgKzI4Nyw3IEBAIHByb21pc2VfdGVzdChmdW5jdGlvbih0ZXN0KSB7CiAgICAgICAg
IH0sCiAgICAgICAgIHR5cGU6ICJieXRlcyIKICAgICB9KTsKLQotICAgIGNvbnN0IGVycm9yID0g
bmV3IFJhbmdlRXJyb3IoIkludmFsaWQgdmFsdWUgZm9yIHZpZXcuYnl0ZUxlbmd0aCIpOwotCi0g
ICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0ZXN0LCBlcnJvciwgcnMuZ2V0UmVhZGVyKCkucmVh
ZCgpKTsKKyAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2pzKHRlc3QsIFJhbmdlRXJyb3IsIHJz
LmdldFJlYWRlcigpLnJlYWQoKSk7CiB9LCAiV2hlbiB1c2luZyBhdXRvQWxsb2NhdGVDaHVua1Np
emUsIGNhbGxpbmcgcmVzcG9uZFdpdGhOZXdWaWV3KCkgc2hvdWxkIHRocm93IGEgUmFuZ2VFcnJv
ciBpZiB2aWV3LmJ5dGVPZmZzZXQgaXMgZGlmZmVyZW50IGZyb20gMCIpOwogCiBwcm9taXNlX3Rl
c3QoZnVuY3Rpb24odGVzdCkgewpAQCAtMzA1LDEwICszMDIsNyBAQCBwcm9taXNlX3Rlc3QoZnVu
Y3Rpb24odGVzdCkgewogICAgICAgICB9LAogICAgICAgICB0eXBlOiAiYnl0ZXMiCiAgICAgfSk7
Ci0KLSAgICBjb25zdCBlcnJvciA9IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIHZhbHVlIGZvciB2
aWV3LmJ5dGVPZmZzZXQiKTsKLQotICAgIHJldHVybiBwcm9taXNlX3JlamVjdHModGVzdCwgZXJy
b3IsIHJzLmdldFJlYWRlcigpLnJlYWQoKSk7CisgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19q
cyh0ZXN0LCBSYW5nZUVycm9yLCBycy5nZXRSZWFkZXIoKS5yZWFkKCkpOwogfSwgIldoZW4gdXNp
bmcgYXV0b0FsbG9jYXRlQ2h1bmtTaXplLCBjYWxsaW5nIHJlc3BvbmRXaXRoTmV3VmlldygpIHNo
b3VsZCB0aHJvdyBhIFJhbmdlRXJyb3IgaWYgdmlldy5ieXRlTGVuZ3RoIGlzIGRpZmZlcmVudCBm
cm9tIGF1dG9BbGxvY2F0ZUNodW5rU2l6ZSIpOwogCiBkb25lKCk7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1nZXRSZWFkZXIuaHRtbCBiL0xheW91dFRl
c3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtLWdldFJlYWRlci5odG1sCmluZGV4IDZmYzVlNGZi
OTIwOGEzOWFlZmJjOTQxNTgwY2UxODBlN2YwMzYxMjQuLjZjOTYyMmY3YTY5N2ZhODQ0YjUxNjk5
MzJhODZlMjVlNmM3OGVkN2EgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVhZGFi
bGUtc3RyZWFtLWdldFJlYWRlci5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVhZGFi
bGUtc3RyZWFtLWdldFJlYWRlci5odG1sCkBAIC0xMiwxMiArMTIsMTIgQEAgdGVzdChmdW5jdGlv
bigpIHsKIAogdGVzdChmdW5jdGlvbigpIHsKICAgICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0
cmVhbSgpOwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsg
cnMuZ2V0UmVhZGVyKHttb2RlOiAnYnlvYid9KSB9KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5
cGVFcnJvciwgZnVuY3Rpb24oKSB7IHJzLmdldFJlYWRlcih7bW9kZTogJ2J5b2InfSkgfSk7CiB9
LCAiZ2V0UmVhZGVyKHttb2RlOiAnYnlvYid9KSBzaG91bGQgcmV0dXJuIGEgVHlwZUVycm9yIGFz
IEJZT0IgcmVhZGVyIGlzIG5vdCB5ZXQgaW1wbGVtZW50ZWQiKTsKIAogdGVzdChmdW5jdGlvbigp
IHsKICAgICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgpOwogICAgIC8vIEFueSB2YWx1
ZSBkaWZmZXJlbnQgZnJvbSB1bmRlZmluZWQgYW5kICdieW9iJyBzaG91bGQgdGhyb3cgYSBUeXBl
RXJyb3IuCi0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgeyBy
cy5nZXRSZWFkZXIoe21vZGUgOiAnYU1vZGUnfSkgfSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhU
eXBlRXJyb3IsIGZ1bmN0aW9uKCkgeyBycy5nZXRSZWFkZXIoe21vZGUgOiAnYU1vZGUnfSkgfSk7
CiB9LCAiZ2V0UmVhZGVyKHttb2RlOiAnYU1vZGUnfSkgc2hvdWxkIHJldHVybiBhIFR5cGVFcnJv
ciBhcyAnYU1vZGUnIGlzIGRpZmZlcmVudCBmcm9tIHVuZGVmaW5lZCBhbmQgJ2J5b2InIik7CiA8
L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxl
bWVudGF0aW9uL2JhZC1zdHJhdGVnaWVzLmh0bWwgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVy
ZW5jZS1pbXBsZW1lbnRhdGlvbi9iYWQtc3RyYXRlZ2llcy5odG1sCmluZGV4IDkwOGI4YWNjZTM0
YzcxYzNjMGY5MzUyYWQyYmE4NjI5ZDI1Y2U5MzguLmUxZTk1M2UxNDFhZTllZjRjMzlmZTY2ZWI0
MDk4ZjM0ODlhMzlhZTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNl
LWltcGxlbWVudGF0aW9uL2JhZC1zdHJhdGVnaWVzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3Ry
ZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vYmFkLXN0cmF0ZWdpZXMuaHRtbApAQCAtNyw3
ICs3LDcgQEAKIHRlc3QoZnVuY3Rpb24oKSB7CiAgICAgdmFyIHRoZUVycm9yID0gbmV3IEVycm9y
KCdhIHVuaXF1ZSBzdHJpbmcnKTsKIAotICAgIGFzc2VydF90aHJvd3ModGhlRXJyb3IsIGZ1bmN0
aW9uKCkgeworICAgIGFzc2VydF90aHJvd3NfZXhhY3RseSh0aGVFcnJvciwgZnVuY3Rpb24oKSB7
CiAgICAgICAgIG5ldyBXcml0YWJsZVN0cmVhbSh7fSwgewogICAgICAgICAgICAgZ2V0IHNpemUo
KSB7CiAgICAgICAgICAgICAgICAgdGhyb3cgdGhlRXJyb3I7CkBAIC02NCw3ICs2NCw3IEBAIHRl
c3QyLnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgICAgIH0pOwogCiAgICAgICAgIHZhciB3cml0ZUZ1
bmN0aW9uID0gZnVuY3Rpb24oaSwgcikgewotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcg
UmFuZ2VFcnJvcigpLCBmdW5jdGlvbigpIHsgdGhyb3cgcjsgfSwgJ3dyaXRlIHNob3VsZCByZWpl
Y3Qgd2l0aCBhIFJhbmdlRXJyb3IgZm9yICcgKyBlbGVtZW50c1tpXSk7CisgICAgICAgICAgICBh
c3NlcnRfdGhyb3dzX2pzKFJhbmdlRXJyb3IsIGZ1bmN0aW9uKCkgeyB0aHJvdyByOyB9LCAnd3Jp
dGUgc2hvdWxkIHJlamVjdCB3aXRoIGEgUmFuZ2VFcnJvciBmb3IgJyArIGVsZW1lbnRzW2ldKTsK
ICAgICAgICAgICAgIHRoZUVycm9yW2ldID0gcjsKICAgICAgICAgfTsKICAgICAgICAgd3Mud3Jp
dGUoJ2EnKS50aGVuKApAQCAtODYsNyArODYsNyBAQCB0ZXN0Mi5zdGVwKGZ1bmN0aW9uKCkgewog
dGVzdChmdW5jdGlvbigpIHsKICAgICB2YXIgdGhlRXJyb3IgPSBuZXcgRXJyb3IoJ2EgdW5pcXVl
IHN0cmluZycpOwogCi0gICAgYXNzZXJ0X3Rocm93cyh0aGVFcnJvciwgZnVuY3Rpb24oKSB7Cisg
ICAgYXNzZXJ0X3Rocm93c19leGFjdGx5KHRoZUVycm9yLCBmdW5jdGlvbigpIHsKICAgICAgICAg
bmV3IFdyaXRhYmxlU3RyZWFtKHt9LCB7CiAgICAgICAgICAgICBzaXplOiBmdW5jdGlvbigpIHsK
ICAgICAgICAgICAgICAgICByZXR1cm4gMTsKQEAgLTEwMCw3ICsxMDAsNyBAQCB0ZXN0KGZ1bmN0
aW9uKCkgewogCiB0ZXN0KGZ1bmN0aW9uKCkgewogICAgIGZvciAodmFyIGhpZ2hXYXRlck1hcmsg
b2YgWy0xLCAtSW5maW5pdHldKSB7Ci0gICAgICAgIGFzc2VydF90aHJvd3MobmV3IFJhbmdlRXJy
b3IoKSwgZnVuY3Rpb24oKSB7CisgICAgICAgIGFzc2VydF90aHJvd3NfanMoUmFuZ2VFcnJvciwg
ZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICBuZXcgV3JpdGFibGVTdHJlYW0oe30sIHsKICAgICAg
ICAgICAgICAgICBzaXplOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IDE7CkBAIC0xMTEsNyArMTExLDcgQEAgdGVzdChmdW5jdGlvbigpIHsKICAgICB9CiAKICAgICBm
b3IgKHZhciBoaWdoV2F0ZXJNYXJrIG9mIFtOYU4sICdmb28nLCB7fV0pIHsKLSAgICAgICAgYXNz
ZXJ0X3Rocm93cyhuZXcgUmFuZ2VFcnJvcigpLCBmdW5jdGlvbigpIHsKKyAgICAgICAgYXNzZXJ0
X3Rocm93c19qcyhSYW5nZUVycm9yLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgIG5ldyBXcml0
YWJsZVN0cmVhbSh7fSwgewogICAgICAgICAgICAgICAgIHNpemU6IGZ1bmN0aW9uKCkgewogICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gMTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVh
bXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2JhZC11bmRlcmx5aW5nLXNpbmtzLmh0bWwgYi9M
YXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9iYWQtdW5kZXJseWlu
Zy1zaW5rcy5odG1sCmluZGV4IDliZTZmZmNkNTA4ZDNjZGVmMzZiN2NiMDE4MjY0NTk4OGZkNWYy
YWMuLjM1MjdhMzg2YzQ1ZDgxZDQ1MmIwMGMzOTVlZGU2OWIxYzM5NGYzYjkgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2JhZC11bmRlcmx5
aW5nLXNpbmtzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVt
ZW50YXRpb24vYmFkLXVuZGVybHlpbmctc2lua3MuaHRtbApAQCAtOCw3ICs4LDcgQEAKIHRlc3Qo
ZnVuY3Rpb24oKSB7CiAgICAgdmFyIHRoZUVycm9yID0gbmV3IEVycm9yKCdhIHVuaXF1ZSBzdHJp
bmcnKTsKIAotICAgIGFzc2VydF90aHJvd3ModGhlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgIGFz
c2VydF90aHJvd3NfZXhhY3RseSh0aGVFcnJvciwgZnVuY3Rpb24oKSB7CiAgICAgICAgIG5ldyBX
cml0YWJsZVN0cmVhbSh7CiAgICAgICAgICAgICBnZXQgc3RhcnQoKSB7CiAgICAgICAgICAgICAg
ICAgdGhyb3cgdGhlRXJyb3I7CkBAIC0yMCw3ICsyMCw3IEBAIHRlc3QoZnVuY3Rpb24oKSB7CiB0
ZXN0KGZ1bmN0aW9uKCkgewogICAgIHZhciB0aGVFcnJvciA9IG5ldyBFcnJvcignYSB1bmlxdWUg
c3RyaW5nJyk7CiAKLSAgICBhc3NlcnRfdGhyb3dzKHRoZUVycm9yLCBmdW5jdGlvbigpIHsKKyAg
ICBhc3NlcnRfdGhyb3dzX2V4YWN0bHkodGhlRXJyb3IsIGZ1bmN0aW9uKCkgewogICAgICAgICBu
ZXcgV3JpdGFibGVTdHJlYW0oewogICAgICAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKCkgewogICAg
ICAgICAgICAgICAgIHRocm93IHRoZUVycm9yOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Ry
ZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vdHJhbnNmb3JtLXN0cmVhbS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi90cmFuc2Zv
cm0tc3RyZWFtLWV4cGVjdGVkLnR4dAppbmRleCAxOGNhMGI1YzZmMTIwMmQ2ZjYzZDhmYWU5NzMx
MmY0MTQ1MGMwNjBlLi4xMjFjMjRmOGVkMWIwOWQzZmY3MzJhMGYzODllMjdjMThjYjllMGIxIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi90
cmFuc2Zvcm0tc3RyZWFtLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3Jl
ZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi90cmFuc2Zvcm0tc3RyZWFtLWV4cGVjdGVkLnR4dApAQCAt
MSw2ICsxLDYgQEAKIAogUEFTUyBUcmFuc2Zvcm1TdHJlYW0gY2FuIGJlIGNvbnN0cnVjdGVkIHdp
dGggYSB0cmFuc2Zvcm0gZnVuY3Rpb24KLUZBSUwgVHJhbnNmb3JtU3RyZWFtIGNhbm5vdCBiZSBj
b25zdHJ1Y3RlZCB3aXRoIG5vIHRyYW5zZm9ybSBmdW5jdGlvbiBhc3NlcnRfdGhyb3dzOiBUcmFu
c2Zvcm1TdHJlYW0gY2Fubm90IGJlIGNvbnN0cnVjdGVkIHdpdGggbm8gYXJndW1lbnRzIGZ1bmN0
aW9uICJmdW5jdGlvbiAoKSB7IG5ldyBUcmFuc2Zvcm1TdHJlYW0oKTsgfSIgZGlkIG5vdCB0aHJv
dworRkFJTCBUcmFuc2Zvcm1TdHJlYW0gY2Fubm90IGJlIGNvbnN0cnVjdGVkIHdpdGggbm8gdHJh
bnNmb3JtIGZ1bmN0aW9uIGFzc2VydF90aHJvd3NfanM6IFRyYW5zZm9ybVN0cmVhbSBjYW5ub3Qg
YmUgY29uc3RydWN0ZWQgd2l0aCBubyBhcmd1bWVudHMgZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsg
bmV3IFRyYW5zZm9ybVN0cmVhbSgpOyB9IiBkaWQgbm90IHRocm93CiBGQUlMIFRyYW5zZm9ybVN0
cmVhbSBpbnN0YW5jZXMgbXVzdCBoYXZlIHdyaXRhYmxlIGFuZCByZWFkYWJsZSBwcm9wZXJ0aWVz
IG9mIHRoZSBjb3JyZWN0IHR5cGVzIGFzc2VydF90cnVlOiBpdCBoYXMgYSB3cml0YWJsZSBwcm9w
ZXJ0eSBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQogRkFJTCBUcmFuc2Zvcm1TdHJlYW0gd3JpdGFi
bGUgc3RhcnRzIGluIHRoZSB3cml0YWJsZSBzdGF0ZSBhc3NlcnRfZXF1YWxzOiB3cml0YWJsZSBz
dGFydHMgd3JpdGFibGUgZXhwZWN0ZWQgKHN0cmluZykgIndyaXRhYmxlIiBidXQgZ290ICh1bmRl
ZmluZWQpIHVuZGVmaW5lZAogRkFJTCBQYXNzLXRocm91Z2ggc3luYyBUcmFuc2Zvcm1TdHJlYW06
IGNhbiByZWFkIGZyb20gcmVhZGFibGUgd2hhdCBpcyBwdXQgaW50byB3cml0YWJsZSB0cy53cml0
YWJsZS53cml0ZSBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd0cy53cml0YWJsZS53cml0ZSgnYScp
JywgJ3RzLndyaXRhYmxlLndyaXRlJyBpcyB1bmRlZmluZWQpCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi90cmFuc2Zvcm0tc3RyZWFtLmh0
bWwgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi90cmFuc2Zv
cm0tc3RyZWFtLmh0bWwKaW5kZXggM2Q5OTJkZGY4M2FmMTE1YjcyMmZkZDQ3YmQ5YjAxZTRlYzc4
ODA0Yi4uNjc5NTBhMjg1OTcyNWNmNzViMzQxZGQwZjJmODQ1MDgzMjFhOTIxMyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vdHJhbnNmb3Jt
LXN0cmVhbS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVu
dGF0aW9uL3RyYW5zZm9ybS1zdHJlYW0uaHRtbApAQCAtMTAsOCArMTAsOCBAQCB0ZXN0KGZ1bmN0
aW9uKCkgewogfSwgJ1RyYW5zZm9ybVN0cmVhbSBjYW4gYmUgY29uc3RydWN0ZWQgd2l0aCBhIHRy
YW5zZm9ybSBmdW5jdGlvbicpOwogCiB0ZXN0KGZ1bmN0aW9uKCkgewotICAgIGFzc2VydF90aHJv
d3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsgbmV3IFRyYW5zZm9ybVN0cmVhbSgpOyB9
LCAnVHJhbnNmb3JtU3RyZWFtIGNhbm5vdCBiZSBjb25zdHJ1Y3RlZCB3aXRoIG5vIGFyZ3VtZW50
cycpOwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsgbmV3
IFRyYW5zZm9ybVN0cmVhbSh7fSk7IH0sICdUcmFuc2Zvcm1TdHJlYW0gY2Fubm90IGJlIGNvbnN0
cnVjdGVkIHdpdGggYW4gZW1wdHkgb2JqZWN0Jyk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBl
RXJyb3IsIGZ1bmN0aW9uKCkgeyBuZXcgVHJhbnNmb3JtU3RyZWFtKCk7IH0sICdUcmFuc2Zvcm1T
dHJlYW0gY2Fubm90IGJlIGNvbnN0cnVjdGVkIHdpdGggbm8gYXJndW1lbnRzJyk7CisgICAgYXNz
ZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeyBuZXcgVHJhbnNmb3JtU3RyZWFt
KHt9KTsgfSwgJ1RyYW5zZm9ybVN0cmVhbSBjYW5ub3QgYmUgY29uc3RydWN0ZWQgd2l0aCBhbiBl
bXB0eSBvYmplY3QnKTsKIH0sICdUcmFuc2Zvcm1TdHJlYW0gY2Fubm90IGJlIGNvbnN0cnVjdGVk
IHdpdGggbm8gdHJhbnNmb3JtIGZ1bmN0aW9uJyk7CiAKIHRlc3QoZnVuY3Rpb24oKSB7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJhbmltYXRpb25zL2FjY2VsZXJhdGVkLWFuaW1hdGlvbi1z
aW5nbGUta2V5ZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmFuaW1hdGlvbnMvYWNjZWxlcmF0
ZWQtYW5pbWF0aW9uLXNpbmdsZS1rZXlmcmFtZS5odG1sCmluZGV4IGYzZjUzYTk5ZjBkNjMxZjYx
ZGRjNDMxZjdjMDQ1ZTNkYmQ5MzUxYTIuLjVhN2JlMDliODAxODg3NDQyMWE3Yjg2MTE1Y2U0YjQ5
YWVhOTlhZTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYmFuaW1hdGlvbnMvYWNjZWxlcmF0
ZWQtYW5pbWF0aW9uLXNpbmdsZS1rZXlmcmFtZS5odG1sCisrKyBiL0xheW91dFRlc3RzL3dlYmFu
aW1hdGlvbnMvYWNjZWxlcmF0ZWQtYW5pbWF0aW9uLXNpbmdsZS1rZXlmcmFtZS5odG1sCkBAIC0x
Nyw3ICsxNyw3IEBACiA8ZGl2IGlkPSJ0YXJnZXQiPjwvZGl2PgogPHNjcmlwdD4KIAotYXN5bmNf
dGVzdChhc3luYyB0ID0+IHsKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKICAgICAvLyBTdGFy
dCBhbiBhbmltYXRpb24gd2l0aCBhbiBpbXBsaWNpdCBmcm9tIGtleWZyYW1lLgogICAgIGNvbnN0
IGFuaW1hdGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKS5hbmltYXRlKHsg
dHJhbnNmb3JtOiAidHJhbnNsYXRlWCg2MDBweCkiIH0sIHsgZHVyYXRpb246IDEwMDAgKiAxMDAw
IH0pOwogCkBAIC0yNyw3ICsyNyw2IEBAIGFzeW5jX3Rlc3QoYXN5bmMgdCA9PiB7CiAgICAgYXdh
aXQgbmV3IFByb21pc2UocmVxdWVzdEFuaW1hdGlvbkZyYW1lKTsKIAogICAgIGFzc2VydF9lcXVh
bHMoaW50ZXJuYWxzLmFjY2VsZXJhdGVkQW5pbWF0aW9uc0ZvckVsZW1lbnQodGFyZ2V0KS5sZW5n
dGgsIDEsICJUaGVyZSBzaG91bGQgYmUgYW4gYWNjZWxlcmF0ZWQgYW5pbWF0aW9uLiIpOwotICAg
IHQuZG9uZSgpOwogfSwgIkEgdHJhbnNmb3JtIGFuaW1hdGlvbiB3aXRoIGEgc2luZ2xlIGtleWZy
YW1lIHNob3VsZCBiZSBhYmxlIHRvIHJ1biBhY2NlbGVyYXRlZC4iKTsKIAogPC9zY3JpcHQ+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJhbmltYXRpb25zL2ZyYW1lLXJhdGUvYW5pbWF0aW9u
LWZyYW1lLXJhdGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmFuaW1hdGlvbnMvZnJhbWUtcmF0ZS9h
bmltYXRpb24tZnJhbWUtcmF0ZS5odG1sCmluZGV4IGVmMzk2MmQ0YWRkNTdkODJjZTg2MjgwNjJi
MDNmMTc2YzUxYzczYTkuLmRiNWQ1YjIxMjdhZDZkOWM5NDZjZDNjMTUzNWYwZjg4MTIyNzg4ODkg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYmFuaW1hdGlvbnMvZnJhbWUtcmF0ZS9hbmltYXRp
b24tZnJhbWUtcmF0ZS5odG1sCisrKyBiL0xheW91dFRlc3RzL3dlYmFuaW1hdGlvbnMvZnJhbWUt
cmF0ZS9hbmltYXRpb24tZnJhbWUtcmF0ZS5odG1sCkBAIC0yNyw3ICsyNyw3IEBAIHRlc3QodCA9
PiB7CiB0ZXN0KHQgPT4gewogICAgIGNvbnN0IGFuaW1hdGlvbiA9IG5ldyBBbmltYXRpb247CiAg
ICAgZm9yIChsZXQgdmFsdWUgb2YgWyJkZWZhdWx0IiwgIjEyMCIsIG51bGwsIHVuZGVmaW5lZCwg
W10sIHt9XSkgewotICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IsICgpID0+IGFu
aW1hdGlvbi5mcmFtZVJhdGUgPSB2YWx1ZSwgYFNldHRpbmcgdGhlIHZhbHVlICR7dmFsdWV9IHRo
cm93c2ApOworICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gYW5pbWF0
aW9uLmZyYW1lUmF0ZSA9IHZhbHVlLCBgU2V0dGluZyB0aGUgdmFsdWUgJHt2YWx1ZX0gdGhyb3dz
YCk7CiAgICAgICAgIGFzc2VydF9lcXVhbHMoYW5pbWF0aW9uLmZyYW1lUmF0ZSwgImF1dG8iLCBg
U2V0dGluZyB0aGUgaW52YWxpZCB2YWx1ZSAiJHt2YWx1ZX0iIGRvZXMgbm90IGNoYW5nZSB0aGUg
dmFsdWVgKTsKICAgICB9CiB9LCAiSW52YWxpZCBhbmltYXRpb24uZnJhbWVSYXRlIHZhbHVlcyIp
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViYW5pbWF0aW9ucy9zY2hlZHVsaW5nLW9mLWFu
aW1hdGlvbi13aXRoLXN0ZXBzLXRpbWluZy1mdW5jdGlvbi1vbi1lZmZlY3QuaHRtbCBiL0xheW91
dFRlc3RzL3dlYmFuaW1hdGlvbnMvc2NoZWR1bGluZy1vZi1hbmltYXRpb24td2l0aC1zdGVwcy10
aW1pbmctZnVuY3Rpb24tb24tZWZmZWN0Lmh0bWwKaW5kZXggZjRiN2YwODU4NGIxZDg2N2EzOWNm
MTgxNzU5MTYyYjNmYWYwMjdjYy4uYzI2NzhmNTQwZDk0MjZhODViYTkyNTIxMzUzYWZlYjU1MDUw
NjA5YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2ViYW5pbWF0aW9ucy9zY2hlZHVsaW5nLW9m
LWFuaW1hdGlvbi13aXRoLXN0ZXBzLXRpbWluZy1mdW5jdGlvbi1vbi1lZmZlY3QuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJhbmltYXRpb25zL3NjaGVkdWxpbmctb2YtYW5pbWF0aW9uLXdpdGgt
c3RlcHMtdGltaW5nLWZ1bmN0aW9uLW9uLWVmZmVjdC5odG1sCkBAIC0zLDE1ICszLDEzIEBACiA8
ZGl2PjwvZGl2PgogPHNjcmlwdD4KIAotYXN5bmNfdGVzdChhc3luYyB0ID0+IHsKK3Byb21pc2Vf
dGVzdChhc3luYyB0ID0+IHsKICAgICBjb25zdCBhbmltYXRpb24gPSBkb2N1bWVudC5xdWVyeVNl
bGVjdG9yKCJkaXYiKS5hbmltYXRlKHsgbWFyZ2luTGVmdDogIjEwMHB4IiB9LCB7IGR1cmF0aW9u
OiAxMDAwLCBlYXNpbmc6ICJzdGVwcygxMCkiIH0pOwogCiAgICAgYXdhaXQgYW5pbWF0aW9uLnJl
YWR5OwotICAgIAorCiAgICAgYW5pbWF0aW9uLmN1cnJlbnRUaW1lID0gMjI1OwogICAgIGFzc2Vy
dF9lcXVhbHMoaW50ZXJuYWxzLnRpbWVUb05leHRBbmltYXRpb25UaWNrKGFuaW1hdGlvbiksIDc1
LCAiQ29tcHV0aW5nIHRoZSB0aW1lIHVudGlsIHRoZSBuZXh0IHRpY2sgd2hlbiBwYXJ0bHkgdGhy
b3VnaCBhIHN0ZXBzIGludGVydmFsLiIpOwotICAgIAotICAgIHQuZG9uZSgpOwogfSwgIkNvbXB1
dGluZyB0aGUgdGltZSB1bnRpbCB0aGUgbmV4dCB0aWNrIGZvciBhbiBlZmZlY3Qgd2l0aCBhIHN0
ZXBzKCkgZWFzaW5nLiIpOwogCiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmFuaW1hdGlvbnMvc2NoZWR1bGluZy1vZi1hbmltYXRpb24td2l0aC1zdGVwcy10aW1pbmctZnVu
Y3Rpb24tb24ta2V5ZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmFuaW1hdGlvbnMvc2NoZWR1
bGluZy1vZi1hbmltYXRpb24td2l0aC1zdGVwcy10aW1pbmctZnVuY3Rpb24tb24ta2V5ZnJhbWUu
aHRtbAppbmRleCAzOWZjYmRlMzBhMTYyZDhiYmM2OWVhMTg2NTU4NGU3MzE0ODg0ZTIxLi5jOTM4
ZTlhZTYwMmIzYTQ2NzkzM2UxNjdkYWNjYzRiMjNkYTIyY2QyIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy93ZWJhbmltYXRpb25zL3NjaGVkdWxpbmctb2YtYW5pbWF0aW9uLXdpdGgtc3RlcHMtdGlt
aW5nLWZ1bmN0aW9uLW9uLWtleWZyYW1lLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvd2ViYW5pbWF0
aW9ucy9zY2hlZHVsaW5nLW9mLWFuaW1hdGlvbi13aXRoLXN0ZXBzLXRpbWluZy1mdW5jdGlvbi1v
bi1rZXlmcmFtZS5odG1sCkBAIC0zLDE4ICszLDE2IEBACiA8ZGl2PjwvZGl2PgogPHNjcmlwdD4K
IAotYXN5bmNfdGVzdChhc3luYyB0ID0+IHsKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKICAg
ICBjb25zdCBhbmltYXRpb24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJkaXYiKS5hbmltYXRl
KHsKICAgICAgICAgbWFyZ2luTGVmdDogWyIwIiwgIjI1MHB4IiwgIjUwMHB4IiwgIjc1MHB4Iiwg
IjEwMDBweCJdLAogICAgICAgICBlYXNpbmc6IFsibGluZWFyIiwgImxpbmVhciIsICJzdGVwcygx
MCkiLCAibGluZWFyIl0KICAgICB9LCAxMDAwKTsKIAogICAgIGF3YWl0IGFuaW1hdGlvbi5yZWFk
eTsKLSAgICAKKwogICAgIGFuaW1hdGlvbi5jdXJyZW50VGltZSA9IDUzNTsKICAgICBhc3NlcnRf
ZXF1YWxzKGludGVybmFscy50aW1lVG9OZXh0QW5pbWF0aW9uVGljayhhbmltYXRpb24pLCAxNSk7
Ci0KLSAgICB0LmRvbmUoKTsKIH0sICJDb21wdXRpbmcgdGhlIHRpbWUgdW50aWwgdGhlIG5leHQg
dGljayBmb3IgYSBrZXlmcmFtZSB3aXRoIGEgc3RlcHMoKSB0aW1pbmcgZnVuY3Rpb24uIik7CiAK
IDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViYW5pbWF0aW9ucy9zY2hlZHVs
aW5nLW9mLWNzcy1hbmltYXRpb24td2l0aC1leHBsaWNpdC1zdGVwcy10aW1pbmctZnVuY3Rpb24t
b24tc29tZS1rZXlmcmFtZXMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmFuaW1hdGlvbnMvc2NoZWR1
bGluZy1vZi1jc3MtYW5pbWF0aW9uLXdpdGgtZXhwbGljaXQtc3RlcHMtdGltaW5nLWZ1bmN0aW9u
LW9uLXNvbWUta2V5ZnJhbWVzLmh0bWwKaW5kZXggOTFlMmZjZGFmMTc0YzNmODc4YjUwZmI0YTc0
MzZkNWNlMTE0MzVkMS4uNjQzNjM0YWIxMjE3NzliZGQwMTVhMTE0NzRhYTkyZTdkZTIxNWZiNyAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2ViYW5pbWF0aW9ucy9zY2hlZHVsaW5nLW9mLWNzcy1h
bmltYXRpb24td2l0aC1leHBsaWNpdC1zdGVwcy10aW1pbmctZnVuY3Rpb24tb24tc29tZS1rZXlm
cmFtZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy93ZWJhbmltYXRpb25zL3NjaGVkdWxpbmctb2Yt
Y3NzLWFuaW1hdGlvbi13aXRoLWV4cGxpY2l0LXN0ZXBzLXRpbWluZy1mdW5jdGlvbi1vbi1zb21l
LWtleWZyYW1lcy5odG1sCkBAIC0xNiw3ICsxNiw3IEBACiA8ZGl2PjwvZGl2PgogPHNjcmlwdD4K
IAotYXN5bmNfdGVzdChhc3luYyB0ID0+IHsKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKICAg
ICBjb25zdCBhbmltYXRpb24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJkaXYiKS5nZXRBbmlt
YXRpb25zKClbMF07CiAKICAgICBhd2FpdCBhbmltYXRpb24ucmVhZHk7CkBAIC0zMiw4ICszMiw2
IEBAIGFzeW5jX3Rlc3QoYXN5bmMgdCA9PiB7CiAKICAgICBhbmltYXRpb24uY3VycmVudFRpbWUg
PSA3ODA7CiAgICAgYXNzZXJ0X2VxdWFscyhpbnRlcm5hbHMudGltZVRvTmV4dEFuaW1hdGlvblRp
Y2soYW5pbWF0aW9uKSwgMjAsICJQcm9ncmVzcyBjb250YWluZWQgaW4gdGhlIGludGVydmFsIGZv
ciBhbiBpbXBsaWNpdCAxMDAlIGtleWZyYW1lLiIpOwotCi0gICAgdC5kb25lKCk7CiB9LCAiQ29t
cHV0aW5nIHRoZSB0aW1lIHVudGlsIHRoZSBuZXh0IHRpY2sgZm9yIGEgQ1NTIEFuaW1hdGlvbiB3
aXRoIGltcGxpY2l0IGFuZCBleHBsaWNpdCBzdGVwcygpIHRpbWluZyBmdW5jdGlvbnMuIik7CiAK
IDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViYW5pbWF0aW9ucy9zY2hlZHVs
aW5nLW9mLWNzcy1hbmltYXRpb24td2l0aC1pbXBsaWNpdC1zdGVwcy10aW1pbmctZnVuY3Rpb24u
aHRtbCBiL0xheW91dFRlc3RzL3dlYmFuaW1hdGlvbnMvc2NoZWR1bGluZy1vZi1jc3MtYW5pbWF0
aW9uLXdpdGgtaW1wbGljaXQtc3RlcHMtdGltaW5nLWZ1bmN0aW9uLmh0bWwKaW5kZXggYmM5MDQ3
MDdjNzBlMjZkZDAyOWI3OGUyZGZhZjU5Y2QyZmRhNzMwMy4uODEyYzY3NTdmMDhlNzdlN2JmMTMw
ZDM4YmQ4ODNjYWFhNWYzNTgzMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2ViYW5pbWF0aW9u
cy9zY2hlZHVsaW5nLW9mLWNzcy1hbmltYXRpb24td2l0aC1pbXBsaWNpdC1zdGVwcy10aW1pbmct
ZnVuY3Rpb24uaHRtbAorKysgYi9MYXlvdXRUZXN0cy93ZWJhbmltYXRpb25zL3NjaGVkdWxpbmct
b2YtY3NzLWFuaW1hdGlvbi13aXRoLWltcGxpY2l0LXN0ZXBzLXRpbWluZy1mdW5jdGlvbi5odG1s
CkBAIC0xNCwxOCArMTQsMTYgQEAKIDxkaXY+PC9kaXY+CiA8c2NyaXB0PgogCi1hc3luY190ZXN0
KGFzeW5jIHQgPT4geworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4gewogICAgIGNvbnN0IGFuaW1h
dGlvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImRpdiIpLmdldEFuaW1hdGlvbnMoKVswXTsK
IAogICAgIGF3YWl0IGFuaW1hdGlvbi5yZWFkeTsKLSAgICAKKwogICAgIGFuaW1hdGlvbi5jdXJy
ZW50VGltZSA9IDEwOwogICAgIGFzc2VydF9lcXVhbHMoaW50ZXJuYWxzLnRpbWVUb05leHRBbmlt
YXRpb25UaWNrKGFuaW1hdGlvbiksIDQwLCAiUHJvZ3Jlc3MgY29udGFpbmVkIGluIHRoZSBpbnRl
cnZhbCBmb3IgYW4gaW1wbGljaXQgMCUga2V5ZnJhbWUuIik7CiAKICAgICBhbmltYXRpb24uY3Vy
cmVudFRpbWUgPSA5MjA7CiAgICAgYXNzZXJ0X2VxdWFscyhpbnRlcm5hbHMudGltZVRvTmV4dEFu
aW1hdGlvblRpY2soYW5pbWF0aW9uKSwgMzAsICJQcm9ncmVzcyBjb250YWluZWQgaW4gdGhlIGlu
dGVydmFsIGZvciBhbiBpbXBsaWNpdCAxMDAlIGtleWZyYW1lLiIpOwotCi0gICAgdC5kb25lKCk7
CiB9LCAiQ29tcHV0aW5nIHRoZSB0aW1lIHVudGlsIHRoZSBuZXh0IHRpY2sgZm9yIGEgQ1NTIEFu
aW1hdGlvbiB3aXRoIGltcGxpY2l0IHN0ZXBzKCkgdGltaW5nIGZ1bmN0aW9ucy4iKTsKIAogPC9z
Y3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJhdWRpby93ZWJhdWRpby1nYy5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vd2ViYXVkaW8tZ2MuaHRtbAppbmRleCA3MTY3ZWNmNTEx
YzVhMDRiOTgwYjE4MTRiYTNkNjhhMWU2MGExODlhLi5mNWFkMjlmYWFmYmYxOTc3ZTUwODZhNThj
Njg1ZmVhMWViZDhiOTRmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJhdWRpby93ZWJhdWRp
by1nYy5odG1sCisrKyBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL3dlYmF1ZGlvLWdjLmh0bWwKQEAg
LTgsNiArOCw3IEBACiA8c2NyaXB0IHNyYz0uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQu
anM+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0uLi9yZXNvdXJjZXMvZ2MuanM+PC9zY3JpcHQ+CiA8
c2NyaXB0Pgorc2V0dXAoeyBzaW5nbGVfdGVzdDogdHJ1ZSB9KTsKIGxldCBjb3VudCA9IDEwMDsK
IAogZnVuY3Rpb24gY2hlY2tFdmVudCgpIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYnJ0
Yy9jYWxsaW5nLXBlZXJjb25uZWN0aW9uLW9uY2UtY2xvc2VkLmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJydGMvY2FsbGluZy1wZWVyY29ubmVjdGlvbi1vbmNlLWNsb3NlZC5odG1sCmluZGV4IGM2YTQx
YmQ1NWNiMjY5MDI5MGNhN2IzY2M2MWJkMDc1MzA4MjczNmIuLjQwYmEyOWZlMTkwNzVmNmZiY2Q2
MGUwYjAxODU4YTViZDA3OGYwMDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYnJ0Yy9jYWxs
aW5nLXBlZXJjb25uZWN0aW9uLW9uY2UtY2xvc2VkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
cnRjL2NhbGxpbmctcGVlcmNvbm5lY3Rpb24tb25jZS1jbG9zZWQuaHRtbApAQCAtMzAsMjYgKzMw
LDI2IEBAIHByb21pc2VfdGVzdCgoKSA9PiB7CiAKIHByb21pc2VfdGVzdCgodGVzdCkgPT4gewog
ICAgIHJldHVybiBjbG9zZWRDb25uZWN0aW9uKCkudGhlbigoY29ubmVjdGlvbikgPT4gewotICAg
ICAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHRlc3QsICdJbnZhbGlkU3RhdGVFcnJvcicsIGNv
bm5lY3Rpb24uY3JlYXRlT2ZmZXIoKSk7CisgICAgICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNf
ZG9tKHRlc3QsICdJbnZhbGlkU3RhdGVFcnJvcicsIGNvbm5lY3Rpb24uY3JlYXRlT2ZmZXIoKSk7
CiAgICAgfSk7CiB9LCAiRW5zdXJpbmcgY2xvc2VkIGNvbm5lY3Rpb24gY3JlYXRlT2ZmZXIgZG9l
cyBub3QgY3Jhc2giKTsKIAogcHJvbWlzZV90ZXN0KCgpID0+IHsKICAgICByZXR1cm4gY2xvc2Vk
Q29ubmVjdGlvbigpLnRoZW4oKGNvbm5lY3Rpb24pID0+IHsKLSAgICAgICAgYXNzZXJ0X3Rocm93
cygiSW52YWxpZFN0YXRlRXJyb3IiLCAoKSA9PiB7ICBjb25uZWN0aW9uLmNyZWF0ZURhdGFDaGFu
bmVsKCJ0ZXN0Iik7IH0pOworICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiSW52YWxpZFN0YXRl
RXJyb3IiLCAoKSA9PiB7ICBjb25uZWN0aW9uLmNyZWF0ZURhdGFDaGFubmVsKCJ0ZXN0Iik7IH0p
OwogICAgIH0pOwogfSwgIkVuc3VyaW5nIGNsb3NlZCBjb25uZWN0aW9uIGNyZWF0ZURhdGFDaGFu
bmVsIGRvZXMgbm90IGNyYXNoIik7CiAKIHByb21pc2VfdGVzdCgoKSA9PiB7CiAgICAgcmV0dXJu
IGNsb3NlZENvbm5lY3Rpb24oKS50aGVuKChjb25uZWN0aW9uKSA9PiB7Ci0gICAgICAgIGFzc2Vy
dF90aHJvd3MoIkludmFsaWRTdGF0ZUVycm9yIiwgKCkgPT4geyBjb25uZWN0aW9uLmFkZFRyYW5z
Y2VpdmVyKCJ2aWRlbyIpOyB9KTsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkludmFsaWRT
dGF0ZUVycm9yIiwgKCkgPT4geyBjb25uZWN0aW9uLmFkZFRyYW5zY2VpdmVyKCJ2aWRlbyIpOyB9
KTsKICAgICB9KTsKIH0sICJFbnN1cmluZyBjbG9zZWQgY29ubmVjdGlvbiBhZGRUcmFuc2NlaXZl
ciBkb2VzIG5vdCBjcmFzaCIpOwogCiBwcm9taXNlX3Rlc3QoKCkgPT4gewogICAgIHJldHVybiBj
bG9zZWRDb25uZWN0aW9uKCkudGhlbigoY29ubmVjdGlvbikgPT4gewogICAgICAgICByZXR1cm4g
bmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe3ZpZGVvOiB0cnVlfSkudGhlbigo
c3RyZWFtKSA9PiB7Ci0gICAgICAgICAgICBhc3NlcnRfdGhyb3dzKCJJbnZhbGlkU3RhdGVFcnJv
ciIsICgpID0+IHsgY29ubmVjdGlvbi5hZGRUcmFjayhzdHJlYW0uZ2V0VmlkZW9UcmFja3MoKVsw
XSwgc3RyZWFtKTsgfSk7CisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiSW52YWxpZFN0
YXRlRXJyb3IiLCAoKSA9PiB7IGNvbm5lY3Rpb24uYWRkVHJhY2soc3RyZWFtLmdldFZpZGVvVHJh
Y2tzKClbMF0sIHN0cmVhbSk7IH0pOwogICAgICAgICB9KTsKICAgICB9KTsKIH0sICJFbnN1cmlu
ZyBjbG9zZWQgY29ubmVjdGlvbiBhZGRUcmFjayBkb2VzIG5vdCBjcmFzaCIpOwpAQCAtNjIsNyAr
NjIsNyBAQCBwcm9taXNlX3Rlc3QoKHRlc3QpID0+IHsKICAgICAgICAgcGMyLmNyZWF0ZURhdGFD
aGFubmVsKCJ0ZXN0Iik7CiAgICAgICAgIHJldHVybiBwYzIuY3JlYXRlT2ZmZXIoKTsKICAgICB9
KS50aGVuKChzZHApID0+IHsKLSAgICAgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0ZXN0LCAn
SW52YWxpZFN0YXRlRXJyb3InLCBjb25uZWN0aW9uLnNldFJlbW90ZURlc2NyaXB0aW9uKHNkcCkp
OworICAgICAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2RvbSh0ZXN0LCAnSW52YWxpZFN0YXRl
RXJyb3InLCBjb25uZWN0aW9uLnNldFJlbW90ZURlc2NyaXB0aW9uKHNkcCkpOwogICAgIH0pOwog
fSwgIkVuc3VyaW5nIGNsb3NlZCBjb25uZWN0aW9uIHNldFJlbW90ZURlc2NyaXB0aW9uIGRvZXMg
bm90IGNyYXNoIik7CiAKQEAgLTc0LDcgKzc0LDcgQEAgcHJvbWlzZV90ZXN0KCh0ZXN0KSA9PiB7
CiAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHJlc29sdmUoc2RwKSwgMTAwKTsKICAgICAg
ICAgfSk7CiAgICAgfSkudGhlbigoc2RwKSA9PiB7Ci0gICAgICAgIHJldHVybiBwcm9taXNlX3Jl
amVjdHModGVzdCwgJ0ludmFsaWRTdGF0ZUVycm9yJywgbG9jYWxDb25uZWN0aW9uLnNldExvY2Fs
RGVzY3JpcHRpb24oc2RwKSk7CisgICAgICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZG9tKHRl
c3QsICdJbnZhbGlkU3RhdGVFcnJvcicsIGxvY2FsQ29ubmVjdGlvbi5zZXRMb2NhbERlc2NyaXB0
aW9uKHNkcCkpOwogICAgIH0pOwogfSwgIkVuc3VyaW5nIGNsb3NlZCBjb25uZWN0aW9uIHNldExv
Y2FsRGVzY3JpcHRpb24gZG9lcyBub3QgY3Jhc2giKTsKIApAQCAtODcsNyArODcsNyBAQCBwcm9t
aXNlX3Rlc3QoKHRlc3QpID0+IHsKICAgICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgbG9jYWxD
b25uZWN0aW9uLmNsb3NlKCk7CiAgICAgfSkudGhlbigoKSA9PiB7Ci0gICAgICAgIHJldHVybiBw
cm9taXNlX3JlamVjdHModGVzdCwgJ0ludmFsaWRTdGF0ZUVycm9yJywgbG9jYWxDb25uZWN0aW9u
LmNyZWF0ZUFuc3dlcigpKTsKKyAgICAgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19kb20odGVz
dCwgJ0ludmFsaWRTdGF0ZUVycm9yJywgbG9jYWxDb25uZWN0aW9uLmNyZWF0ZUFuc3dlcigpKTsK
ICAgICB9KTsKIH0sICJFbnN1cmluZyBjbG9zZWQgY29ubmVjdGlvbiBjcmVhdGVBbnN3ZXIgZG9l
cyBub3QgY3Jhc2giKTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2VicnRjL2NlcnRpZmlj
YXRlcy1pbmRleGVkZGIuaHRtbCBiL0xheW91dFRlc3RzL3dlYnJ0Yy9jZXJ0aWZpY2F0ZXMtaW5k
ZXhlZGRiLmh0bWwKaW5kZXggM2FhOGJhY2FjMTE2ZDFmNzczMjRkYmVkY2NhZDE1M2ZjZjJjZmQ0
Ny4uYzljMjEyMTIyZmQxZDE5ZWQyNzRjZDUzZWJjMDBhNmRkZmExMmIxZSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvd2VicnRjL2NlcnRpZmljYXRlcy1pbmRleGVkZGIuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJydGMvY2VydGlmaWNhdGVzLWluZGV4ZWRkYi5odG1sCkBAIC04LDYgKzgsNyBA
QAogICAgIDwvaGVhZD4KICAgICA8Ym9keT4KICAgICAgICAgPHNjcmlwdD4KK3NldHVwKHsgc2lu
Z2xlX3Rlc3Q6IHRydWUgfSk7CiBsZXQgY2VydGlmaWNhdGU7CiAKIGZ1bmN0aW9uIHN0b3JlS2V5
KCkgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2VicnRjL2RhdGFjaGFubmVsL2NyZWF0aW9u
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJydGMvZGF0YWNoYW5uZWwvY3JlYXRpb24uaHRtbAppbmRl
eCAwNjM1OGI2YTUxMmIxMTJmYjg0YTBhYmIwMDdmMTgyOWZlMGY1NDdkLi40NjdmNWQ3MmZlZTQ5
MTBkMzA2YTQ2Y2VjOTU5MjM2ZmUyNWI3MGMwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJy
dGMvZGF0YWNoYW5uZWwvY3JlYXRpb24uaHRtbAorKysgYi9MYXlvdXRUZXN0cy93ZWJydGMvZGF0
YWNoYW5uZWwvY3JlYXRpb24uaHRtbApAQCAtMTQsMjAgKzE0LDIwIEBAIGZvciAodmFyIGNwdHIg
PSAwOyBjcHRyIDwgMTY7ICsrY3B0cikKIAogdGVzdCgoKSA9PiB7CiAgICAgdmFyIHBjID0gbmV3
IFJUQ1BlZXJDb25uZWN0aW9uKCk7Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yLCAo
KSA9PiB7IHBjLmNyZWF0ZURhdGFDaGFubmVsKGxvbmdTdHJpbmcpOyB9KTsKKyAgICBhc3NlcnRf
dGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4geyBwYy5jcmVhdGVEYXRhQ2hhbm5lbChsb25nU3Ry
aW5nKTsgfSk7CiB9LCAiQ3JlYXRpbmcgZGF0YSBjaGFubmVsIHdpdGggdmVyeSBsb25nIGxhYmVs
Iik7CiAKIHRlc3QoKCkgPT4gewogICAgIHZhciBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigp
OwogICAgIHBjLmNsb3NlKCk7Ci0gICAgYXNzZXJ0X3Rocm93cygiSW52YWxpZFN0YXRlRXJyb3Ii
LCAoKSA9PiB7IHBjLmNyZWF0ZURhdGFDaGFubmVsKCdzZW5kRGF0YUNoYW5uZWwnKTsgfSk7Cisg
ICAgYXNzZXJ0X3Rocm93c19kb20oIkludmFsaWRTdGF0ZUVycm9yIiwgKCkgPT4geyBwYy5jcmVh
dGVEYXRhQ2hhbm5lbCgnc2VuZERhdGFDaGFubmVsJyk7IH0pOwogfSwgIkNyZWF0aW5nIGRhdGEg
Y2hhbm5lbCBhZnRlciBjbG9zaW5nIHRoZSBjb25uZWN0aW9uIik7CiAKIGZ1bmN0aW9uIHRlc3RX
cm9uZ0RhdGFDaGFubmVsSW5pdChpbml0LCB0aXRsZSkKIHsKICAgICByZXR1cm4gdGVzdCgoKSA9
PiB7CiAgICAgICAgIHZhciBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOwotICAgICAgICBh
c3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IsICgpID0+IHsgcGMuY3JlYXRlRGF0YUNoYW5uZWwo
J3NlbmREYXRhQ2hhbm5lbCcsIGluaXQpOyB9KTsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhU
eXBlRXJyb3IsICgpID0+IHsgcGMuY3JlYXRlRGF0YUNoYW5uZWwoJ3NlbmREYXRhQ2hhbm5lbCcs
IGluaXQpOyB9KTsKICAgICB9LCAiV3JvbmcgZGF0YSBjaGFubmVsIGluaXQ6ICIgKyB0aXRsZSk7
CiB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYnJ0Yy9kYXRhY2hhbm5lbC9kYXRhY2hh
bm5lbC1ldmVudC5odG1sIGIvTGF5b3V0VGVzdHMvd2VicnRjL2RhdGFjaGFubmVsL2RhdGFjaGFu
bmVsLWV2ZW50Lmh0bWwKaW5kZXggYTZjZGQ1YmZjM2FkYzZjNzAxMGRkYmRkYTg5MWM4ZjY1NDhk
YzJkMC4uZDgxYjAxMDJiYjk0MGI2NDg1ODg4NTdmYTgxYWRhODhkY2M5MTFlZiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvd2VicnRjL2RhdGFjaGFubmVsL2RhdGFjaGFubmVsLWV2ZW50Lmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvd2VicnRjL2RhdGFjaGFubmVsL2RhdGFjaGFubmVsLWV2ZW50Lmh0
bWwKQEAgLTEyLDExICsxMiwxMSBAQCB0ZXN0KCgpID0+IHsKICAgICB2YXIgcGMgPSBuZXcgUlRD
UGVlckNvbm5lY3Rpb24oKTsKICAgICB2YXIgY2hhbm5lbCA9IHBjLmNyZWF0ZURhdGFDaGFubmVs
KCJ0ZXN0Iik7CiAKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IsICgpID0+IG5ldyBS
VENEYXRhQ2hhbm5lbEV2ZW50KCkpOwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvciwg
KCkgPT4gbmV3IFJUQ0RhdGFDaGFubmVsRXZlbnQoInRlc3QiKSk7Ci0gICAgYXNzZXJ0X3Rocm93
cyhuZXcgVHlwZUVycm9yLCAoKSA9PiBuZXcgUlRDRGF0YUNoYW5uZWxFdmVudCgidGVzdCIsIHVu
ZGVmaW5lZCkpOwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvciwgKCkgPT4gbmV3IFJU
Q0RhdGFDaGFubmVsRXZlbnQoInRlc3QiLCB7IGNoYW5uZWw6IDEgfSkpOwotICAgIGFzc2VydF90
aHJvd3MobmV3IFR5cGVFcnJvciwgKCkgPT4gbmV3IFJUQ0RhdGFDaGFubmVsRXZlbnQodW5kZWZp
bmVkLCB7IGNoYW5uZWw6IDEgfSkpOworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAo
KSA9PiBuZXcgUlRDRGF0YUNoYW5uZWxFdmVudCgpKTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5
cGVFcnJvciwgKCkgPT4gbmV3IFJUQ0RhdGFDaGFubmVsRXZlbnQoInRlc3QiKSk7CisgICAgYXNz
ZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IG5ldyBSVENEYXRhQ2hhbm5lbEV2ZW50KCJ0
ZXN0IiwgdW5kZWZpbmVkKSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+
IG5ldyBSVENEYXRhQ2hhbm5lbEV2ZW50KCJ0ZXN0IiwgeyBjaGFubmVsOiAxIH0pKTsKKyAgICBh
c3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gbmV3IFJUQ0RhdGFDaGFubmVsRXZlbnQo
dW5kZWZpbmVkLCB7IGNoYW5uZWw6IDEgfSkpOwogCiAgICAgdmFyIGV2ZW50ID0gbmV3IFJUQ0Rh
dGFDaGFubmVsRXZlbnQoInRlc3QiLCB7IGNoYW5uZWw6IGNoYW5uZWwgfSk7CiAgICAgYXNzZXJ0
X2VxdWFscyhldmVudC5jaGFubmVsLCBjaGFubmVsLCAiY2hhbm5lbCBwYXNzZWQgaW4gY29uc3Ry
dWN0b3Igc2hvdWxkIGJlIHVzZWQiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYnJ0Yy9k
YXRhY2hhbm5lbC9nZXRTdGF0cy1uby1wcmZseC1yZW1vdGUtY2FuZGlkYXRlLmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJydGMvZGF0YWNoYW5uZWwvZ2V0U3RhdHMtbm8tcHJmbHgtcmVtb3RlLWNhbmRp
ZGF0ZS5odG1sCmluZGV4IDk3YjU5MWFmZTNhMTJiMWZhYmM0OWY3ZDM2ZjdiYjgzNDY3YWE0NTgu
LjQyN2M0OTFiODIxNTFiN2RiN2E4NDZmYTM2ZTQ4YmE5YzkzNzJhYmIgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3dlYnJ0Yy9kYXRhY2hhbm5lbC9nZXRTdGF0cy1uby1wcmZseC1yZW1vdGUtY2Fu
ZGlkYXRlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvd2VicnRjL2RhdGFjaGFubmVsL2dldFN0YXRz
LW5vLXByZmx4LXJlbW90ZS1jYW5kaWRhdGUuaHRtbApAQCAtNCw3ICs0LDggQEAKIDxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CiA8c2Ny
aXB0PgotICAndXNlIHN0cmljdCc7CisndXNlIHN0cmljdCc7CitzZXR1cCh7IHNpbmdsZV90ZXN0
OiB0cnVlIH0pOwogY29uc3QgbG9jYWxQYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOwogY29u
c3QgcmVtb3RlUGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2VicnRjL2Rpc2FibGUtZW5jcnlwdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
cnRjL2Rpc2FibGUtZW5jcnlwdGlvbi5odG1sCmluZGV4IDY3NDliZjlkOWM3MzFlOTJkYjY4ODcw
OTUxMGFmODcxYTViNzk0NGUuLjE1YmU3MzE5OWE1MThiYjQxMTJjMTJhYzkyMjVlMTIyOTk2ZGY0
Y2YgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYnJ0Yy9kaXNhYmxlLWVuY3J5cHRpb24uaHRt
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJydGMvZGlzYWJsZS1lbmNyeXB0aW9uLmh0bWwKQEAgLTQz
LDcgKzQzLDcgQEAgcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CiAgICAgY29uc3Qgb2Zm
ZXIgPSBhd2FpdCBwYzEuY3JlYXRlT2ZmZXIoKTsKICAgICBhd2FpdCBwYzEuc2V0TG9jYWxEZXNj
cmlwdGlvbihvZmZlcik7CiAKLSAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHRlc3QsICdJbnZh
bGlkQWNjZXNzRXJyb3InLCBwYzIuc2V0UmVtb3RlRGVzY3JpcHRpb24ob2ZmZXIpKTsKKyAgICBy
ZXR1cm4gcHJvbWlzZV9yZWplY3RzX2RvbSh0ZXN0LCAnSW52YWxpZEFjY2Vzc0Vycm9yJywgcGMy
LnNldFJlbW90ZURlc2NyaXB0aW9uKG9mZmVyKSk7CiB9LCAiTWFrZSBzdXJlIGEgcGMgd2l0aCBl
bmNyeXB0aW9uIGFuZCBhIHBjIHdpdGhvdXQgZW5jcnlwdGlvbiBjYW5ub3QgdGFsayIpOwogICAg
IDwvc2NyaXB0PgogICA8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJydGMvbGVn
YWN5LWFwaS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJydGMvbGVnYWN5LWFwaS1leHBl
Y3RlZC50eHQKaW5kZXggNjg2NTVlNGYwY2VkOTExODM0MjBmYWY1OGE0YmRhZmM3YmVjM2IxOC4u
ZmIyMjIyNWJlYzY0NjA2YTNmMjc5ZmJkNjFjMjJmYmUyZTYyMTM1YyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvd2VicnRjL2xlZ2FjeS1hcGktZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L3dlYnJ0Yy9sZWdhY3ktYXBpLWV4cGVjdGVkLnR4dApAQCAtOSw2ICs5LDcgQEAgRGV0YWlscwog
CiBSZXN1bHQJVGVzdCBOYW1lCU1lc3NhZ2UKIFBhc3MJVGVzdGluZyBsZWdhY3kgQVBJIGlzIG5v
dCBkZWZpbmVkCQorQXNzZXJ0cyBydW4KIAogUEFTUyBUZXN0aW5nIGxlZ2FjeSBBUEkgaXMgbm90
IGRlZmluZWQKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2VicnRjL3BjLWRldGFjaGVkLWRv
Y3VtZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJydGMvcGMtZGV0YWNoZWQtZG9jdW1lbnQuaHRt
bAppbmRleCA5ZmVjZjIyNTQ4MTE2YTRiOTI4MmRmNTU1MjQ3MmE4YjQ2MWVjOGRlLi4zZDNiNTM3
Y2Q2Njk0M2UyYTllNTA3ODE2OWRjOTUyODliY2IzNGY1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy93ZWJydGMvcGMtZGV0YWNoZWQtZG9jdW1lbnQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy93ZWJy
dGMvcGMtZGV0YWNoZWQtZG9jdW1lbnQuaHRtbApAQCAtOSwxNiArOSwxOCBAQCB0ZXN0KCgpID0+
IHsKICAgICBmcmFtZS5zZXRBdHRyaWJ1dGUoInNyYyIsICIvIik7CiAgICAgZG9jdW1lbnQuYm9k
eS5hcHBlbmRDaGlsZChmcmFtZSk7CiAgICAgdmFyIGNvbnN0cnVjdG9yID0gZnJhbWUuY29udGVu
dFdpbmRvdy5SVENQZWVyQ29ubmVjdGlvbjsKKyAgICBjb25zdCBmcmFtZURPTUV4Y2VwdGlvbiA9
IGZyYW1lLmNvbnRlbnRXaW5kb3cuRE9NRXhjZXB0aW9uCiAgICAgZG9jdW1lbnQuYm9keS5yZW1v
dmVDaGlsZChmcmFtZSk7Ci0gICAgYXNzZXJ0X3Rocm93cygnTm90U3VwcG9ydGVkRXJyb3InLCAo
KSA9PiB7IG5ldyBjb25zdHJ1Y3RvcigpIH0pOworICAgIGFzc2VydF90aHJvd3NfZG9tKCdOb3RT
dXBwb3J0ZWRFcnJvcicsIGZyYW1lRE9NRXhjZXB0aW9uLCAoKSA9PiB7IG5ldyBjb25zdHJ1Y3Rv
cigpIH0pOwogfSwgIlBlZXIgQ29ubmVjdGlvbiBvYmplY3RzIHNob3VsZCBub3QgYmUgY3JlYXRl
ZCBpbiBkZXRhY2hlZCBkb2N1bWVudHMiKTsKIHRlc3QoKCkgPT4gewogICAgIHZhciBmcmFtZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOwogICAgIGZyYW1lLnNldEF0dHJpYnV0
ZSgic3JjIiwgIi8iKTsKICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGZyYW1lKTsKICAg
ICB2YXIgcGMgPSBuZXcgZnJhbWUuY29udGVudFdpbmRvdy5SVENQZWVyQ29ubmVjdGlvbigpOwor
ICAgIGNvbnN0IGZyYW1lRE9NRXhjZXB0aW9uID0gZnJhbWUuY29udGVudFdpbmRvdy5ET01FeGNl
cHRpb24KICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGZyYW1lKTsKLSAgICBhc3NlcnRf
dGhyb3dzKCdJbnZhbGlkU3RhdGVFcnJvcicsICgpID0+IHsgcGMuc2V0Q29uZmlndXJhdGlvbih7
fSkgfSk7CisgICAgYXNzZXJ0X3Rocm93c19kb20oJ0ludmFsaWRTdGF0ZUVycm9yJywgZnJhbWVE
T01FeGNlcHRpb24sICgpID0+IHsgcGMuc2V0Q29uZmlndXJhdGlvbih7fSkgfSk7CiB9LCAiUGVl
ciBDb25uZWN0aW9uIG9iamVjdHMgc2hvdWxkIG5vdCBiZSBjcmVhdGVkIGluIGRldGFjaGVkIGRv
Y3VtZW50cyAyIik7CiA8L3NjcmlwdD4KIDwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYnJ0Yy9zdHVuLXNlcnZlci1maWx0ZXJpbmcuaHRtbCBiL0xheW91dFRlc3RzL3dlYnJ0Yy9z
dHVuLXNlcnZlci1maWx0ZXJpbmcuaHRtbAppbmRleCBkMGM5NGZlNjIxZWZiOTY4YzM0MGQ3YWY1
MjU2Yzk5YzU2MTgxOTI1Li4yNTAwZjJjNTE5YjQ4MjdjZmVjYzdmMTFhNTNjNjNmOGVhMjVkMTQ3
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJydGMvc3R1bi1zZXJ2ZXItZmlsdGVyaW5nLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvd2VicnRjL3N0dW4tc2VydmVyLWZpbHRlcmluZy5odG1sCkBA
IC0zOCw3ICszOCw3IEBAIHRlc3QoKCkgPT4gewogCiAgICAgbGV0IHN0cmluZzUxMCA9IHN0cmlu
ZzUwOSArICdhJzsKIAotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvciwgKCkgPT4gbmV3
IFJUQ1BlZXJDb25uZWN0aW9uKHtpY2VTZXJ2ZXJzOlt7dXNlcm5hbWU6ICd0ZXN0JywgY3JlZGVu
dGlhbDogc3RyaW5nNTEwLCB1cmxzOlsndHVybjpmb28uY29tJ119XX0pKTsKLSAgICBhc3NlcnRf
dGhyb3dzKG5ldyBUeXBlRXJyb3IsICgpID0+IG5ldyBSVENQZWVyQ29ubmVjdGlvbih7aWNlU2Vy
dmVyczpbe3VzZXJuYW1lOiBzdHJpbmc1MTAsIGNyZWRlbnRpYWw6ICd0ZXN0JywgdXJsczpbJ3R1
cm46Zm9vLmNvbSddfV19KSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+
IG5ldyBSVENQZWVyQ29ubmVjdGlvbih7aWNlU2VydmVyczpbe3VzZXJuYW1lOiAndGVzdCcsIGNy
ZWRlbnRpYWw6IHN0cmluZzUxMCwgdXJsczpbJ3R1cm46Zm9vLmNvbSddfV19KSk7CisgICAgYXNz
ZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IG5ldyBSVENQZWVyQ29ubmVjdGlvbih7aWNl
U2VydmVyczpbe3VzZXJuYW1lOiBzdHJpbmc1MTAsIGNyZWRlbnRpYWw6ICd0ZXN0JywgdXJsczpb
J3R1cm46Zm9vLmNvbSddfV19KSk7CiB9LCAiUlRDUGVlckNvbm5lY3Rpb24gYW5kIGJpZyBUVVJO
IHVzZXJuYW1lL2NyZWRlbnRpYWwiKTsKIDwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450219</attachid>
            <date>2022-01-28 03:21:35 -0800</date>
            <delta_ts>2022-01-30 21:48:46 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-235398-20220128132131.patch</filename>
            <type>text/plain</type>
            <size>656678</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NzM0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNjFkMWNhNzQyNGUyMGE2NjY4YjEy
ODk2ZmFmYWE5MjI2Nzc1MThlOS4uNWMxMjhkNGU4YTM0OTg2OWNkYWM4ZWI2NjVkMjJlY2ExM2I5
Mjc1YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MiBAQAorMjAyMi0wMS0yOCAgS2ltbW8gS2lubnVuZW4g
IDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0ZSBMYXlvdXRUZXN0cy9yZXNv
dXJjZXMvdGVzdGhhcm5lc3MuanMgdG8gMjAyMS02LTI0IHZlcnNpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTM5OAorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vODgxMjYyMjI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxldC4K
KworICAgICAgICBDb3B5IHRlc3RoYXJuZXNzLmpzIGZyb20gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cworCisgICAgICAgIENvcHkgaWRsaGFybmVzcy5qcyBmcm9tIGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMgYmVjYXVzZSBpdCB1c2VzCisgICAgICAgIHRoZSBuZXcgdGVz
dGhhcm5lc3MuanMgQVBJcy4KKworICAgICAgICBDb3B5IHdlYmlkbDIuanMgZnJvbSBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzIHRvIHJlc291cmNlcy9XZWJJRExQYXJzZXIuanMKKyAg
ICAgICAgYmVjYXVzZSBpZGxoYXJuZXNzIHVzZXMgbmV3IHdlYmlkbDIuanMgbG9naWMuCisKKyAg
ICAgICAgRGVsZXRlIHRlc3RoYXJuZXNzLmNzcywgaXQgaXMgbm93IGJ1bmRsZWQgaW4gdGVzdGhh
cm5lc3MuanMuCisKKyAgICAgICAgVXBkYXRlIHRlc3RzIHRvIGFjY29tbW9kYXRlIHRoZSBBUEkg
Y2hhbmdlOgorICAgICAgICAgLSBhc3NlcnRfdGhyb3dzX2pzIGNoZWNrIHRoYXQgdGhlIGV4Y2Vw
dGlvbiBpcyBvZiBhIHBhcnRpY3VsYXIgSlMKKyAgICAgICAgICAgZXhjZXB0aW9uIHR5cGUKKyAg
ICAgICAgIC0gYXNzZXJ0X3Rocm93c19kb20gY2hlY2sgdGhhdCB0aGUgZXhjZXB0aW9uIGlzIG9m
IGEgcGFydGljdWxhcgorICAgICAgICAgICBET01FeGNlcHRpb24gdHlwZSBmcm9tIGEgcGFydGlj
dWxhciBnbG9iYWwgb2JqZWN0LgorICAgICAgICAgLSBhc3NlcnRfdGhyb3dzX2V4YWN0bHkgY2hl
Y2sgdGhhdCB0aGUgZXhjZXB0aW9uIGlzIGEgc3BlY2lmaWMKKyAgICAgICAgICAgb2JqZWN0Lgor
CisgICAgICAgIFByZXZpb3VzbHkgYXNzZXJ0X3Rocm93cyB3YXMgdXNlZCBhbmQgaXQgaGlkIHVu
ZXhwZWN0ZWQgZXhjZXB0aW9uIGVycm9ycy4KKworICAgICAgICBTYW1lIGZvciBwcm9taXNlX3Jl
amVjdHNfKgorCisgICAgICAgIGFzeW5jX3Rlc3QoZikgbm93IHdhcm5zIGlmIGYgaXMgbm90IGEg
bm9ybWFsIGZ1bmN0aW9uLgorCisgICAgICAgIFNpbmdsIHBhZ2UgdGVzdHMgbmVlZCBhIHNldHVw
IGZ1bmN0aW9uLgorCisgICAgICAgICogYW5pbWF0aW9ucy9hbmltYXRpb24tZGlyZWN0aW9uLW5v
cm1hbC5odG1sOgorICAgICAgICAqIGFuaW1hdGlvbnMvYW5pbWF0aW9uLWRpcmVjdGlvbi1yZXZl
cnNlLmh0bWw6CisgICAgICAgICogYW5pbWF0aW9ucy9jaGFuZ2Uta2V5ZnJhbWVzLW5hbWUuaHRt
bDoKKyAgICAgICAgKiBhbmltYXRpb25zL3BsYXktc3RhdGUtcGF1c2VkLmh0bWw6CisgICAgICAg
IGFzeW5jX3Rlc3QoYXN5bmMgZnVuY3Rpb24gey4uLn0pIGlzIGluY29ycmVjdCAoYXN5bmMgdGVz
dCBleHBlY3RzIG5vcm1hbAorICAgICAgICBmdW5jdGlvbiB0aGF0IGhhcyBhc3luY2hyb25vdXMg
bG9naWMsIG5vdCBhIGZ1bmN0aW9uIHJldHVybmluZyBhIHByb21pc2UuCisgICAgICAgIFVzZSBj
b3JyZWN0IGZvcm06CisgICAgICAgIHByb21pc2VfdGVzdChhc3luYyBmdW5jdGlvbiB7IC4uLiB9
KTsKKworICAgICAgICAqIGNzcy1jdXN0b20tcHJvcGVydGllcy1hcGkvcmVnaXN0ZXJQcm9wZXJ0
eS5odG1sOgorICAgICAgICBVcGRhdGUgZXhjZXB0aW9uIGV4cGVjdGF0aW9uIGZ1bmN0aW9ucy4K
KworICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaWRsLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWlkbC5odG1s
OgorICAgICAgICBVcGRhdGUgdGhlIGRhdGF0cmFuc2ZlciByZWxhdGVkIGlkbHMgZnJvbSBzb3Vy
Y2UsIG90aGVyd2lzZQorICAgICAgICB0ZXN0cyBmYWlsIChoYXJuZXNzIG5vdyB0ZXN0cyBmb3Ig
Y29uc3RydWN0b3IpLgorICAgICAgICBVcGRhdGUgdGhlIHJlc3VsdHMuCisKKyAgICAgICAgKiBl
ZGl0aW5nL3RleHQtaXRlcmF0b3IvY291bnQtbWF0Y2hlcy1pbi1mcmFtZXMuaHRtbDoKKyAgICAg
ICAgKiBlZGl0aW5nL3RleHQtaXRlcmF0b3IvaGlkZGVuLXRleHRhcmVhLXNlbGVjdGlvbi1xdWly
ay5odG1sOgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL3dlYmdsMi9iaW5kaW5ncy5odG1s
OgorICAgICAgICAqIGZhc3QvY3VzdG9tLWVsZW1lbnRzL2RlZmluZWQtcHNldWRvLWNsYXNzLmh0
bWw6CisgICAgICAgICogZmFzdC9jdXN0b20tZWxlbWVudHMvdGhyb3ctb24tZHluYW1pYy1tYXJr
dXAtaW5zZXJ0aW9uLWNvdW50ZXItY29uc3RydWN0Lmh0bWw6CisgICAgICAgICogZmFzdC9jdXN0
b20tZWxlbWVudHMvdGhyb3ctb24tZHluYW1pYy1tYXJrdXAtaW5zZXJ0aW9uLWNvdW50ZXItcmVh
Y3Rpb25zLmh0bWw6CisgICAgICAgICogZmFzdC9kb20vZG9jdW1lbnQtYWxsLmh0bWw6CisgICAg
ICAgICogZmFzdC9kb20vZWxlbWVudEZyb21Qb2ludC1wYXJhbWV0ZXJzLmh0bWw6CisgICAgICAg
ICogZmFzdC9kb20vcmVwbGFjZWFibGUtc2V0dGVyLXRocm93cy1pZi1kZWZpbmVvd25wcm9wZXJ0
eS1mYWlscy5odG1sOgorICAgICAgICAqIGZhc3QvZG9tL3dpbmRvdy1vcGVuZXItc2V0dGVyLXRo
cm93cy1pZi1kZWZpbmVvd25wcm9wZXJ0eS1mYWlscy0xLmh0bWw6CisgICAgICAgICogZmFzdC9k
b20vd2luZG93LW9wZW5lci1zZXR0ZXItdGhyb3dzLWlmLWRlZmluZW93bnByb3BlcnR5LWZhaWxz
LTIuaHRtbDoKKyAgICAgICAgKiBmYXN0L2V2ZW50cy9jbGlwYm9hcmQtZXZlbnQtY29uc3RydWN0
b3IuaHRtbDoKKyAgICAgICAgKiBmYXN0L2ZpbGVzL3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1m
aWxlLXJlYWRlci1zeW5jLWJhZC1wYXJhbWV0ZXIuanM6CisgICAgICAgICogZmFzdC9maWxlcy94
aHItYmxvYi1yZXF1ZXN0Lmh0bWw6CisgICAgICAgICogZmFzdC9tZWRpYWNhcHR1cmVmcm9tZWxl
bWVudC9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW0tZXhjZXB0aW9ucy5odG1sOgorICAgICAgICAq
IGZhc3QvbWVkaWFzZXNzaW9uL21ldGFkYXRhL2FydHdvcmtkb3dubG9hZC5odG1sOgorICAgICAg
ICAqIGZhc3QvbWVkaWFzdHJlYW0vc2NyZWVuY2FwdHVyZS11c2VyLWdlc3R1cmUuaHRtbDoKKyAg
ICAgICAgKiBmZXRjaC9mZXRjaC11cmwtc2VyaWFsaXphdGlvbi5odG1sOgorICAgICAgICAqIGh0
dHAvdGVzdHMvZmV0Y2gvZmV0Y2hpbmctc2FtZS1yZXNvdXJjZS13aXRoLWRpZmZlcmVudC1vcHRp
b25zLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9mZXRjaC9yZWRpcmVjdG1vZGUtYW5kLXBy
ZWxvYWQuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL25hdmlnYXRpb24vcHVzaHN0YXRlLWF0
LXVuaXF1ZS1vcmlnaW4tZGVuaWVkLnB5OgorICAgICAgICAqIGh0dHAvdGVzdHMvbm90aWZpY2F0
aW9ucy9ub3RpZmljYXRpb24uaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3BheW1lbnRyZXF1
ZXN0L3BheW1lbnQtYWRkcmVzcy1hdHRyaWJ1dGVzLWFuZC10b0pTT04tbWV0aG9kLmh0dHBzLmh0
bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LWlzLXNob3dp
bmcuaHR0cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1l
bnQtcmVxdWVzdC1hYm9ydC1tZXRob2QuaHR0cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3Rz
L3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVxdWVzdC1jYW5tYWtlcGF5bWVudC1tZXRob2QuaHR0
cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVx
dWVzdC1tZXJjaGFudC12YWxpZGF0aW9uLmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0
cy9wYXltZW50cmVxdWVzdC9wYXltZW50LXJlcXVlc3Qtc2hvdy1tZXRob2QuaHR0cHMuaHRtbDoK
KyAgICAgICAgKiBodHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVzcG9uc2UtcmVq
ZWN0cy1pZi1ub3QtYWN0aXZlLmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9wYXlt
ZW50cmVxdWVzdC9wYXltZW50LXJlc3BvbnNlLXJldHJ5LW1ldGhvZC5odHRwcy5odG1sOgorICAg
ICAgICAqIGh0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcmVqZWN0c19pZl9ub3RfYWN0aXZlLmh0
dHBzLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC91cGRhdGVXaXRo
LW1ldGhvZC1wbWktaGFuZGxpbmcuaHR0cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3Nl
Y3VyaXR5L2J5cGFzc2luZy1jb3JzLWNoZWNrcy1mb3ItZXh0ZW5zaW9uLXVybHMuaHRtbDoKKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2NsZWFuLW9yaWdpbi1jc3MtZXhwb3NlZC1yZXNv
dXJjZS10aW1pbmcuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRT
ZWN1cml0eVBvbGljeS8xLjEvZnJhbWUtYW5jZXN0b3JzL2ZyYW1lLWFuY2VzdG9ycy1vdmVycmlk
ZXMteGZvLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJp
dHlQb2xpY3kvMS4xL3NjcmlwdGhhc2gtZGVmYXVsdC1zcmMuaHRtbDoKKyAgICAgICAgKiBodHRw
L3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS8xLjEvc3R5bGVoYXNoLWRlZmF1
bHQtc3JjLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJp
dHlQb2xpY3kvc2NyaXB0LXNyYy1ibG9ja2VkLWVycm9yLWV2ZW50Lmh0bWw6CisgICAgICAgICog
aHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4tY2xlYW4tY3NzLXJlc291cmNlLXRpbWlu
Zy5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLWNzcy1y
ZXNvdXJjZS10aW1pbmcuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3N1YnJlc291cmNlLWlu
dGVncml0eS9zcmktZmV0Y2guanM6CisgICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZp
Y2Uvc2VydmljZS13b3JrZXItY3Jvc3NvcmlnaW4tZmV0Y2guaHRtbDoKKyAgICAgICAgKiBodHRw
L3Rlc3RzL3htbGh0dHByZXF1ZXN0L3NldC1iYWQtaGVhZGVydmFsdWUuaHRtbDoKKyAgICAgICAg
KiBpbnRlcnNlY3Rpb24tb2JzZXJ2ZXIvaW50ZXJzZWN0aW9uLW9ic2VydmVyLWludGVyZmFjZS5o
dG1sOgorICAgICAgICAqIGpzL2RvbS9kb20tZ2V0dGVycy10eXBlLWNoZWNrLmh0bWw6CisgICAg
ICAgICoganMvZG9tL2xlZ2FjeS1wbGF0Zm9ybS1vYmplY3QtZGVmaW5lT3duUHJvcGVydHkuaHRt
bDoKKyAgICAgICAgKiBqcy9kb20vcG9zdC1tZXNzYWdlLXN5bWJvbC5odG1sOgorICAgICAgICAq
IGpzL2RvbS9xdWV1ZS1taWNyb3Rhc2std2luZG93Lmh0bWw6CisgICAgICAgICogbWVkaWEvdHJh
Y2svb3BlcmEvaW50ZXJmYWNlcy9UZXh0VHJhY2tDdWUvdmVydGljYWwuaHRtbDoKKyAgICAgICAg
KiBtZWRpYS90cmFjay9vcGVyYS9yZXNvdXJjZXMvaWRsaGFybmVzcy5qczoKKyAgICAgICAgKiBt
ZWRpYS90cmFjay90ZXh0dHJhY2tjdWUvdGV4dHRyYWNrY3VlLWNvbnN0cnVjdG9yLmh0bWw6Cisg
ICAgICAgICogbWVkaWEvdHJhY2svdzNjL2ludGVyZmFjZXMvVGV4dFRyYWNrQ3VlL2FsaWduLmh0
bWw6CisgICAgICAgICogcG9pbnRlcmV2ZW50cy9pb3MvcG9pbnRlci1ldmVudHMtaW1wbGljaXQt
Y2FwdHVyZS1yZWxlYXNlLWV4Y2VwdGlvbi5odG1sOgorICAgICAgICAqIHBvaW50ZXJldmVudHMv
aW9zL3BvaW50ZXItZXZlbnRzLXNldC1wb2ludGVyLWNhcHR1cmUtZXhjZXB0aW9ucy5odG1sOgor
ICAgICAgICAqIHBvaW50ZXJldmVudHMvcG9pbnRlci1pZC1jcmFzaC5odG1sOgorICAgICAgICAq
IHJlc291cmNlcy9XZWJJRExQYXJzZXIuanM6CisgICAgICAgICogcmVzb3VyY2VzL2lkbGhhcm5l
c3MuanM6CisgICAgICAgIFVwZGF0ZSBmcm9tIHdwdC4KKyAgICAgICAgKiByZXNvdXJjZXMvdGVz
dGhhcm5lc3MuY3NzOiBSZW1vdmVkLgorICAgICAgICAqIHJlc291cmNlcy90ZXN0aGFybmVzcy5q
czoKKyAgICAgICAgVXBkYXRlIGZyb20gd3B0LgorICAgICAgICAqIHN0b3JhZ2Uvd2Vic3FsL29w
ZW5EYXRhYmFzZS1kZXByZWNhdGlvbi5odG1sOgorICAgICAgICAqIHN0cmVhbXMvcmVhZGFibGUt
Ynl0ZS1zdHJlYW0tY29udHJvbGxlci5qczoKKyAgICAgICAgKiBzdHJlYW1zL3JlYWRhYmxlLXN0
cmVhbS1ieW9iLXJlYWRlci5qczoKKyAgICAgICAgKiBzdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1i
eW9iLXJlcXVlc3QuanM6CisgICAgICAgICogc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tZ2V0UmVh
ZGVyLmh0bWw6CisgICAgICAgICogc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vYmFk
LXN0cmF0ZWdpZXMuaHRtbDoKKyAgICAgICAgKiBzdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRh
dGlvbi9iYWQtdW5kZXJseWluZy1zaW5rcy5odG1sOgorICAgICAgICAqIHN0cmVhbXMvcmVmZXJl
bmNlLWltcGxlbWVudGF0aW9uL3RyYW5zZm9ybS1zdHJlYW0tZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIHN0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3RyYW5zZm9ybS1zdHJlYW0uaHRt
bDoKKyAgICAgICAgKiB3ZWJhbmltYXRpb25zL2FjY2VsZXJhdGVkLWFuaW1hdGlvbi1zaW5nbGUt
a2V5ZnJhbWUuaHRtbDoKKyAgICAgICAgKiB3ZWJhbmltYXRpb25zL2ZyYW1lLXJhdGUvYW5pbWF0
aW9uLWZyYW1lLXJhdGUuaHRtbDoKKyAgICAgICAgKiB3ZWJhbmltYXRpb25zL3NjaGVkdWxpbmct
b2YtYW5pbWF0aW9uLXdpdGgtc3RlcHMtdGltaW5nLWZ1bmN0aW9uLW9uLWVmZmVjdC5odG1sOgor
ICAgICAgICAqIHdlYmFuaW1hdGlvbnMvc2NoZWR1bGluZy1vZi1hbmltYXRpb24td2l0aC1zdGVw
cy10aW1pbmctZnVuY3Rpb24tb24ta2V5ZnJhbWUuaHRtbDoKKyAgICAgICAgKiB3ZWJhbmltYXRp
b25zL3NjaGVkdWxpbmctb2YtY3NzLWFuaW1hdGlvbi13aXRoLWV4cGxpY2l0LXN0ZXBzLXRpbWlu
Zy1mdW5jdGlvbi1vbi1zb21lLWtleWZyYW1lcy5odG1sOgorICAgICAgICAqIHdlYmFuaW1hdGlv
bnMvc2NoZWR1bGluZy1vZi1jc3MtYW5pbWF0aW9uLXdpdGgtaW1wbGljaXQtc3RlcHMtdGltaW5n
LWZ1bmN0aW9uLmh0bWw6CisgICAgICAgICogd2ViYXVkaW8vd2ViYXVkaW8tZ2MuaHRtbDoKKyAg
ICAgICAgKiB3ZWJydGMvY2FsbGluZy1wZWVyY29ubmVjdGlvbi1vbmNlLWNsb3NlZC5odG1sOgor
ICAgICAgICAqIHdlYnJ0Yy9jZXJ0aWZpY2F0ZXMtaW5kZXhlZGRiLmh0bWw6CisgICAgICAgICog
d2VicnRjL2RhdGFjaGFubmVsL2NyZWF0aW9uLmh0bWw6CisgICAgICAgICogd2VicnRjL2RhdGFj
aGFubmVsL2RhdGFjaGFubmVsLWV2ZW50Lmh0bWw6CisgICAgICAgICogd2VicnRjL2RhdGFjaGFu
bmVsL2dldFN0YXRzLW5vLXByZmx4LXJlbW90ZS1jYW5kaWRhdGUuaHRtbDoKKyAgICAgICAgKiB3
ZWJydGMvZGlzYWJsZS1lbmNyeXB0aW9uLmh0bWw6CisgICAgICAgICogd2VicnRjL2xlZ2FjeS1h
cGktZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYnJ0Yy9wYy1kZXRhY2hlZC1kb2N1bWVudC5o
dG1sOgorICAgICAgICAqIHdlYnJ0Yy9zdHVuLXNlcnZlci1maWx0ZXJpbmcuaHRtbDoKKwogMjAy
Mi0wMS0yNCAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFN0cmVhbXMgdGVzdHMgdHJ5IHRvIGNhbGwgUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLnBpcGVU
aHJvdWdoLmNhbGwgZ2VuZXJpY2FsbHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4
IGUzYjAyMDc2NGEyZTUxOWIyZjE3ZDc2MDdmMGVkZmUwODllOTlkYjYuLmU0ZDllOTk4N2UzYjAw
ODMwMGYzMGY2ZDcxNTcyNDU4NGYwZDk5MTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEyMiBAQAorMjAyMi0wMS0yOCAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVu
ZW5AYXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0ZSBMYXlvdXRUZXN0cy9yZXNvdXJjZXMvdGVz
dGhhcm5lc3MuanMgdG8gMjAyMS02LTI0IHZlcnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTM5OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
ODgxMjYyMjI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVXBkYXRlIHRlc3RzIHRvIGFjY29tbW9kYXRlIHRoZSBBUEkgY2hhbmdlOgorICAgICAgICAg
LSBhc3NlcnRfdGhyb3dzX2pzIGNoZWNrIHRoYXQgdGhlIGV4Y2VwdGlvbiBpcyBvZiBhIHBhcnRp
Y3VsYXIgSlMKKyAgICAgICAgICAgZXhjZXB0aW9uIHR5cGUKKyAgICAgICAgIC0gYXNzZXJ0X3Ro
cm93c19kb20gY2hlY2sgdGhhdCB0aGUgZXhjZXB0aW9uIGlzIG9mIGEgcGFydGljdWxhcgorICAg
ICAgICAgICBET01FeGNlcHRpb24gdHlwZSBmcm9tIGEgcGFydGljdWxhciBnbG9iYWwgb2JqZWN0
LgorICAgICAgICAgLSBhc3NlcnRfdGhyb3dzX2V4YWN0bHkgY2hlY2sgdGhhdCB0aGUgZXhjZXB0
aW9uIGlzIGEgc3BlY2lmaWMKKyAgICAgICAgICAgb2JqZWN0LgorCisgICAgICAgICogSW5kZXhl
ZERCLXByaXZhdGUtYnJvd3NpbmcvY2xvc2UtaW4tdXBncmFkZW5lZWRlZC5odG1sOgorICAgICAg
ICAqIEluZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvci1hZHZhbmNlLWludmFsaWQu
aHRtbDoKKyAgICAgICAgKiBJbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfYWR2
YW5jZV9pbmRleDIuaHRtbDoKKyAgICAgICAgKiBJbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9p
ZGJjdXJzb3JfYWR2YW5jZV9pbmRleDMuaHRtbDoKKyAgICAgICAgKiBJbmRleGVkREItcHJpdmF0
ZS1icm93c2luZy9pZGJjdXJzb3JfYWR2YW5jZV9pbmRleDYuaHRtbDoKKyAgICAgICAgKiBJbmRl
eGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfYWR2YW5jZV9pbmRleDcuaHRtbDoKKyAg
ICAgICAgKiBJbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfYWR2YW5jZV9pbmRl
eDguaHRtbDoKKyAgICAgICAgKiBJbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3Jf
YWR2YW5jZV9pbmRleDkuaHRtbDoKKyAgICAgICAgKiBJbmRleGVkREItcHJpdmF0ZS1icm93c2lu
Zy9pZGJjdXJzb3JfYWR2YW5jZV9vYmplY3RzdG9yZTIuaHRtbDoKKyAgICAgICAgKiBJbmRleGVk
REItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfYWR2YW5jZV9vYmplY3RzdG9yZTMuaHRtbDoK
KyAgICAgICAgKiBJbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfYWR2YW5jZV9v
YmplY3RzdG9yZTQuaHRtbDoKKyAgICAgICAgKiBJbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9p
ZGJjdXJzb3JfYWR2YW5jZV9vYmplY3RzdG9yZTUuaHRtbDoKKyAgICAgICAgKiBJbmRleGVkREIt
cHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfY29udGludWVfaW5kZXgyLmh0bWw6CisgICAgICAg
ICogSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2NvbnRpbnVlX2luZGV4My5o
dG1sOgorICAgICAgICAqIEluZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9jb250
aW51ZV9pbmRleDQuaHRtbDoKKyAgICAgICAgKiBJbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9p
ZGJjdXJzb3JfY29udGludWVfaW5kZXg3Lmh0bWw6CisgICAgICAgICogSW5kZXhlZERCLXByaXZh
dGUtYnJvd3NpbmcvaWRiY3Vyc29yX2NvbnRpbnVlX2luZGV4OC5odG1sOgorICAgICAgICAqIElu
ZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9jb250aW51ZV9pbnZhbGlkLmh0bWw6
CisgICAgICAgICogSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2NvbnRpbnVl
X29iamVjdHN0b3JlMi5odG1sOgorICAgICAgICAqIEluZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5n
L2lkYmN1cnNvcl9jb250aW51ZV9vYmplY3RzdG9yZTMuaHRtbDoKKyAgICAgICAgKiBJbmRleGVk
REItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfY29udGludWVfb2JqZWN0c3RvcmU0Lmh0bWw6
CisgICAgICAgICogSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2NvbnRpbnVl
X29iamVjdHN0b3JlNS5odG1sOgorICAgICAgICAqIEluZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5n
L2lkYmN1cnNvcl9jb250aW51ZV9vYmplY3RzdG9yZTYuaHRtbDoKKyAgICAgICAgKiBJbmRleGVk
REItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfZGVsZXRlX2luZGV4Mi5odG1sOgorICAgICAg
ICAqIEluZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9kZWxldGVfaW5kZXgzLmh0
bWw6CisgICAgICAgICogSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2RlbGV0
ZV9pbmRleDQuaHRtbDoKKyAgICAgICAgKiBJbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJj
dXJzb3JfZGVsZXRlX2luZGV4NS5odG1sOgorICAgICAgICAqIEluZGV4ZWREQi1wcml2YXRlLWJy
b3dzaW5nL2lkYmN1cnNvcl9kZWxldGVfb2JqZWN0c3RvcmUyLmh0bWw6CisgICAgICAgICogSW5k
ZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2RlbGV0ZV9vYmplY3RzdG9yZTMuaHRt
bDoKKyAgICAgICAgKiBJbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfZGVsZXRl
X29iamVjdHN0b3JlNC5odG1sOgorICAgICAgICAqIEluZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5n
L2lkYmN1cnNvcl9kZWxldGVfb2JqZWN0c3RvcmU1Lmh0bWw6CisgICAgICAgICogSW5kZXhlZERC
LXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX3VwZGF0ZV9pbmRleDIuaHRtbDoKKyAgICAgICAg
KiBJbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfdXBkYXRlX2luZGV4My5odG1s
OgorICAgICAgICAqIEluZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl91cGRhdGVf
aW5kZXg0Lmh0bWw6CisgICAgICAgICogSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vy
c29yX3VwZGF0ZV9pbmRleDUuaHRtbDoKKyAgICAgICAgKiBJbmRleGVkREItcHJpdmF0ZS1icm93
c2luZy9pZGJjdXJzb3JfdXBkYXRlX2luZGV4Ni5odG1sOgorICAgICAgICAqIEluZGV4ZWREQi1w
cml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl91cGRhdGVfaW5kZXg3Lmh0bWw6CisgICAgICAgICog
SW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX3VwZGF0ZV9vYmplY3RzdG9yZTIu
aHRtbDoKKyAgICAgICAgKiBJbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfdXBk
YXRlX29iamVjdHN0b3JlMy5odG1sOgorICAgICAgICAqIEluZGV4ZWREQi1wcml2YXRlLWJyb3dz
aW5nL2lkYmN1cnNvcl91cGRhdGVfb2JqZWN0c3RvcmU1Lmh0bWw6CisgICAgICAgICogSW5kZXhl
ZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX3VwZGF0ZV9vYmplY3RzdG9yZTYuaHRtbDoK
KyAgICAgICAgKiBJbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfdXBkYXRlX29i
amVjdHN0b3JlNy5odG1sOgorICAgICAgICAqIEluZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lk
YmN1cnNvcl91cGRhdGVfb2JqZWN0c3RvcmU4Lmh0bWw6CisgICAgICAgICogSW5kZXhlZERCLXBy
aXZhdGUtYnJvd3NpbmcvaWRiZGF0YWJhc2VfY3JlYXRlT2JqZWN0U3RvcmUxMS5odG1sOgorICAg
ICAgICAqIEluZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmRhdGFiYXNlX2NyZWF0ZU9iamVj
dFN0b3JlMy5odG1sOgorICAgICAgICAqIEluZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmRh
dGFiYXNlX2NyZWF0ZU9iamVjdFN0b3JlNC5odG1sOgorICAgICAgICAqIEluZGV4ZWREQi1wcml2
YXRlLWJyb3dzaW5nL2lkYmRhdGFiYXNlX2NyZWF0ZU9iamVjdFN0b3JlNi5odG1sOgorICAgICAg
ICAqIEluZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmRhdGFiYXNlX2NyZWF0ZU9iamVjdFN0
b3JlOS1pbnZhbGlkcGFyYW1ldGVycy5odG1sOgorICAgICAgICAqIEluZGV4ZWREQi1wcml2YXRl
LWJyb3dzaW5nL2lkYmRhdGFiYXNlX2RlbGV0ZU9iamVjdFN0b3JlMi5odG1sOgorICAgICAgICAq
IEluZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmRhdGFiYXNlX2RlbGV0ZU9iamVjdFN0b3Jl
My5odG1sOgorICAgICAgICAqIEluZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmRhdGFiYXNl
X2RlbGV0ZU9iamVjdFN0b3JlNC1ub3RfcmV1c2VkLmh0bWw6CisgICAgICAgICogSW5kZXhlZERC
LXByaXZhdGUtYnJvd3NpbmcvaWRiZGF0YWJhc2VfdHJhbnNhY3Rpb24uaHRtbDoKKyAgICAgICAg
KiBJbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJkYXRhYmFzZV90cmFuc2FjdGlvbjMuaHRt
bDoKKyAgICAgICAgKiBJbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJkYXRhYmFzZV90cmFu
c2FjdGlvbjQuaHRtbDoKKyAgICAgICAgKiBJbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJk
YXRhYmFzZV90cmFuc2FjdGlvbjUuaHRtbDoKKyAgICAgICAgKiBJbmRleGVkREItcHJpdmF0ZS1i
cm93c2luZy9pZGJmYWN0b3J5X2NtcDIuaHRtbDoKKyAgICAgICAgKiBJbmRleGVkREItcHJpdmF0
ZS1icm93c2luZy9pZGJmYWN0b3J5X29wZW45Lmh0bWw6CisgICAgICAgICogSW5kZXhlZERCLXBy
aXZhdGUtYnJvd3NpbmcvaWRiaW5kZXgtbXVsdGllbnRyeS1hcnJheWtleXBhdGguaHRtbDoKKyAg
ICAgICAgKiBJbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJpbmRleF9jb3VudDQuaHRtbDoK
KyAgICAgICAgKiBJbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJpbmRleF9nZXQ1Lmh0bWw6
CisgICAgICAgICogSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiaW5kZXhfZ2V0Ni5odG1s
OgorICAgICAgICAqIEluZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmluZGV4X2dldDcuaHRt
bDoKKyAgICAgICAgKiBJbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJpbmRleF9nZXRLZXk1
Lmh0bWw6CisgICAgICAgICogSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiaW5kZXhfZ2V0
S2V5Ni5odG1sOgorICAgICAgICAqIEluZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmluZGV4
X2dldEtleTcuaHRtbDoKKyAgICAgICAgKiBJbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJp
bmRleF9vcGVuQ3Vyc29yLmh0bWw6CisgICAgICAgICogSW5kZXhlZERCLXByaXZhdGUtYnJvd3Np
bmcvaWRiaW5kZXhfb3BlbkN1cnNvcjIuaHRtbDoKKyAgICAgICAgKiBJbmRleGVkREItcHJpdmF0
ZS1icm93c2luZy9pZGJpbmRleF9vcGVuS2V5Q3Vyc29yLmh0bWw6CisgICAgICAgICogSW5kZXhl
ZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiaW5kZXhfb3BlbktleUN1cnNvcjIuaHRtbDoKKyAgICAg
ICAgKiBJbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJpbmRleF9vcGVuS2V5Q3Vyc29yMy5o
dG1sOgorICAgICAgICAqIEluZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmtleXJhbmdlX2lu
Y29ycmVjdC5odG1sOgorICAgICAgICAqIEluZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9i
amVjdHN0b3JlX2FkZDEwLmh0bWw6CisgICAgICAgICogSW5kZXhlZERCLXByaXZhdGUtYnJvd3Np
bmcvaWRib2JqZWN0c3RvcmVfYWRkMTEuaHRtbDoKKyAgICAgICAgKiBJbmRleGVkREItcHJpdmF0
ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9hZGQxMi5odG1sOgorICAgICAgICAqIEluZGV4ZWRE
Qi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2FkZDEzLmh0bWw6CisgICAgICAgICog
SW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfYWRkMTUuaHRtbDoKKyAg
ICAgICAgKiBJbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9hZGQxNi5o
dG1sOgorICAgICAgICAqIEluZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3Jl
X2FkZDkuaHRtbDoKKyAgICAgICAgKiBJbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmpl
Y3RzdG9yZV9jbGVhcjMuaHRtbDoKKyAgICAgICAgKiBJbmRleGVkREItcHJpdmF0ZS1icm93c2lu
Zy9pZGJvYmplY3RzdG9yZV9jbGVhcjQuaHRtbDoKKyAgICAgICAgKiBJbmRleGVkREItcHJpdmF0
ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9jb3VudDQuaHRtbDoKKyAgICAgICAgKiBJbmRleGVk
REItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9jcmVhdGVJbmRleDEwLmh0bWw6Cisg
ICAgICAgICogSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfY3JlYXRl
SW5kZXgxMS5odG1sOgorICAgICAgICAqIEluZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9i
amVjdHN0b3JlX2NyZWF0ZUluZGV4MTIuaHRtbDoKKyAgICAgICAgKiBJbmRleGVkREItcHJpdmF0
ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9jcmVhdGVJbmRleDEzLmh0bWw6CisgICAgICAgICog
SW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfZGVsZXRlNi5odG1sOgor
ICAgICAgICAqIEluZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2RlbGV0
ZTcuaHRtbDoKKyAgICAgICAgKiBJbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3Rz
dG9yZV9kZWxldGVJbmRleC5odG1sOgorICAgICAgICAqIEluZGV4ZWREQi1wcml2YXRlLWJyb3dz
aW5nL2lkYm9iamVjdHN0b3JlX2RlbGV0ZWQuaHRtbDoKKyAgICAgICAgKiBJbmRleGVkREItcHJp
dmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9nZXQ2Lmh0bWw6CisgICAgICAgICogSW5kZXhl
ZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfZ2V0Ny5odG1sOgorICAgICAgICAq
IEluZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX29wZW5DdXJzb3JfaW52
YWxpZC5odG1sOgorICAgICAgICAqIEluZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVj
dHN0b3JlX3B1dDEwLmh0bWw6CisgICAgICAgICogSW5kZXhlZERCLXByaXZhdGUtYnJvd3Npbmcv
aWRib2JqZWN0c3RvcmVfcHV0MTEuaHRtbDoKKyAgICAgICAgKiBJbmRleGVkREItcHJpdmF0ZS1i
cm93c2luZy9pZGJvYmplY3RzdG9yZV9wdXQxMi5odG1sOgorICAgICAgICAqIEluZGV4ZWREQi1w
cml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX3B1dDEzLmh0bWw6CisgICAgICAgICogSW5k
ZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfcHV0MTUuaHRtbDoKKyAgICAg
ICAgKiBJbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9wdXQxNi5odG1s
OgorICAgICAgICAqIEluZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX3B1
dDkuaHRtbDoKKyAgICAgICAgKiBJbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9rZXlfaW52YWxp
ZC5odG1sOgorICAgICAgICAqIEluZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2tleXBhdGhfaW52
YWxpZC5odG1sOgorICAgICAgICAqIEluZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL3RyYW5zYWN0
aW9uLWNyZWF0ZV9pbl92ZXJzaW9uY2hhbmdlLmh0bWw6CisKIDIwMjItMDEtMjcgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSYWRpbyBidXR0b25zIHdpdGggbm8g
Zm9ybSBvd25lciBhcmUgbm90IGdyb3VwZWQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FuaW1h
dGlvbnMvYW5pbWF0aW9uLWRpcmVjdGlvbi1ub3JtYWwuaHRtbCBiL0xheW91dFRlc3RzL2FuaW1h
dGlvbnMvYW5pbWF0aW9uLWRpcmVjdGlvbi1ub3JtYWwuaHRtbAppbmRleCAzZjI3YzhiNTc3YjI0
YTQzOThkMzdhOWJkNzA0NWQwZGExZDZmM2Y2Li5mYWFlYjViMDIzNjAyMzNhN2ZkODUyMzRiMTBl
ZGMyNDJkM2YzYjc3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2FuaW1hdGlv
bi1kaXJlY3Rpb24tbm9ybWFsLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9hbmlt
YXRpb24tZGlyZWN0aW9uLW5vcm1hbC5odG1sCkBAIC0zNCw3ICszNCw3IEBACiA8Ym9keT4KIDxk
aXYgaWQ9ImJveCI+PC9kaXY+CiA8c2NyaXB0PgotICAgIGFzeW5jX3Rlc3QoYXN5bmMgdCA9PiB7
CisgICAgcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4gewogICAgICAgICBjb25zdCBkZWxheSA9IDEw
MDsKIAogICAgICAgICBjb25zdCB0ZXN0ID0gbmV3IEFuaW1hdGlvblRlc3QoewpAQCAtNTYsOCAr
NTYsNiBAQAogCiAgICAgICAgIC8vIEZpbmFsbHksIGNoZWNrIHRoZSB2YWx1ZXMgcmVjb3JkZWQg
ZWFybGllciBpbiB0aGUgdGVzdC4KICAgICAgICAgdGVzdC5jaGVja1JlY29yZGVkVmFsdWVzKCk7
Ci0KLSAgICAgICAgdC5kb25lKCk7CiAgICAgfSwgYFBhdXNpbmcgYW4gYW5pbWF0aW9uIHVzaW5n
IHRoZSBhbmltYXRpb24tcGxheS1zdGF0ZSBwcm9wZXJ0eSBzdG9wcyBhbmltYXRpbmcgc3R5bGVz
LmApOwogPC9zY3JpcHQ+CiA8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hbmltYXRp
b25zL2FuaW1hdGlvbi1kaXJlY3Rpb24tcmV2ZXJzZS5odG1sIGIvTGF5b3V0VGVzdHMvYW5pbWF0
aW9ucy9hbmltYXRpb24tZGlyZWN0aW9uLXJldmVyc2UuaHRtbAppbmRleCAzYTdhNGY5YzViZGFk
MWU5MzdjZGU5M2E0OTBlMTI1ZGM4MDEzMmJlLi5lZTg1ZjkyYmJjYzdlYWVhMDY2ODllYzllMDIx
MTI1MDZlYTA1NGJkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2FuaW1hdGlv
bi1kaXJlY3Rpb24tcmV2ZXJzZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvYW5p
bWF0aW9uLWRpcmVjdGlvbi1yZXZlcnNlLmh0bWwKQEAgLTM0LDcgKzM0LDcgQEAKIDxib2R5Pgog
PGRpdiBpZD0iYm94Ij48L2Rpdj4KIDxzY3JpcHQ+Ci0gICAgYXN5bmNfdGVzdChhc3luYyB0ID0+
IHsKKyAgICBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CiAgICAgICAgIGNvbnN0IGRlbGF5ID0g
MTAwOwogCiAgICAgICAgIGNvbnN0IHRlc3QgPSBuZXcgQW5pbWF0aW9uVGVzdCh7CkBAIC01Niw4
ICs1Niw2IEBACiAKICAgICAgICAgLy8gRmluYWxseSwgY2hlY2sgdGhlIHZhbHVlcyByZWNvcmRl
ZCBlYXJsaWVyIGluIHRoZSB0ZXN0LgogICAgICAgICB0ZXN0LmNoZWNrUmVjb3JkZWRWYWx1ZXMo
KTsKLQotICAgICAgICB0LmRvbmUoKTsKICAgICB9LCBgUGF1c2luZyBhbiBhbmltYXRpb24gdXNp
bmcgdGhlIGFuaW1hdGlvbi1wbGF5LXN0YXRlIHByb3BlcnR5IHN0b3BzIGFuaW1hdGluZyBzdHls
ZXMgd2l0aCBhbmltYXRpb24tZGlyZWN0aW9uOiByZXZlcnNlLmApOwogPC9zY3JpcHQ+CiA8L2Jv
ZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2NoYW5nZS1rZXlmcmFtZXMt
bmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9jaGFuZ2Uta2V5ZnJhbWVzLW5hbWUu
aHRtbAppbmRleCBiNzIwMmY1OTcyZWIwY2IxZDFlNDg4YjFiNTVjOTFiODllZWM5MzNiLi45NjJm
Y2JmYTQ1OTMzOGI3YzE3NTQwMDBhZDFkYmJjYTMzYzUyOTYwIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9hbmltYXRpb25zL2NoYW5nZS1rZXlmcmFtZXMtbmFtZS5odG1sCisrKyBiL0xheW91dFRl
c3RzL2FuaW1hdGlvbnMvY2hhbmdlLWtleWZyYW1lcy1uYW1lLmh0bWwKQEAgLTQ1LDcgKzQ1LDcg
QEAKICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgfQogCi0gICAgYXN5bmNfdGVzdChhc3luYyB0
ID0+IHsKKyAgICBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CiAgICAgICAgIGNvbnN0IGRlbGF5
ID0gMTAwOwogICAgICAgICBjb25zdCBib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYm94
Iik7CiAgICAgICAgIGNvbnN0IHByZXZpb3VzQW5pbWF0aW9uTmFtZSA9ICJmb28iOwpAQCAtNzQs
MTAgKzc0LDcgQEAKIAogICAgICAgICAvLyBOb3csIGNoZWNrIHRoZSByZWNvcmRlZCB2YWx1ZXMg
d2VyZSBjb3JyZWN0LgogICAgICAgICB0ZXN0LmNoZWNrUmVjb3JkZWRWYWx1ZXMoKTsKLQotICAg
ICAgICB0LmRvbmUoKTsKICAgICB9LCBgVGVzdCB0aGF0IGR5bmFtaWNhbGx5IGNoYW5naW5nIHRo
ZSBuYW1lIG9mIGEgQGtleWZyYW1lcyBydWxlIHN0YXJ0cyBhbmltYXRpb25zIHVzaW5nIHRoYXQg
bmFtZS5gKTsKLSAgICAKICAgPC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9hbmltYXRpb25zL3BsYXktc3RhdGUtcGF1c2VkLmh0bWwgYi9MYXlvdXRU
ZXN0cy9hbmltYXRpb25zL3BsYXktc3RhdGUtcGF1c2VkLmh0bWwKaW5kZXggMDk2MjEwYjZjZGJh
NTllYzY4MGNiZjM2YzEzMzk2NDY0ODJjZTBhMS4uODI2NWU5NWUzZTllYjY4NzI5MzRhYTZkZmEw
YTMyMWFmNTJjMDRiNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9wbGF5LXN0
YXRlLXBhdXNlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvcGxheS1zdGF0ZS1w
YXVzZWQuaHRtbApAQCAtMzUsNyArMzUsNyBAQAogPGRpdiBpZD0iYm94Ij48L2Rpdj4KIDxzY3Jp
cHQ+CiAKLWFzeW5jX3Rlc3QoYXN5bmMgdCA9PiB7Citwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7
CiAgICAgY29uc3QgZGVsYXkgPSAxMDA7CiAKICAgICBjb25zdCB0ZXN0ID0gbmV3IEFuaW1hdGlv
blRlc3QoewpAQCAtNTcsOCArNTcsNiBAQCBhc3luY190ZXN0KGFzeW5jIHQgPT4gewogCiAgICAg
Ly8gRmluYWxseSwgY2hlY2sgdGhlIHZhbHVlcyByZWNvcmRlZCBlYXJsaWVyIGluIHRoZSB0ZXN0
LgogICAgIHRlc3QuY2hlY2tSZWNvcmRlZFZhbHVlcygpOwotCi0gICAgdC5kb25lKCk7CiB9LCBg
UGF1c2luZyBhbiBhbmltYXRpb24gdXNpbmcgdGhlIGFuaW1hdGlvbi1wbGF5LXN0YXRlIHByb3Bl
cnR5IHN0b3BzIGFuaW1hdGluZyBzdHlsZXMuYCk7CiAKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvY3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9yZWdpc3RlclByb3BlcnR5Lmh0
bWwgYi9MYXlvdXRUZXN0cy9jc3MtY3VzdG9tLXByb3BlcnRpZXMtYXBpL3JlZ2lzdGVyUHJvcGVy
dHkuaHRtbAppbmRleCA5MTZkNGI0OTQwMzRmMmIxZGJmYzBhZjIzNWIxNDQyYzlhMTI0ODI1Li43
YjkyNDAzNTI1ZDMyMzIyYzBjNTU5MGFlYTg2N2E4NTI2MGNkNWRmIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9jc3MtY3VzdG9tLXByb3BlcnRpZXMtYXBpL3JlZ2lzdGVyUHJvcGVydHkuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9jc3MtY3VzdG9tLXByb3BlcnRpZXMtYXBpL3JlZ2lzdGVyUHJvcGVy
dHkuaHRtbApAQCAtNiwxMiArNiwxMiBAQAogPHNjcmlwdD4KIC8vIFRlc3RzIGZvciBlcnJvciBj
aGVja2luZyBkdXJpbmcgcHJvcGVydHkgcmVnaXN0cmF0aW9uCiB0ZXN0KGZ1bmN0aW9uKCkgewot
ICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBDU1MucmVnaXN0ZXJQcm9w
ZXJ0eSgpKTsKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gQ1NTLnJl
Z2lzdGVyUHJvcGVydHkodW5kZWZpbmVkKSk7Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVy
cm9yKCksICgpID0+IENTUy5yZWdpc3RlclByb3BlcnR5KHRydWUpKTsKLSAgICBhc3NlcnRfdGhy
b3dzKG5ldyBUeXBlRXJyb3IoKSwgKCkgPT4gQ1NTLnJlZ2lzdGVyUHJvcGVydHkoMikpOwotICAg
IGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0
eSgiY3NzIikpOwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBDU1Mu
cmVnaXN0ZXJQcm9wZXJ0eShudWxsKSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3Is
ICgpID0+IENTUy5yZWdpc3RlclByb3BlcnR5KCkpOworICAgIGFzc2VydF90aHJvd3NfanMoVHlw
ZUVycm9yLCAoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh1bmRlZmluZWQpKTsKKyAgICBhc3Nl
cnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gQ1NTLnJlZ2lzdGVyUHJvcGVydHkodHJ1ZSkp
OworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBDU1MucmVnaXN0ZXJQcm9w
ZXJ0eSgyKSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IENTUy5yZWdp
c3RlclByb3BlcnR5KCJjc3MiKSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgp
ID0+IENTUy5yZWdpc3RlclByb3BlcnR5KG51bGwpKTsKIH0sICJyZWdpc3RlclByb3BlcnR5IHJl
cXVpcmVzIGEgRGljdGlvbmFyeSB0eXBlIik7CiB0ZXN0KGZ1bmN0aW9uKCkgewogICAgIC8vIFZh
bGlkIHByb3BlcnR5IG5hbWVzLCBzaG91bGRuJ3QgdGhyb3cKQEAgLTE5LDE5ICsxOSwxOSBAQCB0
ZXN0KGZ1bmN0aW9uKCkgewogICAgIENTUy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiAnLS1uYW1l
Miwgbm8gbmVlZCBmb3IgZXNjYXBlcycsIGluaGVyaXRzOiBmYWxzZX0pOwogICAgIENTUy5yZWdp
c3RlclByb3BlcnR5KHtuYW1lOiBbJy0tbmFtZScsIDNdLCBpbmhlcml0czogZmFsc2V9KTsKICAg
ICAvLyBJbnZhbGlkIHByb3BlcnR5IG5hbWVzCi0gICAgYXNzZXJ0X3Rocm93cyhuZXcgU3ludGF4
RXJyb3IoKSwgKCkgPT4gQ1NTLnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6ICduby1sZWFkaW5nLWRh
c2gnLCBpbmhlcml0czogZmFsc2V9KSk7Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgU3ludGF4RXJy
b3IoKSwgKCkgPT4gQ1NTLnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6ICcnLCBpbmhlcml0czogZmFs
c2V9KSk7Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgU3ludGF4RXJyb3IoKSwgKCkgPT4gQ1NTLnJl
Z2lzdGVyUHJvcGVydHkoe25hbWU6ICdcXC0tbmFtZScsIGluaGVyaXRzOiBmYWxzZX0pKTsKKyAg
ICBhc3NlcnRfdGhyb3dzX2RvbSgnU3ludGF4RXJyb3InLCAoKSA9PiBDU1MucmVnaXN0ZXJQcm9w
ZXJ0eSh7bmFtZTogJ25vLWxlYWRpbmctZGFzaCcsIGluaGVyaXRzOiBmYWxzZX0pKTsKKyAgICBh
c3NlcnRfdGhyb3dzX2RvbSgnU3ludGF4RXJyb3InLCAoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0
eSh7bmFtZTogJycsIGluaGVyaXRzOiBmYWxzZX0pKTsKKyAgICBhc3NlcnRfdGhyb3dzX2RvbSgn
U3ludGF4RXJyb3InLCAoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTogJ1xcLS1uYW1l
JywgaW5oZXJpdHM6IGZhbHNlfSkpOwogfSwgInJlZ2lzdGVyUHJvcGVydHkgcmVxdWlyZXMgYSBu
YW1lIG1hdGNoaW5nIDxjdXN0b20tcHJvcGVydHktbmFtZT4iKTsKIHRlc3QoZnVuY3Rpb24oKSB7
CiAgICAgQ1NTLnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6ICctLXN5bnRheC10ZXN0LTEnLCBpbmhl
cml0czogZmFsc2UsIHN5bnRheDogJyonfSk7CiAgICAgQ1NTLnJlZ2lzdGVyUHJvcGVydHkoe25h
bWU6ICctLXN5bnRheC10ZXN0LTInLCBpbmhlcml0czogZmFsc2UsIHN5bnRheDogJyAqICd9KTsK
ICAgICBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTogJy0tc3ludGF4LXRlc3QtMycsIGluaGVy
aXRzOiBmYWxzZSwgaW5pdGlhbFZhbHVlOiAnNTAwcHgnfSk7Ci0gICAgYXNzZXJ0X3Rocm93cyhu
ZXcgVHlwZUVycm9yKCksICgpID0+IENTUy5yZWdpc3RlclByb3BlcnR5KHt9KSk7Ci0gICAgYXNz
ZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksICgpID0+IENTUy5yZWdpc3RlclByb3BlcnR5KHtu
YW1lOiAnLS1uby1pbmhlcml0cyd9KSk7Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9y
KCksICgpID0+IENTUy5yZWdpc3RlclByb3BlcnR5KHtpbmhlcml0czogZmFsc2V9KSk7CisgICAg
YXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IENTUy5yZWdpc3RlclByb3BlcnR5KHt9
KSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IENTUy5yZWdpc3RlclBy
b3BlcnR5KHtuYW1lOiAnLS1uby1pbmhlcml0cyd9KSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhU
eXBlRXJyb3IsICgpID0+IENTUy5yZWdpc3RlclByb3BlcnR5KHtpbmhlcml0czogZmFsc2V9KSk7
CiAgICAgLy8gUmVwZWF0ZWQgbmFtZQotICAgIGFzc2VydF90aHJvd3MoRE9NRXhjZXB0aW9uLklO
VkFMSURfTU9ESUZJQ0FUSU9OX0VSUiwKKyAgICBhc3NlcnRfdGhyb3dzX2RvbShET01FeGNlcHRp
b24uSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSLAogICAgICAgICAoKSA9PiBDU1MucmVnaXN0ZXJQ
cm9wZXJ0eSh7bmFtZTogJy0tc3ludGF4LXRlc3QtMycsIGluaGVyaXRzOiBmYWxzZSwgaW5pdGlh
bFZhbHVlOiAnNTAwcHgnfSkpOwogfSwgInJlZ2lzdGVyUHJvcGVydHkgYWx3YXlzIGFsbG93cyBv
bWl0dGluZyBpbml0aWFsVmFsdWUgYW5kIHN5bnRheCwgcmVxdWlyZXMgbmFtZSBhbmQgaW5oZXJp
dHMiKTsKIHRlc3QoZnVuY3Rpb24oKSB7CkBAIC00MiwxMSArNDIsMTEgQEAgdGVzdChmdW5jdGlv
bigpIHsKICAgQ1NTLnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6ICctLWluaXRpYWx2YWx1ZS10ZXN0
LTAnLCBpbmhlcml0czogZmFsc2UsIHN5bnRheDogJzxsZW5ndGg+JywgaW5pdGlhbFZhbHVlOiAn
Y2FsYygxMHB4ICsgMTBpbiknfSk7CiAgIGFzc2VydF9lcXVhbHMod2luZG93LmdldENvbXB1dGVk
U3R5bGUoZWwpLmdldFByb3BlcnR5VmFsdWUoJy0taW5pdGlhbHZhbHVlLXRlc3QtMCcpLnRvU3Ry
aW5nKCksICc5NzBweCcpOwogCi0gIGFzc2VydF90aHJvd3MobmV3IFN5bnRheEVycm9yKCksCisg
IGFzc2VydF90aHJvd3NfZG9tKCdTeW50YXhFcnJvcicsCiAgICAgKCkgPT4gQ1NTLnJlZ2lzdGVy
UHJvcGVydHkoe25hbWU6ICctLWluaXRpYWx2YWx1ZS10ZXN0LTEnLCBpbmhlcml0czogZmFsc2Us
IHN5bnRheDogJzxsZW5ndGg+JywgaW5pdGlhbFZhbHVlOiAnMTBlbSd9KSk7Ci0gIGFzc2VydF90
aHJvd3MobmV3IFN5bnRheEVycm9yKCksCisgIGFzc2VydF90aHJvd3NfZG9tKCdTeW50YXhFcnJv
cicsCiAgICAgKCkgPT4gQ1NTLnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6ICctLWluaXRpYWx2YWx1
ZS10ZXN0LTInLCBpbmhlcml0czogZmFsc2UsIHN5bnRheDogJzxsZW5ndGg+JywgaW5pdGlhbFZh
bHVlOiAnY2FsYygxMHB4ICsgMTBlbSknfSkpOwotICBhc3NlcnRfdGhyb3dzKG5ldyBTeW50YXhF
cnJvcigpLAorICBhc3NlcnRfdGhyb3dzX2RvbSgnU3ludGF4RXJyb3InLAogICAgICgpID0+IENT
Uy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiAnLS1pbml0aWFsdmFsdWUtdGVzdC0zJywgaW5oZXJp
dHM6IGZhbHNlLCBzeW50YXg6ICc8bGVuZ3RoPicsIGluaXRpYWxWYWx1ZTogJ2NhbGMoMTBweCAr
IDEwJSknfSkpOwogfSwgInJlZ2lzdGVyUHJvcGVydHkgcmVxdWlyZXMgaW5pdGlhbFZhbHVlIHRv
IGJlIGNvbXB1dGF0aW9uYWxseSBpbmRlcGVuZGVudCIpOwogPC9zY3JpcHQ+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWlkbC1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWlkbC1l
eHBlY3RlZC50eHQKaW5kZXggNzc2NGQwM2MwMjE4MmZkZjFhZWIxMGE0NTQ0OGMwZTIyODYyYzBl
MC4uYmI2YjZjMzhhZGMwMDg5YWE3NDkzOWM1ZmNiNDNjNGI5MmQ3MzIyZSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pZGwtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaWRs
LWV4cGVjdGVkLnR4dApAQCAtMSwyNiArMSwyNyBAQAotQ09OU09MRSBNRVNTQUdFOiBjYWxsYmFj
ayBub3QgeWV0IHN1cHBvcnRlZAogCiBQQVNTIERhdGFUcmFuc2ZlciBpbnRlcmZhY2U6IGV4aXN0
ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2Ugb2JqZWN0CiBQQVNTIERhdGFUcmFuc2Zl
ciBpbnRlcmZhY2Ugb2JqZWN0IGxlbmd0aAogUEFTUyBEYXRhVHJhbnNmZXIgaW50ZXJmYWNlIG9i
amVjdCBuYW1lCiBQQVNTIERhdGFUcmFuc2ZlciBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJv
cGVydGllcyBvZiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdAogUEFTUyBEYXRhVHJhbnNmZXIg
aW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIHByb3RvdHlw
ZSBvYmplY3QncyAiY29uc3RydWN0b3IiIHByb3BlcnR5CitQQVNTIERhdGFUcmFuc2ZlciBpbnRl
cmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2UgcHJvdG90eXBlIG9i
amVjdCdzIEBAdW5zY29wYWJsZXMgcHJvcGVydHkKIFBBU1MgRGF0YVRyYW5zZmVyIGludGVyZmFj
ZTogYXR0cmlidXRlIGRyb3BFZmZlY3QKIFBBU1MgRGF0YVRyYW5zZmVyIGludGVyZmFjZTogYXR0
cmlidXRlIGVmZmVjdEFsbG93ZWQKIFBBU1MgRGF0YVRyYW5zZmVyIGludGVyZmFjZTogYXR0cmli
dXRlIGl0ZW1zCi1QQVNTIERhdGFUcmFuc2ZlciBpbnRlcmZhY2U6IG9wZXJhdGlvbiBzZXREcmFn
SW1hZ2UoRWxlbWVudCxsb25nLGxvbmcpCitQQVNTIERhdGFUcmFuc2ZlciBpbnRlcmZhY2U6IG9w
ZXJhdGlvbiBzZXREcmFnSW1hZ2UoRWxlbWVudCwgbG9uZywgbG9uZykKIFBBU1MgRGF0YVRyYW5z
ZmVyIGludGVyZmFjZTogYXR0cmlidXRlIHR5cGVzCiBQQVNTIERhdGFUcmFuc2ZlciBpbnRlcmZh
Y2U6IG9wZXJhdGlvbiBnZXREYXRhKERPTVN0cmluZykKLVBBU1MgRGF0YVRyYW5zZmVyIGludGVy
ZmFjZTogb3BlcmF0aW9uIHNldERhdGEoRE9NU3RyaW5nLERPTVN0cmluZykKLVBBU1MgRGF0YVRy
YW5zZmVyIGludGVyZmFjZTogb3BlcmF0aW9uIGNsZWFyRGF0YShET01TdHJpbmcpCitQQVNTIERh
dGFUcmFuc2ZlciBpbnRlcmZhY2U6IG9wZXJhdGlvbiBzZXREYXRhKERPTVN0cmluZywgRE9NU3Ry
aW5nKQorUEFTUyBEYXRhVHJhbnNmZXIgaW50ZXJmYWNlOiBvcGVyYXRpb24gY2xlYXJEYXRhKG9w
dGlvbmFsIERPTVN0cmluZykKIFBBU1MgRGF0YVRyYW5zZmVyIGludGVyZmFjZTogYXR0cmlidXRl
IGZpbGVzCiBQQVNTIERhdGFUcmFuc2Zlckl0ZW1MaXN0IGludGVyZmFjZTogZXhpc3RlbmNlIGFu
ZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFjZSBvYmplY3QKIFBBU1MgRGF0YVRyYW5zZmVySXRlbUxp
c3QgaW50ZXJmYWNlIG9iamVjdCBsZW5ndGgKIFBBU1MgRGF0YVRyYW5zZmVySXRlbUxpc3QgaW50
ZXJmYWNlIG9iamVjdCBuYW1lCiBQQVNTIERhdGFUcmFuc2Zlckl0ZW1MaXN0IGludGVyZmFjZTog
ZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0CiBQ
QVNTIERhdGFUcmFuc2Zlckl0ZW1MaXN0IGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0
aWVzIG9mIGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0J3MgImNvbnN0cnVjdG9yIiBwcm9wZXJ0
eQorUEFTUyBEYXRhVHJhbnNmZXJJdGVtTGlzdCBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJv
cGVydGllcyBvZiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCdzIEBAdW5zY29wYWJsZXMgcHJv
cGVydHkKIFBBU1MgRGF0YVRyYW5zZmVySXRlbUxpc3QgaW50ZXJmYWNlOiBhdHRyaWJ1dGUgbGVu
Z3RoCi1QQVNTIERhdGFUcmFuc2Zlckl0ZW1MaXN0IGludGVyZmFjZTogb3BlcmF0aW9uIGFkZChE
T01TdHJpbmcsRE9NU3RyaW5nKQorUEFTUyBEYXRhVHJhbnNmZXJJdGVtTGlzdCBpbnRlcmZhY2U6
IG9wZXJhdGlvbiBhZGQoRE9NU3RyaW5nLCBET01TdHJpbmcpCiBQQVNTIERhdGFUcmFuc2Zlckl0
ZW1MaXN0IGludGVyZmFjZTogb3BlcmF0aW9uIGFkZChGaWxlKQogUEFTUyBEYXRhVHJhbnNmZXJJ
dGVtTGlzdCBpbnRlcmZhY2U6IG9wZXJhdGlvbiByZW1vdmUodW5zaWduZWQgbG9uZykKIFBBU1Mg
RGF0YVRyYW5zZmVySXRlbUxpc3QgaW50ZXJmYWNlOiBvcGVyYXRpb24gY2xlYXIoKQpAQCAtMjks
OCArMzAsMTAgQEAgUEFTUyBEYXRhVHJhbnNmZXJJdGVtIGludGVyZmFjZSBvYmplY3QgbGVuZ3Ro
CiBQQVNTIERhdGFUcmFuc2Zlckl0ZW0gaW50ZXJmYWNlIG9iamVjdCBuYW1lCiBQQVNTIERhdGFU
cmFuc2Zlckl0ZW0gaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJm
YWNlIHByb3RvdHlwZSBvYmplY3QKIFBBU1MgRGF0YVRyYW5zZmVySXRlbSBpbnRlcmZhY2U6IGV4
aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCdzICJj
b25zdHJ1Y3RvciIgcHJvcGVydHkKK1BBU1MgRGF0YVRyYW5zZmVySXRlbSBpbnRlcmZhY2U6IGV4
aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCdzIEBA
dW5zY29wYWJsZXMgcHJvcGVydHkKIFBBU1MgRGF0YVRyYW5zZmVySXRlbSBpbnRlcmZhY2U6IGF0
dHJpYnV0ZSBraW5kCiBQQVNTIERhdGFUcmFuc2Zlckl0ZW0gaW50ZXJmYWNlOiBhdHRyaWJ1dGUg
dHlwZQotUEFTUyBEYXRhVHJhbnNmZXJJdGVtIGludGVyZmFjZTogb3BlcmF0aW9uIGdldEFzU3Ry
aW5nKEZ1bmN0aW9uU3RyaW5nQ2FsbGJhY2spCitQQVNTIERhdGFUcmFuc2Zlckl0ZW0gaW50ZXJm
YWNlOiBvcGVyYXRpb24gZ2V0QXNTdHJpbmcoU3RyaW5nQ2FsbGJhY2s/KQogUEFTUyBEYXRhVHJh
bnNmZXJJdGVtIGludGVyZmFjZTogb3BlcmF0aW9uIGdldEFzRmlsZSgpCitQQVNTIERhdGFUcmFu
c2Zlckl0ZW0gaW50ZXJmYWNlOiBvcGVyYXRpb24gd2Via2l0R2V0QXNFbnRyeSgpCiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaWRsLmh0
bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWlkbC5odG1s
CmluZGV4IDU0MzhlMmJkNjIwODU3NGZmMjkxN2FiY2JlOTE5MmQ0NzFkMThiMTAuLjkzZjQ3YWNm
OTIxMDQwZDExNWM3YmNjMTNmNzc4MzM4NWIwMjI5ZDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaWRsLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pZGwuaHRtbApAQCAtOCwyMCArOCwy
MSBAQAogPC9oZWFkPgogPGJvZHk+CiA8c2NyaXB0IGlkPSJkYXRhdHJhbnNmZXItaWRsIiB0eXBl
PSJ0ZXh0L3BsYWluIj4KLVtDb25zdHJ1Y3RvciwgRXhwb3NlZD0oV2luZG93KV0KK1tFeHBvc2Vk
PVdpbmRvd10KIGludGVyZmFjZSBEYXRhVHJhbnNmZXIgeworICAgIGNvbnN0cnVjdG9yKCk7CisK
ICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIGRyb3BFZmZlY3Q7CiAgICAgYXR0cmlidXRlIERPTVN0
cmluZyBlZmZlY3RBbGxvd2VkOwogCiAgICAgW1NhbWVPYmplY3RdIHJlYWRvbmx5IGF0dHJpYnV0
ZSBEYXRhVHJhbnNmZXJJdGVtTGlzdCBpdGVtczsKIAotICAgIHZvaWQgc2V0RHJhZ0ltYWdlKEVs
ZW1lbnQgaW1hZ2UsIGxvbmcgeCwgbG9uZyB5KTsKKyAgICB1bmRlZmluZWQgc2V0RHJhZ0ltYWdl
KEVsZW1lbnQgaW1hZ2UsIGxvbmcgeCwgbG9uZyB5KTsKIAotICAgIC8qIG9sZCBpbnRlcmZhY2Ug
Ki8KICAgICByZWFkb25seSBhdHRyaWJ1dGUgRnJvemVuQXJyYXk8RE9NU3RyaW5nPiB0eXBlczsK
ICAgICBET01TdHJpbmcgZ2V0RGF0YShET01TdHJpbmcgZm9ybWF0KTsKLSAgICB2b2lkIHNldERh
dGEoRE9NU3RyaW5nIGZvcm1hdCwgRE9NU3RyaW5nIGRhdGEpOwotICAgIHZvaWQgY2xlYXJEYXRh
KG9wdGlvbmFsIERPTVN0cmluZyBmb3JtYXQpOworICAgIHVuZGVmaW5lZCBzZXREYXRhKERPTVN0
cmluZyBmb3JtYXQsIERPTVN0cmluZyBkYXRhKTsKKyAgICB1bmRlZmluZWQgY2xlYXJEYXRhKG9w
dGlvbmFsIERPTVN0cmluZyBmb3JtYXQpOwogICAgIFtTYW1lT2JqZWN0XSByZWFkb25seSBhdHRy
aWJ1dGUgRmlsZUxpc3QgZmlsZXM7CiB9OwogPC9zY3JpcHQ+CkBAIC0zNiwxNCArMzcsMTkgQEAg
aW50ZXJmYWNlIERhdGFUcmFuc2Zlckl0ZW1MaXN0IHsKIH07CiA8L3NjcmlwdD4KIDxzY3JpcHQg
aWQ9ImRhdGF0cmFuc2Zlcml0ZW0taWRsIiB0eXBlPSJ0ZXh0L3BsYWluIj4KK1tFeHBvc2VkPVdp
bmRvd10KIGludGVyZmFjZSBEYXRhVHJhbnNmZXJJdGVtIHsKICAgICByZWFkb25seSBhdHRyaWJ1
dGUgRE9NU3RyaW5nIGtpbmQ7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB0eXBl
OwotICAgIHZvaWQgZ2V0QXNTdHJpbmcoRnVuY3Rpb25TdHJpbmdDYWxsYmFjaz8gY2FsbGJhY2sp
OwotICAgIEZpbGU/IGdldEFzRmlsZSgpOworCisgICAgdW5kZWZpbmVkIGdldEFzU3RyaW5nKFN0
cmluZ0NhbGxiYWNrPyBjYWxsYmFjayk7CisgICAgRmlsZSBnZXRBc0ZpbGUoKTsKKworICAgIC8v
IGh0dHBzOi8vd2ljZy5naXRodWIuaW8vZW50cmllcy1hcGkvI2h0bWwtZGF0YQorICAgIEZpbGVT
eXN0ZW1FbnRyeT8gd2Via2l0R2V0QXNFbnRyeSgpOwogfTsKIAotY2FsbGJhY2sgRnVuY3Rpb25T
dHJpbmdDYWxsYmFjayA9IHZvaWQgKERPTVN0cmluZyBkYXRhKTsKK2NhbGxiYWNrIFN0cmluZ0Nh
bGxiYWNrID0gdm9pZCAoRE9NU3RyaW5nIGRhdGEpOwogPC9zY3JpcHQ+CiA8c2NyaXB0PgogdmFy
IGlkbHNBcnJheSA9IG5ldyBJZGxBcnJheSgpOwpAQCAtNTMsNiArNTksNyBAQCB2YXIgaWRsID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRhdGF0cmFuc2Zlci1pZGwiKS50ZXh0Q29udGVudAog
CiBpZGxzQXJyYXkuYWRkX2lkbHMoaWRsKTsKIGlkbHNBcnJheS5hZGRfdW50ZXN0ZWRfaWRscygi
aW50ZXJmYWNlIEVsZW1lbnQge307Iik7CitpZGxzQXJyYXkuYWRkX3VudGVzdGVkX2lkbHMoImlu
dGVyZmFjZSBGaWxlU3lzdGVtRW50cnkge307Iik7CiBpZGxzQXJyYXkudGVzdCgpOwogPC9zY3Jp
cHQ+CiA8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3RleHQtaXRlcmF0
b3IvY291bnQtbWF0Y2hlcy1pbi1mcmFtZXMuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvdGV4
dC1pdGVyYXRvci9jb3VudC1tYXRjaGVzLWluLWZyYW1lcy5odG1sCmluZGV4IDE5ZGQwNTFmNWM3
YmExMjlhNmM0ZjdlMWNlN2MyZGExMzU4ODg5YTEuLmFhYzNjM2QyNDIzZjMzNTQyOWE5ZDliYzY1
YmFiMTkxZTkzZmFhOGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvdGV4dC1pdGVy
YXRvci9jb3VudC1tYXRjaGVzLWluLWZyYW1lcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2VkaXRp
bmcvdGV4dC1pdGVyYXRvci9jb3VudC1tYXRjaGVzLWluLWZyYW1lcy5odG1sCkBAIC00LDcgKzQs
NiBAQAogPHRpdGxlPlRleHQgc2VhcmNoIGZyb20gZnJhbWVzPC90aXRsZT4KIDxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci08bGluayBy
ZWw9J3N0eWxlc2hlZXQnIGhyZWY9Jy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5jc3MnPgog
PC9oZWFkPgogPGJvZHk+CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvdGV4dC1p
dGVyYXRvci9oaWRkZW4tdGV4dGFyZWEtc2VsZWN0aW9uLXF1aXJrLmh0bWwgYi9MYXlvdXRUZXN0
cy9lZGl0aW5nL3RleHQtaXRlcmF0b3IvaGlkZGVuLXRleHRhcmVhLXNlbGVjdGlvbi1xdWlyay5o
dG1sCmluZGV4IDNjOWE5ZTJhZDBjN2M3MTIyYmQ1YmQxZmQ4YzY3YzA5NjdiYzgyZTAuLjcyNjZl
YTNjODYwNzdjYmNkMTU1ZjlkODJiOTBmODk3MzMxNzQyZDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2VkaXRpbmcvdGV4dC1pdGVyYXRvci9oaWRkZW4tdGV4dGFyZWEtc2VsZWN0aW9uLXF1aXJr
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy90ZXh0LWl0ZXJhdG9yL2hpZGRlbi10ZXh0
YXJlYS1zZWxlY3Rpb24tcXVpcmsuaHRtbApAQCAtNCw3ICs0LDYgQEAKIDx0aXRsZT5TZWxlY3Rp
b25zIGluIGhpZGRlbiBlbGVtZW50czwvdGl0bGU+CiA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPGxpbmsgcmVsPSdzdHlsZXNoZWV0
JyBocmVmPScuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuY3NzJz4KIDwvaGVhZD4KIDxib2R5
PgogPHN0eWxlPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvd2Vi
Z2wyL2JpbmRpbmdzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC93ZWJnbDIv
YmluZGluZ3MuaHRtbAppbmRleCBiYzVmYjQ2MWFiMGY2Mjc5ZGYyM2M0OTFiZmU1YjhkMWJlZTg0
ZTdjLi42NDA0ZjRkMjZiNjg4ZjY1MDMxODljNzA2MTZiZWY2NGE4ODAzNDRkIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC93ZWJnbDIvYmluZGluZ3MuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC93ZWJnbDIvYmluZGluZ3MuaHRtbApAQCAt
NDgsNyArNDgsNyBAQCBzZXR1cChmdW5jdGlvbigpIHsKIAogZm9yICh2YXIgW21ldGhvZCwgYXJn
cywgbmFtZV0gb2YgZXJyb3JfbWV0aG9kcykgewogICB0ZXN0KGZ1bmN0aW9uKCkgewotICAgIGFz
c2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiBjb250ZXh0W21ldGhvZF0oLi4uYXJn
cykpOworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiBjb250ZXh0W21ldGhv
ZF0oLi4uYXJncykpOwogICB9LCBuYW1lKTsKIH0KIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvZGVmaW5lZC1wc2V1ZG8tY2xhc3MuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL2RlZmluZWQtcHNldWRvLWNsYXNzLmh0
bWwKaW5kZXggMDYyMGZjZDM3MGFmMjNhNWEyOTlmMzBiMjhiYzkxMGJhOTRiYWE3NS4uMGMwYzNi
MDhhMmFiODEyZjZiYTg2M2M1MDNhNDZiYzg5YjVkZmE1ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvZmFzdC9jdXN0b20tZWxlbWVudHMvZGVmaW5lZC1wc2V1ZG8tY2xhc3MuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9kZWZpbmVkLXBzZXVkby1jbGFzcy5odG1s
CkBAIC02LDcgKzYsNiBAQAogPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL3czYy5naXRo
dWIuaW8vd2ViY29tcG9uZW50cy9zcGVjL2N1c3RvbS8jdGhlLWRlZmluZWQtZWxlbWVudC1wc2V1
ZG8tY2xhc3MtZGVmaW5lZCI+CiA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5l
c3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPGxpbmsgcmVsPSdzdHlsZXNoZWV0JyBocmVmPScuLi8u
Li9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuY3NzJz4KIDwvaGVhZD4KIDxib2R5PgogPGRpdiBpZD0i
bG9nIj48L2Rpdj4KQEAgLTEwNSwyOCArMTA0LDMwIEBAIHRlc3QoZnVuY3Rpb24gKCkgewogCiB0
ZXN0KGZ1bmN0aW9uICgpIHsKICAgICB2YXIgbWF0Y2hJbnNpZGVDb25zdHJ1Y3RvciA9IGZhbHNl
OworICAgIGNvbnN0IHRoZUV4Y2VwdGlvbiA9IHtuYW1lOiAnYmFkJ307CiAgICAgY2xhc3MgVGhy
b3dzRXhjZXB0aW9uIGV4dGVuZHMgSFRNTEVsZW1lbnQgewogICAgICAgICBjb25zdHJ1Y3Rvcigp
IHsKICAgICAgICAgICAgIHN1cGVyKCk7CiAgICAgICAgICAgICBtYXRjaEluc2lkZUNvbnN0cnVj
dG9yID0gdGhpcy5tYXRjaGVzKCc6ZGVmaW5lZCcpOwotICAgICAgICAgICAgdGhyb3cge25hbWU6
ICdiYWQnfTsKKyAgICAgICAgICAgIHRocm93IHRoZUV4Y2VwdGlvbjsKICAgICAgICAgfQogICAg
IH07CiAgICAgY3VzdG9tRWxlbWVudHMuZGVmaW5lKCd0aHJvd3MtZXhjZXB0aW9uJywgVGhyb3dz
RXhjZXB0aW9uKTsKICAgICB2YXIgaW5zdGFuY2U7Ci0gICAgYXNzZXJ0X3Rocm93cyh7bmFtZTog
J2JhZCd9LCBmdW5jdGlvbiAoKSB7IGluc3RhbmNlID0gbmV3IFRocm93c0V4Y2VwdGlvbjsgfSk7
CisgICAgYXNzZXJ0X3Rocm93c19leGFjdGx5KHRoZUV4Y2VwdGlvbiwgZnVuY3Rpb24gKCkgeyBp
bnN0YW5jZSA9IG5ldyBUaHJvd3NFeGNlcHRpb247IH0pOwogICAgIGFzc2VydF90cnVlKG1hdGNo
SW5zaWRlQ29uc3RydWN0b3IpOwogfSwgJ1RoZSBkZWZpbmVkIGZsYWcgb2YgYSBjdXN0b20gZWxl
bWVudCBtdXN0IGJlIHNldCBpbnNpZGUgYSBjb25zdHJ1Y3RvciB3aGVuIGNvbnN0cnVjdGluZyBh
IGN1c3RvbSBlbGVtZW50IHN5bmNocm9ub3VzbHknCiAgICAgKyAnIGV2ZW4gaWYgdGhlIGNvbnN0
cnVjdG9yIHRocmV3IGFuIGV4Y2VwdGlvbiBsYXRlcicpOwogCiB0ZXN0KGZ1bmN0aW9uICgpIHsK
ICAgICB2YXIgaW5zdGFuY2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0aHJvd3MtZXhjZXB0
aW9uLTInKTsKKyAgICBjb25zdCB0aGVFeGNlcHRpb24gPSB7bmFtZTogJ2JhZCd9OwogICAgIGRv
Y3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaW5zdGFuY2UpOwogICAgIHZhciB1bmNhdWdodEVycm9y
OwogICAgIHdpbmRvdy5vbmVycm9yID0gZnVuY3Rpb24gKG1lc3NhZ2UsIHVybCwgbGluZU51bWJl
ciwgY29sdW1uTnVtYmVyLCBlcnJvcikgeyB1bmNhdWdodEVycm9yID0gZXJyb3I7IHJldHVybiB0
cnVlOyB9CiAgICAgY3VzdG9tRWxlbWVudHMuZGVmaW5lKCd0aHJvd3MtZXhjZXB0aW9uLTInLCBj
bGFzcyBleHRlbmRzIEhUTUxFbGVtZW50IHsKICAgICAgICAgY29uc3RydWN0b3IoKSB7Ci0gICAg
ICAgICAgICB0aHJvdyB7bmFtZTogJ2JhZCd9OworICAgICAgICAgICAgdGhyb3cgdGhlRXhjZXB0
aW9uOwogICAgICAgICB9CiAgICAgfSk7CiAgICAgYXNzZXJ0X2VxdWFscyh1bmNhdWdodEVycm9y
Lm5hbWUsICdiYWQnKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1l
bnRzL3Rocm93LW9uLWR5bmFtaWMtbWFya3VwLWluc2VydGlvbi1jb3VudGVyLWNvbnN0cnVjdC5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvdGhyb3ctb24tZHluYW1pYy1t
YXJrdXAtaW5zZXJ0aW9uLWNvdW50ZXItY29uc3RydWN0Lmh0bWwKaW5kZXggNmYzYmFlODNmMmVk
YmM4MDUwMTI0MWNjZmUzZmQ3ZTc5MjQ5ZDJiMS4uZTEwMjM0YjIzOTVmOGYxNDliMWQ1MTAwNWQ1
ODhlY2NjOTA0ZTBkNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVu
dHMvdGhyb3ctb24tZHluYW1pYy1tYXJrdXAtaW5zZXJ0aW9uLWNvdW50ZXItY29uc3RydWN0Lmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvdGhyb3ctb24tZHluYW1p
Yy1tYXJrdXAtaW5zZXJ0aW9uLWNvdW50ZXItY29uc3RydWN0Lmh0bWwKQEAgLTQ1LDEyICs0NSwx
MiBAQCBhc3luYyBmdW5jdGlvbiBjb25zdHJ1Y3RfY3VzdG9tX2VsZW1lbnRfaW5fcGFyc2VyKHRl
c3QsIGNhbGxfZnVuY3Rpb24pCiAKIHByb21pc2VfdGVzdChhc3luYyBmdW5jdGlvbiAoKSB7CiAg
ICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgY29uc3RydWN0X2N1c3RvbV9lbGVtZW50X2luX3BhcnNl
cih0aGlzLCAoZG9jdW1lbnQpID0+IGRvY3VtZW50Lm9wZW4oKSk7Ci0gICAgYXNzZXJ0X3Rocm93
cyh7bmFtZTogJ0ludmFsaWRTdGF0ZUVycm9yJ30sICgpID0+IHsgdGhyb3cgcmVzdWx0LmV4Y2Vw
dGlvbjsgfSwgJ011c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3InKTsKKyAgICBhc3NlcnRf
dGhyb3dzX2RvbSgnSW52YWxpZFN0YXRlRXJyb3InLCByZXN1bHQud2luZG93LkRPTUV4Y2VwdGlv
biwgKCkgPT4geyB0aHJvdyByZXN1bHQuZXhjZXB0aW9uOyB9LCAnTXVzdCB0aHJvdyBhbiBJbnZh
bGlkU3RhdGVFcnJvcicpOwogfSwgJ2RvY3VtZW50Lm9wZW4oKSBtdXN0IHRocm93IGFuIEludmFs
aWRTdGF0ZUVycm9yIHdoZW4gc3luY2hyb25vdXNseSBjb25zdHJ1Y3RpbmcgYSBjdXN0b20gZWxl
bWVudCcpOwogCiBwcm9taXNlX3Rlc3QoYXN5bmMgZnVuY3Rpb24gKCkgewogICAgIGNvbnN0IHJl
c3VsdCA9IGF3YWl0IGNvbnN0cnVjdF9jdXN0b21fZWxlbWVudF9pbl9wYXJzZXIodGhpcywgKGRv
Y3VtZW50KSA9PiBkb2N1bWVudC5vcGVuKCd0ZXh0L2h0bWwnKSk7Ci0gICAgYXNzZXJ0X3Rocm93
cyh7bmFtZTogJ0ludmFsaWRTdGF0ZUVycm9yJ30sICgpID0+IHsgdGhyb3cgcmVzdWx0LmV4Y2Vw
dGlvbjsgfSwgJ011c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3InKTsKKyAgICBhc3NlcnRf
dGhyb3dzX2RvbSgnSW52YWxpZFN0YXRlRXJyb3InLCByZXN1bHQud2luZG93LkRPTUV4Y2VwdGlv
biwgKCkgPT4geyB0aHJvdyByZXN1bHQuZXhjZXB0aW9uOyB9LCAnTXVzdCB0aHJvdyBhbiBJbnZh
bGlkU3RhdGVFcnJvcicpOwogfSwgJ2RvY3VtZW50Lm9wZW4oInRleHQvaHRtbCIpIG11c3QgdGhy
b3cgYW4gSW52YWxpZFN0YXRlRXJyb3Igd2hlbiBzeW5jaHJvbm91c2x5IGNvbnN0cnVjdGluZyBh
IGN1c3RvbSBlbGVtZW50Jyk7CiAKIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVs
dGlwYWdlL2R5bmFtaWMtbWFya3VwLWluc2VydGlvbi5odG1sI2RvbS1kb2N1bWVudC1vcGVuLXdp
bmRvdwpAQCAtNjMsMTkgKzYzLDE5IEBAIHByb21pc2VfdGVzdChhc3luYyBmdW5jdGlvbiAoKSB7
CiAKIHByb21pc2VfdGVzdChhc3luYyBmdW5jdGlvbiAoKSB7CiAgICAgY29uc3QgcmVzdWx0ID0g
YXdhaXQgY29uc3RydWN0X2N1c3RvbV9lbGVtZW50X2luX3BhcnNlcih0aGlzLCAoZG9jdW1lbnQp
ID0+IGRvY3VtZW50LmNsb3NlKCkpOwotICAgIGFzc2VydF90aHJvd3Moe25hbWU6ICdJbnZhbGlk
U3RhdGVFcnJvcid9LCAoKSA9PiB7IHRocm93IHJlc3VsdC5leGNlcHRpb247IH0sICdNdXN0IHRo
cm93IGFuIEludmFsaWRTdGF0ZUVycm9yJyk7CisgICAgYXNzZXJ0X3Rocm93c19kb20oJ0ludmFs
aWRTdGF0ZUVycm9yJywgcmVzdWx0LndpbmRvdy5ET01FeGNlcHRpb24sICgpID0+IHsgdGhyb3cg
cmVzdWx0LmV4Y2VwdGlvbjsgfSwgJ011c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3InKTsK
IH0sICdkb2N1bWVudC5jbG9zZSgpIG11c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3Igd2hl
biBzeW5jaHJvbm91c2x5IGNvbnN0cnVjdGluZyBhIGN1c3RvbSBlbGVtZW50Jyk7CiAKIHByb21p
c2VfdGVzdChhc3luYyBmdW5jdGlvbiAoKSB7CiAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgY29u
c3RydWN0X2N1c3RvbV9lbGVtZW50X2luX3BhcnNlcih0aGlzLCAoZG9jdW1lbnQpID0+IGRvY3Vt
ZW50LndyaXRlKCc8Yj5zb21lIHRleHQ8L2I+JykpOwotICAgIGFzc2VydF90aHJvd3Moe25hbWU6
ICdJbnZhbGlkU3RhdGVFcnJvcid9LCAoKSA9PiB7IHRocm93IHJlc3VsdC5leGNlcHRpb247IH0s
ICdNdXN0IHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yJyk7CisgICAgYXNzZXJ0X3Rocm93c19k
b20oJ0ludmFsaWRTdGF0ZUVycm9yJywgcmVzdWx0LndpbmRvdy5ET01FeGNlcHRpb24sICgpID0+
IHsgdGhyb3cgcmVzdWx0LmV4Y2VwdGlvbjsgfSwgJ011c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRl
RXJyb3InKTsKICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdC5kb2N1bWVudC5xdWVyeVNlbGVjdG9y
KCdiJyksIG51bGwsICdNdXN0IG5vdCBpbnNlcnQgbmV3IGNvbnRlbnQnKTsKICAgICBhc3NlcnRf
ZmFsc2UocmVzdWx0LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5pbm5lckhUTUwuaW5jbHVkZXMo
J3NvbWUgdGV4dCcpLCAnTXVzdCBub3QgaW5zZXJ0IG5ldyBjb250ZW50Jyk7CiB9LCAnZG9jdW1l
bnQud3JpdGUgbXVzdCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciB3aGVuIHN5bmNocm9ub3Vz
bHkgY29uc3RydWN0aW5nIGEgY3VzdG9tIGVsZW1lbnQnKTsKIAogcHJvbWlzZV90ZXN0KGFzeW5j
IGZ1bmN0aW9uICgpIHsKICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBjb25zdHJ1Y3RfY3VzdG9t
X2VsZW1lbnRfaW5fcGFyc2VyKHRoaXMsIChkb2N1bWVudCkgPT4gZG9jdW1lbnQud3JpdGVsbign
PGI+c29tZSB0ZXh0PC9iPicpKTsKLSAgICBhc3NlcnRfdGhyb3dzKHtuYW1lOiAnSW52YWxpZFN0
YXRlRXJyb3InfSwgKCkgPT4geyB0aHJvdyByZXN1bHQuZXhjZXB0aW9uOyB9LCAnTXVzdCB0aHJv
dyBhbiBJbnZhbGlkU3RhdGVFcnJvcicpOworICAgIGFzc2VydF90aHJvd3NfZG9tKCdJbnZhbGlk
U3RhdGVFcnJvcicsIHJlc3VsdC53aW5kb3cuRE9NRXhjZXB0aW9uLCAoKSA9PiB7IHRocm93IHJl
c3VsdC5leGNlcHRpb247IH0sICdNdXN0IHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yJyk7CiAg
ICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQuZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYicpLCBudWxs
LCAnTXVzdCBub3QgaW5zZXJ0IG5ldyBjb250ZW50Jyk7CiAgICAgYXNzZXJ0X2ZhbHNlKHJlc3Vs
dC5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuaW5uZXJIVE1MLmluY2x1ZGVzKCdzb21lIHRleHQn
KSwgJ011c3Qgbm90IGluc2VydCBuZXcgY29udGVudCcpOwogfSwgJ2RvY3VtZW50LndyaXRlbG4g
bXVzdCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciB3aGVuIHN5bmNocm9ub3VzbHkgY29uc3Ry
dWN0aW5nIGEgY3VzdG9tIGVsZW1lbnQnKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
Y3VzdG9tLWVsZW1lbnRzL3Rocm93LW9uLWR5bmFtaWMtbWFya3VwLWluc2VydGlvbi1jb3VudGVy
LXJlYWN0aW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvdGhyb3ct
b24tZHluYW1pYy1tYXJrdXAtaW5zZXJ0aW9uLWNvdW50ZXItcmVhY3Rpb25zLmh0bWwKaW5kZXgg
MDZmZWVmNjgyZTBjYjgzZGJhYzIwY2JhNjYyNjBjNDE2NzRiMGUxNy4uYWE2OTkwZTU5N2VmYjhh
ZjRjZTk3MDE3NGZiM2E0NTdlNjFiYjY4MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9j
dXN0b20tZWxlbWVudHMvdGhyb3ctb24tZHluYW1pYy1tYXJrdXAtaW5zZXJ0aW9uLWNvdW50ZXIt
cmVhY3Rpb25zLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvdGhy
b3ctb24tZHluYW1pYy1tYXJrdXAtaW5zZXJ0aW9uLWNvdW50ZXItcmVhY3Rpb25zLmh0bWwKQEAg
LTQ1LDEyICs0NSwxMiBAQCBhc3luYyBmdW5jdGlvbiBjdXN0b21fZWxlbWVudF9yZWFjdGlvbnNf
aW5fcGFyc2VyKHRlc3QsIGNhbGxfZnVuY3Rpb24pCiAKIHByb21pc2VfdGVzdChhc3luYyBmdW5j
dGlvbiAoKSB7CiAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgY3VzdG9tX2VsZW1lbnRfcmVhY3Rp
b25zX2luX3BhcnNlcih0aGlzLCAoZG9jdW1lbnQpID0+IGRvY3VtZW50Lm9wZW4oKSk7Ci0gICAg
YXNzZXJ0X3Rocm93cyh7bmFtZTogJ0ludmFsaWRTdGF0ZUVycm9yJ30sICgpID0+IHsgdGhyb3cg
cmVzdWx0LmV4Y2VwdGlvbjsgfSwgJ011c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3InKTsK
KyAgICBhc3NlcnRfdGhyb3dzX2RvbSgnSW52YWxpZFN0YXRlRXJyb3InLCByZXN1bHQud2luZG93
LkRPTUV4Y2VwdGlvbiwgKCkgPT4geyB0aHJvdyByZXN1bHQuZXhjZXB0aW9uOyB9LCAnTXVzdCB0
aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvcicpOwogfSwgJ2RvY3VtZW50Lm9wZW4oKSBtdXN0IHRo
cm93IGFuIEludmFsaWRTdGF0ZUVycm9yIHdoZW4gcHJvY2Vzc2luZyBjdXN0b20gZWxlbWVudCBy
ZWFjdGlvbnMgZm9yIGEgc3luY2hyb25vdXMgY29uc3RydWN0ZWQgY3VzdG9tIGVsZW1lbnQnKTsK
IAogcHJvbWlzZV90ZXN0KGFzeW5jIGZ1bmN0aW9uICgpIHsKICAgICBjb25zdCByZXN1bHQgPSBh
d2FpdCBjdXN0b21fZWxlbWVudF9yZWFjdGlvbnNfaW5fcGFyc2VyKHRoaXMsIChkb2N1bWVudCkg
PT4gZG9jdW1lbnQub3BlbigndGV4dC9odG1sJykpOwotICAgIGFzc2VydF90aHJvd3Moe25hbWU6
ICdJbnZhbGlkU3RhdGVFcnJvcid9LCAoKSA9PiB7IHRocm93IHJlc3VsdC5leGNlcHRpb247IH0s
ICdNdXN0IHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yJyk7CisgICAgYXNzZXJ0X3Rocm93c19k
b20oJ0ludmFsaWRTdGF0ZUVycm9yJywgcmVzdWx0LndpbmRvdy5ET01FeGNlcHRpb24sICgpID0+
IHsgdGhyb3cgcmVzdWx0LmV4Y2VwdGlvbjsgfSwgJ011c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRl
RXJyb3InKTsKIH0sICdkb2N1bWVudC5vcGVuKCJ0ZXh0L2h0bWwiKSBtdXN0IHRocm93IGFuIElu
dmFsaWRTdGF0ZUVycm9yIHdoZW4gcHJvY2Vzc2luZyBjdXN0b20gZWxlbWVudCByZWFjdGlvbnMg
Zm9yIGEgc3luY2hyb25vdXMgY29uc3RydWN0ZWQgY3VzdG9tIGVsZW1lbnQnKTsKIAogLy8gaHR0
cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZHluYW1pYy1tYXJrdXAtaW5zZXJ0
aW9uLmh0bWwjZG9tLWRvY3VtZW50LW9wZW4td2luZG93CkBAIC02MywxOSArNjMsMTkgQEAgcHJv
bWlzZV90ZXN0KGFzeW5jIGZ1bmN0aW9uICgpIHsKIAogcHJvbWlzZV90ZXN0KGFzeW5jIGZ1bmN0
aW9uICgpIHsKICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBjdXN0b21fZWxlbWVudF9yZWFjdGlv
bnNfaW5fcGFyc2VyKHRoaXMsIChkb2N1bWVudCkgPT4gZG9jdW1lbnQuY2xvc2UoKSk7Ci0gICAg
YXNzZXJ0X3Rocm93cyh7bmFtZTogJ0ludmFsaWRTdGF0ZUVycm9yJ30sICgpID0+IHsgdGhyb3cg
cmVzdWx0LmV4Y2VwdGlvbjsgfSwgJ011c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3InKTsK
KyAgICBhc3NlcnRfdGhyb3dzX2RvbSgnSW52YWxpZFN0YXRlRXJyb3InLCByZXN1bHQud2luZG93
LkRPTUV4Y2VwdGlvbiwgKCkgPT4geyB0aHJvdyByZXN1bHQuZXhjZXB0aW9uOyB9LCAnTXVzdCB0
aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvcicpOwogfSwgJ2RvY3VtZW50LmNsb3NlKCkgbXVzdCB0
aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciB3aGVuIHByb2Nlc3NpbmcgY3VzdG9tIGVsZW1lbnQg
cmVhY3Rpb25zIGZvciBhIHN5bmNocm9ub3VzIGNvbnN0cnVjdGVkIGN1c3RvbSBlbGVtZW50Jyk7
CiAKIHByb21pc2VfdGVzdChhc3luYyBmdW5jdGlvbiAoKSB7CiAgICAgY29uc3QgcmVzdWx0ID0g
YXdhaXQgY3VzdG9tX2VsZW1lbnRfcmVhY3Rpb25zX2luX3BhcnNlcih0aGlzLCAoZG9jdW1lbnQp
ID0+IGRvY3VtZW50LndyaXRlKCc8Yj5zb21lIHRleHQ8L2I+JykpOwotICAgIGFzc2VydF90aHJv
d3Moe25hbWU6ICdJbnZhbGlkU3RhdGVFcnJvcid9LCAoKSA9PiB7IHRocm93IHJlc3VsdC5leGNl
cHRpb247IH0sICdNdXN0IHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yJyk7CisgICAgYXNzZXJ0
X3Rocm93c19kb20oJ0ludmFsaWRTdGF0ZUVycm9yJywgcmVzdWx0LndpbmRvdy5ET01FeGNlcHRp
b24sICgpID0+IHsgdGhyb3cgcmVzdWx0LmV4Y2VwdGlvbjsgfSwgJ011c3QgdGhyb3cgYW4gSW52
YWxpZFN0YXRlRXJyb3InKTsKICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdC5kb2N1bWVudC5xdWVy
eVNlbGVjdG9yKCdiJyksIG51bGwsICdNdXN0IG5vdCBpbnNlcnQgbmV3IGNvbnRlbnQnKTsKICAg
ICBhc3NlcnRfZmFsc2UocmVzdWx0LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5pbm5lckhUTUwu
aW5jbHVkZXMoJ3NvbWUgdGV4dCcpLCAnTXVzdCBub3QgaW5zZXJ0IG5ldyBjb250ZW50Jyk7CiB9
LCAnZG9jdW1lbnQud3JpdGUgbXVzdCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciB3aGVuIHBy
b2Nlc3NpbmcgY3VzdG9tIGVsZW1lbnQgcmVhY3Rpb25zIGZvciBhIHN5bmNocm9ub3VzIGNvbnN0
cnVjdGVkIGN1c3RvbSBlbGVtZW50Jyk7CiAKIHByb21pc2VfdGVzdChhc3luYyBmdW5jdGlvbiAo
KSB7CiAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgY3VzdG9tX2VsZW1lbnRfcmVhY3Rpb25zX2lu
X3BhcnNlcih0aGlzLCAoZG9jdW1lbnQpID0+IGRvY3VtZW50LndyaXRlbG4oJzxiPnNvbWUgdGV4
dDwvYj4nKSk7Ci0gICAgYXNzZXJ0X3Rocm93cyh7bmFtZTogJ0ludmFsaWRTdGF0ZUVycm9yJ30s
ICgpID0+IHsgdGhyb3cgcmVzdWx0LmV4Y2VwdGlvbjsgfSwgJ011c3QgdGhyb3cgYW4gSW52YWxp
ZFN0YXRlRXJyb3InKTsKKyAgICBhc3NlcnRfdGhyb3dzX2RvbSgnSW52YWxpZFN0YXRlRXJyb3In
LCByZXN1bHQud2luZG93LkRPTUV4Y2VwdGlvbiwgKCkgPT4geyB0aHJvdyByZXN1bHQuZXhjZXB0
aW9uOyB9LCAnTXVzdCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvcicpOwogICAgIGFzc2VydF9l
cXVhbHMocmVzdWx0LmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2InKSwgbnVsbCwgJ011c3Qgbm90
IGluc2VydCBuZXcgY29udGVudCcpOwogICAgIGFzc2VydF9mYWxzZShyZXN1bHQuZG9jdW1lbnQu
ZG9jdW1lbnRFbGVtZW50LmlubmVySFRNTC5pbmNsdWRlcygnc29tZSB0ZXh0JyksICdNdXN0IG5v
dCBpbnNlcnQgbmV3IGNvbnRlbnQnKTsKIH0sICdkb2N1bWVudC53cml0ZWxuIG11c3QgdGhyb3cg
YW4gSW52YWxpZFN0YXRlRXJyb3Igd2hlbiBwcm9jZXNzaW5nIGN1c3RvbSBlbGVtZW50IHJlYWN0
aW9ucyBmb3IgYSBzeW5jaHJvbm91cyBjb25zdHJ1Y3RlZCBjdXN0b20gZWxlbWVudCcpOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vZG9jdW1lbnQtYWxsLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9kb2N1bWVudC1hbGwuaHRtbAppbmRleCAxMDg3MzEwODNhODE4ZWNlMGJl
NzMwMGI1ZWQzMDAwYWExNTI3NjdkLi43MjQzNzA2ZGIyN2E1NDRlMTRlM2Y2YmYxNGUyNjI1MjBj
ZjE3MTRmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9kb2N1bWVudC1hbGwuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9kb2N1bWVudC1hbGwuaHRtbApAQCAtMTUzLDcg
KzE1Myw3IEBAIHRlc3QoZnVuY3Rpb24oKSB7CiB9LCAiZG9jdW1lbnQuYWxsIHdpbGwgcmV0dXJu
IGEgc3ViLWNvbGxlY3Rpb24gaWYgdGhlIG5hbWUvaWQgaXMgZm91bmQgbW9yZSB0aGFuIG9uY2Us
IHRoYXQgaXMgbGl2ZSIpOwogCiB0ZXN0KGZ1bmN0aW9uKCkgewotICAgIGFzc2VydF90aHJvd3Mo
bmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsgZG9jdW1lbnQuYWxsLm5hbWVkSXRlbSgpIH0p
OworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsgZG9jdW1lbnQu
YWxsLm5hbWVkSXRlbSgpIH0pOwogfSwgImRvY3VtZW50LmFsbCdzIG5hbWVkSXRlbSBmdW5jdGlv
biByZXF1aXJlcyBwYXNzaW5nIGFuIGFyZ3VtZW50Iik7CiAKIHRlc3QoZnVuY3Rpb24oKSB7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9lbGVtZW50RnJvbVBvaW50LXBhcmFtZXRl
cnMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2VsZW1lbnRGcm9tUG9pbnQtcGFyYW1ldGVy
cy5odG1sCmluZGV4IGFkZGQyNmQ4OTEzMWRhMDkxN2IxMGU0Yzk1ZTdkYzZhNzlkYTgxMWEuLjQy
YWY0MWUzY2FhNTdiMGE1MDk5M2E2OTVlY2FiODk5ZjE4ZTc4ZjMgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2Zhc3QvZG9tL2VsZW1lbnRGcm9tUG9pbnQtcGFyYW1ldGVycy5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL2VsZW1lbnRGcm9tUG9pbnQtcGFyYW1ldGVycy5odG1sCkBAIC02
LDI2ICs2LDI2IEBACiA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVw
b3J0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiB0ZXN0KGZ1bmN0aW9uKCkgewotICAgIGFzc2Vy
dF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsgCisgICAgYXNzZXJ0X3Rocm93
c19qcyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeyAKICAgICAgICAgZG9jdW1lbnQuZWxlbWVudEZy
b21Qb2ludCgpOwogICAgIH0sICJDYWxsZWQgd2l0aCBubyBwYXJhbWV0ZXIiKTsKIAotICAgIGFz
c2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsgCisgICAgYXNzZXJ0X3Ro
cm93c19qcyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeyAKICAgICAgICAgZG9jdW1lbnQuZWxlbWVu
dEZyb21Qb2ludCgwKTsKICAgICB9LCAiQ2FsbGVkIHdpdGggMSBwYXJhbWV0ZXIiKTsKIH0sICJQ
YXJhbWV0ZXJzIGFyZSBtYW5kYXRvcnkuIik7CiAKIHRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgYXNz
ZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgeworICAgIGFzc2VydF90aHJv
d3NfanMoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKICAgICAgICAgZG9jdW1lbnQuZWxlbWVudEZy
b21Qb2ludCgwLCBJbmZpbml0eSk7CiAgICAgfSwgIlBhc3NpbmcgSW5maW5pdHkgYXMgc2Vjb25k
IHBhcmFtZXRlciB0aHJvd3MiKTsKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwg
ZnVuY3Rpb24oKSB7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkg
ewogICAgICAgICBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KEluZmluaXR5LCAwKTsKICAgICB9
LCAiUGFzc2luZyBJbmZpbml0eSBhcyBmaXJzdCBwYXJhbWV0ZXIgdGhyb3dzIik7Ci0gICAgYXNz
ZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgeworICAgIGFzc2VydF90aHJv
d3NfanMoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKICAgICAgICAgZG9jdW1lbnQuZWxlbWVudEZy
b21Qb2ludCgwLCBOYU4pOwogICAgIH0sICJQYXNzaW5nIE5hTiBhcyBzZWNvbmQgcGFyYW1ldGVy
IHRocm93cyIpOwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigp
IHsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CiAgICAgICAg
IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoTmFOLCAwKTsKICAgICB9LCAiUGFzc2luZyBOYU4g
YXMgZmlyc3QgcGFyYW1ldGVyIHRocm93cyIpOwogfSwgIlBhcmFtZXRlciBzaG91bGQgYmUgZmlu
aXRlIGZsb2F0aW5nIHBvaW50IHZhbHVlcy4iKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZG9tL3JlcGxhY2VhYmxlLXNldHRlci10aHJvd3MtaWYtZGVmaW5lb3ducHJvcGVydHktZmFp
bHMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3JlcGxhY2VhYmxlLXNldHRlci10aHJvd3Mt
aWYtZGVmaW5lb3ducHJvcGVydHktZmFpbHMuaHRtbAppbmRleCBjZmFiZmYzNTFhMjUyNThmMjFj
MGZiZmFhZTNhNzQ2ODE5OGU2NjgwLi5kY2VhOTNiNTExNmE1YzIyZmVhMjQwYmU4ODM3MDY2YTAy
OTYxZDdiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9yZXBsYWNlYWJsZS1zZXR0
ZXItdGhyb3dzLWlmLWRlZmluZW93bnByb3BlcnR5LWZhaWxzLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vcmVwbGFjZWFibGUtc2V0dGVyLXRocm93cy1pZi1kZWZpbmVvd25wcm9wZXJ0
eS1mYWlscy5odG1sCkBAIC0xMSw3ICsxMSw3IEBACiBmb3IgKGNvbnN0IGtleSBvZiBbInNlbGYi
LCAicGFyZW50IiwgIm9yaWdpbiIsICJpbm5lcldpZHRoIl0pIHsKICAgICB0ZXN0KCgpID0+IHsK
ICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdywga2V5LCB7IGNvbmZpZ3VyYWJs
ZTogZmFsc2UgfSk7Ci0gICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvciwgKCkgPT4g
eyB3aW5kb3dba2V5XSA9IDE7IH0pOworICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJv
ciwgKCkgPT4geyB3aW5kb3dba2V5XSA9IDE7IH0pOwogCiAgICAgICAgIGNvbnN0IGRlc2MgPSBP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHdpbmRvdywga2V5KTsKICAgICAgICAgYXNz
ZXJ0X2ZhbHNlKCJ2YWx1ZSIgaW4gZGVzYyk7CkBAIC0yNiw3ICsyNiw3IEBAIGZvciAoY29uc3Qg
a2V5IG9mIFsic2NyZWVuIiwgImxlbmd0aCIsICJldmVudCIsICJvdXRlckhlaWdodCJdKSB7CiAg
ICAgdGVzdCgoKSA9PiB7CiAgICAgICAgIGNvbnN0IHsgc2V0IH0gPSBPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKHdpbmRvdywga2V5KTsKICAgICAgICAgT2JqZWN0LmRlZmluZVByb3Bl
cnR5KHdpbmRvdywga2V5LCB7IHZhbHVlOiAxLCB3cml0YWJsZTogZmFsc2UsIGNvbmZpZ3VyYWJs
ZTogZmFsc2UgfSk7Ci0gICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvciwgKCkgPT4g
eyBzZXQuY2FsbCh3aW5kb3csIDIpOyB9KTsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBl
RXJyb3IsICgpID0+IHsgc2V0LmNhbGwod2luZG93LCAyKTsgfSk7CiAKICAgICAgICAgY29uc3Qg
ZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iod2luZG93LCBrZXkpOwogICAg
ICAgICBhc3NlcnRfZXF1YWxzKGRlc2MudmFsdWUsIDEpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9kb20vd2luZG93LW9wZW5lci1zZXR0ZXItdGhyb3dzLWlmLWRlZmluZW93bnByb3Bl
cnR5LWZhaWxzLTEuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3dpbmRvdy1vcGVuZXItc2V0
dGVyLXRocm93cy1pZi1kZWZpbmVvd25wcm9wZXJ0eS1mYWlscy0xLmh0bWwKaW5kZXggNDIzMzkx
ZDVkZmMyNWZlZjQxYWE2YTNhZTJlMGIwNDM5ZmJiN2I2NS4uNTk5YjUxMjUxYjNkMDUyNzUyYWQy
NTRiY2RjOWM1YWQ2MzIyMTFiZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vd2lu
ZG93LW9wZW5lci1zZXR0ZXItdGhyb3dzLWlmLWRlZmluZW93bnByb3BlcnR5LWZhaWxzLTEuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS93aW5kb3ctb3BlbmVyLXNldHRlci10aHJvd3Mt
aWYtZGVmaW5lb3ducHJvcGVydHktZmFpbHMtMS5odG1sCkBAIC0xMCw3ICsxMCw3IEBACiA8c2Ny
aXB0PgogdGVzdCgoKSA9PiB7CiAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdywgIm9w
ZW5lciIsIHsgY29uZmlndXJhYmxlOiBmYWxzZSB9KTsKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBU
eXBlRXJyb3IsICgpID0+IHsgd2luZG93Lm9wZW5lciA9IDE7IH0pOworICAgIGFzc2VydF90aHJv
d3NfanMoVHlwZUVycm9yLCAoKSA9PiB7IHdpbmRvdy5vcGVuZXIgPSAxOyB9KTsKIAogICAgIGNv
bnN0IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHdpbmRvdywgIm9wZW5l
ciIpOwogICAgIGFzc2VydF9mYWxzZSgidmFsdWUiIGluIGRlc2MpOwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9kb20vd2luZG93LW9wZW5lci1zZXR0ZXItdGhyb3dzLWlmLWRlZmluZW93
bnByb3BlcnR5LWZhaWxzLTIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3dpbmRvdy1vcGVu
ZXItc2V0dGVyLXRocm93cy1pZi1kZWZpbmVvd25wcm9wZXJ0eS1mYWlscy0yLmh0bWwKaW5kZXgg
NjZhYzI5NzkyOWYwMTFlMjhhZDg4NzM0MzU4OTNmMDYzYTY4ZmNiNS4uOTQ2Y2YzYTMyYWYyYTIw
YzRlNTViMTg5MTk5MGYwMjhmZjQyNzRiYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9k
b20vd2luZG93LW9wZW5lci1zZXR0ZXItdGhyb3dzLWlmLWRlZmluZW93bnByb3BlcnR5LWZhaWxz
LTIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS93aW5kb3ctb3BlbmVyLXNldHRlci10
aHJvd3MtaWYtZGVmaW5lb3ducHJvcGVydHktZmFpbHMtMi5odG1sCkBAIC0xMSw3ICsxMSw3IEBA
CiB0ZXN0KCgpID0+IHsKICAgICBjb25zdCB7IHNldCB9ID0gT2JqZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvcih3aW5kb3csICJvcGVuZXIiKTsKICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHko
d2luZG93LCAib3BlbmVyIiwgeyB2YWx1ZTogMSwgd3JpdGFibGU6IGZhbHNlLCBjb25maWd1cmFi
bGU6IGZhbHNlIH0pOwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvciwgKCkgPT4geyBz
ZXQuY2FsbCh3aW5kb3csIDIpOyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwg
KCkgPT4geyBzZXQuY2FsbCh3aW5kb3csIDIpOyB9KTsKIAogICAgIGNvbnN0IGRlc2MgPSBPYmpl
Y3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHdpbmRvdywgIm9wZW5lciIpOwogICAgIGFzc2Vy
dF9lcXVhbHMoZGVzYy52YWx1ZSwgMSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy9jbGlwYm9hcmQtZXZlbnQtY29uc3RydWN0b3IuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL2NsaXBib2FyZC1ldmVudC1jb25zdHJ1Y3Rvci5odG1sCmluZGV4IDc3NDkzNjE2YTcz
OThmNzZmMzA4ZDQ5OTQ1NTA3YWU2NDE1OWYyZjguLmExM2QwM2Q2MmJkZmUyMzE1NWZmODEyMGU0
MjZmN2Y4ODcxNDBlNWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2NsaXBi
b2FyZC1ldmVudC1jb25zdHJ1Y3Rvci5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L2NsaXBib2FyZC1ldmVudC1jb25zdHJ1Y3Rvci5odG1sCkBAIC04LDcgKzgsNyBAQAogPGJvZHk+
CiA8c2NyaXB0PgogdGVzdChmdW5jdGlvbigpIHsKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBl
RXJyb3IoKSwgZnVuY3Rpb24oKSB7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsIGZ1
bmN0aW9uKCkgewogICAgICAgICBuZXcgQ2xpcGJvYXJkRXZlbnQoKTsKICAgICB9KTsKIH0sICJG
aXJzdCBwYXJhbWV0ZXIgaXMgbWFuZGF0b3J5Iik7CkBAIC02NCw3ICs2NCw3IEBAIHRlc3QoZnVu
Y3Rpb24oKSB7CiB9LCAiYnViYmxlcyAvIGNhbmNlbGFibGUgLyBjb21wb3NlZCBtZW1iZXJzIik7
CiAKIHRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCks
IGZ1bmN0aW9uKCkgeworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCBmdW5jdGlvbigp
IHsKICAgICAgICAgbmV3IENsaXBib2FyZEV2ZW50KCJmb28iLCB7Y2xpcGJvYXJkRGF0YTogZG9j
dW1lbnR9KTsKICAgICB9KTsKIH0sICJQYXNzaW5nIGEgYmFkIHR5cGUgZm9yIGNsaXBib2FyZERh
dGEgbWVtYmVyIHNob3VsZCB0aHJvdyIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9m
aWxlcy93b3JrZXJzL3Jlc291cmNlcy93b3JrZXItZmlsZS1yZWFkZXItc3luYy1iYWQtcGFyYW1l
dGVyLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy93b3JrZXJzL3Jlc291cmNlcy93b3JrZXIt
ZmlsZS1yZWFkZXItc3luYy1iYWQtcGFyYW1ldGVyLmpzCmluZGV4IGM5NWFmY2QwZmU1ZTBkYWFi
ZTg1N2Y5NThhNmZlZWQ4NTJmYjUwYjYuLjkxMzQ1NWQ2NmEyZWNlOTg5NmJiOTc5MDZjYjRjNTJi
MTEyODI1NTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvd29ya2Vycy9yZXNv
dXJjZXMvd29ya2VyLWZpbGUtcmVhZGVyLXN5bmMtYmFkLXBhcmFtZXRlci5qcworKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzL3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1maWxlLXJlYWRlci1z
eW5jLWJhZC1wYXJhbWV0ZXIuanMKQEAgLTIsMTggKzIsMTggQEAgaWYgKHNlbGYuaW1wb3J0U2Ny
aXB0cykKICAgc2VsZi5pbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi8uLi9yZXNvdXJjZXMvdGVzdGhh
cm5lc3MuanMnKTsKIAogdGVzdChmdW5jdGlvbigpIHsKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBU
eXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7IG5ldyBGaWxlUmVhZGVyU3luYygpLnJlYWRBc0JpbmFy
eVN0cmluZyhudWxsKTsgfSk7Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1
bmN0aW9uKCkgeyBuZXcgRmlsZVJlYWRlclN5bmMoKS5yZWFkQXNBcnJheUJ1ZmZlcihudWxsKTsg
fSk7Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgeyBuZXcg
RmlsZVJlYWRlclN5bmMoKS5yZWFkQXNUZXh0KG51bGwpOyB9KTsKLSAgICBhc3NlcnRfdGhyb3dz
KG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7IG5ldyBGaWxlUmVhZGVyU3luYygpLnJlYWRB
c0RhdGFVUkwobnVsbCk7IH0pOworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCBmdW5j
dGlvbigpIHsgbmV3IEZpbGVSZWFkZXJTeW5jKCkucmVhZEFzQmluYXJ5U3RyaW5nKG51bGwpOyB9
KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7IG5ldyBGaWxl
UmVhZGVyU3luYygpLnJlYWRBc0FycmF5QnVmZmVyKG51bGwpOyB9KTsKKyAgICBhc3NlcnRfdGhy
b3dzX2pzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7IG5ldyBGaWxlUmVhZGVyU3luYygpLnJlYWRB
c1RleHQobnVsbCk7IH0pOworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCBmdW5jdGlv
bigpIHsgbmV3IEZpbGVSZWFkZXJTeW5jKCkucmVhZEFzRGF0YVVSTChudWxsKTsgfSk7CiB9LCAi
VHJ5aW5nIHRvIHJlYWQgYSBudWxsIHBhcmFtZXRlciIpOwogCiAKIHRlc3QoZnVuY3Rpb24oKSB7
Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgeyBuZXcgRmls
ZVJlYWRlclN5bmMoKS5yZWFkQXNCaW5hcnlTdHJpbmcodW5kZWZpbmVkKTsgfSk7Ci0gICAgYXNz
ZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgeyBuZXcgRmlsZVJlYWRlclN5
bmMoKS5yZWFkQXNBcnJheUJ1ZmZlcih1bmRlZmluZWQpOyB9KTsKLSAgICBhc3NlcnRfdGhyb3dz
KG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7IG5ldyBGaWxlUmVhZGVyU3luYygpLnJlYWRB
c1RleHQodW5kZWZpbmVkKTsgfSk7Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCks
IGZ1bmN0aW9uKCkgeyBuZXcgRmlsZVJlYWRlclN5bmMoKS5yZWFkQXNEYXRhVVJMKHVuZGVmaW5l
ZCk7IH0pOworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsgbmV3
IEZpbGVSZWFkZXJTeW5jKCkucmVhZEFzQmluYXJ5U3RyaW5nKHVuZGVmaW5lZCk7IH0pOworICAg
IGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsgbmV3IEZpbGVSZWFkZXJT
eW5jKCkucmVhZEFzQXJyYXlCdWZmZXIodW5kZWZpbmVkKTsgfSk7CisgICAgYXNzZXJ0X3Rocm93
c19qcyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeyBuZXcgRmlsZVJlYWRlclN5bmMoKS5yZWFkQXNU
ZXh0KHVuZGVmaW5lZCk7IH0pOworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCBmdW5j
dGlvbigpIHsgbmV3IEZpbGVSZWFkZXJTeW5jKCkucmVhZEFzRGF0YVVSTCh1bmRlZmluZWQpOyB9
KTsKIH0sICJUcnlpbmcgdG8gcmVhZCBhbiB1bmRlZmluZWQgcGFyYW1ldGVyIik7CiAKIGRvbmUo
KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMveGhyLWJsb2ItcmVxdWVzdC5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy94aHItYmxvYi1yZXF1ZXN0Lmh0bWwKaW5kZXgg
YWNmM2E3ZDJiMWE1YTE5ODFkZDg3N2JjMWViOWFiNWJiYWQzMDc3MC4uZjI2YWZkMTIzNzgwN2E1
ZGM3MTg2ZTc1MDMyMDU3ODY1OTNhNmM0YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9m
aWxlcy94aHItYmxvYi1yZXF1ZXN0Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy94
aHItYmxvYi1yZXF1ZXN0Lmh0bWwKQEAgLTUwLDcgKzUwLDcgQEAgZnVuY3Rpb24gdGVzdF9ub3RB
bGxvd2VkX21ldGhvZF9zeW5jKG1ldGhvZCkgewogICAgICAgICAgICAgYXNzZXJ0X3VucmVhY2hl
ZCgnRXhjZXB0aW9uIHNob3VsZCBiZSB0aHJvd24gZm9yIHN5bmNocm9ub3VzICcgKyBtZXRob2Qg
KyAnIFhIUicpOwogICAgICAgICB9CiAKLSAgICAgICAgYXNzZXJ0X3Rocm93cygnTmV0d29ya0Vy
cm9yJywgKCkgPT4geyByZXEuc2VuZCgpOyB9LCAnRXhjZXB0aW9uIHRocm93biBmb3Igc3luY2hy
b25vdXMgJyArIG1ldGhvZCArICcgWEhSJyk7CisgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCdO
ZXR3b3JrRXJyb3InLCAoKSA9PiB7IHJlcS5zZW5kKCk7IH0sICdFeGNlcHRpb24gdGhyb3duIGZv
ciBzeW5jaHJvbm91cyAnICsgbWV0aG9kICsgJyBYSFInKTsKIAogICAgICAgICBhc3NlcnRfZmFs
c2Uob25FcnJvciwgJ0Vycm9yIGNhbGxiYWNrIGlzIGNhbGxlZCcpOwogICAgIH0sICdTeW5jaHJv
bm91cyBYSFIgcmVxdWVzdCBzaG91bGQgdGhyb3cgZXhjZXB0aW9uIHdpdGggJyArIG1ldGhvZCk7
CkBAIC05Nyw3ICs5Nyw3IEBAIGZ1bmN0aW9uIHRlc3RfbWV0aG9kX2FzeW5jKG1ldGhvZCwgc2hv
dWxkTG9hZCkgewogCiBmdW5jdGlvbiB0ZXN0X2ZvcmJpZGRlbl9tZXRob2QocmVxdWVzdCkgewog
ICAgIHRlc3QoKCkgPT4gewotICAgICAgICBhc3NlcnRfdGhyb3dzKCdTZWN1cml0eUVycm9yJywg
KCkgPT4geworICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgnU2VjdXJpdHlFcnJvcicsICgpID0+
IHsKICAgICAgICAgICAgIHZhciByZXEgPSBuZXcgWE1MSHR0cFJlcXVlc3Q7CiAgICAgICAgICAg
ICByZXEub3BlbihyZXF1ZXN0LCB1cmwpOwogICAgICAgICB9KQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9tZWRpYWNhcHR1cmVmcm9tZWxlbWVudC9DYW52YXNDYXB0dXJlTWVkaWFTdHJl
YW0tZXhjZXB0aW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYWNhcHR1cmVmcm9tZWxl
bWVudC9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW0tZXhjZXB0aW9ucy5odG1sCmluZGV4IDY5Zjhk
ZmVkY2VhMWUxYzI3Nzc0OGUxOGQ5ZDIyMmUxZmEzM2QyNDcuLjE5ZGRiMzAwOTgzMDQ5N2NjNWFh
MDQ3NmUyZDgxYmIwMzk0MTAzYWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFj
YXB0dXJlZnJvbWVsZW1lbnQvQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtLWV4Y2VwdGlvbnMuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhY2FwdHVyZWZyb21lbGVtZW50L0NhbnZhc0Nh
cHR1cmVNZWRpYVN0cmVhbS1leGNlcHRpb25zLmh0bWwKQEAgLTYsNyArNiw3IEBACiAKIHRlc3Qo
ZnVuY3Rpb24oKSB7CiAgIHZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52
YXMnKTsKLSAgYXNzZXJ0X3Rocm93cygiTm90U3VwcG9ydGVkRXJyb3IiLCBmdW5jdGlvbigpIHsg
Y2FudmFzLmNhcHR1cmVTdHJlYW0oLTAuNSkgfSwKKyAgYXNzZXJ0X3Rocm93c19kb20oIk5vdFN1
cHBvcnRlZEVycm9yIiwgZnVuY3Rpb24oKSB7IGNhbnZhcy5jYXB0dXJlU3RyZWFtKC0wLjUpIH0s
CiAgICAgICAgICAgICAgICAgImNhbm5vdCBoYXZlIG5lZ2F0aXZlIGZyYW1lIHJhdGUiKTsKIH0s
ICdjaGVjayBjYXB0dXJlU3RyZWFtKCkgdGhyb3dzIEV4Y2VwdGlvbiB3aXRoIGludmFsaWQgZnJh
bWUgcmF0ZScpOwogCkBAIC0yMiw3ICsyMiw3IEBAIGZ1bmN0aW9uIG1ha2VBc3luY1Rlc3QoKSB7
CiAgICAgICBjdHguZmlsbFN0eWxlID0gcGF0dGVybjsKICAgICAgIGN0eC5maWxsUmVjdCgwLCAw
LCAxMDAsIDEwMCk7CiAKLSAgICAgIGFzc2VydF90aHJvd3MoIlNlY3VyaXR5RXJyb3IiLCBmdW5j
dGlvbigpIHsgY2FudmFzLmNhcHR1cmVTdHJlYW0oKSB9LAorICAgICAgYXNzZXJ0X3Rocm93c19k
b20oIlNlY3VyaXR5RXJyb3IiLCBmdW5jdGlvbigpIHsgY2FudmFzLmNhcHR1cmVTdHJlYW0oKSB9
LAogICAgICAgICAgICAgICAgICJjYW5ub3QgaGF2ZSBjcm9zcyBvcmlnaW4iKTsKICAgICAgIHRl
c3QuZG9uZSgpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXNl
c3Npb24vbWV0YWRhdGEvYXJ0d29ya2Rvd25sb2FkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L21l
ZGlhc2Vzc2lvbi9tZXRhZGF0YS9hcnR3b3JrZG93bmxvYWQuaHRtbAppbmRleCBmNmIxMTUyYmRi
ZTgxMzExZTIwNGU5YWM5NjE3NjY5MmRiODJlOWJiLi44NDE2MDU5OTI4MWI0NmYzMTc0MTgyY2Nl
NTYxYmM5Y2NiYmFjMGNmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc2Vzc2lv
bi9tZXRhZGF0YS9hcnR3b3JrZG93bmxvYWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21l
ZGlhc2Vzc2lvbi9tZXRhZGF0YS9hcnR3b3JrZG93bmxvYWQuaHRtbApAQCAtMjAsMTQgKzIwLDE0
IEBAIHByb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4gewogICAgIGlmICghd2luZG93LmludGVy
bmFscykKICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0cygiVGVzdCBuZWVkcyBpbnRlcm5h
bHMiKTsKIAotICAgIHJldHVybiBwcm9taXNlX3JlamVjdHModGVzdCwgJ0ludmFsaWRBY2Nlc3NF
cnJvcicsIGludGVybmFscy5sb2FkQXJ0d29ya0ltYWdlKCJiYWRfaW1hZ2UuanBnIikpOworICAg
IHJldHVybiBwcm9taXNlX3JlamVjdHNfZG9tKHRlc3QsICdJbnZhbGlkQWNjZXNzRXJyb3InLCBp
bnRlcm5hbHMubG9hZEFydHdvcmtJbWFnZSgiYmFkX2ltYWdlLmpwZyIpKTsKIH0sICJlbnN1cmUg
bG9hZGluZyBpbnZhbGlkIGFydHdvcmsgY2F1c2VzIGEgZmFpbHVyZSIpOwogCiBwcm9taXNlX3Rl
c3QoYXN5bmMgKHRlc3QpID0+IHsKICAgICBpZiAoIXdpbmRvdy5pbnRlcm5hbHMpCiAgICAgICAg
IHJldHVybiBQcm9taXNlLnJlamVjdHMoIlRlc3QgbmVlZHMgaW50ZXJuYWxzIik7CiAKLSAgICBy
ZXR1cm4gcHJvbWlzZV9yZWplY3RzKHRlc3QsICdJbnZhbGlkQWNjZXNzRXJyb3InLCBpbnRlcm5h
bHMubG9hZEFydHdvcmtJbWFnZSgiIikpOworICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZG9t
KHRlc3QsICdJbnZhbGlkQWNjZXNzRXJyb3InLCBpbnRlcm5hbHMubG9hZEFydHdvcmtJbWFnZSgi
IikpOwogfSwgImVuc3VyZSBsb2FkaW5nIGEgbm9uLWltYWdlIGNhdXNlcyBhIGZhaWx1cmUiKTsK
IAogICAgICAgICA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFz
dHJlYW0vc2NyZWVuY2FwdHVyZS11c2VyLWdlc3R1cmUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
bWVkaWFzdHJlYW0vc2NyZWVuY2FwdHVyZS11c2VyLWdlc3R1cmUuaHRtbAppbmRleCA5NTgyNjk0
Nzk5MDUxOGVlZTYxNTEzMTQ5MzNkYWI0M2JmNDQ1YTAzLi42N2FiMGExYzE2MjA0NWFjOTc0NWNj
MGFhYzZmMGFlNzZlZjM5NjRiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3Ry
ZWFtL3NjcmVlbmNhcHR1cmUtdXNlci1nZXN0dXJlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9tZWRpYXN0cmVhbS9zY3JlZW5jYXB0dXJlLXVzZXItZ2VzdHVyZS5odG1sCkBAIC0yNSw2ICsy
NSw2IEBAIHByb21pc2VfdGVzdCgoKSA9PiB7CiAKIAogcHJvbWlzZV90ZXN0KCh0ZXN0KSA9PiB7
Ci0gICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0ZXN0LCAiSW52YWxpZEFjY2Vzc0Vycm9yIiwg
bmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXREaXNwbGF5TWVkaWEoe3ZpZGVvIDogdHJ1ZX0pKTsK
KyAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2RvbSh0ZXN0LCAiSW52YWxpZEFjY2Vzc0Vycm9y
IiwgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXREaXNwbGF5TWVkaWEoe3ZpZGVvIDogdHJ1ZX0p
KTsKIH0sICJEZW55IGdldERpc3BsYXlNZWRpYSBjYWxsIGlmIG5vIHVzZXIgZ2VzdHVyZSIpOwog
PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mZXRjaC9mZXRjaC11cmwtc2VyaWFs
aXphdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvZmV0Y2gvZmV0Y2gtdXJsLXNlcmlhbGl6YXRpb24u
aHRtbAppbmRleCBkZTc5MzY0MTBlZjE0OTczMmE2OGVhZWM1MWIwNTQ3NTkwMzg4Yzg5Li42NDIy
YmQyMDg0NzYxMjkxNDFlZDIzYzhiMjkyN2QxNmY1NmViYTFmIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9mZXRjaC9mZXRjaC11cmwtc2VyaWFsaXphdGlvbi5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2ZldGNoL2ZldGNoLXVybC1zZXJpYWxpemF0aW9uLmh0bWwKQEAgLTE3LDcgKzE3LDcgQEAgZnVu
Y3Rpb24gZXhlY3V0ZVRlc3RzKHVybHMpCiAgICAgICAgICAgICB0ZXN0KGZ1bmN0aW9uKCkgewog
ICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJiYXNlIikuc2V0QXR0cmli
dXRlKCJocmVmIiwgdXJsLmJhc2UpOwogICAgICAgICAgICAgICAgIGlmICh1cmwudXNlcm5hbWUg
fHwgdXJsLnBhc3N3b3JkIHx8IHVybC5mYWlsdXJlKQotICAgICAgICAgICAgICAgICAgICBhc3Nl
cnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7ICBuZXcgUmVxdWVzdCh1cmwu
aW5wdXQpOyB9KTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJy
b3IsIGZ1bmN0aW9uKCkgeyAgbmV3IFJlcXVlc3QodXJsLmlucHV0KTsgfSk7CiAgICAgICAgICAg
ICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIHZhciByZXF1ZXN0ID0gbmV3IFJlcXVl
c3QodXJsLmlucHV0KTsKICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXF1ZXN0
LnVybCwgdXJsLmhyZWYpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9mZXRj
aC9mZXRjaGluZy1zYW1lLXJlc291cmNlLXdpdGgtZGlmZmVyZW50LW9wdGlvbnMuaHRtbCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvZmV0Y2gvZmV0Y2hpbmctc2FtZS1yZXNvdXJjZS13aXRoLWRp
ZmZlcmVudC1vcHRpb25zLmh0bWwKaW5kZXggY2NmOTUzZTFjMjNhMjllYmE0MWYwMTZjMmZkNGEw
MDgxNDM1M2ZhNS4uM2I0ZWYyZGFjNzVjZjM1ODkwMjhmYmU3NGYxNzFmZDk1M2NiMDRkYyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9mZXRjaC9mZXRjaGluZy1zYW1lLXJlc291
cmNlLXdpdGgtZGlmZmVyZW50LW9wdGlvbnMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2ZldGNoL2ZldGNoaW5nLXNhbWUtcmVzb3VyY2Utd2l0aC1kaWZmZXJlbnQtb3B0aW9ucy5o
dG1sCkBAIC0yMSw4ICsyMSw4IEBAIHByb21pc2VfdGVzdChmdW5jdGlvbih0KSB7CiAgICAgICAg
ICAgICAgICAgICAgIGFzc2VydF90cnVlKGFycmF5QnVmZmVyLmJ5dGVMZW5ndGggPiAwKTsKICAg
ICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIH0pLAotICAgICAgICAgICAgcHJvbWlzZV9y
ZWplY3RzKHQsIG5ldyBUeXBlRXJyb3IoKSwgZmV0Y2godXJsMSwgeyJtb2RlIjogImNvcnMiLCAi
Y3JlZGVudGlhbHMiOiAiaW5jbHVkZSJ9KSksCi0gICAgICAgICAgICBwcm9taXNlX3JlamVjdHMo
dCwgbmV3IFR5cGVFcnJvcigpLCBmZXRjaCh1cmwyLCB7Im1vZGUiOiAiY29ycyIsICJjcmVkZW50
aWFscyI6ICJpbmNsdWRlIn0pKSwKKyAgICAgICAgICAgIHByb21pc2VfcmVqZWN0c19qcyh0LCBU
eXBlRXJyb3IsIGZldGNoKHVybDEsIHsibW9kZSI6ICJjb3JzIiwgImNyZWRlbnRpYWxzIjogImlu
Y2x1ZGUifSkpLAorICAgICAgICAgICAgcHJvbWlzZV9yZWplY3RzX2pzKHQsIFR5cGVFcnJvciwg
ZmV0Y2godXJsMiwgeyJtb2RlIjogImNvcnMiLCAiY3JlZGVudGlhbHMiOiAiaW5jbHVkZSJ9KSks
CiAgICAgICAgICAgICBmZXRjaCh1cmwyLCB7Im1vZGUiOiAiY29ycyJ9KS50aGVuKChyZXNwb25z
ZSkgPT4gewogICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocmVzcG9uc2UudHlwZSwgImNv
cnMiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UuYXJyYXlCdWZmZXIoKS50aGVu
KChhcnJheUJ1ZmZlcikgPT4gewpAQCAtNDgsOSArNDgsOSBAQCBwcm9taXNlX3Rlc3QoZnVuY3Rp
b24odCkgewogICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXNwb25zZS50eXBlLCAib3BhcXVl
Iik7CiAgICAgICAgIH0pOwogICAgIH0pLnRoZW4oKCkgPT4gewotICAgICAgICByZXR1cm4gcHJv
bWlzZV9yZWplY3RzKHQsIG5ldyBUeXBlRXJyb3IoKSwgZmV0Y2godXJsMywgeyJtb2RlIjogImNv
cnMiLCAiY3JlZGVudGlhbHMiOiAiaW5jbHVkZSJ9KSk7CisgICAgICAgIHJldHVybiBwcm9taXNl
X3JlamVjdHNfanModCwgVHlwZUVycm9yLCBmZXRjaCh1cmwzLCB7Im1vZGUiOiAiY29ycyIsICJj
cmVkZW50aWFscyI6ICJpbmNsdWRlIn0pKTsKICAgICB9KS50aGVuKCgpID0+IHsKLSAgICAgICAg
cmV0dXJuIHByb21pc2VfcmVqZWN0cyh0LCBuZXcgVHlwZUVycm9yKCksIGZldGNoKHVybDQsIHsi
bW9kZSI6ICJjb3JzIiwgImNyZWRlbnRpYWxzIjogImluY2x1ZGUifSkpOworICAgICAgICByZXR1
cm4gcHJvbWlzZV9yZWplY3RzX2pzKHQsIFR5cGVFcnJvciwgZmV0Y2godXJsNCwgeyJtb2RlIjog
ImNvcnMiLCAiY3JlZGVudGlhbHMiOiAiaW5jbHVkZSJ9KSk7CiAgICAgfSkudGhlbigoKSA9PiB7
CiAgICAgICAgIHJldHVybiBmZXRjaCh1cmw0LCB7Im1vZGUiOiAibm8tY29ycyJ9KS50aGVuKChy
ZXNwb25zZSkgPT4gewogICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXNwb25zZS50eXBlLCAi
b3BhcXVlIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ZldGNoL3JlZGly
ZWN0bW9kZS1hbmQtcHJlbG9hZC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9mZXRjaC9y
ZWRpcmVjdG1vZGUtYW5kLXByZWxvYWQuaHRtbAppbmRleCBjYmI2NWZmNGYxZmJkY2Y2MmE3Y2Ux
ZjNjMzUxZjNjZjc2ZDIyMzQ3Li4zMjRiZWE1NTZkZjNkMjVmM2ZhOWM4NzZkNzIwMTExOWE3MzE5
ODJkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ZldGNoL3JlZGlyZWN0bW9k
ZS1hbmQtcHJlbG9hZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvZmV0Y2gvcmVk
aXJlY3Rtb2RlLWFuZC1wcmVsb2FkLmh0bWwKQEAgLTI2LDcgKzI2LDcgQEAgZnVuY3Rpb24gc3Rh
cnRUZXN0cygpCiAgICAgfSwgIkZldGNoIHNob3VsZCBjaGVjayBmb3IgcmVkaXJlY3Rpb25zIGV2
ZW4gaWYgcmVzb3VyY2UgaXMgcHJlbG9hZGVkIChkaWZmZXJlbnQgZmV0Y2ggbW9kZSwgZGlmZmVy
ZW50IHJlZGlyZWN0IG1vZGUpIik7CiAKICAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odGVzdCkg
ewotICAgICAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHRlc3QsIG5ldyBUeXBlRXJyb3IoKSwg
ZmV0Y2gocHJlbG9hZFVybCwge3JlZGlyZWN0OiAiZXJyb3IiLCBtb2RlOiAiY29ycyIsIGNyZWRl
bnRpYWxzOiAiaW5jbHVkZSJ9KSk7CisgICAgICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNfanMo
dGVzdCwgVHlwZUVycm9yLCBmZXRjaChwcmVsb2FkVXJsLCB7cmVkaXJlY3Q6ICJlcnJvciIsIG1v
ZGU6ICJjb3JzIiwgY3JlZGVudGlhbHM6ICJpbmNsdWRlIn0pKTsKICAgICB9LCAiRmV0Y2ggc2hv
dWxkIGNoZWNrIGZvciByZWRpcmVjdGlvbnMgZXZlbiBpZiByZXNvdXJjZSBpcyBwcmVsb2FkZWQg
KGRpZmZlcmVudCBmZXRjaCBtb2RlLCBkaWZmZXJlbnQgcmVkaXJlY3QgbW9kZSkgMiIpOwogfQog
ICAgIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0
aW9uL3B1c2hzdGF0ZS1hdC11bmlxdWUtb3JpZ2luLWRlbmllZC5weSBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvbmF2aWdhdGlvbi9wdXNoc3RhdGUtYXQtdW5pcXVlLW9yaWdpbi1kZW5pZWQucHkK
aW5kZXggNDc1ZWYyMzAyMzk5ZTc2MTY4NzY4YmIxZGIwMjFhNzA3YzNkODllYy4uMjgyMjUxNTQ3
ZTMxNzZmMmI0NDNlYTI5Y2U1NDhmYTY1MWY2MjExMCAxMDA3NTUKLS0tIGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3B1c2hzdGF0ZS1hdC11bmlxdWUtb3JpZ2luLWRlbmllZC5w
eQorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcHVzaHN0YXRlLWF0LXVu
aXF1ZS1vcmlnaW4tZGVuaWVkLnB5CkBAIC0xMCw3ICsxMCw3IEBAIHN5cy5zdGRvdXQud3JpdGUo
CiAgICAgJzxzY3JpcHQ+XG4nCiAgICAgJ3ZhciBvcmlnaW5VUkwgPSBkb2N1bWVudC5VUkw7XG4n
CiAgICAgJ3Rlc3QoZnVuY3Rpb24gKCkge1xuJwotICAgICcgICAgYXNzZXJ0X3Rocm93cyhcJ1Nl
Y3VyaXR5RXJyb3JcJywgZnVuY3Rpb24gKCkge1xuJworICAgICcgICAgYXNzZXJ0X3Rocm93c19k
b20oXCdTZWN1cml0eUVycm9yXCcsIGZ1bmN0aW9uICgpIHtcbicKICAgICAnICAgICAgICBoaXN0
b3J5LnB1c2hTdGF0ZShudWxsLCBudWxsLCBvcmlnaW5VUkwgKyAiL3BhdGgiKTtcbicKICAgICAn
ICAgIH0pO1xuJwogICAgICd9LCBcJ3B1c2hTdGF0ZSB0byBhIG5ldyBwYXRoIGluIHVuaXF1ZSBv
cmlnaW4gc2hvdWxkIGZhaWwgd2l0aCBTZWN1cml0eUVycm9yXCcpO1xuJwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbi5odG1sIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbi5odG1sCmlu
ZGV4IDM5MTg1OTAwMDcxMTM5NWVhZGUxNTFhNzQ4YmEyYmRiYjgyNzA4YmUuLjkzYTg3Y2I0OTBj
OGYzZTIwYmNlY2Y5ZjRhMzMxNGE5YmQ3M2E4MWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvbm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb24uaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL25vdGlmaWNhdGlvbnMvbm90aWZpY2F0aW9uLmh0bWwKQEAgLTExLDcgKzEx
LDcgQEAKIDxzY3JpcHQ+CiAKIHRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgYXNzZXJ0X3Rocm93cyhu
ZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgeyBuZXcgTm90aWZpY2F0aW9uKCk7IH0pOworICAg
IGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsgbmV3IE5vdGlmaWNhdGlv
bigpOyB9KTsKIH0sICJUaGUgTm90aWZpY2F0aW9uIGNvbnN0cnVjdG9yIHJlcXVpcmVzIGF0IGxl
YXN0IG9uZSBhcmd1bWVudC4iKTsKIAogdGVzdChmdW5jdGlvbigpIHsKQEAgLTUzLDcgKzUzLDcg
QEAgdGVzdChmdW5jdGlvbigpIHsKICAgICBsZXQgbm90aWZpY2F0aW9uMyA9IG5ldyBOb3RpZmlj
YXRpb24oInRlc3QgdGl0bGUiLCB7IGRpcjogInJ0bCIgfSk7CiAgICAgYXNzZXJ0X2VxdWFscyhu
b3RpZmljYXRpb24zLmRpciwgInJ0bCIpOwogCi0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVy
cm9yKCksIGZ1bmN0aW9uKCkgeyBuZXcgTm90aWZpY2F0aW9uKCJ0ZXN0IHRpdGxlIiwgeyBkaXI6
ICJmb28iIH0pIH0pOworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCBmdW5jdGlvbigp
IHsgbmV3IE5vdGlmaWNhdGlvbigidGVzdCB0aXRsZSIsIHsgZGlyOiAiZm9vIiB9KSB9KTsKIH0s
ICJUaGUgTm90aWZpY2F0aW9uT3B0aW9ucyBkaWN0aW9uYXJ5IG9ubHkgYWNjZXB0cyB2YWxpZCBO
b3RpZmljYXRpb25EaXJlY3Rpb24gdmFsdWVzLiIpOwogCiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1hZGRyZXNzLWF0
dHJpYnV0ZXMtYW5kLXRvSlNPTi1tZXRob2QuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1hZGRyZXNzLWF0dHJpYnV0ZXMtYW5kLXRvSlNP
Ti1tZXRob2QuaHR0cHMuaHRtbAppbmRleCBjNjAzOWI1MzBjZWY3MmZlOGIxZWNhZDk1ZWEzZTJh
NzRmYjMzNWJkLi5hNDZmOWIyMGM4YTYzNzY5MjE1OTVlNWE1M2QzYzUyMGNjMjQ4OTY1IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtYWRk
cmVzcy1hdHRyaWJ1dGVzLWFuZC10b0pTT04tbWV0aG9kLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LWFkZHJlc3MtYXR0cmlidXRl
cy1hbmQtdG9KU09OLW1ldGhvZC5odHRwcy5odG1sCkBAIC0zMSw4ICszMSw4IEBAIGZ1bmN0aW9u
IHJ1blRlc3QoYnV0dG9uLCBleHBlY3RlZCA9IHt9KSB7CiAgICAgICBhZGRyLmFkZHJlc3NMaW5l
IGluc3RhbmNlb2YgQXJyYXksCiAgICAgICAiRXhwZWN0ZWQgYWRkcmVzc0xpbmUgdG8gYmUgYW4g
YXJyYXkiCiAgICAgKTsKLSAgICBhc3NlcnRfdGhyb3dzKAotICAgICAgbmV3IFR5cGVFcnJvcigp
LAorICAgIGFzc2VydF90aHJvd3NfanMoCisgICAgICBUeXBlRXJyb3IsCiAgICAgICAoKSA9PiB7
CiAgICAgICAgIGFkZHIuYWRkcmVzc0xpbmUucHVzaCgidGhpcyBtdXN0IHRocm93Iik7CiAgICAg
ICB9LApAQCAtNTksOCArNTksOCBAQCBmdW5jdGlvbiBydW5UZXN0KGJ1dHRvbiwgZXhwZWN0ZWQg
PSB7fSkgewogICAgIH0KICAgICBhc3NlcnRfZXF1YWxzKGpzb25BZGRyZXNzRW50cmllcy5sZW5n
dGgsIGV4cGVjdGVkRW50cmllcy5sZW5ndGgpOwogICAgIC8vIENoZWNrIHRoYXQgLnRvSlNPTigp
IGNyZWF0ZWQgYSBmcm96ZW4gYXJyYXkKLSAgICBhc3NlcnRfdGhyb3dzKAotICAgICAgbmV3IFR5
cGVFcnJvcigpLAorICAgIGFzc2VydF90aHJvd3NfanMoCisgICAgICBUeXBlRXJyb3IsCiAgICAg
ICAoKSA9PiB7CiAgICAgICAgIGpzb25BZGRyZXNzLmFkZHJlc3NMaW5lLnB1c2goInRoaXMgbXVz
dCB0aHJvdyIpOwogICAgICAgfSwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
cGF5bWVudHJlcXVlc3QvcGF5bWVudC1pcy1zaG93aW5nLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtaXMtc2hvd2luZy5odHRwcy5odG1s
CmluZGV4IGE4NGI4YTI0ZGI3ZjNkYTZjMjJjYWUwZjI3MjkxNmNjOGZiMGY5M2UuLjZkMzlkYzQ0
ZmQxMGE2OGI2ZjJhNTFiZmJlZTViMWI2ZWY4ODhjNjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1pcy1zaG93aW5nLmh0dHBzLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LWlzLXNo
b3dpbmcuaHR0cHMuaHRtbApAQCAtODEsNyArODEsNyBAQAogICAgICAgICAgIHJldHVybiBbcmVx
dWVzdDIuc2hvdygpXQogICAgICAgICB9CiAgICAgICApOwotICAgICAgYXdhaXQgcHJvbWlzZV9y
ZWplY3RzKAorICAgICAgYXdhaXQgcHJvbWlzZV9yZWplY3RzX2RvbSgKICAgICAgICAgdCwKICAg
ICAgICAgJ0Fib3J0RXJyb3InLAogICAgICAgICBzaG93UHJvbWlzZTIsCkBAIC04OSw3ICs4OSw3
IEBACiAgICAgICApOwogCiAgICAgICBhd2FpdCByZXF1ZXN0MS5hYm9ydCgpOwotICAgICAgYXdh
aXQgcHJvbWlzZV9yZWplY3RzKAorICAgICAgYXdhaXQgcHJvbWlzZV9yZWplY3RzX2RvbSgKICAg
ICAgICAgdCwKICAgICAgICAgJ0Fib3J0RXJyb3InLAogICAgICAgICBzaG93UHJvbWlzZTEsCkBA
IC0xMDAsNyArMTAwLDcgQEAKICAgICAgIC8vIGl0IHdpbGwgYWdhaW4gcmVzdWx0IGluIHByb21p
c2UgcmVqZWN0ZWQgd2l0aCBhbiBJbnZhbGlkU3RhdGVFcnJvci4KICAgICAgIC8vIFNlZTogaHR0
cHM6Ly9naXRodWIuY29tL3czYy9wYXltZW50LXJlcXVlc3QvcHVsbC84MjEKICAgICAgIGNvbnN0
IFtyZWplY3RlZFByb21pc2VdID0gYXdhaXQgYWN0aXZhdGVUaGVuKGFzeW5jICgpID0+IHsgcmV0
dXJuIFtyZXF1ZXN0Mi5zaG93KCldIH0pOwotICAgICAgYXdhaXQgcHJvbWlzZV9yZWplY3RzKAor
ICAgICAgYXdhaXQgcHJvbWlzZV9yZWplY3RzX2RvbSgKICAgICAgICAgdCwKICAgICAgICAgJ0lu
dmFsaWRTdGF0ZUVycm9yJywKICAgICAgICAgcmVqZWN0ZWRQcm9taXNlLApAQCAtMTM3LDcgKzEz
Nyw3IEBACiAgICAgICAgIH0KICAgICAgICk7CiAKLSAgICAgIGF3YWl0IHByb21pc2VfcmVqZWN0
cygKKyAgICAgIGF3YWl0IHByb21pc2VfcmVqZWN0c19kb20oCiAgICAgICAgIHQsCiAgICAgICAg
ICdBYm9ydEVycm9yJywKICAgICAgICAgd2luZG93U2hvd1Byb21pc2UsCkBAIC0xNDYsOSArMTQ2
LDEwIEBACiAKICAgICAgIC8vIENsZWFudXAKICAgICAgIGF3YWl0IGlmcmFtZVJlcXVlc3QuYWJv
cnQoKTsKLSAgICAgIGF3YWl0IHByb21pc2VfcmVqZWN0cygKKyAgICAgIGF3YWl0IHByb21pc2Vf
cmVqZWN0c19kb20oCiAgICAgICAgIHQsCiAgICAgICAgICdBYm9ydEVycm9yJywKKyAgICAgICAg
aWZyYW1lV2luZG93LkRPTUV4Y2VwdGlvbiwKICAgICAgICAgaWZyYW1lU2hvd1Byb21pc2UsCiAg
ICAgICAgICdhYm9ydCgpIHdhcyBjYWxsZWQnKTsKICAgICAgIGlmcmFtZS5yZW1vdmUoKTsKQEAg
LTE3NywxNiArMTc4LDE3IEBACiAgICAgICAgIH0KICAgICAgICk7CiAKLSAgICAgIGF3YWl0IHBy
b21pc2VfcmVqZWN0cygKKyAgICAgIGF3YWl0IHByb21pc2VfcmVqZWN0c19kb20oCiAgICAgICAg
IHQsCiAgICAgICAgICdBYm9ydEVycm9yJywKKyAgICAgICAgaWZyYW1lV2luZG93LkRPTUV4Y2Vw
dGlvbiwKICAgICAgICAgaWZyYW1lU2hvd1Byb21pc2UsCiAgICAgICAgICdUaGUgdG9wIHdpbmRv
dyBpcyBhbHJlYWR5IHNob3dpbmcgYSBwYXltZW50IHJlcXVlc3QuJywKICAgICAgICk7CiAKICAg
ICAgIC8vIENsZWFudXAKICAgICAgIGF3YWl0IHdpbmRvd1JlcXVlc3QuYWJvcnQoKTsKLSAgICAg
IGF3YWl0IHByb21pc2VfcmVqZWN0cygKKyAgICAgIGF3YWl0IHByb21pc2VfcmVqZWN0c19kb20o
CiAgICAgICAgIHQsCiAgICAgICAgICdBYm9ydEVycm9yJywKICAgICAgICAgd2luZG93U2hvd1By
b21pc2UsCkBAIC0yMTcsMTUgKzIxOSwxNiBAQAogICAgICAgICB9CiAgICAgICApOwogCi0gICAg
ICBhd2FpdCBwcm9taXNlX3JlamVjdHMoCisgICAgICBhd2FpdCBwcm9taXNlX3JlamVjdHNfZG9t
KAogICAgICAgICB0LAogICAgICAgICAnQWJvcnRFcnJvcicsCisgICAgICAgIGlmcmFtZVdpbmRv
dy5ET01FeGNlcHRpb24sCiAgICAgICAgIGlmcmFtZVNob3dQcm9taXNlLAogICAgICAgICAnRXhw
ZWN0ZWQgaWZyYW1lU2hvd1Byb21pc2UgdG8gcmVqZWN0LCByZXF1ZXN0IGlzIGFscmVhZHkgc2hv
d2luZy4nLAogICAgICAgKTsKIAogICAgICAgYXdhaXQgd2luZG93UmVxdWVzdC5hYm9ydCgpOwot
ICAgICAgYXdhaXQgcHJvbWlzZV9yZWplY3RzKAorICAgICAgYXdhaXQgcHJvbWlzZV9yZWplY3Rz
X2RvbSgKICAgICAgICAgdCwKICAgICAgICAgJ0Fib3J0RXJyb3InLAogICAgICAgICB3aW5kb3dT
aG93UHJvbWlzZSwKQEAgLTI1Niw3ICsyNTksNyBAQAogICAgICAgKTsKIAogICAgICAgLy8gd2lu
ZG93U2hvd1Byb21pc2UgYW5kIGlmcmFtZVJlcXVlc3Qgd2lsbCBib3RoIHJlamVjdAotICAgICAg
YXdhaXQgcHJvbWlzZV9yZWplY3RzKAorICAgICAgYXdhaXQgcHJvbWlzZV9yZWplY3RzX2RvbSgK
ICAgICAgICAgdCwKICAgICAgICAgJ0Fib3J0RXJyb3InLAogICAgICAgICB3aW5kb3dTaG93UHJv
bWlzZSwKQEAgLTI2NCw5ICsyNjcsMTAgQEAKICAgICAgICk7CiAKICAgICAgIGF3YWl0IGlmcmFt
ZVJlcXVlc3QuYWJvcnQoKTsKLSAgICAgIGF3YWl0IHByb21pc2VfcmVqZWN0cygKKyAgICAgIGF3
YWl0IHByb21pc2VfcmVqZWN0c19kb20oCiAgICAgICAgIHQsCiAgICAgICAgICdBYm9ydEVycm9y
JywKKyAgICAgICAgaWZyYW1lV2luZG93LkRPTUV4Y2VwdGlvbiwKICAgICAgICAgaWZyYW1lU2hv
d1Byb21pc2UsCiAgICAgICAgICdhYm9ydCgpIHdhcyBjYWxsZWQnKTsKICAgICAgIGlmcmFtZS5y
ZW1vdmUoKTsKQEAgLTI4NCwxOSArMjg4LDE0IEBACiAgICAgICAvLyBhbmQgdGhlIHJlcXVlc3Qg
aXMgc2hvd2luZyBib29sZWFuIHRvIGJlY29tZSBmYWxzZS4KICAgICAgIGlmcmFtZS5zcmMgPSAn
cmVzb3VyY2VzL2JsYW5rLmh0bWw/YWJjPTEyMyc7CiAgICAgICBhd2FpdCBuZXcgUHJvbWlzZShy
ZXNvbHZlID0+IChpZnJhbWUub25sb2FkID0gcmVzb2x2ZSkpOwotICAgICAgYXdhaXQgcHJvbWlz
ZV9yZWplY3RzKAotICAgICAgICB0LAotICAgICAgICAnQWJvcnRFcnJvcicsCi0gICAgICAgIGlm
cmFtZVNob3dQcm9taXNlLAotICAgICAgICAnTmF2aWdhdGluZyBpZnJhbWUgYXdheSBtdXN0IGNh
dXNlIHRoZSBpZnJhbWVTaG93UHJvbWlzZSB0byByZWplY3QuJywKLSAgICAgICk7CisKICAgICAg
IGlmcmFtZS5yZW1vdmUoKTsKIAogICAgICAgLy8gTm93IHdlIHNob3VsZCBiZSBvayB0byBzcGlu
IHVwIGEgbmV3IHBheW1lbnQgcmVxdWVzdAogICAgICAgY29uc3QgcmVxdWVzdCA9IG5ldyB3aW5k
b3cuUGF5bWVudFJlcXVlc3QobWV0aG9kcywgZGV0YWlscyk7CiAgICAgICBjb25zdCBbc2hvd1By
b21pc2VdID0gYXdhaXQgYWN0aXZhdGVUaGVuKGFzeW5jICgpID0+IHsgcmV0dXJuIFtyZXF1ZXN0
LnNob3coKV0gfSk7CiAgICAgICBhd2FpdCByZXF1ZXN0LmFib3J0KCk7Ci0gICAgICBhd2FpdCBw
cm9taXNlX3JlamVjdHMoCisgICAgICBhd2FpdCBwcm9taXNlX3JlamVjdHNfZG9tKAogICAgICAg
ICB0LAogICAgICAgICAnQWJvcnRFcnJvcicsCiAgICAgICAgIHNob3dQcm9taXNlLApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LXJlcXVl
c3QtYWJvcnQtbWV0aG9kLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1l
bnRyZXF1ZXN0L3BheW1lbnQtcmVxdWVzdC1hYm9ydC1tZXRob2QuaHR0cHMuaHRtbAppbmRleCBi
NGE3MzQxMWQ3ZTQ3YjNjZTY2NGYzOWI0NGE3ZGY4ZDVhNGRhZDZjLi45OTg2NmUzOGJhNjhmMDkz
NjFkODkyZDU0YzU0ZDBlOGNlNTVjZTJkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVxdWVzdC1hYm9ydC1tZXRob2QuaHR0cHMuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVx
dWVzdC1hYm9ydC1tZXRob2QuaHR0cHMuaHRtbApAQCAtNDEsMTUgKzQxLDE1IEBAIGNvbnN0IGRl
ZmF1bHREZXRhaWxzID0gT2JqZWN0LmZyZWV6ZSh7CiBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7
CiAgIC8vIHJlcXVlc3QgaXMgaW4gImNyZWF0ZWQiIHN0YXRlCiAgIGNvbnN0IHJlcXVlc3QgPSBu
ZXcgUGF5bWVudFJlcXVlc3QoZGVmYXVsdE1ldGhvZHMsIGRlZmF1bHREZXRhaWxzKTsKLSAgYXdh
aXQgcHJvbWlzZV9yZWplY3RzKHQsICJJbnZhbGlkU3RhdGVFcnJvciIsIHJlcXVlc3QuYWJvcnQo
KSk7CisgIGF3YWl0IHByb21pc2VfcmVqZWN0c19kb20odCwgIkludmFsaWRTdGF0ZUVycm9yIiwg
cmVxdWVzdC5hYm9ydCgpKTsKIH0sIGBUaHJvd3MgaWYgdGhlIHByb21pc2UgW1tzdGF0ZV1dIGlz
IG5vdCAiaW50ZXJhY3RpdmUiYCk7CiAKIHByb21pc2VfdGVzdChhc3luYyB0ID0+IHsKICAgLy8g
cmVxdWVzdCBpcyBpbiAiY3JlYXRlZCIgc3RhdGUuCiAgIGNvbnN0IHJlcXVlc3QgPSBuZXcgUGF5
bWVudFJlcXVlc3QoZGVmYXVsdE1ldGhvZHMsIGRlZmF1bHREZXRhaWxzKTsKLSAgYXdhaXQgcHJv
bWlzZV9yZWplY3RzKHQsICJJbnZhbGlkU3RhdGVFcnJvciIsIHJlcXVlc3QuYWJvcnQoKSk7Cisg
IGF3YWl0IHByb21pc2VfcmVqZWN0c19kb20odCwgIkludmFsaWRTdGF0ZUVycm9yIiwgcmVxdWVz
dC5hYm9ydCgpKTsKICAgLy8gQ2FsbCBpdCBhZ2FpbiwgZm9yIGdvb2QgbWVhc3VyZS4KLSAgYXdh
aXQgcHJvbWlzZV9yZWplY3RzKHQsICJJbnZhbGlkU3RhdGVFcnJvciIsIHJlcXVlc3QuYWJvcnQo
KSk7CisgIGF3YWl0IHByb21pc2VfcmVqZWN0c19kb20odCwgIkludmFsaWRTdGF0ZUVycm9yIiwg
cmVxdWVzdC5hYm9ydCgpKTsKICAgLy8gVGhlIHJlcXVlc3QncyBzdGF0ZSBpcyAiY3JlYXRlZCIs
IHNvIGxldCdzIHNob3cgaXQKICAgLy8gd2hpY2ggY2hhbmdlcyB0aGUgc3RhdGUgdG8gImludGVy
YWN0aXZlLiIuCiAgIGF3YWl0IGFjdGl2YXRlVGhlbihhc3luYyAoKSA9PiB7CkBAIC02Miw3ICs2
Miw3IEBAIHByb21pc2VfdGVzdChhc3luYyB0ID0+IHsKICAgICB9IAogICB9KTsKICAgLy8gVGhl
IHJlcXVlc3QgaXMgbm93ICJjbG9zZWQiLCBzby4uLgotICBhd2FpdCBwcm9taXNlX3JlamVjdHMo
dCwgIkludmFsaWRTdGF0ZUVycm9yIiwgcmVxdWVzdC5hYm9ydCgpKTsKKyAgYXdhaXQgcHJvbWlz
ZV9yZWplY3RzX2RvbSh0LCAiSW52YWxpZFN0YXRlRXJyb3IiLCByZXF1ZXN0LmFib3J0KCkpOwog
fSwgYENhbGxpbmcgYWJvcnQgbXVzdCBub3QgY2hhbmdlIHRoZSBbW3N0YXRlXV0gdW50aWwgYWZ0
ZXIgImludGVyYWN0aXZlImApOwogCiB1c2VyX2FjdGl2YXRpb25fdGVzdChhc3luYyB0ID0+IHsK
QEAgLTczLDEwICs3MywxMCBAQCB1c2VyX2FjdGl2YXRpb25fdGVzdChhc3luYyB0ID0+IHsKICAg
fSBjYXRjaCAoZXJyKSB7CiAgICAgYXNzZXJ0X3RydWUoZmFsc2UsICJVbmV4cGVjdGVkIHByb21p
c2UgcmVqZWN0aW9uOiAiICsgZXJyLm1lc3NhZ2UpOwogICB9Ci0gIGF3YWl0IHByb21pc2VfcmVq
ZWN0cyh0LCAiQWJvcnRFcnJvciIsIGFjY2VwdFByb21pc2UpOworICBhd2FpdCBwcm9taXNlX3Jl
amVjdHNfZG9tKHQsICJBYm9ydEVycm9yIiwgYWNjZXB0UHJvbWlzZSk7CiAgIC8vIEFzIHJlcXVl
c3QgaXMgbm93ICJjbG9zZWQiLCB0cnlpbmcgdG8gc2hvdyBpdCB3aWxsIGZhaWwKICAgYXdhaXQg
YWN0aXZhdGVUaGVuKGFzeW5jICgpID0+IHsKLSAgICBhd2FpdCBwcm9taXNlX3JlamVjdHModCwg
IkludmFsaWRTdGF0ZUVycm9yIiwgcmVxdWVzdC5zaG93KCkpOworICAgIGF3YWl0IHByb21pc2Vf
cmVqZWN0c19kb20odCwgIkludmFsaWRTdGF0ZUVycm9yIiwgcmVxdWVzdC5zaG93KCkpOwogICB9
KTsKIH0sICJjYWxsaW5nIC5hYm9ydCgpIGNhdXNlcyBhY2NlcHRQcm9taXNlIHRvIHJlamVjdCBh
bmQgY2xvc2VzIHRoZSByZXF1ZXN0LiIpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVxdWVzdC1jYW5tYWtlcGF5bWVudC1tZXRo
b2QuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5
bWVudC1yZXF1ZXN0LWNhbm1ha2VwYXltZW50LW1ldGhvZC5odHRwcy5odG1sCmluZGV4IDQzMjc3
ZWFlNzVjYzJmZThkYTYzZWMyY2Y0ODdiNDJlZTBmMTZjZTEuLmYxZmIyNWJkMGNiNzYxNTU5NWRl
YzYwMjdkMjM5NzliZDEyNjZhYzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
cGF5bWVudHJlcXVlc3QvcGF5bWVudC1yZXF1ZXN0LWNhbm1ha2VwYXltZW50LW1ldGhvZC5odHRw
cy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVu
dC1yZXF1ZXN0LWNhbm1ha2VwYXltZW50LW1ldGhvZC5odHRwcy5odG1sCkBAIC00NCwxMyArNDQs
MTMgQEAgdXNlcl9hY3RpdmF0aW9uX3Rlc3QoYXN5bmMgdCA9PiB7CiAgICAgICBgY2FuTWFrZVBh
eW1lbnRQcm9taXNlIHNob3VsZCBoYXZlIHRocm93biBJbnZhbGlkU3RhdGVFcnJvcmAKICAgICAp
OwogICB9IGNhdGNoIChlcnIpIHsKLSAgICBhd2FpdCBwcm9taXNlX3JlamVjdHModCwgIkludmFs
aWRTdGF0ZUVycm9yIiwgY2FuTWFrZVBheW1lbnRQcm9taXNlKTsKKyAgICBhd2FpdCBwcm9taXNl
X3JlamVjdHNfZG9tKHQsICJJbnZhbGlkU3RhdGVFcnJvciIsIGNhbk1ha2VQYXltZW50UHJvbWlz
ZSk7CiAgIH0gZmluYWxseSB7CiAgICAgYXdhaXQgcmVxdWVzdC5hYm9ydCgpOwotICAgIGF3YWl0
IHByb21pc2VfcmVqZWN0cyh0LCAiQWJvcnRFcnJvciIsIGFjY2VwdFByb21pc2UpOworICAgIGF3
YWl0IHByb21pc2VfcmVqZWN0c19kb20odCwgIkFib3J0RXJyb3IiLCBhY2NlcHRQcm9taXNlKTsK
ICAgfQogICAvLyBUaGUgc3RhdGUgc2hvdWxkIGJlICJjbG9zZWQiCi0gIGF3YWl0IHByb21pc2Vf
cmVqZWN0cyh0LCAiSW52YWxpZFN0YXRlRXJyb3IiLCByZXF1ZXN0LmNhbk1ha2VQYXltZW50KCkp
OworICBhd2FpdCBwcm9taXNlX3JlamVjdHNfZG9tKHQsICJJbnZhbGlkU3RhdGVFcnJvciIsIHJl
cXVlc3QuY2FuTWFrZVBheW1lbnQoKSk7CiB9LCAnSWYgcmVxdWVzdC5bW3N0YXRlXV0gaXMgImlu
dGVyYWN0aXZlIiwgdGhlbiByZXR1cm4gYSBwcm9taXNlIHJlamVjdGVkIHdpdGggYW4gIkludmFs
aWRTdGF0ZUVycm9yIiBET01FeGNlcHRpb24uJyk7CiAKIC8vIEZJWE1FOiBUaGlzIGNhbiBiZSBy
ZW1vdmVkIGluIGZhdm9yIG9mIHRoZSB0ZXN0IGluIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvcGF5bWVudC1yZXF1ZXN0IG9uY2Ugd2Ugc3VwcG9ydCB0ZXN0X2RyaXZlci5ibGVzcygp
LgpAQCAtNTksNyArNTksNyBAQCB1c2VyX2FjdGl2YXRpb25fdGVzdChhc3luYyB0ID0+IHsKICAg
Y29uc3QgYWNjZXB0UHJvbWlzZSA9IHJlcXVlc3Quc2hvdygpOyAvLyBTZXRzIHN0YXRlIHRvICJp
bnRlcmFjdGl2ZSIKICAgYWNjZXB0UHJvbWlzZS5jYXRjaCgoKSA9PiB7fSk7IC8vIG5vLW9wLCBq
dXN0IHRvIHNpbGVuY2UgdW5oYW5kbGVkIHJlamVjdGlvbiBpbiBkZXZ0b29scy4KICAgYXdhaXQg
cmVxdWVzdC5hYm9ydCgpOyAvLyBUaGUgc3RhdGUgaXMgbm93ICJjbG9zZWQiCi0gIGF3YWl0IHBy
b21pc2VfcmVqZWN0cyh0LCAiSW52YWxpZFN0YXRlRXJyb3IiLCByZXF1ZXN0LmNhbk1ha2VQYXlt
ZW50KCkpOworICBhd2FpdCBwcm9taXNlX3JlamVjdHNfZG9tKHQsICJJbnZhbGlkU3RhdGVFcnJv
ciIsIHJlcXVlc3QuY2FuTWFrZVBheW1lbnQoKSk7CiAgIHRyeSB7CiAgICAgY29uc3QgcmVzdWx0
ID0gYXdhaXQgcmVxdWVzdC5jYW5NYWtlUGF5bWVudCgpOwogICAgIGFzc2VydF90cnVlKApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LXJl
cXVlc3QtbWVyY2hhbnQtdmFsaWRhdGlvbi5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LXJlcXVlc3QtbWVyY2hhbnQtdmFsaWRhdGlvbi5o
dHRwcy5odG1sCmluZGV4IGIwMGFlZDNmY2EzMTI3MTY3MTQwNGNjNjA0MWM4NDk4ZDE3YWY5NjEu
LjYzZDY1OTljYWIzM2ZiNDExN2RmZDU4MmQyNTEwNjUzMDA5ODkwMzggMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1yZXF1ZXN0LW1lcmNo
YW50LXZhbGlkYXRpb24uaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Bh
eW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVxdWVzdC1tZXJjaGFudC12YWxpZGF0aW9uLmh0dHBzLmh0
bWwKQEAgLTM2LDEwICszNiwxMCBAQCB1c2VyX2FjdGl2YXRpb25fdGVzdChhc3luYyB0ID0+IHsK
ICAgICByZXF1ZXN0Lm9ubWVyY2hhbnR2YWxpZGF0aW9uID0gZXZlbnQgPT4gewogICAgICAgICBh
c3NlcnRfZXF1YWxzKGV2ZW50LnZhbGlkYXRpb25VUkwsICJodHRwczovL3dlYmtpdC5vcmcvIik7
CiAgICAgICAgIGV2ZW50LmNvbXBsZXRlKHsgfSk7Ci0gICAgICAgIGFzc2VydF90aHJvd3MoIklu
dmFsaWRTdGF0ZUVycm9yIiwgKCkgPT4gZXZlbnQuY29tcGxldGUoeyB9KSk7CisgICAgICAgIGFz
c2VydF90aHJvd3NfZG9tKCJJbnZhbGlkU3RhdGVFcnJvciIsICgpID0+IGV2ZW50LmNvbXBsZXRl
KHsgfSkpOwogICAgICAgICByZXF1ZXN0LmFib3J0KCk7CiAgICAgfTsKLSAgICBhd2FpdCBwcm9t
aXNlX3JlamVjdHModCwgIkFib3J0RXJyb3IiLCByZXF1ZXN0LnNob3coKSk7CisgICAgYXdhaXQg
cHJvbWlzZV9yZWplY3RzX2RvbSh0LCAiQWJvcnRFcnJvciIsIHJlcXVlc3Quc2hvdygpKTsKIH0s
ICJDYWxsaW5nIGNvbXBsZXRlKCkgdHdpY2UgdGhyb3dzIGFuIEludmFsaWRTdGF0ZUVycm9yLiIp
OwogCiB1c2VyX2FjdGl2YXRpb25fdGVzdChhc3luYyB0ID0+IHsKQEAgLTUwLDkgKzUwLDkgQEAg
dXNlcl9hY3RpdmF0aW9uX3Rlc3QoYXN5bmMgdCA9PiB7CiAgICAgcmVxdWVzdC5vbm1lcmNoYW50
dmFsaWRhdGlvbiA9IGV2ZW50ID0+IHsKICAgICAgICAgYXNzZXJ0X2VxdWFscyhldmVudC52YWxp
ZGF0aW9uVVJMLCAiaHR0cHM6Ly93ZWJraXQub3JnLyIpOwogICAgICAgICByZXF1ZXN0LmFib3J0
KCk7Ci0gICAgICAgIGFzc2VydF90aHJvd3MoIkludmFsaWRTdGF0ZUVycm9yIiwgKCkgPT4gZXZl
bnQuY29tcGxldGUoeyB9KSk7CisgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlkU3Rh
dGVFcnJvciIsICgpID0+IGV2ZW50LmNvbXBsZXRlKHsgfSkpOwogICAgIH07Ci0gICAgYXdhaXQg
cHJvbWlzZV9yZWplY3RzKHQsICJBYm9ydEVycm9yIiwgcmVxdWVzdC5zaG93KCkpOworICAgIGF3
YWl0IHByb21pc2VfcmVqZWN0c19kb20odCwgIkFib3J0RXJyb3IiLCByZXF1ZXN0LnNob3coKSk7
CiB9LCAiQ2FsbGluZyBjb21wbGV0ZSgpIGFmdGVyIGFib3J0KCkgdGhyb3dzIGFuIEludmFsaWRT
dGF0ZUVycm9yLiIpOwogCiB1c2VyX2FjdGl2YXRpb25fdGVzdChhc3luYyB0ID0+IHsKQEAgLTY0
LDcgKzY0LDcgQEAgdXNlcl9hY3RpdmF0aW9uX3Rlc3QoYXN5bmMgdCA9PiB7CiAgICAgICAgIGFz
c2VydF9lcXVhbHMoZXZlbnQudmFsaWRhdGlvblVSTCwgImh0dHBzOi8vd2Via2l0Lm9yZy8iKTsK
ICAgICAgICAgZXZlbnQuY29tcGxldGUobmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4g
cmVqZWN0KCkpKTsKICAgICB9OwotICAgIGF3YWl0IHByb21pc2VfcmVqZWN0cyh0LCAiQWJvcnRF
cnJvciIsIHJlcXVlc3Quc2hvdygpKTsKKyAgICBhd2FpdCBwcm9taXNlX3JlamVjdHNfZG9tKHQs
ICJBYm9ydEVycm9yIiwgcmVxdWVzdC5zaG93KCkpOwogfSwgIkNhbGxpbmcgY29tcGxldGUoKSB3
aXRoIGEgcHJvbWlzZSB0aGF0IGlzIHJlamVjdGVkIGFib3J0cyB0aGUgcmVxdWVzdC4iKTsKIAog
dXNlcl9hY3RpdmF0aW9uX3Rlc3QoYXN5bmMgdCA9PiB7CkBAIC03Niw3ICs3Niw3IEBAIHVzZXJf
YWN0aXZhdGlvbl90ZXN0KGFzeW5jIHQgPT4gewogICAgICAgICBhc3NlcnRfZXF1YWxzKGV2ZW50
LnZhbGlkYXRpb25VUkwsICJodHRwczovL3dlYmtpdC5vcmcvIik7CiAgICAgICAgIGV2ZW50LmNv
bXBsZXRlKG5ldyBQcm9taXNlKHJlc29sdmUgPT4gcmVzb2x2ZSg3KSkpOwogICAgIH07Ci0gICAg
YXdhaXQgcHJvbWlzZV9yZWplY3RzKHQsIG5ldyBUeXBlRXJyb3IoKSwgcmVxdWVzdC5zaG93KCkp
OworICAgIGF3YWl0IHByb21pc2VfcmVqZWN0c19qcyh0LCBUeXBlRXJyb3IsIHJlcXVlc3Quc2hv
dygpKTsKIH0sICJDYWxsaW5nIGNvbXBsZXRlKCkgd2l0aCBhIG51bWJlciBhYm9ydHMgdGhlIHJl
cXVlc3Qgd2l0aCBhIFR5cGVFcnJvci4iKTsKIAogdXNlcl9hY3RpdmF0aW9uX3Rlc3QoYXN5bmMg
dCA9PiB7CkBAIC04OCw3ICs4OCw3IEBAIHVzZXJfYWN0aXZhdGlvbl90ZXN0KGFzeW5jIHQgPT4g
ewogICAgICAgICBhc3NlcnRfZXF1YWxzKGV2ZW50LnZhbGlkYXRpb25VUkwsICJodHRwczovL3dl
YmtpdC5vcmcvIik7CiAgICAgICAgIGV2ZW50LmNvbXBsZXRlKG5ldyBQcm9taXNlKHJlc29sdmUg
PT4gcmVzb2x2ZSh1bmRlZmluZWQpKSk7CiAgICAgfTsKLSAgICBhd2FpdCBwcm9taXNlX3JlamVj
dHModCwgbmV3IFR5cGVFcnJvcigpLCByZXF1ZXN0LnNob3coKSk7CisgICAgYXdhaXQgcHJvbWlz
ZV9yZWplY3RzX2pzKHQsIFR5cGVFcnJvciwgcmVxdWVzdC5zaG93KCkpOwogfSwgIkNhbGxpbmcg
Y29tcGxldGUoKSB3aXRoIHVuZGVmaW5lZCBhYm9ydHMgdGhlIHJlcXVlc3Qgd2l0aCBhIFR5cGVF
cnJvci4iKTsKIAogdXNlcl9hY3RpdmF0aW9uX3Rlc3QoYXN5bmMgdCA9PiB7CkBAIC0xMDAsNyAr
MTAwLDcgQEAgdXNlcl9hY3RpdmF0aW9uX3Rlc3QoYXN5bmMgdCA9PiB7CiAgICAgICAgIGFzc2Vy
dF9lcXVhbHMoZXZlbnQudmFsaWRhdGlvblVSTCwgImh0dHBzOi8vd2Via2l0Lm9yZy8iKTsKICAg
ICAgICAgZXZlbnQuY29tcGxldGUobmV3IFByb21pc2UocmVzb2x2ZSA9PiByZXNvbHZlKG51bGwp
KSk7CiAgICAgfTsKLSAgICBhd2FpdCBwcm9taXNlX3JlamVjdHModCwgbmV3IFR5cGVFcnJvcigp
LCByZXF1ZXN0LnNob3coKSk7CisgICAgYXdhaXQgcHJvbWlzZV9yZWplY3RzX2pzKHQsIFR5cGVF
cnJvciwgcmVxdWVzdC5zaG93KCkpOwogfSwgIkNhbGxpbmcgY29tcGxldGUoKSB3aXRoIG51bGwg
YWJvcnRzIHRoZSByZXF1ZXN0IHdpdGggYSBUeXBlRXJyb3IuIik7CiAKIHVzZXJfYWN0aXZhdGlv
bl90ZXN0KGFzeW5jIHQgPT4gewpAQCAtMTEyLDcgKzExMiw3IEBAIHVzZXJfYWN0aXZhdGlvbl90
ZXN0KGFzeW5jIHQgPT4gewogICAgICAgICBhc3NlcnRfZXF1YWxzKGV2ZW50LnZhbGlkYXRpb25V
UkwsICJodHRwczovL3dlYmtpdC5vcmcvIik7CiAgICAgICAgIGV2ZW50LmNvbXBsZXRlKG5ldyBQ
cm9taXNlKHJlc29sdmUgPT4gcmVzb2x2ZSgiIikpKTsKICAgICB9OwotICAgIGF3YWl0IHByb21p
c2VfcmVqZWN0cyh0LCBuZXcgVHlwZUVycm9yKCksIHJlcXVlc3Quc2hvdygpKTsKKyAgICBhd2Fp
dCBwcm9taXNlX3JlamVjdHNfanModCwgVHlwZUVycm9yLCByZXF1ZXN0LnNob3coKSk7CiB9LCAi
Q2FsbGluZyBjb21wbGV0ZSgpIHdpdGggYSBzdHJpbmcgYWJvcnRzIHRoZSByZXF1ZXN0IHdpdGgg
YSBUeXBlRXJyb3IuIik7CiAKIHVzZXJfYWN0aXZhdGlvbl90ZXN0KGFzeW5jIHQgPT4gewpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LXJl
cXVlc3Qtc2hvdy1tZXRob2QuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5
bWVudHJlcXVlc3QvcGF5bWVudC1yZXF1ZXN0LXNob3ctbWV0aG9kLmh0dHBzLmh0bWwKaW5kZXgg
NDMyYTA5ZmU0YzY4Mzg0MWJkOGFhNWFhMzkxOTAwNTQ0NDIwNmNhNS4uOGZkNzg4NGU1MDgwYzcx
ZDBjNzU1MjVkOThlYWQ0NDkyZGIyYzRkNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LXJlcXVlc3Qtc2hvdy1tZXRob2QuaHR0cHMuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVx
dWVzdC1zaG93LW1ldGhvZC5odHRwcy5odG1sCkBAIC00Niw5ICs0Niw5IEBAIHRlc3QoKCkgPT4g
ewogdXNlcl9hY3RpdmF0aW9uX3Rlc3QoYXN5bmMgdCA9PiB7CiAgIGNvbnN0IHJlcXVlc3QgPSBu
ZXcgUGF5bWVudFJlcXVlc3QoZGVmYXVsdE1ldGhvZHMsIGRlZmF1bHREZXRhaWxzKTsKICAgY29u
c3QgYWNjZXB0UHJvbWlzZSA9IHJlcXVlc3Quc2hvdygpOyAvLyBTZXRzIHN0YXRlIHRvICJpbnRl
cmFjdGl2ZSIKLSAgYXdhaXQgcHJvbWlzZV9yZWplY3RzKHQsICJTZWN1cml0eUVycm9yIiwgcmVx
dWVzdC5zaG93KCkpOworICBhd2FpdCBwcm9taXNlX3JlamVjdHNfZG9tKHQsICJTZWN1cml0eUVy
cm9yIiwgcmVxdWVzdC5zaG93KCkpOwogICBhd2FpdCByZXF1ZXN0LmFib3J0KCk7Ci0gIGF3YWl0
IHByb21pc2VfcmVqZWN0cyh0LCAiQWJvcnRFcnJvciIsIGFjY2VwdFByb21pc2UpOworICBhd2Fp
dCBwcm9taXNlX3JlamVjdHNfZG9tKHQsICJBYm9ydEVycm9yIiwgYWNjZXB0UHJvbWlzZSk7CiB9
LCBgVGhyb3dzIGlmIHRoZSBwcm9taXNlIFtbc3RhdGVdXSBpcyBub3QgImNyZWF0ZWQiYCk7CiAK
IHVzZXJfYWN0aXZhdGlvbl90ZXN0KGFzeW5jIHQgPT4gewpAQCAtNTYsOSArNTYsOSBAQCB1c2Vy
X2FjdGl2YXRpb25fdGVzdChhc3luYyB0ID0+IHsKICAgY29uc3QgcmVxdWVzdDIgPSBuZXcgUGF5
bWVudFJlcXVlc3QoZGVmYXVsdE1ldGhvZHMsIGRlZmF1bHREZXRhaWxzKTsKICAgY29uc3QgYWNj
ZXB0UHJvbWlzZTEgPSByZXF1ZXN0MS5zaG93KCk7CiAgIGNvbnN0IGFjY2VwdFByb21pc2UyID0g
cmVxdWVzdDIuc2hvdygpOwotICBhd2FpdCBwcm9taXNlX3JlamVjdHModCwgIlNlY3VyaXR5RXJy
b3IiLCBhY2NlcHRQcm9taXNlMik7CisgIGF3YWl0IHByb21pc2VfcmVqZWN0c19kb20odCwgIlNl
Y3VyaXR5RXJyb3IiLCBhY2NlcHRQcm9taXNlMik7CiAgIGF3YWl0IHJlcXVlc3QxLmFib3J0KCk7
Ci0gIGF3YWl0IHByb21pc2VfcmVqZWN0cyh0LCAiQWJvcnRFcnJvciIsIGFjY2VwdFByb21pc2Ux
KTsKKyAgYXdhaXQgcHJvbWlzZV9yZWplY3RzX2RvbSh0LCAiQWJvcnRFcnJvciIsIGFjY2VwdFBy
b21pc2UxKTsKIH0sIGBJZiB0aGUgdXNlciBhZ2VudCdzICJwYXltZW50IHJlcXVlc3QgaXMgc2hv
d2luZyIgYm9vbGVhbiBpcyB0cnVlLCB0aGVuIHJldHVybiBhIHByb21pc2UgcmVqZWN0ZWQgd2l0
aCBhbiAiQWJvcnRFcnJvciIgRE9NRXhjZXB0aW9uLmApOwogCiB1c2VyX2FjdGl2YXRpb25fdGVz
dChhc3luYyB0ID0+IHsKQEAgLTY2LDcgKzY2LDcgQEAgdXNlcl9hY3RpdmF0aW9uX3Rlc3QoYXN5
bmMgdCA9PiB7CiAgICAgW3sgc3VwcG9ydGVkTWV0aG9kczogInRoaXMtaXMtbm90LXN1cHBvcnRl
ZCIgfV0sCiAgICAgZGVmYXVsdERldGFpbHMpOwogICBjb25zdCBhY2NlcHRQcm9taXNlID0gcmVx
dWVzdC5zaG93KCk7Ci0gIGF3YWl0IHByb21pc2VfcmVqZWN0cyh0LCAiTm90U3VwcG9ydGVkRXJy
b3IiLCBhY2NlcHRQcm9taXNlKTsKKyAgYXdhaXQgcHJvbWlzZV9yZWplY3RzX2RvbSh0LCAiTm90
U3VwcG9ydGVkRXJyb3IiLCBhY2NlcHRQcm9taXNlKTsKIH0sIGBJZiBwYXltZW50IG1ldGhvZCBj
b25zdWx0YXRpb24gcHJvZHVjZXMgbm8gc3VwcG9ydGVkIG1ldGhvZCBvZiBwYXltZW50LCB0aGVu
IHJldHVybiBhIHByb21pc2UgcmVqZWN0ZWQgd2l0aCBhICJOb3RTdXBwb3J0ZWRFcnJvciIgRE9N
RXhjZXB0aW9uLmApOwogCiB1c2VyX2FjdGl2YXRpb25fdGVzdChhc3luYyB0ID0+IHsKQEAgLTc0
LDE0ICs3NCwxNCBAQCB1c2VyX2FjdGl2YXRpb25fdGVzdChhc3luYyB0ID0+IHsKICAgICBbeyBz
dXBwb3J0ZWRNZXRob2RzOiAiaHR0cHM6Ly9hcHBsZS5jb20vYXBwbGUtcGF5IiB9XSwKICAgICBk
ZWZhdWx0RGV0YWlscyk7CiAgIGNvbnN0IGFjY2VwdFByb21pc2UgPSByZXF1ZXN0LnNob3coKTsK
LSAgYXdhaXQgcHJvbWlzZV9yZWplY3RzKHQsIG5ldyBUeXBlRXJyb3IsIGFjY2VwdFByb21pc2Up
OworICBhd2FpdCBwcm9taXNlX3JlamVjdHNfanModCwgVHlwZUVycm9yLCBhY2NlcHRQcm9taXNl
KTsKIH0sIGBJZiBkYXRhIGNvbnZlcnNpb24gcmVzdWx0cyBpbiBhbiBlcnJvciwgdGhlbiByZXR1
cm4gYSBwcm9taXNlIHJlamVjdGVkIHdpdGggYSAiVHlwZUVycm9yIiBET01FeGNlcHRpb24uYCk7
CiAKIHVzZXJfYWN0aXZhdGlvbl90ZXN0KGFzeW5jIHQgPT4gewogICBjb25zdCByZXF1ZXN0ID0g
bmV3IFBheW1lbnRSZXF1ZXN0KGRlZmF1bHRNZXRob2RzLCBkZWZhdWx0RGV0YWlscyk7CiAgIGNv
bnN0IGFjY2VwdFByb21pc2UgPSByZXF1ZXN0LnNob3coKTsgLy8gU2V0cyBzdGF0ZSB0byAiaW50
ZXJhY3RpdmUiCiAgIGludGVybmFscy5tb2NrUGF5bWVudENvb3JkaW5hdG9yLmNhbmNlbFBheW1l
bnQoKTsKLSAgYXdhaXQgcHJvbWlzZV9yZWplY3RzKHQsICJBYm9ydEVycm9yIiwgYWNjZXB0UHJv
bWlzZSk7CisgIGF3YWl0IHByb21pc2VfcmVqZWN0c19kb20odCwgIkFib3J0RXJyb3IiLCBhY2Nl
cHRQcm9taXNlKTsKIH0sIGBJZiB0aGUgdXNlciBhYm9ydHMgdGhlIHBheW1lbnQgcmVxdWVzdCBh
bGdvcml0aG0sIHRoZW4gcmV0dXJuIGEgcHJvbWlzZSByZWplY3RlZCB3aXRoIGFuICJBYm9ydEVy
cm9yIiBET01FeGNlcHRpb24uYCk7CiAKIHVzZXJfYWN0aXZhdGlvbl90ZXN0KGFzeW5jIHQgPT4g
ewpAQCAtOTIsNyArOTIsNyBAQCB1c2VyX2FjdGl2YXRpb25fdGVzdChhc3luYyB0ID0+IHsKICAg
ICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHJlc29sdmUoZGVmYXVsdERldGFpbHMpKTsKICAg
ICB9KTsKICAgfSkpOyAvLyBTZXRzIHN0YXRlIHRvICJpbnRlcmFjdGl2ZSIKLSAgYXdhaXQgcHJv
bWlzZV9yZWplY3RzKHQsICJBYm9ydEVycm9yIiwgYWNjZXB0UHJvbWlzZSk7CisgIGF3YWl0IHBy
b21pc2VfcmVqZWN0c19kb20odCwgIkFib3J0RXJyb3IiLCBhY2NlcHRQcm9taXNlKTsKIH0sIGBJ
ZiB0aGUgdXNlciBhYm9ydHMgdGhlIHBheW1lbnQgcmVxdWVzdCBhbGdvcml0aG0gd2hpbGUgZGV0
YWlscyBhcmUgdXBkYXRpbmcsIHRoZW4gcmVqZWN0IHRoZSBhY2NlcHQgcHJvbWlzZSB3aXRoIGFu
ICJBYm9ydEVycm9yIiB3aGVuIHRoZSBkZXRhaWxzIHNldHRsZS5gKTsKIAogdXNlcl9hY3RpdmF0
aW9uX3Rlc3QoYXN5bmMgdCA9PiB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3BheW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVzcG9uc2UtcmVqZWN0cy1pZi1ub3QtYWN0aXZlLmh0
dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0L3BheW1lbnQt
cmVzcG9uc2UtcmVqZWN0cy1pZi1ub3QtYWN0aXZlLmh0dHBzLmh0bWwKaW5kZXggMzJkMTAxZjY2
NWQzZjc5YWIwNmI2MTc4OGY4MjljNDA5ZTBiY2MyOS4uOTJmMTUwNTUyNTJiNTg0ZGNiNTQxNjA4
MjNiYmY2M2YyZDczZTBlMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXlt
ZW50cmVxdWVzdC9wYXltZW50LXJlc3BvbnNlLXJlamVjdHMtaWYtbm90LWFjdGl2ZS5odHRwcy5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1y
ZXNwb25zZS1yZWplY3RzLWlmLW5vdC1hY3RpdmUuaHR0cHMuaHRtbApAQCAtNTQsNiArNTQsOCBA
QCBmdW5jdGlvbiBtZXRob2ROb3RGdWxseUFjdGl2ZSh0ZXh0LCBtZXRob2ROYW1lLCAuLi5hcmdz
KSB7CiAgICAgICBpZnJhbWUsCiAgICAgICAiL3BheW1lbnQtcmVxdWVzdC9yZXNvdXJjZXMvcGFn
ZTEuaHRtbCIKICAgICApOworICAgIGNvbnN0IGlmcmFtZURPTUV4Y2VwdGlvbiA9IGlmcmFtZS5j
b250ZW50V2luZG93LkRPTUV4Y2VwdGlvbjsKKwogICAgIC8vIFdlIG5hdmlnYXRlIHRoZSBpZnJh
bWUgYWdhaW4sIHB1dHRpbmcgcmVzcG9uc2UncyBkb2N1bWVudCBpbnRvIGFuIGluYWN0aXZlIHN0
YXRlLgogICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gewogICAgICAgaWZyYW1lLmFk
ZEV2ZW50TGlzdGVuZXIoImxvYWQiLCByZXNvbHZlKTsKQEAgLTYyLDkgKzY0LDEwIEBAIGZ1bmN0
aW9uIG1ldGhvZE5vdEZ1bGx5QWN0aXZlKHRleHQsIG1ldGhvZE5hbWUsIC4uLmFyZ3MpIHsKICAg
ICAvLyBOb3csIHJlc3BvbnNlJ3MgcmVsZXZhbnQgZ2xvYmFsIG9iamVjdCdzIGRvY3VtZW50IGlz
IG5vIGxvbmdlciBhY3RpdmUuCiAgICAgLy8gU28sIHByb21pc2UgbmVlZHMgdG8gcmVqZWN0IGFw
cHJvcHJpYXRlbHkuCiAgICAgY29uc3QgcHJvbWlzZSA9IHJlc3BvbnNlW21ldGhvZE5hbWVdKC4u
LmFyZ3MpOwotICAgIGF3YWl0IHByb21pc2VfcmVqZWN0cygKKyAgICBhd2FpdCBwcm9taXNlX3Jl
amVjdHNfZG9tKAogICAgICAgdCwKICAgICAgICJBYm9ydEVycm9yIiwKKyAgICAgIGlmcmFtZURP
TUV4Y2VwdGlvbiwKICAgICAgIHByb21pc2UsCiAgICAgICAiSW5hY3RpdmUgZG9jdW1lbnQsIHNv
IG11c3QgdGhyb3cgQWJvcnRFcnJvciIKICAgICApOwpAQCAtODQsNiArODcsNyBAQCBmdW5jdGlv
biBtZXRob2RCZWNvbWVzTm90RnVsbHlBY3RpdmUodGV4dCwgbWV0aG9kTmFtZSwgLi4uYXJncykg
ewogICAgICAgaWZyYW1lLAogICAgICAgIi9wYXltZW50LXJlcXVlc3QvcmVzb3VyY2VzL3BhZ2Ux
Lmh0bWwiCiAgICAgKTsKKyAgICBjb25zdCBpZnJhbWVET01FeGNlcHRpb24gPSBpZnJhbWUuY29u
dGVudFdpbmRvdy5ET01FeGNlcHRpb247CiAKICAgICAvLyB3ZSBnZXQgdGhlIHByb21pc2UgZnJv
bSBwYWdlMS5odG1sLCB3aGlsZSBpdCdzIGFjdGl2ZSEKICAgICBjb25zdCBwcm9taXNlID0gcmVz
cG9uc2VbbWV0aG9kTmFtZV0oLi4uYXJncyk7CkBAIC05Niw5ICsxMDAsMTAgQEAgZnVuY3Rpb24g
bWV0aG9kQmVjb21lc05vdEZ1bGx5QWN0aXZlKHRleHQsIG1ldGhvZE5hbWUsIC4uLmFyZ3MpIHsK
IAogICAgIC8vIE5vdywgcmVzcG9uc2UncyByZWxldmFudCBnbG9iYWwgb2JqZWN0J3MgZG9jdW1l
bnQgaXMgbm8gbG9uZ2VyIGFjdGl2ZS4KICAgICAvLyBTbywgcHJvbWlzZSBuZWVkcyB0byByZWpl
Y3QgYXBwcm9wcmlhdGVseS4KLSAgICBhd2FpdCBwcm9taXNlX3JlamVjdHMoCisgICAgYXdhaXQg
cHJvbWlzZV9yZWplY3RzX2RvbSgKICAgICAgIHQsCiAgICAgICAiQWJvcnRFcnJvciIsCisgICAg
ICBpZnJhbWVET01FeGNlcHRpb24sCiAgICAgICBwcm9taXNlLAogICAgICAgIkluYWN0aXZlIGRv
Y3VtZW50LCBzbyBtdXN0IHRocm93IEFib3J0RXJyb3IiCiAgICAgKTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvcGF5bWVudC1yZXNwb25zZS1yZXRy
eS1tZXRob2QuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVl
c3QvcGF5bWVudC1yZXNwb25zZS1yZXRyeS1tZXRob2QuaHR0cHMuaHRtbAppbmRleCA2NGE0MTFh
YzViMTBmNmIyMzU0ZjAyM2JmNWIyN2ZmMWVjMTc5Njg5Li5jZjYwNTA3N2NiMzJlNmM1MTkyNTFl
YjM1YWQxMzZjYzgyNjE1NTMwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Bh
eW1lbnRyZXF1ZXN0L3BheW1lbnQtcmVzcG9uc2UtcmV0cnktbWV0aG9kLmh0dHBzLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9wYXltZW50LXJlc3BvbnNl
LXJldHJ5LW1ldGhvZC5odHRwcy5odG1sCkBAIC0yOSw3ICsyOSw3IEBAIHByb21pc2VfdGVzdChh
c3luYyB0ID0+IHsKICAgY29uc3QgeyByZXNwb25zZSB9ID0gYXdhaXQgZ2V0UGF5bWVudFJlcXVl
c3RSZXNwb25zZSgpOwogICAvLyBzZXRzIHJlc3BvbnNlLltbY29tcGxldGVdXSB0byB0cnVlLgog
ICBhd2FpdCByZXNwb25zZS5jb21wbGV0ZSgic3VjY2VzcyIpOwotICByZXR1cm4gcHJvbWlzZV9y
ZWplY3RzKAorICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2RvbSgKICAgICB0LAogICAgICJJbnZh
bGlkU3RhdGVFcnJvciIsCiAgICAgcmVzcG9uc2UucmV0cnkoe30pLApAQCAtNDAsNyArNDAsNyBA
QCBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CiBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CiAg
IGNvbnN0IHsgcmVzcG9uc2UgfSA9IGF3YWl0IGdldFBheW1lbnRSZXF1ZXN0UmVzcG9uc2UoKTsK
ICAgY29uc3QgcmV0cnlQcm9taXNlID0gcmVzcG9uc2UucmV0cnkoe30pOwotICBhd2FpdCBwcm9t
aXNlX3JlamVjdHMoCisgIGF3YWl0IHByb21pc2VfcmVqZWN0c19kb20oCiAgICAgdCwKICAgICAi
SW52YWxpZFN0YXRlRXJyb3IiLAogICAgIHJlc3BvbnNlLnJldHJ5KHt9KSwKQEAgLTU0LDcgKzU0
LDcgQEAgcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4gewogcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4g
ewogICBjb25zdCB7IHJlc3BvbnNlIH0gPSBhd2FpdCBnZXRQYXltZW50UmVxdWVzdFJlc3BvbnNl
KCk7CiAgIGNvbnN0IHJldHJ5UHJvbWlzZSA9IHJlc3BvbnNlLnJldHJ5KHt9KTsKLSAgYXdhaXQg
cHJvbWlzZV9yZWplY3RzKAorICBhd2FpdCBwcm9taXNlX3JlamVjdHNfZG9tKAogICAgIHQsCiAg
ICAgIkludmFsaWRTdGF0ZUVycm9yIiwKICAgICByZXNwb25zZS5jb21wbGV0ZSgic3VjY2VzcyIp
LApAQCAtNjgsNyArNjgsNyBAQCBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CiBwcm9taXNlX3Rl
c3QoYXN5bmMgdCA9PiB7CiAgIGNvbnN0IHsgcmVzcG9uc2UsIHJlcXVlc3QgfSA9IGF3YWl0IGdl
dFBheW1lbnRSZXF1ZXN0UmVzcG9uc2UoKTsKICAgY29uc3QgcmV0cnlQcm9taXNlID0gcmVzcG9u
c2UucmV0cnkoe30pOwotICBhd2FpdCBwcm9taXNlX3JlamVjdHMoCisgIGF3YWl0IHByb21pc2Vf
cmVqZWN0c19kb20oCiAgICAgdCwKICAgICAiSW52YWxpZFN0YXRlRXJyb3IiLAogICAgIHJlcXVl
c3QuYWJvcnQoKSwKQEAgLTk2LDcgKzk2LDcgQEAgcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4gewog
ICAgICJFeHBlY3RlZCB1bmRlZmluZWQgYXMgdGhlIHJlc29sdmUgdmFsdWUiCiAgICk7CiAgIGF3
YWl0IHJlc3BvbnNlLmNvbXBsZXRlKCJzdWNjZXNzIik7Ci0gIGF3YWl0IHByb21pc2VfcmVqZWN0
cygKKyAgYXdhaXQgcHJvbWlzZV9yZWplY3RzX2RvbSgKICAgICB0LAogICAgICJJbnZhbGlkU3Rh
dGVFcnJvciIsCiAgICAgcmVzcG9uc2UucmV0cnkoe30pLApAQCAtMTA4LDE5ICsxMDgsMTkgQEAg
cHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4gewogICBjb25zdCB7IHJlc3BvbnNlIH0gPSBhd2FpdCBn
ZXRQYXltZW50UmVxdWVzdFJlc3BvbnNlKCk7CiAgIHZhciBwcm9taXNlID0gcmVzcG9uc2UucmV0
cnkoe30pOwogICBpbnRlcm5hbHMubW9ja1BheW1lbnRDb29yZGluYXRvci5jYW5jZWxQYXltZW50
KCk7Ci0gIGF3YWl0IHByb21pc2VfcmVqZWN0cygKKyAgYXdhaXQgcHJvbWlzZV9yZWplY3RzX2Rv
bSgKICAgICB0LAogICAgICJBYm9ydEVycm9yIiwKICAgICBwcm9taXNlLAogICAgICJUaGUgdXNl
ciBhYm9ydGluZyBhIHJldHJ5IHJlamVjdHMgd2l0aCBhIEFib3J0RXJyb3IiCiAgICk7Ci0gIGF3
YWl0IHByb21pc2VfcmVqZWN0cygKKyAgYXdhaXQgcHJvbWlzZV9yZWplY3RzX2RvbSgKICAgICB0
LAogICAgICJJbnZhbGlkU3RhdGVFcnJvciIsCiAgICAgcmVzcG9uc2UucmV0cnkoe30pLAogICAg
ICJBZnRlciB0aGUgdXNlciBhYm9ydHMsIHJlc3BvbnNlIFtbY29tcGxldGVdXSBpcyB0cnVlIHNv
IHJldHJ5KCkgbXVzdCByZWplY3Qgd2l0aCBJbnZhbGlkU3RhdGVFcnJvciIKICAgKTsKLSAgYXdh
aXQgcHJvbWlzZV9yZWplY3RzKAorICBhd2FpdCBwcm9taXNlX3JlamVjdHNfZG9tKAogICAgIHQs
CiAgICAgIkludmFsaWRTdGF0ZUVycm9yIiwKICAgICByZXNwb25zZS5jb21wbGV0ZSgic3VjY2Vz
cyIpLApAQCAtMTU4LDEzICsxNTgsMTMgQEAgcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4gewogICBj
b25zdCByZXRyeVByb21pc2UgPSByZXNwb25zZS5yZXRyeSh7fSk7CiAgIGludGVybmFscy5tb2Nr
UGF5bWVudENvb3JkaW5hdG9yLmNoYW5nZVNoaXBwaW5nT3B0aW9uKCJvcHRpb24iKTsKICAgYXdh
aXQgc2hpcHBpbmdDaGFuZ2VkUHJvbWlzZTsKLSAgYXdhaXQgcHJvbWlzZV9yZWplY3RzKAorICBh
d2FpdCBwcm9taXNlX3JlamVjdHNfanMoCiAgICAgdCwKLSAgICBuZXcgVHlwZUVycm9yKCksCisg
ICAgVHlwZUVycm9yLAogICAgIHJldHJ5UHJvbWlzZSwKICAgICAicmV0cnkoKSBhYm9ydHMgd2l0
aCBhIFR5cGVFcnJvciwgYmVjYXVzZSB0b3RhbHMnIHZhbHVlIGlzIGludmFsaWQiCiAgICk7Ci0g
IGF3YWl0IHByb21pc2VfcmVqZWN0cygKKyAgYXdhaXQgcHJvbWlzZV9yZWplY3RzX2RvbSgKICAg
ICB0LAogICAgICJJbnZhbGlkU3RhdGVFcnJvciIsCiAgICAgcmVzcG9uc2UuY29tcGxldGUoInN1
Y2Nlc3MiKSwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcGF5bWVudHJlcXVl
c3QvcmVqZWN0c19pZl9ub3RfYWN0aXZlLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3BheW1lbnRyZXF1ZXN0L3JlamVjdHNfaWZfbm90X2FjdGl2ZS5odHRwcy5odG1sCmluZGV4
IDk2ZThmNmE0OGMxNjY4NDhlODNlYjZmM2FmMmFkOTExMmQ0YTk3ODYuLjhlMTFlODA3MjM1NDI3
MmNjYjgwOTFjNGY0NDcyYjkzMjUzYmVhNDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvcGF5bWVudHJlcXVlc3QvcmVqZWN0c19pZl9ub3RfYWN0aXZlLmh0dHBzLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC9yZWplY3RzX2lmX25vdF9h
Y3RpdmUuaHR0cHMuaHRtbApAQCAtNjIsNiArNjIsNyBAQCBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9
PiB7CiAgICAgaWZyYW1lLAogICAgICJyZXNvdXJjZXMvcGFnZTEuaHRtbCIKICAgKTsKKyAgY29u
c3QgZmlyc3RDdG9yID0gaWZyYW1lLmNvbnRlbnRXaW5kb3cuRE9NRXhjZXB0aW9uOwogCiAgIC8v
IFdlIG5hdmlnYXRlIHRoZSBpZnJhbWUgYWdhaW4sIHB1dHRpbmcgcmVxdWVzdDEncyBkb2N1bWVu
dCBpbnRvIGFuIGluYWN0aXZlIHN0YXRlLgogICBjb25zdCByZXF1ZXN0MiA9IGF3YWl0IGdldExv
YWRlZFBheW1lbnRSZXF1ZXN0KApAQCAtNzEsOSArNzIsMTAgQEAgcHJvbWlzZV90ZXN0KGFzeW5j
IHQgPT4gewogCiAgIC8vIE5vdywgcmVxdWVzdDEncyByZWxldmFudCBnbG9iYWwgb2JqZWN0J3Mg
ZG9jdW1lbnQgaXMgbm8gbG9uZ2VyIGFjdGl2ZS4KICAgLy8gU28sIGNhbGwgLnNob3coKSwgYW5k
IG1ha2Ugc3VyZSBpdCByZWplY3RzIGFwcHJvcHJpYXRlbHkuCi0gIGF3YWl0IHByb21pc2VfcmVq
ZWN0cygKKyAgYXdhaXQgcHJvbWlzZV9yZWplY3RzX2RvbSgKICAgICB0LAogICAgICJBYm9ydEVy
cm9yIiwKKyAgICBmaXJzdEN0b3IsCiAgICAgcmVxdWVzdDEuc2hvdygpLAogICAgICJJbmFjdGl2
ZSBkb2N1bWVudCwgc28gbXVzdCB0aHJvdyBBYm9ydEVycm9yIgogICApOwpAQCAtODMsMTEgKzg1
LDEzIEBAIHByb21pc2VfdGVzdChhc3luYyB0ID0+IHsKICAgICAgIHJlcXVlc3QyLnNob3coKS5j
YXRjaCgoZXJyb3IpID0+IHt9KTsKICAgICBhd2FpdCByZXF1ZXN0Mi5hYm9ydCgpOwogICB9KTsK
KyAgY29uc3Qgc2Vjb25kQ3RvciA9IGlmcmFtZS5jb250ZW50V2luZG93LkRPTUV4Y2VwdGlvbjsK
IAogICBhd2FpdCBhY3RpdmF0ZVRoZW4oYXN5bmMgKCkgPT4gewotICAgIGF3YWl0IHByb21pc2Vf
cmVqZWN0cygKKyAgICBhd2FpdCBwcm9taXNlX3JlamVjdHNfZG9tKAogICAgICAgdCwKICAgICAg
ICJJbnZhbGlkU3RhdGVFcnJvciIsCisgICAgICBzZWNvbmRDdG9yLAogICAgICAgcmVxdWVzdDIu
c2hvdygpLAogICAgICAgIkFib3J0IGFscmVhZHkgY2FsbGVkLCBzbyBJbnZhbGlkU3RhdGVFcnJv
ciIKICAgICApOwpAQCAtMTIzLDYgKzEyNyw3IEBAIHByb21pc2VfdGVzdChhc3luYyB0ID0+IHsK
ICAgICBpbm5lcklmcmFtZSwKICAgICAicmVzb3VyY2VzL3BhZ2UyLmh0bWwiCiAgICk7CisgIGNv
bnN0IHJlcXVlc3RXaW5kb3cgPSBpbm5lcklmcmFtZS5jb250ZW50V2luZG93OwogCiAgIC8vIE5h
dmlnYXRlIHRoZSBvdXRlciBpZnJhbWUgdG8gYSBuZXcgbG9jYXRpb24uCiAgIC8vIFdhaXQgZm9y
IHRoZSBsb2FkIGV2ZW50IHRvIGZpcmUuCkBAIC0xMzQsOSArMTM5LDEwIEBAIHByb21pc2VfdGVz
dChhc3luYyB0ID0+IHsKICAgLy8gKGl0IGlzIHRoZSBhY3RpdmUgZG9jdW1lbnQgb2YgdGhlIGlu
bmVyIGlmcmFtZSksIGJ1dCBpcyBub3QgZnVsbHkgYWN0aXZlCiAgIC8vIChzaW5jZSB0aGUgcGFy
ZW50IG9mIHRoZSBpbm5lciBpZnJhbWUgaXMgaXRzZWxmIG5vIGxvbmdlciBhY3RpdmUpLgogICAv
LyBTbywgY2FsbCByZXF1ZXN0LnNob3coKSBhbmQgbWFrZSBzdXJlIGl0IHJlamVjdHMgYXBwcm9w
cmlhdGVseS4KLSAgYXdhaXQgcHJvbWlzZV9yZWplY3RzKAorICBhd2FpdCBwcm9taXNlX3JlamVj
dHNfZG9tKAogICAgIHQsCiAgICAgIkFib3J0RXJyb3IiLAorICAgIHJlcXVlc3RXaW5kb3cuRE9N
RXhjZXB0aW9uLAogICAgIHJlcXVlc3Quc2hvdygpLAogICAgICJBY3RpdmUsIGJ1dCBub3QgZnVs
bHkgYWN0aXZlLCBzbyBtdXN0IHRocm93IEFib3J0RXJyb3IiCiAgICk7CkBAIC0xNTYsNiArMTYy
LDcgQEAgcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4gewogICAgIGlmcmFtZSwKICAgICAicmVzb3Vy
Y2VzL3BhZ2UxLmh0bWwiCiAgICk7CisgIGNvbnN0IGlmcmFtZURPTUV4Y2VwdGlvbiA9IGlmcmFt
ZS5jb250ZW50V2luZG93LkRPTUV4Y2VwdGlvbjsKICAgLy8gUHJlc2VudCB0aGUgcGF5bWVudCBz
aGVldC4KICAgYXdhaXQgYWN0aXZhdGVUaGVuKGFzeW5jICgpID0+IHsKICAgICBjb25zdCBzaG93
UHJvbWlzZSA9IHJlcXVlc3Quc2hvdygpOwpAQCAtMTY0LDkgKzE3MSwxMCBAQCBwcm9taXNlX3Rl
c3QoYXN5bmMgdCA9PiB7CiAgICAgICBpZnJhbWUuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIHJl
c29sdmUpOwogICAgICAgaWZyYW1lLnNyYyA9ICJyZXNvdXJjZXMvcGFnZTIuaHRtbCI7CiAgICAg
fSk7Ci0gICAgYXdhaXQgcHJvbWlzZV9yZWplY3RzKAorICAgIGF3YWl0IHByb21pc2VfcmVqZWN0
c19kb20oCiAgICAgICB0LAogICAgICAgIkFib3J0RXJyb3IiLAorICAgICAgaWZyYW1lRE9NRXhj
ZXB0aW9uLAogICAgICAgc2hvd1Byb21pc2UsCiAgICAgICAiVGhlIGlmcmFtZSB3YXMgbmF2aWdh
dGVkIGF3YXksIHNvIHNob3dQcm9taXNlIG11c3QgcmVqZWN0IHdpdGggQWJvcnRFcnJvciIKICAg
ICApOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC91
cGRhdGVXaXRoLW1ldGhvZC1wbWktaGFuZGxpbmcuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QvdXBkYXRlV2l0aC1tZXRob2QtcG1pLWhhbmRsaW5nLmh0
dHBzLmh0bWwKaW5kZXggMTJjNjA5NjhhYjU5N2Y1YzkxMGY4MDdmMTI5MjJjOTRjNTE4NDY3NC4u
NTk4MWM2ZWQyMmFiMDJkMmNiMDg4NDlmOTQyMWFiZmM4ODA0NWM1MyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdC91cGRhdGVXaXRoLW1ldGhvZC1wbWkt
aGFuZGxpbmcuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3BheW1lbnRy
ZXF1ZXN0L3VwZGF0ZVdpdGgtbWV0aG9kLXBtaS1oYW5kbGluZy5odHRwcy5odG1sCkBAIC04Niw3
ICs4Niw3IEBAIGZ1bmN0aW9uIHJ1blRlc3QoYnV0dG9uLCB7IGludmFsaWRNZXRob2QgfSkgewog
ICAgIHJlcXVlc3Qub25zaGlwcGluZ2FkZHJlc3NjaGFuZ2UgPSBsaXN0ZW5lcjsKICAgICAvLyBy
ZXF1ZXN0LmFkZEV2ZW50TGlzdGVuZXIoInNoaXBwaW5nYWRkcmVzc2NoYW5nZSIsIGxpc3RlbmVy
LCB7IG9uY2U6IHRydWUgfSk7CiAgICAgY29uc3Qgc2hvd1Byb21pc2UgPSByZXF1ZXN0LnNob3co
KTsKLSAgICBhd2FpdCBwcm9taXNlX3JlamVjdHModCwgbmV3IFJhbmdlRXJyb3IoKSwgc2hvd1By
b21pc2UpOworICAgIGF3YWl0IHByb21pc2VfcmVqZWN0c19qcyh0LCBSYW5nZUVycm9yLCBzaG93
UHJvbWlzZSk7CiAgIH0sIGJ1dHRvbi50ZXh0Q29udGVudC50cmltKCkpOwogfQogPC9zY3JpcHQ+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2J5cGFzc2luZy1j
b3JzLWNoZWNrcy1mb3ItZXh0ZW5zaW9uLXVybHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvYnlwYXNzaW5nLWNvcnMtY2hlY2tzLWZvci1leHRlbnNpb24tdXJscy5odG1s
CmluZGV4IDllOGRlYTFmZjdlNTBiZDQ4NWY0YWZiYWIzOTk4YTUwY2VhNzQzMmUuLjc0NTNkNzA0
NWQwM2M0YmNiZjdhNWU0NDgxNmJmZTcyMjA4YTExMzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvYnlwYXNzaW5nLWNvcnMtY2hlY2tzLWZvci1leHRlbnNpb24t
dXJscy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvYnlwYXNzaW5n
LWNvcnMtY2hlY2tzLWZvci1leHRlbnNpb24tdXJscy5odG1sCkBAIC0xNiw3ICsxNiw3IEBACiAg
ICAgdGVzdCgoKSA9PiB7CiAgICAgICAgIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwogICAg
ICAgICB4aHIub3BlbigiR0VUIiwgInNhZmFyaS1leHRlbnNpb246Ly90ZXN0MSIsIGZhbHNlKTsK
LSAgICAgICAgYXNzZXJ0X3Rocm93cyh7bmFtZTogIk5ldHdvcmtFcnJvciJ9LCAoKSA9PiB7IHho
ci5zZW5kKCkgfSk7CisgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJOZXR3b3JrRXJyb3IiLCAo
KSA9PiB7IHhoci5zZW5kKCkgfSk7CiAgICAgfSwgIkJ5cGFzc2luZyBDT1JTIG9uIHN5bmNocm9u
b3VzIFhIUiAtIHNob3VsZCB0cmlnZ2VyIGEgQ09SUyBlcnJvciBtZXNzYWdlIik7CiAKICAgICB0
ZXN0KCgpID0+IHsKQEAgLTI0LDExICsyNCwxMSBAQAogCiAgICAgICAgIHhociA9IG5ldyBYTUxI
dHRwUmVxdWVzdCgpOwogICAgICAgICB4aHIub3BlbigiR0VUIiwgInNhZmFyaS1leHRlbnNpb246
Ly90ZXN0MyIsIGZhbHNlKTsKLSAgICAgICAgYXNzZXJ0X3Rocm93cyh7bmFtZTogIk5ldHdvcmtF
cnJvciJ9LCAoKSA9PiB7IHhoci5zZW5kKCkgfSk7CisgICAgICAgIGFzc2VydF90aHJvd3NfZG9t
KCJOZXR3b3JrRXJyb3IiLCAoKSA9PiB7IHhoci5zZW5kKCkgfSk7CiAgICAgfSwgIkJ5cGFzc2lu
ZyBDT1JTIG9uIHN5bmNocm9ub3VzIFhIUiAtIHNob3VsZCBub3QgdHJpZ2dlciBhIENPUlMgZXJy
b3IgbWVzc2FnZSIpOwogCiAgICAgcHJvbWlzZV90ZXN0KCh0ZXN0KSA9PiB7Ci0gICAgICAgIHJl
dHVybiBwcm9taXNlX3JlamVjdHModGVzdCwgbmV3IFR5cGVFcnJvciwgZmV0Y2goInNhZmFyaS1l
eHRlbnNpb246Ly90ZXN0NCIpKTsKKyAgICAgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19qcyh0
ZXN0LCBUeXBlRXJyb3IsIGZldGNoKCJzYWZhcmktZXh0ZW5zaW9uOi8vdGVzdDQiKSk7CiAgICAg
fSwgIkJ5cGFzc2luZyBDT1JTIG9uIGFzeW5jaHJvbm91cyBmZXRjaCAtIHNob3VsZCBub3QgdHJp
Z2dlciBhIENPUlMgZXJyb3IgbWVzc2FnZSIpOwogPC9zY3JpcHQ+CiA8L2JvZHk+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NsZWFuLW9yaWdpbi1jc3MtZXhw
b3NlZC1yZXNvdXJjZS10aW1pbmcuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvY2xlYW4tb3JpZ2luLWNzcy1leHBvc2VkLXJlc291cmNlLXRpbWluZy5odG1sCmluZGV4IDM4
Y2FkZTVjZGFiZTEwYmRhMDk0MTFmZGMxZDdhOGNmNTNiODk2YjYuLjI3YTc2ODI2ZjE3ZGE3ZDJj
NGExZTZhZThlNzMyZDBjYTM0M2ViMGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvY2xlYW4tb3JpZ2luLWNzcy1leHBvc2VkLXJlc291cmNlLXRpbWluZy5odG1s
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY2xlYW4tb3JpZ2luLWNzcy1l
eHBvc2VkLXJlc291cmNlLXRpbWluZy5odG1sCkBAIC05LDYgKzksOCBAQAogPGJvZHk+CiA8ZGl2
IGlkPSJteWRpdiIgc3R5bGU9ImZvbnQ6IDEycHggJ2FoZW0nIj5UZXN0PC9kaXY+CiA8c2NyaXB0
Pgorc2V0dXAoeyBzaW5nbGVfdGVzdDogdHJ1ZSB9KTsKKwogaWYgKHdpbmRvdy5pbnRlcm5hbHMp
IHsKICAgICBpbnRlcm5hbHMuY2xlYXJNZW1vcnlDYWNoZSgpOwogICAgIGludGVybmFscy5pbnZh
bGlkYXRlRm9udENhY2hlKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS8xLjEvZnJhbWUtYW5jZXN0b3JzL2ZyYW1lLWFu
Y2VzdG9ycy1vdmVycmlkZXMteGZvLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS8xLjEvZnJhbWUtYW5jZXN0b3JzL2ZyYW1lLWFuY2Vz
dG9ycy1vdmVycmlkZXMteGZvLmh0bWwKaW5kZXggNzY5NjExMmM5MDk0YTQyY2Y4YzBjZGRlOTc2
NWY0Zjk2ZGIzNDkyNy4uOGNlZTc2YzljZTc0ZWY0ZWUzYjNiMGM5ZDg5NDJmMGY5YTQ4YWI0ZCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJp
dHlQb2xpY3kvMS4xL2ZyYW1lLWFuY2VzdG9ycy9mcmFtZS1hbmNlc3RvcnMtb3ZlcnJpZGVzLXhm
by5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3Vy
aXR5UG9saWN5LzEuMS9mcmFtZS1hbmNlc3RvcnMvZnJhbWUtYW5jZXN0b3JzLW92ZXJyaWRlcy14
Zm8uaHRtbApAQCAtMTksNyArMTksNyBAQAogICAgICAgICAgICAgdmFyIGkgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdpZnJhbWUnKTsKICAgICAgICAgICAgIGkuc3JjID0gIi4uLy4uL3Jlc291
cmNlcy9mcmFtZS1hbmNlc3RvcnMtYW5kLXgtZnJhbWUtb3B0aW9ucy5wbD9wb2xpY3k9b3RoZXIt
b3JpZ2luLmNvbSZ4Zm89U0FNRU9SSUdJTiI7CiAgICAgICAgICAgICBpLm9ubG9hZCA9IHQuc3Rl
cF9mdW5jX2RvbmUoZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3Mo
CisgICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oCiAgICAgICAgICAgICAgICAgICAg
ICJTZWN1cml0eUVycm9yIiwKICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeyBpLmNv
bnRlbnRXaW5kb3cub3JpZ2luIH0sCiAgICAgICAgICAgICAgICAgICAgICJUaGUgc2FtZS1vcmln
aW4gcGFnZSB3YXMgYmxvY2tlZCBhbmQgc2FuZGJveGVkLiIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvMS4xL3Njcmlw
dGhhc2gtZGVmYXVsdC1zcmMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
Y29udGVudFNlY3VyaXR5UG9saWN5LzEuMS9zY3JpcHRoYXNoLWRlZmF1bHQtc3JjLmh0bWwKaW5k
ZXggZjk3Y2Q1YTIyZDBmYjM0M2NjZTFhZTg4YTA4Njg1ZDNhYjZjMTUwMi4uYmM4ZDhiMWM0YjI0
NDIwMDJjODAwY2RhZWU5NDJhODFkYjEzMTNlMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvMS4xL3NjcmlwdGhhc2gtZGVm
YXVsdC1zcmMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRl
bnRTZWN1cml0eVBvbGljeS8xLjEvc2NyaXB0aGFzaC1kZWZhdWx0LXNyYy5odG1sCkBAIC00LDEw
ICs0LDEwIEBACiAgICAgPHRpdGxlPlNjcmlwdCBIYXNoIGFsbG93IGhhc2ggaW4gZGVmYXVsdC1z
cmM8L3RpdGxlPgogICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvdGVzdGhhcm5l
c3MuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvdGVz
dGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRl
bnQtU2VjdXJpdHktUG9saWN5IiBjb250ZW50PSJkZWZhdWx0LXNyYyAqICdzaGEyNTYtb1M5dUh1
S1BQVC9oZEJPVjdlM0Q5V2EyRzd5VnV4YklQa2FoSi8yNnpFYz0nIj4KKyAgICA8bWV0YSBodHRw
LWVxdWl2PSJDb250ZW50LVNlY3VyaXR5LVBvbGljeSIgY29udGVudD0iZGVmYXVsdC1zcmMgKiAn
c2hhMjU2LUE3ZFpsRWNnaE92QWtkWVYrblUwNEg3cGNlOGxlZUlnZG05cGUvUFJyTlk9JyI+CiAg
ICAgPC9oZWFkPgotCiAgICAgPHNjcmlwdD4KLSAgICBkb25lKCk7CisgICAgICAgIHNldHVwKHsg
c2luZ2xlX3Rlc3Q6IHRydWUgfSk7CisgICAgICAgIGRvbmUoKTsKICAgICA8L3NjcmlwdD4KIDwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVu
dFNlY3VyaXR5UG9saWN5LzEuMS9zdHlsZWhhc2gtZGVmYXVsdC1zcmMuaHRtbCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5LzEuMS9zdHlsZWhh
c2gtZGVmYXVsdC1zcmMuaHRtbAppbmRleCBiNjQ5MzVhZDlkNTVmOGI2OTMzOWUxNWFhNjdjMDhk
ZTIyNzM4NjdlLi4wNzI5ODdiMDBlNzJlZWQxYmQ1MWUwZTY1ZTRlZjg4ZGFkMjI5ZTExIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBv
bGljeS8xLjEvc3R5bGVoYXNoLWRlZmF1bHQtc3JjLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvMS4xL3N0eWxlaGFzaC1kZWZh
dWx0LXNyYy5odG1sCkBAIC0xMSw2ICsxMSw3IEBACiAgICAgPHAgaWQ9InAiPjwvcD4KICAgICA8
c3R5bGU+cCNwIHsgY29sb3I6IGdyZWVuOyB9PC9zdHlsZT4KICAgICA8c2NyaXB0PgorICAgIHNl
dHVwKHsgc2luZ2xlX3Rlc3Q6IHRydWUgfSk7CiAgICAgdmFyIGNvbG9yID0gd2luZG93LmdldENv
bXB1dGVkU3R5bGUoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3AnKSkuY29sb3I7CiAgICAgYXNz
ZXJ0X2VxdWFscyhjb2xvciwgInJnYigwLCAxMjgsIDApIik7CiAgICAgZG9uZSgpOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xp
Y3kvc2NyaXB0LXNyYy1ibG9ja2VkLWVycm9yLWV2ZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9zY3JpcHQtc3JjLWJsb2NrZWQt
ZXJyb3ItZXZlbnQuaHRtbAppbmRleCAwZmQxNjljMjczNWZjODAwZjg2ZjIyZjAyNzMzYWEzZDcx
NDIzYWUxLi5iZjUzZTExMDRmNTRmYzZjYTBlYTZmZGQ3ODE2MTFlN2RhM2Y0NTdjIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGlj
eS9zY3JpcHQtc3JjLWJsb2NrZWQtZXJyb3ItZXZlbnQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9zY3JpcHQtc3JjLWJsb2Nr
ZWQtZXJyb3ItZXZlbnQuaHRtbApAQCAtNiw2ICs2LDcgQEAKICAgICA8c2NyaXB0IHNyYz0iL2pz
LXRlc3QtcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNy
Yz0iL2pzLXRlc3QtcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0PgorICAgICAgICBzZXR1cCh7IHNpbmdsZV90ZXN0OiB0cnVlIH0pOwogICAgICAg
ICB3aW5kb3cucmVzdWx0ID0gZmFsc2U7CiAgICAgICAgIGZ1bmN0aW9uIHNjcmlwdEVycm9yKCkg
ewogICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQsIGZhbHNlLCAiVmFsdWUgc2hvdWxk
IG5vdCBiZSBzZXQiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvY3Jvc3Mtb3JpZ2luLWNsZWFuLWNzcy1yZXNvdXJjZS10aW1pbmcuaHRtbCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLWNsZWFuLWNzcy1yZXNvdXJjZS10
aW1pbmcuaHRtbAppbmRleCA5OGQ4YmZjMGJjZGFlMGJjYzc4NGNhMWE1NmI0ODY2OGE3NzNmMTdm
Li4yZTVlNWI0YTBmYzdhZDM0NTNjNDUxZGNhZmJlZTAxYzllYzQ4NWFiIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi1jbGVhbi1jc3MtcmVz
b3VyY2UtdGltaW5nLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9j
cm9zcy1vcmlnaW4tY2xlYW4tY3NzLXJlc291cmNlLXRpbWluZy5odG1sCkBAIC0xMyw2ICsxMyw3
IEBAIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CiAgICAgaW50ZXJuYWxzLmNsZWFyTWVtb3J5Q2Fj
aGUoKTsKICAgICBpbnRlcm5hbHMuaW52YWxpZGF0ZUZvbnRDYWNoZSgpOwogfQorc2V0dXAoeyBz
aW5nbGVfdGVzdDogdHJ1ZSB9KTsKIGNvbnN0IHdhaXRPbkxvYWQgPSBuZXcgUHJvbWlzZSgocmVz
b2x2ZSkgPT4gewogICAgIHdpbmRvdy5vbmxvYWQgPSByZXNvbHZlOwogfSkKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLWNzcy1yZXNvdXJj
ZS10aW1pbmcuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3Jp
Z2luLWNzcy1yZXNvdXJjZS10aW1pbmcuaHRtbAppbmRleCAxYzcyOGQyYjc3OTZiMWEwODkwY2Rl
ZjUwMWYyZGUwOGJjNjg4OGE4Li4xZTg0ZWI2YjE0MDJjNzE4OGUxYWEzNGM5MzljNzgxNDNkYTli
MWQ0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9y
aWdpbi1jc3MtcmVzb3VyY2UtdGltaW5nLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4tY3NzLXJlc291cmNlLXRpbWluZy5odG1sCkBAIC0xMyw2
ICsxMyw3IEBAIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CiAgICAgaW50ZXJuYWxzLmNsZWFyTWVt
b3J5Q2FjaGUoKTsKICAgICBpbnRlcm5hbHMuaW52YWxpZGF0ZUZvbnRDYWNoZSgpOwogfQorc2V0
dXAoeyBzaW5nbGVfdGVzdDogdHJ1ZSB9KTsKIGNvbnN0IHdhaXRPbkxvYWQgPSBuZXcgUHJvbWlz
ZSgocmVzb2x2ZSkgPT4gewogICAgIHdpbmRvdy5vbmxvYWQgPSByZXNvbHZlOwogfSkKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3VicmVzb3VyY2UtaW50ZWdyaXR5L3NyaS1m
ZXRjaC5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc3VicmVzb3VyY2UtaW50ZWdyaXR5L3Ny
aS1mZXRjaC5qcwppbmRleCBjN2Y5OGQwNDRjOTA3Y2ZhMjM2MTBmNjBhNzVkYTE0NTM4NDk5MzM2
Li45NGE4NzJlNmUzZGI1ZDY2NjZjOWI0NGM0ZGYwYzY2ZDdlMGFhOWEwIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N1YnJlc291cmNlLWludGVncml0eS9zcmktZmV0Y2guanMK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdWJyZXNvdXJjZS1pbnRlZ3JpdHkvc3JpLWZl
dGNoLmpzCkBAIC0yNCw3ICsyNCw3IEBAIGZ1bmN0aW9uIGludGVncml0eShkZXNjLCB1cmwsIG9w
dGlvbnMsIGV4cGVjdGVkRXJyb3IpIHsKICAgICAgICAgfSwgZGVzYyk7CiAgICAgfSBlbHNlIHsK
ICAgICAgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHRlc3QpIHsKLSAgICAgICAgICAgIHJldHVy
biBwcm9taXNlX3JlamVjdHModGVzdCwgZXhwZWN0ZWRFcnJvciwgZmV0Y2godXJsLCBvcHRpb25z
KSk7CisgICAgICAgICAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2pzKHRlc3QsIGV4cGVjdGVk
RXJyb3IsIGZldGNoKHVybCwgb3B0aW9ucykpOwogICAgICAgICB9LCBkZXNjKTsKICAgICB9CiB9
CkBAIC00MCwyNSArNDAsMjUgQEAgaW50ZWdyaXR5KCJFbXB0eSBzdHJpbmcgaW50ZWdyaXR5Iiwg
cmVzb3VyY2UsIHsgJ2ludGVncml0eSc6ICIiIH0pOwogaW50ZWdyaXR5KCJTSEEtMjU2IGludGVn
cml0eSIsIHJlc291cmNlLCB7ICdpbnRlZ3JpdHknOiB0b3BTaGEyNTYgfSk7CiBpbnRlZ3JpdHko
IlNIQS0zODQgaW50ZWdyaXR5IiwgcmVzb3VyY2UsIHsgJ2ludGVncml0eSc6IHRvcFNoYTM4NCB9
KTsKIGludGVncml0eSgiU0hBLTUxMiBpbnRlZ3JpdHkiLCByZXNvdXJjZSwgeyAnaW50ZWdyaXR5
JzogdG9wU2hhNTEyIH0pOwotaW50ZWdyaXR5KCJJbnZhbGlkIGludGVncml0eSIsIHJlc291cmNl
LCB7ICdpbnRlZ3JpdHknOiBpbnZhbGlkU2hhMjU2IH0sIG5ldyBUeXBlRXJyb3IoKSk7CitpbnRl
Z3JpdHkoIkludmFsaWQgaW50ZWdyaXR5IiwgcmVzb3VyY2UsIHsgJ2ludGVncml0eSc6IGludmFs
aWRTaGEyNTYgfSwgVHlwZUVycm9yKTsKIGludGVncml0eSgiVW5rbm93biBpbnRlZ3JpdHkiLCBy
ZXNvdXJjZSwgeyAnaW50ZWdyaXR5JzogdW5rbm93bkFsZ29yaXRobSB9KTsKIGludGVncml0eSgi
TXVsdGlwbGUgaW50ZWdyaXRpZXM6IHZhbGlkIHN0cm9uZ2VyIHRoYW4gaW52YWxpZCIsIHJlc291
cmNlLCB7ICdpbnRlZ3JpdHknOiBpbnZhbGlkU2hhMjU2ICsgIiAiICsgdG9wU2hhMzg0IH0pOwot
aW50ZWdyaXR5KCJNdWx0aXBsZSBpbnRlZ3JpdGllczogaW52YWxpZCBzdHJvbmdlciB0aGFuIHZh
bGlkIiwgcmVzb3VyY2UsIHsgJ2ludGVncml0eSc6IGludmFsaWRTaGE1MTIgKyAiICIgKyB0b3BT
aGEzODQgfSwgbmV3IFR5cGVFcnJvcigpKTsKK2ludGVncml0eSgiTXVsdGlwbGUgaW50ZWdyaXRp
ZXM6IGludmFsaWQgc3Ryb25nZXIgdGhhbiB2YWxpZCIsIHJlc291cmNlLCB7ICdpbnRlZ3JpdHkn
OiBpbnZhbGlkU2hhNTEyICsgIiAiICsgdG9wU2hhMzg0IH0sIFR5cGVFcnJvcik7CiBpbnRlZ3Jp
dHkoIk11bHRpcGxlIGludGVncml0aWVzOiBpbnZhbGlkIGFzIHN0cm9uZyBhcyB2YWxpZCIsIHJl
c291cmNlLCB7ICdpbnRlZ3JpdHknOiBpbnZhbGlkU2hhNTEyICsgIiAiICsgdG9wU2hhNTEyIH0p
OwogaW50ZWdyaXR5KCJNdWx0aXBsZSBpbnRlZ3JpdGllczogYm90aCBhcmUgdmFsaWQiLCByZXNv
dXJjZSwgIHsgJ2ludGVncml0eSc6IHRvcFNoYTM4NCArICIgIiArIHRvcFNoYTUxMiB9KTsKLWlu
dGVncml0eSgiTXVsdGlwbGUgaW50ZWdyaXRpZXM6IGJvdGggYXJlIGludmFsaWQiLCByZXNvdXJj
ZSwgeyAnaW50ZWdyaXR5JzogaW52YWxpZFNoYTI1NiArICIgIiArIGludmFsaWRTaGE1MTIgfSwg
bmV3IFR5cGVFcnJvcigpKTsKK2ludGVncml0eSgiTXVsdGlwbGUgaW50ZWdyaXRpZXM6IGJvdGgg
YXJlIGludmFsaWQiLCByZXNvdXJjZSwgeyAnaW50ZWdyaXR5JzogaW52YWxpZFNoYTI1NiArICIg
IiArIGludmFsaWRTaGE1MTIgfSwgVHlwZUVycm9yKTsKIGludGVncml0eSgiQW5vbnltb3VzIENP
UlMgZW1wdHkgaW50ZWdyaXR5IiwgY3Jvc3NvcmlnaW5fYW5vbl9yZXNvdXJjZSwgeyAnaW50ZWdy
aXR5JzogIiIgfSk7CiBpbnRlZ3JpdHkoIkFub255bW91cyBDT1JTIFNIQS01MTIgaW50ZWdyaXR5
IiwgY3Jvc3NvcmlnaW5fYW5vbl9yZXNvdXJjZSwgeyAnaW50ZWdyaXR5JzogdG9wU2hhNTEyIH0p
OwotaW50ZWdyaXR5KCJBbm9ueW1vdXMgQ09SUyBpbnZhbGlkIGludGVncml0eSIsIGNyb3Nzb3Jp
Z2luX2Fub25fcmVzb3VyY2UsIHsgJ2ludGVncml0eSc6IGludmFsaWRTaGE1MTIgfSwgbmV3IFR5
cGVFcnJvcigpKTsKK2ludGVncml0eSgiQW5vbnltb3VzIENPUlMgaW52YWxpZCBpbnRlZ3JpdHki
LCBjcm9zc29yaWdpbl9hbm9uX3Jlc291cmNlLCB7ICdpbnRlZ3JpdHknOiBpbnZhbGlkU2hhNTEy
IH0sIFR5cGVFcnJvcik7CiAKIC8vIEZJWE1FOiBVcHN0cmVhbSB0aGVzZSBhZGRpdGlvbmFsIHRl
c3RzIHRvIHRoZSBvZmZpY2lhbCB3ZWItcGxhdGZvcm0tdGVzdHMgcmVwb3NpdG9yeS4KIAogaW50
ZWdyaXR5KCJDcmVkZW50aWFsIENPUlMgZW1wdHkgaW50ZWdyaXR5IiwgY3Jvc3NvcmlnaW5fY3Jl
ZHNfcmVzb3VyY2UsIHsgJ2ludGVncml0eSc6ICIiLCAnY3JlZGVudGlhbHMnOiAnaW5jbHVkZScg
fSk7CiBpbnRlZ3JpdHkoIkNyZWRlbnRpYWwgQ09SUyBTSEEtNTEyIGludGVncml0eSIsIGNyb3Nz
b3JpZ2luX2NyZWRzX3Jlc291cmNlLCB7ICdpbnRlZ3JpdHknOiB0b3BTaGE1MTIsICdjcmVkZW50
aWFscyc6ICdpbmNsdWRlJyB9KTsKLWludGVncml0eSgiQ3JlZGVudGlhbCBDT1JTIGludmFsaWQg
aW50ZWdyaXR5IiwgY3Jvc3NvcmlnaW5fY3JlZHNfcmVzb3VyY2UsIHsgJ2ludGVncml0eSc6IGlu
dmFsaWRTaGE1MTIsICdjcmVkZW50aWFscyc6ICdpbmNsdWRlJyB9LCBuZXcgVHlwZUVycm9yKCkp
OwotaW50ZWdyaXR5KCJJbmVsaWdpYmxlIENPUlMgZW1wdHkgaW50ZWdyaXR5IiwgY3Jvc3Nvcmln
aW5faW5lbGlnaWJsZV9yZXNvdXJjZSwgeyAnaW50ZWdyaXR5JzogIiIgfSwgbmV3IFR5cGVFcnJv
cigpKTsKLWludGVncml0eSgiSW5lbGlnaWJsZSBDT1JTIFNIQS01MTIgaW50ZWdyaXR5IiwgY3Jv
c3NvcmlnaW5faW5lbGlnaWJsZV9yZXNvdXJjZSwgeyAnaW50ZWdyaXR5JzogdG9wU2hhNTEyIH0s
IG5ldyBUeXBlRXJyb3IoKSk7Ci1pbnRlZ3JpdHkoIkluZWxpZ2libGUgQ09SUyBpbnZhbGlkIGlu
dGVncml0eSIsIGNyb3Nzb3JpZ2luX2luZWxpZ2libGVfcmVzb3VyY2UsIHsgJ2ludGVncml0eSc6
IGludmFsaWRTaGE1MTIgfSwgbmV3IFR5cGVFcnJvcigpKTsKK2ludGVncml0eSgiQ3JlZGVudGlh
bCBDT1JTIGludmFsaWQgaW50ZWdyaXR5IiwgY3Jvc3NvcmlnaW5fY3JlZHNfcmVzb3VyY2UsIHsg
J2ludGVncml0eSc6IGludmFsaWRTaGE1MTIsICdjcmVkZW50aWFscyc6ICdpbmNsdWRlJyB9LCBU
eXBlRXJyb3IpOworaW50ZWdyaXR5KCJJbmVsaWdpYmxlIENPUlMgZW1wdHkgaW50ZWdyaXR5Iiwg
Y3Jvc3NvcmlnaW5faW5lbGlnaWJsZV9yZXNvdXJjZSwgeyAnaW50ZWdyaXR5JzogIiIgfSwgVHlw
ZUVycm9yKTsKK2ludGVncml0eSgiSW5lbGlnaWJsZSBDT1JTIFNIQS01MTIgaW50ZWdyaXR5Iiwg
Y3Jvc3NvcmlnaW5faW5lbGlnaWJsZV9yZXNvdXJjZSwgeyAnaW50ZWdyaXR5JzogdG9wU2hhNTEy
IH0sIFR5cGVFcnJvcik7CitpbnRlZ3JpdHkoIkluZWxpZ2libGUgQ09SUyBpbnZhbGlkIGludGVn
cml0eSIsIGNyb3Nzb3JpZ2luX2luZWxpZ2libGVfcmVzb3VyY2UsIHsgJ2ludGVncml0eSc6IGlu
dmFsaWRTaGE1MTIgfSwgVHlwZUVycm9yKTsKIGludGVncml0eSgiU0hBLTI1NiBpbnRlZ3JpdHkg
d2l0aCAnbm8tY29ycycgbW9kZSIsIHJlc291cmNlLCB7ICdpbnRlZ3JpdHknOiB0b3BTaGEyNTYs
ICdtb2RlJzogJ25vLWNvcnMnIH0pOwogaW50ZWdyaXR5KCJSZXNvdXJjZSB3aXRoIHplcm8gbGVu
Z3RoIGJvZHkiLCBlbXB0eV9yZXNvdXJjZSwgeyAnaW50ZWdyaXR5JzogIjQ3REVRcGo4SEJTYSsv
VEltVys1SkNldVFlUmttNU5NcEpXWkczaFN1RlU9IiB9KTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2VydmljZS13b3JrZXItY3Jvc3Nvcmln
aW4tZmV0Y2guaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZpY2Utd29ya2VyLWNyb3Nzb3JpZ2luLWZldGNoLmh0bWwKaW5kZXggZmFkNTA1N2ZhODhjNzUx
ODVlMmQ4YWI5ZDlkNzg3YzBlOTFmNDIxNi4uY2U2OGFkNTJlMmI1Yzg5NzhmOTU0M2ZjNjMwZDVl
YWUwMjQ5Y2E3NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3Nl
cnZpY2Uvc2VydmljZS13b3JrZXItY3Jvc3NvcmlnaW4tZmV0Y2guaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9zZXJ2aWNlLXdvcmtlci1jcm9zc29yaWdp
bi1mZXRjaC5odG1sCkBAIC05LDcgKzksNyBAQAogcHJvbWlzZV90ZXN0KHRlc3QgPT4gewogICAg
IC8vIFRyaWdnZXJpbmcgcG90ZW50aWFsIHByZWZsaWdodCB0aHJvdWdoIGN1c3RvbSBoZWFkZXIu
CiAgICAgdmFyIGZldGNoUHJvbWlzZSA9IGZldGNoKCJodHRwOi8vbG9jYWxob3N0OjgwODAvcmVz
b3VyY2VzL3NxdWFyZTEwMC5wbmcuZnJvbXNlcnZpY2V3b3JrZXIiLCB7IGhlYWRlcnM6IHsiY3Vz
dG9tIjogImhlYWRlciJ9fSk7Ci0gICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0ZXN0LCBuZXcg
VHlwZUVycm9yKCksIGZldGNoUHJvbWlzZSk7CisgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19q
cyh0ZXN0LCBUeXBlRXJyb3IsIGZldGNoUHJvbWlzZSk7CiB9LCAiVGVzdGluZyB1bmludGVyY2Vw
dGVkIGZldGNoIHdpdGggcHJlZmxpZ2h0LCBmZXRjaCBzaG91bGQgZmFpbCIpOwogCiB2YXIgZnJh
bWU7CkBAIC0yNyw3ICsyNyw3IEBAIHByb21pc2VfdGVzdChhc3luYyB0ZXN0ID0+IHsKIHByb21p
c2VfdGVzdCh0ZXN0ID0+IHsKICAgICAvLyBUcmlnZ2VyaW5nIHBvdGVudGlhbCBwcmVmbGlnaHQg
dGhyb3VnaCBjdXN0b20gaGVhZGVyLgogICAgIHZhciBmZXRjaFByb21pc2UgPSBmcmFtZS5jb250
ZW50V2luZG93LmZldGNoKCJodHRwOi8vbG9jYWxob3N0OjgwODAvcmVzb3VyY2VzL3NxdWFyZTEw
MC5wbmcuZXJyb3IuZnJvbXNlcnZpY2V3b3JrZXIiLCB7IGhlYWRlcnM6IHsiY3VzdG9tIjogImhl
YWRlciJ9fSk7Ci0gICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0ZXN0LCBuZXcgVHlwZUVycm9y
KCksIGZldGNoUHJvbWlzZSk7CisgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19qcyh0ZXN0LCBm
cmFtZS5jb250ZW50V2luZG93LlR5cGVFcnJvciwgZmV0Y2hQcm9taXNlKTsKIH0sICJUZXN0aW5n
IGludGVyY2VwdGVkIGZldGNoIHdpdGggcHJlZmxpZ2h0LCBmZXRjaCBzaG91bGQgZmFpbCIpOwog
PC9zY3JpcHQ+CiA8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ht
bGh0dHByZXF1ZXN0L3NldC1iYWQtaGVhZGVydmFsdWUuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMveG1saHR0cHJlcXVlc3Qvc2V0LWJhZC1oZWFkZXJ2YWx1ZS5odG1sCmluZGV4IDhiYTMw
MzMyMmU2MWZiZmI3NzMyNGFjY2EyOGQ4NTQ3MWM0OTgxODcuLjhjMjgyYzhhMzQ1MGEzNmJhMzFi
NTk3YTM3ZTMyZjA4YmU4YWFlMDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
eG1saHR0cHJlcXVlc3Qvc2V0LWJhZC1oZWFkZXJ2YWx1ZS5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvc2V0LWJhZC1oZWFkZXJ2YWx1ZS5odG1sCkBAIC0x
MCwyMCArMTAsMjIgQEAKICAgPGJvZHk+CiAgICAgPGRpdiBpZD0ibG9nIj48L2Rpdj4KICAgICA8
c2NyaXB0PgotICAgICAgZnVuY3Rpb24gdHJ5X3ZhbHVlKHZhbHVlLCBleHBlY3RFcnJvcikgewor
ICAgICAgZnVuY3Rpb24gdHJ5X3ZhbHVlKHZhbHVlLCBleHBlY3RFcnJvciwgaXNET01FcnJvcikg
ewogICAgICAgICB0ZXN0KGZ1bmN0aW9uKCkgewogICAgICAgICAgIHZhciBjbGllbnQgPSBuZXcg
WE1MSHR0cFJlcXVlc3QoKQogICAgICAgICAgIGNsaWVudC5vcGVuKCJHRVQiLCAiLi4uIikKLSAg
ICAgICAgICBpZiAoZXhwZWN0RXJyb3IpCi0gICAgICAgICAgICAgIGFzc2VydF90aHJvd3MoZXhw
ZWN0RXJyb3IsIGZ1bmN0aW9uKCkgeyBjbGllbnQuc2V0UmVxdWVzdEhlYWRlcigieC10ZXN0Iiwg
dmFsdWUpIH0sICcgZ2l2ZW4gdmFsdWUgJyArIHZhbHVlKycsICcpCisgICAgICAgICAgaWYgKGV4
cGVjdEVycm9yICYmIGlzRE9NRXJyb3IpCisgICAgICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9t
KGV4cGVjdEVycm9yLCBmdW5jdGlvbigpIHsgY2xpZW50LnNldFJlcXVlc3RIZWFkZXIoIngtdGVz
dCIsIHZhbHVlKSB9LCAnIGdpdmVuIHZhbHVlICcgKyB2YWx1ZSsnLCAnKQorICAgICAgICAgIGVs
c2UgaWYgKGV4cGVjdEVycm9yKQorICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKGV4cGVj
dEVycm9yLCBmdW5jdGlvbigpIHsgY2xpZW50LnNldFJlcXVlc3RIZWFkZXIoIngtdGVzdCIsIHZh
bHVlKSB9LCAnIGdpdmVuIHZhbHVlICcgKyB2YWx1ZSsnLCAnKQogICAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgICAgY2xpZW50LnNldFJlcXVlc3RIZWFkZXIoIngtdGVzdCIsIHZhbHVlKSAgCiAg
ICAgICAgICAgfSkKICAgICAgIH0KIAotICAgICAgdHJ5X3ZhbHVlKCJ0XHJ0Iiwge25hbWU6J1N5
bnRheEVycm9yJ30pCi0gICAgICB0cnlfdmFsdWUoInRcbnQiLCB7bmFtZTonU3ludGF4RXJyb3In
fSkKLSAgICAgIHRyeV92YWx1ZSgi776D7729776EIiwge25hbWU6J1R5cGVFcnJvcid9KQorICAg
ICAgdHJ5X3ZhbHVlKCJ0XHJ0IiwgJ1N5bnRheEVycm9yJywgdHJ1ZSkKKyAgICAgIHRyeV92YWx1
ZSgidFxudCIsICdTeW50YXhFcnJvcicsIHRydWUpCisgICAgICB0cnlfdmFsdWUoIu++g++9ve++
hCIsIFR5cGVFcnJvciwgZmFsc2UpCiAgICAgICB0cnlfdmFsdWUoInRcYnQiKQogICAgICAgdHJ5
X3ZhbHVlKCJ0XHZ0IikKICAgICAgIHRyeV92YWx1ZSgidFx0dCIpCkBAIC0zMyw3ICszNSw3IEBA
CiAgICAgICB0ZXN0KGZ1bmN0aW9uKCkgewogICAgICAgICB2YXIgY2xpZW50ID0gbmV3IFhNTEh0
dHBSZXF1ZXN0KCkKICAgICAgICAgY2xpZW50Lm9wZW4oIkdFVCIsICIuLi4iKQotICAgICAgICBh
c3NlcnRfdGhyb3dzKHtuYW1lOidUeXBlRXJyb3InfSwgZnVuY3Rpb24oKSB7IGNsaWVudC5zZXRS
ZXF1ZXN0SGVhZGVyKCJ4LXRlc3QiKSB9KQorICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVF
cnJvciwgZnVuY3Rpb24oKSB7IGNsaWVudC5zZXRSZXF1ZXN0SGVhZGVyKCJ4LXRlc3QiKSB9KQog
ICAgICAgfSkKICAgICA8L3NjcmlwdD4KICAgPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2Nsb3NlLWluLXVwZ3Jh
ZGVuZWVkZWQuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0
ZS1icm93c2luZy9jbG9zZS1pbi11cGdyYWRlbmVlZGVkLmh0bWwKaW5kZXggMmUwMGI0ZTg1NmZj
MzQ2NTgwNTlhZmNmZWIzODE1MzFiMjhiZDE3MS4uMDE1ZWYwYmExOTJmZjRiZTgxOTg5ZTA1ZjA0
ODQ2NjAyYWNiZDE4ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4
ZWREQi1wcml2YXRlLWJyb3dzaW5nL2Nsb3NlLWluLXVwZ3JhZGVuZWVkZWQuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvY2xvc2Ut
aW4tdXBncmFkZW5lZWRlZC5odG1sCkBAIC0yOSw3ICsyOSw3IEBAIG9wZW5fcnEub25lcnJvciA9
IGZ1bmN0aW9uKGUpIHsKICAgICBhc3NlcnRfdHJ1ZSghIWRiKQogICAgIGFzc2VydF9lcXVhbHMo
ZGIudmVyc2lvbiwgMSkKICAgICBhc3NlcnRfZXF1YWxzKGRiLm9iamVjdFN0b3JlTmFtZXMubGVu
Z3RoLCAxKQotICAgIGFzc2VydF90aHJvd3MoIkludmFsaWRTdGF0ZUVycm9yIiwgZnVuY3Rpb24o
KSB7IGRiLnRyYW5zYWN0aW9uKCdvcycpIH0pCisgICAgYXNzZXJ0X3Rocm93c19kb20oIkludmFs
aWRTdGF0ZUVycm9yIiwgZnVuY3Rpb24oKSB7IGRiLnRyYW5zYWN0aW9uKCdvcycpIH0pCiAKICAg
ICB0aGlzLmRvbmUoKQogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0lu
ZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvci1hZHZhbmNlLWludmFsaWQuaHRtbCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJj
dXJzb3ItYWR2YW5jZS1pbnZhbGlkLmh0bWwKaW5kZXggZTI1MDRiOWU0MWU2ODk5MmU3MGI2MTFh
NWFkMjk2NDhiYTRmMTY3Ni4uNDQ4MmQ2OGQyMTU2ZmI4MjU3N2NmNzY3NmNhMzg0N2M4OGZiMmVj
NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRl
LWJyb3dzaW5nL2lkYmN1cnNvci1hZHZhbmNlLWludmFsaWQuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yLWFkdmFu
Y2UtaW52YWxpZC5odG1sCkBAIC00NiwxMCArNDYsMTAgQEAKICAgICAgICAgICAgICAgICBjdXJz
b3IuYWR2YW5jZSgxKTsKIAogICAgICAgICAgICAgICAgIC8vIFNlY29uZCB0cnkKLSAgICAgICAg
ICAgICAgICBhc3NlcnRfdGhyb3dzKCdJbnZhbGlkU3RhdGVFcnJvcicsCisgICAgICAgICAgICAg
ICAgYXNzZXJ0X3Rocm93c19kb20oJ0ludmFsaWRTdGF0ZUVycm9yJywKICAgICAgICAgICAgICAg
ICAgICAgZnVuY3Rpb24oKSB7IGN1cnNvci5hZHZhbmNlKDEpOyB9LCAnc2Vjb25kIGFkdmFuY2Un
KTsKIAotICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3MoJ0ludmFsaWRTdGF0ZUVycm9yJywK
KyAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgnSW52YWxpZFN0YXRlRXJyb3InLAog
ICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsgY3Vyc29yLmFkdmFuY2UoMyk7IH0sICd0
aGlyZCBhZHZhbmNlJyk7CiAKICAgICAgICAgICAgICAgICBjb3VudCsrOwpAQCAtNjQsMTkgKzY0
LDE5IEBACiAgICAgICAgICAgICBycS5vbnN1Y2Nlc3MgPSB0aGlzLnN0ZXBfZnVuYyhmdW5jdGlv
bihlKSB7CiAgICAgICAgICAgICAgICAgdmFyIGN1cnNvciA9IGUudGFyZ2V0LnJlc3VsdDsKIAot
ICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3MoeyBuYW1lOiAiVHlwZUVycm9yIiB9LAorICAg
ICAgICAgICAgICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLAogICAgICAgICAgICAgICAg
ICAgICBmdW5jdGlvbigpIHsgY3Vyc29yLmFkdmFuY2UoZG9jdW1lbnQpOyB9KTsKIAotICAgICAg
ICAgICAgICAgIGFzc2VydF90aHJvd3MoeyBuYW1lOiAiVHlwZUVycm9yIiB9LAorICAgICAgICAg
ICAgICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICBm
dW5jdGlvbigpIHsgY3Vyc29yLmFkdmFuY2Uoe30pOyB9KTsKIAotICAgICAgICAgICAgICAgIGFz
c2VydF90aHJvd3MoeyBuYW1lOiAiVHlwZUVycm9yIiB9LAorICAgICAgICAgICAgICAgIGFzc2Vy
dF90aHJvd3NfanMoVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsg
Y3Vyc29yLmFkdmFuY2UoW10pOyB9KTsKIAotICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3Mo
eyBuYW1lOiAiVHlwZUVycm9yIiB9LAorICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3NfanMo
VHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsgY3Vyc29yLmFkdmFu
Y2UoIiIpOyB9KTsKIAotICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3MoeyBuYW1lOiAiVHlw
ZUVycm9yIiB9LAorICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLAog
ICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsgY3Vyc29yLmFkdmFuY2UoIjEgMiIpOyB9
KTsKIAogICAgICAgICAgICAgICAgIHRoaXMuZG9uZSgpOwpAQCAtOTEsMTQgKzkxLDE0IEBACiAg
ICAgICAgICAgICBycS5vbnN1Y2Nlc3MgPSB0aGlzLnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7CiAg
ICAgICAgICAgICAgICAgdmFyIGN1cnNvciA9IGUudGFyZ2V0LnJlc3VsdDsKIAotICAgICAgICAg
ICAgICAgIGFzc2VydF90aHJvd3MoeyBuYW1lOiAiVHlwZUVycm9yIiB9LAorICAgICAgICAgICAg
ICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICBmdW5j
dGlvbigpIHsgY3Vyc29yLmFkdmFuY2UobnVsbCk7IH0pOwogCi0gICAgICAgICAgICAgICAgYXNz
ZXJ0X3Rocm93cyh7IG5hbWU6ICJUeXBlRXJyb3IiIH0sCisgICAgICAgICAgICAgICAgYXNzZXJ0
X3Rocm93c19qcyhUeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyBj
dXJzb3IuYWR2YW5jZSh1bmRlZmluZWQpOyB9KTsKIAogICAgICAgICAgICAgICAgIHZhciBteXZh
ciA9IG51bGw7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyh7IG5hbWU6ICJUeXBlRXJy
b3IiIH0sCisgICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsCiAgICAg
ICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyBjdXJzb3IuYWR2YW5jZShteXZhcik7IH0pOwog
CiAgICAgICAgICAgICAgICAgdGhpcy5kb25lKCk7CkBAIC0xMTMsNyArMTEzLDcgQEAKICAgICAg
ICAgICAgIHJxLm9uc3VjY2VzcyA9IHRoaXMuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsKICAgICAg
ICAgICAgICAgICB2YXIgY3Vyc29yID0gZS50YXJnZXQucmVzdWx0OwogCi0gICAgICAgICAgICAg
ICAgYXNzZXJ0X3Rocm93cyh7IG5hbWU6ICJUeXBlRXJyb3IiIH0sCisgICAgICAgICAgICAgICAg
YXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9u
KCkgeyBjdXJzb3IuYWR2YW5jZSgpOyB9KTsKIAogICAgICAgICAgICAgICAgIHRoaXMuZG9uZSgp
OwpAQCAtMTI4LDI2ICsxMjgsMjYgQEAKICAgICAgICAgICAgIHJxLm9uc3VjY2VzcyA9IHRoaXMu
c3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICB2YXIgY3Vyc29yID0gZS50
YXJnZXQucmVzdWx0OwogCi0gICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyh7IG5hbWU6ICJU
eXBlRXJyb3IiIH0sCisgICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3Is
CiAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyBjdXJzb3IuYWR2YW5jZSgtMSk7IH0p
OwogCi0gICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyh7IG5hbWU6ICJUeXBlRXJyb3IiIH0s
CisgICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsCiAgICAgICAgICAg
ICAgICAgICAgIGZ1bmN0aW9uKCkgeyBjdXJzb3IuYWR2YW5jZShOYU4pOyB9KTsKIAotICAgICAg
ICAgICAgICAgIGFzc2VydF90aHJvd3MoeyBuYW1lOiAiVHlwZUVycm9yIiB9LAorICAgICAgICAg
ICAgICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICBm
dW5jdGlvbigpIHsgY3Vyc29yLmFkdmFuY2UoMCk7IH0pOwogCi0gICAgICAgICAgICAgICAgYXNz
ZXJ0X3Rocm93cyh7IG5hbWU6ICJUeXBlRXJyb3IiIH0sCisgICAgICAgICAgICAgICAgYXNzZXJ0
X3Rocm93c19qcyhUeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyBj
dXJzb3IuYWR2YW5jZSgtMCk7IH0pOwogCi0gICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyh7
IG5hbWU6ICJUeXBlRXJyb3IiIH0sCisgICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhU
eXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyBjdXJzb3IuYWR2YW5j
ZShJbmZpbml0eSk7IH0pOwogCi0gICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyh7IG5hbWU6
ICJUeXBlRXJyb3IiIH0sCisgICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJy
b3IsCiAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyBjdXJzb3IuYWR2YW5jZSgtSW5m
aW5pdHkpOyB9KTsKIAogICAgICAgICAgICAgICAgIHZhciBteXZhciA9IC05OTk5OTk7Ci0gICAg
ICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyh7IG5hbWU6ICJUeXBlRXJyb3IiIH0sCisgICAgICAg
ICAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAg
IGZ1bmN0aW9uKCkgeyBjdXJzb3IuYWR2YW5jZShteXZhcik7IH0pOwogCiAgICAgICAgICAgICAg
ICAgdGhpcy5kb25lKCk7CkBAIC0xNjksNyArMTY5LDcgQEAKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIGFzc2VydF90aHJv
d3MoeyBuYW1lOiAiVHlwZUVycm9yIiB9LAorICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3Nf
anMoVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsgY3Vyc29yLmFk
dmFuY2UoMCk7IH0pOwogCiAgICAgICAgICAgICAgICAgY3Vyc29yLmFkdmFuY2UoMSk7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Np
bmcvaWRiY3Vyc29yX2FkdmFuY2VfaW5kZXgyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2FkdmFuY2VfaW5kZXgyLmh0
bWwKaW5kZXggMDhmYjA1ZDM2MjdjMzhjMGUxYzlkODgxNzcyNWVmMThmMjZmMjZhZC4uMTFlMDFi
MWUzMzBiYTI0ZWE5ZmZjZjYyNTgxMTUzODNhNTM3MDdiYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9hZHZh
bmNlX2luZGV4Mi5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREIt
cHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfYWR2YW5jZV9pbmRleDIuaHRtbApAQCAtMzUsNyAr
MzUsNyBAQAogICAgICAgICAgICAgdmFyIGN1cnNvciA9IGUudGFyZ2V0LnJlc3VsdDsKIAogICAg
ICAgICAgICAgYXNzZXJ0X3RydWUoY3Vyc29yICE9IG51bGwsICJjdXJzb3IgZXhpc3QiKTsKLSAg
ICAgICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLAorICAgICAgICAgICAgYXNz
ZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7IGN1
cnNvci5hZHZhbmNlKGRvY3VtZW50KTsgfSk7CiAKICAgICAgICAgICAgIHQuZG9uZSgpOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dz
aW5nL2lkYmN1cnNvcl9hZHZhbmNlX2luZGV4My5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9hZHZhbmNlX2luZGV4My5o
dG1sCmluZGV4IGY4YTFhZWYwNzA3YTMwNTJhODFjYjQxZjFhOWY4YmU2NzI5M2EyMDEuLjVjYzQ4
NGVjMWE0NDgwMWMxNDk3YmU2MGMzMjY4MmExY2ZmODk2ZDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfYWR2
YW5jZV9pbmRleDMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERC
LXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2FkdmFuY2VfaW5kZXgzLmh0bWwKQEAgLTM1LDcg
KzM1LDcgQEAKICAgICAgICAgICAgIHZhciBjdXJzb3IgPSBlLnRhcmdldC5yZXN1bHQ7CiAKICAg
ICAgICAgICAgIGFzc2VydF90cnVlKGN1cnNvciAhPSBudWxsLCAiY3Vyc29yIGV4aXN0Iik7Ci0g
ICAgICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwKKyAgICAgICAgICAgIGFz
c2VydF90aHJvd3NfanMoVHlwZUVycm9yLAogICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyBj
dXJzb3IuYWR2YW5jZSgtMSk7IH0pOwogCiAgICAgICAgICAgICB0LmRvbmUoKTsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9p
ZGJjdXJzb3JfYWR2YW5jZV9pbmRleDYuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9J
bmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfYWR2YW5jZV9pbmRleDYuaHRtbApp
bmRleCA3NGQ2NTNjMDk5NTE0NjM4MDZjM2QxMjMzYzcwYTNjYzg4ZDViMmJkLi41MzhmNTM2MTI0
YjIwOTZmYmUzYzgwMDhlODk2ZGM2MTE2OTVjMDVlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2FkdmFuY2Vf
aW5kZXg2Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2
YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9hZHZhbmNlX2luZGV4Ni5odG1sCkBAIC0yNiw3ICsyNiw3
IEBACiAgICAgICAgICAgICB2YXIgY3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKICAgICAg
ICAgICAgIGFzc2VydF90cnVlKGN1cnNvciBpbnN0YW5jZW9mIElEQkN1cnNvcik7CiAKLSAgICAg
ICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKICAgICAgICAg
ICAgICAgICBjdXJzb3IuYWR2YW5jZSgwKTsKICAgICAgICAgICAgIH0sICJDYWxsaW5nIGFkdmFu
Y2UoKSB3aXRoIGNvdW50IGFyZ3VtZW50IDAgc2hvdWxkIHRocm93IFR5cGVFcnJvci4iKTsKIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJy
b3dzaW5nL2lkYmN1cnNvcl9hZHZhbmNlX2luZGV4Ny5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9hZHZhbmNlX2luZGV4
Ny5odG1sCmluZGV4IDYxN2NkYTA3YWY2YmM5MzhjNTQ2NjJjNGNlNTYzZmRkNWE2MzM4NDkuLjE1
Yjg3MGFjNDJjNzM5Zjc0YjhlNWZhNWRkYWE3NWM3ZGNjNTJkOGQgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3Jf
YWR2YW5jZV9pbmRleDcuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhl
ZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2FkdmFuY2VfaW5kZXg3Lmh0bWwKQEAgLTI3
LDcgKzI3LDcgQEAKICAgICAgICAgICAgIGFzc2VydF90cnVlKGN1cnNvciBpbnN0YW5jZW9mIElE
QkN1cnNvcik7CiAKICAgICAgICAgICAgIGV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5hYm9ydCgp
OwotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygiVHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yIiwg
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiVHJhbnNhY3Rpb25J
bmFjdGl2ZUVycm9yIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgY3Vyc29yLmFkdmFu
Y2UoMSk7CiAgICAgICAgICAgICB9LCAiQ2FsbGluZyBhZHZhbmNlKCkgc2hvdWxkIHRocm93cyBh
biBleGNlcHRpb24gVHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yIHdoZW4gdGhlIHRyYW5zYWN0aW9u
IGlzIG5vdCBhY3RpdmUuIik7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfYWR2YW5jZV9pbmRleDguaHRt
bCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9p
ZGJjdXJzb3JfYWR2YW5jZV9pbmRleDguaHRtbAppbmRleCAxY2RlOWFmMWE3YTcxZTBiMzZhODMz
OWY1NTc0NmMzYWQ3YmQwYTYyLi4zMWE3YTNmODU2OWVlOThkOGIzODYyZDAwZGFmODgxZDdjYTY3
YzViIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZh
dGUtYnJvd3NpbmcvaWRiY3Vyc29yX2FkdmFuY2VfaW5kZXg4Lmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9hZHZh
bmNlX2luZGV4OC5odG1sCkBAIC0yNyw3ICsyNyw3IEBACiAgICAgICAgICAgICBhc3NlcnRfdHJ1
ZShjdXJzb3IgaW5zdGFuY2VvZiBJREJDdXJzb3IpOwogCiAgICAgICAgICAgICBjdXJzb3IuYWR2
YW5jZSgxKTsKLSAgICAgICAgICAgIGFzc2VydF90aHJvd3MoIkludmFsaWRTdGF0ZUVycm9yIiwg
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiSW52YWxpZFN0YXRl
RXJyb3IiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICBjdXJzb3IuYWR2YW5jZSgxKTsK
ICAgICAgICAgICAgIH0sICJDYWxsaW5nIGFkdmFuY2UoKSBzaG91bGQgdGhyb3cgRE9NRXhjZXB0
aW9uIHdoZW4gdGhlIGN1cnNvciBpcyBjdXJyZW50bHkgYmVpbmcgaXRlcmF0ZWQuIik7CiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93
c2luZy9pZGJjdXJzb3JfYWR2YW5jZV9pbmRleDkuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfYWR2YW5jZV9pbmRleDku
aHRtbAppbmRleCAwOTFjMWJjYmM5YjVjMGM0MzVlMzdhMmVjZWE2ZmYzN2ZlZThjMTAxLi44Mzlk
M2VhOGIyNDBiZTZiZjEyMDk0ODg5MGE2N2Q5OWRhNWM2MTg1IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2Fk
dmFuY2VfaW5kZXg5Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWRE
Qi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9hZHZhbmNlX2luZGV4OS5odG1sCkBAIC0yNiw3
ICsyNiw3IEBACiAgICAgICAgICAgICBhc3NlcnRfdHJ1ZShjdXJzb3IgaW5zdGFuY2VvZiBJREJD
dXJzb3IsICJjdXJzb3IgZXhpc3QiKTsKIAogICAgICAgICAgICAgZGIuZGVsZXRlT2JqZWN0U3Rv
cmUoInN0b3JlIik7Ci0gICAgICAgICAgICBhc3NlcnRfdGhyb3dzKCJJbnZhbGlkU3RhdGVFcnJv
ciIsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkludmFsaWRT
dGF0ZUVycm9yIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgY3Vyc29yLmFkdmFuY2Uo
MSk7CiAgICAgICAgICAgICB9LCAiSWYgdGhlIGN1cnNvcidzIHNvdXJjZSBvciBlZmZlY3RpdmUg
b2JqZWN0IHN0b3JlIGhhcyBiZWVuIGRlbGV0ZWQsIHRoZSBpbXBsZW1lbnRhdGlvbiBNVVNUIHRo
cm93IGEgRE9NRXhjZXB0aW9uIG9mIHR5cGUgSW52YWxpZFN0YXRlRXJyb3IiKTsKIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5n
L2lkYmN1cnNvcl9hZHZhbmNlX29iamVjdHN0b3JlMi5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9hZHZhbmNlX29iamVj
dHN0b3JlMi5odG1sCmluZGV4IDVhY2Y3ZmY4MDNhMGM2NTFjNTUwNmNhNDc0OTM1N2RkMzQ3Yjdi
MjguLjYxNDQ5MTgxZWYzZmZiNGRkNTU1NWYwMDQwZTkyMjMxOTQ5NmU3YTkgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJj
dXJzb3JfYWR2YW5jZV9vYmplY3RzdG9yZTIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2FkdmFuY2Vfb2JqZWN0
c3RvcmUyLmh0bWwKQEAgLTI5LDcgKzI5LDcgQEAKICAgICAgICAgICAgIHZhciBjdXJzb3IgPSBl
dmVudC50YXJnZXQucmVzdWx0OwogICAgICAgICAgICAgYXNzZXJ0X3RydWUoY3Vyc29yIGluc3Rh
bmNlb2YgSURCQ3Vyc29yKTsKIAotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVy
cm9yKCksIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJy
b3IsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgIGN1cnNvci5hZHZhbmNlKDApOwogICAg
ICAgICAgICAgfSwgIkNhbGxpbmcgYWR2YW5jZSgpIHdpdGggY291bnQgYXJndW1lbnQgMCBzaG91
bGQgdGhyb3cgVHlwZUVycm9yLiIpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2FkdmFuY2Vfb2JqZWN0
c3RvcmUzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUt
YnJvd3NpbmcvaWRiY3Vyc29yX2FkdmFuY2Vfb2JqZWN0c3RvcmUzLmh0bWwKaW5kZXggOThiNTc3
NTI0N2Y0ZWU0YmRmM2RiYmI1ZDI1N2JmNGIwYmE1NzExOS4uOTU2NmY0NWUyNTkzMjIwYmY5ZWIz
YjFkYjkzYjZmOGM3YWNhZGNkZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9hZHZhbmNlX29iamVjdHN0b3Jl
My5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1i
cm93c2luZy9pZGJjdXJzb3JfYWR2YW5jZV9vYmplY3RzdG9yZTMuaHRtbApAQCAtMzAsNyArMzAs
NyBAQAogICAgICAgICAgICAgYXNzZXJ0X3RydWUoY3Vyc29yIGluc3RhbmNlb2YgSURCQ3Vyc29y
KTsKIAogICAgICAgICAgICAgZXZlbnQudGFyZ2V0LnRyYW5zYWN0aW9uLmFib3J0KCk7Ci0gICAg
ICAgICAgICBhc3NlcnRfdGhyb3dzKCJUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3IiLCBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJUcmFuc2FjdGlvbkluYWN0aXZl
RXJyb3IiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICBjdXJzb3IuYWR2YW5jZSgxKTsK
ICAgICAgICAgICAgIH0sICJDYWxsaW5nIGFkdmFuY2UoKSBzaG91bGQgdGhyb3dzIGFuIGV4Y2Vw
dGlvbiBUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3Igd2hlbiB0aGUgdHJhbnNhY3Rpb24gaXMgbm90
IGFjdGl2ZSIpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhl
ZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2FkdmFuY2Vfb2JqZWN0c3RvcmU0Lmh0bWwg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRi
Y3Vyc29yX2FkdmFuY2Vfb2JqZWN0c3RvcmU0Lmh0bWwKaW5kZXggZGFiZjhlODY5NzM3NjFhOGVk
YTcwYWFkYjk2NGY1NmEyYjliY2RhOS4uMWM4OTQ3ZjA4NzI2ZGY1YTJkMDFhNjhhMzM5MjU3YTJl
ODkzZTNjOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1w
cml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9hZHZhbmNlX29iamVjdHN0b3JlNC5odG1sCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJj
dXJzb3JfYWR2YW5jZV9vYmplY3RzdG9yZTQuaHRtbApAQCAtMzAsNyArMzAsNyBAQAogICAgICAg
ICAgICAgYXNzZXJ0X3RydWUoY3Vyc29yIGluc3RhbmNlb2YgSURCQ3Vyc29yKTsKIAogICAgICAg
ICAgICAgY3Vyc29yLmFkdmFuY2UoMSk7Ci0gICAgICAgICAgICBhc3NlcnRfdGhyb3dzKCJJbnZh
bGlkU3RhdGVFcnJvciIsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19k
b20oIkludmFsaWRTdGF0ZUVycm9yIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgY3Vy
c29yLmFkdmFuY2UoMSk7CiAgICAgICAgICAgICB9LCAiQ2FsbGluZyBhZHZhbmNlKCkgc2hvdWxk
IHRocm93IERPTUV4Y2VwdGlvbiB3aGVuIHRoZSBjdXJzb3IgaXMgY3VycmVudGx5IGJlaW5nIGl0
ZXJhdGVkLiIpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhl
ZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2FkdmFuY2Vfb2JqZWN0c3RvcmU1Lmh0bWwg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRi
Y3Vyc29yX2FkdmFuY2Vfb2JqZWN0c3RvcmU1Lmh0bWwKaW5kZXggZmY2MWY2ZjM2NmEzNjg3ZWMz
ODkyZjIxNTg3NTc3MDcwYTJhMWUxMS4uYzY3MzgyYTQ0YzkzYzQ0NGYzMWRjYzg4OWRiZDE0YjJj
YzA0ZWExZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1w
cml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9hZHZhbmNlX29iamVjdHN0b3JlNS5odG1sCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJj
dXJzb3JfYWR2YW5jZV9vYmplY3RzdG9yZTUuaHRtbApAQCAtMjUsNyArMjUsNyBAQAogICAgICAg
ICAgICAgYXNzZXJ0X3RydWUoY3Vyc29yIGluc3RhbmNlb2YgSURCQ3Vyc29yLCAiY3Vyc29yIGV4
aXN0Iik7CiAKICAgICAgICAgICAgIGRiLmRlbGV0ZU9iamVjdFN0b3JlKCJzdG9yZSIpOwotICAg
ICAgICAgICAgYXNzZXJ0X3Rocm93cygiSW52YWxpZFN0YXRlRXJyb3IiLCBmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlkU3RhdGVFcnJvciIsIGZ1bmN0
aW9uKCkgewogICAgICAgICAgICAgICAgIGN1cnNvci5hZHZhbmNlKDEpOwogICAgICAgICAgICAg
fSwgIklmIHRoZSBjdXJzb3IncyBzb3VyY2Ugb3IgZWZmZWN0aXZlIG9iamVjdCBzdG9yZSBoYXMg
YmVlbiBkZWxldGVkLCB0aGUgaW1wbGVtZW50YXRpb24gTVVTVCB0aHJvdyBhIERPTUV4Y2VwdGlv
biBvZiB0eXBlIEludmFsaWRTdGF0ZUVycm9yIik7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfY29udGlu
dWVfaW5kZXgyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZh
dGUtYnJvd3NpbmcvaWRiY3Vyc29yX2NvbnRpbnVlX2luZGV4Mi5odG1sCmluZGV4IDNhODg5OGNk
NmY3NTMyNWI1ZmY1NDM4NDNjZDExOWIyNWE4OTE4NTIuLmVhNjc1YmRiNmRjOWRkNmUzMjE4NDk4
MmIyMzJlZTZlMzJhMTczODkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9J
bmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfY29udGludWVfaW5kZXgyLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5n
L2lkYmN1cnNvcl9jb250aW51ZV9pbmRleDIuaHRtbApAQCAtMzUsNyArMzUsNyBAQAogICAgICAg
ICBjdXJzb3JfcnEub25zdWNjZXNzID0gdC5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgewogICAgICAg
ICAgICAgdmFyIGN1cnNvciA9IGUudGFyZ2V0LnJlc3VsdDsKIAotICAgICAgICAgICAgYXNzZXJ0
X3Rocm93cygiRGF0YUVycm9yIiwKKyAgICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJEYXRh
RXJyb3IiLAogICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyBjdXJzb3IuY29udGludWUoZG9j
dW1lbnQpOyB9KTsKIAogICAgICAgICAgICAgYXNzZXJ0X3RydWUoY3Vyc29yIGluc3RhbmNlb2Yg
SURCQ3Vyc29yV2l0aFZhbHVlLCAiY3Vyc29yIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2NvbnRpbnVl
X2luZGV4My5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRl
LWJyb3dzaW5nL2lkYmN1cnNvcl9jb250aW51ZV9pbmRleDMuaHRtbAppbmRleCA1NWVlZmEzNzIx
ZjQ1MTQyZGUyNzdmNzhkNTI4YTk5Mjk3ODJiMGE5Li4xODEwNTc0ZTllNWFkNzMxNzExOWM5MWY0
OTg3NDFlZDgwNzg3MGJmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5k
ZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2NvbnRpbnVlX2luZGV4My5odG1sCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9p
ZGJjdXJzb3JfY29udGludWVfaW5kZXgzLmh0bWwKQEAgLTQwLDcgKzQwLDcgQEAKICAgICAgICAg
ICAgIH0KIAogICAgICAgICAgICAgLy8gRmlyc3QgdGltZSBjaGVja3Mga2V5IGVxdWFsLCBzZWNv
bmQgdGltZSBjaGVja3Mga2V5IGxlc3MgdGhhbgotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygi
RGF0YUVycm9yIiwKKyAgICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJEYXRhRXJyb3IiLAog
ICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyBjdXJzb3IuY29udGludWUocmVjb3Jkc1swXS5p
S2V5KTsgfSk7CiAKICAgICAgICAgICAgIGN1cnNvci5jb250aW51ZSgpOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1
cnNvcl9jb250aW51ZV9pbmRleDQuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRl
eGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfY29udGludWVfaW5kZXg0Lmh0bWwKaW5k
ZXggZDQxNmM5ZjU4ZWRkZDBkNDE1ZWY0MWU5MzAxMWEwNzFlOGFjZGEwYS4uMzU1NDZiNDE1MDIy
ZWEwYjViY2MzZDc3YWMzNmYxNGEwZmY1NjA2YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9jb250aW51ZV9p
bmRleDQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZh
dGUtYnJvd3NpbmcvaWRiY3Vyc29yX2NvbnRpbnVlX2luZGV4NC5odG1sCkBAIC00Nyw3ICs0Nyw3
IEBACiAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhy
ZWNvcmQucEtleSwgcmVjb3Jkc1sxXS5wS2V5LCAic2Vjb25kIHBLZXkiKTsKICAgICAgICAgICAg
ICAgICBhc3NlcnRfZXF1YWxzKHJlY29yZC5pS2V5LCByZWNvcmRzWzFdLmlLZXksICJzZWNvbmQg
aUtleSIpOwotICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3MoIkRhdGFFcnJvciIsCisgICAg
ICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkRhdGFFcnJvciIsCiAgICAgICAgICAgICAg
ICAgICAgIGZ1bmN0aW9uKCkgeyBjdXJzb3IuY29udGludWUoImluZGV4S2V5XzIiKTsgfSk7CiAg
ICAgICAgICAgICAgICAgdC5kb25lKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Npbmcv
aWRiY3Vyc29yX2NvbnRpbnVlX2luZGV4Ny5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9jb250aW51ZV9pbmRleDcuaHRt
bAppbmRleCA1YWU2MDk4YWYwZGExOGJiN2M2MTNkMjMxOGU4YWExMzNkNTA5ZGY5Li4zZmUyMDky
YWVhZjdmMmE3OGZiMGQzY2I3MjkwNGIyYmNhZDVmMDc5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2NvbnRp
bnVlX2luZGV4Ny5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREIt
cHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfY29udGludWVfaW5kZXg3Lmh0bWwKQEAgLTI3LDcg
KzI3LDcgQEAKICAgICAgICAgICAgIGFzc2VydF90cnVlKGN1cnNvciBpbnN0YW5jZW9mIElEQkN1
cnNvcik7CiAKICAgICAgICAgICAgIGV2ZW50LnRhcmdldC50cmFuc2FjdGlvbi5hYm9ydCgpOwot
ICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygiVHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yIiwgZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiVHJhbnNhY3Rpb25JbmFj
dGl2ZUVycm9yIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgY3Vyc29yLmNvbnRpbnVl
KCk7CiAgICAgICAgICAgICB9LCAiQ2FsbGluZyBjb250aW51ZSgpIHNob3VsZCB0aHJvd3MgYW4g
ZXhjZXB0aW9uIFRyYW5zYWN0aW9uSW5hY3RpdmVFcnJvciB3aGVuIHRoZSB0cmFuc2FjdGlvbiBp
cyBub3QgYWN0aXZlLiIpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
SW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2NvbnRpbnVlX2luZGV4OC5odG1s
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lk
YmN1cnNvcl9jb250aW51ZV9pbmRleDguaHRtbAppbmRleCA2ZWU1N2Y1YmQyNGQyZjczNDc0NGZh
ZWM5MjA5YjlkNmZjYjE2MzJiLi4yZjdhYzIxODEwZDQ5NDgzNTk5ZTIzMjgyNzhlZjczODJjZDJi
NGZiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZh
dGUtYnJvd3NpbmcvaWRiY3Vyc29yX2NvbnRpbnVlX2luZGV4OC5odG1sCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfY29u
dGludWVfaW5kZXg4Lmh0bWwKQEAgLTI3LDcgKzI3LDcgQEAKICAgICAgICAgICAgIGFzc2VydF90
cnVlKGN1cnNvciBpbnN0YW5jZW9mIElEQkN1cnNvcik7CiAKICAgICAgICAgICAgIGRiLmRlbGV0
ZU9iamVjdFN0b3JlKCJzdG9yZSIpOwotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygiSW52YWxp
ZFN0YXRlRXJyb3IiLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9t
KCJJbnZhbGlkU3RhdGVFcnJvciIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgIGN1cnNv
ci5jb250aW51ZSgpOwogICAgICAgICAgICAgfSwgIklmIHRoZSBjdXJzb3IncyBzb3VyY2Ugb3Ig
ZWZmZWN0aXZlIG9iamVjdCBzdG9yZSBoYXMgYmVlbiBkZWxldGVkLCB0aGUgaW1wbGVtZW50YXRp
b24gTVVTVCB0aHJvdyBhIERPTUV4Y2VwdGlvbiBvZiB0eXBlIEludmFsaWRTdGF0ZUVycm9yIik7
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0
ZS1icm93c2luZy9pZGJjdXJzb3JfY29udGludWVfaW52YWxpZC5odG1sIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9jb250aW51
ZV9pbnZhbGlkLmh0bWwKaW5kZXggNjU3YTZhMDJjMDZlMzU4MGZkMjQ1YmYxMjY2N2IyYjhmM2U1
ZTIwNS4uNWE5YzQwZjYyZjQ2ZTcwMzAyOGUxZWEyMWEyZjFkN2Q2ZjUzMzIyNCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lk
YmN1cnNvcl9jb250aW51ZV9pbnZhbGlkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9jb250aW51ZV9pbnZhbGlk
Lmh0bWwKQEAgLTM5LDEwICszOSwxMCBAQAogICAgICAgICAgICAgY3Vyc29yLmNvbnRpbnVlKHVu
ZGVmaW5lZCk7CiAKICAgICAgICAgICAgIC8vIFNlY29uZCB0cnkKLSAgICAgICAgICAgIGFzc2Vy
dF90aHJvd3MoJ0ludmFsaWRTdGF0ZUVycm9yJywKKyAgICAgICAgICAgIGFzc2VydF90aHJvd3Nf
ZG9tKCdJbnZhbGlkU3RhdGVFcnJvcicsCiAgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7IGN1
cnNvci5jb250aW51ZSgpOyB9LCAnc2Vjb25kIGNvbnRpbnVlJyk7CiAKLSAgICAgICAgICAgIGFz
c2VydF90aHJvd3MoJ0ludmFsaWRTdGF0ZUVycm9yJywKKyAgICAgICAgICAgIGFzc2VydF90aHJv
d3NfZG9tKCdJbnZhbGlkU3RhdGVFcnJvcicsCiAgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7
IGN1cnNvci5jb250aW51ZSgzKTsgfSwgJ3RoaXJkIGNvbnRpbnVlJyk7CiAKICAgICAgICAgICAg
IGNvdW50Kys7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERC
LXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2NvbnRpbnVlX29iamVjdHN0b3JlMi5odG1sIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1
cnNvcl9jb250aW51ZV9vYmplY3RzdG9yZTIuaHRtbAppbmRleCA0NGU0MzhmZTk3ODg1MmQzNTE0
MWZhMzk2ZmRhMDk5ZjMxYzliMGQwLi41ZmFiMThjZTY2MTAxNmM0NmQ5ZmIzZDEyZjZmZTZhZDFm
MWMzY2U3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXBy
aXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2NvbnRpbnVlX29iamVjdHN0b3JlMi5odG1sCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJj
dXJzb3JfY29udGludWVfb2JqZWN0c3RvcmUyLmh0bWwKQEAgLTI5LDcgKzI5LDcgQEAKICAgICAg
ICAgICAgIHZhciBjdXJzb3IgPSBlLnRhcmdldC5yZXN1bHQ7CiAKICAgICAgICAgICAgIGFzc2Vy
dF90cnVlKGN1cnNvciBpbnN0YW5jZW9mIElEQkN1cnNvciwgImN1cnNvciBleGlzdHMiKTsKLSAg
ICAgICAgICAgIGFzc2VydF90aHJvd3MoIkRhdGFFcnJvciIsCisgICAgICAgICAgICBhc3NlcnRf
dGhyb3dzX2RvbSgiRGF0YUVycm9yIiwKICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsgY3Vy
c29yLmNvbnRpbnVlKGRvY3VtZW50KTsgfSk7CiAKICAgICAgICAgICAgIHQuZG9uZSgpOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dz
aW5nL2lkYmN1cnNvcl9jb250aW51ZV9vYmplY3RzdG9yZTMuaHRtbCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfY29udGludWVf
b2JqZWN0c3RvcmUzLmh0bWwKaW5kZXggYzgwNDJlNGE0ZGZmMzAwMmJmOTEyZWUzNTBjZjFlNjZh
ODJlNjBhOS4uNzQwYWI1ZGM1YTQ2Y2IwMzM4MTFkNDBlNDA1NWE5MTI5MmZjY2U0MCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5n
L2lkYmN1cnNvcl9jb250aW51ZV9vYmplY3RzdG9yZTMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2NvbnRpbnVl
X29iamVjdHN0b3JlMy5odG1sCkBAIC0yOSw3ICsyOSw3IEBACiAgICAgICAgICAgICB2YXIgY3Vy
c29yID0gZS50YXJnZXQucmVzdWx0OwogCiAgICAgICAgICAgICBhc3NlcnRfdHJ1ZShjdXJzb3Ig
aW5zdGFuY2VvZiBJREJDdXJzb3IsICJjdXJzb3IgZXhpc3QiKTsKLSAgICAgICAgICAgIGFzc2Vy
dF90aHJvd3MoIkRhdGFFcnJvciIsCisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiRGF0
YUVycm9yIiwKICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsgY3Vyc29yLmNvbnRpbnVlKHJl
Y29yZHNbMF0ucEtleSk7IH0pOwogCiAgICAgICAgICAgICB0LmRvbmUoKTsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJj
dXJzb3JfY29udGludWVfb2JqZWN0c3RvcmU0Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2NvbnRpbnVlX29iamVjdHN0
b3JlNC5odG1sCmluZGV4IDYwZDkxZDliMTIyNjJmMTQzZmJhZWMzMzJkYjYyNzMxMjg1YjNmMGIu
LmFhMGZkYjA3MjRhZDM4NjdmZjZkZTRiZGZhMmJiMjFjMjcxZThlNzEgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJz
b3JfY29udGludWVfb2JqZWN0c3RvcmU0Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9jb250aW51ZV9vYmplY3Rz
dG9yZTQuaHRtbApAQCAtNDAsNyArNDAsNyBAQAogCiAgICAgICAgICAgICBjYXNlIDE6CiAgICAg
ICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhjdXJzb3IudmFsdWUucEtleSwgcmVjb3Jkc1sxXS5w
S2V5LCAic2Vjb25kIGN1cnNvciBwa2V5Iik7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93
cygiRGF0YUVycm9yIiwKKyAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiRGF0YUVy
cm9yIiwKICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7IGN1cnNvci5jb250aW51ZShy
ZWNvcmRzWzJdLnBLZXkpOyB9KTsKICAgICAgICAgICAgICAgICB0LmRvbmUoKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRl
eGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfY29udGludWVfb2JqZWN0c3RvcmU1Lmh0
bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Npbmcv
aWRiY3Vyc29yX2NvbnRpbnVlX29iamVjdHN0b3JlNS5odG1sCmluZGV4IDAyNjMxNWNiZDAzNTc2
YWMyYzI1ZDI4YjVhOTk5ZmU3YTExNTcyYzUuLmQ2ZjhmM2Q2NmZkNWM1NzRmMDgzMTVmZjY5M2Jl
YzY5ODVjM2UyOTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVk
REItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfY29udGludWVfb2JqZWN0c3RvcmU1Lmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5n
L2lkYmN1cnNvcl9jb250aW51ZV9vYmplY3RzdG9yZTUuaHRtbApAQCAtMzEsNyArMzEsNyBAQAog
ICAgICAgICAgICAgYXNzZXJ0X3RydWUoY3Vyc29yIGluc3RhbmNlb2YgSURCQ3Vyc29yLCAiY3Vy
c29yIGV4aXN0cyIpOwogCiAgICAgICAgICAgICBlLnRhcmdldC50cmFuc2FjdGlvbi5hYm9ydCgp
OwotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygiVHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yIiwg
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiVHJhbnNhY3Rpb25J
bmFjdGl2ZUVycm9yIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgY3Vyc29yLmNvbnRp
bnVlKCk7CiAgICAgICAgICAgICB9LCAiQ2FsbGluZyBjb250aW51ZSgpIHNob3VsZCB0aHJvd3Mg
YW4gZXhjZXB0aW9uIFRyYW5zYWN0aW9uSW5hY3RpdmVFcnJvciB3aGVuIHRoZSB0cmFuc2FjdGlv
biBpcyBub3QgYWN0aXZlLiIpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2NvbnRpbnVlX29iamVjdHN0
b3JlNi5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJy
b3dzaW5nL2lkYmN1cnNvcl9jb250aW51ZV9vYmplY3RzdG9yZTYuaHRtbAppbmRleCBiNTY5NTU5
ZjhlOTY4ZWUyOTJkYThmY2M0MThiODcwYWFhMmEzYjJkLi5iZjQzNjM4Yjk3YWQwY2UwMDcxOWY4
MGVkNTkwZWUzZWRhYTRmODE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
SW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2NvbnRpbnVlX29iamVjdHN0b3Jl
Ni5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1i
cm93c2luZy9pZGJjdXJzb3JfY29udGludWVfb2JqZWN0c3RvcmU2Lmh0bWwKQEAgLTI3LDcgKzI3
LDcgQEAKICAgICAgICAgICAgIGFzc2VydF90cnVlKGN1cnNvciBpbnN0YW5jZW9mIElEQkN1cnNv
ciwgImN1cnNvciBleGlzdHMiKTsKIAogICAgICAgICAgICAgZGIuZGVsZXRlT2JqZWN0U3RvcmUo
InRlc3QiKTsKLSAgICAgICAgICAgIGFzc2VydF90aHJvd3MoIkludmFsaWRTdGF0ZUVycm9yIiwg
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiSW52YWxpZFN0YXRl
RXJyb3IiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICBjdXJzb3IuY29udGludWUoKTsK
ICAgICAgICAgICAgIH0sICJJZiB0aGUgY3Vyc29yJ3Mgc291cmNlIG9yIGVmZmVjdGl2ZSBvYmpl
Y3Qgc3RvcmUgaGFzIGJlZW4gZGVsZXRlZCwgdGhlIGltcGxlbWVudGF0aW9uIE1VU1QgdGhyb3cg
YSBET01FeGNlcHRpb24gb2YgdHlwZSBJbnZhbGlkU3RhdGVFcnJvciIpOwogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRi
Y3Vyc29yX2RlbGV0ZV9pbmRleDIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRl
eGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfZGVsZXRlX2luZGV4Mi5odG1sCmluZGV4
IDEzM2Y5MTI0NDg4OGY0YjA5NmY0NjNhMDQ4NDMzYzU0ODc1MzExOGMuLjEwYWQ4YmI1ZjVkNGFj
NDk0MDgxZDZjYzU0YTkwNDE5ZjdkNDJhM2EgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfZGVsZXRlX2luZGV4
Mi5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1i
cm93c2luZy9pZGJjdXJzb3JfZGVsZXRlX2luZGV4Mi5odG1sCkBAIC0zMiw3ICszMiw3IEBACiAg
ICAgICAgICAgICB2YXIgY3Vyc29yID0gZS50YXJnZXQucmVzdWx0OwogCiAgICAgICAgICAgICBh
c3NlcnRfdHJ1ZShjdXJzb3IgaW5zdGFuY2VvZiBJREJDdXJzb3IsICJjdXJzb3IgZXhpc3QiKTsK
LSAgICAgICAgICAgIGFzc2VydF90aHJvd3MoJ1JlYWRPbmx5RXJyb3InLCBmdW5jdGlvbigpIHsg
Y3Vyc29yLmRlbGV0ZSgpOyB9KTsKKyAgICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCdSZWFk
T25seUVycm9yJywgZnVuY3Rpb24oKSB7IGN1cnNvci5kZWxldGUoKTsgfSk7CiAgICAgICAgICAg
ICB0LmRvbmUoKTsKICAgICAgICAgfSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9kZWxldGVf
aW5kZXgzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUt
YnJvd3NpbmcvaWRiY3Vyc29yX2RlbGV0ZV9pbmRleDMuaHRtbAppbmRleCBjMWMzMDQ0YjNmNWMw
YmZjZjU1ZmNjMWIwNWMxMTQ5MmFhZWE0YWRmLi43YTZlYjIyNDJiMGJhZTAxNWJiNDJlN2I2Njhj
MzAwMzQ0NDBjNTc5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhl
ZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2RlbGV0ZV9pbmRleDMuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vy
c29yX2RlbGV0ZV9pbmRleDMuaHRtbApAQCAtMzAsNyArMzAsNyBAQAogICAgICAgICB9KTsKIAog
ICAgICAgICBlLnRhcmdldC50cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gdC5zdGVwX2Z1bmMoZnVu
Y3Rpb24oZSkgewotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygnVHJhbnNhY3Rpb25JbmFjdGl2
ZUVycm9yJywgZnVuY3Rpb24oKSB7IHdpbmRvdy5jdXJzb3IuZGVsZXRlKCk7IH0pCisgICAgICAg
ICAgICBhc3NlcnRfdGhyb3dzX2RvbSgnVHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yJywgZnVuY3Rp
b24oKSB7IHdpbmRvdy5jdXJzb3IuZGVsZXRlKCk7IH0pCiAgICAgICAgICAgICB0LmRvbmUoKTsK
ICAgICAgICAgfSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9kZWxldGVfaW5kZXg0Lmh0bWwg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRi
Y3Vyc29yX2RlbGV0ZV9pbmRleDQuaHRtbAppbmRleCBmZjZlNTc2NzQwOWQ3ZDZmY2Y3YmE4Yjhm
N2VjMzk1MjM2NGI0ODg0Li4wMDlmODQwOWI0NTdhMmI3OWRmOGNiMjkyMDYyN2FhYWFiNWM3YzAy
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUt
YnJvd3NpbmcvaWRiY3Vyc29yX2RlbGV0ZV9pbmRleDQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2RlbGV0ZV9p
bmRleDQuaHRtbApAQCAtMjcsNyArMjcsNyBAQAogICAgICAgICAgICAgYXNzZXJ0X3RydWUoY3Vy
c29yIGluc3RhbmNlb2YgSURCQ3Vyc29yLCAiY3Vyc29yIGV4aXN0Iik7CiAKICAgICAgICAgICAg
IGRiLmRlbGV0ZU9iamVjdFN0b3JlKCJzdG9yZSIpOwotICAgICAgICAgICAgYXNzZXJ0X3Rocm93
cygiSW52YWxpZFN0YXRlRXJyb3IiLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFzc2VydF90
aHJvd3NfZG9tKCJJbnZhbGlkU3RhdGVFcnJvciIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAg
ICAgIGN1cnNvci5kZWxldGUoKTsKICAgICAgICAgICAgIH0sICJJZiB0aGUgY3Vyc29yJ3Mgc291
cmNlIG9yIGVmZmVjdGl2ZSBvYmplY3Qgc3RvcmUgaGFzIGJlZW4gZGVsZXRlZCwgdGhlIGltcGxl
bWVudGF0aW9uIE1VU1QgdGhyb3cgYSBET01FeGNlcHRpb24gb2YgdHlwZSBJbnZhbGlkU3RhdGVF
cnJvciIpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERC
LXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2RlbGV0ZV9pbmRleDUuaHRtbCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfZGVs
ZXRlX2luZGV4NS5odG1sCmluZGV4IDRmYzBlMjk2N2Q2MmMzNzBkY2I2NGRjMDc1ZGE5MWRhZDVh
ZmIxM2EuLjM2MDBhODJhZDQ1ODI5OTliNDIwODdhZWMzMzI0NDUxYTNkNDZmYmYgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9p
ZGJjdXJzb3JfZGVsZXRlX2luZGV4NS5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfZGVsZXRlX2luZGV4NS5odG1s
CkBAIC0yOCw3ICsyOCw3IEBACiAgICAgICAgICAgICBhc3NlcnRfdHJ1ZShjdXJzb3IgaW5zdGFu
Y2VvZiBJREJDdXJzb3IsICJjdXJzb3IgZXhpc3QiKTsKIAogICAgICAgICAgICAgY3Vyc29yLmNv
bnRpbnVlKCk7Ci0gICAgICAgICAgICBhc3NlcnRfdGhyb3dzKCJJbnZhbGlkU3RhdGVFcnJvciIs
IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkludmFsaWRTdGF0
ZUVycm9yIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgY3Vyc29yLmRlbGV0ZSgpOwog
ICAgICAgICAgICAgfSk7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9J
bmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfZGVsZXRlX29iamVjdHN0b3JlMi5o
dG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5n
L2lkYmN1cnNvcl9kZWxldGVfb2JqZWN0c3RvcmUyLmh0bWwKaW5kZXggY2M1N2U5OWY2OTVkNjlm
NjlhNDQyODI3YzZjNjU3OGE2YzI1MzMzYS4uNzc1OWM3MmU5MTY5YmE5YjhjZjM0NDZmOTE2ODA1
MDc3OTFjM2NkMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWRE
Qi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9kZWxldGVfb2JqZWN0c3RvcmUyLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lk
YmN1cnNvcl9kZWxldGVfb2JqZWN0c3RvcmUyLmh0bWwKQEAgLTMwLDcgKzMwLDcgQEAKICAgICAg
ICAgICAgIHZhciBjdXJzb3IgPSBlLnRhcmdldC5yZXN1bHQ7CiAKICAgICAgICAgICAgIGFzc2Vy
dF90cnVlKGN1cnNvciAhPSBudWxsLCAiY3Vyc29yIGV4aXN0Iik7Ci0gICAgICAgICAgICBhc3Nl
cnRfdGhyb3dzKCdSZWFkT25seUVycm9yJywgZnVuY3Rpb24oKSB7IGN1cnNvci5kZWxldGUoKTsg
fSk7CisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgnUmVhZE9ubHlFcnJvcicsIGZ1bmN0
aW9uKCkgeyBjdXJzb3IuZGVsZXRlKCk7IH0pOwogICAgICAgICAgICAgdC5kb25lKCk7CiAgICAg
ICAgIH0pOwogICAgIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRl
eGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfZGVsZXRlX29iamVjdHN0b3JlMy5odG1s
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lk
YmN1cnNvcl9kZWxldGVfb2JqZWN0c3RvcmUzLmh0bWwKaW5kZXggYjJmZDgyMDFhZGMzMDI4OWY4
NjA4NTZjZTllYTUzMzhiNzJjZDJmOS4uZjgyNWI4YTQxMmVkYzhkZmEwZTY4NzM5MTBjYzg2ZjQ4
ZGE4ZjczMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1w
cml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9kZWxldGVfb2JqZWN0c3RvcmUzLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1
cnNvcl9kZWxldGVfb2JqZWN0c3RvcmUzLmh0bWwKQEAgLTI5LDcgKzI5LDcgQEAKICAgICAgICAg
fSk7CiAKICAgICAgICAgZS50YXJnZXQudHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IHQuc3RlcF9m
dW5jKGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIGFzc2VydF90aHJvd3MoJ1RyYW5zYWN0aW9u
SW5hY3RpdmVFcnJvcicsIGZ1bmN0aW9uKCkgeyB3aW5kb3cuY3Vyc29yLmRlbGV0ZSgpOyB9KQor
ICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oJ1RyYW5zYWN0aW9uSW5hY3RpdmVFcnJvcics
IGZ1bmN0aW9uKCkgeyB3aW5kb3cuY3Vyc29yLmRlbGV0ZSgpOyB9KQogICAgICAgICAgICAgdC5k
b25lKCk7CiAgICAgICAgIH0pOwogICAgIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfZGVsZXRlX29iamVj
dHN0b3JlNC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRl
LWJyb3dzaW5nL2lkYmN1cnNvcl9kZWxldGVfb2JqZWN0c3RvcmU0Lmh0bWwKaW5kZXggYjk3NzVj
OGYxNjYzMmEzYzM2YWFiMjZhMTliYTk3ZGQ3NjIzNDc5YS4uMTdiMThkMGFmNTE1OWIyYmUxZWVm
YWNhYTczMTY1OWEwMzVhOTI4MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl9kZWxldGVfb2JqZWN0c3RvcmU0
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJy
b3dzaW5nL2lkYmN1cnNvcl9kZWxldGVfb2JqZWN0c3RvcmU0Lmh0bWwKQEAgLTI2LDcgKzI2LDcg
QEAKICAgICAgICAgICAgIGFzc2VydF90cnVlKGN1cnNvciBpbnN0YW5jZW9mIElEQkN1cnNvciwg
ImN1cnNvciBleGlzdCIpOwogCiAgICAgICAgICAgICBkYi5kZWxldGVPYmplY3RTdG9yZSgic3Rv
cmUiKTsKLSAgICAgICAgICAgIGFzc2VydF90aHJvd3MoIkludmFsaWRTdGF0ZUVycm9yIiwgZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiSW52YWxpZFN0YXRlRXJy
b3IiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICBjdXJzb3IuZGVsZXRlKCk7CiAgICAg
ICAgICAgICB9LCAiSWYgdGhlIGN1cnNvcidzIHNvdXJjZSBvciBlZmZlY3RpdmUgb2JqZWN0IHN0
b3JlIGhhcyBiZWVuIGRlbGV0ZWQsIHRoZSBpbXBsZW1lbnRhdGlvbiBNVVNUIHRocm93IGEgRE9N
RXhjZXB0aW9uIG9mIHR5cGUgSW52YWxpZFN0YXRlRXJyb3IiKTsKIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNv
cl9kZWxldGVfb2JqZWN0c3RvcmU1Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5k
ZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2RlbGV0ZV9vYmplY3RzdG9yZTUuaHRt
bAppbmRleCA3N2ZhNWYyMzNjZWVmYmVkNDRhOGMxMGVjZWZlOGIwMDVlMjExODlmLi5kZDgyODZm
MDhkMzdjNDg1MTZiNzRjNDY3N2ExZDhkNDk2YTdjNGMxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2RlbGV0
ZV9vYmplY3RzdG9yZTUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhl
ZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX2RlbGV0ZV9vYmplY3RzdG9yZTUuaHRtbApA
QCAtMzAsNyArMzAsNyBAQAogICAgICAgICAgICAgYXNzZXJ0X3RydWUoY3Vyc29yIGluc3RhbmNl
b2YgSURCQ3Vyc29yLCAiY3Vyc29yIGV4aXN0Iik7CiAKICAgICAgICAgICAgIGN1cnNvci5jb250
aW51ZSgpOwotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygiSW52YWxpZFN0YXRlRXJyb3IiLCBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlkU3RhdGVF
cnJvciIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgIGN1cnNvci5kZWxldGUoKTsKICAg
ICAgICAgICAgIH0pOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5k
ZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX3VwZGF0ZV9pbmRleDIuaHRtbCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJz
b3JfdXBkYXRlX2luZGV4Mi5odG1sCmluZGV4IDdkMDAwMWNiYjkxODk3YjQ2MWZhNDBjNGZmYzlm
OWE5ZjUzNjIyNjcuLmEyYzIwNjRjZmIzNzQ2YjBkMWI5MzQxOTQyOGM5ZmYzMGQwMTFiNTUgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93
c2luZy9pZGJjdXJzb3JfdXBkYXRlX2luZGV4Mi5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfdXBkYXRlX2luZGV4
Mi5odG1sCkBAIC0zMCw3ICszMCw3IEBACiAKICAgICAgICAgY3Vyc29yX3JxLm9uc3VjY2VzcyA9
IHQuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgIHZhciBjdXJzb3IgPSBlLnRh
cmdldC5yZXN1bHQ7Ci0gICAgICAgICAgICBhc3NlcnRfdGhyb3dzKCdSZWFkT25seUVycm9yJywg
ZnVuY3Rpb24oKSB7IGN1cnNvci51cGRhdGUoY3Vyc29yLnZhbHVlKTsgfSk7CisgICAgICAgICAg
ICBhc3NlcnRfdGhyb3dzX2RvbSgnUmVhZE9ubHlFcnJvcicsIGZ1bmN0aW9uKCkgeyBjdXJzb3Iu
dXBkYXRlKGN1cnNvci52YWx1ZSk7IH0pOwogICAgICAgICAgICAgdC5kb25lKCk7CiAgICAgICAg
IH0pOwogICAgIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVk
REItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfdXBkYXRlX2luZGV4My5odG1sIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl91
cGRhdGVfaW5kZXgzLmh0bWwKaW5kZXggMGRlNjZjYmM2YzMwN2RmM2Y3MWQ4N2UzMzRiMGU0MjYw
ZGEwNzE3OC4uNTRmZDIyODdiYTZjYjgyOTNkZWY0ODI1ZDVhN2I3NGFmODE2M2Q4ZCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5n
L2lkYmN1cnNvcl91cGRhdGVfaW5kZXgzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl91cGRhdGVfaW5kZXgzLmh0
bWwKQEAgLTMxLDcgKzMxLDcgQEAKICAgICAgICAgfSk7CiAKICAgICAgICAgZS50YXJnZXQudHJh
bnNhY3Rpb24ub25jb21wbGV0ZSA9IHQuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsKLSAgICAgICAg
ICAgIGFzc2VydF90aHJvd3MoJ1RyYW5zYWN0aW9uSW5hY3RpdmVFcnJvcicsIGZ1bmN0aW9uKCkg
eyB3aW5kb3cuY3Vyc29yLnVwZGF0ZSh3aW5kb3cucmVjb3JkKTsgfSkKKyAgICAgICAgICAgIGFz
c2VydF90aHJvd3NfZG9tKCdUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3InLCBmdW5jdGlvbigpIHsg
d2luZG93LmN1cnNvci51cGRhdGUod2luZG93LnJlY29yZCk7IH0pCiAgICAgICAgICAgICB0LmRv
bmUoKTsKICAgICAgICAgfSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl91cGRhdGVfaW5kZXg0
Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Np
bmcvaWRiY3Vyc29yX3VwZGF0ZV9pbmRleDQuaHRtbAppbmRleCAyYWQyOTQ1OGNkNzg5N2ZkNGFk
ZDhjYzViNDNkZmJjOTdiNzg3ZWRmLi5kMWYxN2QyYzgzNzE2MDdhYTg4YTE1ODJmNmFjNzk5YTBm
MjIyMTIyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXBy
aXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX3VwZGF0ZV9pbmRleDQuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX3Vw
ZGF0ZV9pbmRleDQuaHRtbApAQCAtMjgsNyArMjgsNyBAQAogCiAgICAgICAgICAgICBkYi5kZWxl
dGVPYmplY3RTdG9yZSgic3RvcmUiKTsKICAgICAgICAgICAgIGN1cnNvci52YWx1ZS5pS2V5ICs9
ICJfdXBkYXRlZCI7Ci0gICAgICAgICAgICBhc3NlcnRfdGhyb3dzKCJJbnZhbGlkU3RhdGVFcnJv
ciIsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkludmFsaWRT
dGF0ZUVycm9yIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgY3Vyc29yLnVwZGF0ZShj
dXJzb3IudmFsdWUpOwogICAgICAgICAgICAgfSwgIklmIHRoZSBjdXJzb3IncyBzb3VyY2Ugb3Ig
ZWZmZWN0aXZlIG9iamVjdCBzdG9yZSBoYXMgYmVlbiBkZWxldGVkLCB0aGUgaW1wbGVtZW50YXRp
b24gTVVTVCB0aHJvdyBhIERPTUV4Y2VwdGlvbiBvZiB0eXBlIEludmFsaWRTdGF0ZUVycm9yIik7
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0
ZS1icm93c2luZy9pZGJjdXJzb3JfdXBkYXRlX2luZGV4NS5odG1sIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl91cGRhdGVfaW5k
ZXg1Lmh0bWwKaW5kZXggYzgyNTNlNTRiMTEwNzVmNzI1NDYxMTc0NWRkYTdkNGUyNmFlMDk2MS4u
ZmQ0ZjI4ZmM2NzczYjYyMjBhMjg3NjA5ZDBiMzg2OTdiY2ZkYjI5MyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNv
cl91cGRhdGVfaW5kZXg1Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4
ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl91cGRhdGVfaW5kZXg1Lmh0bWwKQEAgLTM1
LDcgKzM1LDcgQEAKIAogICAgICAgICAgICAgdmFyIHJlY29yZCA9IGN1cnNvci52YWx1ZTsKICAg
ICAgICAgICAgIHJlY29yZC5kYXRhID0gZG9jdW1lbnQ7Ci0gICAgICAgICAgICBhc3NlcnRfdGhy
b3dzKCdEYXRhQ2xvbmVFcnJvcicsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYXNzZXJ0X3Ro
cm93c19kb20oJ0RhdGFDbG9uZUVycm9yJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAg
Y3Vyc29yLnVwZGF0ZShyZWNvcmQpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB0LmRv
bmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJp
dmF0ZS1icm93c2luZy9pZGJjdXJzb3JfdXBkYXRlX2luZGV4Ni5odG1sIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl91cGRhdGVf
aW5kZXg2Lmh0bWwKaW5kZXggZTIyOGQ3OWIzZjU5ZDlmNmU0NDlhNjg4NTZlN2RjMzExOGVkMGUx
NS4uZWQ3Mjk4YTNiY2U0MmUzOTMwNWZlNDA2ZjM5OTMwNGRhMmYxOGY1OSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1
cnNvcl91cGRhdGVfaW5kZXg2Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0lu
ZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl91cGRhdGVfaW5kZXg2Lmh0bWwKQEAg
LTMzLDcgKzMzLDcgQEAKICAgICAgICAgICAgIHZhciBjdXJzb3IgPSBlLnRhcmdldC5yZXN1bHQ7
CiAgICAgICAgICAgICBhc3NlcnRfdHJ1ZShjdXJzb3IgaW5zdGFuY2VvZiBJREJDdXJzb3IpOwog
Ci0gICAgICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7
IGN1cnNvci51cGRhdGUoKTsgfSk7CisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVF
cnJvciwgZnVuY3Rpb24oKSB7IGN1cnNvci51cGRhdGUoKTsgfSk7CiAgICAgICAgICAgICB0LmRv
bmUoKTsKICAgICAgICAgfSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl91cGRhdGVfaW5kZXg3
Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Np
bmcvaWRiY3Vyc29yX3VwZGF0ZV9pbmRleDcuaHRtbAppbmRleCA3MjcwZWJlZWM4N2Y5MjJjODU0
MTI3NTgyMDNkMTM0NzljZWFkODU5Li40N2FmOWRkMTAxZDI3YjZmMGFlNjIxMTI3NzZkYTJmNmJi
OTRiY2ZiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXBy
aXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX3VwZGF0ZV9pbmRleDcuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX3Vw
ZGF0ZV9pbmRleDcuaHRtbApAQCAtMzMsNyArMzMsNyBAQAogICAgICAgICAgICAgdmFyIGN1cnNv
ciA9IGUudGFyZ2V0LnJlc3VsdDsKICAgICAgICAgICAgIGFzc2VydF90cnVlKGN1cnNvciBpbnN0
YW5jZW9mIElEQkN1cnNvcik7CiAKLSAgICAgICAgICAgIGFzc2VydF90aHJvd3MoJ0RhdGFFcnJv
cicsIGZ1bmN0aW9uKCkgeyBjdXJzb3IudXBkYXRlKG51bGwpOyB9KTsKKyAgICAgICAgICAgIGFz
c2VydF90aHJvd3NfZG9tKCdEYXRhRXJyb3InLCBmdW5jdGlvbigpIHsgY3Vyc29yLnVwZGF0ZShu
dWxsKTsgfSk7CiAgICAgICAgICAgICB0LmRvbmUoKTsKICAgICAgICAgfSk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dz
aW5nL2lkYmN1cnNvcl91cGRhdGVfb2JqZWN0c3RvcmUyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX3VwZGF0ZV9vYmpl
Y3RzdG9yZTIuaHRtbAppbmRleCA2ZWE5MzU4YTc1OTY2NGUyNjg2Yzk1ZDEyODk2NTMxNWFlMjNk
NTAyLi44NTZjYjUwZDU0Yzg1ZDQ2NmI1MGY1ZmE4MDBlNDJhYWRlYjc3ZjNiIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRi
Y3Vyc29yX3VwZGF0ZV9vYmplY3RzdG9yZTIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX3VwZGF0ZV9vYmplY3Rz
dG9yZTIuaHRtbApAQCAtMjgsNyArMjgsNyBAQAogCiAgICAgICAgIGN1cnNvcl9ycS5vbnN1Y2Nl
c3MgPSB0LnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICB2YXIgY3Vyc29yID0g
ZS50YXJnZXQucmVzdWx0OwotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygnUmVhZE9ubHlFcnJv
cicsIGZ1bmN0aW9uKCkgeyBjdXJzb3IudXBkYXRlKGN1cnNvci52YWx1ZSk7IH0pOworICAgICAg
ICAgICAgYXNzZXJ0X3Rocm93c19kb20oJ1JlYWRPbmx5RXJyb3InLCBmdW5jdGlvbigpIHsgY3Vy
c29yLnVwZGF0ZShjdXJzb3IudmFsdWUpOyB9KTsKICAgICAgICAgICAgIHQuZG9uZSgpOwogICAg
ICAgICB9KTsKICAgICB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5k
ZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX3VwZGF0ZV9vYmplY3RzdG9yZTMuaHRt
bCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9p
ZGJjdXJzb3JfdXBkYXRlX29iamVjdHN0b3JlMy5odG1sCmluZGV4IGQyODVkNzQ0MDEzZjIzYzQw
Mzk2YTVhMDVmODQ5OGRiOWQwMDE4ZGQuLjQ3ZmEwYjdhYTUwZTY0OTEzMjBhNzAwOTk1NTljOGI0
YWIwY2JkMjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREIt
cHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfdXBkYXRlX29iamVjdHN0b3JlMy5odG1sCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJj
dXJzb3JfdXBkYXRlX29iamVjdHN0b3JlMy5odG1sCkBAIC0zMCw3ICszMCw3IEBACiAgICAgICAg
IH0pOwogCiAgICAgICAgIGUudGFyZ2V0LnRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSB0LnN0ZXBf
ZnVuYyhmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICBhc3NlcnRfdGhyb3dzKCdUcmFuc2FjdGlv
bkluYWN0aXZlRXJyb3InLCBmdW5jdGlvbigpIHsgd2luZG93LmN1cnNvci51cGRhdGUod2luZG93
LnJlY29yZCk7IH0pCisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgnVHJhbnNhY3Rpb25J
bmFjdGl2ZUVycm9yJywgZnVuY3Rpb24oKSB7IHdpbmRvdy5jdXJzb3IudXBkYXRlKHdpbmRvdy5y
ZWNvcmQpOyB9KQogICAgICAgICAgICAgdC5kb25lKCk7CiAgICAgICAgIH0pOwogICAgIH0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93
c2luZy9pZGJjdXJzb3JfdXBkYXRlX29iamVjdHN0b3JlNS5odG1sIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl91cGRhdGVfb2Jq
ZWN0c3RvcmU1Lmh0bWwKaW5kZXggMzk2NGRiOTc4MDkyZGM3ZmVjYzk4Yzc5ZmI5MGE2OTk4YmY5
ZTQ0MS4uZDY5NWZmMWRjMzJmYTczOGFkNjYyZjg1NzdlMmQwYzYwNDU2ZTA5MSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lk
YmN1cnNvcl91cGRhdGVfb2JqZWN0c3RvcmU1Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl91cGRhdGVfb2JqZWN0
c3RvcmU1Lmh0bWwKQEAgLTI5LDcgKzI5LDcgQEAKIAogICAgICAgICAgICAgZGIuZGVsZXRlT2Jq
ZWN0U3RvcmUoInRlc3QiKTsKICAgICAgICAgICAgIGN1cnNvci52YWx1ZSArPSAiX3VwZGF0ZWQi
OwotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygiSW52YWxpZFN0YXRlRXJyb3IiLCBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlkU3RhdGVFcnJvciIs
IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgIGN1cnNvci51cGRhdGUoY3Vyc29yLnZhbHVl
KTsKICAgICAgICAgICAgIH0sICJJZiB0aGUgY3Vyc29yJ3Mgc291cmNlIG9yIGVmZmVjdGl2ZSBv
YmplY3Qgc3RvcmUgaGFzIGJlZW4gZGVsZXRlZCwgdGhlIGltcGxlbWVudGF0aW9uIE1VU1QgdGhy
b3cgYSBET01FeGNlcHRpb24gb2YgdHlwZSBJbnZhbGlkU3RhdGVFcnJvciIpOwogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Npbmcv
aWRiY3Vyc29yX3VwZGF0ZV9vYmplY3RzdG9yZTYuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfdXBkYXRlX29iamVjdHN0
b3JlNi5odG1sCmluZGV4IGQ0ODIzNGMyODg2NjhjNTI1NzBkY2JmOTI0NGZjNzI2ODBjNjI4YmIu
LjdiZDQ3NmU5Mjc4NjdiZDFmYWVmMjRhYjEzYzg5MTY1NDEyY2E1ZTkgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJz
b3JfdXBkYXRlX29iamVjdHN0b3JlNi5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfdXBkYXRlX29iamVjdHN0b3Jl
Ni5odG1sCkBAIC0zMyw3ICszMyw3IEBACiAKICAgICAgICAgICAgIHZhciByZWNvcmQgPSBjdXJz
b3IudmFsdWU7CiAgICAgICAgICAgICByZWNvcmQuZGF0YSA9IGRvY3VtZW50OwotICAgICAgICAg
ICAgYXNzZXJ0X3Rocm93cygnRGF0YUNsb25lRXJyb3InLCBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgIGFzc2VydF90aHJvd3NfZG9tKCdEYXRhQ2xvbmVFcnJvcicsIGZ1bmN0aW9uKCkgewogICAg
ICAgICAgICAgICAgIGN1cnNvci51cGRhdGUocmVjb3JkKTsKICAgICAgICAgICAgIH0pOwogICAg
ICAgICAgICAgdC5kb25lKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
SW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiY3Vyc29yX3VwZGF0ZV9vYmplY3RzdG9yZTcu
aHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2lu
Zy9pZGJjdXJzb3JfdXBkYXRlX29iamVjdHN0b3JlNy5odG1sCmluZGV4IGRiOTgwNjNlMDk5N2I0
YzIzNjdiMjNkNGJjMmRhZTljZjEyNTU3YzguLjRhMDAzY2FiNTI4NThjMWQ1NWExZmEyZWFkMTg3
ZmY3MzdkNDgzZDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVk
REItcHJpdmF0ZS1icm93c2luZy9pZGJjdXJzb3JfdXBkYXRlX29iamVjdHN0b3JlNy5odG1sCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9p
ZGJjdXJzb3JfdXBkYXRlX29iamVjdHN0b3JlNy5odG1sCkBAIC0zMSw3ICszMSw3IEBACiAgICAg
ICAgICAgICB2YXIgY3Vyc29yID0gZS50YXJnZXQucmVzdWx0OwogICAgICAgICAgICAgYXNzZXJ0
X3RydWUoY3Vyc29yIGluc3RhbmNlb2YgSURCQ3Vyc29yKTsKIAotICAgICAgICAgICAgYXNzZXJ0
X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgeyBjdXJzb3IudXBkYXRlKCk7IH0p
OworICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeyBj
dXJzb3IudXBkYXRlKCk7IH0pOwogICAgICAgICAgICAgdC5kb25lKCk7CiAgICAgICAgIH0pOwog
ICAgIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJp
dmF0ZS1icm93c2luZy9pZGJjdXJzb3JfdXBkYXRlX29iamVjdHN0b3JlOC5odG1sIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl91
cGRhdGVfb2JqZWN0c3RvcmU4Lmh0bWwKaW5kZXggOTQ4YzU0OTE2OWIwNTI4MjVlOGVlNmM2NjMx
NjlmOTk0OTBlY2YwMS4uZGEzNmRkZTg5MmJmYzJlZDc2N2EwODg3MjE4MzhjNjhiMjYxYTMzYSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJy
b3dzaW5nL2lkYmN1cnNvcl91cGRhdGVfb2JqZWN0c3RvcmU4Lmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmN1cnNvcl91cGRh
dGVfb2JqZWN0c3RvcmU4Lmh0bWwKQEAgLTMxLDcgKzMxLDcgQEAKICAgICAgICAgICAgIHZhciBj
dXJzb3IgPSBlLnRhcmdldC5yZXN1bHQ7CiAgICAgICAgICAgICBhc3NlcnRfdHJ1ZShjdXJzb3Ig
aW5zdGFuY2VvZiBJREJDdXJzb3IpOwogCi0gICAgICAgICAgICBhc3NlcnRfdGhyb3dzKCdEYXRh
RXJyb3InLCBmdW5jdGlvbigpIHsgY3Vyc29yLnVwZGF0ZShudWxsKTsgfSk7CisgICAgICAgICAg
ICBhc3NlcnRfdGhyb3dzX2RvbSgnRGF0YUVycm9yJywgZnVuY3Rpb24oKSB7IGN1cnNvci51cGRh
dGUobnVsbCk7IH0pOwogICAgICAgICAgICAgdC5kb25lKCk7CiAgICAgICAgIH0pOwogICAgIH0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1i
cm93c2luZy9pZGJkYXRhYmFzZV9jcmVhdGVPYmplY3RTdG9yZTExLmh0bWwgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiZGF0YWJhc2VfY3Jl
YXRlT2JqZWN0U3RvcmUxMS5odG1sCmluZGV4IGIyZTIzM2E2ZTY2ZTE3ODAxNTk4NmIzNmQyOTU3
ZTEzMGU1MWNmNTUuLjE3MDdmODE2NjdkYmYwMzAzNTk3YzBlZTc3ZjYwNjgxMjUyMTZlYTMgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93
c2luZy9pZGJkYXRhYmFzZV9jcmVhdGVPYmplY3RTdG9yZTExLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmRhdGFiYXNlX2Ny
ZWF0ZU9iamVjdFN0b3JlMTEuaHRtbApAQCAtMTQsNyArMTQsNyBAQCB2YXIgdCA9IGFzeW5jX3Rl
c3QoKSwKIG9wZW5fcnEub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24gKGUpIHsKICAgICB2YXIg
ZGIgPSBlLnRhcmdldC5yZXN1bHQ7CiAgICAgZGIuY3JlYXRlT2JqZWN0U3RvcmUoInN0b3JlIik7
Ci0gICAgYXNzZXJ0X3Rocm93cygiQ29uc3RyYWludEVycm9yIiwgZnVuY3Rpb24oKXsKKyAgICBh
c3NlcnRfdGhyb3dzX2RvbSgiQ29uc3RyYWludEVycm9yIiwgZnVuY3Rpb24oKXsKICAgICAgICAg
ZGIuY3JlYXRlT2JqZWN0U3RvcmUoInN0b3JlIiwgewogICAgICAgICAgICAga2V5UGF0aDogImtl
eTEiLAogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9J
bmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJkYXRhYmFzZV9jcmVhdGVPYmplY3RTdG9yZTMu
aHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2lu
Zy9pZGJkYXRhYmFzZV9jcmVhdGVPYmplY3RTdG9yZTMuaHRtbAppbmRleCBhZDEwZTkwZDhiOWVi
OTI0ZTA0NTU2MzA3NTdkM2QxZDA5MjdkMjJkLi44NjY1MDk0MjZiYmVlZWJkMDgzNjY4NDkwODA1
MjIyNGJkYWE4NWZiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhl
ZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiZGF0YWJhc2VfY3JlYXRlT2JqZWN0U3RvcmUzLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5n
L2lkYmRhdGFiYXNlX2NyZWF0ZU9iamVjdFN0b3JlMy5odG1sCkBAIC0xMyw3ICsxMyw3IEBAIHZh
ciB0ID0gYXN5bmNfdGVzdCgpLAogb3Blbl9ycS5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbigp
IHt9CiBvcGVuX3JxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChlKSB7CiAgICAgdmFyIGRiID0gZS50
YXJnZXQucmVzdWx0Ci0gICAgYXNzZXJ0X3Rocm93cygKKyAgICBhc3NlcnRfdGhyb3dzX2RvbSgK
ICAgICAgICAgJ0ludmFsaWRTdGF0ZUVycm9yJywKICAgICAgICAgZnVuY3Rpb24oKSB7IGRiLmNy
ZWF0ZU9iamVjdFN0b3JlKCdmYWlscycpIH0pCiAgICAgdC5kb25lKCk7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiZGF0
YWJhc2VfY3JlYXRlT2JqZWN0U3RvcmU0Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
SW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiZGF0YWJhc2VfY3JlYXRlT2JqZWN0U3RvcmU0
Lmh0bWwKaW5kZXggYmJjN2ZmZWY1YzAyZDYyZTkxZmM3MDVkNGExZTliMWE1ZDUzN2YxZS4uNGNk
Njk5OTdiNTBhNDljYjAwYTJjOGQ4MDFiOWM3NDEyNGQzYTBiMCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmRhdGFiYXNl
X2NyZWF0ZU9iamVjdFN0b3JlNC5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9J
bmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJkYXRhYmFzZV9jcmVhdGVPYmplY3RTdG9yZTQu
aHRtbApAQCAtMTMsNyArMTMsNyBAQCB2YXIgdCA9IGFzeW5jX3Rlc3QoKSwKIG9wZW5fcnEub251
cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZSkgewogICAgIHZhciBkYiA9IGUudGFyZ2V0LnJlc3Vs
dAogICAgIGRiLmNyZWF0ZU9iamVjdFN0b3JlKCJkdXBlIikKLSAgICBhc3NlcnRfdGhyb3dzKAor
ICAgIGFzc2VydF90aHJvd3NfZG9tKAogICAgICAgICAnQ29uc3RyYWludEVycm9yJywKICAgICAg
ICAgZnVuY3Rpb24oKSB7IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCJkdXBlIikgfSkKIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5n
L2lkYmRhdGFiYXNlX2NyZWF0ZU9iamVjdFN0b3JlNi5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmRhdGFiYXNlX2NyZWF0ZU9iamVj
dFN0b3JlNi5odG1sCmluZGV4IDFlM2Y0MDA4OTgxOTNmMmQ0NTU3YzQ3ZjlkNTBkZGI4OTRlNDhl
ZmQuLjY0Y2YxOTc3MDAzN2M1YzUyNTM1ODVmOTJjNWVhMTkwYmNkZjk5ZTggMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJk
YXRhYmFzZV9jcmVhdGVPYmplY3RTdG9yZTYuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiZGF0YWJhc2VfY3JlYXRlT2JqZWN0
U3RvcmU2Lmh0bWwKQEAgLTEzLDExICsxMywxMSBAQCB2YXIgdCA9IGFzeW5jX3Rlc3QoKSwKIG9w
ZW5fcnEub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZSkgewogICAgIHZhciBkYiA9IGUudGFy
Z2V0LnJlc3VsdAogCi0gICAgYXNzZXJ0X3Rocm93cygnU3ludGF4RXJyb3InLCBmdW5jdGlvbigp
IHsKKyAgICBhc3NlcnRfdGhyb3dzX2RvbSgnU3ludGF4RXJyb3InLCBmdW5jdGlvbigpIHsKICAg
ICAgICAgICAgIGRiLmNyZWF0ZU9iamVjdFN0b3JlKCJpbnZhbGlka2V5cGF0aCIsIHsga2V5UGF0
aDogIkludmFsaWQgS2V5cGF0aCIgfSkKICAgICAgICAgfSkKIAotICAgIGFzc2VydF90aHJvd3Mo
J1N5bnRheEVycm9yJywgZnVuY3Rpb24oKSB7CisgICAgYXNzZXJ0X3Rocm93c19kb20oJ1N5bnRh
eEVycm9yJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICBkYi5jcmVhdGVPYmplY3RTdG9yZSgi
aW52YWxpZGtleXBhdGgiLCB7IGF1dG9JbmNyZW1lbnQ6IHRydWUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleVBhdGg6ICJJbnZhbGlkIEtl
eXBhdGgiIH0pCiAgICAgICAgIH0pCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiZGF0YWJhc2VfY3JlYXRlT2JqZWN0U3Rv
cmU5LWludmFsaWRwYXJhbWV0ZXJzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5k
ZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiZGF0YWJhc2VfY3JlYXRlT2JqZWN0U3RvcmU5LWlu
dmFsaWRwYXJhbWV0ZXJzLmh0bWwKaW5kZXggYjY3ZjFlZjFiYzdhODViYTcwMjZmYzdhYjhjY2Rj
N2I3YjIwMWYzZS4uMDRiNTlmZmU1NzIyYzkxNmE5Yzk3NjYxMzc2MTI2NjRiZGM5YWJiNyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dz
aW5nL2lkYmRhdGFiYXNlX2NyZWF0ZU9iamVjdFN0b3JlOS1pbnZhbGlkcGFyYW1ldGVycy5odG1s
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2lu
Zy9pZGJkYXRhYmFzZV9jcmVhdGVPYmplY3RTdG9yZTktaW52YWxpZHBhcmFtZXRlcnMuaHRtbApA
QCAtMTEsNyArMTEsNyBAQAogICAgICAgICB2YXIgdCA9IGFzeW5jX3Rlc3QoZG9jdW1lbnQudGl0
bGUgKyAiIC0gIiArIGRlc2MpOwogCiAgICAgICAgIGNyZWF0ZWRiKHQpLm9udXBncmFkZW5lZWRl
ZCA9IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIGFzc2VydF90aHJvd3MoZXhjZXB0aW9uLCBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKGV4Y2VwdGlvbiwgZnVu
Y3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgZS50YXJnZXQucmVzdWx0LmNyZWF0ZU9iamVjdFN0
b3JlKCJzdG9yZSIsIHBhcmFtcyk7CiAgICAgICAgICAgICB9KTsKIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmRhdGFi
YXNlX2RlbGV0ZU9iamVjdFN0b3JlMi5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0lu
ZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmRhdGFiYXNlX2RlbGV0ZU9iamVjdFN0b3JlMi5o
dG1sCmluZGV4IGU0YTg3ZWNiOWQwZTkxYjYzNWI0ZTZjMDY4MzllMDUxOWJmZTBhYzUuLjhjMGZm
ZDg1NDBhMGVlM2E3NmMyZGZjMmIyNDRjZDVjNzNkYWY4OWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJkYXRhYmFzZV9k
ZWxldGVPYmplY3RTdG9yZTIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5k
ZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiZGF0YWJhc2VfZGVsZXRlT2JqZWN0U3RvcmUyLmh0
bWwKQEAgLTE3LDcgKzE3LDcgQEAgb3Blbl9ycS5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihl
KQogCiAgICAgZS50YXJnZXQudHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IHQuc3RlcF9mdW5jKGZ1
bmN0aW9uIChlKQogICAgIHsKLSAgICAgICAgYXNzZXJ0X3Rocm93cygnSW52YWxpZFN0YXRlRXJy
b3InLAorICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgnSW52YWxpZFN0YXRlRXJyb3InLAogICAg
ICAgICAgICAgZnVuY3Rpb24oKSB7IGRiLmRlbGV0ZU9iamVjdFN0b3JlKCJkZWxldGVfb3V0c2lk
ZSIpOyB9KTsKICAgICAgICAgdC5kb25lKCk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiZGF0YWJhc2Vf
ZGVsZXRlT2JqZWN0U3RvcmUzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhl
ZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiZGF0YWJhc2VfZGVsZXRlT2JqZWN0U3RvcmUzLmh0bWwK
aW5kZXggMDQ5N2MxNjllNTlhZjEzMjE0YTcwNjllY2RmZjY5MDViYjkzMjk1NC4uOGM2NzA4YzEz
ZTJiYmJjMGI1ZDlmYTBhMDE5N2VmNDc3MmMwNjhmYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmRhdGFiYXNlX2RlbGV0
ZU9iamVjdFN0b3JlMy5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVk
REItcHJpdmF0ZS1icm93c2luZy9pZGJkYXRhYmFzZV9kZWxldGVPYmplY3RTdG9yZTMuaHRtbApA
QCAtMTMsNyArMTMsNyBAQCB2YXIgdCA9IGFzeW5jX3Rlc3QoKSwKIG9wZW5fcnEub251cGdyYWRl
bmVlZGVkID0gZnVuY3Rpb24oZSkKIHsKICAgICB2YXIgZGIgPSBlLnRhcmdldC5yZXN1bHQ7Ci0g
ICAgYXNzZXJ0X3Rocm93cygnTm90Rm91bmRFcnJvcicsCisgICAgYXNzZXJ0X3Rocm93c19kb20o
J05vdEZvdW5kRXJyb3InLAogICAgICAgICBmdW5jdGlvbigpIHsgZGIuZGVsZXRlT2JqZWN0U3Rv
cmUoJ3doYXRldmVyJyk7IH0pOwogICAgIHQuZG9uZSgpOwogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmRhdGFiYXNl
X2RlbGV0ZU9iamVjdFN0b3JlNC1ub3RfcmV1c2VkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiZGF0YWJhc2VfZGVsZXRlT2JqZWN0
U3RvcmU0LW5vdF9yZXVzZWQuaHRtbAppbmRleCAzZGE3ODlhNjRmYTYzMDEwYTQ0NWYwMTNmNmZi
ZjUxZTE2MmE3NTRjLi44MTI4ODhlOWY1OTA0Zjk4ZDI3MjQ4ZTU0NmM4ZGNmODRjY2M1YjU2IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJv
d3NpbmcvaWRiZGF0YWJhc2VfZGVsZXRlT2JqZWN0U3RvcmU0LW5vdF9yZXVzZWQuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRi
ZGF0YWJhc2VfZGVsZXRlT2JqZWN0U3RvcmU0LW5vdF9yZXVzZWQuaHRtbApAQCAtMjksNyArMjks
NyBAQCBvcGVuX3JxLm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGUpIHsKICAgICBhc3NlcnRf
ZmFsc2Uob2JqU3RvcmUyLmluZGV4TmFtZXMuY29udGFpbnMoImlkeCIpLCAiaW5kZXggZXhpc3Qg
b24gbmV3IG9ianN0b3JlIik7CiAgICAgYXNzZXJ0X2VxdWFscyhvYmpTdG9yZTIua2V5UGF0aCwg
bnVsbCwgImtleVBhdGgiKTsKIAotICAgIGFzc2VydF90aHJvd3MoIk5vdEZvdW5kRXJyb3IiLCBm
dW5jdGlvbigpIHsgb2JqU3RvcmUyLmluZGV4KCJpZHgiKTsgfSk7CisgICAgYXNzZXJ0X3Rocm93
c19kb20oIk5vdEZvdW5kRXJyb3IiLCBmdW5jdGlvbigpIHsgb2JqU3RvcmUyLmluZGV4KCJpZHgi
KTsgfSk7CiB9CiAKIG9wZW5fcnEub25zdWNjZXNzID0gZnVuY3Rpb24oZSkgewpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lk
YmRhdGFiYXNlX3RyYW5zYWN0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5k
ZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiZGF0YWJhc2VfdHJhbnNhY3Rpb24uaHRtbAppbmRl
eCBjOGMyYzlmNTk0YjQzMjRkNjFlZjQxMjBiNDYzNDk1NzU0MDM0NGIxLi41MGIwMTVmYjczMmU5
NTgzZWJlMWY2YzFmMmI4ZThlNDUwNDdhMzQ4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiZGF0YWJhc2VfdHJhbnNhY3Rp
b24uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUt
YnJvd3NpbmcvaWRiZGF0YWJhc2VfdHJhbnNhY3Rpb24uaHRtbApAQCAtMTUsNyArMTUsNyBAQCBv
cGVuX3JxLm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKCkge307CiBvcGVuX3JxLm9uc3VjY2Vz
cyA9IGZ1bmN0aW9uKGUpIHsKICAgICBkYiA9IGUudGFyZ2V0LnJlc3VsdDsKIAotICAgIGFzc2Vy
dF90aHJvd3MoJ05vdEZvdW5kRXJyb3InLCBmdW5jdGlvbigpIHsgZGIudHJhbnNhY3Rpb24oJ25v
bi1leGlzdGluZycpOyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzX2RvbSgnTm90Rm91bmRFcnJvcics
IGZ1bmN0aW9uKCkgeyBkYi50cmFuc2FjdGlvbignbm9uLWV4aXN0aW5nJyk7IH0pOwogICAgIHQu
ZG9uZSgpOwogfTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4
ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmRhdGFiYXNlX3RyYW5zYWN0aW9uMy5odG1sIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmRhdGFi
YXNlX3RyYW5zYWN0aW9uMy5odG1sCmluZGV4IDEwODdhZWNjOGRlZWEwOGYyN2YzYWM1OWI2ZTRk
NTRlMDBjZjAzMGQuLjVhNGU3M2NkM2NhOGMzZjI2YmM1NGIzZmM0MjExNDljNDdjYTBmY2EgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93
c2luZy9pZGJkYXRhYmFzZV90cmFuc2FjdGlvbjMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiZGF0YWJhc2VfdHJhbnNhY3Rp
b24zLmh0bWwKQEAgLTE4LDcgKzE4LDcgQEAKICAgICBvcGVuX3JxLm9uc3VjY2VzcyA9IGZ1bmN0
aW9uKGUpIHsKICAgICAgICAgZGIuY2xvc2UoKTsKIAotICAgICAgICBhc3NlcnRfdGhyb3dzKCdJ
bnZhbGlkU3RhdGVFcnJvcicsCisgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCdJbnZhbGlkU3Rh
dGVFcnJvcicsCiAgICAgICAgICAgICBmdW5jdGlvbigpIHsgZGIudHJhbnNhY3Rpb24oJ3Rlc3Qn
KTsgfSk7CiAKICAgICAgICAgdC5kb25lKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiZGF0YWJhc2VfdHJhbnNhY3Rp
b240Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJv
d3NpbmcvaWRiZGF0YWJhc2VfdHJhbnNhY3Rpb240Lmh0bWwKaW5kZXggMjEyMGYwNzlkYmYwY2Q0
MjdkOTdjMDE3MmViN2M0ZGVhZTc0ZDM2OC4uM2ZhYjQwZjNlZWM5ZWY2YWJiZGMxZDc0ZjhiY2U3
YTBlYjBhMDYxMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWRE
Qi1wcml2YXRlLWJyb3dzaW5nL2lkYmRhdGFiYXNlX3RyYW5zYWN0aW9uNC5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJkYXRh
YmFzZV90cmFuc2FjdGlvbjQuaHRtbApAQCAtMTYsNyArMTYsNyBAQAogICAgIH07CiAKICAgICBv
cGVuX3JxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgYXNzZXJ0X3Rocm93cyh7
IG5hbWU6ICdUeXBlRXJyb3InIH0sCisgICAgICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9y
LAogICAgICAgICAgICAgZnVuY3Rpb24oKSB7IGRiLnRyYW5zYWN0aW9uKCd0ZXN0JywgJ3doYXRl
dmVyJyk7IH0pOwogCiAgICAgICAgIHQuZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmRhdGFiYXNlX3RyYW5z
YWN0aW9uNS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRl
LWJyb3dzaW5nL2lkYmRhdGFiYXNlX3RyYW5zYWN0aW9uNS5odG1sCmluZGV4IGNlZjZkMmE0MGU3
YTg0OWU5YTYxODg5ODU0N2UyMGY0Y2Y5NmZiMDIuLmQwZDI4OTI4MGVhZjk2OWRmYjZjYjY5OTI1
MGU2MjM5MWQ5ODUyNjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRl
eGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJkYXRhYmFzZV90cmFuc2FjdGlvbjUuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRi
ZGF0YWJhc2VfdHJhbnNhY3Rpb241Lmh0bWwKQEAgLTE1LDcgKzE1LDcgQEAgdmFyIGRiLAogb3Bl
bl9ycS5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbigpIHt9Owogb3Blbl9ycS5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbihlKSB7CiAgICAgZGIgPSBlLnRhcmdldC5yZXN1bHQ7Ci0gICAgYXNzZXJ0X3Ro
cm93cygnSW52YWxpZEFjY2Vzc0Vycm9yJywgZnVuY3Rpb24oKSB7IGRiLnRyYW5zYWN0aW9uKFtd
KTsgfSk7CisgICAgYXNzZXJ0X3Rocm93c19kb20oJ0ludmFsaWRBY2Nlc3NFcnJvcicsIGZ1bmN0
aW9uKCkgeyBkYi50cmFuc2FjdGlvbihbXSk7IH0pOwogICAgIHQuZG9uZSgpOwogfTsKIDwvc2Ny
aXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2
YXRlLWJyb3dzaW5nL2lkYmZhY3RvcnlfY21wMi5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmZhY3RvcnlfY21wMi5odG1sCmluZGV4
IDg5MzlkZDJkMzE0MzhkMDI5ZWYzNmJmNWU5NGUyNzI2M2MwNzk5ZWYuLmJlYzI4MTVkMDlhMjkx
ODExZWI2OTQ4MDI4NGJhMjUxZDk4OTg2ZTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJmYWN0b3J5X2NtcDIuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Npbmcv
aWRiZmFjdG9yeV9jbXAyLmh0bWwKQEAgLTksMzEgKzksMzEgQEAKIDxkaXYgaWQ9bG9nPjwvZGl2
PgogPHNjcmlwdD4KICAgICB0ZXN0KCBmdW5jdGlvbigpIHsKLSAgICAgICAgYXNzZXJ0X3Rocm93
cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgeworICAgICAgICBhc3NlcnRfdGhyb3dzX2pz
KFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICBpbmRleGVkREIuY21wKCk7CiAg
ICAgICAgIH0pOwogICAgIH0sICJJREJGYWN0b3J5LmNtcCgpIC0gbm8gYXJndW1lbnQiKTsKIAog
ICAgIHRlc3QoIGZ1bmN0aW9uKCkgewotICAgICAgICBhc3NlcnRfdGhyb3dzKCJEYXRhRXJyb3Ii
LCBmdW5jdGlvbigpIHsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkRhdGFFcnJvciIsIGZ1
bmN0aW9uKCkgewogICAgICAgICAgICAgaW5kZXhlZERCLmNtcChudWxsLCBudWxsKTsKICAgICAg
ICAgfSk7Ci0gICAgICAgIGFzc2VydF90aHJvd3MoIkRhdGFFcnJvciIsIGZ1bmN0aW9uKCkgewor
ICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiRGF0YUVycm9yIiwgZnVuY3Rpb24oKSB7CiAgICAg
ICAgICAgICBpbmRleGVkREIuY21wKDEsIG51bGwpOwogICAgICAgICB9KTsKLSAgICAgICAgYXNz
ZXJ0X3Rocm93cygiRGF0YUVycm9yIiwgZnVuY3Rpb24oKSB7CisgICAgICAgIGFzc2VydF90aHJv
d3NfZG9tKCJEYXRhRXJyb3IiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgIGluZGV4ZWREQi5j
bXAobnVsbCwgMSk7CiAgICAgICAgIH0pOwogICAgIH0sICJJREJGYWN0b3J5LmNtcCgpIC0gbnVs
bCIpOwogCiAgICAgdGVzdCggZnVuY3Rpb24oKSB7Ci0gICAgICAgIGFzc2VydF90aHJvd3MoIkRh
dGFFcnJvciIsIGZ1bmN0aW9uKCkgeworICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiRGF0YUVy
cm9yIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICBpbmRleGVkREIuY21wKE5hTiwgTmFOKTsK
ICAgICAgICAgfSk7Ci0gICAgICAgIGFzc2VydF90aHJvd3MoIkRhdGFFcnJvciIsIGZ1bmN0aW9u
KCkgeworICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiRGF0YUVycm9yIiwgZnVuY3Rpb24oKSB7
CiAgICAgICAgICAgICBpbmRleGVkREIuY21wKDEsIE5hTik7CiAgICAgICAgIH0pOwotICAgICAg
ICBhc3NlcnRfdGhyb3dzKCJEYXRhRXJyb3IiLCBmdW5jdGlvbigpIHsKKyAgICAgICAgYXNzZXJ0
X3Rocm93c19kb20oIkRhdGFFcnJvciIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgaW5kZXhl
ZERCLmNtcChOYU4sIDEpOwogICAgICAgICB9KTsKICAgICB9LCAiSURCRmFjdG9yeS5jbXAoKSAt
IE5hTiIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1w
cml2YXRlLWJyb3dzaW5nL2lkYmZhY3Rvcnlfb3BlbjkuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJmYWN0b3J5X29wZW45Lmh0bWwK
aW5kZXggYmQ0NDdlMjQ3ZjdjZjE1ZWE5YmNhY2VkM2JmNTA1MDQ3ZDk5OGRjYS4uYjQxYTAzMzcz
YWJiNmY1NzU3NmQ1NjM1M2YyMjlhMTU5NTA0ZThmYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmZhY3Rvcnlfb3Blbjku
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJv
d3NpbmcvaWRiZmFjdG9yeV9vcGVuOS5odG1sCkBAIC05LDcgKzksNyBAQCBmdW5jdGlvbiBzaG91
bGRfdGhyb3codmFsLCBuYW1lKSB7CiAgICAgICAgIG5hbWUgPSAoKHR5cGVvZiB2YWwgPT0gIm9i
amVjdCIgJiYgdmFsKSA/ICJvYmplY3QiIDogZm9ybWF0X3ZhbHVlKHZhbCkpCiAgICAgfQogICAg
IHRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwg
ZnVuY3Rpb24oKSB7CisgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgZnVuY3Rpb24o
KSB7CiAgICAgICAgIHdpbmRvdy5pbmRleGVkREIub3BlbigndGVzdCcsIHZhbCk7CiAgICAgICB9
KTsKICAgICB9LCAiQ2FsbGluZyBvcGVuKCkgd2l0aCB2ZXJzaW9uIGFyZ3VtZW50ICIgKyBuYW1l
ICsgIiBzaG91bGQgdGhyb3cgVHlwZUVycm9yLiIpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiaW5kZXgtbXVsdGllbnRy
eS1hcnJheWtleXBhdGguaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREIt
cHJpdmF0ZS1icm93c2luZy9pZGJpbmRleC1tdWx0aWVudHJ5LWFycmF5a2V5cGF0aC5odG1sCmlu
ZGV4IDdkZWRmYmY5YTgzYTU5NmU4Nzc3YTJiMDJlODU3YWNkMDdlMzgzYjQuLmY1MTA2YWZlMTJl
YThiYjAxMzQxZThmNWNmZjgzMTAwZDk2MGI2YWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJpbmRleC1tdWx0aWVudHJ5
LWFycmF5a2V5cGF0aC5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVk
REItcHJpdmF0ZS1icm93c2luZy9pZGJpbmRleC1tdWx0aWVudHJ5LWFycmF5a2V5cGF0aC5odG1s
CkBAIC0xMiw3ICsxMiw3IEBACiAgICAgY3JlYXRlZGIoYXN5bmNfdGVzdChkb2N1bWVudC50aXRs
ZSwge3RpbWVvdXQ6IDEwMDAwfSkpLm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGUpIHsKICAg
ICAgICAgdmFyIHN0b3JlID0gZS50YXJnZXQucmVzdWx0LmNyZWF0ZU9iamVjdFN0b3JlKCJzdG9y
ZSIpOwogCi0gICAgICAgIGFzc2VydF90aHJvd3MoJ0ludmFsaWRBY2Nlc3NFcnJvcicsIGZ1bmN0
aW9uKCkgeworICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgnSW52YWxpZEFjY2Vzc0Vycm9yJywg
ZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICBzdG9yZS5jcmVhdGVJbmRleCgnYWN0b3JzJywgWydu
YW1lJ10sIHsgbXVsdGlFbnRyeTogdHJ1ZSB9KQogICAgICAgICB9KTsKIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmlu
ZGV4X2NvdW50NC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2
YXRlLWJyb3dzaW5nL2lkYmluZGV4X2NvdW50NC5odG1sCmluZGV4IGU1OTQ4ZWM1ZGVmMDNmNDdh
NDA1MzJiNTA1ZGI5NmUxY2ExZjllZjguLjkxOWNmNWQ0ZmI3OTJjYjc0YjNjZWZkZWM0NWMxMTQw
YzE5NTgzOWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREIt
cHJpdmF0ZS1icm93c2luZy9pZGJpbmRleF9jb3VudDQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiaW5kZXhfY291bnQ0Lmh0
bWwKQEAgLTI3LDcgKzI3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAub2JqZWN0U3RvcmUo
InN0b3JlIikKICAgICAgICAgICAgICAgICAgICAgICAuaW5kZXgoImluZGV4Iik7CiAKLSAgICAg
ICAgYXNzZXJ0X3Rocm93cygiRGF0YUVycm9yIiwgZnVuY3Rpb24oKSB7CisgICAgICAgIGFzc2Vy
dF90aHJvd3NfZG9tKCJEYXRhRXJyb3IiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgIGluZGV4
LmNvdW50KE5hTik7CiAgICAgICAgIH0pOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiaW5kZXhfZ2V0NS5odG1sIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmlu
ZGV4X2dldDUuaHRtbAppbmRleCAwMTUyNDkyNjIyNGEwNjkzMmFlZjYxOGFkNTMxMzhlZjcyZjhm
OWI0Li5jZDA0M2Q5MTY2MmExMzhjNTYyN2M5OTZiNzcwNjFlZWFhMjMwNjY1IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRi
aW5kZXhfZ2V0NS5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREIt
cHJpdmF0ZS1icm93c2luZy9pZGJpbmRleF9nZXQ1Lmh0bWwKQEAgLTE3LDcgKzE3LDcgQEAKIAog
ICAgICAgICB2YXIgaW5kZXggPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgidGVzdCIsIHsga2V5UGF0
aDogImtleSIgfSkKICAgICAgICAgICAgICAgICAgICAgICAuY3JlYXRlSW5kZXgoImluZGV4Iiwg
ImluZGV4ZWRQcm9wZXJ0eSIpOwotICAgICAgICBhc3NlcnRfdGhyb3dzKCJEYXRhRXJyb3IiLGZ1
bmN0aW9uKCl7CisgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJEYXRhRXJyb3IiLGZ1bmN0aW9u
KCl7CiAgICAgICAgICAgICBpbmRleC5nZXQoTmFOKTsKICAgICAgICAgfSk7CiAgICAgICAgIHQu
ZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1w
cml2YXRlLWJyb3dzaW5nL2lkYmluZGV4X2dldDYuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJpbmRleF9nZXQ2Lmh0bWwKaW5kZXgg
YTViNzYzZWQ1ZTNkYjM3NjY5NDQ5MDBjMzY2ZGYxZjBhNTRjMzUxZC4uMTQ0Yjk2OTM1Y2ZkMDI4
ZGRiNGY5Y2ZlMzljY2FiNGRkZWE5YzIyOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmluZGV4X2dldDYuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRi
aW5kZXhfZ2V0Ni5odG1sCkBAIC0yMCw3ICsyMCw3IEBACiAgICAgICAgIHN0b3JlLmFkZCh7IGtl
eTogMSwgaW5kZXhlZFByb3BlcnR5OiAiZGF0YSIgfSk7CiAgICAgICAgIHN0b3JlLmRlbGV0ZUlu
ZGV4KCJpbmRleCIpOwogCi0gICAgICAgIGFzc2VydF90aHJvd3MoIkludmFsaWRTdGF0ZUVycm9y
IiwgZnVuY3Rpb24oKXsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkludmFsaWRTdGF0ZUVy
cm9yIiwgZnVuY3Rpb24oKXsKICAgICAgICAgICAgIGluZGV4LmdldCgiZGF0YSIpOwogICAgICAg
ICB9KTsKICAgICAgICAgdC5kb25lKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiaW5kZXhfZ2V0Ny5odG1sIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmluZGV4
X2dldDcuaHRtbAppbmRleCA4OTczNWVhZDg0ZGY1ZjQxNTljNGEyM2U2NzNhNTIyNWMxMGNkZWY0
Li4zNWU2YTVkYTM4N2E3ZDdlZjVkYjNmNDgxYTJlN2FhMDU5MTUzZGQ3IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiaW5k
ZXhfZ2V0Ny5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJp
dmF0ZS1icm93c2luZy9pZGJpbmRleF9nZXQ3Lmh0bWwKQEAgLTIwLDcgKzIwLDcgQEAKIAogICAg
ICAgICBlLnRhcmdldC50cmFuc2FjdGlvbi5hYm9ydCgpOwogCi0gICAgICAgIGFzc2VydF90aHJv
d3MoIkludmFsaWRTdGF0ZUVycm9yIiwgZnVuY3Rpb24oKXsKKyAgICAgICAgYXNzZXJ0X3Rocm93
c19kb20oIkludmFsaWRTdGF0ZUVycm9yIiwgZnVuY3Rpb24oKXsKICAgICAgICAgICAgIGluZGV4
LmdldCgiZGF0YSIpOwogICAgICAgICB9KTsKICAgICAgICAgdC5kb25lKCk7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRi
aW5kZXhfZ2V0S2V5NS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1w
cml2YXRlLWJyb3dzaW5nL2lkYmluZGV4X2dldEtleTUuaHRtbAppbmRleCA4MTJjM2NkNDhkZDZh
NjIzNzIyYjZmY2RiOWM3ZjViMTQyYmY5Yzk0Li44ZWRhNTc5MDU4ZmMyZmFhNzQyYmQ2YTNjMGRj
MTkxNmQyOWI1MWU1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhl
ZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiaW5kZXhfZ2V0S2V5NS5odG1sCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJpbmRleF9nZXRL
ZXk1Lmh0bWwKQEAgLTE3LDcgKzE3LDcgQEAKIAogICAgICAgICB2YXIgaW5kZXggPSBkYi5jcmVh
dGVPYmplY3RTdG9yZSgidGVzdCIsIHsga2V5UGF0aDogImtleSIgfSkKICAgICAgICAgICAgICAg
ICAgICAgICAuY3JlYXRlSW5kZXgoImluZGV4IiwgImluZGV4ZWRQcm9wZXJ0eSIpOwotICAgICAg
ICBhc3NlcnRfdGhyb3dzKCJEYXRhRXJyb3IiLGZ1bmN0aW9uKCl7CisgICAgICAgIGFzc2VydF90
aHJvd3NfZG9tKCJEYXRhRXJyb3IiLGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICBpbmRleC5nZXRL
ZXkoTmFOKTsKICAgICAgICAgfSk7CiAgICAgICAgIHQuZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmluZGV4
X2dldEtleTYuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0
ZS1icm93c2luZy9pZGJpbmRleF9nZXRLZXk2Lmh0bWwKaW5kZXggZjBjOGU4ODA1ZTZlNmVjYWZl
MjdhYmNiNWJiZWVmNjZjZmI1Y2Q2OS4uMzZhN2Y3MTdiOTk3MmUyNzcxNzAxNzBjNjQ0NzUyMmI5
MzE3ZjI0OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1w
cml2YXRlLWJyb3dzaW5nL2lkYmluZGV4X2dldEtleTYuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiaW5kZXhfZ2V0S2V5Ni5o
dG1sCkBAIC0yMCw3ICsyMCw3IEBACiAgICAgICAgIHN0b3JlLmFkZCh7IGtleTogMSwgaW5kZXhl
ZFByb3BlcnR5OiAiZGF0YSIgfSk7CiAgICAgICAgIHN0b3JlLmRlbGV0ZUluZGV4KCJpbmRleCIp
OwogCi0gICAgICAgIGFzc2VydF90aHJvd3MoIkludmFsaWRTdGF0ZUVycm9yIiwgZnVuY3Rpb24o
KXsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkludmFsaWRTdGF0ZUVycm9yIiwgZnVuY3Rp
b24oKXsKICAgICAgICAgICAgIGluZGV4LmdldEtleSgiZGF0YSIpOwogICAgICAgICB9KTsKICAg
ICAgICAgdC5kb25lKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5k
ZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiaW5kZXhfZ2V0S2V5Ny5odG1sIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmluZGV4X2dldEtl
eTcuaHRtbAppbmRleCAyZGUwODA3OTk3Yjc1MTJjZjRlOTYyMDYzNTI5NTA2NTBjNzU4OTE5Li5i
NzBiMzg0ZjQ0ZTIyNjg1ZDM5ZTk2YWU2NGUyMGQwYzQ4NzdjYjI2IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiaW5kZXhf
Z2V0S2V5Ny5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJp
dmF0ZS1icm93c2luZy9pZGJpbmRleF9nZXRLZXk3Lmh0bWwKQEAgLTIwLDcgKzIwLDcgQEAKIAog
ICAgICAgICBlLnRhcmdldC50cmFuc2FjdGlvbi5hYm9ydCgpOwogCi0gICAgICAgIGFzc2VydF90
aHJvd3MoIkludmFsaWRTdGF0ZUVycm9yIiwgZnVuY3Rpb24oKXsKKyAgICAgICAgYXNzZXJ0X3Ro
cm93c19kb20oIkludmFsaWRTdGF0ZUVycm9yIiwgZnVuY3Rpb24oKXsKICAgICAgICAgICAgIGlu
ZGV4LmdldEtleSgiZGF0YSIpOwogICAgICAgICB9KTsKICAgICAgICAgdC5kb25lKCk7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Np
bmcvaWRiaW5kZXhfb3BlbkN1cnNvci5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0lu
ZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmluZGV4X29wZW5DdXJzb3IuaHRtbAppbmRleCBm
OWZiNjhhNTE4M2NkM2ZkN2ZlYTUzYmQ2NDFmZDQ0NzhiNjgwNTg2Li5hM2IwZDAxOWRjY2RjMzhi
ZTM3ODI2YTViZDZjNTkxM2M0NjkzZjQzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiaW5kZXhfb3BlbkN1cnNvci5odG1s
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2lu
Zy9pZGJpbmRleF9vcGVuQ3Vyc29yLmh0bWwKQEAgLTIwLDcgKzIwLDcgQEAKICAgICAgICAgc3Rv
cmUuYWRkKHsga2V5OiAxLCBpbmRleGVkUHJvcGVydHk6ICJkYXRhIiB9KTsKICAgICAgICAgc3Rv
cmUuZGVsZXRlSW5kZXgoImluZGV4Iik7CiAKLSAgICAgICAgYXNzZXJ0X3Rocm93cygiSW52YWxp
ZFN0YXRlRXJyb3IiLCBmdW5jdGlvbigpeworICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiSW52
YWxpZFN0YXRlRXJyb3IiLCBmdW5jdGlvbigpewogICAgICAgICAgICAgaW5kZXgub3BlbkN1cnNv
cigpOwogICAgICAgICB9KTsKICAgICAgICAgdC5kb25lKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiaW5kZXhfb3Bl
bkN1cnNvcjIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0
ZS1icm93c2luZy9pZGJpbmRleF9vcGVuQ3Vyc29yMi5odG1sCmluZGV4IDAxMzhhY2I1ZWZlNjlk
NDI4OTQzZmU3MDA4YjBiZDBhNTM0ODcwYjEuLjM1OWRjYTExYmFkMzE4NmZiYmUzYTcwYTU0YWRj
YmEzZGM4YjdjMzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVk
REItcHJpdmF0ZS1icm93c2luZy9pZGJpbmRleF9vcGVuQ3Vyc29yMi5odG1sCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJpbmRleF9v
cGVuQ3Vyc29yMi5odG1sCkBAIC0yMCw3ICsyMCw3IEBACiAKICAgICAgICAgZS50YXJnZXQudHJh
bnNhY3Rpb24uYWJvcnQoKTsKIAotICAgICAgICBhc3NlcnRfdGhyb3dzKCJJbnZhbGlkU3RhdGVF
cnJvciIsIGZ1bmN0aW9uKCl7CisgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlkU3Rh
dGVFcnJvciIsIGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICBpbmRleC5vcGVuQ3Vyc29yKCk7CiAg
ICAgICAgIH0pOwogICAgICAgICB0LmRvbmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJpbmRleF9vcGVuS2V5Q3Vy
c29yLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJv
d3NpbmcvaWRiaW5kZXhfb3BlbktleUN1cnNvci5odG1sCmluZGV4IDc1NTVlMDY0ZmIyYTFhMjJj
MTdhOTVmODRiMTQxYmQ1NjlmOTQ0ZTUuLjhkZWE1ODE0YTliMzUwNGY2NGNjYjk5ZDkyZGZiODUx
NjZiZGE2ZmEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREIt
cHJpdmF0ZS1icm93c2luZy9pZGJpbmRleF9vcGVuS2V5Q3Vyc29yLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmluZGV4X29w
ZW5LZXlDdXJzb3IuaHRtbApAQCAtMTksNyArMTksNyBAQAogCiAgICAgICAgIHN0b3JlLmFkZCh7
IGtleTogMSwgaW5kZXhlZFByb3BlcnR5OiAiZGF0YSIgfSk7CiAKLSAgICAgICAgYXNzZXJ0X3Ro
cm93cygiRGF0YUVycm9yIiwgZnVuY3Rpb24oKXsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19kb20o
IkRhdGFFcnJvciIsIGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICBpbmRleC5vcGVuS2V5Q3Vyc29y
KE5hTik7CiAgICAgICAgIH0pOwogICAgICAgICB0LmRvbmUoKTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJpbmRleF9v
cGVuS2V5Q3Vyc29yMi5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1w
cml2YXRlLWJyb3dzaW5nL2lkYmluZGV4X29wZW5LZXlDdXJzb3IyLmh0bWwKaW5kZXggZDYzMmQx
OTFjMDg1MDBiNTMwMmQ3NWQ2MTFjYjFkNWQwODdlYzFmYS4uZGFiYzE2ZTM1MTJkMDIwNzU4OWJh
MDM1ZGNhMjBiNDlhODkwZjNlOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYmluZGV4X29wZW5LZXlDdXJzb3IyLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5n
L2lkYmluZGV4X29wZW5LZXlDdXJzb3IyLmh0bWwKQEAgLTIwLDcgKzIwLDcgQEAKICAgICAgICAg
c3RvcmUuYWRkKHsga2V5OiAxLCBpbmRleGVkUHJvcGVydHk6ICJkYXRhIiB9KTsKICAgICAgICAg
c3RvcmUuZGVsZXRlSW5kZXgoImluZGV4Iik7CiAKLSAgICAgICAgYXNzZXJ0X3Rocm93cygiSW52
YWxpZFN0YXRlRXJyb3IiLCBmdW5jdGlvbigpeworICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgi
SW52YWxpZFN0YXRlRXJyb3IiLCBmdW5jdGlvbigpewogICAgICAgICAgICAgaW5kZXgub3Blbktl
eUN1cnNvcigpOwogICAgICAgICB9KTsKICAgICAgICAgdC5kb25lKCk7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRiaW5k
ZXhfb3BlbktleUN1cnNvcjMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVk
REItcHJpdmF0ZS1icm93c2luZy9pZGJpbmRleF9vcGVuS2V5Q3Vyc29yMy5odG1sCmluZGV4IDRh
MmIyZjFhYmUxZmRjY2ZmYjA0OWYwM2U0OGFjZGQzZTVhMjE2ZDEuLjJmMTBjZGFhZTc5M2VhN2Mz
MDJkMTIxODAyOTA4YjA2ZDg4OWE0YTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJpbmRleF9vcGVuS2V5Q3Vyc29yMy5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93
c2luZy9pZGJpbmRleF9vcGVuS2V5Q3Vyc29yMy5odG1sCkBAIC0yMCw3ICsyMCw3IEBACiAKICAg
ICAgICAgZS50YXJnZXQudHJhbnNhY3Rpb24uYWJvcnQoKTsKIAotICAgICAgICBhc3NlcnRfdGhy
b3dzKCJJbnZhbGlkU3RhdGVFcnJvciIsIGZ1bmN0aW9uKCl7CisgICAgICAgIGFzc2VydF90aHJv
d3NfZG9tKCJJbnZhbGlkU3RhdGVFcnJvciIsIGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICBpbmRl
eC5vcGVuS2V5Q3Vyc29yKCk7CiAgICAgICAgIH0pOwogICAgICAgICB0LmRvbmUoKTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2lu
Zy9pZGJrZXlyYW5nZV9pbmNvcnJlY3QuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9J
bmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJrZXlyYW5nZV9pbmNvcnJlY3QuaHRtbAppbmRl
eCAxZTE5NzkxNDJlZmQ2ODJlMDZkMmUxNzI3NTVmZDQwYmNkYzJiNjcyLi4yNDJkMWEzY2QxODBh
YzNiYzgzYTZlMDA3NzE2MzVlNjQ1Y2VmYzY4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRia2V5cmFuZ2VfaW5jb3JyZWN0
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJy
b3dzaW5nL2lkYmtleXJhbmdlX2luY29ycmVjdC5odG1sCkBAIC0xNiwyNCArMTYsMjQgQEAKIAog
ICAgICAgICAgICAgLy8gVHlwZUVycm9yOiBib3VuZCByZXF1aXJlcyBtb3JlIHRoYW4gMCBhcmd1
bWVudHMKICAgICAgICAgICAgIHRlc3QoIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIGFz
c2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAg
ICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAg
ICAgICAgIElEQktleVJhbmdlLmJvdW5kKCk7CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAg
ICAgICB9LCAiSURCS2V5UmFuZ2UuYm91bmQoKSAtIGJvdW5kIHJlcXVpcmVzIG1vcmUgdGhhbiAw
IGFyZ3VtZW50cy4iKTsKIAogICAgICAgICAgICAgLy8gTnVsbCBwYXJhbWV0ZXJzCiAgICAgICAg
ICAgICB0ZXN0KCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzKCJE
YXRhRXJyb3IiLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2Rv
bSgiRGF0YUVycm9yIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgIElEQktleVJh
bmdlLmJvdW5kKG51bGwsIG51bGwpOwogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAg
fSwgIklEQktleVJhbmdlLmJvdW5kKG51bGwsIG51bGwpIC0gbnVsbCBwYXJhbWV0ZXJzIGFyZSBp
bmNvcnJlY3QuIik7CiAKICAgICAgICAgICAgIC8vIC8vIE51bGwgcGFyYW1ldGVyCiAgICAgICAg
ICAgICB0ZXN0KCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzKCJE
YXRhRXJyb3IiLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2Rv
bSgiRGF0YUVycm9yIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgIElEQktleVJh
bmdlLmJvdW5kKDEsIG51bGwpOwogICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAg
IGFzc2VydF90aHJvd3MoIkRhdGFFcnJvciIsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAg
IGFzc2VydF90aHJvd3NfZG9tKCJEYXRhRXJyb3IiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAg
ICAgICAgICAgSURCS2V5UmFuZ2UuYm91bmQobnVsbCwgMSk7CiAgICAgICAgICAgICAgICAgfSk7
CiAgICAgICAgICAgICB9LCAiSURCS2V5UmFuZ2UuYm91bmQoMSwgbnVsbCAvIG51bGwsIDEpIC0g
bnVsbCBwYXJhbWV0ZXIgaXMgaW5jb3JyZWN0LiIpOwpAQCAtNDIsMjMgKzQyLDIzIEBACiAgICAg
ICAgICAgICB0ZXN0KCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICB2YXIgbG93ZXJCYWQg
PSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqMzEpICsgNTsKICAgICAgICAgICAgICAgICB2YXIg
dXBwZXIgPSBsb3dlckJhZCAtIDE7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygiRGF0
YUVycm9yIiwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19kb20o
IkRhdGFFcnJvciIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICBJREJLZXlSYW5n
ZS5ib3VuZChsb3dlckJhZCwgdXBwZXIpOwogICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAg
ICAgICAgIGFzc2VydF90aHJvd3MoIkRhdGFFcnJvciIsIGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJEYXRhRXJyb3IiLCBmdW5jdGlvbigpIHsKICAgICAg
ICAgICAgICAgICAgICAgSURCS2V5UmFuZ2UuYm91bmQoJ2InLCAnYScpOwogICAgICAgICAgICAg
ICAgIH0pOwogICAgICAgICAgICAgfSwgIklEQktleVJhbmdlLmJvdW5kKGxvd2VyLCB1cHBlciAv
IGxvd2VyID4gdXBwZXIpIC0gICdsb3dlcicgaXMgZ3JlYXRlciB0aGFuICd1cHBlcicuIgogICAg
ICAgICAgICAgKTsKIAogICAgICAgICAgICAgdGVzdCggZnVuY3Rpb24oKSB7Ci0gICAgICAgICAg
ICAgICAgYXNzZXJ0X3Rocm93cygiRGF0YUVycm9yIiwgZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkRhdGFFcnJvciIsIGZ1bmN0aW9uKCkgewogICAgICAg
ICAgICAgICAgICAgICBJREJLZXlSYW5nZS5ib3VuZCgnYScsIDEpOwogICAgICAgICAgICAgICAg
IH0pOwotICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3MoIkRhdGFFcnJvciIsIGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJEYXRhRXJyb3IiLCBmdW5j
dGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgSURCS2V5UmFuZ2UuYm91bmQobmV3IERhdGUo
KSwgMSk7CiAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93
cygiRGF0YUVycm9yIiwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93
c19kb20oIkRhdGFFcnJvciIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICBJREJL
ZXlSYW5nZS5ib3VuZChbMSwgMl0sIDEpOwogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAg
ICAgfSwgIklEQktleVJhbmdlLmJvdW5kKERPTVN0cmluZy9EYXRlL0FycmF5LCAxKSAtIEEgRE9N
U3RyaW5nLCBEYXRlIGFuZCBBcnJheSBhcmUgZ3JlYXRlciB0aGFuIGEgZmxvYXQuIik7CkBAIC02
NywxNyArNjcsMTcgQEAKICAgICAgICAgICAgIC8vIFJlZmVyZW5jZUVycm9yOiB0aGUgdmFyaWFi
bGUgaXMgbm90IGRlZmluZWQKICAgICAgICAgICAgIHRlc3QoIGZ1bmN0aW9uKCkgewogICAgICAg
ICAgICAgICAgIHZhciBnb29kVmFyaWFibGUgPSAxOwotICAgICAgICAgICAgICAgIGFzc2VydF90
aHJvd3MobmV3IFJlZmVyZW5jZUVycm9yKCksIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAg
IGFzc2VydF90aHJvd3NfanMoUmVmZXJlbmNlRXJyb3IsIGZ1bmN0aW9uKCkgewogICAgICAgICAg
ICAgICAgICAgICBJREJLZXlSYW5nZS5ib3VuZChub0V4aXN0aW5nVmFyaWFibGUsIDEpOwogICAg
ICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3MobmV3IFJlZmVy
ZW5jZUVycm9yKCksIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3Nf
anMoUmVmZXJlbmNlRXJyb3IsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICBJREJL
ZXlSYW5nZS5ib3VuZChnb29kVmFyaWFibGUsIG5vRXhpc3RpbmdWYXJpYWJsZSk7CiAgICAgICAg
ICAgICAgICAgfSk7CiAgICAgICAgICAgICB9LCAiSURCS2V5UmFuZ2UuYm91bmQobm9FeGlzdGlu
Z1ZhcmlhYmxlLCAxIC8gZ29vZFZhcmlhYmxlLCBub0V4aXN0aW5nVmFyaWFibGUpIC0gbm9FeGlz
dGluZ1ZhcmlhYmxlIGlzIG5vdCBkZWZpbmVkLiIpOwogCiAgICAgICAgICAgICAvLyBWYWxpZCB0
eXBlIGtleSBlcnJvcgogICAgICAgICAgICAgdGVzdCggZnVuY3Rpb24oKSB7Ci0gICAgICAgICAg
ICAgICAgYXNzZXJ0X3Rocm93cygiRGF0YUVycm9yIiwgZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkRhdGFFcnJvciIsIGZ1bmN0aW9uKCkgewogICAgICAg
ICAgICAgICAgICAgICBJREJLZXlSYW5nZS5ib3VuZCh0cnVlLCAxKTsKICAgICAgICAgICAgICAg
ICB9KTsKICAgICAgICAgICAgIH0sICJJREJLZXlSYW5nZS5ib3VuZCh0cnVlLCAxKSAtIGJvb2xl
YW4gaXMgbm90IGEgdmFsaWQga2V5IHR5cGUuIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfYWRk
MTAuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93
c2luZy9pZGJvYmplY3RzdG9yZV9hZGQxMC5odG1sCmluZGV4IDA4ZjcxNmQzMWRiZmJkOWRkYzdm
OGE5NGE5ODYxMTc2MGM0N2Y3ZmEuLmY4NGY5YzVjYzQ4MTI3YmQzNTNlMmFkZjhmNWVmMzM4YjQz
NDRjYTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJp
dmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9hZGQxMC5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9h
ZGQxMC5odG1sCkBAIC0xOCw3ICsxOCw3IEBACiAgICAgICAgIHZhciBycSwKICAgICAgICAgICBv
YmpTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCJzdG9yZSIpOwogCi0gICAgICAgIGFzc2Vy
dF90aHJvd3MoIkRhdGFFcnJvciIsCisgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJEYXRhRXJy
b3IiLAogICAgICAgICAgICAgZnVuY3Rpb24oKSB7IHJxID0gb2JqU3RvcmUuYWRkKHJlY29yZCk7
IH0pOwogCiAgICAgICAgIGFzc2VydF9lcXVhbHMocnEsIHVuZGVmaW5lZCk7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRi
b2JqZWN0c3RvcmVfYWRkMTEuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVk
REItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9hZGQxMS5odG1sCmluZGV4IGVlNmE0
ZTQwYmEyMWU1OTBjN2E4ZjBiMzRmNDEyZmM4NTViM2M3MDQuLjJhZDY0YjlmZWM5Y2I1NzE4MWYx
MmYwY2NmOTFiOWU0NTRiY2JmZWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9hZGQxMS5odG1sCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9p
ZGJvYmplY3RzdG9yZV9hZGQxMS5odG1sCkBAIC0xOCw3ICsxOCw3IEBACiAgICAgICAgIHZhciBy
cSwKICAgICAgICAgICBvYmpTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCJzdG9yZSIsIHsg
a2V5UGF0aDogImtleSIgfSk7CiAKLSAgICAgICAgYXNzZXJ0X3Rocm93cygiRGF0YUVycm9yIiwK
KyAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkRhdGFFcnJvciIsCiAgICAgICAgICAgICBmdW5j
dGlvbigpIHsgcnEgPSBvYmpTdG9yZS5hZGQocmVjb3JkKTsgfSk7CiAKICAgICAgICAgYXNzZXJ0
X2VxdWFscyhycSwgdW5kZWZpbmVkKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9hZGQxMi5odG1s
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lk
Ym9iamVjdHN0b3JlX2FkZDEyLmh0bWwKaW5kZXggZTE0Y2RhN2I1NTgyYzBlYTViZDc5ZWZlYjE2
NjEyZGU2OTI0YjEyMS4uM2FmMDgxZjM2NjZjZjZlNjJkOTQ1OTU1NWU2NzA3YjRjZTM3ZWM3ZSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJy
b3dzaW5nL2lkYm9iamVjdHN0b3JlX2FkZDEyLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2FkZDEyLmh0
bWwKQEAgLTE4LDcgKzE4LDcgQEAKICAgICAgICAgdmFyIHJxLAogICAgICAgICAgIG9ialN0b3Jl
ID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoInN0b3JlIiwgeyBrZXlQYXRoOiAia2V5IiB9KTsKIAot
ICAgICAgICBhc3NlcnRfdGhyb3dzKCJEYXRhRXJyb3IiLAorICAgICAgICBhc3NlcnRfdGhyb3dz
X2RvbSgiRGF0YUVycm9yIiwKICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyBycSA9IG9ialN0b3Jl
LmFkZChyZWNvcmQpOyB9KTsKIAogICAgICAgICBhc3NlcnRfZXF1YWxzKHJxLCB1bmRlZmluZWQp
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRl
LWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2FkZDEzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfYWRkMTMuaHRt
bAppbmRleCAzZjRiMzBkM2FmYzE4MjdhMTEyNTE4MDg3MDc4OTU4OWFiODI2NjUzLi5hNmFkMmYz
MDljZTE1MGZmN2ViZjIwM2FmMDg2OWFiN2E2NDUyN2Q5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVf
YWRkMTMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZh
dGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfYWRkMTMuaHRtbApAQCAtMTgsNyArMTgsNyBAQAog
ICAgICAgICB2YXIgcnEsCiAgICAgICAgICAgb2JqU3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9y
ZSgic3RvcmUiKTsKIAotICAgICAgICBhc3NlcnRfdGhyb3dzKCJEYXRhRXJyb3IiLAorICAgICAg
ICBhc3NlcnRfdGhyb3dzX2RvbSgiRGF0YUVycm9yIiwKICAgICAgICAgICAgIGZ1bmN0aW9uKCkg
eyBycSA9IG9ialN0b3JlLmFkZChyZWNvcmQsIHsgdmFsdWU6IDEgfSk7IH0pOwogCiAgICAgICAg
IGFzc2VydF9lcXVhbHMocnEsIHVuZGVmaW5lZCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfYWRk
MTUuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93
c2luZy9pZGJvYmplY3RzdG9yZV9hZGQxNS5odG1sCmluZGV4IGMzMjJjYTdkYTBiMThjZjZjMDU0
YTE3YmU3N2EzMjNkZGIyZmQ2MWIuLjBkZjcxMzQyNDM0ODA4YzA3MDI1Mzg4ZWRlOGNkZmZmMGZi
MTk0ZmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJp
dmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9hZGQxNS5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9h
ZGQxNS5odG1sCkBAIC0yMSw3ICsyMSw3IEBACiAgICAgICAgIHZhciB0eG4gPSBkYi50cmFuc2Fj
dGlvbigic3RvcmUiKTsKICAgICAgICAgdmFyIG9zdG9yZSA9IHR4bi5vYmplY3RTdG9yZSgic3Rv
cmUiKTsKICAgICAgICAgdC5zdGVwKGZ1bmN0aW9uKCl7Ci0gICAgICAgICAgICBhc3NlcnRfdGhy
b3dzKCJSZWFkT25seUVycm9yIiwgZnVuY3Rpb24oKXsKKyAgICAgICAgICAgIGFzc2VydF90aHJv
d3NfZG9tKCJSZWFkT25seUVycm9yIiwgZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICBvc3Rv
cmUuYWRkKHsgcEtleTogInByaW1hcnlLZXlfMCJ9KTsKICAgICAgICAgICAgIH0pOwogICAgICAg
ICB9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJp
dmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9hZGQxNi5odG1sIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2FkZDE2
Lmh0bWwKaW5kZXggMGQxMmUwNDNmNzJhN2ZkZDMyYzBmNmNiOGI0Njk1NmMwMWVmMDIxNC4uZGQ2
NWQ5MDQ2NzA3NmQwNzI5ZTBmYjI4ZGJmYmQ1YzBiNTdiYWEzYSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0
b3JlX2FkZDE2Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1w
cml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2FkZDE2Lmh0bWwKQEAgLTIxLDcgKzIxLDcg
QEAKIAogICAgIG9wZW5fcnEub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7CiAgICAgICAg
IHQuc3RlcChmdW5jdGlvbigpewotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygiSW52YWxpZFN0
YXRlRXJyb3IiLCBmdW5jdGlvbigpeworICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIklu
dmFsaWRTdGF0ZUVycm9yIiwgZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICBvc3RvcmUuYWRk
KHsgcEtleTogInByaW1hcnlLZXlfMCJ9KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1i
cm93c2luZy9pZGJvYmplY3RzdG9yZV9hZGQ5Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfYWRkOS5odG1sCmlu
ZGV4IGM5MzA0YTAzMTBhNzA5NzFlY2JmNTY2OGMwOWU4ZTNhMWNmYmQwYjMuLjhlMjgyMDBlNmNl
ZjFhMjAxNTYzMDcyOTcxN2U5ZGIxMWMzZGRkZTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9hZGQ5
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJy
b3dzaW5nL2lkYm9iamVjdHN0b3JlX2FkZDkuaHRtbApAQCAtMTYsNyArMTYsNyBAQAogICAgICAg
ICAgIGRiID0gZS50YXJnZXQucmVzdWx0LAogICAgICAgICAgIG9ialN0b3JlID0gZGIuY3JlYXRl
T2JqZWN0U3RvcmUoInN0b3JlIiwgeyBrZXlQYXRoOiAia2V5IiB9KTsKIAotICAgICAgICBhc3Nl
cnRfdGhyb3dzKCJEYXRhRXJyb3IiLAorICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiRGF0YUVy
cm9yIiwKICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyBycSA9IG9ialN0b3JlLmFkZChyZWNvcmQs
IDEpOyB9KTsKIAogICAgICAgICBhc3NlcnRfZXF1YWxzKHJxLCB1bmRlZmluZWQpOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5n
L2lkYm9iamVjdHN0b3JlX2NsZWFyMy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0lu
ZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2NsZWFyMy5odG1sCmluZGV4
IGQ1NTA5YWM5NjE2YjFiMzRmMWE3ZjNhYTU3YmIwMmFkZWMwODhlZGUuLjExNzFkYjZlNzc5NGFi
NjhiOWRhZGFhNGMzZWM4ZTYwYzczYmM3ZjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9jbGVhcjMu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJv
d3NpbmcvaWRib2JqZWN0c3RvcmVfY2xlYXIzLmh0bWwKQEAgLTI2LDcgKzI2LDcgQEAKICAgICAg
ICAgdmFyIHR4biA9IGRiLnRyYW5zYWN0aW9uKCJzdG9yZSIpOwogICAgICAgICB2YXIgb3N0b3Jl
ID0gdHhuLm9iamVjdFN0b3JlKCJzdG9yZSIpOwogICAgICAgICB0LnN0ZXAoZnVuY3Rpb24oKXsK
LSAgICAgICAgICAgIGFzc2VydF90aHJvd3MoIlJlYWRPbmx5RXJyb3IiLCBmdW5jdGlvbigpewor
ICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIlJlYWRPbmx5RXJyb3IiLCBmdW5jdGlvbigp
ewogICAgICAgICAgICAgICAgIG9zdG9yZS5jbGVhcigpOwogICAgICAgICAgICAgfSk7CiAgICAg
ICAgIH0pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1w
cml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2NsZWFyNC5odG1sIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2Ns
ZWFyNC5odG1sCmluZGV4IDI3NTI1MmIwNGM5MzI2MzgwZjc2MTRlYTZiOGQ1M2NiYWFkNmUwMjUu
LjcxMWI5YmU5OTkyNjQzOWZlOTJiYzFiYTBiNDdjYWJkOTFjYjAxZDAgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmpl
Y3RzdG9yZV9jbGVhcjQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhl
ZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfY2xlYXI0Lmh0bWwKQEAgLTIxLDcg
KzIxLDcgQEAKIAogICAgIG9wZW5fcnEub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7CiAg
ICAgICAgIHQuc3RlcChmdW5jdGlvbigpewotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygiSW52
YWxpZFN0YXRlRXJyb3IiLCBmdW5jdGlvbigpeworICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19k
b20oIkludmFsaWRTdGF0ZUVycm9yIiwgZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICBvc3Rv
cmUuY2xlYXIoKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmpl
Y3RzdG9yZV9jb3VudDQuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREIt
cHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9jb3VudDQuaHRtbAppbmRleCA5MWRhOGFj
OGU1MjI5ZjMxZGZhMWNhYzY3ZWIyMDQ3NDA1MDZiMjM2Li45ZjRjODhjZDQ0MTc4ZWJiZWJiMmFi
YjZlMmM2MjhkNDYwMGFlZGQ0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
SW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfY291bnQ0Lmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lk
Ym9iamVjdHN0b3JlX2NvdW50NC5odG1sCkBAIC0yMSw3ICsyMSw3IEBACiAKICAgICBvcGVuX3Jx
Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgewogICAgICAgICB0LnN0ZXAoZnVuY3Rpb24o
KXsKLSAgICAgICAgICAgIGFzc2VydF90aHJvd3MoIkludmFsaWRTdGF0ZUVycm9yIiwgZnVuY3Rp
b24oKXsKKyAgICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlkU3RhdGVFcnJvciIs
IGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgb3N0b3JlLmNvdW50KCk7CiAgICAgICAgICAg
ICB9KTsKICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
SW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfY3JlYXRlSW5kZXgxMC5o
dG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5n
L2lkYm9iamVjdHN0b3JlX2NyZWF0ZUluZGV4MTAuaHRtbAppbmRleCBlNjBlMTE5NzliOTJmZjE1
MzljNjk1MWI0YWE5MWE3OTBkNjU0MjhhLi4wNzEyNGYwYzA4Yzg0YmY1YzY2YTYzMzkyOWNhYjhh
NjhiZmVmMWM4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERC
LXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfY3JlYXRlSW5kZXgxMC5odG1sCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJv
YmplY3RzdG9yZV9jcmVhdGVJbmRleDEwLmh0bWwKQEAgLTE1LDcgKzE1LDcgQEAgb3Blbl9ycS5v
bnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbiAoZSkgewogICAgIHZhciBkYiA9IGUudGFyZ2V0LnJl
c3VsdDsKICAgICB2YXIgb3N0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoInN0b3JlIik7CiAg
ICAgb3N0b3JlLmNyZWF0ZUluZGV4KCJhIiwgImEiKTsKLSAgICBhc3NlcnRfdGhyb3dzKCJDb25z
dHJhaW50RXJyb3IiLCBmdW5jdGlvbigpeworICAgIGFzc2VydF90aHJvd3NfZG9tKCJDb25zdHJh
aW50RXJyb3IiLCBmdW5jdGlvbigpewogICAgICAgICBvc3RvcmUuY3JlYXRlSW5kZXgoImEiLCAi
YSIpOwogICAgIH0pOwogICAgIHQuZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2NyZWF0
ZUluZGV4MTEuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0
ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9jcmVhdGVJbmRleDExLmh0bWwKaW5kZXggZDQ0ZDI0
NTA2ZmJkNmQ5NGFlNzQyMTA2NmM1MzEzYjMxNDFkNTE1Mi4uMzgxNDUyMzA3MWNlZGZmOTQ1ZGY4
MGJiNzRiN2UzODhmMjQ4ZjMzNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2NyZWF0ZUluZGV4MTEu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJv
d3NpbmcvaWRib2JqZWN0c3RvcmVfY3JlYXRlSW5kZXgxMS5odG1sCkBAIC0xNCw3ICsxNCw3IEBA
IHZhciB0ID0gYXN5bmNfdGVzdCgpLAogb3Blbl9ycS5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlv
biAoZSkgewogICAgIHZhciBkYiA9IGUudGFyZ2V0LnJlc3VsdDsKICAgICB2YXIgb3N0b3JlID0g
ZGIuY3JlYXRlT2JqZWN0U3RvcmUoInN0b3JlIik7Ci0gICAgYXNzZXJ0X3Rocm93cygiU3ludGF4
RXJyb3IiLCBmdW5jdGlvbigpeworICAgIGFzc2VydF90aHJvd3NfZG9tKCJTeW50YXhFcnJvciIs
IGZ1bmN0aW9uKCl7CiAgICAgICAgIG9zdG9yZS5jcmVhdGVJbmRleCgiYWIiLCAiLiIpOwogICAg
IH0pOwogICAgIHQuZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2NyZWF0ZUluZGV4MTIu
aHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2lu
Zy9pZGJvYmplY3RzdG9yZV9jcmVhdGVJbmRleDEyLmh0bWwKaW5kZXggNDhhNmQ2YTc3OTBjZGNi
OGEyNjI3Y2UwYTZkOTE2N2FlZWQ0MjhkOC4uMjc3ZmY5NGY3YThlMjZmMDVjMTllMzQ0NmIzZTE5
ZjJiODc0YTUzOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWRE
Qi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2NyZWF0ZUluZGV4MTIuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRi
b2JqZWN0c3RvcmVfY3JlYXRlSW5kZXgxMi5odG1sCkBAIC0yMSw3ICsyMSw3IEBACiAKICAgICBv
cGVuX3JxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uIChldmVudCkgewogICAgICAgICB0LnN0ZXAoZnVu
Y3Rpb24oKXsKLSAgICAgICAgICAgIGFzc2VydF90aHJvd3MoIkludmFsaWRTdGF0ZUVycm9yIiwg
ZnVuY3Rpb24oKXsKKyAgICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlkU3RhdGVF
cnJvciIsIGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgb3N0b3JlLmNyZWF0ZUluZGV4KCJp
bmRleCIsICJpbmRleGVkUHJvcGVydHkiKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1i
cm93c2luZy9pZGJvYmplY3RzdG9yZV9jcmVhdGVJbmRleDEzLmh0bWwgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfY3Jl
YXRlSW5kZXgxMy5odG1sCmluZGV4IGY1MTIzMWM1MjU3ODNlOTZjMjBkMmU0ZWMzNzFjNTZjYWZh
YzBlZDkuLjYxNWE5MDEyZGNmMDE3ZGIwYzcyMGYyNjY5ZjMzMzMxZmI2MzZiNzcgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9p
ZGJvYmplY3RzdG9yZV9jcmVhdGVJbmRleDEzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2NyZWF0ZUlu
ZGV4MTMuaHRtbApAQCAtMjEsNyArMjEsNyBAQAogICAgICAgICB2YXIgdHhuID0gZGIudHJhbnNh
Y3Rpb24oInN0b3JlIiwgInJlYWR3cml0ZSIpOwogICAgICAgICBvc3RvcmUgPSB0eG4ub2JqZWN0
U3RvcmUoInN0b3JlIik7CiAgICAgICAgIHQuc3RlcChmdW5jdGlvbigpewotICAgICAgICAgICAg
YXNzZXJ0X3Rocm93cygiSW52YWxpZFN0YXRlRXJyb3IiLCBmdW5jdGlvbigpeworICAgICAgICAg
ICAgYXNzZXJ0X3Rocm93c19kb20oIkludmFsaWRTdGF0ZUVycm9yIiwgZnVuY3Rpb24oKXsKICAg
ICAgICAgICAgICAgICBvc3RvcmUuY3JlYXRlSW5kZXgoImluZGV4IiwgImluZGV4ZWRQcm9wZXJ0
eSIpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3Jl
X2RlbGV0ZTYuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0
ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9kZWxldGU2Lmh0bWwKaW5kZXggMjI1NGUwNDMyNWY5
M2E0ZjRmN2U2NmNlYmYwZTkwYTg1MTFiYjA1Zi4uMTVjNzQ4OTUyYjllZWNkYzQyN2ExYmQ4ZTk5
YTlkNzdkOGJlNThkMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4
ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2RlbGV0ZTYuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2Jq
ZWN0c3RvcmVfZGVsZXRlNi5odG1sCkBAIC0yNiw3ICsyNiw3IEBACiAgICAgICAgIHZhciB0eG4g
PSBkYi50cmFuc2FjdGlvbigic3RvcmUiKTsKICAgICAgICAgdmFyIG9zdG9yZSA9IHR4bi5vYmpl
Y3RTdG9yZSgic3RvcmUiKTsKICAgICAgICAgdC5zdGVwKGZ1bmN0aW9uKCl7Ci0gICAgICAgICAg
ICBhc3NlcnRfdGhyb3dzKCJSZWFkT25seUVycm9yIiwgZnVuY3Rpb24oKXsKKyAgICAgICAgICAg
IGFzc2VydF90aHJvd3NfZG9tKCJSZWFkT25seUVycm9yIiwgZnVuY3Rpb24oKXsKICAgICAgICAg
ICAgICAgICBvc3RvcmUuZGVsZXRlKCJwcmltYXJ5S2V5XzAiKTsKICAgICAgICAgICAgIH0pOwog
ICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVk
REItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9kZWxldGU3Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3Rv
cmVfZGVsZXRlNy5odG1sCmluZGV4IGJmMTU3Yjk3NDE0YWEzMDc5NzgyNjAxMzkxZjllY2JiN2Mx
NDFmOTQuLjA2MWQ2YmRkNDEwZGNlY2VmMGYxOTAzOTlmNjg0YTlhYTY0ZDM5NTMgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9p
ZGJvYmplY3RzdG9yZV9kZWxldGU3Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2RlbGV0ZTcuaHRtbApA
QCAtMjMsNyArMjMsNyBAQAogCiAgICAgb3Blbl9ycS5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoZXZl
bnQpIHsKICAgICAgICAgdC5zdGVwKGZ1bmN0aW9uKCl7Ci0gICAgICAgICAgICBhc3NlcnRfdGhy
b3dzKCJJbnZhbGlkU3RhdGVFcnJvciIsIGZ1bmN0aW9uKCl7CisgICAgICAgICAgICBhc3NlcnRf
dGhyb3dzX2RvbSgiSW52YWxpZFN0YXRlRXJyb3IiLCBmdW5jdGlvbigpewogICAgICAgICAgICAg
ICAgIG9zdG9yZS5kZWxldGUoInByaW1hcnlLZXlfMCIpOwogICAgICAgICAgICAgfSk7CiAgICAg
ICAgIH0pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1w
cml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2RlbGV0ZUluZGV4Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3Rv
cmVfZGVsZXRlSW5kZXguaHRtbAppbmRleCBkZjJmN2ZhZGM5NjdjNTg4NDNiMDVlNmEwMWE3ZDU4
YzI1NWQ4ZmYxLi5iZGE0MjM1NDJlMjYxYWI1YTVmYWQyOTg4ZmYwOWIwMmJhYjNmYWExIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Np
bmcvaWRib2JqZWN0c3RvcmVfZGVsZXRlSW5kZXguaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfZGVsZXRl
SW5kZXguaHRtbApAQCAtMzIsNyArMzIsNyBAQAogICAgICAgICAgICAgICBvYmpTdG9yZSA9IGRi
LnRyYW5zYWN0aW9uKCJ0ZXN0IikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5vYmplY3RT
dG9yZSgidGVzdCIpOwogCi0gICAgICAgICAgICBhc3NlcnRfdGhyb3dzKCdOb3RGb3VuZEVycm9y
JywKKyAgICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCdOb3RGb3VuZEVycm9yJywKICAgICAg
ICAgICAgICAgICBmdW5jdGlvbigpIHsgaW5kZXggPSBvYmpTdG9yZS5pbmRleCgiaW5kZXgiKSB9
KTsKICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoaW5kZXgsIHVuZGVmaW5lZCk7CiAgICAgICAg
ICAgICB0LmRvbmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRl
eGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9kZWxldGVkLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0
c3RvcmVfZGVsZXRlZC5odG1sCmluZGV4IGNlNzJiYmE2ZGIxMTMwN2U2NzViNjNlZjYzZGM3NDM1
MzYwZDYxZGQuLjhlMmZjNWNiNzZiMDUyNjhlYjM0M2E0MThlYTc0MDBkM2NiZGI5NDEgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2lu
Zy9pZGJvYmplY3RzdG9yZV9kZWxldGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2RlbGV0ZWQuaHRt
bApAQCAtMjgsMTYgKzI4LDE2IEBACiAgICAgICAgIGRiLmRlbGV0ZU9iamVjdFN0b3JlKCJzdG9y
ZSIpOwogICAgICAgICBhc3NlcnRfZXF1YWxzKGRiLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoLCAw
LCAib2JqZWN0U3RvcmVOYW1lcy5sZW5ndGggYWZ0ZXIgZGVsZXRlIik7CiAKLSAgICAgICAgYXNz
ZXJ0X3Rocm93cyhET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIsIGZ1bmN0aW9uKCkgeyBv
YmpTdG9yZS5hZGQoMik7IH0pOwotICAgICAgICBhc3NlcnRfdGhyb3dzKERPTUV4Y2VwdGlvbi5J
TlZBTElEX1NUQVRFX0VSUiwgZnVuY3Rpb24oKSB7IG9ialN0b3JlLnB1dCgzKTsgfSk7Ci0gICAg
ICAgIGFzc2VydF90aHJvd3MoRE9NRXhjZXB0aW9uLklOVkFMSURfU1RBVEVfRVJSLCBmdW5jdGlv
bigpIHsgb2JqU3RvcmUuZ2V0KDEpOyB9KTsKLSAgICAgICAgYXNzZXJ0X3Rocm93cyhET01FeGNl
cHRpb24uSU5WQUxJRF9TVEFURV9FUlIsIGZ1bmN0aW9uKCkgeyBvYmpTdG9yZS5jbGVhcigpOyB9
KTsKLSAgICAgICAgYXNzZXJ0X3Rocm93cyhET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIs
IGZ1bmN0aW9uKCkgeyBvYmpTdG9yZS5jb3VudCgpOyB9KTsKLSAgICAgICAgYXNzZXJ0X3Rocm93
cyhET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIsIGZ1bmN0aW9uKCkgeyBvYmpTdG9yZS5k
ZWxldGUoMSk7IH0pOwotICAgICAgICBhc3NlcnRfdGhyb3dzKERPTUV4Y2VwdGlvbi5JTlZBTElE
X1NUQVRFX0VSUiwgZnVuY3Rpb24oKSB7IG9ialN0b3JlLm9wZW5DdXJzb3IoKTsgfSk7Ci0gICAg
ICAgIGFzc2VydF90aHJvd3MoRE9NRXhjZXB0aW9uLklOVkFMSURfU1RBVEVfRVJSLCBmdW5jdGlv
bigpIHsgb2JqU3RvcmUuaW5kZXgoImlkeCIpOyB9KTsKLSAgICAgICAgYXNzZXJ0X3Rocm93cyhE
T01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIsIGZ1bmN0aW9uKCkgeyBvYmpTdG9yZS5kZWxl
dGVJbmRleCgiaWR4Iik7IH0pOwotICAgICAgICBhc3NlcnRfdGhyb3dzKERPTUV4Y2VwdGlvbi5J
TlZBTElEX1NUQVRFX0VSUiwgZnVuY3Rpb24oKSB7IG9ialN0b3JlLmNyZWF0ZUluZGV4KCJpZHgy
IiwgImEiKTsgfSk7CisgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKERPTUV4Y2VwdGlvbi5JTlZB
TElEX1NUQVRFX0VSUiwgZnVuY3Rpb24oKSB7IG9ialN0b3JlLmFkZCgyKTsgfSk7CisgICAgICAg
IGFzc2VydF90aHJvd3NfZG9tKERPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUiwgZnVuY3Rp
b24oKSB7IG9ialN0b3JlLnB1dCgzKTsgfSk7CisgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKERP
TUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUiwgZnVuY3Rpb24oKSB7IG9ialN0b3JlLmdldCgx
KTsgfSk7CisgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKERPTUV4Y2VwdGlvbi5JTlZBTElEX1NU
QVRFX0VSUiwgZnVuY3Rpb24oKSB7IG9ialN0b3JlLmNsZWFyKCk7IH0pOworICAgICAgICBhc3Nl
cnRfdGhyb3dzX2RvbShET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIsIGZ1bmN0aW9uKCkg
eyBvYmpTdG9yZS5jb3VudCgpOyB9KTsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oRE9NRXhj
ZXB0aW9uLklOVkFMSURfU1RBVEVfRVJSLCBmdW5jdGlvbigpIHsgb2JqU3RvcmUuZGVsZXRlKDEp
OyB9KTsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oRE9NRXhjZXB0aW9uLklOVkFMSURfU1RB
VEVfRVJSLCBmdW5jdGlvbigpIHsgb2JqU3RvcmUub3BlbkN1cnNvcigpOyB9KTsKKyAgICAgICAg
YXNzZXJ0X3Rocm93c19kb20oRE9NRXhjZXB0aW9uLklOVkFMSURfU1RBVEVfRVJSLCBmdW5jdGlv
bigpIHsgb2JqU3RvcmUuaW5kZXgoImlkeCIpOyB9KTsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19k
b20oRE9NRXhjZXB0aW9uLklOVkFMSURfU1RBVEVfRVJSLCBmdW5jdGlvbigpIHsgb2JqU3RvcmUu
ZGVsZXRlSW5kZXgoImlkeCIpOyB9KTsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oRE9NRXhj
ZXB0aW9uLklOVkFMSURfU1RBVEVfRVJSLCBmdW5jdGlvbigpIHsgb2JqU3RvcmUuY3JlYXRlSW5k
ZXgoImlkeDIiLCAiYSIpOyB9KTsKICAgICB9CiAKICAgICBvcGVuX3JxLm9uc3VjY2VzcyA9IGZ1
bmN0aW9uKCkgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWRE
Qi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2dldDYuaHRtbCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9n
ZXQ2Lmh0bWwKaW5kZXggNWE3YjU0NzdiOGE1NThjMDJlZDdiMmIxMmMzMDhlNzQ1NjIwNzFjNS4u
ZmE1ZmM2YmZjNmJkNTQzOTBlNzU4MDg5YzNjYjQ5ZDM3OGQyOTRhNyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVj
dHN0b3JlX2dldDYuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERC
LXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfZ2V0Ni5odG1sCkBAIC0yMCw3ICsyMCw3
IEBACiAgICAgICAgIHZhciBzdG9yZSA9IGRiLnRyYW5zYWN0aW9uKCJzdG9yZSIpCiAgICAgICAg
ICAgICAgICAgICAgICAgLm9iamVjdFN0b3JlKCJzdG9yZSIpOwogICAgICAgICBzdG9yZS50cmFu
c2FjdGlvbi5hYm9ydCgpOwotICAgICAgICBhc3NlcnRfdGhyb3dzKCJUcmFuc2FjdGlvbkluYWN0
aXZlRXJyb3IiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJUcmFu
c2FjdGlvbkluYWN0aXZlRXJyb3IiLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBzdG9yZS5n
ZXQoMSk7CiAgICAgICAgIH0sICJ0aHJvdyBUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3Igb24gYWJv
cnRlZCB0cmFuc2FjdGlvbi4iKTsKICAgICAgICAgdC5kb25lKCk7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0
c3RvcmVfZ2V0Ny5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2
YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX2dldDcuaHRtbAppbmRleCA3OTU2MTBjOWVlYTJm
YjhkM2E3NzM1ZGUxMjlhMGFlNjFlZTcyYTE1Li5hYWRlOWFhNGM4ZmI5NWYwNjRhOTdlNzdjMjFm
MmI1MGM1ZTZjYWQ0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhl
ZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfZ2V0Ny5odG1sCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3Rz
dG9yZV9nZXQ3Lmh0bWwKQEAgLTE5LDcgKzE5LDcgQEAKICAgICBvcGVuX3JxLm9uc3VjY2VzcyA9
IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgdmFyIHN0b3JlID0gZGIudHJhbnNhY3Rpb24oInN0b3Jl
IikKICAgICAgICAgICAgICAgICAgICAgICAub2JqZWN0U3RvcmUoInN0b3JlIikKLSAgICAgICAg
YXNzZXJ0X3Rocm93cygiRGF0YUVycm9yIiwgZnVuY3Rpb24gKCkgeworICAgICAgICBhc3NlcnRf
dGhyb3dzX2RvbSgiRGF0YUVycm9yIiwgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgc3RvcmUu
Z2V0KG51bGwpCiAgICAgICAgIH0sICJ0aHJvdyBEYXRhRXJyb3Igd2hlbiB1c2luZyBpbnZhbGlk
IGtleS4iKTsKICAgICAgICAgdC5kb25lKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfb3BlbkN1
cnNvcl9pbnZhbGlkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXBy
aXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfb3BlbkN1cnNvcl9pbnZhbGlkLmh0bWwKaW5k
ZXggY2ZiMzMzMzA5MjQ0ZDgyNTBlNjk1ZTFiOTIxN2FhMGJhN2QzNjViYy4uOWJjMjg3MzQyNDI3
ZjlmYjNiNDRlZjA1M2FmNDkxNTBiZjA4ZWJkZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX29wZW5D
dXJzb3JfaW52YWxpZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVk
REItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9vcGVuQ3Vyc29yX2ludmFsaWQuaHRt
bApAQCAtMjgsMTMgKzI4LDEzIEBACiAgICAgICAgIGFzeW5jX3Rlc3QoZG9jdW1lbnQudGl0bGUg
KyAiIC0gcGFzcyBzb21ldGhpbmcgb3RoZXIgdGhhbiBudW1iZXIiKS5zdGVwKGZ1bmN0aW9uKGUp
IHsKICAgICAgICAgICAgIHZhciBpZHggPSBkYi50cmFuc2FjdGlvbigidGVzdCIpLm9iamVjdFN0
b3JlKCJ0ZXN0IikuaW5kZXgoImluZGV4Iik7CiAKLSAgICAgICAgICAgIGFzc2VydF90aHJvd3Mo
IkRhdGFFcnJvciIsCisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiRGF0YUVycm9yIiwK
ICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsgaWR4Lm9wZW5DdXJzb3IoeyBsb3dlcjogImEi
IH0pOyB9KTsKIAotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygiRGF0YUVycm9yIiwKKyAgICAg
ICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJEYXRhRXJyb3IiLAogICAgICAgICAgICAgICAgIGZ1
bmN0aW9uKCkgeyBpZHgub3BlbkN1cnNvcih7IGxvd2VyOiAiYSIsIGxvd2VyT3BlbjogZmFsc2Ug
fSk7IH0pOwogCi0gICAgICAgICAgICBhc3NlcnRfdGhyb3dzKCJEYXRhRXJyb3IiLAorICAgICAg
ICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkRhdGFFcnJvciIsCiAgICAgICAgICAgICAgICAgZnVu
Y3Rpb24oKSB7IGlkeC5vcGVuQ3Vyc29yKHsgbG93ZXI6ICJhIiwgbG93ZXJPcGVuOiBmYWxzZSwg
dXBwZXI6IG51bGwsIHVwcGVyT3BlbjogZmFsc2UgfSk7IH0pOwogCiAgICAgICAgICAgICB0aGlz
LmRvbmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREIt
cHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9wdXQxMC5odG1sIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX3B1
dDEwLmh0bWwKaW5kZXggNGQyOWJhMzlmNzRmYTEyMGUyMjRiZmJjOGYyZDMyZjU1ZWZlZWQ0MS4u
OWI2YWYxNzQ0ZDMwNzZiYjM4OTE4MWI4NzRjY2U2MmY4MGUxMTJlMiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVj
dHN0b3JlX3B1dDEwLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWRE
Qi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX3B1dDEwLmh0bWwKQEAgLTE4LDcgKzE4
LDcgQEAKICAgICAgICAgdmFyIHJxLAogICAgICAgICAgIG9ialN0b3JlID0gZGIuY3JlYXRlT2Jq
ZWN0U3RvcmUoInN0b3JlIiwgeyBrZXlQYXRoOiAia2V5IiB9KTsKIAotICAgICAgICBhc3NlcnRf
dGhyb3dzKCJEYXRhRXJyb3IiLAorICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiRGF0YUVycm9y
IiwKICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyBycSA9IG9ialN0b3JlLnB1dChyZWNvcmQpOyB9
KTsKIAogICAgICAgICBhc3NlcnRfZXF1YWxzKHJxLCB1bmRlZmluZWQpOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9i
amVjdHN0b3JlX3B1dDExLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERC
LXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfcHV0MTEuaHRtbAppbmRleCAyZmVkNDMz
OWM2M2FlNTA1OGFlMDUzMGU1YmRjM2VkMzFmNDYzMTMxLi41NDY0MzUzY2YzYWVmOTEyOGRlMjY2
ODMyYTE5MTc4OGU2NjliMWIwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
SW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfcHV0MTEuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRi
b2JqZWN0c3RvcmVfcHV0MTEuaHRtbApAQCAtMTgsNyArMTgsNyBAQAogICAgICAgICB2YXIgcnEs
CiAgICAgICAgICAgb2JqU3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgic3RvcmUiLCB7IGtl
eVBhdGg6ICJrZXkiIH0pOwogCi0gICAgICAgIGFzc2VydF90aHJvd3MoIkRhdGFFcnJvciIsCisg
ICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJEYXRhRXJyb3IiLAogICAgICAgICAgICAgZnVuY3Rp
b24oKSB7IHJxID0gb2JqU3RvcmUucHV0KHJlY29yZCk7IH0pOwogCiAgICAgICAgIGFzc2VydF9l
cXVhbHMocnEsIHVuZGVmaW5lZCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfcHV0MTIuaHRtbCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJv
YmplY3RzdG9yZV9wdXQxMi5odG1sCmluZGV4IGRkNWVhZmU4Y2I4NTkyMDBkNGM3ZTUxZDI2NDYy
YTg1NTdhMjRlZTIuLjZlZTNjNGI1ZWYzYjM5YmViYTg0MzdlZjVkYmI3Mzg2OWZkOTA2ZjcgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93
c2luZy9pZGJvYmplY3RzdG9yZV9wdXQxMi5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9wdXQxMi5odG1s
CkBAIC0xOCw3ICsxOCw3IEBACiAgICAgICAgIHZhciBycSwKICAgICAgICAgICBvYmpTdG9yZSA9
IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCJzdG9yZSIsIHsga2V5UGF0aDogImtleSIgfSk7CiAKLSAg
ICAgICAgYXNzZXJ0X3Rocm93cygiRGF0YUVycm9yIiwKKyAgICAgICAgYXNzZXJ0X3Rocm93c19k
b20oIkRhdGFFcnJvciIsCiAgICAgICAgICAgICBmdW5jdGlvbigpIHsgcnEgPSBvYmpTdG9yZS5w
dXQocmVjb3JkKTsgfSk7CiAKICAgICAgICAgYXNzZXJ0X2VxdWFscyhycSwgdW5kZWZpbmVkKTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1i
cm93c2luZy9pZGJvYmplY3RzdG9yZV9wdXQxMy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX3B1dDEzLmh0bWwK
aW5kZXggMDdiOTAzYWYxYzAxNTI4YWVlZGY3NWQwNTU5N2VjNjM5ZTBjNzUwZS4uZWM5YTlmMGM1
MjAyZDhhYjU2YmZlNGY5YTg1NWY4ZDQ1NDc1NGI5NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX3B1
dDEzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRl
LWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX3B1dDEzLmh0bWwKQEAgLTE4LDcgKzE4LDcgQEAKICAg
ICAgICAgdmFyIHJxLAogICAgICAgICAgIG9ialN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUo
InN0b3JlIik7CiAKLSAgICAgICAgYXNzZXJ0X3Rocm93cygiRGF0YUVycm9yIiwKKyAgICAgICAg
YXNzZXJ0X3Rocm93c19kb20oIkRhdGFFcnJvciIsCiAgICAgICAgICAgICBmdW5jdGlvbigpIHsg
cnEgPSBvYmpTdG9yZS5wdXQocmVjb3JkLCB7IHZhbHVlOiAxIH0pOyB9KTsKIAogICAgICAgICBh
c3NlcnRfZXF1YWxzKHJxLCB1bmRlZmluZWQpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX3B1dDE1
Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Np
bmcvaWRib2JqZWN0c3RvcmVfcHV0MTUuaHRtbAppbmRleCA2NWZkNzE2NmU4MDMzYTVkOTg3YTQ5
ZGNhNDFhMDllMTg2YmFjOTYxLi41NDUyZmY3MTgzMTZiNzQ4ZjYzZmEzNDY5M2JiMTViZjM0YTMx
YTM4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZh
dGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfcHV0MTUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3NpbmcvaWRib2JqZWN0c3RvcmVfcHV0
MTUuaHRtbApAQCAtMjEsNyArMjEsNyBAQAogICAgICAgICB2YXIgdHhuID0gZGIudHJhbnNhY3Rp
b24oInN0b3JlIik7CiAgICAgICAgIHZhciBvc3RvcmUgPSB0eG4ub2JqZWN0U3RvcmUoInN0b3Jl
Iik7CiAgICAgICAgIHQuc3RlcChmdW5jdGlvbigpewotICAgICAgICAgICAgYXNzZXJ0X3Rocm93
cygiUmVhZE9ubHlFcnJvciIsIGZ1bmN0aW9uKCl7CisgICAgICAgICAgICBhc3NlcnRfdGhyb3dz
X2RvbSgiUmVhZE9ubHlFcnJvciIsIGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgb3N0b3Jl
LnB1dCh7cEtleTogInByaW1hcnlLZXlfMCJ9KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9
KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0
ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9wdXQxNi5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX3B1dDE2Lmh0
bWwKaW5kZXggMTRkYzg2ODFjZDMyNjc3YTc1YmY1NmJkMjRiODVjOTJlYzIzOTNjOC4uMGU5MWNk
ZWNlMGJiMjhjMTA4MDE2OWVlNzEzODg0NDM2Y2IxODQ0MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3Jl
X3B1dDE2Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2
YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX3B1dDE2Lmh0bWwKQEAgLTIxLDcgKzIxLDcgQEAK
IAogICAgIG9wZW5fcnEub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7CiAgICAgICAgIHQu
c3RlcChmdW5jdGlvbigpewotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygiSW52YWxpZFN0YXRl
RXJyb3IiLCBmdW5jdGlvbigpeworICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkludmFs
aWRTdGF0ZUVycm9yIiwgZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICBvc3RvcmUucHV0KHtw
S2V5OiAicHJpbWFyeUtleV8wIn0pOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dz
aW5nL2lkYm9iamVjdHN0b3JlX3B1dDkuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9J
bmRleGVkREItcHJpdmF0ZS1icm93c2luZy9pZGJvYmplY3RzdG9yZV9wdXQ5Lmh0bWwKaW5kZXgg
Nzc5YWVkN2YxNjc2ZWEyOTQ3NDA1OTlhNWFhNDhjMTYyZjFlNWViYy4uMjNhZTliOTYwNTMyNzRi
NzkyNjIwNDVmZjE2NzBhNDY5ZTdmMzI3MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2lkYm9iamVjdHN0b3JlX3B1dDkuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Np
bmcvaWRib2JqZWN0c3RvcmVfcHV0OS5odG1sCkBAIC0xNiw3ICsxNiw3IEBACiAgICAgICAgICAg
ZGIgPSBlLnRhcmdldC5yZXN1bHQsCiAgICAgICAgICAgb2JqU3RvcmUgPSBkYi5jcmVhdGVPYmpl
Y3RTdG9yZSgic3RvcmUiLCB7IGtleVBhdGg6ICJrZXkiIH0pOwogCi0gICAgICAgIGFzc2VydF90
aHJvd3MoIkRhdGFFcnJvciIsCisgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJEYXRhRXJyb3Ii
LAogICAgICAgICAgICAgZnVuY3Rpb24oKSB7IHJxID0gb2JqU3RvcmUucHV0KHJlY29yZCwgMSk7
IH0pOwogCiAgICAgICAgIGFzc2VydF9lcXVhbHMocnEsIHVuZGVmaW5lZCk7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJvd3Npbmcva2V5
X2ludmFsaWQuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0
ZS1icm93c2luZy9rZXlfaW52YWxpZC5odG1sCmluZGV4IGY3MmRhMzc1OWI1NGJkN2M1Zjg0NTQx
N2Y0NjllYTE1YTU2OTcxM2EuLjY2M2QyMTYwOTlhMGIzNDQ2NGI1ZTA2YjI3ZjhlNjNhYjBlZGJj
MmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0
ZS1icm93c2luZy9rZXlfaW52YWxpZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9rZXlfaW52YWxpZC5odG1sCkBAIC0zMiwxMyAr
MzIsMTMgQEAKICAgICAgICAgLy8gc2V0IHRoZSBjdXJyZW50IHRlc3QsIGFuZCBydW4gaXQKICAg
ICAgICAgZGIuc2V0VGVzdCh0KS5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihlKSB7CiAgICAg
ICAgICAgICBvYmpTdG9yZSA9IG9ialN0b3JlIHx8IGUudGFyZ2V0LnJlc3VsdC5jcmVhdGVPYmpl
Y3RTdG9yZSgic3RvcmUiKTsKLSAgICAgICAgICAgIGFzc2VydF90aHJvd3MoJ0RhdGFFcnJvcics
IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oJ0RhdGFFcnJvcics
IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgIG9ialN0b3JlLmFkZCgidmFsdWUiLCBrZXkp
OwogICAgICAgICAgICAgfSk7CiAKICAgICAgICAgICAgIGlmIChpc19jbG9uZWFibGUoa2V5KSkg
ewogICAgICAgICAgICAgICAgIG9ialN0b3JlMiA9IG9ialN0b3JlMiB8fCBlLnRhcmdldC5yZXN1
bHQuY3JlYXRlT2JqZWN0U3RvcmUoInN0b3JlMiIsIHsga2V5UGF0aDogWyJ4IiwgImtleXBhdGgi
XSB9KTsKLSAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzKCdEYXRhRXJyb3InLCBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgnRGF0YUVycm9yJywgZnVu
Y3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgIG9ialN0b3JlMi5hZGQoeyB4OiAidmFsdWUi
LCBrZXlwYXRoOiBrZXkgfSk7CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB9CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5kZXhlZERCLXByaXZhdGUtYnJv
d3Npbmcva2V5cGF0aF9pbnZhbGlkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvSW5k
ZXhlZERCLXByaXZhdGUtYnJvd3Npbmcva2V5cGF0aF9pbnZhbGlkLmh0bWwKaW5kZXggY2MxZDQ0
NDE2ZmJlYWQyZWVmYmE3ZTRkMTFlYTA3NzRlNWYyMjkwMi4uM2NiZmJlODBlMmExNWE1NmE0MTkx
MDhlNWI1NzA0MzhlOTMzYjg0YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL2tleXBhdGhfaW52YWxpZC5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy9rZXlwYXRo
X2ludmFsaWQuaHRtbApAQCAtMjAsMTIgKzIwLDEyIEBACiAKICAgICAgICAgb3BlbnJxLm9udXBn
cmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgIHZhciBkYiA9IGUudGFyZ2V0
LnJlc3VsdDsKLSAgICAgICAgICAgIGFzc2VydF90aHJvd3MoJ1N5bnRheEVycm9yJywgZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgnU3ludGF4RXJyb3InLCBmdW5j
dGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgZGIuY3JlYXRlT2JqZWN0U3RvcmUoc3RvcmVf
bmFtZSwgeyBrZXlQYXRoOiBrZXlwYXRoIH0pCiAgICAgICAgICAgICAgICAgfSwgImNyZWF0ZU9i
amVjdFN0b3JlIHdpdGgga2V5UGF0aCIpOwogCiAgICAgICAgICAgICBzdG9yZSA9IGRiLmNyZWF0
ZU9iamVjdFN0b3JlKHN0b3JlX25hbWUpOwotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cygnU3lu
dGF4RXJyb3InLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCdT
eW50YXhFcnJvcicsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICBzdG9yZS5jcmVh
dGVJbmRleCgnaW5kZXgnLCBrZXlwYXRoKTsKICAgICAgICAgICAgICAgICB9LCAiY3JlYXRlSW5k
ZXggd2l0aCBrZXlQYXRoIik7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy9JbmRleGVkREItcHJpdmF0ZS1icm93c2luZy90cmFuc2FjdGlvbi1jcmVhdGVfaW5fdmVyc2lv
bmNoYW5nZS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRl
LWJyb3dzaW5nL3RyYW5zYWN0aW9uLWNyZWF0ZV9pbl92ZXJzaW9uY2hhbmdlLmh0bWwKaW5kZXgg
MDAyNzkxNmQyZTUwNTgyNjhhMDM5M2RhOTc2YTk2MWRhZTdlNmU0Ni4uMDRhMWYxN2U5ZjY4NTIx
Zjc0YTZmMDY3Yzg5MTdiYmYwMWI5NDkyMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL0luZGV4ZWREQi1wcml2YXRlLWJyb3dzaW5nL3RyYW5zYWN0aW9uLWNyZWF0ZV9pbl92
ZXJzaW9uY2hhbmdlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0luZGV4ZWRE
Qi1wcml2YXRlLWJyb3dzaW5nL3RyYW5zYWN0aW9uLWNyZWF0ZV9pbl92ZXJzaW9uY2hhbmdlLmh0
bWwKQEAgLTE3LDE0ICsxNywxNCBAQAogICAgICAgICAgICAgLmFkZCgidmVyc2lvbmNoYW5nZTEi
LCAxKQogICAgICAgICAgICAgLmFkZEV2ZW50TGlzdGVuZXIoInN1Y2Nlc3MiLCBsb2coInZlcnNp
b25jaGFuZ2VfYWRkLnN1Y2Nlc3MiKSkKIAotICAgICAgICBhc3NlcnRfdGhyb3dzKCdJbnZhbGlk
U3RhdGVFcnJvcicsIGZ1bmN0aW9uKCkgeyBkYi50cmFuc2FjdGlvbigic3RvcmUiKSB9KQorICAg
ICAgICBhc3NlcnRfdGhyb3dzX2RvbSgnSW52YWxpZFN0YXRlRXJyb3InLCBmdW5jdGlvbigpIHsg
ZGIudHJhbnNhY3Rpb24oInN0b3JlIikgfSkKIAogICAgICAgICBlLnRhcmdldC50cmFuc2FjdGlv
bgogICAgICAgICAgICAgLm9iamVjdFN0b3JlKCJzdG9yZSIpCiAgICAgICAgICAgICAuY291bnQo
MikKICAgICAgICAgICAgIC5hZGRFdmVudExpc3RlbmVyKCJzdWNjZXNzIiwgbG9nKCJ2ZXJzaW9u
Y2hhbmdlX2NvdW50LnN1Y2Nlc3MiKSkKIAotICAgICAgICBhc3NlcnRfdGhyb3dzKCdJbnZhbGlk
U3RhdGVFcnJvcicsIGZ1bmN0aW9uKCkgeyBkYi50cmFuc2FjdGlvbigic3RvcmUiLCAicmVhZHdy
aXRlIikgfSkKKyAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oJ0ludmFsaWRTdGF0ZUVycm9yJywg
ZnVuY3Rpb24oKSB7IGRiLnRyYW5zYWN0aW9uKCJzdG9yZSIsICJyZWFkd3JpdGUiKSB9KQogCiAg
ICAgICAgIG9wZW5fcnEudHJhbnNhY3Rpb24KICAgICAgICAgICAgIC5vYmplY3RTdG9yZSgic3Rv
cmUiKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW50ZXJzZWN0aW9uLW9ic2VydmVyL2ludGVy
c2VjdGlvbi1vYnNlcnZlci1pbnRlcmZhY2UuaHRtbCBiL0xheW91dFRlc3RzL2ludGVyc2VjdGlv
bi1vYnNlcnZlci9pbnRlcnNlY3Rpb24tb2JzZXJ2ZXItaW50ZXJmYWNlLmh0bWwKaW5kZXggMDli
MTM0MzBmZTQxYTlkNWEyN2Y5Nzc3MjhjZDBlOWY0OGJhNWQxOC4uYzJkMjkxOWIxYWU5N2YyNjBk
MmE5Y2NiOGZkNThhNTVjYjMwOWRjNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW50ZXJzZWN0
aW9uLW9ic2VydmVyL2ludGVyc2VjdGlvbi1vYnNlcnZlci1pbnRlcmZhY2UuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9pbnRlcnNlY3Rpb24tb2JzZXJ2ZXIvaW50ZXJzZWN0aW9uLW9ic2VydmVyLWlu
dGVyZmFjZS5odG1sCkBAIC01OCwzMiArNTgsMzIgQEAKICAgICAgICAgYXNzZXJ0X2FycmF5X2Vx
dWFscyhvYnNlcnZlci50aHJlc2hvbGRzLCBbTnVtYmVyLk1JTl9WQUxVRV0pOwogICAgIH0sJ1Nt
YWxsUG9zaXRpdmVUaHJlc2hvbGQnKTsKICAgICB0ZXN0KGZ1bmN0aW9uKCkgewotICAgICAgICBh
c3NlcnRfdGhyb3dzKFJhbmdlRXJyb3IoKSwgZnVuY3Rpb24oKSB7CisgICAgICAgIGFzc2VydF90
aHJvd3NfanMoUmFuZ2VFcnJvciwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICBuZXcgSW50ZXJz
ZWN0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24oKSB7fSwgIHsgdGhyZXNob2xkOiAtTnVtYmVyLk1JTl9W
QUxVRSB9KTsKICAgICAgICAgfSkKICAgICB9LCdTbWFsbE5lZ2F0aXZlVGhyZXNob2xkJyk7CiAg
ICAgdGVzdChmdW5jdGlvbigpIHsKLSAgICAgICAgYXNzZXJ0X3Rocm93cyhSYW5nZUVycm9yKCks
IGZ1bmN0aW9uKCkgeworICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFJhbmdlRXJyb3IsIGZ1bmN0
aW9uKCkgewogICAgICAgICAgICAgbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGZ1bmN0aW9uKCkg
e30sICB7IHRocmVzaG9sZDogTnVtYmVyLk1BWF9WQUxVRSB9KTsKICAgICAgICAgfSkKICAgICB9
LCdMYXJnZVBvc2l0aXZlVGhyZXNob2xkJyk7CiAgICAgdGVzdChmdW5jdGlvbigpIHsKLSAgICAg
ICAgYXNzZXJ0X3Rocm93cyhSYW5nZUVycm9yKCksIGZ1bmN0aW9uKCkgeworICAgICAgICBhc3Nl
cnRfdGhyb3dzX2pzKFJhbmdlRXJyb3IsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgbmV3IElu
dGVyc2VjdGlvbk9ic2VydmVyKGZ1bmN0aW9uKCkge30sICB7IHRocmVzaG9sZDogLU51bWJlci5N
QVhfVkFMVUUgfSk7CiAgICAgICAgIH0pCiAgICAgfSwnTGFyZ2VOZWdhdGl2ZVRocmVzaG9sZCcp
OwogICAgIHRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgICAgIGFzc2VydF90aHJvd3MoVHlwZUVycm9y
KCksIGZ1bmN0aW9uKCkgeworICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgZnVu
Y3Rpb24oKSB7CiAgICAgICAgICAgICBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24o
KSB7fSwgIHsgdGhyZXNob2xkOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkgfSk7CiAgICAgICAg
IH0pCiAgICAgfSwnUG9zaXRpdmVJbmZpbml0eVRocmVzaG9sZCcpOwogICAgIHRlc3QoZnVuY3Rp
b24oKSB7Ci0gICAgICAgIGFzc2VydF90aHJvd3MoVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgewor
ICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CiAgICAgICAg
ICAgICBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24oKSB7fSwgIHsgdGhyZXNob2xk
OiBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFkgfSk7CiAgICAgICAgIH0pCiAgICAgfSwnTmVnYXRp
dmVJbmZpbml0eVRocmVzaG9sZCcpOwogICAgIHRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgICAgIGFz
c2VydF90aHJvd3MoVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgeworICAgICAgICBhc3NlcnRfdGhy
b3dzX2pzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICBuZXcgSW50ZXJzZWN0
aW9uT2JzZXJ2ZXIoZnVuY3Rpb24oKSB7fSwgIHsgdGhyZXNob2xkOiBOdW1iZXIuTmFOIH0pOwog
ICAgICAgICB9KQogICAgIH0sJ05hTlRocmVzaG9sZCcpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvanMvZG9tL2RvbS1nZXR0ZXJzLXR5cGUtY2hlY2suaHRtbCBiL0xheW91dFRlc3RzL2pzL2Rv
bS9kb20tZ2V0dGVycy10eXBlLWNoZWNrLmh0bWwKaW5kZXggN2ZlNDMyNDY4YTY5NjQ4MzA3OTJl
MWIwMTgxZjU5MWZjMDZmOWVhMS4uZmFlMTVmN2RlNmQ5ZmQ2MGFiYWRiYTNmN2RkZmQ1ZjVlYTRm
MWEwYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvZG9tL2RvbS1nZXR0ZXJzLXR5cGUtY2hl
Y2suaHRtbAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20vZG9tLWdldHRlcnMtdHlwZS1jaGVjay5o
dG1sCkBAIC0xNiwxMCArMTYsMTAgQEAKICAgICB9LCAiRE9NIGdldHRlciBzaG91bGQgYmUgYSBm
dW5jdGlvbiIpOwogCiAgICAgdGVzdCgoKSA9PiB7Ci0gICAgICAgIGFzc2VydF90aHJvd3MobmV3
IFR5cGVFcnJvcigpLCAoKSA9PiB7IGdldHRlcigpOyB9LCAiRE9NIGdldHRlciB0aHJvd3MgYW4g
ZXJyb3Igd2l0aCB1bmRlZmluZWQiKTsKLSAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVy
cm9yKCksICgpID0+IHsgZ2V0dGVyLmNhbGwobnVsbCk7IH0sICJET00gZ2V0dGVyIHRocm93cyBh
biBlcnJvciB3aXRoIG51bGwiKTsKLSAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9y
KCksICgpID0+IHsgZ2V0dGVyLmNhbGwoe30pOyB9LCAiRE9NIGdldHRlciB0aHJvd3MgYW4gZXJy
b3Igd2l0aCB1bnJlbGF0ZWQgb2JqZWN0Iik7Ci0gICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5
cGVFcnJvcigpLCAoKSA9PiB7IGdldHRlci5jYWxsKGRvY3VtZW50LmNyZWF0ZVRleHQoIkhlbGxv
IikpOyB9LCAiRE9NIGdldHRlciB0aHJvd3MgYW4gZXJyb3Igd2l0aCB1bnJlbGF0ZWQgRE9NIG9i
amVjdCIpOworICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4geyBnZXR0
ZXIoKTsgfSwgIkRPTSBnZXR0ZXIgdGhyb3dzIGFuIGVycm9yIHdpdGggdW5kZWZpbmVkIik7Cisg
ICAgICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiB7IGdldHRlci5jYWxsKG51
bGwpOyB9LCAiRE9NIGdldHRlciB0aHJvd3MgYW4gZXJyb3Igd2l0aCBudWxsIik7CisgICAgICAg
IGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiB7IGdldHRlci5jYWxsKHt9KTsgfSwg
IkRPTSBnZXR0ZXIgdGhyb3dzIGFuIGVycm9yIHdpdGggdW5yZWxhdGVkIG9iamVjdCIpOworICAg
ICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4geyBnZXR0ZXIuY2FsbChkb2N1
bWVudC5jcmVhdGVUZXh0KCJIZWxsbyIpKTsgfSwgIkRPTSBnZXR0ZXIgdGhyb3dzIGFuIGVycm9y
IHdpdGggdW5yZWxhdGVkIERPTSBvYmplY3QiKTsKICAgICB9LCAiRE9NIGdldHRlciB0aHJvd3Mg
YW4gZXJyb3Igd2l0aCB1bnJlbGF0ZWQgdmFsdWVzIik7CiAKICAgICB0ZXN0KCgpID0+IHsKQEAg
LTMyLDE0ICszMiwxNCBAQAogICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqZWN0LCAi
c2Nyb2xsVG9wIiwgewogICAgICAgICAgICAgZ2V0OiBnZXR0ZXIKICAgICAgICAgfSk7Ci0gICAg
ICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9PiB7IG9iamVjdC5zY3JvbGxU
b3A7IH0pOworICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4geyBvYmpl
Y3Quc2Nyb2xsVG9wOyB9KTsKICAgICB9LCAiRE9NIGdldHRlciBhY2Nlc3MgdGhyb3dzIGFuIGVy
cm9yIHdpdGggdW5yZWxhdGVkIG9iamVjdCIpOwogCiAgICAgdGVzdCgoKSA9PiB7CiAgICAgICAg
IHZhciBvYmplY3QgPSB7CiAgICAgICAgICAgICBfX3Byb3RvX186IEVsZW1lbnQucHJvdG90eXBl
CiAgICAgICAgIH07Ci0gICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCAoKSA9
PiB7IG9iamVjdC5zY3JvbGxUb3A7IH0pOworICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVF
cnJvciwgKCkgPT4geyBvYmplY3Quc2Nyb2xsVG9wOyB9KTsKICAgICB9LCAiRE9NIGdldHRlciBh
Y2Nlc3MgdGhyb3VnaCBFbGVtZW50LnByb3RvdHlwZSB0aHJvd3MgYW4gZXJyb3Igd2l0aCB1bnJl
bGF0ZWQgb2JqZWN0Iik7CiA8L3NjcmlwdD4KIDwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2pzL2RvbS9sZWdhY3ktcGxhdGZvcm0tb2JqZWN0LWRlZmluZU93blByb3BlcnR5Lmh0bWwg
Yi9MYXlvdXRUZXN0cy9qcy9kb20vbGVnYWN5LXBsYXRmb3JtLW9iamVjdC1kZWZpbmVPd25Qcm9w
ZXJ0eS5odG1sCmluZGV4IGQ0YTkyYmM3MjMyZmUwNWRiMTkwYzc2MmRjYWI0MjBkMzE4ZmIyNjUu
LjQ1ZmY1ZWFjN2UyYjNlMTFmZGQ3ZGVkOGUxODYwMDkwZTU0OTFhMGEgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2pzL2RvbS9sZWdhY3ktcGxhdGZvcm0tb2JqZWN0LWRlZmluZU93blByb3BlcnR5
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL2xlZ2FjeS1wbGF0Zm9ybS1vYmplY3QtZGVm
aW5lT3duUHJvcGVydHkuaHRtbApAQCAtNTIsNyArNTIsNyBAQAogICAgICAgICBlbGVtZW50LmRh
dGFzZXRbImEiXSA9ICJ2YWx1ZTEiOwogICAgICAgICBlbGVtZW50LmRhdGFzZXRbImIiXSA9ICJ2
YWx1ZTIiOwogICAgICAgICAKLSAgICAgICAgYXNzZXJ0X3Rocm93cygiU3ludGF4RXJyb3IiLCAo
KSA9PiB7CisgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJTeW50YXhFcnJvciIsICgpID0+IHsK
ICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlbGVtZW50LmRhdGFzZXQsICItaW52
YWxpZCIsIHsgdmFsdWU6ICJ2YWx1ZTMiIH0pOyAgICAgICAgICAgIAogICAgICAgICB9KTsKICAg
ICAgICAgYXNzZXJ0X25vdF9lcXVhbHMoZWxlbWVudC5kYXRhc2V0WyItaW52YWxpZCJdLCAndmFs
dWUzJyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vcG9zdC1tZXNzYWdlLXN5bWJv
bC5odG1sIGIvTGF5b3V0VGVzdHMvanMvZG9tL3Bvc3QtbWVzc2FnZS1zeW1ib2wuaHRtbAppbmRl
eCA3YTFjZTAwYzM5ZDRlYzhmZWQyNjRkNmU3M2E1OTM0NTc1YjI3NmFkLi5iY2I2NjhhNTQxOGNk
M2VhZDYwZTQ1MWM2NjQ3MWY5ZjY2NGJhMTAwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9k
b20vcG9zdC1tZXNzYWdlLXN5bWJvbC5odG1sCisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9wb3N0
LW1lc3NhZ2Utc3ltYm9sLmh0bWwKQEAgLTcsMTYgKzcsMTYgQEAKIDxib2R5PgogPHNjcmlwdD4K
IHRlc3QoKCkgPT4gewotICAgIGFzc2VydF90aHJvd3MoIkRBVEFfQ0xPTkVfRVJSIiwgKCkgPT4g
eworICAgIGFzc2VydF90aHJvd3NfZG9tKCJEQVRBX0NMT05FX0VSUiIsICgpID0+IHsKICAgICAg
ICAgd2luZG93LnBvc3RNZXNzYWdlKFN5bWJvbCgiQ29jb2EiKSwgIioiKTsKICAgICB9KTsKLSAg
ICBhc3NlcnRfdGhyb3dzKCJEQVRBX0NMT05FX0VSUiIsICgpID0+IHsKKyAgICBhc3NlcnRfdGhy
b3dzX2RvbSgiREFUQV9DTE9ORV9FUlIiLCAoKSA9PiB7CiAgICAgICAgIHdpbmRvdy5wb3N0TWVz
c2FnZSh7MDogU3ltYm9sKCJDb2NvYSIpfSwgIioiKTsKICAgICB9KTsKLSAgICBhc3NlcnRfdGhy
b3dzKCJEQVRBX0NMT05FX0VSUiIsICgpID0+IHsKKyAgICBhc3NlcnRfdGhyb3dzX2RvbSgiREFU
QV9DTE9ORV9FUlIiLCAoKSA9PiB7CiAgICAgICAgIHdpbmRvdy5wb3N0TWVzc2FnZSh7aGVsbG86
IFN5bWJvbCgiQ29jb2EiKX0sICIqIik7CiAgICAgfSk7Ci0gICAgYXNzZXJ0X3Rocm93cygiREFU
QV9DTE9ORV9FUlIiLCAoKSA9PiB7CisgICAgYXNzZXJ0X3Rocm93c19kb20oIkRBVEFfQ0xPTkVf
RVJSIiwgKCkgPT4gewogICAgICAgICB3aW5kb3cucG9zdE1lc3NhZ2UoW1N5bWJvbCgiQ29jb2Ei
KV0sICIqIik7CiAgICAgfSk7CiB9LCAiVGVzdHMgdGhhdCBwb3N0aW5nIGEgbWVzc2FnZSB0aGF0
IGNvbnRhaW5zIFN5bWJvbHMgZmFpbHMuIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9k
b20vcXVldWUtbWljcm90YXNrLXdpbmRvdy5odG1sIGIvTGF5b3V0VGVzdHMvanMvZG9tL3F1ZXVl
LW1pY3JvdGFzay13aW5kb3cuaHRtbAppbmRleCA0YjVlNGY5NDUzYjUxZTYzNjY5OTU3YzYwYzVm
MTA1NmEwMmNlOGQ0Li43YTVjMTM3ZjI0ZjA0N2E4ZDdmYmYzNDc3MWIwMWYzYTEyOWNkZjU5IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9kb20vcXVldWUtbWljcm90YXNrLXdpbmRvdy5odG1s
CisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9xdWV1ZS1taWNyb3Rhc2std2luZG93Lmh0bWwKQEAg
LTc3LDMxICs3NywzMSBAQCBwcm9taXNlX3Rlc3QoKCkgPT4gewogfSwgYHF1ZXVlTWljcm90YXNr
IGFuZCBQcm9taXNlIHVzZXMgdGhlIHNhbWUgTWljcm90YXNrIHF1ZXVlYCk7CiAKIHRlc3QoKCkg
PT4gewotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvciwgKCkgPT4geworICAgIGFzc2Vy
dF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiB7CiAgICAgICAgIHNlbGYucXVldWVNaWNyb3Rh
c2soKTsKICAgICB9KTsKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IsICgpID0+IHsK
KyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gewogICAgICAgICBzZWxmLnF1
ZXVlTWljcm90YXNrKG51bGwpOwogICAgIH0pOwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVF
cnJvciwgKCkgPT4geworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiB7CiAg
ICAgICAgIHNlbGYucXVldWVNaWNyb3Rhc2sodW5kZWZpbmVkKTsKICAgICB9KTsKLSAgICBhc3Nl
cnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IsICgpID0+IHsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5
cGVFcnJvciwgKCkgPT4gewogICAgICAgICBzZWxmLnF1ZXVlTWljcm90YXNrKDQyKTsKICAgICB9
KTsKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IsICgpID0+IHsKKyAgICBhc3NlcnRf
dGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gewogICAgICAgICBzZWxmLnF1ZXVlTWljcm90YXNr
KCI0MiIpOwogICAgIH0pOwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvciwgKCkgPT4g
eworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiB7CiAgICAgICAgIHNlbGYu
cXVldWVNaWNyb3Rhc2sodHJ1ZSk7CiAgICAgfSk7Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlw
ZUVycm9yLCAoKSA9PiB7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IHsK
ICAgICAgICAgc2VsZi5xdWV1ZU1pY3JvdGFzayhTeW1ib2woIjQyIikpOwogICAgIH0pOwotICAg
IGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvciwgKCkgPT4geworICAgIGFzc2VydF90aHJvd3Nf
anMoVHlwZUVycm9yLCAoKSA9PiB7CiAgICAgICAgIHNlbGYucXVldWVNaWNyb3Rhc2soe30pOwog
ICAgIH0pOwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvciwgKCkgPT4geworICAgIGFz
c2VydF90aHJvd3NfanMoVHlwZUVycm9yLCAoKSA9PiB7CiAgICAgICAgIHNlbGYucXVldWVNaWNy
b3Rhc2soeyBoYW5kbGVFdmVudCgpIHsgfSB9KTsKICAgICB9KTsKIH0sIGBxdWV1ZU1pY3JvdGFz
ayBzaG91bGQgcmVqZWN0IG5vbi1mdW5jdGlvbiBhcmd1bWVudHNgKTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL21lZGlhL3RyYWNrL29wZXJhL2ludGVyZmFjZXMvVGV4dFRyYWNrQ3VlL3ZlcnRp
Y2FsLmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay9vcGVyYS9pbnRlcmZhY2VzL1RleHRU
cmFja0N1ZS92ZXJ0aWNhbC5odG1sCmluZGV4IDUwODQ1YWViZjEyOTRlZjFmY2FkNmQ0ODc4NTVl
MTUzOGNkZjM1NmIuLjhkMjEwNWM4OTJhMTM2NTUzOWZiM2M4YTg2N2E0NjU5YzZiZGVjNTIgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL29wZXJhL2ludGVyZmFjZXMvVGV4dFRy
YWNrQ3VlL3ZlcnRpY2FsLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svb3BlcmEv
aW50ZXJmYWNlcy9UZXh0VHJhY2tDdWUvdmVydGljYWwuaHRtbApAQCAtMjYsNyArMjYsNyBAQCB0
ZXN0KGZ1bmN0aW9uKCl7CiAgICAgYXNzZXJ0X2VxdWFscyhjMS52ZXJ0aWNhbCwgJ3JsJyk7CiAg
ICAgYzEudmVydGljYWwgPSAnbHInOwogICAgIGFzc2VydF9lcXVhbHMoYzEudmVydGljYWwsICds
cicpOwotICAgIGFzc2VydF90aHJvd3MoJ1NZTlRBWF9FUlInLCBmdW5jdGlvbigpIHsKKyAgICBh
c3NlcnRfdGhyb3dzX2RvbSgnU1lOVEFYX0VSUicsIGZ1bmN0aW9uKCkgewogICAgICAgICBjMS52
ZXJ0aWNhbCA9ICdybFx1MDAwMCc7CiAgICAgfSk7CiB9LCBkb2N1bWVudC50aXRsZSsnLCBzY3Jp
cHQtY3JlYXRlZCBjdWUnKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL29w
ZXJhL3Jlc291cmNlcy9pZGxoYXJuZXNzLmpzIGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svb3Bl
cmEvcmVzb3VyY2VzL2lkbGhhcm5lc3MuanMKaW5kZXggYjYyN2I0MGY4ZmNhOGQ4M2NhZGM5NmQz
NzgxZTEwMWQzM2U3MmQ3OC4uNzAwNzBhMWNjYzA0OGVlYmM0NDJhNDM0MWZmMWM5NDJjOWM4ZjJh
NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svb3BlcmEvcmVzb3VyY2VzL2lk
bGhhcm5lc3MuanMKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svb3BlcmEvcmVzb3VyY2Vz
L2lkbGhhcm5lc3MuanMKQEAgLTk0NCwxMSArOTQ0LDExIEBAIElkbEV4Y2VwdGlvbi5wcm90b3R5
cGUudGVzdF9tZW1iZXJzID0gZnVuY3Rpb24oKQogICAgICAgICAgICAgICAgIC8vIHRoZSBleGNl
cHRpb24gb24gd2hpY2ggdGhlIGV4Y2VwdGlvbiBmaWVsZCB3YXMgZGVjbGFyZWQsCiAgICAgICAg
ICAgICAgICAgLy8gdGhlbiB0aHJvdyBhIFR5cGVFcnJvci4iCiAgICAgICAgICAgICAgICAgLy8g
VE9ETzogVGVzdCBvbiBhIHBsYXRmb3JtIG9iamVjdCByZXByZXNlbnRpbmcgYW4gZXhjZXB0aW9u
LgotICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlv
bigpCisgICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsIGZ1bmN0aW9u
KCkKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIHdpbmRvd1t0aGlzLm5h
bWVdLnByb3RvdHlwZVttZW1iZXIubmFtZV07CiAgICAgICAgICAgICAgICAgfS5iaW5kKHRoaXMp
LCAiZ2V0dGluZyBwcm9wZXJ0eSBvbiBwcm90b3R5cGUgb2JqZWN0IG11c3QgdGhyb3cgVHlwZUVy
cm9yIik7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1
bmN0aW9uKCkKKyAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgZnVu
Y3Rpb24oKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgZGVzYy5nZXQu
Y2FsbCh7fSk7CiAgICAgICAgICAgICAgICAgfS5iaW5kKHRoaXMpLCAiY2FsbGluZyBnZXR0ZXIg
b24gd3Jvbmcgb2JqZWN0IHR5cGUgbXVzdCB0aHJvdyBUeXBlRXJyb3IiKTsKQEAgLTEwODMsMTEg
KzEwODMsMTEgQEAgSWRsSW50ZXJmYWNlLnByb3RvdHlwZS50ZXN0X3NlbGYgPSBmdW5jdGlvbigp
CiAgICAgICAgICAgICAvLwogICAgICAgICAgICAgLy8gIklmIEkgd2FzIG5vdCBkZWNsYXJlZCB3
aXRoIGEgW0NvbnN0cnVjdG9yXSBleHRlbmRlZCBhdHRyaWJ1dGUsCiAgICAgICAgICAgICAvLyB0
aGVuIHRocm93IGEgVHlwZUVycm9yLiIKLSAgICAgICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5
cGVFcnJvcigpLCBmdW5jdGlvbigpCisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVF
cnJvciwgZnVuY3Rpb24oKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHdpbmRvd1t0
aGlzLm5hbWVdKCk7CiAgICAgICAgICAgICB9LmJpbmQodGhpcyksICJpbnRlcmZhY2Ugb2JqZWN0
IGRpZG4ndCB0aHJvdyBUeXBlRXJyb3Igd2hlbiBjYWxsZWQgYXMgYSBmdW5jdGlvbiIpOwotICAg
ICAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkKKyAgICAg
ICAgICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCBmdW5jdGlvbigpCiAgICAgICAgICAg
ICB7CiAgICAgICAgICAgICAgICAgbmV3IHdpbmRvd1t0aGlzLm5hbWVdKCk7CiAgICAgICAgICAg
ICB9LmJpbmQodGhpcyksICJpbnRlcmZhY2Ugb2JqZWN0IGRpZG4ndCB0aHJvdyBUeXBlRXJyb3Ig
d2hlbiBjYWxsZWQgYXMgYSBjb25zdHJ1Y3RvciIpOwpAQCAtMTMxMSw3ICsxMzExLDcgQEAgSWRs
SW50ZXJmYWNlLnByb3RvdHlwZS50ZXN0X21lbWJlcnMgPSBmdW5jdGlvbigpCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnaW50ZXJmYWNlICInICsgdGhpcy5uYW1lICsgJyIg
ZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVydHkgInByb3RvdHlwZSInKTsKIAogICAgICAgICAgICAg
ICAgIC8vIFRPRE86IE5lZWRzIHRvIHRlc3QgZm9yIExlbmllbnRUaGlzLgotICAgICAgICAgICAg
ICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CiAgICAgICAg
ICAgICAgICAgICAgIHdpbmRvd1t0aGlzLm5hbWVdLnByb3RvdHlwZVttZW1iZXIubmFtZV07CiAg
ICAgICAgICAgICAgICAgfS5iaW5kKHRoaXMpLCAiZ2V0dGluZyBwcm9wZXJ0eSBvbiBwcm90b3R5
cGUgb2JqZWN0IG11c3QgdGhyb3cgVHlwZUVycm9yIik7CiAKQEAgLTEzODQsNyArMTM4NCw3IEBA
IElkbEludGVyZmFjZS5wcm90b3R5cGUudGVzdF9tZW1iZXJzID0gZnVuY3Rpb24oKQogICAgICAg
ICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICAgLy8gVE9ETzogV2UgY3VycmVudGx5IGlnbm9y
ZSB0aGUgc3RhdGljIGFuZCBbSW1wbGljaXRUaGlzXQogICAgICAgICAgICAgICAgIC8vIGNhc2Vz
LgotICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgZnVuY3Rp
b24oKSB7CiAgICAgICAgICAgICAgICAgICAgIHdpbmRvd1t0aGlzLm5hbWVdLnByb3RvdHlwZVtt
ZW1iZXIubmFtZV0uYXBwbHkobnVsbCwgYXJncyk7CiAgICAgICAgICAgICAgICAgfSwgImNhbGxp
bmcgb3BlcmF0aW9uIHdpdGggdGhpcyA9IG51bGwgZGlkbid0IHRocm93IFR5cGVFcnJvciIpOwog
CkBAIC0xMzkzLDcgKzEzOTMsNyBAQCBJZGxJbnRlcmZhY2UucHJvdG90eXBlLnRlc3RfbWVtYmVy
cyA9IGZ1bmN0aW9uKCkKICAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgIC8vIFRP
RE86IFRlc3QgYSBwbGF0Zm9ybSBvYmplY3QgdGhhdCBpbXBsZW1lbnRzIHNvbWUgb3RoZXIKICAg
ICAgICAgICAgICAgICAvLyBpbnRlcmZhY2UuICAoSGF2ZSB0byBiZSBzdXJlIHRvIGdldCBpbmhl
cml0YW5jZSByaWdodC4pCi0gICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVy
cm9yKCksIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3NfanMoVHlw
ZUVycm9yLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgd2luZG93W3RoaXMubmFt
ZV0ucHJvdG90eXBlW21lbWJlci5uYW1lXS5hcHBseSh7fSwgYXJncyk7CiAgICAgICAgICAgICAg
ICAgfSwgImNhbGxpbmcgb3BlcmF0aW9uIHdpdGggdGhpcyA9IHt9IGRpZG4ndCB0aHJvdyBUeXBl
RXJyb3IiKTsKICAgICAgICAgICAgIH0uYmluZCh0aGlzKSwgdGhpcy5uYW1lICsgIiBpbnRlcmZh
Y2U6IG9wZXJhdGlvbiAiICsgbWVtYmVyLm5hbWUgKwpAQCAtMTU2NSw3ICsxNTY1LDcgQEAgSWRs
SW50ZXJmYWNlLnByb3RvdHlwZS50ZXN0X2ludGVyZmFjZV9vZiA9IGZ1bmN0aW9uKGRlc2MsIG9i
aiwgZXhjZXB0aW9uLCBleHBlY3QKICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkKKyAgICAgICAg
ICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkKICAgICAg
ICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgb2JqW21lbWJlci5uYW1l
XS5hcHBseShvYmosIGFyZ3MpOwogICAgICAgICAgICAgICAgICAgICB9LmJpbmQodGhpcyksICJD
YWxsZWQgd2l0aCAiICsgaSArICIgYXJndW1lbnRzIik7CkBAIC0xNjM0LDcgKzE2MzQsNyBAQCBm
dW5jdGlvbiBkb19pbnRlcmZhY2VfYXR0cmlidXRlX2Fzc2VydHMob2JqLCBtZW1iZXIpCiAgICAg
YXNzZXJ0X2VxdWFscyh0eXBlb2YgZGVzYy5nZXQsICJmdW5jdGlvbiIsICJnZXR0ZXIgbXVzdCBi
ZSBGdW5jdGlvbiIpOwogICAgIGFzc2VydF9lcXVhbHMoZGVzYy5nZXQubGVuZ3RoLCAwLCAiZ2V0
dGVyIGxlbmd0aCBtdXN0IGJlIDAiKTsKICAgICAvLyBUT0RPOiBBY2NvdW50IGZvciBMZW5pZW50
VGhpcwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpCisgICAg
YXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIGRl
c2MuZ2V0LmNhbGwoe30pOwogICAgIH0uYmluZCh0aGlzKSwgImNhbGxpbmcgZ2V0dGVyIG9uIHdy
b25nIG9iamVjdCB0eXBlIG11c3QgdGhyb3cgVHlwZUVycm9yIik7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9tZWRpYS90cmFjay90ZXh0dHJhY2tjdWUvdGV4dHRyYWNrY3VlLWNvbnN0cnVjdG9y
Lmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90ZXh0dHJhY2tjdWUvdGV4dHRyYWNrY3Vl
LWNvbnN0cnVjdG9yLmh0bWwKaW5kZXggNGI1NDBlNDZmZTA0ZTEyZDIwZGU1YjRkOGY5NDYyZWJj
ZTM4MTkzMC4uOWUzYTY2ZWVlMzBkYjAyOThiY2MxODQwMWJjZDgwMDJjMGU4M2E0NCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdGV4dHRyYWNrY3VlL3RleHR0cmFja2N1ZS1j
b25zdHJ1Y3Rvci5odG1sCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RleHR0cmFja2N1
ZS90ZXh0dHJhY2tjdWUtY29uc3RydWN0b3IuaHRtbApAQCAtNywxMyArNywxMyBAQCBpZiAod2lu
ZG93LmludGVybmFscykKICAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0R2VuZXJpY0N1ZUFQSUVu
YWJsZWQodHJ1ZSk7CiAKIHRlc3QoIHRlc3QgPT4gewotICAgIGFzc2VydF90aHJvd3MobmV3IFR5
cGVFcnJvciwgXyA9PiB7IG5ldyBUZXh0VHJhY2tDdWUoMCwgMTAsICIiKSB9KTsKLSAgICBhc3Nl
cnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IsIF8gPT4geyBuZXcgVGV4dFRyYWNrQ3VlKDAsIDEwLCB7
IH0pIH0pOwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvciwgXyA9PiB7IG5ldyBUZXh0
VHJhY2tDdWUoMCwgMTAsIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKSB9KTsKKyAgICBh
c3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgXyA9PiB7IG5ldyBUZXh0VHJhY2tDdWUoMCwgMTAs
ICIiKSB9KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgXyA9PiB7IG5ldyBUZXh0
VHJhY2tDdWUoMCwgMTAsIHsgfSkgfSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3Is
IF8gPT4geyBuZXcgVGV4dFRyYWNrQ3VlKDAsIDEwLCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdk
aXYnKSkgfSk7CiB9LCAnVGV4dFRyYWNrQ3VlIHNob3VsZCB0aHJvdyAiVHlwZUVycm9yIiBpZiB0
aGUgY3VlIG5vZGUgaXMgbm90IGEgZG9jdW1lbnRGcmFnbWVudCcpOwogCiB0ZXN0KCB0ZXN0ID0+
IHsKLSAgICBhc3NlcnRfdGhyb3dzKCJJbnZhbGlkTm9kZVR5cGVFcnJvciIsIF8gPT4geyBuZXcg
VGV4dFRyYWNrQ3VlKDAsIDEwLCBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkpIH0p
OworICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlkTm9kZVR5cGVFcnJvciIsIF8gPT4geyBu
ZXcgVGV4dFRyYWNrQ3VlKDAsIDEwLCBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkp
IH0pOwogfSwgJ1RleHRUcmFja0N1ZSBzaG91bGQgdGhyb3cgIkludmFsaWROb2RlVHlwZUVycm9y
IiBpZiBwYXNzZWQgYW4gaW52YWxpZCBkb2N1bWVudEZyYWdtZW50Jyk7CiAKIGZ1bmN0aW9uIGNy
ZWF0ZVZhbGlkQ3VlRnJhZ21lbnQoKQpAQCAtMzYsNyArMzYsNyBAQCB0ZXN0KCB0ZXN0ID0+IHsK
ICAgICBsZXQgdmFsaWRDdWUgPSBuZXcgVGV4dFRyYWNrQ3VlKDAsIDEwLCBmcmFnbWVudCk7CiAK
ICAgICBmcmFnbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0YWJsZScp
KTsKLSAgICBhc3NlcnRfdGhyb3dzKCJJbnZhbGlkTm9kZVR5cGVFcnJvciIsIF8gPT4geyBuZXcg
VGV4dFRyYWNrQ3VlKDAsIDEwLCBmcmFnbWVudCkgfSk7CisgICAgYXNzZXJ0X3Rocm93c19kb20o
IkludmFsaWROb2RlVHlwZUVycm9yIiwgXyA9PiB7IG5ldyBUZXh0VHJhY2tDdWUoMCwgMTAsIGZy
YWdtZW50KSB9KTsKIAogfSwgYFRleHRUcmFja0N1ZSBzaG91bGQgdGhyb3cgIkludmFsaWROb2Rl
VHlwZUVycm9yIiBpZiBkb2N1bWVudEZyYWdtZW50IGhhcyBhbiBpbnZhbGlkIG5vZGVgKTsKIApA
QCAtNDUsMTEgKzQ1LDExIEBAIHRlc3QoIHRlc3QgPT4gewogICAgIGxldCB2YWxpZEN1ZSA9IG5l
dyBUZXh0VHJhY2tDdWUoMCwgMTAsIGZyYWdtZW50KTsKIAogICAgIGZyYWdtZW50LmZpcnN0Q2hp
bGQucmVtb3ZlQXR0cmlidXRlKCdjdWViYWNrZ3JvdW5kJykKLSAgICBhc3NlcnRfdGhyb3dzKCJJ
bnZhbGlkU3RhdGVFcnJvciIsIF8gPT4geyBuZXcgVGV4dFRyYWNrQ3VlKDAsIDEwLCBmcmFnbWVu
dCkgfSk7CisgICAgYXNzZXJ0X3Rocm93c19kb20oIkludmFsaWRTdGF0ZUVycm9yIiwgXyA9PiB7
IG5ldyBUZXh0VHJhY2tDdWUoMCwgMTAsIGZyYWdtZW50KSB9KTsKIAogICAgIGZyYWdtZW50ID0g
Y3JlYXRlVmFsaWRDdWVGcmFnbWVudCgpOwogICAgIGZyYWdtZW50LmZpcnN0Q2hpbGQuZmlyc3RD
aGlsZC5yZW1vdmVBdHRyaWJ1dGUoJ2N1ZScpCi0gICAgYXNzZXJ0X3Rocm93cygiSW52YWxpZFN0
YXRlRXJyb3IiLCBfID0+IHsgbmV3IFRleHRUcmFja0N1ZSgwLCAxMCwgZnJhZ21lbnQpIH0pOwor
ICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlkU3RhdGVFcnJvciIsIF8gPT4geyBuZXcgVGV4
dFRyYWNrQ3VlKDAsIDEwLCBmcmFnbWVudCkgfSk7CiB9LCBgVGV4dFRyYWNrQ3VlIHNob3VsZCB0
aHJvdyAiSW52YWxpZFN0YXRlRXJyb3IiIGlmIGRvY3VtZW50RnJhZ21lbnQgZG9lc24ndCBoYXZl
ICdjdWViYWNrZ3JvdW5kJyBhbmQgJ2N1ZScgbm9kZXNgKTsKIAogdGVzdCggdGVzdCA9PiB7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay93M2MvaW50ZXJmYWNlcy9UZXh0VHJh
Y2tDdWUvYWxpZ24uaHRtbCBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3czYy9pbnRlcmZhY2Vz
L1RleHRUcmFja0N1ZS9hbGlnbi5odG1sCmluZGV4IGJlNzBkYzMzNDdhM2I3MWVjNjdkZDkzMGY4
MjBlMWI2MDRlMTg5YWYuLjJmMmNjYzc5OWZhMmFjMzE1OTBhMGNlNTkxODgyZWMwOWZkMTAxNjkg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3czYy9pbnRlcmZhY2VzL1RleHRU
cmFja0N1ZS9hbGlnbi5odG1sCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3czYy9pbnRl
cmZhY2VzL1RleHRUcmFja0N1ZS9hbGlnbi5odG1sCkBAIC0yMSw3ICsyMSw3IEBAIHRlc3QoZnVu
Y3Rpb24oKXsKICAgICBhc3NlcnRfZXF1YWxzKGMxLmFsaWduLCAnc3RhcnQnKTsKICAgICBjMS5h
bGlnbiA9ICdlbmQnOwogICAgIGFzc2VydF9lcXVhbHMoYzEuYWxpZ24sICdlbmQnKTsKLSAgICBh
c3NlcnRfdGhyb3dzKCdTWU5UQVhfRVJSJywgZnVuY3Rpb24oKSB7CisgICAgYXNzZXJ0X3Rocm93
c19kb20oJ1NZTlRBWF9FUlInLCBmdW5jdGlvbigpIHsKICAgICAgICAgYzEuYWxpZ24gPSAnc3Rh
cnRcdTAwMDAnOwogICAgIH0pOwogfSwgZG9jdW1lbnQudGl0bGUrJywgc2NyaXB0LWNyZWF0ZWQg
Y3VlJyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy9wb2ludGVy
LWV2ZW50cy1pbXBsaWNpdC1jYXB0dXJlLXJlbGVhc2UtZXhjZXB0aW9uLmh0bWwgYi9MYXlvdXRU
ZXN0cy9wb2ludGVyZXZlbnRzL2lvcy9wb2ludGVyLWV2ZW50cy1pbXBsaWNpdC1jYXB0dXJlLXJl
bGVhc2UtZXhjZXB0aW9uLmh0bWwKaW5kZXggNGQ0OGUyZjlhZDg1YzI2YmZhOGFlYmNiNGNmNjMz
MmUzYmFjNzcyOC4uNDZiNjQyM2FmYmJmZjE0YzhkZDc1YjYzY2E4NjQ5NjQzZGIzYzNmYSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9pb3MvcG9pbnRlci1ldmVudHMtaW1w
bGljaXQtY2FwdHVyZS1yZWxlYXNlLWV4Y2VwdGlvbi5odG1sCisrKyBiL0xheW91dFRlc3RzL3Bv
aW50ZXJldmVudHMvaW9zL3BvaW50ZXItZXZlbnRzLWltcGxpY2l0LWNhcHR1cmUtcmVsZWFzZS1l
eGNlcHRpb24uaHRtbApAQCAtMTUsNyArMTUsNyBAQAogdGFyZ2V0X3Rlc3QoKHRhcmdldCwgdGVz
dCkgPT4gewogICAgIHRhcmdldC5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVyZG93biIsIGV2ZW50
ID0+IHsKICAgICAgICAgYXNzZXJ0X3RydWUodGFyZ2V0Lmhhc1BvaW50ZXJDYXB0dXJlKGV2ZW50
LnBvaW50ZXJJZCkpOwotICAgICAgICBhc3NlcnRfdGhyb3dzKCJOb3RGb3VuZEVycm9yIiwgKCkg
PT4gdGFyZ2V0LnJlbGVhc2VQb2ludGVyQ2FwdHVyZShldmVudC5wb2ludGVySWQgKyAxKSk7Cisg
ICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJOb3RGb3VuZEVycm9yIiwgKCkgPT4gdGFyZ2V0LnJl
bGVhc2VQb2ludGVyQ2FwdHVyZShldmVudC5wb2ludGVySWQgKyAxKSk7CiAgICAgICAgIGFzc2Vy
dF90cnVlKHRhcmdldC5oYXNQb2ludGVyQ2FwdHVyZShldmVudC5wb2ludGVySWQpKTsKICAgICB9
KTsKICAgICB1aS50YXAoeyB4OiA1MCwgeTogNTAgfSkudGhlbigoKSA9PiB0ZXN0LmRvbmUoKSk7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL2lvcy9wb2ludGVyLWV2ZW50
cy1zZXQtcG9pbnRlci1jYXB0dXJlLWV4Y2VwdGlvbnMuaHRtbCBiL0xheW91dFRlc3RzL3BvaW50
ZXJldmVudHMvaW9zL3BvaW50ZXItZXZlbnRzLXNldC1wb2ludGVyLWNhcHR1cmUtZXhjZXB0aW9u
cy5odG1sCmluZGV4IGUzMjU2MTUxZTJhMWM2N2MxNzhlZWU3NmJkMjdkNWM4MzZlMmY4YzguLjRm
ZDAwOGQ4YTFhYWNhOTIxMjllY2ZhN2MzMDJkZGRkMDJkNGE5YjggMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3BvaW50ZXJldmVudHMvaW9zL3BvaW50ZXItZXZlbnRzLXNldC1wb2ludGVyLWNhcHR1
cmUtZXhjZXB0aW9ucy5odG1sCisrKyBiL0xheW91dFRlc3RzL3BvaW50ZXJldmVudHMvaW9zL3Bv
aW50ZXItZXZlbnRzLXNldC1wb2ludGVyLWNhcHR1cmUtZXhjZXB0aW9ucy5odG1sCkBAIC0xMywx
MSArMTMsMTEgQEAKICd1c2Ugc3RyaWN0JzsKIAogdGFyZ2V0X3Rlc3QoKHRhcmdldCwgdGVzdCkg
PT4gewotICAgIGFzc2VydF90aHJvd3MoIk5vdEZvdW5kRXJyb3IiLCAoKSA9PiBkb2N1bWVudC5i
b2R5LnNldFBvaW50ZXJDYXB0dXJlKDEwKSwgIkNhbGxpbmcgc2V0UG9pbnRlckNhcHR1cmUoKSB3
aXRoIGFuIGludmFsaWQgcG9pbnRlciBpZCB0aHJvd3MgYSBOb3RGb3VuZEVycm9yIGV4Y2VwdGlv
bi4iKTsKKyAgICBhc3NlcnRfdGhyb3dzX2RvbSgiTm90Rm91bmRFcnJvciIsICgpID0+IGRvY3Vt
ZW50LmJvZHkuc2V0UG9pbnRlckNhcHR1cmUoMTApLCAiQ2FsbGluZyBzZXRQb2ludGVyQ2FwdHVy
ZSgpIHdpdGggYW4gaW52YWxpZCBwb2ludGVyIGlkIHRocm93cyBhIE5vdEZvdW5kRXJyb3IgZXhj
ZXB0aW9uLiIpOwogCiAgICAgdGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoInBvaW50ZXJkb3duIiwg
ZXZlbnQgPT4gewogICAgICAgICBhc3NlcnRfdHJ1ZSh0YXJnZXQuaGFzUG9pbnRlckNhcHR1cmUo
ZXZlbnQucG9pbnRlcklkKSk7Ci0gICAgICAgIGFzc2VydF90aHJvd3MoIkludmFsaWRTdGF0ZUVy
cm9yIiwgKCkgPT4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iikuc2V0UG9pbnRlckNhcHR1
cmUoZXZlbnQucG9pbnRlcklkKSwgIkNhbGxpbmcgc2V0UG9pbnRlckNhcHR1cmUoKSB3aXRoIGEg
dmFsaWQgcG9pbnRlciBpZCBvbiBhIGRpc2Nvbm5lY3RlZCBlbGVtZW50IHRocm93cyBhbiBJbnZh
bGlkU3RhdGVFcnJvciBleGNlcHRpb24uIik7CisgICAgICAgIGFzc2VydF90aHJvd3NfZG9tKCJJ
bnZhbGlkU3RhdGVFcnJvciIsICgpID0+IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLnNl
dFBvaW50ZXJDYXB0dXJlKGV2ZW50LnBvaW50ZXJJZCksICJDYWxsaW5nIHNldFBvaW50ZXJDYXB0
dXJlKCkgd2l0aCBhIHZhbGlkIHBvaW50ZXIgaWQgb24gYSBkaXNjb25uZWN0ZWQgZWxlbWVudCB0
aHJvd3MgYW4gSW52YWxpZFN0YXRlRXJyb3IgZXhjZXB0aW9uLiIpOwogICAgIH0pOwogICAgIHVp
LnRhcCh7IHg6IDUwLCB5OiA1MCB9KS50aGVuKCgpID0+IHRlc3QuZG9uZSgpKTsKIH0sICJUaGUg
c2V0UG9pbnRlckNhcHR1cmUoKSBtZXRob2QgY2FuIHRocm93LiIpOwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcG9pbnRlcmV2ZW50cy9wb2ludGVyLWlkLWNyYXNoLmh0bWwgYi9MYXlvdXRUZXN0
cy9wb2ludGVyZXZlbnRzL3BvaW50ZXItaWQtY3Jhc2guaHRtbAppbmRleCA3MDYzZGI0Zjg5ZTM1
NmZkYzgxZWM0MDRhNjRiYjI5OWVjZjRiYmFlLi4yZGRjZTcwODMwMWNhYWVjN2MyNmI1NjgzYmRm
NGNmYmFkN2ZkZjY0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL3BvaW50
ZXItaWQtY3Jhc2guaHRtbAorKysgYi9MYXlvdXRUZXN0cy9wb2ludGVyZXZlbnRzL3BvaW50ZXIt
aWQtY3Jhc2guaHRtbApAQCAtMTQsOCArMTQsOCBAQCB0ZXN0KCgpID0+IHsKICAgICBjb25zdCBl
bGVtZW50ID0gZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJkaXYiKSk7CiAgICAgZm9yIChsZXQgdmFsdWUgb2YgWzAsIE51bWJlci5NQVhfVkFMVUUsIE51
bWJlci5NSU5fVkFMVUUsIE51bWJlci5NQVhfVkFMVUUgKyAxLCBOdW1iZXIuTUlOX1ZBTFVFIC0g
MV0pIHsKICAgICAgICAgZWxlbWVudC5oYXNQb2ludGVyQ2FwdHVyZSh2YWx1ZSk7Ci0gICAgICAg
IGFzc2VydF90aHJvd3MoIk5vdEZvdW5kRXJyb3IiLCAoKSA9PiBlbGVtZW50LnNldFBvaW50ZXJD
YXB0dXJlKHZhbHVlKSkKLSAgICAgICAgYXNzZXJ0X3Rocm93cygiTm90Rm91bmRFcnJvciIsICgp
ID0+IGVsZW1lbnQucmVsZWFzZVBvaW50ZXJDYXB0dXJlKHZhbHVlKSkKKyAgICAgICAgYXNzZXJ0
X3Rocm93c19kb20oIk5vdEZvdW5kRXJyb3IiLCAoKSA9PiBlbGVtZW50LnNldFBvaW50ZXJDYXB0
dXJlKHZhbHVlKSkKKyAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIk5vdEZvdW5kRXJyb3IiLCAo
KSA9PiBlbGVtZW50LnJlbGVhc2VQb2ludGVyQ2FwdHVyZSh2YWx1ZSkpCiAgICAgfQogICAgIGVs
ZW1lbnQucmVtb3ZlKCk7CiB9LCAiQ2hlY2tpbmcgMCBjYW4gYmUgdXNlZCBhcyBhIFBvaW50ZXIg
SUQuIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvV2ViSURMUGFyc2VyLmpz
IGIvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL1dlYklETFBhcnNlci5qcwppbmRleCA5ZTUwNGZjNmUx
ZmRlZmQxOWNjN2Y3MTgyMmUzZGJmZDRiZTVlNjc4Li4zMjJmMGUxMWE2YWU1NmViNjVhMWU1NzQ4
MmZmNTIwYjA2NTdkY2Q2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvV2ViSURM
UGFyc2VyLmpzCisrKyBiL0xheW91dFRlc3RzL3Jlc291cmNlcy9XZWJJRExQYXJzZXIuanMKQEAg
LTEsMTAxMiArMSwzNzI0IEBACisoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmlu
aXRpb24ocm9vdCwgZmFjdG9yeSkgeworCWlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAm
JiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0JykKKwkJbW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5
KCk7CisJZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQp
CisJCWRlZmluZShbXSwgZmFjdG9yeSk7CisJZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29i
amVjdCcpCisJCWV4cG9ydHNbIldlYklETDIiXSA9IGZhY3RvcnkoKTsKKwllbHNlCisJCXJvb3Rb
IldlYklETDIiXSA9IGZhY3RvcnkoKTsKK30pKGdsb2JhbFRoaXMsIGZ1bmN0aW9uKCkgeworcmV0
dXJuIC8qKioqKiovICgoKSA9PiB7IC8vIHdlYnBhY2tCb290c3RyYXAKKy8qKioqKiovIAkidXNl
IHN0cmljdCI7CisvKioqKioqLyAJdmFyIF9fd2VicGFja19tb2R1bGVzX18gPSAoWworLyogMCAq
LywKKy8qIDEgKi8KKy8qKiovICgoX191bnVzZWRfd2VicGFja19fX3dlYnBhY2tfbW9kdWxlX18s
IF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pID0+IHsKIAorX193ZWJw
YWNrX3JlcXVpcmVfXy5yKF9fd2VicGFja19leHBvcnRzX18pOworLyogaGFybW9ueSBleHBvcnQg
Ki8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIHsKKy8qIGhhcm1v
bnkgZXhwb3J0ICovICAgInBhcnNlIjogKCkgPT4gKC8qIGJpbmRpbmcgKi8gcGFyc2UpCisvKiBo
YXJtb255IGV4cG9ydCAqLyB9KTsKKy8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfdG9rZW5pc2Vy
X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIp
OworLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9wcm9kdWN0aW9uc19lbnVtX2pzX19XRUJQQUNL
X0lNUE9SVEVEX01PRFVMRV8xX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1KTsKKy8qIGhhcm1v
bnkgaW1wb3J0ICovIHZhciBfcHJvZHVjdGlvbnNfaW5jbHVkZXNfanNfX1dFQlBBQ0tfSU1QT1JU
RURfTU9EVUxFXzJfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTYpOworLyogaGFybW9ueSBpbXBv
cnQgKi8gdmFyIF9wcm9kdWN0aW9uc19leHRlbmRlZF9hdHRyaWJ1dGVzX2pzX19XRUJQQUNLX0lN
UE9SVEVEX01PRFVMRV8zX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgpOworLyogaGFybW9ueSBp
bXBvcnQgKi8gdmFyIF9wcm9kdWN0aW9uc190eXBlZGVmX2pzX19XRUJQQUNLX0lNUE9SVEVEX01P
RFVMRV80X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE3KTsKKy8qIGhhcm1vbnkgaW1wb3J0ICov
IHZhciBfcHJvZHVjdGlvbnNfY2FsbGJhY2tfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzVf
XyA9IF9fd2VicGFja19yZXF1aXJlX18oMTgpOworLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9w
cm9kdWN0aW9uc19pbnRlcmZhY2VfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzZfXyA9IF9f
d2VicGFja19yZXF1aXJlX18oMTkpOworLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9wcm9kdWN0
aW9uc19taXhpbl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfN19fID0gX193ZWJwYWNrX3Jl
cXVpcmVfXygyNSk7CisvKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX3Byb2R1Y3Rpb25zX2RpY3Rp
b25hcnlfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzhfXyA9IF9fd2VicGFja19yZXF1aXJl
X18oMjYpOworLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9wcm9kdWN0aW9uc19uYW1lc3BhY2Vf
anNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzlfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMjgp
OworLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9wcm9kdWN0aW9uc19jYWxsYmFja19pbnRlcmZh
Y2VfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzEwX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDI5KTsKKy8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfcHJvZHVjdGlvbnNfaGVscGVyc19qc19f
V0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTFfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7CiAK
LShmdW5jdGlvbiAoKSB7Ci0gICAgdmFyIHRva2VuaXNlID0gZnVuY3Rpb24gKHN0cikgewotICAg
ICAgICB2YXIgdG9rZW5zID0gW10KLSAgICAgICAgLCAgIHJlID0gewotICAgICAgICAgICAgICAg
ICJmbG9hdCI6ICAgICAgICAvXi0/KChbMC05XStcLlswLTldKnxbMC05XSpcLlswLTldKykoW0Vl
XVstK10/WzAtOV0rKT98WzAtOV0rW0VlXVstK10/WzAtOV0rKS8KLSAgICAgICAgICAgICwgICAi
aW50ZWdlciI6ICAgICAgL14tPygwKFtYeF1bMC05QS1GYS1mXSt8WzAtN10qKXxbMS05XVswLTld
KikvCi0gICAgICAgICAgICAsICAgImlkZW50aWZpZXIiOiAgIC9eW0EtWl9hLXpdWzAtOUEtWl9h
LXpdKi8KLSAgICAgICAgICAgICwgICAic3RyaW5nIjogICAgICAgL14iW14iXSoiLwotICAgICAg
ICAgICAgLCAgICJ3aGl0ZXNwYWNlIjogICAvXig/OltcdFxuXHIgXSt8W1x0XG5cciBdKigoXC9c
Ly4qfFwvXCooLnxcbnxccikqP1wqXC8pW1x0XG5cciBdKikpKy8KLSAgICAgICAgICAgICwgICAi
b3RoZXIiOiAgICAgICAgL15bXlx0XG5cciAwLTlBLVpfYS16XS8KLSAgICAgICAgICAgIH0KLSAg
ICAgICAgLCAgIHR5cGVzID0gW10KLSAgICAgICAgOwotICAgICAgICBmb3IgKHZhciBrIGluIHJl
KSB0eXBlcy5wdXNoKGspOwotICAgICAgICB3aGlsZSAoc3RyLmxlbmd0aCA+IDApIHsKLSAgICAg
ICAgICAgIHZhciBtYXRjaGVkID0gZmFsc2U7Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0gMCwg
biA9IHR5cGVzLmxlbmd0aDsgaSA8IG47IGkrKykgewotICAgICAgICAgICAgICAgIHZhciB0eXBl
ID0gdHlwZXNbaV07Ci0gICAgICAgICAgICAgICAgc3RyID0gc3RyLnJlcGxhY2UocmVbdHlwZV0s
IGZ1bmN0aW9uICh0b2spIHsKLSAgICAgICAgICAgICAgICAgICAgdG9rZW5zLnB1c2goeyB0eXBl
OiB0eXBlLCB2YWx1ZTogdG9rIH0pOwotICAgICAgICAgICAgICAgICAgICBtYXRjaGVkID0gdHJ1
ZTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuICIiOwotICAgICAgICAgICAgICAgIH0pOwot
ICAgICAgICAgICAgICAgIGlmIChtYXRjaGVkKSBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGlmIChtYXRjaGVkKSBjb250aW51ZTsKLSAgICAgICAgICAgIHRocm93IG5ldyBFcnJv
cigiVG9rZW4gc3RyZWFtIG5vdCBwcm9ncmVzc2luZyIpOworCisKKworCisKKworCisKKworCisK
KworLyoqCisgKiBAcGFyYW0ge1Rva2VuaXNlcn0gdG9rZW5pc2VyCisgKiBAcGFyYW0ge29iamVj
dH0gb3B0aW9ucworICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5jb25jcmV0ZV0KKyAqLwor
ZnVuY3Rpb24gcGFyc2VCeVRva2Vucyh0b2tlbmlzZXIsIG9wdGlvbnMpIHsKKyAgY29uc3Qgc291
cmNlID0gdG9rZW5pc2VyLnNvdXJjZTsKKworICBmdW5jdGlvbiBlcnJvcihzdHIpIHsKKyAgICB0
b2tlbmlzZXIuZXJyb3Ioc3RyKTsKKyAgfQorCisgIGZ1bmN0aW9uIGNvbnN1bWUoLi4uY2FuZGlk
YXRlcykgeworICAgIHJldHVybiB0b2tlbmlzZXIuY29uc3VtZSguLi5jYW5kaWRhdGVzKTsKKyAg
fQorCisgIGZ1bmN0aW9uIGNhbGxiYWNrKCkgeworICAgIGNvbnN0IGNhbGxiYWNrID0gY29uc3Vt
ZSgiY2FsbGJhY2siKTsKKyAgICBpZiAoIWNhbGxiYWNrKSByZXR1cm47CisgICAgaWYgKHRva2Vu
aXNlci5wcm9iZSgiaW50ZXJmYWNlIikpIHsKKyAgICAgIHJldHVybiBfcHJvZHVjdGlvbnNfY2Fs
bGJhY2tfaW50ZXJmYWNlX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xMF9fLkNhbGxiYWNr
SW50ZXJmYWNlLnBhcnNlKHRva2VuaXNlciwgY2FsbGJhY2spOworICAgIH0KKyAgICByZXR1cm4g
X3Byb2R1Y3Rpb25zX2NhbGxiYWNrX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X18uQ2Fs
bGJhY2tGdW5jdGlvbi5wYXJzZSh0b2tlbmlzZXIsIGNhbGxiYWNrKTsKKyAgfQorCisgIGZ1bmN0
aW9uIGludGVyZmFjZV8ob3B0cykgeworICAgIGNvbnN0IGJhc2UgPSBjb25zdW1lKCJpbnRlcmZh
Y2UiKTsKKyAgICBpZiAoIWJhc2UpIHJldHVybjsKKyAgICBjb25zdCByZXQgPQorICAgICAgX3By
b2R1Y3Rpb25zX21peGluX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV83X18uTWl4aW4ucGFy
c2UodG9rZW5pc2VyLCBiYXNlLCBvcHRzKSB8fAorICAgICAgX3Byb2R1Y3Rpb25zX2ludGVyZmFj
ZV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNl9fLkludGVyZmFjZS5wYXJzZSh0b2tlbmlz
ZXIsIGJhc2UsIG9wdHMpIHx8CisgICAgICBlcnJvcigiSW50ZXJmYWNlIGhhcyBubyBwcm9wZXIg
Ym9keSIpOworICAgIHJldHVybiByZXQ7CisgIH0KKworICBmdW5jdGlvbiBwYXJ0aWFsKCkgewor
ICAgIGNvbnN0IHBhcnRpYWwgPSBjb25zdW1lKCJwYXJ0aWFsIik7CisgICAgaWYgKCFwYXJ0aWFs
KSByZXR1cm47CisgICAgcmV0dXJuICgKKyAgICAgIF9wcm9kdWN0aW9uc19kaWN0aW9uYXJ5X2pz
X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV84X18uRGljdGlvbmFyeS5wYXJzZSh0b2tlbmlzZXIs
IHsgcGFydGlhbCB9KSB8fAorICAgICAgaW50ZXJmYWNlXyh7IHBhcnRpYWwgfSkgfHwKKyAgICAg
IF9wcm9kdWN0aW9uc19uYW1lc3BhY2VfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzlfXy5O
YW1lc3BhY2UucGFyc2UodG9rZW5pc2VyLCB7IHBhcnRpYWwgfSkgfHwKKyAgICAgIGVycm9yKCJQ
YXJ0aWFsIGRvZXNuJ3QgYXBwbHkgdG8gYW55dGhpbmciKQorICAgICk7CisgIH0KKworICBmdW5j
dGlvbiBkZWZpbml0aW9uKCkgeworICAgIHJldHVybiAoCisgICAgICBjYWxsYmFjaygpIHx8Cisg
ICAgICBpbnRlcmZhY2VfKCkgfHwKKyAgICAgIHBhcnRpYWwoKSB8fAorICAgICAgX3Byb2R1Y3Rp
b25zX2RpY3Rpb25hcnlfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzhfXy5EaWN0aW9uYXJ5
LnBhcnNlKHRva2VuaXNlcikgfHwKKyAgICAgIF9wcm9kdWN0aW9uc19lbnVtX2pzX19XRUJQQUNL
X0lNUE9SVEVEX01PRFVMRV8xX18uRW51bS5wYXJzZSh0b2tlbmlzZXIpIHx8CisgICAgICBfcHJv
ZHVjdGlvbnNfdHlwZWRlZl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fLlR5cGVkZWYu
cGFyc2UodG9rZW5pc2VyKSB8fAorICAgICAgX3Byb2R1Y3Rpb25zX2luY2x1ZGVzX2pzX19XRUJQ
QUNLX0lNUE9SVEVEX01PRFVMRV8yX18uSW5jbHVkZXMucGFyc2UodG9rZW5pc2VyKSB8fAorICAg
ICAgX3Byb2R1Y3Rpb25zX25hbWVzcGFjZV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfOV9f
Lk5hbWVzcGFjZS5wYXJzZSh0b2tlbmlzZXIpCisgICAgKTsKKyAgfQorCisgIGZ1bmN0aW9uIGRl
ZmluaXRpb25zKCkgeworICAgIGlmICghc291cmNlLmxlbmd0aCkgcmV0dXJuIFtdOworICAgIGNv
bnN0IGRlZnMgPSBbXTsKKyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgY29uc3QgZWEgPSBfcHJv
ZHVjdGlvbnNfZXh0ZW5kZWRfYXR0cmlidXRlc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVf
M19fLkV4dGVuZGVkQXR0cmlidXRlcy5wYXJzZSh0b2tlbmlzZXIpOworICAgICAgY29uc3QgZGVm
ID0gZGVmaW5pdGlvbigpOworICAgICAgaWYgKCFkZWYpIHsKKyAgICAgICAgaWYgKGVhLmxlbmd0
aCkgZXJyb3IoIlN0cmF5IGV4dGVuZGVkIGF0dHJpYnV0ZXMiKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgICB9CisgICAgICAoMCxfcHJvZHVjdGlvbnNfaGVscGVyc19qc19fV0VCUEFDS19JTVBPUlRF
RF9NT0RVTEVfMTFfXy5hdXRvUGFyZW50ZXIpKGRlZikuZXh0QXR0cnMgPSBlYTsKKyAgICAgIGRl
ZnMucHVzaChkZWYpOworICAgIH0KKyAgICBjb25zdCBlb2YgPSB0b2tlbmlzZXIuY29uc3VtZVR5
cGUoImVvZiIpOworICAgIGlmIChvcHRpb25zLmNvbmNyZXRlKSB7CisgICAgICBkZWZzLnB1c2go
ZW9mKTsKKyAgICB9CisgICAgcmV0dXJuIGRlZnM7CisgIH0KKyAgY29uc3QgcmVzID0gZGVmaW5p
dGlvbnMoKTsKKyAgaWYgKHRva2VuaXNlci5wb3NpdGlvbiA8IHNvdXJjZS5sZW5ndGgpIGVycm9y
KCJVbnJlY29nbmlzZWQgdG9rZW5zIik7CisgIHJldHVybiByZXM7Cit9CisKKy8qKgorICogQHBh
cmFtIHtzdHJpbmd9IHN0cgorICogQHBhcmFtIHtvYmplY3R9IFtvcHRpb25zXQorICogQHBhcmFt
IHsqfSBbb3B0aW9ucy5zb3VyY2VOYW1lXQorICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5j
b25jcmV0ZV0KKyAqLworZnVuY3Rpb24gcGFyc2Uoc3RyLCBvcHRpb25zID0ge30pIHsKKyAgY29u
c3QgdG9rZW5pc2VyID0gbmV3IF90b2tlbmlzZXJfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxF
XzBfXy5Ub2tlbmlzZXIoc3RyKTsKKyAgaWYgKHR5cGVvZiBvcHRpb25zLnNvdXJjZU5hbWUgIT09
ICJ1bmRlZmluZWQiKSB7CisgICAgdG9rZW5pc2VyLnNvdXJjZS5uYW1lID0gb3B0aW9ucy5zb3Vy
Y2VOYW1lOworICB9CisgIHJldHVybiBwYXJzZUJ5VG9rZW5zKHRva2VuaXNlciwgb3B0aW9ucyk7
Cit9CisKKworLyoqKi8gfSksCisvKiAyICovCisvKioqLyAoKF9fdW51c2VkX3dlYnBhY2tfX193
ZWJwYWNrX21vZHVsZV9fLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9f
KSA9PiB7CisKK19fd2VicGFja19yZXF1aXJlX18ucihfX3dlYnBhY2tfZXhwb3J0c19fKTsKKy8q
IGhhcm1vbnkgZXhwb3J0ICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0
c19fLCB7CisvKiBoYXJtb255IGV4cG9ydCAqLyAgICJ0eXBlTmFtZUtleXdvcmRzIjogKCkgPT4g
KC8qIGJpbmRpbmcgKi8gdHlwZU5hbWVLZXl3b3JkcyksCisvKiBoYXJtb255IGV4cG9ydCAqLyAg
ICJzdHJpbmdUeXBlcyI6ICgpID0+ICgvKiBiaW5kaW5nICovIHN0cmluZ1R5cGVzKSwKKy8qIGhh
cm1vbnkgZXhwb3J0ICovICAgImFyZ3VtZW50TmFtZUtleXdvcmRzIjogKCkgPT4gKC8qIGJpbmRp
bmcgKi8gYXJndW1lbnROYW1lS2V5d29yZHMpLAorLyogaGFybW9ueSBleHBvcnQgKi8gICAiVG9r
ZW5pc2VyIjogKCkgPT4gKC8qIGJpbmRpbmcgKi8gVG9rZW5pc2VyKSwKKy8qIGhhcm1vbnkgZXhw
b3J0ICovICAgIldlYklETFBhcnNlRXJyb3IiOiAoKSA9PiAoLyogYmluZGluZyAqLyBXZWJJRExQ
YXJzZUVycm9yKQorLyogaGFybW9ueSBleHBvcnQgKi8gfSk7CisvKiBoYXJtb255IGltcG9ydCAq
LyB2YXIgX2Vycm9yX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18gPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDMpOworLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9wcm9kdWN0aW9uc19oZWxw
ZXJzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDQpOworCisKKworLy8gVGhlc2UgcmVndWxhciBleHByZXNzaW9ucyB1c2UgdGhlIHN0aWNreSBm
bGFnIHNvIHRoZXkgd2lsbCBvbmx5IG1hdGNoIGF0CisvLyB0aGUgY3VycmVudCBsb2NhdGlvbiAo
aWUuIHRoZSBvZmZzZXQgb2YgbGFzdEluZGV4KS4KK2NvbnN0IHRva2VuUmUgPSB7CisgIC8vIFRo
aXMgZXhwcmVzc2lvbiB1c2VzIGEgbG9va2FoZWFkIGFzc2VydGlvbiB0byBjYXRjaCBmYWxzZSBt
YXRjaGVzCisgIC8vIGFnYWluc3QgaW50ZWdlcnMgZWFybHkuCisgIGRlY2ltYWw6CisgICAgLy0/
KD89WzAtOV0qXC58WzAtOV0rW2VFXSkoKFswLTldK1wuWzAtOV0qfFswLTldKlwuWzAtOV0rKShb
RWVdWy0rXT9bMC05XSspP3xbMC05XStbRWVdWy0rXT9bMC05XSspL3ksCisgIGludGVnZXI6IC8t
PygwKFtYeF1bMC05QS1GYS1mXSt8WzAtN10qKXxbMS05XVswLTldKikveSwKKyAgaWRlbnRpZmll
cjogL1tfLV0/W0EtWmEtel1bMC05QS1aX2Etei1dKi95LAorICBzdHJpbmc6IC8iW14iXSoiL3ks
CisgIHdoaXRlc3BhY2U6IC9bXHRcblxyIF0rL3ksCisgIGNvbW1lbnQ6IC9cL1wvLip8XC9cKigu
fFxuKSo/XCpcLy95LAorICBvdGhlcjogL1teXHRcblxyIDAtOUEtWmEtel0veSwKK307CisKK2Nv
bnN0IHR5cGVOYW1lS2V5d29yZHMgPSBbCisgICJBcnJheUJ1ZmZlciIsCisgICJEYXRhVmlldyIs
CisgICJJbnQ4QXJyYXkiLAorICAiSW50MTZBcnJheSIsCisgICJJbnQzMkFycmF5IiwKKyAgIlVp
bnQ4QXJyYXkiLAorICAiVWludDE2QXJyYXkiLAorICAiVWludDMyQXJyYXkiLAorICAiVWludDhD
bGFtcGVkQXJyYXkiLAorICAiRmxvYXQzMkFycmF5IiwKKyAgIkZsb2F0NjRBcnJheSIsCisgICJh
bnkiLAorICAib2JqZWN0IiwKKyAgInN5bWJvbCIsCitdOworCitjb25zdCBzdHJpbmdUeXBlcyA9
IFsiQnl0ZVN0cmluZyIsICJET01TdHJpbmciLCAiVVNWU3RyaW5nIl07CisKK2NvbnN0IGFyZ3Vt
ZW50TmFtZUtleXdvcmRzID0gWworICAiYXN5bmMiLAorICAiYXR0cmlidXRlIiwKKyAgImNhbGxi
YWNrIiwKKyAgImNvbnN0IiwKKyAgImNvbnN0cnVjdG9yIiwKKyAgImRlbGV0ZXIiLAorICAiZGlj
dGlvbmFyeSIsCisgICJlbnVtIiwKKyAgImdldHRlciIsCisgICJpbmNsdWRlcyIsCisgICJpbmhl
cml0IiwKKyAgImludGVyZmFjZSIsCisgICJpdGVyYWJsZSIsCisgICJtYXBsaWtlIiwKKyAgIm5h
bWVzcGFjZSIsCisgICJwYXJ0aWFsIiwKKyAgInJlcXVpcmVkIiwKKyAgInNldGxpa2UiLAorICAi
c2V0dGVyIiwKKyAgInN0YXRpYyIsCisgICJzdHJpbmdpZmllciIsCisgICJ0eXBlZGVmIiwKKyAg
InVucmVzdHJpY3RlZCIsCitdOworCitjb25zdCBub25SZWdleFRlcm1pbmFscyA9IFsKKyAgIi1J
bmZpbml0eSIsCisgICJGcm96ZW5BcnJheSIsCisgICJJbmZpbml0eSIsCisgICJOYU4iLAorICAi
T2JzZXJ2YWJsZUFycmF5IiwKKyAgIlByb21pc2UiLAorICAiYmlnaW50IiwKKyAgImJvb2xlYW4i
LAorICAiYnl0ZSIsCisgICJkb3VibGUiLAorICAiZmFsc2UiLAorICAiZmxvYXQiLAorICAibG9u
ZyIsCisgICJtaXhpbiIsCisgICJudWxsIiwKKyAgIm9jdGV0IiwKKyAgIm9wdGlvbmFsIiwKKyAg
Im9yIiwKKyAgInJlYWRvbmx5IiwKKyAgInJlY29yZCIsCisgICJzZXF1ZW5jZSIsCisgICJzaG9y
dCIsCisgICJ0cnVlIiwKKyAgInVuZGVmaW5lZCIsCisgICJ1bnNpZ25lZCIsCisgICJ2b2lkIiwK
K10uY29uY2F0KGFyZ3VtZW50TmFtZUtleXdvcmRzLCBzdHJpbmdUeXBlcywgdHlwZU5hbWVLZXl3
b3Jkcyk7CisKK2NvbnN0IHB1bmN0dWF0aW9ucyA9IFsKKyAgIigiLAorICAiKSIsCisgICIsIiwK
KyAgIi4uLiIsCisgICI6IiwKKyAgIjsiLAorICAiPCIsCisgICI9IiwKKyAgIj4iLAorICAiPyIs
CisgICJbIiwKKyAgIl0iLAorICAieyIsCisgICJ9IiwKK107CisKK2NvbnN0IHJlc2VydmVkID0g
WworICAvLyAiY29uc3RydWN0b3IiIGlzIG5vdyBhIGtleXdvcmQKKyAgIl9jb25zdHJ1Y3RvciIs
CisgICJ0b1N0cmluZyIsCisgICJfdG9TdHJpbmciLAorXTsKKworLyoqCisgKiBAdHlwZWRlZiB7
QXJyYXlJdGVtVHlwZTxSZXR1cm5UeXBlPHR5cGVvZiB0b2tlbmlzZT4+fSBUb2tlbgorICogQHBh
cmFtIHtzdHJpbmd9IHN0cgorICovCitmdW5jdGlvbiB0b2tlbmlzZShzdHIpIHsKKyAgY29uc3Qg
dG9rZW5zID0gW107CisgIGxldCBsYXN0Q2hhckluZGV4ID0gMDsKKyAgbGV0IHRyaXZpYSA9ICIi
OworICBsZXQgbGluZSA9IDE7CisgIGxldCBpbmRleCA9IDA7CisgIHdoaWxlIChsYXN0Q2hhcklu
ZGV4IDwgc3RyLmxlbmd0aCkgeworICAgIGNvbnN0IG5leHRDaGFyID0gc3RyLmNoYXJBdChsYXN0
Q2hhckluZGV4KTsKKyAgICBsZXQgcmVzdWx0ID0gLTE7CisKKyAgICBpZiAoL1tcdFxuXHIgXS8u
dGVzdChuZXh0Q2hhcikpIHsKKyAgICAgIHJlc3VsdCA9IGF0dGVtcHRUb2tlbk1hdGNoKCJ3aGl0
ZXNwYWNlIiwgeyBub0ZsdXNoVHJpdmlhOiB0cnVlIH0pOworICAgIH0gZWxzZSBpZiAobmV4dENo
YXIgPT09ICIvIikgeworICAgICAgcmVzdWx0ID0gYXR0ZW1wdFRva2VuTWF0Y2goImNvbW1lbnQi
LCB7IG5vRmx1c2hUcml2aWE6IHRydWUgfSk7CisgICAgfQorCisgICAgaWYgKHJlc3VsdCAhPT0g
LTEpIHsKKyAgICAgIGNvbnN0IGN1cnJlbnRUcml2aWEgPSB0b2tlbnMucG9wKCkudmFsdWU7Cisg
ICAgICBsaW5lICs9IChjdXJyZW50VHJpdmlhLm1hdGNoKC9cbi9nKSB8fCBbXSkubGVuZ3RoOwor
ICAgICAgdHJpdmlhICs9IGN1cnJlbnRUcml2aWE7CisgICAgICBpbmRleCAtPSAxOworICAgIH0g
ZWxzZSBpZiAoL1stMC05LkEtWl9hLXpdLy50ZXN0KG5leHRDaGFyKSkgeworICAgICAgcmVzdWx0
ID0gYXR0ZW1wdFRva2VuTWF0Y2goImRlY2ltYWwiKTsKKyAgICAgIGlmIChyZXN1bHQgPT09IC0x
KSB7CisgICAgICAgIHJlc3VsdCA9IGF0dGVtcHRUb2tlbk1hdGNoKCJpbnRlZ2VyIik7CisgICAg
ICB9CisgICAgICBpZiAocmVzdWx0ID09PSAtMSkgeworICAgICAgICByZXN1bHQgPSBhdHRlbXB0
VG9rZW5NYXRjaCgiaWRlbnRpZmllciIpOworICAgICAgICBjb25zdCBsYXN0SW5kZXggPSB0b2tl
bnMubGVuZ3RoIC0gMTsKKyAgICAgICAgY29uc3QgdG9rZW4gPSB0b2tlbnNbbGFzdEluZGV4XTsK
KyAgICAgICAgaWYgKHJlc3VsdCAhPT0gLTEpIHsKKyAgICAgICAgICBpZiAocmVzZXJ2ZWQuaW5j
bHVkZXModG9rZW4udmFsdWUpKSB7CisgICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gYCR7KDAs
X3Byb2R1Y3Rpb25zX2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXy51bmVz
Y2FwZSkoCisgICAgICAgICAgICAgIHRva2VuLnZhbHVlCisgICAgICAgICAgICApfSBpcyBhIHJl
c2VydmVkIGlkZW50aWZpZXIgYW5kIG11c3Qgbm90IGJlIHVzZWQuYDsKKyAgICAgICAgICAgIHRo
cm93IG5ldyBXZWJJRExQYXJzZUVycm9yKAorICAgICAgICAgICAgICAoMCxfZXJyb3JfanNfX1dF
QlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXy5zeW50YXhFcnJvcikodG9rZW5zLCBsYXN0SW5kZXgs
IG51bGwsIG1lc3NhZ2UpCisgICAgICAgICAgICApOworICAgICAgICAgIH0gZWxzZSBpZiAobm9u
UmVnZXhUZXJtaW5hbHMuaW5jbHVkZXModG9rZW4udmFsdWUpKSB7CisgICAgICAgICAgICB0b2tl
bi50eXBlID0gImlubGluZSI7CisgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIHJldHVy
biB0b2tlbnM7Ci0gICAgfTsKLSAgICAKLSAgICB2YXIgcGFyc2UgPSBmdW5jdGlvbiAodG9rZW5z
LCBvcHQpIHsKLSAgICAgICAgdmFyIGxpbmUgPSAxOwotICAgICAgICB0b2tlbnMgPSB0b2tlbnMu
c2xpY2UoKTsKLSAgICAgICAgCi0gICAgICAgIHZhciBGTE9BVCA9ICJmbG9hdCIKLSAgICAgICAg
LCAgIElOVCA9ICJpbnRlZ2VyIgotICAgICAgICAsICAgSUQgPSAiaWRlbnRpZmllciIKLSAgICAg
ICAgLCAgIFNUUiA9ICJzdHJpbmciCi0gICAgICAgICwgICBPVEhFUiA9ICJvdGhlciIKLSAgICAg
ICAgOwotICAgICAgICAKLSAgICAgICAgdmFyIFdlYklETFBhcnNlRXJyb3IgPSBmdW5jdGlvbiAo
c3RyLCBsaW5lLCBpbnB1dCwgdG9rZW5zKSB7Ci0gICAgICAgICAgICB0aGlzLm1lc3NhZ2UgPSBz
dHI7Ci0gICAgICAgICAgICB0aGlzLmxpbmUgPSBsaW5lOwotICAgICAgICAgICAgdGhpcy5pbnB1
dCA9IGlucHV0OwotICAgICAgICAgICAgdGhpcy50b2tlbnMgPSB0b2tlbnM7Ci0gICAgICAgIH07
Ci0gICAgICAgIFdlYklETFBhcnNlRXJyb3IucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24g
KCkgewotICAgICAgICAgICAgcmV0dXJuIHRoaXMubWVzc2FnZSArICIsIGxpbmUgIiArIHRoaXMu
bGluZSArICIgKHRva2VuczogJyIgKyB0aGlzLmlucHV0ICsgIicpXG4iICsKLSAgICAgICAgICAg
ICAgICAgICBKU09OLnN0cmluZ2lmeSh0aGlzLnRva2VucywgbnVsbCwgNCk7Ci0gICAgICAgIH07
Ci0gICAgICAgIAotICAgICAgICB2YXIgZXJyb3IgPSBmdW5jdGlvbiAoc3RyKSB7Ci0gICAgICAg
ICAgICB2YXIgdG9rID0gIiIsIG51bVRva2VucyA9IDAsIG1heFRva2VucyA9IDU7Ci0gICAgICAg
ICAgICB3aGlsZSAobnVtVG9rZW5zIDwgbWF4VG9rZW5zICYmIHRva2Vucy5sZW5ndGggPiBudW1U
b2tlbnMpIHsKLSAgICAgICAgICAgICAgICB0b2sgKz0gdG9rZW5zW251bVRva2Vuc10udmFsdWU7
Ci0gICAgICAgICAgICAgICAgbnVtVG9rZW5zKys7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB0aHJvdyBuZXcgV2ViSURMUGFyc2VFcnJvcihzdHIsIGxpbmUsIHRvaywgdG9rZW5zLnNsaWNl
KDAsIDUpKTsKLSAgICAgICAgfTsKLSAgICAgICAgCi0gICAgICAgIHZhciBsYXN0X3Rva2VuID0g
bnVsbDsKLSAgICAgICAgCi0gICAgICAgIHZhciBjb25zdW1lID0gZnVuY3Rpb24gKHR5cGUsIHZh
bHVlKSB7Ci0gICAgICAgICAgICBpZiAoIXRva2Vucy5sZW5ndGggfHwgdG9rZW5zWzBdLnR5cGUg
IT09IHR5cGUpIHJldHVybjsKLSAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICJ1bmRl
ZmluZWQiIHx8IHRva2Vuc1swXS52YWx1ZSA9PT0gdmFsdWUpIHsKLSAgICAgICAgICAgICAgICAg
bGFzdF90b2tlbiA9IHRva2Vucy5zaGlmdCgpOwotICAgICAgICAgICAgICAgICBpZiAodHlwZSA9
PT0gSUQpIGxhc3RfdG9rZW4udmFsdWUgPSBsYXN0X3Rva2VuLnZhbHVlLnJlcGxhY2UoL15fLywg
IiIpOwotICAgICAgICAgICAgICAgICByZXR1cm4gbGFzdF90b2tlbjsKLSAgICAgICAgICAgICB9
Ci0gICAgICAgIH07Ci0gICAgICAgIAotICAgICAgICB2YXIgd3MgPSBmdW5jdGlvbiAoKSB7Ci0g
ICAgICAgICAgICBpZiAoIXRva2Vucy5sZW5ndGgpIHJldHVybjsKLSAgICAgICAgICAgIGlmICh0
b2tlbnNbMF0udHlwZSA9PT0gIndoaXRlc3BhY2UiKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHQg
PSB0b2tlbnMuc2hpZnQoKTsKLSAgICAgICAgICAgICAgICB0LnZhbHVlLnJlcGxhY2UoL1xuL2cs
IGZ1bmN0aW9uIChtKSB7IGxpbmUrKzsgcmV0dXJuIG07IH0pOwotICAgICAgICAgICAgICAgIHJl
dHVybiB0OwotICAgICAgICAgICAgfQotICAgICAgICB9OwotICAgICAgICAKLSAgICAgICAgdmFy
IGFsbF93cyA9IGZ1bmN0aW9uIChzdG9yZSwgcGVhKSB7IC8vIHBlYSA9PSBwb3N0IGV4dGVuZGVk
IGF0dHJpYnV0ZSwgdHBlYSA9IHNhbWUgZm9yIHR5cGVzCi0gICAgICAgICAgICB2YXIgdCA9IHsg
dHlwZTogIndoaXRlc3BhY2UiLCB2YWx1ZTogIiIgfTsKLSAgICAgICAgICAgIHdoaWxlICh0cnVl
KSB7Ci0gICAgICAgICAgICAgICAgdmFyIHcgPSB3cygpOwotICAgICAgICAgICAgICAgIGlmICgh
dykgYnJlYWs7Ci0gICAgICAgICAgICAgICAgdC52YWx1ZSArPSB3LnZhbHVlOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgaWYgKHQudmFsdWUubGVuZ3RoID4gMCkgewotICAgICAgICAgICAg
ICAgIGlmIChzdG9yZSkgewotICAgICAgICAgICAgICAgICAgICB2YXIgdyA9IHQudmFsdWUKLSAg
ICAgICAgICAgICAgICAgICAgLCAgIHJlID0gewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJ3cyI6ICAgICAgICAgICAgICAgICAgIC9eKFtcdFxuXHIgXSspLwotICAgICAgICAgICAgICAg
ICAgICAgICAgLCAgICJsaW5lLWNvbW1lbnQiOiAgICAgICAgIC9eXC9cLyguKilcbj8vbQotICAg
ICAgICAgICAgICAgICAgICAgICAgLCAgICJtdWx0aWxpbmUtY29tbWVudCI6ICAgIC9eXC9cKigo
PzoufFxufFxyKSo/KVwqXC8vCi0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgICAgICwgICB3c1R5cGVzID0gW10KLSAgICAgICAgICAgICAgICAgICAgOwotICAgICAg
ICAgICAgICAgICAgICBmb3IgKHZhciBrIGluIHJlKSB3c1R5cGVzLnB1c2goayk7Ci0gICAgICAg
ICAgICAgICAgICAgIHdoaWxlICh3Lmxlbmd0aCkgewotICAgICAgICAgICAgICAgICAgICAgICAg
dmFyIG1hdGNoZWQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkg
PSAwLCBuID0gd3NUeXBlcy5sZW5ndGg7IGkgPCBuOyBpKyspIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2YXIgdHlwZSA9IHdzVHlwZXNbaV07Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdyA9IHcucmVwbGFjZShyZVt0eXBlXSwgZnVuY3Rpb24gKHRvaywgbTEpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmUucHVzaCh7IHR5cGU6IHR5cGUgKyAocGVh
ID8gKCItIiArIHBlYSkgOiAiIiksIHZhbHVlOiBtMSB9KTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbWF0Y2hlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiAiIjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2hlZCkgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2hlZCkgY29udGludWU7
Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlN1cnByaXNpbmcgd2hp
dGUgc3BhY2UgY29uc3RydWN0LiIpOyAvLyB0aGlzIHNob3VsZG4ndCBoYXBwZW4KLSAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4g
dDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLSAgICAgICAgCi0gICAgICAgIHZhciBpbnRl
Z2VyX3R5cGUgPSBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICB2YXIgcmV0ID0gIiI7Ci0gICAg
ICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgIGlmIChjb25zdW1lKElELCAidW5zaWduZWQi
KSkgcmV0ID0gInVuc2lnbmVkICI7Ci0gICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAg
IGlmIChjb25zdW1lKElELCAic2hvcnQiKSkgcmV0dXJuIHJldCArICJzaG9ydCI7Ci0gICAgICAg
ICAgICBpZiAoY29uc3VtZShJRCwgImxvbmciKSkgewotICAgICAgICAgICAgICAgIHJldCArPSAi
bG9uZyI7Ci0gICAgICAgICAgICAgICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICAgICAgaWYgKGNv
bnN1bWUoSUQsICJsb25nIikpIHJldHVybiByZXQgKyAiIGxvbmciOwotICAgICAgICAgICAgICAg
IHJldHVybiByZXQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAocmV0KSBlcnJvcigi
RmFpbGVkIHRvIHBhcnNlIGludGVnZXIgdHlwZSIpOwotICAgICAgICB9OwotICAgICAgICAKLSAg
ICAgICAgdmFyIGZsb2F0X3R5cGUgPSBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICB2YXIgcmV0
ID0gIiI7Ci0gICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgIGlmIChjb25zdW1lKElE
LCAidW5yZXN0cmljdGVkIikpIHJldCA9ICJ1bnJlc3RyaWN0ZWQgIjsKLSAgICAgICAgICAgIGFs
bF93cygpOwotICAgICAgICAgICAgaWYgKGNvbnN1bWUoSUQsICJmbG9hdCIpKSByZXR1cm4gcmV0
ICsgImZsb2F0IjsKLSAgICAgICAgICAgIGlmIChjb25zdW1lKElELCAiZG91YmxlIikpIHJldHVy
biByZXQgKyAiZG91YmxlIjsKLSAgICAgICAgICAgIGlmIChyZXQpIGVycm9yKCJGYWlsZWQgdG8g
cGFyc2UgZmxvYXQgdHlwZSIpOwotICAgICAgICB9OwotICAgICAgICAKLSAgICAgICAgdmFyIHBy
aW1pdGl2ZV90eXBlID0gZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgdmFyIG51bV90eXBlID0g
aW50ZWdlcl90eXBlKCkgfHwgZmxvYXRfdHlwZSgpOwotICAgICAgICAgICAgaWYgKG51bV90eXBl
KSByZXR1cm4gbnVtX3R5cGU7Ci0gICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgIGlm
IChjb25zdW1lKElELCAiYm9vbGVhbiIpKSByZXR1cm4gImJvb2xlYW4iOwotICAgICAgICAgICAg
aWYgKGNvbnN1bWUoSUQsICJieXRlIikpIHJldHVybiAiYnl0ZSI7Ci0gICAgICAgICAgICBpZiAo
Y29uc3VtZShJRCwgIm9jdGV0IikpIHJldHVybiAib2N0ZXQiOwotICAgICAgICB9OwotICAgICAg
ICAKLSAgICAgICAgdmFyIGNvbnN0X3ZhbHVlID0gZnVuY3Rpb24gKCkgewotICAgICAgICAgICAg
aWYgKGNvbnN1bWUoSUQsICJ0cnVlIikpIHJldHVybiB7IHR5cGU6ICJib29sZWFuIiwgdmFsdWU6
IHRydWUgfTsKLSAgICAgICAgICAgIGlmIChjb25zdW1lKElELCAiZmFsc2UiKSkgcmV0dXJuIHsg
dHlwZTogImJvb2xlYW4iLCB2YWx1ZTogZmFsc2UgfTsKLSAgICAgICAgICAgIGlmIChjb25zdW1l
KElELCAibnVsbCIpKSByZXR1cm4geyB0eXBlOiAibnVsbCIgfTsKLSAgICAgICAgICAgIGlmIChj
b25zdW1lKElELCAiSW5maW5pdHkiKSkgcmV0dXJuIHsgdHlwZTogIkluZmluaXR5IiwgbmVnYXRp
dmU6IGZhbHNlIH07Ci0gICAgICAgICAgICBpZiAoY29uc3VtZShJRCwgIk5hTiIpKSByZXR1cm4g
eyB0eXBlOiAiTmFOIiB9OwotICAgICAgICAgICAgdmFyIHJldCA9IGNvbnN1bWUoRkxPQVQpIHx8
IGNvbnN1bWUoSU5UKTsKLSAgICAgICAgICAgIGlmIChyZXQpIHJldHVybiB7IHR5cGU6ICJudW1i
ZXIiLCB2YWx1ZTogMSAqIHJldC52YWx1ZSB9OwotICAgICAgICAgICAgdmFyIHRvayA9IGNvbnN1
bWUoT1RIRVIsICItIik7Ci0gICAgICAgICAgICBpZiAodG9rKSB7Ci0gICAgICAgICAgICAgICAg
aWYgKGNvbnN1bWUoSUQsICJJbmZpbml0eSIpKSByZXR1cm4geyB0eXBlOiAiSW5maW5pdHkiLCBu
ZWdhdGl2ZTogdHJ1ZSB9OwotICAgICAgICAgICAgICAgIGVsc2UgdG9rZW5zLnVuc2hpZnQodG9r
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLSAgICAgICAgCi0gICAgICAgIHZhciB0eXBl
X3N1ZmZpeCA9IGZ1bmN0aW9uIChvYmopIHsKLSAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7Ci0g
ICAgICAgICAgICAgICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICAgICAgaWYgKGNvbnN1bWUoT1RI
RVIsICI/IikpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG9iai5udWxsYWJsZSkgZXJyb3Io
IkNhbid0IG51bGxhYmxlIG1vcmUgdGhhbiBvbmNlIik7Ci0gICAgICAgICAgICAgICAgICAgIG9i
ai5udWxsYWJsZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVs
c2UgaWYgKGNvbnN1bWUoT1RIRVIsICJbIikpIHsKLSAgICAgICAgICAgICAgICAgICAgYWxsX3dz
KCk7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnN1bWUoT1RIRVIsICJdIikgfHwgZXJyb3IoIlVu
dGVybWluYXRlZCBhcnJheSB0eXBlIik7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghb2JqLmFy
cmF5KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBvYmouYXJyYXkgPSAxOwotICAgICAgICAg
ICAgICAgICAgICAgICAgb2JqLm51bGxhYmxlQXJyYXkgPSBbb2JqLm51bGxhYmxlXTsKLSAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIG9iai5hcnJheSsrOwotICAgICAgICAgICAgICAgICAgICAgICAgb2JqLm51
bGxhYmxlQXJyYXkucHVzaChvYmoubnVsbGFibGUpOwotICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgICAgIG9iai5udWxsYWJsZSA9IGZhbHNlOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICBlbHNlIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fTsKLSAgICAgICAgCi0gICAgICAgIHZhciBzaW5nbGVfdHlwZSA9IGZ1bmN0aW9uICgpIHsKLSAg
ICAgICAgICAgIHZhciBwcmltID0gcHJpbWl0aXZlX3R5cGUoKQotICAgICAgICAgICAgLCAgIHJl
dCA9IHsgc2VxdWVuY2U6IGZhbHNlLCBnZW5lcmljOiBudWxsLCBudWxsYWJsZTogZmFsc2UsIGFy
cmF5OiBmYWxzZSwgdW5pb246IGZhbHNlIH0KLSAgICAgICAgICAgICwgICBuYW1lCi0gICAgICAg
ICAgICAsICAgdmFsdWUKLSAgICAgICAgICAgIDsKLSAgICAgICAgICAgIGlmIChwcmltKSB7Ci0g
ICAgICAgICAgICAgICAgcmV0LmlkbFR5cGUgPSBwcmltOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgZWxzZSBpZiAobmFtZSA9IGNvbnN1bWUoSUQpKSB7Ci0gICAgICAgICAgICAgICAgdmFs
dWUgPSBuYW1lLnZhbHVlOwotICAgICAgICAgICAgICAgIGFsbF93cygpOwotICAgICAgICAgICAg
ICAgIC8vIEdlbmVyaWMgdHlwZXMKLSAgICAgICAgICAgICAgICBpZiAoY29uc3VtZShPVEhFUiwg
IjwiKSkgewotICAgICAgICAgICAgICAgICAgICAvLyBiYWNrd2FyZHMgY29tcGF0Ci0gICAgICAg
ICAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gInNlcXVlbmNlIikgewotICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0LnNlcXVlbmNlID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgICAgICByZXQuZ2VuZXJpYyA9IHZhbHVlOwotICAgICAgICAgICAgICAgICAg
ICByZXQuaWRsVHlwZSA9IHR5cGUoKSB8fCBlcnJvcigiRXJyb3IgcGFyc2luZyBnZW5lcmljIHR5
cGUgIiArIHZhbHVlKTsKLSAgICAgICAgICAgICAgICAgICAgYWxsX3dzKCk7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmICghY29uc3VtZShPVEhFUiwgIj4iKSkgZXJyb3IoIlVudGVybWluYXRlZCBn
ZW5lcmljIHR5cGUgIiArIHZhbHVlKTsKLSAgICAgICAgICAgICAgICAgICAgdHlwZV9zdWZmaXgo
cmV0KTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldC5pZGxUeXBl
ID0gdmFsdWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgdHlwZV9zdWZmaXgocmV0KTsKLSAgICAgICAgICAgIGlmIChyZXQubnVsbGFibGUgJiYgIXJl
dC5hcnJheSAmJiByZXQuaWRsVHlwZSA9PT0gImFueSIpIGVycm9yKCJUeXBlIGFueSBjYW5ub3Qg
YmUgbWFkZSBudWxsYWJsZSIpOwotICAgICAgICAgICAgcmV0dXJuIHJldDsKLSAgICAgICAgfTsK
LSAgICAgICAgCi0gICAgICAgIHZhciB1bmlvbl90eXBlID0gZnVuY3Rpb24gKCkgewotICAgICAg
ICAgICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoT1RIRVIsICIoIikpIHJl
dHVybjsKLSAgICAgICAgICAgIHZhciByZXQgPSB7IHNlcXVlbmNlOiBmYWxzZSwgZ2VuZXJpYzog
bnVsbCwgbnVsbGFibGU6IGZhbHNlLCBhcnJheTogZmFsc2UsIHVuaW9uOiB0cnVlLCBpZGxUeXBl
OiBbXSB9OwotICAgICAgICAgICAgdmFyIGZzdCA9IHR5cGUoKSB8fCBlcnJvcigiVW5pb24gdHlw
ZSB3aXRoIG5vIGNvbnRlbnQiKTsKLSAgICAgICAgICAgIHJldC5pZGxUeXBlLnB1c2goZnN0KTsK
LSAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgICAgICAgICAgYWxsX3dzKCk7Ci0g
ICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKElELCAib3IiKSkgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgdmFyIHR5cCA9IHR5cGUoKSB8fCBlcnJvcigiTm8gdHlwZSBhZnRlciAnb3InIGluIHVu
aW9uIHR5cGUiKTsKLSAgICAgICAgICAgICAgICByZXQuaWRsVHlwZS5wdXNoKHR5cCk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoT1RIRVIsICIpIikpIGVycm9yKCJV
bnRlcm1pbmF0ZWQgdW5pb24gdHlwZSIpOwotICAgICAgICAgICAgdHlwZV9zdWZmaXgocmV0KTsK
LSAgICAgICAgICAgIHJldHVybiByZXQ7Ci0gICAgICAgIH07Ci0gICAgICAgIAotICAgICAgICB2
YXIgdHlwZSA9IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIHJldHVybiBzaW5nbGVfdHlwZSgp
IHx8IHVuaW9uX3R5cGUoKTsKLSAgICAgICAgfTsKLSAgICAgICAgCi0gICAgICAgIHZhciBhcmd1
bWVudCA9IGZ1bmN0aW9uIChzdG9yZSkgewotICAgICAgICAgICAgdmFyIHJldCA9IHsgb3B0aW9u
YWw6IGZhbHNlLCB2YXJpYWRpYzogZmFsc2UgfTsKLSAgICAgICAgICAgIHJldC5leHRBdHRycyA9
IGV4dGVuZGVkX2F0dHJzKHN0b3JlKTsKLSAgICAgICAgICAgIGFsbF93cyhzdG9yZSwgInBlYSIp
OwotICAgICAgICAgICAgdmFyIG9wdF90b2tlbiA9IGNvbnN1bWUoSUQsICJvcHRpb25hbCIpOwot
ICAgICAgICAgICAgaWYgKG9wdF90b2tlbikgewotICAgICAgICAgICAgICAgIHJldC5vcHRpb25h
bCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICByZXQuaWRsVHlwZSA9IHR5cGUoKTsKLSAgICAgICAgICAgIGlmICghcmV0LmlkbFR5
cGUpIHsKLSAgICAgICAgICAgICAgICBpZiAob3B0X3Rva2VuKSB0b2tlbnMudW5zaGlmdChvcHRf
dG9rZW4pOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIHZhciB0eXBlX3Rva2VuID0gbGFzdF90b2tlbjsKLSAgICAgICAgICAgIGlmICghcmV0Lm9w
dGlvbmFsKSB7Ci0gICAgICAgICAgICAgICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICAgICAgaWYg
KHRva2Vucy5sZW5ndGggPj0gMyAmJgotICAgICAgICAgICAgICAgICAgICB0b2tlbnNbMF0udHlw
ZSA9PT0gIm90aGVyIiAmJiB0b2tlbnNbMF0udmFsdWUgPT09ICIuIiAmJgotICAgICAgICAgICAg
ICAgICAgICB0b2tlbnNbMV0udHlwZSA9PT0gIm90aGVyIiAmJiB0b2tlbnNbMV0udmFsdWUgPT09
ICIuIiAmJgotICAgICAgICAgICAgICAgICAgICB0b2tlbnNbMl0udHlwZSA9PT0gIm90aGVyIiAm
JiB0b2tlbnNbMl0udmFsdWUgPT09ICIuIgotICAgICAgICAgICAgICAgICAgICApIHsKLSAgICAg
ICAgICAgICAgICAgICAgdG9rZW5zLnNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAgICAgIHRva2Vu
cy5zaGlmdCgpOwotICAgICAgICAgICAgICAgICAgICB0b2tlbnMuc2hpZnQoKTsKLSAgICAgICAg
ICAgICAgICAgICAgcmV0LnZhcmlhZGljID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgIHZhciBuYW1lID0g
Y29uc3VtZShJRCk7Ci0gICAgICAgICAgICBpZiAoIW5hbWUpIHsKLSAgICAgICAgICAgICAgICBp
ZiAob3B0X3Rva2VuKSB0b2tlbnMudW5zaGlmdChvcHRfdG9rZW4pOwotICAgICAgICAgICAgICAg
IHRva2Vucy51bnNoaWZ0KHR5cGVfdG9rZW4pOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldC5uYW1lID0gbmFtZS52YWx1ZTsKLSAgICAgICAg
ICAgIGlmIChyZXQub3B0aW9uYWwpIHsKLSAgICAgICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAg
ICAgICAgICAgICByZXRbImRlZmF1bHQiXSA9IGRlZmF1bHRfKCk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICByZXR1cm4gcmV0OwotICAgICAgICB9OwotICAgICAgICAKLSAgICAgICAgdmFy
IGFyZ3VtZW50X2xpc3QgPSBmdW5jdGlvbiAoc3RvcmUpIHsKLSAgICAgICAgICAgIHZhciByZXQg
PSBbXQotICAgICAgICAgICAgLCAgIGFyZyA9IGFyZ3VtZW50KHN0b3JlID8gcmV0IDogbnVsbCkK
LSAgICAgICAgICAgIDsKLSAgICAgICAgICAgIGlmICghYXJnKSByZXR1cm47Ci0gICAgICAgICAg
ICByZXQucHVzaChhcmcpOwotICAgICAgICAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgICAg
ICAgICBhbGxfd3Moc3RvcmUgPyByZXQgOiBudWxsKTsKLSAgICAgICAgICAgICAgICBpZiAoIWNv
bnN1bWUoT1RIRVIsICIsIikpIHJldHVybiByZXQ7Ci0gICAgICAgICAgICAgICAgdmFyIG54dCA9
IGFyZ3VtZW50KHN0b3JlID8gcmV0IDogbnVsbCkgfHwgZXJyb3IoIlRyYWlsaW5nIGNvbW1hIGlu
IGFyZ3VtZW50cyBsaXN0Iik7Ci0gICAgICAgICAgICAgICAgcmV0LnB1c2gobnh0KTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfTsKLSAgICAgICAgCi0gICAgICAgIHZhciB0eXBlX3BhaXIgPSBm
dW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgIHZhciBrID0g
dHlwZSgpOwotICAgICAgICAgICAgaWYgKCFrKSByZXR1cm47Ci0gICAgICAgICAgICBhbGxfd3Mo
KQotICAgICAgICAgICAgaWYgKCFjb25zdW1lKE9USEVSLCAiLCIpKSByZXR1cm47Ci0gICAgICAg
ICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgIHZhciB2ID0gdHlwZSgpOwotICAgICAgICAgICAg
aWYgKCF2KSByZXR1cm47Ci0gICAgICAgICAgICByZXR1cm4gW2ssIHZdOwotICAgICAgICB9Owot
ICAgICAgICAKLSAgICAgICAgdmFyIHNpbXBsZV9leHRlbmRlZF9hdHRyID0gZnVuY3Rpb24gKHN0
b3JlKSB7Ci0gICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgIHZhciBuYW1lID0gY29u
c3VtZShJRCk7Ci0gICAgICAgICAgICBpZiAoIW5hbWUpIHJldHVybjsKLSAgICAgICAgICAgIHZh
ciByZXQgPSB7Ci0gICAgICAgICAgICAgICAgbmFtZTogbmFtZS52YWx1ZQotICAgICAgICAgICAg
LCAgICJhcmd1bWVudHMiOiBudWxsCi0gICAgICAgICAgICB9OwotICAgICAgICAgICAgYWxsX3dz
KCk7Ci0gICAgICAgICAgICB2YXIgZXEgPSBjb25zdW1lKE9USEVSLCAiPSIpOwotICAgICAgICAg
ICAgaWYgKGVxKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHJoczsKLSAgICAgICAgICAgICAgICBh
bGxfd3MoKTsKLSAgICAgICAgICAgICAgICBpZiAocmhzID0gY29uc3VtZShJRCkpIHsKLSAgICAg
ICAgICAgICAgICAgIHJldC5yaHMgPSByaHMKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgZWxzZSBpZiAoY29uc3VtZShPVEhFUiwgIigiKSkgewotICAgICAgICAgICAgICAgICAg
ICAvLyBbRXhwb3NlZD0oV2luZG93LFdvcmtlcildCi0gICAgICAgICAgICAgICAgICAgIHJocyA9
IFtdOwotICAgICAgICAgICAgICAgICAgICB2YXIgaWQgPSBjb25zdW1lKElEKTsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKGlkKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgcmhzID0gW2lkLnZh
bHVlXTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBpZGVudGlm
aWVycyhyaHMpOwotICAgICAgICAgICAgICAgICAgICBjb25zdW1lKE9USEVSLCAiKSIpIHx8IGVy
cm9yKCJVbmV4cGVjdGVkIHRva2VuIGluIGV4dGVuZGVkIGF0dHJpYnV0ZSBhcmd1bWVudCBsaXN0
IG9yIHR5cGUgcGFpciIpOwotICAgICAgICAgICAgICAgICAgICByZXQucmhzID0gewotICAgICAg
ICAgICAgICAgICAgICAgICAgdHlwZTogImlkZW50aWZpZXItbGlzdCIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICB2YWx1ZTogcmhzCi0gICAgICAgICAgICAgICAgICAgIH07Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgIGlmICghcmV0LnJocykgcmV0dXJuIGVycm9yKCJObyBy
aWdodCBoYW5kIHNpZGUgdG8gZXh0ZW5kZWQgYXR0cmlidXRlIGFzc2lnbm1lbnQiKTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGFsbF93cygpOwotICAgICAgICAgICAgaWYgKGNvbnN1bWUo
T1RIRVIsICIoIikpIHsKLSAgICAgICAgICAgICAgICB2YXIgYXJncywgcGFpcjsKLSAgICAgICAg
ICAgICAgICAvLyBbQ29uc3RydWN0b3IoRE9NU3RyaW5nIHN0cildCi0gICAgICAgICAgICAgICAg
aWYgKGFyZ3MgPSBhcmd1bWVudF9saXN0KHN0b3JlKSkgewotICAgICAgICAgICAgICAgICAgICBy
ZXRbImFyZ3VtZW50cyJdID0gYXJnczsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgLy8gW01hcENsYXNzKERPTVN0cmluZywgRE9NU3RyaW5nKV0KLSAgICAgICAgICAgICAgICBl
bHNlIGlmIChwYWlyID0gdHlwZV9wYWlyKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0LnR5
cGVQYWlyID0gcGFpcjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgLy8gW0Nv
bnN0cnVjdG9yKCldCi0gICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAg
IHJldFsiYXJndW1lbnRzIl0gPSBbXTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICAgICAgY29uc3VtZShPVEhFUiwgIikiKSB8fCBlcnJv
cigiVW5leHBlY3RlZCB0b2tlbiBpbiBleHRlbmRlZCBhdHRyaWJ1dGUgYXJndW1lbnQgbGlzdCBv
ciB0eXBlIHBhaXIiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiByZXQ7Ci0g
ICAgICAgIH07Ci0gICAgICAgIAotICAgICAgICAvLyBOb3RlOiB3ZSBwYXJzZSBzb21ldGhpbmcg
c2ltcGxlciB0aGFuIHRoZSBvZmZpY2lhbCBzeW50YXguIEl0J3MgYWxsIHRoYXQgZXZlcgotICAg
ICAgICAvLyBzZWVtcyB0byBiZSB1c2VkCi0gICAgICAgIHZhciBleHRlbmRlZF9hdHRycyA9IGZ1
bmN0aW9uIChzdG9yZSkgewotICAgICAgICAgICAgdmFyIGVhcyA9IFtdOwotICAgICAgICAgICAg
YWxsX3dzKHN0b3JlKTsKLSAgICAgICAgICAgIGlmICghY29uc3VtZShPVEhFUiwgIlsiKSkgcmV0
dXJuIGVhczsKLSAgICAgICAgICAgIGVhc1swXSA9IHNpbXBsZV9leHRlbmRlZF9hdHRyKHN0b3Jl
KSB8fCBlcnJvcigiRXh0ZW5kZWQgYXR0cmlidXRlIHdpdGggbm90IGNvbnRlbnQiKTsKLSAgICAg
ICAgICAgIGFsbF93cygpOwotICAgICAgICAgICAgd2hpbGUgKGNvbnN1bWUoT1RIRVIsICIsIikp
IHsKLSAgICAgICAgICAgICAgICBlYXMucHVzaChzaW1wbGVfZXh0ZW5kZWRfYXR0cihzdG9yZSkg
fHwgZXJyb3IoIlRyYWlsaW5nIGNvbW1hIGluIGV4dGVuZGVkIGF0dHJpYnV0ZSIpKTsKLSAgICAg
ICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNvbnN1bWUo
T1RIRVIsICJdIikgfHwgZXJyb3IoIk5vIGVuZCBvZiBleHRlbmRlZCBhdHRyaWJ1dGUiKTsKLSAg
ICAgICAgICAgIHJldHVybiBlYXM7Ci0gICAgICAgIH07Ci0gICAgICAgIAotICAgICAgICB2YXIg
ZGVmYXVsdF8gPSBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAg
ICAgIGlmIChjb25zdW1lKE9USEVSLCAiPSIpKSB7Ci0gICAgICAgICAgICAgICAgYWxsX3dzKCk7
Ci0gICAgICAgICAgICAgICAgdmFyIGRlZiA9IGNvbnN0X3ZhbHVlKCk7Ci0gICAgICAgICAgICAg
ICAgaWYgKGRlZikgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGVmOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIGlmIChjb25zdW1lKE9USEVSLCAiWyIpKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGlmICghY29uc3VtZShPVEhFUiwgIl0iKSkgZXJyb3IoIkRl
ZmF1bHQgc2VxdWVuY2UgdmFsdWUgbXVzdCBiZSBlbXB0eSIpOwotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4geyB0eXBlOiAic2VxdWVuY2UiLCB2YWx1ZTogW10gfTsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBzdHIg
PSBjb25zdW1lKFNUUikgfHwgZXJyb3IoIk5vIHZhbHVlIGZvciBkZWZhdWx0Iik7Ci0gICAgICAg
ICAgICAgICAgICAgIHN0ci52YWx1ZSA9IHN0ci52YWx1ZS5yZXBsYWNlKC9eIi8sICIiKS5yZXBs
YWNlKC8iJC8sICIiKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0cjsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0gICAgICAgIAotICAgICAgICB2
YXIgY29uc3RfID0gZnVuY3Rpb24gKHN0b3JlKSB7Ci0gICAgICAgICAgICBhbGxfd3Moc3RvcmUs
ICJwZWEiKTsKLSAgICAgICAgICAgIGlmICghY29uc3VtZShJRCwgImNvbnN0IikpIHJldHVybjsK
LSAgICAgICAgICAgIHZhciByZXQgPSB7IHR5cGU6ICJjb25zdCIsIG51bGxhYmxlOiBmYWxzZSB9
OwotICAgICAgICAgICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICB2YXIgdHlwID0gcHJpbWl0aXZl
X3R5cGUoKTsKLSAgICAgICAgICAgIGlmICghdHlwKSB7Ci0gICAgICAgICAgICAgICAgdHlwID0g
Y29uc3VtZShJRCkgfHwgZXJyb3IoIk5vIHR5cGUgZm9yIGNvbnN0Iik7Ci0gICAgICAgICAgICAg
ICAgdHlwID0gdHlwLnZhbHVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0LmlkbFR5
cGUgPSB0eXA7Ci0gICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgIGlmIChjb25zdW1l
KE9USEVSLCAiPyIpKSB7Ci0gICAgICAgICAgICAgICAgcmV0Lm51bGxhYmxlID0gdHJ1ZTsKLSAg
ICAgICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHZhciBu
YW1lID0gY29uc3VtZShJRCkgfHwgZXJyb3IoIk5vIG5hbWUgZm9yIGNvbnN0Iik7Ci0gICAgICAg
ICAgICByZXQubmFtZSA9IG5hbWUudmFsdWU7Ci0gICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAg
ICAgICAgIGNvbnN1bWUoT1RIRVIsICI9IikgfHwgZXJyb3IoIk5vIHZhbHVlIGFzc2lnbm1lbnQg
Zm9yIGNvbnN0Iik7Ci0gICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgIHZhciBjbnQg
PSBjb25zdF92YWx1ZSgpOwotICAgICAgICAgICAgaWYgKGNudCkgcmV0LnZhbHVlID0gY250Owot
ICAgICAgICAgICAgZWxzZSBlcnJvcigiTm8gdmFsdWUgZm9yIGNvbnN0Iik7Ci0gICAgICAgICAg
ICBhbGxfd3MoKTsKLSAgICAgICAgICAgIGNvbnN1bWUoT1RIRVIsICI7IikgfHwgZXJyb3IoIlVu
dGVybWluYXRlZCBjb25zdCIpOwotICAgICAgICAgICAgcmV0dXJuIHJldDsKLSAgICAgICAgfTsK
LSAgICAgICAgCi0gICAgICAgIHZhciBpbmhlcml0YW5jZSA9IGZ1bmN0aW9uICgpIHsKLSAgICAg
ICAgICAgIGFsbF93cygpOwotICAgICAgICAgICAgaWYgKGNvbnN1bWUoT1RIRVIsICI6IikpIHsK
LSAgICAgICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgICAgICB2YXIgaW5oID0gY29u
c3VtZShJRCkgfHwgZXJyb3IgKCJObyB0eXBlIGluIGluaGVyaXRhbmNlIik7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIGluaC52YWx1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLSAgICAg
ICAgCi0gICAgICAgIHZhciBvcGVyYXRpb25fcmVzdCA9IGZ1bmN0aW9uIChyZXQsIHN0b3JlKSB7
Ci0gICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgIGlmICghcmV0KSByZXQgPSB7fTsK
LSAgICAgICAgICAgIHZhciBuYW1lID0gY29uc3VtZShJRCk7Ci0gICAgICAgICAgICByZXQubmFt
ZSA9IG5hbWUgPyBuYW1lLnZhbHVlIDogbnVsbDsKLSAgICAgICAgICAgIGFsbF93cygpOwotICAg
ICAgICAgICAgY29uc3VtZShPVEhFUiwgIigiKSB8fCBlcnJvcigiSW52YWxpZCBvcGVyYXRpb24i
KTsKLSAgICAgICAgICAgIHJldFsiYXJndW1lbnRzIl0gPSBhcmd1bWVudF9saXN0KHN0b3JlKSB8
fCBbXTsKLSAgICAgICAgICAgIGFsbF93cygpOwotICAgICAgICAgICAgY29uc3VtZShPVEhFUiwg
IikiKSB8fCBlcnJvcigiVW50ZXJtaW5hdGVkIG9wZXJhdGlvbiIpOwotICAgICAgICAgICAgYWxs
X3dzKCk7Ci0gICAgICAgICAgICBjb25zdW1lKE9USEVSLCAiOyIpIHx8IGVycm9yKCJVbnRlcm1p
bmF0ZWQgb3BlcmF0aW9uIik7Ci0gICAgICAgICAgICByZXR1cm4gcmV0OwotICAgICAgICB9Owot
ICAgICAgICAKLSAgICAgICAgdmFyIGNhbGxiYWNrID0gZnVuY3Rpb24gKHN0b3JlKSB7Ci0gICAg
ICAgICAgICBhbGxfd3Moc3RvcmUsICJwZWEiKTsKLSAgICAgICAgICAgIHZhciByZXQ7Ci0gICAg
ICAgICAgICBpZiAoIWNvbnN1bWUoSUQsICJjYWxsYmFjayIpKSByZXR1cm47Ci0gICAgICAgICAg
ICBhbGxfd3MoKTsKLSAgICAgICAgICAgIHZhciB0b2sgPSBjb25zdW1lKElELCAiaW50ZXJmYWNl
Iik7Ci0gICAgICAgICAgICBpZiAodG9rKSB7Ci0gICAgICAgICAgICAgICAgdG9rZW5zLnVuc2hp
ZnQodG9rKTsKLSAgICAgICAgICAgICAgICByZXQgPSBpbnRlcmZhY2VfKCk7Ci0gICAgICAgICAg
ICAgICAgcmV0LnR5cGUgPSAiY2FsbGJhY2sgaW50ZXJmYWNlIjsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gcmV0OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdmFyIG5hbWUgPSBjb25zdW1l
KElEKSB8fCBlcnJvcigiTm8gbmFtZSBmb3IgY2FsbGJhY2siKTsKLSAgICAgICAgICAgIHJldCA9
IHsgdHlwZTogImNhbGxiYWNrIiwgbmFtZTogbmFtZS52YWx1ZSB9OwotICAgICAgICAgICAgYWxs
X3dzKCk7Ci0gICAgICAgICAgICBjb25zdW1lKE9USEVSLCAiPSIpIHx8IGVycm9yKCJObyBhc3Np
Z25tZW50IGluIGNhbGxiYWNrIik7Ci0gICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAg
IHJldC5pZGxUeXBlID0gcmV0dXJuX3R5cGUoKTsKLSAgICAgICAgICAgIGFsbF93cygpOwotICAg
ICAgICAgICAgY29uc3VtZShPVEhFUiwgIigiKSB8fCBlcnJvcigiTm8gYXJndW1lbnRzIGluIGNh
bGxiYWNrIik7Ci0gICAgICAgICAgICByZXRbImFyZ3VtZW50cyJdID0gYXJndW1lbnRfbGlzdChz
dG9yZSkgfHwgW107Ci0gICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgIGNvbnN1bWUo
T1RIRVIsICIpIikgfHwgZXJyb3IoIlVudGVybWluYXRlZCBjYWxsYmFjayIpOwotICAgICAgICAg
ICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICBjb25zdW1lKE9USEVSLCAiOyIpIHx8IGVycm9yKCJV
bnRlcm1pbmF0ZWQgY2FsbGJhY2siKTsKLSAgICAgICAgICAgIHJldHVybiByZXQ7Ci0gICAgICAg
IH07CisgICAgICB9CisgICAgfSBlbHNlIGlmIChuZXh0Q2hhciA9PT0gJyInKSB7CisgICAgICBy
ZXN1bHQgPSBhdHRlbXB0VG9rZW5NYXRjaCgic3RyaW5nIik7CisgICAgfQogCi0gICAgICAgIHZh
ciBhdHRyaWJ1dGUgPSBmdW5jdGlvbiAoc3RvcmUpIHsKLSAgICAgICAgICAgIGFsbF93cyhzdG9y
ZSwgInBlYSIpOwotICAgICAgICAgICAgdmFyIGdyYWJiZWQgPSBbXQotICAgICAgICAgICAgLCAg
IHJldCA9IHsKLSAgICAgICAgICAgICAgICB0eXBlOiAgICAgICAgICAgImF0dHJpYnV0ZSIKLSAg
ICAgICAgICAgICwgICAic3RhdGljIjogICAgICAgZmFsc2UKLSAgICAgICAgICAgICwgICBzdHJp
bmdpZmllcjogICAgZmFsc2UKLSAgICAgICAgICAgICwgICBpbmhlcml0OiAgICAgICAgZmFsc2UK
LSAgICAgICAgICAgICwgICByZWFkb25seTogICAgICAgZmFsc2UKLSAgICAgICAgICAgIH07Ci0g
ICAgICAgICAgICBpZiAoY29uc3VtZShJRCwgInN0YXRpYyIpKSB7Ci0gICAgICAgICAgICAgICAg
cmV0WyJzdGF0aWMiXSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgZ3JhYmJlZC5wdXNoKGxhc3Rf
dG9rZW4pOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAoY29uc3VtZShJRCwg
InN0cmluZ2lmaWVyIikpIHsKLSAgICAgICAgICAgICAgICByZXQuc3RyaW5naWZpZXIgPSB0cnVl
OwotICAgICAgICAgICAgICAgIGdyYWJiZWQucHVzaChsYXN0X3Rva2VuKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIHZhciB3ID0gYWxsX3dzKCk7Ci0gICAgICAgICAgICBpZiAodykgZ3Jh
YmJlZC5wdXNoKHcpOwotICAgICAgICAgICAgaWYgKGNvbnN1bWUoSUQsICJpbmhlcml0IikpIHsK
LSAgICAgICAgICAgICAgICBpZiAocmV0WyJzdGF0aWMiXSB8fCByZXQuc3RyaW5naWZpZXIpIGVy
cm9yKCJDYW5ub3QgaGF2ZSBhIHN0YXRpYyBvciBzdHJpbmdpZmllciBpbmhlcml0Iik7Ci0gICAg
ICAgICAgICAgICAgcmV0LmluaGVyaXQgPSB0cnVlOwotICAgICAgICAgICAgICAgIGdyYWJiZWQu
cHVzaChsYXN0X3Rva2VuKTsKLSAgICAgICAgICAgICAgICB2YXIgdyA9IGFsbF93cygpOwotICAg
ICAgICAgICAgICAgIGlmICh3KSBncmFiYmVkLnB1c2godyk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBpZiAoY29uc3VtZShJRCwgInJlYWRvbmx5IikpIHsKLSAgICAgICAgICAgICAgICBy
ZXQucmVhZG9ubHkgPSB0cnVlOwotICAgICAgICAgICAgICAgIGdyYWJiZWQucHVzaChsYXN0X3Rv
a2VuKTsKLSAgICAgICAgICAgICAgICB2YXIgdyA9IGFsbF93cygpOwotICAgICAgICAgICAgICAg
IGlmICh3KSBncmFiYmVkLnB1c2godyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAo
IWNvbnN1bWUoSUQsICJhdHRyaWJ1dGUiKSkgewotICAgICAgICAgICAgICAgIHRva2VucyA9IGdy
YWJiZWQuY29uY2F0KHRva2Vucyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICByZXQuaWRsVHlwZSA9IHR5
cGUoKSB8fCBlcnJvcigiTm8gdHlwZSBpbiBhdHRyaWJ1dGUiKTsKLSAgICAgICAgICAgIGlmIChy
ZXQuaWRsVHlwZS5zZXF1ZW5jZSkgZXJyb3IoIkF0dHJpYnV0ZXMgY2Fubm90IGFjY2VwdCBzZXF1
ZW5jZSB0eXBlcyIpOwotICAgICAgICAgICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICB2YXIgbmFt
ZSA9IGNvbnN1bWUoSUQpIHx8IGVycm9yKCJObyBuYW1lIGluIGF0dHJpYnV0ZSIpOwotICAgICAg
ICAgICAgcmV0Lm5hbWUgPSBuYW1lLnZhbHVlOwotICAgICAgICAgICAgYWxsX3dzKCk7Ci0gICAg
ICAgICAgICBjb25zdW1lKE9USEVSLCAiOyIpIHx8IGVycm9yKCJVbnRlcm1pbmF0ZWQgYXR0cmli
dXRlIik7Ci0gICAgICAgICAgICByZXR1cm4gcmV0OwotICAgICAgICB9OwotICAgICAgICAKLSAg
ICAgICAgdmFyIHJldHVybl90eXBlID0gZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgdmFyIHR5
cCA9IHR5cGUoKTsKLSAgICAgICAgICAgIGlmICghdHlwKSB7Ci0gICAgICAgICAgICAgICAgaWYg
KGNvbnN1bWUoSUQsICJ2b2lkIikpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJ2b2lk
IjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSBlcnJvcigiTm8gcmV0
dXJuIHR5cGUiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiB0eXA7Ci0gICAg
ICAgIH07Ci0gICAgICAgIAotICAgICAgICB2YXIgb3BlcmF0aW9uID0gZnVuY3Rpb24gKHN0b3Jl
KSB7Ci0gICAgICAgICAgICBhbGxfd3Moc3RvcmUsICJwZWEiKTsKLSAgICAgICAgICAgIHZhciBy
ZXQgPSB7Ci0gICAgICAgICAgICAgICAgdHlwZTogICAgICAgICAgICJvcGVyYXRpb24iCi0gICAg
ICAgICAgICAsICAgZ2V0dGVyOiAgICAgICAgIGZhbHNlCi0gICAgICAgICAgICAsICAgc2V0dGVy
OiAgICAgICAgIGZhbHNlCi0gICAgICAgICAgICAsICAgY3JlYXRvcjogICAgICAgIGZhbHNlCi0g
ICAgICAgICAgICAsICAgZGVsZXRlcjogICAgICAgIGZhbHNlCi0gICAgICAgICAgICAsICAgbGVn
YWN5Y2FsbGVyOiAgIGZhbHNlCi0gICAgICAgICAgICAsICAgInN0YXRpYyI6ICAgICAgIGZhbHNl
Ci0gICAgICAgICAgICAsICAgc3RyaW5naWZpZXI6ICAgIGZhbHNlCi0gICAgICAgICAgICB9Owot
ICAgICAgICAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgICAgICAgICBhbGxfd3MoKTsKLSAg
ICAgICAgICAgICAgICBpZiAoY29uc3VtZShJRCwgImdldHRlciIpKSByZXQuZ2V0dGVyID0gdHJ1
ZTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChjb25zdW1lKElELCAic2V0dGVyIikpIHJldC5z
ZXR0ZXIgPSB0cnVlOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNvbnN1bWUoSUQsICJjcmVh
dG9yIikpIHJldC5jcmVhdG9yID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChjb25z
dW1lKElELCAiZGVsZXRlciIpKSByZXQuZGVsZXRlciA9IHRydWU7Ci0gICAgICAgICAgICAgICAg
ZWxzZSBpZiAoY29uc3VtZShJRCwgImxlZ2FjeWNhbGxlciIpKSByZXQubGVnYWN5Y2FsbGVyID0g
dHJ1ZTsKLSAgICAgICAgICAgICAgICBlbHNlIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgaWYgKHJldC5nZXR0ZXIgfHwgcmV0LnNldHRlciB8fCByZXQuY3JlYXRvciB8fCByZXQu
ZGVsZXRlciB8fCByZXQubGVnYWN5Y2FsbGVyKSB7Ci0gICAgICAgICAgICAgICAgYWxsX3dzKCk7
Ci0gICAgICAgICAgICAgICAgcmV0LmlkbFR5cGUgPSByZXR1cm5fdHlwZSgpOwotICAgICAgICAg
ICAgICAgIG9wZXJhdGlvbl9yZXN0KHJldCwgc3RvcmUpOwotICAgICAgICAgICAgICAgIHJldHVy
biByZXQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoY29uc3VtZShJRCwgInN0YXRp
YyIpKSB7Ci0gICAgICAgICAgICAgICAgcmV0WyJzdGF0aWMiXSA9IHRydWU7Ci0gICAgICAgICAg
ICAgICAgcmV0LmlkbFR5cGUgPSByZXR1cm5fdHlwZSgpOwotICAgICAgICAgICAgICAgIG9wZXJh
dGlvbl9yZXN0KHJldCwgc3RvcmUpOwotICAgICAgICAgICAgICAgIHJldHVybiByZXQ7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChjb25zdW1lKElELCAic3RyaW5naWZpZXIi
KSkgewotICAgICAgICAgICAgICAgIHJldC5zdHJpbmdpZmllciA9IHRydWU7LQotICAgICAgICAg
ICAgICAgIGFsbF93cygpOwotICAgICAgICAgICAgICAgIGlmIChjb25zdW1lKE9USEVSLCAiOyIp
KSByZXR1cm4gcmV0OwotICAgICAgICAgICAgICAgIHJldC5pZGxUeXBlID0gcmV0dXJuX3R5cGUo
KTsKLSAgICAgICAgICAgICAgICBvcGVyYXRpb25fcmVzdChyZXQsIHN0b3JlKTsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gcmV0OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0LmlkbFR5
cGUgPSByZXR1cm5fdHlwZSgpOwotICAgICAgICAgICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICBp
ZiAoY29uc3VtZShJRCwgIml0ZXJhdG9yIikpIHsKLSAgICAgICAgICAgICAgICBhbGxfd3MoKTsK
LSAgICAgICAgICAgICAgICByZXQudHlwZSA9ICJpdGVyYXRvciI7Ci0gICAgICAgICAgICAgICAg
aWYgKGNvbnN1bWUoSUQsICJvYmplY3QiKSkgewotICAgICAgICAgICAgICAgICAgICByZXQuaXRl
cmF0b3JPYmplY3QgPSAib2JqZWN0IjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgZWxzZSBpZiAoY29uc3VtZShPVEhFUiwgIj0iKSkgewotICAgICAgICAgICAgICAgICAgICBh
bGxfd3MoKTsKLSAgICAgICAgICAgICAgICAgICAgdmFyIG5hbWUgPSBjb25zdW1lKElEKSB8fCBl
cnJvcigiTm8gcmlnaHQgaGFuZCBzaWRlIGluIGl0ZXJhdG9yIik7Ci0gICAgICAgICAgICAgICAg
ICAgIHJldC5pdGVyYXRvck9iamVjdCA9IG5hbWUudmFsdWU7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIGFsbF93cygpOwotICAgICAgICAgICAgICAgIGNvbnN1bWUoT1RIRVIs
ICI7IikgfHwgZXJyb3IoIlVudGVybWluYXRlZCBpdGVyYXRvciIpOwotICAgICAgICAgICAgICAg
IHJldHVybiByZXQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAg
ICAgICAgICBvcGVyYXRpb25fcmVzdChyZXQsIHN0b3JlKTsKLSAgICAgICAgICAgICAgICByZXR1
cm4gcmV0OwotICAgICAgICAgICAgfQotICAgICAgICB9OwotICAgICAgICAKLSAgICAgICAgdmFy
IGlkZW50aWZpZXJzID0gZnVuY3Rpb24gKGFycikgewotICAgICAgICAgICAgd2hpbGUgKHRydWUp
IHsKLSAgICAgICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgICAgICBpZiAoY29uc3Vt
ZShPVEhFUiwgIiwiKSkgewotICAgICAgICAgICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAg
ICAgICAgICAgICAgdmFyIG5hbWUgPSBjb25zdW1lKElEKSB8fCBlcnJvcigiVHJhaWxpbmcgY29t
bWEgaW4gaWRlbnRpZmllcnMgbGlzdCIpOwotICAgICAgICAgICAgICAgICAgICBhcnIucHVzaChu
YW1lLnZhbHVlKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSBicmVh
azsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLSAgICAgICAgCi0gICAgICAgIHZhciBzZXJp
YWxpc2VyID0gZnVuY3Rpb24gKHN0b3JlKSB7Ci0gICAgICAgICAgICBhbGxfd3Moc3RvcmUsICJw
ZWEiKTsKLSAgICAgICAgICAgIGlmICghY29uc3VtZShJRCwgInNlcmlhbGl6ZXIiKSkgcmV0dXJu
OwotICAgICAgICAgICAgdmFyIHJldCA9IHsgdHlwZTogInNlcmlhbGl6ZXIiIH07Ci0gICAgICAg
ICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgIGlmIChjb25zdW1lKE9USEVSLCAiPSIpKSB7Ci0g
ICAgICAgICAgICAgICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICAgICAgaWYgKGNvbnN1bWUoT1RI
RVIsICJ7IikpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0LnBhdHRlcm5NYXAgPSB0cnVlOwot
ICAgICAgICAgICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgICAgICAgICAgdmFyIGlk
ID0gY29uc3VtZShJRCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpZCAmJiBpZC52YWx1ZSA9
PT0gImdldHRlciIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldC5uYW1lcyA9IFsiZ2V0
dGVyIl07Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZWxzZSBp
ZiAoaWQgJiYgaWQudmFsdWUgPT09ICJpbmhlcml0IikgewotICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0Lm5hbWVzID0gWyJpbmhlcml0Il07Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZGVu
dGlmaWVycyhyZXQubmFtZXMpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgIGVsc2UgaWYgKGlkKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXQubmFtZXMg
PSBbaWQudmFsdWVdOwotICAgICAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllcnMocmV0Lm5h
bWVzKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHJldC5uYW1lcyA9IFtdOwotICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGFsbF93cygpOwotICAgICAgICAgICAgICAgICAg
ICBjb25zdW1lKE9USEVSLCAifSIpIHx8IGVycm9yKCJVbnRlcm1pbmF0ZWQgc2VyaWFsaXplciBw
YXR0ZXJuIG1hcCIpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIGlm
IChjb25zdW1lKE9USEVSLCAiWyIpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldC5wYXR0ZXJu
TGlzdCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGFsbF93cygpOwotICAgICAgICAgICAg
ICAgICAgICB2YXIgaWQgPSBjb25zdW1lKElEKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGlk
ICYmIGlkLnZhbHVlID09PSAiZ2V0dGVyIikgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0
Lm5hbWVzID0gWyJnZXR0ZXIiXTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgICAgICBlbHNlIGlmIChpZCkgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0Lm5hbWVz
ID0gW2lkLnZhbHVlXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXJzKHJldC5u
YW1lcyk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXQubmFtZXMgPSBbXTsKLSAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgICAgICAg
ICAgY29uc3VtZShPVEhFUiwgIl0iKSB8fCBlcnJvcigiVW50ZXJtaW5hdGVkIHNlcmlhbGl6ZXIg
cGF0dGVybiBsaXN0Iik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2Ug
ewotICAgICAgICAgICAgICAgICAgICB2YXIgbmFtZSA9IGNvbnN1bWUoSUQpIHx8IGVycm9yKCJJ
bnZhbGlkIHNlcmlhbGl6ZXIiKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0Lm5hbWUgPSBuYW1l
LnZhbHVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBhbGxfd3MoKTsKLSAg
ICAgICAgICAgICAgICBjb25zdW1lKE9USEVSLCAiOyIpIHx8IGVycm9yKCJVbnRlcm1pbmF0ZWQg
c2VyaWFsaXplciIpOwotICAgICAgICAgICAgICAgIHJldHVybiByZXQ7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBlbHNlIGlmIChjb25zdW1lKE9USEVSLCAiOyIpKSB7Ci0gICAgICAgICAg
ICAgICAgLy8gbm9vcCwganVzdCBwYXJzaW5nCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBl
bHNlIHsKLSAgICAgICAgICAgICAgICByZXQuaWRsVHlwZSA9IHJldHVybl90eXBlKCk7Ci0gICAg
ICAgICAgICAgICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICAgICAgcmV0Lm9wZXJhdGlvbiA9IG9w
ZXJhdGlvbl9yZXN0KG51bGwsIHN0b3JlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJl
dHVybiByZXQ7Ci0gICAgICAgIH07CisgICAgZm9yIChjb25zdCBwdW5jdHVhdGlvbiBvZiBwdW5j
dHVhdGlvbnMpIHsKKyAgICAgIGlmIChzdHIuc3RhcnRzV2l0aChwdW5jdHVhdGlvbiwgbGFzdENo
YXJJbmRleCkpIHsKKyAgICAgICAgdG9rZW5zLnB1c2goeworICAgICAgICAgIHR5cGU6ICJpbmxp
bmUiLAorICAgICAgICAgIHZhbHVlOiBwdW5jdHVhdGlvbiwKKyAgICAgICAgICB0cml2aWEsCisg
ICAgICAgICAgbGluZSwKKyAgICAgICAgICBpbmRleCwKKyAgICAgICAgfSk7CisgICAgICAgIHRy
aXZpYSA9ICIiOworICAgICAgICBsYXN0Q2hhckluZGV4ICs9IHB1bmN0dWF0aW9uLmxlbmd0aDsK
KyAgICAgICAgcmVzdWx0ID0gbGFzdENoYXJJbmRleDsKKyAgICAgICAgYnJlYWs7CisgICAgICB9
CisgICAgfQorCisgICAgLy8gb3RoZXIgYXMgdGhlIGxhc3QgdHJ5CisgICAgaWYgKHJlc3VsdCA9
PT0gLTEpIHsKKyAgICAgIHJlc3VsdCA9IGF0dGVtcHRUb2tlbk1hdGNoKCJvdGhlciIpOworICAg
IH0KKyAgICBpZiAocmVzdWx0ID09PSAtMSkgeworICAgICAgdGhyb3cgbmV3IEVycm9yKCJUb2tl
biBzdHJlYW0gbm90IHByb2dyZXNzaW5nIik7CisgICAgfQorICAgIGxhc3RDaGFySW5kZXggPSBy
ZXN1bHQ7CisgICAgaW5kZXggKz0gMTsKKyAgfQorCisgIC8vIHJlbWFpbmluZyB0cml2aWEgYXMg
ZW9mCisgIHRva2Vucy5wdXNoKHsKKyAgICB0eXBlOiAiZW9mIiwKKyAgICB2YWx1ZTogIiIsCisg
ICAgdHJpdmlhLAorICB9KTsKKworICByZXR1cm4gdG9rZW5zOworCisgIC8qKgorICAgKiBAcGFy
YW0ge2tleW9mIHR5cGVvZiB0b2tlblJlfSB0eXBlCisgICAqIEBwYXJhbSB7b2JqZWN0fSBvcHRp
b25zCisgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMubm9GbHVzaFRyaXZpYV0KKyAgICov
CisgIGZ1bmN0aW9uIGF0dGVtcHRUb2tlbk1hdGNoKHR5cGUsIHsgbm9GbHVzaFRyaXZpYSB9ID0g
e30pIHsKKyAgICBjb25zdCByZSA9IHRva2VuUmVbdHlwZV07CisgICAgcmUubGFzdEluZGV4ID0g
bGFzdENoYXJJbmRleDsKKyAgICBjb25zdCByZXN1bHQgPSByZS5leGVjKHN0cik7CisgICAgaWYg
KHJlc3VsdCkgeworICAgICAgdG9rZW5zLnB1c2goeyB0eXBlLCB2YWx1ZTogcmVzdWx0WzBdLCB0
cml2aWEsIGxpbmUsIGluZGV4IH0pOworICAgICAgaWYgKCFub0ZsdXNoVHJpdmlhKSB7CisgICAg
ICAgIHRyaXZpYSA9ICIiOworICAgICAgfQorICAgICAgcmV0dXJuIHJlLmxhc3RJbmRleDsKKyAg
ICB9CisgICAgcmV0dXJuIC0xOworICB9Cit9CisKK2NsYXNzIFRva2VuaXNlciB7CisgIC8qKgor
ICAgKiBAcGFyYW0ge3N0cmluZ30gaWRsCisgICAqLworICBjb25zdHJ1Y3RvcihpZGwpIHsKKyAg
ICB0aGlzLnNvdXJjZSA9IHRva2VuaXNlKGlkbCk7CisgICAgdGhpcy5wb3NpdGlvbiA9IDA7Cisg
IH0KKworICAvKioKKyAgICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2UKKyAgICogQHJldHVybiB7
bmV2ZXJ9CisgICAqLworICBlcnJvcihtZXNzYWdlKSB7CisgICAgdGhyb3cgbmV3IFdlYklETFBh
cnNlRXJyb3IoCisgICAgICAoMCxfZXJyb3JfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBf
Xy5zeW50YXhFcnJvcikodGhpcy5zb3VyY2UsIHRoaXMucG9zaXRpb24sIHRoaXMuY3VycmVudCwg
bWVzc2FnZSkKKyAgICApOworICB9CisKKyAgLyoqCisgICAqIEBwYXJhbSB7c3RyaW5nfSB0eXBl
CisgICAqLworICBwcm9iZVR5cGUodHlwZSkgeworICAgIHJldHVybiAoCisgICAgICB0aGlzLnNv
dXJjZS5sZW5ndGggPiB0aGlzLnBvc2l0aW9uICYmCisgICAgICB0aGlzLnNvdXJjZVt0aGlzLnBv
c2l0aW9uXS50eXBlID09PSB0eXBlCisgICAgKTsKKyAgfQorCisgIC8qKgorICAgKiBAcGFyYW0g
e3N0cmluZ30gdmFsdWUKKyAgICovCisgIHByb2JlKHZhbHVlKSB7CisgICAgcmV0dXJuICgKKyAg
ICAgIHRoaXMucHJvYmVUeXBlKCJpbmxpbmUiKSAmJiB0aGlzLnNvdXJjZVt0aGlzLnBvc2l0aW9u
XS52YWx1ZSA9PT0gdmFsdWUKKyAgICApOworICB9CisKKyAgLyoqCisgICAqIEBwYXJhbSAgey4u
LnN0cmluZ30gY2FuZGlkYXRlcworICAgKi8KKyAgY29uc3VtZVR5cGUoLi4uY2FuZGlkYXRlcykg
eworICAgIGZvciAoY29uc3QgdHlwZSBvZiBjYW5kaWRhdGVzKSB7CisgICAgICBpZiAoIXRoaXMu
cHJvYmVUeXBlKHR5cGUpKSBjb250aW51ZTsKKyAgICAgIGNvbnN0IHRva2VuID0gdGhpcy5zb3Vy
Y2VbdGhpcy5wb3NpdGlvbl07CisgICAgICB0aGlzLnBvc2l0aW9uKys7CisgICAgICByZXR1cm4g
dG9rZW47CisgICAgfQorICB9CisKKyAgLyoqCisgICAqIEBwYXJhbSAgey4uLnN0cmluZ30gY2Fu
ZGlkYXRlcworICAgKi8KKyAgY29uc3VtZSguLi5jYW5kaWRhdGVzKSB7CisgICAgaWYgKCF0aGlz
LnByb2JlVHlwZSgiaW5saW5lIikpIHJldHVybjsKKyAgICBjb25zdCB0b2tlbiA9IHRoaXMuc291
cmNlW3RoaXMucG9zaXRpb25dOworICAgIGZvciAoY29uc3QgdmFsdWUgb2YgY2FuZGlkYXRlcykg
eworICAgICAgaWYgKHRva2VuLnZhbHVlICE9PSB2YWx1ZSkgY29udGludWU7CisgICAgICB0aGlz
LnBvc2l0aW9uKys7CisgICAgICByZXR1cm4gdG9rZW47CisgICAgfQorICB9CisKKyAgLyoqCisg
ICAqIEBwYXJhbSB7bnVtYmVyfSBwb3NpdGlvbgorICAgKi8KKyAgdW5jb25zdW1lKHBvc2l0aW9u
KSB7CisgICAgdGhpcy5wb3NpdGlvbiA9IHBvc2l0aW9uOworICB9Cit9CisKK2NsYXNzIFdlYklE
TFBhcnNlRXJyb3IgZXh0ZW5kcyBFcnJvciB7CisgIC8qKgorICAgKiBAcGFyYW0ge29iamVjdH0g
b3B0aW9ucworICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5tZXNzYWdlCisgICAqIEBwYXJh
bSB7c3RyaW5nfSBvcHRpb25zLmJhcmVNZXNzYWdlCisgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRp
b25zLmNvbnRleHQKKyAgICogQHBhcmFtIHtudW1iZXJ9IG9wdGlvbnMubGluZQorICAgKiBAcGFy
YW0geyp9IG9wdGlvbnMuc291cmNlTmFtZQorICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5p
bnB1dAorICAgKiBAcGFyYW0geypbXX0gb3B0aW9ucy50b2tlbnMKKyAgICovCisgIGNvbnN0cnVj
dG9yKHsKKyAgICBtZXNzYWdlLAorICAgIGJhcmVNZXNzYWdlLAorICAgIGNvbnRleHQsCisgICAg
bGluZSwKKyAgICBzb3VyY2VOYW1lLAorICAgIGlucHV0LAorICAgIHRva2VucywKKyAgfSkgewor
ICAgIHN1cGVyKG1lc3NhZ2UpOworCisgICAgdGhpcy5uYW1lID0gIldlYklETFBhcnNlRXJyb3Ii
OyAvLyBub3QgdG8gYmUgbWFuZ2xlZAorICAgIHRoaXMuYmFyZU1lc3NhZ2UgPSBiYXJlTWVzc2Fn
ZTsKKyAgICB0aGlzLmNvbnRleHQgPSBjb250ZXh0OworICAgIHRoaXMubGluZSA9IGxpbmU7Cisg
ICAgdGhpcy5zb3VyY2VOYW1lID0gc291cmNlTmFtZTsKKyAgICB0aGlzLmlucHV0ID0gaW5wdXQ7
CisgICAgdGhpcy50b2tlbnMgPSB0b2tlbnM7CisgIH0KK30KKworCisvKioqLyB9KSwKKy8qIDMg
Ki8KKy8qKiovICgoX191bnVzZWRfd2VicGFja19fX3dlYnBhY2tfbW9kdWxlX18sIF9fd2VicGFj
a19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pID0+IHsKKworX193ZWJwYWNrX3JlcXVp
cmVfXy5yKF9fd2VicGFja19leHBvcnRzX18pOworLyogaGFybW9ueSBleHBvcnQgKi8gX193ZWJw
YWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIHsKKy8qIGhhcm1vbnkgZXhwb3J0
ICovICAgInN5bnRheEVycm9yIjogKCkgPT4gKC8qIGJpbmRpbmcgKi8gc3ludGF4RXJyb3IpLAor
LyogaGFybW9ueSBleHBvcnQgKi8gICAidmFsaWRhdGlvbkVycm9yIjogKCkgPT4gKC8qIGJpbmRp
bmcgKi8gdmFsaWRhdGlvbkVycm9yKQorLyogaGFybW9ueSBleHBvcnQgKi8gfSk7CisvKioKKyAq
IEBwYXJhbSB7c3RyaW5nfSB0ZXh0CisgKi8KK2Z1bmN0aW9uIGxhc3RMaW5lKHRleHQpIHsKKyAg
Y29uc3Qgc3BsaXR0ZWQgPSB0ZXh0LnNwbGl0KCJcbiIpOworICByZXR1cm4gc3BsaXR0ZWRbc3Bs
aXR0ZWQubGVuZ3RoIC0gMV07Cit9CisKK2Z1bmN0aW9uIGFwcGVuZElmRXhpc3QoYmFzZSwgdGFy
Z2V0KSB7CisgIGxldCByZXN1bHQgPSBiYXNlOworICBpZiAodGFyZ2V0KSB7CisgICAgcmVzdWx0
ICs9IGAgJHt0YXJnZXR9YDsKKyAgfQorICByZXR1cm4gcmVzdWx0OworfQogCi0gICAgICAgIHZh
ciBpdGVyYWJsZV90eXBlID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBpZiAoY29uc3VtZShJ
RCwgIml0ZXJhYmxlIikpIHJldHVybiAiaXRlcmFibGUiOwotICAgICAgICAgICAgZWxzZSBpZiAo
Y29uc3VtZShJRCwgImxlZ2FjeWl0ZXJhYmxlIikpIHJldHVybiAibGVnYWN5aXRlcmFibGUiOwot
ICAgICAgICAgICAgZWxzZSBpZiAoY29uc3VtZShJRCwgIm1hcGxpa2UiKSkgcmV0dXJuICJtYXBs
aWtlIjsKLSAgICAgICAgICAgIGVsc2UgaWYgKGNvbnN1bWUoSUQsICJzZXRsaWtlIikpIHJldHVy
biAic2V0bGlrZSI7Ci0gICAgICAgICAgICBlbHNlIHJldHVybjsKK2Z1bmN0aW9uIGNvbnRleHRB
c1RleHQobm9kZSkgeworICBjb25zdCBoaWVyYXJjaHkgPSBbbm9kZV07CisgIHdoaWxlIChub2Rl
ICYmIG5vZGUucGFyZW50KSB7CisgICAgY29uc3QgeyBwYXJlbnQgfSA9IG5vZGU7CisgICAgaGll
cmFyY2h5LnVuc2hpZnQocGFyZW50KTsKKyAgICBub2RlID0gcGFyZW50OworICB9CisgIHJldHVy
biBoaWVyYXJjaHkubWFwKChuKSA9PiBhcHBlbmRJZkV4aXN0KG4udHlwZSwgbi5uYW1lKSkuam9p
bigiIC0+ICIpOworfQorCisvKioKKyAqIEB0eXBlZGVmIHtvYmplY3R9IFdlYklETDJFcnJvck9w
dGlvbnMKKyAqIEBwcm9wZXJ0eSB7ImVycm9yIiB8ICJ3YXJuaW5nIn0gW2xldmVsXQorICogQHBy
b3BlcnR5IHtGdW5jdGlvbn0gW2F1dG9maXhdCisgKgorICogQHBhcmFtIHtzdHJpbmd9IG1lc3Nh
Z2UgZXJyb3IgbWVzc2FnZQorICogQHBhcmFtIHsiU3ludGF4IiB8ICJWYWxpZGF0aW9uIn0ga2lu
ZCBlcnJvciB0eXBlCisgKiBAcGFyYW0ge1dlYklETDJFcnJvck9wdGlvbnN9IFtvcHRpb25zXQor
ICovCitmdW5jdGlvbiBlcnJvcigKKyAgc291cmNlLAorICBwb3NpdGlvbiwKKyAgY3VycmVudCwK
KyAgbWVzc2FnZSwKKyAga2luZCwKKyAgeyBsZXZlbCA9ICJlcnJvciIsIGF1dG9maXgsIHJ1bGVO
YW1lIH0gPSB7fQorKSB7CisgIC8qKgorICAgKiBAcGFyYW0ge251bWJlcn0gY291bnQKKyAgICov
CisgIGZ1bmN0aW9uIHNsaWNlVG9rZW5zKGNvdW50KSB7CisgICAgcmV0dXJuIGNvdW50ID4gMAor
ICAgICAgPyBzb3VyY2Uuc2xpY2UocG9zaXRpb24sIHBvc2l0aW9uICsgY291bnQpCisgICAgICA6
IHNvdXJjZS5zbGljZShNYXRoLm1heChwb3NpdGlvbiArIGNvdW50LCAwKSwgcG9zaXRpb24pOwor
ICB9CisKKyAgZnVuY3Rpb24gdG9rZW5zVG9UZXh0KGlucHV0cywgeyBwcmVjZWRlcyB9ID0ge30p
IHsKKyAgICBjb25zdCB0ZXh0ID0gaW5wdXRzLm1hcCgodCkgPT4gdC50cml2aWEgKyB0LnZhbHVl
KS5qb2luKCIiKTsKKyAgICBjb25zdCBuZXh0VG9rZW4gPSBzb3VyY2VbcG9zaXRpb25dOworICAg
IGlmIChuZXh0VG9rZW4udHlwZSA9PT0gImVvZiIpIHsKKyAgICAgIHJldHVybiB0ZXh0OworICAg
IH0KKyAgICBpZiAocHJlY2VkZXMpIHsKKyAgICAgIHJldHVybiB0ZXh0ICsgbmV4dFRva2VuLnRy
aXZpYTsKKyAgICB9CisgICAgcmV0dXJuIHRleHQuc2xpY2UobmV4dFRva2VuLnRyaXZpYS5sZW5n
dGgpOworICB9CisKKyAgY29uc3QgbWF4VG9rZW5zID0gNTsgLy8gYXJiaXRyYXJ5IGJ1dCB3b3Jr
cyB3ZWxsIGVub3VnaAorICBjb25zdCBsaW5lID0KKyAgICBzb3VyY2VbcG9zaXRpb25dLnR5cGUg
IT09ICJlb2YiCisgICAgICA/IHNvdXJjZVtwb3NpdGlvbl0ubGluZQorICAgICAgOiBzb3VyY2Uu
bGVuZ3RoID4gMQorICAgICAgPyBzb3VyY2VbcG9zaXRpb24gLSAxXS5saW5lCisgICAgICA6IDE7
CisKKyAgY29uc3QgcHJlY2VkaW5nTGFzdExpbmUgPSBsYXN0TGluZSgKKyAgICB0b2tlbnNUb1Rl
eHQoc2xpY2VUb2tlbnMoLW1heFRva2VucyksIHsgcHJlY2VkZXM6IHRydWUgfSkKKyAgKTsKKwor
ICBjb25zdCBzdWJzZXF1ZW50VG9rZW5zID0gc2xpY2VUb2tlbnMobWF4VG9rZW5zKTsKKyAgY29u
c3Qgc3Vic2VxdWVudFRleHQgPSB0b2tlbnNUb1RleHQoc3Vic2VxdWVudFRva2Vucyk7CisgIGNv
bnN0IHN1YnNlcXVlbnRGaXJzdExpbmUgPSBzdWJzZXF1ZW50VGV4dC5zcGxpdCgiXG4iKVswXTsK
KworICBjb25zdCBzcGFjZWQgPSAiICIucmVwZWF0KHByZWNlZGluZ0xhc3RMaW5lLmxlbmd0aCkg
KyAiXiI7CisgIGNvbnN0IHNvdXJjZUNvbnRleHQgPSBwcmVjZWRpbmdMYXN0TGluZSArIHN1YnNl
cXVlbnRGaXJzdExpbmUgKyAiXG4iICsgc3BhY2VkOworCisgIGNvbnN0IGNvbnRleHRUeXBlID0g
a2luZCA9PT0gIlN5bnRheCIgPyAic2luY2UiIDogImluc2lkZSI7CisgIGNvbnN0IGluU291cmNl
TmFtZSA9IHNvdXJjZS5uYW1lID8gYCBpbiAke3NvdXJjZS5uYW1lfWAgOiAiIjsKKyAgY29uc3Qg
Z3JhbW1hdGljYWxDb250ZXh0ID0KKyAgICBjdXJyZW50ICYmIGN1cnJlbnQubmFtZQorICAgICAg
PyBgLCAke2NvbnRleHRUeXBlfSBcYCR7Y3VycmVudC5wYXJ0aWFsID8gInBhcnRpYWwgIiA6ICIi
fSR7Y29udGV4dEFzVGV4dCgKKyAgICAgICAgICBjdXJyZW50CisgICAgICAgICl9XGBgCisgICAg
ICA6ICIiOworICBjb25zdCBjb250ZXh0ID0gYCR7a2luZH0gZXJyb3IgYXQgbGluZSAke2xpbmV9
JHtpblNvdXJjZU5hbWV9JHtncmFtbWF0aWNhbENvbnRleHR9OlxuJHtzb3VyY2VDb250ZXh0fWA7
CisgIHJldHVybiB7CisgICAgbWVzc2FnZTogYCR7Y29udGV4dH0gJHttZXNzYWdlfWAsCisgICAg
YmFyZU1lc3NhZ2U6IG1lc3NhZ2UsCisgICAgY29udGV4dCwKKyAgICBsaW5lLAorICAgIHNvdXJj
ZU5hbWU6IHNvdXJjZS5uYW1lLAorICAgIGxldmVsLAorICAgIHJ1bGVOYW1lLAorICAgIGF1dG9m
aXgsCisgICAgaW5wdXQ6IHN1YnNlcXVlbnRUZXh0LAorICAgIHRva2Vuczogc3Vic2VxdWVudFRv
a2VucywKKyAgfTsKK30KKworLyoqCisgKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZSBlcnJvciBt
ZXNzYWdlCisgKi8KK2Z1bmN0aW9uIHN5bnRheEVycm9yKHNvdXJjZSwgcG9zaXRpb24sIGN1cnJl
bnQsIG1lc3NhZ2UpIHsKKyAgcmV0dXJuIGVycm9yKHNvdXJjZSwgcG9zaXRpb24sIGN1cnJlbnQs
IG1lc3NhZ2UsICJTeW50YXgiKTsKK30KKworLyoqCisgKiBAcGFyYW0ge3N0cmluZ30gbWVzc2Fn
ZSBlcnJvciBtZXNzYWdlCisgKiBAcGFyYW0ge1dlYklETDJFcnJvck9wdGlvbnN9IFtvcHRpb25z
XQorICovCitmdW5jdGlvbiB2YWxpZGF0aW9uRXJyb3IoCisgIHRva2VuLAorICBjdXJyZW50LAor
ICBydWxlTmFtZSwKKyAgbWVzc2FnZSwKKyAgb3B0aW9ucyA9IHt9CispIHsKKyAgb3B0aW9ucy5y
dWxlTmFtZSA9IHJ1bGVOYW1lOworICByZXR1cm4gZXJyb3IoCisgICAgY3VycmVudC5zb3VyY2Us
CisgICAgdG9rZW4uaW5kZXgsCisgICAgY3VycmVudCwKKyAgICBtZXNzYWdlLAorICAgICJWYWxp
ZGF0aW9uIiwKKyAgICBvcHRpb25zCisgICk7Cit9CisKKworLyoqKi8gfSksCisvKiA0ICovCisv
KioqLyAoKF9fdW51c2VkX3dlYnBhY2tfX193ZWJwYWNrX21vZHVsZV9fLCBfX3dlYnBhY2tfZXhw
b3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSA9PiB7CisKK19fd2VicGFja19yZXF1aXJlX18u
cihfX3dlYnBhY2tfZXhwb3J0c19fKTsKKy8qIGhhcm1vbnkgZXhwb3J0ICovIF9fd2VicGFja19y
ZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCB7CisvKiBoYXJtb255IGV4cG9ydCAqLyAg
ICJ1bmVzY2FwZSI6ICgpID0+ICgvKiBiaW5kaW5nICovIHVuZXNjYXBlKSwKKy8qIGhhcm1vbnkg
ZXhwb3J0ICovICAgImxpc3QiOiAoKSA9PiAoLyogYmluZGluZyAqLyBsaXN0KSwKKy8qIGhhcm1v
bnkgZXhwb3J0ICovICAgImNvbnN0X3ZhbHVlIjogKCkgPT4gKC8qIGJpbmRpbmcgKi8gY29uc3Rf
dmFsdWUpLAorLyogaGFybW9ueSBleHBvcnQgKi8gICAiY29uc3RfZGF0YSI6ICgpID0+ICgvKiBi
aW5kaW5nICovIGNvbnN0X2RhdGEpLAorLyogaGFybW9ueSBleHBvcnQgKi8gICAicHJpbWl0aXZl
X3R5cGUiOiAoKSA9PiAoLyogYmluZGluZyAqLyBwcmltaXRpdmVfdHlwZSksCisvKiBoYXJtb255
IGV4cG9ydCAqLyAgICJhcmd1bWVudF9saXN0IjogKCkgPT4gKC8qIGJpbmRpbmcgKi8gYXJndW1l
bnRfbGlzdCksCisvKiBoYXJtb255IGV4cG9ydCAqLyAgICJ0eXBlX3dpdGhfZXh0ZW5kZWRfYXR0
cmlidXRlcyI6ICgpID0+ICgvKiBiaW5kaW5nICovIHR5cGVfd2l0aF9leHRlbmRlZF9hdHRyaWJ1
dGVzKSwKKy8qIGhhcm1vbnkgZXhwb3J0ICovICAgInJldHVybl90eXBlIjogKCkgPT4gKC8qIGJp
bmRpbmcgKi8gcmV0dXJuX3R5cGUpLAorLyogaGFybW9ueSBleHBvcnQgKi8gICAic3RyaW5naWZp
ZXIiOiAoKSA9PiAoLyogYmluZGluZyAqLyBzdHJpbmdpZmllciksCisvKiBoYXJtb255IGV4cG9y
dCAqLyAgICJnZXRMYXN0SW5kZW50YXRpb24iOiAoKSA9PiAoLyogYmluZGluZyAqLyBnZXRMYXN0
SW5kZW50YXRpb24pLAorLyogaGFybW9ueSBleHBvcnQgKi8gICAiZ2V0TWVtYmVySW5kZW50YXRp
b24iOiAoKSA9PiAoLyogYmluZGluZyAqLyBnZXRNZW1iZXJJbmRlbnRhdGlvbiksCisvKiBoYXJt
b255IGV4cG9ydCAqLyAgICJhdXRvZml4QWRkRXhwb3NlZFdpbmRvdyI6ICgpID0+ICgvKiBiaW5k
aW5nICovIGF1dG9maXhBZGRFeHBvc2VkV2luZG93KSwKKy8qIGhhcm1vbnkgZXhwb3J0ICovICAg
ImdldEZpcnN0VG9rZW4iOiAoKSA9PiAoLyogYmluZGluZyAqLyBnZXRGaXJzdFRva2VuKSwKKy8q
IGhhcm1vbnkgZXhwb3J0ICovICAgImZpbmRMYXN0SW5kZXgiOiAoKSA9PiAoLyogYmluZGluZyAq
LyBmaW5kTGFzdEluZGV4KSwKKy8qIGhhcm1vbnkgZXhwb3J0ICovICAgImF1dG9QYXJlbnRlciI6
ICgpID0+ICgvKiBiaW5kaW5nICovIGF1dG9QYXJlbnRlcikKKy8qIGhhcm1vbnkgZXhwb3J0ICov
IH0pOworLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF90eXBlX2pzX19XRUJQQUNLX0lNUE9SVEVE
X01PRFVMRV8wX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpOworLyogaGFybW9ueSBpbXBvcnQg
Ki8gdmFyIF9hcmd1bWVudF9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fID0gX193ZWJw
YWNrX3JlcXVpcmVfXygxMSk7CisvKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2V4dGVuZGVkX2F0
dHJpYnV0ZXNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXyA9IF9fd2VicGFja19yZXF1
aXJlX18oOCk7CisvKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX29wZXJhdGlvbl9qc19fV0VCUEFD
S19JTVBPUlRFRF9NT0RVTEVfM19fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMyk7CisvKiBoYXJt
b255IGltcG9ydCAqLyB2YXIgX2F0dHJpYnV0ZV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVf
NF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNCk7CisvKiBoYXJtb255IGltcG9ydCAqLyB2YXIg
X3Rva2VuaXNlcl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fID0gX193ZWJwYWNrX3Jl
cXVpcmVfXygyKTsKKworCisKKworCisKKworLyoqCisgKiBAcGFyYW0ge3N0cmluZ30gaWRlbnRp
ZmllcgorICovCitmdW5jdGlvbiB1bmVzY2FwZShpZGVudGlmaWVyKSB7CisgIHJldHVybiBpZGVu
dGlmaWVyLnN0YXJ0c1dpdGgoIl8iKSA/IGlkZW50aWZpZXIuc2xpY2UoMSkgOiBpZGVudGlmaWVy
OworfQorCisvKioKKyAqIFBhcnNlcyBjb21tYS1zZXBhcmF0ZWQgbGlzdAorICogQHBhcmFtIHtp
bXBvcnQoIi4uL3Rva2VuaXNlciIpLlRva2VuaXNlcn0gdG9rZW5pc2VyCisgKiBAcGFyYW0ge29i
amVjdH0gYXJncworICogQHBhcmFtIHtGdW5jdGlvbn0gYXJncy5wYXJzZXIgcGFyc2VyIGZ1bmN0
aW9uIGZvciBlYWNoIGl0ZW0KKyAqIEBwYXJhbSB7Ym9vbGVhbn0gW2FyZ3MuYWxsb3dEYW5nbGVy
XSB3aGV0aGVyIHRvIGFsbG93IGRhbmdsaW5nIGNvbW1hCisgKiBAcGFyYW0ge3N0cmluZ30gW2Fy
Z3MubGlzdE5hbWVdIHRoZSBuYW1lIHRvIGJlIHNob3duIG9uIGVycm9yIG1lc3NhZ2VzCisgKi8K
K2Z1bmN0aW9uIGxpc3QodG9rZW5pc2VyLCB7IHBhcnNlciwgYWxsb3dEYW5nbGVyLCBsaXN0TmFt
ZSA9ICJsaXN0IiB9KSB7CisgIGNvbnN0IGZpcnN0ID0gcGFyc2VyKHRva2VuaXNlcik7CisgIGlm
ICghZmlyc3QpIHsKKyAgICByZXR1cm4gW107CisgIH0KKyAgZmlyc3QudG9rZW5zLnNlcGFyYXRv
ciA9IHRva2VuaXNlci5jb25zdW1lKCIsIik7CisgIGNvbnN0IGl0ZW1zID0gW2ZpcnN0XTsKKyAg
d2hpbGUgKGZpcnN0LnRva2Vucy5zZXBhcmF0b3IpIHsKKyAgICBjb25zdCBpdGVtID0gcGFyc2Vy
KHRva2VuaXNlcik7CisgICAgaWYgKCFpdGVtKSB7CisgICAgICBpZiAoIWFsbG93RGFuZ2xlcikg
eworICAgICAgICB0b2tlbmlzZXIuZXJyb3IoYFRyYWlsaW5nIGNvbW1hIGluICR7bGlzdE5hbWV9
YCk7CisgICAgICB9CisgICAgICBicmVhazsKKyAgICB9CisgICAgaXRlbS50b2tlbnMuc2VwYXJh
dG9yID0gdG9rZW5pc2VyLmNvbnN1bWUoIiwiKTsKKyAgICBpdGVtcy5wdXNoKGl0ZW0pOworICAg
IGlmICghaXRlbS50b2tlbnMuc2VwYXJhdG9yKSBicmVhazsKKyAgfQorICByZXR1cm4gaXRlbXM7
Cit9CisKKy8qKgorICogQHBhcmFtIHtpbXBvcnQoIi4uL3Rva2VuaXNlciIpLlRva2VuaXNlcn0g
dG9rZW5pc2VyCisgKi8KK2Z1bmN0aW9uIGNvbnN0X3ZhbHVlKHRva2VuaXNlcikgeworICByZXR1
cm4gKAorICAgIHRva2VuaXNlci5jb25zdW1lVHlwZSgiZGVjaW1hbCIsICJpbnRlZ2VyIikgfHwK
KyAgICB0b2tlbmlzZXIuY29uc3VtZSgidHJ1ZSIsICJmYWxzZSIsICJJbmZpbml0eSIsICItSW5m
aW5pdHkiLCAiTmFOIikKKyAgKTsKK30KKworLyoqCisgKiBAcGFyYW0ge29iamVjdH0gdG9rZW4K
KyAqIEBwYXJhbSB7c3RyaW5nfSB0b2tlbi50eXBlCisgKiBAcGFyYW0ge3N0cmluZ30gdG9rZW4u
dmFsdWUKKyAqLworZnVuY3Rpb24gY29uc3RfZGF0YSh7IHR5cGUsIHZhbHVlIH0pIHsKKyAgc3dp
dGNoICh0eXBlKSB7CisgICAgY2FzZSAiZGVjaW1hbCI6CisgICAgY2FzZSAiaW50ZWdlciI6Cisg
ICAgICByZXR1cm4geyB0eXBlOiAibnVtYmVyIiwgdmFsdWUgfTsKKyAgICBjYXNlICJzdHJpbmci
OgorICAgICAgcmV0dXJuIHsgdHlwZTogInN0cmluZyIsIHZhbHVlOiB2YWx1ZS5zbGljZSgxLCAt
MSkgfTsKKyAgfQorCisgIHN3aXRjaCAodmFsdWUpIHsKKyAgICBjYXNlICJ0cnVlIjoKKyAgICBj
YXNlICJmYWxzZSI6CisgICAgICByZXR1cm4geyB0eXBlOiAiYm9vbGVhbiIsIHZhbHVlOiB2YWx1
ZSA9PT0gInRydWUiIH07CisgICAgY2FzZSAiSW5maW5pdHkiOgorICAgIGNhc2UgIi1JbmZpbml0
eSI6CisgICAgICByZXR1cm4geyB0eXBlOiAiSW5maW5pdHkiLCBuZWdhdGl2ZTogdmFsdWUuc3Rh
cnRzV2l0aCgiLSIpIH07CisgICAgY2FzZSAiWyI6CisgICAgICByZXR1cm4geyB0eXBlOiAic2Vx
dWVuY2UiLCB2YWx1ZTogW10gfTsKKyAgICBjYXNlICJ7IjoKKyAgICAgIHJldHVybiB7IHR5cGU6
ICJkaWN0aW9uYXJ5IiB9OworICAgIGRlZmF1bHQ6CisgICAgICByZXR1cm4geyB0eXBlOiB2YWx1
ZSB9OworICB9Cit9CisKKy8qKgorICogQHBhcmFtIHtpbXBvcnQoIi4uL3Rva2VuaXNlciIpLlRv
a2VuaXNlcn0gdG9rZW5pc2VyCisgKi8KK2Z1bmN0aW9uIHByaW1pdGl2ZV90eXBlKHRva2VuaXNl
cikgeworICBmdW5jdGlvbiBpbnRlZ2VyX3R5cGUoKSB7CisgICAgY29uc3QgcHJlZml4ID0gdG9r
ZW5pc2VyLmNvbnN1bWUoInVuc2lnbmVkIik7CisgICAgY29uc3QgYmFzZSA9IHRva2VuaXNlci5j
b25zdW1lKCJzaG9ydCIsICJsb25nIik7CisgICAgaWYgKGJhc2UpIHsKKyAgICAgIGNvbnN0IHBv
c3RmaXggPSB0b2tlbmlzZXIuY29uc3VtZSgibG9uZyIpOworICAgICAgcmV0dXJuIG5ldyBfdHlw
ZV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fLlR5cGUoeyBzb3VyY2UsIHRva2Vuczog
eyBwcmVmaXgsIGJhc2UsIHBvc3RmaXggfSB9KTsKKyAgICB9CisgICAgaWYgKHByZWZpeCkgdG9r
ZW5pc2VyLmVycm9yKCJGYWlsZWQgdG8gcGFyc2UgaW50ZWdlciB0eXBlIik7CisgIH0KKworICBm
dW5jdGlvbiBkZWNpbWFsX3R5cGUoKSB7CisgICAgY29uc3QgcHJlZml4ID0gdG9rZW5pc2VyLmNv
bnN1bWUoInVucmVzdHJpY3RlZCIpOworICAgIGNvbnN0IGJhc2UgPSB0b2tlbmlzZXIuY29uc3Vt
ZSgiZmxvYXQiLCAiZG91YmxlIik7CisgICAgaWYgKGJhc2UpIHsKKyAgICAgIHJldHVybiBuZXcg
X3R5cGVfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXy5UeXBlKHsgc291cmNlLCB0b2tl
bnM6IHsgcHJlZml4LCBiYXNlIH0gfSk7CisgICAgfQorICAgIGlmIChwcmVmaXgpIHRva2VuaXNl
ci5lcnJvcigiRmFpbGVkIHRvIHBhcnNlIGZsb2F0IHR5cGUiKTsKKyAgfQorCisgIGNvbnN0IHsg
c291cmNlIH0gPSB0b2tlbmlzZXI7CisgIGNvbnN0IG51bV90eXBlID0gaW50ZWdlcl90eXBlKHRv
a2VuaXNlcikgfHwgZGVjaW1hbF90eXBlKHRva2VuaXNlcik7CisgIGlmIChudW1fdHlwZSkgcmV0
dXJuIG51bV90eXBlOworICBjb25zdCBiYXNlID0gdG9rZW5pc2VyLmNvbnN1bWUoCisgICAgImJp
Z2ludCIsCisgICAgImJvb2xlYW4iLAorICAgICJieXRlIiwKKyAgICAib2N0ZXQiLAorICAgICJ1
bmRlZmluZWQiCisgICk7CisgIGlmIChiYXNlKSB7CisgICAgcmV0dXJuIG5ldyBfdHlwZV9qc19f
V0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fLlR5cGUoeyBzb3VyY2UsIHRva2VuczogeyBiYXNl
IH0gfSk7CisgIH0KK30KKworLyoqCisgKiBAcGFyYW0ge2ltcG9ydCgiLi4vdG9rZW5pc2VyIiku
VG9rZW5pc2VyfSB0b2tlbmlzZXIKKyAqLworZnVuY3Rpb24gYXJndW1lbnRfbGlzdCh0b2tlbmlz
ZXIpIHsKKyAgcmV0dXJuIGxpc3QodG9rZW5pc2VyLCB7CisgICAgcGFyc2VyOiBfYXJndW1lbnRf
anNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXy5Bcmd1bWVudC5wYXJzZSwKKyAgICBsaXN0
TmFtZTogImFyZ3VtZW50cyBsaXN0IiwKKyAgfSk7Cit9CisKKy8qKgorICogQHBhcmFtIHtpbXBv
cnQoIi4uL3Rva2VuaXNlciIpLlRva2VuaXNlcn0gdG9rZW5pc2VyCisgKiBAcGFyYW0ge3N0cmlu
Z30gdHlwZU5hbWUKKyAqLworZnVuY3Rpb24gdHlwZV93aXRoX2V4dGVuZGVkX2F0dHJpYnV0ZXMo
dG9rZW5pc2VyLCB0eXBlTmFtZSkgeworICBjb25zdCBleHRBdHRycyA9IF9leHRlbmRlZF9hdHRy
aWJ1dGVzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18uRXh0ZW5kZWRBdHRyaWJ1dGVz
LnBhcnNlKHRva2VuaXNlcik7CisgIGNvbnN0IHJldCA9IF90eXBlX2pzX19XRUJQQUNLX0lNUE9S
VEVEX01PRFVMRV8wX18uVHlwZS5wYXJzZSh0b2tlbmlzZXIsIHR5cGVOYW1lKTsKKyAgaWYgKHJl
dCkgYXV0b1BhcmVudGVyKHJldCkuZXh0QXR0cnMgPSBleHRBdHRyczsKKyAgcmV0dXJuIHJldDsK
K30KKworLyoqCisgKiBAcGFyYW0ge2ltcG9ydCgiLi4vdG9rZW5pc2VyIikuVG9rZW5pc2VyfSB0
b2tlbmlzZXIKKyAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlTmFtZQorICovCitmdW5jdGlvbiByZXR1
cm5fdHlwZSh0b2tlbmlzZXIsIHR5cGVOYW1lKSB7CisgIGNvbnN0IHR5cCA9IF90eXBlX2pzX19X
RUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18uVHlwZS5wYXJzZSh0b2tlbmlzZXIsIHR5cGVOYW1l
IHx8ICJyZXR1cm4tdHlwZSIpOworICBpZiAodHlwKSB7CisgICAgcmV0dXJuIHR5cDsKKyAgfQor
ICBjb25zdCB2b2lkVG9rZW4gPSB0b2tlbmlzZXIuY29uc3VtZSgidm9pZCIpOworICBpZiAodm9p
ZFRva2VuKSB7CisgICAgY29uc3QgcmV0ID0gbmV3IF90eXBlX2pzX19XRUJQQUNLX0lNUE9SVEVE
X01PRFVMRV8wX18uVHlwZSh7CisgICAgICBzb3VyY2U6IHRva2VuaXNlci5zb3VyY2UsCisgICAg
ICB0b2tlbnM6IHsgYmFzZTogdm9pZFRva2VuIH0sCisgICAgfSk7CisgICAgcmV0LnR5cGUgPSAi
cmV0dXJuLXR5cGUiOworICAgIHJldHVybiByZXQ7CisgIH0KK30KKworLyoqCisgKiBAcGFyYW0g
e2ltcG9ydCgiLi4vdG9rZW5pc2VyIikuVG9rZW5pc2VyfSB0b2tlbmlzZXIKKyAqLworZnVuY3Rp
b24gc3RyaW5naWZpZXIodG9rZW5pc2VyKSB7CisgIGNvbnN0IHNwZWNpYWwgPSB0b2tlbmlzZXIu
Y29uc3VtZSgic3RyaW5naWZpZXIiKTsKKyAgaWYgKCFzcGVjaWFsKSByZXR1cm47CisgIGNvbnN0
IG1lbWJlciA9CisgICAgX2F0dHJpYnV0ZV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9f
LkF0dHJpYnV0ZS5wYXJzZSh0b2tlbmlzZXIsIHsgc3BlY2lhbCB9KSB8fAorICAgIF9vcGVyYXRp
b25fanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfXy5PcGVyYXRpb24ucGFyc2UodG9rZW5p
c2VyLCB7IHNwZWNpYWwgfSkgfHwKKyAgICB0b2tlbmlzZXIuZXJyb3IoIlVudGVybWluYXRlZCBz
dHJpbmdpZmllciIpOworICByZXR1cm4gbWVtYmVyOworfQorCisvKioKKyAqIEBwYXJhbSB7c3Ry
aW5nfSBzdHIKKyAqLworZnVuY3Rpb24gZ2V0TGFzdEluZGVudGF0aW9uKHN0cikgeworICBjb25z
dCBsaW5lcyA9IHN0ci5zcGxpdCgiXG4iKTsKKyAgLy8gdGhlIGZpcnN0IGxpbmUgdmlzdWFsbHkg
YmluZHMgdG8gdGhlIHByZWNlZGluZyB0b2tlbgorICBpZiAobGluZXMubGVuZ3RoKSB7CisgICAg
Y29uc3QgbWF0Y2ggPSBsaW5lc1tsaW5lcy5sZW5ndGggLSAxXS5tYXRjaCgvXlxzKy8pOworICAg
IGlmIChtYXRjaCkgeworICAgICAgcmV0dXJuIG1hdGNoWzBdOworICAgIH0KKyAgfQorICByZXR1
cm4gIiI7Cit9CisKKy8qKgorICogQHBhcmFtIHtzdHJpbmd9IHBhcmVudFRyaXZpYQorICovCitm
dW5jdGlvbiBnZXRNZW1iZXJJbmRlbnRhdGlvbihwYXJlbnRUcml2aWEpIHsKKyAgY29uc3QgaW5k
ZW50YXRpb24gPSBnZXRMYXN0SW5kZW50YXRpb24ocGFyZW50VHJpdmlhKTsKKyAgY29uc3QgaW5k
ZW50Q2ggPSBpbmRlbnRhdGlvbi5pbmNsdWRlcygiXHQiKSA/ICJcdCIgOiAiICAiOworICByZXR1
cm4gaW5kZW50YXRpb24gKyBpbmRlbnRDaDsKK30KKworLyoqCisgKiBAcGFyYW0ge29iamVjdH0g
ZGVmCisgKiBAcGFyYW0ge2ltcG9ydCgiLi9leHRlbmRlZC1hdHRyaWJ1dGVzLmpzIikuRXh0ZW5k
ZWRBdHRyaWJ1dGVzfSBkZWYuZXh0QXR0cnMKKyAqLworZnVuY3Rpb24gYXV0b2ZpeEFkZEV4cG9z
ZWRXaW5kb3coZGVmKSB7CisgIHJldHVybiAoKSA9PiB7CisgICAgaWYgKGRlZi5leHRBdHRycy5s
ZW5ndGgpIHsKKyAgICAgIGNvbnN0IHRva2VuaXNlciA9IG5ldyBfdG9rZW5pc2VyX2pzX19XRUJQ
QUNLX0lNUE9SVEVEX01PRFVMRV81X18uVG9rZW5pc2VyKCJFeHBvc2VkPVdpbmRvdywiKTsKKyAg
ICAgIGNvbnN0IGV4cG9zZWQgPSBfZXh0ZW5kZWRfYXR0cmlidXRlc19qc19fV0VCUEFDS19JTVBP
UlRFRF9NT0RVTEVfMl9fLlNpbXBsZUV4dGVuZGVkQXR0cmlidXRlLnBhcnNlKHRva2VuaXNlcik7
CisgICAgICBleHBvc2VkLnRva2Vucy5zZXBhcmF0b3IgPSB0b2tlbmlzZXIuY29uc3VtZSgiLCIp
OworICAgICAgY29uc3QgZXhpc3RpbmcgPSBkZWYuZXh0QXR0cnNbMF07CisgICAgICBpZiAoIS9e
XHMvLnRlc3QoZXhpc3RpbmcudG9rZW5zLm5hbWUudHJpdmlhKSkgeworICAgICAgICBleGlzdGlu
Zy50b2tlbnMubmFtZS50cml2aWEgPSBgICR7ZXhpc3RpbmcudG9rZW5zLm5hbWUudHJpdmlhfWA7
CisgICAgICB9CisgICAgICBkZWYuZXh0QXR0cnMudW5zaGlmdChleHBvc2VkKTsKKyAgICB9IGVs
c2UgeworICAgICAgYXV0b1BhcmVudGVyKGRlZikuZXh0QXR0cnMgPSBfZXh0ZW5kZWRfYXR0cmli
dXRlc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fLkV4dGVuZGVkQXR0cmlidXRlcy5w
YXJzZSgKKyAgICAgICAgbmV3IF90b2tlbmlzZXJfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxF
XzVfXy5Ub2tlbmlzZXIoIltFeHBvc2VkPVdpbmRvd10iKQorICAgICAgKTsKKyAgICAgIGNvbnN0
IHRyaXZpYSA9IGRlZi50b2tlbnMuYmFzZS50cml2aWE7CisgICAgICBkZWYuZXh0QXR0cnMudG9r
ZW5zLm9wZW4udHJpdmlhID0gdHJpdmlhOworICAgICAgZGVmLnRva2Vucy5iYXNlLnRyaXZpYSA9
IGBcbiR7Z2V0TGFzdEluZGVudGF0aW9uKHRyaXZpYSl9YDsKKyAgICB9CisgIH07Cit9CisKKy8q
KgorICogR2V0IHRoZSBmaXJzdCBzeW50YXggdG9rZW4gZm9yIHRoZSBnaXZlbiBJREwgb2JqZWN0
LgorICogQHBhcmFtIHsqfSBkYXRhCisgKi8KK2Z1bmN0aW9uIGdldEZpcnN0VG9rZW4oZGF0YSkg
eworICBpZiAoZGF0YS5leHRBdHRycy5sZW5ndGgpIHsKKyAgICByZXR1cm4gZGF0YS5leHRBdHRy
cy50b2tlbnMub3BlbjsKKyAgfQorICBpZiAoZGF0YS50eXBlID09PSAib3BlcmF0aW9uIiAmJiAh
ZGF0YS5zcGVjaWFsKSB7CisgICAgcmV0dXJuIGdldEZpcnN0VG9rZW4oZGF0YS5pZGxUeXBlKTsK
KyAgfQorICBjb25zdCB0b2tlbnMgPSBPYmplY3QudmFsdWVzKGRhdGEudG9rZW5zKS5zb3J0KCh4
LCB5KSA9PiB4LmluZGV4IC0geS5pbmRleCk7CisgIHJldHVybiB0b2tlbnNbMF07Cit9CisKKy8q
KgorICogQHRlbXBsYXRlIFQKKyAqIEBwYXJhbSB7VFtdfSBhcnJheQorICogQHBhcmFtIHsoaXRl
bTogVCkgPT4gYm9vbGVhbn0gcHJlZGljYXRlCisgKi8KK2Z1bmN0aW9uIGZpbmRMYXN0SW5kZXgo
YXJyYXksIHByZWRpY2F0ZSkgeworICBjb25zdCBpbmRleCA9IGFycmF5LnNsaWNlKCkucmV2ZXJz
ZSgpLmZpbmRJbmRleChwcmVkaWNhdGUpOworICBpZiAoaW5kZXggPT09IC0xKSB7CisgICAgcmV0
dXJuIGluZGV4OworICB9CisgIHJldHVybiBhcnJheS5sZW5ndGggLSBpbmRleCAtIDE7Cit9CisK
Ky8qKgorICogUmV0dXJucyBhIHByb3h5IHRoYXQgYXV0by1hc3NpZ24gYHBhcmVudGAgZmllbGQu
CisgKiBAdGVtcGxhdGUgVAorICogQHBhcmFtIHtUfSBkYXRhCisgKiBAcGFyYW0geyp9IFtwYXJl
bnRdIFRoZSBvYmplY3QgdGhhdCB3aWxsIGJlIGFzc2lnbmVkIHRvIGBwYXJlbnRgLgorICogICAg
ICAgICAgICAgICAgICAgICBJZiBhYnNlbnQsIGl0IHdpbGwgYmUgYGRhdGFgIGJ5IGRlZmF1bHQu
CisgKiBAcmV0dXJuIHtUfQorICovCitmdW5jdGlvbiBhdXRvUGFyZW50ZXIoZGF0YSwgcGFyZW50
KSB7CisgIGlmICghcGFyZW50KSB7CisgICAgLy8gRGVmYXVsdHMgdG8gYGRhdGFgIHVubGVzcyBz
cGVjaWZpZWQgb3RoZXJ3aXNlLgorICAgIHBhcmVudCA9IGRhdGE7CisgIH0KKyAgaWYgKCFkYXRh
KSB7CisgICAgLy8gVGhpcyBhbGxvd3MgYGF1dG9QYXJlbnRlcih1bmRlZmluZWQpYCB3aGljaCBh
Z2FpbiBhbGxvd3MKKyAgICAvLyBgYXV0b1BhcmVudGVyKHBhcnNlKCkpYCB3aGVyZSB0aGUgZnVu
Y3Rpb24gbWF5IHJldHVybiBub3RoaW5nLgorICAgIHJldHVybiBkYXRhOworICB9CisgIHJldHVy
biBuZXcgUHJveHkoZGF0YSwgeworICAgIGdldCh0YXJnZXQsIHApIHsKKyAgICAgIGNvbnN0IHZh
bHVlID0gdGFyZ2V0W3BdOworICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7CisgICAg
ICAgIC8vIFdyYXBzIHRoZSBhcnJheSBzbyB0aGF0IGFueSBhZGRlZCBpdGVtcyB3aWxsIGFsc28g
YXV0b21hdGljYWxseQorICAgICAgICAvLyBnZXQgdGhlaXIgYHBhcmVudGAgdmFsdWVzLgorICAg
ICAgICByZXR1cm4gYXV0b1BhcmVudGVyKHZhbHVlLCB0YXJnZXQpOworICAgICAgfQorICAgICAg
cmV0dXJuIHZhbHVlOworICAgIH0sCisgICAgc2V0KHRhcmdldCwgcCwgdmFsdWUpIHsKKyAgICAg
IHRhcmdldFtwXSA9IHZhbHVlOworICAgICAgaWYgKCF2YWx1ZSkgeworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHsKKyAgICAgICAg
Ly8gQXNzaWduaW5nIGFuIGFycmF5IHdpbGwgYWRkIGBwYXJlbnRgIHRvIGl0cyBpdGVtcy4KKyAg
ICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHZhbHVlKSB7CisgICAgICAgICAgaWYgKHR5cGVvZiBp
dGVtLnBhcmVudCAhPT0gInVuZGVmaW5lZCIpIHsKKyAgICAgICAgICAgIGl0ZW0ucGFyZW50ID0g
cGFyZW50OworICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAgfSBlbHNlIGlmICh0eXBlb2Yg
dmFsdWUucGFyZW50ICE9PSAidW5kZWZpbmVkIikgeworICAgICAgICB2YWx1ZS5wYXJlbnQgPSBw
YXJlbnQ7CisgICAgICB9CisgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9LAorICB9KTsKK30KKwor
CisvKioqLyB9KSwKKy8qIDUgKi8KKy8qKiovICgoX191bnVzZWRfd2VicGFja19fX3dlYnBhY2tf
bW9kdWxlX18sIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pID0+IHsK
KworX193ZWJwYWNrX3JlcXVpcmVfXy5yKF9fd2VicGFja19leHBvcnRzX18pOworLyogaGFybW9u
eSBleHBvcnQgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIHsK
Ky8qIGhhcm1vbnkgZXhwb3J0ICovICAgIlR5cGUiOiAoKSA9PiAoLyogYmluZGluZyAqLyBUeXBl
KQorLyogaGFybW9ueSBleHBvcnQgKi8gfSk7CisvKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2Jh
c2VfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyA9IF9fd2VicGFja19yZXF1aXJlX18o
Nik7CisvKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JU
RURfTU9EVUxFXzFfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7CisvKiBoYXJtb255IGltcG9y
dCAqLyB2YXIgX3Rva2VuaXNlcl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fID0gX193
ZWJwYWNrX3JlcXVpcmVfXygyKTsKKy8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfZXJyb3JfanNf
X1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7Cisv
KiBoYXJtb255IGltcG9ydCAqLyB2YXIgX3ZhbGlkYXRvcnNfaGVscGVyc19qc19fV0VCUEFDS19J
TVBPUlRFRF9NT0RVTEVfNF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3KTsKKy8qIGhhcm1vbnkg
aW1wb3J0ICovIHZhciBfZXh0ZW5kZWRfYXR0cmlidXRlc19qc19fV0VCUEFDS19JTVBPUlRFRF9N
T0RVTEVfNV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4KTsKKworCisKKworCisKKworLyoqCisg
KiBAcGFyYW0ge2ltcG9ydCgiLi4vdG9rZW5pc2VyIikuVG9rZW5pc2VyfSB0b2tlbmlzZXIKKyAq
IEBwYXJhbSB7c3RyaW5nfSB0eXBlTmFtZQorICovCitmdW5jdGlvbiBnZW5lcmljX3R5cGUodG9r
ZW5pc2VyLCB0eXBlTmFtZSkgeworICBjb25zdCBiYXNlID0gdG9rZW5pc2VyLmNvbnN1bWUoCisg
ICAgIkZyb3plbkFycmF5IiwKKyAgICAiT2JzZXJ2YWJsZUFycmF5IiwKKyAgICAiUHJvbWlzZSIs
CisgICAgInNlcXVlbmNlIiwKKyAgICAicmVjb3JkIgorICApOworICBpZiAoIWJhc2UpIHsKKyAg
ICByZXR1cm47CisgIH0KKyAgY29uc3QgcmV0ID0gKDAsX2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1Q
T1JURURfTU9EVUxFXzFfXy5hdXRvUGFyZW50ZXIpKAorICAgIG5ldyBUeXBlKHsgc291cmNlOiB0
b2tlbmlzZXIuc291cmNlLCB0b2tlbnM6IHsgYmFzZSB9IH0pCisgICk7CisgIHJldC50b2tlbnMu
b3BlbiA9CisgICAgdG9rZW5pc2VyLmNvbnN1bWUoIjwiKSB8fAorICAgIHRva2VuaXNlci5lcnJv
cihgTm8gb3BlbmluZyBicmFja2V0IGFmdGVyICR7YmFzZS52YWx1ZX1gKTsKKyAgc3dpdGNoIChi
YXNlLnZhbHVlKSB7CisgICAgY2FzZSAiUHJvbWlzZSI6IHsKKyAgICAgIGlmICh0b2tlbmlzZXIu
cHJvYmUoIlsiKSkKKyAgICAgICAgdG9rZW5pc2VyLmVycm9yKCJQcm9taXNlIHR5cGUgY2Fubm90
IGhhdmUgZXh0ZW5kZWQgYXR0cmlidXRlIik7CisgICAgICBjb25zdCBzdWJ0eXBlID0KKyAgICAg
ICAgKDAsX2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXy5yZXR1cm5fdHlw
ZSkodG9rZW5pc2VyLCB0eXBlTmFtZSkgfHwKKyAgICAgICAgdG9rZW5pc2VyLmVycm9yKCJNaXNz
aW5nIFByb21pc2Ugc3VidHlwZSIpOworICAgICAgcmV0LnN1YnR5cGUucHVzaChzdWJ0eXBlKTsK
KyAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlICJzZXF1ZW5jZSI6CisgICAgY2FzZSAiRnJv
emVuQXJyYXkiOgorICAgIGNhc2UgIk9ic2VydmFibGVBcnJheSI6IHsKKyAgICAgIGNvbnN0IHN1
YnR5cGUgPQorICAgICAgICAoMCxfaGVscGVyc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVf
MV9fLnR5cGVfd2l0aF9leHRlbmRlZF9hdHRyaWJ1dGVzKSh0b2tlbmlzZXIsIHR5cGVOYW1lKSB8
fAorICAgICAgICB0b2tlbmlzZXIuZXJyb3IoYE1pc3NpbmcgJHtiYXNlLnZhbHVlfSBzdWJ0eXBl
YCk7CisgICAgICByZXQuc3VidHlwZS5wdXNoKHN1YnR5cGUpOworICAgICAgYnJlYWs7CisgICAg
fQorICAgIGNhc2UgInJlY29yZCI6IHsKKyAgICAgIGlmICh0b2tlbmlzZXIucHJvYmUoIlsiKSkK
KyAgICAgICAgdG9rZW5pc2VyLmVycm9yKCJSZWNvcmQga2V5IGNhbm5vdCBoYXZlIGV4dGVuZGVk
IGF0dHJpYnV0ZSIpOworICAgICAgY29uc3Qga2V5VHlwZSA9CisgICAgICAgIHRva2VuaXNlci5j
b25zdW1lKC4uLl90b2tlbmlzZXJfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXy5zdHJp
bmdUeXBlcykgfHwKKyAgICAgICAgdG9rZW5pc2VyLmVycm9yKGBSZWNvcmQga2V5IG11c3QgYmUg
b25lIG9mOiAke190b2tlbmlzZXJfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXy5zdHJp
bmdUeXBlcy5qb2luKCIsICIpfWApOworICAgICAgY29uc3Qga2V5SWRsVHlwZSA9IG5ldyBUeXBl
KHsKKyAgICAgICAgc291cmNlOiB0b2tlbmlzZXIuc291cmNlLAorICAgICAgICB0b2tlbnM6IHsg
YmFzZToga2V5VHlwZSB9LAorICAgICAgfSk7CisgICAgICBrZXlJZGxUeXBlLnRva2Vucy5zZXBh
cmF0b3IgPQorICAgICAgICB0b2tlbmlzZXIuY29uc3VtZSgiLCIpIHx8CisgICAgICAgIHRva2Vu
aXNlci5lcnJvcigiTWlzc2luZyBjb21tYSBhZnRlciByZWNvcmQga2V5IHR5cGUiKTsKKyAgICAg
IGtleUlkbFR5cGUudHlwZSA9IHR5cGVOYW1lOworICAgICAgY29uc3QgdmFsdWVUeXBlID0KKyAg
ICAgICAgKDAsX2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXy50eXBlX3dp
dGhfZXh0ZW5kZWRfYXR0cmlidXRlcykodG9rZW5pc2VyLCB0eXBlTmFtZSkgfHwKKyAgICAgICAg
dG9rZW5pc2VyLmVycm9yKCJFcnJvciBwYXJzaW5nIGdlbmVyaWMgdHlwZSByZWNvcmQiKTsKKyAg
ICAgIHJldC5zdWJ0eXBlLnB1c2goa2V5SWRsVHlwZSwgdmFsdWVUeXBlKTsKKyAgICAgIGJyZWFr
OworICAgIH0KKyAgfQorICBpZiAoIXJldC5pZGxUeXBlKSB0b2tlbmlzZXIuZXJyb3IoYEVycm9y
IHBhcnNpbmcgZ2VuZXJpYyB0eXBlICR7YmFzZS52YWx1ZX1gKTsKKyAgcmV0LnRva2Vucy5jbG9z
ZSA9CisgICAgdG9rZW5pc2VyLmNvbnN1bWUoIj4iKSB8fAorICAgIHRva2VuaXNlci5lcnJvcihg
TWlzc2luZyBjbG9zaW5nIGJyYWNrZXQgYWZ0ZXIgJHtiYXNlLnZhbHVlfWApOworICByZXR1cm4g
cmV0LnRoaXM7Cit9CisKKy8qKgorICogQHBhcmFtIHtpbXBvcnQoIi4uL3Rva2VuaXNlciIpLlRv
a2VuaXNlcn0gdG9rZW5pc2VyCisgKi8KK2Z1bmN0aW9uIHR5cGVfc3VmZml4KHRva2VuaXNlciwg
b2JqKSB7CisgIGNvbnN0IG51bGxhYmxlID0gdG9rZW5pc2VyLmNvbnN1bWUoIj8iKTsKKyAgaWYg
KG51bGxhYmxlKSB7CisgICAgb2JqLnRva2Vucy5udWxsYWJsZSA9IG51bGxhYmxlOworICB9Cisg
IGlmICh0b2tlbmlzZXIucHJvYmUoIj8iKSkgdG9rZW5pc2VyLmVycm9yKCJDYW4ndCBudWxsYWJs
ZSBtb3JlIHRoYW4gb25jZSIpOworfQorCisvKioKKyAqIEBwYXJhbSB7aW1wb3J0KCIuLi90b2tl
bmlzZXIiKS5Ub2tlbmlzZXJ9IHRva2VuaXNlcgorICogQHBhcmFtIHtzdHJpbmd9IHR5cGVOYW1l
CisgKi8KK2Z1bmN0aW9uIHNpbmdsZV90eXBlKHRva2VuaXNlciwgdHlwZU5hbWUpIHsKKyAgbGV0
IHJldCA9IGdlbmVyaWNfdHlwZSh0b2tlbmlzZXIsIHR5cGVOYW1lKSB8fCAoMCxfaGVscGVyc19q
c19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fLnByaW1pdGl2ZV90eXBlKSh0b2tlbmlzZXIp
OworICBpZiAoIXJldCkgeworICAgIGNvbnN0IGJhc2UgPQorICAgICAgdG9rZW5pc2VyLmNvbnN1
bWVUeXBlKCJpZGVudGlmaWVyIikgfHwKKyAgICAgIHRva2VuaXNlci5jb25zdW1lKC4uLl90b2tl
bmlzZXJfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXy5zdHJpbmdUeXBlcywgLi4uX3Rv
a2VuaXNlcl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fLnR5cGVOYW1lS2V5d29yZHMp
OworICAgIGlmICghYmFzZSkgeworICAgICAgcmV0dXJuOworICAgIH0KKyAgICByZXQgPSBuZXcg
VHlwZSh7IHNvdXJjZTogdG9rZW5pc2VyLnNvdXJjZSwgdG9rZW5zOiB7IGJhc2UgfSB9KTsKKyAg
ICBpZiAodG9rZW5pc2VyLnByb2JlKCI8IikpCisgICAgICB0b2tlbmlzZXIuZXJyb3IoYFVuc3Vw
cG9ydGVkIGdlbmVyaWMgdHlwZSAke2Jhc2UudmFsdWV9YCk7CisgIH0KKyAgaWYgKHJldC5nZW5l
cmljID09PSAiUHJvbWlzZSIgJiYgdG9rZW5pc2VyLnByb2JlKCI/IikpIHsKKyAgICB0b2tlbmlz
ZXIuZXJyb3IoIlByb21pc2UgdHlwZSBjYW5ub3QgYmUgbnVsbGFibGUiKTsKKyAgfQorICByZXQu
dHlwZSA9IHR5cGVOYW1lIHx8IG51bGw7CisgIHR5cGVfc3VmZml4KHRva2VuaXNlciwgcmV0KTsK
KyAgaWYgKHJldC5udWxsYWJsZSAmJiByZXQuaWRsVHlwZSA9PT0gImFueSIpCisgICAgdG9rZW5p
c2VyLmVycm9yKCJUeXBlIGBhbnlgIGNhbm5vdCBiZSBtYWRlIG51bGxhYmxlIik7CisgIHJldHVy
biByZXQ7Cit9CiAKLSAgICAgICAgdmFyIHJlYWRvbmx5X2l0ZXJhYmxlX3R5cGUgPSBmdW5jdGlv
bigpIHsKLSAgICAgICAgICAgIGlmIChjb25zdW1lKElELCAibWFwbGlrZSIpKSByZXR1cm4gIm1h
cGxpa2UiOwotICAgICAgICAgICAgZWxzZSBpZiAoY29uc3VtZShJRCwgInNldGxpa2UiKSkgcmV0
dXJuICJzZXRsaWtlIjsKLSAgICAgICAgICAgIGVsc2UgcmV0dXJuOworLyoqCisgKiBAcGFyYW0g
e2ltcG9ydCgiLi4vdG9rZW5pc2VyIikuVG9rZW5pc2VyfSB0b2tlbmlzZXIKKyAqIEBwYXJhbSB7
c3RyaW5nfSB0eXBlCisgKi8KK2Z1bmN0aW9uIHVuaW9uX3R5cGUodG9rZW5pc2VyLCB0eXBlKSB7
CisgIGNvbnN0IHRva2VucyA9IHt9OworICB0b2tlbnMub3BlbiA9IHRva2VuaXNlci5jb25zdW1l
KCIoIik7CisgIGlmICghdG9rZW5zLm9wZW4pIHJldHVybjsKKyAgY29uc3QgcmV0ID0gKDAsX2hl
bHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXy5hdXRvUGFyZW50ZXIpKG5ldyBU
eXBlKHsgc291cmNlOiB0b2tlbmlzZXIuc291cmNlLCB0b2tlbnMgfSkpOworICByZXQudHlwZSA9
IHR5cGUgfHwgbnVsbDsKKyAgd2hpbGUgKHRydWUpIHsKKyAgICBjb25zdCB0eXAgPQorICAgICAg
KDAsX2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXy50eXBlX3dpdGhfZXh0
ZW5kZWRfYXR0cmlidXRlcykodG9rZW5pc2VyKSB8fAorICAgICAgdG9rZW5pc2VyLmVycm9yKCJO
byB0eXBlIGFmdGVyIG9wZW4gcGFyZW50aGVzaXMgb3IgJ29yJyBpbiB1bmlvbiB0eXBlIik7Cisg
ICAgaWYgKHR5cC5pZGxUeXBlID09PSAiYW55IikKKyAgICAgIHRva2VuaXNlci5lcnJvcigiVHlw
ZSBgYW55YCBjYW5ub3QgYmUgaW5jbHVkZWQgaW4gYSB1bmlvbiB0eXBlIik7CisgICAgaWYgKHR5
cC5nZW5lcmljID09PSAiUHJvbWlzZSIpCisgICAgICB0b2tlbmlzZXIuZXJyb3IoIlR5cGUgYFBy
b21pc2VgIGNhbm5vdCBiZSBpbmNsdWRlZCBpbiBhIHVuaW9uIHR5cGUiKTsKKyAgICByZXQuc3Vi
dHlwZS5wdXNoKHR5cCk7CisgICAgY29uc3Qgb3IgPSB0b2tlbmlzZXIuY29uc3VtZSgib3IiKTsK
KyAgICBpZiAob3IpIHsKKyAgICAgIHR5cC50b2tlbnMuc2VwYXJhdG9yID0gb3I7CisgICAgfSBl
bHNlIGJyZWFrOworICB9CisgIGlmIChyZXQuaWRsVHlwZS5sZW5ndGggPCAyKSB7CisgICAgdG9r
ZW5pc2VyLmVycm9yKAorICAgICAgIkF0IGxlYXN0IHR3byB0eXBlcyBhcmUgZXhwZWN0ZWQgaW4g
YSB1bmlvbiB0eXBlIGJ1dCBmb3VuZCBsZXNzIgorICAgICk7CisgIH0KKyAgdG9rZW5zLmNsb3Nl
ID0KKyAgICB0b2tlbmlzZXIuY29uc3VtZSgiKSIpIHx8IHRva2VuaXNlci5lcnJvcigiVW50ZXJt
aW5hdGVkIHVuaW9uIHR5cGUiKTsKKyAgdHlwZV9zdWZmaXgodG9rZW5pc2VyLCByZXQpOworICBy
ZXR1cm4gcmV0LnRoaXM7Cit9CisKK2NsYXNzIFR5cGUgZXh0ZW5kcyBfYmFzZV9qc19fV0VCUEFD
S19JTVBPUlRFRF9NT0RVTEVfMF9fLkJhc2UgeworICAvKioKKyAgICogQHBhcmFtIHtpbXBvcnQo
Ii4uL3Rva2VuaXNlciIpLlRva2VuaXNlcn0gdG9rZW5pc2VyCisgICAqIEBwYXJhbSB7c3RyaW5n
fSB0eXBlTmFtZQorICAgKi8KKyAgc3RhdGljIHBhcnNlKHRva2VuaXNlciwgdHlwZU5hbWUpIHsK
KyAgICByZXR1cm4gc2luZ2xlX3R5cGUodG9rZW5pc2VyLCB0eXBlTmFtZSkgfHwgdW5pb25fdHlw
ZSh0b2tlbmlzZXIsIHR5cGVOYW1lKTsKKyAgfQorCisgIGNvbnN0cnVjdG9yKHsgc291cmNlLCB0
b2tlbnMgfSkgeworICAgIHN1cGVyKHsgc291cmNlLCB0b2tlbnMgfSk7CisgICAgT2JqZWN0LmRl
ZmluZVByb3BlcnR5KHRoaXMsICJzdWJ0eXBlIiwgeyB2YWx1ZTogW10sIHdyaXRhYmxlOiB0cnVl
IH0pOworICAgIHRoaXMuZXh0QXR0cnMgPSBuZXcgX2V4dGVuZGVkX2F0dHJpYnV0ZXNfanNfX1dF
QlBBQ0tfSU1QT1JURURfTU9EVUxFXzVfXy5FeHRlbmRlZEF0dHJpYnV0ZXMoe30pOworICB9CisK
KyAgZ2V0IGdlbmVyaWMoKSB7CisgICAgaWYgKHRoaXMuc3VidHlwZS5sZW5ndGggJiYgdGhpcy50
b2tlbnMuYmFzZSkgeworICAgICAgcmV0dXJuIHRoaXMudG9rZW5zLmJhc2UudmFsdWU7CisgICAg
fQorICAgIHJldHVybiAiIjsKKyAgfQorICBnZXQgbnVsbGFibGUoKSB7CisgICAgcmV0dXJuIEJv
b2xlYW4odGhpcy50b2tlbnMubnVsbGFibGUpOworICB9CisgIGdldCB1bmlvbigpIHsKKyAgICBy
ZXR1cm4gQm9vbGVhbih0aGlzLnN1YnR5cGUubGVuZ3RoKSAmJiAhdGhpcy50b2tlbnMuYmFzZTsK
KyAgfQorICBnZXQgaWRsVHlwZSgpIHsKKyAgICBpZiAodGhpcy5zdWJ0eXBlLmxlbmd0aCkgewor
ICAgICAgcmV0dXJuIHRoaXMuc3VidHlwZTsKKyAgICB9CisgICAgLy8gQWRkaW5nIHByZWZpeGVz
L3Bvc3RmaXhlcyBmb3IgInVucmVzdHJpY3RlZCBmbG9hdCIsIGV0Yy4KKyAgICBjb25zdCBuYW1l
ID0gW3RoaXMudG9rZW5zLnByZWZpeCwgdGhpcy50b2tlbnMuYmFzZSwgdGhpcy50b2tlbnMucG9z
dGZpeF0KKyAgICAgIC5maWx0ZXIoKHQpID0+IHQpCisgICAgICAubWFwKCh0KSA9PiB0LnZhbHVl
KQorICAgICAgLmpvaW4oIiAiKTsKKyAgICByZXR1cm4gKDAsX2hlbHBlcnNfanNfX1dFQlBBQ0tf
SU1QT1JURURfTU9EVUxFXzFfXy51bmVzY2FwZSkobmFtZSk7CisgIH0KKworICAqdmFsaWRhdGUo
ZGVmcykgeworICAgIHlpZWxkKiB0aGlzLmV4dEF0dHJzLnZhbGlkYXRlKGRlZnMpOworCisgICAg
aWYgKHRoaXMuaWRsVHlwZSA9PT0gInZvaWQiKSB7CisgICAgICBjb25zdCBtZXNzYWdlID0gYFxg
dm9pZFxgIGlzIG5vdyByZXBsYWNlZCBieSBcYHVuZGVmaW5lZFxgLiBSZWZlciB0byB0aGUgXAor
W3JlbGV2YW50IEdpdEh1YiBpc3N1ZV0oaHR0cHM6Ly9naXRodWIuY29tL2hleWNhbS93ZWJpZGwv
aXNzdWVzLzYwKSBcCitmb3IgbW9yZSBpbmZvcm1hdGlvbi5gOworICAgICAgeWllbGQgKDAsX2Vy
cm9yX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX18udmFsaWRhdGlvbkVycm9yKSh0aGlz
LnRva2Vucy5iYXNlLCB0aGlzLCAicmVwbGFjZS12b2lkIiwgbWVzc2FnZSwgeworICAgICAgICBh
dXRvZml4OiByZXBsYWNlVm9pZCh0aGlzKSwKKyAgICAgIH0pOworICAgIH0KKworICAgIC8qCisg
ICAgICogSWYgYSB1bmlvbiBpcyBudWxsYWJsZSwgaXRzIHN1YnVuaW9ucyBjYW5ub3QgaW5jbHVk
ZSBhIGRpY3Rpb25hcnkKKyAgICAgKiBJZiBub3QsIHN1YnVuaW9ucyBtYXkgaW5jbHVkZSBkaWN0
aW9uYXJpZXMgaWYgZWFjaCB1bmlvbiBpcyBub3QgbnVsbGFibGUKKyAgICAgKi8KKyAgICBjb25z
dCB0eXBlZGVmID0gIXRoaXMudW5pb24gJiYgZGVmcy51bmlxdWUuZ2V0KHRoaXMuaWRsVHlwZSk7
CisgICAgY29uc3QgdGFyZ2V0ID0gdGhpcy51bmlvbgorICAgICAgPyB0aGlzCisgICAgICA6IHR5
cGVkZWYgJiYgdHlwZWRlZi50eXBlID09PSAidHlwZWRlZiIKKyAgICAgID8gdHlwZWRlZi5pZGxU
eXBlCisgICAgICA6IHVuZGVmaW5lZDsKKyAgICBpZiAodGFyZ2V0ICYmIHRoaXMubnVsbGFibGUp
IHsKKyAgICAgIC8vIGRvIG5vdCBhbGxvdyBhbnkgZGljdGlvbmFyeQorICAgICAgY29uc3QgeyBy
ZWZlcmVuY2UgfSA9ICgwLF92YWxpZGF0b3JzX2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JURURf
TU9EVUxFXzRfXy5pZGxUeXBlSW5jbHVkZXNEaWN0aW9uYXJ5KSh0YXJnZXQsIGRlZnMpIHx8IHt9
OworICAgICAgaWYgKHJlZmVyZW5jZSkgeworICAgICAgICBjb25zdCB0YXJnZXRUb2tlbiA9ICh0
aGlzLnVuaW9uID8gcmVmZXJlbmNlIDogdGhpcykudG9rZW5zLmJhc2U7CisgICAgICAgIGNvbnN0
IG1lc3NhZ2UgPSAiTnVsbGFibGUgdW5pb24gY2Fubm90IGluY2x1ZGUgYSBkaWN0aW9uYXJ5IHR5
cGUuIjsKKyAgICAgICAgeWllbGQgKDAsX2Vycm9yX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVM
RV8zX18udmFsaWRhdGlvbkVycm9yKSgKKyAgICAgICAgICB0YXJnZXRUb2tlbiwKKyAgICAgICAg
ICB0aGlzLAorICAgICAgICAgICJuby1udWxsYWJsZS11bmlvbi1kaWN0IiwKKyAgICAgICAgICBt
ZXNzYWdlCisgICAgICAgICk7CisgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgIC8vIGFsbG93
IHNvbWUgZGljdGlvbmFyeQorICAgICAgZm9yIChjb25zdCBzdWJ0eXBlIG9mIHRoaXMuc3VidHlw
ZSkgeworICAgICAgICB5aWVsZCogc3VidHlwZS52YWxpZGF0ZShkZWZzKTsKKyAgICAgIH0KKyAg
ICB9CisgIH0KKworICAvKiogQHBhcmFtIHtpbXBvcnQoIi4uL3dyaXRlci5qcyIpLldyaXRlcil9
IHcgKi8KKyAgd3JpdGUodykgeworICAgIGNvbnN0IHR5cGVfYm9keSA9ICgpID0+IHsKKyAgICAg
IGlmICh0aGlzLnVuaW9uIHx8IHRoaXMuZ2VuZXJpYykgeworICAgICAgICByZXR1cm4gdy50cy53
cmFwKFsKKyAgICAgICAgICB3LnRva2VuKHRoaXMudG9rZW5zLmJhc2UsIHcudHMuZ2VuZXJpYyks
CisgICAgICAgICAgdy50b2tlbih0aGlzLnRva2Vucy5vcGVuKSwKKyAgICAgICAgICAuLi50aGlz
LnN1YnR5cGUubWFwKCh0KSA9PiB0LndyaXRlKHcpKSwKKyAgICAgICAgICB3LnRva2VuKHRoaXMu
dG9rZW5zLmNsb3NlKSwKKyAgICAgICAgXSk7CisgICAgICB9CisgICAgICBjb25zdCBmaXJzdFRv
a2VuID0gdGhpcy50b2tlbnMucHJlZml4IHx8IHRoaXMudG9rZW5zLmJhc2U7CisgICAgICBjb25z
dCBwcmVmaXggPSB0aGlzLnRva2Vucy5wcmVmaXgKKyAgICAgICAgPyBbdGhpcy50b2tlbnMucHJl
Zml4LnZhbHVlLCB3LnRzLnRyaXZpYSh0aGlzLnRva2Vucy5iYXNlLnRyaXZpYSldCisgICAgICAg
IDogW107CisgICAgICBjb25zdCByZWYgPSB3LnJlZmVyZW5jZSgKKyAgICAgICAgdy50cy53cmFw
KFsKKyAgICAgICAgICAuLi5wcmVmaXgsCisgICAgICAgICAgdGhpcy50b2tlbnMuYmFzZS52YWx1
ZSwKKyAgICAgICAgICB3LnRva2VuKHRoaXMudG9rZW5zLnBvc3RmaXgpLAorICAgICAgICBdKSwK
KyAgICAgICAgeyB1bmVzY2FwZWQ6IHRoaXMuaWRsVHlwZSwgY29udGV4dDogdGhpcyB9CisgICAg
ICApOworICAgICAgcmV0dXJuIHcudHMud3JhcChbdy50cy50cml2aWEoZmlyc3RUb2tlbi50cml2
aWEpLCByZWZdKTsKKyAgICB9OworICAgIHJldHVybiB3LnRzLndyYXAoWworICAgICAgdGhpcy5l
eHRBdHRycy53cml0ZSh3KSwKKyAgICAgIHR5cGVfYm9keSgpLAorICAgICAgdy50b2tlbih0aGlz
LnRva2Vucy5udWxsYWJsZSksCisgICAgICB3LnRva2VuKHRoaXMudG9rZW5zLnNlcGFyYXRvciks
CisgICAgXSk7CisgIH0KK30KKworLyoqCisgKiBAcGFyYW0ge1R5cGV9IHR5cGUKKyAqLworZnVu
Y3Rpb24gcmVwbGFjZVZvaWQodHlwZSkgeworICByZXR1cm4gKCkgPT4geworICAgIHR5cGUudG9r
ZW5zLmJhc2UudmFsdWUgPSAidW5kZWZpbmVkIjsKKyAgfTsKK30KKworCisvKioqLyB9KSwKKy8q
IDYgKi8KKy8qKiovICgoX191bnVzZWRfd2VicGFja19fX3dlYnBhY2tfbW9kdWxlX18sIF9fd2Vi
cGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pID0+IHsKKworX193ZWJwYWNrX3Jl
cXVpcmVfXy5yKF9fd2VicGFja19leHBvcnRzX18pOworLyogaGFybW9ueSBleHBvcnQgKi8gX193
ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIHsKKy8qIGhhcm1vbnkgZXhw
b3J0ICovICAgIkJhc2UiOiAoKSA9PiAoLyogYmluZGluZyAqLyBCYXNlKQorLyogaGFybW9ueSBl
eHBvcnQgKi8gfSk7CisvLyBAdHMtY2hlY2sKKworY2xhc3MgQmFzZSB7CisgIC8qKgorICAgKiBA
cGFyYW0ge29iamVjdH0gaW5pdGlhbGl6ZXIKKyAgICogQHBhcmFtIHtCYXNlWyJzb3VyY2UiXX0g
aW5pdGlhbGl6ZXIuc291cmNlCisgICAqIEBwYXJhbSB7QmFzZVsidG9rZW5zIl19IGluaXRpYWxp
emVyLnRva2VucworICAgKi8KKyAgY29uc3RydWN0b3IoeyBzb3VyY2UsIHRva2VucyB9KSB7Cisg
ICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGhpcywgeworICAgICAgc291cmNlOiB7IHZhbHVl
OiBzb3VyY2UgfSwKKyAgICAgIHRva2VuczogeyB2YWx1ZTogdG9rZW5zLCB3cml0YWJsZTogdHJ1
ZSB9LAorICAgICAgcGFyZW50OiB7IHZhbHVlOiBudWxsLCB3cml0YWJsZTogdHJ1ZSB9LAorICAg
ICAgdGhpczogeyB2YWx1ZTogdGhpcyB9LCAvLyB1c2VmdWwgd2hlbiBlc2NhcGluZyBmcm9tIHBy
b3h5CisgICAgfSk7CisgIH0KKworICB0b0pTT04oKSB7CisgICAgY29uc3QganNvbiA9IHsgdHlw
ZTogdW5kZWZpbmVkLCBuYW1lOiB1bmRlZmluZWQsIGluaGVyaXRhbmNlOiB1bmRlZmluZWQgfTsK
KyAgICBsZXQgcHJvdG8gPSB0aGlzOworICAgIHdoaWxlIChwcm90byAhPT0gT2JqZWN0LnByb3Rv
dHlwZSkgeworICAgICAgY29uc3QgZGVzY01hcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3JzKHByb3RvKTsKKyAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5l
bnRyaWVzKGRlc2NNYXApKSB7CisgICAgICAgIGlmICh2YWx1ZS5lbnVtZXJhYmxlIHx8IHZhbHVl
LmdldCkgeworICAgICAgICAgIC8vIEB0cy1pZ25vcmUgLSBhbGxvdyBpbmRleGluZyBoZXJlCisg
ICAgICAgICAganNvbltrZXldID0gdGhpc1trZXldOwogICAgICAgICB9CisgICAgICB9CisgICAg
ICBwcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihwcm90byk7CisgICAgfQorICAgIHJldHVy
biBqc29uOworICB9Cit9CiAKLSAgICAgICAgdmFyIGl0ZXJhYmxlID0gZnVuY3Rpb24gKHN0b3Jl
KSB7Ci0gICAgICAgICAgICBhbGxfd3Moc3RvcmUsICJwZWEiKTsKLSAgICAgICAgICAgIHZhciBn
cmFiYmVkID0gW10sCi0gICAgICAgICAgICAgICAgcmV0ID0ge3R5cGU6IG51bGwsIGlkbFR5cGU6
IG51bGwsIHJlYWRvbmx5OiBmYWxzZX07Ci0gICAgICAgICAgICBpZiAoY29uc3VtZShJRCwgInJl
YWRvbmx5IikpIHsKLSAgICAgICAgICAgICAgICByZXQucmVhZG9ubHkgPSB0cnVlOwotICAgICAg
ICAgICAgICAgIGdyYWJiZWQucHVzaChsYXN0X3Rva2VuKTsKLSAgICAgICAgICAgICAgICB2YXIg
dyA9IGFsbF93cygpOwotICAgICAgICAgICAgICAgIGlmICh3KSBncmFiYmVkLnB1c2godyk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICB2YXIgY29uc3VtZUl0VHlwZSA9IHJldC5yZWFkb25s
eSA/IHJlYWRvbmx5X2l0ZXJhYmxlX3R5cGUgOiBpdGVyYWJsZV90eXBlOwogCi0gICAgICAgICAg
ICB2YXIgaXR0eXBlID0gY29uc3VtZUl0VHlwZSgpOwotICAgICAgICAgICAgaWYgKCFpdHR5cGUp
IHsKLSAgICAgICAgICAgICAgICB0b2tlbnMgPSBncmFiYmVkLmNvbmNhdCh0b2tlbnMpOwotICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KKy8qKiovIH0pLAorLyogNyAqLwor
LyoqKi8gKChfX3VudXNlZF93ZWJwYWNrX19fd2VicGFja19tb2R1bGVfXywgX193ZWJwYWNrX2V4
cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykgPT4gewogCi0gICAgICAgICAgICB2YXIgc2Vj
b25kVHlwZVJlcXVpcmVkID0gaXR0eXBlID09PSAibWFwbGlrZSI7Ci0gICAgICAgICAgICB2YXIg
c2Vjb25kVHlwZUFsbG93ZWQgPSBzZWNvbmRUeXBlUmVxdWlyZWQgfHwgaXR0eXBlID09PSAiaXRl
cmFibGUiOwotICAgICAgICAgICAgcmV0LnR5cGUgPSBpdHR5cGU7Ci0gICAgICAgICAgICBpZiAo
cmV0LnR5cGUgIT09ICdtYXBsaWtlJyAmJiByZXQudHlwZSAhPT0gJ3NldGxpa2UnKQotICAgICAg
ICAgICAgICAgIGRlbGV0ZSByZXQucmVhZG9ubHk7Ci0gICAgICAgICAgICBhbGxfd3MoKTsKLSAg
ICAgICAgICAgIGlmIChjb25zdW1lKE9USEVSLCAiPCIpKSB7Ci0gICAgICAgICAgICAgICAgcmV0
LmlkbFR5cGUgPSB0eXBlKCkgfHwgZXJyb3IoIkVycm9yIHBhcnNpbmcgIiArIGl0dHlwZSArICIg
ZGVjbGFyYXRpb24iKTsKLSAgICAgICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgICAg
ICBpZiAoc2Vjb25kVHlwZUFsbG93ZWQpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIHR5cGUy
ID0gbnVsbDsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnN1bWUoT1RIRVIsICIsIikpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGFsbF93cygpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgdHlwZTIgPSB0eXBlKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBhbGxfd3MoKTsgICAg
ICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgICAgICBpZiAodHlwZTIpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXQuaWRsVHlwZSA9
IFtyZXQuaWRsVHlwZSwgdHlwZTJdOwotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChzZWNv
bmRUeXBlUmVxdWlyZWQpCi0gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcigiTWlzc2luZyBz
ZWNvbmQgdHlwZSBhcmd1bWVudCBpbiAiICsgaXR0eXBlICsgIiBkZWNsYXJhdGlvbiIpOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoT1RIRVIsICI+Iikp
IGVycm9yKCJVbnRlcm1pbmF0ZWQgIiArIGl0dHlwZSArICIgZGVjbGFyYXRpb24iKTsKLSAgICAg
ICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoT1RIRVIs
ICI7IikpIGVycm9yKCJNaXNzaW5nIHNlbWljb2xvbiBhZnRlciAiICsgaXR0eXBlICsgIiBkZWNs
YXJhdGlvbiIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgIGVycm9yKCJFcnJvciBwYXJzaW5nICIgKyBpdHR5cGUgKyAiIGRlY2xhcmF0aW9uIik7Ci0K
LSAgICAgICAgICAgIHJldHVybiByZXQ7ICAgICAgICAgICAgCi0gICAgICAgIH0gICAgICAgIAot
ICAgICAgICAKLSAgICAgICAgdmFyIGludGVyZmFjZV8gPSBmdW5jdGlvbiAoaXNQYXJ0aWFsLCBz
dG9yZSkgewotICAgICAgICAgICAgYWxsX3dzKGlzUGFydGlhbCA/IG51bGwgOiBzdG9yZSwgInBl
YSIpOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lKElELCAiaW50ZXJmYWNlIikpIHJldHVybjsK
LSAgICAgICAgICAgIGFsbF93cygpOwotICAgICAgICAgICAgdmFyIG5hbWUgPSBjb25zdW1lKElE
KSB8fCBlcnJvcigiTm8gbmFtZSBmb3IgaW50ZXJmYWNlIik7Ci0gICAgICAgICAgICB2YXIgbWVt
cyA9IFtdCi0gICAgICAgICAgICAsICAgcmV0ID0gewotICAgICAgICAgICAgICAgIHR5cGU6ICAg
ImludGVyZmFjZSIKLSAgICAgICAgICAgICwgICBuYW1lOiAgIG5hbWUudmFsdWUKLSAgICAgICAg
ICAgICwgICBwYXJ0aWFsOiAgICBmYWxzZQotICAgICAgICAgICAgLCAgIG1lbWJlcnM6ICAgIG1l
bXMKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICBpZiAoIWlzUGFydGlhbCkgcmV0LmluaGVy
aXRhbmNlID0gaW5oZXJpdGFuY2UoKSB8fCBudWxsOwotICAgICAgICAgICAgYWxsX3dzKCk7Ci0g
ICAgICAgICAgICBjb25zdW1lKE9USEVSLCAieyIpIHx8IGVycm9yKCJCb2R5bGVzcyBpbnRlcmZh
Y2UiKTsKLSAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgICAgICAgICAgYWxsX3dz
KHN0b3JlID8gbWVtcyA6IG51bGwpOwotICAgICAgICAgICAgICAgIGlmIChjb25zdW1lKE9USEVS
LCAifSIpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGFsbF93cygpOwotICAgICAgICAgICAgICAg
ICAgICBjb25zdW1lKE9USEVSLCAiOyIpIHx8IGVycm9yKCJNaXNzaW5nIHNlbWljb2xvbiBhZnRl
ciBpbnRlcmZhY2UiKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgdmFyIGVhID0gZXh0ZW5kZWRfYXR0cnMoc3RvcmUg
PyBtZW1zIDogbnVsbCk7Ci0gICAgICAgICAgICAgICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICAg
ICAgdmFyIGNudCA9IGNvbnN0XyhzdG9yZSA/IG1lbXMgOiBudWxsKTsKLSAgICAgICAgICAgICAg
ICBpZiAoY250KSB7Ci0gICAgICAgICAgICAgICAgICAgIGNudC5leHRBdHRycyA9IGVhOwotICAg
ICAgICAgICAgICAgICAgICByZXQubWVtYmVycy5wdXNoKGNudCk7Ci0gICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB2YXIgbWVt
ID0gKG9wdC5hbGxvd05lc3RlZFR5cGVkZWZzICYmIHR5cGVkZWYoc3RvcmUgPyBtZW1zIDogbnVs
bCkpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZXJhYmxlKHN0b3JlID8gbWVtcyA6
IG51bGwpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIHNlcmlhbGlzZXIoc3RvcmUgPyBt
ZW1zIDogbnVsbCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlKHN0b3Jl
ID8gbWVtcyA6IG51bGwpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbihz
dG9yZSA/IG1lbXMgOiBudWxsKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcigi
VW5rbm93biBtZW1iZXIiKTsKLSAgICAgICAgICAgICAgICBtZW0uZXh0QXR0cnMgPSBlYTsKLSAg
ICAgICAgICAgICAgICByZXQubWVtYmVycy5wdXNoKG1lbSk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH07Ci0gICAgICAgIAotICAgICAgICB2YXIgcGFydGlhbCA9IGZ1bmN0aW9uIChzdG9yZSkg
ewotICAgICAgICAgICAgYWxsX3dzKHN0b3JlLCAicGVhIik7Ci0gICAgICAgICAgICBpZiAoIWNv
bnN1bWUoSUQsICJwYXJ0aWFsIikpIHJldHVybjsKLSAgICAgICAgICAgIHZhciB0aGluZyA9IGRp
Y3Rpb25hcnkodHJ1ZSwgc3RvcmUpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnRlcmZh
Y2VfKHRydWUsIHN0b3JlKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IoIlBhcnRp
YWwgZG9lc24ndCBhcHBseSB0byBhbnl0aGluZyIpOwotICAgICAgICAgICAgdGhpbmcucGFydGlh
bCA9IHRydWU7Ci0gICAgICAgICAgICByZXR1cm4gdGhpbmc7Ci0gICAgICAgIH07Ci0gICAgICAg
IAotICAgICAgICB2YXIgZGljdGlvbmFyeSA9IGZ1bmN0aW9uIChpc1BhcnRpYWwsIHN0b3JlKSB7
Ci0gICAgICAgICAgICBhbGxfd3MoaXNQYXJ0aWFsID8gbnVsbCA6IHN0b3JlLCAicGVhIik7Ci0g
ICAgICAgICAgICBpZiAoIWNvbnN1bWUoSUQsICJkaWN0aW9uYXJ5IikpIHJldHVybjsKLSAgICAg
ICAgICAgIGFsbF93cygpOwotICAgICAgICAgICAgdmFyIG5hbWUgPSBjb25zdW1lKElEKSB8fCBl
cnJvcigiTm8gbmFtZSBmb3IgZGljdGlvbmFyeSIpOwotICAgICAgICAgICAgdmFyIG1lbXMgPSBb
XQotICAgICAgICAgICAgLCAgIHJldCA9IHsKLSAgICAgICAgICAgICAgICB0eXBlOiAgICJkaWN0
aW9uYXJ5IgotICAgICAgICAgICAgLCAgIG5hbWU6ICAgbmFtZS52YWx1ZQotICAgICAgICAgICAg
LCAgIHBhcnRpYWw6ICAgIGZhbHNlCi0gICAgICAgICAgICAsICAgbWVtYmVyczogICAgbWVtcwot
ICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIGlmICghaXNQYXJ0aWFsKSByZXQuaW5oZXJpdGFu
Y2UgPSBpbmhlcml0YW5jZSgpIHx8IG51bGw7Ci0gICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAg
ICAgICAgIGNvbnN1bWUoT1RIRVIsICJ7IikgfHwgZXJyb3IoIkJvZHlsZXNzIGRpY3Rpb25hcnki
KTsKLSAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgICAgICAgICAgYWxsX3dzKHN0
b3JlID8gbWVtcyA6IG51bGwpOwotICAgICAgICAgICAgICAgIGlmIChjb25zdW1lKE9USEVSLCAi
fSIpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGFsbF93cygpOwotICAgICAgICAgICAgICAgICAg
ICBjb25zdW1lKE9USEVSLCAiOyIpIHx8IGVycm9yKCJNaXNzaW5nIHNlbWljb2xvbiBhZnRlciBk
aWN0aW9uYXJ5Iik7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgIHZhciBlYSA9IGV4dGVuZGVkX2F0dHJzKHN0b3JlID8g
bWVtcyA6IG51bGwpOwotICAgICAgICAgICAgICAgIGFsbF93cyhzdG9yZSA/IG1lbXMgOiBudWxs
LCAicGVhIik7Ci0gICAgICAgICAgICAgICAgdmFyIHJlcXVpcmVkID0gY29uc3VtZShJRCwgInJl
cXVpcmVkIik7Ci0gICAgICAgICAgICAgICAgdmFyIHR5cCA9IHR5cGUoKSB8fCBlcnJvcigiTm8g
dHlwZSBmb3IgZGljdGlvbmFyeSBtZW1iZXIiKTsKLSAgICAgICAgICAgICAgICBhbGxfd3MoKTsK
LSAgICAgICAgICAgICAgICB2YXIgbmFtZSA9IGNvbnN1bWUoSUQpIHx8IGVycm9yKCJObyBuYW1l
IGZvciBkaWN0aW9uYXJ5IG1lbWJlciIpOwotICAgICAgICAgICAgICAgIHZhciBkZmx0ID0gZGVm
YXVsdF8oKTsKLSAgICAgICAgICAgICAgICBpZiAocmVxdWlyZWQgJiYgZGZsdCkgZXJyb3IoIlJl
cXVpcmVkIG1lbWJlciBtdXN0IG5vdCBoYXZlIGEgZGVmYXVsdCIpOwotICAgICAgICAgICAgICAg
IHJldC5tZW1iZXJzLnB1c2goewotICAgICAgICAgICAgICAgICAgICB0eXBlOiAgICAgICAiZmll
bGQiCi0gICAgICAgICAgICAgICAgLCAgIG5hbWU6ICAgICAgIG5hbWUudmFsdWUKLSAgICAgICAg
ICAgICAgICAsICAgcmVxdWlyZWQ6ICAgISFyZXF1aXJlZAotICAgICAgICAgICAgICAgICwgICBp
ZGxUeXBlOiAgICB0eXAKLSAgICAgICAgICAgICAgICAsICAgZXh0QXR0cnM6ICAgZWEKLSAgICAg
ICAgICAgICAgICAsICAgImRlZmF1bHQiOiAgZGZsdAotICAgICAgICAgICAgICAgIH0pOwotICAg
ICAgICAgICAgICAgIGFsbF93cygpOwotICAgICAgICAgICAgICAgIGNvbnN1bWUoT1RIRVIsICI7
IikgfHwgZXJyb3IoIlVudGVybWluYXRlZCBkaWN0aW9uYXJ5IG1lbWJlciIpOwotICAgICAgICAg
ICAgfQotICAgICAgICB9OwotICAgICAgICAKLSAgICAgICAgdmFyIGV4Y2VwdGlvbiA9IGZ1bmN0
aW9uIChzdG9yZSkgewotICAgICAgICAgICAgYWxsX3dzKHN0b3JlLCAicGVhIik7Ci0gICAgICAg
ICAgICBpZiAoIWNvbnN1bWUoSUQsICJleGNlcHRpb24iKSkgcmV0dXJuOwotICAgICAgICAgICAg
YWxsX3dzKCk7Ci0gICAgICAgICAgICB2YXIgbmFtZSA9IGNvbnN1bWUoSUQpIHx8IGVycm9yKCJO
byBuYW1lIGZvciBleGNlcHRpb24iKTsKLSAgICAgICAgICAgIHZhciBtZW1zID0gW10KLSAgICAg
ICAgICAgICwgICByZXQgPSB7Ci0gICAgICAgICAgICAgICAgdHlwZTogICAiZXhjZXB0aW9uIgot
ICAgICAgICAgICAgLCAgIG5hbWU6ICAgbmFtZS52YWx1ZQotICAgICAgICAgICAgLCAgIG1lbWJl
cnM6ICAgIG1lbXMKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICByZXQuaW5oZXJpdGFuY2Ug
PSBpbmhlcml0YW5jZSgpIHx8IG51bGw7Ci0gICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAg
ICAgIGNvbnN1bWUoT1RIRVIsICJ7IikgfHwgZXJyb3IoIkJvZHlsZXNzIGV4Y2VwdGlvbiIpOwot
ICAgICAgICAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgICAgICAgICBhbGxfd3Moc3RvcmUg
PyBtZW1zIDogbnVsbCk7Ci0gICAgICAgICAgICAgICAgaWYgKGNvbnN1bWUoT1RIRVIsICJ9Iikp
IHsKLSAgICAgICAgICAgICAgICAgICAgYWxsX3dzKCk7Ci0gICAgICAgICAgICAgICAgICAgIGNv
bnN1bWUoT1RIRVIsICI7IikgfHwgZXJyb3IoIk1pc3Npbmcgc2VtaWNvbG9uIGFmdGVyIGV4Y2Vw
dGlvbiIpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0OwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICB2YXIgZWEgPSBleHRlbmRlZF9hdHRycyhzdG9yZSA/IG1lbXMg
OiBudWxsKTsKLSAgICAgICAgICAgICAgICBhbGxfd3Moc3RvcmUgPyBtZW1zIDogbnVsbCwgInBl
YSIpOwotICAgICAgICAgICAgICAgIHZhciBjbnQgPSBjb25zdF8oKTsKLSAgICAgICAgICAgICAg
ICBpZiAoY250KSB7Ci0gICAgICAgICAgICAgICAgICAgIGNudC5leHRBdHRycyA9IGVhOwotICAg
ICAgICAgICAgICAgICAgICByZXQubWVtYmVycy5wdXNoKGNudCk7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICB2YXIgdHlwID0g
dHlwZSgpOwotICAgICAgICAgICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAgICAgICAgICAg
ICAgdmFyIG5hbWUgPSBjb25zdW1lKElEKTsKLSAgICAgICAgICAgICAgICAgICAgYWxsX3dzKCk7
Ci0gICAgICAgICAgICAgICAgICAgIGlmICghdHlwIHx8ICFuYW1lIHx8ICFjb25zdW1lKE9USEVS
LCAiOyIpKSBlcnJvcigiVW5rbm93biBtZW1iZXIgaW4gZXhjZXB0aW9uIGJvZHkiKTsKLSAgICAg
ICAgICAgICAgICAgICAgcmV0Lm1lbWJlcnMucHVzaCh7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICB0eXBlOiAgICAgICAiZmllbGQiCi0gICAgICAgICAgICAgICAgICAgICwgICBuYW1lOiAgICAg
ICBuYW1lLnZhbHVlCi0gICAgICAgICAgICAgICAgICAgICwgICBpZGxUeXBlOiAgICB0eXAKLSAg
ICAgICAgICAgICAgICAgICAgLCAgIGV4dEF0dHJzOiAgIGVhCi0gICAgICAgICAgICAgICAgICAg
IH0pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLSAgICAg
ICAgCi0gICAgICAgIHZhciBlbnVtXyA9IGZ1bmN0aW9uIChzdG9yZSkgewotICAgICAgICAgICAg
YWxsX3dzKHN0b3JlLCAicGVhIik7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWUoSUQsICJlbnVt
IikpIHJldHVybjsKLSAgICAgICAgICAgIGFsbF93cygpOwotICAgICAgICAgICAgdmFyIG5hbWUg
PSBjb25zdW1lKElEKSB8fCBlcnJvcigiTm8gbmFtZSBmb3IgZW51bSIpOwotICAgICAgICAgICAg
dmFyIHZhbHMgPSBbXQotICAgICAgICAgICAgLCAgIHJldCA9IHsKLSAgICAgICAgICAgICAgICB0
eXBlOiAgICJlbnVtIgotICAgICAgICAgICAgLCAgIG5hbWU6ICAgbmFtZS52YWx1ZQotICAgICAg
ICAgICAgLCAgIHZhbHVlczogdmFscwotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIGFsbF93
cygpOwotICAgICAgICAgICAgY29uc3VtZShPVEhFUiwgInsiKSB8fCBlcnJvcigiTm8gY3VybHkg
Zm9yIGVudW0iKTsKLSAgICAgICAgICAgIHZhciBzYXdfY29tbWEgPSBmYWxzZTsKLSAgICAgICAg
ICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgICAgICAgICAgYWxsX3dzKHN0b3JlID8gdmFscyA6
IG51bGwpOwotICAgICAgICAgICAgICAgIGlmIChjb25zdW1lKE9USEVSLCAifSIpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGFsbF93cygpOwotICAgICAgICAgICAgICAgICAgICBjb25zdW1lKE9U
SEVSLCAiOyIpIHx8IGVycm9yKCJObyBzZW1pY29sb24gYWZ0ZXIgZW51bSIpOwotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gcmV0OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICB2YXIgdmFsID0gY29uc3VtZShTVFIpIHx8IGVycm9yKCJVbmV4cGVjdGVkIHZhbHVlIGluIGVu
dW0iKTsKLSAgICAgICAgICAgICAgICByZXQudmFsdWVzLnB1c2godmFsLnZhbHVlLnJlcGxhY2Uo
LyIvZywgIiIpKTsKLSAgICAgICAgICAgICAgICBhbGxfd3Moc3RvcmUgPyB2YWxzIDogbnVsbCk7
Ci0gICAgICAgICAgICAgICAgaWYgKGNvbnN1bWUoT1RIRVIsICIsIikpIHsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKHN0b3JlKSB2YWxzLnB1c2goeyB0eXBlOiAiLCIgfSk7Ci0gICAgICAgICAg
ICAgICAgICAgIGFsbF93cyhzdG9yZSA/IHZhbHMgOiBudWxsKTsKLSAgICAgICAgICAgICAgICAg
ICAgc2F3X2NvbW1hID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHNhd19jb21tYSA9IGZhbHNlOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLSAgICAgICAgCi0gICAgICAgIHZh
ciB0eXBlZGVmID0gZnVuY3Rpb24gKHN0b3JlKSB7Ci0gICAgICAgICAgICBhbGxfd3Moc3RvcmUs
ICJwZWEiKTsKLSAgICAgICAgICAgIGlmICghY29uc3VtZShJRCwgInR5cGVkZWYiKSkgcmV0dXJu
OwotICAgICAgICAgICAgdmFyIHJldCA9IHsKLSAgICAgICAgICAgICAgICB0eXBlOiAgICJ0eXBl
ZGVmIgotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIGFsbF93cygpOwotICAgICAgICAgICAg
cmV0LnR5cGVFeHRBdHRycyA9IGV4dGVuZGVkX2F0dHJzKCk7Ci0gICAgICAgICAgICBhbGxfd3Mo
c3RvcmUsICJ0cGVhIik7Ci0gICAgICAgICAgICByZXQuaWRsVHlwZSA9IHR5cGUoKSB8fCBlcnJv
cigiTm8gdHlwZSBpbiB0eXBlZGVmIik7Ci0gICAgICAgICAgICBhbGxfd3MoKTsKLSAgICAgICAg
ICAgIHZhciBuYW1lID0gY29uc3VtZShJRCkgfHwgZXJyb3IoIk5vIG5hbWUgaW4gdHlwZWRlZiIp
OwotICAgICAgICAgICAgcmV0Lm5hbWUgPSBuYW1lLnZhbHVlOwotICAgICAgICAgICAgYWxsX3dz
KCk7Ci0gICAgICAgICAgICBjb25zdW1lKE9USEVSLCAiOyIpIHx8IGVycm9yKCJVbnRlcm1pbmF0
ZWQgdHlwZWRlZiIpOwotICAgICAgICAgICAgcmV0dXJuIHJldDsKLSAgICAgICAgfTsKLSAgICAg
ICAgCi0gICAgICAgIHZhciBpbXBsZW1lbnRzXyA9IGZ1bmN0aW9uIChzdG9yZSkgewotICAgICAg
ICAgICAgYWxsX3dzKHN0b3JlLCAicGVhIik7Ci0gICAgICAgICAgICB2YXIgdGFyZ2V0ID0gY29u
c3VtZShJRCk7Ci0gICAgICAgICAgICBpZiAoIXRhcmdldCkgcmV0dXJuOwotICAgICAgICAgICAg
dmFyIHcgPSBhbGxfd3MoKTsKLSAgICAgICAgICAgIGlmIChjb25zdW1lKElELCAiaW1wbGVtZW50
cyIpKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHJldCA9IHsKLSAgICAgICAgICAgICAgICAgICAg
dHlwZTogICAiaW1wbGVtZW50cyIKLSAgICAgICAgICAgICAgICAsICAgdGFyZ2V0OiB0YXJnZXQu
dmFsdWUKLSAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgICAgIGFsbF93cygpOwotICAg
ICAgICAgICAgICAgIHZhciBpbXAgPSBjb25zdW1lKElEKSB8fCBlcnJvcigiSW5jb21wbGV0ZSBp
bXBsZW1lbnRzIHN0YXRlbWVudCIpOwotICAgICAgICAgICAgICAgIHJldFsiaW1wbGVtZW50cyJd
ID0gaW1wLnZhbHVlOwotICAgICAgICAgICAgICAgIGFsbF93cygpOwotICAgICAgICAgICAgICAg
IGNvbnN1bWUoT1RIRVIsICI7IikgfHwgZXJyb3IoIk5vIHRlcm1pbmF0aW5nIDsgZm9yIGltcGxl
bWVudHMgc3RhdGVtZW50Iik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIC8vIHJvbGxiYWNrCi0g
ICAgICAgICAgICAgICAgdG9rZW5zLnVuc2hpZnQodyk7Ci0gICAgICAgICAgICAgICAgdG9rZW5z
LnVuc2hpZnQodGFyZ2V0KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLSAgICAgICAgCi0g
ICAgICAgIHZhciBkZWZpbml0aW9uID0gZnVuY3Rpb24gKHN0b3JlKSB7Ci0gICAgICAgICAgICBy
ZXR1cm4gIGNhbGxiYWNrKHN0b3JlKSAgICAgICAgICAgICB8fAotICAgICAgICAgICAgICAgICAg
ICBpbnRlcmZhY2VfKGZhbHNlLCBzdG9yZSkgICAgfHwKLSAgICAgICAgICAgICAgICAgICAgcGFy
dGlhbChzdG9yZSkgICAgICAgICAgICAgIHx8Ci0gICAgICAgICAgICAgICAgICAgIGRpY3Rpb25h
cnkoZmFsc2UsIHN0b3JlKSAgICB8fAotICAgICAgICAgICAgICAgICAgICBleGNlcHRpb24oc3Rv
cmUpICAgICAgICAgICAgfHwKLSAgICAgICAgICAgICAgICAgICAgZW51bV8oc3RvcmUpICAgICAg
ICAgICAgICAgIHx8Ci0gICAgICAgICAgICAgICAgICAgIHR5cGVkZWYoc3RvcmUpICAgICAgICAg
ICAgICB8fAotICAgICAgICAgICAgICAgICAgICBpbXBsZW1lbnRzXyhzdG9yZSkKLSAgICAgICAg
ICAgICAgICAgICAgOwotICAgICAgICB9OwotICAgICAgICAKLSAgICAgICAgdmFyIGRlZmluaXRp
b25zID0gZnVuY3Rpb24gKHN0b3JlKSB7Ci0gICAgICAgICAgICBpZiAoIXRva2Vucy5sZW5ndGgp
IHJldHVybiBbXTsKLSAgICAgICAgICAgIHZhciBkZWZzID0gW107Ci0gICAgICAgICAgICB3aGls
ZSAodHJ1ZSkgewotICAgICAgICAgICAgICAgIHZhciBlYSA9IGV4dGVuZGVkX2F0dHJzKHN0b3Jl
ID8gZGVmcyA6IG51bGwpCi0gICAgICAgICAgICAgICAgLCAgIGRlZiA9IGRlZmluaXRpb24oc3Rv
cmUgPyBkZWZzIDogbnVsbCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFkZWYpIHsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKGVhLmxlbmd0aCkgZXJyb3IoIlN0cmF5IGV4dGVuZGVkIGF0dHJpYnV0
ZXMiKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIGRlZi5leHRBdHRycyA9IGVhOwotICAgICAgICAgICAgICAgIGRlZnMucHVz
aChkZWYpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIGRlZnM7CitfX3dlYnBh
Y2tfcmVxdWlyZV9fLnIoX193ZWJwYWNrX2V4cG9ydHNfXyk7CisvKiBoYXJtb255IGV4cG9ydCAq
LyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgeworLyogaGFybW9u
eSBleHBvcnQgKi8gICAiaWRsVHlwZUluY2x1ZGVzRGljdGlvbmFyeSI6ICgpID0+ICgvKiBiaW5k
aW5nICovIGlkbFR5cGVJbmNsdWRlc0RpY3Rpb25hcnkpLAorLyogaGFybW9ueSBleHBvcnQgKi8g
ICAiZGljdGlvbmFyeUluY2x1ZGVzUmVxdWlyZWRGaWVsZCI6ICgpID0+ICgvKiBiaW5kaW5nICov
IGRpY3Rpb25hcnlJbmNsdWRlc1JlcXVpcmVkRmllbGQpCisvKiBoYXJtb255IGV4cG9ydCAqLyB9
KTsKKy8vIEB0cy1jaGVjaworCisvKioKKyAqIEB0eXBlZGVmIHtpbXBvcnQoIi4uL3Byb2R1Y3Rp
b25zL2RpY3Rpb25hcnkuanMiKS5EaWN0aW9uYXJ5fSBEaWN0aW9uYXJ5CisgKgorICogQHBhcmFt
IHsqfSBpZGxUeXBlCisgKiBAcGFyYW0ge2ltcG9ydCgiLi4vdmFsaWRhdG9yLmpzIikuRGVmaW5p
dGlvbnN9IGRlZnMKKyAqIEBwYXJhbSB7b2JqZWN0fSBbb3B0aW9uc10KKyAqIEBwYXJhbSB7Ym9v
bGVhbn0gW29wdGlvbnMudXNlTnVsbGFibGVJbm5lcl0gdXNlIHdoZW4gdGhlIGlucHV0IGlkbFR5
cGUgaXMgbnVsbGFibGUgYW5kIHlvdSB3YW50IHRvIHVzZSBpdHMgaW5uZXIgdHlwZQorICogQHJl
dHVybiB7eyByZWZlcmVuY2U6ICosIGRpY3Rpb25hcnk6IERpY3Rpb25hcnkgfX0gdGhlIHR5cGUg
cmVmZXJlbmNlIHRoYXQgdWx0aW1hdGVseSBpbmNsdWRlcyBkaWN0aW9uYXJ5LgorICovCitmdW5j
dGlvbiBpZGxUeXBlSW5jbHVkZXNEaWN0aW9uYXJ5KAorICBpZGxUeXBlLAorICBkZWZzLAorICB7
IHVzZU51bGxhYmxlSW5uZXIgfSA9IHt9CispIHsKKyAgaWYgKCFpZGxUeXBlLnVuaW9uKSB7Cisg
ICAgY29uc3QgZGVmID0gZGVmcy51bmlxdWUuZ2V0KGlkbFR5cGUuaWRsVHlwZSk7CisgICAgaWYg
KCFkZWYpIHsKKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGRlZi50eXBlID09PSAidHlw
ZWRlZiIpIHsKKyAgICAgIGNvbnN0IHsgdHlwZWRlZkluY2x1ZGVzRGljdGlvbmFyeSB9ID0gZGVm
cy5jYWNoZTsKKyAgICAgIGlmICh0eXBlZGVmSW5jbHVkZXNEaWN0aW9uYXJ5LmhhcyhkZWYpKSB7
CisgICAgICAgIC8vIE5vdGUgdGhhdCB0aGlzIGFsc28gaGFsdHMgd2hlbiBpdCBtZXQgaW5kZXRl
cm1pbmF0ZSBzdGF0ZQorICAgICAgICAvLyB0byBwcmV2ZW50IGluZmluaXRlIHJlY3Vyc2lvbgor
ICAgICAgICByZXR1cm4gdHlwZWRlZkluY2x1ZGVzRGljdGlvbmFyeS5nZXQoZGVmKTsKKyAgICAg
IH0KKyAgICAgIGRlZnMuY2FjaGUudHlwZWRlZkluY2x1ZGVzRGljdGlvbmFyeS5zZXQoZGVmLCB1
bmRlZmluZWQpOyAvLyBpbmRldGVybWluYXRlIHN0YXRlCisgICAgICBjb25zdCByZXN1bHQgPSBp
ZGxUeXBlSW5jbHVkZXNEaWN0aW9uYXJ5KGRlZi5pZGxUeXBlLCBkZWZzKTsKKyAgICAgIGRlZnMu
Y2FjaGUudHlwZWRlZkluY2x1ZGVzRGljdGlvbmFyeS5zZXQoZGVmLCByZXN1bHQpOworICAgICAg
aWYgKHJlc3VsdCkgeworICAgICAgICByZXR1cm4geworICAgICAgICAgIHJlZmVyZW5jZTogaWRs
VHlwZSwKKyAgICAgICAgICBkaWN0aW9uYXJ5OiByZXN1bHQuZGljdGlvbmFyeSwKICAgICAgICAg
fTsKLSAgICAgICAgdmFyIHJlcyA9IGRlZmluaXRpb25zKG9wdC53cyk7Ci0gICAgICAgIGlmICh0
b2tlbnMubGVuZ3RoKSBlcnJvcigiVW5yZWNvZ25pc2VkIHRva2VucyIpOwotICAgICAgICByZXR1
cm4gcmVzOworICAgICAgfQorICAgIH0KKyAgICBpZiAoZGVmLnR5cGUgPT09ICJkaWN0aW9uYXJ5
IiAmJiAodXNlTnVsbGFibGVJbm5lciB8fCAhaWRsVHlwZS5udWxsYWJsZSkpIHsKKyAgICAgIHJl
dHVybiB7CisgICAgICAgIHJlZmVyZW5jZTogaWRsVHlwZSwKKyAgICAgICAgZGljdGlvbmFyeTog
ZGVmLAorICAgICAgfTsKKyAgICB9CisgIH0KKyAgZm9yIChjb25zdCBzdWJ0eXBlIG9mIGlkbFR5
cGUuc3VidHlwZSkgeworICAgIGNvbnN0IHJlc3VsdCA9IGlkbFR5cGVJbmNsdWRlc0RpY3Rpb25h
cnkoc3VidHlwZSwgZGVmcyk7CisgICAgaWYgKHJlc3VsdCkgeworICAgICAgaWYgKHN1YnR5cGUu
dW5pb24pIHsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgIH0KKyAgICAgIHJldHVybiB7
CisgICAgICAgIHJlZmVyZW5jZTogc3VidHlwZSwKKyAgICAgICAgZGljdGlvbmFyeTogcmVzdWx0
LmRpY3Rpb25hcnksCisgICAgICB9OworICAgIH0KKyAgfQorfQorCisvKioKKyAqIEBwYXJhbSB7
Kn0gZGljdCBkaWN0aW9uYXJ5IHR5cGUKKyAqIEBwYXJhbSB7aW1wb3J0KCIuLi92YWxpZGF0b3Iu
anMiKS5EZWZpbml0aW9uc30gZGVmcworICogQHJldHVybiB7Ym9vbGVhbn0KKyAqLworZnVuY3Rp
b24gZGljdGlvbmFyeUluY2x1ZGVzUmVxdWlyZWRGaWVsZChkaWN0LCBkZWZzKSB7CisgIGlmIChk
ZWZzLmNhY2hlLmRpY3Rpb25hcnlJbmNsdWRlc1JlcXVpcmVkRmllbGQuaGFzKGRpY3QpKSB7Cisg
ICAgcmV0dXJuIGRlZnMuY2FjaGUuZGljdGlvbmFyeUluY2x1ZGVzUmVxdWlyZWRGaWVsZC5nZXQo
ZGljdCk7CisgIH0KKyAgLy8gU2V0IGNhY2hlZCByZXN1bHQgdG8gaW5kZXRlcm1pbmF0ZSB0byBz
aG9ydC1jaXJjdWl0IGNpcmN1bGFyIGRlZmluaXRpb25zLgorICAvLyBUaGUgZmluYWwgcmVzdWx0
IHdpbGwgYmUgdXBkYXRlZCB0byB0cnVlIG9yIGZhbHNlLgorICBkZWZzLmNhY2hlLmRpY3Rpb25h
cnlJbmNsdWRlc1JlcXVpcmVkRmllbGQuc2V0KGRpY3QsIHVuZGVmaW5lZCk7CisgIGxldCByZXN1
bHQgPSBkaWN0Lm1lbWJlcnMuc29tZSgoZmllbGQpID0+IGZpZWxkLnJlcXVpcmVkKTsKKyAgaWYg
KCFyZXN1bHQgJiYgZGljdC5pbmhlcml0YW5jZSkgeworICAgIGNvbnN0IHN1cGVyZGljdCA9IGRl
ZnMudW5pcXVlLmdldChkaWN0LmluaGVyaXRhbmNlKTsKKyAgICBpZiAoIXN1cGVyZGljdCkgewor
ICAgICAgLy8gQXNzdW1lIHJlcXVpcmVkIG1lbWJlcnMgaW4gdGhlIHN1cGVydHlwZSBpZiBpdCBp
cyB1bmtub3duLgorICAgICAgcmVzdWx0ID0gdHJ1ZTsKKyAgICB9IGVsc2UgaWYgKGRpY3Rpb25h
cnlJbmNsdWRlc1JlcXVpcmVkRmllbGQoc3VwZXJkaWN0LCBkZWZzKSkgeworICAgICAgcmVzdWx0
ID0gdHJ1ZTsKKyAgICB9CisgIH0KKyAgZGVmcy5jYWNoZS5kaWN0aW9uYXJ5SW5jbHVkZXNSZXF1
aXJlZEZpZWxkLnNldChkaWN0LCByZXN1bHQpOworICByZXR1cm4gcmVzdWx0OworfQorCisKKy8q
KiovIH0pLAorLyogOCAqLworLyoqKi8gKChfX3VudXNlZF93ZWJwYWNrX19fd2VicGFja19tb2R1
bGVfXywgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykgPT4geworCitf
X3dlYnBhY2tfcmVxdWlyZV9fLnIoX193ZWJwYWNrX2V4cG9ydHNfXyk7CisvKiBoYXJtb255IGV4
cG9ydCAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgeworLyog
aGFybW9ueSBleHBvcnQgKi8gICAiU2ltcGxlRXh0ZW5kZWRBdHRyaWJ1dGUiOiAoKSA9PiAoLyog
YmluZGluZyAqLyBTaW1wbGVFeHRlbmRlZEF0dHJpYnV0ZSksCisvKiBoYXJtb255IGV4cG9ydCAq
LyAgICJFeHRlbmRlZEF0dHJpYnV0ZXMiOiAoKSA9PiAoLyogYmluZGluZyAqLyBFeHRlbmRlZEF0
dHJpYnV0ZXMpCisvKiBoYXJtb255IGV4cG9ydCAqLyB9KTsKKy8qIGhhcm1vbnkgaW1wb3J0ICov
IHZhciBfYmFzZV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fID0gX193ZWJwYWNrX3Jl
cXVpcmVfXyg2KTsKKy8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfYXJyYXlfYmFzZV9qc19fV0VC
UEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5KTsKKy8qIGhh
cm1vbnkgaW1wb3J0ICovIHZhciBfdG9rZW5fanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJf
XyA9IF9fd2VicGFja19yZXF1aXJlX18oMTApOworLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9o
ZWxwZXJzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX18gPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDQpOworLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9lcnJvcl9qc19fV0VCUEFDS19JTVBP
UlRFRF9NT0RVTEVfNF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTsKKworCisKKworCisKKy8q
KgorICogQHBhcmFtIHtpbXBvcnQoIi4uL3Rva2VuaXNlciIpLlRva2VuaXNlcn0gdG9rZW5pc2Vy
CisgKiBAcGFyYW0ge3N0cmluZ30gdG9rZW5OYW1lCisgKi8KK2Z1bmN0aW9uIHRva2Vucyh0b2tl
bmlzZXIsIHRva2VuTmFtZSkgeworICByZXR1cm4gKDAsX2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1Q
T1JURURfTU9EVUxFXzNfXy5saXN0KSh0b2tlbmlzZXIsIHsKKyAgICBwYXJzZXI6IF90b2tlbl9q
c19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fLldyYXBwZWRUb2tlbi5wYXJzZXIodG9rZW5p
c2VyLCB0b2tlbk5hbWUpLAorICAgIGxpc3ROYW1lOiB0b2tlbk5hbWUgKyAiIGxpc3QiLAorICB9
KTsKK30KKworY29uc3QgZXh0QXR0clZhbHVlU3ludGF4ID0gWyJpZGVudGlmaWVyIiwgImRlY2lt
YWwiLCAiaW50ZWdlciIsICJzdHJpbmciXTsKKworY29uc3Qgc2hvdWxkQmVMZWdhY3lQcmVmaXhl
ZCA9IFsKKyAgIk5vSW50ZXJmYWNlT2JqZWN0IiwKKyAgIkxlbmllbnRTZXR0ZXIiLAorICAiTGVu
aWVudFRoaXMiLAorICAiVHJlYXROb25PYmplY3RBc051bGwiLAorICAiVW5mb3JnZWFibGUiLAor
XTsKKworY29uc3QgcmVuYW1lZExlZ2FjaWVzID0gbmV3IE1hcChbCisgIC4uLnNob3VsZEJlTGVn
YWN5UHJlZml4ZWQubWFwKChuYW1lKSA9PiBbbmFtZSwgYExlZ2FjeSR7bmFtZX1gXSksCisgIFsi
TmFtZWRDb25zdHJ1Y3RvciIsICJMZWdhY3lGYWN0b3J5RnVuY3Rpb24iXSwKKyAgWyJPdmVycmlk
ZUJ1aWx0aW5zIiwgIkxlZ2FjeU92ZXJyaWRlQnVpbHRJbnMiXSwKKyAgWyJUcmVhdE51bGxBcyIs
ICJMZWdhY3lOdWxsVG9FbXB0eVN0cmluZyJdLAorXSk7CisKKy8qKgorICogVGhpcyB3aWxsIGFs
bG93IGEgc2V0IG9mIGV4dGVuZGVkIGF0dHJpYnV0ZSB2YWx1ZXMgdG8gYmUgcGFyc2VkLgorICog
QHBhcmFtIHtpbXBvcnQoIi4uL3Rva2VuaXNlciIpLlRva2VuaXNlcn0gdG9rZW5pc2VyCisgKi8K
K2Z1bmN0aW9uIGV4dEF0dHJMaXN0SXRlbXModG9rZW5pc2VyKSB7CisgIGZvciAoY29uc3Qgc3lu
dGF4IG9mIGV4dEF0dHJWYWx1ZVN5bnRheCkgeworICAgIGNvbnN0IHRva3MgPSB0b2tlbnModG9r
ZW5pc2VyLCBzeW50YXgpOworICAgIGlmICh0b2tzLmxlbmd0aCkgeworICAgICAgcmV0dXJuIHRv
a3M7CisgICAgfQorICB9CisgIHRva2VuaXNlci5lcnJvcigKKyAgICBgRXhwZWN0ZWQgaWRlbnRp
ZmllcnMsIHN0cmluZ3MsIGRlY2ltYWxzLCBvciBpbnRlZ2VycyBidXQgbm9uZSBmb3VuZGAKKyAg
KTsKK30KKworY2xhc3MgRXh0ZW5kZWRBdHRyaWJ1dGVQYXJhbWV0ZXJzIGV4dGVuZHMgX2Jhc2Vf
anNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXy5CYXNlIHsKKyAgLyoqCisgICAqIEBwYXJh
bSB7aW1wb3J0KCIuLi90b2tlbmlzZXIiKS5Ub2tlbmlzZXJ9IHRva2VuaXNlcgorICAgKi8KKyAg
c3RhdGljIHBhcnNlKHRva2VuaXNlcikgeworICAgIGNvbnN0IHRva2VucyA9IHsgYXNzaWduOiB0
b2tlbmlzZXIuY29uc3VtZSgiPSIpIH07CisgICAgY29uc3QgcmV0ID0gKDAsX2hlbHBlcnNfanNf
X1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfXy5hdXRvUGFyZW50ZXIpKAorICAgICAgbmV3IEV4
dGVuZGVkQXR0cmlidXRlUGFyYW1ldGVycyh7IHNvdXJjZTogdG9rZW5pc2VyLnNvdXJjZSwgdG9r
ZW5zIH0pCisgICAgKTsKKyAgICBpZiAodG9rZW5zLmFzc2lnbikgeworICAgICAgdG9rZW5zLnNl
Y29uZGFyeU5hbWUgPSB0b2tlbmlzZXIuY29uc3VtZVR5cGUoLi4uZXh0QXR0clZhbHVlU3ludGF4
KTsKKyAgICB9CisgICAgdG9rZW5zLm9wZW4gPSB0b2tlbmlzZXIuY29uc3VtZSgiKCIpOworICAg
IGlmICh0b2tlbnMub3BlbikgeworICAgICAgcmV0Lmxpc3QgPSByZXQucmhzSXNMaXN0CisgICAg
ICAgID8gLy8gW0V4cG9zZWQ9KFdpbmRvdyxXb3JrZXIpXQorICAgICAgICAgIGV4dEF0dHJMaXN0
SXRlbXModG9rZW5pc2VyKQorICAgICAgICA6IC8vIFtMZWdhY3lGYWN0b3J5RnVuY3Rpb249QXVk
aW8oRE9NU3RyaW5nIHNyYyldIG9yIFtDb25zdHJ1Y3RvcihET01TdHJpbmcgc3RyKV0KKyAgICAg
ICAgICAoMCxfaGVscGVyc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fLmFyZ3VtZW50
X2xpc3QpKHRva2VuaXNlcik7CisgICAgICB0b2tlbnMuY2xvc2UgPQorICAgICAgICB0b2tlbmlz
ZXIuY29uc3VtZSgiKSIpIHx8CisgICAgICAgIHRva2VuaXNlci5lcnJvcigiVW5leHBlY3RlZCB0
b2tlbiBpbiBleHRlbmRlZCBhdHRyaWJ1dGUgYXJndW1lbnQgbGlzdCIpOworICAgIH0gZWxzZSBp
ZiAocmV0Lmhhc1JocyAmJiAhdG9rZW5zLnNlY29uZGFyeU5hbWUpIHsKKyAgICAgIHRva2VuaXNl
ci5lcnJvcigiTm8gcmlnaHQgaGFuZCBzaWRlIHRvIGV4dGVuZGVkIGF0dHJpYnV0ZSBhc3NpZ25t
ZW50Iik7CisgICAgfQorICAgIHJldHVybiByZXQudGhpczsKKyAgfQorCisgIGdldCByaHNJc0xp
c3QoKSB7CisgICAgcmV0dXJuIHRoaXMudG9rZW5zLmFzc2lnbiAmJiAhdGhpcy50b2tlbnMuc2Vj
b25kYXJ5TmFtZTsKKyAgfQorCisgIGdldCByaHNUeXBlKCkgeworICAgIGlmICh0aGlzLnJoc0lz
TGlzdCkgeworICAgICAgcmV0dXJuIHRoaXMubGlzdFswXS50b2tlbnMudmFsdWUudHlwZSArICIt
bGlzdCI7CisgICAgfQorICAgIGlmICh0aGlzLnRva2Vucy5zZWNvbmRhcnlOYW1lKSB7CisgICAg
ICByZXR1cm4gdGhpcy50b2tlbnMuc2Vjb25kYXJ5TmFtZS50eXBlOworICAgIH0KKyAgICByZXR1
cm4gbnVsbDsKKyAgfQorCisgIC8qKiBAcGFyYW0ge2ltcG9ydCgiLi4vd3JpdGVyLmpzIikuV3Jp
dGVyKX0gdyAqLworICB3cml0ZSh3KSB7CisgICAgZnVuY3Rpb24gZXh0ZW5kZWRfYXR0cmlidXRl
X2xpc3RpdGVtKGl0ZW0pIHsKKyAgICAgIHJldHVybiB3LnRzLndyYXAoWworICAgICAgICB3LnRv
a2VuKGl0ZW0udG9rZW5zLnZhbHVlKSwKKyAgICAgICAgdy50b2tlbihpdGVtLnRva2Vucy5zZXBh
cmF0b3IpLAorICAgICAgXSk7CisgICAgfQorICAgIGNvbnN0IHsgcmhzVHlwZSB9ID0gdGhpczsK
KyAgICByZXR1cm4gdy50cy53cmFwKFsKKyAgICAgIHcudG9rZW4odGhpcy50b2tlbnMuYXNzaWdu
KSwKKyAgICAgIHcucmVmZXJlbmNlX3Rva2VuKHRoaXMudG9rZW5zLnNlY29uZGFyeU5hbWUsIHRo
aXMucGFyZW50KSwKKyAgICAgIHcudG9rZW4odGhpcy50b2tlbnMub3BlbiksCisgICAgICAuLi4o
IXRoaXMubGlzdAorICAgICAgICA/IFtdCisgICAgICAgIDogdGhpcy5saXN0Lm1hcCgocCkgPT4g
eworICAgICAgICAgICAgcmV0dXJuIHJoc1R5cGUgPT09ICJpZGVudGlmaWVyLWxpc3QiCisgICAg
ICAgICAgICAgID8gdy5pZGVudGlmaWVyKHAsIHRoaXMucGFyZW50KQorICAgICAgICAgICAgICA6
IHJoc1R5cGUgJiYgcmhzVHlwZS5lbmRzV2l0aCgiLWxpc3QiKQorICAgICAgICAgICAgICA/IGV4
dGVuZGVkX2F0dHJpYnV0ZV9saXN0aXRlbShwKQorICAgICAgICAgICAgICA6IHAud3JpdGUodyk7
CisgICAgICAgICAgfSkpLAorICAgICAgdy50b2tlbih0aGlzLnRva2Vucy5jbG9zZSksCisgICAg
XSk7CisgIH0KK30KKworY2xhc3MgU2ltcGxlRXh0ZW5kZWRBdHRyaWJ1dGUgZXh0ZW5kcyBfYmFz
ZV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fLkJhc2UgeworICAvKioKKyAgICogQHBh
cmFtIHtpbXBvcnQoIi4uL3Rva2VuaXNlciIpLlRva2VuaXNlcn0gdG9rZW5pc2VyCisgICAqLwor
ICBzdGF0aWMgcGFyc2UodG9rZW5pc2VyKSB7CisgICAgY29uc3QgbmFtZSA9IHRva2VuaXNlci5j
b25zdW1lVHlwZSgiaWRlbnRpZmllciIpOworICAgIGlmIChuYW1lKSB7CisgICAgICByZXR1cm4g
bmV3IFNpbXBsZUV4dGVuZGVkQXR0cmlidXRlKHsKKyAgICAgICAgc291cmNlOiB0b2tlbmlzZXIu
c291cmNlLAorICAgICAgICB0b2tlbnM6IHsgbmFtZSB9LAorICAgICAgICBwYXJhbXM6IEV4dGVu
ZGVkQXR0cmlidXRlUGFyYW1ldGVycy5wYXJzZSh0b2tlbmlzZXIpLAorICAgICAgfSk7CisgICAg
fQorICB9CisKKyAgY29uc3RydWN0b3IoeyBzb3VyY2UsIHRva2VucywgcGFyYW1zIH0pIHsKKyAg
ICBzdXBlcih7IHNvdXJjZSwgdG9rZW5zIH0pOworICAgIHBhcmFtcy5wYXJlbnQgPSB0aGlzOwor
ICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCAicGFyYW1zIiwgeyB2YWx1ZTogcGFyYW1z
IH0pOworICB9CisKKyAgZ2V0IHR5cGUoKSB7CisgICAgcmV0dXJuICJleHRlbmRlZC1hdHRyaWJ1
dGUiOworICB9CisgIGdldCBuYW1lKCkgeworICAgIHJldHVybiB0aGlzLnRva2Vucy5uYW1lLnZh
bHVlOworICB9CisgIGdldCByaHMoKSB7CisgICAgY29uc3QgeyByaHNUeXBlOiB0eXBlLCB0b2tl
bnMsIGxpc3QgfSA9IHRoaXMucGFyYW1zOworICAgIGlmICghdHlwZSkgeworICAgICAgcmV0dXJu
IG51bGw7CisgICAgfQorICAgIGNvbnN0IHZhbHVlID0gdGhpcy5wYXJhbXMucmhzSXNMaXN0Cisg
ICAgICA/IGxpc3QKKyAgICAgIDogKDAsX2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9E
VUxFXzNfXy51bmVzY2FwZSkodG9rZW5zLnNlY29uZGFyeU5hbWUudmFsdWUpOworICAgIHJldHVy
biB7IHR5cGUsIHZhbHVlIH07CisgIH0KKyAgZ2V0IGFyZ3VtZW50cygpIHsKKyAgICBjb25zdCB7
IHJoc0lzTGlzdCwgbGlzdCB9ID0gdGhpcy5wYXJhbXM7CisgICAgaWYgKCFsaXN0IHx8IHJoc0lz
TGlzdCkgeworICAgICAgcmV0dXJuIFtdOworICAgIH0KKyAgICByZXR1cm4gbGlzdDsKKyAgfQor
CisgICp2YWxpZGF0ZShkZWZzKSB7CisgICAgY29uc3QgeyBuYW1lIH0gPSB0aGlzOworICAgIGlm
IChuYW1lID09PSAiTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QiKSB7CisgICAgICBjb25zdCBtZXNz
YWdlID0gYFxgW0xlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0XVxgIGV4dGVuZGVkIGF0dHJpYnV0ZSBp
cyBhbiBcCit1bmRlc2lyYWJsZSBmZWF0dXJlIHRoYXQgbWF5IGJlIHJlbW92ZWQgZnJvbSBXZWIg
SURMIGluIHRoZSBmdXR1cmUuIFJlZmVyIHRvIHRoZSBcCitbcmVsZXZhbnQgdXBzdHJlYW0gUFJd
KGh0dHBzOi8vZ2l0aHViLmNvbS9oZXljYW0vd2ViaWRsL3B1bGwvNjA5KSBmb3IgbW9yZSBcCitp
bmZvcm1hdGlvbi5gOworICAgICAgeWllbGQgKDAsX2Vycm9yX2pzX19XRUJQQUNLX0lNUE9SVEVE
X01PRFVMRV80X18udmFsaWRhdGlvbkVycm9yKSgKKyAgICAgICAgdGhpcy50b2tlbnMubmFtZSwK
KyAgICAgICAgdGhpcywKKyAgICAgICAgIm5vLW5vaW50ZXJmYWNlb2JqZWN0IiwKKyAgICAgICAg
bWVzc2FnZSwKKyAgICAgICAgeyBsZXZlbDogIndhcm5pbmciIH0KKyAgICAgICk7CisgICAgfSBl
bHNlIGlmIChyZW5hbWVkTGVnYWNpZXMuaGFzKG5hbWUpKSB7CisgICAgICBjb25zdCBtZXNzYWdl
ID0gYFxgWyR7bmFtZX1dXGAgZXh0ZW5kZWQgYXR0cmlidXRlIGlzIGEgbGVnYWN5IGZlYXR1cmUg
XAordGhhdCBpcyBub3cgcmVuYW1lZCB0byBcYFske3JlbmFtZWRMZWdhY2llcy5nZXQobmFtZSl9
XVxgLiBSZWZlciB0byB0aGUgXAorW3JlbGV2YW50IHVwc3RyZWFtIFBSXShodHRwczovL2dpdGh1
Yi5jb20vaGV5Y2FtL3dlYmlkbC9wdWxsLzg3MCkgZm9yIG1vcmUgXAoraW5mb3JtYXRpb24uYDsK
KyAgICAgIHlpZWxkICgwLF9lcnJvcl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fLnZh
bGlkYXRpb25FcnJvcikodGhpcy50b2tlbnMubmFtZSwgdGhpcywgInJlbmFtZWQtbGVnYWN5Iiwg
bWVzc2FnZSwgeworICAgICAgICBsZXZlbDogIndhcm5pbmciLAorICAgICAgICBhdXRvZml4OiBy
ZW5hbWVMZWdhY3lFeHRlbmRlZEF0dHJpYnV0ZSh0aGlzKSwKKyAgICAgIH0pOworICAgIH0KKyAg
ICBmb3IgKGNvbnN0IGFyZyBvZiB0aGlzLmFyZ3VtZW50cykgeworICAgICAgeWllbGQqIGFyZy52
YWxpZGF0ZShkZWZzKTsKKyAgICB9CisgIH0KKworICAvKiogQHBhcmFtIHtpbXBvcnQoIi4uL3dy
aXRlci5qcyIpLldyaXRlcil9IHcgKi8KKyAgd3JpdGUodykgeworICAgIHJldHVybiB3LnRzLndy
YXAoWworICAgICAgdy50cy50cml2aWEodGhpcy50b2tlbnMubmFtZS50cml2aWEpLAorICAgICAg
dy50cy5leHRlbmRlZEF0dHJpYnV0ZSgKKyAgICAgICAgdy50cy53cmFwKFsKKyAgICAgICAgICB3
LnRzLmV4dGVuZGVkQXR0cmlidXRlUmVmZXJlbmNlKHRoaXMubmFtZSksCisgICAgICAgICAgdGhp
cy5wYXJhbXMud3JpdGUodyksCisgICAgICAgIF0pCisgICAgICApLAorICAgICAgdy50b2tlbih0
aGlzLnRva2Vucy5zZXBhcmF0b3IpLAorICAgIF0pOworICB9Cit9CisKKy8qKgorICogQHBhcmFt
IHtTaW1wbGVFeHRlbmRlZEF0dHJpYnV0ZX0gZXh0QXR0cgorICovCitmdW5jdGlvbiByZW5hbWVM
ZWdhY3lFeHRlbmRlZEF0dHJpYnV0ZShleHRBdHRyKSB7CisgIHJldHVybiAoKSA9PiB7CisgICAg
Y29uc3QgeyBuYW1lIH0gPSBleHRBdHRyOworICAgIGV4dEF0dHIudG9rZW5zLm5hbWUudmFsdWUg
PSByZW5hbWVkTGVnYWNpZXMuZ2V0KG5hbWUpOworICAgIGlmIChuYW1lID09PSAiVHJlYXROdWxs
QXMiKSB7CisgICAgICBleHRBdHRyLnBhcmFtcy50b2tlbnMgPSB7fTsKKyAgICB9CisgIH07Cit9
CisKKy8vIE5vdGU6IHdlIHBhcnNlIHNvbWV0aGluZyBzaW1wbGVyIHRoYW4gdGhlIG9mZmljaWFs
IHN5bnRheC4gSXQncyBhbGwgdGhhdCBldmVyCisvLyBzZWVtcyB0byBiZSB1c2VkCitjbGFzcyBF
eHRlbmRlZEF0dHJpYnV0ZXMgZXh0ZW5kcyBfYXJyYXlfYmFzZV9qc19fV0VCUEFDS19JTVBPUlRF
RF9NT0RVTEVfMV9fLkFycmF5QmFzZSB7CisgIC8qKgorICAgKiBAcGFyYW0ge2ltcG9ydCgiLi4v
dG9rZW5pc2VyIikuVG9rZW5pc2VyfSB0b2tlbmlzZXIKKyAgICovCisgIHN0YXRpYyBwYXJzZSh0
b2tlbmlzZXIpIHsKKyAgICBjb25zdCB0b2tlbnMgPSB7fTsKKyAgICB0b2tlbnMub3BlbiA9IHRv
a2VuaXNlci5jb25zdW1lKCJbIik7CisgICAgaWYgKCF0b2tlbnMub3BlbikgcmV0dXJuIG5ldyBF
eHRlbmRlZEF0dHJpYnV0ZXMoe30pOworICAgIGNvbnN0IHJldCA9IG5ldyBFeHRlbmRlZEF0dHJp
YnV0ZXMoeyBzb3VyY2U6IHRva2VuaXNlci5zb3VyY2UsIHRva2VucyB9KTsKKyAgICByZXQucHVz
aCgKKyAgICAgIC4uLigwLF9oZWxwZXJzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX18u
bGlzdCkodG9rZW5pc2VyLCB7CisgICAgICAgIHBhcnNlcjogU2ltcGxlRXh0ZW5kZWRBdHRyaWJ1
dGUucGFyc2UsCisgICAgICAgIGxpc3ROYW1lOiAiZXh0ZW5kZWQgYXR0cmlidXRlIiwKKyAgICAg
IH0pCisgICAgKTsKKyAgICB0b2tlbnMuY2xvc2UgPQorICAgICAgdG9rZW5pc2VyLmNvbnN1bWUo
Il0iKSB8fAorICAgICAgdG9rZW5pc2VyLmVycm9yKCJVbmV4cGVjdGVkIGNsb3NpbmcgdG9rZW4g
b2YgZXh0ZW5kZWQgYXR0cmlidXRlIik7CisgICAgaWYgKCFyZXQubGVuZ3RoKSB7CisgICAgICB0
b2tlbmlzZXIuZXJyb3IoIkZvdW5kIGFuIGVtcHR5IGV4dGVuZGVkIGF0dHJpYnV0ZSIpOworICAg
IH0KKyAgICBpZiAodG9rZW5pc2VyLnByb2JlKCJbIikpIHsKKyAgICAgIHRva2VuaXNlci5lcnJv
cigKKyAgICAgICAgIklsbGVnYWwgZG91YmxlIGV4dGVuZGVkIGF0dHJpYnV0ZSBsaXN0cywgY29u
c2lkZXIgbWVyZ2luZyB0aGVtIgorICAgICAgKTsKKyAgICB9CisgICAgcmV0dXJuIHJldDsKKyAg
fQorCisgICp2YWxpZGF0ZShkZWZzKSB7CisgICAgZm9yIChjb25zdCBleHRBdHRyIG9mIHRoaXMp
IHsKKyAgICAgIHlpZWxkKiBleHRBdHRyLnZhbGlkYXRlKGRlZnMpOworICAgIH0KKyAgfQorCisg
IC8qKiBAcGFyYW0ge2ltcG9ydCgiLi4vd3JpdGVyLmpzIikuV3JpdGVyKX0gdyAqLworICB3cml0
ZSh3KSB7CisgICAgaWYgKCF0aGlzLmxlbmd0aCkgcmV0dXJuICIiOworICAgIHJldHVybiB3LnRz
LndyYXAoWworICAgICAgdy50b2tlbih0aGlzLnRva2Vucy5vcGVuKSwKKyAgICAgIC4uLnRoaXMu
bWFwKChlYSkgPT4gZWEud3JpdGUodykpLAorICAgICAgdy50b2tlbih0aGlzLnRva2Vucy5jbG9z
ZSksCisgICAgXSk7CisgIH0KK30KKworCisvKioqLyB9KSwKKy8qIDkgKi8KKy8qKiovICgoX191
bnVzZWRfd2VicGFja19fX3dlYnBhY2tfbW9kdWxlX18sIF9fd2VicGFja19leHBvcnRzX18sIF9f
d2VicGFja19yZXF1aXJlX18pID0+IHsKKworX193ZWJwYWNrX3JlcXVpcmVfXy5yKF9fd2VicGFj
a19leHBvcnRzX18pOworLyogaGFybW9ueSBleHBvcnQgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5k
KF9fd2VicGFja19leHBvcnRzX18sIHsKKy8qIGhhcm1vbnkgZXhwb3J0ICovICAgIkFycmF5QmFz
ZSI6ICgpID0+ICgvKiBiaW5kaW5nICovIEFycmF5QmFzZSkKKy8qIGhhcm1vbnkgZXhwb3J0ICov
IH0pOworLy8gQHRzLWNoZWNrCisKK2NsYXNzIEFycmF5QmFzZSBleHRlbmRzIEFycmF5IHsKKyAg
Y29uc3RydWN0b3IoeyBzb3VyY2UsIHRva2VucyB9KSB7CisgICAgc3VwZXIoKTsKKyAgICBPYmpl
Y3QuZGVmaW5lUHJvcGVydGllcyh0aGlzLCB7CisgICAgICBzb3VyY2U6IHsgdmFsdWU6IHNvdXJj
ZSB9LAorICAgICAgdG9rZW5zOiB7IHZhbHVlOiB0b2tlbnMgfSwKKyAgICAgIHBhcmVudDogeyB2
YWx1ZTogbnVsbCwgd3JpdGFibGU6IHRydWUgfSwKKyAgICB9KTsKKyAgfQorfQorCisKKy8qKiov
IH0pLAorLyogMTAgKi8KKy8qKiovICgoX191bnVzZWRfd2VicGFja19fX3dlYnBhY2tfbW9kdWxl
X18sIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pID0+IHsKKworX193
ZWJwYWNrX3JlcXVpcmVfXy5yKF9fd2VicGFja19leHBvcnRzX18pOworLyogaGFybW9ueSBleHBv
cnQgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIHsKKy8qIGhh
cm1vbnkgZXhwb3J0ICovICAgIldyYXBwZWRUb2tlbiI6ICgpID0+ICgvKiBiaW5kaW5nICovIFdy
YXBwZWRUb2tlbikKKy8qIGhhcm1vbnkgZXhwb3J0ICovIH0pOworLyogaGFybW9ueSBpbXBvcnQg
Ki8gdmFyIF9iYXNlX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18gPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDYpOworLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9oZWxwZXJzX2pzX19XRUJQ
QUNLX0lNUE9SVEVEX01PRFVMRV8xX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpOworLy8gQHRz
LWNoZWNrCisKKworCisKK2NsYXNzIFdyYXBwZWRUb2tlbiBleHRlbmRzIF9iYXNlX2pzX19XRUJQ
QUNLX0lNUE9SVEVEX01PRFVMRV8wX18uQmFzZSB7CisgIC8qKgorICAgKiBAcGFyYW0ge2ltcG9y
dCgiLi4vdG9rZW5pc2VyIikuVG9rZW5pc2VyfSB0b2tlbmlzZXIKKyAgICogQHBhcmFtIHtzdHJp
bmd9IHR5cGUKKyAgICovCisgIHN0YXRpYyBwYXJzZXIodG9rZW5pc2VyLCB0eXBlKSB7CisgICAg
cmV0dXJuICgpID0+IHsKKyAgICAgIGNvbnN0IHZhbHVlID0gdG9rZW5pc2VyLmNvbnN1bWVUeXBl
KHR5cGUpOworICAgICAgaWYgKHZhbHVlKSB7CisgICAgICAgIHJldHVybiBuZXcgV3JhcHBlZFRv
a2VuKHsKKyAgICAgICAgICBzb3VyY2U6IHRva2VuaXNlci5zb3VyY2UsCisgICAgICAgICAgdG9r
ZW5zOiB7IHZhbHVlIH0sCisgICAgICAgIH0pOworICAgICAgfQogICAgIH07CisgIH0KKworICBn
ZXQgdmFsdWUoKSB7CisgICAgcmV0dXJuICgwLF9oZWxwZXJzX2pzX19XRUJQQUNLX0lNUE9SVEVE
X01PRFVMRV8xX18udW5lc2NhcGUpKHRoaXMudG9rZW5zLnZhbHVlLnZhbHVlKTsKKyAgfQorfQor
CisKKy8qKiovIH0pLAorLyogMTEgKi8KKy8qKiovICgoX191bnVzZWRfd2VicGFja19fX3dlYnBh
Y2tfbW9kdWxlX18sIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pID0+
IHsKKworX193ZWJwYWNrX3JlcXVpcmVfXy5yKF9fd2VicGFja19leHBvcnRzX18pOworLyogaGFy
bW9ueSBleHBvcnQgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18s
IHsKKy8qIGhhcm1vbnkgZXhwb3J0ICovICAgIkFyZ3VtZW50IjogKCkgPT4gKC8qIGJpbmRpbmcg
Ki8gQXJndW1lbnQpCisvKiBoYXJtb255IGV4cG9ydCAqLyB9KTsKKy8qIGhhcm1vbnkgaW1wb3J0
ICovIHZhciBfYmFzZV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fID0gX193ZWJwYWNr
X3JlcXVpcmVfXyg2KTsKKy8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfZGVmYXVsdF9qc19fV0VC
UEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMik7CisvKiBo
YXJtb255IGltcG9ydCAqLyB2YXIgX2V4dGVuZGVkX2F0dHJpYnV0ZXNfanNfX1dFQlBBQ0tfSU1Q
T1JURURfTU9EVUxFXzJfXyA9IF9fd2VicGFja19yZXF1aXJlX18oOCk7CisvKiBoYXJtb255IGlt
cG9ydCAqLyB2YXIgX2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfXyA9IF9f
d2VicGFja19yZXF1aXJlX18oNCk7CisvKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX3Rva2VuaXNl
cl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygy
KTsKKy8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfZXJyb3JfanNfX1dFQlBBQ0tfSU1QT1JURURf
TU9EVUxFXzVfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7CisvKiBoYXJtb255IGltcG9ydCAq
LyB2YXIgX3ZhbGlkYXRvcnNfaGVscGVyc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNl9f
ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3KTsKKy8vIEB0cy1jaGVjaworCisKIAotICAgIHZhciBp
bk5vZGUgPSB0eXBlb2YgbW9kdWxlICE9PSAidW5kZWZpbmVkIiAmJiBtb2R1bGUuZXhwb3J0cwot
ICAgICwgICBvYmogPSB7Ci0gICAgICAgICAgICBwYXJzZTogIGZ1bmN0aW9uIChzdHIsIG9wdCkg
ewotICAgICAgICAgICAgICAgIGlmICghb3B0KSBvcHQgPSB7fTsKLSAgICAgICAgICAgICAgICB2
YXIgdG9rZW5zID0gdG9rZW5pc2Uoc3RyKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2Uo
dG9rZW5zLCBvcHQpOworCisKKworCisKKworY2xhc3MgQXJndW1lbnQgZXh0ZW5kcyBfYmFzZV9q
c19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fLkJhc2UgeworICAvKioKKyAgICogQHBhcmFt
IHtpbXBvcnQoIi4uL3Rva2VuaXNlciIpLlRva2VuaXNlcn0gdG9rZW5pc2VyCisgICAqLworICBz
dGF0aWMgcGFyc2UodG9rZW5pc2VyKSB7CisgICAgY29uc3Qgc3RhcnRfcG9zaXRpb24gPSB0b2tl
bmlzZXIucG9zaXRpb247CisgICAgLyoqIEB0eXBlIHtCYXNlWyJ0b2tlbnMiXX0gKi8KKyAgICBj
b25zdCB0b2tlbnMgPSB7fTsKKyAgICBjb25zdCByZXQgPSAoMCxfaGVscGVyc19qc19fV0VCUEFD
S19JTVBPUlRFRF9NT0RVTEVfM19fLmF1dG9QYXJlbnRlcikoCisgICAgICBuZXcgQXJndW1lbnQo
eyBzb3VyY2U6IHRva2VuaXNlci5zb3VyY2UsIHRva2VucyB9KQorICAgICk7CisgICAgcmV0LmV4
dEF0dHJzID0gX2V4dGVuZGVkX2F0dHJpYnV0ZXNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxF
XzJfXy5FeHRlbmRlZEF0dHJpYnV0ZXMucGFyc2UodG9rZW5pc2VyKTsKKyAgICB0b2tlbnMub3B0
aW9uYWwgPSB0b2tlbmlzZXIuY29uc3VtZSgib3B0aW9uYWwiKTsKKyAgICByZXQuaWRsVHlwZSA9
ICgwLF9oZWxwZXJzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX18udHlwZV93aXRoX2V4
dGVuZGVkX2F0dHJpYnV0ZXMpKHRva2VuaXNlciwgImFyZ3VtZW50LXR5cGUiKTsKKyAgICBpZiAo
IXJldC5pZGxUeXBlKSB7CisgICAgICByZXR1cm4gdG9rZW5pc2VyLnVuY29uc3VtZShzdGFydF9w
b3NpdGlvbik7CisgICAgfQorICAgIGlmICghdG9rZW5zLm9wdGlvbmFsKSB7CisgICAgICB0b2tl
bnMudmFyaWFkaWMgPSB0b2tlbmlzZXIuY29uc3VtZSgiLi4uIik7CisgICAgfQorICAgIHRva2Vu
cy5uYW1lID0KKyAgICAgIHRva2VuaXNlci5jb25zdW1lVHlwZSgiaWRlbnRpZmllciIpIHx8Cisg
ICAgICB0b2tlbmlzZXIuY29uc3VtZSguLi5fdG9rZW5pc2VyX2pzX19XRUJQQUNLX0lNUE9SVEVE
X01PRFVMRV80X18uYXJndW1lbnROYW1lS2V5d29yZHMpOworICAgIGlmICghdG9rZW5zLm5hbWUp
IHsKKyAgICAgIHJldHVybiB0b2tlbmlzZXIudW5jb25zdW1lKHN0YXJ0X3Bvc2l0aW9uKTsKKyAg
ICB9CisgICAgcmV0LmRlZmF1bHQgPSB0b2tlbnMub3B0aW9uYWwgPyBfZGVmYXVsdF9qc19fV0VC
UEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fLkRlZmF1bHQucGFyc2UodG9rZW5pc2VyKSA6IG51bGw7
CisgICAgcmV0dXJuIHJldC50aGlzOworICB9CisKKyAgZ2V0IHR5cGUoKSB7CisgICAgcmV0dXJu
ICJhcmd1bWVudCI7CisgIH0KKyAgZ2V0IG9wdGlvbmFsKCkgeworICAgIHJldHVybiAhIXRoaXMu
dG9rZW5zLm9wdGlvbmFsOworICB9CisgIGdldCB2YXJpYWRpYygpIHsKKyAgICByZXR1cm4gISF0
aGlzLnRva2Vucy52YXJpYWRpYzsKKyAgfQorICBnZXQgbmFtZSgpIHsKKyAgICByZXR1cm4gKDAs
X2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfXy51bmVzY2FwZSkodGhpcy50
b2tlbnMubmFtZS52YWx1ZSk7CisgIH0KKworICAvKioKKyAgICogQHBhcmFtIHtpbXBvcnQoIi4u
L3ZhbGlkYXRvci5qcyIpLkRlZmluaXRpb25zfSBkZWZzCisgICAqLworICAqdmFsaWRhdGUoZGVm
cykgeworICAgIHlpZWxkKiB0aGlzLmV4dEF0dHJzLnZhbGlkYXRlKGRlZnMpOworICAgIHlpZWxk
KiB0aGlzLmlkbFR5cGUudmFsaWRhdGUoZGVmcyk7CisgICAgY29uc3QgcmVzdWx0ID0gKDAsX3Zh
bGlkYXRvcnNfaGVscGVyc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNl9fLmlkbFR5cGVJ
bmNsdWRlc0RpY3Rpb25hcnkpKHRoaXMuaWRsVHlwZSwgZGVmcywgeworICAgICAgdXNlTnVsbGFi
bGVJbm5lcjogdHJ1ZSwKKyAgICB9KTsKKyAgICBpZiAocmVzdWx0KSB7CisgICAgICBpZiAodGhp
cy5pZGxUeXBlLm51bGxhYmxlKSB7CisgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgRGljdGlvbmFy
eSBhcmd1bWVudHMgY2Fubm90IGJlIG51bGxhYmxlLmA7CisgICAgICAgIHlpZWxkICgwLF9lcnJv
cl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fLnZhbGlkYXRpb25FcnJvcikoCisgICAg
ICAgICAgdGhpcy50b2tlbnMubmFtZSwKKyAgICAgICAgICB0aGlzLAorICAgICAgICAgICJuby1u
dWxsYWJsZS1kaWN0LWFyZyIsCisgICAgICAgICAgbWVzc2FnZQorICAgICAgICApOworICAgICAg
fSBlbHNlIGlmICghdGhpcy5vcHRpb25hbCkgeworICAgICAgICBpZiAoCisgICAgICAgICAgdGhp
cy5wYXJlbnQgJiYKKyAgICAgICAgICAhKDAsX3ZhbGlkYXRvcnNfaGVscGVyc19qc19fV0VCUEFD
S19JTVBPUlRFRF9NT0RVTEVfNl9fLmRpY3Rpb25hcnlJbmNsdWRlc1JlcXVpcmVkRmllbGQpKHJl
c3VsdC5kaWN0aW9uYXJ5LCBkZWZzKSAmJgorICAgICAgICAgIGlzTGFzdFJlcXVpcmVkQXJndW1l
bnQodGhpcykKKyAgICAgICAgKSB7CisgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IGBEaWN0aW9u
YXJ5IGFyZ3VtZW50IG11c3QgYmUgb3B0aW9uYWwgaWYgaXQgaGFzIG5vIHJlcXVpcmVkIGZpZWxk
c2A7CisgICAgICAgICAgeWllbGQgKDAsX2Vycm9yX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVM
RV81X18udmFsaWRhdGlvbkVycm9yKSgKKyAgICAgICAgICAgIHRoaXMudG9rZW5zLm5hbWUsCisg
ICAgICAgICAgICB0aGlzLAorICAgICAgICAgICAgImRpY3QtYXJnLW9wdGlvbmFsIiwKKyAgICAg
ICAgICAgIG1lc3NhZ2UsCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGF1dG9maXg6IGF1
dG9maXhEaWN0aW9uYXJ5QXJndW1lbnRPcHRpb25hbGl0eSh0aGlzKSwKICAgICAgICAgICAgIH0K
KyAgICAgICAgICApOworICAgICAgICB9CisgICAgICB9IGVsc2UgaWYgKCF0aGlzLmRlZmF1bHQp
IHsKKyAgICAgICAgY29uc3QgbWVzc2FnZSA9IGBPcHRpb25hbCBkaWN0aW9uYXJ5IGFyZ3VtZW50
cyBtdXN0IGhhdmUgYSBkZWZhdWx0IHZhbHVlIG9mIFxge31cYC5gOworICAgICAgICB5aWVsZCAo
MCxfZXJyb3JfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzVfXy52YWxpZGF0aW9uRXJyb3Ip
KAorICAgICAgICAgIHRoaXMudG9rZW5zLm5hbWUsCisgICAgICAgICAgdGhpcywKKyAgICAgICAg
ICAiZGljdC1hcmctZGVmYXVsdCIsCisgICAgICAgICAgbWVzc2FnZSwKKyAgICAgICAgICB7Cisg
ICAgICAgICAgICBhdXRvZml4OiBhdXRvZml4T3B0aW9uYWxEaWN0aW9uYXJ5RGVmYXVsdFZhbHVl
KHRoaXMpLAorICAgICAgICAgIH0KKyAgICAgICAgKTsKKyAgICAgIH0KKyAgICB9CisgIH0KKwor
ICAvKiogQHBhcmFtIHtpbXBvcnQoIi4uL3dyaXRlci5qcyIpLldyaXRlcn0gdyAqLworICB3cml0
ZSh3KSB7CisgICAgcmV0dXJuIHcudHMud3JhcChbCisgICAgICB0aGlzLmV4dEF0dHJzLndyaXRl
KHcpLAorICAgICAgdy50b2tlbih0aGlzLnRva2Vucy5vcHRpb25hbCksCisgICAgICB3LnRzLnR5
cGUodGhpcy5pZGxUeXBlLndyaXRlKHcpKSwKKyAgICAgIHcudG9rZW4odGhpcy50b2tlbnMudmFy
aWFkaWMpLAorICAgICAgdy5uYW1lX3Rva2VuKHRoaXMudG9rZW5zLm5hbWUsIHsgZGF0YTogdGhp
cyB9KSwKKyAgICAgIHRoaXMuZGVmYXVsdCA/IHRoaXMuZGVmYXVsdC53cml0ZSh3KSA6ICIiLAor
ICAgICAgdy50b2tlbih0aGlzLnRva2Vucy5zZXBhcmF0b3IpLAorICAgIF0pOworICB9Cit9CisK
Ky8qKgorICogQHBhcmFtIHtBcmd1bWVudH0gYXJnCisgKi8KK2Z1bmN0aW9uIGlzTGFzdFJlcXVp
cmVkQXJndW1lbnQoYXJnKSB7CisgIGNvbnN0IGxpc3QgPSBhcmcucGFyZW50LmFyZ3VtZW50cyB8
fCBhcmcucGFyZW50Lmxpc3Q7CisgIGNvbnN0IGluZGV4ID0gbGlzdC5pbmRleE9mKGFyZyk7Cisg
IGNvbnN0IHJlcXVpcmVkRXhpc3RzID0gbGlzdC5zbGljZShpbmRleCArIDEpLnNvbWUoKGEpID0+
ICFhLm9wdGlvbmFsKTsKKyAgcmV0dXJuICFyZXF1aXJlZEV4aXN0czsKK30KKworLyoqCisgKiBA
cGFyYW0ge0FyZ3VtZW50fSBhcmcKKyAqLworZnVuY3Rpb24gYXV0b2ZpeERpY3Rpb25hcnlBcmd1
bWVudE9wdGlvbmFsaXR5KGFyZykgeworICByZXR1cm4gKCkgPT4geworICAgIGNvbnN0IGZpcnN0
VG9rZW4gPSAoMCxfaGVscGVyc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fLmdldEZp
cnN0VG9rZW4pKGFyZy5pZGxUeXBlKTsKKyAgICBhcmcudG9rZW5zLm9wdGlvbmFsID0geworICAg
ICAgdHlwZTogIm9wdGlvbmFsIiwKKyAgICAgIHZhbHVlOiAib3B0aW9uYWwiLAorICAgICAgdHJp
dmlhOiBmaXJzdFRva2VuLnRyaXZpYSwKKyAgICB9OworICAgIGZpcnN0VG9rZW4udHJpdmlhID0g
IiAiOworICAgIGF1dG9maXhPcHRpb25hbERpY3Rpb25hcnlEZWZhdWx0VmFsdWUoYXJnKSgpOwor
ICB9OworfQorCisvKioKKyAqIEBwYXJhbSB7QXJndW1lbnR9IGFyZworICovCitmdW5jdGlvbiBh
dXRvZml4T3B0aW9uYWxEaWN0aW9uYXJ5RGVmYXVsdFZhbHVlKGFyZykgeworICByZXR1cm4gKCkg
PT4geworICAgIGFyZy5kZWZhdWx0ID0gX2RlZmF1bHRfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9E
VUxFXzFfXy5EZWZhdWx0LnBhcnNlKG5ldyBfdG9rZW5pc2VyX2pzX19XRUJQQUNLX0lNUE9SVEVE
X01PRFVMRV80X18uVG9rZW5pc2VyKCIgPSB7fSIpKTsKKyAgfTsKK30KKworCisvKioqLyB9KSwK
Ky8qIDEyICovCisvKioqLyAoKF9fdW51c2VkX3dlYnBhY2tfX193ZWJwYWNrX21vZHVsZV9fLCBf
X3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSA9PiB7CisKK19fd2VicGFj
a19yZXF1aXJlX18ucihfX3dlYnBhY2tfZXhwb3J0c19fKTsKKy8qIGhhcm1vbnkgZXhwb3J0ICov
IF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCB7CisvKiBoYXJtb255
IGV4cG9ydCAqLyAgICJEZWZhdWx0IjogKCkgPT4gKC8qIGJpbmRpbmcgKi8gRGVmYXVsdCkKKy8q
IGhhcm1vbnkgZXhwb3J0ICovIH0pOworLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9iYXNlX2pz
X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpOwor
LyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9oZWxwZXJzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01P
RFVMRV8xX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpOworCisKKworY2xhc3MgRGVmYXVsdCBl
eHRlbmRzIF9iYXNlX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18uQmFzZSB7CisgIC8q
KgorICAgKiBAcGFyYW0ge2ltcG9ydCgiLi4vdG9rZW5pc2VyIikuVG9rZW5pc2VyfSB0b2tlbmlz
ZXIKKyAgICovCisgIHN0YXRpYyBwYXJzZSh0b2tlbmlzZXIpIHsKKyAgICBjb25zdCBhc3NpZ24g
PSB0b2tlbmlzZXIuY29uc3VtZSgiPSIpOworICAgIGlmICghYXNzaWduKSB7CisgICAgICByZXR1
cm4gbnVsbDsKKyAgICB9CisgICAgY29uc3QgZGVmID0KKyAgICAgICgwLF9oZWxwZXJzX2pzX19X
RUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18uY29uc3RfdmFsdWUpKHRva2VuaXNlcikgfHwKKyAg
ICAgIHRva2VuaXNlci5jb25zdW1lVHlwZSgic3RyaW5nIikgfHwKKyAgICAgIHRva2VuaXNlci5j
b25zdW1lKCJudWxsIiwgIlsiLCAieyIpIHx8CisgICAgICB0b2tlbmlzZXIuZXJyb3IoIk5vIHZh
bHVlIGZvciBkZWZhdWx0Iik7CisgICAgY29uc3QgZXhwcmVzc2lvbiA9IFtkZWZdOworICAgIGlm
IChkZWYudmFsdWUgPT09ICJbIikgeworICAgICAgY29uc3QgY2xvc2UgPQorICAgICAgICB0b2tl
bmlzZXIuY29uc3VtZSgiXSIpIHx8CisgICAgICAgIHRva2VuaXNlci5lcnJvcigiRGVmYXVsdCBz
ZXF1ZW5jZSB2YWx1ZSBtdXN0IGJlIGVtcHR5Iik7CisgICAgICBleHByZXNzaW9uLnB1c2goY2xv
c2UpOworICAgIH0gZWxzZSBpZiAoZGVmLnZhbHVlID09PSAieyIpIHsKKyAgICAgIGNvbnN0IGNs
b3NlID0KKyAgICAgICAgdG9rZW5pc2VyLmNvbnN1bWUoIn0iKSB8fAorICAgICAgICB0b2tlbmlz
ZXIuZXJyb3IoIkRlZmF1bHQgZGljdGlvbmFyeSB2YWx1ZSBtdXN0IGJlIGVtcHR5Iik7CisgICAg
ICBleHByZXNzaW9uLnB1c2goY2xvc2UpOworICAgIH0KKyAgICByZXR1cm4gbmV3IERlZmF1bHQo
eworICAgICAgc291cmNlOiB0b2tlbmlzZXIuc291cmNlLAorICAgICAgdG9rZW5zOiB7IGFzc2ln
biB9LAorICAgICAgZXhwcmVzc2lvbiwKKyAgICB9KTsKKyAgfQorCisgIGNvbnN0cnVjdG9yKHsg
c291cmNlLCB0b2tlbnMsIGV4cHJlc3Npb24gfSkgeworICAgIHN1cGVyKHsgc291cmNlLCB0b2tl
bnMgfSk7CisgICAgZXhwcmVzc2lvbi5wYXJlbnQgPSB0aGlzOworICAgIE9iamVjdC5kZWZpbmVQ
cm9wZXJ0eSh0aGlzLCAiZXhwcmVzc2lvbiIsIHsgdmFsdWU6IGV4cHJlc3Npb24gfSk7CisgIH0K
KworICBnZXQgdHlwZSgpIHsKKyAgICByZXR1cm4gKDAsX2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1Q
T1JURURfTU9EVUxFXzFfXy5jb25zdF9kYXRhKSh0aGlzLmV4cHJlc3Npb25bMF0pLnR5cGU7Cisg
IH0KKyAgZ2V0IHZhbHVlKCkgeworICAgIHJldHVybiAoMCxfaGVscGVyc19qc19fV0VCUEFDS19J
TVBPUlRFRF9NT0RVTEVfMV9fLmNvbnN0X2RhdGEpKHRoaXMuZXhwcmVzc2lvblswXSkudmFsdWU7
CisgIH0KKyAgZ2V0IG5lZ2F0aXZlKCkgeworICAgIHJldHVybiAoMCxfaGVscGVyc19qc19fV0VC
UEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fLmNvbnN0X2RhdGEpKHRoaXMuZXhwcmVzc2lvblswXSku
bmVnYXRpdmU7CisgIH0KKworICAvKiogQHBhcmFtIHtpbXBvcnQoIi4uL3dyaXRlci5qcyIpLldy
aXRlcil9IHcgKi8KKyAgd3JpdGUodykgeworICAgIHJldHVybiB3LnRzLndyYXAoWworICAgICAg
dy50b2tlbih0aGlzLnRva2Vucy5hc3NpZ24pLAorICAgICAgLi4udGhpcy5leHByZXNzaW9uLm1h
cCgodCkgPT4gdy50b2tlbih0KSksCisgICAgXSk7CisgIH0KK30KKworCisvKioqLyB9KSwKKy8q
IDEzICovCisvKioqLyAoKF9fdW51c2VkX3dlYnBhY2tfX193ZWJwYWNrX21vZHVsZV9fLCBfX3dl
YnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSA9PiB7CisKK19fd2VicGFja19y
ZXF1aXJlX18ucihfX3dlYnBhY2tfZXhwb3J0c19fKTsKKy8qIGhhcm1vbnkgZXhwb3J0ICovIF9f
d2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCB7CisvKiBoYXJtb255IGV4
cG9ydCAqLyAgICJPcGVyYXRpb24iOiAoKSA9PiAoLyogYmluZGluZyAqLyBPcGVyYXRpb24pCisv
KiBoYXJtb255IGV4cG9ydCAqLyB9KTsKKy8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfYmFzZV9q
c19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2KTsK
Ky8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfaGVscGVyc19qc19fV0VCUEFDS19JTVBPUlRFRF9N
T0RVTEVfMV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTsKKy8qIGhhcm1vbnkgaW1wb3J0ICov
IHZhciBfZXJyb3JfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXyA9IF9fd2VicGFja19y
ZXF1aXJlX18oMyk7CisKKworCisKK2NsYXNzIE9wZXJhdGlvbiBleHRlbmRzIF9iYXNlX2pzX19X
RUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18uQmFzZSB7CisgIC8qKgorICAgKiBAdHlwZWRlZiB7
aW1wb3J0KCIuLi90b2tlbmlzZXIuanMiKS5Ub2tlbn0gVG9rZW4KKyAgICoKKyAgICogQHBhcmFt
IHtpbXBvcnQoIi4uL3Rva2VuaXNlci5qcyIpLlRva2VuaXNlcn0gdG9rZW5pc2VyCisgICAqIEBw
YXJhbSB7b2JqZWN0fSBbb3B0aW9uc10KKyAgICogQHBhcmFtIHtUb2tlbn0gW29wdGlvbnMuc3Bl
Y2lhbF0KKyAgICogQHBhcmFtIHtUb2tlbn0gW29wdGlvbnMucmVndWxhcl0KKyAgICovCisgIHN0
YXRpYyBwYXJzZSh0b2tlbmlzZXIsIHsgc3BlY2lhbCwgcmVndWxhciB9ID0ge30pIHsKKyAgICBj
b25zdCB0b2tlbnMgPSB7IHNwZWNpYWwgfTsKKyAgICBjb25zdCByZXQgPSAoMCxfaGVscGVyc19q
c19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fLmF1dG9QYXJlbnRlcikoCisgICAgICBuZXcg
T3BlcmF0aW9uKHsgc291cmNlOiB0b2tlbmlzZXIuc291cmNlLCB0b2tlbnMgfSkKKyAgICApOwor
ICAgIGlmIChzcGVjaWFsICYmIHNwZWNpYWwudmFsdWUgPT09ICJzdHJpbmdpZmllciIpIHsKKyAg
ICAgIHRva2Vucy50ZXJtaW5hdGlvbiA9IHRva2VuaXNlci5jb25zdW1lKCI7Iik7CisgICAgICBp
ZiAodG9rZW5zLnRlcm1pbmF0aW9uKSB7CisgICAgICAgIHJldC5hcmd1bWVudHMgPSBbXTsKKyAg
ICAgICAgcmV0dXJuIHJldDsKKyAgICAgIH0KKyAgICB9CisgICAgaWYgKCFzcGVjaWFsICYmICFy
ZWd1bGFyKSB7CisgICAgICB0b2tlbnMuc3BlY2lhbCA9IHRva2VuaXNlci5jb25zdW1lKCJnZXR0
ZXIiLCAic2V0dGVyIiwgImRlbGV0ZXIiKTsKKyAgICB9CisgICAgcmV0LmlkbFR5cGUgPQorICAg
ICAgKDAsX2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXy5yZXR1cm5fdHlw
ZSkodG9rZW5pc2VyKSB8fCB0b2tlbmlzZXIuZXJyb3IoIk1pc3NpbmcgcmV0dXJuIHR5cGUiKTsK
KyAgICB0b2tlbnMubmFtZSA9CisgICAgICB0b2tlbmlzZXIuY29uc3VtZVR5cGUoImlkZW50aWZp
ZXIiKSB8fCB0b2tlbmlzZXIuY29uc3VtZSgiaW5jbHVkZXMiKTsKKyAgICB0b2tlbnMub3BlbiA9
CisgICAgICB0b2tlbmlzZXIuY29uc3VtZSgiKCIpIHx8IHRva2VuaXNlci5lcnJvcigiSW52YWxp
ZCBvcGVyYXRpb24iKTsKKyAgICByZXQuYXJndW1lbnRzID0gKDAsX2hlbHBlcnNfanNfX1dFQlBB
Q0tfSU1QT1JURURfTU9EVUxFXzFfXy5hcmd1bWVudF9saXN0KSh0b2tlbmlzZXIpOworICAgIHRv
a2Vucy5jbG9zZSA9CisgICAgICB0b2tlbmlzZXIuY29uc3VtZSgiKSIpIHx8IHRva2VuaXNlci5l
cnJvcigiVW50ZXJtaW5hdGVkIG9wZXJhdGlvbiIpOworICAgIHRva2Vucy50ZXJtaW5hdGlvbiA9
CisgICAgICB0b2tlbmlzZXIuY29uc3VtZSgiOyIpIHx8CisgICAgICB0b2tlbmlzZXIuZXJyb3Io
IlVudGVybWluYXRlZCBvcGVyYXRpb24sIGV4cGVjdGVkIGA7YCIpOworICAgIHJldHVybiByZXQu
dGhpczsKKyAgfQorCisgIGdldCB0eXBlKCkgeworICAgIHJldHVybiAib3BlcmF0aW9uIjsKKyAg
fQorICBnZXQgbmFtZSgpIHsKKyAgICBjb25zdCB7IG5hbWUgfSA9IHRoaXMudG9rZW5zOworICAg
IGlmICghbmFtZSkgeworICAgICAgcmV0dXJuICIiOworICAgIH0KKyAgICByZXR1cm4gKDAsX2hl
bHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXy51bmVzY2FwZSkobmFtZS52YWx1
ZSk7CisgIH0KKyAgZ2V0IHNwZWNpYWwoKSB7CisgICAgaWYgKCF0aGlzLnRva2Vucy5zcGVjaWFs
KSB7CisgICAgICByZXR1cm4gIiI7CisgICAgfQorICAgIHJldHVybiB0aGlzLnRva2Vucy5zcGVj
aWFsLnZhbHVlOworICB9CisKKyAgKnZhbGlkYXRlKGRlZnMpIHsKKyAgICB5aWVsZCogdGhpcy5l
eHRBdHRycy52YWxpZGF0ZShkZWZzKTsKKyAgICBpZiAoIXRoaXMubmFtZSAmJiBbIiIsICJzdGF0
aWMiXS5pbmNsdWRlcyh0aGlzLnNwZWNpYWwpKSB7CisgICAgICBjb25zdCBtZXNzYWdlID0gYFJl
Z3VsYXIgb3Igc3RhdGljIG9wZXJhdGlvbnMgbXVzdCBoYXZlIGJvdGggYSByZXR1cm4gdHlwZSBh
bmQgYW4gaWRlbnRpZmllci5gOworICAgICAgeWllbGQgKDAsX2Vycm9yX2pzX19XRUJQQUNLX0lN
UE9SVEVEX01PRFVMRV8yX18udmFsaWRhdGlvbkVycm9yKSh0aGlzLnRva2Vucy5vcGVuLCB0aGlz
LCAiaW5jb21wbGV0ZS1vcCIsIG1lc3NhZ2UpOworICAgIH0KKyAgICBpZiAodGhpcy5pZGxUeXBl
KSB7CisgICAgICB5aWVsZCogdGhpcy5pZGxUeXBlLnZhbGlkYXRlKGRlZnMpOworICAgIH0KKyAg
ICBmb3IgKGNvbnN0IGFyZ3VtZW50IG9mIHRoaXMuYXJndW1lbnRzKSB7CisgICAgICB5aWVsZCog
YXJndW1lbnQudmFsaWRhdGUoZGVmcyk7CisgICAgfQorICB9CisKKyAgLyoqIEBwYXJhbSB7aW1w
b3J0KCIuLi93cml0ZXIuanMiKS5Xcml0ZXJ9IHcgKi8KKyAgd3JpdGUodykgeworICAgIGNvbnN0
IHsgcGFyZW50IH0gPSB0aGlzOworICAgIGNvbnN0IGJvZHkgPSB0aGlzLmlkbFR5cGUKKyAgICAg
ID8gWworICAgICAgICAgIHcudHMudHlwZSh0aGlzLmlkbFR5cGUud3JpdGUodykpLAorICAgICAg
ICAgIHcubmFtZV90b2tlbih0aGlzLnRva2Vucy5uYW1lLCB7IGRhdGE6IHRoaXMsIHBhcmVudCB9
KSwKKyAgICAgICAgICB3LnRva2VuKHRoaXMudG9rZW5zLm9wZW4pLAorICAgICAgICAgIHcudHMu
d3JhcCh0aGlzLmFyZ3VtZW50cy5tYXAoKGFyZykgPT4gYXJnLndyaXRlKHcpKSksCisgICAgICAg
ICAgdy50b2tlbih0aGlzLnRva2Vucy5jbG9zZSksCisgICAgICAgIF0KKyAgICAgIDogW107Cisg
ICAgcmV0dXJuIHcudHMuZGVmaW5pdGlvbigKKyAgICAgIHcudHMud3JhcChbCisgICAgICAgIHRo
aXMuZXh0QXR0cnMud3JpdGUodyksCisgICAgICAgIHRoaXMudG9rZW5zLm5hbWUKKyAgICAgICAg
ICA/IHcudG9rZW4odGhpcy50b2tlbnMuc3BlY2lhbCkKKyAgICAgICAgICA6IHcudG9rZW4odGhp
cy50b2tlbnMuc3BlY2lhbCwgdy50cy5uYW1lbGVzcywgeyBkYXRhOiB0aGlzLCBwYXJlbnQgfSks
CisgICAgICAgIC4uLmJvZHksCisgICAgICAgIHcudG9rZW4odGhpcy50b2tlbnMudGVybWluYXRp
b24pLAorICAgICAgXSksCisgICAgICB7IGRhdGE6IHRoaXMsIHBhcmVudCB9CisgICAgKTsKKyAg
fQorfQorCisKKy8qKiovIH0pLAorLyogMTQgKi8KKy8qKiovICgoX191bnVzZWRfd2VicGFja19f
X3dlYnBhY2tfbW9kdWxlX18sIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJl
X18pID0+IHsKKworX193ZWJwYWNrX3JlcXVpcmVfXy5yKF9fd2VicGFja19leHBvcnRzX18pOwor
LyogaGFybW9ueSBleHBvcnQgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBv
cnRzX18sIHsKKy8qIGhhcm1vbnkgZXhwb3J0ICovICAgIkF0dHJpYnV0ZSI6ICgpID0+ICgvKiBi
aW5kaW5nICovIEF0dHJpYnV0ZSkKKy8qIGhhcm1vbnkgZXhwb3J0ICovIH0pOworLyogaGFybW9u
eSBpbXBvcnQgKi8gdmFyIF9lcnJvcl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fID0g
X193ZWJwYWNrX3JlcXVpcmVfXygzKTsKKy8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfdmFsaWRh
dG9yc19oZWxwZXJzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18gPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDcpOworLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9iYXNlX2pzX19XRUJQQUNL
X0lNUE9SVEVEX01PRFVMRV8yX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpOworLyogaGFybW9u
eSBpbXBvcnQgKi8gdmFyIF9oZWxwZXJzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX18g
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpOworLy8gQHRzLWNoZWNrCisKKworCisKKworCitjbGFz
cyBBdHRyaWJ1dGUgZXh0ZW5kcyBfYmFzZV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9f
LkJhc2UgeworICAvKioKKyAgICogQHBhcmFtIHtpbXBvcnQoIi4uL3Rva2VuaXNlci5qcyIpLlRv
a2VuaXNlcn0gdG9rZW5pc2VyCisgICAqIEBwYXJhbSB7b2JqZWN0fSBbb3B0aW9uc10KKyAgICog
QHBhcmFtIHtpbXBvcnQoIi4uL3Rva2VuaXNlci5qcyIpLlRva2VufSBbb3B0aW9ucy5zcGVjaWFs
XQorICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLm5vSW5oZXJpdF0KKyAgICogQHBhcmFt
IHtib29sZWFufSBbb3B0aW9ucy5yZWFkb25seV0KKyAgICovCisgIHN0YXRpYyBwYXJzZSgKKyAg
ICB0b2tlbmlzZXIsCisgICAgeyBzcGVjaWFsLCBub0luaGVyaXQgPSBmYWxzZSwgcmVhZG9ubHkg
PSBmYWxzZSB9ID0ge30KKyAgKSB7CisgICAgY29uc3Qgc3RhcnRfcG9zaXRpb24gPSB0b2tlbmlz
ZXIucG9zaXRpb247CisgICAgY29uc3QgdG9rZW5zID0geyBzcGVjaWFsIH07CisgICAgY29uc3Qg
cmV0ID0gKDAsX2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfXy5hdXRvUGFy
ZW50ZXIpKAorICAgICAgbmV3IEF0dHJpYnV0ZSh7IHNvdXJjZTogdG9rZW5pc2VyLnNvdXJjZSwg
dG9rZW5zIH0pCisgICAgKTsKKyAgICBpZiAoIXNwZWNpYWwgJiYgIW5vSW5oZXJpdCkgeworICAg
ICAgdG9rZW5zLnNwZWNpYWwgPSB0b2tlbmlzZXIuY29uc3VtZSgiaW5oZXJpdCIpOworICAgIH0K
KyAgICBpZiAocmV0LnNwZWNpYWwgPT09ICJpbmhlcml0IiAmJiB0b2tlbmlzZXIucHJvYmUoInJl
YWRvbmx5IikpIHsKKyAgICAgIHRva2VuaXNlci5lcnJvcigiSW5oZXJpdGVkIGF0dHJpYnV0ZXMg
Y2Fubm90IGJlIHJlYWQtb25seSIpOworICAgIH0KKyAgICB0b2tlbnMucmVhZG9ubHkgPSB0b2tl
bmlzZXIuY29uc3VtZSgicmVhZG9ubHkiKTsKKyAgICBpZiAocmVhZG9ubHkgJiYgIXRva2Vucy5y
ZWFkb25seSAmJiB0b2tlbmlzZXIucHJvYmUoImF0dHJpYnV0ZSIpKSB7CisgICAgICB0b2tlbmlz
ZXIuZXJyb3IoIkF0dHJpYnV0ZXMgbXVzdCBiZSByZWFkb25seSBpbiB0aGlzIGNvbnRleHQiKTsK
KyAgICB9CisgICAgdG9rZW5zLmJhc2UgPSB0b2tlbmlzZXIuY29uc3VtZSgiYXR0cmlidXRlIik7
CisgICAgaWYgKCF0b2tlbnMuYmFzZSkgeworICAgICAgdG9rZW5pc2VyLnVuY29uc3VtZShzdGFy
dF9wb3NpdGlvbik7CisgICAgICByZXR1cm47CisgICAgfQorICAgIHJldC5pZGxUeXBlID0KKyAg
ICAgICgwLF9oZWxwZXJzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX18udHlwZV93aXRo
X2V4dGVuZGVkX2F0dHJpYnV0ZXMpKHRva2VuaXNlciwgImF0dHJpYnV0ZS10eXBlIikgfHwKKyAg
ICAgIHRva2VuaXNlci5lcnJvcigiQXR0cmlidXRlIGxhY2tzIGEgdHlwZSIpOworICAgIHRva2Vu
cy5uYW1lID0KKyAgICAgIHRva2VuaXNlci5jb25zdW1lVHlwZSgiaWRlbnRpZmllciIpIHx8Cisg
ICAgICB0b2tlbmlzZXIuY29uc3VtZSgiYXN5bmMiLCAicmVxdWlyZWQiKSB8fAorICAgICAgdG9r
ZW5pc2VyLmVycm9yKCJBdHRyaWJ1dGUgbGFja3MgYSBuYW1lIik7CisgICAgdG9rZW5zLnRlcm1p
bmF0aW9uID0KKyAgICAgIHRva2VuaXNlci5jb25zdW1lKCI7IikgfHwKKyAgICAgIHRva2VuaXNl
ci5lcnJvcigiVW50ZXJtaW5hdGVkIGF0dHJpYnV0ZSwgZXhwZWN0ZWQgYDtgIik7CisgICAgcmV0
dXJuIHJldC50aGlzOworICB9CisKKyAgZ2V0IHR5cGUoKSB7CisgICAgcmV0dXJuICJhdHRyaWJ1
dGUiOworICB9CisgIGdldCBzcGVjaWFsKCkgeworICAgIGlmICghdGhpcy50b2tlbnMuc3BlY2lh
bCkgeworICAgICAgcmV0dXJuICIiOworICAgIH0KKyAgICByZXR1cm4gdGhpcy50b2tlbnMuc3Bl
Y2lhbC52YWx1ZTsKKyAgfQorICBnZXQgcmVhZG9ubHkoKSB7CisgICAgcmV0dXJuICEhdGhpcy50
b2tlbnMucmVhZG9ubHk7CisgIH0KKyAgZ2V0IG5hbWUoKSB7CisgICAgcmV0dXJuICgwLF9oZWxw
ZXJzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX18udW5lc2NhcGUpKHRoaXMudG9rZW5z
Lm5hbWUudmFsdWUpOworICB9CisKKyAgKnZhbGlkYXRlKGRlZnMpIHsKKyAgICB5aWVsZCogdGhp
cy5leHRBdHRycy52YWxpZGF0ZShkZWZzKTsKKyAgICB5aWVsZCogdGhpcy5pZGxUeXBlLnZhbGlk
YXRlKGRlZnMpOworCisgICAgc3dpdGNoICh0aGlzLmlkbFR5cGUuZ2VuZXJpYykgeworICAgICAg
Y2FzZSAic2VxdWVuY2UiOgorICAgICAgY2FzZSAicmVjb3JkIjogeworICAgICAgICBjb25zdCBt
ZXNzYWdlID0gYEF0dHJpYnV0ZXMgY2Fubm90IGFjY2VwdCAke3RoaXMuaWRsVHlwZS5nZW5lcmlj
fSB0eXBlcy5gOworICAgICAgICB5aWVsZCAoMCxfZXJyb3JfanNfX1dFQlBBQ0tfSU1QT1JURURf
TU9EVUxFXzBfXy52YWxpZGF0aW9uRXJyb3IpKAorICAgICAgICAgIHRoaXMudG9rZW5zLm5hbWUs
CisgICAgICAgICAgdGhpcywKKyAgICAgICAgICAiYXR0ci1pbnZhbGlkLXR5cGUiLAorICAgICAg
ICAgIG1lc3NhZ2UKKyAgICAgICAgKTsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgICBk
ZWZhdWx0OiB7CisgICAgICAgIGNvbnN0IHsgcmVmZXJlbmNlIH0gPQorICAgICAgICAgICgwLF92
YWxpZGF0b3JzX2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXy5pZGxUeXBl
SW5jbHVkZXNEaWN0aW9uYXJ5KSh0aGlzLmlkbFR5cGUsIGRlZnMpIHx8IHt9OworICAgICAgICBp
ZiAocmVmZXJlbmNlKSB7CisgICAgICAgICAgY29uc3QgdGFyZ2V0VG9rZW4gPSAodGhpcy5pZGxU
eXBlLnVuaW9uID8gcmVmZXJlbmNlIDogdGhpcy5pZGxUeXBlKQorICAgICAgICAgICAgLnRva2Vu
cy5iYXNlOworICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSAiQXR0cmlidXRlcyBjYW5ub3QgYWNj
ZXB0IGRpY3Rpb25hcnkgdHlwZXMuIjsKKyAgICAgICAgICB5aWVsZCAoMCxfZXJyb3JfanNfX1dF
QlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXy52YWxpZGF0aW9uRXJyb3IpKAorICAgICAgICAgICAg
dGFyZ2V0VG9rZW4sCisgICAgICAgICAgICB0aGlzLAorICAgICAgICAgICAgImF0dHItaW52YWxp
ZC10eXBlIiwKKyAgICAgICAgICAgIG1lc3NhZ2UKKyAgICAgICAgICApOworICAgICAgICB9Cisg
ICAgICB9CisgICAgfQorICB9CisKKyAgLyoqIEBwYXJhbSB7aW1wb3J0KCIuLi93cml0ZXIuanMi
KS5Xcml0ZXJ9IHcgKi8KKyAgd3JpdGUodykgeworICAgIGNvbnN0IHsgcGFyZW50IH0gPSB0aGlz
OworICAgIHJldHVybiB3LnRzLmRlZmluaXRpb24oCisgICAgICB3LnRzLndyYXAoWworICAgICAg
ICB0aGlzLmV4dEF0dHJzLndyaXRlKHcpLAorICAgICAgICB3LnRva2VuKHRoaXMudG9rZW5zLnNw
ZWNpYWwpLAorICAgICAgICB3LnRva2VuKHRoaXMudG9rZW5zLnJlYWRvbmx5KSwKKyAgICAgICAg
dy50b2tlbih0aGlzLnRva2Vucy5iYXNlKSwKKyAgICAgICAgdy50cy50eXBlKHRoaXMuaWRsVHlw
ZS53cml0ZSh3KSksCisgICAgICAgIHcubmFtZV90b2tlbih0aGlzLnRva2Vucy5uYW1lLCB7IGRh
dGE6IHRoaXMsIHBhcmVudCB9KSwKKyAgICAgICAgdy50b2tlbih0aGlzLnRva2Vucy50ZXJtaW5h
dGlvbiksCisgICAgICBdKSwKKyAgICAgIHsgZGF0YTogdGhpcywgcGFyZW50IH0KKyAgICApOwor
ICB9Cit9CisKKworLyoqKi8gfSksCisvKiAxNSAqLworLyoqKi8gKChfX3VudXNlZF93ZWJwYWNr
X19fd2VicGFja19tb2R1bGVfXywgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVp
cmVfXykgPT4geworCitfX3dlYnBhY2tfcmVxdWlyZV9fLnIoX193ZWJwYWNrX2V4cG9ydHNfXyk7
CisvKiBoYXJtb255IGV4cG9ydCAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4
cG9ydHNfXywgeworLyogaGFybW9ueSBleHBvcnQgKi8gICAiRW51bSI6ICgpID0+ICgvKiBiaW5k
aW5nICovIEVudW0pCisvKiBoYXJtb255IGV4cG9ydCAqLyB9KTsKKy8qIGhhcm1vbnkgaW1wb3J0
ICovIHZhciBfaGVscGVyc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fID0gX193ZWJw
YWNrX3JlcXVpcmVfXyg0KTsKKy8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfdG9rZW5fanNfX1dF
QlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTApOworLyog
aGFybW9ueSBpbXBvcnQgKi8gdmFyIF9iYXNlX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8y
X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpOworCisKKworCitjbGFzcyBFbnVtVmFsdWUgZXh0
ZW5kcyBfdG9rZW5fanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXy5XcmFwcGVkVG9rZW4g
eworICAvKioKKyAgICogQHBhcmFtIHtpbXBvcnQoIi4uL3Rva2VuaXNlciIpLlRva2VuaXNlcn0g
dG9rZW5pc2VyCisgICAqLworICBzdGF0aWMgcGFyc2UodG9rZW5pc2VyKSB7CisgICAgY29uc3Qg
dmFsdWUgPSB0b2tlbmlzZXIuY29uc3VtZVR5cGUoInN0cmluZyIpOworICAgIGlmICh2YWx1ZSkg
eworICAgICAgcmV0dXJuIG5ldyBFbnVtVmFsdWUoeyBzb3VyY2U6IHRva2VuaXNlci5zb3VyY2Us
IHRva2VuczogeyB2YWx1ZSB9IH0pOworICAgIH0KKyAgfQorCisgIGdldCB0eXBlKCkgeworICAg
IHJldHVybiAiZW51bS12YWx1ZSI7CisgIH0KKyAgZ2V0IHZhbHVlKCkgeworICAgIHJldHVybiBz
dXBlci52YWx1ZS5zbGljZSgxLCAtMSk7CisgIH0KKworICAvKiogQHBhcmFtIHtpbXBvcnQoIi4u
L3dyaXRlci5qcyIpLldyaXRlcn0gdyAqLworICB3cml0ZSh3KSB7CisgICAgY29uc3QgeyBwYXJl
bnQgfSA9IHRoaXM7CisgICAgcmV0dXJuIHcudHMud3JhcChbCisgICAgICB3LnRzLnRyaXZpYSh0
aGlzLnRva2Vucy52YWx1ZS50cml2aWEpLAorICAgICAgdy50cy5kZWZpbml0aW9uKAorICAgICAg
ICB3LnRzLndyYXAoWyciJywgdy50cy5uYW1lKHRoaXMudmFsdWUsIHsgZGF0YTogdGhpcywgcGFy
ZW50IH0pLCAnIiddKSwKKyAgICAgICAgeyBkYXRhOiB0aGlzLCBwYXJlbnQgfQorICAgICAgKSwK
KyAgICAgIHcudG9rZW4odGhpcy50b2tlbnMuc2VwYXJhdG9yKSwKKyAgICBdKTsKKyAgfQorfQor
CitjbGFzcyBFbnVtIGV4dGVuZHMgX2Jhc2VfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJf
Xy5CYXNlIHsKKyAgLyoqCisgICAqIEBwYXJhbSB7aW1wb3J0KCIuLi90b2tlbmlzZXIiKS5Ub2tl
bmlzZXJ9IHRva2VuaXNlcgorICAgKi8KKyAgc3RhdGljIHBhcnNlKHRva2VuaXNlcikgeworICAg
IC8qKiBAdHlwZSB7QmFzZVsidG9rZW5zIl19ICovCisgICAgY29uc3QgdG9rZW5zID0ge307Cisg
ICAgdG9rZW5zLmJhc2UgPSB0b2tlbmlzZXIuY29uc3VtZSgiZW51bSIpOworICAgIGlmICghdG9r
ZW5zLmJhc2UpIHsKKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgdG9rZW5zLm5hbWUgPQorICAg
ICAgdG9rZW5pc2VyLmNvbnN1bWVUeXBlKCJpZGVudGlmaWVyIikgfHwKKyAgICAgIHRva2VuaXNl
ci5lcnJvcigiTm8gbmFtZSBmb3IgZW51bSIpOworICAgIGNvbnN0IHJldCA9ICgwLF9oZWxwZXJz
X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18uYXV0b1BhcmVudGVyKShuZXcgRW51bSh7
IHNvdXJjZTogdG9rZW5pc2VyLnNvdXJjZSwgdG9rZW5zIH0pKTsKKyAgICB0b2tlbmlzZXIuY3Vy
cmVudCA9IHJldC50aGlzOworICAgIHRva2Vucy5vcGVuID0gdG9rZW5pc2VyLmNvbnN1bWUoInsi
KSB8fCB0b2tlbmlzZXIuZXJyb3IoIkJvZHlsZXNzIGVudW0iKTsKKyAgICByZXQudmFsdWVzID0g
KDAsX2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXy5saXN0KSh0b2tlbmlz
ZXIsIHsKKyAgICAgIHBhcnNlcjogRW51bVZhbHVlLnBhcnNlLAorICAgICAgYWxsb3dEYW5nbGVy
OiB0cnVlLAorICAgICAgbGlzdE5hbWU6ICJlbnVtZXJhdGlvbiIsCisgICAgfSk7CisgICAgaWYg
KHRva2VuaXNlci5wcm9iZVR5cGUoInN0cmluZyIpKSB7CisgICAgICB0b2tlbmlzZXIuZXJyb3Io
Ik5vIGNvbW1hIGJldHdlZW4gZW51bSB2YWx1ZXMiKTsKKyAgICB9CisgICAgdG9rZW5zLmNsb3Nl
ID0KKyAgICAgIHRva2VuaXNlci5jb25zdW1lKCJ9IikgfHwgdG9rZW5pc2VyLmVycm9yKCJVbmV4
cGVjdGVkIHZhbHVlIGluIGVudW0iKTsKKyAgICBpZiAoIXJldC52YWx1ZXMubGVuZ3RoKSB7Cisg
ICAgICB0b2tlbmlzZXIuZXJyb3IoIk5vIHZhbHVlIGluIGVudW0iKTsKKyAgICB9CisgICAgdG9r
ZW5zLnRlcm1pbmF0aW9uID0KKyAgICAgIHRva2VuaXNlci5jb25zdW1lKCI7IikgfHwgdG9rZW5p
c2VyLmVycm9yKCJObyBzZW1pY29sb24gYWZ0ZXIgZW51bSIpOworICAgIHJldHVybiByZXQudGhp
czsKKyAgfQorCisgIGdldCB0eXBlKCkgeworICAgIHJldHVybiAiZW51bSI7CisgIH0KKyAgZ2V0
IG5hbWUoKSB7CisgICAgcmV0dXJuICgwLF9oZWxwZXJzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01P
RFVMRV8wX18udW5lc2NhcGUpKHRoaXMudG9rZW5zLm5hbWUudmFsdWUpOworICB9CisKKyAgLyoq
IEBwYXJhbSB7aW1wb3J0KCIuLi93cml0ZXIuanMiKS5Xcml0ZXJ9IHcgKi8KKyAgd3JpdGUodykg
eworICAgIHJldHVybiB3LnRzLmRlZmluaXRpb24oCisgICAgICB3LnRzLndyYXAoWworICAgICAg
ICB0aGlzLmV4dEF0dHJzLndyaXRlKHcpLAorICAgICAgICB3LnRva2VuKHRoaXMudG9rZW5zLmJh
c2UpLAorICAgICAgICB3Lm5hbWVfdG9rZW4odGhpcy50b2tlbnMubmFtZSwgeyBkYXRhOiB0aGlz
IH0pLAorICAgICAgICB3LnRva2VuKHRoaXMudG9rZW5zLm9wZW4pLAorICAgICAgICB3LnRzLndy
YXAodGhpcy52YWx1ZXMubWFwKCh2KSA9PiB2LndyaXRlKHcpKSksCisgICAgICAgIHcudG9rZW4o
dGhpcy50b2tlbnMuY2xvc2UpLAorICAgICAgICB3LnRva2VuKHRoaXMudG9rZW5zLnRlcm1pbmF0
aW9uKSwKKyAgICAgIF0pLAorICAgICAgeyBkYXRhOiB0aGlzIH0KKyAgICApOworICB9Cit9CisK
KworLyoqKi8gfSksCisvKiAxNiAqLworLyoqKi8gKChfX3VudXNlZF93ZWJwYWNrX19fd2VicGFj
a19tb2R1bGVfXywgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykgPT4g
eworCitfX3dlYnBhY2tfcmVxdWlyZV9fLnIoX193ZWJwYWNrX2V4cG9ydHNfXyk7CisvKiBoYXJt
b255IGV4cG9ydCAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywg
eworLyogaGFybW9ueSBleHBvcnQgKi8gICAiSW5jbHVkZXMiOiAoKSA9PiAoLyogYmluZGluZyAq
LyBJbmNsdWRlcykKKy8qIGhhcm1vbnkgZXhwb3J0ICovIH0pOworLyogaGFybW9ueSBpbXBvcnQg
Ki8gdmFyIF9iYXNlX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18gPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDYpOworLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9oZWxwZXJzX2pzX19XRUJQ
QUNLX0lNUE9SVEVEX01PRFVMRV8xX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpOworLy8gQHRz
LWNoZWNrCisKKworCisKK2NsYXNzIEluY2x1ZGVzIGV4dGVuZHMgX2Jhc2VfanNfX1dFQlBBQ0tf
SU1QT1JURURfTU9EVUxFXzBfXy5CYXNlIHsKKyAgLyoqCisgICAqIEBwYXJhbSB7aW1wb3J0KCIu
Li90b2tlbmlzZXIiKS5Ub2tlbmlzZXJ9IHRva2VuaXNlcgorICAgKi8KKyAgc3RhdGljIHBhcnNl
KHRva2VuaXNlcikgeworICAgIGNvbnN0IHRhcmdldCA9IHRva2VuaXNlci5jb25zdW1lVHlwZSgi
aWRlbnRpZmllciIpOworICAgIGlmICghdGFyZ2V0KSB7CisgICAgICByZXR1cm47CisgICAgfQor
ICAgIGNvbnN0IHRva2VucyA9IHsgdGFyZ2V0IH07CisgICAgdG9rZW5zLmluY2x1ZGVzID0gdG9r
ZW5pc2VyLmNvbnN1bWUoImluY2x1ZGVzIik7CisgICAgaWYgKCF0b2tlbnMuaW5jbHVkZXMpIHsK
KyAgICAgIHRva2VuaXNlci51bmNvbnN1bWUodGFyZ2V0LmluZGV4KTsKKyAgICAgIHJldHVybjsK
KyAgICB9CisgICAgdG9rZW5zLm1peGluID0KKyAgICAgIHRva2VuaXNlci5jb25zdW1lVHlwZSgi
aWRlbnRpZmllciIpIHx8CisgICAgICB0b2tlbmlzZXIuZXJyb3IoIkluY29tcGxldGUgaW5jbHVk
ZXMgc3RhdGVtZW50Iik7CisgICAgdG9rZW5zLnRlcm1pbmF0aW9uID0KKyAgICAgIHRva2VuaXNl
ci5jb25zdW1lKCI7IikgfHwKKyAgICAgIHRva2VuaXNlci5lcnJvcigiTm8gdGVybWluYXRpbmcg
OyBmb3IgaW5jbHVkZXMgc3RhdGVtZW50Iik7CisgICAgcmV0dXJuIG5ldyBJbmNsdWRlcyh7IHNv
dXJjZTogdG9rZW5pc2VyLnNvdXJjZSwgdG9rZW5zIH0pOworICB9CisKKyAgZ2V0IHR5cGUoKSB7
CisgICAgcmV0dXJuICJpbmNsdWRlcyI7CisgIH0KKyAgZ2V0IHRhcmdldCgpIHsKKyAgICByZXR1
cm4gKDAsX2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXy51bmVzY2FwZSko
dGhpcy50b2tlbnMudGFyZ2V0LnZhbHVlKTsKKyAgfQorICBnZXQgaW5jbHVkZXMoKSB7CisgICAg
cmV0dXJuICgwLF9oZWxwZXJzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18udW5lc2Nh
cGUpKHRoaXMudG9rZW5zLm1peGluLnZhbHVlKTsKKyAgfQorCisgIC8qKiBAcGFyYW0ge2ltcG9y
dCgiLi4vd3JpdGVyLmpzIikuV3JpdGVyfSB3ICovCisgIHdyaXRlKHcpIHsKKyAgICByZXR1cm4g
dy50cy5kZWZpbml0aW9uKAorICAgICAgdy50cy53cmFwKFsKKyAgICAgICAgdGhpcy5leHRBdHRy
cy53cml0ZSh3KSwKKyAgICAgICAgdy5yZWZlcmVuY2VfdG9rZW4odGhpcy50b2tlbnMudGFyZ2V0
LCB0aGlzKSwKKyAgICAgICAgdy50b2tlbih0aGlzLnRva2Vucy5pbmNsdWRlcyksCisgICAgICAg
IHcucmVmZXJlbmNlX3Rva2VuKHRoaXMudG9rZW5zLm1peGluLCB0aGlzKSwKKyAgICAgICAgdy50
b2tlbih0aGlzLnRva2Vucy50ZXJtaW5hdGlvbiksCisgICAgICBdKSwKKyAgICAgIHsgZGF0YTog
dGhpcyB9CisgICAgKTsKKyAgfQorfQorCisKKy8qKiovIH0pLAorLyogMTcgKi8KKy8qKiovICgo
X191bnVzZWRfd2VicGFja19fX3dlYnBhY2tfbW9kdWxlX18sIF9fd2VicGFja19leHBvcnRzX18s
IF9fd2VicGFja19yZXF1aXJlX18pID0+IHsKKworX193ZWJwYWNrX3JlcXVpcmVfXy5yKF9fd2Vi
cGFja19leHBvcnRzX18pOworLyogaGFybW9ueSBleHBvcnQgKi8gX193ZWJwYWNrX3JlcXVpcmVf
Xy5kKF9fd2VicGFja19leHBvcnRzX18sIHsKKy8qIGhhcm1vbnkgZXhwb3J0ICovICAgIlR5cGVk
ZWYiOiAoKSA9PiAoLyogYmluZGluZyAqLyBUeXBlZGVmKQorLyogaGFybW9ueSBleHBvcnQgKi8g
fSk7CisvKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2Jhc2VfanNfX1dFQlBBQ0tfSU1QT1JURURf
TU9EVUxFXzBfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNik7CisvKiBoYXJtb255IGltcG9ydCAq
LyB2YXIgX2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXyA9IF9fd2VicGFj
a19yZXF1aXJlX18oNCk7CisKKworCitjbGFzcyBUeXBlZGVmIGV4dGVuZHMgX2Jhc2VfanNfX1dF
QlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXy5CYXNlIHsKKyAgLyoqCisgICAqIEBwYXJhbSB7aW1w
b3J0KCIuLi90b2tlbmlzZXIiKS5Ub2tlbmlzZXJ9IHRva2VuaXNlcgorICAgKi8KKyAgc3RhdGlj
IHBhcnNlKHRva2VuaXNlcikgeworICAgIC8qKiBAdHlwZSB7QmFzZVsidG9rZW5zIl19ICovCisg
ICAgY29uc3QgdG9rZW5zID0ge307CisgICAgY29uc3QgcmV0ID0gKDAsX2hlbHBlcnNfanNfX1dF
QlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXy5hdXRvUGFyZW50ZXIpKG5ldyBUeXBlZGVmKHsgc291
cmNlOiB0b2tlbmlzZXIuc291cmNlLCB0b2tlbnMgfSkpOworICAgIHRva2Vucy5iYXNlID0gdG9r
ZW5pc2VyLmNvbnN1bWUoInR5cGVkZWYiKTsKKyAgICBpZiAoIXRva2Vucy5iYXNlKSB7CisgICAg
ICByZXR1cm47CisgICAgfQorICAgIHJldC5pZGxUeXBlID0KKyAgICAgICgwLF9oZWxwZXJzX2pz
X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18udHlwZV93aXRoX2V4dGVuZGVkX2F0dHJpYnV0
ZXMpKHRva2VuaXNlciwgInR5cGVkZWYtdHlwZSIpIHx8CisgICAgICB0b2tlbmlzZXIuZXJyb3Io
IlR5cGVkZWYgbGFja3MgYSB0eXBlIik7CisgICAgdG9rZW5zLm5hbWUgPQorICAgICAgdG9rZW5p
c2VyLmNvbnN1bWVUeXBlKCJpZGVudGlmaWVyIikgfHwKKyAgICAgIHRva2VuaXNlci5lcnJvcigi
VHlwZWRlZiBsYWNrcyBhIG5hbWUiKTsKKyAgICB0b2tlbmlzZXIuY3VycmVudCA9IHJldC50aGlz
OworICAgIHRva2Vucy50ZXJtaW5hdGlvbiA9CisgICAgICB0b2tlbmlzZXIuY29uc3VtZSgiOyIp
IHx8CisgICAgICB0b2tlbmlzZXIuZXJyb3IoIlVudGVybWluYXRlZCB0eXBlZGVmLCBleHBlY3Rl
ZCBgO2AiKTsKKyAgICByZXR1cm4gcmV0LnRoaXM7CisgIH0KKworICBnZXQgdHlwZSgpIHsKKyAg
ICByZXR1cm4gInR5cGVkZWYiOworICB9CisgIGdldCBuYW1lKCkgeworICAgIHJldHVybiAoMCxf
aGVscGVyc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fLnVuZXNjYXBlKSh0aGlzLnRv
a2Vucy5uYW1lLnZhbHVlKTsKKyAgfQorCisgICp2YWxpZGF0ZShkZWZzKSB7CisgICAgeWllbGQq
IHRoaXMuaWRsVHlwZS52YWxpZGF0ZShkZWZzKTsKKyAgfQorCisgIC8qKiBAcGFyYW0ge2ltcG9y
dCgiLi4vd3JpdGVyLmpzIikuV3JpdGVyfSB3ICovCisgIHdyaXRlKHcpIHsKKyAgICByZXR1cm4g
dy50cy5kZWZpbml0aW9uKAorICAgICAgdy50cy53cmFwKFsKKyAgICAgICAgdGhpcy5leHRBdHRy
cy53cml0ZSh3KSwKKyAgICAgICAgdy50b2tlbih0aGlzLnRva2Vucy5iYXNlKSwKKyAgICAgICAg
dy50cy50eXBlKHRoaXMuaWRsVHlwZS53cml0ZSh3KSksCisgICAgICAgIHcubmFtZV90b2tlbih0
aGlzLnRva2Vucy5uYW1lLCB7IGRhdGE6IHRoaXMgfSksCisgICAgICAgIHcudG9rZW4odGhpcy50
b2tlbnMudGVybWluYXRpb24pLAorICAgICAgXSksCisgICAgICB7IGRhdGE6IHRoaXMgfQorICAg
ICk7CisgIH0KK30KKworCisvKioqLyB9KSwKKy8qIDE4ICovCisvKioqLyAoKF9fdW51c2VkX3dl
YnBhY2tfX193ZWJwYWNrX21vZHVsZV9fLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tf
cmVxdWlyZV9fKSA9PiB7CisKK19fd2VicGFja19yZXF1aXJlX18ucihfX3dlYnBhY2tfZXhwb3J0
c19fKTsKKy8qIGhhcm1vbnkgZXhwb3J0ICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBh
Y2tfZXhwb3J0c19fLCB7CisvKiBoYXJtb255IGV4cG9ydCAqLyAgICJDYWxsYmFja0Z1bmN0aW9u
IjogKCkgPT4gKC8qIGJpbmRpbmcgKi8gQ2FsbGJhY2tGdW5jdGlvbikKKy8qIGhhcm1vbnkgZXhw
b3J0ICovIH0pOworLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9iYXNlX2pzX19XRUJQQUNLX0lN
UE9SVEVEX01PRFVMRV8wX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpOworLyogaGFybW9ueSBp
bXBvcnQgKi8gdmFyIF9oZWxwZXJzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18gPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDQpOworCisKKworY2xhc3MgQ2FsbGJhY2tGdW5jdGlvbiBleHRl
bmRzIF9iYXNlX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18uQmFzZSB7CisgIC8qKgor
ICAgKiBAcGFyYW0ge2ltcG9ydCgiLi4vdG9rZW5pc2VyLmpzIikuVG9rZW5pc2VyfSB0b2tlbmlz
ZXIKKyAgICovCisgIHN0YXRpYyBwYXJzZSh0b2tlbmlzZXIsIGJhc2UpIHsKKyAgICBjb25zdCB0
b2tlbnMgPSB7IGJhc2UgfTsKKyAgICBjb25zdCByZXQgPSAoMCxfaGVscGVyc19qc19fV0VCUEFD
S19JTVBPUlRFRF9NT0RVTEVfMV9fLmF1dG9QYXJlbnRlcikoCisgICAgICBuZXcgQ2FsbGJhY2tG
dW5jdGlvbih7IHNvdXJjZTogdG9rZW5pc2VyLnNvdXJjZSwgdG9rZW5zIH0pCisgICAgKTsKKyAg
ICB0b2tlbnMubmFtZSA9CisgICAgICB0b2tlbmlzZXIuY29uc3VtZVR5cGUoImlkZW50aWZpZXIi
KSB8fAorICAgICAgdG9rZW5pc2VyLmVycm9yKCJDYWxsYmFjayBsYWNrcyBhIG5hbWUiKTsKKyAg
ICB0b2tlbmlzZXIuY3VycmVudCA9IHJldC50aGlzOworICAgIHRva2Vucy5hc3NpZ24gPQorICAg
ICAgdG9rZW5pc2VyLmNvbnN1bWUoIj0iKSB8fCB0b2tlbmlzZXIuZXJyb3IoIkNhbGxiYWNrIGxh
Y2tzIGFuIGFzc2lnbm1lbnQiKTsKKyAgICByZXQuaWRsVHlwZSA9CisgICAgICAoMCxfaGVscGVy
c19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fLnJldHVybl90eXBlKSh0b2tlbmlzZXIp
IHx8IHRva2VuaXNlci5lcnJvcigiQ2FsbGJhY2sgbGFja3MgYSByZXR1cm4gdHlwZSIpOworICAg
IHRva2Vucy5vcGVuID0KKyAgICAgIHRva2VuaXNlci5jb25zdW1lKCIoIikgfHwKKyAgICAgIHRv
a2VuaXNlci5lcnJvcigiQ2FsbGJhY2sgbGFja3MgcGFyZW50aGVzZXMgZm9yIGFyZ3VtZW50cyIp
OworICAgIHJldC5hcmd1bWVudHMgPSAoMCxfaGVscGVyc19qc19fV0VCUEFDS19JTVBPUlRFRF9N
T0RVTEVfMV9fLmFyZ3VtZW50X2xpc3QpKHRva2VuaXNlcik7CisgICAgdG9rZW5zLmNsb3NlID0K
KyAgICAgIHRva2VuaXNlci5jb25zdW1lKCIpIikgfHwgdG9rZW5pc2VyLmVycm9yKCJVbnRlcm1p
bmF0ZWQgY2FsbGJhY2siKTsKKyAgICB0b2tlbnMudGVybWluYXRpb24gPQorICAgICAgdG9rZW5p
c2VyLmNvbnN1bWUoIjsiKSB8fAorICAgICAgdG9rZW5pc2VyLmVycm9yKCJVbnRlcm1pbmF0ZWQg
Y2FsbGJhY2ssIGV4cGVjdGVkIGA7YCIpOworICAgIHJldHVybiByZXQudGhpczsKKyAgfQorCisg
IGdldCB0eXBlKCkgeworICAgIHJldHVybiAiY2FsbGJhY2siOworICB9CisgIGdldCBuYW1lKCkg
eworICAgIHJldHVybiAoMCxfaGVscGVyc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9f
LnVuZXNjYXBlKSh0aGlzLnRva2Vucy5uYW1lLnZhbHVlKTsKKyAgfQorCisgICp2YWxpZGF0ZShk
ZWZzKSB7CisgICAgeWllbGQqIHRoaXMuZXh0QXR0cnMudmFsaWRhdGUoZGVmcyk7CisgICAgeWll
bGQqIHRoaXMuaWRsVHlwZS52YWxpZGF0ZShkZWZzKTsKKyAgfQorCisgIC8qKiBAcGFyYW0ge2lt
cG9ydCgiLi4vd3JpdGVyLmpzIikuV3JpdGVyfSB3ICovCisgIHdyaXRlKHcpIHsKKyAgICByZXR1
cm4gdy50cy5kZWZpbml0aW9uKAorICAgICAgdy50cy53cmFwKFsKKyAgICAgICAgdGhpcy5leHRB
dHRycy53cml0ZSh3KSwKKyAgICAgICAgdy50b2tlbih0aGlzLnRva2Vucy5iYXNlKSwKKyAgICAg
ICAgdy5uYW1lX3Rva2VuKHRoaXMudG9rZW5zLm5hbWUsIHsgZGF0YTogdGhpcyB9KSwKKyAgICAg
ICAgdy50b2tlbih0aGlzLnRva2Vucy5hc3NpZ24pLAorICAgICAgICB3LnRzLnR5cGUodGhpcy5p
ZGxUeXBlLndyaXRlKHcpKSwKKyAgICAgICAgdy50b2tlbih0aGlzLnRva2Vucy5vcGVuKSwKKyAg
ICAgICAgLi4udGhpcy5hcmd1bWVudHMubWFwKChhcmcpID0+IGFyZy53cml0ZSh3KSksCisgICAg
ICAgIHcudG9rZW4odGhpcy50b2tlbnMuY2xvc2UpLAorICAgICAgICB3LnRva2VuKHRoaXMudG9r
ZW5zLnRlcm1pbmF0aW9uKSwKKyAgICAgIF0pLAorICAgICAgeyBkYXRhOiB0aGlzIH0KKyAgICAp
OworICB9Cit9CisKKworLyoqKi8gfSksCisvKiAxOSAqLworLyoqKi8gKChfX3VudXNlZF93ZWJw
YWNrX19fd2VicGFja19tb2R1bGVfXywgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3Jl
cXVpcmVfXykgPT4geworCitfX3dlYnBhY2tfcmVxdWlyZV9fLnIoX193ZWJwYWNrX2V4cG9ydHNf
Xyk7CisvKiBoYXJtb255IGV4cG9ydCAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNr
X2V4cG9ydHNfXywgeworLyogaGFybW9ueSBleHBvcnQgKi8gICAiSW50ZXJmYWNlIjogKCkgPT4g
KC8qIGJpbmRpbmcgKi8gSW50ZXJmYWNlKQorLyogaGFybW9ueSBleHBvcnQgKi8gfSk7CisvKiBo
YXJtb255IGltcG9ydCAqLyB2YXIgX2NvbnRhaW5lcl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RV
TEVfMF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMCk7CisvKiBoYXJtb255IGltcG9ydCAqLyB2
YXIgX2F0dHJpYnV0ZV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fID0gX193ZWJwYWNr
X3JlcXVpcmVfXygxNCk7CisvKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX29wZXJhdGlvbl9qc19f
V0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMyk7Cisv
KiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2NvbnN0YW50X2pzX19XRUJQQUNLX0lNUE9SVEVEX01P
RFVMRV8zX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIxKTsKKy8qIGhhcm1vbnkgaW1wb3J0ICov
IHZhciBfaXRlcmFibGVfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfXyA9IF9fd2VicGFj
a19yZXF1aXJlX18oMjIpOworLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9oZWxwZXJzX2pzX19X
RUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpOworLyog
aGFybW9ueSBpbXBvcnQgKi8gdmFyIF9lcnJvcl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVf
Nl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTsKKy8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBf
dmFsaWRhdG9yc19pbnRlcmZhY2VfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzdfXyA9IF9f
d2VicGFja19yZXF1aXJlX18oMjMpOworLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9jb25zdHJ1
Y3Rvcl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfOF9fID0gX193ZWJwYWNrX3JlcXVpcmVf
XygyNCk7CisvKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX3Rva2VuaXNlcl9qc19fV0VCUEFDS19J
TVBPUlRFRF9NT0RVTEVfOV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTsKKy8qIGhhcm1vbnkg
aW1wb3J0ICovIHZhciBfZXh0ZW5kZWRfYXR0cmlidXRlc19qc19fV0VCUEFDS19JTVBPUlRFRF9N
T0RVTEVfMTBfXyA9IF9fd2VicGFja19yZXF1aXJlX18oOCk7CisKKworCisKKworCisKKworCisK
KworCisvKioKKyAqIEBwYXJhbSB7aW1wb3J0KCIuLi90b2tlbmlzZXIiKS5Ub2tlbmlzZXJ9IHRv
a2VuaXNlcgorICovCitmdW5jdGlvbiBzdGF0aWNfbWVtYmVyKHRva2VuaXNlcikgeworICBjb25z
dCBzcGVjaWFsID0gdG9rZW5pc2VyLmNvbnN1bWUoInN0YXRpYyIpOworICBpZiAoIXNwZWNpYWwp
IHJldHVybjsKKyAgY29uc3QgbWVtYmVyID0KKyAgICBfYXR0cmlidXRlX2pzX19XRUJQQUNLX0lN
UE9SVEVEX01PRFVMRV8xX18uQXR0cmlidXRlLnBhcnNlKHRva2VuaXNlciwgeyBzcGVjaWFsIH0p
IHx8CisgICAgX29wZXJhdGlvbl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fLk9wZXJh
dGlvbi5wYXJzZSh0b2tlbmlzZXIsIHsgc3BlY2lhbCB9KSB8fAorICAgIHRva2VuaXNlci5lcnJv
cigiTm8gYm9keSBpbiBzdGF0aWMgbWVtYmVyIik7CisgIHJldHVybiBtZW1iZXI7Cit9CisKK2Ns
YXNzIEludGVyZmFjZSBleHRlbmRzIF9jb250YWluZXJfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9E
VUxFXzBfXy5Db250YWluZXIgeworICAvKioKKyAgICogQHBhcmFtIHtpbXBvcnQoIi4uL3Rva2Vu
aXNlciIpLlRva2VuaXNlcn0gdG9rZW5pc2VyCisgICAqLworICBzdGF0aWMgcGFyc2UodG9rZW5p
c2VyLCBiYXNlLCB7IHBhcnRpYWwgPSBudWxsIH0gPSB7fSkgeworICAgIGNvbnN0IHRva2VucyA9
IHsgcGFydGlhbCwgYmFzZSB9OworICAgIHJldHVybiBfY29udGFpbmVyX2pzX19XRUJQQUNLX0lN
UE9SVEVEX01PRFVMRV8wX18uQ29udGFpbmVyLnBhcnNlKAorICAgICAgdG9rZW5pc2VyLAorICAg
ICAgbmV3IEludGVyZmFjZSh7IHNvdXJjZTogdG9rZW5pc2VyLnNvdXJjZSwgdG9rZW5zIH0pLAor
ICAgICAgeworICAgICAgICB0eXBlOiAiaW50ZXJmYWNlIiwKKyAgICAgICAgaW5oZXJpdGFibGU6
ICFwYXJ0aWFsLAorICAgICAgICBhbGxvd2VkTWVtYmVyczogWworICAgICAgICAgIFtfY29uc3Rh
bnRfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfXy5Db25zdGFudC5wYXJzZV0sCisgICAg
ICAgICAgW19jb25zdHJ1Y3Rvcl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfOF9fLkNvbnN0
cnVjdG9yLnBhcnNlXSwKKyAgICAgICAgICBbc3RhdGljX21lbWJlcl0sCisgICAgICAgICAgW19o
ZWxwZXJzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X18uc3RyaW5naWZpZXJdLAorICAg
ICAgICAgIFtfaXRlcmFibGVfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfXy5JdGVyYWJs
ZUxpa2UucGFyc2VdLAorICAgICAgICAgIFtfYXR0cmlidXRlX2pzX19XRUJQQUNLX0lNUE9SVEVE
X01PRFVMRV8xX18uQXR0cmlidXRlLnBhcnNlXSwKKyAgICAgICAgICBbX29wZXJhdGlvbl9qc19f
V0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fLk9wZXJhdGlvbi5wYXJzZV0sCisgICAgICAgIF0s
CisgICAgICB9CisgICAgKTsKKyAgfQorCisgIGdldCB0eXBlKCkgeworICAgIHJldHVybiAiaW50
ZXJmYWNlIjsKKyAgfQorCisgICp2YWxpZGF0ZShkZWZzKSB7CisgICAgeWllbGQqIHRoaXMuZXh0
QXR0cnMudmFsaWRhdGUoZGVmcyk7CisgICAgaWYgKAorICAgICAgIXRoaXMucGFydGlhbCAmJgor
ICAgICAgdGhpcy5leHRBdHRycy5ldmVyeSgoZXh0QXR0cikgPT4gZXh0QXR0ci5uYW1lICE9PSAi
RXhwb3NlZCIpCisgICAgKSB7CisgICAgICBjb25zdCBtZXNzYWdlID0gYEludGVyZmFjZXMgbXVz
dCBoYXZlIFxgW0V4cG9zZWRdXGAgZXh0ZW5kZWQgYXR0cmlidXRlLiBcCitUbyBmaXgsIGFkZCwg
Zm9yIGV4YW1wbGUsIFxgW0V4cG9zZWQ9V2luZG93XVxgLiBQbGVhc2UgYWxzbyBjb25zaWRlciBj
YXJlZnVsbHkgXAoraWYgeW91ciBpbnRlcmZhY2Ugc2hvdWxkIGFsc28gYmUgZXhwb3NlZCBpbiBh
IFdvcmtlciBzY29wZS4gUmVmZXIgdG8gdGhlIFwKK1tXZWJJREwgc3BlYyBzZWN0aW9uIG9uIEV4
cG9zZWRdKGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI0V4cG9zZWQpIFwKK2ZvciBt
b3JlIGluZm9ybWF0aW9uLmA7CisgICAgICB5aWVsZCAoMCxfZXJyb3JfanNfX1dFQlBBQ0tfSU1Q
T1JURURfTU9EVUxFXzZfXy52YWxpZGF0aW9uRXJyb3IpKAorICAgICAgICB0aGlzLnRva2Vucy5u
YW1lLAorICAgICAgICB0aGlzLAorICAgICAgICAicmVxdWlyZS1leHBvc2VkIiwKKyAgICAgICAg
bWVzc2FnZSwKKyAgICAgICAgeworICAgICAgICAgIGF1dG9maXg6ICgwLF9oZWxwZXJzX2pzX19X
RUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X18uYXV0b2ZpeEFkZEV4cG9zZWRXaW5kb3cpKHRoaXMp
LAorICAgICAgICB9CisgICAgICApOworICAgIH0KKyAgICBjb25zdCBvbGRDb25zdHJ1Y3RvcnMg
PSB0aGlzLmV4dEF0dHJzLmZpbHRlcigKKyAgICAgIChleHRBdHRyKSA9PiBleHRBdHRyLm5hbWUg
PT09ICJDb25zdHJ1Y3RvciIKKyAgICApOworICAgIGZvciAoY29uc3QgY29uc3RydWN0b3Igb2Yg
b2xkQ29uc3RydWN0b3JzKSB7CisgICAgICBjb25zdCBtZXNzYWdlID0gYENvbnN0cnVjdG9ycyBz
aG91bGQgbm93IGJlIHJlcHJlc2VudGVkIGFzIGEgXGBjb25zdHJ1Y3RvcigpXGAgb3BlcmF0aW9u
IG9uIHRoZSBpbnRlcmZhY2UgXAoraW5zdGVhZCBvZiBcYFtDb25zdHJ1Y3Rvcl1cYCBleHRlbmRl
ZCBhdHRyaWJ1dGUuIFJlZmVyIHRvIHRoZSBcCitbV2ViSURMIHNwZWMgc2VjdGlvbiBvbiBjb25z
dHJ1Y3RvciBvcGVyYXRpb25zXShodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNpZGwt
Y29uc3RydWN0b3JzKSBcCitmb3IgbW9yZSBpbmZvcm1hdGlvbi5gOworICAgICAgeWllbGQgKDAs
X2Vycm9yX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82X18udmFsaWRhdGlvbkVycm9yKSgK
KyAgICAgICAgY29uc3RydWN0b3IudG9rZW5zLm5hbWUsCisgICAgICAgIHRoaXMsCisgICAgICAg
ICJjb25zdHJ1Y3Rvci1tZW1iZXIiLAorICAgICAgICBtZXNzYWdlLAorICAgICAgICB7CisgICAg
ICAgICAgYXV0b2ZpeDogYXV0b2ZpeENvbnN0cnVjdG9yKHRoaXMsIGNvbnN0cnVjdG9yKSwKKyAg
ICAgICAgfQorICAgICAgKTsKKyAgICB9CisKKyAgICBjb25zdCBpc0dsb2JhbCA9IHRoaXMuZXh0
QXR0cnMuc29tZSgoZXh0QXR0cikgPT4gZXh0QXR0ci5uYW1lID09PSAiR2xvYmFsIik7CisgICAg
aWYgKGlzR2xvYmFsKSB7CisgICAgICBjb25zdCBmYWN0b3J5RnVuY3Rpb25zID0gdGhpcy5leHRB
dHRycy5maWx0ZXIoCisgICAgICAgIChleHRBdHRyKSA9PiBleHRBdHRyLm5hbWUgPT09ICJMZWdh
Y3lGYWN0b3J5RnVuY3Rpb24iCisgICAgICApOworICAgICAgZm9yIChjb25zdCBuYW1lZCBvZiBm
YWN0b3J5RnVuY3Rpb25zKSB7CisgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgSW50ZXJmYWNlcyBt
YXJrZWQgYXMgXGBbR2xvYmFsXVxgIGNhbm5vdCBoYXZlIGZhY3RvcnkgZnVuY3Rpb25zLmA7Cisg
ICAgICAgIHlpZWxkICgwLF9lcnJvcl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNl9fLnZh
bGlkYXRpb25FcnJvcikoCisgICAgICAgICAgbmFtZWQudG9rZW5zLm5hbWUsCisgICAgICAgICAg
dGhpcywKKyAgICAgICAgICAibm8tY29uc3RydWN0aWJsZS1nbG9iYWwiLAorICAgICAgICAgIG1l
c3NhZ2UKKyAgICAgICAgKTsKKyAgICAgIH0KKworICAgICAgY29uc3QgY29uc3RydWN0b3JzID0g
dGhpcy5tZW1iZXJzLmZpbHRlcigKKyAgICAgICAgKG1lbWJlcikgPT4gbWVtYmVyLnR5cGUgPT09
ICJjb25zdHJ1Y3RvciIKKyAgICAgICk7CisgICAgICBmb3IgKGNvbnN0IG5hbWVkIG9mIGNvbnN0
cnVjdG9ycykgeworICAgICAgICBjb25zdCBtZXNzYWdlID0gYEludGVyZmFjZXMgbWFya2VkIGFz
IFxgW0dsb2JhbF1cYCBjYW5ub3QgaGF2ZSBjb25zdHJ1Y3RvcnMuYDsKKyAgICAgICAgeWllbGQg
KDAsX2Vycm9yX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82X18udmFsaWRhdGlvbkVycm9y
KSgKKyAgICAgICAgICBuYW1lZC50b2tlbnMuYmFzZSwKKyAgICAgICAgICB0aGlzLAorICAgICAg
ICAgICJuby1jb25zdHJ1Y3RpYmxlLWdsb2JhbCIsCisgICAgICAgICAgbWVzc2FnZQorICAgICAg
ICApOworICAgICAgfQorICAgIH0KKworICAgIHlpZWxkKiBzdXBlci52YWxpZGF0ZShkZWZzKTsK
KyAgICBpZiAoIXRoaXMucGFydGlhbCkgeworICAgICAgeWllbGQqICgwLF92YWxpZGF0b3JzX2lu
dGVyZmFjZV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfN19fLmNoZWNrSW50ZXJmYWNlTWVt
YmVyRHVwbGljYXRpb24pKGRlZnMsIHRoaXMpOworICAgIH0KKyAgfQorfQorCitmdW5jdGlvbiBh
dXRvZml4Q29uc3RydWN0b3IoaW50ZXJmYWNlRGVmLCBjb25zdHJ1Y3RvckV4dEF0dHIpIHsKKyAg
aW50ZXJmYWNlRGVmID0gKDAsX2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzVf
Xy5hdXRvUGFyZW50ZXIpKGludGVyZmFjZURlZik7CisgIHJldHVybiAoKSA9PiB7CisgICAgY29u
c3QgaW5kZW50YXRpb24gPSAoMCxfaGVscGVyc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVf
NV9fLmdldExhc3RJbmRlbnRhdGlvbikoCisgICAgICBpbnRlcmZhY2VEZWYuZXh0QXR0cnMudG9r
ZW5zLm9wZW4udHJpdmlhCisgICAgKTsKKyAgICBjb25zdCBtZW1iZXJJbmRlbnQgPSBpbnRlcmZh
Y2VEZWYubWVtYmVycy5sZW5ndGgKKyAgICAgID8gKDAsX2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1Q
T1JURURfTU9EVUxFXzVfXy5nZXRMYXN0SW5kZW50YXRpb24pKCgwLF9oZWxwZXJzX2pzX19XRUJQ
QUNLX0lNUE9SVEVEX01PRFVMRV81X18uZ2V0Rmlyc3RUb2tlbikoaW50ZXJmYWNlRGVmLm1lbWJl
cnNbMF0pLnRyaXZpYSkKKyAgICAgIDogKDAsX2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JURURf
TU9EVUxFXzVfXy5nZXRNZW1iZXJJbmRlbnRhdGlvbikoaW5kZW50YXRpb24pOworICAgIGNvbnN0
IGNvbnN0cnVjdG9yT3AgPSBfY29uc3RydWN0b3JfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxF
XzhfXy5Db25zdHJ1Y3Rvci5wYXJzZSgKKyAgICAgIG5ldyBfdG9rZW5pc2VyX2pzX19XRUJQQUNL
X0lNUE9SVEVEX01PRFVMRV85X18uVG9rZW5pc2VyKGBcbiR7bWVtYmVySW5kZW50fWNvbnN0cnVj
dG9yKCk7YCkKKyAgICApOworICAgIGNvbnN0cnVjdG9yT3AuZXh0QXR0cnMgPSBuZXcgX2V4dGVu
ZGVkX2F0dHJpYnV0ZXNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzEwX18uRXh0ZW5kZWRB
dHRyaWJ1dGVzKHt9KTsKKyAgICAoMCxfaGVscGVyc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RV
TEVfNV9fLmF1dG9QYXJlbnRlcikoY29uc3RydWN0b3JPcCkuYXJndW1lbnRzID0gY29uc3RydWN0
b3JFeHRBdHRyLmFyZ3VtZW50czsKKworICAgIGNvbnN0IGV4aXN0aW5nSW5kZXggPSAoMCxfaGVs
cGVyc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fLmZpbmRMYXN0SW5kZXgpKAorICAg
ICAgaW50ZXJmYWNlRGVmLm1lbWJlcnMsCisgICAgICAobSkgPT4gbS50eXBlID09PSAiY29uc3Ry
dWN0b3IiCisgICAgKTsKKyAgICBpbnRlcmZhY2VEZWYubWVtYmVycy5zcGxpY2UoZXhpc3RpbmdJ
bmRleCArIDEsIDAsIGNvbnN0cnVjdG9yT3ApOworCisgICAgY29uc3QgeyBjbG9zZSB9ID0gaW50
ZXJmYWNlRGVmLnRva2VuczsKKyAgICBpZiAoIWNsb3NlLnRyaXZpYS5pbmNsdWRlcygiXG4iKSkg
eworICAgICAgY2xvc2UudHJpdmlhICs9IGBcbiR7aW5kZW50YXRpb259YDsKKyAgICB9CisKKyAg
ICBjb25zdCB7IGV4dEF0dHJzIH0gPSBpbnRlcmZhY2VEZWY7CisgICAgY29uc3QgaW5kZXggPSBl
eHRBdHRycy5pbmRleE9mKGNvbnN0cnVjdG9yRXh0QXR0cik7CisgICAgY29uc3QgcmVtb3ZlZCA9
IGV4dEF0dHJzLnNwbGljZShpbmRleCwgMSk7CisgICAgaWYgKCFleHRBdHRycy5sZW5ndGgpIHsK
KyAgICAgIGV4dEF0dHJzLnRva2Vucy5vcGVuID0gZXh0QXR0cnMudG9rZW5zLmNsb3NlID0gdW5k
ZWZpbmVkOworICAgIH0gZWxzZSBpZiAoZXh0QXR0cnMubGVuZ3RoID09PSBpbmRleCkgeworICAg
ICAgZXh0QXR0cnNbaW5kZXggLSAxXS50b2tlbnMuc2VwYXJhdG9yID0gdW5kZWZpbmVkOworICAg
IH0gZWxzZSBpZiAoIWV4dEF0dHJzW2luZGV4XS50b2tlbnMubmFtZS50cml2aWEudHJpbSgpKSB7
CisgICAgICBleHRBdHRyc1tpbmRleF0udG9rZW5zLm5hbWUudHJpdmlhID0gcmVtb3ZlZFswXS50
b2tlbnMubmFtZS50cml2aWE7CisgICAgfQorICB9OworfQorCisKKy8qKiovIH0pLAorLyogMjAg
Ki8KKy8qKiovICgoX191bnVzZWRfd2VicGFja19fX3dlYnBhY2tfbW9kdWxlX18sIF9fd2VicGFj
a19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pID0+IHsKKworX193ZWJwYWNrX3JlcXVp
cmVfXy5yKF9fd2VicGFja19leHBvcnRzX18pOworLyogaGFybW9ueSBleHBvcnQgKi8gX193ZWJw
YWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIHsKKy8qIGhhcm1vbnkgZXhwb3J0
ICovICAgIkNvbnRhaW5lciI6ICgpID0+ICgvKiBiaW5kaW5nICovIENvbnRhaW5lcikKKy8qIGhh
cm1vbnkgZXhwb3J0ICovIH0pOworLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9iYXNlX2pzX19X
RUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpOworLyog
aGFybW9ueSBpbXBvcnQgKi8gdmFyIF9leHRlbmRlZF9hdHRyaWJ1dGVzX2pzX19XRUJQQUNLX0lN
UE9SVEVEX01PRFVMRV8xX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgpOworLyogaGFybW9ueSBp
bXBvcnQgKi8gdmFyIF9oZWxwZXJzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18gPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDQpOworCisKKworCisvKioKKyAqIEBwYXJhbSB7aW1wb3J0KCIu
Li90b2tlbmlzZXIuanMiKS5Ub2tlbmlzZXJ9IHRva2VuaXNlcgorICovCitmdW5jdGlvbiBpbmhl
cml0YW5jZSh0b2tlbmlzZXIpIHsKKyAgY29uc3QgY29sb24gPSB0b2tlbmlzZXIuY29uc3VtZSgi
OiIpOworICBpZiAoIWNvbG9uKSB7CisgICAgcmV0dXJuIHt9OworICB9CisgIGNvbnN0IGluaGVy
aXRhbmNlID0KKyAgICB0b2tlbmlzZXIuY29uc3VtZVR5cGUoImlkZW50aWZpZXIiKSB8fAorICAg
IHRva2VuaXNlci5lcnJvcigiSW5oZXJpdGFuY2UgbGFja3MgYSB0eXBlIik7CisgIHJldHVybiB7
IGNvbG9uLCBpbmhlcml0YW5jZSB9OworfQorCitjbGFzcyBDb250YWluZXIgZXh0ZW5kcyBfYmFz
ZV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fLkJhc2UgeworICAvKioKKyAgICogQHRl
bXBsYXRlIFQKKyAgICogQHBhcmFtIHtpbXBvcnQoIi4uL3Rva2VuaXNlci5qcyIpLlRva2VuaXNl
cn0gdG9rZW5pc2VyCisgICAqIEBwYXJhbSB7VH0gaW5zdGFuY2UKKyAgICogQHBhcmFtIHsqfSBh
cmdzCisgICAqLworICBzdGF0aWMgcGFyc2UodG9rZW5pc2VyLCBpbnN0YW5jZSwgeyB0eXBlLCBp
bmhlcml0YWJsZSwgYWxsb3dlZE1lbWJlcnMgfSkgeworICAgIGNvbnN0IHsgdG9rZW5zIH0gPSBp
bnN0YW5jZTsKKyAgICB0b2tlbnMubmFtZSA9CisgICAgICB0b2tlbmlzZXIuY29uc3VtZVR5cGUo
ImlkZW50aWZpZXIiKSB8fAorICAgICAgdG9rZW5pc2VyLmVycm9yKGBNaXNzaW5nIG5hbWUgaW4g
JHtpbnN0YW5jZS50eXBlfWApOworICAgIHRva2VuaXNlci5jdXJyZW50ID0gaW5zdGFuY2U7Cisg
ICAgaW5zdGFuY2UgPSAoMCxfaGVscGVyc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9f
LmF1dG9QYXJlbnRlcikoaW5zdGFuY2UpOworICAgIGlmIChpbmhlcml0YWJsZSkgeworICAgICAg
T2JqZWN0LmFzc2lnbih0b2tlbnMsIGluaGVyaXRhbmNlKHRva2VuaXNlcikpOworICAgIH0KKyAg
ICB0b2tlbnMub3BlbiA9IHRva2VuaXNlci5jb25zdW1lKCJ7IikgfHwgdG9rZW5pc2VyLmVycm9y
KGBCb2R5bGVzcyAke3R5cGV9YCk7CisgICAgaW5zdGFuY2UubWVtYmVycyA9IFtdOworICAgIHdo
aWxlICh0cnVlKSB7CisgICAgICB0b2tlbnMuY2xvc2UgPSB0b2tlbmlzZXIuY29uc3VtZSgifSIp
OworICAgICAgaWYgKHRva2Vucy5jbG9zZSkgeworICAgICAgICB0b2tlbnMudGVybWluYXRpb24g
PQorICAgICAgICAgIHRva2VuaXNlci5jb25zdW1lKCI7IikgfHwKKyAgICAgICAgICB0b2tlbmlz
ZXIuZXJyb3IoYE1pc3Npbmcgc2VtaWNvbG9uIGFmdGVyICR7dHlwZX1gKTsKKyAgICAgICAgcmV0
dXJuIGluc3RhbmNlLnRoaXM7CisgICAgICB9CisgICAgICBjb25zdCBlYSA9IF9leHRlbmRlZF9h
dHRyaWJ1dGVzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18uRXh0ZW5kZWRBdHRyaWJ1
dGVzLnBhcnNlKHRva2VuaXNlcik7CisgICAgICBsZXQgbWVtOworICAgICAgZm9yIChjb25zdCBb
cGFyc2VyLCAuLi5hcmdzXSBvZiBhbGxvd2VkTWVtYmVycykgeworICAgICAgICBtZW0gPSAoMCxf
aGVscGVyc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fLmF1dG9QYXJlbnRlcikocGFy
c2VyKHRva2VuaXNlciwgLi4uYXJncykpOworICAgICAgICBpZiAobWVtKSB7CisgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGlmICghbWVtKSB7CisgICAgICAgIHRv
a2VuaXNlci5lcnJvcigiVW5rbm93biBtZW1iZXIiKTsKKyAgICAgIH0KKyAgICAgIG1lbS5leHRB
dHRycyA9IGVhOworICAgICAgaW5zdGFuY2UubWVtYmVycy5wdXNoKG1lbS50aGlzKTsKKyAgICB9
CisgIH0KKworICBnZXQgcGFydGlhbCgpIHsKKyAgICByZXR1cm4gISF0aGlzLnRva2Vucy5wYXJ0
aWFsOworICB9CisgIGdldCBuYW1lKCkgeworICAgIHJldHVybiAoMCxfaGVscGVyc19qc19fV0VC
UEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fLnVuZXNjYXBlKSh0aGlzLnRva2Vucy5uYW1lLnZhbHVl
KTsKKyAgfQorICBnZXQgaW5oZXJpdGFuY2UoKSB7CisgICAgaWYgKCF0aGlzLnRva2Vucy5pbmhl
cml0YW5jZSkgeworICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorICAgIHJldHVybiAoMCxfaGVs
cGVyc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fLnVuZXNjYXBlKSh0aGlzLnRva2Vu
cy5pbmhlcml0YW5jZS52YWx1ZSk7CisgIH0KKworICAqdmFsaWRhdGUoZGVmcykgeworICAgIGZv
ciAoY29uc3QgbWVtYmVyIG9mIHRoaXMubWVtYmVycykgeworICAgICAgaWYgKG1lbWJlci52YWxp
ZGF0ZSkgeworICAgICAgICB5aWVsZCogbWVtYmVyLnZhbGlkYXRlKGRlZnMpOworICAgICAgfQor
ICAgIH0KKyAgfQorCisgIC8qKiBAcGFyYW0ge2ltcG9ydCgiLi4vd3JpdGVyLmpzIikuV3JpdGVy
fSB3ICovCisgIHdyaXRlKHcpIHsKKyAgICBjb25zdCBpbmhlcml0YW5jZSA9ICgpID0+IHsKKyAg
ICAgIGlmICghdGhpcy50b2tlbnMuaW5oZXJpdGFuY2UpIHsKKyAgICAgICAgcmV0dXJuICIiOwor
ICAgICAgfQorICAgICAgcmV0dXJuIHcudHMud3JhcChbCisgICAgICAgIHcudG9rZW4odGhpcy50
b2tlbnMuY29sb24pLAorICAgICAgICB3LnRzLnRyaXZpYSh0aGlzLnRva2Vucy5pbmhlcml0YW5j
ZS50cml2aWEpLAorICAgICAgICB3LnRzLmluaGVyaXRhbmNlKAorICAgICAgICAgIHcucmVmZXJl
bmNlKHRoaXMudG9rZW5zLmluaGVyaXRhbmNlLnZhbHVlLCB7IGNvbnRleHQ6IHRoaXMgfSkKKyAg
ICAgICAgKSwKKyAgICAgIF0pOwogICAgIH07CiAKLSAgICBpZiAoaW5Ob2RlKSBtb2R1bGUuZXhw
b3J0cyA9IG9iajsKLSAgICBlbHNlICAgICAgICBzZWxmLldlYklETDIgPSBvYmo7Ci19KCkpOwor
ICAgIHJldHVybiB3LnRzLmRlZmluaXRpb24oCisgICAgICB3LnRzLndyYXAoWworICAgICAgICB0
aGlzLmV4dEF0dHJzLndyaXRlKHcpLAorICAgICAgICB3LnRva2VuKHRoaXMudG9rZW5zLmNhbGxi
YWNrKSwKKyAgICAgICAgdy50b2tlbih0aGlzLnRva2Vucy5wYXJ0aWFsKSwKKyAgICAgICAgdy50
b2tlbih0aGlzLnRva2Vucy5iYXNlKSwKKyAgICAgICAgdy50b2tlbih0aGlzLnRva2Vucy5taXhp
biksCisgICAgICAgIHcubmFtZV90b2tlbih0aGlzLnRva2Vucy5uYW1lLCB7IGRhdGE6IHRoaXMg
fSksCisgICAgICAgIGluaGVyaXRhbmNlKCksCisgICAgICAgIHcudG9rZW4odGhpcy50b2tlbnMu
b3BlbiksCisgICAgICAgIHcudHMud3JhcCh0aGlzLm1lbWJlcnMubWFwKChtKSA9PiBtLndyaXRl
KHcpKSksCisgICAgICAgIHcudG9rZW4odGhpcy50b2tlbnMuY2xvc2UpLAorICAgICAgICB3LnRv
a2VuKHRoaXMudG9rZW5zLnRlcm1pbmF0aW9uKSwKKyAgICAgIF0pLAorICAgICAgeyBkYXRhOiB0
aGlzIH0KKyAgICApOworICB9Cit9CisKKworLyoqKi8gfSksCisvKiAyMSAqLworLyoqKi8gKChf
X3VudXNlZF93ZWJwYWNrX19fd2VicGFja19tb2R1bGVfXywgX193ZWJwYWNrX2V4cG9ydHNfXywg
X193ZWJwYWNrX3JlcXVpcmVfXykgPT4geworCitfX3dlYnBhY2tfcmVxdWlyZV9fLnIoX193ZWJw
YWNrX2V4cG9ydHNfXyk7CisvKiBoYXJtb255IGV4cG9ydCAqLyBfX3dlYnBhY2tfcmVxdWlyZV9f
LmQoX193ZWJwYWNrX2V4cG9ydHNfXywgeworLyogaGFybW9ueSBleHBvcnQgKi8gICAiQ29uc3Rh
bnQiOiAoKSA9PiAoLyogYmluZGluZyAqLyBDb25zdGFudCkKKy8qIGhhcm1vbnkgZXhwb3J0ICov
IH0pOworLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9iYXNlX2pzX19XRUJQQUNLX0lNUE9SVEVE
X01PRFVMRV8wX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpOworLyogaGFybW9ueSBpbXBvcnQg
Ki8gdmFyIF90eXBlX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18gPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDUpOworLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9oZWxwZXJzX2pzX19XRUJQ
QUNLX0lNUE9SVEVEX01PRFVMRV8yX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpOworCisKKwor
CitjbGFzcyBDb25zdGFudCBleHRlbmRzIF9iYXNlX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVM
RV8wX18uQmFzZSB7CisgIC8qKgorICAgKiBAcGFyYW0ge2ltcG9ydCgiLi4vdG9rZW5pc2VyLmpz
IikuVG9rZW5pc2VyfSB0b2tlbmlzZXIKKyAgICovCisgIHN0YXRpYyBwYXJzZSh0b2tlbmlzZXIp
IHsKKyAgICAvKiogQHR5cGUge0Jhc2VbInRva2VucyJdfSAqLworICAgIGNvbnN0IHRva2VucyA9
IHt9OworICAgIHRva2Vucy5iYXNlID0gdG9rZW5pc2VyLmNvbnN1bWUoImNvbnN0Iik7CisgICAg
aWYgKCF0b2tlbnMuYmFzZSkgeworICAgICAgcmV0dXJuOworICAgIH0KKyAgICBsZXQgaWRsVHlw
ZSA9ICgwLF9oZWxwZXJzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18ucHJpbWl0aXZl
X3R5cGUpKHRva2VuaXNlcik7CisgICAgaWYgKCFpZGxUeXBlKSB7CisgICAgICBjb25zdCBiYXNl
ID0KKyAgICAgICAgdG9rZW5pc2VyLmNvbnN1bWVUeXBlKCJpZGVudGlmaWVyIikgfHwKKyAgICAg
ICAgdG9rZW5pc2VyLmVycm9yKCJDb25zdCBsYWNrcyBhIHR5cGUiKTsKKyAgICAgIGlkbFR5cGUg
PSBuZXcgX3R5cGVfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXy5UeXBlKHsgc291cmNl
OiB0b2tlbmlzZXIuc291cmNlLCB0b2tlbnM6IHsgYmFzZSB9IH0pOworICAgIH0KKyAgICBpZiAo
dG9rZW5pc2VyLnByb2JlKCI/IikpIHsKKyAgICAgIHRva2VuaXNlci5lcnJvcigiVW5leHBlY3Rl
ZCBudWxsYWJsZSBjb25zdGFudCB0eXBlIik7CisgICAgfQorICAgIGlkbFR5cGUudHlwZSA9ICJj
b25zdC10eXBlIjsKKyAgICB0b2tlbnMubmFtZSA9CisgICAgICB0b2tlbmlzZXIuY29uc3VtZVR5
cGUoImlkZW50aWZpZXIiKSB8fAorICAgICAgdG9rZW5pc2VyLmVycm9yKCJDb25zdCBsYWNrcyBh
IG5hbWUiKTsKKyAgICB0b2tlbnMuYXNzaWduID0KKyAgICAgIHRva2VuaXNlci5jb25zdW1lKCI9
IikgfHwgdG9rZW5pc2VyLmVycm9yKCJDb25zdCBsYWNrcyB2YWx1ZSBhc3NpZ25tZW50Iik7Cisg
ICAgdG9rZW5zLnZhbHVlID0KKyAgICAgICgwLF9oZWxwZXJzX2pzX19XRUJQQUNLX0lNUE9SVEVE
X01PRFVMRV8yX18uY29uc3RfdmFsdWUpKHRva2VuaXNlcikgfHwgdG9rZW5pc2VyLmVycm9yKCJD
b25zdCBsYWNrcyBhIHZhbHVlIik7CisgICAgdG9rZW5zLnRlcm1pbmF0aW9uID0KKyAgICAgIHRv
a2VuaXNlci5jb25zdW1lKCI7IikgfHwKKyAgICAgIHRva2VuaXNlci5lcnJvcigiVW50ZXJtaW5h
dGVkIGNvbnN0LCBleHBlY3RlZCBgO2AiKTsKKyAgICBjb25zdCByZXQgPSBuZXcgQ29uc3RhbnQo
eyBzb3VyY2U6IHRva2VuaXNlci5zb3VyY2UsIHRva2VucyB9KTsKKyAgICAoMCxfaGVscGVyc19q
c19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fLmF1dG9QYXJlbnRlcikocmV0KS5pZGxUeXBl
ID0gaWRsVHlwZTsKKyAgICByZXR1cm4gcmV0OworICB9CisKKyAgZ2V0IHR5cGUoKSB7CisgICAg
cmV0dXJuICJjb25zdCI7CisgIH0KKyAgZ2V0IG5hbWUoKSB7CisgICAgcmV0dXJuICgwLF9oZWxw
ZXJzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18udW5lc2NhcGUpKHRoaXMudG9rZW5z
Lm5hbWUudmFsdWUpOworICB9CisgIGdldCB2YWx1ZSgpIHsKKyAgICByZXR1cm4gKDAsX2hlbHBl
cnNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXy5jb25zdF9kYXRhKSh0aGlzLnRva2Vu
cy52YWx1ZSk7CisgIH0KKworICAvKiogQHBhcmFtIHtpbXBvcnQoIi4uL3dyaXRlci5qcyIpLldy
aXRlcn0gdyAqLworICB3cml0ZSh3KSB7CisgICAgY29uc3QgeyBwYXJlbnQgfSA9IHRoaXM7Cisg
ICAgcmV0dXJuIHcudHMuZGVmaW5pdGlvbigKKyAgICAgIHcudHMud3JhcChbCisgICAgICAgIHRo
aXMuZXh0QXR0cnMud3JpdGUodyksCisgICAgICAgIHcudG9rZW4odGhpcy50b2tlbnMuYmFzZSks
CisgICAgICAgIHcudHMudHlwZSh0aGlzLmlkbFR5cGUud3JpdGUodykpLAorICAgICAgICB3Lm5h
bWVfdG9rZW4odGhpcy50b2tlbnMubmFtZSwgeyBkYXRhOiB0aGlzLCBwYXJlbnQgfSksCisgICAg
ICAgIHcudG9rZW4odGhpcy50b2tlbnMuYXNzaWduKSwKKyAgICAgICAgdy50b2tlbih0aGlzLnRv
a2Vucy52YWx1ZSksCisgICAgICAgIHcudG9rZW4odGhpcy50b2tlbnMudGVybWluYXRpb24pLAor
ICAgICAgXSksCisgICAgICB7IGRhdGE6IHRoaXMsIHBhcmVudCB9CisgICAgKTsKKyAgfQorfQor
CisKKy8qKiovIH0pLAorLyogMjIgKi8KKy8qKiovICgoX191bnVzZWRfd2VicGFja19fX3dlYnBh
Y2tfbW9kdWxlX18sIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pID0+
IHsKKworX193ZWJwYWNrX3JlcXVpcmVfXy5yKF9fd2VicGFja19leHBvcnRzX18pOworLyogaGFy
bW9ueSBleHBvcnQgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18s
IHsKKy8qIGhhcm1vbnkgZXhwb3J0ICovICAgIkl0ZXJhYmxlTGlrZSI6ICgpID0+ICgvKiBiaW5k
aW5nICovIEl0ZXJhYmxlTGlrZSkKKy8qIGhhcm1vbnkgZXhwb3J0ICovIH0pOworLyogaGFybW9u
eSBpbXBvcnQgKi8gdmFyIF9iYXNlX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18gPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDYpOworLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9oZWxwZXJz
X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQp
OworCisKKworY2xhc3MgSXRlcmFibGVMaWtlIGV4dGVuZHMgX2Jhc2VfanNfX1dFQlBBQ0tfSU1Q
T1JURURfTU9EVUxFXzBfXy5CYXNlIHsKKyAgLyoqCisgICAqIEBwYXJhbSB7aW1wb3J0KCIuLi90
b2tlbmlzZXIuanMiKS5Ub2tlbmlzZXJ9IHRva2VuaXNlcgorICAgKi8KKyAgc3RhdGljIHBhcnNl
KHRva2VuaXNlcikgeworICAgIGNvbnN0IHN0YXJ0X3Bvc2l0aW9uID0gdG9rZW5pc2VyLnBvc2l0
aW9uOworICAgIGNvbnN0IHRva2VucyA9IHt9OworICAgIGNvbnN0IHJldCA9ICgwLF9oZWxwZXJz
X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18uYXV0b1BhcmVudGVyKSgKKyAgICAgIG5l
dyBJdGVyYWJsZUxpa2UoeyBzb3VyY2U6IHRva2VuaXNlci5zb3VyY2UsIHRva2VucyB9KQorICAg
ICk7CisgICAgdG9rZW5zLnJlYWRvbmx5ID0gdG9rZW5pc2VyLmNvbnN1bWUoInJlYWRvbmx5Iik7
CisgICAgaWYgKCF0b2tlbnMucmVhZG9ubHkpIHsKKyAgICAgIHRva2Vucy5hc3luYyA9IHRva2Vu
aXNlci5jb25zdW1lKCJhc3luYyIpOworICAgIH0KKyAgICB0b2tlbnMuYmFzZSA9IHRva2Vucy5y
ZWFkb25seQorICAgICAgPyB0b2tlbmlzZXIuY29uc3VtZSgibWFwbGlrZSIsICJzZXRsaWtlIikK
KyAgICAgIDogdG9rZW5zLmFzeW5jCisgICAgICA/IHRva2VuaXNlci5jb25zdW1lKCJpdGVyYWJs
ZSIpCisgICAgICA6IHRva2VuaXNlci5jb25zdW1lKCJpdGVyYWJsZSIsICJtYXBsaWtlIiwgInNl
dGxpa2UiKTsKKyAgICBpZiAoIXRva2Vucy5iYXNlKSB7CisgICAgICB0b2tlbmlzZXIudW5jb25z
dW1lKHN0YXJ0X3Bvc2l0aW9uKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjb25zdCB7
IHR5cGUgfSA9IHJldDsKKyAgICBjb25zdCBzZWNvbmRUeXBlUmVxdWlyZWQgPSB0eXBlID09PSAi
bWFwbGlrZSI7CisgICAgY29uc3Qgc2Vjb25kVHlwZUFsbG93ZWQgPSBzZWNvbmRUeXBlUmVxdWly
ZWQgfHwgdHlwZSA9PT0gIml0ZXJhYmxlIjsKKyAgICBjb25zdCBhcmd1bWVudEFsbG93ZWQgPSBy
ZXQuYXN5bmMgJiYgdHlwZSA9PT0gIml0ZXJhYmxlIjsKKworICAgIHRva2Vucy5vcGVuID0KKyAg
ICAgIHRva2VuaXNlci5jb25zdW1lKCI8IikgfHwKKyAgICAgIHRva2VuaXNlci5lcnJvcihgTWlz
c2luZyBsZXNzLXRoYW4gc2lnbiBcYDxcYCBpbiAke3R5cGV9IGRlY2xhcmF0aW9uYCk7CisgICAg
Y29uc3QgZmlyc3QgPQorICAgICAgKDAsX2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9E
VUxFXzFfXy50eXBlX3dpdGhfZXh0ZW5kZWRfYXR0cmlidXRlcykodG9rZW5pc2VyKSB8fAorICAg
ICAgdG9rZW5pc2VyLmVycm9yKGBNaXNzaW5nIGEgdHlwZSBhcmd1bWVudCBpbiAke3R5cGV9IGRl
Y2xhcmF0aW9uYCk7CisgICAgcmV0LmlkbFR5cGUgPSBbZmlyc3RdOworICAgIHJldC5hcmd1bWVu
dHMgPSBbXTsKKworICAgIGlmIChzZWNvbmRUeXBlQWxsb3dlZCkgeworICAgICAgZmlyc3QudG9r
ZW5zLnNlcGFyYXRvciA9IHRva2VuaXNlci5jb25zdW1lKCIsIik7CisgICAgICBpZiAoZmlyc3Qu
dG9rZW5zLnNlcGFyYXRvcikgeworICAgICAgICByZXQuaWRsVHlwZS5wdXNoKCgwLF9oZWxwZXJz
X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18udHlwZV93aXRoX2V4dGVuZGVkX2F0dHJp
YnV0ZXMpKHRva2VuaXNlcikpOworICAgICAgfSBlbHNlIGlmIChzZWNvbmRUeXBlUmVxdWlyZWQp
IHsKKyAgICAgICAgdG9rZW5pc2VyLmVycm9yKGBNaXNzaW5nIHNlY29uZCB0eXBlIGFyZ3VtZW50
IGluICR7dHlwZX0gZGVjbGFyYXRpb25gKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICB0b2tlbnMu
Y2xvc2UgPQorICAgICAgdG9rZW5pc2VyLmNvbnN1bWUoIj4iKSB8fAorICAgICAgdG9rZW5pc2Vy
LmVycm9yKGBNaXNzaW5nIGdyZWF0ZXItdGhhbiBzaWduIFxgPlxgIGluICR7dHlwZX0gZGVjbGFy
YXRpb25gKTsKKworICAgIGlmICh0b2tlbmlzZXIucHJvYmUoIigiKSkgeworICAgICAgaWYgKGFy
Z3VtZW50QWxsb3dlZCkgeworICAgICAgICB0b2tlbnMuYXJnc09wZW4gPSB0b2tlbmlzZXIuY29u
c3VtZSgiKCIpOworICAgICAgICByZXQuYXJndW1lbnRzLnB1c2goLi4uKDAsX2hlbHBlcnNfanNf
X1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXy5hcmd1bWVudF9saXN0KSh0b2tlbmlzZXIpKTsK
KyAgICAgICAgdG9rZW5zLmFyZ3NDbG9zZSA9CisgICAgICAgICAgdG9rZW5pc2VyLmNvbnN1bWUo
IikiKSB8fAorICAgICAgICAgIHRva2VuaXNlci5lcnJvcigiVW50ZXJtaW5hdGVkIGFzeW5jIGl0
ZXJhYmxlIGFyZ3VtZW50IGxpc3QiKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHRva2VuaXNl
ci5lcnJvcihgQXJndW1lbnRzIGFyZSBvbmx5IGFsbG93ZWQgZm9yIFxgYXN5bmMgaXRlcmFibGVc
YGApOworICAgICAgfQorICAgIH0KKworICAgIHRva2Vucy50ZXJtaW5hdGlvbiA9CisgICAgICB0
b2tlbmlzZXIuY29uc3VtZSgiOyIpIHx8CisgICAgICB0b2tlbmlzZXIuZXJyb3IoYE1pc3Npbmcg
c2VtaWNvbG9uIGFmdGVyICR7dHlwZX0gZGVjbGFyYXRpb25gKTsKKworICAgIHJldHVybiByZXQu
dGhpczsKKyAgfQorCisgIGdldCB0eXBlKCkgeworICAgIHJldHVybiB0aGlzLnRva2Vucy5iYXNl
LnZhbHVlOworICB9CisgIGdldCByZWFkb25seSgpIHsKKyAgICByZXR1cm4gISF0aGlzLnRva2Vu
cy5yZWFkb25seTsKKyAgfQorICBnZXQgYXN5bmMoKSB7CisgICAgcmV0dXJuICEhdGhpcy50b2tl
bnMuYXN5bmM7CisgIH0KKworICAqdmFsaWRhdGUoZGVmcykgeworICAgIGZvciAoY29uc3QgdHlw
ZSBvZiB0aGlzLmlkbFR5cGUpIHsKKyAgICAgIHlpZWxkKiB0eXBlLnZhbGlkYXRlKGRlZnMpOwor
ICAgIH0KKyAgICBmb3IgKGNvbnN0IGFyZ3VtZW50IG9mIHRoaXMuYXJndW1lbnRzKSB7CisgICAg
ICB5aWVsZCogYXJndW1lbnQudmFsaWRhdGUoZGVmcyk7CisgICAgfQorICB9CisKKyAgLyoqIEBw
YXJhbSB7aW1wb3J0KCIuLi93cml0ZXIuanMiKS5Xcml0ZXJ9IHcgKi8KKyAgd3JpdGUodykgewor
ICAgIHJldHVybiB3LnRzLmRlZmluaXRpb24oCisgICAgICB3LnRzLndyYXAoWworICAgICAgICB0
aGlzLmV4dEF0dHJzLndyaXRlKHcpLAorICAgICAgICB3LnRva2VuKHRoaXMudG9rZW5zLnJlYWRv
bmx5KSwKKyAgICAgICAgdy50b2tlbih0aGlzLnRva2Vucy5hc3luYyksCisgICAgICAgIHcudG9r
ZW4odGhpcy50b2tlbnMuYmFzZSwgdy50cy5nZW5lcmljKSwKKyAgICAgICAgdy50b2tlbih0aGlz
LnRva2Vucy5vcGVuKSwKKyAgICAgICAgdy50cy53cmFwKHRoaXMuaWRsVHlwZS5tYXAoKHQpID0+
IHQud3JpdGUodykpKSwKKyAgICAgICAgdy50b2tlbih0aGlzLnRva2Vucy5jbG9zZSksCisgICAg
ICAgIHcudG9rZW4odGhpcy50b2tlbnMuYXJnc09wZW4pLAorICAgICAgICB3LnRzLndyYXAodGhp
cy5hcmd1bWVudHMubWFwKChhcmcpID0+IGFyZy53cml0ZSh3KSkpLAorICAgICAgICB3LnRva2Vu
KHRoaXMudG9rZW5zLmFyZ3NDbG9zZSksCisgICAgICAgIHcudG9rZW4odGhpcy50b2tlbnMudGVy
bWluYXRpb24pLAorICAgICAgXSksCisgICAgICB7IGRhdGE6IHRoaXMsIHBhcmVudDogdGhpcy5w
YXJlbnQgfQorICAgICk7CisgIH0KK30KKworCisvKioqLyB9KSwKKy8qIDIzICovCisvKioqLyAo
KF9fdW51c2VkX3dlYnBhY2tfX193ZWJwYWNrX21vZHVsZV9fLCBfX3dlYnBhY2tfZXhwb3J0c19f
LCBfX3dlYnBhY2tfcmVxdWlyZV9fKSA9PiB7CisKK19fd2VicGFja19yZXF1aXJlX18ucihfX3dl
YnBhY2tfZXhwb3J0c19fKTsKKy8qIGhhcm1vbnkgZXhwb3J0ICovIF9fd2VicGFja19yZXF1aXJl
X18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCB7CisvKiBoYXJtb255IGV4cG9ydCAqLyAgICJjaGVj
a0ludGVyZmFjZU1lbWJlckR1cGxpY2F0aW9uIjogKCkgPT4gKC8qIGJpbmRpbmcgKi8gY2hlY2tJ
bnRlcmZhY2VNZW1iZXJEdXBsaWNhdGlvbikKKy8qIGhhcm1vbnkgZXhwb3J0ICovIH0pOworLyog
aGFybW9ueSBpbXBvcnQgKi8gdmFyIF9lcnJvcl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVf
MF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTsKKy8vIEB0cy1jaGVjaworCisKKworZnVuY3Rp
b24qIGNoZWNrSW50ZXJmYWNlTWVtYmVyRHVwbGljYXRpb24oZGVmcywgaSkgeworICBjb25zdCBv
cE5hbWVzID0gbmV3IFNldChnZXRPcGVyYXRpb25zKGkpLm1hcCgob3ApID0+IG9wLm5hbWUpKTsK
KyAgY29uc3QgcGFydGlhbHMgPSBkZWZzLnBhcnRpYWxzLmdldChpLm5hbWUpIHx8IFtdOworICBj
b25zdCBtaXhpbnMgPSBkZWZzLm1peGluTWFwLmdldChpLm5hbWUpIHx8IFtdOworICBmb3IgKGNv
bnN0IGV4dCBvZiBbLi4ucGFydGlhbHMsIC4uLm1peGluc10pIHsKKyAgICBjb25zdCBhZGRpdGlv
bnMgPSBnZXRPcGVyYXRpb25zKGV4dCk7CisgICAgeWllbGQqIGZvckVhY2hFeHRlbnNpb24oYWRk
aXRpb25zLCBvcE5hbWVzLCBleHQsIGkpOworICAgIGZvciAoY29uc3QgYWRkaXRpb24gb2YgYWRk
aXRpb25zKSB7CisgICAgICBvcE5hbWVzLmFkZChhZGRpdGlvbi5uYW1lKTsKKyAgICB9CisgIH0K
KworICBmdW5jdGlvbiogZm9yRWFjaEV4dGVuc2lvbihhZGRpdGlvbnMsIGV4aXN0aW5ncywgZXh0
LCBiYXNlKSB7CisgICAgZm9yIChjb25zdCBhZGRpdGlvbiBvZiBhZGRpdGlvbnMpIHsKKyAgICAg
IGNvbnN0IHsgbmFtZSB9ID0gYWRkaXRpb247CisgICAgICBpZiAobmFtZSAmJiBleGlzdGluZ3Mu
aGFzKG5hbWUpKSB7CisgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgVGhlIG9wZXJhdGlvbiAiJHtu
YW1lfSIgaGFzIGFscmVhZHkgYmVlbiBkZWZpbmVkIGZvciB0aGUgYmFzZSBpbnRlcmZhY2UgIiR7
YmFzZS5uYW1lfSIgZWl0aGVyIGluIGl0c2VsZiBvciBpbiBhIG1peGluYDsKKyAgICAgICAgeWll
bGQgKDAsX2Vycm9yX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18udmFsaWRhdGlvbkVy
cm9yKSgKKyAgICAgICAgICBhZGRpdGlvbi50b2tlbnMubmFtZSwKKyAgICAgICAgICBleHQsCisg
ICAgICAgICAgIm5vLWNyb3NzLW92ZXJsb2FkIiwKKyAgICAgICAgICBtZXNzYWdlCisgICAgICAg
ICk7CisgICAgICB9CisgICAgfQorICB9CisKKyAgZnVuY3Rpb24gZ2V0T3BlcmF0aW9ucyhpKSB7
CisgICAgcmV0dXJuIGkubWVtYmVycy5maWx0ZXIoKHsgdHlwZSB9KSA9PiB0eXBlID09PSAib3Bl
cmF0aW9uIik7CisgIH0KK30KKworCisvKioqLyB9KSwKKy8qIDI0ICovCisvKioqLyAoKF9fdW51
c2VkX3dlYnBhY2tfX193ZWJwYWNrX21vZHVsZV9fLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dl
YnBhY2tfcmVxdWlyZV9fKSA9PiB7CisKK19fd2VicGFja19yZXF1aXJlX18ucihfX3dlYnBhY2tf
ZXhwb3J0c19fKTsKKy8qIGhhcm1vbnkgZXhwb3J0ICovIF9fd2VicGFja19yZXF1aXJlX18uZChf
X3dlYnBhY2tfZXhwb3J0c19fLCB7CisvKiBoYXJtb255IGV4cG9ydCAqLyAgICJDb25zdHJ1Y3Rv
ciI6ICgpID0+ICgvKiBiaW5kaW5nICovIENvbnN0cnVjdG9yKQorLyogaGFybW9ueSBleHBvcnQg
Ki8gfSk7CisvKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2Jhc2VfanNfX1dFQlBBQ0tfSU1QT1JU
RURfTU9EVUxFXzBfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNik7CisvKiBoYXJtb255IGltcG9y
dCAqLyB2YXIgX2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXyA9IF9fd2Vi
cGFja19yZXF1aXJlX18oNCk7CisKKworCitjbGFzcyBDb25zdHJ1Y3RvciBleHRlbmRzIF9iYXNl
X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18uQmFzZSB7CisgIC8qKgorICAgKiBAcGFy
YW0ge2ltcG9ydCgiLi4vdG9rZW5pc2VyIikuVG9rZW5pc2VyfSB0b2tlbmlzZXIKKyAgICovCisg
IHN0YXRpYyBwYXJzZSh0b2tlbmlzZXIpIHsKKyAgICBjb25zdCBiYXNlID0gdG9rZW5pc2VyLmNv
bnN1bWUoImNvbnN0cnVjdG9yIik7CisgICAgaWYgKCFiYXNlKSB7CisgICAgICByZXR1cm47Cisg
ICAgfQorICAgIC8qKiBAdHlwZSB7QmFzZVsidG9rZW5zIl19ICovCisgICAgY29uc3QgdG9rZW5z
ID0geyBiYXNlIH07CisgICAgdG9rZW5zLm9wZW4gPQorICAgICAgdG9rZW5pc2VyLmNvbnN1bWUo
IigiKSB8fAorICAgICAgdG9rZW5pc2VyLmVycm9yKCJObyBhcmd1bWVudCBsaXN0IGluIGNvbnN0
cnVjdG9yIik7CisgICAgY29uc3QgYXJncyA9ICgwLF9oZWxwZXJzX2pzX19XRUJQQUNLX0lNUE9S
VEVEX01PRFVMRV8xX18uYXJndW1lbnRfbGlzdCkodG9rZW5pc2VyKTsKKyAgICB0b2tlbnMuY2xv
c2UgPQorICAgICAgdG9rZW5pc2VyLmNvbnN1bWUoIikiKSB8fCB0b2tlbmlzZXIuZXJyb3IoIlVu
dGVybWluYXRlZCBjb25zdHJ1Y3RvciIpOworICAgIHRva2Vucy50ZXJtaW5hdGlvbiA9CisgICAg
ICB0b2tlbmlzZXIuY29uc3VtZSgiOyIpIHx8CisgICAgICB0b2tlbmlzZXIuZXJyb3IoIk5vIHNl
bWljb2xvbiBhZnRlciBjb25zdHJ1Y3RvciIpOworICAgIGNvbnN0IHJldCA9IG5ldyBDb25zdHJ1
Y3Rvcih7IHNvdXJjZTogdG9rZW5pc2VyLnNvdXJjZSwgdG9rZW5zIH0pOworICAgICgwLF9oZWxw
ZXJzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18uYXV0b1BhcmVudGVyKShyZXQpLmFy
Z3VtZW50cyA9IGFyZ3M7CisgICAgcmV0dXJuIHJldDsKKyAgfQorCisgIGdldCB0eXBlKCkgewor
ICAgIHJldHVybiAiY29uc3RydWN0b3IiOworICB9CisKKyAgKnZhbGlkYXRlKGRlZnMpIHsKKyAg
ICBpZiAodGhpcy5pZGxUeXBlKSB7CisgICAgICB5aWVsZCogdGhpcy5pZGxUeXBlLnZhbGlkYXRl
KGRlZnMpOworICAgIH0KKyAgICBmb3IgKGNvbnN0IGFyZ3VtZW50IG9mIHRoaXMuYXJndW1lbnRz
KSB7CisgICAgICB5aWVsZCogYXJndW1lbnQudmFsaWRhdGUoZGVmcyk7CisgICAgfQorICB9CisK
KyAgLyoqIEBwYXJhbSB7aW1wb3J0KCIuLi93cml0ZXIuanMiKS5Xcml0ZXJ9IHcgKi8KKyAgd3Jp
dGUodykgeworICAgIGNvbnN0IHsgcGFyZW50IH0gPSB0aGlzOworICAgIHJldHVybiB3LnRzLmRl
ZmluaXRpb24oCisgICAgICB3LnRzLndyYXAoWworICAgICAgICB0aGlzLmV4dEF0dHJzLndyaXRl
KHcpLAorICAgICAgICB3LnRva2VuKHRoaXMudG9rZW5zLmJhc2UsIHcudHMubmFtZWxlc3MsIHsg
ZGF0YTogdGhpcywgcGFyZW50IH0pLAorICAgICAgICB3LnRva2VuKHRoaXMudG9rZW5zLm9wZW4p
LAorICAgICAgICB3LnRzLndyYXAodGhpcy5hcmd1bWVudHMubWFwKChhcmcpID0+IGFyZy53cml0
ZSh3KSkpLAorICAgICAgICB3LnRva2VuKHRoaXMudG9rZW5zLmNsb3NlKSwKKyAgICAgICAgdy50
b2tlbih0aGlzLnRva2Vucy50ZXJtaW5hdGlvbiksCisgICAgICBdKSwKKyAgICAgIHsgZGF0YTog
dGhpcywgcGFyZW50IH0KKyAgICApOworICB9Cit9CisKKworLyoqKi8gfSksCisvKiAyNSAqLwor
LyoqKi8gKChfX3VudXNlZF93ZWJwYWNrX19fd2VicGFja19tb2R1bGVfXywgX193ZWJwYWNrX2V4
cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykgPT4geworCitfX3dlYnBhY2tfcmVxdWlyZV9f
LnIoX193ZWJwYWNrX2V4cG9ydHNfXyk7CisvKiBoYXJtb255IGV4cG9ydCAqLyBfX3dlYnBhY2tf
cmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgeworLyogaGFybW9ueSBleHBvcnQgKi8g
ICAiTWl4aW4iOiAoKSA9PiAoLyogYmluZGluZyAqLyBNaXhpbikKKy8qIGhhcm1vbnkgZXhwb3J0
ICovIH0pOworLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9jb250YWluZXJfanNfX1dFQlBBQ0tf
SU1QT1JURURfTU9EVUxFXzBfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMjApOworLyogaGFybW9u
eSBpbXBvcnQgKi8gdmFyIF9jb25zdGFudF9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9f
ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMSk7CisvKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2F0
dHJpYnV0ZV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fID0gX193ZWJwYWNrX3JlcXVp
cmVfXygxNCk7CisvKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX29wZXJhdGlvbl9qc19fV0VCUEFD
S19JTVBPUlRFRF9NT0RVTEVfM19fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMyk7CisvKiBoYXJt
b255IGltcG9ydCAqLyB2YXIgX2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRf
XyA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7CisKKworCisKKworCitjbGFzcyBNaXhpbiBleHRl
bmRzIF9jb250YWluZXJfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXy5Db250YWluZXIg
eworICAvKioKKyAgICogQHR5cGVkZWYge2ltcG9ydCgiLi4vdG9rZW5pc2VyLmpzIikuVG9rZW59
IFRva2VuCisgICAqCisgICAqIEBwYXJhbSB7aW1wb3J0KCIuLi90b2tlbmlzZXIuanMiKS5Ub2tl
bmlzZXJ9IHRva2VuaXNlcgorICAgKiBAcGFyYW0ge1Rva2VufSBiYXNlCisgICAqIEBwYXJhbSB7
b2JqZWN0fSBbb3B0aW9uc10KKyAgICogQHBhcmFtIHtUb2tlbn0gW29wdGlvbnMucGFydGlhbF0K
KyAgICovCisgIHN0YXRpYyBwYXJzZSh0b2tlbmlzZXIsIGJhc2UsIHsgcGFydGlhbCB9ID0ge30p
IHsKKyAgICBjb25zdCB0b2tlbnMgPSB7IHBhcnRpYWwsIGJhc2UgfTsKKyAgICB0b2tlbnMubWl4
aW4gPSB0b2tlbmlzZXIuY29uc3VtZSgibWl4aW4iKTsKKyAgICBpZiAoIXRva2Vucy5taXhpbikg
eworICAgICAgcmV0dXJuOworICAgIH0KKyAgICByZXR1cm4gX2NvbnRhaW5lcl9qc19fV0VCUEFD
S19JTVBPUlRFRF9NT0RVTEVfMF9fLkNvbnRhaW5lci5wYXJzZSgKKyAgICAgIHRva2VuaXNlciwK
KyAgICAgIG5ldyBNaXhpbih7IHNvdXJjZTogdG9rZW5pc2VyLnNvdXJjZSwgdG9rZW5zIH0pLAor
ICAgICAgeworICAgICAgICB0eXBlOiAiaW50ZXJmYWNlIG1peGluIiwKKyAgICAgICAgYWxsb3dl
ZE1lbWJlcnM6IFsKKyAgICAgICAgICBbX2NvbnN0YW50X2pzX19XRUJQQUNLX0lNUE9SVEVEX01P
RFVMRV8xX18uQ29uc3RhbnQucGFyc2VdLAorICAgICAgICAgIFtfaGVscGVyc19qc19fV0VCUEFD
S19JTVBPUlRFRF9NT0RVTEVfNF9fLnN0cmluZ2lmaWVyXSwKKyAgICAgICAgICBbX2F0dHJpYnV0
ZV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fLkF0dHJpYnV0ZS5wYXJzZSwgeyBub0lu
aGVyaXQ6IHRydWUgfV0sCisgICAgICAgICAgW19vcGVyYXRpb25fanNfX1dFQlBBQ0tfSU1QT1JU
RURfTU9EVUxFXzNfXy5PcGVyYXRpb24ucGFyc2UsIHsgcmVndWxhcjogdHJ1ZSB9XSwKKyAgICAg
ICAgXSwKKyAgICAgIH0KKyAgICApOworICB9CisKKyAgZ2V0IHR5cGUoKSB7CisgICAgcmV0dXJu
ICJpbnRlcmZhY2UgbWl4aW4iOworICB9Cit9CisKKworLyoqKi8gfSksCisvKiAyNiAqLworLyoq
Ki8gKChfX3VudXNlZF93ZWJwYWNrX19fd2VicGFja19tb2R1bGVfXywgX193ZWJwYWNrX2V4cG9y
dHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykgPT4geworCitfX3dlYnBhY2tfcmVxdWlyZV9fLnIo
X193ZWJwYWNrX2V4cG9ydHNfXyk7CisvKiBoYXJtb255IGV4cG9ydCAqLyBfX3dlYnBhY2tfcmVx
dWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgeworLyogaGFybW9ueSBleHBvcnQgKi8gICAi
RGljdGlvbmFyeSI6ICgpID0+ICgvKiBiaW5kaW5nICovIERpY3Rpb25hcnkpCisvKiBoYXJtb255
IGV4cG9ydCAqLyB9KTsKKy8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfY29udGFpbmVyX2pzX19X
RUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwKTsKKy8q
IGhhcm1vbnkgaW1wb3J0ICovIHZhciBfZmllbGRfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxF
XzFfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMjcpOworLy8gQHRzLWNoZWNrCisKKworCisKK2Ns
YXNzIERpY3Rpb25hcnkgZXh0ZW5kcyBfY29udGFpbmVyX2pzX19XRUJQQUNLX0lNUE9SVEVEX01P
RFVMRV8wX18uQ29udGFpbmVyIHsKKyAgLyoqCisgICAqIEBwYXJhbSB7aW1wb3J0KCIuLi90b2tl
bmlzZXIiKS5Ub2tlbmlzZXJ9IHRva2VuaXNlcgorICAgKiBAcGFyYW0ge29iamVjdH0gW29wdGlv
bnNdCisgICAqIEBwYXJhbSB7aW1wb3J0KCIuLi90b2tlbmlzZXIuanMiKS5Ub2tlbn0gW29wdGlv
bnMucGFydGlhbF0KKyAgICovCisgIHN0YXRpYyBwYXJzZSh0b2tlbmlzZXIsIHsgcGFydGlhbCB9
ID0ge30pIHsKKyAgICBjb25zdCB0b2tlbnMgPSB7IHBhcnRpYWwgfTsKKyAgICB0b2tlbnMuYmFz
ZSA9IHRva2VuaXNlci5jb25zdW1lKCJkaWN0aW9uYXJ5Iik7CisgICAgaWYgKCF0b2tlbnMuYmFz
ZSkgeworICAgICAgcmV0dXJuOworICAgIH0KKyAgICByZXR1cm4gX2NvbnRhaW5lcl9qc19fV0VC
UEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fLkNvbnRhaW5lci5wYXJzZSgKKyAgICAgIHRva2VuaXNl
ciwKKyAgICAgIG5ldyBEaWN0aW9uYXJ5KHsgc291cmNlOiB0b2tlbmlzZXIuc291cmNlLCB0b2tl
bnMgfSksCisgICAgICB7CisgICAgICAgIHR5cGU6ICJkaWN0aW9uYXJ5IiwKKyAgICAgICAgaW5o
ZXJpdGFibGU6ICFwYXJ0aWFsLAorICAgICAgICBhbGxvd2VkTWVtYmVyczogW1tfZmllbGRfanNf
X1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXy5GaWVsZC5wYXJzZV1dLAorICAgICAgfQorICAg
ICk7CisgIH0KKworICBnZXQgdHlwZSgpIHsKKyAgICByZXR1cm4gImRpY3Rpb25hcnkiOworICB9
Cit9CisKKworLyoqKi8gfSksCisvKiAyNyAqLworLyoqKi8gKChfX3VudXNlZF93ZWJwYWNrX19f
d2VicGFja19tb2R1bGVfXywgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVf
XykgPT4geworCitfX3dlYnBhY2tfcmVxdWlyZV9fLnIoX193ZWJwYWNrX2V4cG9ydHNfXyk7Cisv
KiBoYXJtb255IGV4cG9ydCAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9y
dHNfXywgeworLyogaGFybW9ueSBleHBvcnQgKi8gICAiRmllbGQiOiAoKSA9PiAoLyogYmluZGlu
ZyAqLyBGaWVsZCkKKy8qIGhhcm1vbnkgZXhwb3J0ICovIH0pOworLyogaGFybW9ueSBpbXBvcnQg
Ki8gdmFyIF9iYXNlX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18gPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDYpOworLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9oZWxwZXJzX2pzX19XRUJQ
QUNLX0lNUE9SVEVEX01PRFVMRV8xX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpOworLyogaGFy
bW9ueSBpbXBvcnQgKi8gdmFyIF9leHRlbmRlZF9hdHRyaWJ1dGVzX2pzX19XRUJQQUNLX0lNUE9S
VEVEX01PRFVMRV8yX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgpOworLyogaGFybW9ueSBpbXBv
cnQgKi8gdmFyIF9kZWZhdWx0X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX18gPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDEyKTsKKworCisKKworCitjbGFzcyBGaWVsZCBleHRlbmRzIF9iYXNl
X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18uQmFzZSB7CisgIC8qKgorICAgKiBAcGFy
YW0ge2ltcG9ydCgiLi4vdG9rZW5pc2VyIikuVG9rZW5pc2VyfSB0b2tlbmlzZXIKKyAgICovCisg
IHN0YXRpYyBwYXJzZSh0b2tlbmlzZXIpIHsKKyAgICAvKiogQHR5cGUge0Jhc2VbInRva2VucyJd
fSAqLworICAgIGNvbnN0IHRva2VucyA9IHt9OworICAgIGNvbnN0IHJldCA9ICgwLF9oZWxwZXJz
X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18uYXV0b1BhcmVudGVyKShuZXcgRmllbGQo
eyBzb3VyY2U6IHRva2VuaXNlci5zb3VyY2UsIHRva2VucyB9KSk7CisgICAgcmV0LmV4dEF0dHJz
ID0gX2V4dGVuZGVkX2F0dHJpYnV0ZXNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXy5F
eHRlbmRlZEF0dHJpYnV0ZXMucGFyc2UodG9rZW5pc2VyKTsKKyAgICB0b2tlbnMucmVxdWlyZWQg
PSB0b2tlbmlzZXIuY29uc3VtZSgicmVxdWlyZWQiKTsKKyAgICByZXQuaWRsVHlwZSA9CisgICAg
ICAoMCxfaGVscGVyc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fLnR5cGVfd2l0aF9l
eHRlbmRlZF9hdHRyaWJ1dGVzKSh0b2tlbmlzZXIsICJkaWN0aW9uYXJ5LXR5cGUiKSB8fAorICAg
ICAgdG9rZW5pc2VyLmVycm9yKCJEaWN0aW9uYXJ5IG1lbWJlciBsYWNrcyBhIHR5cGUiKTsKKyAg
ICB0b2tlbnMubmFtZSA9CisgICAgICB0b2tlbmlzZXIuY29uc3VtZVR5cGUoImlkZW50aWZpZXIi
KSB8fAorICAgICAgdG9rZW5pc2VyLmVycm9yKCJEaWN0aW9uYXJ5IG1lbWJlciBsYWNrcyBhIG5h
bWUiKTsKKyAgICByZXQuZGVmYXVsdCA9IF9kZWZhdWx0X2pzX19XRUJQQUNLX0lNUE9SVEVEX01P
RFVMRV8zX18uRGVmYXVsdC5wYXJzZSh0b2tlbmlzZXIpOworICAgIGlmICh0b2tlbnMucmVxdWly
ZWQgJiYgcmV0LmRlZmF1bHQpCisgICAgICB0b2tlbmlzZXIuZXJyb3IoIlJlcXVpcmVkIG1lbWJl
ciBtdXN0IG5vdCBoYXZlIGEgZGVmYXVsdCIpOworICAgIHRva2Vucy50ZXJtaW5hdGlvbiA9Cisg
ICAgICB0b2tlbmlzZXIuY29uc3VtZSgiOyIpIHx8CisgICAgICB0b2tlbmlzZXIuZXJyb3IoIlVu
dGVybWluYXRlZCBkaWN0aW9uYXJ5IG1lbWJlciwgZXhwZWN0ZWQgYDtgIik7CisgICAgcmV0dXJu
IHJldC50aGlzOworICB9CisKKyAgZ2V0IHR5cGUoKSB7CisgICAgcmV0dXJuICJmaWVsZCI7Cisg
IH0KKyAgZ2V0IG5hbWUoKSB7CisgICAgcmV0dXJuICgwLF9oZWxwZXJzX2pzX19XRUJQQUNLX0lN
UE9SVEVEX01PRFVMRV8xX18udW5lc2NhcGUpKHRoaXMudG9rZW5zLm5hbWUudmFsdWUpOworICB9
CisgIGdldCByZXF1aXJlZCgpIHsKKyAgICByZXR1cm4gISF0aGlzLnRva2Vucy5yZXF1aXJlZDsK
KyAgfQorCisgICp2YWxpZGF0ZShkZWZzKSB7CisgICAgeWllbGQqIHRoaXMuaWRsVHlwZS52YWxp
ZGF0ZShkZWZzKTsKKyAgfQorCisgIC8qKiBAcGFyYW0ge2ltcG9ydCgiLi4vd3JpdGVyLmpzIiku
V3JpdGVyfSB3ICovCisgIHdyaXRlKHcpIHsKKyAgICBjb25zdCB7IHBhcmVudCB9ID0gdGhpczsK
KyAgICByZXR1cm4gdy50cy5kZWZpbml0aW9uKAorICAgICAgdy50cy53cmFwKFsKKyAgICAgICAg
dGhpcy5leHRBdHRycy53cml0ZSh3KSwKKyAgICAgICAgdy50b2tlbih0aGlzLnRva2Vucy5yZXF1
aXJlZCksCisgICAgICAgIHcudHMudHlwZSh0aGlzLmlkbFR5cGUud3JpdGUodykpLAorICAgICAg
ICB3Lm5hbWVfdG9rZW4odGhpcy50b2tlbnMubmFtZSwgeyBkYXRhOiB0aGlzLCBwYXJlbnQgfSks
CisgICAgICAgIHRoaXMuZGVmYXVsdCA/IHRoaXMuZGVmYXVsdC53cml0ZSh3KSA6ICIiLAorICAg
ICAgICB3LnRva2VuKHRoaXMudG9rZW5zLnRlcm1pbmF0aW9uKSwKKyAgICAgIF0pLAorICAgICAg
eyBkYXRhOiB0aGlzLCBwYXJlbnQgfQorICAgICk7CisgIH0KK30KKworCisvKioqLyB9KSwKKy8q
IDI4ICovCisvKioqLyAoKF9fdW51c2VkX3dlYnBhY2tfX193ZWJwYWNrX21vZHVsZV9fLCBfX3dl
YnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSA9PiB7CisKK19fd2VicGFja19y
ZXF1aXJlX18ucihfX3dlYnBhY2tfZXhwb3J0c19fKTsKKy8qIGhhcm1vbnkgZXhwb3J0ICovIF9f
d2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCB7CisvKiBoYXJtb255IGV4
cG9ydCAqLyAgICJOYW1lc3BhY2UiOiAoKSA9PiAoLyogYmluZGluZyAqLyBOYW1lc3BhY2UpCisv
KiBoYXJtb255IGV4cG9ydCAqLyB9KTsKKy8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfY29udGFp
bmVyX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDIwKTsKKy8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfYXR0cmlidXRlX2pzX19XRUJQQUNLX0lN
UE9SVEVEX01PRFVMRV8xX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE0KTsKKy8qIGhhcm1vbnkg
aW1wb3J0ICovIHZhciBfb3BlcmF0aW9uX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18g
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEzKTsKKy8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfZXJy
b3JfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfXyA9IF9fd2VicGFja19yZXF1aXJlX18o
Myk7CisvKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2hlbHBlcnNfanNfX1dFQlBBQ0tfSU1QT1JU
RURfTU9EVUxFXzRfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7CisvKiBoYXJtb255IGltcG9y
dCAqLyB2YXIgX2NvbnN0YW50X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X18gPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDIxKTsKKworCisKKworCisKKworY2xhc3MgTmFtZXNwYWNlIGV4dGVu
ZHMgX2NvbnRhaW5lcl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fLkNvbnRhaW5lciB7
CisgIC8qKgorICAgKiBAcGFyYW0ge2ltcG9ydCgiLi4vdG9rZW5pc2VyIikuVG9rZW5pc2VyfSB0
b2tlbmlzZXIKKyAgICogQHBhcmFtIHtvYmplY3R9IFtvcHRpb25zXQorICAgKiBAcGFyYW0ge2lt
cG9ydCgiLi4vdG9rZW5pc2VyLmpzIikuVG9rZW59IFtvcHRpb25zLnBhcnRpYWxdCisgICAqLwor
ICBzdGF0aWMgcGFyc2UodG9rZW5pc2VyLCB7IHBhcnRpYWwgfSA9IHt9KSB7CisgICAgY29uc3Qg
dG9rZW5zID0geyBwYXJ0aWFsIH07CisgICAgdG9rZW5zLmJhc2UgPSB0b2tlbmlzZXIuY29uc3Vt
ZSgibmFtZXNwYWNlIik7CisgICAgaWYgKCF0b2tlbnMuYmFzZSkgeworICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICByZXR1cm4gX2NvbnRhaW5lcl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVf
MF9fLkNvbnRhaW5lci5wYXJzZSgKKyAgICAgIHRva2VuaXNlciwKKyAgICAgIG5ldyBOYW1lc3Bh
Y2UoeyBzb3VyY2U6IHRva2VuaXNlci5zb3VyY2UsIHRva2VucyB9KSwKKyAgICAgIHsKKyAgICAg
ICAgdHlwZTogIm5hbWVzcGFjZSIsCisgICAgICAgIGFsbG93ZWRNZW1iZXJzOiBbCisgICAgICAg
ICAgW19hdHRyaWJ1dGVfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXy5BdHRyaWJ1dGUu
cGFyc2UsIHsgbm9Jbmhlcml0OiB0cnVlLCByZWFkb25seTogdHJ1ZSB9XSwKKyAgICAgICAgICBb
X2NvbnN0YW50X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X18uQ29uc3RhbnQucGFyc2Vd
LAorICAgICAgICAgIFtfb3BlcmF0aW9uX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18u
T3BlcmF0aW9uLnBhcnNlLCB7IHJlZ3VsYXI6IHRydWUgfV0sCisgICAgICAgIF0sCisgICAgICB9
CisgICAgKTsKKyAgfQorCisgIGdldCB0eXBlKCkgeworICAgIHJldHVybiAibmFtZXNwYWNlIjsK
KyAgfQorCisgICp2YWxpZGF0ZShkZWZzKSB7CisgICAgaWYgKAorICAgICAgIXRoaXMucGFydGlh
bCAmJgorICAgICAgdGhpcy5leHRBdHRycy5ldmVyeSgoZXh0QXR0cikgPT4gZXh0QXR0ci5uYW1l
ICE9PSAiRXhwb3NlZCIpCisgICAgKSB7CisgICAgICBjb25zdCBtZXNzYWdlID0gYE5hbWVzcGFj
ZXMgbXVzdCBoYXZlIFtFeHBvc2VkXSBleHRlbmRlZCBhdHRyaWJ1dGUuIFwKK1RvIGZpeCwgYWRk
LCBmb3IgZXhhbXBsZSwgW0V4cG9zZWQ9V2luZG93XS4gUGxlYXNlIGFsc28gY29uc2lkZXIgY2Fy
ZWZ1bGx5IFwKK2lmIHlvdXIgbmFtZXNwYWNlIHNob3VsZCBhbHNvIGJlIGV4cG9zZWQgaW4gYSBX
b3JrZXIgc2NvcGUuIFJlZmVyIHRvIHRoZSBcCitbV2ViSURMIHNwZWMgc2VjdGlvbiBvbiBFeHBv
c2VkXShodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNFeHBvc2VkKSBcCitmb3IgbW9y
ZSBpbmZvcm1hdGlvbi5gOworICAgICAgeWllbGQgKDAsX2Vycm9yX2pzX19XRUJQQUNLX0lNUE9S
VEVEX01PRFVMRV8zX18udmFsaWRhdGlvbkVycm9yKSgKKyAgICAgICAgdGhpcy50b2tlbnMubmFt
ZSwKKyAgICAgICAgdGhpcywKKyAgICAgICAgInJlcXVpcmUtZXhwb3NlZCIsCisgICAgICAgIG1l
c3NhZ2UsCisgICAgICAgIHsKKyAgICAgICAgICBhdXRvZml4OiAoMCxfaGVscGVyc19qc19fV0VC
UEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fLmF1dG9maXhBZGRFeHBvc2VkV2luZG93KSh0aGlzKSwK
KyAgICAgICAgfQorICAgICAgKTsKKyAgICB9CisgICAgeWllbGQqIHN1cGVyLnZhbGlkYXRlKGRl
ZnMpOworICB9Cit9CisKKworLyoqKi8gfSksCisvKiAyOSAqLworLyoqKi8gKChfX3VudXNlZF93
ZWJwYWNrX19fd2VicGFja19tb2R1bGVfXywgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNr
X3JlcXVpcmVfXykgPT4geworCitfX3dlYnBhY2tfcmVxdWlyZV9fLnIoX193ZWJwYWNrX2V4cG9y
dHNfXyk7CisvKiBoYXJtb255IGV4cG9ydCAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJw
YWNrX2V4cG9ydHNfXywgeworLyogaGFybW9ueSBleHBvcnQgKi8gICAiQ2FsbGJhY2tJbnRlcmZh
Y2UiOiAoKSA9PiAoLyogYmluZGluZyAqLyBDYWxsYmFja0ludGVyZmFjZSkKKy8qIGhhcm1vbnkg
ZXhwb3J0ICovIH0pOworLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9jb250YWluZXJfanNfX1dF
QlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMjApOworLyog
aGFybW9ueSBpbXBvcnQgKi8gdmFyIF9vcGVyYXRpb25fanNfX1dFQlBBQ0tfSU1QT1JURURfTU9E
VUxFXzFfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMTMpOworLyogaGFybW9ueSBpbXBvcnQgKi8g
dmFyIF9jb25zdGFudF9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fID0gX193ZWJwYWNr
X3JlcXVpcmVfXygyMSk7CisvLyBAdHMtY2hlY2sKKworCisKKworCitjbGFzcyBDYWxsYmFja0lu
dGVyZmFjZSBleHRlbmRzIF9jb250YWluZXJfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBf
Xy5Db250YWluZXIgeworICAvKioKKyAgICogQHBhcmFtIHtpbXBvcnQoIi4uL3Rva2VuaXNlciIp
LlRva2VuaXNlcn0gdG9rZW5pc2VyCisgICAqLworICBzdGF0aWMgcGFyc2UodG9rZW5pc2VyLCBj
YWxsYmFjaywgeyBwYXJ0aWFsID0gbnVsbCB9ID0ge30pIHsKKyAgICBjb25zdCB0b2tlbnMgPSB7
IGNhbGxiYWNrIH07CisgICAgdG9rZW5zLmJhc2UgPSB0b2tlbmlzZXIuY29uc3VtZSgiaW50ZXJm
YWNlIik7CisgICAgaWYgKCF0b2tlbnMuYmFzZSkgeworICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICByZXR1cm4gX2NvbnRhaW5lcl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fLkNvbnRh
aW5lci5wYXJzZSgKKyAgICAgIHRva2VuaXNlciwKKyAgICAgIG5ldyBDYWxsYmFja0ludGVyZmFj
ZSh7IHNvdXJjZTogdG9rZW5pc2VyLnNvdXJjZSwgdG9rZW5zIH0pLAorICAgICAgeworICAgICAg
ICB0eXBlOiAiY2FsbGJhY2sgaW50ZXJmYWNlIiwKKyAgICAgICAgaW5oZXJpdGFibGU6ICFwYXJ0
aWFsLAorICAgICAgICBhbGxvd2VkTWVtYmVyczogWworICAgICAgICAgIFtfY29uc3RhbnRfanNf
X1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXy5Db25zdGFudC5wYXJzZV0sCisgICAgICAgICAg
W19vcGVyYXRpb25fanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXy5PcGVyYXRpb24ucGFy
c2UsIHsgcmVndWxhcjogdHJ1ZSB9XSwKKyAgICAgICAgXSwKKyAgICAgIH0KKyAgICApOworICB9
CisKKyAgZ2V0IHR5cGUoKSB7CisgICAgcmV0dXJuICJjYWxsYmFjayBpbnRlcmZhY2UiOworICB9
Cit9CisKKworLyoqKi8gfSksCisvKiAzMCAqLworLyoqKi8gKChfX3VudXNlZF93ZWJwYWNrX19f
d2VicGFja19tb2R1bGVfXywgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVf
XykgPT4geworCitfX3dlYnBhY2tfcmVxdWlyZV9fLnIoX193ZWJwYWNrX2V4cG9ydHNfXyk7Cisv
KiBoYXJtb255IGV4cG9ydCAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9y
dHNfXywgeworLyogaGFybW9ueSBleHBvcnQgKi8gICAiV3JpdGVyIjogKCkgPT4gKC8qIGJpbmRp
bmcgKi8gV3JpdGVyKSwKKy8qIGhhcm1vbnkgZXhwb3J0ICovICAgIndyaXRlIjogKCkgPT4gKC8q
IGJpbmRpbmcgKi8gd3JpdGUpCisvKiBoYXJtb255IGV4cG9ydCAqLyB9KTsKK2Z1bmN0aW9uIG5v
b3AoYXJnKSB7CisgIHJldHVybiBhcmc7Cit9CisKK2NvbnN0IHRlbXBsYXRlcyA9IHsKKyAgd3Jh
cDogKGl0ZW1zKSA9PiBpdGVtcy5qb2luKCIiKSwKKyAgdHJpdmlhOiBub29wLAorICBuYW1lOiBu
b29wLAorICByZWZlcmVuY2U6IG5vb3AsCisgIHR5cGU6IG5vb3AsCisgIGdlbmVyaWM6IG5vb3As
CisgIG5hbWVsZXNzOiBub29wLAorICBpbmhlcml0YW5jZTogbm9vcCwKKyAgZGVmaW5pdGlvbjog
bm9vcCwKKyAgZXh0ZW5kZWRBdHRyaWJ1dGU6IG5vb3AsCisgIGV4dGVuZGVkQXR0cmlidXRlUmVm
ZXJlbmNlOiBub29wLAorfTsKKworY2xhc3MgV3JpdGVyIHsKKyAgY29uc3RydWN0b3IodHMpIHsK
KyAgICB0aGlzLnRzID0gT2JqZWN0LmFzc2lnbih7fSwgdGVtcGxhdGVzLCB0cyk7CisgIH0KKwor
ICByZWZlcmVuY2UocmF3LCB7IHVuZXNjYXBlZCwgY29udGV4dCB9KSB7CisgICAgaWYgKCF1bmVz
Y2FwZWQpIHsKKyAgICAgIHVuZXNjYXBlZCA9IHJhdy5zdGFydHNXaXRoKCJfIikgPyByYXcuc2xp
Y2UoMSkgOiByYXc7CisgICAgfQorICAgIHJldHVybiB0aGlzLnRzLnJlZmVyZW5jZShyYXcsIHVu
ZXNjYXBlZCwgY29udGV4dCk7CisgIH0KKworICB0b2tlbih0LCB3cmFwcGVyID0gbm9vcCwgLi4u
YXJncykgeworICAgIGlmICghdCkgeworICAgICAgcmV0dXJuICIiOworICAgIH0KKyAgICBjb25z
dCB2YWx1ZSA9IHdyYXBwZXIodC52YWx1ZSwgLi4uYXJncyk7CisgICAgcmV0dXJuIHRoaXMudHMu
d3JhcChbdGhpcy50cy50cml2aWEodC50cml2aWEpLCB2YWx1ZV0pOworICB9CisKKyAgcmVmZXJl
bmNlX3Rva2VuKHQsIGNvbnRleHQpIHsKKyAgICByZXR1cm4gdGhpcy50b2tlbih0LCB0aGlzLnJl
ZmVyZW5jZS5iaW5kKHRoaXMpLCB7IGNvbnRleHQgfSk7CisgIH0KKworICBuYW1lX3Rva2VuKHQs
IGFyZykgeworICAgIHJldHVybiB0aGlzLnRva2VuKHQsIHRoaXMudHMubmFtZSwgYXJnKTsKKyAg
fQorCisgIGlkZW50aWZpZXIoaWQsIGNvbnRleHQpIHsKKyAgICByZXR1cm4gdGhpcy50cy53cmFw
KFsKKyAgICAgIHRoaXMucmVmZXJlbmNlX3Rva2VuKGlkLnRva2Vucy52YWx1ZSwgY29udGV4dCks
CisgICAgICB0aGlzLnRva2VuKGlkLnRva2Vucy5zZXBhcmF0b3IpLAorICAgIF0pOworICB9Cit9
CisKK2Z1bmN0aW9uIHdyaXRlKGFzdCwgeyB0ZW1wbGF0ZXM6IHRzID0gdGVtcGxhdGVzIH0gPSB7
fSkgeworICB0cyA9IE9iamVjdC5hc3NpZ24oe30sIHRlbXBsYXRlcywgdHMpOworCisgIGNvbnN0
IHcgPSBuZXcgV3JpdGVyKHRzKTsKKworICBmdW5jdGlvbiBkaXNwYXRjaChpdCkgeworICAgIGlm
IChpdC50eXBlID09PSAiZW9mIikgeworICAgICAgcmV0dXJuIHRzLnRyaXZpYShpdC50cml2aWEp
OworICAgIH0KKyAgICByZXR1cm4gaXQud3JpdGUodyk7CisgIH0KKyAgcmV0dXJuIHRzLndyYXAo
YXN0Lm1hcChkaXNwYXRjaCkpOworfQorCisKKy8qKiovIH0pLAorLyogMzEgKi8KKy8qKiovICgo
X191bnVzZWRfd2VicGFja19fX3dlYnBhY2tfbW9kdWxlX18sIF9fd2VicGFja19leHBvcnRzX18s
IF9fd2VicGFja19yZXF1aXJlX18pID0+IHsKKworX193ZWJwYWNrX3JlcXVpcmVfXy5yKF9fd2Vi
cGFja19leHBvcnRzX18pOworLyogaGFybW9ueSBleHBvcnQgKi8gX193ZWJwYWNrX3JlcXVpcmVf
Xy5kKF9fd2VicGFja19leHBvcnRzX18sIHsKKy8qIGhhcm1vbnkgZXhwb3J0ICovICAgInZhbGlk
YXRlIjogKCkgPT4gKC8qIGJpbmRpbmcgKi8gdmFsaWRhdGUpCisvKiBoYXJtb255IGV4cG9ydCAq
LyB9KTsKKy8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfZXJyb3JfanNfX1dFQlBBQ0tfSU1QT1JU
RURfTU9EVUxFXzBfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7CisKKworZnVuY3Rpb24gZ2V0
TWl4aW5NYXAoYWxsLCB1bmlxdWUpIHsKKyAgY29uc3QgbWFwID0gbmV3IE1hcCgpOworICBjb25z
dCBpbmNsdWRlcyA9IGFsbC5maWx0ZXIoKGRlZikgPT4gZGVmLnR5cGUgPT09ICJpbmNsdWRlcyIp
OworICBmb3IgKGNvbnN0IGluY2x1ZGUgb2YgaW5jbHVkZXMpIHsKKyAgICBjb25zdCBtaXhpbiA9
IHVuaXF1ZS5nZXQoaW5jbHVkZS5pbmNsdWRlcyk7CisgICAgaWYgKCFtaXhpbikgeworICAgICAg
Y29udGludWU7CisgICAgfQorICAgIGNvbnN0IGFycmF5ID0gbWFwLmdldChpbmNsdWRlLnRhcmdl
dCk7CisgICAgaWYgKGFycmF5KSB7CisgICAgICBhcnJheS5wdXNoKG1peGluKTsKKyAgICB9IGVs
c2UgeworICAgICAgbWFwLnNldChpbmNsdWRlLnRhcmdldCwgW21peGluXSk7CisgICAgfQorICB9
CisgIHJldHVybiBtYXA7Cit9CisKKy8qKgorICogQHR5cGVkZWYge1JldHVyblR5cGU8dHlwZW9m
IGdyb3VwRGVmaW5pdGlvbnM+fSBEZWZpbml0aW9ucworICovCitmdW5jdGlvbiBncm91cERlZmlu
aXRpb25zKGFsbCkgeworICBjb25zdCB1bmlxdWUgPSBuZXcgTWFwKCk7CisgIGNvbnN0IGR1cGxp
Y2F0ZXMgPSBuZXcgU2V0KCk7CisgIGNvbnN0IHBhcnRpYWxzID0gbmV3IE1hcCgpOworICBmb3Ig
KGNvbnN0IGRlZiBvZiBhbGwpIHsKKyAgICBpZiAoZGVmLnBhcnRpYWwpIHsKKyAgICAgIGNvbnN0
IGFycmF5ID0gcGFydGlhbHMuZ2V0KGRlZi5uYW1lKTsKKyAgICAgIGlmIChhcnJheSkgeworICAg
ICAgICBhcnJheS5wdXNoKGRlZik7CisgICAgICB9IGVsc2UgeworICAgICAgICBwYXJ0aWFscy5z
ZXQoZGVmLm5hbWUsIFtkZWZdKTsKKyAgICAgIH0KKyAgICAgIGNvbnRpbnVlOworICAgIH0KKyAg
ICBpZiAoIWRlZi5uYW1lKSB7CisgICAgICBjb250aW51ZTsKKyAgICB9CisgICAgaWYgKCF1bmlx
dWUuaGFzKGRlZi5uYW1lKSkgeworICAgICAgdW5pcXVlLnNldChkZWYubmFtZSwgZGVmKTsKKyAg
ICB9IGVsc2UgeworICAgICAgZHVwbGljYXRlcy5hZGQoZGVmKTsKKyAgICB9CisgIH0KKyAgcmV0
dXJuIHsKKyAgICBhbGwsCisgICAgdW5pcXVlLAorICAgIHBhcnRpYWxzLAorICAgIGR1cGxpY2F0
ZXMsCisgICAgbWl4aW5NYXA6IGdldE1peGluTWFwKGFsbCwgdW5pcXVlKSwKKyAgICBjYWNoZTog
eworICAgICAgdHlwZWRlZkluY2x1ZGVzRGljdGlvbmFyeTogbmV3IFdlYWtNYXAoKSwKKyAgICAg
IGRpY3Rpb25hcnlJbmNsdWRlc1JlcXVpcmVkRmllbGQ6IG5ldyBXZWFrTWFwKCksCisgICAgfSwK
KyAgfTsKK30KKworZnVuY3Rpb24qIGNoZWNrRHVwbGljYXRlZE5hbWVzKHsgdW5pcXVlLCBkdXBs
aWNhdGVzIH0pIHsKKyAgZm9yIChjb25zdCBkdXAgb2YgZHVwbGljYXRlcykgeworICAgIGNvbnN0
IHsgbmFtZSB9ID0gZHVwOworICAgIGNvbnN0IG1lc3NhZ2UgPSBgVGhlIG5hbWUgIiR7bmFtZX0i
IG9mIHR5cGUgIiR7CisgICAgICB1bmlxdWUuZ2V0KG5hbWUpLnR5cGUKKyAgICB9IiB3YXMgYWxy
ZWFkeSBzZWVuYDsKKyAgICB5aWVsZCAoMCxfZXJyb3JfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9E
VUxFXzBfXy52YWxpZGF0aW9uRXJyb3IpKGR1cC50b2tlbnMubmFtZSwgZHVwLCAibm8tZHVwbGlj
YXRlIiwgbWVzc2FnZSk7CisgIH0KK30KKworZnVuY3Rpb24qIHZhbGlkYXRlSXRlcmFibGUoYXN0
KSB7CisgIGNvbnN0IGRlZnMgPSBncm91cERlZmluaXRpb25zKGFzdCk7CisgIGZvciAoY29uc3Qg
ZGVmIG9mIGRlZnMuYWxsKSB7CisgICAgaWYgKGRlZi52YWxpZGF0ZSkgeworICAgICAgeWllbGQq
IGRlZi52YWxpZGF0ZShkZWZzKTsKKyAgICB9CisgIH0KKyAgeWllbGQqIGNoZWNrRHVwbGljYXRl
ZE5hbWVzKGRlZnMpOworfQorCisvLyBSZW1vdmUgdGhpcyBvbmNlIGFsbCBvZiBvdXIgc3VwcG9y
dCB0YXJnZXRzIGV4cG9zZSBgLmZsYXQoKWAgYnkgZGVmYXVsdAorZnVuY3Rpb24gZmxhdHRlbihh
cnJheSkgeworICBpZiAoYXJyYXkuZmxhdCkgeworICAgIHJldHVybiBhcnJheS5mbGF0KCk7Cisg
IH0KKyAgcmV0dXJuIFtdLmNvbmNhdCguLi5hcnJheSk7Cit9CisKKy8qKgorICogQHBhcmFtIHsq
fSBhc3QgQVNUIG9yIGFycmF5IG9mIEFTVHMKKyAqLworZnVuY3Rpb24gdmFsaWRhdGUoYXN0KSB7
CisgIHJldHVybiBbLi4udmFsaWRhdGVJdGVyYWJsZShmbGF0dGVuKGFzdCkpXTsKK30KKworCisv
KioqLyB9KQorLyoqKioqKi8gCV0pOworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qKioqKiovIAkvLyBU
aGUgbW9kdWxlIGNhY2hlCisvKioqKioqLyAJdmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9
IHt9OworLyoqKioqKi8gCQorLyoqKioqKi8gCS8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uCisvKioq
KioqLyAJZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkgeworLyoqKioqKi8g
CQkvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGUKKy8qKioqKiovIAkJdmFyIGNhY2hlZE1v
ZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07CisvKioqKioqLyAJCWlm
IChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkgeworLyoqKioqKi8gCQkJcmV0dXJuIGNhY2hl
ZE1vZHVsZS5leHBvcnRzOworLyoqKioqKi8gCQl9CisvKioqKioqLyAJCS8vIENyZWF0ZSBhIG5l
dyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpCisvKioqKioqLyAJCXZhciBtb2R1
bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0geworLyoqKioqKi8gCQkJ
Ly8gbm8gbW9kdWxlLmlkIG5lZWRlZAorLyoqKioqKi8gCQkJLy8gbm8gbW9kdWxlLmxvYWRlZCBu
ZWVkZWQKKy8qKioqKiovIAkJCWV4cG9ydHM6IHt9CisvKioqKioqLyAJCX07CisvKioqKioqLyAJ
CisvKioqKioqLyAJCS8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvbgorLyoqKioqKi8gCQlf
X3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXShtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dl
YnBhY2tfcmVxdWlyZV9fKTsKKy8qKioqKiovIAkKKy8qKioqKiovIAkJLy8gUmV0dXJuIHRoZSBl
eHBvcnRzIG9mIHRoZSBtb2R1bGUKKy8qKioqKiovIAkJcmV0dXJuIG1vZHVsZS5leHBvcnRzOwor
LyoqKioqKi8gCX0KKy8qKioqKiovIAkKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKioqKioqLyAJLyog
d2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzICovCisvKioqKioqLyAJKCgp
ID0+IHsKKy8qKioqKiovIAkJLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkg
ZXhwb3J0cworLyoqKioqKi8gCQlfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVm
aW5pdGlvbikgPT4geworLyoqKioqKi8gCQkJZm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikgewor
LyoqKioqKi8gCQkJCWlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYm
ICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkgeworLyoqKioqKi8gCQkJCQlP
YmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdl
dDogZGVmaW5pdGlvbltrZXldIH0pOworLyoqKioqKi8gCQkJCX0KKy8qKioqKiovIAkJCX0KKy8q
KioqKiovIAkJfTsKKy8qKioqKiovIAl9KSgpOworLyoqKioqKi8gCQorLyoqKioqKi8gCS8qIHdl
YnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQgKi8KKy8qKioqKiovIAkoKCkg
PT4geworLyoqKioqKi8gCQlfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAo
T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpCisvKioqKioq
LyAJfSkoKTsKKy8qKioqKiovIAkKKy8qKioqKiovIAkvKiB3ZWJwYWNrL3J1bnRpbWUvbWFrZSBu
YW1lc3BhY2Ugb2JqZWN0ICovCisvKioqKioqLyAJKCgpID0+IHsKKy8qKioqKiovIAkJLy8gZGVm
aW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0cworLyoqKioqKi8gCQlfX3dlYnBhY2tfcmVxdWlyZV9f
LnIgPSAoZXhwb3J0cykgPT4geworLyoqKioqKi8gCQkJaWYodHlwZW9mIFN5bWJvbCAhPT0gJ3Vu
ZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7CisvKioqKioqLyAJCQkJT2JqZWN0LmRl
ZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVs
ZScgfSk7CisvKioqKioqLyAJCQl9CisvKioqKioqLyAJCQlPYmplY3QuZGVmaW5lUHJvcGVydHko
ZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pOworLyoqKioqKi8gCQl9Owor
LyoqKioqKi8gCX0pKCk7CisvKioqKioqLyAJCisvKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwordmFyIF9fd2Vi
cGFja19leHBvcnRzX18gPSB7fTsKKy8vIFRoaXMgZW50cnkgbmVlZCB0byBiZSB3cmFwcGVkIGlu
IGFuIElJRkUgYmVjYXVzZSBpdCBuZWVkIHRvIGJlIGlzb2xhdGVkIGFnYWluc3Qgb3RoZXIgbW9k
dWxlcyBpbiB0aGUgY2h1bmsuCisoKCkgPT4geworX193ZWJwYWNrX3JlcXVpcmVfXy5yKF9fd2Vi
cGFja19leHBvcnRzX18pOworLyogaGFybW9ueSBleHBvcnQgKi8gX193ZWJwYWNrX3JlcXVpcmVf
Xy5kKF9fd2VicGFja19leHBvcnRzX18sIHsKKy8qIGhhcm1vbnkgZXhwb3J0ICovICAgInBhcnNl
IjogKCkgPT4gKC8qIHJlZXhwb3J0IHNhZmUgKi8gX2xpYl93ZWJpZGwyX2pzX19XRUJQQUNLX0lN
UE9SVEVEX01PRFVMRV8wX18ucGFyc2UpLAorLyogaGFybW9ueSBleHBvcnQgKi8gICAid3JpdGUi
OiAoKSA9PiAoLyogcmVleHBvcnQgc2FmZSAqLyBfbGliX3dyaXRlcl9qc19fV0VCUEFDS19JTVBP
UlRFRF9NT0RVTEVfMV9fLndyaXRlKSwKKy8qIGhhcm1vbnkgZXhwb3J0ICovICAgInZhbGlkYXRl
IjogKCkgPT4gKC8qIHJlZXhwb3J0IHNhZmUgKi8gX2xpYl92YWxpZGF0b3JfanNfX1dFQlBBQ0tf
SU1QT1JURURfTU9EVUxFXzJfXy52YWxpZGF0ZSksCisvKiBoYXJtb255IGV4cG9ydCAqLyAgICJX
ZWJJRExQYXJzZUVycm9yIjogKCkgPT4gKC8qIHJlZXhwb3J0IHNhZmUgKi8gX2xpYl90b2tlbmlz
ZXJfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfXy5XZWJJRExQYXJzZUVycm9yKQorLyog
aGFybW9ueSBleHBvcnQgKi8gfSk7CisvKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2xpYl93ZWJp
ZGwyX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDEpOworLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9saWJfd3JpdGVyX2pzX19XRUJQQUNLX0lN
UE9SVEVEX01PRFVMRV8xX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMwKTsKKy8qIGhhcm1vbnkg
aW1wb3J0ICovIHZhciBfbGliX3ZhbGlkYXRvcl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVf
Ml9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMSk7CisvKiBoYXJtb255IGltcG9ydCAqLyB2YXIg
X2xpYl90b2tlbmlzZXJfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfXyA9IF9fd2VicGFj
a19yZXF1aXJlX18oMik7CisKKworCisKKworfSkoKTsKKworLyoqKioqKi8gCXJldHVybiBfX3dl
YnBhY2tfZXhwb3J0c19fOworLyoqKioqKi8gfSkoKQorOworfSk7CisvLyMgc291cmNlTWFwcGlu
Z1VSTD13ZWJpZGwyLmpzLm1hcApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3Jlc291cmNlcy9pZGxoYXJuZXNzLmpzIGIvTGF5b3V0VGVzdHMvcmVz
b3VyY2VzL2lkbGhhcm5lc3MuanMKaW5kZXggMjViOWFmNWMzZTc5ZGNjZDBiMTIyMjM1YjkwZDYw
MDA2YTM2M2RlZS4uNmFlYzAyZTNhYmUwNmIyMGQxMWJiNDZiZmQ1Yjc0MjMyNjg1MWM4NiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL2lkbGhhcm5lc3MuanMKKysrIGIvTGF5b3V0
VGVzdHMvcmVzb3VyY2VzL2lkbGhhcm5lc3MuanMKQEAgLTEsMTQgKzEsNCBAQAotLyoKLURpc3Ry
aWJ1dGVkIHVuZGVyIGJvdGggdGhlIFczQyBUZXN0IFN1aXRlIExpY2Vuc2UgWzFdIGFuZCB0aGUg
VzNDCi0zLWNsYXVzZSBCU0QgTGljZW5zZSBbMl0uIFRvIGNvbnRyaWJ1dGUgdG8gYSBXM0MgVGVz
dCBTdWl0ZSwgc2VlIHRoZQotcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCi0K
LVsxXSBodHRwOi8vd3d3LnczLm9yZy9Db25zb3J0aXVtL0xlZ2FsLzIwMDgvMDQtdGVzdHN1aXRl
LWxpY2Vuc2UKLVsyXSBodHRwOi8vd3d3LnczLm9yZy9Db25zb3J0aXVtL0xlZ2FsLzIwMDgvMDMt
YnNkLWxpY2Vuc2UKLVszXSBodHRwOi8vd3d3LnczLm9yZy8yMDA0LzEwLzI3LXRlc3RjYXNlcwot
Ki8KLQotLyogRm9yIHVzZXIgZG9jdW1lbnRhdGlvbiBzZWUgZG9jcy9pZGxoYXJuZXNzLm1kICov
CisvKiBGb3IgdXNlciBkb2N1bWVudGF0aW9uIHNlZSBkb2NzL193cml0aW5nLXRlc3RzL2lkbGhh
cm5lc3MubWQgKi8KIAogLyoqCiAgKiBOb3RlcyBmb3IgcGVvcGxlIHdobyB3YW50IHRvIGVkaXQg
dGhpcyBmaWxlIChub3QganVzdCB1c2UgaXQgYXMgYSBsaWJyYXJ5KToKQEAgLTQ4LDIwICszOCwz
MCBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAqLwogKGZ1bmN0aW9u
KCl7CiAidXNlIHN0cmljdCI7CisvLyBTdXBwb3J0IHN1YnNldFRlc3RCeUtleSBmcm9tIC9jb21t
b24vc3Vic2V0LXRlc3RzLWJ5LWtleS5qcywgYnV0IG1ha2UgaXQgb3B0aW9uYWwKK2lmICghKCdz
dWJzZXRUZXN0QnlLZXknIGluIHNlbGYpKSB7CisgICAgc2VsZi5zdWJzZXRUZXN0QnlLZXkgPSBm
dW5jdGlvbihrZXksIGNhbGxiYWNrLCAuLi5hcmdzKSB7CisgICAgICByZXR1cm4gY2FsbGJhY2so
Li4uYXJncyk7CisgICAgfQorICAgIHNlbGYuc2hvdWxkUnVuU3ViVGVzdCA9ICgpID0+IHRydWU7
Cit9CiAvLy8gSGVscGVycyAvLy8KIGZ1bmN0aW9uIGNvbnN0VmFsdWUgKGNudCkKLS8vQHsKIHsK
ICAgICBpZiAoY250LnR5cGUgPT09ICJudWxsIikgcmV0dXJuIG51bGw7CiAgICAgaWYgKGNudC50
eXBlID09PSAiTmFOIikgcmV0dXJuIE5hTjsKICAgICBpZiAoY250LnR5cGUgPT09ICJJbmZpbml0
eSIpIHJldHVybiBjbnQubmVnYXRpdmUgPyAtSW5maW5pdHkgOiBJbmZpbml0eTsKKyAgICBpZiAo
Y250LnR5cGUgPT09ICJudW1iZXIiKSByZXR1cm4gK2NudC52YWx1ZTsKICAgICByZXR1cm4gY250
LnZhbHVlOwogfQogCi0vL0B9CiBmdW5jdGlvbiBtaW5PdmVybG9hZExlbmd0aChvdmVybG9hZHMp
Ci0vL0B7CiB7CisgICAgLy8gIlRoZSB2YWx1ZSBvZiB0aGUgRnVuY3Rpb24gb2JqZWN04oCZcyDi
gJxsZW5ndGjigJ0gcHJvcGVydHkgaXMKKyAgICAvLyBhIE51bWJlciBkZXRlcm1pbmVkIGFzIGZv
bGxvd3M6CisgICAgLy8gIi4gLiAuCisgICAgLy8gIlJldHVybiB0aGUgbGVuZ3RoIG9mIHRoZSBz
aG9ydGVzdCBhcmd1bWVudCBsaXN0IG9mIHRoZQorICAgIC8vIGVudHJpZXMgaW4gUy4iCiAgICAg
aWYgKCFvdmVybG9hZHMubGVuZ3RoKSB7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KQEAgLTc0
LDE4ICs3NCw0MyBAQCBmdW5jdGlvbiBtaW5PdmVybG9hZExlbmd0aChvdmVybG9hZHMpCiAgICAg
LnJlZHVjZShmdW5jdGlvbihtLCBuKSB7IHJldHVybiBNYXRoLm1pbihtLCBuKTsgfSk7CiB9CiAK
LS8vQH0KLWZ1bmN0aW9uIHRocm93T3JSZWplY3QoYV90ZXN0LCBvcGVyYXRpb24sIGZuLCBvYmos
IGFyZ3MsICBtZXNzYWdlLCBjYikKLS8vQHsKKy8vIEEgaGVscGVyIHRvIGdldCB0aGUgZ2xvYmFs
IG9mIGEgRnVuY3Rpb24gb2JqZWN0LiAgVGhpcyBpcyBuZWVkZWQgdG8gZGV0ZXJtaW5lCisvLyB3
aGljaCBnbG9iYWwgZXhjZXB0aW9ucyB0aGUgZnVuY3Rpb24gdGhyb3dzIHdpbGwgY29tZSBmcm9t
LgorZnVuY3Rpb24gZ2xvYmFsT2YoZnVuYykKK3sKKyAgICB0cnkgeworICAgICAgICAvLyBVc2Ug
dGhlIGZhY3QgdGhhdCAuY29uc3RydWN0b3IgZm9yIGEgRnVuY3Rpb24gb2JqZWN0IGlzIG5vcm1h
bGx5IHRoZQorICAgICAgICAvLyBGdW5jdGlvbiBjb25zdHJ1Y3Rvciwgd2hpY2ggY2FuIGJlIHVz
ZWQgdG8gbWludCBhIG5ldyBmdW5jdGlvbiBpbiB0aGUKKyAgICAgICAgLy8gcmlnaHQgZ2xvYmFs
LgorICAgICAgICByZXR1cm4gZnVuYy5jb25zdHJ1Y3RvcigicmV0dXJuIHRoaXM7IikoKTsKKyAg
ICB9IGNhdGNoIChlKSB7CisgICAgfQorICAgIC8vIElmIHRoZSBhYm92ZSBmYWlscywgYmVjYXVz
ZSBzb21lb25lIGdhdmUgdXMgYSBub24tZnVuY3Rpb24sIG9yIGEgZnVuY3Rpb24KKyAgICAvLyB3
aXRoIGEgd2VpcmQgcHJvdG8gY2hhaW4gb3Igd2VpcmQgLmNvbnN0cnVjdG9yIHByb3BlcnR5LCBq
dXN0IGZhbGwgYmFjaworICAgIC8vIHRvICdzZWxmJy4KKyAgICByZXR1cm4gc2VsZjsKK30KKwor
Ly8gaHR0cHM6Ly9lc2Rpc2N1c3Mub3JnL3RvcGljL2lzY29uc3RydWN0b3IjY29udGVudC0xMQor
ZnVuY3Rpb24gaXNDb25zdHJ1Y3RvcihvKSB7CisgICAgdHJ5IHsKKyAgICAgICAgbmV3IChuZXcg
UHJveHkobywge2NvbnN0cnVjdDogKCkgPT4gKHt9KX0pKTsKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfSBjYXRjaChlKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2Z1
bmN0aW9uIHRocm93T3JSZWplY3QoYV90ZXN0LCBvcGVyYXRpb24sIGZuLCBvYmosIGFyZ3MsIG1l
c3NhZ2UsIGNiKQogewogICAgIGlmIChvcGVyYXRpb24uaWRsVHlwZS5nZW5lcmljICE9PSAiUHJv
bWlzZSIpIHsKLSAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9u
KCkgeworICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKGdsb2JhbE9mKGZuKS5UeXBlRXJyb3IsIGZ1
bmN0aW9uKCkgewogICAgICAgICAgICAgZm4uYXBwbHkob2JqLCBhcmdzKTsKICAgICAgICAgfSwg
bWVzc2FnZSk7CiAgICAgICAgIGNiKCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgdHJ5IHsKLSAg
ICAgICAgICAgIHByb21pc2VfcmVqZWN0cyhhX3Rlc3QsIG5ldyBUeXBlRXJyb3IoKSwgZm4uYXBw
bHkob2JqLCBhcmdzKSkudGhlbihjYiwgY2IpOworICAgICAgICAgICAgcHJvbWlzZV9yZWplY3Rz
X2pzKGFfdGVzdCwgVHlwZUVycm9yLCBmbi5hcHBseShvYmosIGFyZ3MpLCBtZXNzYWdlKS50aGVu
KGNiLCBjYik7CiAgICAgICAgIH0gY2F0Y2ggKGUpewogICAgICAgICAgICAgYV90ZXN0LnN0ZXAo
ZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0X3VucmVhY2hlZCgiVGhyb3dzIFwi
IiArIGUgKyAiXCIgaW5zdGVhZCBvZiByZWplY3RpbmcgcHJvbWlzZSIpOwpAQCAtOTUsOSArMTIw
LDcgQEAgZnVuY3Rpb24gdGhyb3dPclJlamVjdChhX3Rlc3QsIG9wZXJhdGlvbiwgZm4sIG9iaiwg
YXJncywgIG1lc3NhZ2UsIGNiKQogICAgIH0KIH0KIAotLy9AfQogZnVuY3Rpb24gYXdhaXROQ2Fs
bGJhY2tzKG4sIGNiLCBjdHgpCi0vL0B7CiB7CiAgICAgdmFyIGNvdW50ZXIgPSAwOwogICAgIHJl
dHVybiBmdW5jdGlvbigpIHsKQEAgLTEwOCwyNCArMTMxLDI3IEBAIGZ1bmN0aW9uIGF3YWl0TkNh
bGxiYWNrcyhuLCBjYiwgY3R4KQogICAgIH07CiB9CiAKLS8vQH0KLXZhciBmcm91bmQgPQotLy9A
ewotKGZ1bmN0aW9uKCl7Ci0gICAgaWYgKE1hdGguZnJvdW5kKSByZXR1cm4gTWF0aC5mcm91bmQ7
CisvLy8gSWRsSGFybmVzc0Vycm9yIC8vLworLy8gRW50cnkgcG9pbnQKK3NlbGYuSWRsSGFybmVz
c0Vycm9yID0gZnVuY3Rpb24obWVzc2FnZSkKK3sKKyAgICAvKioKKyAgICAgKiBNZXNzYWdlIHRv
IGJlIHByaW50ZWQgYXMgdGhlIGVycm9yJ3MgdG9TdHJpbmcgaW52b2NhdGlvbi4KKyAgICAgKi8K
KyAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlOworfTsKKworSWRsSGFybmVzc0Vycm9yLnByb3Rv
dHlwZSA9IE9iamVjdC5jcmVhdGUoRXJyb3IucHJvdG90eXBlKTsKKworSWRsSGFybmVzc0Vycm9y
LnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uKCkKK3sKKyAgICByZXR1cm4gdGhpcy5tZXNz
YWdlOworfTsKIAotICAgIHZhciBhcnIgPSBuZXcgRmxvYXQzMkFycmF5KDEpOwotICAgIHJldHVy
biBmdW5jdGlvbiBmcm91bmQobikgewotICAgICAgICBhcnJbMF0gPSBuOwotICAgICAgICByZXR1
cm4gYXJyWzBdOwotICAgIH07Ci19KSgpOwotLy9AfQogCiAvLy8gSWRsQXJyYXkgLy8vCiAvLyBF
bnRyeSBwb2ludAogc2VsZi5JZGxBcnJheSA9IGZ1bmN0aW9uKCkKLS8vQHsKIHsKICAgICAvKioK
ICAgICAgKiBBIG1hcCBmcm9tIHN0cmluZ3MgdG8gdGhlIGNvcnJlc3BvbmRpbmcgbmFtZWQgSWRs
T2JqZWN0LCBzdWNoIGFzCkBAIC0xNDgsOTIgKzE3NCwyNzkgQEAgc2VsZi5JZGxBcnJheSA9IGZ1
bmN0aW9uKCkKIAogICAgIC8qKgogICAgICAqIFdoZW4gYWRkaW5nIG11bHRpcGxlIGNvbGxlY3Rp
b25zIG9mIElETHMgb25lIGF0IGEgdGltZSwgYW4gZWFybGllciBvbmUKLSAgICAgKiBtaWdodCBj
b250YWluIGEgcGFydGlhbCBpbnRlcmZhY2Ugb3IgaW1wbGVtZW50cyBzdGF0ZW1lbnQgdGhhdCBk
ZXBlbmRzCisgICAgICogbWlnaHQgY29udGFpbiBhIHBhcnRpYWwgaW50ZXJmYWNlIG9yIGluY2x1
ZGVzIHN0YXRlbWVudCB0aGF0IGRlcGVuZHMKICAgICAgKiBvbiBhIGxhdGVyIG9uZS4gIFNhdmUg
dGhlc2UgdXAgYW5kIGhhbmRsZSB0aGVtIHJpZ2h0IGJlZm9yZSB3ZSBydW4KICAgICAgKiB0ZXN0
cy4KICAgICAgKgotICAgICAqIC5wYXJ0aWFscyBpcyBzaW1wbHkgYW4gYXJyYXkgb2Ygb2JqZWN0
cyBmcm9tIFdlYklETFBhcnNlci5qcycKLSAgICAgKiAicGFydGlhbGludGVyZmFjZSIgcHJvZHVj
dGlvbi4gIC5pbXBsZW1lbnRzIG1hcHMgc3RyaW5ncyB0byBhcnJheXMgb2YKLSAgICAgKiBzdHJp
bmdzLCBzdWNoIHRoYXQKLSAgICAgKgotICAgICAqICAgQSBpbXBsZW1lbnRzIEI7Ci0gICAgICog
ICBBIGltcGxlbWVudHMgQzsKLSAgICAgKiAgIEQgaW1wbGVtZW50cyBFOwotICAgICAqCi0gICAg
ICogcmVzdWx0cyBpbiB7IEE6IFsiQiIsICJDIl0sIEQ6IFsiRSJdIH0uCisgICAgICogQm90aCB0
aGlzLnBhcnRpYWxzIGFuZCB0aGlzLmluY2x1ZGVzIHdpbGwgYmUgdGhlIG9iamVjdHMgYXMgcGFy
c2VkIGJ5CisgICAgICogV2ViSURMUGFyc2VyLmpzLCBub3Qgd3JhcHBlZCBpbiBJZGxJbnRlcmZh
Y2Ugb3Igc2ltaWxhci4KICAgICAgKi8KICAgICB0aGlzLnBhcnRpYWxzID0gW107Ci0gICAgdGhp
c1siaW1wbGVtZW50cyJdID0ge307CisgICAgdGhpcy5pbmNsdWRlcyA9IFtdOworCisgICAgLyoq
CisgICAgICogUmVjb3JkIG9mIHNraXBwZWQgSURMIGl0ZW1zLCBpbiBjYXNlIHdlIGxhdGVyIHJl
YWxpemUgdGhhdCB0aGV5IGFyZSBhCisgICAgICogZGVwZW5kZW5jeSAodG8gcmV0cm9hY3RpdmVs
eSBwcm9jZXNzIHRoZW0pLgorICAgICAqLworICAgIHRoaXMuc2tpcHBlZCA9IG5ldyBNYXAoKTsK
IH07CiAKLS8vQH0KLUlkbEFycmF5LnByb3RvdHlwZS5hZGRfaWRscyA9IGZ1bmN0aW9uKHJhd19p
ZGxzKQotLy9AeworSWRsQXJyYXkucHJvdG90eXBlLmFkZF9pZGxzID0gZnVuY3Rpb24ocmF3X2lk
bHMsIG9wdGlvbnMpCiB7CiAgICAgLyoqIEVudHJ5IHBvaW50LiAgU2VlIGRvY3VtZW50YXRpb24g
YXQgYmVnaW5uaW5nIG9mIGZpbGUuICovCi0gICAgdGhpcy5pbnRlcm5hbF9hZGRfaWRscyhXZWJJ
REwyLnBhcnNlKHJhd19pZGxzKSk7CisgICAgdGhpcy5pbnRlcm5hbF9hZGRfaWRscyhXZWJJREwy
LnBhcnNlKHJhd19pZGxzKSwgb3B0aW9ucyk7CiB9OwogCi0vL0B9Ci1JZGxBcnJheS5wcm90b3R5
cGUuYWRkX3VudGVzdGVkX2lkbHMgPSBmdW5jdGlvbihyYXdfaWRscykKLS8vQHsKK0lkbEFycmF5
LnByb3RvdHlwZS5hZGRfdW50ZXN0ZWRfaWRscyA9IGZ1bmN0aW9uKHJhd19pZGxzLCBvcHRpb25z
KQogewogICAgIC8qKiBFbnRyeSBwb2ludC4gIFNlZSBkb2N1bWVudGF0aW9uIGF0IGJlZ2lubmlu
ZyBvZiBmaWxlLiAqLwogICAgIHZhciBwYXJzZWRfaWRscyA9IFdlYklETDIucGFyc2UocmF3X2lk
bHMpOwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGFyc2VkX2lkbHMubGVuZ3RoOyBpKyspCi0g
ICAgeworICAgIHRoaXMubWFya19hc191bnRlc3RlZChwYXJzZWRfaWRscyk7CisgICAgdGhpcy5p
bnRlcm5hbF9hZGRfaWRscyhwYXJzZWRfaWRscywgb3B0aW9ucyk7Cit9OworCitJZGxBcnJheS5w
cm90b3R5cGUubWFya19hc191bnRlc3RlZCA9IGZ1bmN0aW9uIChwYXJzZWRfaWRscykKK3sKKyAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IHBhcnNlZF9pZGxzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAg
IHBhcnNlZF9pZGxzW2ldLnVudGVzdGVkID0gdHJ1ZTsKLSAgICAgICAgaWYgKCJtZW1iZXJzIiBp
biBwYXJzZWRfaWRsc1tpXSkKLSAgICAgICAgewotICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7
IGogPCBwYXJzZWRfaWRsc1tpXS5tZW1iZXJzLmxlbmd0aDsgaisrKQotICAgICAgICAgICAgewor
ICAgICAgICBpZiAoIm1lbWJlcnMiIGluIHBhcnNlZF9pZGxzW2ldKSB7CisgICAgICAgICAgICBm
b3IgKHZhciBqID0gMDsgaiA8IHBhcnNlZF9pZGxzW2ldLm1lbWJlcnMubGVuZ3RoOyBqKyspIHsK
ICAgICAgICAgICAgICAgICBwYXJzZWRfaWRsc1tpXS5tZW1iZXJzW2pdLnVudGVzdGVkID0gdHJ1
ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLSAgICB0aGlzLmludGVybmFsX2Fk
ZF9pZGxzKHBhcnNlZF9pZGxzKTsKIH07CiAKLS8vQH0KLUlkbEFycmF5LnByb3RvdHlwZS5pbnRl
cm5hbF9hZGRfaWRscyA9IGZ1bmN0aW9uKHBhcnNlZF9pZGxzKQotLy9AeworSWRsQXJyYXkucHJv
dG90eXBlLmlzX2V4Y2x1ZGVkX2J5X29wdGlvbnMgPSBmdW5jdGlvbiAobmFtZSwgb3B0aW9ucykK
K3sKKyAgICByZXR1cm4gb3B0aW9ucyAmJgorICAgICAgICAob3B0aW9ucy5leGNlcHQgJiYgb3B0
aW9ucy5leGNlcHQuaW5jbHVkZXMobmFtZSkKKyAgICAgICAgIHx8IG9wdGlvbnMub25seSAmJiAh
b3B0aW9ucy5vbmx5LmluY2x1ZGVzKG5hbWUpKTsKK307CisKK0lkbEFycmF5LnByb3RvdHlwZS5h
ZGRfZGVwZW5kZW5jeV9pZGxzID0gZnVuY3Rpb24ocmF3X2lkbHMsIG9wdGlvbnMpCit7CisgICAg
cmV0dXJuIHRoaXMuaW50ZXJuYWxfYWRkX2RlcGVuZGVuY3lfaWRscyhXZWJJREwyLnBhcnNlKHJh
d19pZGxzKSwgb3B0aW9ucyk7Cit9OworCitJZGxBcnJheS5wcm90b3R5cGUuaW50ZXJuYWxfYWRk
X2RlcGVuZGVuY3lfaWRscyA9IGZ1bmN0aW9uKHBhcnNlZF9pZGxzLCBvcHRpb25zKQoreworICAg
IGNvbnN0IG5ld19vcHRpb25zID0geyBvbmx5OiBbXSB9CisKKyAgICBjb25zdCBhbGxfZGVwcyA9
IG5ldyBTZXQoKTsKKyAgICBPYmplY3QudmFsdWVzKHRoaXMubWVtYmVycykuZm9yRWFjaCh2ID0+
IHsKKyAgICAgICAgaWYgKHYuYmFzZSkgeworICAgICAgICAgICAgYWxsX2RlcHMuYWRkKHYuYmFz
ZSk7CisgICAgICAgIH0KKyAgICB9KTsKKyAgICAvLyBBZGQgYm90aCAnQScgYW5kICdCJyBmb3Ig
ZWFjaCAnQSBpbmNsdWRlcyBCJyBlbnRyeS4KKyAgICB0aGlzLmluY2x1ZGVzLmZvckVhY2goaSA9
PiB7CisgICAgICAgIGFsbF9kZXBzLmFkZChpLnRhcmdldCk7CisgICAgICAgIGFsbF9kZXBzLmFk
ZChpLmluY2x1ZGVzKTsKKyAgICB9KTsKKyAgICB0aGlzLnBhcnRpYWxzLmZvckVhY2gocCA9PiBh
bGxfZGVwcy5hZGQocC5uYW1lKSk7CisgICAgLy8gQWRkICdUeXBlT2ZUeXBlJyBmb3IgZWFjaCAi
dHlwZWRlZiBUeXBlT2ZUeXBlIE15VHlwZTsiIGVudHJ5LgorICAgIE9iamVjdC5lbnRyaWVzKHRo
aXMubWVtYmVycykuZm9yRWFjaCgoW2ssIHZdKSA9PiB7CisgICAgICAgIGlmICh2IGluc3RhbmNl
b2YgSWRsVHlwZWRlZikgeworICAgICAgICAgICAgbGV0IGRlZnMgPSB2LmlkbFR5cGUudW5pb24K
KyAgICAgICAgICAgICAgICA/IHYuaWRsVHlwZS5pZGxUeXBlLm1hcCh0ID0+IHQuaWRsVHlwZSkK
KyAgICAgICAgICAgICAgICA6IFt2LmlkbFR5cGUuaWRsVHlwZV07CisgICAgICAgICAgICBkZWZz
LmZvckVhY2goZCA9PiBhbGxfZGVwcy5hZGQoZCkpOworICAgICAgICB9CisgICAgfSk7CisKKyAg
ICAvLyBBZGQgdGhlIGF0dHJpYnV0ZSBpZGxUeXBlcyBvZiBhbGwgdGhlIG5lc3RlZCBtZW1iZXJz
IG9mIGlkbHMuCisgICAgY29uc3QgYXR0ckRlcHMgPSBwYXJzZWRJZGxzID0+IHsKKyAgICAgICAg
cmV0dXJuIHBhcnNlZElkbHMucmVkdWNlKChkZXBzLCBwYXJzZWQpID0+IHsKKyAgICAgICAgICAg
IGlmIChwYXJzZWQubWVtYmVycykgeworICAgICAgICAgICAgICAgIGZvciAoY29uc3QgYXR0ciBv
ZiBPYmplY3QudmFsdWVzKHBhcnNlZC5tZW1iZXJzKS5maWx0ZXIobSA9PiBtLnR5cGUgPT09ICdh
dHRyaWJ1dGUnKSkgeworICAgICAgICAgICAgICAgICAgICBsZXQgYXR0clR5cGUgPSBhdHRyLmlk
bFR5cGU7CisgICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGZvciBnZW5lcmljIG1lbWJlcnMg
KGUuZy4gRnJvemVuQXJyYXk8TXlUeXBlPikKKyAgICAgICAgICAgICAgICAgICAgaWYgKGF0dHJU
eXBlLmdlbmVyaWMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlcHMuYWRkKGF0dHJUeXBl
LmdlbmVyaWMpOworICAgICAgICAgICAgICAgICAgICAgICAgYXR0clR5cGUgPSBhdHRyVHlwZS5p
ZGxUeXBlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGRlcHMu
YWRkKGF0dHJUeXBlLmlkbFR5cGUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGlmIChwYXJzZWQuYmFzZSBpbiB0aGlzLm1lbWJlcnMpIHsKKyAgICAgICAg
ICAgICAgICBhdHRyRGVwcyhbdGhpcy5tZW1iZXJzW3BhcnNlZC5iYXNlXV0pLmZvckVhY2goZGVw
ID0+IGRlcHMuYWRkKGRlcCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGRl
cHM7CisgICAgICAgIH0sIG5ldyBTZXQoKSk7CisgICAgfTsKKworICAgIGNvbnN0IHRlc3RlZE1l
bWJlcnMgPSBPYmplY3QudmFsdWVzKHRoaXMubWVtYmVycykuZmlsdGVyKG0gPT4gIW0udW50ZXN0
ZWQgJiYgbS5tZW1iZXJzKTsKKyAgICBhdHRyRGVwcyh0ZXN0ZWRNZW1iZXJzKS5mb3JFYWNoKGRl
cCA9PiBhbGxfZGVwcy5hZGQoZGVwKSk7CisKKyAgICBjb25zdCB0ZXN0ZWRQYXJ0aWFscyA9IHRo
aXMucGFydGlhbHMuZmlsdGVyKG0gPT4gIW0udW50ZXN0ZWQgJiYgbS5tZW1iZXJzKTsKKyAgICBh
dHRyRGVwcyh0ZXN0ZWRQYXJ0aWFscykuZm9yRWFjaChkZXAgPT4gYWxsX2RlcHMuYWRkKGRlcCkp
OworCisKKyAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmV4Y2VwdCAmJiBvcHRpb25zLm9ubHkp
IHsKKyAgICAgICAgdGhyb3cgbmV3IElkbEhhcm5lc3NFcnJvcigiVGhlIG9ubHkgYW5kIGV4Y2Vw
dCBvcHRpb25zIGNhbid0IGJlIHVzZWQgdG9nZXRoZXIuIik7CisgICAgfQorCisgICAgY29uc3Qg
ZGVmaW5lZF9vcl91bnRlc3RlZCA9IG5hbWUgPT4geworICAgICAgICAvLyBOT1RFOiBEZXBzIGFy
ZSB1bnRlc3RlZCwgc28gd2UncmUgbGVuaWVudCwgYW5kIHNraXAgcmUtZW5jb3VudGVyZWQgZGVm
aW5pdGlvbnMuCisgICAgICAgIC8vIGUuZy4gZm9yICdpZGwnIGNvbnRhaW5pbmcgQTpCLCBCOkMs
IEM6RAorICAgICAgICAvLyAgICAgIGFycmF5LmFkZF9pZGxzKGlkbCwge29ubHk6IFsnQScsJ0In
XX0pLgorICAgICAgICAvLyAgICAgIGFycmF5LmFkZF9kZXBlbmRlbmN5X2lkbHMoaWRsKTsKKyAg
ICAgICAgLy8gQiB3b3VsZCBiZSBlbmNvdW50ZXJlZCBhcyB0ZXN0ZWQsIGFuZCBlbmNvdW50ZXJl
ZCBhcyBhIGRlcCwgc28gd2UgaWdub3JlLgorICAgICAgICByZXR1cm4gbmFtZSBpbiB0aGlzLm1l
bWJlcnMKKyAgICAgICAgICAgIHx8IHRoaXMuaXNfZXhjbHVkZWRfYnlfb3B0aW9ucyhuYW1lLCBv
cHRpb25zKTsKKyAgICB9CisgICAgLy8gTWFwcyBuYW1lIC0+IFtwYXJzZWRfaWRsLCAuLi5dCisg
ICAgY29uc3QgcHJvY2VzcyA9IGZ1bmN0aW9uKHBhcnNlZCkgeworICAgICAgICB2YXIgZGVwcyA9
IFtdOworICAgICAgICBpZiAocGFyc2VkLm5hbWUpIHsKKyAgICAgICAgICAgIGRlcHMucHVzaChw
YXJzZWQubmFtZSk7CisgICAgICAgIH0gZWxzZSBpZiAocGFyc2VkLnR5cGUgPT09ICJpbmNsdWRl
cyIpIHsKKyAgICAgICAgICAgIGRlcHMucHVzaChwYXJzZWQudGFyZ2V0KTsKKyAgICAgICAgICAg
IGRlcHMucHVzaChwYXJzZWQuaW5jbHVkZXMpOworICAgICAgICB9CisKKyAgICAgICAgZGVwcyA9
IGRlcHMuZmlsdGVyKGZ1bmN0aW9uKG5hbWUpIHsKKyAgICAgICAgICAgIGlmICghbmFtZQorICAg
ICAgICAgICAgICAgIHx8IG5hbWUgPT09IHBhcnNlZC5uYW1lICYmIGRlZmluZWRfb3JfdW50ZXN0
ZWQobmFtZSkKKyAgICAgICAgICAgICAgICB8fCAhYWxsX2RlcHMuaGFzKG5hbWUpKSB7CisgICAg
ICAgICAgICAgICAgLy8gRmxhZyBhcyBza2lwcGVkLCBpZiBpdCdzIG5vdCBhbHJlYWR5IHByb2Nl
c3NlZCwgc28gd2UgY2FuCisgICAgICAgICAgICAgICAgLy8gY29tZSBiYWNrIHRvIGl0IGxhdGVy
IGlmIHdlIHJldHJvc3BlY3RpdmVseSBjYWxsIGl0IGEgZGVwLgorICAgICAgICAgICAgICAgIGlm
IChuYW1lICYmICEobmFtZSBpbiB0aGlzLm1lbWJlcnMpKSB7CisgICAgICAgICAgICAgICAgICAg
IHRoaXMuc2tpcHBlZC5oYXMobmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgID8gdGhpcy5z
a2lwcGVkLmdldChuYW1lKS5wdXNoKHBhcnNlZCkKKyAgICAgICAgICAgICAgICAgICAgICAgIDog
dGhpcy5za2lwcGVkLnNldChuYW1lLCBbcGFyc2VkXSk7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICB9LmJpbmQodGhpcykpOworCisgICAgICAgIGRlcHMuZm9yRWFj
aChmdW5jdGlvbihuYW1lKSB7CisgICAgICAgICAgICBpZiAoIW5ld19vcHRpb25zLm9ubHkuaW5j
bHVkZXMobmFtZSkpIHsKKyAgICAgICAgICAgICAgICBuZXdfb3B0aW9ucy5vbmx5LnB1c2gobmFt
ZSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNvbnN0IGZvbGxvd191cCA9IG5ldyBT
ZXQoKTsKKyAgICAgICAgICAgIGZvciAoY29uc3QgZGVwX3R5cGUgb2YgWyJpbmhlcml0YW5jZSIs
ICJpbmNsdWRlcyJdKSB7CisgICAgICAgICAgICAgICAgaWYgKHBhcnNlZFtkZXBfdHlwZV0pIHsK
KyAgICAgICAgICAgICAgICAgICAgY29uc3QgaW5oZXJpdGluZyA9IHBhcnNlZFtkZXBfdHlwZV07
CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGluaGVyaXRvciA9IHBhcnNlZC5uYW1lIHx8IHBh
cnNlZC50YXJnZXQ7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRlcHMgPSBbaW5oZXJpdGlu
Z107CisgICAgICAgICAgICAgICAgICAgIC8vIEZvciBBIGluY2x1ZGVzIEIsIHdlIGNhbiBpZ25v
cmUgQSwgdW5sZXNzIEIgKG9yIHNvbWUgb2YgaXRzCisgICAgICAgICAgICAgICAgICAgIC8vIG1l
bWJlcnMpIGlzIGJlaW5nIHRlc3RlZC4KKyAgICAgICAgICAgICAgICAgICAgaWYgKGRlcF90eXBl
ICE9PSAiaW5jbHVkZXMiCisgICAgICAgICAgICAgICAgICAgICAgICB8fCBpbmhlcml0aW5nIGlu
IHRoaXMubWVtYmVycyAmJiAhdGhpcy5tZW1iZXJzW2luaGVyaXRpbmddLnVudGVzdGVkCisgICAg
ICAgICAgICAgICAgICAgICAgICB8fCB0aGlzLnBhcnRpYWxzLnNvbWUoZnVuY3Rpb24ocCkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcC5uYW1lID09PSBpbmhlcml0
aW5nOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBkZXBzLnB1c2goaW5oZXJpdG9yKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGRlcCBvZiBkZXBzKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoIW5ld19vcHRpb25zLm9ubHkuaW5jbHVkZXMoZGVwKSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG5ld19vcHRpb25zLm9ubHkucHVzaChkZXApOworICAgICAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgYWxsX2RlcHMuYWRk
KGRlcCk7CisgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dfdXAuYWRkKGRlcCk7CisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGZvciAoY29uc3QgZGVmZXJyZWQgb2YgZm9sbG93X3VwKSB7CisgICAgICAgICAg
ICAgICAgaWYgKHRoaXMuc2tpcHBlZC5oYXMoZGVmZXJyZWQpKSB7CisgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IG5leHQgPSB0aGlzLnNraXBwZWQuZ2V0KGRlZmVycmVkKTsKKyAgICAgICAgICAg
ICAgICAgICAgdGhpcy5za2lwcGVkLmRlbGV0ZShkZWZlcnJlZCk7CisgICAgICAgICAgICAgICAg
ICAgIG5leHQuZm9yRWFjaChwcm9jZXNzKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9CisgICAgICAgIH0uYmluZCh0aGlzKSk7CisgICAgfS5iaW5kKHRoaXMpOworCisgICAgZm9y
IChsZXQgcGFyc2VkIG9mIHBhcnNlZF9pZGxzKSB7CisgICAgICAgIHByb2Nlc3MocGFyc2VkKTsK
KyAgICB9CisKKyAgICB0aGlzLm1hcmtfYXNfdW50ZXN0ZWQocGFyc2VkX2lkbHMpOworCisgICAg
aWYgKG5ld19vcHRpb25zLm9ubHkubGVuZ3RoKSB7CisgICAgICAgIHRoaXMuaW50ZXJuYWxfYWRk
X2lkbHMocGFyc2VkX2lkbHMsIG5ld19vcHRpb25zKTsKKyAgICB9Cit9CisKK0lkbEFycmF5LnBy
b3RvdHlwZS5pbnRlcm5hbF9hZGRfaWRscyA9IGZ1bmN0aW9uKHBhcnNlZF9pZGxzLCBvcHRpb25z
KQogewogICAgIC8qKgogICAgICAqIEludGVybmFsIGhlbHBlciBjYWxsZWQgYnkgYWRkX2lkbHMo
KSBhbmQgYWRkX3VudGVzdGVkX2lkbHMoKS4KKyAgICAgKgogICAgICAqIHBhcnNlZF9pZGxzIGlz
IGFuIGFycmF5IG9mIG9iamVjdHMgdGhhdCBjb21lIGZyb20gV2ViSURMUGFyc2VyLmpzJ3MKICAg
ICAgKiAiZGVmaW5pdGlvbnMiIHByb2R1Y3Rpb24uICBUaGUgYWRkX3VudGVzdGVkX2lkbHMoKSBl
bnRyeSBwb2ludAogICAgICAqIGFkZGl0aW9uYWxseSBzZXRzIGFuIC51bnRlc3RlZCBwcm9wZXJ0
eSBvbiBlYWNoIG9iamVjdCAoYW5kIGl0cwogICAgICAqIC5tZW1iZXJzKSBzbyB0aGF0IHRoZXkn
bGwgYmUgc2tpcHBlZCBieSB0ZXN0KCkgLS0gdGhleSdsbCBvbmx5IGJlCiAgICAgICogdXNlZCBm
b3IgYmFzZSBpbnRlcmZhY2VzIG9mIHRlc3RlZCBpbnRlcmZhY2VzLCByZXR1cm4gdHlwZXMsIGV0
Yy4KKyAgICAgKgorICAgICAqIG9wdGlvbnMgaXMgYSBkaWN0aW9uYXJ5IHRoYXQgY2FuIGhhdmUg
YW4gb25seSBvciBleGNlcHQgbWVtYmVyIHdoaWNoIGFyZQorICAgICAqIGFycmF5cy4gSWYgb25s
eSBpcyBnaXZlbiB0aGVuIG9ubHkgbWVtYmVycywgcGFydGlhbHMgYW5kIGludGVyZmFjZQorICAg
ICAqIHRhcmdldHMgbGlzdGVkIHdpbGwgYmUgYWRkZWQsIGFuZCBpZiBleGNlcHQgaXMgZ2l2ZW4g
b25seSB0aG9zZSB0aGF0CisgICAgICogYXJlbid0IGxpc3RlZCB3aWxsIGJlIGFkZGVkLiBPbmx5
IG9uZSBvZiBvbmx5IGFuZCBleGNlcHQgY2FuIGJlIHVzZWQuCiAgICAgICovCisKKyAgICBpZiAo
b3B0aW9ucyAmJiBvcHRpb25zLm9ubHkgJiYgb3B0aW9ucy5leGNlcHQpCisgICAgeworICAgICAg
ICB0aHJvdyBuZXcgSWRsSGFybmVzc0Vycm9yKCJUaGUgb25seSBhbmQgZXhjZXB0IG9wdGlvbnMg
Y2FuJ3QgYmUgdXNlZCB0b2dldGhlci4iKTsKKyAgICB9CisKKyAgICB2YXIgc2hvdWxkX3NraXAg
PSBuYW1lID0+IHsKKyAgICAgICAgcmV0dXJuIHRoaXMuaXNfZXhjbHVkZWRfYnlfb3B0aW9ucyhu
YW1lLCBvcHRpb25zKTsKKyAgICB9CisKICAgICBwYXJzZWRfaWRscy5mb3JFYWNoKGZ1bmN0aW9u
KHBhcnNlZF9pZGwpCiAgICAgewotICAgICAgICBpZiAocGFyc2VkX2lkbC50eXBlID09ICJpbnRl
cmZhY2UiICYmIHBhcnNlZF9pZGwucGFydGlhbCkKKyAgICAgICAgdmFyIHBhcnRpYWxfdHlwZXMg
PSBbCisgICAgICAgICAgICAiaW50ZXJmYWNlIiwKKyAgICAgICAgICAgICJpbnRlcmZhY2UgbWl4
aW4iLAorICAgICAgICAgICAgImRpY3Rpb25hcnkiLAorICAgICAgICAgICAgIm5hbWVzcGFjZSIs
CisgICAgICAgIF07CisgICAgICAgIGlmIChwYXJzZWRfaWRsLnBhcnRpYWwgJiYgcGFydGlhbF90
eXBlcy5pbmNsdWRlcyhwYXJzZWRfaWRsLnR5cGUpKQogICAgICAgICB7CisgICAgICAgICAgICBp
ZiAoc2hvdWxkX3NraXAocGFyc2VkX2lkbC5uYW1lKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CiAgICAgICAgICAgICB0aGlzLnBhcnRpYWxz
LnB1c2gocGFyc2VkX2lkbCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAg
ICAgICBpZiAocGFyc2VkX2lkbC50eXBlID09ICJpbXBsZW1lbnRzIikKKyAgICAgICAgaWYgKHBh
cnNlZF9pZGwudHlwZSA9PSAiaW5jbHVkZXMiKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAo
IShwYXJzZWRfaWRsLnRhcmdldCBpbiB0aGlzWyJpbXBsZW1lbnRzIl0pKQorICAgICAgICAgICAg
aWYgKHNob3VsZF9za2lwKHBhcnNlZF9pZGwudGFyZ2V0KSkKICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICB0aGlzWyJpbXBsZW1lbnRzIl1bcGFyc2VkX2lkbC50YXJnZXRdID0gW107Cisg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgdGhpc1si
aW1wbGVtZW50cyJdW3BhcnNlZF9pZGwudGFyZ2V0XS5wdXNoKHBhcnNlZF9pZGxbImltcGxlbWVu
dHMiXSk7CisgICAgICAgICAgICB0aGlzLmluY2x1ZGVzLnB1c2gocGFyc2VkX2lkbCk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBwYXJzZWRfaWRsLmFycmF5ID0g
dGhpczsKKyAgICAgICAgaWYgKHNob3VsZF9za2lwKHBhcnNlZF9pZGwubmFtZSkpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogICAgICAgICBpZiAocGFyc2VkX2lk
bC5uYW1lIGluIHRoaXMubWVtYmVycykKICAgICAgICAgewotICAgICAgICAgICAgdGhyb3cgIkR1
cGxpY2F0ZSBpZGVudGlmaWVyICIgKyBwYXJzZWRfaWRsLm5hbWU7CisgICAgICAgICAgICB0aHJv
dyBuZXcgSWRsSGFybmVzc0Vycm9yKCJEdXBsaWNhdGUgaWRlbnRpZmllciAiICsgcGFyc2VkX2lk
bC5uYW1lKTsKICAgICAgICAgfQorCiAgICAgICAgIHN3aXRjaChwYXJzZWRfaWRsLnR5cGUpCiAg
ICAgICAgIHsKICAgICAgICAgY2FzZSAiaW50ZXJmYWNlIjoKICAgICAgICAgICAgIHRoaXMubWVt
YmVyc1twYXJzZWRfaWRsLm5hbWVdID0KLSAgICAgICAgICAgICAgICBuZXcgSWRsSW50ZXJmYWNl
KHBhcnNlZF9pZGwsIC8qIGlzX2NhbGxiYWNrID0gKi8gZmFsc2UpOworICAgICAgICAgICAgICAg
IG5ldyBJZGxJbnRlcmZhY2UocGFyc2VkX2lkbCwgLyogaXNfY2FsbGJhY2sgPSAqLyBmYWxzZSwg
LyogaXNfbWl4aW4gPSAqLyBmYWxzZSk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBj
YXNlICJpbnRlcmZhY2UgbWl4aW4iOgorICAgICAgICAgICAgdGhpcy5tZW1iZXJzW3BhcnNlZF9p
ZGwubmFtZV0gPQorICAgICAgICAgICAgICAgIG5ldyBJZGxJbnRlcmZhY2UocGFyc2VkX2lkbCwg
LyogaXNfY2FsbGJhY2sgPSAqLyBmYWxzZSwgLyogaXNfbWl4aW4gPSAqLyB0cnVlKTsKICAgICAg
ICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgImRpY3Rpb25hcnkiOgpAQCAtMjQ3LDggKzQ2
MCw3IEBAIElkbEFycmF5LnByb3RvdHlwZS5pbnRlcm5hbF9hZGRfaWRscyA9IGZ1bmN0aW9uKHBh
cnNlZF9pZGxzKQogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSAiY2FsbGJhY2si
OgotICAgICAgICAgICAgLy8gVE9ETwotICAgICAgICAgICAgY29uc29sZS5sb2coImNhbGxiYWNr
IG5vdCB5ZXQgc3VwcG9ydGVkIik7CisgICAgICAgICAgICB0aGlzLm1lbWJlcnNbcGFyc2VkX2lk
bC5uYW1lXSA9IG5ldyBJZGxDYWxsYmFjayhwYXJzZWRfaWRsKTsKICAgICAgICAgICAgIGJyZWFr
OwogCiAgICAgICAgIGNhc2UgImVudW0iOgpAQCAtMjU3LDcgKzQ2OSwxMSBAQCBJZGxBcnJheS5w
cm90b3R5cGUuaW50ZXJuYWxfYWRkX2lkbHMgPSBmdW5jdGlvbihwYXJzZWRfaWRscykKIAogICAg
ICAgICBjYXNlICJjYWxsYmFjayBpbnRlcmZhY2UiOgogICAgICAgICAgICAgdGhpcy5tZW1iZXJz
W3BhcnNlZF9pZGwubmFtZV0gPQotICAgICAgICAgICAgICAgIG5ldyBJZGxJbnRlcmZhY2UocGFy
c2VkX2lkbCwgLyogaXNfY2FsbGJhY2sgPSAqLyB0cnVlKTsKKyAgICAgICAgICAgICAgICBuZXcg
SWRsSW50ZXJmYWNlKHBhcnNlZF9pZGwsIC8qIGlzX2NhbGxiYWNrID0gKi8gdHJ1ZSwgLyogaXNf
bWl4aW4gPSAqLyBmYWxzZSk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlICJu
YW1lc3BhY2UiOgorICAgICAgICAgICAgdGhpcy5tZW1iZXJzW3BhcnNlZF9pZGwubmFtZV0gPSBu
ZXcgSWRsTmFtZXNwYWNlKHBhcnNlZF9pZGwpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAg
ICAgZGVmYXVsdDoKQEAgLTI2Niw5ICs0ODIsNyBAQCBJZGxBcnJheS5wcm90b3R5cGUuaW50ZXJu
YWxfYWRkX2lkbHMgPSBmdW5jdGlvbihwYXJzZWRfaWRscykKICAgICB9LmJpbmQodGhpcykpOwog
fTsKIAotLy9AfQogSWRsQXJyYXkucHJvdG90eXBlLmFkZF9vYmplY3RzID0gZnVuY3Rpb24oZGlj
dCkKLS8vQHsKIHsKICAgICAvKiogRW50cnkgcG9pbnQuICBTZWUgZG9jdW1lbnRhdGlvbiBhdCBi
ZWdpbm5pbmcgb2YgZmlsZS4gKi8KICAgICBmb3IgKHZhciBrIGluIGRpY3QpCkBAIC0yODQsMTEx
ICs0OTgsMjIzIEBAIElkbEFycmF5LnByb3RvdHlwZS5hZGRfb2JqZWN0cyA9IGZ1bmN0aW9uKGRp
Y3QpCiAgICAgfQogfTsKIAotLy9AfQogSWRsQXJyYXkucHJvdG90eXBlLnByZXZlbnRfbXVsdGlw
bGVfdGVzdGluZyA9IGZ1bmN0aW9uKG5hbWUpCi0vL0B7CiB7CiAgICAgLyoqIEVudHJ5IHBvaW50
LiAgU2VlIGRvY3VtZW50YXRpb24gYXQgYmVnaW5uaW5nIG9mIGZpbGUuICovCiAgICAgdGhpcy5t
ZW1iZXJzW25hbWVdLnByZXZlbnRfbXVsdGlwbGVfdGVzdGluZyA9IHRydWU7CiB9OwogCi0vL0B9
Ci1JZGxBcnJheS5wcm90b3R5cGUucmVjdXJzaXZlbHlfZ2V0X2ltcGxlbWVudHMgPSBmdW5jdGlv
bihpbnRlcmZhY2VfbmFtZSkKLS8vQHsKK0lkbEFycmF5LnByb3RvdHlwZS5pc19qc29uX3R5cGUg
PSBmdW5jdGlvbih0eXBlKQogewogICAgIC8qKgotICAgICAqIEhlbHBlciBmdW5jdGlvbiBmb3Ig
dGVzdCgpLiAgUmV0dXJucyBhbiBhcnJheSBvZiB0aGluZ3MgdGhhdCBpbXBsZW1lbnQKLSAgICAg
KiBpbnRlcmZhY2VfbmFtZSwgc28gaWYgdGhlIElETCBjb250YWlucwotICAgICAqCi0gICAgICog
ICBBIGltcGxlbWVudHMgQjsKLSAgICAgKiAgIEIgaW1wbGVtZW50cyBDOwotICAgICAqICAgQiBp
bXBsZW1lbnRzIEQ7Ci0gICAgICoKLSAgICAgKiB0aGVuIHJlY3Vyc2l2ZWx5X2dldF9pbXBsZW1l
bnRzKCJBIikgc2hvdWxkIHJldHVybiBbIkIiLCAiQyIsICJEIl0uCisgICAgICogQ2hlY2tzIHdo
ZXRoZXIgdHlwZSBpcyBhIEpTT04gdHlwZSBhcyBwZXIKKyAgICAgKiBodHRwczovL2hleWNhbS5n
aXRodWIuaW8vd2ViaWRsLyNkZm4tanNvbi10eXBlcwogICAgICAqLwotICAgIHZhciByZXQgPSB0
aGlzWyJpbXBsZW1lbnRzIl1baW50ZXJmYWNlX25hbWVdOwotICAgIGlmIChyZXQgPT09IHVuZGVm
aW5lZCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBbXTsKKworICAgIHZhciBpZGxUeXBlID0gdHlw
ZS5pZGxUeXBlOworCisgICAgaWYgKHR5cGUuZ2VuZXJpYyA9PSAiUHJvbWlzZSIpIHsgcmV0dXJu
IGZhbHNlOyB9CisKKyAgICAvLyAgbnVsbGFibGUgYW5kIGFubm90YXRlZCB0eXBlcyBkb24ndCBu
ZWVkIHRvIGJlIGhhbmRsZWQgc2VwYXJhdGVseSwKKyAgICAvLyAgYXMgd2ViaWRsMiBkb2Vzbid0
IHJlcHJlc2VudCB0aGVtIHdyYXBwZWQtdXAgKGFzIHRoZXkncmUgZGVzY3JpYmVkCisgICAgLy8g
IGluIFdlYklETCkuCisKKyAgICAvLyB1bmlvbiBhbmQgcmVjb3JkIHR5cGVzCisgICAgaWYgKHR5
cGUudW5pb24gfHwgdHlwZS5nZW5lcmljID09ICJyZWNvcmQiKSB7CisgICAgICAgIHJldHVybiBp
ZGxUeXBlLmV2ZXJ5KHRoaXMuaXNfanNvbl90eXBlLCB0aGlzKTsKKyAgICB9CisKKyAgICAvLyBz
ZXF1ZW5jZSB0eXBlcworICAgIGlmICh0eXBlLmdlbmVyaWMgPT0gInNlcXVlbmNlIiB8fCB0eXBl
LmdlbmVyaWMgPT0gIkZyb3plbkFycmF5IikgeworICAgICAgICByZXR1cm4gdGhpcy5pc19qc29u
X3R5cGUoaWRsVHlwZVswXSk7CiAgICAgfQotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpc1si
aW1wbGVtZW50cyJdW2ludGVyZmFjZV9uYW1lXS5sZW5ndGg7IGkrKykKKworICAgIGlmICh0eXBl
b2YgaWRsVHlwZSAhPSAic3RyaW5nIikgeyB0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgdHlw
ZSAiICsgSlNPTi5zdHJpbmdpZnkoaWRsVHlwZSkpOyB9CisKKyAgICBzd2l0Y2ggKGlkbFR5cGUp
CiAgICAgewotICAgICAgICByZXQgPSByZXQuY29uY2F0KHRoaXMucmVjdXJzaXZlbHlfZ2V0X2lt
cGxlbWVudHMocmV0W2ldKSk7Ci0gICAgICAgIGlmIChyZXQuaW5kZXhPZihyZXRbaV0pICE9IHJl
dC5sYXN0SW5kZXhPZihyZXRbaV0pKQotICAgICAgICB7Ci0gICAgICAgICAgICB0aHJvdyAiQ2ly
Y3VsYXIgaW1wbGVtZW50cyBzdGF0ZW1lbnRzIGludm9sdmluZyAiICsgcmV0W2ldOwotICAgICAg
ICB9CisgICAgICAgLy8gIE51bWVyaWMgdHlwZXMKKyAgICAgICBjYXNlICJieXRlIjoKKyAgICAg
ICBjYXNlICJvY3RldCI6CisgICAgICAgY2FzZSAic2hvcnQiOgorICAgICAgIGNhc2UgInVuc2ln
bmVkIHNob3J0IjoKKyAgICAgICBjYXNlICJsb25nIjoKKyAgICAgICBjYXNlICJ1bnNpZ25lZCBs
b25nIjoKKyAgICAgICBjYXNlICJsb25nIGxvbmciOgorICAgICAgIGNhc2UgInVuc2lnbmVkIGxv
bmcgbG9uZyI6CisgICAgICAgY2FzZSAiZmxvYXQiOgorICAgICAgIGNhc2UgImRvdWJsZSI6Cisg
ICAgICAgY2FzZSAidW5yZXN0cmljdGVkIGZsb2F0IjoKKyAgICAgICBjYXNlICJ1bnJlc3RyaWN0
ZWQgZG91YmxlIjoKKyAgICAgICAvLyBib29sZWFuCisgICAgICAgY2FzZSAiYm9vbGVhbiI6Cisg
ICAgICAgLy8gc3RyaW5nIHR5cGVzCisgICAgICAgY2FzZSAiRE9NU3RyaW5nIjoKKyAgICAgICBj
YXNlICJCeXRlU3RyaW5nIjoKKyAgICAgICBjYXNlICJVU1ZTdHJpbmciOgorICAgICAgIC8vIG9i
amVjdCB0eXBlCisgICAgICAgY2FzZSAib2JqZWN0IjoKKyAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgY2FzZSAiRXJyb3IiOgorICAgICAgIGNhc2UgIkRPTUV4Y2VwdGlvbiI6CisgICAg
ICAgY2FzZSAiSW50OEFycmF5IjoKKyAgICAgICBjYXNlICJJbnQxNkFycmF5IjoKKyAgICAgICBj
YXNlICJJbnQzMkFycmF5IjoKKyAgICAgICBjYXNlICJVaW50OEFycmF5IjoKKyAgICAgICBjYXNl
ICJVaW50MTZBcnJheSI6CisgICAgICAgY2FzZSAiVWludDMyQXJyYXkiOgorICAgICAgIGNhc2Ug
IlVpbnQ4Q2xhbXBlZEFycmF5IjoKKyAgICAgICBjYXNlICJGbG9hdDMyQXJyYXkiOgorICAgICAg
IGNhc2UgIkZsb2F0NjRBcnJheSI6CisgICAgICAgY2FzZSAiQXJyYXlCdWZmZXIiOgorICAgICAg
IGNhc2UgIkRhdGFWaWV3IjoKKyAgICAgICBjYXNlICJhbnkiOgorICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgdmFyIHRoaW5nID0gdGhpcy5tZW1i
ZXJzW2lkbFR5cGVdOworICAgICAgICAgICBpZiAoIXRoaW5nKSB7IHRocm93IG5ldyBFcnJvcigi
VHlwZSAiICsgaWRsVHlwZSArICIgbm90IGZvdW5kIik7IH0KKyAgICAgICAgICAgaWYgKHRoaW5n
IGluc3RhbmNlb2YgSWRsRW51bSkgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgICAgICAgIGlmICh0
aGluZyBpbnN0YW5jZW9mIElkbFR5cGVkZWYpIHsKKyAgICAgICAgICAgICAgIHJldHVybiB0aGlz
LmlzX2pzb25fdHlwZSh0aGluZy5pZGxUeXBlKTsKKyAgICAgICAgICAgfQorCisgICAgICAgICAg
IC8vICBkaWN0aW9uYXJpZXMgd2hlcmUgYWxsIG9mIHRoZWlyIG1lbWJlcnMgYXJlIEpTT04gdHlw
ZXMKKyAgICAgICAgICAgaWYgKHRoaW5nIGluc3RhbmNlb2YgSWRsRGljdGlvbmFyeSkgeworICAg
ICAgICAgICAgICAgY29uc3QgbWFwID0gbmV3IE1hcCgpOworICAgICAgICAgICAgICAgZm9yIChj
b25zdCBkaWN0IG9mIHRoaW5nLmdldF9yZXZlcnNlX2luaGVyaXRhbmNlX3N0YWNrKCkpIHsKKyAg
ICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IG0gb2YgZGljdC5tZW1iZXJzKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgIG1hcC5zZXQobS5uYW1lLCBtLmlkbFR5cGUpOworICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgIHJldHVybiBBcnJheS5m
cm9tKG1hcC52YWx1ZXMoKSkuZXZlcnkodGhpcy5pc19qc29uX3R5cGUsIHRoaXMpOworICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgLy8gIGludGVyZmFjZSB0eXBlcyB0aGF0IGhhdmUgYSB0b0pT
T04gb3BlcmF0aW9uIGRlY2xhcmVkIG9uIHRoZW1zZWx2ZXMgb3IKKyAgICAgICAgICAgLy8gIG9u
ZSBvZiB0aGVpciBpbmhlcml0ZWQgaW50ZXJmYWNlcy4KKyAgICAgICAgICAgaWYgKHRoaW5nIGlu
c3RhbmNlb2YgSWRsSW50ZXJmYWNlKSB7CisgICAgICAgICAgICAgICB2YXIgYmFzZTsKKyAgICAg
ICAgICAgICAgIHdoaWxlICh0aGluZykKKyAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICBpZiAodGhpbmcuaGFzX3RvX2pzb25fcmVndWxhcl9vcGVyYXRpb24oKSkgeyByZXR1cm4g
dHJ1ZTsgfQorICAgICAgICAgICAgICAgICAgIHZhciBtaXhpbnMgPSB0aGlzLmluY2x1ZGVzW3Ro
aW5nLm5hbWVdOworICAgICAgICAgICAgICAgICAgIGlmIChtaXhpbnMpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgbWl4aW5zID0gbWl4aW5zLm1hcChmdW5jdGlvbihpZCkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdmFyIG1peGluID0gdGhpcy5tZW1iZXJzW2lkXTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICghbWl4aW4pIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkludGVyZmFjZSAiICsgaWQgKyAiIG5vdCBmb3VuZCAo
aW1wbGVtZW50ZWQgYnkgIiArIHRoaW5nLm5hbWUgKyAiKSIpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1peGluOworICAg
ICAgICAgICAgICAgICAgICAgICB9LCB0aGlzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgaWYg
KG1peGlucy5zb21lKGZ1bmN0aW9uKG0pIHsgcmV0dXJuIG0uaGFzX3RvX2pzb25fcmVndWxhcl9v
cGVyYXRpb24oKSB9ICkpIHsgcmV0dXJuIHRydWU7IH0KKyAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgaWYgKCF0aGluZy5iYXNlKSB7IHJldHVybiBmYWxzZTsgfQorICAg
ICAgICAgICAgICAgICAgIGJhc2UgPSB0aGlzLm1lbWJlcnNbdGhpbmcuYmFzZV07CisgICAgICAg
ICAgICAgICAgICAgaWYgKCFiYXNlKSB7CisgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5l
dyBFcnJvcigiSW50ZXJmYWNlICIgKyB0aGluZy5iYXNlICsgIiBub3QgZm91bmQgKGluaGVyaXRl
ZCBieSAiICsgdGhpbmcubmFtZSArICIpIik7CisgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgIHRoaW5nID0gYmFzZTsKKyAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgfQorICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQotICAgIHJldHVybiByZXQ7CiB9OwogCitmdW5jdGlvbiBleHBvc3VyZV9zZXQob2Jq
ZWN0LCBkZWZhdWx0X3NldCkgeworICAgIHZhciBleHBvc2VkID0gb2JqZWN0LmV4dEF0dHJzICYm
IG9iamVjdC5leHRBdHRycy5maWx0ZXIoYSA9PiBhLm5hbWUgPT09ICJFeHBvc2VkIik7CisgICAg
aWYgKGV4cG9zZWQgJiYgZXhwb3NlZC5sZW5ndGggPiAxKSB7CisgICAgICAgIHRocm93IG5ldyBJ
ZGxIYXJuZXNzRXJyb3IoCisgICAgICAgICAgICBgTXVsdGlwbGUgJ0V4cG9zZWQnIGV4dGVuZGVk
IGF0dHJpYnV0ZXMgb24gJHtvYmplY3QubmFtZX1gKTsKKyAgICB9CisKKyAgICBsZXQgcmVzdWx0
ID0gZGVmYXVsdF9zZXQgfHwgWyJXaW5kb3ciXTsKKyAgICBpZiAocmVzdWx0ICYmICEocmVzdWx0
IGluc3RhbmNlb2YgU2V0KSkgeworICAgICAgICByZXN1bHQgPSBuZXcgU2V0KHJlc3VsdCk7Cisg
ICAgfQorICAgIGlmIChleHBvc2VkICYmIGV4cG9zZWQubGVuZ3RoKSB7CisgICAgICAgIGNvbnN0
IHsgcmhzIH0gPSBleHBvc2VkWzBdOworICAgICAgICAvLyBDb3VsZCBiZSBhIGxpc3Qgb3IgYSBz
dHJpbmcuCisgICAgICAgIGNvbnN0IHNldCA9IHJocy50eXBlID09PSAiaWRlbnRpZmllci1saXN0
IiA/CisgICAgICAgICAgICByaHMudmFsdWUubWFwKGlkID0+IGlkLnZhbHVlKSA6CisgICAgICAg
ICAgICBbIHJocy52YWx1ZSBdOworICAgICAgICByZXN1bHQgPSBuZXcgU2V0KHNldCk7CisgICAg
fQorICAgIGlmIChyZXN1bHQgJiYgcmVzdWx0LmhhcygiV29ya2VyIikpIHsKKyAgICAgICAgcmVz
dWx0LmRlbGV0ZSgiV29ya2VyIik7CisgICAgICAgIHJlc3VsdC5hZGQoIkRlZGljYXRlZFdvcmtl
ciIpOworICAgICAgICByZXN1bHQuYWRkKCJTZXJ2aWNlV29ya2VyIik7CisgICAgICAgIHJlc3Vs
dC5hZGQoIlNoYXJlZFdvcmtlciIpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBm
dW5jdGlvbiBleHBvc2VkX2luKGdsb2JhbHMpIHsKLSAgICBpZiAoJ2RvY3VtZW50JyBpbiBzZWxm
KSB7Ci0gICAgICAgIHJldHVybiBnbG9iYWxzLmluZGV4T2YoIldpbmRvdyIpID49IDA7CisgICAg
aWYgKCdXaW5kb3cnIGluIHNlbGYpIHsKKyAgICAgICAgcmV0dXJuIGdsb2JhbHMuaGFzKCJXaW5k
b3ciKTsKICAgICB9CiAgICAgaWYgKCdEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZScgaW4gc2Vs
ZiAmJgogICAgICAgICBzZWxmIGluc3RhbmNlb2YgRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUp
IHsKLSAgICAgICAgcmV0dXJuIGdsb2JhbHMuaW5kZXhPZigiV29ya2VyIikgPj0gMCB8fAotICAg
ICAgICAgICAgICAgZ2xvYmFscy5pbmRleE9mKCJEZWRpY2F0ZWRXb3JrZXIiKSA+PSAwOworICAg
ICAgICByZXR1cm4gZ2xvYmFscy5oYXMoIkRlZGljYXRlZFdvcmtlciIpOwogICAgIH0KICAgICBp
ZiAoJ1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlJyBpbiBzZWxmICYmCiAgICAgICAgIHNlbGYgaW5z
dGFuY2VvZiBTaGFyZWRXb3JrZXJHbG9iYWxTY29wZSkgewotICAgICAgICByZXR1cm4gZ2xvYmFs
cy5pbmRleE9mKCJXb3JrZXIiKSA+PSAwIHx8Ci0gICAgICAgICAgICAgICBnbG9iYWxzLmluZGV4
T2YoIlNoYXJlZFdvcmtlciIpID49IDA7CisgICAgICAgIHJldHVybiBnbG9iYWxzLmhhcygiU2hh
cmVkV29ya2VyIik7CiAgICAgfQogICAgIGlmICgnU2VydmljZVdvcmtlckdsb2JhbFNjb3BlJyBp
biBzZWxmICYmCiAgICAgICAgIHNlbGYgaW5zdGFuY2VvZiBTZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGUpIHsKLSAgICAgICAgcmV0dXJuIGdsb2JhbHMuaW5kZXhPZigiV29ya2VyIikgPj0gMCB8fAot
ICAgICAgICAgICAgICAgZ2xvYmFscy5pbmRleE9mKCJTZXJ2aWNlV29ya2VyIikgPj0gMDsKKyAg
ICAgICAgcmV0dXJuIGdsb2JhbHMuaGFzKCJTZXJ2aWNlV29ya2VyIik7CisgICAgfQorICAgIHRo
cm93IG5ldyBJZGxIYXJuZXNzRXJyb3IoIlVuZXhwZWN0ZWQgZ2xvYmFsIG9iamVjdCIpOworfQor
CisvKioKKyAqIEFzc2VydHMgdGhhdCB0aGUgZ2l2ZW4gZXJyb3IgbWVzc2FnZSBpcyB0aHJvd24g
Zm9yIHRoZSBnaXZlbiBmdW5jdGlvbi4KKyAqIEBwYXJhbSB7c3RyaW5nfElkbEhhcm5lc3NFcnJv
cn0gZXJyb3IgRXhwZWN0ZWQgRXJyb3IgbWVzc2FnZS4KKyAqIEBwYXJhbSB7RnVuY3Rpb259IGlk
bEFycmF5RnVuYyBGdW5jdGlvbiBvcGVyYXRpbmcgb24gYW4gSWRsQXJyYXkgdGhhdCBzaG91bGQg
dGhyb3cuCisgKi8KK0lkbEFycmF5LnByb3RvdHlwZS5hc3NlcnRfdGhyb3dzID0gZnVuY3Rpb24o
ZXJyb3IsIGlkbEFycmF5RnVuYykKK3sKKyAgICB0cnkgeworICAgICAgICBpZGxBcnJheUZ1bmMu
Y2FsbCh0aGlzLCB0aGlzKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGlmIChlIGluc3Rh
bmNlb2YgQXNzZXJ0aW9uRXJyb3IpIHsKKyAgICAgICAgICAgIHRocm93IGU7CisgICAgICAgIH0K
KyAgICAgICAgLy8gQXNzZXJ0aW9ucyBmb3IgYmVoYXZpb3VyIG9mIHRoZSBpZGxoYXJuZXNzLmpz
IGVuZ2luZS4KKyAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgSWRsSGFybmVzc0Vycm9yKSB7
CisgICAgICAgICAgICBlcnJvciA9IGVycm9yLm1lc3NhZ2U7CisgICAgICAgIH0KKyAgICAgICAg
aWYgKGUubWVzc2FnZSAhPT0gZXJyb3IpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJZGxIYXJu
ZXNzRXJyb3IoYCR7aWRsQXJyYXlGdW5jfSB0aHJldyAiJHtlfSIsIG5vdCB0aGUgZXhwZWN0ZWQg
SWRsSGFybmVzc0Vycm9yICIke2Vycm9yfSJgKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47
CiAgICAgfQotICAgIHRocm93ICJVbmV4cGVjdGVkIGdsb2JhbCBvYmplY3QiOworICAgIHRocm93
IG5ldyBJZGxIYXJuZXNzRXJyb3IoYCR7aWRsQXJyYXlGdW5jfSBkaWQgbm90IHRocm93IHRoZSBl
eHBlY3RlZCBJZGxIYXJuZXNzRXJyb3JgKTsKIH0KIAotLy9AfQogSWRsQXJyYXkucHJvdG90eXBl
LnRlc3QgPSBmdW5jdGlvbigpCi0vL0B7CiB7CiAgICAgLyoqIEVudHJ5IHBvaW50LiAgU2VlIGRv
Y3VtZW50YXRpb24gYXQgYmVnaW5uaW5nIG9mIGZpbGUuICovCiAKLSAgICAvLyBGaXJzdCBtZXJn
ZSBpbiBhbGwgdGhlIHBhcnRpYWwgaW50ZXJmYWNlcyBhbmQgaW1wbGVtZW50cyBzdGF0ZW1lbnRz
IHdlCi0gICAgLy8gZW5jb3VudGVyZWQuCi0gICAgdGhpcy5wYXJ0aWFscy5mb3JFYWNoKGZ1bmN0
aW9uKHBhcnNlZF9pZGwpCi0gICAgewotICAgICAgICBpZiAoIShwYXJzZWRfaWRsLm5hbWUgaW4g
dGhpcy5tZW1iZXJzKQotICAgICAgICB8fCAhKHRoaXMubWVtYmVyc1twYXJzZWRfaWRsLm5hbWVd
IGluc3RhbmNlb2YgSWRsSW50ZXJmYWNlKSkKLSAgICAgICAgewotICAgICAgICAgICAgdGhyb3cg
IlBhcnRpYWwgaW50ZXJmYWNlICIgKyBwYXJzZWRfaWRsLm5hbWUgKyAiIHdpdGggbm8gb3JpZ2lu
YWwgaW50ZXJmYWNlIjsKKyAgICAvLyBGaXJzdCBtZXJnZSBpbiBhbGwgcGFydGlhbCBkZWZpbml0
aW9ucyBhbmQgaW50ZXJmYWNlIG1peGlucy4KKyAgICB0aGlzLm1lcmdlX3BhcnRpYWxzKCk7Cisg
ICAgdGhpcy5tZXJnZV9taXhpbnMoKTsKKworICAgIC8vIEFzc2VydCBCIGRlZmluZWQgZm9yIEEg
OiBCCisgICAgZm9yIChjb25zdCBtZW1iZXIgb2YgT2JqZWN0LnZhbHVlcyh0aGlzLm1lbWJlcnMp
LmZpbHRlcihtID0+IG0uYmFzZSkpIHsKKyAgICAgICAgY29uc3QgbGhzID0gbWVtYmVyLm5hbWU7
CisgICAgICAgIGNvbnN0IHJocyA9IG1lbWJlci5iYXNlOworICAgICAgICBpZiAoIShyaHMgaW4g
dGhpcy5tZW1iZXJzKSkgdGhyb3cgbmV3IElkbEhhcm5lc3NFcnJvcihgJHtsaHN9IGluaGVyaXRz
ICR7cmhzfSwgYnV0ICR7cmhzfSBpcyB1bmRlZmluZWQuYCk7CisgICAgICAgIGNvbnN0IGxoc19p
c19pbnRlcmZhY2UgPSB0aGlzLm1lbWJlcnNbbGhzXSBpbnN0YW5jZW9mIElkbEludGVyZmFjZTsK
KyAgICAgICAgY29uc3QgcmhzX2lzX2ludGVyZmFjZSA9IHRoaXMubWVtYmVyc1tyaHNdIGluc3Rh
bmNlb2YgSWRsSW50ZXJmYWNlOworICAgICAgICBpZiAocmhzX2lzX2ludGVyZmFjZSAhPSBsaHNf
aXNfaW50ZXJmYWNlKSB7CisgICAgICAgICAgICBpZiAoIWxoc19pc19pbnRlcmZhY2UpIHRocm93
IG5ldyBJZGxIYXJuZXNzRXJyb3IoYCR7bGhzfSBpbmhlcml0cyAke3Joc30sIGJ1dCAke2xoc30g
aXMgbm90IGFuIGludGVyZmFjZS5gKTsKKyAgICAgICAgICAgIGlmICghcmhzX2lzX2ludGVyZmFj
ZSkgdGhyb3cgbmV3IElkbEhhcm5lc3NFcnJvcihgJHtsaHN9IGluaGVyaXRzICR7cmhzfSwgYnV0
ICR7cmhzfSBpcyBub3QgYW4gaW50ZXJmYWNlLmApOwogICAgICAgICB9Ci0gICAgICAgIGlmIChw
YXJzZWRfaWRsLmV4dEF0dHJzKQotICAgICAgICB7Ci0gICAgICAgICAgICBwYXJzZWRfaWRsLmV4
dEF0dHJzLmZvckVhY2goZnVuY3Rpb24oZXh0QXR0cikKLSAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICB0aGlzLm1lbWJlcnNbcGFyc2VkX2lkbC5uYW1lXS5leHRBdHRycy5wdXNoKGV4dEF0
dHIpOwotICAgICAgICAgICAgfS5iaW5kKHRoaXMpKTsKLSAgICAgICAgfQotICAgICAgICBwYXJz
ZWRfaWRsLm1lbWJlcnMuZm9yRWFjaChmdW5jdGlvbihtZW1iZXIpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHRoaXMubWVtYmVyc1twYXJzZWRfaWRsLm5hbWVdLm1lbWJlcnMucHVzaChuZXcgSWRs
SW50ZXJmYWNlTWVtYmVyKG1lbWJlcikpOwotICAgICAgICB9LmJpbmQodGhpcykpOwotICAgIH0u
YmluZCh0aGlzKSk7Ci0gICAgdGhpcy5wYXJ0aWFscyA9IFtdOwotCi0gICAgZm9yICh2YXIgbGhz
IGluIHRoaXNbImltcGxlbWVudHMiXSkKLSAgICB7Ci0gICAgICAgIHRoaXMucmVjdXJzaXZlbHlf
Z2V0X2ltcGxlbWVudHMobGhzKS5mb3JFYWNoKGZ1bmN0aW9uKHJocykKLSAgICAgICAgewotICAg
ICAgICAgICAgdmFyIGVyclN0ciA9IGxocyArICIgaW1wbGVtZW50cyAiICsgcmhzICsgIiwgYnV0
ICI7Ci0gICAgICAgICAgICBpZiAoIShsaHMgaW4gdGhpcy5tZW1iZXJzKSkgdGhyb3cgZXJyU3Ry
ICsgbGhzICsgIiBpcyB1bmRlZmluZWQuIjsKLSAgICAgICAgICAgIGlmICghKHRoaXMubWVtYmVy
c1tsaHNdIGluc3RhbmNlb2YgSWRsSW50ZXJmYWNlKSkgdGhyb3cgZXJyU3RyICsgbGhzICsgIiBp
cyBub3QgYW4gaW50ZXJmYWNlLiI7Ci0gICAgICAgICAgICBpZiAoIShyaHMgaW4gdGhpcy5tZW1i
ZXJzKSkgdGhyb3cgZXJyU3RyICsgcmhzICsgIiBpcyB1bmRlZmluZWQuIjsKLSAgICAgICAgICAg
IGlmICghKHRoaXMubWVtYmVyc1tyaHNdIGluc3RhbmNlb2YgSWRsSW50ZXJmYWNlKSkgdGhyb3cg
ZXJyU3RyICsgcmhzICsgIiBpcyBub3QgYW4gaW50ZXJmYWNlLiI7Ci0gICAgICAgICAgICB0aGlz
Lm1lbWJlcnNbcmhzXS5tZW1iZXJzLmZvckVhY2goZnVuY3Rpb24obWVtYmVyKQotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIHRoaXMubWVtYmVyc1tsaHNdLm1lbWJlcnMucHVzaChuZXcg
SWRsSW50ZXJmYWNlTWVtYmVyKG1lbWJlcikpOwotICAgICAgICAgICAgfS5iaW5kKHRoaXMpKTsK
LSAgICAgICAgfS5iaW5kKHRoaXMpKTsKKyAgICAgICAgLy8gQ2hlY2sgZm9yIGNpcmN1bGFyIGRl
cGVuZGVuY2llcy4KKyAgICAgICAgbWVtYmVyLmdldF9yZXZlcnNlX2luaGVyaXRhbmNlX3N0YWNr
KCk7CiAgICAgfQotICAgIHRoaXNbImltcGxlbWVudHMiXSA9IHt9OwogCiAgICAgT2JqZWN0Lmdl
dE93blByb3BlcnR5TmFtZXModGhpcy5tZW1iZXJzKS5mb3JFYWNoKGZ1bmN0aW9uKG1lbWJlck5h
bWUpIHsKICAgICAgICAgdmFyIG1lbWJlciA9IHRoaXMubWVtYmVyc1ttZW1iZXJOYW1lXTsKQEAg
LTM5NiwxNSArNzIyLDkgQEAgSWRsQXJyYXkucHJvdG90eXBlLnRlc3QgPSBmdW5jdGlvbigpCiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICB2YXIgZXhwb3NlZCA9IG1l
bWJlci5leHRBdHRycy5maWx0ZXIoZnVuY3Rpb24oYSkgeyByZXR1cm4gYS5uYW1lID09ICJFeHBv
c2VkIiB9KTsKLSAgICAgICAgaWYgKGV4cG9zZWQubGVuZ3RoID4gMSkgewotICAgICAgICAgICAg
dGhyb3cgIlVuZXhwZWN0ZWQgRXhwb3NlZCBleHRlbmRlZCBhdHRyaWJ1dGVzIG9uICIgKyBtZW1i
ZXJOYW1lICsgIjogIiArIGV4cG9zZWQ7Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgZ2xvYmFs
cyA9IGV4cG9zZWQubGVuZ3RoID09PSAxCi0gICAgICAgICAgICAgICAgICAgID8gZXhwb3NlZFsw
XS5yaHMudmFsdWUKLSAgICAgICAgICAgICAgICAgICAgOiBbIldpbmRvdyJdOworICAgICAgICB2
YXIgZ2xvYmFscyA9IGV4cG9zdXJlX3NldChtZW1iZXIpOwogICAgICAgICBtZW1iZXIuZXhwb3Nl
ZCA9IGV4cG9zZWRfaW4oZ2xvYmFscyk7CisgICAgICAgIG1lbWJlci5leHBvc3VyZVNldCA9IGds
b2JhbHM7CiAgICAgfS5iaW5kKHRoaXMpKTsKIAogICAgIC8vIE5vdyBydW4gdGVzdCgpIG9uIGV2
ZXJ5IG1lbWJlciwgYW5kIHRlc3Rfb2JqZWN0KCkgZm9yIGV2ZXJ5IG9iamVjdC4KQEAgLTQxMywx
OCArNzMzLDE5NCBAQCBJZGxBcnJheS5wcm90b3R5cGUudGVzdCA9IGZ1bmN0aW9uKCkKICAgICAg
ICAgdGhpcy5tZW1iZXJzW25hbWVdLnRlc3QoKTsKICAgICAgICAgaWYgKG5hbWUgaW4gdGhpcy5v
YmplY3RzKQogICAgICAgICB7Ci0gICAgICAgICAgICB0aGlzLm9iamVjdHNbbmFtZV0uZm9yRWFj
aChmdW5jdGlvbihzdHIpCisgICAgICAgICAgICBjb25zdCBvYmplY3RzID0gdGhpcy5vYmplY3Rz
W25hbWVdOworICAgICAgICAgICAgaWYgKCFvYmplY3RzIHx8ICFBcnJheS5pc0FycmF5KG9iamVj
dHMpKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElkbEhhcm5lc3NFcnJvcihgSW52YWxp
ZCBvciBlbXB0eSBvYmplY3RzIGZvciBtZW1iZXIgJHtuYW1lfWApOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgb2JqZWN0cy5mb3JFYWNoKGZ1bmN0aW9uKHN0cikKICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBpZiAoIXRoaXMubWVtYmVyc1tuYW1lXSB8fCAhKHRoaXMubWVtYmVy
c1tuYW1lXSBpbnN0YW5jZW9mIElkbEludGVyZmFjZSkpIHsKKyAgICAgICAgICAgICAgICAgICAg
dGhyb3cgbmV3IElkbEhhcm5lc3NFcnJvcihgSW52YWxpZCBvYmplY3QgbWVtYmVyIG5hbWUgJHtu
YW1lfWApOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB0aGlzLm1lbWJlcnNb
bmFtZV0udGVzdF9vYmplY3Qoc3RyKTsKICAgICAgICAgICAgIH0uYmluZCh0aGlzKSk7CiAgICAg
ICAgIH0KICAgICB9CiB9OwogCi0vL0B9CitJZGxBcnJheS5wcm90b3R5cGUubWVyZ2VfcGFydGlh
bHMgPSBmdW5jdGlvbigpCit7CisgICAgY29uc3QgdGVzdGVkUGFydGlhbHMgPSBuZXcgTWFwKCk7
CisgICAgdGhpcy5wYXJ0aWFscy5mb3JFYWNoKGZ1bmN0aW9uKHBhcnNlZF9pZGwpCisgICAgewor
ICAgICAgICBjb25zdCBvcmlnaW5hbEV4aXN0cyA9IHBhcnNlZF9pZGwubmFtZSBpbiB0aGlzLm1l
bWJlcnMKKyAgICAgICAgICAgICYmICh0aGlzLm1lbWJlcnNbcGFyc2VkX2lkbC5uYW1lXSBpbnN0
YW5jZW9mIElkbEludGVyZmFjZQorICAgICAgICAgICAgICAgIHx8IHRoaXMubWVtYmVyc1twYXJz
ZWRfaWRsLm5hbWVdIGluc3RhbmNlb2YgSWRsRGljdGlvbmFyeQorICAgICAgICAgICAgICAgIHx8
IHRoaXMubWVtYmVyc1twYXJzZWRfaWRsLm5hbWVdIGluc3RhbmNlb2YgSWRsTmFtZXNwYWNlKTsK
KworICAgICAgICAvLyBFbnN1cmUgdW5pcXVlIHRlc3QgbmFtZSBpbiBjYXNlIG9mIG11bHRpcGxl
IHBhcnRpYWxzLgorICAgICAgICBsZXQgcGFydGlhbFRlc3ROYW1lID0gcGFyc2VkX2lkbC5uYW1l
OworICAgICAgICBsZXQgcGFydGlhbFRlc3RDb3VudCA9IDE7CisgICAgICAgIGlmICh0ZXN0ZWRQ
YXJ0aWFscy5oYXMocGFyc2VkX2lkbC5uYW1lKSkgeworICAgICAgICAgICAgcGFydGlhbFRlc3RD
b3VudCArPSB0ZXN0ZWRQYXJ0aWFscy5nZXQocGFyc2VkX2lkbC5uYW1lKTsKKyAgICAgICAgICAg
IHBhcnRpYWxUZXN0TmFtZSA9IGAke3BhcnRpYWxUZXN0TmFtZX1bJHtwYXJ0aWFsVGVzdENvdW50
fV1gOworICAgICAgICB9CisgICAgICAgIHRlc3RlZFBhcnRpYWxzLnNldChwYXJzZWRfaWRsLm5h
bWUsIHBhcnRpYWxUZXN0Q291bnQpOworCisgICAgICAgIGlmICghcGFyc2VkX2lkbC51bnRlc3Rl
ZCkgeworICAgICAgICAgICAgdGVzdChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgYXNz
ZXJ0X3RydWUob3JpZ2luYWxFeGlzdHMsIGBPcmlnaW5hbCAke3BhcnNlZF9pZGwudHlwZX0gc2hv
dWxkIGJlIGRlZmluZWRgKTsKKworICAgICAgICAgICAgICAgIHZhciBleHBlY3RlZDsKKyAgICAg
ICAgICAgICAgICBzd2l0Y2ggKHBhcnNlZF9pZGwudHlwZSkgeworICAgICAgICAgICAgICAgICAg
ICBjYXNlICdkaWN0aW9uYXJ5JzogZXhwZWN0ZWQgPSBJZGxEaWN0aW9uYXJ5OyBicmVhazsKKyAg
ICAgICAgICAgICAgICAgICAgY2FzZSAnbmFtZXNwYWNlJzogZXhwZWN0ZWQgPSBJZGxOYW1lc3Bh
Y2U7IGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlICdpbnRlcmZhY2UnOgorICAgICAg
ICAgICAgICAgICAgICBjYXNlICdpbnRlcmZhY2UgbWl4aW4nOgorICAgICAgICAgICAgICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQgPSBJZGxJbnRlcmZh
Y2U7IGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBhc3NlcnRfdHJ1
ZSgKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQucHJvdG90eXBlLmlzUHJvdG90eXBlT2Yo
dGhpcy5tZW1iZXJzW3BhcnNlZF9pZGwubmFtZV0pLAorICAgICAgICAgICAgICAgICAgICBgT3Jp
Z2luYWwgJHtwYXJzZWRfaWRsLm5hbWV9IGRlZmluaXRpb24gc2hvdWxkIGhhdmUgdHlwZSAke3Bh
cnNlZF9pZGwudHlwZX1gKTsKKyAgICAgICAgICAgIH0uYmluZCh0aGlzKSwgYFBhcnRpYWwgJHtw
YXJzZWRfaWRsLnR5cGV9ICR7cGFydGlhbFRlc3ROYW1lfTogb3JpZ2luYWwgJHtwYXJzZWRfaWRs
LnR5cGV9IGRlZmluZWRgKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIW9yaWdpbmFsRXhpc3Rz
KSB7CisgICAgICAgICAgICAvLyBOb3QgZ29vZC4uIGJ1dCBrZWVwIGNhbG0gYW5kIGNhcnJ5IG9u
LgorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHBhcnNlZF9p
ZGwuZXh0QXR0cnMpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIFNwZWNpYWwtY2FzZSAiRXhw
b3NlZCIuIE11c3QgYmUgYSBzdWJzZXQgb2Ygb3JpZ2luYWwgaW50ZXJmYWNlJ3MgZXhwb3N1cmUu
CisgICAgICAgICAgICAvLyBFeHBvc2VkIG9uIGEgcGFydGlhbCBpcyB0aGUgZXF1aXZhbGVudCBv
ZiBoYXZpbmcgdGhlIHNhbWUgRXhwb3NlZCBvbiBhbGwgbmVzdGVkIG1lbWJlcnMuCisgICAgICAg
ICAgICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2hleWNhbS93ZWJpZGwvaXNzdWVzLzE1NCBm
b3IgZGlzY3JlcGVuY3kgYmV0d2VlbiBFeHBvc2VkIGFuZAorICAgICAgICAgICAgLy8gb3RoZXIg
ZXh0ZW5kZWQgYXR0cmlidXRlcyBvbiBwYXJ0aWFsIGludGVyZmFjZXMuCisgICAgICAgICAgICBj
b25zdCBleHBvc3VyZUF0dHIgPSBwYXJzZWRfaWRsLmV4dEF0dHJzLmZpbmQoYSA9PiBhLm5hbWUg
PT09ICJFeHBvc2VkIik7CisgICAgICAgICAgICBpZiAoZXhwb3N1cmVBdHRyKSB7CisgICAgICAg
ICAgICAgICAgaWYgKCFwYXJzZWRfaWRsLnVudGVzdGVkKSB7CisgICAgICAgICAgICAgICAgICAg
IHRlc3QoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFydGlh
bEV4cG9zdXJlID0gZXhwb3N1cmVfc2V0KHBhcnNlZF9pZGwpOworICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgbWVtYmVyRXhwb3N1cmUgPSBleHBvc3VyZV9zZXQodGhpcy5tZW1iZXJzW3Bh
cnNlZF9pZGwubmFtZV0pOworICAgICAgICAgICAgICAgICAgICAgICAgcGFydGlhbEV4cG9zdXJl
LmZvckVhY2gobmFtZSA9PiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFtZW1i
ZXJFeHBvc3VyZSB8fCAhbWVtYmVyRXhwb3N1cmUuaGFzKG5hbWUpKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJZGxIYXJuZXNzRXJyb3IoCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBgUGFydGlhbCAke3BhcnNlZF9pZGwubmFtZX0gJHtw
YXJzZWRfaWRsLnR5cGV9IGlzIGV4cG9zZWQgdG8gJyR7bmFtZX0nLCB0aGUgb3JpZ2luYWwgJHtw
YXJzZWRfaWRsLnR5cGV9IGlzIG5vdC5gKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgfS5iaW5k
KHRoaXMpLCBgUGFydGlhbCAke3BhcnNlZF9pZGwudHlwZX0gJHtwYXJ0aWFsVGVzdE5hbWV9OiB2
YWxpZCBleHBvc3VyZSBzZXRgKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
cGFyc2VkX2lkbC5tZW1iZXJzLmZvckVhY2goZnVuY3Rpb24gKG1lbWJlcikgeworICAgICAgICAg
ICAgICAgICAgICBtZW1iZXIuZXh0QXR0cnMucHVzaChleHBvc3VyZUF0dHIpOworICAgICAgICAg
ICAgICAgIH0uYmluZCh0aGlzKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHBhcnNl
ZF9pZGwuZXh0QXR0cnMuZm9yRWFjaChmdW5jdGlvbihleHRBdHRyKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIC8vICJFeHBvc2VkIiBhbHJlYWR5IGhhbmRsZWQgYWJvdmUuCisgICAg
ICAgICAgICAgICAgaWYgKGV4dEF0dHIubmFtZSA9PT0gIkV4cG9zZWQiKSB7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdGhp
cy5tZW1iZXJzW3BhcnNlZF9pZGwubmFtZV0uZXh0QXR0cnMucHVzaChleHRBdHRyKTsKKyAgICAg
ICAgICAgIH0uYmluZCh0aGlzKSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHBhcnNlZF9pZGwu
bWVtYmVycy5sZW5ndGgpIHsKKyAgICAgICAgICAgIHRlc3QoZnVuY3Rpb24gKCkgeworICAgICAg
ICAgICAgICAgIHZhciBjbGFzaCA9IHBhcnNlZF9pZGwubWVtYmVycy5maW5kKGZ1bmN0aW9uKG1l
bWJlcikgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5tZW1iZXJzW3BhcnNlZF9p
ZGwubmFtZV0ubWVtYmVycy5maW5kKGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB0aGlzLmFyZV9kdXBsaWNhdGVfbWVtYmVycyhtLCBtZW1iZXIpOworICAgICAg
ICAgICAgICAgICAgICB9LmJpbmQodGhpcykpOworICAgICAgICAgICAgICAgIH0uYmluZCh0aGlz
KSk7CisgICAgICAgICAgICAgICAgcGFyc2VkX2lkbC5tZW1iZXJzLmZvckVhY2goZnVuY3Rpb24o
bWVtYmVyKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5tZW1i
ZXJzW3BhcnNlZF9pZGwubmFtZV0ubWVtYmVycy5wdXNoKG5ldyBJZGxJbnRlcmZhY2VNZW1iZXIo
bWVtYmVyKSk7CisgICAgICAgICAgICAgICAgfS5iaW5kKHRoaXMpKTsKKyAgICAgICAgICAgICAg
ICBhc3NlcnRfdHJ1ZSghY2xhc2gsICJtZW1iZXIgIiArIChjbGFzaCAmJiBjbGFzaC5uYW1lKSAr
ICIgaXMgdW5pcXVlIik7CisgICAgICAgICAgICB9LmJpbmQodGhpcyksIGBQYXJ0aWFsICR7cGFy
c2VkX2lkbC50eXBlfSAke3BhcnRpYWxUZXN0TmFtZX06IG1lbWJlciBuYW1lcyBhcmUgdW5pcXVl
YCk7CisgICAgICAgIH0KKyAgICB9LmJpbmQodGhpcykpOworICAgIHRoaXMucGFydGlhbHMgPSBb
XTsKK30KKworSWRsQXJyYXkucHJvdG90eXBlLm1lcmdlX21peGlucyA9IGZ1bmN0aW9uKCkKK3sK
KyAgICBmb3IgKGNvbnN0IHBhcnNlZF9pZGwgb2YgdGhpcy5pbmNsdWRlcykKKyAgICB7CisgICAg
ICAgIGNvbnN0IGxocyA9IHBhcnNlZF9pZGwudGFyZ2V0OworICAgICAgICBjb25zdCByaHMgPSBw
YXJzZWRfaWRsLmluY2x1ZGVzOworCisgICAgICAgIHZhciBlcnJTdHIgPSBsaHMgKyAiIGluY2x1
ZGVzICIgKyByaHMgKyAiLCBidXQgIjsKKyAgICAgICAgaWYgKCEobGhzIGluIHRoaXMubWVtYmVy
cykpIHRocm93IGVyclN0ciArIGxocyArICIgaXMgdW5kZWZpbmVkLiI7CisgICAgICAgIGlmICgh
KHRoaXMubWVtYmVyc1tsaHNdIGluc3RhbmNlb2YgSWRsSW50ZXJmYWNlKSkgdGhyb3cgZXJyU3Ry
ICsgbGhzICsgIiBpcyBub3QgYW4gaW50ZXJmYWNlLiI7CisgICAgICAgIGlmICghKHJocyBpbiB0
aGlzLm1lbWJlcnMpKSB0aHJvdyBlcnJTdHIgKyByaHMgKyAiIGlzIHVuZGVmaW5lZC4iOworICAg
ICAgICBpZiAoISh0aGlzLm1lbWJlcnNbcmhzXSBpbnN0YW5jZW9mIElkbEludGVyZmFjZSkpIHRo
cm93IGVyclN0ciArIHJocyArICIgaXMgbm90IGFuIGludGVyZmFjZS4iOworCisgICAgICAgIGlm
ICh0aGlzLm1lbWJlcnNbcmhzXS5tZW1iZXJzLmxlbmd0aCkgeworICAgICAgICAgICAgdGVzdChm
dW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgdmFyIGNsYXNoID0gdGhpcy5tZW1iZXJzW3Jo
c10ubWVtYmVycy5maW5kKGZ1bmN0aW9uKG1lbWJlcikgeworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdGhpcy5tZW1iZXJzW2xoc10ubWVtYmVycy5maW5kKGZ1bmN0aW9uKG0pIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFyZV9kdXBsaWNhdGVfbWVtYmVycyhtLCBt
ZW1iZXIpOworICAgICAgICAgICAgICAgICAgICB9LmJpbmQodGhpcykpOworICAgICAgICAgICAg
ICAgIH0uYmluZCh0aGlzKSk7CisgICAgICAgICAgICAgICAgdGhpcy5tZW1iZXJzW3Joc10ubWVt
YmVycy5mb3JFYWNoKGZ1bmN0aW9uKG1lbWJlcikgeworICAgICAgICAgICAgICAgICAgICBhc3Nl
cnRfdHJ1ZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWVtYmVyc1tsaHNdLm1lbWJl
cnMuZXZlcnkobSA9PiAhdGhpcy5hcmVfZHVwbGljYXRlX21lbWJlcnMobSwgbWVtYmVyKSksCisg
ICAgICAgICAgICAgICAgICAgICAgICAibWVtYmVyICIgKyBtZW1iZXIubmFtZSArICIgaXMgdW5p
cXVlIik7CisgICAgICAgICAgICAgICAgICAgIHRoaXMubWVtYmVyc1tsaHNdLm1lbWJlcnMucHVz
aChuZXcgSWRsSW50ZXJmYWNlTWVtYmVyKG1lbWJlcikpOworICAgICAgICAgICAgICAgIH0uYmlu
ZCh0aGlzKSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0X3RydWUoIWNsYXNoLCAibWVtYmVyICIg
KyAoY2xhc2ggJiYgY2xhc2gubmFtZSkgKyAiIGlzIHVuaXF1ZSIpOworICAgICAgICAgICAgfS5i
aW5kKHRoaXMpLCBsaHMgKyAiIGluY2x1ZGVzICIgKyByaHMgKyAiOiBtZW1iZXIgbmFtZXMgYXJl
IHVuaXF1ZSIpOworICAgICAgICB9CisgICAgfQorICAgIHRoaXMuaW5jbHVkZXMgPSBbXTsKK30K
KworSWRsQXJyYXkucHJvdG90eXBlLmFyZV9kdXBsaWNhdGVfbWVtYmVycyA9IGZ1bmN0aW9uKG0x
LCBtMikgeworICAgIGlmIChtMS5uYW1lICE9PSBtMi5uYW1lKSB7CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisgICAgaWYgKG0xLnR5cGUgPT09ICdvcGVyYXRpb24nICYmIG0yLnR5cGUg
PT09ICdvcGVyYXRpb24nCisgICAgICAgICYmIG0xLmFyZ3VtZW50cy5sZW5ndGggIT09IG0yLmFy
Z3VtZW50cy5sZW5ndGgpIHsKKyAgICAgICAgLy8gTWV0aG9kIG92ZXJsb2FkLiBUT0RPOiBEZWVw
IGNvbXBhcmlzb24gb2YgYXJndW1lbnRzLgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
ICAgIHJldHVybiB0cnVlOworfQorCiBJZGxBcnJheS5wcm90b3R5cGUuYXNzZXJ0X3R5cGVfaXMg
PSBmdW5jdGlvbih2YWx1ZSwgdHlwZSkKLS8vQHsKIHsKKyAgICBpZiAodHlwZS5pZGxUeXBlIGlu
IHRoaXMubWVtYmVycworICAgICYmIHRoaXMubWVtYmVyc1t0eXBlLmlkbFR5cGVdIGluc3RhbmNl
b2YgSWRsVHlwZWRlZikgeworICAgICAgICB0aGlzLmFzc2VydF90eXBlX2lzKHZhbHVlLCB0aGlz
Lm1lbWJlcnNbdHlwZS5pZGxUeXBlXS5pZGxUeXBlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGlmICh0eXBlLm51bGxhYmxlICYmIHZhbHVlID09PSBudWxsKQorICAgIHsKKyAgICAg
ICAgLy8gVGhpcyBpcyBmaW5lCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAodHlw
ZS51bmlvbikgeworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHR5cGUuaWRsVHlwZS5sZW5n
dGg7IGkrKykgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICB0aGlzLmFzc2Vy
dF90eXBlX2lzKHZhbHVlLCB0eXBlLmlkbFR5cGVbaV0pOworICAgICAgICAgICAgICAgIC8vIE5v
IEFzc2VydGlvbkVycm9yLCBzbyB3ZSBtYXRjaCBvbmUgdHlwZSBpbiB0aGUgdW5pb24KKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoZSBpbnN0YW5jZW9mIEFzc2VydGlvbkVycm9yKSB7CisgICAgICAgICAgICAgICAg
ICAgIC8vIFdlIGRpZG4ndCBtYXRjaCB0aGlzIHR5cGUsIGxldCdzIHRyeSBzb21lIG90aGVycwor
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgdGhyb3cgZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAvLyBU
T0RPOiBJcyB0aGVyZSBhIG5pY2Ugd2F5IHRvIGxpc3QgdGhlIHVuaW9uJ3MgdHlwZXMgaW4gdGhl
IG1lc3NhZ2U/CisgICAgICAgIGFzc2VydF90cnVlKGZhbHNlLCAiQXR0cmlidXRlIGhhcyB2YWx1
ZSAiICsgZm9ybWF0X3ZhbHVlKHZhbHVlKQorICAgICAgICAgICAgICAgICAgICArICIgd2hpY2gg
ZG9lc24ndCBtYXRjaCBhbnkgb2YgdGhlIHR5cGVzIGluIHRoZSB1bmlvbiIpOworCisgICAgfQor
CiAgICAgLyoqCiAgICAgICogSGVscGVyIGZ1bmN0aW9uIHRoYXQgdGVzdHMgdGhhdCB2YWx1ZSBp
cyBhbiBpbnN0YW5jZSBvZiB0eXBlIGFjY29yZGluZwogICAgICAqIHRvIHRoZSBydWxlcyBvZiBX
ZWJJREwuICB2YWx1ZSBpcyBhbnkgSmF2YVNjcmlwdCB2YWx1ZSwgYW5kIHR5cGUgaXMgYW4KQEAg
LTQzOCw0MyArOTM0LDQ5IEBAIElkbEFycmF5LnByb3RvdHlwZS5hc3NlcnRfdHlwZV9pcyA9IGZ1
bmN0aW9uKHZhbHVlLCB0eXBlKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKHR5
cGUubnVsbGFibGUgJiYgdmFsdWUgPT09IG51bGwpCi0gICAgewotICAgICAgICAvLyBUaGlzIGlz
IGZpbmUKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIGlmICh0eXBlLmFycmF5KQogICAg
IHsKICAgICAgICAgLy8gVE9ETzogbm90IHN1cHBvcnRlZCB5ZXQKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIGlmICh0eXBlLnNlcXVlbmNlKQorICAgIGlmICh0eXBlLmdlbmVyaWMgPT09
ICJzZXF1ZW5jZSIpCiAgICAgewotICAgICAgICBhc3NlcnRfdHJ1ZShBcnJheS5pc0FycmF5KHZh
bHVlKSwgImlzIG5vdCBhcnJheSIpOworICAgICAgICBhc3NlcnRfdHJ1ZShBcnJheS5pc0FycmF5
KHZhbHVlKSwgInNob3VsZCBiZSBhbiBBcnJheSIpOwogICAgICAgICBpZiAoIXZhbHVlLmxlbmd0
aCkKICAgICAgICAgewogICAgICAgICAgICAgLy8gTm90aGluZyB3ZSBjYW4gZG8uCiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgdGhpcy5hc3NlcnRfdHlwZV9pcyh2YWx1
ZVswXSwgdHlwZS5pZGxUeXBlLmlkbFR5cGUpOworICAgICAgICB0aGlzLmFzc2VydF90eXBlX2lz
KHZhbHVlWzBdLCB0eXBlLmlkbFR5cGVbMF0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAg
ICAgaWYgKHR5cGUuZ2VuZXJpYyA9PT0gIlByb21pc2UiKSB7Ci0gICAgICAgIGFzc2VydF90cnVl
KCJ0aGVuIiBpbiB2YWx1ZSwgIkF0dHJpYnV0ZSB3aXRoIGEgUHJvbWlzZSB0eXBlIGhhcyBhIHRo
ZW4gcHJvcGVydHkiKTsKKyAgICAgICAgYXNzZXJ0X3RydWUoInRoZW4iIGluIHZhbHVlLCAiQXR0
cmlidXRlIHdpdGggYSBQcm9taXNlIHR5cGUgc2hvdWxkIGhhdmUgYSB0aGVuIHByb3BlcnR5Iik7
CiAgICAgICAgIC8vIFRPRE86IElkZWFsbHksIHdlIHdvdWxkIGNoZWNrIG9uIHByb2plY3QgZnVs
ZmlsbG1lbnQKICAgICAgICAgLy8gdGhhdCB3ZSBnZXQgdGhlIHJpZ2h0IHR5cGUKICAgICAgICAg
Ly8gYnV0IHRoYXQgd291bGQgcmVxdWlyZSBtYWtpbmcgdGhlIHR5cGUgY2hlY2sgYXN5bmMKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHR5cGUgPSB0eXBlLmlkbFR5cGU7CisgICAgaWYg
KHR5cGUuZ2VuZXJpYyA9PT0gIkZyb3plbkFycmF5IikgeworICAgICAgICBhc3NlcnRfdHJ1ZShB
cnJheS5pc0FycmF5KHZhbHVlKSwgIlZhbHVlIHNob3VsZCBiZSBhcnJheSIpOworICAgICAgICBh
c3NlcnRfdHJ1ZShPYmplY3QuaXNGcm96ZW4odmFsdWUpLCAiVmFsdWUgc2hvdWxkIGJlIGZyb3pl
biIpOworICAgICAgICBpZiAoIXZhbHVlLmxlbmd0aCkKKyAgICAgICAgeworICAgICAgICAgICAg
Ly8gTm90aGluZyB3ZSBjYW4gZG8uCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICAgICAgdGhpcy5hc3NlcnRfdHlwZV9pcyh2YWx1ZVswXSwgdHlwZS5pZGxUeXBlWzBdKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHR5cGUgPSBBcnJheS5pc0FycmF5KHR5cGUuaWRs
VHlwZSkgPyB0eXBlLmlkbFR5cGVbMF0gOiB0eXBlLmlkbFR5cGU7CiAKICAgICBzd2l0Y2godHlw
ZSkKICAgICB7Ci0gICAgICAgIGNhc2UgInZvaWQiOgorICAgICAgICBjYXNlICJ1bmRlZmluZWQi
OgogICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh2YWx1ZSwgdW5kZWZpbmVkKTsKICAgICAgICAg
ICAgIHJldHVybjsKIApAQCAtNDg0LDM4ICs5ODYsMzggQEAgSWRsQXJyYXkucHJvdG90eXBlLmFz
c2VydF90eXBlX2lzID0gZnVuY3Rpb24odmFsdWUsIHR5cGUpCiAKICAgICAgICAgY2FzZSAiYnl0
ZSI6CiAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiB2YWx1ZSwgIm51bWJlciIpOwot
ICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh2YWx1ZSwgTWF0aC5mbG9vcih2YWx1ZSksICJub3Qg
YW4gaW50ZWdlciIpOwotICAgICAgICAgICAgYXNzZXJ0X3RydWUoLTEyOCA8PSB2YWx1ZSAmJiB2
YWx1ZSA8PSAxMjcsICJieXRlICIgKyB2YWx1ZSArICIgbm90IGluIHJhbmdlIFstMTI4LCAxMjdd
Iik7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHZhbHVlLCBNYXRoLmZsb29yKHZhbHVlKSwg
InNob3VsZCBiZSBhbiBpbnRlZ2VyIik7CisgICAgICAgICAgICBhc3NlcnRfdHJ1ZSgtMTI4IDw9
IHZhbHVlICYmIHZhbHVlIDw9IDEyNywgImJ5dGUgIiArIHZhbHVlICsgIiBzaG91bGQgYmUgaW4g
cmFuZ2UgWy0xMjgsIDEyN10iKTsKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBjYXNl
ICJvY3RldCI6CiAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiB2YWx1ZSwgIm51bWJl
ciIpOwotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh2YWx1ZSwgTWF0aC5mbG9vcih2YWx1ZSks
ICJub3QgYW4gaW50ZWdlciIpOwotICAgICAgICAgICAgYXNzZXJ0X3RydWUoMCA8PSB2YWx1ZSAm
JiB2YWx1ZSA8PSAyNTUsICJvY3RldCAiICsgdmFsdWUgKyAiIG5vdCBpbiByYW5nZSBbMCwgMjU1
XSIpOworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh2YWx1ZSwgTWF0aC5mbG9vcih2YWx1ZSks
ICJzaG91bGQgYmUgYW4gaW50ZWdlciIpOworICAgICAgICAgICAgYXNzZXJ0X3RydWUoMCA8PSB2
YWx1ZSAmJiB2YWx1ZSA8PSAyNTUsICJvY3RldCAiICsgdmFsdWUgKyAiIHNob3VsZCBiZSBpbiBy
YW5nZSBbMCwgMjU1XSIpOwogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGNhc2UgInNo
b3J0IjoKICAgICAgICAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIHZhbHVlLCAibnVtYmVyIik7
Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHZhbHVlLCBNYXRoLmZsb29yKHZhbHVlKSwgIm5v
dCBhbiBpbnRlZ2VyIik7Ci0gICAgICAgICAgICBhc3NlcnRfdHJ1ZSgtMzI3NjggPD0gdmFsdWUg
JiYgdmFsdWUgPD0gMzI3NjcsICJzaG9ydCAiICsgdmFsdWUgKyAiIG5vdCBpbiByYW5nZSBbLTMy
NzY4LCAzMjc2N10iKTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHModmFsdWUsIE1hdGguZmxv
b3IodmFsdWUpLCAic2hvdWxkIGJlIGFuIGludGVnZXIiKTsKKyAgICAgICAgICAgIGFzc2VydF90
cnVlKC0zMjc2OCA8PSB2YWx1ZSAmJiB2YWx1ZSA8PSAzMjc2NywgInNob3J0ICIgKyB2YWx1ZSAr
ICIgc2hvdWxkIGJlIGluIHJhbmdlIFstMzI3NjgsIDMyNzY3XSIpOwogICAgICAgICAgICAgcmV0
dXJuOwogCiAgICAgICAgIGNhc2UgInVuc2lnbmVkIHNob3J0IjoKICAgICAgICAgICAgIGFzc2Vy
dF9lcXVhbHModHlwZW9mIHZhbHVlLCAibnVtYmVyIik7Ci0gICAgICAgICAgICBhc3NlcnRfZXF1
YWxzKHZhbHVlLCBNYXRoLmZsb29yKHZhbHVlKSwgIm5vdCBhbiBpbnRlZ2VyIik7Ci0gICAgICAg
ICAgICBhc3NlcnRfdHJ1ZSgwIDw9IHZhbHVlICYmIHZhbHVlIDw9IDY1NTM1LCAidW5zaWduZWQg
c2hvcnQgIiArIHZhbHVlICsgIiBub3QgaW4gcmFuZ2UgWzAsIDY1NTM1XSIpOworICAgICAgICAg
ICAgYXNzZXJ0X2VxdWFscyh2YWx1ZSwgTWF0aC5mbG9vcih2YWx1ZSksICJzaG91bGQgYmUgYW4g
aW50ZWdlciIpOworICAgICAgICAgICAgYXNzZXJ0X3RydWUoMCA8PSB2YWx1ZSAmJiB2YWx1ZSA8
PSA2NTUzNSwgInVuc2lnbmVkIHNob3J0ICIgKyB2YWx1ZSArICIgc2hvdWxkIGJlIGluIHJhbmdl
IFswLCA2NTUzNV0iKTsKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBjYXNlICJsb25n
IjoKICAgICAgICAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIHZhbHVlLCAibnVtYmVyIik7Ci0g
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHZhbHVlLCBNYXRoLmZsb29yKHZhbHVlKSwgIm5vdCBh
biBpbnRlZ2VyIik7Ci0gICAgICAgICAgICBhc3NlcnRfdHJ1ZSgtMjE0NzQ4MzY0OCA8PSB2YWx1
ZSAmJiB2YWx1ZSA8PSAyMTQ3NDgzNjQ3LCAibG9uZyAiICsgdmFsdWUgKyAiIG5vdCBpbiByYW5n
ZSBbLTIxNDc0ODM2NDgsIDIxNDc0ODM2NDddIik7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxz
KHZhbHVlLCBNYXRoLmZsb29yKHZhbHVlKSwgInNob3VsZCBiZSBhbiBpbnRlZ2VyIik7CisgICAg
ICAgICAgICBhc3NlcnRfdHJ1ZSgtMjE0NzQ4MzY0OCA8PSB2YWx1ZSAmJiB2YWx1ZSA8PSAyMTQ3
NDgzNjQ3LCAibG9uZyAiICsgdmFsdWUgKyAiIHNob3VsZCBiZSBpbiByYW5nZSBbLTIxNDc0ODM2
NDgsIDIxNDc0ODM2NDddIik7CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgY2FzZSAi
dW5zaWduZWQgbG9uZyI6CiAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiB2YWx1ZSwg
Im51bWJlciIpOwotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh2YWx1ZSwgTWF0aC5mbG9vcih2
YWx1ZSksICJub3QgYW4gaW50ZWdlciIpOwotICAgICAgICAgICAgYXNzZXJ0X3RydWUoMCA8PSB2
YWx1ZSAmJiB2YWx1ZSA8PSA0Mjk0OTY3Mjk1LCAidW5zaWduZWQgbG9uZyAiICsgdmFsdWUgKyAi
IG5vdCBpbiByYW5nZSBbMCwgNDI5NDk2NzI5NV0iKTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVh
bHModmFsdWUsIE1hdGguZmxvb3IodmFsdWUpLCAic2hvdWxkIGJlIGFuIGludGVnZXIiKTsKKyAg
ICAgICAgICAgIGFzc2VydF90cnVlKDAgPD0gdmFsdWUgJiYgdmFsdWUgPD0gNDI5NDk2NzI5NSwg
InVuc2lnbmVkIGxvbmcgIiArIHZhbHVlICsgIiBzaG91bGQgYmUgaW4gcmFuZ2UgWzAsIDQyOTQ5
NjcyOTVdIik7CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgY2FzZSAibG9uZyBsb25n
IjoKQEAgLTUyNSwxMiArMTAyNywxMiBAQCBJZGxBcnJheS5wcm90b3R5cGUuYXNzZXJ0X3R5cGVf
aXMgPSBmdW5jdGlvbih2YWx1ZSwgdHlwZSkKICAgICAgICAgY2FzZSAidW5zaWduZWQgbG9uZyBs
b25nIjoKICAgICAgICAgY2FzZSAiRE9NVGltZVN0YW1wIjoKICAgICAgICAgICAgIGFzc2VydF9l
cXVhbHModHlwZW9mIHZhbHVlLCAibnVtYmVyIik7Ci0gICAgICAgICAgICBhc3NlcnRfdHJ1ZSgw
IDw9IHZhbHVlLCAidW5zaWduZWQgbG9uZyBsb25nIGlzIG5lZ2F0aXZlIik7CisgICAgICAgICAg
ICBhc3NlcnRfdHJ1ZSgwIDw9IHZhbHVlLCAidW5zaWduZWQgbG9uZyBsb25nIHNob3VsZCBiZSBw
b3NpdGl2ZSIpOwogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGNhc2UgImZsb2F0IjoK
ICAgICAgICAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIHZhbHVlLCAibnVtYmVyIik7Ci0gICAg
ICAgICAgICBhc3NlcnRfZXF1YWxzKHZhbHVlLCBmcm91bmQodmFsdWUpLCAiZmxvYXQgcm91bmRl
ZCB0byAzMi1iaXQgZmxvYXQgc2hvdWxkIGJlIGl0c2VsZiIpOworICAgICAgICAgICAgYXNzZXJ0
X2VxdWFscyh2YWx1ZSwgTWF0aC5mcm91bmQodmFsdWUpLCAiZmxvYXQgcm91bmRlZCB0byAzMi1i
aXQgZmxvYXQgc2hvdWxkIGJlIGl0c2VsZiIpOwogICAgICAgICAgICAgYXNzZXJ0X25vdF9lcXVh
bHModmFsdWUsIEluZmluaXR5KTsKICAgICAgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKHZhbHVl
LCAtSW5maW5pdHkpOwogICAgICAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHModmFsdWUsIE5hTik7
CkBAIC01NDYsNyArMTA0OCw3IEBAIElkbEFycmF5LnByb3RvdHlwZS5hc3NlcnRfdHlwZV9pcyA9
IGZ1bmN0aW9uKHZhbHVlLCB0eXBlKQogCiAgICAgICAgIGNhc2UgInVucmVzdHJpY3RlZCBmbG9h
dCI6CiAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiB2YWx1ZSwgIm51bWJlciIpOwot
ICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh2YWx1ZSwgZnJvdW5kKHZhbHVlKSwgInVucmVzdHJp
Y3RlZCBmbG9hdCByb3VuZGVkIHRvIDMyLWJpdCBmbG9hdCBzaG91bGQgYmUgaXRzZWxmIik7Cisg
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHZhbHVlLCBNYXRoLmZyb3VuZCh2YWx1ZSksICJ1bnJl
c3RyaWN0ZWQgZmxvYXQgcm91bmRlZCB0byAzMi1iaXQgZmxvYXQgc2hvdWxkIGJlIGl0c2VsZiIp
OwogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGNhc2UgInVucmVzdHJpY3RlZCBkb3Vi
bGUiOgpAQCAtNTY3LDE0ICsxMDY5LDI2IEBAIElkbEFycmF5LnByb3RvdHlwZS5hc3NlcnRfdHlw
ZV9pcyA9IGZ1bmN0aW9uKHZhbHVlLCB0eXBlKQogICAgICAgICAgICAgYXNzZXJ0X3JlZ2V4cF9t
YXRjaCh2YWx1ZSwgL14oW1x4MDAtXHVkN2ZmXHVlMDAwLVx1ZmZmZl18W1x1ZDgwMC1cdWRiZmZd
W1x1ZGMwMC1cdWRmZmZdKSokLyk7CiAgICAgICAgICAgICByZXR1cm47CiAKKyAgICAgICAgY2Fz
ZSAiQXJyYXlCdWZmZXJWaWV3IjoKKyAgICAgICAgICAgIGFzc2VydF90cnVlKEFycmF5QnVmZmVy
LmlzVmlldyh2YWx1ZSkpOworICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAgIGNhc2UgIm9i
amVjdCI6Ci0gICAgICAgICAgICBhc3NlcnRfdHJ1ZSh0eXBlb2YgdmFsdWUgPT0gIm9iamVjdCIg
fHwgdHlwZW9mIHZhbHVlID09ICJmdW5jdGlvbiIsICJ3cm9uZyB0eXBlOiBub3Qgb2JqZWN0IG9y
IGZ1bmN0aW9uIik7CisgICAgICAgICAgICBhc3NlcnRfaW5fYXJyYXkodHlwZW9mIHZhbHVlLCBb
Im9iamVjdCIsICJmdW5jdGlvbiJdLCAid3JvbmcgdHlwZTogbm90IG9iamVjdCBvciBmdW5jdGlv
biIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIC8vIFRoaXMgaXMgYSBjYXRj
aC1hbGwgZm9yIGFueSBJREwgdHlwZSBuYW1lIHdoaWNoIGZvbGxvd3MgSlMgY2xhc3MKKyAgICAv
LyBzZW1hbnRpY3MuIFRoaXMgaW5jbHVkZXMgc29tZSBub24taW50ZXJmYWNlIElETCB0eXBlcyAo
ZS5nLiBJbnQ4QXJyYXksCisgICAgLy8gRnVuY3Rpb24sIC4uLiksIGFzIHdlbGwgYXMgYW55IGlu
dGVyZmFjZSB0eXBlcyB0aGF0IGFyZSBub3QgaW4gdGhlIElETAorICAgIC8vIHRoYXQgaXMgZmVk
IHRvIHRoZSBoYXJuZXNzLiBJZiBhbiBJREwgdHlwZSBkb2VzIG5vdCBmb2xsb3cgSlMgY2xhc3MK
KyAgICAvLyBzZW1hbnRpY3MgdGhlbiBpdCBzaG91bGQgZ28gaW4gdGhlIHN3aXRjaCBzdGF0ZW1l
bnQgYWJvdmUuIElmIGFuIElETAorICAgIC8vIHR5cGUgbmVlZHMgZnVsbCBjaGVja2luZywgdGhl
biB0aGUgdGVzdCBzaG91bGQgaW5jbHVkZSBpdCBpbiB0aGUgSURMIGl0CisgICAgLy8gZmVlZHMg
dG8gdGhlIGhhcm5lc3MuCiAgICAgaWYgKCEodHlwZSBpbiB0aGlzLm1lbWJlcnMpKQogICAgIHsK
LSAgICAgICAgdGhyb3cgIlVucmVjb2duaXplZCB0eXBlICIgKyB0eXBlOworICAgICAgICBhc3Nl
cnRfdHJ1ZSh2YWx1ZSBpbnN0YW5jZW9mIHNlbGZbdHlwZV0sICJ3cm9uZyB0eXBlOiBub3QgYSAi
ICsgdHlwZSk7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAodGhpcy5tZW1iZXJz
W3R5cGVdIGluc3RhbmNlb2YgSWRsSW50ZXJmYWNlKQpAQCAtNTgyLDE0ICsxMDk2LDE0IEBAIElk
bEFycmF5LnByb3RvdHlwZS5hc3NlcnRfdHlwZV9pcyA9IGZ1bmN0aW9uKHZhbHVlLCB0eXBlKQog
ICAgICAgICAvLyBXZSBkb24ndCB3YW50IHRvIHJ1biB0aGUgZnVsbAogICAgICAgICAvLyBJZGxJ
bnRlcmZhY2UucHJvdG90eXBlLnRlc3RfaW5zdGFuY2Vfb2YsIGJlY2F1c2UgdGhhdCBjb3VsZCBy
ZXN1bHQKICAgICAgICAgLy8gaW4gYW4gaW5maW5pdGUgbG9vcC4gIFRPRE86IFRoaXMgbWVhbnMg
d2UgZG9uJ3QgaGF2ZSB0ZXN0cyBmb3IKLSAgICAgICAgLy8gTm9JbnRlcmZhY2VPYmplY3QgaW50
ZXJmYWNlcywgYW5kIHdlIGFsc28gY2FuJ3QgdGVzdCBvYmplY3RzIHRoYXQKLSAgICAgICAgLy8g
Y29tZSBmcm9tIGFub3RoZXIgc2VsZi4KLSAgICAgICAgYXNzZXJ0X3RydWUodHlwZW9mIHZhbHVl
ID09ICJvYmplY3QiIHx8IHR5cGVvZiB2YWx1ZSA9PSAiZnVuY3Rpb24iLCAid3JvbmcgdHlwZTog
bm90IG9iamVjdCBvciBmdW5jdGlvbiIpOworICAgICAgICAvLyBMZWdhY3lOb0ludGVyZmFjZU9i
amVjdCBpbnRlcmZhY2VzLCBhbmQgd2UgYWxzbyBjYW4ndCB0ZXN0IG9iamVjdHMKKyAgICAgICAg
Ly8gdGhhdCBjb21lIGZyb20gYW5vdGhlciBzZWxmLgorICAgICAgICBhc3NlcnRfaW5fYXJyYXko
dHlwZW9mIHZhbHVlLCBbIm9iamVjdCIsICJmdW5jdGlvbiJdLCAid3JvbmcgdHlwZTogbm90IG9i
amVjdCBvciBmdW5jdGlvbiIpOwogICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBPYmplY3QK
LSAgICAgICAgJiYgIXRoaXMubWVtYmVyc1t0eXBlXS5oYXNfZXh0ZW5kZWRfYXR0cmlidXRlKCJO
b0ludGVyZmFjZU9iamVjdCIpCisgICAgICAgICYmICF0aGlzLm1lbWJlcnNbdHlwZV0uaGFzX2V4
dGVuZGVkX2F0dHJpYnV0ZSgiTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QiKQogICAgICAgICAmJiB0
eXBlIGluIHNlbGYpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGFzc2VydF90cnVlKHZhbHVlIGlu
c3RhbmNlb2Ygc2VsZlt0eXBlXSwgIm5vdCBpbnN0YW5jZW9mICIgKyB0eXBlKTsKKyAgICAgICAg
ICAgIGFzc2VydF90cnVlKHZhbHVlIGluc3RhbmNlb2Ygc2VsZlt0eXBlXSwgImluc3RhbmNlb2Yg
IiArIHR5cGUpOwogICAgICAgICB9CiAgICAgfQogICAgIGVsc2UgaWYgKHRoaXMubWVtYmVyc1t0
eXBlXSBpbnN0YW5jZW9mIElkbEVudW0pCkBAIC02MDAsMjEgKzExMTQsMTkgQEAgSWRsQXJyYXku
cHJvdG90eXBlLmFzc2VydF90eXBlX2lzID0gZnVuY3Rpb24odmFsdWUsIHR5cGUpCiAgICAgewog
ICAgICAgICAvLyBUT0RPOiBUZXN0IHdoZW4gd2UgYWN0dWFsbHkgaGF2ZSBzb21ldGhpbmcgdG8g
dGVzdCB0aGlzIG9uCiAgICAgfQotICAgIGVsc2UgaWYgKHRoaXMubWVtYmVyc1t0eXBlXSBpbnN0
YW5jZW9mIElkbFR5cGVkZWYpCisgICAgZWxzZSBpZiAodGhpcy5tZW1iZXJzW3R5cGVdIGluc3Rh
bmNlb2YgSWRsQ2FsbGJhY2spCiAgICAgewotICAgICAgICAvLyBUT0RPOiBUZXN0IHdoZW4gd2Ug
YWN0dWFsbHkgaGF2ZSBzb21ldGhpbmcgdG8gdGVzdCB0aGlzIG9uCisgICAgICAgIGFzc2VydF9l
cXVhbHModHlwZW9mIHZhbHVlLCAiZnVuY3Rpb24iKTsKICAgICB9CiAgICAgZWxzZQogICAgIHsK
LSAgICAgICAgdGhyb3cgIlR5cGUgIiArIHR5cGUgKyAiIGlzbid0IGFuIGludGVyZmFjZSBvciBk
aWN0aW9uYXJ5IjsKKyAgICAgICAgdGhyb3cgbmV3IElkbEhhcm5lc3NFcnJvcigiVHlwZSAiICsg
dHlwZSArICIgaXNuJ3QgYW4gaW50ZXJmYWNlLCBjYWxsYmFjayBvciBkaWN0aW9uYXJ5Iik7CiAg
ICAgfQogfTsKLS8vQH0KIAogLy8vIElkbE9iamVjdCAvLy8KIGZ1bmN0aW9uIElkbE9iamVjdCgp
IHt9CiBJZGxPYmplY3QucHJvdG90eXBlLnRlc3QgPSBmdW5jdGlvbigpCi0vL0B7CiB7CiAgICAg
LyoqCiAgICAgICogQnkgZGVmYXVsdCwgdGhpcyBkb2VzIG5vdGhpbmcsIHNvIG5vIGFjdHVhbCB0
ZXN0cyBhcmUgcnVuIGZvciBJZGxPYmplY3RzCkBAIC02MjIsOSArMTEzNCw3IEBAIElkbE9iamVj
dC5wcm90b3R5cGUudGVzdCA9IGZ1bmN0aW9uKCkKICAgICAgKi8KIH07CiAKLS8vQH0KIElkbE9i
amVjdC5wcm90b3R5cGUuaGFzX2V4dGVuZGVkX2F0dHJpYnV0ZSA9IGZ1bmN0aW9uKG5hbWUpCi0v
L0B7CiB7CiAgICAgLyoqCiAgICAgICogVGhpcyBpcyBvbmx5IG1lYW5pbmdmdWwgZm9yIHRoaW5n
cyB0aGF0IHN1cHBvcnQgZXh0ZW5kZWQgYXR0cmlidXRlcywKQEAgLTYzNiwxMiArMTE0NiwxMCBA
QCBJZGxPYmplY3QucHJvdG90eXBlLmhhc19leHRlbmRlZF9hdHRyaWJ1dGUgPSBmdW5jdGlvbihu
YW1lKQogICAgIH0pOwogfTsKIAotLy9AfQogCiAvLy8gSWRsRGljdGlvbmFyeSAvLy8KIC8vIFVz
ZWQgZm9yIElkbEFycmF5LnByb3RvdHlwZS5hc3NlcnRfdHlwZV9pcwogZnVuY3Rpb24gSWRsRGlj
dGlvbmFyeShvYmopCi0vL0B7CiB7CiAgICAgLyoqCiAgICAgICogb2JqIGlzIGFuIG9iamVjdCBw
cm9kdWNlZCBieSB0aGUgV2ViSURMUGFyc2VyLmpzICJkaWN0aW9uYXJ5IgpAQCAtNjUxLDYgKzEx
NTksOSBAQCBmdW5jdGlvbiBJZGxEaWN0aW9uYXJ5KG9iaikKICAgICAvKiogU2VsZi1leHBsYW5h
dG9yeS4gKi8KICAgICB0aGlzLm5hbWUgPSBvYmoubmFtZTsKIAorICAgIC8qKiBBIGJhY2stcmVm
ZXJlbmNlIHRvIG91ciBJZGxBcnJheS4gKi8KKyAgICB0aGlzLmFycmF5ID0gb2JqLmFycmF5Owor
CiAgICAgLyoqIEFuIGFycmF5IG9mIG9iamVjdHMgcHJvZHVjZWQgYnkgdGhlICJkaWN0aW9uYXJ5
TWVtYmVyIiBwcm9kdWN0aW9uLiAqLwogICAgIHRoaXMubWVtYmVycyA9IG9iai5tZW1iZXJzOwog
CkBAIC02NjEsMTIgKzExNzIsMTQgQEAgZnVuY3Rpb24gSWRsRGljdGlvbmFyeShvYmopCiAgICAg
dGhpcy5iYXNlID0gb2JqLmluaGVyaXRhbmNlOwogfQogCi0vL0B9CiBJZGxEaWN0aW9uYXJ5LnBy
b3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoSWRsT2JqZWN0LnByb3RvdHlwZSk7CiAKK0lkbERpY3Rp
b25hcnkucHJvdG90eXBlLmdldF9yZXZlcnNlX2luaGVyaXRhbmNlX3N0YWNrID0gZnVuY3Rpb24o
KSB7CisgICAgcmV0dXJuIElkbEludGVyZmFjZS5wcm90b3R5cGUuZ2V0X3JldmVyc2VfaW5oZXJp
dGFuY2Vfc3RhY2suY2FsbCh0aGlzKTsKK307CisKIC8vLyBJZGxJbnRlcmZhY2UgLy8vCi1mdW5j
dGlvbiBJZGxJbnRlcmZhY2Uob2JqLCBpc19jYWxsYmFjaykKLS8vQHsKK2Z1bmN0aW9uIElkbElu
dGVyZmFjZShvYmosIGlzX2NhbGxiYWNrLCBpc19taXhpbikKIHsKICAgICAvKioKICAgICAgKiBv
YmogaXMgYW4gb2JqZWN0IHByb2R1Y2VkIGJ5IHRoZSBXZWJJRExQYXJzZXIuanMgImludGVyZmFj
ZSIgcHJvZHVjdGlvbi4KQEAgLTY5MCw5ICsxMjAzLDkgQEAgZnVuY3Rpb24gSWRsSW50ZXJmYWNl
KG9iaiwgaXNfY2FsbGJhY2spCiAKICAgICAvKiogQW4gYXJyYXkgb2YgSWRsSW50ZXJmYWNlTWVt
YmVycy4gKi8KICAgICB0aGlzLm1lbWJlcnMgPSBvYmoubWVtYmVycy5tYXAoZnVuY3Rpb24obSl7
cmV0dXJuIG5ldyBJZGxJbnRlcmZhY2VNZW1iZXIobSk7IH0pOwotICAgIGlmICh0aGlzLmhhc19l
eHRlbmRlZF9hdHRyaWJ1dGUoIlVuZm9yZ2VhYmxlIikpIHsKKyAgICBpZiAodGhpcy5oYXNfZXh0
ZW5kZWRfYXR0cmlidXRlKCJMZWdhY3lVbmZvcmdlYWJsZSIpKSB7CiAgICAgICAgIHRoaXMubWVt
YmVycwotICAgICAgICAgICAgLmZpbHRlcihmdW5jdGlvbihtKSB7IHJldHVybiAhbVsic3RhdGlj
Il0gJiYgKG0udHlwZSA9PSAiYXR0cmlidXRlIiB8fCBtLnR5cGUgPT0gIm9wZXJhdGlvbiIpOyB9
KQorICAgICAgICAgICAgLmZpbHRlcihmdW5jdGlvbihtKSB7IHJldHVybiBtLnNwZWNpYWwgIT09
ICJzdGF0aWMiICYmIChtLnR5cGUgPT0gImF0dHJpYnV0ZSIgfHwgbS50eXBlID09ICJvcGVyYXRp
b24iKTsgfSkKICAgICAgICAgICAgIC5mb3JFYWNoKGZ1bmN0aW9uKG0pIHsgcmV0dXJuIG0uaXNV
bmZvcmdlYWJsZSA9IHRydWU7IH0pOwogICAgIH0KIApAQCAtNzAzLDM5ICsxMjE2LDE3NCBAQCBm
dW5jdGlvbiBJZGxJbnRlcmZhY2Uob2JqLCBpc19jYWxsYmFjaykKICAgICB0aGlzLmJhc2UgPSBv
YmouaW5oZXJpdGFuY2U7CiAKICAgICB0aGlzLl9pc19jYWxsYmFjayA9IGlzX2NhbGxiYWNrOwor
ICAgIHRoaXMuX2lzX21peGluID0gaXNfbWl4aW47CiB9Ci0vL0B9CiBJZGxJbnRlcmZhY2UucHJv
dG90eXBlID0gT2JqZWN0LmNyZWF0ZShJZGxPYmplY3QucHJvdG90eXBlKTsKIElkbEludGVyZmFj
ZS5wcm90b3R5cGUuaXNfY2FsbGJhY2sgPSBmdW5jdGlvbigpCi0vL0B7CiB7CiAgICAgcmV0dXJu
IHRoaXMuX2lzX2NhbGxiYWNrOwogfTsKLS8vQH0KKworSWRsSW50ZXJmYWNlLnByb3RvdHlwZS5p
c19taXhpbiA9IGZ1bmN0aW9uKCkKK3sKKyAgICByZXR1cm4gdGhpcy5faXNfbWl4aW47Cit9Owog
CiBJZGxJbnRlcmZhY2UucHJvdG90eXBlLmhhc19jb25zdGFudHMgPSBmdW5jdGlvbigpCi0vL0B7
CiB7CiAgICAgcmV0dXJuIHRoaXMubWVtYmVycy5zb21lKGZ1bmN0aW9uKG1lbWJlcikgewogICAg
ICAgICByZXR1cm4gbWVtYmVyLnR5cGUgPT09ICJjb25zdCI7CiAgICAgfSk7CiB9OwotLy9AfQor
CitJZGxJbnRlcmZhY2UucHJvdG90eXBlLmdldF91bnNjb3BhYmxlcyA9IGZ1bmN0aW9uKCkKK3sK
KyAgICByZXR1cm4gdGhpcy5tZW1iZXJzLmZpbHRlcihmdW5jdGlvbihtZW1iZXIpIHsKKyAgICAg
ICAgcmV0dXJuIG1lbWJlci5pc1Vuc2NvcGFibGU7CisgICAgfSk7Cit9OwogCiBJZGxJbnRlcmZh
Y2UucHJvdG90eXBlLmlzX2dsb2JhbCA9IGZ1bmN0aW9uKCkKLS8vQHsKIHsKICAgICByZXR1cm4g
dGhpcy5leHRBdHRycy5zb21lKGZ1bmN0aW9uKGF0dHJpYnV0ZSkgewotICAgICAgICByZXR1cm4g
YXR0cmlidXRlLm5hbWUgPT09ICJHbG9iYWwiIHx8Ci0gICAgICAgICAgICAgICBhdHRyaWJ1dGUu
bmFtZSA9PT0gIlByaW1hcnlHbG9iYWwiOworICAgICAgICByZXR1cm4gYXR0cmlidXRlLm5hbWUg
PT09ICJHbG9iYWwiOworICAgIH0pOworfTsKKworLyoqCisgKiBWYWx1ZSBvZiB0aGUgTGVnYWN5
TmFtZXNwYWNlIGV4dGVuZGVkIGF0dHJpYnV0ZSwgaWYgYW55LgorICoKKyAqIGh0dHBzOi8vaGV5
Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI0xlZ2FjeU5hbWVzcGFjZQorICovCitJZGxJbnRlcmZhY2Uu
cHJvdG90eXBlLmdldF9sZWdhY3lfbmFtZXNwYWNlID0gZnVuY3Rpb24oKQoreworICAgIHZhciBs
ZWdhY3lOYW1lc3BhY2UgPSB0aGlzLmV4dEF0dHJzLmZpbmQoZnVuY3Rpb24oYXR0cmlidXRlKSB7
CisgICAgICAgIHJldHVybiBhdHRyaWJ1dGUubmFtZSA9PT0gIkxlZ2FjeU5hbWVzcGFjZSI7Cisg
ICAgfSk7CisgICAgcmV0dXJuIGxlZ2FjeU5hbWVzcGFjZSA/IGxlZ2FjeU5hbWVzcGFjZS5yaHMu
dmFsdWUgOiB1bmRlZmluZWQ7Cit9OworCitJZGxJbnRlcmZhY2UucHJvdG90eXBlLmdldF9pbnRl
cmZhY2Vfb2JqZWN0X293bmVyID0gZnVuY3Rpb24oKQoreworICAgIHZhciBsZWdhY3lOYW1lc3Bh
Y2UgPSB0aGlzLmdldF9sZWdhY3lfbmFtZXNwYWNlKCk7CisgICAgcmV0dXJuIGxlZ2FjeU5hbWVz
cGFjZSA/IHNlbGZbbGVnYWN5TmFtZXNwYWNlXSA6IHNlbGY7Cit9OworCitJZGxJbnRlcmZhY2Uu
cHJvdG90eXBlLnNob3VsZF9oYXZlX2ludGVyZmFjZV9vYmplY3QgPSBmdW5jdGlvbigpCit7Cisg
ICAgLy8gIkZvciBldmVyeSBpbnRlcmZhY2UgdGhhdCBpcyBleHBvc2VkIGluIGEgZ2l2ZW4gRUNN
QVNjcmlwdCBnbG9iYWwKKyAgICAvLyBlbnZpcm9ubWVudCBhbmQ6CisgICAgLy8gKiBpcyBhIGNh
bGxiYWNrIGludGVyZmFjZSB0aGF0IGhhcyBjb25zdGFudHMgZGVjbGFyZWQgb24gaXQsIG9yCisg
ICAgLy8gKiBpcyBhIG5vbi1jYWxsYmFjayBpbnRlcmZhY2UgdGhhdCBpcyBub3QgZGVjbGFyZWQg
d2l0aCB0aGUKKyAgICAvLyAgIFtMZWdhY3lOb0ludGVyZmFjZU9iamVjdF0gZXh0ZW5kZWQgYXR0
cmlidXRlLAorICAgIC8vIGEgY29ycmVzcG9uZGluZyBwcm9wZXJ0eSBNVVNUIGV4aXN0IG9uIHRo
ZSBFQ01BU2NyaXB0IGdsb2JhbCBvYmplY3QuCisKKyAgICByZXR1cm4gdGhpcy5pc19jYWxsYmFj
aygpID8gdGhpcy5oYXNfY29uc3RhbnRzKCkgOiAhdGhpcy5oYXNfZXh0ZW5kZWRfYXR0cmlidXRl
KCJMZWdhY3lOb0ludGVyZmFjZU9iamVjdCIpOworfTsKKworSWRsSW50ZXJmYWNlLnByb3RvdHlw
ZS5hc3NlcnRfaW50ZXJmYWNlX29iamVjdF9leGlzdHMgPSBmdW5jdGlvbigpCit7CisgICAgdmFy
IG93bmVyID0gdGhpcy5nZXRfbGVnYWN5X25hbWVzcGFjZSgpIHx8ICJzZWxmIjsKKyAgICBhc3Nl
cnRfb3duX3Byb3BlcnR5KHNlbGZbb3duZXJdLCB0aGlzLm5hbWUsIG93bmVyICsgIiBkb2VzIG5v
dCBoYXZlIG93biBwcm9wZXJ0eSAiICsgZm9ybWF0X3ZhbHVlKHRoaXMubmFtZSkpOworfTsKKwor
SWRsSW50ZXJmYWNlLnByb3RvdHlwZS5nZXRfaW50ZXJmYWNlX29iamVjdCA9IGZ1bmN0aW9uKCkg
eworICAgIGlmICghdGhpcy5zaG91bGRfaGF2ZV9pbnRlcmZhY2Vfb2JqZWN0KCkpIHsKKyAgICAg
ICAgdmFyIHJlYXNvbiA9IHRoaXMuaXNfY2FsbGJhY2soKSA/ICJsYWNrIG9mIGRlY2xhcmVkIGNv
bnN0YW50cyIgOiAiZGVjbGFyZWQgW0xlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0XSBhdHRyaWJ1dGUi
OworICAgICAgICB0aHJvdyBuZXcgSWRsSGFybmVzc0Vycm9yKHRoaXMubmFtZSArICIgaGFzIG5v
IGludGVyZmFjZSBvYmplY3QgZHVlIHRvICIgKyByZWFzb24pOworICAgIH0KKworICAgIHJldHVy
biB0aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0X293bmVyKClbdGhpcy5uYW1lXTsKK307CisKK0lk
bEludGVyZmFjZS5wcm90b3R5cGUuZ2V0X3F1YWxpZmllZF9uYW1lID0gZnVuY3Rpb24oKSB7Cisg
ICAgLy8gaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jcXVhbGlmaWVkLW5hbWUKKyAg
ICB2YXIgbGVnYWN5TmFtZXNwYWNlID0gdGhpcy5nZXRfbGVnYWN5X25hbWVzcGFjZSgpOworICAg
IGlmIChsZWdhY3lOYW1lc3BhY2UpIHsKKyAgICAgICAgcmV0dXJuIGxlZ2FjeU5hbWVzcGFjZSAr
ICIuIiArIHRoaXMubmFtZTsKKyAgICB9CisgICAgcmV0dXJuIHRoaXMubmFtZTsKK307CisKK0lk
bEludGVyZmFjZS5wcm90b3R5cGUuaGFzX3RvX2pzb25fcmVndWxhcl9vcGVyYXRpb24gPSBmdW5j
dGlvbigpIHsKKyAgICByZXR1cm4gdGhpcy5tZW1iZXJzLnNvbWUoZnVuY3Rpb24obSkgeworICAg
ICAgICByZXR1cm4gbS5pc190b19qc29uX3JlZ3VsYXJfb3BlcmF0aW9uKCk7CisgICAgfSk7Cit9
OworCitJZGxJbnRlcmZhY2UucHJvdG90eXBlLmhhc19kZWZhdWx0X3RvX2pzb25fcmVndWxhcl9v
cGVyYXRpb24gPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gdGhpcy5tZW1iZXJzLnNvbWUoZnVu
Y3Rpb24obSkgeworICAgICAgICByZXR1cm4gbS5pc190b19qc29uX3JlZ3VsYXJfb3BlcmF0aW9u
KCkgJiYgbS5oYXNfZXh0ZW5kZWRfYXR0cmlidXRlKCJEZWZhdWx0Iik7CiAgICAgfSk7CiB9Owot
Ly9AfQorCisvKioKKyAqIEltcGxlbWVudGF0aW9uIG9mIGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5p
by93ZWJpZGwvI2NyZWF0ZS1hbi1pbmhlcml0YW5jZS1zdGFjaworICogd2l0aCB0aGUgb3JkZXIg
cmV2ZXJzZWQuCisgKgorICogVGhlIG9yZGVyIGlzIHJldmVyc2VkIHNvIHRoYXQgdGhlIGJhc2Ug
Y2xhc3MgY29tZXMgZmlyc3QgaW4gdGhlIGxpc3QsIGJlY2F1c2UKKyAqIHRoaXMgaXMgd2hhdCBh
bGwgY2FsbCBzaXRlcyBuZWVkLgorICoKKyAqIFNvIGdpdmVuOgorICoKKyAqICAgQSA6IEIge307
CisgKiAgIEIgOiBDIHt9OworICogICBDIHt9OworICoKKyAqIHRoZW4gQS5nZXRfcmV2ZXJzZV9p
bmhlcml0YW5jZV9zdGFjaygpIHJldHVybnMgW0MsIEIsIEFdLAorICogYW5kIEIuZ2V0X3JldmVy
c2VfaW5oZXJpdGFuY2Vfc3RhY2soKSByZXR1cm5zIFtDLCBCXS4KKyAqCisgKiBOb3RlOiBhcyBk
aWN0aW9uYXJ5IGluaGVyaXRhbmNlIGlzIGV4cHJlc3NlZCBpZGVudGljYWxseSBieSB0aGUgQVNU
LAorICogdGhpcyB3b3JrcyBqdXN0IGFzIHdlbGwgZm9yIGdldHRpbmcgYSBzdGFjayBvZiBpbmhl
cml0ZWQgZGljdGlvbmFyaWVzLgorICovCitJZGxJbnRlcmZhY2UucHJvdG90eXBlLmdldF9yZXZl
cnNlX2luaGVyaXRhbmNlX3N0YWNrID0gZnVuY3Rpb24oKSB7CisgICAgY29uc3Qgc3RhY2sgPSBb
dGhpc107CisgICAgbGV0IGlkbF9pbnRlcmZhY2UgPSB0aGlzOworICAgIHdoaWxlIChpZGxfaW50
ZXJmYWNlLmJhc2UpIHsKKyAgICAgICAgY29uc3QgYmFzZSA9IHRoaXMuYXJyYXkubWVtYmVyc1tp
ZGxfaW50ZXJmYWNlLmJhc2VdOworICAgICAgICBpZiAoIWJhc2UpIHsKKyAgICAgICAgICAgIHRo
cm93IG5ldyBFcnJvcihpZGxfaW50ZXJmYWNlLnR5cGUgKyAiICIgKyBpZGxfaW50ZXJmYWNlLmJh
c2UgKyAiIG5vdCBmb3VuZCAoaW5oZXJpdGVkIGJ5ICIgKyBpZGxfaW50ZXJmYWNlLm5hbWUgKyAi
KSIpOworICAgICAgICB9IGVsc2UgaWYgKHN0YWNrLmluZGV4T2YoYmFzZSkgPiAtMSkgeworICAg
ICAgICAgICAgc3RhY2sudW5zaGlmdChiYXNlKTsKKyAgICAgICAgICAgIGNvbnN0IGRlcF9jaGFp
biA9IHN0YWNrLm1hcChpID0+IGkubmFtZSkuam9pbignLCcpOworICAgICAgICAgICAgdGhyb3cg
bmV3IElkbEhhcm5lc3NFcnJvcihgJHt0aGlzLm5hbWV9IGhhcyBhIGNpcmN1bGFyIGRlcGVuZGVu
Y3k6ICR7ZGVwX2NoYWlufWApOworICAgICAgICB9CisgICAgICAgIGlkbF9pbnRlcmZhY2UgPSBi
YXNlOworICAgICAgICBzdGFjay51bnNoaWZ0KGlkbF9pbnRlcmZhY2UpOworICAgIH0KKyAgICBy
ZXR1cm4gc3RhY2s7Cit9OworCisvKioKKyAqIEltcGxlbWVudGF0aW9uIG9mCisgKiBodHRwczov
L2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNkZWZhdWx0LXRvanNvbi1vcGVyYXRpb24KKyAqIGZv
ciB0ZXN0aW5nIHB1cnBvc2VzLgorICoKKyAqIENvbGxlY3RzIHRoZSBJREwgdHlwZXMgb2YgdGhl
IGF0dHJpYnV0ZXMgdGhhdCBtZWV0IHRoZSBjcml0ZXJpYQorICogZm9yIGluY2x1c2lvbiBpbiB0
aGUgZGVmYXVsdCB0b0pTT04gb3BlcmF0aW9uIGZvciBlYXN5CisgKiBjb21wYXJpc29uIHdpdGgg
YWN0dWFsIHZhbHVlCisgKi8KK0lkbEludGVyZmFjZS5wcm90b3R5cGUuZGVmYXVsdF90b19qc29u
X29wZXJhdGlvbiA9IGZ1bmN0aW9uKCkgeworICAgIGNvbnN0IG1hcCA9IG5ldyBNYXAoKQorICAg
IGxldCBpc0RlZmF1bHQgPSBmYWxzZTsKKyAgICBmb3IgKGNvbnN0IEkgb2YgdGhpcy5nZXRfcmV2
ZXJzZV9pbmhlcml0YW5jZV9zdGFjaygpKSB7CisgICAgICAgIGlmIChJLmhhc19kZWZhdWx0X3Rv
X2pzb25fcmVndWxhcl9vcGVyYXRpb24oKSkgeworICAgICAgICAgICAgaXNEZWZhdWx0ID0gdHJ1
ZTsKKyAgICAgICAgICAgIGZvciAoY29uc3QgbSBvZiBJLm1lbWJlcnMpIHsKKyAgICAgICAgICAg
ICAgICBpZiAobS5zcGVjaWFsICE9PSAic3RhdGljIiAmJiBtLnR5cGUgPT0gImF0dHJpYnV0ZSIg
JiYgSS5hcnJheS5pc19qc29uX3R5cGUobS5pZGxUeXBlKSkgeworICAgICAgICAgICAgICAgICAg
ICBtYXAuc2V0KG0ubmFtZSwgbS5pZGxUeXBlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoSS5oYXNfdG9fanNvbl9yZWd1bGFyX29wZXJhdGlv
bigpKSB7CisgICAgICAgICAgICBpc0RlZmF1bHQgPSBmYWxzZTsKKyAgICAgICAgfQorICAgIH0K
KyAgICByZXR1cm4gaXNEZWZhdWx0ID8gbWFwIDogbnVsbDsKK307CiAKIElkbEludGVyZmFjZS5w
cm90b3R5cGUudGVzdCA9IGZ1bmN0aW9uKCkKLS8vQHsKIHsKLSAgICBpZiAodGhpcy5oYXNfZXh0
ZW5kZWRfYXR0cmlidXRlKCJOb0ludGVyZmFjZU9iamVjdCIpKQorICAgIGlmICh0aGlzLmhhc19l
eHRlbmRlZF9hdHRyaWJ1dGUoIkxlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0IikgfHwgdGhpcy5pc19t
aXhpbigpKQogICAgIHsKICAgICAgICAgLy8gTm8gdGVzdHMgdG8gZG8gd2l0aG91dCBhbiBpbnN0
YW5jZS4gIFRPRE86IFdlIHNob3VsZCBzdGlsbCBiZSBhYmxlCiAgICAgICAgIC8vIHRvIHJ1biB0
ZXN0cyBvbiB0aGUgcHJvdG90eXBlIG9iamVjdCwgaWYgd2Ugb2J0YWluIG9uZSB0aHJvdWdoIHNv
bWUKQEAgLTc0MywxMCArMTM5MSwxNiBAQCBJZGxJbnRlcmZhY2UucHJvdG90eXBlLnRlc3QgPSBm
dW5jdGlvbigpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIXRoaXMuZXhwb3Nl
ZCkgewotICAgICAgICB0ZXN0KGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgYXNzZXJ0X2ZhbHNl
KHRoaXMubmFtZSBpbiBzZWxmKTsKLSAgICAgICAgfS5iaW5kKHRoaXMpLCB0aGlzLm5hbWUgKyAi
IGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFjZSBvYmplY3Qi
KTsKKyAgICAvLyBJZiB0aGUgaW50ZXJmYWNlIG9iamVjdCBpcyBub3QgZXhwb3NlZCwgb25seSB0
ZXN0IHRoYXQuIE1lbWJlcnMgY2FuJ3QgYmUKKyAgICAvLyB0ZXN0ZWQgZWl0aGVyLCBidXQgb2Jq
ZWN0cyBjb3VsZCBzdGlsbCBiZSB0ZXN0ZWQgaW4gfHRlc3Rfb2JqZWN0fC4KKyAgICBpZiAoIXRo
aXMuZXhwb3NlZCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy51bnRlc3RlZCkKKyAgICAgICAg
eworICAgICAgICAgICAgc3Vic2V0VGVzdEJ5S2V5KHRoaXMubmFtZSwgdGVzdCwgZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKHRoaXMubmFtZSBpbiBzZWxmKTsKKyAg
ICAgICAgICAgIH0uYmluZCh0aGlzKSwgdGhpcy5uYW1lICsgIiBpbnRlcmZhY2U6IGV4aXN0ZW5j
ZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2Ugb2JqZWN0Iik7CisgICAgICAgIH0KICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtNzY1LDQ0ICsxNDE5LDM5IEBAIElkbEludGVyZmFjZS5w
cm90b3R5cGUudGVzdCA9IGZ1bmN0aW9uKCkKICAgICAvLyBpbnRlcmZhY2UgYXJlIHN0aWxsIHRl
c3RlZC4KICAgICB0aGlzLnRlc3RfbWVtYmVycygpOwogfTsKLS8vQH0KKworSWRsSW50ZXJmYWNl
LnByb3RvdHlwZS5jb25zdHJ1Y3RvcnMgPSBmdW5jdGlvbigpCit7CisgICAgcmV0dXJuIHRoaXMu
bWVtYmVycworICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uKG0pIHsgcmV0dXJuIG0udHlwZSA9PSAi
Y29uc3RydWN0b3IiOyB9KTsKK30KIAogSWRsSW50ZXJmYWNlLnByb3RvdHlwZS50ZXN0X3NlbGYg
PSBmdW5jdGlvbigpCi0vL0B7CiB7Ci0gICAgdGVzdChmdW5jdGlvbigpCisgICAgc3Vic2V0VGVz
dEJ5S2V5KHRoaXMubmFtZSwgdGVzdCwgZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgLy8gVGhp
cyBmdW5jdGlvbiB0ZXN0cyBXZWJJREwgYXMgb2YgMjAxNS0wMS0xMy4KLQotICAgICAgICAvLyAi
Rm9yIGV2ZXJ5IGludGVyZmFjZSB0aGF0IGlzIGV4cG9zZWQgaW4gYSBnaXZlbiBFQ01BU2NyaXB0
IGdsb2JhbAotICAgICAgICAvLyBlbnZpcm9ubWVudCBhbmQ6Ci0gICAgICAgIC8vICogaXMgYSBj
YWxsYmFjayBpbnRlcmZhY2UgdGhhdCBoYXMgY29uc3RhbnRzIGRlY2xhcmVkIG9uIGl0LCBvcgot
ICAgICAgICAvLyAqIGlzIGEgbm9uLWNhbGxiYWNrIGludGVyZmFjZSB0aGF0IGlzIG5vdCBkZWNs
YXJlZCB3aXRoIHRoZQotICAgICAgICAvLyAgIFtOb0ludGVyZmFjZU9iamVjdF0gZXh0ZW5kZWQg
YXR0cmlidXRlLAotICAgICAgICAvLyBhIGNvcnJlc3BvbmRpbmcgcHJvcGVydHkgTVVTVCBleGlz
dCBvbiB0aGUgRUNNQVNjcmlwdCBnbG9iYWwgb2JqZWN0LgorICAgICAgICBpZiAoIXRoaXMuc2hv
dWxkX2hhdmVfaW50ZXJmYWNlX29iamVjdCgpKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKwogICAgICAgICAvLyBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgaXMgdGhlIGlkZW50
aWZpZXIgb2YgdGhlIGludGVyZmFjZSwgYW5kIGl0cwogICAgICAgICAvLyB2YWx1ZSBpcyBhbiBv
YmplY3QgY2FsbGVkIHRoZSBpbnRlcmZhY2Ugb2JqZWN0LgogICAgICAgICAvLyBUaGUgcHJvcGVy
dHkgaGFzIHRoZSBhdHRyaWJ1dGVzIHsgW1tXcml0YWJsZV1dOiB0cnVlLAogICAgICAgICAvLyBb
W0VudW1lcmFibGVdXTogZmFsc2UsIFtbQ29uZmlndXJhYmxlXV06IHRydWUgfS4iCi0gICAgICAg
IGlmICh0aGlzLmlzX2NhbGxiYWNrKCkgJiYgIXRoaXMuaGFzX2NvbnN0YW50cygpKSB7Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQogICAgICAgICAvLyBUT0RPOiBTaG91bGQgd2Ug
dGVzdCBoZXJlIHRoYXQgdGhlIHByb3BlcnR5IGlzIGFjdHVhbGx5IHdyaXRhYmxlCiAgICAgICAg
IC8vIGV0Yy4sIG9yIHRydXN0IGdldE93blByb3BlcnR5RGVzY3JpcHRvcj8KLSAgICAgICAgYXNz
ZXJ0X293bl9wcm9wZXJ0eShzZWxmLCB0aGlzLm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgInNlbGYgZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVydHkgIiArIGZvcm1hdF92YWx1ZSh0
aGlzLm5hbWUpKTsKLSAgICAgICAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKHNlbGYsIHRoaXMubmFtZSk7Ci0gICAgICAgIGFzc2VydF9mYWxzZSgiZ2V0IiBpbiBk
ZXNjLCAic2VsZidzIHByb3BlcnR5ICIgKyBmb3JtYXRfdmFsdWUodGhpcy5uYW1lKSArICIgaGFz
IGdldHRlciIpOwotICAgICAgICBhc3NlcnRfZmFsc2UoInNldCIgaW4gZGVzYywgInNlbGYncyBw
cm9wZXJ0eSAiICsgZm9ybWF0X3ZhbHVlKHRoaXMubmFtZSkgKyAiIGhhcyBzZXR0ZXIiKTsKLSAg
ICAgICAgYXNzZXJ0X3RydWUoZGVzYy53cml0YWJsZSwgInNlbGYncyBwcm9wZXJ0eSAiICsgZm9y
bWF0X3ZhbHVlKHRoaXMubmFtZSkgKyAiIGlzIG5vdCB3cml0YWJsZSIpOwotICAgICAgICBhc3Nl
cnRfZmFsc2UoZGVzYy5lbnVtZXJhYmxlLCAic2VsZidzIHByb3BlcnR5ICIgKyBmb3JtYXRfdmFs
dWUodGhpcy5uYW1lKSArICIgaXMgZW51bWVyYWJsZSIpOwotICAgICAgICBhc3NlcnRfdHJ1ZShk
ZXNjLmNvbmZpZ3VyYWJsZSwgInNlbGYncyBwcm9wZXJ0eSAiICsgZm9ybWF0X3ZhbHVlKHRoaXMu
bmFtZSkgKyAiIGlzIG5vdCBjb25maWd1cmFibGUiKTsKKyAgICAgICAgdGhpcy5hc3NlcnRfaW50
ZXJmYWNlX29iamVjdF9leGlzdHMoKTsKKyAgICAgICAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKHRoaXMuZ2V0X2ludGVyZmFjZV9vYmplY3Rfb3duZXIoKSwgdGhp
cy5uYW1lKTsKKyAgICAgICAgYXNzZXJ0X2ZhbHNlKCJnZXQiIGluIGRlc2MsICJzZWxmJ3MgcHJv
cGVydHkgIiArIGZvcm1hdF92YWx1ZSh0aGlzLm5hbWUpICsgIiBzaG91bGQgbm90IGhhdmUgYSBn
ZXR0ZXIiKTsKKyAgICAgICAgYXNzZXJ0X2ZhbHNlKCJzZXQiIGluIGRlc2MsICJzZWxmJ3MgcHJv
cGVydHkgIiArIGZvcm1hdF92YWx1ZSh0aGlzLm5hbWUpICsgIiBzaG91bGQgbm90IGhhdmUgYSBz
ZXR0ZXIiKTsKKyAgICAgICAgYXNzZXJ0X3RydWUoZGVzYy53cml0YWJsZSwgInNlbGYncyBwcm9w
ZXJ0eSAiICsgZm9ybWF0X3ZhbHVlKHRoaXMubmFtZSkgKyAiIHNob3VsZCBiZSB3cml0YWJsZSIp
OworICAgICAgICBhc3NlcnRfZmFsc2UoZGVzYy5lbnVtZXJhYmxlLCAic2VsZidzIHByb3BlcnR5
ICIgKyBmb3JtYXRfdmFsdWUodGhpcy5uYW1lKSArICIgc2hvdWxkIG5vdCBiZSBlbnVtZXJhYmxl
Iik7CisgICAgICAgIGFzc2VydF90cnVlKGRlc2MuY29uZmlndXJhYmxlLCAic2VsZidzIHByb3Bl
cnR5ICIgKyBmb3JtYXRfdmFsdWUodGhpcy5uYW1lKSArICIgc2hvdWxkIGJlIGNvbmZpZ3VyYWJs
ZSIpOwogCiAgICAgICAgIGlmICh0aGlzLmlzX2NhbGxiYWNrKCkpIHsKICAgICAgICAgICAgIC8v
ICJUaGUgaW50ZXJuYWwgW1tQcm90b3R5cGVdXSBwcm9wZXJ0eSBvZiBhbiBpbnRlcmZhY2Ugb2Jq
ZWN0IGZvcgogICAgICAgICAgICAgLy8gYSBjYWxsYmFjayBpbnRlcmZhY2UgbXVzdCBiZSB0aGUg
RnVuY3Rpb24ucHJvdG90eXBlIG9iamVjdC4iCi0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKE9i
amVjdC5nZXRQcm90b3R5cGVPZihzZWxmW3RoaXMubmFtZV0pLCBGdW5jdGlvbi5wcm90b3R5cGUs
CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzLmdl
dF9pbnRlcmZhY2Vfb2JqZWN0KCkpLCBGdW5jdGlvbi5wcm90b3R5cGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJwcm90b3R5cGUgb2Ygc2VsZidzIHByb3BlcnR5ICIgKyBmb3JtYXRfdmFs
dWUodGhpcy5uYW1lKSArICIgaXMgbm90IE9iamVjdC5wcm90b3R5cGUiKTsKIAogICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtODIyLDggKzE0NzEsNiBAQCBJZGxJbnRlcmZhY2UucHJvdG90eXBlLnRl
c3Rfc2VsZiA9IGZ1bmN0aW9uKCkKIAogICAgICAgICAvLyAiKiBJdHMgW1tDb25zdHJ1Y3RdXSBp
bnRlcm5hbCBwcm9wZXJ0eSBpcyBzZXQgYXMgZGVzY3JpYmVkIGluCiAgICAgICAgIC8vICAgIEVD
TUEtMjYyIHNlY3Rpb24gMTkuMi4yLjMuIgotICAgICAgICAvLyBUZXN0ZWQgYmVsb3cgaWYgbm8g
Y29uc3RydWN0b3IgaXMgZGVmaW5lZC4gIFRPRE86IHRlc3QgY29uc3RydWN0b3JzCi0gICAgICAg
IC8vIGlmIGRlZmluZWQuCiAKICAgICAgICAgLy8gIiogSXRzIEBAaGFzSW5zdGFuY2UgcHJvcGVy
dHkgaXMgc2V0IGFzIGRlc2NyaWJlZCBpbiBFQ01BLTI2MgogICAgICAgICAvLyAgICBzZWN0aW9u
IDE5LjIuMy44LCB1bmxlc3Mgb3RoZXJ3aXNlIHNwZWNpZmllZC4iCkBAIC04MzIsMjQgKzE0Nzks
MTkgQEAgSWRsSW50ZXJmYWNlLnByb3RvdHlwZS50ZXN0X3NlbGYgPSBmdW5jdGlvbigpCiAgICAg
ICAgIC8vIEVTNiAocmV2IDMwKSAxOS4xLjMuNjoKICAgICAgICAgLy8gIkVsc2UsIGlmIE8gaGFz
IGEgW1tDYWxsXV0gaW50ZXJuYWwgbWV0aG9kLCB0aGVuIGxldCBidWlsdGluVGFnIGJlCiAgICAg
ICAgIC8vICJGdW5jdGlvbiIuIgotICAgICAgICBhc3NlcnRfY2xhc3Nfc3RyaW5nKHNlbGZbdGhp
cy5uYW1lXSwgIkZ1bmN0aW9uIiwgImNsYXNzIHN0cmluZyBvZiAiICsgdGhpcy5uYW1lKTsKKyAg
ICAgICAgYXNzZXJ0X2NsYXNzX3N0cmluZyh0aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0KCksICJG
dW5jdGlvbiIsICJjbGFzcyBzdHJpbmcgb2YgIiArIHRoaXMubmFtZSk7CiAKICAgICAgICAgLy8g
IlRoZSBbW1Byb3RvdHlwZV1dIGludGVybmFsIHByb3BlcnR5IG9mIGFuIGludGVyZmFjZSBvYmpl
Y3QgZm9yIGEKICAgICAgICAgLy8gbm9uLWNhbGxiYWNrIGludGVyZmFjZSBpcyBkZXRlcm1pbmVk
IGFzIGZvbGxvd3M6IgotICAgICAgICB2YXIgcHJvdG90eXBlID0gT2JqZWN0LmdldFByb3RvdHlw
ZU9mKHNlbGZbdGhpcy5uYW1lXSk7CisgICAgICAgIHZhciBwcm90b3R5cGUgPSBPYmplY3QuZ2V0
UHJvdG90eXBlT2YodGhpcy5nZXRfaW50ZXJmYWNlX29iamVjdCgpKTsKICAgICAgICAgaWYgKHRo
aXMuYmFzZSkgewogICAgICAgICAgICAgLy8gIiogSWYgdGhlIGludGVyZmFjZSBpbmhlcml0cyBm
cm9tIHNvbWUgb3RoZXIgaW50ZXJmYWNlLCB0aGUKICAgICAgICAgICAgIC8vICAgIHZhbHVlIG9m
IFtbUHJvdG90eXBlXV0gaXMgdGhlIGludGVyZmFjZSBvYmplY3QgZm9yIHRoYXQgb3RoZXIKICAg
ICAgICAgICAgIC8vICAgIGludGVyZmFjZS4iCi0gICAgICAgICAgICB2YXIgaGFzX2ludGVyZmFj
ZV9vYmplY3QgPQotICAgICAgICAgICAgICAgICF0aGlzLmFycmF5Ci0gICAgICAgICAgICAgICAg
ICAgICAubWVtYmVyc1t0aGlzLmJhc2VdCi0gICAgICAgICAgICAgICAgICAgICAuaGFzX2V4dGVu
ZGVkX2F0dHJpYnV0ZSgiTm9JbnRlcmZhY2VPYmplY3QiKTsKLSAgICAgICAgICAgIGlmIChoYXNf
aW50ZXJmYWNlX29iamVjdCkgewotICAgICAgICAgICAgICAgIGFzc2VydF9vd25fcHJvcGVydHko
c2VsZiwgdGhpcy5iYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3No
b3VsZCBpbmhlcml0IGZyb20gJyArIHRoaXMuYmFzZSArCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnLCBidXQgc2VsZiBoYXMgbm8gc3VjaCBwcm9wZXJ0eScpOwotICAgICAg
ICAgICAgICAgIGFzc2VydF9lcXVhbHMocHJvdG90eXBlLCBzZWxmW3RoaXMuYmFzZV0sCisgICAg
ICAgICAgICB2YXIgaW5oZXJpdGVkX2ludGVyZmFjZSA9IHRoaXMuYXJyYXkubWVtYmVyc1t0aGlz
LmJhc2VdOworICAgICAgICAgICAgaWYgKCFpbmhlcml0ZWRfaW50ZXJmYWNlLmhhc19leHRlbmRl
ZF9hdHRyaWJ1dGUoIkxlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0IikpIHsKKyAgICAgICAgICAgICAg
ICBpbmhlcml0ZWRfaW50ZXJmYWNlLmFzc2VydF9pbnRlcmZhY2Vfb2JqZWN0X2V4aXN0cygpOwor
ICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocHJvdG90eXBlLCBpbmhlcml0ZWRfaW50ZXJm
YWNlLmdldF9pbnRlcmZhY2Vfb2JqZWN0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAncHJvdG90eXBlIG9mICcgKyB0aGlzLm5hbWUgKyAnIGlzIG5vdCAnICsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRoaXMuYmFzZSk7CiAgICAgICAgICAgICB9CkBAIC04NjEsODgg
KzE1MDMsMjUyIEBAIElkbEludGVyZmFjZS5wcm90b3R5cGUudGVzdF9zZWxmID0gZnVuY3Rpb24o
KQogICAgICAgICAgICAgICAgICAgICAgICAgICAicHJvdG90eXBlIG9mIHNlbGYncyBwcm9wZXJ0
eSAiICsgZm9ybWF0X3ZhbHVlKHRoaXMubmFtZSkgKyAiIGlzIG5vdCBGdW5jdGlvbi5wcm90b3R5
cGUiKTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICghdGhpcy5oYXNfZXh0ZW5kZWRfYXR0cmli
dXRlKCJDb25zdHJ1Y3RvciIpKSB7Ci0gICAgICAgICAgICAvLyAiVGhlIGludGVybmFsIFtbQ2Fs
bF1dIG1ldGhvZCBvZiB0aGUgaW50ZXJmYWNlIG9iamVjdCBiZWhhdmVzIGFzCi0gICAgICAgICAg
ICAvLyBmb2xsb3dzIC4gLiAuCi0gICAgICAgICAgICAvLwotICAgICAgICAgICAgLy8gIklmIEkg
d2FzIG5vdCBkZWNsYXJlZCB3aXRoIGEgW0NvbnN0cnVjdG9yXSBleHRlbmRlZCBhdHRyaWJ1dGUs
Ci0gICAgICAgICAgICAvLyB0aGVuIHRocm93IGEgVHlwZUVycm9yLiIKLSAgICAgICAgICAgIGFz
c2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAg
ICBzZWxmW3RoaXMubmFtZV0oKTsKLSAgICAgICAgICAgIH0uYmluZCh0aGlzKSwgImludGVyZmFj
ZSBvYmplY3QgZGlkbid0IHRocm93IFR5cGVFcnJvciB3aGVuIGNhbGxlZCBhcyBhIGZ1bmN0aW9u
Iik7Ci0gICAgICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24o
KSB7Ci0gICAgICAgICAgICAgICAgbmV3IHNlbGZbdGhpcy5uYW1lXSgpOwotICAgICAgICAgICAg
fS5iaW5kKHRoaXMpLCAiaW50ZXJmYWNlIG9iamVjdCBkaWRuJ3QgdGhyb3cgVHlwZUVycm9yIHdo
ZW4gY2FsbGVkIGFzIGEgY29uc3RydWN0b3IiKTsKKyAgICAgICAgLy8gQWx3YXlzIHRlc3QgZm9y
IFtbQ29uc3RydWN0XV06CisgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9oZXljYW0vd2Vi
aWRsL2lzc3Vlcy82OTgKKyAgICAgICAgYXNzZXJ0X3RydWUoaXNDb25zdHJ1Y3Rvcih0aGlzLmdl
dF9pbnRlcmZhY2Vfb2JqZWN0KCkpLCAiaW50ZXJmYWNlIG9iamVjdCBtdXN0IHBhc3MgSXNDb25z
dHJ1Y3RvciBjaGVjayIpOworCisgICAgICAgIGlmICghdGhpcy5jb25zdHJ1Y3RvcnMoKS5sZW5n
dGgpIHsKKyAgICAgICAgICAgIC8vICJJZiBJIHdhcyBub3QgZGVjbGFyZWQgd2l0aCBhIGNvbnN0
cnVjdG9yIG9wZXJhdGlvbiwgdGhlbiB0aHJvdyBhIFR5cGVFcnJvci4iCisgICAgICAgICAgICB2
YXIgaW50ZXJmYWNlX29iamVjdCA9IHRoaXMuZ2V0X2ludGVyZmFjZV9vYmplY3QoKTsKKyAgICAg
ICAgICAgIGFzc2VydF90aHJvd3NfanMoZ2xvYmFsT2YoaW50ZXJmYWNlX29iamVjdCkuVHlwZUVy
cm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBpbnRlcmZhY2Vfb2JqZWN0KCk7Cisg
ICAgICAgICAgICB9LCAiaW50ZXJmYWNlIG9iamVjdCBkaWRuJ3QgdGhyb3cgVHlwZUVycm9yIHdo
ZW4gY2FsbGVkIGFzIGEgZnVuY3Rpb24iKTsKKyAgICAgICAgICAgIGFzc2VydF90aHJvd3NfanMo
Z2xvYmFsT2YoaW50ZXJmYWNlX29iamVjdCkuVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgICAgICBuZXcgaW50ZXJmYWNlX29iamVjdCgpOworICAgICAgICAgICAgfSwgImludGVy
ZmFjZSBvYmplY3QgZGlkbid0IHRocm93IFR5cGVFcnJvciB3aGVuIGNhbGxlZCBhcyBhIGNvbnN0
cnVjdG9yIik7CiAgICAgICAgIH0KICAgICB9LmJpbmQodGhpcyksIHRoaXMubmFtZSArICIgaW50
ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIG9iamVjdCIpOwog
Ci0gICAgaWYgKCF0aGlzLmlzX2NhbGxiYWNrKCkpIHsKLSAgICAgICAgdGVzdChmdW5jdGlvbigp
IHsKKyAgICBpZiAodGhpcy5zaG91bGRfaGF2ZV9pbnRlcmZhY2Vfb2JqZWN0KCkgJiYgIXRoaXMu
aXNfY2FsbGJhY2soKSkgeworICAgICAgICBzdWJzZXRUZXN0QnlLZXkodGhpcy5uYW1lLCB0ZXN0
LCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgIC8vIFRoaXMgZnVuY3Rpb24gdGVzdHMgV2ViSURM
IGFzIG9mIDIwMTQtMTAtMjUuCiAgICAgICAgICAgICAvLyBodHRwczovL2hleWNhbS5naXRodWIu
aW8vd2ViaWRsLyNlcy1pbnRlcmZhY2UtY2FsbAogCi0gICAgICAgICAgICBhc3NlcnRfb3duX3By
b3BlcnR5KHNlbGYsIHRoaXMubmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
InNlbGYgZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVydHkgIiArIGZvcm1hdF92YWx1ZSh0aGlzLm5h
bWUpKTsKKyAgICAgICAgICAgIHRoaXMuYXNzZXJ0X2ludGVyZmFjZV9vYmplY3RfZXhpc3RzKCk7
CiAKICAgICAgICAgICAgIC8vICJJbnRlcmZhY2Ugb2JqZWN0cyBmb3Igbm9uLWNhbGxiYWNrIGlu
dGVyZmFjZXMgTVVTVCBoYXZlIGEKICAgICAgICAgICAgIC8vIHByb3BlcnR5IG5hbWVkIOKAnGxl
bmd0aOKAnSB3aXRoIGF0dHJpYnV0ZXMgeyBbW1dyaXRhYmxlXV06IGZhbHNlLAogICAgICAgICAg
ICAgLy8gW1tFbnVtZXJhYmxlXV06IGZhbHNlLCBbW0NvbmZpZ3VyYWJsZV1dOiB0cnVlIH0gd2hv
c2UgdmFsdWUgaXMKICAgICAgICAgICAgIC8vIGEgTnVtYmVyLiIKLSAgICAgICAgICAgIGFzc2Vy
dF9vd25fcHJvcGVydHkoc2VsZlt0aGlzLm5hbWVdLCAibGVuZ3RoIik7Ci0gICAgICAgICAgICB2
YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc2VsZlt0aGlzLm5hbWVd
LCAibGVuZ3RoIik7Ci0gICAgICAgICAgICBhc3NlcnRfZmFsc2UoImdldCIgaW4gZGVzYywgdGhp
cy5uYW1lICsgIi5sZW5ndGggaGFzIGdldHRlciIpOwotICAgICAgICAgICAgYXNzZXJ0X2ZhbHNl
KCJzZXQiIGluIGRlc2MsIHRoaXMubmFtZSArICIubGVuZ3RoIGhhcyBzZXR0ZXIiKTsKLSAgICAg
ICAgICAgIGFzc2VydF9mYWxzZShkZXNjLndyaXRhYmxlLCB0aGlzLm5hbWUgKyAiLmxlbmd0aCBp
cyB3cml0YWJsZSIpOwotICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKGRlc2MuZW51bWVyYWJsZSwg
dGhpcy5uYW1lICsgIi5sZW5ndGggaXMgZW51bWVyYWJsZSIpOwotICAgICAgICAgICAgYXNzZXJ0
X3RydWUoZGVzYy5jb25maWd1cmFibGUsIHRoaXMubmFtZSArICIubGVuZ3RoIGlzIG5vdCBjb25m
aWd1cmFibGUiKTsKLQotICAgICAgICAgICAgdmFyIGNvbnN0cnVjdG9ycyA9IHRoaXMuZXh0QXR0
cnMKLSAgICAgICAgICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uKGF0dHIpIHsgcmV0dXJuIGF0dHIu
bmFtZSA9PSAiQ29uc3RydWN0b3IiOyB9KTsKKyAgICAgICAgICAgIGFzc2VydF9vd25fcHJvcGVy
dHkodGhpcy5nZXRfaW50ZXJmYWNlX29iamVjdCgpLCAibGVuZ3RoIik7CisgICAgICAgICAgICB2
YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGhpcy5nZXRfaW50ZXJm
YWNlX29iamVjdCgpLCAibGVuZ3RoIik7CisgICAgICAgICAgICBhc3NlcnRfZmFsc2UoImdldCIg
aW4gZGVzYywgdGhpcy5uYW1lICsgIi5sZW5ndGggc2hvdWxkIG5vdCBoYXZlIGEgZ2V0dGVyIik7
CisgICAgICAgICAgICBhc3NlcnRfZmFsc2UoInNldCIgaW4gZGVzYywgdGhpcy5uYW1lICsgIi5s
ZW5ndGggc2hvdWxkIG5vdCBoYXZlIGEgc2V0dGVyIik7CisgICAgICAgICAgICBhc3NlcnRfZmFs
c2UoZGVzYy53cml0YWJsZSwgdGhpcy5uYW1lICsgIi5sZW5ndGggc2hvdWxkIG5vdCBiZSB3cml0
YWJsZSIpOworICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKGRlc2MuZW51bWVyYWJsZSwgdGhpcy5u
YW1lICsgIi5sZW5ndGggc2hvdWxkIG5vdCBiZSBlbnVtZXJhYmxlIik7CisgICAgICAgICAgICBh
c3NlcnRfdHJ1ZShkZXNjLmNvbmZpZ3VyYWJsZSwgdGhpcy5uYW1lICsgIi5sZW5ndGggc2hvdWxk
IGJlIGNvbmZpZ3VyYWJsZSIpOworCisgICAgICAgICAgICB2YXIgY29uc3RydWN0b3JzID0gdGhp
cy5jb25zdHJ1Y3RvcnMoKTsKICAgICAgICAgICAgIHZhciBleHBlY3RlZF9sZW5ndGggPSBtaW5P
dmVybG9hZExlbmd0aChjb25zdHJ1Y3RvcnMpOwotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhz
ZWxmW3RoaXMubmFtZV0ubGVuZ3RoLCBleHBlY3RlZF9sZW5ndGgsICJ3cm9uZyB2YWx1ZSBmb3Ig
IiArIHRoaXMubmFtZSArICIubGVuZ3RoIik7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHRo
aXMuZ2V0X2ludGVyZmFjZV9vYmplY3QoKS5sZW5ndGgsIGV4cGVjdGVkX2xlbmd0aCwgIndyb25n
IHZhbHVlIGZvciAiICsgdGhpcy5uYW1lICsgIi5sZW5ndGgiKTsKICAgICAgICAgfS5iaW5kKHRo
aXMpLCB0aGlzLm5hbWUgKyAiIGludGVyZmFjZSBvYmplY3QgbGVuZ3RoIik7CiAgICAgfQogCi0g
ICAgaWYgKCF0aGlzLmlzX2NhbGxiYWNrKCkgfHwgdGhpcy5oYXNfY29uc3RhbnRzKCkpIHsKLSAg
ICAgICAgdGVzdChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIC8vIFRoaXMgZnVuY3Rpb24gdGVz
dHMgV2ViSURMIGFzIG9mIDIwMTUtMTEtMTcuCi0gICAgICAgICAgICAvLyBodHRwczovL2hleWNh
bS5naXRodWIuaW8vd2ViaWRsLyNpbnRlcmZhY2Utb2JqZWN0CisgICAgaWYgKHRoaXMuc2hvdWxk
X2hhdmVfaW50ZXJmYWNlX29iamVjdCgpKSB7CisgICAgICAgIHN1YnNldFRlc3RCeUtleSh0aGlz
Lm5hbWUsIHRlc3QsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgLy8gVGhpcyBmdW5jdGlvbiB0
ZXN0cyBXZWJJREwgYXMgb2YgMjAxNS0xMS0xNy4KKyAgICAgICAgICAgIC8vIGh0dHBzOi8vaGV5
Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2ludGVyZmFjZS1vYmplY3QKKworICAgICAgICAgICAgdGhp
cy5hc3NlcnRfaW50ZXJmYWNlX29iamVjdF9leGlzdHMoKTsKKworICAgICAgICAgICAgLy8gIkFs
bCBpbnRlcmZhY2Ugb2JqZWN0cyBtdXN0IGhhdmUgYSBwcm9wZXJ0eSBuYW1lZCDigJxuYW1l4oCd
IHdpdGgKKyAgICAgICAgICAgIC8vIGF0dHJpYnV0ZXMgeyBbW1dyaXRhYmxlXV06IGZhbHNlLCBb
W0VudW1lcmFibGVdXTogZmFsc2UsCisgICAgICAgICAgICAvLyBbW0NvbmZpZ3VyYWJsZV1dOiB0
cnVlIH0gd2hvc2UgdmFsdWUgaXMgdGhlIGlkZW50aWZpZXIgb2YgdGhlCisgICAgICAgICAgICAv
LyBjb3JyZXNwb25kaW5nIGludGVyZmFjZS4iCisKKyAgICAgICAgICAgIGFzc2VydF9vd25fcHJv
cGVydHkodGhpcy5nZXRfaW50ZXJmYWNlX29iamVjdCgpLCAibmFtZSIpOworICAgICAgICAgICAg
dmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRoaXMuZ2V0X2ludGVy
ZmFjZV9vYmplY3QoKSwgIm5hbWUiKTsKKyAgICAgICAgICAgIGFzc2VydF9mYWxzZSgiZ2V0IiBp
biBkZXNjLCB0aGlzLm5hbWUgKyAiLm5hbWUgc2hvdWxkIG5vdCBoYXZlIGEgZ2V0dGVyIik7Cisg
ICAgICAgICAgICBhc3NlcnRfZmFsc2UoInNldCIgaW4gZGVzYywgdGhpcy5uYW1lICsgIi5uYW1l
IHNob3VsZCBub3QgaGF2ZSBhIHNldHRlciIpOworICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKGRl
c2Mud3JpdGFibGUsIHRoaXMubmFtZSArICIubmFtZSBzaG91bGQgbm90IGJlIHdyaXRhYmxlIik7
CisgICAgICAgICAgICBhc3NlcnRfZmFsc2UoZGVzYy5lbnVtZXJhYmxlLCB0aGlzLm5hbWUgKyAi
Lm5hbWUgc2hvdWxkIG5vdCBiZSBlbnVtZXJhYmxlIik7CisgICAgICAgICAgICBhc3NlcnRfdHJ1
ZShkZXNjLmNvbmZpZ3VyYWJsZSwgdGhpcy5uYW1lICsgIi5uYW1lIHNob3VsZCBiZSBjb25maWd1
cmFibGUiKTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHModGhpcy5nZXRfaW50ZXJmYWNlX29i
amVjdCgpLm5hbWUsIHRoaXMubmFtZSwgIndyb25nIHZhbHVlIGZvciAiICsgdGhpcy5uYW1lICsg
Ii5uYW1lIik7CisgICAgICAgIH0uYmluZCh0aGlzKSwgdGhpcy5uYW1lICsgIiBpbnRlcmZhY2Ug
b2JqZWN0IG5hbWUiKTsKKyAgICB9CisKKworICAgIGlmICh0aGlzLmhhc19leHRlbmRlZF9hdHRy
aWJ1dGUoIkxlZ2FjeVdpbmRvd0FsaWFzIikpIHsKKyAgICAgICAgc3Vic2V0VGVzdEJ5S2V5KHRo
aXMubmFtZSwgdGVzdCwgZnVuY3Rpb24oKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgYWxp
YXNBdHRycyA9IHRoaXMuZXh0QXR0cnMuZmlsdGVyKGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8ubmFt
ZSA9PT0gIkxlZ2FjeVdpbmRvd0FsaWFzIjsgfSk7CisgICAgICAgICAgICBpZiAoYWxpYXNBdHRy
cy5sZW5ndGggPiAxKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElkbEhhcm5lc3NFcnJv
cigiSW52YWxpZCBJREw6IG11bHRpcGxlIExlZ2FjeVdpbmRvd0FsaWFzIGV4dGVuZGVkIGF0dHJp
YnV0ZXMgb24gIiArIHRoaXMubmFtZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAo
dGhpcy5pc19jYWxsYmFjaygpKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElkbEhhcm5l
c3NFcnJvcigiSW52YWxpZCBJREw6IExlZ2FjeVdpbmRvd0FsaWFzIGV4dGVuZGVkIGF0dHJpYnV0
ZSBvbiBub24taW50ZXJmYWNlICIgKyB0aGlzLm5hbWUpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgaWYgKCF0aGlzLmV4cG9zdXJlU2V0LmhhcygiV2luZG93IikpIHsKKyAgICAgICAgICAg
ICAgICB0aHJvdyBuZXcgSWRsSGFybmVzc0Vycm9yKCJJbnZhbGlkIElETDogTGVnYWN5V2luZG93
QWxpYXMgZXh0ZW5kZWQgYXR0cmlidXRlIG9uICIgKyB0aGlzLm5hbWUgKyAiIHdoaWNoIGlzIG5v
dCBleHBvc2VkIGluIFdpbmRvdyIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gVE9E
Tzogd2hlbiB0ZXN0aW5nIG9mIFtMZWdhY3lOb0ludGVyZmFjZU9iamVjdF0gaW50ZXJmYWNlcyBp
cyBzdXBwb3J0ZWQsCisgICAgICAgICAgICAvLyBjaGVjayB0aGF0IGl0J3Mgbm90IHNwZWNpZmll
ZCB0b2dldGhlciB3aXRoIExlZ2FjeVdpbmRvd0FsaWFzLgorCisgICAgICAgICAgICAvLyBUT0RP
OiBtYXliZSBjaGVjayB0aGF0IFtMZWdhY3lXaW5kb3dBbGlhc13CoGlzIG5vdCBzcGVjaWZpZWQg
b24gYSBwYXJ0aWFsIGludGVyZmFjZS4KIAotICAgICAgICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0
eShzZWxmLCB0aGlzLm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZWxm
IGRvZXMgbm90IGhhdmUgb3duIHByb3BlcnR5ICIgKyBmb3JtYXRfdmFsdWUodGhpcy5uYW1lKSk7
CisgICAgICAgICAgICB2YXIgcmhzID0gYWxpYXNBdHRyc1swXS5yaHM7CisgICAgICAgICAgICBp
ZiAoIXJocykgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBJZGxIYXJuZXNzRXJyb3IoIklu
dmFsaWQgSURMOiBMZWdhY3lXaW5kb3dBbGlhcyBleHRlbmRlZCBhdHRyaWJ1dGUgb24gIiArIHRo
aXMubmFtZSArICIgd2l0aG91dCBpZGVudGlmaWVyIik7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICB2YXIgYWxpYXNlczsKKyAgICAgICAgICAgIGlmIChyaHMudHlwZSA9PT0gImlkZW50aWZp
ZXItbGlzdCIpIHsKKyAgICAgICAgICAgICAgICBhbGlhc2VzID0gcmhzLnZhbHVlLm1hcChpZCA9
PiBpZC52YWx1ZSk7CisgICAgICAgICAgICB9IGVsc2UgeyAvLyByaHMudHlwZSA9PT0gaWRlbnRp
ZmllcgorICAgICAgICAgICAgICAgIGFsaWFzZXMgPSBbIHJocy52YWx1ZSBdOworICAgICAgICAg
ICAgfQogCi0gICAgICAgICAgICAvLyAiQWxsIGludGVyZmFjZSBvYmplY3RzIG11c3QgaGF2ZSBh
IHByb3BlcnR5IG5hbWVkIOKAnG5hbWXigJ0gd2l0aAotICAgICAgICAgICAgLy8gYXR0cmlidXRl
cyB7IFtbV3JpdGFibGVdXTogZmFsc2UsIFtbRW51bWVyYWJsZV1dOiBmYWxzZSwKLSAgICAgICAg
ICAgIC8vIFtbQ29uZmlndXJhYmxlXV06IHRydWUgfSB3aG9zZSB2YWx1ZSBpcyB0aGUgaWRlbnRp
ZmllciBvZiB0aGUKLSAgICAgICAgICAgIC8vIGNvcnJlc3BvbmRpbmcgaW50ZXJmYWNlLiIKKyAg
ICAgICAgICAgIC8vIE9LIG5vdyBhY3R1YWxseSBjaGVjayB0aGUgYWxpYXNlcy4uLgorICAgICAg
ICAgICAgdmFyIGFsaWFzOworICAgICAgICAgICAgaWYgKGV4cG9zZWRfaW4oZXhwb3N1cmVfc2V0
KHRoaXMsIHRoaXMuZXhwb3N1cmVTZXQpKSAmJiAnZG9jdW1lbnQnIGluIHNlbGYpIHsKKyAgICAg
ICAgICAgICAgICBmb3IgKGFsaWFzIG9mIGFsaWFzZXMpIHsKKyAgICAgICAgICAgICAgICAgICAg
YXNzZXJ0X3RydWUoYWxpYXMgaW4gc2VsZiwgYWxpYXMgKyAiIHNob3VsZCBleGlzdCIpOworICAg
ICAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHNlbGZbYWxpYXNdLCB0aGlzLmdldF9pbnRl
cmZhY2Vfb2JqZWN0KCksICJzZWxmLiIgKyBhbGlhcyArICIgc2hvdWxkIGJlIHRoZSBzYW1lIHZh
bHVlIGFzIHNlbGYuIiArIHRoaXMuZ2V0X3F1YWxpZmllZF9uYW1lKCkpOworICAgICAgICAgICAg
ICAgICAgICB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc2VsZiwg
YWxpYXMpOworICAgICAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGRlc2MudmFsdWUsIHRo
aXMuZ2V0X2ludGVyZmFjZV9vYmplY3QoKSwgIndyb25nIHZhbHVlIGluICIgKyBhbGlhcyArICIg
cHJvcGVydHkgZGVzY3JpcHRvciIpOworICAgICAgICAgICAgICAgICAgICBhc3NlcnRfdHJ1ZShk
ZXNjLndyaXRhYmxlLCBhbGlhcyArICIgc2hvdWxkIGJlIHdyaXRhYmxlIik7CisgICAgICAgICAg
ICAgICAgICAgIGFzc2VydF9mYWxzZShkZXNjLmVudW1lcmFibGUsIGFsaWFzICsgIiBzaG91bGQg
bm90IGJlIGVudW1lcmFibGUiKTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X3RydWUoZGVz
Yy5jb25maWd1cmFibGUsIGFsaWFzICsgIiBzaG91bGQgYmUgY29uZmlndXJhYmxlIik7CisgICAg
ICAgICAgICAgICAgICAgIGFzc2VydF9mYWxzZSgnZ2V0JyBpbiBkZXNjLCBhbGlhcyArICIgc2hv
dWxkIG5vdCBoYXZlIGEgZ2V0dGVyIik7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydF9mYWxz
ZSgnc2V0JyBpbiBkZXNjLCBhbGlhcyArICIgc2hvdWxkIG5vdCBoYXZlIGEgc2V0dGVyIik7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBm
b3IgKGFsaWFzIG9mIGFsaWFzZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X2ZhbHNl
KGFsaWFzIGluIHNlbGYsIGFsaWFzICsgIiBzaG91bGQgbm90IGV4aXN0Iik7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBhc3NlcnRfb3duX3Byb3BlcnR5
KHNlbGZbdGhpcy5uYW1lXSwgIm5hbWUiKTsKLSAgICAgICAgICAgIHZhciBkZXNjID0gT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzZWxmW3RoaXMubmFtZV0sICJuYW1lIik7Ci0gICAg
ICAgICAgICBhc3NlcnRfZmFsc2UoImdldCIgaW4gZGVzYywgdGhpcy5uYW1lICsgIi5uYW1lIGhh
cyBnZXR0ZXIiKTsKLSAgICAgICAgICAgIGFzc2VydF9mYWxzZSgic2V0IiBpbiBkZXNjLCB0aGlz
Lm5hbWUgKyAiLm5hbWUgaGFzIHNldHRlciIpOwotICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKGRl
c2Mud3JpdGFibGUsIHRoaXMubmFtZSArICIubmFtZSBpcyB3cml0YWJsZSIpOwotICAgICAgICAg
ICAgYXNzZXJ0X2ZhbHNlKGRlc2MuZW51bWVyYWJsZSwgdGhpcy5uYW1lICsgIi5uYW1lIGlzIGVu
dW1lcmFibGUiKTsKLSAgICAgICAgICAgIGFzc2VydF90cnVlKGRlc2MuY29uZmlndXJhYmxlLCB0
aGlzLm5hbWUgKyAiLm5hbWUgaXMgbm90IGNvbmZpZ3VyYWJsZSIpOwotICAgICAgICAgICAgYXNz
ZXJ0X2VxdWFscyhzZWxmW3RoaXMubmFtZV0ubmFtZSwgdGhpcy5uYW1lLCAid3JvbmcgdmFsdWUg
Zm9yICIgKyB0aGlzLm5hbWUgKyAiLm5hbWUiKTsKLSAgICAgICAgfS5iaW5kKHRoaXMpLCB0aGlz
Lm5hbWUgKyAiIGludGVyZmFjZSBvYmplY3QgbmFtZSIpOworICAgICAgICB9LmJpbmQodGhpcyks
IHRoaXMubmFtZSArICIgaW50ZXJmYWNlOiBsZWdhY3kgd2luZG93IGFsaWFzIik7CiAgICAgfQog
Ci0gICAgLy8gVE9ETzogVGVzdCBuYW1lZCBjb25zdHJ1Y3RvcnMgaWYgSSBmaW5kIGFueSBpbnRl
cmZhY2VzIHRoYXQgaGF2ZSB0aGVtLgorICAgIGlmICh0aGlzLmhhc19leHRlbmRlZF9hdHRyaWJ1
dGUoIkxlZ2FjeUZhY3RvcnlGdW5jdGlvbiIpKSB7CisgICAgICAgIHZhciBjb25zdHJ1Y3RvcnMg
PSB0aGlzLmV4dEF0dHJzCisgICAgICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uKGF0dHIpIHsgcmV0
dXJuIGF0dHIubmFtZSA9PSAiTGVnYWN5RmFjdG9yeUZ1bmN0aW9uIjsgfSk7CisgICAgICAgIGlm
IChjb25zdHJ1Y3RvcnMubGVuZ3RoICE9PSAxKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWRs
SGFybmVzc0Vycm9yKCJJbnRlcm5hbCBlcnJvcjogbWlzc2luZyBzdXBwb3J0IGZvciBtdWx0aXBs
ZSBMZWdhY3lGYWN0b3J5RnVuY3Rpb24gZXh0ZW5kZWQgYXR0cmlidXRlcyIpOworICAgICAgICB9
CisgICAgICAgIHZhciBjb25zdHJ1Y3RvciA9IGNvbnN0cnVjdG9yc1swXTsKKyAgICAgICAgdmFy
IG1pbl9sZW5ndGggPSBtaW5PdmVybG9hZExlbmd0aChbY29uc3RydWN0b3JdKTsKKworICAgICAg
ICBzdWJzZXRUZXN0QnlLZXkodGhpcy5uYW1lLCB0ZXN0LCBmdW5jdGlvbigpCisgICAgICAgIHsK
KyAgICAgICAgICAgIC8vIFRoaXMgZnVuY3Rpb24gdGVzdHMgV2ViSURMIGFzIG9mIDIwMTktMDEt
MTQuCisKKyAgICAgICAgICAgIC8vICJmb3IgZXZlcnkgW0xlZ2FjeUZhY3RvcnlGdW5jdGlvbl0g
ZXh0ZW5kZWQgYXR0cmlidXRlIG9uIGFuIGV4cG9zZWQKKyAgICAgICAgICAgIC8vIGludGVyZmFj
ZSwgYSBjb3JyZXNwb25kaW5nIHByb3BlcnR5IG11c3QgZXhpc3Qgb24gdGhlIEVDTUFTY3JpcHQK
KyAgICAgICAgICAgIC8vIGdsb2JhbCBvYmplY3QuIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eSBp
cyB0aGUKKyAgICAgICAgICAgIC8vIFtMZWdhY3lGYWN0b3J5RnVuY3Rpb25dJ3MgaWRlbnRpZmll
ciwgYW5kIGl0cyB2YWx1ZSBpcyBhbiBvYmplY3QKKyAgICAgICAgICAgIC8vIGNhbGxlZCBhIG5h
bWVkIGNvbnN0cnVjdG9yLCAuLi4gLiBUaGUgcHJvcGVydHkgaGFzIHRoZSBhdHRyaWJ1dGVzCisg
ICAgICAgICAgICAvLyB7IFtbV3JpdGFibGVdXTogdHJ1ZSwgW1tFbnVtZXJhYmxlXV06IGZhbHNl
LAorICAgICAgICAgICAgLy8gW1tDb25maWd1cmFibGVdXTogdHJ1ZSB9LiIKKyAgICAgICAgICAg
IHZhciBuYW1lID0gY29uc3RydWN0b3IucmhzLnZhbHVlOworICAgICAgICAgICAgYXNzZXJ0X293
bl9wcm9wZXJ0eShzZWxmLCBuYW1lKTsKKyAgICAgICAgICAgIHZhciBkZXNjID0gT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihzZWxmLCBuYW1lKTsKKyAgICAgICAgICAgIGFzc2VydF9l
cXVhbHMoZGVzYy52YWx1ZSwgc2VsZltuYW1lXSwgIndyb25nIHZhbHVlIGluICIgKyBuYW1lICsg
IiBwcm9wZXJ0eSBkZXNjcmlwdG9yIik7CisgICAgICAgICAgICBhc3NlcnRfdHJ1ZShkZXNjLndy
aXRhYmxlLCBuYW1lICsgIiBzaG91bGQgYmUgd3JpdGFibGUiKTsKKyAgICAgICAgICAgIGFzc2Vy
dF9mYWxzZShkZXNjLmVudW1lcmFibGUsIG5hbWUgKyAiIHNob3VsZCBub3QgYmUgZW51bWVyYWJs
ZSIpOworICAgICAgICAgICAgYXNzZXJ0X3RydWUoZGVzYy5jb25maWd1cmFibGUsIG5hbWUgKyAi
IHNob3VsZCBiZSBjb25maWd1cmFibGUiKTsKKyAgICAgICAgICAgIGFzc2VydF9mYWxzZSgiZ2V0
IiBpbiBkZXNjLCBuYW1lICsgIiBzaG91bGQgbm90IGhhdmUgYSBnZXR0ZXIiKTsKKyAgICAgICAg
ICAgIGFzc2VydF9mYWxzZSgic2V0IiBpbiBkZXNjLCBuYW1lICsgIiBzaG91bGQgbm90IGhhdmUg
YSBzZXR0ZXIiKTsKKyAgICAgICAgfS5iaW5kKHRoaXMpLCB0aGlzLm5hbWUgKyAiIGludGVyZmFj
ZTogbmFtZWQgY29uc3RydWN0b3IiKTsKKworICAgICAgICBzdWJzZXRUZXN0QnlLZXkodGhpcy5u
YW1lLCB0ZXN0LCBmdW5jdGlvbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIFRoaXMgZnVu
Y3Rpb24gdGVzdHMgV2ViSURMIGFzIG9mIDIwMTktMDEtMTQuCisKKyAgICAgICAgICAgIC8vICIy
LiBMZXQgRiBiZSAhIENyZWF0ZUJ1aWx0aW5GdW5jdGlvbihyZWFsbSwgc3RlcHMsCisgICAgICAg
ICAgICAvLyAgICAgcmVhbG0uW1tJbnRyaW5zaWNzXV0uW1slRnVuY3Rpb25Qcm90b3R5cGUlXV0p
LiIKKyAgICAgICAgICAgIHZhciBuYW1lID0gY29uc3RydWN0b3IucmhzLnZhbHVlOworICAgICAg
ICAgICAgdmFyIHZhbHVlID0gc2VsZltuYW1lXTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMo
dHlwZW9mIHZhbHVlLCAiZnVuY3Rpb24iLCAidHlwZSBvZiB2YWx1ZSBpbiAiICsgbmFtZSArICIg
cHJvcGVydHkgZGVzY3JpcHRvciIpOworICAgICAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHModmFs
dWUsIHRoaXMuZ2V0X2ludGVyZmFjZV9vYmplY3QoKSwgIndyb25nIHZhbHVlIGluICIgKyBuYW1l
ICsgIiBwcm9wZXJ0eSBkZXNjcmlwdG9yIik7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKE9i
amVjdC5nZXRQcm90b3R5cGVPZih2YWx1ZSksIEZ1bmN0aW9uLnByb3RvdHlwZSwgIndyb25nIHZh
bHVlIGZvciAiICsgbmFtZSArICIncyBwcm90b3R5cGUiKTsKKyAgICAgICAgfS5iaW5kKHRoaXMp
LCB0aGlzLm5hbWUgKyAiIGludGVyZmFjZTogbmFtZWQgY29uc3RydWN0b3Igb2JqZWN0Iik7CisK
KyAgICAgICAgc3Vic2V0VGVzdEJ5S2V5KHRoaXMubmFtZSwgdGVzdCwgZnVuY3Rpb24oKQorICAg
ICAgICB7CisgICAgICAgICAgICAvLyBUaGlzIGZ1bmN0aW9uIHRlc3RzIFdlYklETCBhcyBvZiAy
MDE5LTAxLTE0LgorCisgICAgICAgICAgICAvLyAiNy4gTGV0IHByb3RvIGJlIHRoZSBpbnRlcmZh
Y2UgcHJvdG90eXBlIG9iamVjdCBvZiBpbnRlcmZhY2UgSQorICAgICAgICAgICAgLy8gICAgIGlu
IHJlYWxtLgorICAgICAgICAgICAgLy8gIjguIFBlcmZvcm0gISBEZWZpbmVQcm9wZXJ0eU9yVGhy
b3coRiwgInByb3RvdHlwZSIsCisgICAgICAgICAgICAvLyAgICAgUHJvcGVydHlEZXNjcmlwdG9y
eworICAgICAgICAgICAgLy8gICAgICAgICBbW1ZhbHVlXV06IHByb3RvLCBbW1dyaXRhYmxlXV06
IGZhbHNlLAorICAgICAgICAgICAgLy8gICAgICAgICBbW0VudW1lcmFibGVdXTogZmFsc2UsIFtb
Q29uZmlndXJhYmxlXV06IGZhbHNlCisgICAgICAgICAgICAvLyAgICAgfSkuIgorICAgICAgICAg
ICAgdmFyIG5hbWUgPSBjb25zdHJ1Y3Rvci5yaHMudmFsdWU7CisgICAgICAgICAgICB2YXIgZXhw
ZWN0ZWQgPSB0aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0KCkucHJvdG90eXBlOworICAgICAgICAg
ICAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNlbGZbbmFtZV0s
ICJwcm90b3R5cGUiKTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZGVzYy52YWx1ZSwgZXhw
ZWN0ZWQsICJ3cm9uZyB2YWx1ZSBmb3IgIiArIG5hbWUgKyAiLnByb3RvdHlwZSIpOworICAgICAg
ICAgICAgYXNzZXJ0X2ZhbHNlKGRlc2Mud3JpdGFibGUsICJwcm90b3R5cGUgc2hvdWxkIG5vdCBi
ZSB3cml0YWJsZSIpOworICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKGRlc2MuZW51bWVyYWJsZSwg
InByb3RvdHlwZSBzaG91bGQgbm90IGJlIGVudW1lcmFibGUiKTsKKyAgICAgICAgICAgIGFzc2Vy
dF9mYWxzZShkZXNjLmNvbmZpZ3VyYWJsZSwgInByb3RvdHlwZSBzaG91bGQgbm90IGJlIGNvbmZp
Z3VyYWJsZSIpOworICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKCJnZXQiIGluIGRlc2MsICJwcm90
b3R5cGUgc2hvdWxkIG5vdCBoYXZlIGEgZ2V0dGVyIik7CisgICAgICAgICAgICBhc3NlcnRfZmFs
c2UoInNldCIgaW4gZGVzYywgInByb3RvdHlwZSBzaG91bGQgbm90IGhhdmUgYSBzZXR0ZXIiKTsK
KyAgICAgICAgfS5iaW5kKHRoaXMpLCB0aGlzLm5hbWUgKyAiIGludGVyZmFjZTogbmFtZWQgY29u
c3RydWN0b3IgcHJvdG90eXBlIHByb3BlcnR5Iik7CisKKyAgICAgICAgc3Vic2V0VGVzdEJ5S2V5
KHRoaXMubmFtZSwgdGVzdCwgZnVuY3Rpb24oKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBU
aGlzIGZ1bmN0aW9uIHRlc3RzIFdlYklETCBhcyBvZiAyMDE5LTAxLTE0LgorCisgICAgICAgICAg
ICAvLyAiMy4gUGVyZm9ybSAhIFNldEZ1bmN0aW9uTmFtZShGLCBpZCkuIgorICAgICAgICAgICAg
dmFyIG5hbWUgPSBjb25zdHJ1Y3Rvci5yaHMudmFsdWU7CisgICAgICAgICAgICB2YXIgZGVzYyA9
IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc2VsZltuYW1lXSwgIm5hbWUiKTsKKyAg
ICAgICAgICAgIGFzc2VydF9lcXVhbHMoZGVzYy52YWx1ZSwgbmFtZSwgIndyb25nIHZhbHVlIGZv
ciAiICsgbmFtZSArICIubmFtZSIpOworICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKGRlc2Mud3Jp
dGFibGUsICJuYW1lIHNob3VsZCBub3QgYmUgd3JpdGFibGUiKTsKKyAgICAgICAgICAgIGFzc2Vy
dF9mYWxzZShkZXNjLmVudW1lcmFibGUsICJuYW1lIHNob3VsZCBub3QgYmUgZW51bWVyYWJsZSIp
OworICAgICAgICAgICAgYXNzZXJ0X3RydWUoZGVzYy5jb25maWd1cmFibGUsICJuYW1lIHNob3Vs
ZCBiZSBjb25maWd1cmFibGUiKTsKKyAgICAgICAgICAgIGFzc2VydF9mYWxzZSgiZ2V0IiBpbiBk
ZXNjLCAibmFtZSBzaG91bGQgbm90IGhhdmUgYSBnZXR0ZXIiKTsKKyAgICAgICAgICAgIGFzc2Vy
dF9mYWxzZSgic2V0IiBpbiBkZXNjLCAibmFtZSBzaG91bGQgbm90IGhhdmUgYSBzZXR0ZXIiKTsK
KyAgICAgICAgfS5iaW5kKHRoaXMpLCB0aGlzLm5hbWUgKyAiIGludGVyZmFjZTogbmFtZWQgY29u
c3RydWN0b3IgbmFtZSIpOworCisgICAgICAgIHN1YnNldFRlc3RCeUtleSh0aGlzLm5hbWUsIHRl
c3QsIGZ1bmN0aW9uKCkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gVGhpcyBmdW5jdGlvbiB0
ZXN0cyBXZWJJREwgYXMgb2YgMjAxOS0wMS0xNC4KKworICAgICAgICAgICAgLy8gIjQuIEluaXRp
YWxpemUgUyB0byB0aGUgZWZmZWN0aXZlIG92ZXJsb2FkIHNldCBmb3IgY29uc3RydWN0b3JzCisg
ICAgICAgICAgICAvLyAgICAgd2l0aCBpZGVudGlmaWVyIGlkIG9uIGludGVyZmFjZSBJIGFuZCB3
aXRoIGFyZ3VtZW50IGNvdW50IDAuCisgICAgICAgICAgICAvLyAiNS4gTGV0IGxlbmd0aCBiZSB0
aGUgbGVuZ3RoIG9mIHRoZSBzaG9ydGVzdCBhcmd1bWVudCBsaXN0IG9mCisgICAgICAgICAgICAv
LyAgICAgdGhlIGVudHJpZXMgaW4gUy4KKyAgICAgICAgICAgIC8vICI2LiBQZXJmb3JtICEgU2V0
RnVuY3Rpb25MZW5ndGgoRiwgbGVuZ3RoKS4iCisgICAgICAgICAgICB2YXIgbmFtZSA9IGNvbnN0
cnVjdG9yLnJocy52YWx1ZTsKKyAgICAgICAgICAgIHZhciBkZXNjID0gT2JqZWN0LmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihzZWxmW25hbWVdLCAibGVuZ3RoIik7CisgICAgICAgICAgICBhc3Nl
cnRfZXF1YWxzKGRlc2MudmFsdWUsIG1pbl9sZW5ndGgsICJ3cm9uZyB2YWx1ZSBmb3IgIiArIG5h
bWUgKyAiLmxlbmd0aCIpOworICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKGRlc2Mud3JpdGFibGUs
ICJsZW5ndGggc2hvdWxkIG5vdCBiZSB3cml0YWJsZSIpOworICAgICAgICAgICAgYXNzZXJ0X2Zh
bHNlKGRlc2MuZW51bWVyYWJsZSwgImxlbmd0aCBzaG91bGQgbm90IGJlIGVudW1lcmFibGUiKTsK
KyAgICAgICAgICAgIGFzc2VydF90cnVlKGRlc2MuY29uZmlndXJhYmxlLCAibGVuZ3RoIHNob3Vs
ZCBiZSBjb25maWd1cmFibGUiKTsKKyAgICAgICAgICAgIGFzc2VydF9mYWxzZSgiZ2V0IiBpbiBk
ZXNjLCAibGVuZ3RoIHNob3VsZCBub3QgaGF2ZSBhIGdldHRlciIpOworICAgICAgICAgICAgYXNz
ZXJ0X2ZhbHNlKCJzZXQiIGluIGRlc2MsICJsZW5ndGggc2hvdWxkIG5vdCBoYXZlIGEgc2V0dGVy
Iik7CisgICAgICAgIH0uYmluZCh0aGlzKSwgdGhpcy5uYW1lICsgIiBpbnRlcmZhY2U6IG5hbWVk
IGNvbnN0cnVjdG9yIGxlbmd0aCIpOworCisgICAgICAgIHN1YnNldFRlc3RCeUtleSh0aGlzLm5h
bWUsIHRlc3QsIGZ1bmN0aW9uKCkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gVGhpcyBmdW5j
dGlvbiB0ZXN0cyBXZWJJREwgYXMgb2YgMjAxOS0wMS0xNC4KKworICAgICAgICAgICAgLy8gIjEu
IExldCBzdGVwcyBiZSB0aGUgZm9sbG93aW5nIHN0ZXBzOgorICAgICAgICAgICAgLy8gIiAgICAx
LiBJZiBOZXdUYXJnZXQgaXMgdW5kZWZpbmVkLCB0aGVuIHRocm93IGEgVHlwZUVycm9yLiIKKyAg
ICAgICAgICAgIHZhciBuYW1lID0gY29uc3RydWN0b3IucmhzLnZhbHVlOworICAgICAgICAgICAg
dmFyIGFyZ3MgPSBjb25zdHJ1Y3Rvci5hcmd1bWVudHMubWFwKGZ1bmN0aW9uKGFyZykgeworICAg
ICAgICAgICAgICAgIHJldHVybiBjcmVhdGVfc3VpdGFibGVfb2JqZWN0KGFyZy5pZGxUeXBlKTsK
KyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhnbG9iYWxPZihz
ZWxmW25hbWVdKS5UeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHNlbGZb
bmFtZV0oLi4uYXJncyk7CisgICAgICAgICAgICB9LmJpbmQodGhpcykpOworICAgICAgICB9LmJp
bmQodGhpcyksIHRoaXMubmFtZSArICIgaW50ZXJmYWNlOiBuYW1lZCBjb25zdHJ1Y3RvciB3aXRo
b3V0ICduZXcnIik7CisgICAgfQogCi0gICAgdGVzdChmdW5jdGlvbigpCisgICAgc3Vic2V0VGVz
dEJ5S2V5KHRoaXMubmFtZSwgdGVzdCwgZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgLy8gVGhp
cyBmdW5jdGlvbiB0ZXN0cyBXZWJJREwgYXMgb2YgMjAxNS0wMS0yMS4KICAgICAgICAgLy8gaHR0
cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jaW50ZXJmYWNlLW9iamVjdAogCi0gICAgICAg
IGlmICh0aGlzLmlzX2NhbGxiYWNrKCkgJiYgIXRoaXMuaGFzX2NvbnN0YW50cygpKSB7CisgICAg
ICAgIGlmICghdGhpcy5zaG91bGRfaGF2ZV9pbnRlcmZhY2Vfb2JqZWN0KCkpIHsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGFzc2VydF9vd25fcHJvcGVydHkoc2Vs
ZiwgdGhpcy5uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZWxmIGRvZXMgbm90
IGhhdmUgb3duIHByb3BlcnR5ICIgKyBmb3JtYXRfdmFsdWUodGhpcy5uYW1lKSk7CisgICAgICAg
IHRoaXMuYXNzZXJ0X2ludGVyZmFjZV9vYmplY3RfZXhpc3RzKCk7CiAKICAgICAgICAgaWYgKHRo
aXMuaXNfY2FsbGJhY2soKSkgewotICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKCJwcm90b3R5cGUi
IGluIHNlbGZbdGhpcy5uYW1lXSwKKyAgICAgICAgICAgIGFzc2VydF9mYWxzZSgicHJvdG90eXBl
IiBpbiB0aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0KCksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGhpcy5uYW1lICsgJyBzaG91bGQgbm90IGhhdmUgYSAicHJvdG90eXBlIiBwcm9wZXJ0eScp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC05NTQsMTggKzE3NjAsMTggQEAg
SWRsSW50ZXJmYWNlLnByb3RvdHlwZS50ZXN0X3NlbGYgPSBmdW5jdGlvbigpCiAgICAgICAgIC8v
IHByb3BlcnRpZXMgdGhhdCBjb3JyZXNwb25kIHRvIHRoZSByZWd1bGFyIGF0dHJpYnV0ZXMgYW5k
IHJlZ3VsYXIKICAgICAgICAgLy8gb3BlcmF0aW9ucyBkZWZpbmVkIG9uIHRoZSBpbnRlcmZhY2Us
IGFuZCBpcyBkZXNjcmliZWQgaW4gbW9yZSBkZXRhaWwKICAgICAgICAgLy8gaW4gc2VjdGlvbiA0
LjUuNCBiZWxvdy4iCi0gICAgICAgIGFzc2VydF9vd25fcHJvcGVydHkoc2VsZlt0aGlzLm5hbWVd
LCAicHJvdG90eXBlIiwKKyAgICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0eSh0aGlzLmdldF9pbnRl
cmZhY2Vfb2JqZWN0KCksICJwcm90b3R5cGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdpbnRlcmZhY2UgIicgKyB0aGlzLm5hbWUgKyAnIiBkb2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0
eSAicHJvdG90eXBlIicpOwotICAgICAgICB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3Ioc2VsZlt0aGlzLm5hbWVdLCAicHJvdG90eXBlIik7Ci0gICAgICAgIGFzc2Vy
dF9mYWxzZSgiZ2V0IiBpbiBkZXNjLCB0aGlzLm5hbWUgKyAiLnByb3RvdHlwZSBoYXMgZ2V0dGVy
Iik7Ci0gICAgICAgIGFzc2VydF9mYWxzZSgic2V0IiBpbiBkZXNjLCB0aGlzLm5hbWUgKyAiLnBy
b3RvdHlwZSBoYXMgc2V0dGVyIik7Ci0gICAgICAgIGFzc2VydF9mYWxzZShkZXNjLndyaXRhYmxl
LCB0aGlzLm5hbWUgKyAiLnByb3RvdHlwZSBpcyB3cml0YWJsZSIpOwotICAgICAgICBhc3NlcnRf
ZmFsc2UoZGVzYy5lbnVtZXJhYmxlLCB0aGlzLm5hbWUgKyAiLnByb3RvdHlwZSBpcyBlbnVtZXJh
YmxlIik7Ci0gICAgICAgIGFzc2VydF9mYWxzZShkZXNjLmNvbmZpZ3VyYWJsZSwgdGhpcy5uYW1l
ICsgIi5wcm90b3R5cGUgaXMgY29uZmlndXJhYmxlIik7CisgICAgICAgIHZhciBkZXNjID0gT2Jq
ZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0KCks
ICJwcm90b3R5cGUiKTsKKyAgICAgICAgYXNzZXJ0X2ZhbHNlKCJnZXQiIGluIGRlc2MsIHRoaXMu
bmFtZSArICIucHJvdG90eXBlIHNob3VsZCBub3QgaGF2ZSBhIGdldHRlciIpOworICAgICAgICBh
c3NlcnRfZmFsc2UoInNldCIgaW4gZGVzYywgdGhpcy5uYW1lICsgIi5wcm90b3R5cGUgc2hvdWxk
IG5vdCBoYXZlIGEgc2V0dGVyIik7CisgICAgICAgIGFzc2VydF9mYWxzZShkZXNjLndyaXRhYmxl
LCB0aGlzLm5hbWUgKyAiLnByb3RvdHlwZSBzaG91bGQgbm90IGJlIHdyaXRhYmxlIik7CisgICAg
ICAgIGFzc2VydF9mYWxzZShkZXNjLmVudW1lcmFibGUsIHRoaXMubmFtZSArICIucHJvdG90eXBl
IHNob3VsZCBub3QgYmUgZW51bWVyYWJsZSIpOworICAgICAgICBhc3NlcnRfZmFsc2UoZGVzYy5j
b25maWd1cmFibGUsIHRoaXMubmFtZSArICIucHJvdG90eXBlIHNob3VsZCBub3QgYmUgY29uZmln
dXJhYmxlIik7CiAKICAgICAgICAgLy8gTmV4dCwgdGVzdCB0aGF0IHRoZSBbW1Byb3RvdHlwZV1d
IG9mIHRoZSBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdAogICAgICAgICAvLyBpcyBjb3JyZWN0
LiAoVGhpcyBpcyBtYWRlIHNvbWV3aGF0IGRpZmZpY3VsdCBieSB0aGUgZXhpc3RlbmNlIG9mCi0g
ICAgICAgIC8vIFtOb0ludGVyZmFjZU9iamVjdF0uKQorICAgICAgICAvLyBbTGVnYWN5Tm9JbnRl
cmZhY2VPYmplY3RdLikKICAgICAgICAgLy8gVE9ETzogQXJ5ZWggdGhpbmtzIHRoZXJlJ3MgYXQg
bGVhc3Qgb3RoZXIgcGxhY2UgaW4gdGhpcyBmaWxlIHdoZXJlCiAgICAgICAgIC8vICAgICAgIHdl
IHRyeSB0byBmaWd1cmUgb3V0IGlmIGFuIGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0IGlzCiAg
ICAgICAgIC8vICAgICAgIGNvcnJlY3QuIENvbnNvbGlkYXRlIHRoYXQgY29kZS4KQEAgLTk3Mywx
ODEgKzE3NzksMzkzIEBAIElkbEludGVyZmFjZS5wcm90b3R5cGUudGVzdF9zZWxmID0gZnVuY3Rp
b24oKQogICAgICAgICAvLyAiVGhlIGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0IGZvciBhIGdp
dmVuIGludGVyZmFjZSBBIG11c3QgaGF2ZSBhbgogICAgICAgICAvLyBpbnRlcm5hbCBbW1Byb3Rv
dHlwZV1dIHByb3BlcnR5IHdob3NlIHZhbHVlIGlzIHJldHVybmVkIGZyb20gdGhlCiAgICAgICAg
IC8vIGZvbGxvd2luZyBzdGVwczoKLSAgICAgICAgLy8gIklmIEEgaXMgZGVjbGFyZWQgd2l0aCB0
aGUgW0dsb2JhbF0gb3IgW1ByaW1hcnlHbG9iYWxdIGV4dGVuZGVkCisgICAgICAgIC8vICJJZiBB
IGlzIGRlY2xhcmVkIHdpdGggdGhlIFtHbG9iYWxdIGV4dGVuZGVkCiAgICAgICAgIC8vIGF0dHJp
YnV0ZSwgYW5kIEEgc3VwcG9ydHMgbmFtZWQgcHJvcGVydGllcywgdGhlbiByZXR1cm4gdGhlIG5h
bWVkCi0gICAgICAgIC8vIHByb3BlcnRpZXMgb2JqZWN0IGZvciBBLCBhcyBkZWZpbmVkIGluIHNl
Y3Rpb24gNC41LjUgYmVsb3cuCisgICAgICAgIC8vIHByb3BlcnRpZXMgb2JqZWN0IGZvciBBLCBh
cyBkZWZpbmVkIGluIMKnMy42LjQgTmFtZWQgcHJvcGVydGllcworICAgICAgICAvLyBvYmplY3Qu
CiAgICAgICAgIC8vICJPdGhlcndpc2UsIGlmIEEgaXMgZGVjbGFyZWQgdG8gaW5oZXJpdCBmcm9t
IGFub3RoZXIgaW50ZXJmYWNlLCB0aGVuCiAgICAgICAgIC8vIHJldHVybiB0aGUgaW50ZXJmYWNl
IHByb3RvdHlwZSBvYmplY3QgZm9yIHRoZSBpbmhlcml0ZWQgaW50ZXJmYWNlLgotICAgICAgICAv
LyAiT3RoZXJ3aXNlLCBpZiBBIGlzIGRlY2xhcmVkIHdpdGggdGhlIFtBcnJheUNsYXNzXSBleHRl
bmRlZAotICAgICAgICAvLyBhdHRyaWJ1dGUsIHRoZW4gcmV0dXJuICVBcnJheVByb3RvdHlwZSUg
KFtFQ01BLTI2Ml0sIHNlY3Rpb24KLSAgICAgICAgLy8gNi4xLjcuNCkuCi0gICAgICAgIC8vICJP
dGhlcndpc2UsIHJldHVybiAlT2JqZWN0UHJvdG90eXBlJSAoW0VDTUEtMjYyXSwgc2VjdGlvbiA2
LjEuNy40KS4KLSAgICAgICAgLy8gKFtFQ01BLTI2Ml0sIHNlY3Rpb24gMTUuMi40KS4KKyAgICAg
ICAgLy8gIk90aGVyd2lzZSwgcmV0dXJuICVPYmplY3RQcm90b3R5cGUlLgorICAgICAgICAvLwor
ICAgICAgICAvLyAiSW4gdGhlIEVDTUFTY3JpcHQgYmluZGluZywgdGhlIERPTUV4Y2VwdGlvbiB0
eXBlIGhhcyBzb21lIGFkZGl0aW9uYWwKKyAgICAgICAgLy8gcmVxdWlyZW1lbnRzOgorICAgICAg
ICAvLworICAgICAgICAvLyAgICAgIlVubGlrZSBub3JtYWwgaW50ZXJmYWNlIHR5cGVzLCB0aGUg
aW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QKKyAgICAgICAgLy8gICAgIGZvciBET01FeGNlcHRp
b24gbXVzdCBoYXZlIGFzIGl0cyBbW1Byb3RvdHlwZV1dIHRoZSBpbnRyaW5zaWMKKyAgICAgICAg
Ly8gICAgIG9iamVjdCAlRXJyb3JQcm90b3R5cGUlLiIKKyAgICAgICAgLy8KICAgICAgICAgaWYg
KHRoaXMubmFtZSA9PT0gIldpbmRvdyIpIHsKLSAgICAgICAgICAgIGFzc2VydF9jbGFzc19zdHJp
bmcoT2JqZWN0LmdldFByb3RvdHlwZU9mKHNlbGZbdGhpcy5uYW1lXS5wcm90b3R5cGUpLAorICAg
ICAgICAgICAgYXNzZXJ0X2NsYXNzX3N0cmluZyhPYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcy5n
ZXRfaW50ZXJmYWNlX29iamVjdCgpLnByb3RvdHlwZSksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdXaW5kb3dQcm9wZXJ0aWVzJywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ0NsYXNzIG5hbWUgZm9yIHByb3RvdHlwZSBvZiBXaW5kb3cnICsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJy5wcm90b3R5cGUgaXMgbm90ICJXaW5kb3dQcm9wZXJ0aWVz
IicpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgdmFyIGluaGVyaXRfaW50ZXJmYWNl
LCBpbmhlcml0X2ludGVyZmFjZV9oYXNfaW50ZXJmYWNlX29iamVjdDsKKyAgICAgICAgICAgIHZh
ciBpbmhlcml0X2ludGVyZmFjZSwgaW5oZXJpdF9pbnRlcmZhY2VfaW50ZXJmYWNlX29iamVjdDsK
ICAgICAgICAgICAgIGlmICh0aGlzLmJhc2UpIHsKICAgICAgICAgICAgICAgICBpbmhlcml0X2lu
dGVyZmFjZSA9IHRoaXMuYmFzZTsKLSAgICAgICAgICAgICAgICBpbmhlcml0X2ludGVyZmFjZV9o
YXNfaW50ZXJmYWNlX29iamVjdCA9Ci0gICAgICAgICAgICAgICAgICAgICF0aGlzLmFycmF5Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgLm1lbWJlcnNbaW5oZXJpdF9pbnRlcmZhY2VdCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgLmhhc19leHRlbmRlZF9hdHRyaWJ1dGUoIk5vSW50ZXJmYWNl
T2JqZWN0Iik7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaGFzX2V4dGVuZGVkX2F0dHJp
YnV0ZSgnQXJyYXlDbGFzcycpKSB7Ci0gICAgICAgICAgICAgICAgaW5oZXJpdF9pbnRlcmZhY2Ug
PSAnQXJyYXknOwotICAgICAgICAgICAgICAgIGluaGVyaXRfaW50ZXJmYWNlX2hhc19pbnRlcmZh
Y2Vfb2JqZWN0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB2YXIgcGFyZW50ID0gdGhpcy5hcnJh
eS5tZW1iZXJzW2luaGVyaXRfaW50ZXJmYWNlXTsKKyAgICAgICAgICAgICAgICBpZiAoIXBhcmVu
dC5oYXNfZXh0ZW5kZWRfYXR0cmlidXRlKCJMZWdhY3lOb0ludGVyZmFjZU9iamVjdCIpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIHBhcmVudC5hc3NlcnRfaW50ZXJmYWNlX29iamVjdF9leGlzdHMo
KTsKKyAgICAgICAgICAgICAgICAgICAgaW5oZXJpdF9pbnRlcmZhY2VfaW50ZXJmYWNlX29iamVj
dCA9IHBhcmVudC5nZXRfaW50ZXJmYWNlX29iamVjdCgpOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5uYW1lID09PSAiRE9NRXhjZXB0aW9uIikgeworICAg
ICAgICAgICAgICAgIGluaGVyaXRfaW50ZXJmYWNlID0gJ0Vycm9yJzsKKyAgICAgICAgICAgICAg
ICBpbmhlcml0X2ludGVyZmFjZV9pbnRlcmZhY2Vfb2JqZWN0ID0gc2VsZi5FcnJvcjsKICAgICAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgaW5oZXJpdF9pbnRlcmZhY2UgPSAnT2Jq
ZWN0JzsKLSAgICAgICAgICAgICAgICBpbmhlcml0X2ludGVyZmFjZV9oYXNfaW50ZXJmYWNlX29i
amVjdCA9IHRydWU7CisgICAgICAgICAgICAgICAgaW5oZXJpdF9pbnRlcmZhY2VfaW50ZXJmYWNl
X29iamVjdCA9IHNlbGYuT2JqZWN0OwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGlu
aGVyaXRfaW50ZXJmYWNlX2hhc19pbnRlcmZhY2Vfb2JqZWN0KSB7Ci0gICAgICAgICAgICAgICAg
YXNzZXJ0X293bl9wcm9wZXJ0eShzZWxmLCBpbmhlcml0X2ludGVyZmFjZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdzaG91bGQgaW5oZXJpdCBmcm9tICcgKyBpbmhlcml0
X2ludGVyZmFjZSArICcsIGJ1dCBzZWxmIGhhcyBubyBzdWNoIHByb3BlcnR5Jyk7Ci0gICAgICAg
ICAgICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0eShzZWxmW2luaGVyaXRfaW50ZXJmYWNlXSwgJ3By
b3RvdHlwZScsCisgICAgICAgICAgICBpZiAoaW5oZXJpdF9pbnRlcmZhY2VfaW50ZXJmYWNlX29i
amVjdCkgeworICAgICAgICAgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKGluaGVyaXRfaW50ZXJm
YWNlX2ludGVyZmFjZV9vYmplY3QsIHVuZGVmaW5lZCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnc2hvdWxkIGluaGVyaXQgZnJvbSAnICsgaW5oZXJpdF9pbnRlcmZhY2UgKyAn
LCBidXQgdGhlcmUgaXMgbm8gc3VjaCBwcm9wZXJ0eScpOworICAgICAgICAgICAgICAgIGFzc2Vy
dF9vd25fcHJvcGVydHkoaW5oZXJpdF9pbnRlcmZhY2VfaW50ZXJmYWNlX29iamVjdCwgJ3Byb3Rv
dHlwZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2hvdWxkIGluaGVy
aXQgZnJvbSAnICsgaW5oZXJpdF9pbnRlcmZhY2UgKyAnLCBidXQgdGhhdCBvYmplY3QgaGFzIG5v
ICJwcm90b3R5cGUiIHByb3BlcnR5Jyk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhP
YmplY3QuZ2V0UHJvdG90eXBlT2Yoc2VsZlt0aGlzLm5hbWVdLnByb3RvdHlwZSksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZWxmW2luaGVyaXRfaW50ZXJmYWNlXS5wcm90b3R5cGUs
CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhPYmplY3QuZ2V0UHJvdG90eXBlT2YodGhp
cy5nZXRfaW50ZXJmYWNlX29iamVjdCgpLnByb3RvdHlwZSksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbmhlcml0X2ludGVyZmFjZV9pbnRlcmZhY2Vfb2JqZWN0LnByb3RvdHlwZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcm90b3R5cGUgb2YgJyArIHRoaXMubmFt
ZSArICcucHJvdG90eXBlIGlzIG5vdCAnICsgaW5oZXJpdF9pbnRlcmZhY2UgKyAnLnByb3RvdHlw
ZScpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAvLyBXZSBjYW4ndCB0
ZXN0IHRoYXQgd2UgZ2V0IHRoZSBjb3JyZWN0IG9iamVjdCwgYmVjYXVzZSB0aGlzIGlzIHRoZQog
ICAgICAgICAgICAgICAgIC8vIG9ubHkgd2F5IHRvIGdldCBvdXIgaGFuZHMgb24gaXQuIFdlIG9u
bHkgdGVzdCB0aGF0IGl0cyBjbGFzcwogICAgICAgICAgICAgICAgIC8vIHN0cmluZywgYXQgbGVh
c3QsIGlzIGNvcnJlY3QuCi0gICAgICAgICAgICAgICAgYXNzZXJ0X2NsYXNzX3N0cmluZyhPYmpl
Y3QuZ2V0UHJvdG90eXBlT2Yoc2VsZlt0aGlzLm5hbWVdLnByb3RvdHlwZSksCisgICAgICAgICAg
ICAgICAgYXNzZXJ0X2NsYXNzX3N0cmluZyhPYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcy5nZXRf
aW50ZXJmYWNlX29iamVjdCgpLnByb3RvdHlwZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbmhlcml0X2ludGVyZmFjZSArICdQcm90b3R5cGUnLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ0NsYXNzIG5hbWUgZm9yIHByb3RvdHlwZSBvZiAnICsg
dGhpcy5uYW1lICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcucHJvdG90
eXBlIGlzIG5vdCAiJyArIGluaGVyaXRfaW50ZXJmYWNlICsgJ1Byb3RvdHlwZSInKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQorCisgICAgICAgIC8vICJUaGUgY2xhc3Mgc3RyaW5nIG9mIGFu
IGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0IGlzIHRoZQorICAgICAgICAvLyBjb25jYXRlbmF0
aW9uIG9mIHRoZSBpbnRlcmZhY2XigJlzIHF1YWxpZmllZCBpZGVudGlmaWVyIGFuZCB0aGUgc3Ry
aW5nCisgICAgICAgIC8vIOKAnFByb3RvdHlwZeKAnS4iCisKKyAgICAgICAgLy8gU2tpcCB0aGVz
ZSB0ZXN0cyBmb3Igbm93IGR1ZSB0byBhIHNwZWNpZmljYXRpb24gaXNzdWUgYWJvdXQKKyAgICAg
ICAgLy8gcHJvdG90eXBlIG5hbWUuCisgICAgICAgIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9CdWdz
L1B1YmxpYy9zaG93X2J1Zy5jZ2k/aWQ9MjgyNDQKKworICAgICAgICAvLyBhc3NlcnRfY2xhc3Nf
c3RyaW5nKHRoaXMuZ2V0X2ludGVyZmFjZV9vYmplY3QoKS5wcm90b3R5cGUsIHRoaXMuZ2V0X3F1
YWxpZmllZF9uYW1lKCkgKyAiUHJvdG90eXBlIiwKKyAgICAgICAgLy8gICAgICAgICAgICAgICAg
ICAgICAiY2xhc3Mgc3RyaW5nIG9mICIgKyB0aGlzLm5hbWUgKyAiLnByb3RvdHlwZSIpOworCisg
ICAgICAgIC8vIFN0cmluZygpIHNob3VsZCBlbmQgdXAgY2FsbGluZyB7fS50b1N0cmluZyBpZiBu
b3RoaW5nIGRlZmluZXMgYQorICAgICAgICAvLyBzdHJpbmdpZmllci4KKyAgICAgICAgaWYgKCF0
aGlzLmhhc19zdHJpbmdpZmllcigpKSB7CisgICAgICAgICAgICAvLyBhc3NlcnRfZXF1YWxzKFN0
cmluZyh0aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0KCkucHJvdG90eXBlKSwgIltvYmplY3QgIiAr
IHRoaXMuZ2V0X3F1YWxpZmllZF9uYW1lKCkgKyAiUHJvdG90eXBlXSIsCisgICAgICAgICAgICAv
LyAgICAgICAgICJTdHJpbmcoIiArIHRoaXMubmFtZSArICIucHJvdG90eXBlKSIpOworICAgICAg
ICB9CiAgICAgfS5iaW5kKHRoaXMpLCB0aGlzLm5hbWUgKyAiIGludGVyZmFjZTogZXhpc3RlbmNl
IGFuZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0Iik7CiAKLSAgICB0
ZXN0KGZ1bmN0aW9uKCkKKyAgICAvLyAiSWYgdGhlIGludGVyZmFjZSBpcyBkZWNsYXJlZCB3aXRo
IHRoZSBbR2xvYmFsXQorICAgIC8vIGV4dGVuZGVkIGF0dHJpYnV0ZSwgb3IgdGhlIGludGVyZmFj
ZSBpcyBpbiB0aGUgc2V0IG9mIGluaGVyaXRlZAorICAgIC8vIGludGVyZmFjZXMgZm9yIGFueSBv
dGhlciBpbnRlcmZhY2UgdGhhdCBpcyBkZWNsYXJlZCB3aXRoIG9uZSBvZiB0aGVzZQorICAgIC8v
IGF0dHJpYnV0ZXMsIHRoZW4gdGhlIGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0IG11c3QgYmUg
YW4gaW1tdXRhYmxlCisgICAgLy8gcHJvdG90eXBlIGV4b3RpYyBvYmplY3QuIgorICAgIC8vIGh0
dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2ludGVyZmFjZS1wcm90b3R5cGUtb2JqZWN0
CisgICAgaWYgKHRoaXMuaXNfZ2xvYmFsKCkpIHsKKyAgICAgICAgdGhpcy50ZXN0X2ltbXV0YWJs
ZV9wcm90b3R5cGUoImludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0IiwgdGhpcy5nZXRfaW50ZXJm
YWNlX29iamVjdCgpLnByb3RvdHlwZSk7CisgICAgfQorCisgICAgc3Vic2V0VGVzdEJ5S2V5KHRo
aXMubmFtZSwgdGVzdCwgZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgaWYgKHRoaXMuaXNfY2Fs
bGJhY2soKSAmJiAhdGhpcy5oYXNfY29uc3RhbnRzKCkpIHsKKyAgICAgICAgaWYgKCF0aGlzLnNo
b3VsZF9oYXZlX2ludGVyZmFjZV9vYmplY3QoKSkgewogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKLSAgICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0eShzZWxmLCB0aGlzLm5hbWUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgInNlbGYgZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVy
dHkgIiArIGZvcm1hdF92YWx1ZSh0aGlzLm5hbWUpKTsKKyAgICAgICAgdGhpcy5hc3NlcnRfaW50
ZXJmYWNlX29iamVjdF9leGlzdHMoKTsKIAogICAgICAgICBpZiAodGhpcy5pc19jYWxsYmFjaygp
KSB7Ci0gICAgICAgICAgICBhc3NlcnRfZmFsc2UoInByb3RvdHlwZSIgaW4gc2VsZlt0aGlzLm5h
bWVdLAorICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKCJwcm90b3R5cGUiIGluIHRoaXMuZ2V0X2lu
dGVyZmFjZV9vYmplY3QoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5hbWUgKyAn
IHNob3VsZCBub3QgaGF2ZSBhICJwcm90b3R5cGUiIHByb3BlcnR5Jyk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KHNlbGZbdGhp
cy5uYW1lXSwgInByb3RvdHlwZSIsCisgICAgICAgIGFzc2VydF9vd25fcHJvcGVydHkodGhpcy5n
ZXRfaW50ZXJmYWNlX29iamVjdCgpLCAicHJvdG90eXBlIiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnaW50ZXJmYWNlICInICsgdGhpcy5uYW1lICsgJyIgZG9lcyBub3QgaGF2ZSBvd24g
cHJvcGVydHkgInByb3RvdHlwZSInKTsKIAotICAgICAgICAvLyAiSWYgdGhlIFtOb0ludGVyZmFj
ZU9iamVjdF0gZXh0ZW5kZWQgYXR0cmlidXRlIHdhcyBub3Qgc3BlY2lmaWVkIG9uCi0gICAgICAg
IC8vIHRoZSBpbnRlcmZhY2UsIHRoZW4gdGhlIGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0IG11
c3QgYWxzbyBoYXZlIGEKKyAgICAgICAgLy8gIklmIHRoZSBbTGVnYWN5Tm9JbnRlcmZhY2VPYmpl
Y3RdIGV4dGVuZGVkIGF0dHJpYnV0ZSB3YXMgbm90IHNwZWNpZmllZAorICAgICAgICAvLyBvbiB0
aGUgaW50ZXJmYWNlLCB0aGVuIHRoZSBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCBtdXN0IGFs
c28gaGF2ZSBhCiAgICAgICAgIC8vIHByb3BlcnR5IG5hbWVkIOKAnGNvbnN0cnVjdG9y4oCdIHdp
dGggYXR0cmlidXRlcyB7IFtbV3JpdGFibGVdXTogdHJ1ZSwKICAgICAgICAgLy8gW1tFbnVtZXJh
YmxlXV06IGZhbHNlLCBbW0NvbmZpZ3VyYWJsZV1dOiB0cnVlIH0gd2hvc2UgdmFsdWUgaXMgYQog
ICAgICAgICAvLyByZWZlcmVuY2UgdG8gdGhlIGludGVyZmFjZSBvYmplY3QgZm9yIHRoZSBpbnRl
cmZhY2UuIgotICAgICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KHNlbGZbdGhpcy5uYW1lXS5wcm90
b3R5cGUsICJjb25zdHJ1Y3RvciIsCisgICAgICAgIGFzc2VydF9vd25fcHJvcGVydHkodGhpcy5n
ZXRfaW50ZXJmYWNlX29iamVjdCgpLnByb3RvdHlwZSwgImNvbnN0cnVjdG9yIiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0aGlzLm5hbWUgKyAnLnByb3RvdHlwZSBkb2VzIG5vdCBoYXZl
IG93biBwcm9wZXJ0eSAiY29uc3RydWN0b3IiJyk7Ci0gICAgICAgIHZhciBkZXNjID0gT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzZWxmW3RoaXMubmFtZV0ucHJvdG90eXBlLCAiY29u
c3RydWN0b3IiKTsKLSAgICAgICAgYXNzZXJ0X2ZhbHNlKCJnZXQiIGluIGRlc2MsIHRoaXMubmFt
ZSArICIucHJvdG90eXBlLmNvbnN0cnVjdG9yIGhhcyBnZXR0ZXIiKTsKLSAgICAgICAgYXNzZXJ0
X2ZhbHNlKCJzZXQiIGluIGRlc2MsIHRoaXMubmFtZSArICIucHJvdG90eXBlLmNvbnN0cnVjdG9y
IGhhcyBzZXR0ZXIiKTsKLSAgICAgICAgYXNzZXJ0X3RydWUoZGVzYy53cml0YWJsZSwgdGhpcy5u
YW1lICsgIi5wcm90b3R5cGUuY29uc3RydWN0b3IgaXMgbm90IHdyaXRhYmxlIik7Ci0gICAgICAg
IGFzc2VydF9mYWxzZShkZXNjLmVudW1lcmFibGUsIHRoaXMubmFtZSArICIucHJvdG90eXBlLmNv
bnN0cnVjdG9yIGlzIGVudW1lcmFibGUiKTsKLSAgICAgICAgYXNzZXJ0X3RydWUoZGVzYy5jb25m
aWd1cmFibGUsIHRoaXMubmFtZSArICIucHJvdG90eXBlLmNvbnN0cnVjdG9yIGluIG5vdCBjb25m
aWd1cmFibGUiKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhzZWxmW3RoaXMubmFtZV0ucHJvdG90
eXBlLmNvbnN0cnVjdG9yLCBzZWxmW3RoaXMubmFtZV0sCisgICAgICAgIHZhciBkZXNjID0gT2Jq
ZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0KCku
cHJvdG90eXBlLCAiY29uc3RydWN0b3IiKTsKKyAgICAgICAgYXNzZXJ0X2ZhbHNlKCJnZXQiIGlu
IGRlc2MsIHRoaXMubmFtZSArICIucHJvdG90eXBlLmNvbnN0cnVjdG9yIHNob3VsZCBub3QgaGF2
ZSBhIGdldHRlciIpOworICAgICAgICBhc3NlcnRfZmFsc2UoInNldCIgaW4gZGVzYywgdGhpcy5u
YW1lICsgIi5wcm90b3R5cGUuY29uc3RydWN0b3Igc2hvdWxkIG5vdCBoYXZlIGEgc2V0dGVyIik7
CisgICAgICAgIGFzc2VydF90cnVlKGRlc2Mud3JpdGFibGUsIHRoaXMubmFtZSArICIucHJvdG90
eXBlLmNvbnN0cnVjdG9yIHNob3VsZCBiZSB3cml0YWJsZSIpOworICAgICAgICBhc3NlcnRfZmFs
c2UoZGVzYy5lbnVtZXJhYmxlLCB0aGlzLm5hbWUgKyAiLnByb3RvdHlwZS5jb25zdHJ1Y3RvciBz
aG91bGQgbm90IGJlIGVudW1lcmFibGUiKTsKKyAgICAgICAgYXNzZXJ0X3RydWUoZGVzYy5jb25m
aWd1cmFibGUsIHRoaXMubmFtZSArICIucHJvdG90eXBlLmNvbnN0cnVjdG9yIHNob3VsZCBiZSBj
b25maWd1cmFibGUiKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyh0aGlzLmdldF9pbnRlcmZhY2Vf
b2JqZWN0KCkucHJvdG90eXBlLmNvbnN0cnVjdG9yLCB0aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0
KCksCiAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uYW1lICsgJy5wcm90b3R5cGUuY29uc3Ry
dWN0b3IgaXMgbm90IHRoZSBzYW1lIG9iamVjdCBhcyAnICsgdGhpcy5uYW1lKTsKICAgICB9LmJp
bmQodGhpcyksIHRoaXMubmFtZSArICcgaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRp
ZXMgb2YgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3RcJ3MgImNvbnN0cnVjdG9yIiBwcm9wZXJ0
eScpOworCisKKyAgICBzdWJzZXRUZXN0QnlLZXkodGhpcy5uYW1lLCB0ZXN0LCBmdW5jdGlvbigp
CisgICAgeworICAgICAgICBpZiAoIXRoaXMuc2hvdWxkX2hhdmVfaW50ZXJmYWNlX29iamVjdCgp
KSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB0aGlzLmFzc2Vy
dF9pbnRlcmZhY2Vfb2JqZWN0X2V4aXN0cygpOworCisgICAgICAgIGlmICh0aGlzLmlzX2NhbGxi
YWNrKCkpIHsKKyAgICAgICAgICAgIGFzc2VydF9mYWxzZSgicHJvdG90eXBlIiBpbiB0aGlzLmdl
dF9pbnRlcmZhY2Vfb2JqZWN0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uYW1l
ICsgJyBzaG91bGQgbm90IGhhdmUgYSAicHJvdG90eXBlIiBwcm9wZXJ0eScpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0eSh0aGlz
LmdldF9pbnRlcmZhY2Vfb2JqZWN0KCksICJwcm90b3R5cGUiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdpbnRlcmZhY2UgIicgKyB0aGlzLm5hbWUgKyAnIiBkb2VzIG5vdCBoYXZlIG93
biBwcm9wZXJ0eSAicHJvdG90eXBlIicpOworCisgICAgICAgIC8vIElmIHRoZSBpbnRlcmZhY2Ug
aGFzIGFueSBtZW1iZXIgZGVjbGFyZWQgd2l0aCB0aGUgW1Vuc2NvcGFibGVdIGV4dGVuZGVkCisg
ICAgICAgIC8vIGF0dHJpYnV0ZSwgdGhlbiB0aGVyZSBtdXN0IGJlIGEgcHJvcGVydHkgb24gdGhl
IGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0CisgICAgICAgIC8vIHdob3NlIG5hbWUgaXMgdGhl
IEBAdW5zY29wYWJsZXMgc3ltYm9sLCB3aGljaCBoYXMgdGhlIGF0dHJpYnV0ZXMKKyAgICAgICAg
Ly8geyBbW1dyaXRhYmxlXV06IGZhbHNlLCBbW0VudW1lcmFibGVdXTogZmFsc2UsIFtbQ29uZmln
dXJhYmxlXV06IHRydWUgfSwKKyAgICAgICAgLy8gYW5kIHdob3NlIHZhbHVlIGlzIGFuIG9iamVj
dCBjcmVhdGVkIGFzIGZvbGxvd3MuLi4KKyAgICAgICAgdmFyIHVuc2NvcGFibGVzID0gdGhpcy5n
ZXRfdW5zY29wYWJsZXMoKS5tYXAobSA9PiBtLm5hbWUpOworICAgICAgICB2YXIgcHJvdG8gPSB0
aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0KCkucHJvdG90eXBlOworICAgICAgICBpZiAodW5zY29w
YWJsZXMubGVuZ3RoICE9IDApIHsKKyAgICAgICAgICAgIGFzc2VydF9vd25fcHJvcGVydHkoCisg
ICAgICAgICAgICAgICAgcHJvdG8sIFN5bWJvbC51bnNjb3BhYmxlcywKKyAgICAgICAgICAgICAg
ICB0aGlzLm5hbWUgKyAnLnByb3RvdHlwZSBzaG91bGQgaGF2ZSBhbiBAQHVuc2NvcGFibGVzIHBy
b3BlcnR5Jyk7CisgICAgICAgICAgICB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IocHJvdG8sIFN5bWJvbC51bnNjb3BhYmxlcyk7CisgICAgICAgICAgICBhc3NlcnRf
ZmFsc2UoImdldCIgaW4gZGVzYywKKyAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5hbWUg
KyAiLnByb3RvdHlwZVtTeW1ib2wudW5zY29wYWJsZXNdIHNob3VsZCBub3QgaGF2ZSBhIGdldHRl
ciIpOworICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKCJzZXQiIGluIGRlc2MsIHRoaXMubmFtZSAr
ICIucHJvdG90eXBlW1N5bWJvbC51bnNjb3BhYmxlc10gc2hvdWxkIG5vdCBoYXZlIGEgc2V0dGVy
Iik7CisgICAgICAgICAgICBhc3NlcnRfZmFsc2UoZGVzYy53cml0YWJsZSwgdGhpcy5uYW1lICsg
Ii5wcm90b3R5cGVbU3ltYm9sLnVuc2NvcGFibGVzXSBzaG91bGQgbm90IGJlIHdyaXRhYmxlIik7
CisgICAgICAgICAgICBhc3NlcnRfZmFsc2UoZGVzYy5lbnVtZXJhYmxlLCB0aGlzLm5hbWUgKyAi
LnByb3RvdHlwZVtTeW1ib2wudW5zY29wYWJsZXNdIHNob3VsZCBub3QgYmUgZW51bWVyYWJsZSIp
OworICAgICAgICAgICAgYXNzZXJ0X3RydWUoZGVzYy5jb25maWd1cmFibGUsIHRoaXMubmFtZSAr
ICIucHJvdG90eXBlW1N5bWJvbC51bnNjb3BhYmxlc10gc2hvdWxkIGJlIGNvbmZpZ3VyYWJsZSIp
OworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhkZXNjLnZhbHVlLCBwcm90b1tTeW1ib2wudW5z
Y29wYWJsZXNdLAorICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5hbWUgKyAnLnByb3Rv
dHlwZVtTeW1ib2wudW5zY29wYWJsZXNdIHNob3VsZCBiZSBpbiB0aGUgZGVzY3JpcHRvcicpOwor
ICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgZGVzYy52YWx1ZSwgIm9iamVjdCIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmFtZSArICcucHJvdG90eXBlW1N5bWJvbC51
bnNjb3BhYmxlc10gc2hvdWxkIGJlIGFuIG9iamVjdCcpOworICAgICAgICAgICAgYXNzZXJ0X2Vx
dWFscyhPYmplY3QuZ2V0UHJvdG90eXBlT2YoZGVzYy52YWx1ZSksIG51bGwsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRoaXMubmFtZSArICcucHJvdG90eXBlW1N5bWJvbC51bnNjb3BhYmxl
c10gc2hvdWxkIGhhdmUgYSBudWxsIHByb3RvdHlwZScpOworICAgICAgICAgICAgYXNzZXJ0X2Vx
dWFscyhPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGRlc2MudmFsdWUpLmxlbmd0aCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdGhp
cy5uYW1lICsgJy5wcm90b3R5cGVbU3ltYm9sLnVuc2NvcGFibGVzXSBzaG91bGQgaGF2ZSB0aGUg
cmlnaHQgbnVtYmVyIG9mIHN5bWJvbC1uYW1lZCBwcm9wZXJ0aWVzJyk7CisKKyAgICAgICAgICAg
IC8vIENoZWNrIHRoYXQgd2UgZG8gbm90IGhhdmUgX2V4dHJhXyB1bnNjb3BhYmxlcy4gIENoZWNr
aW5nIHRoYXQgd2UKKyAgICAgICAgICAgIC8vIGhhdmUgYWxsIHRoZSBvbmVzIHdlIHNob3VsZCB3
aWxsIGhhcHBlbiBpbiB0aGUgcGVyLW1lbWJlciB0ZXN0cy4KKyAgICAgICAgICAgIHZhciBvYnNl
cnZlZCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGRlc2MudmFsdWUpOworICAgICAgICAg
ICAgZm9yICh2YXIgcHJvcCBvZiBvYnNlcnZlZCkgeworICAgICAgICAgICAgICAgIGFzc2VydF9u
b3RfZXF1YWxzKHVuc2NvcGFibGVzLmluZGV4T2YocHJvcCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhp
cy5uYW1lICsgJy5wcm90b3R5cGVbU3ltYm9sLnVuc2NvcGFibGVzXSBoYXMgdW5leHBlY3RlZCBw
cm9wZXJ0eSAiJyArIHByb3AgKyAnIicpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKHRoaXMuZ2V0X2ludGVyZmFjZV9vYmplY3QoKS5wcm90b3R5cGUsIFN5bWJvbC51bnNjb3Bh
YmxlcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGhpcy5uYW1lICsgJy5wcm90b3R5cGUgc2hvdWxkIG5vdCBoYXZlIEBA
dW5zY29wYWJsZXMnKTsKKyAgICAgICAgfQorICAgIH0uYmluZCh0aGlzKSwgdGhpcy5uYW1lICsg
JyBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2UgcHJvdG90
eXBlIG9iamVjdFwncyBAQHVuc2NvcGFibGVzIHByb3BlcnR5Jyk7Cit9OworCitJZGxJbnRlcmZh
Y2UucHJvdG90eXBlLnRlc3RfaW1tdXRhYmxlX3Byb3RvdHlwZSA9IGZ1bmN0aW9uKHR5cGUsIG9i
aikKK3sKKyAgICBpZiAodHlwZW9mIE9iamVjdC5zZXRQcm90b3R5cGVPZiAhPT0gImZ1bmN0aW9u
IikgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc3Vic2V0VGVzdEJ5S2V5KHRoaXMu
bmFtZSwgdGVzdCwgZnVuY3Rpb24odCkgeworICAgICAgICB2YXIgb3JpZ2luYWxWYWx1ZSA9IE9i
amVjdC5nZXRQcm90b3R5cGVPZihvYmopOworICAgICAgICB2YXIgbmV3VmFsdWUgPSBPYmplY3Qu
Y3JlYXRlKG51bGwpOworCisgICAgICAgIHQuYWRkX2NsZWFudXAoZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZihvYmos
IG9yaWdpbmFsVmFsdWUpOworICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7fQorICAgICAgICB9
KTsKKworICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2JqLCBuZXdWYWx1ZSk7CisgICAgICAg
IH0pOworCisgICAgICAgIGFzc2VydF9lcXVhbHMoCisgICAgICAgICAgICAgICAgT2JqZWN0Lmdl
dFByb3RvdHlwZU9mKG9iaiksCisgICAgICAgICAgICAgICAgb3JpZ2luYWxWYWx1ZSwKKyAgICAg
ICAgICAgICAgICAib3JpZ2luYWwgdmFsdWUgbm90IG1vZGlmaWVkIgorICAgICAgICAgICAgKTsK
KyAgICB9LmJpbmQodGhpcyksIHRoaXMubmFtZSArICIgaW50ZXJmYWNlOiBpbnRlcm5hbCBbW1Nl
dFByb3RvdHlwZU9mXV0gbWV0aG9kICIgKworICAgICAgICAib2YgIiArIHR5cGUgKyAiIC0gc2V0
dGluZyB0byBhIG5ldyB2YWx1ZSB2aWEgT2JqZWN0LnNldFByb3RvdHlwZU9mICIgKworICAgICAg
ICAic2hvdWxkIHRocm93IGEgVHlwZUVycm9yIik7CisKKyAgICBzdWJzZXRUZXN0QnlLZXkodGhp
cy5uYW1lLCB0ZXN0LCBmdW5jdGlvbih0KSB7CisgICAgICAgIHZhciBvcmlnaW5hbFZhbHVlID0g
T2JqZWN0LmdldFByb3RvdHlwZU9mKG9iaik7CisgICAgICAgIHZhciBuZXdWYWx1ZSA9IE9iamVj
dC5jcmVhdGUobnVsbCk7CisKKyAgICAgICAgdC5hZGRfY2xlYW51cChmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgIGxldCBzZXR0ZXIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKAor
ICAgICAgICAgICAgICAgIE9iamVjdC5wcm90b3R5cGUsICdfX3Byb3RvX18nCisgICAgICAgICAg
ICApLnNldDsKKworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBzZXR0ZXIuY2Fs
bChvYmosIG9yaWdpbmFsVmFsdWUpOworICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7fQorICAg
ICAgICB9KTsKKworICAgICAgICAvLyBXZSBuZWVkIHRvIGZpbmQgdGhlIGFjdHVhbCBzZXR0ZXIg
Zm9yIHRoZSAnX19wcm90b19fJyBwcm9wZXJ0eSwgc28gd2UKKyAgICAgICAgLy8gY2FuIGRldGVy
bWluZSB0aGUgcmlnaHQgZ2xvYmFsIGZvciBpdC4gIFdhbGsgdXAgdGhlIHByb3RvdHlwZSBjaGFp
bgorICAgICAgICAvLyBsb29raW5nIGZvciB0aGF0IHByb3BlcnR5IHVudGlsIHdlIGZpbmQgaXQu
CisgICAgICAgIGxldCBzZXR0ZXI7CisgICAgICAgIHsKKyAgICAgICAgICAgIGxldCBjdXIgPSBv
Ymo7CisgICAgICAgICAgICB3aGlsZSAoY3VyKSB7CisgICAgICAgICAgICAgICAgY29uc3QgZGVz
YyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoY3VyLCAiX19wcm90b19fIik7Cisg
ICAgICAgICAgICAgICAgaWYgKGRlc2MpIHsKKyAgICAgICAgICAgICAgICAgICAgc2V0dGVyID0g
ZGVzYy5zZXQ7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBjdXIgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoY3VyKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKGdsb2JhbE9mKHNl
dHRlcikuVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIG9iai5fX3Byb3RvX18g
PSBuZXdWYWx1ZTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgYXNzZXJ0X2VxdWFscygKKyAgICAg
ICAgICAgICAgICBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqKSwKKyAgICAgICAgICAgICAgICBv
cmlnaW5hbFZhbHVlLAorICAgICAgICAgICAgICAgICJvcmlnaW5hbCB2YWx1ZSBub3QgbW9kaWZp
ZWQiCisgICAgICAgICAgICApOworICAgIH0uYmluZCh0aGlzKSwgdGhpcy5uYW1lICsgIiBpbnRl
cmZhY2U6IGludGVybmFsIFtbU2V0UHJvdG90eXBlT2ZdXSBtZXRob2QgIiArCisgICAgICAgICJv
ZiAiICsgdHlwZSArICIgLSBzZXR0aW5nIHRvIGEgbmV3IHZhbHVlIHZpYSBfX3Byb3RvX18gIiAr
CisgICAgICAgICJzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3IiKTsKKworICAgIHN1YnNldFRlc3RC
eUtleSh0aGlzLm5hbWUsIHRlc3QsIGZ1bmN0aW9uKHQpIHsKKyAgICAgICAgdmFyIG9yaWdpbmFs
VmFsdWUgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqKTsKKyAgICAgICAgdmFyIG5ld1ZhbHVl
ID0gT2JqZWN0LmNyZWF0ZShudWxsKTsKKworICAgICAgICB0LmFkZF9jbGVhbnVwKGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBSZWZsZWN0LnNldFByb3Rv
dHlwZU9mKG9iaiwgb3JpZ2luYWxWYWx1ZSk7CisgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHt9
CisgICAgICAgIH0pOworCisgICAgICAgIGFzc2VydF9mYWxzZShSZWZsZWN0LnNldFByb3RvdHlw
ZU9mKG9iaiwgbmV3VmFsdWUpKTsKKworICAgICAgICBhc3NlcnRfZXF1YWxzKAorICAgICAgICAg
ICAgICAgIE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmopLAorICAgICAgICAgICAgICAgIG9yaWdp
bmFsVmFsdWUsCisgICAgICAgICAgICAgICAgIm9yaWdpbmFsIHZhbHVlIG5vdCBtb2RpZmllZCIK
KyAgICAgICAgICAgICk7CisgICAgfS5iaW5kKHRoaXMpLCB0aGlzLm5hbWUgKyAiIGludGVyZmFj
ZTogaW50ZXJuYWwgW1tTZXRQcm90b3R5cGVPZl1dIG1ldGhvZCAiICsKKyAgICAgICAgIm9mICIg
KyB0eXBlICsgIiAtIHNldHRpbmcgdG8gYSBuZXcgdmFsdWUgdmlhIFJlZmxlY3Quc2V0UHJvdG90
eXBlT2YgIiArCisgICAgICAgICJzaG91bGQgcmV0dXJuIGZhbHNlIik7CisKKyAgICBzdWJzZXRU
ZXN0QnlLZXkodGhpcy5uYW1lLCB0ZXN0LCBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIG9yaWdp
bmFsVmFsdWUgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqKTsKKworICAgICAgICBPYmplY3Qu
c2V0UHJvdG90eXBlT2Yob2JqLCBvcmlnaW5hbFZhbHVlKTsKKyAgICB9LmJpbmQodGhpcyksIHRo
aXMubmFtZSArICIgaW50ZXJmYWNlOiBpbnRlcm5hbCBbW1NldFByb3RvdHlwZU9mXV0gbWV0aG9k
ICIgKworICAgICAgICAib2YgIiArIHR5cGUgKyAiIC0gc2V0dGluZyB0byBpdHMgb3JpZ2luYWwg
dmFsdWUgdmlhIE9iamVjdC5zZXRQcm90b3R5cGVPZiAiICsKKyAgICAgICAgInNob3VsZCBub3Qg
dGhyb3ciKTsKKworICAgIHN1YnNldFRlc3RCeUtleSh0aGlzLm5hbWUsIHRlc3QsIGZ1bmN0aW9u
KCkgeworICAgICAgICB2YXIgb3JpZ2luYWxWYWx1ZSA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihv
YmopOworCisgICAgICAgIG9iai5fX3Byb3RvX18gPSBvcmlnaW5hbFZhbHVlOworICAgIH0uYmlu
ZCh0aGlzKSwgdGhpcy5uYW1lICsgIiBpbnRlcmZhY2U6IGludGVybmFsIFtbU2V0UHJvdG90eXBl
T2ZdXSBtZXRob2QgIiArCisgICAgICAgICJvZiAiICsgdHlwZSArICIgLSBzZXR0aW5nIHRvIGl0
cyBvcmlnaW5hbCB2YWx1ZSB2aWEgX19wcm90b19fICIgKworICAgICAgICAic2hvdWxkIG5vdCB0
aHJvdyIpOworCisgICAgc3Vic2V0VGVzdEJ5S2V5KHRoaXMubmFtZSwgdGVzdCwgZnVuY3Rpb24o
KSB7CisgICAgICAgIHZhciBvcmlnaW5hbFZhbHVlID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKG9i
aik7CisKKyAgICAgICAgYXNzZXJ0X3RydWUoUmVmbGVjdC5zZXRQcm90b3R5cGVPZihvYmosIG9y
aWdpbmFsVmFsdWUpKTsKKyAgICB9LmJpbmQodGhpcyksIHRoaXMubmFtZSArICIgaW50ZXJmYWNl
OiBpbnRlcm5hbCBbW1NldFByb3RvdHlwZU9mXV0gbWV0aG9kICIgKworICAgICAgICAib2YgIiAr
IHR5cGUgKyAiIC0gc2V0dGluZyB0byBpdHMgb3JpZ2luYWwgdmFsdWUgdmlhIFJlZmxlY3Quc2V0
UHJvdG90eXBlT2YgIiArCisgICAgICAgICJzaG91bGQgcmV0dXJuIHRydWUiKTsKIH07CiAKLS8v
QH0KIElkbEludGVyZmFjZS5wcm90b3R5cGUudGVzdF9tZW1iZXJfY29uc3QgPSBmdW5jdGlvbiht
ZW1iZXIpCi0vL0B7CiB7CiAgICAgaWYgKCF0aGlzLmhhc19jb25zdGFudHMoKSkgewotICAgICAg
ICB0aHJvdyAiSW50ZXJuYWwgZXJyb3I6IHRlc3RfbWVtYmVyX2NvbnN0IGNhbGxlZCB3aXRob3V0
IGFueSBjb25zdGFudHMiOworICAgICAgICB0aHJvdyBuZXcgSWRsSGFybmVzc0Vycm9yKCJJbnRl
cm5hbCBlcnJvcjogdGVzdF9tZW1iZXJfY29uc3QgY2FsbGVkIHdpdGhvdXQgYW55IGNvbnN0YW50
cyIpOwogICAgIH0KIAotICAgIHRlc3QoZnVuY3Rpb24oKQorICAgIHN1YnNldFRlc3RCeUtleSh0
aGlzLm5hbWUsIHRlc3QsIGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIGFzc2VydF9vd25fcHJv
cGVydHkoc2VsZiwgdGhpcy5uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZWxm
IGRvZXMgbm90IGhhdmUgb3duIHByb3BlcnR5ICIgKyBmb3JtYXRfdmFsdWUodGhpcy5uYW1lKSk7
CisgICAgICAgIHRoaXMuYXNzZXJ0X2ludGVyZmFjZV9vYmplY3RfZXhpc3RzKCk7CiAKICAgICAg
ICAgLy8gIkZvciBlYWNoIGNvbnN0YW50IGRlZmluZWQgb24gYW4gaW50ZXJmYWNlIEEsIHRoZXJl
IG11c3QgYmUKICAgICAgICAgLy8gYSBjb3JyZXNwb25kaW5nIHByb3BlcnR5IG9uIHRoZSBpbnRl
cmZhY2Ugb2JqZWN0LCBpZiBpdAogICAgICAgICAvLyBleGlzdHMuIgotICAgICAgICBhc3NlcnRf
b3duX3Byb3BlcnR5KHNlbGZbdGhpcy5uYW1lXSwgbWVtYmVyLm5hbWUpOworICAgICAgICBhc3Nl
cnRfb3duX3Byb3BlcnR5KHRoaXMuZ2V0X2ludGVyZmFjZV9vYmplY3QoKSwgbWVtYmVyLm5hbWUp
OwogICAgICAgICAvLyAiVGhlIHZhbHVlIG9mIHRoZSBwcm9wZXJ0eSBpcyB0aGF0IHdoaWNoIGlz
IG9idGFpbmVkIGJ5CiAgICAgICAgIC8vIGNvbnZlcnRpbmcgdGhlIGNvbnN0YW504oCZcyBJREwg
dmFsdWUgdG8gYW4gRUNNQVNjcmlwdAogICAgICAgICAvLyB2YWx1ZS4iCi0gICAgICAgIGFzc2Vy
dF9lcXVhbHMoc2VsZlt0aGlzLm5hbWVdW21lbWJlci5uYW1lXSwgY29uc3RWYWx1ZShtZW1iZXIu
dmFsdWUpLAorICAgICAgICBhc3NlcnRfZXF1YWxzKHRoaXMuZ2V0X2ludGVyZmFjZV9vYmplY3Qo
KVttZW1iZXIubmFtZV0sIGNvbnN0VmFsdWUobWVtYmVyLnZhbHVlKSwKICAgICAgICAgICAgICAg
ICAgICAgICAicHJvcGVydHkgaGFzIHdyb25nIHZhbHVlIik7CiAgICAgICAgIC8vICJUaGUgcHJv
cGVydHkgaGFzIGF0dHJpYnV0ZXMgeyBbW1dyaXRhYmxlXV06IGZhbHNlLAogICAgICAgICAvLyBb
W0VudW1lcmFibGVdXTogdHJ1ZSwgW1tDb25maWd1cmFibGVdXTogZmFsc2UgfS4iCi0gICAgICAg
IHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzZWxmW3RoaXMubmFt
ZV0sIG1lbWJlci5uYW1lKTsKLSAgICAgICAgYXNzZXJ0X2ZhbHNlKCJnZXQiIGluIGRlc2MsICJw
cm9wZXJ0eSBoYXMgZ2V0dGVyIik7Ci0gICAgICAgIGFzc2VydF9mYWxzZSgic2V0IiBpbiBkZXNj
LCAicHJvcGVydHkgaGFzIHNldHRlciIpOwotICAgICAgICBhc3NlcnRfZmFsc2UoZGVzYy53cml0
YWJsZSwgInByb3BlcnR5IGlzIHdyaXRhYmxlIik7Ci0gICAgICAgIGFzc2VydF90cnVlKGRlc2Mu
ZW51bWVyYWJsZSwgInByb3BlcnR5IGlzIG5vdCBlbnVtZXJhYmxlIik7Ci0gICAgICAgIGFzc2Vy
dF9mYWxzZShkZXNjLmNvbmZpZ3VyYWJsZSwgInByb3BlcnR5IGlzIGNvbmZpZ3VyYWJsZSIpOwor
ICAgICAgICB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGhpcy5n
ZXRfaW50ZXJmYWNlX29iamVjdCgpLCBtZW1iZXIubmFtZSk7CisgICAgICAgIGFzc2VydF9mYWxz
ZSgiZ2V0IiBpbiBkZXNjLCAicHJvcGVydHkgc2hvdWxkIG5vdCBoYXZlIGEgZ2V0dGVyIik7Cisg
ICAgICAgIGFzc2VydF9mYWxzZSgic2V0IiBpbiBkZXNjLCAicHJvcGVydHkgc2hvdWxkIG5vdCBo
YXZlIGEgc2V0dGVyIik7CisgICAgICAgIGFzc2VydF9mYWxzZShkZXNjLndyaXRhYmxlLCAicHJv
cGVydHkgc2hvdWxkIG5vdCBiZSB3cml0YWJsZSIpOworICAgICAgICBhc3NlcnRfdHJ1ZShkZXNj
LmVudW1lcmFibGUsICJwcm9wZXJ0eSBzaG91bGQgYmUgZW51bWVyYWJsZSIpOworICAgICAgICBh
c3NlcnRfZmFsc2UoZGVzYy5jb25maWd1cmFibGUsICJwcm9wZXJ0eSBzaG91bGQgbm90IGJlIGNv
bmZpZ3VyYWJsZSIpOwogICAgIH0uYmluZCh0aGlzKSwgdGhpcy5uYW1lICsgIiBpbnRlcmZhY2U6
IGNvbnN0YW50ICIgKyBtZW1iZXIubmFtZSArICIgb24gaW50ZXJmYWNlIG9iamVjdCIpOwogCiAg
ICAgLy8gIkluIGFkZGl0aW9uLCBhIHByb3BlcnR5IHdpdGggdGhlIHNhbWUgY2hhcmFjdGVyaXN0
aWNzIG11c3QKICAgICAvLyBleGlzdCBvbiB0aGUgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3Qu
IgotICAgIHRlc3QoZnVuY3Rpb24oKQorICAgIHN1YnNldFRlc3RCeUtleSh0aGlzLm5hbWUsIHRl
c3QsIGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIGFzc2VydF9vd25fcHJvcGVydHkoc2VsZiwg
dGhpcy5uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZWxmIGRvZXMgbm90IGhh
dmUgb3duIHByb3BlcnR5ICIgKyBmb3JtYXRfdmFsdWUodGhpcy5uYW1lKSk7CisgICAgICAgIHRo
aXMuYXNzZXJ0X2ludGVyZmFjZV9vYmplY3RfZXhpc3RzKCk7CiAKICAgICAgICAgaWYgKHRoaXMu
aXNfY2FsbGJhY2soKSkgewotICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKCJwcm90b3R5cGUiIGlu
IHNlbGZbdGhpcy5uYW1lXSwKKyAgICAgICAgICAgIGFzc2VydF9mYWxzZSgicHJvdG90eXBlIiBp
biB0aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
dGhpcy5uYW1lICsgJyBzaG91bGQgbm90IGhhdmUgYSAicHJvdG90eXBlIiBwcm9wZXJ0eScpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgYXNzZXJ0X293bl9wcm9w
ZXJ0eShzZWxmW3RoaXMubmFtZV0sICJwcm90b3R5cGUiLAorICAgICAgICBhc3NlcnRfb3duX3By
b3BlcnR5KHRoaXMuZ2V0X2ludGVyZmFjZV9vYmplY3QoKSwgInByb3RvdHlwZSIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ2ludGVyZmFjZSAiJyArIHRoaXMubmFtZSArICciIGRvZXMg
bm90IGhhdmUgb3duIHByb3BlcnR5ICJwcm90b3R5cGUiJyk7CiAKLSAgICAgICAgYXNzZXJ0X293
bl9wcm9wZXJ0eShzZWxmW3RoaXMubmFtZV0ucHJvdG90eXBlLCBtZW1iZXIubmFtZSk7Ci0gICAg
ICAgIGFzc2VydF9lcXVhbHMoc2VsZlt0aGlzLm5hbWVdLnByb3RvdHlwZVttZW1iZXIubmFtZV0s
IGNvbnN0VmFsdWUobWVtYmVyLnZhbHVlKSwKKyAgICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0eSh0
aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0KCkucHJvdG90eXBlLCBtZW1iZXIubmFtZSk7CisgICAg
ICAgIGFzc2VydF9lcXVhbHModGhpcy5nZXRfaW50ZXJmYWNlX29iamVjdCgpLnByb3RvdHlwZVtt
ZW1iZXIubmFtZV0sIGNvbnN0VmFsdWUobWVtYmVyLnZhbHVlKSwKICAgICAgICAgICAgICAgICAg
ICAgICAicHJvcGVydHkgaGFzIHdyb25nIHZhbHVlIik7Ci0gICAgICAgIHZhciBkZXNjID0gT2Jq
ZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzZWxmW3RoaXMubmFtZV0sIG1lbWJlci5uYW1l
KTsKLSAgICAgICAgYXNzZXJ0X2ZhbHNlKCJnZXQiIGluIGRlc2MsICJwcm9wZXJ0eSBoYXMgZ2V0
dGVyIik7Ci0gICAgICAgIGFzc2VydF9mYWxzZSgic2V0IiBpbiBkZXNjLCAicHJvcGVydHkgaGFz
IHNldHRlciIpOwotICAgICAgICBhc3NlcnRfZmFsc2UoZGVzYy53cml0YWJsZSwgInByb3BlcnR5
IGlzIHdyaXRhYmxlIik7Ci0gICAgICAgIGFzc2VydF90cnVlKGRlc2MuZW51bWVyYWJsZSwgInBy
b3BlcnR5IGlzIG5vdCBlbnVtZXJhYmxlIik7Ci0gICAgICAgIGFzc2VydF9mYWxzZShkZXNjLmNv
bmZpZ3VyYWJsZSwgInByb3BlcnR5IGlzIGNvbmZpZ3VyYWJsZSIpOworICAgICAgICB2YXIgZGVz
YyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGhpcy5nZXRfaW50ZXJmYWNlX29i
amVjdCgpLCBtZW1iZXIubmFtZSk7CisgICAgICAgIGFzc2VydF9mYWxzZSgiZ2V0IiBpbiBkZXNj
LCAicHJvcGVydHkgc2hvdWxkIG5vdCBoYXZlIGEgZ2V0dGVyIik7CisgICAgICAgIGFzc2VydF9m
YWxzZSgic2V0IiBpbiBkZXNjLCAicHJvcGVydHkgc2hvdWxkIG5vdCBoYXZlIGEgc2V0dGVyIik7
CisgICAgICAgIGFzc2VydF9mYWxzZShkZXNjLndyaXRhYmxlLCAicHJvcGVydHkgc2hvdWxkIG5v
dCBiZSB3cml0YWJsZSIpOworICAgICAgICBhc3NlcnRfdHJ1ZShkZXNjLmVudW1lcmFibGUsICJw
cm9wZXJ0eSBzaG91bGQgYmUgZW51bWVyYWJsZSIpOworICAgICAgICBhc3NlcnRfZmFsc2UoZGVz
Yy5jb25maWd1cmFibGUsICJwcm9wZXJ0eSBzaG91bGQgbm90IGJlIGNvbmZpZ3VyYWJsZSIpOwog
ICAgIH0uYmluZCh0aGlzKSwgdGhpcy5uYW1lICsgIiBpbnRlcmZhY2U6IGNvbnN0YW50ICIgKyBt
ZW1iZXIubmFtZSArICIgb24gaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QiKTsKIH07CiAKIAot
Ly9AfQogSWRsSW50ZXJmYWNlLnByb3RvdHlwZS50ZXN0X21lbWJlcl9hdHRyaWJ1dGUgPSBmdW5j
dGlvbihtZW1iZXIpCi0vL0B7CiAgIHsKLSAgICB2YXIgYV90ZXN0ID0gYXN5bmNfdGVzdCh0aGlz
Lm5hbWUgKyAiIGludGVyZmFjZTogYXR0cmlidXRlICIgKyBtZW1iZXIubmFtZSk7CisgICAgaWYg
KCFzaG91bGRSdW5TdWJUZXN0KHRoaXMubmFtZSkpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICB2YXIgYV90ZXN0ID0gc3Vic2V0VGVzdEJ5S2V5KHRoaXMubmFtZSwgYXN5bmNfdGVzdCwg
dGhpcy5uYW1lICsgIiBpbnRlcmZhY2U6IGF0dHJpYnV0ZSAiICsgbWVtYmVyLm5hbWUpOwogICAg
IGFfdGVzdC5zdGVwKGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIGlmICh0aGlzLmlzX2NhbGxi
YWNrKCkgJiYgIXRoaXMuaGFzX2NvbnN0YW50cygpKSB7Ci0gICAgICAgICAgICBhX3Rlc3QuZG9u
ZSgpCisgICAgICAgIGlmICghdGhpcy5zaG91bGRfaGF2ZV9pbnRlcmZhY2Vfb2JqZWN0KCkpIHsK
KyAgICAgICAgICAgIGFfdGVzdC5kb25lKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIAotICAgICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KHNlbGYsIHRoaXMubmFtZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAic2VsZiBkb2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0eSAi
ICsgZm9ybWF0X3ZhbHVlKHRoaXMubmFtZSkpOwotICAgICAgICBhc3NlcnRfb3duX3Byb3BlcnR5
KHNlbGZbdGhpcy5uYW1lXSwgInByb3RvdHlwZSIsCisgICAgICAgIHRoaXMuYXNzZXJ0X2ludGVy
ZmFjZV9vYmplY3RfZXhpc3RzKCk7CisgICAgICAgIGFzc2VydF9vd25fcHJvcGVydHkodGhpcy5n
ZXRfaW50ZXJmYWNlX29iamVjdCgpLCAicHJvdG90eXBlIiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnaW50ZXJmYWNlICInICsgdGhpcy5uYW1lICsgJyIgZG9lcyBub3QgaGF2ZSBvd24g
cHJvcGVydHkgInByb3RvdHlwZSInKTsKIAotICAgICAgICBpZiAobWVtYmVyWyJzdGF0aWMiXSkg
ewotICAgICAgICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0eShzZWxmW3RoaXMubmFtZV0sIG1lbWJl
ci5uYW1lLAorICAgICAgICBpZiAobWVtYmVyLnNwZWNpYWwgPT09ICJzdGF0aWMiKSB7CisgICAg
ICAgICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KHRoaXMuZ2V0X2ludGVyZmFjZV9vYmplY3QoKSwg
bWVtYmVyLm5hbWUsCiAgICAgICAgICAgICAgICAgIlRoZSBpbnRlcmZhY2Ugb2JqZWN0IG11c3Qg
aGF2ZSBhIHByb3BlcnR5ICIgKwogICAgICAgICAgICAgICAgIGZvcm1hdF92YWx1ZShtZW1iZXIu
bmFtZSkpOwogICAgICAgICAgICAgYV90ZXN0LmRvbmUoKTsKLSAgICAgICAgfSBlbHNlIGlmICh0
aGlzLmlzX2dsb2JhbCgpKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAg
ICAgICB0aGlzLmRvX21lbWJlcl91bnNjb3BhYmxlX2Fzc2VydHMobWVtYmVyKTsKKworICAgICAg
ICBpZiAodGhpcy5pc19nbG9iYWwoKSkgewogICAgICAgICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0
eShzZWxmLCBtZW1iZXIubmFtZSwKICAgICAgICAgICAgICAgICAiVGhlIGdsb2JhbCBvYmplY3Qg
bXVzdCBoYXZlIGEgcHJvcGVydHkgIiArCiAgICAgICAgICAgICAgICAgZm9ybWF0X3ZhbHVlKG1l
bWJlci5uYW1lKSk7Ci0gICAgICAgICAgICBhc3NlcnRfZmFsc2UobWVtYmVyLm5hbWUgaW4gc2Vs
Zlt0aGlzLm5hbWVdLnByb3RvdHlwZSwKLSAgICAgICAgICAgICAgICAiVGhlIHByb3RvdHlwZSBv
YmplY3QgbXVzdCBub3QgaGF2ZSBhIHByb3BlcnR5ICIgKworICAgICAgICAgICAgYXNzZXJ0X2Zh
bHNlKG1lbWJlci5uYW1lIGluIHRoaXMuZ2V0X2ludGVyZmFjZV9vYmplY3QoKS5wcm90b3R5cGUs
CisgICAgICAgICAgICAgICAgIlRoZSBwcm90b3R5cGUgb2JqZWN0IHNob3VsZCBub3QgaGF2ZSBh
IHByb3BlcnR5ICIgKwogICAgICAgICAgICAgICAgIGZvcm1hdF92YWx1ZShtZW1iZXIubmFtZSkp
OwogCiAgICAgICAgICAgICB2YXIgZ2V0dGVyID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihzZWxmLCBtZW1iZXIubmFtZSkuZ2V0OwpAQCAtMTE3NCw2OSArMjE5Miw2NiBAQCBJZGxJ
bnRlcmZhY2UucHJvdG90eXBlLnRlc3RfbWVtYmVyX2F0dHJpYnV0ZSA9IGZ1bmN0aW9uKG1lbWJl
cikKICAgICAgICAgICAgIC8vIHNpbmNlIGl0IHdpbGwgY2FsbCBkb25lKCkgb24gYV90ZXN0Lgog
ICAgICAgICAgICAgdGhpcy5kb19pbnRlcmZhY2VfYXR0cmlidXRlX2Fzc2VydHMoc2VsZiwgbWVt
YmVyLCBhX3Rlc3QpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgYXNzZXJ0X3RydWUo
bWVtYmVyLm5hbWUgaW4gc2VsZlt0aGlzLm5hbWVdLnByb3RvdHlwZSwKKyAgICAgICAgICAgIGFz
c2VydF90cnVlKG1lbWJlci5uYW1lIGluIHRoaXMuZ2V0X2ludGVyZmFjZV9vYmplY3QoKS5wcm90
b3R5cGUsCiAgICAgICAgICAgICAgICAgIlRoZSBwcm90b3R5cGUgb2JqZWN0IG11c3QgaGF2ZSBh
IHByb3BlcnR5ICIgKwogICAgICAgICAgICAgICAgIGZvcm1hdF92YWx1ZShtZW1iZXIubmFtZSkp
OwogCi0gICAgICAgICAgICBpZiAoIW1lbWJlci5oYXNfZXh0ZW5kZWRfYXR0cmlidXRlKCJMZW5p
ZW50VGhpcyIpKSB7CisgICAgICAgICAgICBpZiAoIW1lbWJlci5oYXNfZXh0ZW5kZWRfYXR0cmli
dXRlKCJMZWdhY3lMZW5pZW50VGhpcyIpKSB7CiAgICAgICAgICAgICAgICAgaWYgKG1lbWJlci5p
ZGxUeXBlLmdlbmVyaWMgIT09ICJQcm9taXNlIikgewotICAgICAgICAgICAgICAgICAgICBhc3Nl
cnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBzZWxmW3RoaXMubmFtZV0ucHJvdG90eXBlW21lbWJlci5uYW1lXTsKKyAgICAgICAg
ICAgICAgICAgICAgLy8gdGhpcy5nZXRfaW50ZXJmYWNlX29iamVjdCgpIHJldHVybnMgYSB0aGlu
ZyBpbiBvdXIgZ2xvYmFsCisgICAgICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3NfanMoVHlw
ZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0X2lu
dGVyZmFjZV9vYmplY3QoKS5wcm90b3R5cGVbbWVtYmVyLm5hbWVdOwogICAgICAgICAgICAgICAg
ICAgICB9LmJpbmQodGhpcyksICJnZXR0aW5nIHByb3BlcnR5IG9uIHByb3RvdHlwZSBvYmplY3Qg
bXVzdCB0aHJvdyBUeXBlRXJyb3IiKTsKICAgICAgICAgICAgICAgICAgICAgLy8gZG9faW50ZXJm
YWNlX2F0dHJpYnV0ZV9hc3NlcnRzIG11c3QgYmUgdGhlIGxhc3QgdGhpbmcgd2UKICAgICAgICAg
ICAgICAgICAgICAgLy8gZG8sIHNpbmNlIGl0IHdpbGwgY2FsbCBkb25lKCkgb24gYV90ZXN0Lgot
ICAgICAgICAgICAgICAgICAgICB0aGlzLmRvX2ludGVyZmFjZV9hdHRyaWJ1dGVfYXNzZXJ0cyhz
ZWxmW3RoaXMubmFtZV0ucHJvdG90eXBlLCBtZW1iZXIsIGFfdGVzdCk7CisgICAgICAgICAgICAg
ICAgICAgIHRoaXMuZG9faW50ZXJmYWNlX2F0dHJpYnV0ZV9hc3NlcnRzKHRoaXMuZ2V0X2ludGVy
ZmFjZV9vYmplY3QoKS5wcm90b3R5cGUsIG1lbWJlciwgYV90ZXN0KTsKICAgICAgICAgICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBwcm9taXNlX3JlamVjdHMoYV90ZXN0LCBu
ZXcgVHlwZUVycm9yKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxm
W3RoaXMubmFtZV0ucHJvdG90eXBlW21lbWJlci5uYW1lXSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgIC50aGVuKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICBwcm9taXNlX3JlamVj
dHNfanMoYV90ZXN0LCBUeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0KCkucHJvdG90eXBlW21lbWJlci5uYW1lXSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIC50aGVuKGFfdGVzdC5zdGVwX2Z1bmMoZnVuY3Rpb24o
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZG9faW50ZXJmYWNlX2F0dHJpYnV0
ZV9hc3NlcnRzIG11c3QgYmUgdGhlIGxhc3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyB0aGluZyB3ZSBkbywgc2luY2UgaXQgd2lsbCBjYWxsIGRvbmUoKSBvbiBhX3Rlc3QuCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kb19pbnRlcmZhY2VfYXR0cmlidXRlX2Fzc2Vy
dHMoc2VsZlt0aGlzLm5hbWVdLnByb3RvdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0aGlzLmRvX2ludGVyZmFjZV9hdHRyaWJ1dGVfYXNzZXJ0cyh0aGlzLmdldF9pbnRlcmZhY2Vf
b2JqZWN0KCkucHJvdG90eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbWJlciwgYV90ZXN0KTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIH0uYmluZCh0aGlzKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9LmJp
bmQodGhpcykpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoc2VsZlt0aGlzLm5hbWVdLnByb3RvdHlwZVttZW1i
ZXIubmFtZV0sIHVuZGVmaW5lZCwKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHRoaXMu
Z2V0X2ludGVyZmFjZV9vYmplY3QoKS5wcm90b3R5cGVbbWVtYmVyLm5hbWVdLCB1bmRlZmluZWQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2V0dGluZyBwcm9wZXJ0eSBvbiBwcm90
b3R5cGUgb2JqZWN0IG11c3QgcmV0dXJuIHVuZGVmaW5lZCIpOwogICAgICAgICAgICAgICAvLyBk
b19pbnRlcmZhY2VfYXR0cmlidXRlX2Fzc2VydHMgbXVzdCBiZSB0aGUgbGFzdCB0aGluZyB3ZSBk
bywKICAgICAgICAgICAgICAgLy8gc2luY2UgaXQgd2lsbCBjYWxsIGRvbmUoKSBvbiBhX3Rlc3Qu
Ci0gICAgICAgICAgICAgIHRoaXMuZG9faW50ZXJmYWNlX2F0dHJpYnV0ZV9hc3NlcnRzKHNlbGZb
dGhpcy5uYW1lXS5wcm90b3R5cGUsIG1lbWJlciwgYV90ZXN0KTsKKyAgICAgICAgICAgICAgdGhp
cy5kb19pbnRlcmZhY2VfYXR0cmlidXRlX2Fzc2VydHModGhpcy5nZXRfaW50ZXJmYWNlX29iamVj
dCgpLnByb3RvdHlwZSwgbWVtYmVyLCBhX3Rlc3QpOwogICAgICAgICAgICAgfQotCiAgICAgICAg
IH0KICAgICB9LmJpbmQodGhpcykpOwogfTsKIAotLy9AfQogSWRsSW50ZXJmYWNlLnByb3RvdHlw
ZS50ZXN0X21lbWJlcl9vcGVyYXRpb24gPSBmdW5jdGlvbihtZW1iZXIpCi0vL0B7CiB7Ci0gICAg
dmFyIGFfdGVzdCA9IGFzeW5jX3Rlc3QodGhpcy5uYW1lICsgIiBpbnRlcmZhY2U6IG9wZXJhdGlv
biAiICsgbWVtYmVyLm5hbWUgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICIoIiArIG1l
bWJlci5hcmd1bWVudHMubWFwKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5j
dGlvbihtKSB7cmV0dXJuIG0uaWRsVHlwZS5pZGxUeXBlOyB9ICkKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICArIikiKTsKKyAgICBpZiAoIXNob3VsZFJ1blN1YlRlc3QodGhpcy5uYW1lKSkg
eworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHZhciBhX3Rlc3QgPSBzdWJzZXRUZXN0QnlL
ZXkodGhpcy5uYW1lLCBhc3luY190ZXN0LCB0aGlzLm5hbWUgKyAiIGludGVyZmFjZTogb3BlcmF0
aW9uICIgKyBtZW1iZXIpOwogICAgIGFfdGVzdC5zdGVwKGZ1bmN0aW9uKCkKICAgICB7CiAgICAg
ICAgIC8vIFRoaXMgZnVuY3Rpb24gdGVzdHMgV2ViSURMIGFzIG9mIDIwMTUtMTItMjkuCiAgICAg
ICAgIC8vIGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2VzLW9wZXJhdGlvbnMKIAot
ICAgICAgICBpZiAodGhpcy5pc19jYWxsYmFjaygpICYmICF0aGlzLmhhc19jb25zdGFudHMoKSkg
eworICAgICAgICBpZiAoIXRoaXMuc2hvdWxkX2hhdmVfaW50ZXJmYWNlX29iamVjdCgpKSB7CiAg
ICAgICAgICAgICBhX3Rlc3QuZG9uZSgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKLSAgICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0eShzZWxmLCB0aGlzLm5hbWUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgInNlbGYgZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVydHkgIiAr
IGZvcm1hdF92YWx1ZSh0aGlzLm5hbWUpKTsKKyAgICAgICAgdGhpcy5hc3NlcnRfaW50ZXJmYWNl
X29iamVjdF9leGlzdHMoKTsKIAogICAgICAgICBpZiAodGhpcy5pc19jYWxsYmFjaygpKSB7Ci0g
ICAgICAgICAgICBhc3NlcnRfZmFsc2UoInByb3RvdHlwZSIgaW4gc2VsZlt0aGlzLm5hbWVdLAor
ICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKCJwcm90b3R5cGUiIGluIHRoaXMuZ2V0X2ludGVyZmFj
ZV9vYmplY3QoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5hbWUgKyAnIHNob3Vs
ZCBub3QgaGF2ZSBhICJwcm90b3R5cGUiIHByb3BlcnR5Jyk7CiAgICAgICAgICAgICBhX3Rlc3Qu
ZG9uZSgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgYXNzZXJ0
X293bl9wcm9wZXJ0eShzZWxmW3RoaXMubmFtZV0sICJwcm90b3R5cGUiLAorICAgICAgICBhc3Nl
cnRfb3duX3Byb3BlcnR5KHRoaXMuZ2V0X2ludGVyZmFjZV9vYmplY3QoKSwgInByb3RvdHlwZSIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludGVyZmFjZSAiJyArIHRoaXMubmFtZSAr
ICciIGRvZXMgbm90IGhhdmUgb3duIHByb3BlcnR5ICJwcm90b3R5cGUiJyk7CiAKICAgICAgICAg
Ly8gIkZvciBlYWNoIHVuaXF1ZSBpZGVudGlmaWVyIG9mIGFuIGV4cG9zZWQgb3BlcmF0aW9uIGRl
ZmluZWQgb24gdGhlCkBAIC0xMjUwLDEyICsyMjY1LDEyIEBAIElkbEludGVyZmFjZS5wcm90b3R5
cGUudGVzdF9tZW1iZXJfb3BlcmF0aW9uID0gZnVuY3Rpb24obWVtYmVyKQogICAgICAgICB2YXIg
bWVtYmVySG9sZGVyT2JqZWN0OwogICAgICAgICAvLyAiKiBJZiB0aGUgb3BlcmF0aW9uIGlzIHN0
YXRpYywgdGhlbiB0aGUgcHJvcGVydHkgZXhpc3RzIG9uIHRoZQogICAgICAgICAvLyAgICBpbnRl
cmZhY2Ugb2JqZWN0LiIKLSAgICAgICAgaWYgKG1lbWJlclsic3RhdGljIl0pIHsKLSAgICAgICAg
ICAgIGFzc2VydF9vd25fcHJvcGVydHkoc2VsZlt0aGlzLm5hbWVdLCBtZW1iZXIubmFtZSwKKyAg
ICAgICAgaWYgKG1lbWJlci5zcGVjaWFsID09PSAic3RhdGljIikgeworICAgICAgICAgICAgYXNz
ZXJ0X293bl9wcm9wZXJ0eSh0aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0KCksIG1lbWJlci5uYW1l
LAogICAgICAgICAgICAgICAgICAgICAiaW50ZXJmYWNlIG9iamVjdCBtaXNzaW5nIHN0YXRpYyBv
cGVyYXRpb24iKTsKLSAgICAgICAgICAgIG1lbWJlckhvbGRlck9iamVjdCA9IHNlbGZbdGhpcy5u
YW1lXTsKKyAgICAgICAgICAgIG1lbWJlckhvbGRlck9iamVjdCA9IHRoaXMuZ2V0X2ludGVyZmFj
ZV9vYmplY3QoKTsKICAgICAgICAgLy8gIiogT3RoZXJ3aXNlLCBbLi4uXSBpZiB0aGUgaW50ZXJm
YWNlIHdhcyBkZWNsYXJlZCB3aXRoIHRoZSBbR2xvYmFsXQotICAgICAgICAvLyAgICBvciBbUHJp
bWFyeUdsb2JhbF0gZXh0ZW5kZWQgYXR0cmlidXRlLCB0aGVuIHRoZSBwcm9wZXJ0eSBleGlzdHMK
KyAgICAgICAgLy8gICAgZXh0ZW5kZWQgYXR0cmlidXRlLCB0aGVuIHRoZSBwcm9wZXJ0eSBleGlz
dHMKICAgICAgICAgLy8gICAgb24gZXZlcnkgb2JqZWN0IHRoYXQgaW1wbGVtZW50cyB0aGUgaW50
ZXJmYWNlLiIKICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzX2dsb2JhbCgpKSB7CiAgICAgICAg
ICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KHNlbGYsIG1lbWJlci5uYW1lLApAQCAtMTI2NCwxNyAr
MjI3OSw0MyBAQCBJZGxJbnRlcmZhY2UucHJvdG90eXBlLnRlc3RfbWVtYmVyX29wZXJhdGlvbiA9
IGZ1bmN0aW9uKG1lbWJlcikKICAgICAgICAgLy8gIiogT3RoZXJ3aXNlLCB0aGUgcHJvcGVydHkg
ZXhpc3RzIHNvbGVseSBvbiB0aGUgaW50ZXJmYWNl4oCZcwogICAgICAgICAvLyAgICBpbnRlcmZh
Y2UgcHJvdG90eXBlIG9iamVjdC4iCiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBhc3Nl
cnRfb3duX3Byb3BlcnR5KHNlbGZbdGhpcy5uYW1lXS5wcm90b3R5cGUsIG1lbWJlci5uYW1lLAor
ICAgICAgICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0eSh0aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0
KCkucHJvdG90eXBlLCBtZW1iZXIubmFtZSwKICAgICAgICAgICAgICAgICAgICAgImludGVyZmFj
ZSBwcm90b3R5cGUgb2JqZWN0IG1pc3Npbmcgbm9uLXN0YXRpYyBvcGVyYXRpb24iKTsKLSAgICAg
ICAgICAgIG1lbWJlckhvbGRlck9iamVjdCA9IHNlbGZbdGhpcy5uYW1lXS5wcm90b3R5cGU7Cisg
ICAgICAgICAgICBtZW1iZXJIb2xkZXJPYmplY3QgPSB0aGlzLmdldF9pbnRlcmZhY2Vfb2JqZWN0
KCkucHJvdG90eXBlOwogICAgICAgICB9CisgICAgICAgIHRoaXMuZG9fbWVtYmVyX3Vuc2NvcGFi
bGVfYXNzZXJ0cyhtZW1iZXIpOwogICAgICAgICB0aGlzLmRvX21lbWJlcl9vcGVyYXRpb25fYXNz
ZXJ0cyhtZW1iZXJIb2xkZXJPYmplY3QsIG1lbWJlciwgYV90ZXN0KTsKICAgICB9LmJpbmQodGhp
cykpOwogfTsKIAotLy9AfQorSWRsSW50ZXJmYWNlLnByb3RvdHlwZS5kb19tZW1iZXJfdW5zY29w
YWJsZV9hc3NlcnRzID0gZnVuY3Rpb24obWVtYmVyKQoreworICAgIC8vIENoZWNrIHRoYXQgaWYg
dGhlIG1lbWJlciBpcyB1bnNjb3BhYmxlIHRoZW4gaXQncyBpbiB0aGUKKyAgICAvLyBAQHVuc2Nv
cGFibGVzIG9iamVjdCBwcm9wZXJseS4KKyAgICBpZiAoIW1lbWJlci5pc1Vuc2NvcGFibGUpIHsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHZhciB1bnNjb3BhYmxlcyA9IHRoaXMuZ2V0
X2ludGVyZmFjZV9vYmplY3QoKS5wcm90b3R5cGVbU3ltYm9sLnVuc2NvcGFibGVzXTsKKyAgICB2
YXIgcHJvcCA9IG1lbWJlci5uYW1lOworICAgIHZhciBwcm9wRGVzYyA9IE9iamVjdC5nZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IodW5zY29wYWJsZXMsIHByb3ApOworICAgIGFzc2VydF9lcXVhbHMo
dHlwZW9mIHByb3BEZXNjLCAib2JqZWN0IiwKKyAgICAgICAgICAgICAgICAgIHRoaXMubmFtZSAr
ICcucHJvdG90eXBlW1N5bWJvbC51bnNjb3BhYmxlc10uJyArIHByb3AgKyAnIG11c3QgZXhpc3Qn
KQorICAgIGFzc2VydF9mYWxzZSgiZ2V0IiBpbiBwcm9wRGVzYywKKyAgICAgICAgICAgICAgICAg
dGhpcy5uYW1lICsgJy5wcm90b3R5cGVbU3ltYm9sLnVuc2NvcGFibGVzXS4nICsgcHJvcCArICcg
bXVzdCBoYXZlIG5vIGdldHRlcicpOworICAgIGFzc2VydF9mYWxzZSgic2V0IiBpbiBwcm9wRGVz
YywKKyAgICAgICAgICAgICAgICAgdGhpcy5uYW1lICsgJy5wcm90b3R5cGVbU3ltYm9sLnVuc2Nv
cGFibGVzXS4nICsgcHJvcCArICcgbXVzdCBoYXZlIG5vIHNldHRlcicpOworICAgIGFzc2VydF90
cnVlKHByb3BEZXNjLndyaXRhYmxlLAorICAgICAgICAgICAgICAgIHRoaXMubmFtZSArICcucHJv
dG90eXBlW1N5bWJvbC51bnNjb3BhYmxlc10uJyArIHByb3AgKyAnIG11c3QgYmUgd3JpdGFibGUn
KTsKKyAgICBhc3NlcnRfdHJ1ZShwcm9wRGVzYy5lbnVtZXJhYmxlLAorICAgICAgICAgICAgICAg
IHRoaXMubmFtZSArICcucHJvdG90eXBlW1N5bWJvbC51bnNjb3BhYmxlc10uJyArIHByb3AgKyAn
IG11c3QgYmUgZW51bWVyYWJsZScpOworICAgIGFzc2VydF90cnVlKHByb3BEZXNjLmNvbmZpZ3Vy
YWJsZSwKKyAgICAgICAgICAgICAgICB0aGlzLm5hbWUgKyAnLnByb3RvdHlwZVtTeW1ib2wudW5z
Y29wYWJsZXNdLicgKyBwcm9wICsgJyBtdXN0IGJlIGNvbmZpZ3VyYWJsZScpOworICAgIGFzc2Vy
dF9lcXVhbHMocHJvcERlc2MudmFsdWUsIHRydWUsCisgICAgICAgICAgICAgICAgICB0aGlzLm5h
bWUgKyAnLnByb3RvdHlwZVtTeW1ib2wudW5zY29wYWJsZXNdLicgKyBwcm9wICsgJyBtdXN0IGhh
dmUgdGhlIHZhbHVlIGB0cnVlYCcpOworfTsKKwogSWRsSW50ZXJmYWNlLnByb3RvdHlwZS5kb19t
ZW1iZXJfb3BlcmF0aW9uX2Fzc2VydHMgPSBmdW5jdGlvbihtZW1iZXJIb2xkZXJPYmplY3QsIG1l
bWJlciwgYV90ZXN0KQotLy9AewogewogICAgIHZhciBkb25lID0gYV90ZXN0LmRvbmUuYmluZChh
X3Rlc3QpOwogICAgIHZhciBvcGVyYXRpb25VbmZvcmdlYWJsZSA9IG1lbWJlci5pc1VuZm9yZ2Vh
YmxlOwpAQCAtMTI4MiwyNyArMjMyMywyOSBAQCBJZGxJbnRlcmZhY2UucHJvdG90eXBlLmRvX21l
bWJlcl9vcGVyYXRpb25fYXNzZXJ0cyA9IGZ1bmN0aW9uKG1lbWJlckhvbGRlck9iamVjdAogICAg
IC8vICJUaGUgcHJvcGVydHkgaGFzIGF0dHJpYnV0ZXMgeyBbW1dyaXRhYmxlXV06IEIsCiAgICAg
Ly8gW1tFbnVtZXJhYmxlXV06IHRydWUsIFtbQ29uZmlndXJhYmxlXV06IEIgfSwgd2hlcmUgQiBp
cyBmYWxzZSBpZiB0aGUKICAgICAvLyBvcGVyYXRpb24gaXMgdW5mb3JnZWFibGUgb24gdGhlIGlu
dGVyZmFjZSwgYW5kIHRydWUgb3RoZXJ3aXNlIi4KLSAgICBhc3NlcnRfZmFsc2UoImdldCIgaW4g
ZGVzYywgInByb3BlcnR5IGhhcyBnZXR0ZXIiKTsKLSAgICBhc3NlcnRfZmFsc2UoInNldCIgaW4g
ZGVzYywgInByb3BlcnR5IGhhcyBzZXR0ZXIiKTsKKyAgICBhc3NlcnRfZmFsc2UoImdldCIgaW4g
ZGVzYywgInByb3BlcnR5IHNob3VsZCBub3QgaGF2ZSBhIGdldHRlciIpOworICAgIGFzc2VydF9m
YWxzZSgic2V0IiBpbiBkZXNjLCAicHJvcGVydHkgc2hvdWxkIG5vdCBoYXZlIGEgc2V0dGVyIik7
CiAgICAgYXNzZXJ0X2VxdWFscyhkZXNjLndyaXRhYmxlLCAhb3BlcmF0aW9uVW5mb3JnZWFibGUs
CiAgICAgICAgICAgICAgICAgICAicHJvcGVydHkgc2hvdWxkIGJlIHdyaXRhYmxlIGlmIGFuZCBv
bmx5IGlmIG5vdCB1bmZvcmdlYWJsZSIpOwotICAgIGFzc2VydF90cnVlKGRlc2MuZW51bWVyYWJs
ZSwgInByb3BlcnR5IGlzIG5vdCBlbnVtZXJhYmxlIik7CisgICAgYXNzZXJ0X3RydWUoZGVzYy5l
bnVtZXJhYmxlLCAicHJvcGVydHkgc2hvdWxkIGJlIGVudW1lcmFibGUiKTsKICAgICBhc3NlcnRf
ZXF1YWxzKGRlc2MuY29uZmlndXJhYmxlLCAhb3BlcmF0aW9uVW5mb3JnZWFibGUsCiAgICAgICAg
ICAgICAgICAgICAicHJvcGVydHkgc2hvdWxkIGJlIGNvbmZpZ3VyYWJsZSBpZiBhbmQgb25seSBp
ZiBub3QgdW5mb3JnZWFibGUiKTsKICAgICAvLyAiVGhlIHZhbHVlIG9mIHRoZSBwcm9wZXJ0eSBp
cyBhIEZ1bmN0aW9uIG9iamVjdCB3aG9zZQogICAgIC8vIGJlaGF2aW9yIGlzIGFzIGZvbGxvd3Mg
LiAuIC4iCiAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgbWVtYmVySG9sZGVyT2JqZWN0W21lbWJl
ci5uYW1lXSwgImZ1bmN0aW9uIiwKICAgICAgICAgICAgICAgICAgICJwcm9wZXJ0eSBtdXN0IGJl
IGEgZnVuY3Rpb24iKTsKLSAgICAvLyAiVGhlIHZhbHVlIG9mIHRoZSBGdW5jdGlvbiBvYmplY3Ti
gJlzIOKAnGxlbmd0aOKAnSBwcm9wZXJ0eSBpcwotICAgIC8vIGEgTnVtYmVyIGRldGVybWluZWQg
YXMgZm9sbG93czoKLSAgICAvLyAiLiAuIC4KLSAgICAvLyAiUmV0dXJuIHRoZSBsZW5ndGggb2Yg
dGhlIHNob3J0ZXN0IGFyZ3VtZW50IGxpc3Qgb2YgdGhlCi0gICAgLy8gZW50cmllcyBpbiBTLiIK
LSAgICBhc3NlcnRfZXF1YWxzKG1lbWJlckhvbGRlck9iamVjdFttZW1iZXIubmFtZV0ubGVuZ3Ro
LAotICAgICAgICBtaW5PdmVybG9hZExlbmd0aCh0aGlzLm1lbWJlcnMuZmlsdGVyKGZ1bmN0aW9u
KG0pIHsKLSAgICAgICAgICAgIHJldHVybiBtLnR5cGUgPT0gIm9wZXJhdGlvbiIgJiYgbS5uYW1l
ID09IG1lbWJlci5uYW1lOwotICAgICAgICB9KSksCisKKyAgICBjb25zdCBjdG9ycyA9IHRoaXMu
bWVtYmVycy5maWx0ZXIoZnVuY3Rpb24obSkgeworICAgICAgICByZXR1cm4gbS50eXBlID09ICJv
cGVyYXRpb24iICYmIG0ubmFtZSA9PSBtZW1iZXIubmFtZTsKKyAgICB9KTsKKyAgICBhc3NlcnRf
ZXF1YWxzKAorICAgICAgICBtZW1iZXJIb2xkZXJPYmplY3RbbWVtYmVyLm5hbWVdLmxlbmd0aCwK
KyAgICAgICAgbWluT3ZlcmxvYWRMZW5ndGgoY3RvcnMpLAogICAgICAgICAicHJvcGVydHkgaGFz
IHdyb25nIC5sZW5ndGgiKTsKKyAgICBhc3NlcnRfZXF1YWxzKAorICAgICAgICBtZW1iZXJIb2xk
ZXJPYmplY3RbbWVtYmVyLm5hbWVdLm5hbWUsCisgICAgICAgIG1lbWJlci5uYW1lLAorICAgICAg
ICAicHJvcGVydHkgaGFzIHdyb25nIC5uYW1lIik7CiAKICAgICAvLyBNYWtlIHNvbWUgc3VpdGFi
bGUgYXJndW1lbnRzCiAgICAgdmFyIGFyZ3MgPSBtZW1iZXIuYXJndW1lbnRzLm1hcChmdW5jdGlv
bihhcmcpIHsKQEAgLTEzMTksNyArMjM2Miw3IEBAIElkbEludGVyZmFjZS5wcm90b3R5cGUuZG9f
bWVtYmVyX29wZXJhdGlvbl9hc3NlcnRzID0gZnVuY3Rpb24obWVtYmVySG9sZGVyT2JqZWN0CiAg
ICAgLy8gY2hlY2sgZm9yIGdsb2JhbHMsIHNpbmNlIG90aGVyd2lzZSB3ZSdsbCBpbnZva2Ugd2lu
ZG93LmNsb3NlKCkuICBBbmQgd2UKICAgICAvLyBoYXZlIHRvIHNraXAgdGhpcyB0ZXN0IGZvciBh
bnl0aGluZyB0aGF0IG9uIHRoZSBwcm90byBjaGFpbiBvZiAic2VsZiIsCiAgICAgLy8gc2luY2Ug
dGhhdCBkb2VzIGluIGZhY3QgaGF2ZSBpbXBsaWNpdC10aGlzIGJlaGF2aW9yLgotICAgIGlmICgh
bWVtYmVyWyJzdGF0aWMiXSkgeworICAgIGlmIChtZW1iZXIuc3BlY2lhbCAhPT0gInN0YXRpYyIp
IHsKICAgICAgICAgdmFyIGNiOwogICAgICAgICBpZiAoIXRoaXMuaXNfZ2xvYmFsKCkgJiYKICAg
ICAgICAgICAgIG1lbWJlckhvbGRlck9iamVjdFttZW1iZXIubmFtZV0gIT0gc2VsZlttZW1iZXIu
bmFtZV0pCkBAIC0xMzQzLDcxICsyMzg2LDEyMiBAQCBJZGxJbnRlcmZhY2UucHJvdG90eXBlLmRv
X21lbWJlcl9vcGVyYXRpb25fYXNzZXJ0cyA9IGZ1bmN0aW9uKG1lbWJlckhvbGRlck9iamVjdAog
ICAgIH0KIH0KIAotLy9AfQotSWRsSW50ZXJmYWNlLnByb3RvdHlwZS5hZGRfaXRlcmFibGVfbWVt
YmVycyA9IGZ1bmN0aW9uKG1lbWJlcikKLS8vQHsKLXsKLSAgICB0aGlzLm1lbWJlcnMucHVzaCh7
dHlwZTogIm9wZXJhdGlvbiIsIG5hbWU6ICJlbnRyaWVzIiwgaWRsVHlwZTogIml0ZXJhdG9yIiwg
YXJndW1lbnRzOiBbXX0pOwotICAgIHRoaXMubWVtYmVycy5wdXNoKHt0eXBlOiAib3BlcmF0aW9u
IiwgbmFtZTogImtleXMiLCBpZGxUeXBlOiAiaXRlcmF0b3IiLCBhcmd1bWVudHM6IFtdfSk7Ci0g
ICAgdGhpcy5tZW1iZXJzLnB1c2goe3R5cGU6ICJvcGVyYXRpb24iLCBuYW1lOiAidmFsdWVzIiwg
aWRsVHlwZTogIml0ZXJhdG9yIiwgYXJndW1lbnRzOiBbXX0pOwotICAgIHRoaXMubWVtYmVycy5w
dXNoKHt0eXBlOiAib3BlcmF0aW9uIiwgbmFtZTogImZvckVhY2giLCBpZGxUeXBlOiAidm9pZCIs
IGFyZ3VtZW50czoKLSAgICAgICAgW3sgbmFtZTogImNhbGxiYWNrIiwgaWRsVHlwZToge2lkbFR5
cGU6ICJmdW5jdGlvbiJ9fSwKLSAgICAgICAgeyBuYW1lOiAidGhpc1ZhbHVlIiwgaWRsVHlwZTog
e2lkbFR5cGU6ICJhbnkifSwgb3B0aW9uYWw6IHRydWV9XX0pOworSWRsSW50ZXJmYWNlLnByb3Rv
dHlwZS50ZXN0X3RvX2pzb25fb3BlcmF0aW9uID0gZnVuY3Rpb24oZGVzYywgbWVtYmVySG9sZGVy
T2JqZWN0LCBtZW1iZXIpIHsKKyAgICB2YXIgaW5zdGFuY2VOYW1lID0gbWVtYmVySG9sZGVyT2Jq
ZWN0ICYmIG1lbWJlckhvbGRlck9iamVjdC5jb25zdHJ1Y3Rvci5uYW1lCisgICAgICAgIHx8IG1l
bWJlci5uYW1lICsgIiBvYmplY3QiOworICAgIGlmIChtZW1iZXIuaGFzX2V4dGVuZGVkX2F0dHJp
YnV0ZSgiRGVmYXVsdCIpKSB7CisgICAgICAgIHN1YnNldFRlc3RCeUtleSh0aGlzLm5hbWUsIHRl
c3QsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdmFyIG1hcCA9IHRoaXMuZGVmYXVsdF90b19q
c29uX29wZXJhdGlvbigpOworICAgICAgICAgICAgdmFyIGpzb24gPSBtZW1iZXJIb2xkZXJPYmpl
Y3QudG9KU09OKCk7CisgICAgICAgICAgICBtYXAuZm9yRWFjaChmdW5jdGlvbih0eXBlLCBrKSB7
CisgICAgICAgICAgICAgICAgYXNzZXJ0X3RydWUoayBpbiBqc29uLCAicHJvcGVydHkgIiArIEpT
T04uc3RyaW5naWZ5KGspICsgIiBzaG91bGQgYmUgcHJlc2VudCBpbiB0aGUgb3V0cHV0IG9mICIg
KyB0aGlzLm5hbWUgKyAiLnByb3RvdHlwZS50b0pTT04oKSIpOworICAgICAgICAgICAgICAgIHZh
ciBkZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihqc29uLCBrKTsK
KyAgICAgICAgICAgICAgICBhc3NlcnRfdHJ1ZShkZXNjcmlwdG9yLndyaXRhYmxlLCAicHJvcGVy
dHkgIiArIGsgKyAiIHNob3VsZCBiZSB3cml0YWJsZSIpOworICAgICAgICAgICAgICAgIGFzc2Vy
dF90cnVlKGRlc2NyaXB0b3IuY29uZmlndXJhYmxlLCAicHJvcGVydHkgIiArIGsgKyAiIHNob3Vs
ZCBiZSBjb25maWd1cmFibGUiKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfdHJ1ZShkZXNjcmlw
dG9yLmVudW1lcmFibGUsICJwcm9wZXJ0eSAiICsgayArICIgc2hvdWxkIGJlIGVudW1lcmFibGUi
KTsKKyAgICAgICAgICAgICAgICB0aGlzLmFycmF5LmFzc2VydF90eXBlX2lzKGpzb25ba10sIHR5
cGUpOworICAgICAgICAgICAgICAgIGRlbGV0ZSBqc29uW2tdOworICAgICAgICAgICAgfSwgdGhp
cyk7CisgICAgICAgIH0uYmluZCh0aGlzKSwgdGhpcy5uYW1lICsgIiBpbnRlcmZhY2U6IGRlZmF1
bHQgdG9KU09OIG9wZXJhdGlvbiBvbiAiICsgZGVzYyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
c3Vic2V0VGVzdEJ5S2V5KHRoaXMubmFtZSwgdGVzdCwgZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICBhc3NlcnRfdHJ1ZSh0aGlzLmFycmF5LmlzX2pzb25fdHlwZShtZW1iZXIuaWRsVHlwZSksIEpT
T04uc3RyaW5naWZ5KG1lbWJlci5pZGxUeXBlKSArICIgaXMgbm90IGFuIGFwcHJvcHJpYXRlIHJl
dHVybiB2YWx1ZSBmb3IgdGhlIHRvSlNPTiBvcGVyYXRpb24gb2YgIiArIGluc3RhbmNlTmFtZSk7
CisgICAgICAgICAgICB0aGlzLmFycmF5LmFzc2VydF90eXBlX2lzKG1lbWJlckhvbGRlck9iamVj
dC50b0pTT04oKSwgbWVtYmVyLmlkbFR5cGUpOworICAgICAgICB9LmJpbmQodGhpcyksIHRoaXMu
bmFtZSArICIgaW50ZXJmYWNlOiB0b0pTT04gb3BlcmF0aW9uIG9uICIgKyBkZXNjKTsKKyAgICB9
CiB9OwogCi0vL0B9CiBJZGxJbnRlcmZhY2UucHJvdG90eXBlLnRlc3RfbWVtYmVyX2l0ZXJhYmxl
ID0gZnVuY3Rpb24obWVtYmVyKQotLy9AewogewotICAgIHZhciBpbnRlcmZhY2VOYW1lID0gdGhp
cy5uYW1lOwotICAgIHZhciBpc1BhaXJJdGVyYXRvciA9IG1lbWJlci5pZGxUeXBlIGluc3RhbmNl
b2YgQXJyYXk7Ci0gICAgdGVzdChmdW5jdGlvbigpCisgICAgc3Vic2V0VGVzdEJ5S2V5KHRoaXMu
bmFtZSwgdGVzdCwgZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgdmFyIGRlc2NyaXB0b3IgPSBP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNlbGZbaW50ZXJmYWNlTmFtZV0ucHJvdG90
eXBlLCBTeW1ib2wuaXRlcmF0b3IpOwotICAgICAgICBhc3NlcnRfdHJ1ZShkZXNjcmlwdG9yLndy
aXRhYmxlLCAicHJvcGVydHkgaXMgbm90IHdyaXRhYmxlIik7Ci0gICAgICAgIGFzc2VydF90cnVl
KGRlc2NyaXB0b3IuY29uZmlndXJhYmxlLCAicHJvcGVydHkgaXMgbm90IGNvbmZpZ3VyYWJsZSIp
OwotICAgICAgICBhc3NlcnRfZmFsc2UoZGVzY3JpcHRvci5lbnVtZXJhYmxlLCAicHJvcGVydHkg
aXMgZW51bWVyYWJsZSIpOwotICAgICAgICBhc3NlcnRfZXF1YWxzKHNlbGZbaW50ZXJmYWNlTmFt
ZV0ucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl0ubmFtZSwgaXNQYWlySXRlcmF0b3IgPyAiZW50
cmllcyIgOiAidmFsdWVzIiwgIkBAaXRlcmF0b3IgZnVuY3Rpb24gZG9lcyBub3QgaGF2ZSB0aGUg
cmlnaHQgbmFtZSIpOwotICAgIH0sICJUZXN0aW5nIFN5bWJvbC5pdGVyYXRvciBwcm9wZXJ0eSBv
ZiBpdGVyYWJsZSBpbnRlcmZhY2UgIiArIGludGVyZmFjZU5hbWUpOwotCi0gICAgaWYgKGlzUGFp
ckl0ZXJhdG9yKSB7Ci0gICAgICAgIHRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBhc3Nl
cnRfZXF1YWxzKHNlbGZbaW50ZXJmYWNlTmFtZV0ucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl0s
IHNlbGZbaW50ZXJmYWNlTmFtZV0ucHJvdG90eXBlWyJlbnRyaWVzIl0sICJlbnRyaWVzIG1ldGhv
ZCBpcyBub3QgdGhlIHNhbWUgYXMgQEBpdGVyYXRvciIpOwotICAgICAgICB9LCAiVGVzdGluZyBw
YWlyIGl0ZXJhYmxlIGludGVyZmFjZSAiICsgaW50ZXJmYWNlTmFtZSk7Ci0gICAgfSBlbHNlIHsK
LSAgICAgICAgdGVzdChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIFsiZW50cmllcyIsICJrZXlz
IiwgInZhbHVlcyIsICJmb3JFYWNoIiwgU3ltYm9sLkl0ZXJhdG9yXS5mb3JFYWNoKGZ1bmN0aW9u
KHByb3BlcnR5KSB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhzZWxmW2ludGVyZmFj
ZU5hbWVdLnByb3RvdHlwZVtwcm9wZXJ0eV0sIEFycmF5LnByb3RvdHlwZVtwcm9wZXJ0eV0sIHBy
b3BlcnR5ICsgIiBmdW5jdGlvbiBpcyBub3QgdGhlIHNhbWUgYXMgQXJyYXkgb25lIik7CisgICAg
ICAgIHZhciBpc1BhaXJJdGVyYXRvciA9IG1lbWJlci5pZGxUeXBlLmxlbmd0aCA9PT0gMjsKKyAg
ICAgICAgdmFyIHByb3RvID0gdGhpcy5nZXRfaW50ZXJmYWNlX29iamVjdCgpLnByb3RvdHlwZTsK
KyAgICAgICAgdmFyIGl0ZXJhdG9yRGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IocHJvdG8sIFN5bWJvbC5pdGVyYXRvcik7CisKKyAgICAgICAgYXNzZXJ0X3RydWUoaXRlcmF0
b3JEZXNjLndyaXRhYmxlLCAiQEBpdGVyYXRvciBwcm9wZXJ0eSBzaG91bGQgYmUgd3JpdGFibGUi
KTsKKyAgICAgICAgYXNzZXJ0X3RydWUoaXRlcmF0b3JEZXNjLmNvbmZpZ3VyYWJsZSwgIkBAaXRl
cmF0b3IgcHJvcGVydHkgc2hvdWxkIGJlIGNvbmZpZ3VyYWJsZSIpOworICAgICAgICBhc3NlcnRf
ZmFsc2UoaXRlcmF0b3JEZXNjLmVudW1lcmFibGUsICJAQGl0ZXJhdG9yIHByb3BlcnR5IHNob3Vs
ZCBub3QgYmUgZW51bWVyYWJsZSIpOworICAgICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBpdGVy
YXRvckRlc2MudmFsdWUsICJmdW5jdGlvbiIsICJAQGl0ZXJhdG9yIHByb3BlcnR5IHNob3VsZCBi
ZSBhIGZ1bmN0aW9uIik7CisgICAgICAgIGFzc2VydF9lcXVhbHMoaXRlcmF0b3JEZXNjLnZhbHVl
Lmxlbmd0aCwgMCwgIkBAaXRlcmF0b3IgZnVuY3Rpb24gb2JqZWN0IGxlbmd0aCBzaG91bGQgYmUg
MCIpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGl0ZXJhdG9yRGVzYy52YWx1ZS5uYW1lLCBpc1Bh
aXJJdGVyYXRvciA/ICJlbnRyaWVzIiA6ICJ2YWx1ZXMiLCAiQEBpdGVyYXRvciBmdW5jdGlvbiBv
YmplY3Qgc2hvdWxkIGhhdmUgdGhlIHJpZ2h0IG5hbWUiKTsKKworICAgICAgICBpZiAoaXNQYWly
SXRlcmF0b3IpIHsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocHJvdG9bImVudHJpZXMiXSwg
cHJvdG9bU3ltYm9sLml0ZXJhdG9yXSwgImVudHJpZXMgbWV0aG9kIHNob3VsZCBiZSB0aGUgc2Ft
ZSBhcyBAQGl0ZXJhdG9yIG1ldGhvZCIpOworICAgICAgICAgICAgWworICAgICAgICAgICAgICAg
IFsiZW50cmllcyIsIDBdLAorICAgICAgICAgICAgICAgIFsia2V5cyIsIDBdLAorICAgICAgICAg
ICAgICAgIFsidmFsdWVzIiwgMF0sCisgICAgICAgICAgICAgICAgWyJmb3JFYWNoIiwgMV0KKyAg
ICAgICAgICAgIF0uZm9yRWFjaCgoW3Byb3BlcnR5LCBsZW5ndGhdKSA9PiB7CisgICAgICAgICAg
ICAgICAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHByb3RvLCBw
cm9wZXJ0eSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgZGVzYy52YWx1
ZSwgImZ1bmN0aW9uIiwgcHJvcGVydHkgKyAiIHByb3BlcnR5IHNob3VsZCBiZSBhIGZ1bmN0aW9u
Iik7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhkZXNjLnZhbHVlLmxlbmd0aCwgbGVu
Z3RoLCBwcm9wZXJ0eSArICIgZnVuY3Rpb24gb2JqZWN0IGxlbmd0aCBzaG91bGQgYmUgIiArIGxl
bmd0aCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhkZXNjLnZhbHVlLm5hbWUsIHBy
b3BlcnR5LCBwcm9wZXJ0eSArICIgZnVuY3Rpb24gb2JqZWN0IHNob3VsZCBoYXZlIHRoZSByaWdo
dCBuYW1lIik7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgfSwgIlRlc3RpbmcgdmFsdWUgaXRl
cmFibGUgaW50ZXJmYWNlICIgKyBpbnRlcmZhY2VOYW1lKTsKLSAgICB9CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHByb3RvW1N5bWJvbC5pdGVyYXRvcl0sIEFy
cmF5LnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdLCAiQEBpdGVyYXRvciBtZXRob2Qgc2hvdWxk
IGJlIHRoZSBzYW1lIGFzIEFycmF5IHByb3RvdHlwZSdzIik7CisgICAgICAgICAgICBbImVudHJp
ZXMiLCAia2V5cyIsICJ2YWx1ZXMiLCAiZm9yRWFjaCIsIFN5bWJvbC5pdGVyYXRvcl0uZm9yRWFj
aChwcm9wZXJ0eSA9PiB7CisgICAgICAgICAgICAgICAgdmFyIHByb3BlcnR5TmFtZSA9IHByb3Bl
cnR5ID09PSBTeW1ib2wuaXRlcmF0b3IgPyAiQEBpdGVyYXRvciIgOiBwcm9wZXJ0eTsKKyAgICAg
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHByb3RvW3Byb3BlcnR5XSwgQXJyYXkucHJvdG90eXBl
W3Byb3BlcnR5XSwgcHJvcGVydHlOYW1lICsgIiBtZXRob2Qgc2hvdWxkIGJlIHRoZSBzYW1lIGFz
IEFycmF5IHByb3RvdHlwZSdzIik7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgIH0u
YmluZCh0aGlzKSwgdGhpcy5uYW1lICsgIiBpbnRlcmZhY2U6IGl0ZXJhYmxlPCIgKyBtZW1iZXIu
aWRsVHlwZS5tYXAoZnVuY3Rpb24odCkgeyByZXR1cm4gdC5pZGxUeXBlOyB9KS5qb2luKCIsICIp
ICsgIj4iKTsKK307CisKK0lkbEludGVyZmFjZS5wcm90b3R5cGUudGVzdF9tZW1iZXJfYXN5bmNf
aXRlcmFibGUgPSBmdW5jdGlvbihtZW1iZXIpCit7CisgICAgc3Vic2V0VGVzdEJ5S2V5KHRoaXMu
bmFtZSwgdGVzdCwgZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIGlzUGFpckl0ZXJhdG9y
ID0gbWVtYmVyLmlkbFR5cGUubGVuZ3RoID09PSAyOworICAgICAgICB2YXIgcHJvdG8gPSB0aGlz
LmdldF9pbnRlcmZhY2Vfb2JqZWN0KCkucHJvdG90eXBlOworICAgICAgICB2YXIgaXRlcmF0b3JE
ZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihwcm90bywgU3ltYm9sLmFzeW5j
SXRlcmF0b3IpOworCisgICAgICAgIGFzc2VydF90cnVlKGl0ZXJhdG9yRGVzYy53cml0YWJsZSwg
IkBAYXN5bmNJdGVyYXRvciBwcm9wZXJ0eSBzaG91bGQgYmUgd3JpdGFibGUiKTsKKyAgICAgICAg
YXNzZXJ0X3RydWUoaXRlcmF0b3JEZXNjLmNvbmZpZ3VyYWJsZSwgIkBAYXN5bmNJdGVyYXRvciBw
cm9wZXJ0eSBzaG91bGQgYmUgY29uZmlndXJhYmxlIik7CisgICAgICAgIGFzc2VydF9mYWxzZShp
dGVyYXRvckRlc2MuZW51bWVyYWJsZSwgIkBAYXN5bmNJdGVyYXRvciBwcm9wZXJ0eSBzaG91bGQg
bm90IGJlIGVudW1lcmFibGUiKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgaXRlcmF0
b3JEZXNjLnZhbHVlLCAiZnVuY3Rpb24iLCAiQEBhc3luY0l0ZXJhdG9yIHByb3BlcnR5IHNob3Vs
ZCBiZSBhIGZ1bmN0aW9uIik7CisgICAgICAgIGFzc2VydF9lcXVhbHMoaXRlcmF0b3JEZXNjLnZh
bHVlLmxlbmd0aCwgMCwgIkBAYXN5bmNJdGVyYXRvciBmdW5jdGlvbiBvYmplY3QgbGVuZ3RoIHNo
b3VsZCBiZSAwIik7CisgICAgICAgIGFzc2VydF9lcXVhbHMoaXRlcmF0b3JEZXNjLnZhbHVlLm5h
bWUsIGlzUGFpckl0ZXJhdG9yID8gImVudHJpZXMiIDogInZhbHVlcyIsICJAQGFzeW5jSXRlcmF0
b3IgZnVuY3Rpb24gb2JqZWN0IHNob3VsZCBoYXZlIHRoZSByaWdodCBuYW1lIik7CisKKyAgICAg
ICAgaWYgKGlzUGFpckl0ZXJhdG9yKSB7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHByb3Rv
WyJlbnRyaWVzIl0sIHByb3RvW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSwgImVudHJpZXMgbWV0aG9k
IHNob3VsZCBiZSB0aGUgc2FtZSBhcyBAQGFzeW5jSXRlcmF0b3IgbWV0aG9kIik7CisgICAgICAg
ICAgICBbImVudHJpZXMiLCAia2V5cyIsICJ2YWx1ZXMiXS5mb3JFYWNoKHByb3BlcnR5ID0+IHsK
KyAgICAgICAgICAgICAgICB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IocHJvdG8sIHByb3BlcnR5KTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHR5cGVv
ZiBkZXNjLnZhbHVlLCAiZnVuY3Rpb24iLCBwcm9wZXJ0eSArICIgcHJvcGVydHkgc2hvdWxkIGJl
IGEgZnVuY3Rpb24iKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGRlc2MudmFsdWUu
bGVuZ3RoLCAwLCBwcm9wZXJ0eSArICIgZnVuY3Rpb24gb2JqZWN0IGxlbmd0aCBzaG91bGQgYmUg
MCIpOworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZGVzYy52YWx1ZS5uYW1lLCBwcm9w
ZXJ0eSwgcHJvcGVydHkgKyAiIGZ1bmN0aW9uIG9iamVjdCBzaG91bGQgaGF2ZSB0aGUgcmlnaHQg
bmFtZSIpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBh
c3NlcnRfZXF1YWxzKHByb3RvWyJ2YWx1ZXMiXSwgcHJvdG9bU3ltYm9sLmFzeW5jSXRlcmF0b3Jd
LCAidmFsdWVzIG1ldGhvZCBzaG91bGQgYmUgdGhlIHNhbWUgYXMgQEBhc3luY0l0ZXJhdG9yIG1l
dGhvZCIpOworICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKCJlbnRyaWVzIiBpbiBwcm90bywgInNo
b3VsZCBub3QgaGF2ZSBhbiBlbnRyaWVzIG1ldGhvZCIpOworICAgICAgICAgICAgYXNzZXJ0X2Zh
bHNlKCJrZXlzIiBpbiBwcm90bywgInNob3VsZCBub3QgaGF2ZSBhIGtleXMgbWV0aG9kIik7Cisg
ICAgICAgIH0KKyAgICB9LmJpbmQodGhpcyksIHRoaXMubmFtZSArICIgaW50ZXJmYWNlOiBhc3lu
YyBpdGVyYWJsZTwiICsgbWVtYmVyLmlkbFR5cGUubWFwKGZ1bmN0aW9uKHQpIHsgcmV0dXJuIHQu
aWRsVHlwZTsgfSkuam9pbigiLCAiKSArICI+Iik7CiB9OwogCi0vL0B9CiBJZGxJbnRlcmZhY2Uu
cHJvdG90eXBlLnRlc3RfbWVtYmVyX3N0cmluZ2lmaWVyID0gZnVuY3Rpb24obWVtYmVyKQotLy9A
ewogewotICAgIHRlc3QoZnVuY3Rpb24oKQorICAgIHN1YnNldFRlc3RCeUtleSh0aGlzLm5hbWUs
IHRlc3QsIGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIGlmICh0aGlzLmlzX2NhbGxiYWNrKCkg
JiYgIXRoaXMuaGFzX2NvbnN0YW50cygpKSB7CisgICAgICAgIGlmICghdGhpcy5zaG91bGRfaGF2
ZV9pbnRlcmZhY2Vfb2JqZWN0KCkpIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
Ci0gICAgICAgIGFzc2VydF9vd25fcHJvcGVydHkoc2VsZiwgdGhpcy5uYW1lLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJzZWxmIGRvZXMgbm90IGhhdmUgb3duIHByb3BlcnR5ICIgKyBm
b3JtYXRfdmFsdWUodGhpcy5uYW1lKSk7CisgICAgICAgIHRoaXMuYXNzZXJ0X2ludGVyZmFjZV9v
YmplY3RfZXhpc3RzKCk7CiAKICAgICAgICAgaWYgKHRoaXMuaXNfY2FsbGJhY2soKSkgewotICAg
ICAgICAgICAgYXNzZXJ0X2ZhbHNlKCJwcm90b3R5cGUiIGluIHNlbGZbdGhpcy5uYW1lXSwKKyAg
ICAgICAgICAgIGFzc2VydF9mYWxzZSgicHJvdG90eXBlIiBpbiB0aGlzLmdldF9pbnRlcmZhY2Vf
b2JqZWN0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uYW1lICsgJyBzaG91bGQg
bm90IGhhdmUgYSAicHJvdG90eXBlIiBwcm9wZXJ0eScpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKLSAgICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0eShzZWxmW3RoaXMubmFtZV0s
ICJwcm90b3R5cGUiLAorICAgICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KHRoaXMuZ2V0X2ludGVy
ZmFjZV9vYmplY3QoKSwgInByb3RvdHlwZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J2ludGVyZmFjZSAiJyArIHRoaXMubmFtZSArICciIGRvZXMgbm90IGhhdmUgb3duIHByb3BlcnR5
ICJwcm90b3R5cGUiJyk7CiAKICAgICAgICAgLy8gIi4gLiAuIHRoZSBwcm9wZXJ0eSBleGlzdHMg
b24gdGhlIGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0LiIKLSAgICAgICAgdmFyIGludGVyZmFj
ZVByb3RvdHlwZU9iamVjdCA9IHNlbGZbdGhpcy5uYW1lXS5wcm90b3R5cGU7Ci0gICAgICAgIGFz
c2VydF9vd25fcHJvcGVydHkoc2VsZlt0aGlzLm5hbWVdLnByb3RvdHlwZSwgInRvU3RyaW5nIiwK
KyAgICAgICAgdmFyIGludGVyZmFjZVByb3RvdHlwZU9iamVjdCA9IHRoaXMuZ2V0X2ludGVyZmFj
ZV9vYmplY3QoKS5wcm90b3R5cGU7CisgICAgICAgIGFzc2VydF9vd25fcHJvcGVydHkoaW50ZXJm
YWNlUHJvdG90eXBlT2JqZWN0LCAidG9TdHJpbmciLAogICAgICAgICAgICAgICAgICJpbnRlcmZh
Y2UgcHJvdG90eXBlIG9iamVjdCBtaXNzaW5nIG5vbi1zdGF0aWMgb3BlcmF0aW9uIik7CiAKICAg
ICAgICAgdmFyIHN0cmluZ2lmaWVyVW5mb3JnZWFibGUgPSBtZW1iZXIuaXNVbmZvcmdlYWJsZTsK
QEAgLTE0MTUsMTEgKzI1MDksMTEgQEAgSWRsSW50ZXJmYWNlLnByb3RvdHlwZS50ZXN0X21lbWJl
cl9zdHJpbmdpZmllciA9IGZ1bmN0aW9uKG1lbWJlcikKICAgICAgICAgLy8gIlRoZSBwcm9wZXJ0
eSBoYXMgYXR0cmlidXRlcyB7IFtbV3JpdGFibGVdXTogQiwKICAgICAgICAgLy8gW1tFbnVtZXJh
YmxlXV06IHRydWUsIFtbQ29uZmlndXJhYmxlXV06IEIgfSwgd2hlcmUgQiBpcyBmYWxzZSBpZiB0
aGUKICAgICAgICAgLy8gc3RyaW5naWZpZXIgaXMgdW5mb3JnZWFibGUgb24gdGhlIGludGVyZmFj
ZSwgYW5kIHRydWUgb3RoZXJ3aXNlLiIKLSAgICAgICAgYXNzZXJ0X2ZhbHNlKCJnZXQiIGluIGRl
c2MsICJwcm9wZXJ0eSBoYXMgZ2V0dGVyIik7Ci0gICAgICAgIGFzc2VydF9mYWxzZSgic2V0IiBp
biBkZXNjLCAicHJvcGVydHkgaGFzIHNldHRlciIpOworICAgICAgICBhc3NlcnRfZmFsc2UoImdl
dCIgaW4gZGVzYywgInByb3BlcnR5IHNob3VsZCBub3QgaGF2ZSBhIGdldHRlciIpOworICAgICAg
ICBhc3NlcnRfZmFsc2UoInNldCIgaW4gZGVzYywgInByb3BlcnR5IHNob3VsZCBub3QgaGF2ZSBh
IHNldHRlciIpOwogICAgICAgICBhc3NlcnRfZXF1YWxzKGRlc2Mud3JpdGFibGUsICFzdHJpbmdp
ZmllclVuZm9yZ2VhYmxlLAogICAgICAgICAgICAgICAgICAgICAgICJwcm9wZXJ0eSBzaG91bGQg
YmUgd3JpdGFibGUgaWYgYW5kIG9ubHkgaWYgbm90IHVuZm9yZ2VhYmxlIik7Ci0gICAgICAgIGFz
c2VydF90cnVlKGRlc2MuZW51bWVyYWJsZSwgInByb3BlcnR5IGlzIG5vdCBlbnVtZXJhYmxlIik7
CisgICAgICAgIGFzc2VydF90cnVlKGRlc2MuZW51bWVyYWJsZSwgInByb3BlcnR5IHNob3VsZCBi
ZSBlbnVtZXJhYmxlIik7CiAgICAgICAgIGFzc2VydF9lcXVhbHMoZGVzYy5jb25maWd1cmFibGUs
ICFzdHJpbmdpZmllclVuZm9yZ2VhYmxlLAogICAgICAgICAgICAgICAgICAgICAgICJwcm9wZXJ0
eSBzaG91bGQgYmUgY29uZmlndXJhYmxlIGlmIGFuZCBvbmx5IGlmIG5vdCB1bmZvcmdlYWJsZSIp
OwogICAgICAgICAvLyAiVGhlIHZhbHVlIG9mIHRoZSBwcm9wZXJ0eSBpcyBhIEZ1bmN0aW9uIG9i
amVjdCwgd2hpY2ggYmVoYXZlcyBhcwpAQCAtMTQzMiw4ICsyNTI2LDggQEAgSWRsSW50ZXJmYWNl
LnByb3RvdHlwZS50ZXN0X21lbWJlcl9zdHJpbmdpZmllciA9IGZ1bmN0aW9uKG1lbWJlcikKICAg
ICAgICAgICAgICJwcm9wZXJ0eSBoYXMgd3JvbmcgLmxlbmd0aCIpOwogCiAgICAgICAgIC8vICJM
ZXQgTyBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgVG9PYmplY3Qgb24gdGhlIHRoaXMgdmFsdWUu
IgotICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7Ci0g
ICAgICAgICAgICBzZWxmW3RoaXMubmFtZV0ucHJvdG90eXBlLnRvU3RyaW5nLmFwcGx5KG51bGws
IFtdKTsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhnbG9iYWxPZihpbnRlcmZhY2VQcm90b3R5
cGVPYmplY3QudG9TdHJpbmcpLlR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBp
bnRlcmZhY2VQcm90b3R5cGVPYmplY3QudG9TdHJpbmcuYXBwbHkobnVsbCwgW10pOwogICAgICAg
ICB9LCAiY2FsbGluZyBzdHJpbmdpZmllciB3aXRoIHRoaXMgPSBudWxsIGRpZG4ndCB0aHJvdyBU
eXBlRXJyb3IiKTsKIAogICAgICAgICAvLyAiSWYgTyBpcyBub3QgYW4gb2JqZWN0IHRoYXQgaW1w
bGVtZW50cyB0aGUgaW50ZXJmYWNlIG9uIHdoaWNoIHRoZQpAQCAtMTQ0MSwzMyArMjUzNSwzMSBA
QCBJZGxJbnRlcmZhY2UucHJvdG90eXBlLnRlc3RfbWVtYmVyX3N0cmluZ2lmaWVyID0gZnVuY3Rp
b24obWVtYmVyKQogICAgICAgICAvLwogICAgICAgICAvLyBUT0RPOiBUZXN0IGEgcGxhdGZvcm0g
b2JqZWN0IHRoYXQgaW1wbGVtZW50cyBzb21lIG90aGVyCiAgICAgICAgIC8vIGludGVyZmFjZS4g
IChIYXZlIHRvIGJlIHN1cmUgdG8gZ2V0IGluaGVyaXRhbmNlIHJpZ2h0LikKLSAgICAgICAgYXNz
ZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgc2Vs
Zlt0aGlzLm5hbWVdLnByb3RvdHlwZS50b1N0cmluZy5hcHBseSh7fSwgW10pOworICAgICAgICBh
c3NlcnRfdGhyb3dzX2pzKGdsb2JhbE9mKGludGVyZmFjZVByb3RvdHlwZU9iamVjdC50b1N0cmlu
ZykuVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGludGVyZmFjZVByb3RvdHlw
ZU9iamVjdC50b1N0cmluZy5hcHBseSh7fSwgW10pOwogICAgICAgICB9LCAiY2FsbGluZyBzdHJp
bmdpZmllciB3aXRoIHRoaXMgPSB7fSBkaWRuJ3QgdGhyb3cgVHlwZUVycm9yIik7CiAgICAgfS5i
aW5kKHRoaXMpLCB0aGlzLm5hbWUgKyAiIGludGVyZmFjZTogc3RyaW5naWZpZXIiKTsKIH07CiAK
LS8vQH0KIElkbEludGVyZmFjZS5wcm90b3R5cGUudGVzdF9tZW1iZXJzID0gZnVuY3Rpb24oKQot
Ly9AewogewogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5tZW1iZXJzLmxlbmd0aDsgaSsr
KQogICAgIHsKICAgICAgICAgdmFyIG1lbWJlciA9IHRoaXMubWVtYmVyc1tpXTsKLSAgICAgICAg
c3dpdGNoIChtZW1iZXIudHlwZSkgewotICAgICAgICBjYXNlICJpdGVyYWJsZSI6Ci0gICAgICAg
ICAgICB0aGlzLmFkZF9pdGVyYWJsZV9tZW1iZXJzKG1lbWJlcik7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgLy8gVE9ETzogYWRkIHNldGxpa2UgYW5kIG1hcGxpa2UgaGFuZGxpbmcuCi0g
ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKG1lbWJlci51
bnRlc3RlZCkgeworICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICB9CiAKLSAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubWVtYmVycy5sZW5ndGg7IGkrKykKLSAgICB7Ci0g
ICAgICAgIHZhciBtZW1iZXIgPSB0aGlzLm1lbWJlcnNbaV07Ci0gICAgICAgIGlmIChtZW1iZXIu
dW50ZXN0ZWQpIHsKKyAgICAgICAgaWYgKCFleHBvc2VkX2luKGV4cG9zdXJlX3NldChtZW1iZXIs
IHRoaXMuZXhwb3N1cmVTZXQpKSkgeworICAgICAgICAgICAgc3Vic2V0VGVzdEJ5S2V5KHRoaXMu
bmFtZSwgdGVzdCwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgLy8gSXQncyBub3QgZXhw
b3NlZCwgc28gd2Ugc2hvdWxkbid0IGZpbmQgaXQgYW55d2hlcmUuCisgICAgICAgICAgICAgICAg
YXNzZXJ0X2ZhbHNlKG1lbWJlci5uYW1lIGluIHRoaXMuZ2V0X2ludGVyZmFjZV9vYmplY3QoKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBpbnRlcmZhY2Ugb2JqZWN0IG11c3Qg
bm90IGhhdmUgYSBwcm9wZXJ0eSAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9y
bWF0X3ZhbHVlKG1lbWJlci5uYW1lKSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKG1l
bWJlci5uYW1lIGluIHRoaXMuZ2V0X2ludGVyZmFjZV9vYmplY3QoKS5wcm90b3R5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgcHJvdG90eXBlIG9iamVjdCBtdXN0IG5vdCBo
YXZlIGEgcHJvcGVydHkgIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdF92
YWx1ZShtZW1iZXIubmFtZSkpOworICAgICAgICAgICAgfS5iaW5kKHRoaXMpLCB0aGlzLm5hbWUg
KyAiIGludGVyZmFjZTogbWVtYmVyICIgKyBtZW1iZXIubmFtZSk7CiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgfQogCkBAIC0xNDgzLDcgKzI1NzUsNyBAQCBJZGxJbnRlcmZhY2UucHJv
dG90eXBlLnRlc3RfbWVtYmVycyA9IGZ1bmN0aW9uKCkKICAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICAgICB0aGlzLnRlc3RfbWVtYmVyX2F0dHJpYnV0ZShtZW1iZXIpOwogICAgICAgICAgICAg
fQotICAgICAgICAgICAgaWYgKG1lbWJlci5zdHJpbmdpZmllcikgeworICAgICAgICAgICAgaWYg
KG1lbWJlci5zcGVjaWFsID09PSAic3RyaW5naWZpZXIiKSB7CiAgICAgICAgICAgICAgICAgdGhp
cy50ZXN0X21lbWJlcl9zdHJpbmdpZmllcihtZW1iZXIpOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgYnJlYWs7CkBAIC0xNDk4LDEzICsyNTkwLDE3IEBAIElkbEludGVyZmFjZS5wcm90b3R5
cGUudGVzdF9tZW1iZXJzID0gZnVuY3Rpb24oKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICAgICAgICAgdGhpcy50ZXN0X21lbWJlcl9vcGVyYXRpb24obWVtYmVyKTsKICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKG1lbWJlci5zdHJpbmdpZmllcikgewor
ICAgICAgICAgICAgfSBlbHNlIGlmIChtZW1iZXIuc3BlY2lhbCA9PT0gInN0cmluZ2lmaWVyIikg
ewogICAgICAgICAgICAgICAgIHRoaXMudGVzdF9tZW1iZXJfc3RyaW5naWZpZXIobWVtYmVyKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgIml0ZXJh
YmxlIjoKLSAgICAgICAgICAgIHRoaXMudGVzdF9tZW1iZXJfaXRlcmFibGUobWVtYmVyKTsKKyAg
ICAgICAgICAgIGlmIChtZW1iZXIuYXN5bmMpIHsKKyAgICAgICAgICAgICAgICB0aGlzLnRlc3Rf
bWVtYmVyX2FzeW5jX2l0ZXJhYmxlKG1lbWJlcik7CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIHRoaXMudGVzdF9tZW1iZXJfaXRlcmFibGUobWVtYmVyKTsKKyAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAg
Ly8gVE9ETzogY2hlY2sgbW9yZSBtZW1iZXIgdHlwZXMuCkBAIC0xNTEzLDkgKzI2MDksNyBAQCBJ
ZGxJbnRlcmZhY2UucHJvdG90eXBlLnRlc3RfbWVtYmVycyA9IGZ1bmN0aW9uKCkKICAgICB9CiB9
OwogCi0vL0B9CiBJZGxJbnRlcmZhY2UucHJvdG90eXBlLnRlc3Rfb2JqZWN0ID0gZnVuY3Rpb24o
ZGVzYykKLS8vQHsKIHsKICAgICB2YXIgb2JqLCBleGNlcHRpb24gPSBudWxsOwogICAgIHRyeQpA
QCAtMTUyNywxOCArMjYyMSwyNSBAQCBJZGxJbnRlcmZhY2UucHJvdG90eXBlLnRlc3Rfb2JqZWN0
ID0gZnVuY3Rpb24oZGVzYykKICAgICAgICAgZXhjZXB0aW9uID0gZTsKICAgICB9CiAKLSAgICB2
YXIgZXhwZWN0ZWRfdHlwZW9mID0KLSAgICAgICAgdGhpcy5tZW1iZXJzLnNvbWUoZnVuY3Rpb24o
bWVtYmVyKSB7IHJldHVybiBtZW1iZXIubGVnYWN5Y2FsbGVyOyB9KQotICAgICAgICA/ICJmdW5j
dGlvbiIKLSAgICAgICAgOiAib2JqZWN0IjsKKyAgICB2YXIgZXhwZWN0ZWRfdHlwZW9mOworICAg
IGlmICh0aGlzLm5hbWUgPT0gIkhUTUxBbGxDb2xsZWN0aW9uIikKKyAgICB7CisgICAgICAgIC8v
IFJlc3VsdCBvZiBbW0lzSFRNTEREQV1dIHNsb3QKKyAgICAgICAgZXhwZWN0ZWRfdHlwZW9mID0g
InVuZGVmaW5lZCI7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIGV4cGVjdGVkX3R5
cGVvZiA9ICJvYmplY3QiOworICAgIH0KIAogICAgIHRoaXMudGVzdF9wcmltYXJ5X2ludGVyZmFj
ZV9vZihkZXNjLCBvYmosIGV4Y2VwdGlvbiwgZXhwZWN0ZWRfdHlwZW9mKTsKKwogICAgIHZhciBj
dXJyZW50X2ludGVyZmFjZSA9IHRoaXM7CiAgICAgd2hpbGUgKGN1cnJlbnRfaW50ZXJmYWNlKQog
ICAgIHsKICAgICAgICAgaWYgKCEoY3VycmVudF9pbnRlcmZhY2UubmFtZSBpbiB0aGlzLmFycmF5
Lm1lbWJlcnMpKQogICAgICAgICB7Ci0gICAgICAgICAgICB0aHJvdyAiSW50ZXJmYWNlICIgKyBj
dXJyZW50X2ludGVyZmFjZS5uYW1lICsgIiBub3QgZm91bmQgKGluaGVyaXRlZCBieSAiICsgdGhp
cy5uYW1lICsgIikiOworICAgICAgICAgICAgdGhyb3cgbmV3IElkbEhhcm5lc3NFcnJvcigiSW50
ZXJmYWNlICIgKyBjdXJyZW50X2ludGVyZmFjZS5uYW1lICsgIiBub3QgZm91bmQgKGluaGVyaXRl
ZCBieSAiICsgdGhpcy5uYW1lICsgIikiKTsKICAgICAgICAgfQogICAgICAgICBpZiAoY3VycmVu
dF9pbnRlcmZhY2UucHJldmVudF9tdWx0aXBsZV90ZXN0aW5nICYmIGN1cnJlbnRfaW50ZXJmYWNl
LmFscmVhZHlfdGVzdGVkKQogICAgICAgICB7CkBAIC0xNTQ5LDI0ICsyNjUwLDQwIEBAIElkbElu
dGVyZmFjZS5wcm90b3R5cGUudGVzdF9vYmplY3QgPSBmdW5jdGlvbihkZXNjKQogICAgIH0KIH07
CiAKLS8vQH0KIElkbEludGVyZmFjZS5wcm90b3R5cGUudGVzdF9wcmltYXJ5X2ludGVyZmFjZV9v
ZiA9IGZ1bmN0aW9uKGRlc2MsIG9iaiwgZXhjZXB0aW9uLCBleHBlY3RlZF90eXBlb2YpCi0vL0B7
CiB7CisgICAgLy8gT25seSB0aGUgb2JqZWN0IGl0c2VsZiwgbm90IGl0cyBtZW1iZXJzLCBhcmUg
dGVzdGVkIGhlcmUsIHNvIGlmIHRoZQorICAgIC8vIGludGVyZmFjZSBpcyB1bnRlc3RlZCwgdGhl
cmUgaXMgbm90aGluZyB0byBkby4KKyAgICBpZiAodGhpcy51bnRlc3RlZCkKKyAgICB7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyAiVGhlIGludGVybmFsIFtbU2V0UHJvdG90eXBl
T2ZdXSBtZXRob2Qgb2YgZXZlcnkgcGxhdGZvcm0gb2JqZWN0IHRoYXQKKyAgICAvLyBpbXBsZW1l
bnRzIGFuIGludGVyZmFjZSB3aXRoIHRoZSBbR2xvYmFsXSBleHRlbmRlZAorICAgIC8vIGF0dHJp
YnV0ZSBtdXN0IGV4ZWN1dGUgdGhlIHNhbWUgYWxnb3JpdGhtIGFzIGlzIGRlZmluZWQgZm9yIHRo
ZQorICAgIC8vIFtbU2V0UHJvdG90eXBlT2ZdXSBpbnRlcm5hbCBtZXRob2Qgb2YgYW4gaW1tdXRh
YmxlIHByb3RvdHlwZSBleG90aWMKKyAgICAvLyBvYmplY3QuIgorICAgIC8vIGh0dHBzOi8vaGV5
Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI3BsYXRmb3JtLW9iamVjdC1zZXRwcm90b3R5cGVvZgorICAg
IGlmICh0aGlzLmlzX2dsb2JhbCgpKQorICAgIHsKKyAgICAgICAgdGhpcy50ZXN0X2ltbXV0YWJs
ZV9wcm90b3R5cGUoImdsb2JhbCBwbGF0Zm9ybSBvYmplY3QiLCBvYmopOworICAgIH0KKworCiAg
ICAgLy8gV2UgY2FuJ3QgZWFzaWx5IHRlc3QgdGhhdCBpdHMgcHJvdG90eXBlIGlzIGNvcnJlY3Qg
aWYgdGhlcmUncyBubwogICAgIC8vIGludGVyZmFjZSBvYmplY3QsIG9yIHRoZSBvYmplY3QgaXMg
ZnJvbSBhIGRpZmZlcmVudCBnbG9iYWwgZW52aXJvbm1lbnQKICAgICAvLyAobm90IGluc3RhbmNl
b2YgT2JqZWN0KS4gIFRPRE86IHRlc3QgaW4gdGhpcyBjYXNlIHRoYXQgaXRzIHByb3RvdHlwZSBh
dAogICAgIC8vIGxlYXN0IGxvb2tzIGNvcnJlY3QsIGV2ZW4gaWYgd2UgY2FuJ3QgdGVzdCB0aGF0
IGl0J3MgYWN0dWFsbHkgY29ycmVjdC4KLSAgICBpZiAoIXRoaXMuaGFzX2V4dGVuZGVkX2F0dHJp
YnV0ZSgiTm9JbnRlcmZhY2VPYmplY3QiKQorICAgIGlmICh0aGlzLnNob3VsZF9oYXZlX2ludGVy
ZmFjZV9vYmplY3QoKQogICAgICYmICh0eXBlb2Ygb2JqICE9IGV4cGVjdGVkX3R5cGVvZiB8fCBv
YmogaW5zdGFuY2VvZiBPYmplY3QpKQogICAgIHsKLSAgICAgICAgdGVzdChmdW5jdGlvbigpCisg
ICAgICAgIHN1YnNldFRlc3RCeUtleSh0aGlzLm5hbWUsIHRlc3QsIGZ1bmN0aW9uKCkKICAgICAg
ICAgewogICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhleGNlcHRpb24sIG51bGwsICJVbmV4cGVj
dGVkIGV4Y2VwdGlvbiB3aGVuIGV2YWx1YXRpbmcgb2JqZWN0Iik7CiAgICAgICAgICAgICBhc3Nl
cnRfZXF1YWxzKHR5cGVvZiBvYmosIGV4cGVjdGVkX3R5cGVvZiwgIndyb25nIHR5cGVvZiBvYmpl
Y3QiKTsKLSAgICAgICAgICAgIGFzc2VydF9vd25fcHJvcGVydHkoc2VsZiwgdGhpcy5uYW1lLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2VsZiBkb2VzIG5vdCBoYXZlIG93biBw
cm9wZXJ0eSAiICsgZm9ybWF0X3ZhbHVlKHRoaXMubmFtZSkpOwotICAgICAgICAgICAgYXNzZXJ0
X293bl9wcm9wZXJ0eShzZWxmW3RoaXMubmFtZV0sICJwcm90b3R5cGUiLAorICAgICAgICAgICAg
dGhpcy5hc3NlcnRfaW50ZXJmYWNlX29iamVjdF9leGlzdHMoKTsKKyAgICAgICAgICAgIGFzc2Vy
dF9vd25fcHJvcGVydHkodGhpcy5nZXRfaW50ZXJmYWNlX29iamVjdCgpLCAicHJvdG90eXBlIiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludGVyZmFjZSAiJyArIHRoaXMubmFt
ZSArICciIGRvZXMgbm90IGhhdmUgb3duIHByb3BlcnR5ICJwcm90b3R5cGUiJyk7CiAKICAgICAg
ICAgICAgIC8vICJUaGUgdmFsdWUgb2YgdGhlIGludGVybmFsIFtbUHJvdG90eXBlXV0gcHJvcGVy
dHkgb2YgdGhlCkBAIC0xNTc0LDM5ICsyNjkxLDUwIEBAIElkbEludGVyZmFjZS5wcm90b3R5cGUu
dGVzdF9wcmltYXJ5X2ludGVyZmFjZV9vZiA9IGZ1bmN0aW9uKGRlc2MsIG9iaiwgZXhjZXB0aW9u
CiAgICAgICAgICAgICAvLyBpbnRlcmZhY2UgZnJvbSB0aGUgcGxhdGZvcm0gb2JqZWN04oCZcyBh
c3NvY2lhdGVkIGdsb2JhbAogICAgICAgICAgICAgLy8gZW52aXJvbm1lbnQuIgogICAgICAgICAg
ICAgYXNzZXJ0X2VxdWFscyhPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2VsZlt0aGlzLm5hbWVdLnByb3RvdHlwZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgdGhpcy5nZXRfaW50ZXJmYWNlX29iamVjdCgpLnByb3RvdHlwZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGVzYyArICIncyBwcm90b3R5cGUgaXMgbm90ICIgKyB0aGlz
Lm5hbWUgKyAiLnByb3RvdHlwZSIpOwogICAgICAgICB9LmJpbmQodGhpcyksIHRoaXMubmFtZSAr
ICIgbXVzdCBiZSBwcmltYXJ5IGludGVyZmFjZSBvZiAiICsgZGVzYyk7CiAgICAgfQogCiAgICAg
Ly8gIlRoZSBjbGFzcyBzdHJpbmcgb2YgYSBwbGF0Zm9ybSBvYmplY3QgdGhhdCBpbXBsZW1lbnRz
IG9uZSBvciBtb3JlCi0gICAgLy8gaW50ZXJmYWNlcyBtdXN0IGJlIHRoZSBpZGVudGlmaWVyIG9m
IHRoZSBwcmltYXJ5IGludGVyZmFjZSBvZiB0aGUKKyAgICAvLyBpbnRlcmZhY2VzIG11c3QgYmUg
dGhlIHF1YWxpZmllZCBuYW1lIG9mIHRoZSBwcmltYXJ5IGludGVyZmFjZSBvZiB0aGUKICAgICAv
LyBwbGF0Zm9ybSBvYmplY3QuIgotICAgIHRlc3QoZnVuY3Rpb24oKQorICAgIHN1YnNldFRlc3RC
eUtleSh0aGlzLm5hbWUsIHRlc3QsIGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIGFzc2VydF9l
cXVhbHMoZXhjZXB0aW9uLCBudWxsLCAiVW5leHBlY3RlZCBleGNlcHRpb24gd2hlbiBldmFsdWF0
aW5nIG9iamVjdCIpOwogICAgICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBvYmosIGV4cGVjdGVk
X3R5cGVvZiwgIndyb25nIHR5cGVvZiBvYmplY3QiKTsKLSAgICAgICAgYXNzZXJ0X2NsYXNzX3N0
cmluZyhvYmosIHRoaXMubmFtZSwgImNsYXNzIHN0cmluZyBvZiAiICsgZGVzYyk7CisgICAgICAg
IGFzc2VydF9jbGFzc19zdHJpbmcob2JqLCB0aGlzLmdldF9xdWFsaWZpZWRfbmFtZSgpLCAiY2xh
c3Mgc3RyaW5nIG9mICIgKyBkZXNjKTsKICAgICAgICAgaWYgKCF0aGlzLmhhc19zdHJpbmdpZmll
cigpKQogICAgICAgICB7Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKFN0cmluZyhvYmopLCAi
W29iamVjdCAiICsgdGhpcy5uYW1lICsgIl0iLCAiU3RyaW5nKCIgKyBkZXNjICsgIikiKTsKKyAg
ICAgICAgICAgIGFzc2VydF9lcXVhbHMoU3RyaW5nKG9iaiksICJbb2JqZWN0ICIgKyB0aGlzLmdl
dF9xdWFsaWZpZWRfbmFtZSgpICsgIl0iLCAiU3RyaW5nKCIgKyBkZXNjICsgIikiKTsKICAgICAg
ICAgfQogICAgIH0uYmluZCh0aGlzKSwgIlN0cmluZ2lmaWNhdGlvbiBvZiAiICsgZGVzYyk7CiB9
OwogCi0vL0B9CiBJZGxJbnRlcmZhY2UucHJvdG90eXBlLnRlc3RfaW50ZXJmYWNlX29mID0gZnVu
Y3Rpb24oZGVzYywgb2JqLCBleGNlcHRpb24sIGV4cGVjdGVkX3R5cGVvZikKLS8vQHsKIHsKICAg
ICAvLyBUT0RPOiBJbmRleGVkIGFuZCBuYW1lZCBwcm9wZXJ0aWVzLCBtb3JlIGNoZWNrcyBvbiBp
bnRlcmZhY2UgbWVtYmVycwogICAgIHRoaXMuYWxyZWFkeV90ZXN0ZWQgPSB0cnVlOworICAgIGlm
ICghc2hvdWxkUnVuU3ViVGVzdCh0aGlzLm5hbWUpKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9
CiAKICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubWVtYmVycy5sZW5ndGg7IGkrKykKICAg
ICB7CiAgICAgICAgIHZhciBtZW1iZXIgPSB0aGlzLm1lbWJlcnNbaV07CisgICAgICAgIGlmICht
ZW1iZXIudW50ZXN0ZWQpIHsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAg
ICAgIGlmICghZXhwb3NlZF9pbihleHBvc3VyZV9zZXQobWVtYmVyLCB0aGlzLmV4cG9zdXJlU2V0
KSkpIHsKKyAgICAgICAgICAgIHN1YnNldFRlc3RCeUtleSh0aGlzLm5hbWUsIHRlc3QsIGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZXhjZXB0aW9uLCBudWxsLCAi
VW5leHBlY3RlZCBleGNlcHRpb24gd2hlbiBldmFsdWF0aW5nIG9iamVjdCIpOworICAgICAgICAg
ICAgICAgIGFzc2VydF9mYWxzZShtZW1iZXIubmFtZSBpbiBvYmopOworICAgICAgICAgICAgfS5i
aW5kKHRoaXMpLCB0aGlzLm5hbWUgKyAiIGludGVyZmFjZTogIiArIGRlc2MgKyAnIG11c3Qgbm90
IGhhdmUgcHJvcGVydHkgIicgKyBtZW1iZXIubmFtZSArICciJyk7CisgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgfQogICAgICAgICBpZiAobWVtYmVyLnR5cGUgPT0gImF0dHJpYnV0ZSIg
JiYgbWVtYmVyLmlzVW5mb3JnZWFibGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHZhciBhX3Rl
c3QgPSBhc3luY190ZXN0KHRoaXMubmFtZSArICIgaW50ZXJmYWNlOiAiICsgZGVzYyArICcgbXVz
dCBoYXZlIG93biBwcm9wZXJ0eSAiJyArIG1lbWJlci5uYW1lICsgJyInKTsKKyAgICAgICAgICAg
IHZhciBhX3Rlc3QgPSBzdWJzZXRUZXN0QnlLZXkodGhpcy5uYW1lLCBhc3luY190ZXN0LCB0aGlz
Lm5hbWUgKyAiIGludGVyZmFjZTogIiArIGRlc2MgKyAnIG11c3QgaGF2ZSBvd24gcHJvcGVydHkg
IicgKyBtZW1iZXIubmFtZSArICciJyk7CiAgICAgICAgICAgICBhX3Rlc3Quc3RlcChmdW5jdGlv
bigpIHsKICAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGV4Y2VwdGlvbiwgbnVsbCwgIlVu
ZXhwZWN0ZWQgZXhjZXB0aW9uIHdoZW4gZXZhbHVhdGluZyBvYmplY3QiKTsKICAgICAgICAgICAg
ICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBvYmosIGV4cGVjdGVkX3R5cGVvZiwgIndyb25nIHR5
cGVvZiBvYmplY3QiKTsKQEAgLTE2MTgsNyArMjc0Niw3IEBAIElkbEludGVyZmFjZS5wcm90b3R5
cGUudGVzdF9pbnRlcmZhY2Vfb2YgPSBmdW5jdGlvbihkZXNjLCBvYmosIGV4Y2VwdGlvbiwgZXhw
ZWN0CiAgICAgICAgICAgICAgICAgIG1lbWJlci5uYW1lICYmCiAgICAgICAgICAgICAgICAgIG1l
bWJlci5pc1VuZm9yZ2VhYmxlKQogICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgYV90ZXN0ID0g
YXN5bmNfdGVzdCh0aGlzLm5hbWUgKyAiIGludGVyZmFjZTogIiArIGRlc2MgKyAnIG11c3QgaGF2
ZSBvd24gcHJvcGVydHkgIicgKyBtZW1iZXIubmFtZSArICciJyk7CisgICAgICAgICAgICB2YXIg
YV90ZXN0ID0gc3Vic2V0VGVzdEJ5S2V5KHRoaXMubmFtZSwgYXN5bmNfdGVzdCwgdGhpcy5uYW1l
ICsgIiBpbnRlcmZhY2U6ICIgKyBkZXNjICsgJyBtdXN0IGhhdmUgb3duIHByb3BlcnR5ICInICsg
bWVtYmVyLm5hbWUgKyAnIicpOwogICAgICAgICAgICAgYV90ZXN0LnN0ZXAoZnVuY3Rpb24oKQog
ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZXhjZXB0aW9uLCBu
dWxsLCAiVW5leHBlY3RlZCBleGNlcHRpb24gd2hlbiBldmFsdWF0aW5nIG9iamVjdCIpOwpAQCAt
MTYzMywxMSArMjc2MSwxMSBAQCBJZGxJbnRlcmZhY2UucHJvdG90eXBlLnRlc3RfaW50ZXJmYWNl
X29mID0gZnVuY3Rpb24oZGVzYywgb2JqLCBleGNlcHRpb24sIGV4cGVjdAogICAgICAgICB8fCBt
ZW1iZXIudHlwZSA9PSAib3BlcmF0aW9uIikKICAgICAgICAgJiYgbWVtYmVyLm5hbWUpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIHRlc3QoZnVuY3Rpb24oKQorICAgICAgICAgICAgc3Vic2V0VGVz
dEJ5S2V5KHRoaXMubmFtZSwgdGVzdCwgZnVuY3Rpb24oKQogICAgICAgICAgICAgewogICAgICAg
ICAgICAgICAgIGFzc2VydF9lcXVhbHMoZXhjZXB0aW9uLCBudWxsLCAiVW5leHBlY3RlZCBleGNl
cHRpb24gd2hlbiBldmFsdWF0aW5nIG9iamVjdCIpOwogICAgICAgICAgICAgICAgIGFzc2VydF9l
cXVhbHModHlwZW9mIG9iaiwgZXhwZWN0ZWRfdHlwZW9mLCAid3JvbmcgdHlwZW9mIG9iamVjdCIp
OwotICAgICAgICAgICAgICAgIGlmICghbWVtYmVyWyJzdGF0aWMiXSkgeworICAgICAgICAgICAg
ICAgIGlmIChtZW1iZXIuc3BlY2lhbCAhPT0gInN0YXRpYyIpIHsKICAgICAgICAgICAgICAgICAg
ICAgaWYgKCF0aGlzLmlzX2dsb2JhbCgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBhc3Nl
cnRfaW5oZXJpdHMob2JqLCBtZW1iZXIubmFtZSk7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CkBAIC0xNjY0LDcgKzI3OTIsMTUgQEAgSWRsSW50ZXJmYWNlLnByb3RvdHlwZS50ZXN0X2lu
dGVyZmFjZV9vZiA9IGZ1bmN0aW9uKGRlc2MsIG9iaiwgZXhjZXB0aW9uLCBleHBlY3QKICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhyb3du
KQogICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRoaXMuYXJyYXkuYXNzZXJ0X3R5cGVfaXMocHJvcGVydHksIG1lbWJlci5pZGxUeXBlKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5uYW1lID09ICJEb2N1bWVudCIgJiYg
bWVtYmVyLm5hbWUgPT0gImFsbCIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXN1bHQgb2YgW1tJc0hUTUxEREFdXSBz
bG90CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHModHlwZW9m
IHByb3BlcnR5LCAidW5kZWZpbmVkIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXJyYXkuYXNzZXJ0
X3R5cGVfaXMocHJvcGVydHksIG1lbWJlci5pZGxUeXBlKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICAgaWYgKG1lbWJlci50eXBlID09ICJvcGVyYXRpb24iKQpA
QCAtMTY3MiwzMCArMjgwOCwzNCBAQCBJZGxJbnRlcmZhY2UucHJvdG90eXBlLnRlc3RfaW50ZXJm
YWNlX29mID0gZnVuY3Rpb24oZGVzYywgb2JqLCBleGNlcHRpb24sIGV4cGVjdAogICAgICAgICAg
ICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2Ygb2JqW21lbWJlci5uYW1lXSwgImZ1
bmN0aW9uIik7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICB9LmJpbmQodGhpcyksIHRoaXMubmFtZSArICIgaW50ZXJmYWNlOiAiICsgZGVzYyAr
ICcgbXVzdCBpbmhlcml0IHByb3BlcnR5ICInICsgbWVtYmVyLm5hbWUgKyAnIiB3aXRoIHRoZSBw
cm9wZXIgdHlwZSAoJyArIGkgKyAnKScpOworICAgICAgICAgICAgfS5iaW5kKHRoaXMpLCB0aGlz
Lm5hbWUgKyAiIGludGVyZmFjZTogIiArIGRlc2MgKyAnIG11c3QgaW5oZXJpdCBwcm9wZXJ0eSAi
JyArIG1lbWJlciArICciIHdpdGggdGhlIHByb3BlciB0eXBlJyk7CiAgICAgICAgIH0KICAgICAg
ICAgLy8gVE9ETzogVGhpcyBpcyB3cm9uZyBpZiB0aGVyZSBhcmUgbXVsdGlwbGUgb3BlcmF0aW9u
cyB3aXRoIHRoZSBzYW1lCiAgICAgICAgIC8vIGlkZW50aWZpZXIuCiAgICAgICAgIC8vIFRPRE86
IFRlc3QgcGFzc2luZyBhcmd1bWVudHMgb2YgdGhlIHdyb25nIHR5cGUuCiAgICAgICAgIGlmICht
ZW1iZXIudHlwZSA9PSAib3BlcmF0aW9uIiAmJiBtZW1iZXIubmFtZSAmJiBtZW1iZXIuYXJndW1l
bnRzLmxlbmd0aCkKICAgICAgICAgewotICAgICAgICAgICAgdmFyIGFfdGVzdCA9IGFzeW5jX3Rl
c3QoIHRoaXMubmFtZSArICIgaW50ZXJmYWNlOiBjYWxsaW5nICIgKyBtZW1iZXIubmFtZSArCi0g
ICAgICAgICAgICAiKCIgKyBtZW1iZXIuYXJndW1lbnRzLm1hcChmdW5jdGlvbihtKSB7IHJldHVy
biBtLmlkbFR5cGUuaWRsVHlwZTsgfSkgKwotICAgICAgICAgICAgIikgb24gIiArIGRlc2MgKyAi
IHdpdGggdG9vIGZldyBhcmd1bWVudHMgbXVzdCB0aHJvdyBUeXBlRXJyb3IiKTsKKyAgICAgICAg
ICAgIHZhciBkZXNjcmlwdGlvbiA9CisgICAgICAgICAgICAgICAgdGhpcy5uYW1lICsgIiBpbnRl
cmZhY2U6IGNhbGxpbmcgIiArIG1lbWJlciArICIgb24gIiArIGRlc2MgKworICAgICAgICAgICAg
ICAgICIgd2l0aCB0b28gZmV3IGFyZ3VtZW50cyBtdXN0IHRocm93IFR5cGVFcnJvciI7CisgICAg
ICAgICAgICB2YXIgYV90ZXN0ID0gc3Vic2V0VGVzdEJ5S2V5KHRoaXMubmFtZSwgYXN5bmNfdGVz
dCwgZGVzY3JpcHRpb24pOwogICAgICAgICAgICAgYV90ZXN0LnN0ZXAoZnVuY3Rpb24oKQogICAg
ICAgICAgICAgewogICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZXhjZXB0aW9uLCBudWxs
LCAiVW5leHBlY3RlZCBleGNlcHRpb24gd2hlbiBldmFsdWF0aW5nIG9iamVjdCIpOwogICAgICAg
ICAgICAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIG9iaiwgZXhwZWN0ZWRfdHlwZW9mLCAid3Jv
bmcgdHlwZW9mIG9iamVjdCIpOwotICAgICAgICAgICAgICAgIGlmICghbWVtYmVyWyJzdGF0aWMi
XSkgeworICAgICAgICAgICAgICAgIHZhciBmbjsKKyAgICAgICAgICAgICAgICBpZiAobWVtYmVy
LnNwZWNpYWwgIT09ICJzdGF0aWMiKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5p
c19nbG9iYWwoKSAmJiAhbWVtYmVyLmlzVW5mb3JnZWFibGUpIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgIGFzc2VydF9pbmhlcml0cyhvYmosIG1lbWJlci5uYW1lKTsKICAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydF9vd25fcHJvcGVy
dHkob2JqLCBtZW1iZXIubmFtZSk7CiAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgZm4gPSBvYmpbbWVtYmVyLm5hbWVdOwogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBh
c3NlcnRfZmFsc2UobWVtYmVyLm5hbWUgaW4gb2JqKTsKKyAgICAgICAgICAgICAgICAgICAgYXNz
ZXJ0X293bl9wcm9wZXJ0eShvYmouY29uc3RydWN0b3IsIG1lbWJlci5uYW1lLCAiaW50ZXJmYWNl
IG9iamVjdCBtdXN0IGhhdmUgc3RhdGljIG9wZXJhdGlvbiBhcyBvd24gcHJvcGVydHkiKTsKKyAg
ICAgICAgICAgICAgICAgICAgZm4gPSBvYmouY29uc3RydWN0b3JbbWVtYmVyLm5hbWVdOwogICAg
ICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIHZhciBtaW5MZW5ndGggPSBtaW5PdmVy
bG9hZExlbmd0aCh0aGlzLm1lbWJlcnMuZmlsdGVyKGZ1bmN0aW9uKG0pIHsKQEAgLTE3MDQsNyAr
Mjg0NCw3IEBAIElkbEludGVyZmFjZS5wcm90b3R5cGUudGVzdF9pbnRlcmZhY2Vfb2YgPSBmdW5j
dGlvbihkZXNjLCBvYmosIGV4Y2VwdGlvbiwgZXhwZWN0CiAgICAgICAgICAgICAgICAgdmFyIGFy
Z3MgPSBbXTsKICAgICAgICAgICAgICAgICB2YXIgY2IgPSBhd2FpdE5DYWxsYmFja3MobWluTGVu
Z3RoLCBhX3Rlc3QuZG9uZS5iaW5kKGFfdGVzdCkpOwogICAgICAgICAgICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgbWluTGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgdGhyb3dP
clJlamVjdChhX3Rlc3QsIG1lbWJlciwgb2JqW21lbWJlci5uYW1lXSwgb2JqLCBhcmdzLCAgIkNh
bGxlZCB3aXRoICIgKyBpICsgIiBhcmd1bWVudHMiLCBjYik7CisgICAgICAgICAgICAgICAgICAg
IHRocm93T3JSZWplY3QoYV90ZXN0LCBtZW1iZXIsIGZuLCBvYmosIGFyZ3MsICJDYWxsZWQgd2l0
aCAiICsgaSArICIgYXJndW1lbnRzIiwgY2IpOwogCiAgICAgICAgICAgICAgICAgICAgIGFyZ3Mu
cHVzaChjcmVhdGVfc3VpdGFibGVfb2JqZWN0KG1lbWJlci5hcmd1bWVudHNbaV0uaWRsVHlwZSkp
OwogICAgICAgICAgICAgICAgIH0KQEAgLTE3MTMsMTQgKzI4NTMsMjEgQEAgSWRsSW50ZXJmYWNl
LnByb3RvdHlwZS50ZXN0X2ludGVyZmFjZV9vZiA9IGZ1bmN0aW9uKGRlc2MsIG9iaiwgZXhjZXB0
aW9uLCBleHBlY3QKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9LmJpbmQodGhpcykp
OwogICAgICAgICB9CisKKyAgICAgICAgaWYgKG1lbWJlci5pc190b19qc29uX3JlZ3VsYXJfb3Bl
cmF0aW9uKCkpIHsKKyAgICAgICAgICAgIHRoaXMudGVzdF90b19qc29uX29wZXJhdGlvbihkZXNj
LCBvYmosIG1lbWJlcik7CisgICAgICAgIH0KICAgICB9CiB9OwogCi0vL0B9CiBJZGxJbnRlcmZh
Y2UucHJvdG90eXBlLmhhc19zdHJpbmdpZmllciA9IGZ1bmN0aW9uKCkKLS8vQHsKIHsKLSAgICBp
ZiAodGhpcy5tZW1iZXJzLnNvbWUoZnVuY3Rpb24obWVtYmVyKSB7IHJldHVybiBtZW1iZXIuc3Ry
aW5naWZpZXI7IH0pKSB7CisgICAgaWYgKHRoaXMubmFtZSA9PT0gIkRPTUV4Y2VwdGlvbiIpIHsK
KyAgICAgICAgLy8gdG9TdHJpbmcgaXMgaW5oZXJpdGVkIGZyb20gRXJyb3IsIHNvIGRvbid0IGFz
c3VtZSB3ZSBoYXZlIHRoZQorICAgICAgICAvLyBkZWZhdWx0IHN0cmluZ2lmZXIKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorICAgIGlmICh0aGlzLm1lbWJlcnMuc29tZShmdW5jdGlvbiht
ZW1iZXIpIHsgcmV0dXJuIG1lbWJlci5zcGVjaWFsID09PSAic3RyaW5naWZpZXIiOyB9KSkgewog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgaWYgKHRoaXMuYmFzZSAmJgpAQCAtMTcz
MCw5ICsyODc3LDcgQEAgSWRsSW50ZXJmYWNlLnByb3RvdHlwZS5oYXNfc3RyaW5naWZpZXIgPSBm
dW5jdGlvbigpCiAgICAgcmV0dXJuIGZhbHNlOwogfTsKIAotLy9AfQogSWRsSW50ZXJmYWNlLnBy
b3RvdHlwZS5kb19pbnRlcmZhY2VfYXR0cmlidXRlX2Fzc2VydHMgPSBmdW5jdGlvbihvYmosIG1l
bWJlciwgYV90ZXN0KQotLy9AewogewogICAgIC8vIFRoaXMgZnVuY3Rpb24gdGVzdHMgV2ViSURM
IGFzIG9mIDIwMTUtMDEtMjcuCiAgICAgLy8gVE9ETzogQ29uc2lkZXIgW0V4cG9zZWRdLgpAQCAt
MTc0MywyNyArMjg4OCwyMiBAQCBJZGxJbnRlcmZhY2UucHJvdG90eXBlLmRvX2ludGVyZmFjZV9h
dHRyaWJ1dGVfYXNzZXJ0cyA9IGZ1bmN0aW9uKG9iaiwgbWVtYmVyLCBhXwogCiAgICAgdmFyIHBl
bmRpbmdQcm9taXNlcyA9IFtdOwogCi0gICAgLy8gIkZvciBlYWNoIGV4cG9zZWQgYXR0cmlidXRl
IG9mIHRoZSBpbnRlcmZhY2UsIHdoZXRoZXIgaXQgd2FzIGRlY2xhcmVkIG9uCi0gICAgLy8gdGhl
IGludGVyZmFjZSBpdHNlbGYgb3Igb25lIG9mIGl0cyBjb25zZXF1ZW50aWFsIGludGVyZmFjZXMs
IHRoZXJlIE1VU1QKLSAgICAvLyBleGlzdCBhIGNvcnJlc3BvbmRpbmcgcHJvcGVydHkuIFRoZSBj
aGFyYWN0ZXJpc3RpY3Mgb2YgdGhpcyBwcm9wZXJ0eSBhcmUKLSAgICAvLyBhcyBmb2xsb3dzOiIK
LQogICAgIC8vICJUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgaXMgdGhlIGlkZW50aWZpZXIgb2Yg
dGhlIGF0dHJpYnV0ZS4iCiAgICAgYXNzZXJ0X293bl9wcm9wZXJ0eShvYmosIG1lbWJlci5uYW1l
KTsKIAogICAgIC8vICJUaGUgcHJvcGVydHkgaGFzIGF0dHJpYnV0ZXMgeyBbW0dldF1dOiBHLCBb
W1NldF1dOiBTLCBbW0VudW1lcmFibGVdXToKICAgICAvLyB0cnVlLCBbW0NvbmZpZ3VyYWJsZV1d
OiBjb25maWd1cmFibGUgfSwgd2hlcmU6CiAgICAgLy8gImNvbmZpZ3VyYWJsZSBpcyBmYWxzZSBp
ZiB0aGUgYXR0cmlidXRlIHdhcyBkZWNsYXJlZCB3aXRoIHRoZQotICAgIC8vIFtVbmZvcmdlYWJs
ZV0gZXh0ZW5kZWQgYXR0cmlidXRlIGFuZCB0cnVlIG90aGVyd2lzZTsKKyAgICAvLyBbTGVnYWN5
VW5mb3JnZWFibGVdIGV4dGVuZGVkIGF0dHJpYnV0ZSBhbmQgdHJ1ZSBvdGhlcndpc2U7CiAgICAg
Ly8gIkcgaXMgdGhlIGF0dHJpYnV0ZSBnZXR0ZXIsIGRlZmluZWQgYmVsb3c7IGFuZAogICAgIC8v
ICJTIGlzIHRoZSBhdHRyaWJ1dGUgc2V0dGVyLCBhbHNvIGRlZmluZWQgYmVsb3cuIgogICAgIHZh
ciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIG1lbWJlci5uYW1l
KTsKLSAgICBhc3NlcnRfZmFsc2UoInZhbHVlIiBpbiBkZXNjLCAncHJvcGVydHkgZGVzY3JpcHRv
ciBoYXMgdmFsdWUgYnV0IGlzIHN1cHBvc2VkIHRvIGJlIGFjY2Vzc29yJyk7Ci0gICAgYXNzZXJ0
X2ZhbHNlKCJ3cml0YWJsZSIgaW4gZGVzYywgJ3Byb3BlcnR5IGRlc2NyaXB0b3IgaGFzICJ3cml0
YWJsZSIgZmllbGQgYnV0IGlzIHN1cHBvc2VkIHRvIGJlIGFjY2Vzc29yJyk7Ci0gICAgYXNzZXJ0
X3RydWUoZGVzYy5lbnVtZXJhYmxlLCAicHJvcGVydHkgaXMgbm90IGVudW1lcmFibGUiKTsKKyAg
ICBhc3NlcnRfZmFsc2UoInZhbHVlIiBpbiBkZXNjLCAncHJvcGVydHkgZGVzY3JpcHRvciBzaG91
bGQgbm90IGhhdmUgYSAidmFsdWUiIGZpZWxkJyk7CisgICAgYXNzZXJ0X2ZhbHNlKCJ3cml0YWJs
ZSIgaW4gZGVzYywgJ3Byb3BlcnR5IGRlc2NyaXB0b3Igc2hvdWxkIG5vdCBoYXZlIGEgIndyaXRh
YmxlIiBmaWVsZCcpOworICAgIGFzc2VydF90cnVlKGRlc2MuZW51bWVyYWJsZSwgInByb3BlcnR5
IHNob3VsZCBiZSBlbnVtZXJhYmxlIik7CiAgICAgaWYgKG1lbWJlci5pc1VuZm9yZ2VhYmxlKQog
ICAgIHsKLSAgICAgICAgYXNzZXJ0X2ZhbHNlKGRlc2MuY29uZmlndXJhYmxlLCAiW1VuZm9yZ2Vh
YmxlXSBwcm9wZXJ0eSBtdXN0IG5vdCBiZSBjb25maWd1cmFibGUiKTsKKyAgICAgICAgYXNzZXJ0
X2ZhbHNlKGRlc2MuY29uZmlndXJhYmxlLCAiW0xlZ2FjeVVuZm9yZ2VhYmxlXSBwcm9wZXJ0eSBt
dXN0IG5vdCBiZSBjb25maWd1cmFibGUiKTsKICAgICB9CiAgICAgZWxzZQogICAgIHsKQEAgLTE3
NzYsMTkgKzI5MTYsMTkgQEAgSWRsSW50ZXJmYWNlLnByb3RvdHlwZS5kb19pbnRlcmZhY2VfYXR0
cmlidXRlX2Fzc2VydHMgPSBmdW5jdGlvbihvYmosIG1lbWJlciwgYV8KICAgICBhc3NlcnRfZXF1
YWxzKHR5cGVvZiBkZXNjLmdldCwgImZ1bmN0aW9uIiwgImdldHRlciBtdXN0IGJlIEZ1bmN0aW9u
Iik7CiAKICAgICAvLyAiSWYgdGhlIGF0dHJpYnV0ZSBpcyBhIHJlZ3VsYXIgYXR0cmlidXRlLCB0
aGVuOiIKLSAgICBpZiAoIW1lbWJlclsic3RhdGljIl0pIHsKKyAgICBpZiAobWVtYmVyLnNwZWNp
YWwgIT09ICJzdGF0aWMiKSB7CiAgICAgICAgIC8vICJJZiBPIGlzIG5vdCBhIHBsYXRmb3JtIG9i
amVjdCB0aGF0IGltcGxlbWVudHMgSSwgdGhlbjoKLSAgICAgICAgLy8gIklmIHRoZSBhdHRyaWJ1
dGUgd2FzIHNwZWNpZmllZCB3aXRoIHRoZSBbTGVuaWVudFRoaXNdIGV4dGVuZGVkCisgICAgICAg
IC8vICJJZiB0aGUgYXR0cmlidXRlIHdhcyBzcGVjaWZpZWQgd2l0aCB0aGUgW0xlZ2FjeUxlbmll
bnRUaGlzXSBleHRlbmRlZAogICAgICAgICAvLyBhdHRyaWJ1dGUsIHRoZW4gcmV0dXJuIHVuZGVm
aW5lZC4KICAgICAgICAgLy8gIk90aGVyd2lzZSwgdGhyb3cgYSBUeXBlRXJyb3IuIgotICAgICAg
ICBpZiAoIW1lbWJlci5oYXNfZXh0ZW5kZWRfYXR0cmlidXRlKCJMZW5pZW50VGhpcyIpKSB7Cisg
ICAgICAgIGlmICghbWVtYmVyLmhhc19leHRlbmRlZF9hdHRyaWJ1dGUoIkxlZ2FjeUxlbmllbnRU
aGlzIikpIHsKICAgICAgICAgICAgIGlmIChtZW1iZXIuaWRsVHlwZS5nZW5lcmljICE9PSAiUHJv
bWlzZSIpIHsKLSAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwg
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhnbG9iYWxPZihk
ZXNjLmdldCkuVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgZGVz
Yy5nZXQuY2FsbCh7fSk7CiAgICAgICAgICAgICAgICAgfS5iaW5kKHRoaXMpLCAiY2FsbGluZyBn
ZXR0ZXIgb24gd3Jvbmcgb2JqZWN0IHR5cGUgbXVzdCB0aHJvdyBUeXBlRXJyb3IiKTsKICAgICAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgcGVuZGluZ1Byb21pc2VzLnB1c2goCi0g
ICAgICAgICAgICAgICAgICAgIHByb21pc2VfcmVqZWN0cyhhX3Rlc3QsIG5ldyBUeXBlRXJyb3Io
KSwgZGVzYy5nZXQuY2FsbCh7fSksCisgICAgICAgICAgICAgICAgICAgIHByb21pc2VfcmVqZWN0
c19qcyhhX3Rlc3QsIFR5cGVFcnJvciwgZGVzYy5nZXQuY2FsbCh7fSksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiY2FsbGluZyBnZXR0ZXIgb24gd3Jvbmcgb2JqZWN0IHR5
cGUgbXVzdCByZWplY3QgdGhlIHJldHVybiBwcm9taXNlIHdpdGggVHlwZUVycm9yIikpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewpAQCAtMTgwMSwxMCArMjk0MSwxNiBAQCBJZGxJ
bnRlcmZhY2UucHJvdG90eXBlLmRvX2ludGVyZmFjZV9hdHRyaWJ1dGVfYXNzZXJ0cyA9IGZ1bmN0
aW9uKG9iaiwgbWVtYmVyLCBhXwogICAgIC8vIHZhbHVlIDAuIgogICAgIGFzc2VydF9lcXVhbHMo
ZGVzYy5nZXQubGVuZ3RoLCAwLCAiZ2V0dGVyIGxlbmd0aCBtdXN0IGJlIDAiKTsKIAorICAgIC8v
ICJMZXQgbmFtZSBiZSB0aGUgc3RyaW5nICJnZXQgIiBwcmVwZW5kZWQgdG8gYXR0cmlidXRl4oCZ
cyBpZGVudGlmaWVyLiIKKyAgICAvLyAiUGVyZm9ybSAhIFNldEZ1bmN0aW9uTmFtZShGLCBuYW1l
KS4iCisgICAgYXNzZXJ0X2VxdWFscyhkZXNjLmdldC5uYW1lLCAiZ2V0ICIgKyBtZW1iZXIubmFt
ZSwKKyAgICAgICAgImdldHRlciBtdXN0IGhhdmUgdGhlIG5hbWUgJ2dldCAiICsgbWVtYmVyLm5h
bWUgKyAiJyIpOworCiAKICAgICAvLyBUT0RPOiBUZXN0IGNhbGxpbmcgc2V0dGVyIG9uIHRoZSBp
bnRlcmZhY2UgcHJvdG90eXBlIChzaG91bGQgdGhyb3cKICAgICAvLyBUeXBlRXJyb3IgaW4gbW9z
dCBjYXNlcykuCiAgICAgaWYgKG1lbWJlci5yZWFkb25seQorICAgICYmICFtZW1iZXIuaGFzX2V4
dGVuZGVkX2F0dHJpYnV0ZSgiTGVnYWN5TGVuaWVudFNldHRlciIpCiAgICAgJiYgIW1lbWJlci5o
YXNfZXh0ZW5kZWRfYXR0cmlidXRlKCJQdXRGb3J3YXJkcyIpCiAgICAgJiYgIW1lbWJlci5oYXNf
ZXh0ZW5kZWRfYXR0cmlidXRlKCJSZXBsYWNlYWJsZSIpKQogICAgIHsKQEAgLTE4MjAsMTUgKzI5
NjYsMTUgQEAgSWRsSW50ZXJmYWNlLnByb3RvdHlwZS5kb19pbnRlcmZhY2VfYXR0cmlidXRlX2Fz
c2VydHMgPSBmdW5jdGlvbihvYmosIG1lbWJlciwgYV8KICAgICAgICAgYXNzZXJ0X2VxdWFscyh0
eXBlb2YgZGVzYy5zZXQsICJmdW5jdGlvbiIsICJzZXR0ZXIgbXVzdCBiZSBmdW5jdGlvbiBmb3Ig
UHV0Rm9yd2FyZHMsIFJlcGxhY2VhYmxlLCBvciBub24tcmVhZG9ubHkgYXR0cmlidXRlcyIpOwog
CiAgICAgICAgIC8vICJJZiB0aGUgYXR0cmlidXRlIGlzIGEgcmVndWxhciBhdHRyaWJ1dGUsIHRo
ZW46IgotICAgICAgICBpZiAoIW1lbWJlclsic3RhdGljIl0pIHsKKyAgICAgICAgaWYgKG1lbWJl
ci5zcGVjaWFsICE9PSAic3RhdGljIikgewogICAgICAgICAgICAgLy8gIklmIC92YWxpZFRoaXMv
IGlzIGZhbHNlIGFuZCB0aGUgYXR0cmlidXRlIHdhcyBub3Qgc3BlY2lmaWVkCi0gICAgICAgICAg
ICAvLyB3aXRoIHRoZSBbTGVuaWVudFRoaXNdIGV4dGVuZGVkIGF0dHJpYnV0ZSwgdGhlbiB0aHJv
dyBhCisgICAgICAgICAgICAvLyB3aXRoIHRoZSBbTGVnYWN5TGVuaWVudFRoaXNdIGV4dGVuZGVk
IGF0dHJpYnV0ZSwgdGhlbiB0aHJvdyBhCiAgICAgICAgICAgICAvLyBUeXBlRXJyb3IuIgogICAg
ICAgICAgICAgLy8gIklmIHRoZSBhdHRyaWJ1dGUgaXMgZGVjbGFyZWQgd2l0aCBhIFtSZXBsYWNl
YWJsZV0gZXh0ZW5kZWQKICAgICAgICAgICAgIC8vIGF0dHJpYnV0ZSwgdGhlbjogLi4uIgogICAg
ICAgICAgICAgLy8gIklmIHZhbGlkVGhpcyBpcyBmYWxzZSwgdGhlbiByZXR1cm4uIgotICAgICAg
ICAgICAgaWYgKCFtZW1iZXIuaGFzX2V4dGVuZGVkX2F0dHJpYnV0ZSgiTGVuaWVudFRoaXMiKSkg
ewotICAgICAgICAgICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgIGlmICghbWVtYmVyLmhhc19leHRlbmRlZF9hdHRyaWJ1dGUoIkxl
Z2FjeUxlbmllbnRUaGlzIikpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKGds
b2JhbE9mKGRlc2Muc2V0KS5UeXBlRXJyb3IsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAg
ICAgICBkZXNjLnNldC5jYWxsKHt9KTsKICAgICAgICAgICAgICAgICB9LmJpbmQodGhpcyksICJj
YWxsaW5nIHNldHRlciBvbiB3cm9uZyBvYmplY3QgdHlwZSBtdXN0IHRocm93IFR5cGVFcnJvciIp
OwogICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTE4NDAsMjIgKzI5ODYsMjUgQEAgSWRsSW50ZXJm
YWNlLnByb3RvdHlwZS5kb19pbnRlcmZhY2VfYXR0cmlidXRlX2Fzc2VydHMgPSBmdW5jdGlvbihv
YmosIG1lbWJlciwgYV8KICAgICAgICAgLy8gIlRoZSB2YWx1ZSBvZiB0aGUgRnVuY3Rpb24gb2Jq
ZWN04oCZcyDigJxsZW5ndGjigJ0gcHJvcGVydHkgaXMgdGhlIE51bWJlcgogICAgICAgICAvLyB2
YWx1ZSAxLiIKICAgICAgICAgYXNzZXJ0X2VxdWFscyhkZXNjLnNldC5sZW5ndGgsIDEsICJzZXR0
ZXIgbGVuZ3RoIG11c3QgYmUgMSIpOworCisgICAgICAgIC8vICJMZXQgbmFtZSBiZSB0aGUgc3Ry
aW5nICJzZXQgIiBwcmVwZW5kZWQgdG8gaWQuIgorICAgICAgICAvLyAiUGVyZm9ybSAhIFNldEZ1
bmN0aW9uTmFtZShGLCBuYW1lKS4iCisgICAgICAgIGFzc2VydF9lcXVhbHMoZGVzYy5zZXQubmFt
ZSwgInNldCAiICsgbWVtYmVyLm5hbWUsCisgICAgICAgICAgICAiVGhlIGF0dHJpYnV0ZSBzZXR0
ZXIgbXVzdCBoYXZlIHRoZSBuYW1lICdzZXQgIiArIG1lbWJlci5uYW1lICsgIiciKTsKICAgICB9
CiAKICAgICBQcm9taXNlLmFsbChwZW5kaW5nUHJvbWlzZXMpLnRoZW4oYV90ZXN0LmRvbmUuYmlu
ZChhX3Rlc3QpKTsKIH0KLS8vQH0KIAogLy8vIElkbEludGVyZmFjZU1lbWJlciAvLy8KIGZ1bmN0
aW9uIElkbEludGVyZmFjZU1lbWJlcihvYmopCi0vL0B7CiB7CiAgICAgLyoqCiAgICAgICogb2Jq
IGlzIGFuIG9iamVjdCBwcm9kdWNlZCBieSB0aGUgV2ViSURMUGFyc2VyLmpzICJpZk1lbWJlciIg
cHJvZHVjdGlvbi4KICAgICAgKiBXZSBqdXN0IGZvcndhcmQgYWxsIHByb3BlcnRpZXMgdG8gdGhp
cyBvYmplY3Qgd2l0aG91dCBtb2RpZmljYXRpb24sCiAgICAgICogZXhjZXB0IGZvciBzcGVjaWFs
IGV4dEF0dHJzIGhhbmRsaW5nLgogICAgICAqLwotICAgIGZvciAodmFyIGsgaW4gb2JqKQorICAg
IGZvciAodmFyIGsgaW4gb2JqLnRvSlNPTigpKQogICAgIHsKICAgICAgICAgdGhpc1trXSA9IG9i
altrXTsKICAgICB9CkBAIC0xODY0LDE1ICszMDEzLDUyIEBAIGZ1bmN0aW9uIElkbEludGVyZmFj
ZU1lbWJlcihvYmopCiAgICAgICAgIHRoaXMuZXh0QXR0cnMgPSBbXTsKICAgICB9CiAKLSAgICB0
aGlzLmlzVW5mb3JnZWFibGUgPSB0aGlzLmhhc19leHRlbmRlZF9hdHRyaWJ1dGUoIlVuZm9yZ2Vh
YmxlIik7CisgICAgdGhpcy5pc1VuZm9yZ2VhYmxlID0gdGhpcy5oYXNfZXh0ZW5kZWRfYXR0cmli
dXRlKCJMZWdhY3lVbmZvcmdlYWJsZSIpOworICAgIHRoaXMuaXNVbnNjb3BhYmxlID0gdGhpcy5o
YXNfZXh0ZW5kZWRfYXR0cmlidXRlKCJVbnNjb3BhYmxlIik7CiB9CiAKLS8vQH0KIElkbEludGVy
ZmFjZU1lbWJlci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKElkbE9iamVjdC5wcm90b3R5cGUp
OwogCitJZGxJbnRlcmZhY2VNZW1iZXIucHJvdG90eXBlLnRvSlNPTiA9IGZ1bmN0aW9uKCkgewor
ICAgIHJldHVybiB0aGlzOworfTsKKworSWRsSW50ZXJmYWNlTWVtYmVyLnByb3RvdHlwZS5pc190
b19qc29uX3JlZ3VsYXJfb3BlcmF0aW9uID0gZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIHRoaXMu
dHlwZSA9PSAib3BlcmF0aW9uIiAmJiB0aGlzLnNwZWNpYWwgIT09ICJzdGF0aWMiICYmIHRoaXMu
bmFtZSA9PSAidG9KU09OIjsKK307CisKK0lkbEludGVyZmFjZU1lbWJlci5wcm90b3R5cGUudG9T
dHJpbmcgPSBmdW5jdGlvbigpIHsKKyAgICBmdW5jdGlvbiBmb3JtYXRUeXBlKHR5cGUpIHsKKyAg
ICAgICAgdmFyIHJlc3VsdDsKKyAgICAgICAgaWYgKHR5cGUuZ2VuZXJpYykgeworICAgICAgICAg
ICAgcmVzdWx0ID0gdHlwZS5nZW5lcmljICsgIjwiICsgdHlwZS5pZGxUeXBlLm1hcChmb3JtYXRU
eXBlKS5qb2luKCIsICIpICsgIj4iOworICAgICAgICB9IGVsc2UgaWYgKHR5cGUudW5pb24pIHsK
KyAgICAgICAgICAgIHJlc3VsdCA9ICIoIiArIHR5cGUuc3VidHlwZS5tYXAoZm9ybWF0VHlwZSku
am9pbigiIG9yICIpICsgIikiOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmVzdWx0
ID0gdHlwZS5pZGxUeXBlOworICAgICAgICB9CisgICAgICAgIGlmICh0eXBlLm51bGxhYmxlKSB7
CisgICAgICAgICAgICByZXN1bHQgKz0gIj8iCisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICB9CisKKyAgICBpZiAodGhpcy50eXBlID09PSAib3BlcmF0aW9uIikgeworICAg
ICAgICB2YXIgYXJncyA9IHRoaXMuYXJndW1lbnRzLm1hcChmdW5jdGlvbihtKSB7CisgICAgICAg
ICAgICByZXR1cm4gWworICAgICAgICAgICAgICAgIG0ub3B0aW9uYWwgPyAib3B0aW9uYWwgIiA6
ICIiLAorICAgICAgICAgICAgICAgIGZvcm1hdFR5cGUobS5pZGxUeXBlKSwKKyAgICAgICAgICAg
ICAgICBtLnZhcmlhZGljID8gIi4uLiIgOiAiIiwKKyAgICAgICAgICAgIF0uam9pbigiIik7Cisg
ICAgICAgIH0pLmpvaW4oIiwgIik7CisgICAgICAgIHJldHVybiB0aGlzLm5hbWUgKyAiKCIgKyBh
cmdzICsgIikiOworICAgIH0KKworICAgIHJldHVybiB0aGlzLm5hbWU7Cit9CisKIC8vLyBJbnRl
cm5hbCBoZWxwZXIgZnVuY3Rpb25zIC8vLwogZnVuY3Rpb24gY3JlYXRlX3N1aXRhYmxlX29iamVj
dCh0eXBlKQotLy9AewogewogICAgIC8qKgogICAgICAqIHR5cGUgaXMgYW4gb2JqZWN0IHByb2R1
Y2VkIGJ5IHRoZSBXZWJJRExQYXJzZXIuanMgInR5cGUiIHByb2R1Y3Rpb24uICBXZQpAQCAtMTkw
OCwxMiArMzA5NCwxMCBAQCBmdW5jdGlvbiBjcmVhdGVfc3VpdGFibGVfb2JqZWN0KHR5cGUpCiAg
ICAgfQogICAgIHJldHVybiBudWxsOwogfQotLy9AfQogCiAvLy8gSWRsRW51bSAvLy8KIC8vIFVz
ZWQgZm9yIElkbEFycmF5LnByb3RvdHlwZS5hc3NlcnRfdHlwZV9pcwogZnVuY3Rpb24gSWRsRW51
bShvYmopCi0vL0B7CiB7CiAgICAgLyoqCiAgICAgICogb2JqIGlzIGFuIG9iamVjdCBwcm9kdWNl
ZCBieSB0aGUgV2ViSURMUGFyc2VyLmpzICJkaWN0aW9uYXJ5IgpAQCAtMTkyNywxNCArMzExMSwz
MCBAQCBmdW5jdGlvbiBJZGxFbnVtKG9iaikKICAgICB0aGlzLnZhbHVlcyA9IG9iai52YWx1ZXM7
CiAKIH0KLS8vQH0KIAogSWRsRW51bS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKElkbE9iamVj
dC5wcm90b3R5cGUpOwogCisvLy8gSWRsQ2FsbGJhY2sgLy8vCisvLyBVc2VkIGZvciBJZGxBcnJh
eS5wcm90b3R5cGUuYXNzZXJ0X3R5cGVfaXMKK2Z1bmN0aW9uIElkbENhbGxiYWNrKG9iaikKK3sK
KyAgICAvKioKKyAgICAgKiBvYmogaXMgYW4gb2JqZWN0IHByb2R1Y2VkIGJ5IHRoZSBXZWJJRExQ
YXJzZXIuanMgImNhbGxiYWNrIgorICAgICAqIHByb2R1Y3Rpb24uCisgICAgICovCisKKyAgICAv
KiogU2VsZi1leHBsYW5hdG9yeS4gKi8KKyAgICB0aGlzLm5hbWUgPSBvYmoubmFtZTsKKworICAg
IC8qKiBBcmd1bWVudHMgZm9yIHRoZSBjYWxsYmFjay4gKi8KKyAgICB0aGlzLmFyZ3VtZW50cyA9
IG9iai5hcmd1bWVudHM7Cit9CisKK0lkbENhbGxiYWNrLnByb3RvdHlwZSA9IE9iamVjdC5jcmVh
dGUoSWRsT2JqZWN0LnByb3RvdHlwZSk7CisKIC8vLyBJZGxUeXBlZGVmIC8vLwogLy8gVXNlZCBm
b3IgSWRsQXJyYXkucHJvdG90eXBlLmFzc2VydF90eXBlX2lzCiBmdW5jdGlvbiBJZGxUeXBlZGVm
KG9iaikKLS8vQHsKIHsKICAgICAvKioKICAgICAgKiBvYmogaXMgYW4gb2JqZWN0IHByb2R1Y2Vk
IGJ5IHRoZSBXZWJJRExQYXJzZXIuanMgInR5cGVkZWYiCkBAIC0xOTQ0LDEzICszMTQ0LDI2NCBA
QCBmdW5jdGlvbiBJZGxUeXBlZGVmKG9iaikKICAgICAvKiogU2VsZi1leHBsYW5hdG9yeS4gKi8K
ICAgICB0aGlzLm5hbWUgPSBvYmoubmFtZTsKIAotICAgIC8qKiBBbiBhcnJheSBvZiB2YWx1ZXMg
cHJvZHVjZWQgYnkgdGhlICJ0eXBlZGVmIiBwcm9kdWN0aW9uLiAqLwotICAgIHRoaXMudmFsdWVz
ID0gb2JqLnZhbHVlczsKKyAgICAvKiogVGhlIGlkbFR5cGUgdGhhdCB3ZSBhcmUgc3VwcG9zZWQg
dG8gYmUgdHlwZWRlZmZpbmcgdG8uICovCisgICAgdGhpcy5pZGxUeXBlID0gb2JqLmlkbFR5cGU7
CiAKIH0KLS8vQH0KIAogSWRsVHlwZWRlZi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKElkbE9i
amVjdC5wcm90b3R5cGUpOwogCisvLy8gSWRsTmFtZXNwYWNlIC8vLworZnVuY3Rpb24gSWRsTmFt
ZXNwYWNlKG9iaikKK3sKKyAgICB0aGlzLm5hbWUgPSBvYmoubmFtZTsKKyAgICB0aGlzLmV4dEF0
dHJzID0gb2JqLmV4dEF0dHJzOworICAgIHRoaXMudW50ZXN0ZWQgPSBvYmoudW50ZXN0ZWQ7Cisg
ICAgLyoqIEEgYmFjay1yZWZlcmVuY2UgdG8gb3VyIElkbEFycmF5LiAqLworICAgIHRoaXMuYXJy
YXkgPSBvYmouYXJyYXk7CisKKyAgICAvKiogQW4gYXJyYXkgb2YgSWRsSW50ZXJmYWNlTWVtYmVy
cy4gKi8KKyAgICB0aGlzLm1lbWJlcnMgPSBvYmoubWVtYmVycy5tYXAobSA9PiBuZXcgSWRsSW50
ZXJmYWNlTWVtYmVyKG0pKTsKK30KKworSWRsTmFtZXNwYWNlLnByb3RvdHlwZSA9IE9iamVjdC5j
cmVhdGUoSWRsT2JqZWN0LnByb3RvdHlwZSk7CisKK0lkbE5hbWVzcGFjZS5wcm90b3R5cGUuZG9f
bWVtYmVyX29wZXJhdGlvbl9hc3NlcnRzID0gZnVuY3Rpb24gKG1lbWJlckhvbGRlck9iamVjdCwg
bWVtYmVyLCBhX3Rlc3QpCit7CisgICAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKG1lbWJlckhvbGRlck9iamVjdCwgbWVtYmVyLm5hbWUpOworCisgICAgYXNzZXJ0
X2ZhbHNlKCJnZXQiIGluIGRlc2MsICJwcm9wZXJ0eSBzaG91bGQgbm90IGhhdmUgYSBnZXR0ZXIi
KTsKKyAgICBhc3NlcnRfZmFsc2UoInNldCIgaW4gZGVzYywgInByb3BlcnR5IHNob3VsZCBub3Qg
aGF2ZSBhIHNldHRlciIpOworICAgIGFzc2VydF9lcXVhbHMoCisgICAgICAgIGRlc2Mud3JpdGFi
bGUsCisgICAgICAgICFtZW1iZXIuaXNVbmZvcmdlYWJsZSwKKyAgICAgICAgInByb3BlcnR5IHNo
b3VsZCBiZSB3cml0YWJsZSBpZiBhbmQgb25seSBpZiBub3QgdW5mb3JnZWFibGUiKTsKKyAgICBh
c3NlcnRfdHJ1ZShkZXNjLmVudW1lcmFibGUsICJwcm9wZXJ0eSBzaG91bGQgYmUgZW51bWVyYWJs
ZSIpOworICAgIGFzc2VydF9lcXVhbHMoCisgICAgICAgIGRlc2MuY29uZmlndXJhYmxlLAorICAg
ICAgICAhbWVtYmVyLmlzVW5mb3JnZWFibGUsCisgICAgICAgICJwcm9wZXJ0eSBzaG91bGQgYmUg
Y29uZmlndXJhYmxlIGlmIGFuZCBvbmx5IGlmIG5vdCB1bmZvcmdlYWJsZSIpOworCisgICAgYXNz
ZXJ0X2VxdWFscygKKyAgICAgICAgdHlwZW9mIG1lbWJlckhvbGRlck9iamVjdFttZW1iZXIubmFt
ZV0sCisgICAgICAgICJmdW5jdGlvbiIsCisgICAgICAgICAicHJvcGVydHkgbXVzdCBiZSBhIGZ1
bmN0aW9uIik7CisKKyAgICBhc3NlcnRfZXF1YWxzKAorICAgICAgICBtZW1iZXJIb2xkZXJPYmpl
Y3RbbWVtYmVyLm5hbWVdLmxlbmd0aCwKKyAgICAgICAgbWluT3ZlcmxvYWRMZW5ndGgodGhpcy5t
ZW1iZXJzLmZpbHRlcihmdW5jdGlvbihtKSB7CisgICAgICAgICAgICByZXR1cm4gbS50eXBlID09
ICJvcGVyYXRpb24iICYmIG0ubmFtZSA9PSBtZW1iZXIubmFtZTsKKyAgICAgICAgfSkpLAorICAg
ICAgICAib3BlcmF0aW9uIGhhcyB3cm9uZyAubGVuZ3RoIik7CisgICAgYV90ZXN0LmRvbmUoKTsK
K30KKworSWRsTmFtZXNwYWNlLnByb3RvdHlwZS50ZXN0X21lbWJlcl9vcGVyYXRpb24gPSBmdW5j
dGlvbihtZW1iZXIpCit7CisgICAgaWYgKCFzaG91bGRSdW5TdWJUZXN0KHRoaXMubmFtZSkpIHsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICB2YXIgYV90ZXN0ID0gc3Vic2V0VGVzdEJ5S2V5
KAorICAgICAgICB0aGlzLm5hbWUsCisgICAgICAgIGFzeW5jX3Rlc3QsCisgICAgICAgIHRoaXMu
bmFtZSArICcgbmFtZXNwYWNlOiBvcGVyYXRpb24gJyArIG1lbWJlcik7CisgICAgYV90ZXN0LnN0
ZXAoZnVuY3Rpb24oKSB7CisgICAgICAgIGFzc2VydF9vd25fcHJvcGVydHkoCisgICAgICAgICAg
ICBzZWxmW3RoaXMubmFtZV0sCisgICAgICAgICAgICBtZW1iZXIubmFtZSwKKyAgICAgICAgICAg
ICduYW1lc3BhY2Ugb2JqZWN0IG1pc3Npbmcgb3BlcmF0aW9uICcgKyBmb3JtYXRfdmFsdWUobWVt
YmVyLm5hbWUpKTsKKworICAgICAgICB0aGlzLmRvX21lbWJlcl9vcGVyYXRpb25fYXNzZXJ0cyhz
ZWxmW3RoaXMubmFtZV0sIG1lbWJlciwgYV90ZXN0KTsKKyAgICB9LmJpbmQodGhpcykpOworfTsK
KworSWRsTmFtZXNwYWNlLnByb3RvdHlwZS50ZXN0X21lbWJlcl9hdHRyaWJ1dGUgPSBmdW5jdGlv
biAobWVtYmVyKQoreworICAgIGlmICghc2hvdWxkUnVuU3ViVGVzdCh0aGlzLm5hbWUpKSB7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgdmFyIGFfdGVzdCA9IHN1YnNldFRlc3RCeUtleSgK
KyAgICAgICAgdGhpcy5uYW1lLAorICAgICAgICBhc3luY190ZXN0LAorICAgICAgICB0aGlzLm5h
bWUgKyAnIG5hbWVzcGFjZTogYXR0cmlidXRlICcgKyBtZW1iZXIubmFtZSk7CisgICAgYV90ZXN0
LnN0ZXAoZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0eSgKKyAg
ICAgICAgICAgIHNlbGZbdGhpcy5uYW1lXSwKKyAgICAgICAgICAgIG1lbWJlci5uYW1lLAorICAg
ICAgICAgICAgdGhpcy5uYW1lICsgJyBkb2VzIG5vdCBoYXZlIHByb3BlcnR5ICcgKyBmb3JtYXRf
dmFsdWUobWVtYmVyLm5hbWUpKTsKKworICAgICAgICB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3Ioc2VsZlt0aGlzLm5hbWVdLCBtZW1iZXIubmFtZSk7CisgICAgICAg
IGFzc2VydF9lcXVhbHMoZGVzYy5zZXQsIHVuZGVmaW5lZCwgInNldHRlciBtdXN0IGJlIHVuZGVm
aW5lZCBmb3IgbmFtZXNwYWNlIG1lbWJlcnMiKTsKKyAgICAgICAgYV90ZXN0LmRvbmUoKTsKKyAg
ICB9LmJpbmQodGhpcykpOworfTsKKworSWRsTmFtZXNwYWNlLnByb3RvdHlwZS50ZXN0X3NlbGYg
PSBmdW5jdGlvbiAoKQoreworICAgIC8qKgorICAgICAqIFRPRE8obHVrZWJqZXJyaW5nKTogQXNz
ZXJ0OgorICAgICAqIC0gIk5vdGUgdGhhdCB1bmxpa2UgaW50ZXJmYWNlcyBvciBkaWN0aW9uYXJp
ZXMsIG5hbWVzcGFjZXMgZG8gbm90IGNyZWF0ZSB0eXBlcy4iCisgICAgICovCisKKyAgICBzdWJz
ZXRUZXN0QnlLZXkodGhpcy5uYW1lLCB0ZXN0LCAoKSA9PiB7CisgICAgICAgIGFzc2VydF90cnVl
KHRoaXMuZXh0QXR0cnMuZXZlcnkobyA9PiBvLm5hbWUgPT09ICJFeHBvc2VkIiB8fCBvLm5hbWUg
PT09ICJTZWN1cmVDb250ZXh0IiksCisgICAgICAgICAgICAiT25seSB0aGUgW0V4cG9zZWRdIGFu
ZCBbU2VjdXJlQ29udGV4dF0gZXh0ZW5kZWQgYXR0cmlidXRlcyBhcmUgYXBwbGljYWJsZSB0byBu
YW1lc3BhY2VzIik7CisgICAgICAgIGFzc2VydF90cnVlKHRoaXMuaGFzX2V4dGVuZGVkX2F0dHJp
YnV0ZSgiRXhwb3NlZCIpLAorICAgICAgICAgICAgIk5hbWVzcGFjZXMgbXVzdCBiZSBhbm5vdGF0
ZWQgd2l0aCB0aGUgW0V4cG9zZWRdIGV4dGVuZGVkIGF0dHJpYnV0ZSIpOworICAgIH0sIGAke3Ro
aXMubmFtZX0gbmFtZXNwYWNlOiBleHRlbmRlZCBhdHRyaWJ1dGVzYCk7CisKKyAgICBjb25zdCBu
YW1lc3BhY2VPYmplY3QgPSBzZWxmW3RoaXMubmFtZV07CisKKyAgICBzdWJzZXRUZXN0QnlLZXko
dGhpcy5uYW1lLCB0ZXN0LCAoKSA9PiB7CisgICAgICAgIGNvbnN0IGRlc2MgPSBPYmplY3QuZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKHNlbGYsIHRoaXMubmFtZSk7CisgICAgICAgIGFzc2VydF9l
cXVhbHMoZGVzYy52YWx1ZSwgbmFtZXNwYWNlT2JqZWN0LCBgd3JvbmcgdmFsdWUgZm9yICR7dGhp
cy5uYW1lfSBuYW1lc3BhY2Ugb2JqZWN0YCk7CisgICAgICAgIGFzc2VydF90cnVlKGRlc2Mud3Jp
dGFibGUsICJuYW1lc3BhY2Ugb2JqZWN0IHNob3VsZCBiZSB3cml0YWJsZSIpOworICAgICAgICBh
c3NlcnRfZmFsc2UoZGVzYy5lbnVtZXJhYmxlLCAibmFtZXNwYWNlIG9iamVjdCBzaG91bGQgbm90
IGJlIGVudW1lcmFibGUiKTsKKyAgICAgICAgYXNzZXJ0X3RydWUoZGVzYy5jb25maWd1cmFibGUs
ICJuYW1lc3BhY2Ugb2JqZWN0IHNob3VsZCBiZSBjb25maWd1cmFibGUiKTsKKyAgICAgICAgYXNz
ZXJ0X2ZhbHNlKCJnZXQiIGluIGRlc2MsICJuYW1lc3BhY2Ugb2JqZWN0IHNob3VsZCBub3QgaGF2
ZSBhIGdldHRlciIpOworICAgICAgICBhc3NlcnRfZmFsc2UoInNldCIgaW4gZGVzYywgIm5hbWVz
cGFjZSBvYmplY3Qgc2hvdWxkIG5vdCBoYXZlIGEgc2V0dGVyIik7CisgICAgfSwgYCR7dGhpcy5u
YW1lfSBuYW1lc3BhY2U6IHByb3BlcnR5IGRlc2NyaXB0b3JgKTsKKworICAgIHN1YnNldFRlc3RC
eUtleSh0aGlzLm5hbWUsIHRlc3QsICgpID0+IHsKKyAgICAgICAgYXNzZXJ0X3RydWUoT2JqZWN0
LmlzRXh0ZW5zaWJsZShuYW1lc3BhY2VPYmplY3QpKTsKKyAgICB9LCBgJHt0aGlzLm5hbWV9IG5h
bWVzcGFjZTogW1tFeHRlbnNpYmxlXV0gaXMgdHJ1ZWApOworCisgICAgc3Vic2V0VGVzdEJ5S2V5
KHRoaXMubmFtZSwgdGVzdCwgKCkgPT4geworICAgICAgICBhc3NlcnRfdHJ1ZShuYW1lc3BhY2VP
YmplY3QgaW5zdGFuY2VvZiBPYmplY3QpOworCisgICAgICAgIGlmICh0aGlzLm5hbWUgPT09ICJj
b25zb2xlIikgeworICAgICAgICAgICAgLy8gaHR0cHM6Ly9jb25zb2xlLnNwZWMud2hhdHdnLm9y
Zy8jY29uc29sZS1uYW1lc3BhY2UKKyAgICAgICAgICAgIGNvbnN0IG5hbWVzcGFjZVByb3RvdHlw
ZSA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihuYW1lc3BhY2VPYmplY3QpOworICAgICAgICAgICAg
YXNzZXJ0X2VxdWFscyhSZWZsZWN0Lm93bktleXMobmFtZXNwYWNlUHJvdG90eXBlKS5sZW5ndGgs
IDApOworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhPYmplY3QuZ2V0UHJvdG90eXBlT2YobmFt
ZXNwYWNlUHJvdG90eXBlKSwgT2JqZWN0LnByb3RvdHlwZSk7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKE9iamVjdC5nZXRQcm90b3R5cGVPZihuYW1lc3BhY2VP
YmplY3QpLCBPYmplY3QucHJvdG90eXBlKTsKKyAgICAgICAgfQorICAgIH0sIGAke3RoaXMubmFt
ZX0gbmFtZXNwYWNlOiBbW1Byb3RvdHlwZV1dIGlzIE9iamVjdC5wcm90b3R5cGVgKTsKKworICAg
IHN1YnNldFRlc3RCeUtleSh0aGlzLm5hbWUsIHRlc3QsICgpID0+IHsKKyAgICAgICAgYXNzZXJ0
X2VxdWFscyh0eXBlb2YgbmFtZXNwYWNlT2JqZWN0LCAib2JqZWN0Iik7CisgICAgfSwgYCR7dGhp
cy5uYW1lfSBuYW1lc3BhY2U6IHR5cGVvZiBpcyAib2JqZWN0ImApOworCisgICAgc3Vic2V0VGVz
dEJ5S2V5KHRoaXMubmFtZSwgdGVzdCwgKCkgPT4geworICAgICAgICBhc3NlcnRfZXF1YWxzKAor
ICAgICAgICAgICAgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuYW1lc3BhY2VPYmpl
Y3QsICJsZW5ndGgiKSwKKyAgICAgICAgICAgIHVuZGVmaW5lZCwKKyAgICAgICAgICAgICJsZW5n
dGggcHJvcGVydHkgbXVzdCBiZSB1bmRlZmluZWQiCisgICAgICAgICk7CisgICAgfSwgYCR7dGhp
cy5uYW1lfSBuYW1lc3BhY2U6IGhhcyBubyBsZW5ndGggcHJvcGVydHlgKTsKKworICAgIHN1YnNl
dFRlc3RCeUtleSh0aGlzLm5hbWUsIHRlc3QsICgpID0+IHsKKyAgICAgICAgYXNzZXJ0X2VxdWFs
cygKKyAgICAgICAgICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobmFtZXNwYWNl
T2JqZWN0LCAibmFtZSIpLAorICAgICAgICAgICAgdW5kZWZpbmVkLAorICAgICAgICAgICAgIm5h
bWUgcHJvcGVydHkgbXVzdCBiZSB1bmRlZmluZWQiCisgICAgICAgICk7CisgICAgfSwgYCR7dGhp
cy5uYW1lfSBuYW1lc3BhY2U6IGhhcyBubyBuYW1lIHByb3BlcnR5YCk7Cit9OworCitJZGxOYW1l
c3BhY2UucHJvdG90eXBlLnRlc3QgPSBmdW5jdGlvbiAoKQoreworICAgIGlmICghdGhpcy51bnRl
c3RlZCkgeworICAgICAgICB0aGlzLnRlc3Rfc2VsZigpOworICAgIH0KKworICAgIGZvciAoY29u
c3QgdiBvZiBPYmplY3QudmFsdWVzKHRoaXMubWVtYmVycykpIHsKKyAgICAgICAgc3dpdGNoICh2
LnR5cGUpIHsKKworICAgICAgICBjYXNlICdvcGVyYXRpb24nOgorICAgICAgICAgICAgdGhpcy50
ZXN0X21lbWJlcl9vcGVyYXRpb24odik7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBj
YXNlICdhdHRyaWJ1dGUnOgorICAgICAgICAgICAgdGhpcy50ZXN0X21lbWJlcl9hdHRyaWJ1dGUo
dik7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
dGhyb3cgJ0ludmFsaWQgbmFtZXNwYWNlIG1lbWJlciAnICsgdi5uYW1lICsgJzogJyArIHYudHlw
ZSArICcgbm90IHN1cHBvcnRlZCc7CisgICAgICAgIH0KKyAgICB9OworfTsKKwogfSgpKTsKKwor
LyoqCisgKiBpZGxfdGVzdCBpcyBhIHByb21pc2VfdGVzdCB3cmFwcGVyIHRoYXQgaGFuZGxlcyB0
aGUgZmV0Y2hpbmcgb2YgdGhlIElETCwKKyAqIGF2b2lkaW5nIHJlcGV0aXRpdmUgYm9pbGVycGxh
dGUuCisgKgorICogQHBhcmFtIHtTdHJpbmd8U3RyaW5nW119IHNyY3MgU3BlYyBuYW1lKHMpIGZv
ciBzb3VyY2UgaWRsIGZpbGVzIChmZXRjaGVkIGZyb20KKyAqICAgICAgL2ludGVyZmFjZXMve25h
bWV9LmlkbCkuCisgKiBAcGFyYW0ge1N0cmluZ3xTdHJpbmdbXX0gZGVwcyBTcGVjIG5hbWUocykg
Zm9yIGRlcGVuZGVuY3kgaWRsIGZpbGVzIChmZXRjaGVkCisgKiAgICAgIGZyb20gL2ludGVyZmFj
ZXMve25hbWV9LmlkbCkuIE9yZGVyIGlzIGltcG9ydGFudCAtIGRlcGVuZGVuY2llcyBmcm9tCisg
KiAgICAgIGVhY2ggc291cmNlIHdpbGwgb25seSBiZSBpbmNsdWRlZCBpZiB0aGV5J3JlIGFscmVh
ZHkga25vdyB0byBiZSBhCisgKiAgICAgIGRlcGVuZGVuY3kgKGkuZS4gaGF2ZSBhbHJlYWR5IGJl
ZW4gc2VlbikuCisgKiBAcGFyYW0ge0Z1bmN0aW9ufSBzZXR1cF9mdW5jIEZ1bmN0aW9uIGZvciBl
eHRyYSBzZXR1cCBvZiB0aGUgaWRsX2FycmF5LCBzdWNoCisgKiAgICAgIGFzIGFkZGluZyBvYmpl
Y3RzLiBEbyBub3QgY2FsbCBpZGxfYXJyYXkudGVzdCgpIGluIHRoZSBzZXR1cDsgaXQgaXMKKyAq
ICAgICAgY2FsbGVkIGJ5IHRoaXMgZnVuY3Rpb24gKGlkbF90ZXN0KS4KKyAqLworZnVuY3Rpb24g
aWRsX3Rlc3Qoc3JjcywgZGVwcywgaWRsX3NldHVwX2Z1bmMpIHsKKyAgICByZXR1cm4gcHJvbWlz
ZV90ZXN0KGZ1bmN0aW9uICh0KSB7CisgICAgICAgIHZhciBpZGxfYXJyYXkgPSBuZXcgSWRsQXJy
YXkoKTsKKyAgICAgICAgdmFyIHNldHVwX2Vycm9yID0gbnVsbDsKKyAgICAgICAgY29uc3QgdmFs
aWRhdGlvbklnbm9yZWQgPSBbCisgICAgICAgICAgICAiY29uc3RydWN0b3ItbWVtYmVyIiwKKyAg
ICAgICAgICAgICJkaWN0LWFyZy1kZWZhdWx0IiwKKyAgICAgICAgICAgICJyZXF1aXJlLWV4cG9z
ZWQiCisgICAgICAgIF07CisgICAgICAgIHJldHVybiBQcm9taXNlLmFsbCgKKyAgICAgICAgICAg
IHNyY3MuY29uY2F0KGRlcHMpLm1hcChmZXRjaF9zcGVjKSkKKyAgICAgICAgICAgIC50aGVuKGZ1
bmN0aW9uKHJlc3VsdHMpIHsKKyAgICAgICAgICAgICAgICBjb25zdCBhc3RBcnJheSA9IHJlc3Vs
dHMubWFwKHJlc3VsdCA9PgorICAgICAgICAgICAgICAgICAgICBXZWJJREwyLnBhcnNlKHJlc3Vs
dC5pZGwsIHsgc291cmNlTmFtZTogcmVzdWx0LnNwZWMgfSkKKyAgICAgICAgICAgICAgICApOwor
ICAgICAgICAgICAgICAgIHRlc3QoKCkgPT4geworICAgICAgICAgICAgICAgICAgICBjb25zdCB2
YWxpZGF0aW9ucyA9IFdlYklETDIudmFsaWRhdGUoYXN0QXJyYXkpCisgICAgICAgICAgICAgICAg
ICAgICAgICAuZmlsdGVyKHYgPT4gIXZhbGlkYXRpb25JZ25vcmVkLmluY2x1ZGVzKHYucnVsZU5h
bWUpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHZhbGlkYXRpb25zLmxlbmd0aCkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IHZhbGlkYXRpb25zLm1hcCh2ID0+
IHYubWVzc2FnZSkuam9pbigiXG5cbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cg
bmV3IEVycm9yKG1lc3NhZ2UpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgfSwgImlkbF90ZXN0IHZhbGlkYXRpb24iKTsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IHNyY3MubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgaWRsX2Fy
cmF5LmludGVybmFsX2FkZF9pZGxzKGFzdEFycmF5W2ldKTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IHNyY3MubGVuZ3RoOyBpIDwgc3Jjcy5sZW5ndGgg
KyBkZXBzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIGlkbF9hcnJheS5pbnRl
cm5hbF9hZGRfZGVwZW5kZW5jeV9pZGxzKGFzdEFycmF5W2ldKTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9KQorICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICAgICAgaWYgKGlkbF9zZXR1cF9mdW5jKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBpZGxfc2V0dXBfZnVuYyhpZGxfYXJyYXksIHQpOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0pCisgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24oZSkgeyBzZXR1cF9lcnJvciA9
IGUgfHwgJ0lETCBzZXR1cCBmYWlsZWQuJzsgfSkKKyAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgICAgICB2YXIgZXJyb3IgPSBzZXR1cF9lcnJvcjsKKyAgICAgICAg
ICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICBpZGxfYXJyYXkudGVzdCgpOyAvLyBU
ZXN0IHdoYXQgd2UgY2FuLgorICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAg
ICAgICAgICAgICAgLy8gSWYgdGVzdGluZyBmYWlscyBoYXJkIGhlcmUsIHRoZSBvcmlnaW5hbCBz
ZXR1cCBlcnJvcgorICAgICAgICAgICAgICAgICAgICAvLyBpcyBtb3JlIGxpa2VseSB0byBiZSB0
aGUgcmVhbCBjYXVzZS4KKyAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBlcnJvciB8fCBlOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAg
ICAgICAgICAgICAgdGhyb3cgZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fSk7CisgICAgfSwgJ2lkbF90ZXN0IHNldHVwJyk7Cit9CisKKy8qKgorICogZmV0Y2hfc3BlYyBp
cyBhIHNob3J0aGFuZCBmb3IgYSBQcm9taXNlIHRoYXQgZmV0Y2hlcyB0aGUgc3BlYydzIGNvbnRl
bnQuCisgKi8KK2Z1bmN0aW9uIGZldGNoX3NwZWMoc3BlYykgeworICAgIHZhciB1cmwgPSAnL2lu
dGVyZmFjZXMvJyArIHNwZWMgKyAnLmlkbCc7CisgICAgcmV0dXJuIGZldGNoKHVybCkudGhlbihm
dW5jdGlvbiAocikgeworICAgICAgICBpZiAoIXIub2spIHsKKyAgICAgICAgICAgIHRocm93IG5l
dyBJZGxIYXJuZXNzRXJyb3IoIkVycm9yIGZldGNoaW5nICIgKyB1cmwgKyAiLiIpOworICAgICAg
ICB9CisgICAgICAgIHJldHVybiByLnRleHQoKTsKKyAgICB9KS50aGVuKGlkbCA9PiAoeyBzcGVj
LCBpZGwgfSkpOworfQogLy8gdmltOiBzZXQgZXhwYW5kdGFiIHNoaWZ0d2lkdGg9NCB0YWJzdG9w
PTQgZm9sZG1hcmtlcj1AeyxAfSBmb2xkbWV0aG9kPW1hcmtlcjoKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3Jlc291cmNlcy90ZXN0aGFybmVzcy5jc3MgYi9MYXlvdXRUZXN0cy9yZXNvdXJjZXMv
dGVzdGhhcm5lc3MuY3NzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNjUwODRmM2Y4
MjExNmY4NWYwYTVlY2M1YWQ3ODhiZjhjZGE0NzEyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3Jlc291cmNlcy90ZXN0aGFybmVzcy5j
c3MKKysrIC9kZXYvbnVsbApAQCAtMSw5MiArMCwwIEBACi1odG1sIHsKLSAgICBmb250LWZhbWls
eTpEZWphVnUgU2FucywgQml0c3RyZWFtIFZlcmEgU2FucywgQXJpYWwsIFNhbnM7Ci19Ci0KLSNs
b2cgLndhcm5pbmcsCi0jbG9nIC53YXJuaW5nIGEgewotICBjb2xvcjogYmxhY2s7Ci0gIGJhY2tn
cm91bmQ6IHllbGxvdzsKLX0KLQotI2xvZyAuZXJyb3IsCi0jbG9nIC5lcnJvciBhIHsKLSAgY29s
b3I6IHdoaXRlOwotICBiYWNrZ3JvdW5kOiByZWQ7Ci19Ci0KLSNsb2cgcHJlIHsKLSAgYm9yZGVy
OiAxcHggc29saWQgYmxhY2s7Ci0gIHBhZGRpbmc6IDFlbTsKLX0KLQotc2VjdGlvbiNzdW1tYXJ5
IHsKLSAgICBtYXJnaW4tYm90dG9tOjFlbTsKLX0KLQotdGFibGUjcmVzdWx0cyB7Ci0gICAgYm9y
ZGVyLWNvbGxhcHNlOmNvbGxhcHNlOwotICAgIHRhYmxlLWxheW91dDpmaXhlZDsKLSAgICB3aWR0
aDoxMDAlOwotfQotCi10YWJsZSNyZXN1bHRzIHRoOmZpcnN0LWNoaWxkLAotdGFibGUjcmVzdWx0
cyB0ZDpmaXJzdC1jaGlsZCB7Ci0gICAgd2lkdGg6NGVtOwotfQotCi10YWJsZSNyZXN1bHRzIHRo
Omxhc3QtY2hpbGQsCi10YWJsZSNyZXN1bHRzIHRkOmxhc3QtY2hpbGQgewotICAgIHdpZHRoOjUw
JTsKLX0KLQotdGFibGUjcmVzdWx0cy5hc3NlcnRpb25zIHRoOmxhc3QtY2hpbGQsCi10YWJsZSNy
ZXN1bHRzLmFzc2VydGlvbnMgdGQ6bGFzdC1jaGlsZCB7Ci0gICAgd2lkdGg6MzUlOwotfQotCi10
YWJsZSNyZXN1bHRzIHRoIHsKLSAgICBwYWRkaW5nOjA7Ci0gICAgcGFkZGluZy1ib3R0b206MC41
ZW07Ci0gICAgYm9yZGVyLWJvdHRvbTptZWRpdW0gc29saWQgYmxhY2s7Ci19Ci0KLXRhYmxlI3Jl
c3VsdHMgdGQgewotICAgIHBhZGRpbmc6MWVtOwotICAgIHBhZGRpbmctYm90dG9tOjAuNWVtOwot
ICAgIGJvcmRlci1ib3R0b206dGhpbiBzb2xpZCBibGFjazsKLX0KLQotdHIucGFzcyA+IHRkOmZp
cnN0LWNoaWxkIHsKLSAgICBjb2xvcjpncmVlbjsKLX0KLQotdHIuZmFpbCA+IHRkOmZpcnN0LWNo
aWxkIHsKLSAgICBjb2xvcjpyZWQ7Ci19Ci0KLXRyLnRpbWVvdXQgPiB0ZDpmaXJzdC1jaGlsZCB7
Ci0gICAgY29sb3I6cmVkOwotfQotCi10ci5ub3RydW4gPiB0ZDpmaXJzdC1jaGlsZCB7Ci0gICAg
Y29sb3I6Ymx1ZTsKLX0KLQotLnBhc3MgPiB0ZDpmaXJzdC1jaGlsZCwgLmZhaWwgPiB0ZDpmaXJz
dC1jaGlsZCwgLnRpbWVvdXQgPiB0ZDpmaXJzdC1jaGlsZCwgLm5vdHJ1biA+IHRkOmZpcnN0LWNo
aWxkIHsKLSAgICBmb250LXZhcmlhbnQ6c21hbGwtY2FwczsKLX0KLQotdGFibGUjcmVzdWx0cyBz
cGFuIHsKLSAgICBkaXNwbGF5OmJsb2NrOwotfQotCi10YWJsZSNyZXN1bHRzIHNwYW4uZXhwZWN0
ZWQgewotICAgIGZvbnQtZmFtaWx5OkRlamFWdSBTYW5zIE1vbm8sIEJpdHN0cmVhbSBWZXJhIFNh
bnMgTW9ubywgTW9ub3NwYWNlOwotICAgIHdoaXRlLXNwYWNlOnByZTsKLX0KLQotdGFibGUjcmVz
dWx0cyBzcGFuLmFjdHVhbCB7Ci0gICAgZm9udC1mYW1pbHk6RGVqYVZ1IFNhbnMgTW9ubywgQml0
c3RyZWFtIFZlcmEgU2FucyBNb25vLCBNb25vc3BhY2U7Ci0gICAgd2hpdGUtc3BhY2U6cHJlOwot
fQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMgYi9M
YXlvdXRUZXN0cy9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMKaW5kZXggMTU1OTEwNDJhYTRjYjBm
ZGQ3NWZlM2JmNTZiOWJkZmI2M2ZkMTYxZC4uZjg1YjE5ZmQ5YmQ5MGMzNDc2ZGVkY2JlNTgyNWI4
MmZiNDBkZTgyYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
LmpzCisrKyBiL0xheW91dFRlc3RzL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcwpAQCAtMSwyMSAr
MSwxMSBAQAogLypnbG9iYWwgc2VsZiovCiAvKmpzaGludCBsYXRlZGVmOiBub2Z1bmMqLwotLyoK
LURpc3RyaWJ1dGVkIHVuZGVyIGJvdGggdGhlIFczQyBUZXN0IFN1aXRlIExpY2Vuc2UgWzFdIGFu
ZCB0aGUgVzNDCi0zLWNsYXVzZSBCU0QgTGljZW5zZSBbMl0uIFRvIGNvbnRyaWJ1dGUgdG8gYSBX
M0MgVGVzdCBTdWl0ZSwgc2VlIHRoZQotcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBb
M10uCi0KLVsxXSBodHRwOi8vd3d3LnczLm9yZy9Db25zb3J0aXVtL0xlZ2FsLzIwMDgvMDQtdGVz
dHN1aXRlLWxpY2Vuc2UKLVsyXSBodHRwOi8vd3d3LnczLm9yZy9Db25zb3J0aXVtL0xlZ2FsLzIw
MDgvMDMtYnNkLWxpY2Vuc2UKLVszXSBodHRwOi8vd3d3LnczLm9yZy8yMDA0LzEwLzI3LXRlc3Rj
YXNlcwotKi8KIAogLyogRG9jdW1lbnRhdGlvbjogaHR0cHM6Ly93ZWItcGxhdGZvcm0tdGVzdHMu
b3JnL3dyaXRpbmctdGVzdHMvdGVzdGhhcm5lc3MtYXBpLmh0bWwKICAqICguLi9kb2NzL193cml0
aW5nLXRlc3RzL3Rlc3RoYXJuZXNzLWFwaS5tZCkgKi8KIAogKGZ1bmN0aW9uIChnbG9iYWxfc2Nv
cGUpCiB7Ci0gICAgdmFyIGRlYnVnID0gZmFsc2U7CiAgICAgLy8gZGVmYXVsdCB0aW1lb3V0IGlz
IDEwIHNlY29uZHMsIHRlc3QgY2FuIG92ZXJyaWRlIGlmIG5lZWRlZAogICAgIHZhciBzZXR0aW5n
cyA9IHsKICAgICAgICAgb3V0cHV0OnRydWUsCkBAIC0yNCw3ICsxNCw4IEBAIHBvbGljaWVzIGFu
ZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAgICAgICAgImxvbmciOjYwMDAwCiAgICAg
ICAgIH0sCiAgICAgICAgIHRlc3RfdGltZW91dDpudWxsLAotICAgICAgICBtZXNzYWdlX2V2ZW50
czogWyJzdGFydCIsICJ0ZXN0X3N0YXRlIiwgInJlc3VsdCIsICJjb21wbGV0aW9uIl0KKyAgICAg
ICAgbWVzc2FnZV9ldmVudHM6IFsic3RhcnQiLCAidGVzdF9zdGF0ZSIsICJyZXN1bHQiLCAiY29t
cGxldGlvbiJdLAorICAgICAgICBkZWJ1ZzogZmFsc2UsCiAgICAgfTsKIAogICAgIHZhciB4aHRt
bF9ucyA9ICJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIjsKQEAgLTg3LDE0ICs3OCwxNSBA
QCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Q6IHRlc3Quc3RydWN0dXJlZF9jbG9uZSgp
fSk7CiAgICAgICAgICAgICAgICAgICAgICB9XSwKICAgICAgICAgICAgIGNvbXBsZXRpb246IFth
ZGRfY29tcGxldGlvbl9jYWxsYmFjaywgcmVtb3ZlX2NvbXBsZXRpb25fY2FsbGJhY2ssCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKHRlc3RzLCBoYXJuZXNzX3N0YXR1cykgewor
ICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICh0ZXN0cywgaGFybmVzc19zdGF0dXMs
IGFzc2VydHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNsb25lZF90ZXN0
cyA9IG1hcCh0ZXN0cywgZnVuY3Rpb24odGVzdCkgewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRlc3Quc3RydWN0dXJlZF9jbG9uZSgpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpc19vYmou
X2Rpc3BhdGNoKCJjb21wbGV0aW9uX2NhbGxiYWNrIiwgW3Rlc3RzLCBoYXJuZXNzX3N0YXR1c10s
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dHlwZTog
ImNvbXBsZXRlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0ZXN0czogY2xvbmVkX3Rlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0YXR1czogaGFybmVzc19zdGF0dXMuc3RydWN0dXJlZF9jbG9u
ZSgpfSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RhdHVzOiBoYXJuZXNzX3N0YXR1cy5zdHJ1Y3R1cmVkX2Nsb25lKCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0czogYXNzZXJ0cy5tYXAo
YXNzZXJ0ID0+IGFzc2VydC5zdHJ1Y3R1cmVkX2Nsb25lKCkpfSk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgfV0KICAgICAgICAgfQogCkBAIC0xMzEsMTEgKzEyMyw3IEBAIHBvbGljaWVzIGFu
ZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhh
c19zZWxlY3RvcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHdbc2VsZWN0b3JdLmFwcGx5KHVuZGVmaW5lZCwgY2Fs
bGJhY2tfYXJncyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGVidWcpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IGU7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge30KICAgICAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBpZiAoc3VwcG9ydHNf
cG9zdF9tZXNzYWdlKHcpICYmIHcgIT09IHNlbGYpIHsKQEAgLTE5Miw4ICsxODAsOCBAQCBwb2xp
Y2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgICAgIHRoaXNfb2JqLm91
dHB1dF9oYW5kbGVyLnNob3dfc3RhdHVzKCk7CiAgICAgICAgIH0pOwogCi0gICAgICAgIGFkZF9j
b21wbGV0aW9uX2NhbGxiYWNrKGZ1bmN0aW9uICh0ZXN0cywgaGFybmVzc19zdGF0dXMpIHsKLSAg
ICAgICAgICAgIHRoaXNfb2JqLm91dHB1dF9oYW5kbGVyLnNob3dfcmVzdWx0cyh0ZXN0cywgaGFy
bmVzc19zdGF0dXMpOworICAgICAgICBhZGRfY29tcGxldGlvbl9jYWxsYmFjayhmdW5jdGlvbiAo
dGVzdHMsIGhhcm5lc3Nfc3RhdHVzLCBhc3NlcnRzX3J1bikgeworICAgICAgICAgICAgdGhpc19v
Ymoub3V0cHV0X2hhbmRsZXIuc2hvd19yZXN1bHRzKHRlc3RzLCBoYXJuZXNzX3N0YXR1cywgYXNz
ZXJ0c19ydW4pOwogICAgICAgICB9KTsKICAgICAgICAgdGhpcy5zZXR1cF9tZXNzYWdlcyhzZXR0
aW5ncy5tZXNzYWdlX2V2ZW50cyk7CiAgICAgfTsKQEAgLTMxNCwxNCArMzAyLDE1IEBAIHBvbGlj
aWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAgICAgICAgICAgICAgICB9KTsK
ICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgYWRkX2NvbXBsZXRpb25fY2FsbGJhY2soCi0g
ICAgICAgICAgICAgICAgZnVuY3Rpb24odGVzdHMsIGhhcm5lc3Nfc3RhdHVzKSB7CisgICAgICAg
ICAgICAgICAgZnVuY3Rpb24odGVzdHMsIGhhcm5lc3Nfc3RhdHVzLCBhc3NlcnRzKSB7CiAgICAg
ICAgICAgICAgICAgICAgIHRoaXNfb2JqLl9kaXNwYXRjaCh7CiAgICAgICAgICAgICAgICAgICAg
ICAgICB0eXBlOiAiY29tcGxldGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgdGVzdHM6IG1h
cCh0ZXN0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbih0ZXN0KSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0ZXN0LnN0cnVjdHVyZWRfY2xv
bmUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHN0YXR1czogaGFybmVzc19zdGF0dXMuc3RydWN0dXJlZF9jbG9uZSgpCisgICAgICAg
ICAgICAgICAgICAgICAgICBzdGF0dXM6IGhhcm5lc3Nfc3RhdHVzLnN0cnVjdHVyZWRfY2xvbmUo
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydHM6IGFzc2VydHMubWFwKGFzc2VydCA9
PiBhc3NlcnQuc3RydWN0dXJlZF9jbG9uZSgpKSwKICAgICAgICAgICAgICAgICAgICAgfSk7CiAg
ICAgICAgICAgICAgICAgfSk7CiAgICAgfTsKQEAgLTM5OCwyMCArMzg3LDcgQEAgcG9saWNpZXMg
YW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAgIHNlbGYuYWRkRXZlbnRMaXN0ZW5l
cigibWVzc2FnZSIsCiAgICAgICAgICAgICAgICAgZnVuY3Rpb24oZXZlbnQpIHsKICAgICAgICAg
ICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGEgJiYgZXZlbnQuZGF0YS50eXBlICYmIGV2ZW50LmRh
dGEudHlwZSA9PT0gImNvbm5lY3QiKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXZl
bnQucG9ydHMgJiYgZXZlbnQucG9ydHNbMF0pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBJZiBhIE1lc3NhZ2VDaGFubmVsIHdhcyBwYXNzZWQsIHRoZW4gdXNlIGl0IHRvCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2VuZCByZXN1bHRzIGJhY2sgdG8gdGhlIG1haW4g
d2luZG93LiAgVGhpcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFsbG93cyB0aGUg
dGVzdHMgdG8gd29yayBldmVuIGlmIHRoZSBicm93c2VyCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gZG9lcyBub3QgZnVsbHkgc3VwcG9ydCBNZXNzYWdlRXZlbnQuc291cmNlIGluCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2VydmljZVdvcmtlcnMgeWV0LgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRoaXNfb2JqLl9hZGRfbWVzc2FnZV9wb3J0KGV2ZW50LnBv
cnRzWzBdKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wb3J0c1swXS5zdGFy
dCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBNZXNzYWdlQ2hhbm5lbCwgdGhlbiBhdHRlbXB0
IHRvCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXNlIHRoZSBNZXNzYWdlRXZlbnQu
c291cmNlIHRvIHNlbmQgcmVzdWx0cwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJh
Y2sgdG8gdGhlIG1haW4gd2luZG93LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXNf
b2JqLl9hZGRfbWVzc2FnZV9wb3J0KGV2ZW50LnNvdXJjZSk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzX29iai5fYWRkX21lc3NhZ2VfcG9y
dChldmVudC5zb3VyY2UpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
fSwgZmFsc2UpOwogCkBAIC01MTMsMTEgKzQ4OSw3IEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRp
b24gZm9ybXMgWzNdLgogICAgICAgICAgICAgcmV0dXJuIG5ldyBEZWRpY2F0ZWRXb3JrZXJUZXN0
RW52aXJvbm1lbnQoKTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICghKCdsb2NhdGlvbicgaW4g
Z2xvYmFsX3Njb3BlKSkgewotICAgICAgICAgICAgcmV0dXJuIG5ldyBTaGVsbFRlc3RFbnZpcm9u
bWVudCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRl
ZCB0ZXN0IGVudmlyb25tZW50Iik7CisgICAgICAgIHJldHVybiBuZXcgU2hlbGxUZXN0RW52aXJv
bm1lbnQoKTsKICAgICB9CiAKICAgICB2YXIgdGVzdF9lbnZpcm9ubWVudCA9IGNyZWF0ZV90ZXN0
X2Vudmlyb25tZW50KCk7CkBAIC01MzMsMjMgKzUwNSw2NSBAQCBwb2xpY2llcyBhbmQgY29udHJp
YnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgICAgIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcu
Y2FsbCh3b3JrZXIpID09ICdbb2JqZWN0IFNlcnZpY2VXb3JrZXJdJzsKICAgICB9CiAKKyAgICB2
YXIgc2Vlbl9mdW5jX25hbWUgPSBPYmplY3QuY3JlYXRlKG51bGwpOworCisgICAgZnVuY3Rpb24g
Z2V0X3Rlc3RfbmFtZShmdW5jLCBuYW1lKQorICAgIHsKKyAgICAgICAgaWYgKG5hbWUpIHsKKyAg
ICAgICAgICAgIHJldHVybiBuYW1lOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGZ1bmMpIHsK
KyAgICAgICAgICAgIHZhciBmdW5jX2NvZGUgPSBmdW5jLnRvU3RyaW5nKCk7CisKKyAgICAgICAg
ICAgIC8vIFRyeSBhbmQgbWF0Y2ggd2l0aCBicmFja2V0cywgYnV0IGZhbGxiYWNrIHRvIG1hdGNo
aW5nIHdpdGhvdXQKKyAgICAgICAgICAgIHZhciBhcnJvdyA9IGZ1bmNfY29kZS5tYXRjaCgvXlwo
XClccyo9PlxzKig/OnsoLiopfVxzKnwoLiopKSQvKTsKKworICAgICAgICAgICAgLy8gQ2hlY2sg
Zm9yIEpTIGxpbmUgc2VwYXJhdG9ycworICAgICAgICAgICAgaWYgKGFycm93ICE9PSBudWxsICYm
ICEvW1x1MDAwQVx1MDAwRFx1MjAyOFx1MjAyOV0vLnRlc3QoZnVuY19jb2RlKSkgeworICAgICAg
ICAgICAgICAgIHZhciB0cmltbWVkID0gKGFycm93WzFdICE9PSB1bmRlZmluZWQgPyBhcnJvd1sx
XSA6IGFycm93WzJdKS50cmltKCk7CisgICAgICAgICAgICAgICAgLy8gZHJvcCB0cmFpbGluZyA7
IGlmIHRoZXJlJ3Mgbm8gZWFybGllciBvbmVzCisgICAgICAgICAgICAgICAgdHJpbW1lZCA9IHRy
aW1tZWQucmVwbGFjZSgvXihbXjtdKikoO1xzKikrJC8sICIkMSIpOworCisgICAgICAgICAgICAg
ICAgaWYgKHRyaW1tZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgbGV0IG5hbWUgPSB0cmltbWVk
OworICAgICAgICAgICAgICAgICAgICBpZiAoc2Vlbl9mdW5jX25hbWVbdHJpbW1lZF0pIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgc3VidGVzdCBuYW1lIGFscmVhZHkgZXhpc3Rz
LCBzbyBhZGQgYSBzdWZmaXguCisgICAgICAgICAgICAgICAgICAgICAgICBuYW1lICs9ICIgIiAr
IHNlZW5fZnVuY19uYW1lW3RyaW1tZWRdOworICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgICAgICAgICAgc2Vlbl9mdW5jX25hbWVbdHJpbW1lZF0gPSAwOworICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHNlZW5fZnVuY19uYW1lW3Ry
aW1tZWRdICs9IDE7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuYW1lOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB0ZXN0
X2Vudmlyb25tZW50Lm5leHRfZGVmYXVsdF90ZXN0X25hbWUoKTsKKyAgICB9CisKICAgICAvKgog
ICAgICAqIEFQSSBmdW5jdGlvbnMKICAgICAgKi8KICAgICBmdW5jdGlvbiB0ZXN0KGZ1bmMsIG5h
bWUsIHByb3BlcnRpZXMpCiAgICAgewotICAgICAgICB2YXIgdGVzdF9uYW1lID0gbmFtZSA/IG5h
bWUgOiB0ZXN0X2Vudmlyb25tZW50Lm5leHRfZGVmYXVsdF90ZXN0X25hbWUoKTsKLSAgICAgICAg
cHJvcGVydGllcyA9IHByb3BlcnRpZXMgPyBwcm9wZXJ0aWVzIDoge307CisgICAgICAgIGlmICh0
ZXN0cy5wcm9taXNlX3NldHVwX2NhbGxlZCkgeworICAgICAgICAgICAgdGVzdHMuc3RhdHVzLnN0
YXR1cyA9IHRlc3RzLnN0YXR1cy5FUlJPUjsKKyAgICAgICAgICAgIHRlc3RzLnN0YXR1cy5tZXNz
YWdlID0gJ2B0ZXN0YCBpbnZva2VkIGFmdGVyIGBwcm9taXNlX3NldHVwYCc7CisgICAgICAgICAg
ICB0ZXN0cy5jb21wbGV0ZSgpOworICAgICAgICB9CisgICAgICAgIHZhciB0ZXN0X25hbWUgPSBn
ZXRfdGVzdF9uYW1lKGZ1bmMsIG5hbWUpOwogICAgICAgICB2YXIgdGVzdF9vYmogPSBuZXcgVGVz
dCh0ZXN0X25hbWUsIHByb3BlcnRpZXMpOwogICAgICAgICB2YXIgdmFsdWUgPSB0ZXN0X29iai5z
dGVwKGZ1bmMsIHRlc3Rfb2JqLCB0ZXN0X29iaik7CiAKICAgICAgICAgaWYgKHZhbHVlICE9PSB1
bmRlZmluZWQpIHsKLSAgICAgICAgICAgIHZhciBtc2cgPSAiVGVzdCBuYW1lZCBcIiIgKyB0ZXN0
X25hbWUgKwotICAgICAgICAgICAgICAgICJcIiBpbmFwcHJvcHJpYXRlbHkgcmV0dXJuZWQgYSB2
YWx1ZSI7CisgICAgICAgICAgICB2YXIgbXNnID0gJ1Rlc3QgbmFtZWQgIicgKyB0ZXN0X25hbWUg
KworICAgICAgICAgICAgICAgICciIHBhc3NlZCBhIGZ1bmN0aW9uIHRvIGB0ZXN0YCB0aGF0IHJl
dHVybmVkIGEgdmFsdWUuJzsKIAogICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBp
ZiAodmFsdWUgJiYgdmFsdWUuaGFzT3duUHJvcGVydHkoInRoZW4iKSkgewotICAgICAgICAgICAg
ICAgICAgICBtc2cgKz0gIiwgY29uc2lkZXIgdXNpbmcgYHByb21pc2VfdGVzdGAgaW5zdGVhZCI7
CisgICAgICAgICAgICAgICAgaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZS50aGVuID09PSAnZnVu
Y3Rpb24nKSB7CisgICAgICAgICAgICAgICAgICAgIG1zZyArPSAnIENvbnNpZGVyIHVzaW5nIGBw
cm9taXNlX3Rlc3RgIGluc3RlYWQgd2hlbiAnICsKKyAgICAgICAgICAgICAgICAgICAgICAgICd1
c2luZyBQcm9taXNlcyBvciBhc3luYy9hd2FpdC4nOwogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIH0gY2F0Y2ggKGVycikge30KIApAQCAtNTY0LDIyICs1NzgsNTUgQEAgcG9saWNpZXMg
YW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAKICAgICBmdW5jdGlvbiBhc3luY190ZXN0KGZ1
bmMsIG5hbWUsIHByb3BlcnRpZXMpCiAgICAgeworICAgICAgICBpZiAodGVzdHMucHJvbWlzZV9z
ZXR1cF9jYWxsZWQpIHsKKyAgICAgICAgICAgIHRlc3RzLnN0YXR1cy5zdGF0dXMgPSB0ZXN0cy5z
dGF0dXMuRVJST1I7CisgICAgICAgICAgICB0ZXN0cy5zdGF0dXMubWVzc2FnZSA9ICdgYXN5bmNf
dGVzdGAgaW52b2tlZCBhZnRlciBgcHJvbWlzZV9zZXR1cGAnOworICAgICAgICAgICAgdGVzdHMu
Y29tcGxldGUoKTsKKyAgICAgICAgfQogICAgICAgICBpZiAodHlwZW9mIGZ1bmMgIT09ICJmdW5j
dGlvbiIpIHsKICAgICAgICAgICAgIHByb3BlcnRpZXMgPSBuYW1lOwogICAgICAgICAgICAgbmFt
ZSA9IGZ1bmM7CiAgICAgICAgICAgICBmdW5jID0gbnVsbDsKICAgICAgICAgfQotICAgICAgICB2
YXIgdGVzdF9uYW1lID0gbmFtZSA/IG5hbWUgOiB0ZXN0X2Vudmlyb25tZW50Lm5leHRfZGVmYXVs
dF90ZXN0X25hbWUoKTsKLSAgICAgICAgcHJvcGVydGllcyA9IHByb3BlcnRpZXMgPyBwcm9wZXJ0
aWVzIDoge307CisgICAgICAgIHZhciB0ZXN0X25hbWUgPSBnZXRfdGVzdF9uYW1lKGZ1bmMsIG5h
bWUpOwogICAgICAgICB2YXIgdGVzdF9vYmogPSBuZXcgVGVzdCh0ZXN0X25hbWUsIHByb3BlcnRp
ZXMpOwogICAgICAgICBpZiAoZnVuYykgewotICAgICAgICAgICAgdGVzdF9vYmouc3RlcChmdW5j
LCB0ZXN0X29iaiwgdGVzdF9vYmopOworICAgICAgICAgICAgdmFyIHZhbHVlID0gdGVzdF9vYmou
c3RlcChmdW5jLCB0ZXN0X29iaiwgdGVzdF9vYmopOworCisgICAgICAgICAgICAvLyBUZXN0IGF1
dGhvcnMgc29tZXRpbWVzIHJldHVybiB2YWx1ZXMgdG8gYXN5bmNfdGVzdCwgZXhwZWN0aW5nIHVz
CisgICAgICAgICAgICAvLyB0byBoYW5kbGUgdGhlIHZhbHVlIHNvbWVob3cuIE1ha2UgZG9pbmcg
c28gYSBoYXJuZXNzIGVycm9yIHRvIGJlCisgICAgICAgICAgICAvLyBjbGVhciB0aGlzIGlzIGlu
dmFsaWQsIGFuZCBwb2ludCBhdXRob3JzIHRvIHByb21pc2VfdGVzdCBpZiBpdAorICAgICAgICAg
ICAgLy8gbWF5IGJlIGFwcHJvcHJpYXRlLgorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8v
IE5vdGUgdGhhdCB3ZSBvbmx5IHBlcmZvcm0gdGhpcyBjaGVjayBvbiB0aGUgaW5pdGlhbCBmdW5j
dGlvbgorICAgICAgICAgICAgLy8gcGFzc2VkIHRvIGFzeW5jX3Rlc3QsIG5vdCBvbiBhbnkgbGF0
ZXIgc3RlcHMgLSB3ZSBoYXZlbid0IHNlZW4gYQorICAgICAgICAgICAgLy8gY29uc2lzdGVudCBw
cm9ibGVtIHdpdGggdGhvc2UgKGFuZCBpdCdzIGhhcmRlciB0byBjaGVjaykuCisgICAgICAgICAg
ICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkgeworICAgICAgICAgICAgICAgIHZhciBtc2cgPSAn
VGVzdCBuYW1lZCAiJyArIHRlc3RfbmFtZSArCisgICAgICAgICAgICAgICAgICAgICciIHBhc3Nl
ZCBhIGZ1bmN0aW9uIHRvIGBhc3luY190ZXN0YCB0aGF0IHJldHVybmVkIGEgdmFsdWUuJzsKKwor
ICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSAmJiB0
eXBlb2YgdmFsdWUudGhlbiA9PT0gJ2Z1bmN0aW9uJykgeworICAgICAgICAgICAgICAgICAgICAg
ICAgbXNnICs9ICcgQ29uc2lkZXIgdXNpbmcgYHByb21pc2VfdGVzdGAgaW5zdGVhZCB3aGVuICcg
KworICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1c2luZyBQcm9taXNlcyBvciBhc3luYy9h
d2FpdC4nOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBjYXRjaCAo
ZXJyKSB7fQorCisgICAgICAgICAgICAgICAgdGVzdHMuc2V0X3N0YXR1cyh0ZXN0cy5zdGF0dXMu
RVJST1IsIG1zZyk7CisgICAgICAgICAgICAgICAgdGVzdHMuY29tcGxldGUoKTsKKyAgICAgICAg
ICAgIH0KICAgICAgICAgfQogICAgICAgICByZXR1cm4gdGVzdF9vYmo7CiAgICAgfQogCiAgICAg
ZnVuY3Rpb24gcHJvbWlzZV90ZXN0KGZ1bmMsIG5hbWUsIHByb3BlcnRpZXMpIHsKLSAgICAgICAg
dmFyIHRlc3QgPSBhc3luY190ZXN0KG5hbWUsIHByb3BlcnRpZXMpOworICAgICAgICBpZiAodHlw
ZW9mIGZ1bmMgIT09ICJmdW5jdGlvbiIpIHsKKyAgICAgICAgICAgIHByb3BlcnRpZXMgPSBuYW1l
OworICAgICAgICAgICAgbmFtZSA9IGZ1bmM7CisgICAgICAgICAgICBmdW5jID0gbnVsbDsKKyAg
ICAgICAgfQorICAgICAgICB2YXIgdGVzdF9uYW1lID0gZ2V0X3Rlc3RfbmFtZShmdW5jLCBuYW1l
KTsKKyAgICAgICAgdmFyIHRlc3QgPSBuZXcgVGVzdCh0ZXN0X25hbWUsIHByb3BlcnRpZXMpOwog
ICAgICAgICB0ZXN0Ll9pc19wcm9taXNlX3Rlc3QgPSB0cnVlOwogCiAgICAgICAgIC8vIElmIHRo
ZXJlIGlzIG5vIHByb21pc2UgdGVzdHMgcXVldWUgbWFrZSBvbmUuCkBAIC02MjQsMTAgKzY3MSw4
NyBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgfSk7CiAg
ICAgfQogCi0gICAgZnVuY3Rpb24gcHJvbWlzZV9yZWplY3RzKHRlc3QsIGV4cGVjdGVkLCBwcm9t
aXNlLCBkZXNjcmlwdGlvbikgewotICAgICAgICByZXR1cm4gcHJvbWlzZS50aGVuKHRlc3QudW5y
ZWFjaGVkX2Z1bmMoIlNob3VsZCBoYXZlIHJlamVjdGVkOiAiICsgZGVzY3JpcHRpb24pKS5jYXRj
aChmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICBhc3NlcnRfdGhyb3dzKGV4cGVjdGVkLCBmdW5j
dGlvbigpIHsgdGhyb3cgZSB9LCBkZXNjcmlwdGlvbik7Ci0gICAgICAgIH0pOworICAgIC8qKgor
ICAgICAqIE1ha2UgYSBjb3B5IG9mIGEgUHJvbWlzZSBpbiB0aGUgY3VycmVudCByZWFsbS4KKyAg
ICAgKgorICAgICAqIEBwYXJhbSB7UHJvbWlzZX0gcHJvbWlzZSB0aGUgZ2l2ZW4gcHJvbWlzZSB0
aGF0IG1heSBiZSBmcm9tIGEgZGlmZmVyZW50CisgICAgICogICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlYWxtCisgICAgICogQHJldHVybnMge1Byb21pc2V9CisgICAgICoKKyAgICAgKiBBbiBh
cmJpdHJhcnkgcHJvbWlzZSBwcm92aWRlZCBieSB0aGUgY2FsbGVyIG1heSBoYXZlIG9yaWdpbmF0
ZWQgaW4KKyAgICAgKiBhbm90aGVyIGZyYW1lIHRoYXQgaGF2ZSBzaW5jZSBuYXZpZ2F0ZWQgYXdh
eSwgcmVuZGVyaW5nIHRoZSBmcmFtZSdzCisgICAgICogZG9jdW1lbnQgaW5hY3RpdmUuIFN1Y2gg
YSBwcm9taXNlIGNhbm5vdCBiZSB1c2VkIHdpdGggYGF3YWl0YCBvcgorICAgICAqIFByb21pc2Uu
cmVzb2x2ZSgpLCBhcyBtaWNyb3Rhc2tzIGFzc29jaWF0ZWQgd2l0aCBpdCBtYXkgYmUgcHJldmVu
dGVkCisgICAgICogZnJvbSBiZWluZyBydW4uIFNlZSBodHRwczovL2dpdGh1Yi5jb20vd2hhdHdn
L2h0bWwvaXNzdWVzLzUzMTkgZm9yIGEKKyAgICAgKiBwYXJ0aWN1bGFyIGNhc2UuCisgICAgICoK
KyAgICAgKiBJbiBmdW5jdGlvbnMgd2UgZGVmaW5lIGhlcmUsIHRoZXJlIGlzIGFuIGV4cGVjdGF0
aW9uIGZyb20gdGhlIGNhbGxlcgorICAgICAqIHRoYXQgdGhlIHByb21pc2UgaXMgZnJvbSB0aGUg
Y3VycmVudCByZWFsbSwgdGhhdCBjYW4gYWx3YXlzIGJlIHVzZWQgd2l0aAorICAgICAqIGBhd2Fp
dGAsIGV0Yy4gV2UgdGhlcmVmb3JlIGNyZWF0ZSBhIG5ldyBwcm9taXNlIGluIHRoaXMgcmVhbG0g
dGhhdAorICAgICAqIGluaGVyaXQgdGhlIHZhbHVlIGFuZCBzdGF0dXMgZnJvbSB0aGUgZ2l2ZW4g
cHJvbWlzZS4KKyAgICAgKi8KKworICAgIGZ1bmN0aW9uIGJyaW5nX3Byb21pc2VfdG9fY3VycmVu
dF9yZWFsbShwcm9taXNlKSB7CisgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShwcm9taXNlLnRo
ZW4uYmluZChwcm9taXNlKSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gcHJvbWlzZV9yZWplY3Rz
X2pzKHRlc3QsIGNvbnN0cnVjdG9yLCBwcm9taXNlLCBkZXNjcmlwdGlvbikgeworICAgICAgICBy
ZXR1cm4gYnJpbmdfcHJvbWlzZV90b19jdXJyZW50X3JlYWxtKHByb21pc2UpCisgICAgICAgICAg
ICAudGhlbih0ZXN0LnVucmVhY2hlZF9mdW5jKCJTaG91bGQgaGF2ZSByZWplY3RlZDogIiArIGRl
c2NyaXB0aW9uKSkKKyAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbihlKSB7CisgICAgICAgICAg
ICAgICAgYXNzZXJ0X3Rocm93c19qc19pbXBsKGNvbnN0cnVjdG9yLCBmdW5jdGlvbigpIHsgdGhy
b3cgZSB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlv
biwgInByb21pc2VfcmVqZWN0c19qcyIpOworICAgICAgICAgICAgfSk7CisgICAgfQorCisgICAg
LyoqCisgICAgICogQXNzZXJ0IHRoYXQgYSBQcm9taXNlIGlzIHJlamVjdGVkIHdpdGggdGhlIHJp
Z2h0IERPTUV4Y2VwdGlvbi4KKyAgICAgKgorICAgICAqIEBwYXJhbSB0ZXN0IHRoZSB0ZXN0IGFy
Z3VtZW50IHBhc3NlZCB0byBwcm9taXNlX3Rlc3QKKyAgICAgKiBAcGFyYW0ge251bWJlcnxzdHJp
bmd9IHR5cGUuICBTZWUgZG9jdW1lbnRhdGlvbiBmb3IgYXNzZXJ0X3Rocm93c19kb20uCisgICAg
ICoKKyAgICAgKiBGb3IgdGhlIHJlbWFpbmluZyBhcmd1bWVudHMsIHRoZXJlIGFyZSB0d28gd2F5
cyBvZiBjYWxsaW5nCisgICAgICogcHJvbWlzZV9yZWplY3RzX2RvbToKKyAgICAgKgorICAgICAq
IDEpIElmIHRoZSBET01FeGNlcHRpb24gaXMgZXhwZWN0ZWQgdG8gY29tZSBmcm9tIHRoZSBjdXJy
ZW50IGdsb2JhbCwgdGhlCisgICAgICogdGhpcmQgYXJndW1lbnQgc2hvdWxkIGJlIHRoZSBwcm9t
aXNlIGV4cGVjdGVkIHRvIHJlamVjdCwgYW5kIGEgZm91cnRoLAorICAgICAqIG9wdGlvbmFsLCBh
cmd1bWVudCBpcyB0aGUgYXNzZXJ0aW9uIGRlc2NyaXB0aW9uLgorICAgICAqCisgICAgICogMikg
SWYgdGhlIERPTUV4Y2VwdGlvbiBpcyBleHBlY3RlZCB0byBjb21lIGZyb20gc29tZSBvdGhlciBn
bG9iYWwsIHRoZQorICAgICAqIHRoaXJkIGFyZ3VtZW50IHNob3VsZCBiZSB0aGUgRE9NRXhjZXB0
aW9uIGNvbnN0cnVjdG9yIGZyb20gdGhhdCBnbG9iYWwsCisgICAgICogdGhlIGZvdXJ0aCBhcmd1
bWVudCB0aGUgcHJvbWlzZSBleHBlY3RlZCB0byByZWplY3QsIGFuZCB0aGUgZmlmdGgsCisgICAg
ICogb3B0aW9uYWwsIGFyZ3VtZW50IHRoZSBhc3NlcnRpb24gZGVzY3JpcHRpb24uCisgICAgICov
CisKKyAgICBmdW5jdGlvbiBwcm9taXNlX3JlamVjdHNfZG9tKHRlc3QsIHR5cGUsIHByb21pc2VP
ckNvbnN0cnVjdG9yLCBkZXNjcmlwdGlvbk9yUHJvbWlzZSwgbWF5YmVEZXNjcmlwdGlvbikgewor
ICAgICAgICBsZXQgY29uc3RydWN0b3IsIHByb21pc2UsIGRlc2NyaXB0aW9uOworICAgICAgICBp
ZiAodHlwZW9mIHByb21pc2VPckNvbnN0cnVjdG9yID09PSAiZnVuY3Rpb24iICYmCisgICAgICAg
ICAgICBwcm9taXNlT3JDb25zdHJ1Y3Rvci5uYW1lID09PSAiRE9NRXhjZXB0aW9uIikgeworICAg
ICAgICAgICAgY29uc3RydWN0b3IgPSBwcm9taXNlT3JDb25zdHJ1Y3RvcjsKKyAgICAgICAgICAg
IHByb21pc2UgPSBkZXNjcmlwdGlvbk9yUHJvbWlzZTsKKyAgICAgICAgICAgIGRlc2NyaXB0aW9u
ID0gbWF5YmVEZXNjcmlwdGlvbjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGNvbnN0
cnVjdG9yID0gc2VsZi5ET01FeGNlcHRpb247CisgICAgICAgICAgICBwcm9taXNlID0gcHJvbWlz
ZU9yQ29uc3RydWN0b3I7CisgICAgICAgICAgICBkZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uT3JQ
cm9taXNlOworICAgICAgICAgICAgYXNzZXJ0KG1heWJlRGVzY3JpcHRpb24gPT09IHVuZGVmaW5l
ZCwKKyAgICAgICAgICAgICAgICAgICAiVG9vIG1hbnkgYXJncyBwYXNlZCB0byBuby1jb25zdHJ1
Y3RvciB2ZXJzaW9uIG9mIHByb21pc2VfcmVqZWN0c19kb20iKTsKKyAgICAgICAgfQorICAgICAg
ICByZXR1cm4gYnJpbmdfcHJvbWlzZV90b19jdXJyZW50X3JlYWxtKHByb21pc2UpCisgICAgICAg
ICAgICAudGhlbih0ZXN0LnVucmVhY2hlZF9mdW5jKCJTaG91bGQgaGF2ZSByZWplY3RlZDogIiAr
IGRlc2NyaXB0aW9uKSkKKyAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbihlKSB7CisgICAgICAg
ICAgICAgICAgYXNzZXJ0X3Rocm93c19kb21faW1wbCh0eXBlLCBmdW5jdGlvbigpIHsgdGhyb3cg
ZSB9LCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJwcm9taXNlX3JlamVjdHNfZG9tIiwgY29uc3RydWN0b3IpOworICAgICAgICAgICAgfSk7Cisg
ICAgfQorCisgICAgZnVuY3Rpb24gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodGVzdCwgZXhjZXB0
aW9uLCBwcm9taXNlLCBkZXNjcmlwdGlvbikgeworICAgICAgICByZXR1cm4gYnJpbmdfcHJvbWlz
ZV90b19jdXJyZW50X3JlYWxtKHByb21pc2UpCisgICAgICAgICAgICAudGhlbih0ZXN0LnVucmVh
Y2hlZF9mdW5jKCJTaG91bGQgaGF2ZSByZWplY3RlZDogIiArIGRlc2NyaXB0aW9uKSkKKyAgICAg
ICAgICAgIC5jYXRjaChmdW5jdGlvbihlKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X3Rocm93
c19leGFjdGx5X2ltcGwoZXhjZXB0aW9uLCBmdW5jdGlvbigpIHsgdGhyb3cgZSB9LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uLCAicHJvbWlz
ZV9yZWplY3RzX2V4YWN0bHkiKTsKKyAgICAgICAgICAgIH0pOwogICAgIH0KIAogICAgIC8qKgpA
QCAtNzY5LDkgKzg5Myw1NiBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4K
ICAgICAgICAgdGVzdF9lbnZpcm9ubWVudC5vbl9uZXdfaGFybmVzc19wcm9wZXJ0aWVzKHByb3Bl
cnRpZXMpOwogICAgIH0KIAorICAgIGZ1bmN0aW9uIHByb21pc2Vfc2V0dXAoZnVuYywgbWF5YmVf
cHJvcGVydGllcykKKyAgICB7CisgICAgICAgIGlmICh0eXBlb2YgZnVuYyAhPT0gImZ1bmN0aW9u
IikgeworICAgICAgICAgICAgdGVzdHMuc2V0X3N0YXR1cyh0ZXN0cy5zdGF0dXMuRVJST1IsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwcm9taXNlX3Rlc3QgaW52b2tlZCB3aXRob3V0
IGEgZnVuY3Rpb24iKTsKKyAgICAgICAgICAgIHRlc3RzLmNvbXBsZXRlKCk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgdGVzdHMucHJvbWlzZV9zZXR1cF9jYWxsZWQg
PSB0cnVlOworCisgICAgICAgIGlmICghdGVzdHMucHJvbWlzZV90ZXN0cykgeworICAgICAgICAg
ICAgdGVzdHMucHJvbWlzZV90ZXN0cyA9IFByb21pc2UucmVzb2x2ZSgpOworICAgICAgICB9CisK
KyAgICAgICAgdGVzdHMucHJvbWlzZV90ZXN0cyA9IHRlc3RzLnByb21pc2VfdGVzdHMKKyAgICAg
ICAgICAgIC50aGVuKGZ1bmN0aW9uKCkKKyAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgICB2YXIgcHJvcGVydGllcyA9IG1heWJlX3Byb3BlcnRpZXMgfHwge307CisgICAg
ICAgICAgICAgICAgICAgICAgdmFyIHJlc3VsdDsKKworICAgICAgICAgICAgICAgICAgICAgIHRl
c3RzLnNldHVwKG51bGwsIHByb3BlcnRpZXMpOworICAgICAgICAgICAgICAgICAgICAgIHJlc3Vs
dCA9IGZ1bmMoKTsKKyAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2Vudmlyb25tZW50Lm9uX25l
d19oYXJuZXNzX3Byb3BlcnRpZXMocHJvcGVydGllcyk7CisKKyAgICAgICAgICAgICAgICAgICAg
ICBpZiAoIXJlc3VsdCB8fCB0eXBlb2YgcmVzdWx0LnRoZW4gIT09ICJmdW5jdGlvbiIpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgIk5vbi10aGVuYWJsZSByZXR1cm5lZCBieSBm
dW5jdGlvbiBwYXNzZWQgdG8gYHByb21pc2Vfc2V0dXBgIjsKKyAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgICAg
ICAgIH0pCisgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24oZSkKKyAgICAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgICAgIHRlc3RzLnNldF9zdGF0dXModGVzdHMuc3RhdHVz
LkVSUk9SLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyhl
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlICYmIGUuc3RhY2sp
OworICAgICAgICAgICAgICAgICAgICAgICB0ZXN0cy5jb21wbGV0ZSgpOworICAgICAgICAgICAg
ICAgICAgIH0pOworICAgIH0KKwogICAgIGZ1bmN0aW9uIGRvbmUoKSB7CiAgICAgICAgIGlmICh0
ZXN0cy50ZXN0cy5sZW5ndGggPT09IDApIHsKLSAgICAgICAgICAgIHRlc3RzLnNldF9maWxlX2lz
X3Rlc3QoKTsKKyAgICAgICAgICAgIC8vIGBkb25lYCBpcyBpbnZva2VkIGFmdGVyIGhhbmRsaW5n
IHVuY2F1Z2h0IGV4Y2VwdGlvbnMsIHNvIGlmIHRoZQorICAgICAgICAgICAgLy8gaGFybmVzcyBz
dGF0dXMgaXMgYWxyZWFkeSBzZXQsIHRoZSBjb3JyZXNwb25kaW5nIG1lc3NhZ2UgaXMgbW9yZQor
ICAgICAgICAgICAgLy8gZGVzY3JpcHRpdmUgdGhhbiB0aGUgZ2VuZXJpYyBtZXNzYWdlIGRlZmlu
ZWQgaGVyZS4KKyAgICAgICAgICAgIGlmICh0ZXN0cy5zdGF0dXMuc3RhdHVzID09PSBudWxsKSB7
CisgICAgICAgICAgICAgICAgdGVzdHMuc3RhdHVzLnN0YXR1cyA9IHRlc3RzLnN0YXR1cy5FUlJP
UjsKKyAgICAgICAgICAgICAgICB0ZXN0cy5zdGF0dXMubWVzc2FnZSA9ICJkb25lKCkgd2FzIGNh
bGxlZCB3aXRob3V0IGZpcnN0IGRlZmluaW5nIGFueSB0ZXN0cyI7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHRlc3RzLmNvbXBsZXRlKCk7CisgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KICAgICAgICAgaWYgKHRlc3RzLmZpbGVfaXNfdGVzdCkgewogICAgICAgICAgICAgLy8g
ZmlsZSBpcyB0ZXN0IGZpbGVzIG5ldmVyIGhhdmUgYXN5bmNocm9ub3VzIGNsZWFudXAgbG9naWMs
CkBAIC03OTQsNiArOTY1LDEyIEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNd
LgogICAgICAgICAgICAgICAgIH0pOwogICAgIH0KIAorICAgIC8qCisgICAgICogUmVnaXN0ZXIg
YSBmdW5jdGlvbiBhcyBhIERPTSBldmVudCBsaXN0ZW5lciB0byB0aGUgZ2l2ZW4gb2JqZWN0IGZv
ciB0aGUKKyAgICAgKiBldmVudCBidWJibGluZyBwaGFzZS4KKyAgICAgKgorICAgICAqIFRoaXMg
ZnVuY3Rpb24gd2FzIGRlcHJlY2F0ZWQgaW4gTm92ZW1iZXIgb2YgMjAxOS4KKyAgICAgKi8KICAg
ICBmdW5jdGlvbiBvbl9ldmVudChvYmplY3QsIGV2ZW50LCBjYWxsYmFjaykKICAgICB7CiAgICAg
ICAgIG9iamVjdC5hZGRFdmVudExpc3RlbmVyKGV2ZW50LCBjYWxsYmFjaywgZmFsc2UpOwpAQCAt
ODEwLDkgKzk4NywxMiBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAg
ICBleHBvc2UodGVzdCwgJ3Rlc3QnKTsKICAgICBleHBvc2UoYXN5bmNfdGVzdCwgJ2FzeW5jX3Rl
c3QnKTsKICAgICBleHBvc2UocHJvbWlzZV90ZXN0LCAncHJvbWlzZV90ZXN0Jyk7Ci0gICAgZXhw
b3NlKHByb21pc2VfcmVqZWN0cywgJ3Byb21pc2VfcmVqZWN0cycpOworICAgIGV4cG9zZShwcm9t
aXNlX3JlamVjdHNfanMsICdwcm9taXNlX3JlamVjdHNfanMnKTsKKyAgICBleHBvc2UocHJvbWlz
ZV9yZWplY3RzX2RvbSwgJ3Byb21pc2VfcmVqZWN0c19kb20nKTsKKyAgICBleHBvc2UocHJvbWlz
ZV9yZWplY3RzX2V4YWN0bHksICdwcm9taXNlX3JlamVjdHNfZXhhY3RseScpOwogICAgIGV4cG9z
ZShnZW5lcmF0ZV90ZXN0cywgJ2dlbmVyYXRlX3Rlc3RzJyk7CiAgICAgZXhwb3NlKHNldHVwLCAn
c2V0dXAnKTsKKyAgICBleHBvc2UocHJvbWlzZV9zZXR1cCwgJ3Byb21pc2Vfc2V0dXAnKTsKICAg
ICBleHBvc2UoZG9uZSwgJ2RvbmUnKTsKICAgICBleHBvc2Uob25fZXZlbnQsICdvbl9ldmVudCcp
OwogICAgIGV4cG9zZShzdGVwX3RpbWVvdXQsICdzdGVwX3RpbWVvdXQnKTsKQEAgLTkxNCwxMiAr
MTA5NCwyMCBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAg
ICAgIHNlZW4ucHVzaCh2YWwpOwogICAgICAgICB9CiAgICAgICAgIGlmIChBcnJheS5pc0FycmF5
KHZhbCkpIHsKLSAgICAgICAgICAgIHJldHVybiAiWyIgKyB2YWwubWFwKGZ1bmN0aW9uKHgpIHty
ZXR1cm4gZm9ybWF0X3ZhbHVlKHgsIHNlZW4pO30pLmpvaW4oIiwgIikgKyAiXSI7CisgICAgICAg
ICAgICBsZXQgb3V0cHV0ID0gIlsiOworICAgICAgICAgICAgaWYgKHZhbC5iZWdpbkVsbGlwc2lz
ICE9PSB1bmRlZmluZWQpIHsKKyAgICAgICAgICAgICAgICBvdXRwdXQgKz0gIuKApiwgIjsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIG91dHB1dCArPSB2YWwubWFwKGZ1bmN0aW9uKHgpIHty
ZXR1cm4gZm9ybWF0X3ZhbHVlKHgsIHNlZW4pO30pLmpvaW4oIiwgIik7CisgICAgICAgICAgICBp
ZiAodmFsLmVuZEVsbGlwc2lzICE9PSB1bmRlZmluZWQpIHsKKyAgICAgICAgICAgICAgICBvdXRw
dXQgKz0gIiwg4oCmIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBvdXRwdXQg
KyAiXSI7CiAgICAgICAgIH0KIAogICAgICAgICBzd2l0Y2ggKHR5cGVvZiB2YWwpIHsKICAgICAg
ICAgY2FzZSAic3RyaW5nIjoKLSAgICAgICAgICAgIHZhbCA9IHZhbC5yZXBsYWNlKCJcXCIsICJc
XFxcIik7CisgICAgICAgICAgICB2YWwgPSB2YWwucmVwbGFjZSgvXFwvZywgIlxcXFwiKTsKICAg
ICAgICAgICAgIGZvciAodmFyIHAgaW4gcmVwbGFjZW1lbnRzKSB7CiAgICAgICAgICAgICAgICAg
dmFyIHJlcGxhY2UgPSAiXFwiICsgcmVwbGFjZW1lbnRzW3BdOwogICAgICAgICAgICAgICAgIHZh
bCA9IHZhbC5yZXBsYWNlKFJlZ0V4cChTdHJpbmcuZnJvbUNoYXJDb2RlKHApLCAiZyIpLCByZXBs
YWNlKTsKQEAgLTk4NCwxOSArMTE3Miw1MyBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZv
cm1zIFszXS4KICAgICAgKiBBc3NlcnRpb25zCiAgICAgICovCiAKKyAgICBmdW5jdGlvbiBleHBv
c2VfYXNzZXJ0KGYsIG5hbWUpIHsKKyAgICAgICAgZnVuY3Rpb24gYXNzZXJ0X3dyYXBwZXIoLi4u
YXJncykgeworICAgICAgICAgICAgbGV0IHN0YXR1cyA9IFRlc3Quc3RhdHVzZXMuVElNRU9VVDsK
KyAgICAgICAgICAgIGxldCBzdGFjayA9IG51bGw7CisgICAgICAgICAgICB0cnkgeworICAgICAg
ICAgICAgICAgIGlmIChzZXR0aW5ncy5kZWJ1ZykgeworICAgICAgICAgICAgICAgICAgICBjb25z
b2xlLmRlYnVnKCJBU1NFUlQiLCBuYW1lLCB0ZXN0cy5jdXJyZW50X3Rlc3QgJiYgdGVzdHMuY3Vy
cmVudF90ZXN0Lm5hbWUsIGFyZ3MpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICBpZiAodGVzdHMub3V0cHV0KSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RzLnNldF9hc3Nl
cnQobmFtZSwgYXJncyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNvbnN0
IHJ2ID0gZi5hcHBseSh1bmRlZmluZWQsIGFyZ3MpOworICAgICAgICAgICAgICAgIHN0YXR1cyA9
IFRlc3Quc3RhdHVzZXMuUEFTUzsKKyAgICAgICAgICAgICAgICByZXR1cm4gcnY7CisgICAgICAg
ICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIEFzc2Vy
dGlvbkVycm9yKSB7CisgICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IFRlc3Quc3RhdHVzZXMu
RkFJTDsKKyAgICAgICAgICAgICAgICAgICAgc3RhY2sgPSBlLnN0YWNrOworICAgICAgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBzdGF0dXMgPSBUZXN0LnN0YXR1c2Vz
LkVSUk9SOworICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdGhyb3cgZTsKKyAg
ICAgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICAgICAgaWYgKHRlc3RzLm91dHB1dCAm
JiAhc3RhY2spIHsKKyAgICAgICAgICAgICAgICAgICAgc3RhY2sgPSBnZXRfc3RhY2soKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKHRlc3RzLm91dHB1dCkgeworICAg
ICAgICAgICAgICAgICAgICB0ZXN0cy5zZXRfYXNzZXJ0X3N0YXR1cyhzdGF0dXMsIHN0YWNrKTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZXhw
b3NlKGFzc2VydF93cmFwcGVyLCBuYW1lKTsKKyAgICB9CisKICAgICBmdW5jdGlvbiBhc3NlcnRf
dHJ1ZShhY3R1YWwsIGRlc2NyaXB0aW9uKQogICAgIHsKICAgICAgICAgYXNzZXJ0KGFjdHVhbCA9
PT0gdHJ1ZSwgImFzc2VydF90cnVlIiwgZGVzY3JpcHRpb24sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJleHBlY3RlZCB0cnVlIGdvdCAke2FjdHVhbH0iLCB7YWN0dWFsOmFjdHVh
bH0pOwogICAgIH0KLSAgICBleHBvc2UoYXNzZXJ0X3RydWUsICJhc3NlcnRfdHJ1ZSIpOworICAg
IGV4cG9zZV9hc3NlcnQoYXNzZXJ0X3RydWUsICJhc3NlcnRfdHJ1ZSIpOwogCiAgICAgZnVuY3Rp
b24gYXNzZXJ0X2ZhbHNlKGFjdHVhbCwgZGVzY3JpcHRpb24pCiAgICAgewogICAgICAgICBhc3Nl
cnQoYWN0dWFsID09PSBmYWxzZSwgImFzc2VydF9mYWxzZSIsIGRlc2NyaXB0aW9uLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIGZhbHNlIGdvdCAke2FjdHVhbH0i
LCB7YWN0dWFsOmFjdHVhbH0pOwogICAgIH0KLSAgICBleHBvc2UoYXNzZXJ0X2ZhbHNlLCAiYXNz
ZXJ0X2ZhbHNlIik7CisgICAgZXhwb3NlX2Fzc2VydChhc3NlcnRfZmFsc2UsICJhc3NlcnRfZmFs
c2UiKTsKIAogICAgIGZ1bmN0aW9uIHNhbWVfdmFsdWUoeCwgeSkgewogICAgICAgICBpZiAoeSAh
PT0geSkgewpAQCAtMTAyNiw3ICsxMjQ4LDcgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBm
b3JtcyBbM10uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
ZXhwZWN0ZWQgJHtleHBlY3RlZH0gYnV0IGdvdCAke2FjdHVhbH0iLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2V4cGVjdGVkOmV4cGVjdGVkLCBhY3R1YWw6
YWN0dWFsfSk7CiAgICAgfQotICAgIGV4cG9zZShhc3NlcnRfZXF1YWxzLCAiYXNzZXJ0X2VxdWFs
cyIpOworICAgIGV4cG9zZV9hc3NlcnQoYXNzZXJ0X2VxdWFscywgImFzc2VydF9lcXVhbHMiKTsK
IAogICAgIGZ1bmN0aW9uIGFzc2VydF9ub3RfZXF1YWxzKGFjdHVhbCwgZXhwZWN0ZWQsIGRlc2Ny
aXB0aW9uKQogICAgIHsKQEAgLTEwMzgsNyArMTI2MCw3IEBAIHBvbGljaWVzIGFuZCBjb250cmli
dXRpb24gZm9ybXMgWzNdLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJnb3QgZGlzYWxsb3dlZCB2YWx1ZSAke2FjdHVhbH0iLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHthY3R1YWw6YWN0dWFsfSk7CiAgICAgfQot
ICAgIGV4cG9zZShhc3NlcnRfbm90X2VxdWFscywgImFzc2VydF9ub3RfZXF1YWxzIik7CisgICAg
ZXhwb3NlX2Fzc2VydChhc3NlcnRfbm90X2VxdWFscywgImFzc2VydF9ub3RfZXF1YWxzIik7CiAK
ICAgICBmdW5jdGlvbiBhc3NlcnRfaW5fYXJyYXkoYWN0dWFsLCBleHBlY3RlZCwgZGVzY3JpcHRp
b24pCiAgICAgewpAQCAtMTA0Niw4ICsxMjY4LDEwIEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRp
b24gZm9ybXMgWzNdLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAidmFsdWUgJHthY3R1YWx9IG5vdCBpbiBhcnJheSAke2V4cGVjdGVkfSIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHthY3R1YWw6YWN0dWFsLCBl
eHBlY3RlZDpleHBlY3RlZH0pOwogICAgIH0KLSAgICBleHBvc2UoYXNzZXJ0X2luX2FycmF5LCAi
YXNzZXJ0X2luX2FycmF5Iik7CisgICAgZXhwb3NlX2Fzc2VydChhc3NlcnRfaW5fYXJyYXksICJh
c3NlcnRfaW5fYXJyYXkiKTsKIAorICAgIC8vIFRoaXMgZnVuY3Rpb24gd2FzIGRlcHJlY2F0ZWQg
aW4gSnVseSBvZiAyMDE1LgorICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRm
b3JtLXRlc3RzL3dwdC9pc3N1ZXMvMjAzMwogICAgIGZ1bmN0aW9uIGFzc2VydF9vYmplY3RfZXF1
YWxzKGFjdHVhbCwgZXhwZWN0ZWQsIGRlc2NyaXB0aW9uKQogICAgIHsKICAgICAgICAgIGFzc2Vy
dCh0eXBlb2YgYWN0dWFsID09PSAib2JqZWN0IiAmJiBhY3R1YWwgIT09IG51bGwsICJhc3NlcnRf
b2JqZWN0X2VxdWFscyIsIGRlc2NyaXB0aW9uLApAQCAtMTA3MCw3ICsxMjk0LDcgQEAgcG9saWNp
ZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQoc2FtZV92YWx1ZShhY3R1YWxbcF0sIGV4cGVj
dGVkW3BdKSwgImFzc2VydF9vYmplY3RfZXF1YWxzIiwgZGVzY3JpcHRpb24sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInByb3BlcnR5ICR7
cH0gZXhwZWN0ZWQgJHtleHBlY3RlZH0gZ290ICR7YWN0dWFsfSIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3A6cCwgZXhwZWN0ZWQ6ZXhw
ZWN0ZWQsIGFjdHVhbDphY3R1YWx9KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB7cDpwLCBleHBlY3RlZDpleHBlY3RlZFtwXSwgYWN0dWFs
OmFjdHVhbFtwXX0pOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgIGZvciAocCBpbiBleHBlY3RlZCkgewpAQCAtMTA4MiwzMiArMTMwNiw2NCBAQCBwb2xp
Y2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgIH0KICAgICAgICAgIGNo
ZWNrX2VxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIFtdKTsKICAgICB9Ci0gICAgZXhwb3NlKGFzc2Vy
dF9vYmplY3RfZXF1YWxzLCAiYXNzZXJ0X29iamVjdF9lcXVhbHMiKTsKKyAgICBleHBvc2VfYXNz
ZXJ0KGFzc2VydF9vYmplY3RfZXF1YWxzLCAiYXNzZXJ0X29iamVjdF9lcXVhbHMiKTsKIAogICAg
IGZ1bmN0aW9uIGFzc2VydF9hcnJheV9lcXVhbHMoYWN0dWFsLCBleHBlY3RlZCwgZGVzY3JpcHRp
b24pCiAgICAgeworICAgICAgICBjb25zdCBtYXhfYXJyYXlfbGVuZ3RoID0gMjA7CisgICAgICAg
IGZ1bmN0aW9uIHNob3J0ZW5fYXJyYXkoYXJyLCBvZmZzZXQgPSAwKSB7CisgICAgICAgICAgICAv
LyBNYWtlICIsIOKApiIgb25seSBzaG93IHVwIHdoZW4gaXQgd291bGQgbGlrZWx5IHJlZHVjZSB0
aGUgbGVuZ3RoLCBub3QgYWNjb3VudGluZyBmb3IKKyAgICAgICAgICAgIC8vIGZvbnRzLgorICAg
ICAgICAgICAgaWYgKGFyci5sZW5ndGggPCBtYXhfYXJyYXlfbGVuZ3RoICsgMikgeworICAgICAg
ICAgICAgICAgIHJldHVybiBhcnI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBCeSBk
ZWZhdWx0IHdlIHdhbnQgaGFsZiB0aGUgZWxlbWVudHMgYWZ0ZXIgdGhlIG9mZnNldCBhbmQgaGFs
ZiBiZWZvcmUKKyAgICAgICAgICAgIC8vIEJ1dCBpZiB0aGF0IHRha2VzIHVzIHBhc3QgdGhlIGVu
ZCBvZiB0aGUgYXJyYXksIHdlIGhhdmUgbW9yZSBiZWZvcmUsIGFuZAorICAgICAgICAgICAgLy8g
aWYgaXQgdGFrZXMgdXMgYmVmb3JlIHRoZSBzdGFydCB3ZSBoYXZlIG1vcmUgYWZ0ZXIuCisgICAg
ICAgICAgICBjb25zdCBsZW5ndGhfYWZ0ZXJfb2Zmc2V0ID0gTWF0aC5mbG9vcihtYXhfYXJyYXlf
bGVuZ3RoIC8gMik7CisgICAgICAgICAgICBsZXQgdXBwZXJfYm91bmQgPSBNYXRoLm1pbihsZW5n
dGhfYWZ0ZXJfb2Zmc2V0ICsgb2Zmc2V0LCBhcnIubGVuZ3RoKTsKKyAgICAgICAgICAgIGNvbnN0
IGxvd2VyX2JvdW5kID0gTWF0aC5tYXgodXBwZXJfYm91bmQgLSBtYXhfYXJyYXlfbGVuZ3RoLCAw
KTsKKworICAgICAgICAgICAgaWYgKGxvd2VyX2JvdW5kID09PSAwKSB7CisgICAgICAgICAgICAg
ICAgdXBwZXJfYm91bmQgPSBtYXhfYXJyYXlfbGVuZ3RoOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBjb25zdCBvdXRwdXQgPSBhcnIuc2xpY2UobG93ZXJfYm91bmQsIHVwcGVyX2JvdW5k
KTsKKyAgICAgICAgICAgIGlmIChsb3dlcl9ib3VuZCA+IDApIHsKKyAgICAgICAgICAgICAgICBv
dXRwdXQuYmVnaW5FbGxpcHNpcyA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBp
ZiAodXBwZXJfYm91bmQgPCBhcnIubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgb3V0cHV0LmVu
ZEVsbGlwc2lzID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBvdXRw
dXQ7CisgICAgICAgIH0KKwogICAgICAgICBhc3NlcnQodHlwZW9mIGFjdHVhbCA9PT0gIm9iamVj
dCIgJiYgYWN0dWFsICE9PSBudWxsICYmICJsZW5ndGgiIGluIGFjdHVhbCwKICAgICAgICAgICAg
ICAgICJhc3NlcnRfYXJyYXlfZXF1YWxzIiwgZGVzY3JpcHRpb24sCiAgICAgICAgICAgICAgICAi
dmFsdWUgaXMgJHthY3R1YWx9LCBleHBlY3RlZCBhcnJheSIsCiAgICAgICAgICAgICAgICB7YWN0
dWFsOmFjdHVhbH0pOwogICAgICAgICBhc3NlcnQoYWN0dWFsLmxlbmd0aCA9PT0gZXhwZWN0ZWQu
bGVuZ3RoLAogICAgICAgICAgICAgICAgImFzc2VydF9hcnJheV9lcXVhbHMiLCBkZXNjcmlwdGlv
biwKLSAgICAgICAgICAgICAgICJsZW5ndGhzIGRpZmZlciwgZXhwZWN0ZWQgJHtleHBlY3RlZH0g
Z290ICR7YWN0dWFsfSIsCi0gICAgICAgICAgICAgICB7ZXhwZWN0ZWQ6ZXhwZWN0ZWQubGVuZ3Ro
LCBhY3R1YWw6YWN0dWFsLmxlbmd0aH0pOworICAgICAgICAgICAgICAgImxlbmd0aHMgZGlmZmVy
LCBleHBlY3RlZCBhcnJheSAke2V4cGVjdGVkfSBsZW5ndGggJHtleHBlY3RlZExlbmd0aH0sIGdv
dCAke2FjdHVhbH0gbGVuZ3RoICR7YWN0dWFsTGVuZ3RofSIsCisgICAgICAgICAgICAgICB7ZXhw
ZWN0ZWQ6c2hvcnRlbl9hcnJheShleHBlY3RlZCwgZXhwZWN0ZWQubGVuZ3RoIC0gMSksIGV4cGVj
dGVkTGVuZ3RoOmV4cGVjdGVkLmxlbmd0aCwKKyAgICAgICAgICAgICAgICBhY3R1YWw6c2hvcnRl
bl9hcnJheShhY3R1YWwsIGFjdHVhbC5sZW5ndGggLSAxKSwgYWN0dWFsTGVuZ3RoOmFjdHVhbC5s
ZW5ndGgKKyAgICAgICAgICAgICAgIH0pOwogCiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
YWN0dWFsLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICBhc3NlcnQoYWN0dWFsLmhhc093blBy
b3BlcnR5KGkpID09PSBleHBlY3RlZC5oYXNPd25Qcm9wZXJ0eShpKSwKICAgICAgICAgICAgICAg
ICAgICAiYXNzZXJ0X2FycmF5X2VxdWFscyIsIGRlc2NyaXB0aW9uLAotICAgICAgICAgICAgICAg
ICAgICJwcm9wZXJ0eSAke2l9LCBwcm9wZXJ0eSBleHBlY3RlZCB0byBiZSAke2V4cGVjdGVkfSBi
dXQgd2FzICR7YWN0dWFsfSIsCisgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIHByb3BlcnR5
ICR7aX0gdG8gYmUgJHtleHBlY3RlZH0gYnV0IHdhcyAke2FjdHVhbH0gKGV4cGVjdGVkIGFycmF5
ICR7YXJyYXlFeHBlY3RlZH0gZ290ICR7YXJyYXlBY3R1YWx9KSIsCiAgICAgICAgICAgICAgICAg
ICAge2k6aSwgZXhwZWN0ZWQ6ZXhwZWN0ZWQuaGFzT3duUHJvcGVydHkoaSkgPyAicHJlc2VudCIg
OiAibWlzc2luZyIsCi0gICAgICAgICAgICAgICAgICAgYWN0dWFsOmFjdHVhbC5oYXNPd25Qcm9w
ZXJ0eShpKSA/ICJwcmVzZW50IiA6ICJtaXNzaW5nIn0pOworICAgICAgICAgICAgICAgICAgICBh
Y3R1YWw6YWN0dWFsLmhhc093blByb3BlcnR5KGkpID8gInByZXNlbnQiIDogIm1pc3NpbmciLAor
ICAgICAgICAgICAgICAgICAgICBhcnJheUV4cGVjdGVkOnNob3J0ZW5fYXJyYXkoZXhwZWN0ZWQs
IGkpLCBhcnJheUFjdHVhbDpzaG9ydGVuX2FycmF5KGFjdHVhbCwgaSl9KTsKICAgICAgICAgICAg
IGFzc2VydChzYW1lX3ZhbHVlKGV4cGVjdGVkW2ldLCBhY3R1YWxbaV0pLAogICAgICAgICAgICAg
ICAgICAgICJhc3NlcnRfYXJyYXlfZXF1YWxzIiwgZGVzY3JpcHRpb24sCi0gICAgICAgICAgICAg
ICAgICAgInByb3BlcnR5ICR7aX0sIGV4cGVjdGVkICR7ZXhwZWN0ZWR9IGJ1dCBnb3QgJHthY3R1
YWx9IiwKLSAgICAgICAgICAgICAgICAgICB7aTppLCBleHBlY3RlZDpleHBlY3RlZFtpXSwgYWN0
dWFsOmFjdHVhbFtpXX0pOworICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCBwcm9wZXJ0eSAk
e2l9IHRvIGJlICR7ZXhwZWN0ZWR9IGJ1dCBnb3QgJHthY3R1YWx9IChleHBlY3RlZCBhcnJheSAk
e2FycmF5RXhwZWN0ZWR9IGdvdCAke2FycmF5QWN0dWFsfSkiLAorICAgICAgICAgICAgICAgICAg
IHtpOmksIGV4cGVjdGVkOmV4cGVjdGVkW2ldLCBhY3R1YWw6YWN0dWFsW2ldLAorICAgICAgICAg
ICAgICAgICAgICBhcnJheUV4cGVjdGVkOnNob3J0ZW5fYXJyYXkoZXhwZWN0ZWQsIGkpLCBhcnJh
eUFjdHVhbDpzaG9ydGVuX2FycmF5KGFjdHVhbCwgaSl9KTsKICAgICAgICAgfQogICAgIH0KLSAg
ICBleHBvc2UoYXNzZXJ0X2FycmF5X2VxdWFscywgImFzc2VydF9hcnJheV9lcXVhbHMiKTsKKyAg
ICBleHBvc2VfYXNzZXJ0KGFzc2VydF9hcnJheV9lcXVhbHMsICJhc3NlcnRfYXJyYXlfZXF1YWxz
Iik7CiAKICAgICBmdW5jdGlvbiBhc3NlcnRfYXJyYXlfYXBwcm94X2VxdWFscyhhY3R1YWwsIGV4
cGVjdGVkLCBlcHNpbG9uLCBkZXNjcmlwdGlvbikKICAgICB7CkBAIC0xMTI0LDcgKzEzODAsNyBA
QCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgICAgICAgICAg
ICAiYXNzZXJ0X2FycmF5X2FwcHJveF9lcXVhbHMiLCBkZXNjcmlwdGlvbiwKICAgICAgICAgICAg
ICAgICAgICAicHJvcGVydHkgJHtpfSwgcHJvcGVydHkgZXhwZWN0ZWQgdG8gYmUgJHtleHBlY3Rl
ZH0gYnV0IHdhcyAke2FjdHVhbH0iLAogICAgICAgICAgICAgICAgICAgIHtpOmksIGV4cGVjdGVk
OmV4cGVjdGVkLmhhc093blByb3BlcnR5KGkpID8gInByZXNlbnQiIDogIm1pc3NpbmciLAotICAg
ICAgICAgICAgICAgICAgIGFjdHVhbDphY3R1YWwuaGFzT3duUHJvcGVydHkoaSkgPyAicHJlc2Vu
dCIgOiAibWlzc2luZyJ9KTsKKyAgICAgICAgICAgICAgICAgICAgYWN0dWFsOmFjdHVhbC5oYXNP
d25Qcm9wZXJ0eShpKSA/ICJwcmVzZW50IiA6ICJtaXNzaW5nIn0pOwogICAgICAgICAgICAgYXNz
ZXJ0KHR5cGVvZiBhY3R1YWxbaV0gPT09ICJudW1iZXIiLAogICAgICAgICAgICAgICAgICAgICJh
c3NlcnRfYXJyYXlfYXBwcm94X2VxdWFscyIsIGRlc2NyaXB0aW9uLAogICAgICAgICAgICAgICAg
ICAgICJwcm9wZXJ0eSAke2l9LCBleHBlY3RlZCBhIG51bWJlciBidXQgZ290IGEgJHt0eXBlX2Fj
dHVhbH0iLApAQCAtMTEzNSw3ICsxMzkxLDcgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBm
b3JtcyBbM10uCiAgICAgICAgICAgICAgICAgICAge2k6aSwgZXhwZWN0ZWQ6ZXhwZWN0ZWRbaV0s
IGFjdHVhbDphY3R1YWxbaV0sIGVwc2lsb246ZXBzaWxvbn0pOwogICAgICAgICB9CiAgICAgfQot
ICAgIGV4cG9zZShhc3NlcnRfYXJyYXlfYXBwcm94X2VxdWFscywgImFzc2VydF9hcnJheV9hcHBy
b3hfZXF1YWxzIik7CisgICAgZXhwb3NlX2Fzc2VydChhc3NlcnRfYXJyYXlfYXBwcm94X2VxdWFs
cywgImFzc2VydF9hcnJheV9hcHByb3hfZXF1YWxzIik7CiAKICAgICBmdW5jdGlvbiBhc3NlcnRf
YXBwcm94X2VxdWFscyhhY3R1YWwsIGV4cGVjdGVkLCBlcHNpbG9uLCBkZXNjcmlwdGlvbikKICAg
ICB7CkBAIC0xMTQ3LDEyICsxNDAzLDE4IEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9y
bXMgWzNdLgogICAgICAgICAgICAgICAgImV4cGVjdGVkIGEgbnVtYmVyIGJ1dCBnb3QgYSAke3R5
cGVfYWN0dWFsfSIsCiAgICAgICAgICAgICAgICB7dHlwZV9hY3R1YWw6dHlwZW9mIGFjdHVhbH0p
OwogCi0gICAgICAgIGFzc2VydChNYXRoLmFicyhhY3R1YWwgLSBleHBlY3RlZCkgPD0gZXBzaWxv
biwKLSAgICAgICAgICAgICAgICJhc3NlcnRfYXBwcm94X2VxdWFscyIsIGRlc2NyaXB0aW9uLAot
ICAgICAgICAgICAgICAgImV4cGVjdGVkICR7ZXhwZWN0ZWR9ICsvLSAke2Vwc2lsb259IGJ1dCBn
b3QgJHthY3R1YWx9IiwKLSAgICAgICAgICAgICAgIHtleHBlY3RlZDpleHBlY3RlZCwgYWN0dWFs
OmFjdHVhbCwgZXBzaWxvbjplcHNpbG9ufSk7CisgICAgICAgIC8vIFRoZSBlcHNpbG9uIG1hdGgg
YmVsb3cgZG9lcyBub3QgcGxhY2UgbmljZSB3aXRoIE5hTiBhbmQgSW5maW5pdHkKKyAgICAgICAg
Ly8gQnV0IGluIHRoaXMgY2FzZSBJbmZpbml0eSA9IEluZmluaXR5IGFuZCBOYU4gPSBOYU4KKyAg
ICAgICAgaWYgKGlzRmluaXRlKGFjdHVhbCkgfHwgaXNGaW5pdGUoZXhwZWN0ZWQpKSB7CisgICAg
ICAgICAgICBhc3NlcnQoTWF0aC5hYnMoYWN0dWFsIC0gZXhwZWN0ZWQpIDw9IGVwc2lsb24sCisg
ICAgICAgICAgICAgICAgICAgImFzc2VydF9hcHByb3hfZXF1YWxzIiwgZGVzY3JpcHRpb24sCisg
ICAgICAgICAgICAgICAgICAgImV4cGVjdGVkICR7ZXhwZWN0ZWR9ICsvLSAke2Vwc2lsb259IGJ1
dCBnb3QgJHthY3R1YWx9IiwKKyAgICAgICAgICAgICAgICAgICB7ZXhwZWN0ZWQ6ZXhwZWN0ZWQs
IGFjdHVhbDphY3R1YWwsIGVwc2lsb246ZXBzaWxvbn0pOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgYXNzZXJ0X2VxdWFscyhhY3R1YWwsIGV4cGVjdGVkKTsKKyAgICAgICAgfQogICAg
IH0KLSAgICBleHBvc2UoYXNzZXJ0X2FwcHJveF9lcXVhbHMsICJhc3NlcnRfYXBwcm94X2VxdWFs
cyIpOworICAgIGV4cG9zZV9hc3NlcnQoYXNzZXJ0X2FwcHJveF9lcXVhbHMsICJhc3NlcnRfYXBw
cm94X2VxdWFscyIpOwogCiAgICAgZnVuY3Rpb24gYXNzZXJ0X2xlc3NfdGhhbihhY3R1YWwsIGV4
cGVjdGVkLCBkZXNjcmlwdGlvbikKICAgICB7CkBAIC0xMTY5LDcgKzE0MzEsNyBAQCBwb2xpY2ll
cyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgICAgICAgICJleHBlY3RlZCBh
IG51bWJlciBsZXNzIHRoYW4gJHtleHBlY3RlZH0gYnV0IGdvdCAke2FjdHVhbH0iLAogICAgICAg
ICAgICAgICAge2V4cGVjdGVkOmV4cGVjdGVkLCBhY3R1YWw6YWN0dWFsfSk7CiAgICAgfQotICAg
IGV4cG9zZShhc3NlcnRfbGVzc190aGFuLCAiYXNzZXJ0X2xlc3NfdGhhbiIpOworICAgIGV4cG9z
ZV9hc3NlcnQoYXNzZXJ0X2xlc3NfdGhhbiwgImFzc2VydF9sZXNzX3RoYW4iKTsKIAogICAgIGZ1
bmN0aW9uIGFzc2VydF9ncmVhdGVyX3RoYW4oYWN0dWFsLCBleHBlY3RlZCwgZGVzY3JpcHRpb24p
CiAgICAgewpAQCAtMTE4Niw3ICsxNDQ4LDcgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBm
b3JtcyBbM10uCiAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgYSBudW1iZXIgZ3JlYXRlciB0aGFu
ICR7ZXhwZWN0ZWR9IGJ1dCBnb3QgJHthY3R1YWx9IiwKICAgICAgICAgICAgICAgIHtleHBlY3Rl
ZDpleHBlY3RlZCwgYWN0dWFsOmFjdHVhbH0pOwogICAgIH0KLSAgICBleHBvc2UoYXNzZXJ0X2dy
ZWF0ZXJfdGhhbiwgImFzc2VydF9ncmVhdGVyX3RoYW4iKTsKKyAgICBleHBvc2VfYXNzZXJ0KGFz
c2VydF9ncmVhdGVyX3RoYW4sICJhc3NlcnRfZ3JlYXRlcl90aGFuIik7CiAKICAgICBmdW5jdGlv
biBhc3NlcnRfYmV0d2Vlbl9leGNsdXNpdmUoYWN0dWFsLCBsb3dlciwgdXBwZXIsIGRlc2NyaXB0
aW9uKQogICAgIHsKQEAgLTEyMDQsNyArMTQ2Niw3IEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRp
b24gZm9ybXMgWzNdLgogICAgICAgICAgICAgICAgImFuZCBsZXNzIHRoYW4gJHt1cHBlcn0gYnV0
IGdvdCAke2FjdHVhbH0iLAogICAgICAgICAgICAgICAge2xvd2VyOmxvd2VyLCB1cHBlcjp1cHBl
ciwgYWN0dWFsOmFjdHVhbH0pOwogICAgIH0KLSAgICBleHBvc2UoYXNzZXJ0X2JldHdlZW5fZXhj
bHVzaXZlLCAiYXNzZXJ0X2JldHdlZW5fZXhjbHVzaXZlIik7CisgICAgZXhwb3NlX2Fzc2VydChh
c3NlcnRfYmV0d2Vlbl9leGNsdXNpdmUsICJhc3NlcnRfYmV0d2Vlbl9leGNsdXNpdmUiKTsKIAog
ICAgIGZ1bmN0aW9uIGFzc2VydF9sZXNzX3RoYW5fZXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgZGVz
Y3JpcHRpb24pCiAgICAgewpAQCAtMTIyMSw3ICsxNDgzLDcgQEAgcG9saWNpZXMgYW5kIGNvbnRy
aWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgYSBudW1iZXIgbGVz
cyB0aGFuIG9yIGVxdWFsIHRvICR7ZXhwZWN0ZWR9IGJ1dCBnb3QgJHthY3R1YWx9IiwKICAgICAg
ICAgICAgICAgIHtleHBlY3RlZDpleHBlY3RlZCwgYWN0dWFsOmFjdHVhbH0pOwogICAgIH0KLSAg
ICBleHBvc2UoYXNzZXJ0X2xlc3NfdGhhbl9lcXVhbCwgImFzc2VydF9sZXNzX3RoYW5fZXF1YWwi
KTsKKyAgICBleHBvc2VfYXNzZXJ0KGFzc2VydF9sZXNzX3RoYW5fZXF1YWwsICJhc3NlcnRfbGVz
c190aGFuX2VxdWFsIik7CiAKICAgICBmdW5jdGlvbiBhc3NlcnRfZ3JlYXRlcl90aGFuX2VxdWFs
KGFjdHVhbCwgZXhwZWN0ZWQsIGRlc2NyaXB0aW9uKQogICAgIHsKQEAgLTEyMzgsNyArMTUwMCw3
IEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAgICAgICAgICAg
ImV4cGVjdGVkIGEgbnVtYmVyIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAke2V4cGVjdGVkfSBi
dXQgZ290ICR7YWN0dWFsfSIsCiAgICAgICAgICAgICAgICB7ZXhwZWN0ZWQ6ZXhwZWN0ZWQsIGFj
dHVhbDphY3R1YWx9KTsKICAgICB9Ci0gICAgZXhwb3NlKGFzc2VydF9ncmVhdGVyX3RoYW5fZXF1
YWwsICJhc3NlcnRfZ3JlYXRlcl90aGFuX2VxdWFsIik7CisgICAgZXhwb3NlX2Fzc2VydChhc3Nl
cnRfZ3JlYXRlcl90aGFuX2VxdWFsLCAiYXNzZXJ0X2dyZWF0ZXJfdGhhbl9lcXVhbCIpOwogCiAg
ICAgZnVuY3Rpb24gYXNzZXJ0X2JldHdlZW5faW5jbHVzaXZlKGFjdHVhbCwgbG93ZXIsIHVwcGVy
LCBkZXNjcmlwdGlvbikKICAgICB7CkBAIC0xMjU2LDcgKzE1MTgsNyBAQCBwb2xpY2llcyBhbmQg
Y29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgICAgICAgICJhbmQgbGVzcyB0aGFuIG9y
IGVxdWFsIHRvICR7dXBwZXJ9IGJ1dCBnb3QgJHthY3R1YWx9IiwKICAgICAgICAgICAgICAgIHts
b3dlcjpsb3dlciwgdXBwZXI6dXBwZXIsIGFjdHVhbDphY3R1YWx9KTsKICAgICB9Ci0gICAgZXhw
b3NlKGFzc2VydF9iZXR3ZWVuX2luY2x1c2l2ZSwgImFzc2VydF9iZXR3ZWVuX2luY2x1c2l2ZSIp
OworICAgIGV4cG9zZV9hc3NlcnQoYXNzZXJ0X2JldHdlZW5faW5jbHVzaXZlLCAiYXNzZXJ0X2Jl
dHdlZW5faW5jbHVzaXZlIik7CiAKICAgICBmdW5jdGlvbiBhc3NlcnRfcmVnZXhwX21hdGNoKGFj
dHVhbCwgZXhwZWN0ZWQsIGRlc2NyaXB0aW9uKSB7CiAgICAgICAgIC8qCkBAIC0xMjY3LDMzICsx
NTI5LDM4IEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAgICAg
ICAgICAgImV4cGVjdGVkICR7ZXhwZWN0ZWR9IGJ1dCBnb3QgJHthY3R1YWx9IiwKICAgICAgICAg
ICAgICAgIHtleHBlY3RlZDpleHBlY3RlZCwgYWN0dWFsOmFjdHVhbH0pOwogICAgIH0KLSAgICBl
eHBvc2UoYXNzZXJ0X3JlZ2V4cF9tYXRjaCwgImFzc2VydF9yZWdleHBfbWF0Y2giKTsKKyAgICBl
eHBvc2VfYXNzZXJ0KGFzc2VydF9yZWdleHBfbWF0Y2gsICJhc3NlcnRfcmVnZXhwX21hdGNoIik7
CiAKICAgICBmdW5jdGlvbiBhc3NlcnRfY2xhc3Nfc3RyaW5nKG9iamVjdCwgY2xhc3Nfc3RyaW5n
LCBkZXNjcmlwdGlvbikgewotICAgICAgICBhc3NlcnRfZXF1YWxzKHt9LnRvU3RyaW5nLmNhbGwo
b2JqZWN0KSwgIltvYmplY3QgIiArIGNsYXNzX3N0cmluZyArICJdIiwKLSAgICAgICAgICAgICAg
ICAgICAgICBkZXNjcmlwdGlvbik7CisgICAgICAgIHZhciBhY3R1YWwgPSB7fS50b1N0cmluZy5j
YWxsKG9iamVjdCk7CisgICAgICAgIHZhciBleHBlY3RlZCA9ICJbb2JqZWN0ICIgKyBjbGFzc19z
dHJpbmcgKyAiXSI7CisgICAgICAgIGFzc2VydChzYW1lX3ZhbHVlKGFjdHVhbCwgZXhwZWN0ZWQp
LCAiYXNzZXJ0X2NsYXNzX3N0cmluZyIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkICR7ZXhwZWN0ZWR9IGJ1dCBnb3Qg
JHthY3R1YWx9IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHtleHBlY3RlZDpleHBlY3RlZCwgYWN0dWFsOmFjdHVhbH0pOwogICAgIH0KLSAgICBleHBvc2Uo
YXNzZXJ0X2NsYXNzX3N0cmluZywgImFzc2VydF9jbGFzc19zdHJpbmciKTsKLQorICAgIGV4cG9z
ZV9hc3NlcnQoYXNzZXJ0X2NsYXNzX3N0cmluZywgImFzc2VydF9jbGFzc19zdHJpbmciKTsKIAog
ICAgIGZ1bmN0aW9uIGFzc2VydF9vd25fcHJvcGVydHkob2JqZWN0LCBwcm9wZXJ0eV9uYW1lLCBk
ZXNjcmlwdGlvbikgewogICAgICAgICBhc3NlcnQob2JqZWN0Lmhhc093blByb3BlcnR5KHByb3Bl
cnR5X25hbWUpLAogICAgICAgICAgICAgICAgImFzc2VydF9vd25fcHJvcGVydHkiLCBkZXNjcmlw
dGlvbiwKICAgICAgICAgICAgICAgICJleHBlY3RlZCBwcm9wZXJ0eSAke3B9IG1pc3NpbmciLCB7
cDpwcm9wZXJ0eV9uYW1lfSk7CiAgICAgfQotICAgIGV4cG9zZShhc3NlcnRfb3duX3Byb3BlcnR5
LCAiYXNzZXJ0X293bl9wcm9wZXJ0eSIpOworICAgIGV4cG9zZV9hc3NlcnQoYXNzZXJ0X293bl9w
cm9wZXJ0eSwgImFzc2VydF9vd25fcHJvcGVydHkiKTsKIAogICAgIGZ1bmN0aW9uIGFzc2VydF9u
b3Rfb3duX3Byb3BlcnR5KG9iamVjdCwgcHJvcGVydHlfbmFtZSwgZGVzY3JpcHRpb24pIHsKICAg
ICAgICAgYXNzZXJ0KCFvYmplY3QuaGFzT3duUHJvcGVydHkocHJvcGVydHlfbmFtZSksCiAgICAg
ICAgICAgICAgICAiYXNzZXJ0X25vdF9vd25fcHJvcGVydHkiLCBkZXNjcmlwdGlvbiwKICAgICAg
ICAgICAgICAgICJ1bmV4cGVjdGVkIHByb3BlcnR5ICR7cH0gaXMgZm91bmQgb24gb2JqZWN0Iiwg
e3A6cHJvcGVydHlfbmFtZX0pOwogICAgIH0KLSAgICBleHBvc2UoYXNzZXJ0X25vdF9vd25fcHJv
cGVydHksICJhc3NlcnRfbm90X293bl9wcm9wZXJ0eSIpOworICAgIGV4cG9zZV9hc3NlcnQoYXNz
ZXJ0X25vdF9vd25fcHJvcGVydHksICJhc3NlcnRfbm90X293bl9wcm9wZXJ0eSIpOwogCiAgICAg
ZnVuY3Rpb24gX2Fzc2VydF9pbmhlcml0cyhuYW1lKSB7CiAgICAgICAgIHJldHVybiBmdW5jdGlv
biAob2JqZWN0LCBwcm9wZXJ0eV9uYW1lLCBkZXNjcmlwdGlvbikKICAgICAgICAgewotICAgICAg
ICAgICAgYXNzZXJ0KHR5cGVvZiBvYmplY3QgPT09ICJvYmplY3QiIHx8IHR5cGVvZiBvYmplY3Qg
PT09ICJmdW5jdGlvbiIsCisgICAgICAgICAgICBhc3NlcnQoKHR5cGVvZiBvYmplY3QgPT09ICJv
YmplY3QiICYmIG9iamVjdCAhPT0gbnVsbCkgfHwKKyAgICAgICAgICAgICAgICAgICB0eXBlb2Yg
b2JqZWN0ID09PSAiZnVuY3Rpb24iIHx8CisgICAgICAgICAgICAgICAgICAgLy8gT3IgaGFzIFtb
SXNIVE1MRERBXV0gc2xvdAorICAgICAgICAgICAgICAgICAgIFN0cmluZyhvYmplY3QpID09PSAi
W29iamVjdCBIVE1MQWxsQ29sbGVjdGlvbl0iLAogICAgICAgICAgICAgICAgICAgIG5hbWUsIGRl
c2NyaXB0aW9uLAogICAgICAgICAgICAgICAgICAgICJwcm92aWRlZCB2YWx1ZSBpcyBub3QgYW4g
b2JqZWN0Iik7CiAKQEAgLTEzMTIsOCArMTU3OSw4IEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRp
b24gZm9ybXMgWzNdLgogICAgICAgICAgICAgICAgICAgIHtwOnByb3BlcnR5X25hbWV9KTsKICAg
ICAgICAgfTsKICAgICB9Ci0gICAgZXhwb3NlKF9hc3NlcnRfaW5oZXJpdHMoImFzc2VydF9pbmhl
cml0cyIpLCAiYXNzZXJ0X2luaGVyaXRzIik7Ci0gICAgZXhwb3NlKF9hc3NlcnRfaW5oZXJpdHMo
ImFzc2VydF9pZGxfYXR0cmlidXRlIiksICJhc3NlcnRfaWRsX2F0dHJpYnV0ZSIpOworICAgIGV4
cG9zZV9hc3NlcnQoX2Fzc2VydF9pbmhlcml0cygiYXNzZXJ0X2luaGVyaXRzIiksICJhc3NlcnRf
aW5oZXJpdHMiKTsKKyAgICBleHBvc2VfYXNzZXJ0KF9hc3NlcnRfaW5oZXJpdHMoImFzc2VydF9p
ZGxfYXR0cmlidXRlIiksICJhc3NlcnRfaWRsX2F0dHJpYnV0ZSIpOwogCiAgICAgZnVuY3Rpb24g
YXNzZXJ0X3JlYWRvbmx5KG9iamVjdCwgcHJvcGVydHlfbmFtZSwgZGVzY3JpcHRpb24pCiAgICAg
ewpAQCAtMTMzMCw1MCArMTU5NywxNTYgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3Jt
cyBbM10uCiAgICAgICAgICAgICAgb2JqZWN0W3Byb3BlcnR5X25hbWVdID0gaW5pdGlhbF92YWx1
ZTsKICAgICAgICAgIH0KICAgICB9Ci0gICAgZXhwb3NlKGFzc2VydF9yZWFkb25seSwgImFzc2Vy
dF9yZWFkb25seSIpOworICAgIGV4cG9zZV9hc3NlcnQoYXNzZXJ0X3JlYWRvbmx5LCAiYXNzZXJ0
X3JlYWRvbmx5Iik7CiAKICAgICAvKioKLSAgICAgKiBBc3NlcnQgYW4gRXhjZXB0aW9uIHdpdGgg
dGhlIGV4cGVjdGVkIGNvZGUgaXMgdGhyb3duLgorICAgICAqIEFzc2VydCBhIEpTIEVycm9yIHdp
dGggdGhlIGV4cGVjdGVkIGNvbnN0cnVjdG9yIGlzIHRocm93bi4KICAgICAgKgotICAgICAqIEBw
YXJhbSB7b2JqZWN0fG51bWJlcnxzdHJpbmd9IGNvZGUgVGhlIGV4cGVjdGVkIGV4Y2VwdGlvbiBj
b2RlLgorICAgICAqIEBwYXJhbSB7b2JqZWN0fSBjb25zdHJ1Y3RvciBUaGUgZXhwZWN0ZWQgZXhj
ZXB0aW9uIGNvbnN0cnVjdG9yLgogICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgRnVuY3Rp
b24gd2hpY2ggc2hvdWxkIHRocm93LgogICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjcmlwdGlv
biBFcnJvciBkZXNjcmlwdGlvbiBmb3IgdGhlIGNhc2UgdGhhdCB0aGUgZXJyb3IgaXMgbm90IHRo
cm93bi4KICAgICAgKi8KLSAgICBmdW5jdGlvbiBhc3NlcnRfdGhyb3dzKGNvZGUsIGZ1bmMsIGRl
c2NyaXB0aW9uKQorICAgIGZ1bmN0aW9uIGFzc2VydF90aHJvd3NfanMoY29uc3RydWN0b3IsIGZ1
bmMsIGRlc2NyaXB0aW9uKQorICAgIHsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19qc19pbXBsKGNv
bnN0cnVjdG9yLCBmdW5jLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJhc3NlcnRfdGhyb3dzX2pzIik7CisgICAgfQorICAgIGV4cG9zZV9hc3NlcnQoYXNzZXJ0
X3Rocm93c19qcywgImFzc2VydF90aHJvd3NfanMiKTsKKworICAgIC8qKgorICAgICAqIExpa2Ug
YXNzZXJ0X3Rocm93c19qcyBidXQgYWxsb3dzIHNwZWNpZnlpbmcgdGhlIGFzc2VydGlvbiB0eXBl
CisgICAgICogKGFzc2VydF90aHJvd3NfanMgb3IgcHJvbWlzZV9yZWplY3RzX2pzLCBpbiBwcmFj
dGljZSkuCisgICAgICovCisgICAgZnVuY3Rpb24gYXNzZXJ0X3Rocm93c19qc19pbXBsKGNvbnN0
cnVjdG9yLCBmdW5jLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYXNzZXJ0aW9uX3R5cGUpCiAgICAgewogICAgICAgICB0cnkgewogICAgICAgICAgICAg
ZnVuYy5jYWxsKHRoaXMpOwotICAgICAgICAgICAgYXNzZXJ0KGZhbHNlLCAiYXNzZXJ0X3Rocm93
cyIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgYXNzZXJ0KGZhbHNlLCBhc3NlcnRpb25fdHlw
ZSwgZGVzY3JpcHRpb24sCiAgICAgICAgICAgICAgICAgICAgIiR7ZnVuY30gZGlkIG5vdCB0aHJv
dyIsIHtmdW5jOmZ1bmN9KTsKICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgaWYg
KGUgaW5zdGFuY2VvZiBBc3NlcnRpb25FcnJvcikgewogICAgICAgICAgICAgICAgIHRocm93IGU7
CiAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgIC8vIEJhc2ljIHNhbml0eS1jaGVja3Mgb24g
dGhlIHRocm93biBleGNlcHRpb24uCiAgICAgICAgICAgICBhc3NlcnQodHlwZW9mIGUgPT09ICJv
YmplY3QiLAotICAgICAgICAgICAgICAgICAgICJhc3NlcnRfdGhyb3dzIiwgZGVzY3JpcHRpb24s
CisgICAgICAgICAgICAgICAgICAgYXNzZXJ0aW9uX3R5cGUsIGRlc2NyaXB0aW9uLAogICAgICAg
ICAgICAgICAgICAgICIke2Z1bmN9IHRocmV3ICR7ZX0gd2l0aCB0eXBlICR7dHlwZX0sIG5vdCBh
biBvYmplY3QiLAogICAgICAgICAgICAgICAgICAgIHtmdW5jOmZ1bmMsIGU6ZSwgdHlwZTp0eXBl
b2YgZX0pOwogCiAgICAgICAgICAgICBhc3NlcnQoZSAhPT0gbnVsbCwKLSAgICAgICAgICAgICAg
ICAgICAiYXNzZXJ0X3Rocm93cyIsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAgICAgIGFz
c2VydGlvbl90eXBlLCBkZXNjcmlwdGlvbiwKICAgICAgICAgICAgICAgICAgICAiJHtmdW5jfSB0
aHJldyBudWxsLCBub3QgYW4gb2JqZWN0IiwKICAgICAgICAgICAgICAgICAgICB7ZnVuYzpmdW5j
fSk7CiAKLSAgICAgICAgICAgIGlmIChjb2RlID09PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAg
dGhyb3cgbmV3IEFzc2VydGlvbkVycm9yKCdUZXN0IGJ1ZzogbmVlZCB0byBwYXNzIGV4Y2VwdGlv
biB0byBhc3NlcnRfdGhyb3dzKCknKTsKKyAgICAgICAgICAgIC8vIEJhc2ljIHNhbml0eS1jaGVj
ayBvbiB0aGUgcGFzc2VkLWluIGNvbnN0cnVjdG9yCisgICAgICAgICAgICBhc3NlcnQodHlwZW9m
IGNvbnN0cnVjdG9yID09ICJmdW5jdGlvbiIsCisgICAgICAgICAgICAgICAgICAgYXNzZXJ0aW9u
X3R5cGUsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAgICAgICIke2NvbnN0cnVjdG9yfSBp
cyBub3QgYSBjb25zdHJ1Y3RvciIsCisgICAgICAgICAgICAgICAgICAge2NvbnN0cnVjdG9yOmNv
bnN0cnVjdG9yfSk7CisgICAgICAgICAgICB2YXIgb2JqID0gY29uc3RydWN0b3I7CisgICAgICAg
ICAgICB3aGlsZSAob2JqKSB7CisgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvYmogPT09ICJm
dW5jdGlvbiIgJiYKKyAgICAgICAgICAgICAgICAgICAgb2JqLm5hbWUgPT09ICJFcnJvciIpIHsK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIG9iaiA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmopOwogICAgICAgICAgICAgfQot
ICAgICAgICAgICAgaWYgKHR5cGVvZiBjb2RlID09PSAib2JqZWN0IikgewotICAgICAgICAgICAg
ICAgIGFzc2VydCgibmFtZSIgaW4gZSAmJiBlLm5hbWUgPT0gY29kZS5uYW1lLAotICAgICAgICAg
ICAgICAgICAgICAgICAiYXNzZXJ0X3Rocm93cyIsIGRlc2NyaXB0aW9uLAotICAgICAgICAgICAg
ICAgICAgICAgICAiJHtmdW5jfSB0aHJldyAke2FjdHVhbH0gKCR7YWN0dWFsX25hbWV9KSBleHBl
Y3RlZCAke2V4cGVjdGVkfSAoJHtleHBlY3RlZF9uYW1lfSkiLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAge2Z1bmM6ZnVuYywgYWN0dWFsOmUsIGFjdHVhbF9uYW1lOmUubmFt
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZDpjb2RlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX25hbWU6Y29kZS5u
YW1lfSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgYXNzZXJ0KG9iaiAh
PSBudWxsLAorICAgICAgICAgICAgICAgICAgIGFzc2VydGlvbl90eXBlLCBkZXNjcmlwdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAiJHtjb25zdHJ1Y3Rvcn0gaXMgbm90IGFuIEVycm9yIHN1YnR5
cGUiLAorICAgICAgICAgICAgICAgICAgIHtjb25zdHJ1Y3Rvcjpjb25zdHJ1Y3Rvcn0pOworCisg
ICAgICAgICAgICAvLyBBbmQgY2hlY2tpbmcgdGhhdCBvdXIgZXhjZXB0aW9uIGlzIHJlYXNvbmFi
bGUKKyAgICAgICAgICAgIGFzc2VydChlLmNvbnN0cnVjdG9yID09PSBjb25zdHJ1Y3RvciAmJgor
ICAgICAgICAgICAgICAgICAgIGUubmFtZSA9PT0gY29uc3RydWN0b3IubmFtZSwKKyAgICAgICAg
ICAgICAgICAgICBhc3NlcnRpb25fdHlwZSwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAg
ICAgIiR7ZnVuY30gdGhyZXcgJHthY3R1YWx9ICgke2FjdHVhbF9uYW1lfSkgZXhwZWN0ZWQgaW5z
dGFuY2Ugb2YgJHtleHBlY3RlZH0gKCR7ZXhwZWN0ZWRfbmFtZX0pIiwKKyAgICAgICAgICAgICAg
ICAgICB7ZnVuYzpmdW5jLCBhY3R1YWw6ZSwgYWN0dWFsX25hbWU6ZS5uYW1lLAorICAgICAgICAg
ICAgICAgICAgICBleHBlY3RlZDpjb25zdHJ1Y3RvciwKKyAgICAgICAgICAgICAgICAgICAgZXhw
ZWN0ZWRfbmFtZTpjb25zdHJ1Y3Rvci5uYW1lfSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAv
KioKKyAgICAgKiBBc3NlcnQgYSBET01FeGNlcHRpb24gd2l0aCB0aGUgZXhwZWN0ZWQgdHlwZSBp
cyB0aHJvd24uCisgICAgICoKKyAgICAgKiBAcGFyYW0ge251bWJlcnxzdHJpbmd9IHR5cGUgVGhl
IGV4cGVjdGVkIGV4Y2VwdGlvbiBuYW1lIG9yIGNvZGUuICBTZWUgdGhlCisgICAgICogICAgICAg
IHRhYmxlIG9mIG5hbWVzIGFuZCBjb2RlcyBhdAorICAgICAqICAgICAgICBodHRwczovL2hleWNh
bS5naXRodWIuaW8vd2ViaWRsLyNkZm4tZXJyb3ItbmFtZXMtdGFibGUKKyAgICAgKiAgICAgICAg
SWYgYSBudW1iZXIgaXMgcGFzc2VkIGl0IHNob3VsZCBiZSBvbmUgb2YgdGhlIG51bWVyaWMgY29k
ZSB2YWx1ZXMKKyAgICAgKiAgICAgICAgaW4gdGhhdCB0YWJsZSAoZS5nLiAzLCA0LCBldGMpLiAg
SWYgYSBzdHJpbmcgaXMgcGFzc2VkIGl0IGNhbgorICAgICAqICAgICAgICBlaXRoZXIgYmUgYW4g
ZXhjZXB0aW9uIG5hbWUgKGUuZy4gIkhpZXJhcmNoeVJlcXVlc3RFcnJvciIsCisgICAgICogICAg
ICAgICJXcm9uZ0RvY3VtZW50RXJyb3IiKSBvciB0aGUgbmFtZSBvZiB0aGUgY29ycmVzcG9uZGlu
ZyBlcnJvciBjb2RlCisgICAgICogICAgICAgIChlLmcuICJISUVSQVJDSFlfUkVRVUVTVF9FUlIi
LCAiV1JPTkdfRE9DVU1FTlRfRVJSIikuCisgICAgICoKKyAgICAgKiBGb3IgdGhlIHJlbWFpbmlu
ZyBhcmd1bWVudHMsIHRoZXJlIGFyZSB0d28gd2F5cyBvZiBjYWxsaW5nCisgICAgICogcHJvbWlz
ZV9yZWplY3RzX2RvbToKKyAgICAgKgorICAgICAqIDEpIElmIHRoZSBET01FeGNlcHRpb24gaXMg
ZXhwZWN0ZWQgdG8gY29tZSBmcm9tIHRoZSBjdXJyZW50IGdsb2JhbCwgdGhlCisgICAgICogc2Vj
b25kIGFyZ3VtZW50IHNob3VsZCBiZSB0aGUgZnVuY3Rpb24gZXhwZWN0ZWQgdG8gdGhyb3cgYW5k
IGEgdGhpcmQsCisgICAgICogb3B0aW9uYWwsIGFyZ3VtZW50IGlzIHRoZSBhc3NlcnRpb24gZGVz
Y3JpcHRpb24uCisgICAgICoKKyAgICAgKiAyKSBJZiB0aGUgRE9NRXhjZXB0aW9uIGlzIGV4cGVj
dGVkIHRvIGNvbWUgZnJvbSBzb21lIG90aGVyIGdsb2JhbCwgdGhlCisgICAgICogc2Vjb25kIGFy
Z3VtZW50IHNob3VsZCBiZSB0aGUgRE9NRXhjZXB0aW9uIGNvbnN0cnVjdG9yIGZyb20gdGhhdCBn
bG9iYWwsCisgICAgICogdGhlIHRoaXJkIGFyZ3VtZW50IHRoZSBmdW5jdGlvbiBleHBlY3RlZCB0
byB0aHJvdywgYW5kIHRoZSBmb3VydGgsIG9wdGlvbmFsLAorICAgICAqIGFyZ3VtZW50IHRoZSBh
c3NlcnRpb24gZGVzY3JpcHRpb24uCisgICAgICovCisgICAgZnVuY3Rpb24gYXNzZXJ0X3Rocm93
c19kb20odHlwZSwgZnVuY09yQ29uc3RydWN0b3IsIGRlc2NyaXB0aW9uT3JGdW5jLCBtYXliZURl
c2NyaXB0aW9uKQorICAgIHsKKyAgICAgICAgbGV0IGNvbnN0cnVjdG9yLCBmdW5jLCBkZXNjcmlw
dGlvbjsKKyAgICAgICAgaWYgKGZ1bmNPckNvbnN0cnVjdG9yLm5hbWUgPT09ICJET01FeGNlcHRp
b24iKSB7CisgICAgICAgICAgICBjb25zdHJ1Y3RvciA9IGZ1bmNPckNvbnN0cnVjdG9yOworICAg
ICAgICAgICAgZnVuYyA9IGRlc2NyaXB0aW9uT3JGdW5jOworICAgICAgICAgICAgZGVzY3JpcHRp
b24gPSBtYXliZURlc2NyaXB0aW9uOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgY29u
c3RydWN0b3IgPSBzZWxmLkRPTUV4Y2VwdGlvbjsKKyAgICAgICAgICAgIGZ1bmMgPSBmdW5jT3JD
b25zdHJ1Y3RvcjsKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb25PckZ1bmM7
CisgICAgICAgICAgICBhc3NlcnQobWF5YmVEZXNjcmlwdGlvbiA9PT0gdW5kZWZpbmVkLAorICAg
ICAgICAgICAgICAgICAgICJUb28gbWFueSBhcmdzIHBhc2VkIHRvIG5vLWNvbnN0cnVjdG9yIHZl
cnNpb24gb2YgYXNzZXJ0X3Rocm93c19kb20iKTsKKyAgICAgICAgfQorICAgICAgICBhc3NlcnRf
dGhyb3dzX2RvbV9pbXBsKHR5cGUsIGZ1bmMsIGRlc2NyaXB0aW9uLCAiYXNzZXJ0X3Rocm93c19k
b20iLCBjb25zdHJ1Y3RvcikKKyAgICB9CisgICAgZXhwb3NlX2Fzc2VydChhc3NlcnRfdGhyb3dz
X2RvbSwgImFzc2VydF90aHJvd3NfZG9tIik7CisKKyAgICAvKioKKyAgICAgKiBTaW1pbGFyIHRv
IGFzc2VydF90aHJvd3NfZG9tIGJ1dCBhbGxvd3Mgc3BlY2lmeWluZyB0aGUgYXNzZXJ0aW9uIHR5
cGUKKyAgICAgKiAoYXNzZXJ0X3Rocm93c19kb20gb3IgcHJvbWlzZV9yZWplY3RzX2RvbSwgaW4g
cHJhY3RpY2UpLiAgVGhlCisgICAgICogImNvbnN0cnVjdG9yIiBhcmd1bWVudCBtdXN0IGJlIHRo
ZSBET01FeGNlcHRpb24gY29uc3RydWN0b3IgZnJvbSB0aGUKKyAgICAgKiBnbG9iYWwgd2UgZXhw
ZWN0IHRoZSBleGNlcHRpb24gdG8gY29tZSBmcm9tLgorICAgICAqLworICAgIGZ1bmN0aW9uIGFz
c2VydF90aHJvd3NfZG9tX2ltcGwodHlwZSwgZnVuYywgZGVzY3JpcHRpb24sIGFzc2VydGlvbl90
eXBlLCBjb25zdHJ1Y3RvcikKKyAgICB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBmdW5j
LmNhbGwodGhpcyk7CisgICAgICAgICAgICBhc3NlcnQoZmFsc2UsIGFzc2VydGlvbl90eXBlLCBk
ZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAiJHtmdW5jfSBkaWQgbm90IHRocm93Iiwg
e2Z1bmM6ZnVuY30pOworICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICBpZiAoZSBp
bnN0YW5jZW9mIEFzc2VydGlvbkVycm9yKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgZTsKICAg
ICAgICAgICAgIH0KIAotICAgICAgICAgICAgdmFyIGNvZGVfbmFtZV9tYXAgPSB7CisgICAgICAg
ICAgICAvLyBCYXNpYyBzYW5pdHktY2hlY2tzIG9uIHRoZSB0aHJvd24gZXhjZXB0aW9uLgorICAg
ICAgICAgICAgYXNzZXJ0KHR5cGVvZiBlID09PSAib2JqZWN0IiwKKyAgICAgICAgICAgICAgICAg
ICBhc3NlcnRpb25fdHlwZSwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgIiR7ZnVu
Y30gdGhyZXcgJHtlfSB3aXRoIHR5cGUgJHt0eXBlfSwgbm90IGFuIG9iamVjdCIsCisgICAgICAg
ICAgICAgICAgICAge2Z1bmM6ZnVuYywgZTplLCB0eXBlOnR5cGVvZiBlfSk7CisKKyAgICAgICAg
ICAgIGFzc2VydChlICE9PSBudWxsLAorICAgICAgICAgICAgICAgICAgIGFzc2VydGlvbl90eXBl
LCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAiJHtmdW5jfSB0aHJldyBudWxsLCBu
b3QgYW4gb2JqZWN0IiwKKyAgICAgICAgICAgICAgICAgICB7ZnVuYzpmdW5jfSk7CisKKyAgICAg
ICAgICAgIC8vIFNhbml0eS1jaGVjayBvdXIgdHlwZQorICAgICAgICAgICAgYXNzZXJ0KHR5cGVv
ZiB0eXBlID09ICJudW1iZXIiIHx8CisgICAgICAgICAgICAgICAgICAgdHlwZW9mIHR5cGUgPT0g
InN0cmluZyIsCisgICAgICAgICAgICAgICAgICAgYXNzZXJ0aW9uX3R5cGUsIGRlc2NyaXB0aW9u
LAorICAgICAgICAgICAgICAgICAgICIke3R5cGV9IGlzIG5vdCBhIG51bWJlciBvciBzdHJpbmci
LAorICAgICAgICAgICAgICAgICAgIHt0eXBlOnR5cGV9KTsKKworICAgICAgICAgICAgdmFyIGNv
ZGVuYW1lX25hbWVfbWFwID0gewogICAgICAgICAgICAgICAgIElOREVYX1NJWkVfRVJSOiAnSW5k
ZXhTaXplRXJyb3InLAogICAgICAgICAgICAgICAgIEhJRVJBUkNIWV9SRVFVRVNUX0VSUjogJ0hp
ZXJhcmNoeVJlcXVlc3RFcnJvcicsCiAgICAgICAgICAgICAgICAgV1JPTkdfRE9DVU1FTlRfRVJS
OiAnV3JvbmdEb2N1bWVudEVycm9yJywKQEAgLTEzOTgsOCArMTc3MSw2IEBAIHBvbGljaWVzIGFu
ZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAgICAgICAgICAgIERBVEFfQ0xPTkVfRVJS
OiAnRGF0YUNsb25lRXJyb3InCiAgICAgICAgICAgICB9OwogCi0gICAgICAgICAgICB2YXIgbmFt
ZSA9IGNvZGUgaW4gY29kZV9uYW1lX21hcCA/IGNvZGVfbmFtZV9tYXBbY29kZV0gOiBjb2RlOwot
CiAgICAgICAgICAgICB2YXIgbmFtZV9jb2RlX21hcCA9IHsKICAgICAgICAgICAgICAgICBJbmRl
eFNpemVFcnJvcjogMSwKICAgICAgICAgICAgICAgICBIaWVyYXJjaHlSZXF1ZXN0RXJyb3I6IDMs
CkBAIC0xNDQzLDE5ICsxODE0LDIzIEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMg
WzNdLgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgdmFy
IHJlcXVpcmVkX3Byb3BzID0geyBjb2RlOiBjb2RlIH07CisgICAgICAgICAgICB2YXIgcmVxdWly
ZWRfcHJvcHMgPSB7fTsKKyAgICAgICAgICAgIHZhciBuYW1lOwogCi0gICAgICAgICAgICBpZiAo
dHlwZW9mIGNvZGUgPT09ICJudW1iZXIiKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNvZGUgPT09
IDApIHsKLSAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbkVycm9yKCdUZXN0
IGJ1ZzogYW1iaWd1b3VzIERPTUV4Y2VwdGlvbiBjb2RlIDAgcGFzc2VkIHRvIGFzc2VydF90aHJv
d3MoKScpOwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIShjb2RlIGluIGNvZGVfbmFtZV9t
YXApKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25FcnJvcignVGVz
dCBidWc6IHVucmVjb2duaXplZCBET01FeGNlcHRpb24gY29kZSAiJyArIGNvZGUgKyAnIiBwYXNz
ZWQgdG8gYXNzZXJ0X3Rocm93cygpJyk7CisgICAgICAgICAgICBpZiAodHlwZW9mIHR5cGUgPT09
ICJudW1iZXIiKSB7CisgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09IDApIHsKKyAgICAgICAg
ICAgICAgICAgICAgdGhyb3cgbmV3IEFzc2VydGlvbkVycm9yKCdUZXN0IGJ1ZzogYW1iaWd1b3Vz
IERPTUV4Y2VwdGlvbiBjb2RlIDAgcGFzc2VkIHRvIGFzc2VydF90aHJvd3NfZG9tKCknKTsKKyAg
ICAgICAgICAgICAgICB9IGVsc2UgaWYgKCEodHlwZSBpbiBjb2RlX25hbWVfbWFwKSkgeworICAg
ICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRXJyb3IoJ1Rlc3QgYnVnOiB1bnJl
Y29nbml6ZWQgRE9NRXhjZXB0aW9uIGNvZGUgIicgKyB0eXBlICsgJyIgcGFzc2VkIHRvIGFzc2Vy
dF90aHJvd3NfZG9tKCknKTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbmFt
ZSA9IGNvZGVfbmFtZV9tYXBbY29kZV07Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBj
b2RlID09PSAic3RyaW5nIikgeworICAgICAgICAgICAgICAgIG5hbWUgPSBjb2RlX25hbWVfbWFw
W3R5cGVdOworICAgICAgICAgICAgICAgIHJlcXVpcmVkX3Byb3BzLmNvZGUgPSB0eXBlOworICAg
ICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdHlwZSA9PT0gInN0cmluZyIpIHsKKyAgICAgICAg
ICAgICAgICBuYW1lID0gdHlwZSBpbiBjb2RlbmFtZV9uYW1lX21hcCA/IGNvZGVuYW1lX25hbWVf
bWFwW3R5cGVdIDogdHlwZTsKICAgICAgICAgICAgICAgICBpZiAoIShuYW1lIGluIG5hbWVfY29k
ZV9tYXApKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25FcnJvcign
VGVzdCBidWc6IHVucmVjb2duaXplZCBET01FeGNlcHRpb24gY29kZSAiJyArIGNvZGUgKyAnIiBw
YXNzZWQgdG8gYXNzZXJ0X3Rocm93cygpJyk7CisgICAgICAgICAgICAgICAgICAgIHRocm93IG5l
dyBBc3NlcnRpb25FcnJvcignVGVzdCBidWc6IHVucmVjb2duaXplZCBET01FeGNlcHRpb24gY29k
ZSBuYW1lIG9yIG5hbWUgIicgKyB0eXBlICsgJyIgcGFzc2VkIHRvIGFzc2VydF90aHJvd3NfZG9t
KCknKTsKICAgICAgICAgICAgICAgICB9CisKICAgICAgICAgICAgICAgICByZXF1aXJlZF9wcm9w
cy5jb2RlID0gbmFtZV9jb2RlX21hcFtuYW1lXTsKICAgICAgICAgICAgIH0KIApAQCAtMTQ2Nywy
NiArMTg0Miw2NSBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAg
ICAgICAgICAgICByZXF1aXJlZF9wcm9wcy5uYW1lID0gbmFtZTsKICAgICAgICAgICAgIH0KIAot
ICAgICAgICAgICAgLy9XZSdkIGxpa2UgdG8gdGVzdCB0aGF0IGUgaW5zdGFuY2VvZiB0aGUgYXBw
cm9wcmlhdGUgaW50ZXJmYWNlLAotICAgICAgICAgICAgLy9idXQgd2UgY2FuJ3QsIGJlY2F1c2Ug
d2UgZG9uJ3Qga25vdyB3aGF0IHdpbmRvdyBpdCB3YXMgY3JlYXRlZAotICAgICAgICAgICAgLy9p
bi4gIEl0IG1pZ2h0IGJlIGFuIGluc3RhbmNlb2YgdGhlIGFwcHJvcHJpYXRlIGludGVyZmFjZSBv
biBzb21lCi0gICAgICAgICAgICAvL3Vua25vd24gb3RoZXIgd2luZG93LiAgVE9ETzogV29yayBh
cm91bmQgdGhpcyBzb21laG93PwotCiAgICAgICAgICAgICBmb3IgKHZhciBwcm9wIGluIHJlcXVp
cmVkX3Byb3BzKSB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0KHByb3AgaW4gZSAmJiBlW3Byb3Bd
ID09IHJlcXVpcmVkX3Byb3BzW3Byb3BdLAotICAgICAgICAgICAgICAgICAgICAgICAiYXNzZXJ0
X3Rocm93cyIsIGRlc2NyaXB0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAiJHtmdW5jfSB0
aHJldyAke2V9IHRoYXQgaXMgbm90IGEgRE9NRXhjZXB0aW9uICIgKyBjb2RlICsgIjogcHJvcGVy
dHkgJHtwcm9wfSBpcyBlcXVhbCB0byAke2FjdHVhbH0sIGV4cGVjdGVkICR7ZXhwZWN0ZWR9IiwK
KyAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0aW9uX3R5cGUsIGRlc2NyaXB0aW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAiJHtmdW5jfSB0aHJldyAke2V9IHRoYXQgaXMgbm90IGEgRE9N
RXhjZXB0aW9uICIgKyB0eXBlICsgIjogcHJvcGVydHkgJHtwcm9wfSBpcyBlcXVhbCB0byAke2Fj
dHVhbH0sIGV4cGVjdGVkICR7ZXhwZWN0ZWR9IiwKICAgICAgICAgICAgICAgICAgICAgICAge2Z1
bmM6ZnVuYywgZTplLCBwcm9wOnByb3AsIGFjdHVhbDplW3Byb3BdLCBleHBlY3RlZDpyZXF1aXJl
ZF9wcm9wc1twcm9wXX0pOwogICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBDaGVjayB0
aGF0IHRoZSBleGNlcHRpb24gaXMgZnJvbSB0aGUgcmlnaHQgZ2xvYmFsLiAgVGhpcyBjaGVjayBp
cyBsYXN0CisgICAgICAgICAgICAvLyBzbyBtb3JlIHNwZWNpZmljLCBhbmQgbW9yZSBpbmZvcm1h
dGl2ZSwgY2hlY2tzIG9uIHRoZSBwcm9wZXJ0aWVzIGNhbgorICAgICAgICAgICAgLy8gaGFwcGVu
IGluIGNhc2UgYSB0b3RhbGx5IGluY29ycmVjdCBleGNlcHRpb24gaXMgdGhyb3duLgorICAgICAg
ICAgICAgYXNzZXJ0KGUuY29uc3RydWN0b3IgPT09IGNvbnN0cnVjdG9yLAorICAgICAgICAgICAg
ICAgICAgIGFzc2VydGlvbl90eXBlLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAi
JHtmdW5jfSB0aHJldyBhbiBleGNlcHRpb24gZnJvbSB0aGUgd3JvbmcgZ2xvYmFsIiwKKyAgICAg
ICAgICAgICAgICAgICB7ZnVuY30pOworCisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAg
ICAgKiBBc3NlcnQgdGhlIHByb3ZpZGVkIHZhbHVlIGlzIHRocm93bi4KKyAgICAgKgorICAgICAq
IEBwYXJhbSB7dmFsdWV9IGV4Y2VwdGlvbiBUaGUgZXhwZWN0ZWQgZXhjZXB0aW9uLgorICAgICAq
IEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgRnVuY3Rpb24gd2hpY2ggc2hvdWxkIHRocm93LgorICAg
ICAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjcmlwdGlvbiBFcnJvciBkZXNjcmlwdGlvbiBmb3IgdGhl
IGNhc2UgdGhhdCB0aGUgZXJyb3IgaXMgbm90IHRocm93bi4KKyAgICAgKi8KKyAgICBmdW5jdGlv
biBhc3NlcnRfdGhyb3dzX2V4YWN0bHkoZXhjZXB0aW9uLCBmdW5jLCBkZXNjcmlwdGlvbikKKyAg
ICB7CisgICAgICAgIGFzc2VydF90aHJvd3NfZXhhY3RseV9pbXBsKGV4Y2VwdGlvbiwgZnVuYywg
ZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhc3NlcnRf
dGhyb3dzX2V4YWN0bHkiKTsKKyAgICB9CisgICAgZXhwb3NlX2Fzc2VydChhc3NlcnRfdGhyb3dz
X2V4YWN0bHksICJhc3NlcnRfdGhyb3dzX2V4YWN0bHkiKTsKKworICAgIC8qKgorICAgICAqIExp
a2UgYXNzZXJ0X3Rocm93c19leGFjdGx5IGJ1dCBhbGxvd3Mgc3BlY2lmeWluZyB0aGUgYXNzZXJ0
aW9uIHR5cGUKKyAgICAgKiAoYXNzZXJ0X3Rocm93c19leGFjdGx5IG9yIHByb21pc2VfcmVqZWN0
c19leGFjdGx5LCBpbiBwcmFjdGljZSkuCisgICAgICovCisgICAgZnVuY3Rpb24gYXNzZXJ0X3Ro
cm93c19leGFjdGx5X2ltcGwoZXhjZXB0aW9uLCBmdW5jLCBkZXNjcmlwdGlvbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnRpb25fdHlwZSkKKyAgICB7Cisg
ICAgICAgIHRyeSB7CisgICAgICAgICAgICBmdW5jLmNhbGwodGhpcyk7CisgICAgICAgICAgICBh
c3NlcnQoZmFsc2UsIGFzc2VydGlvbl90eXBlLCBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAg
ICAgICAiJHtmdW5jfSBkaWQgbm90IHRocm93Iiwge2Z1bmM6ZnVuY30pOworICAgICAgICB9IGNh
dGNoIChlKSB7CisgICAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIEFzc2VydGlvbkVycm9yKSB7
CisgICAgICAgICAgICAgICAgdGhyb3cgZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
YXNzZXJ0KHNhbWVfdmFsdWUoZSwgZXhjZXB0aW9uKSwgYXNzZXJ0aW9uX3R5cGUsIGRlc2NyaXB0
aW9uLAorICAgICAgICAgICAgICAgICAgICIke2Z1bmN9IHRocmV3ICR7ZX0gYnV0IHdlIGV4cGVj
dGVkIGl0IHRvIHRocm93ICR7ZXhjZXB0aW9ufSIsCisgICAgICAgICAgICAgICAgICAge2Z1bmM6
ZnVuYywgZTplLCBleGNlcHRpb246ZXhjZXB0aW9ufSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAg
ZXhwb3NlKGFzc2VydF90aHJvd3MsICJhc3NlcnRfdGhyb3dzIik7CiAKICAgICBmdW5jdGlvbiBh
c3NlcnRfdW5yZWFjaGVkKGRlc2NyaXB0aW9uKSB7CiAgICAgICAgICBhc3NlcnQoZmFsc2UsICJh
c3NlcnRfdW5yZWFjaGVkIiwgZGVzY3JpcHRpb24sCiAgICAgICAgICAgICAgICAgIlJlYWNoZWQg
dW5yZWFjaGFibGUgY29kZSIpOwogICAgIH0KLSAgICBleHBvc2UoYXNzZXJ0X3VucmVhY2hlZCwg
ImFzc2VydF91bnJlYWNoZWQiKTsKKyAgICBleHBvc2VfYXNzZXJ0KGFzc2VydF91bnJlYWNoZWQs
ICJhc3NlcnRfdW5yZWFjaGVkIik7CiAKICAgICBmdW5jdGlvbiBhc3NlcnRfYW55KGFzc2VydF9m
dW5jLCBhY3R1YWwsIGV4cGVjdGVkX2FycmF5KQogICAgIHsKQEAgLTE1MDcsOCArMTkyMSw0OCBA
QCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgICAgIHRocm93
IG5ldyBBc3NlcnRpb25FcnJvcihlcnJvcnMuam9pbigiXG5cbiIpKTsKICAgICAgICAgfQogICAg
IH0KKyAgICAvLyBGSVhNRTogYXNzZXJ0X2FueSBjYW5ub3QgdXNlIGV4cG9zZV9hc3NlcnQsIGJl
Y2F1c2UgYXNzZXJ0X3dyYXBwZXIgZG9lcworICAgIC8vIG5vdCBzdXBwb3J0IG5lc3RlZCBhc3Nl
cnQgY2FsbHMgKGUuZy4gdG8gYXNzZXJ0X2Z1bmMpLiBXZSBuZWVkIHRvCisgICAgLy8gc3VwcG9y
dCBieXBhc3NpbmcgYXNzZXJ0X3dyYXBwZXIgZm9yIHRoZSBpbm5lciBhc3NlcnRzIGhlcmUuCiAg
ICAgZXhwb3NlKGFzc2VydF9hbnksICJhc3NlcnRfYW55Iik7CiAKKyAgICAvKioKKyAgICAgKiBB
c3NlcnQgdGhhdCBhIGZlYXR1cmUgaXMgaW1wbGVtZW50ZWQsIGJhc2VkIG9uIGEgJ3RydXRoeScg
Y29uZGl0aW9uLgorICAgICAqCisgICAgICogVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgdXNlZCB0
byBlYXJseS1leGl0IGZyb20gdGVzdHMgaW4gd2hpY2ggdGhlcmUgaXMKKyAgICAgKiBubyBwb2lu
dCBjb250aW51aW5nIHdpdGhvdXQgc3VwcG9ydCBmb3IgYSBub24tb3B0aW9uYWwgc3BlYyBvciBz
cGVjCisgICAgICogZmVhdHVyZS4gRm9yIGV4YW1wbGU6CisgICAgICoKKyAgICAgKiAgICAgYXNz
ZXJ0X2ltcGxlbWVudHMod2luZG93LkZvbywgJ0ZvbyBpcyBub3Qgc3VwcG9ydGVkJyk7CisgICAg
ICoKKyAgICAgKiBAcGFyYW0ge29iamVjdH0gY29uZGl0aW9uIFRoZSB0cnV0aHkgdmFsdWUgdG8g
dGVzdAorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjcmlwdGlvbiBFcnJvciBkZXNjcmlwdGlv
biBmb3IgdGhlIGNhc2UgdGhhdCB0aGUgY29uZGl0aW9uIGlzIG5vdCB0cnV0aHkuCisgICAgICov
CisgICAgZnVuY3Rpb24gYXNzZXJ0X2ltcGxlbWVudHMoY29uZGl0aW9uLCBkZXNjcmlwdGlvbikg
eworICAgICAgICBhc3NlcnQoISFjb25kaXRpb24sICJhc3NlcnRfaW1wbGVtZW50cyIsIGRlc2Ny
aXB0aW9uKTsKKyAgICB9CisgICAgZXhwb3NlX2Fzc2VydChhc3NlcnRfaW1wbGVtZW50cywgImFz
c2VydF9pbXBsZW1lbnRzIikKKworICAgIC8qKgorICAgICAqIEFzc2VydCB0aGF0IGFuIG9wdGlv
bmFsIGZlYXR1cmUgaXMgaW1wbGVtZW50ZWQsIGJhc2VkIG9uIGEgJ3RydXRoeScgY29uZGl0aW9u
LgorICAgICAqCisgICAgICogVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgdXNlZCB0byBlYXJseS1l
eGl0IGZyb20gdGVzdHMgaW4gd2hpY2ggdGhlcmUgaXMKKyAgICAgKiBubyBwb2ludCBjb250aW51
aW5nIHdpdGhvdXQgc3VwcG9ydCBmb3IgYW4gZXhwbGljaXRseSBvcHRpb25hbCBzcGVjIG9yCisg
ICAgICogc3BlYyBmZWF0dXJlLiBGb3IgZXhhbXBsZToKKyAgICAgKgorICAgICAqICAgICBhc3Nl
cnRfaW1wbGVtZW50c19vcHRpb25hbCh2aWRlby5jYW5QbGF5VHlwZSgidmlkZW8vd2VibSIpLAor
ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2VibSB2aWRlbyBwbGF5YmFj
ayBub3Qgc3VwcG9ydGVkIik7CisgICAgICoKKyAgICAgKiBAcGFyYW0ge29iamVjdH0gY29uZGl0
aW9uIFRoZSB0cnV0aHkgdmFsdWUgdG8gdGVzdAorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkZXNj
cmlwdGlvbiBFcnJvciBkZXNjcmlwdGlvbiBmb3IgdGhlIGNhc2UgdGhhdCB0aGUgY29uZGl0aW9u
IGlzIG5vdCB0cnV0aHkuCisgICAgICovCisgICAgZnVuY3Rpb24gYXNzZXJ0X2ltcGxlbWVudHNf
b3B0aW9uYWwoY29uZGl0aW9uLCBkZXNjcmlwdGlvbikgeworICAgICAgICBpZiAoIWNvbmRpdGlv
bikgeworICAgICAgICAgICAgdGhyb3cgbmV3IE9wdGlvbmFsRmVhdHVyZVVuc3VwcG9ydGVkRXJy
b3IoZGVzY3JpcHRpb24pOworICAgICAgICB9CisgICAgfQorICAgIGV4cG9zZV9hc3NlcnQoYXNz
ZXJ0X2ltcGxlbWVudHNfb3B0aW9uYWwsICJhc3NlcnRfaW1wbGVtZW50c19vcHRpb25hbCIpCisK
ICAgICBmdW5jdGlvbiBUZXN0KG5hbWUsIHByb3BlcnRpZXMpCiAgICAgewogICAgICAgICBpZiAo
dGVzdHMuZmlsZV9pc190ZXN0ICYmIHRlc3RzLnRlc3RzLmxlbmd0aCkgewpAQCAtMTUyMyw3ICsx
OTc3LDcgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAgIHRo
aXMudGltZW91dF9pZCA9IG51bGw7CiAgICAgICAgIHRoaXMuaW5kZXggPSBudWxsOwogCi0gICAg
ICAgIHRoaXMucHJvcGVydGllcyA9IHByb3BlcnRpZXM7CisgICAgICAgIHRoaXMucHJvcGVydGll
cyA9IHByb3BlcnRpZXMgfHwge307CiAgICAgICAgIHRoaXMudGltZW91dF9sZW5ndGggPSBzZXR0
aW5ncy50ZXN0X3RpbWVvdXQ7CiAgICAgICAgIGlmICh0aGlzLnRpbWVvdXRfbGVuZ3RoICE9PSBu
dWxsKSB7CiAgICAgICAgICAgICB0aGlzLnRpbWVvdXRfbGVuZ3RoICo9IHRlc3RzLnRpbWVvdXRf
bXVsdGlwbGllcjsKQEAgLTE1NTMsNyArMjAwNyw4IEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRp
b24gZm9ybXMgWzNdLgogICAgICAgICBQQVNTOjAsCiAgICAgICAgIEZBSUw6MSwKICAgICAgICAg
VElNRU9VVDoyLAotICAgICAgICBOT1RSVU46MworICAgICAgICBOT1RSVU46MywKKyAgICAgICAg
UFJFQ09ORElUSU9OX0ZBSUxFRDo0CiAgICAgfTsKIAogICAgIFRlc3QucHJvdG90eXBlID0gbWVy
Z2Uoe30sIFRlc3Quc3RhdHVzZXMpOwpAQCAtMTU2Niw2ICsyMDIxLDE4IEBAIHBvbGljaWVzIGFu
ZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAgICBDT01QTEVURTo0CiAgICAgfTsKIAor
ICAgIFRlc3QucHJvdG90eXBlLnN0YXR1c19mb3JtYXRzID0geworICAgICAgICAwOiAiUGFzcyIs
CisgICAgICAgIDE6ICJGYWlsIiwKKyAgICAgICAgMjogIlRpbWVvdXQiLAorICAgICAgICAzOiAi
Tm90IFJ1biIsCisgICAgICAgIDQ6ICJPcHRpb25hbCBGZWF0dXJlIFVuc3VwcG9ydGVkIiwKKyAg
ICB9CisKKyAgICBUZXN0LnByb3RvdHlwZS5mb3JtYXRfc3RhdHVzID0gZnVuY3Rpb24oKSB7Cisg
ICAgICAgIHJldHVybiB0aGlzLnN0YXR1c19mb3JtYXRzW3RoaXMuc3RhdHVzXTsKKyAgICB9CisK
ICAgICBUZXN0LnByb3RvdHlwZS5zdHJ1Y3R1cmVkX2Nsb25lID0gZnVuY3Rpb24oKQogICAgIHsK
ICAgICAgICAgaWYgKCF0aGlzLl9zdHJ1Y3R1cmVkX2Nsb25lKSB7CkBAIC0xNTkwLDExICsyMDU3
LDE2IEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAgICBpZiAo
dGhpcy5waGFzZSA+IHRoaXMucGhhc2VzLlNUQVJURUQpIHsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQorCisgICAgICAgIGlmIChzZXR0aW5ncy5kZWJ1ZyAmJiB0aGlzLnBoYXNlICE9
PSB0aGlzLnBoYXNlcy5TVEFSVEVEKSB7CisgICAgICAgICAgICBjb25zb2xlLmxvZygiVEVTVCBT
VEFSVCIsIHRoaXMubmFtZSk7CisgICAgICAgIH0KICAgICAgICAgdGhpcy5waGFzZSA9IHRoaXMu
cGhhc2VzLlNUQVJURUQ7CiAgICAgICAgIC8vSWYgd2UgZG9uJ3QgZ2V0IGEgcmVzdWx0IGJlZm9y
ZSB0aGUgaGFybmVzcyB0aW1lcyBvdXQgdGhhdCB3aWxsIGJlIGEgdGVzdCB0aW1lb3V0CiAgICAg
ICAgIHRoaXMuc2V0X3N0YXR1cyh0aGlzLlRJTUVPVVQsICJUZXN0IHRpbWVkIG91dCIpOwogCiAg
ICAgICAgIHRlc3RzLnN0YXJ0ZWQgPSB0cnVlOworICAgICAgICB0ZXN0cy5jdXJyZW50X3Rlc3Qg
PSB0aGlzOwogICAgICAgICB0ZXN0cy5ub3RpZnlfdGVzdF9zdGF0ZSh0aGlzKTsKIAogICAgICAg
ICBpZiAodGhpcy50aW1lb3V0X2lkID09PSBudWxsKSB7CkBAIC0xNjA3LDE4ICsyMDc5LDI1IEBA
IHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAgICAgICAgdGhpc19v
YmogPSB0aGlzOwogICAgICAgICB9CiAKKyAgICAgICAgaWYgKHNldHRpbmdzLmRlYnVnKSB7Cisg
ICAgICAgICAgICBjb25zb2xlLmRlYnVnKCJURVNUIFNURVAiLCB0aGlzLm5hbWUpOworICAgICAg
ICB9CisKICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgIHJldHVybiBmdW5jLmFwcGx5KHRoaXNf
b2JqLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDIpKTsKICAgICAgICAg
fSBjYXRjaCAoZSkgewogICAgICAgICAgICAgaWYgKHRoaXMucGhhc2UgPj0gdGhpcy5waGFzZXMu
SEFTX1JFU1VMVCkgewogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIHZhciBzdGF0dXMgPSBlIGluc3RhbmNlb2YgT3B0aW9uYWxGZWF0dXJlVW5zdXBw
b3J0ZWRFcnJvciA/IHRoaXMuUFJFQ09ORElUSU9OX0ZBSUxFRCA6IHRoaXMuRkFJTDsKICAgICAg
ICAgICAgIHZhciBtZXNzYWdlID0gU3RyaW5nKCh0eXBlb2YgZSA9PT0gIm9iamVjdCIgJiYgZSAh
PT0gbnVsbCkgPyBlLm1lc3NhZ2UgOiBlKTsKICAgICAgICAgICAgIHZhciBzdGFjayA9IGUuc3Rh
Y2sgPyBlLnN0YWNrIDogbnVsbDsKIAotICAgICAgICAgICAgdGhpcy5zZXRfc3RhdHVzKHRoaXMu
RkFJTCwgbWVzc2FnZSwgc3RhY2spOworICAgICAgICAgICAgdGhpcy5zZXRfc3RhdHVzKHN0YXR1
cywgbWVzc2FnZSwgc3RhY2spOwogICAgICAgICAgICAgdGhpcy5waGFzZSA9IHRoaXMucGhhc2Vz
LkhBU19SRVNVTFQ7CiAgICAgICAgICAgICB0aGlzLmRvbmUoKTsKKyAgICAgICAgfSBmaW5hbGx5
IHsKKyAgICAgICAgICAgIHRoaXMuY3VycmVudF90ZXN0ID0gbnVsbDsKICAgICAgICAgfQogICAg
IH07CiAKQEAgLTE2NjgsNiArMjE0NywxMDUgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBm
b3JtcyBbM10uCiAgICAgICAgIHJldHVybiBzZXRUaW1lb3V0KHRoaXMuc3RlcF9mdW5jKGZ1bmN0
aW9uKCkgewogICAgICAgICAgICAgcmV0dXJuIGYuYXBwbHkodGVzdF90aGlzLCBhcmdzKTsKICAg
ICAgICAgfSksIHRpbWVvdXQgKiB0ZXN0cy50aW1lb3V0X211bHRpcGxpZXIpOworICAgIH07CisK
KyAgICBUZXN0LnByb3RvdHlwZS5zdGVwX3dhaXRfZnVuYyA9IGZ1bmN0aW9uKGNvbmQsIGZ1bmMs
IGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGltZW91dD0zMDAwLCBpbnRlcnZhbD0xMDApIHsKKyAgICAgICAgLyoqCisgICAgICAgICAq
IFBvbGwgZm9yIGEgZnVuY3Rpb24gdG8gcmV0dXJuIHRydWUsIGFuZCBjYWxsIGEgY2FsbGJhY2sK
KyAgICAgICAgICogZnVuY3Rpb24gb25jZSBpdCBkb2VzLCBvciBhc3NlcnQgaWYgYSB0aW1lb3V0
IGlzCisgICAgICAgICAqIHJlYWNoZWQuIFRoaXMgaXMgcHJlZmVycmVkIG92ZXIgYSBzaW1wbGUg
c3RlcF90aW1lb3V0CisgICAgICAgICAqIHdoZW5ldmVyIHBvc3NpYmxlIHNpbmNlIGl0IGFsbG93
cyB0aGUgdGltZW91dCB0byBiZSBsb25nZXIKKyAgICAgICAgICogdG8gcmVkdWNlIGludGVybWl0
dGVudHMgd2l0aG91dCBjb21wcm9taXNpbmcgdGVzdCBleGVjdXRpb24KKyAgICAgICAgICogc3Bl
ZWQgd2hlbiB0aGUgY29uZGl0aW9uIGlzIHF1aWNrbHkgbWV0LgorICAgICAgICAgKgorICAgICAg
ICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjb25kIEEgZnVuY3Rpb24gdGFraW5nIG5vIGFyZ3VtZW50
cyBhbmQKKyAgICAgICAgICogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5pbmcgYSBib29s
ZWFuLiBUaGUgY2FsbGJhY2sgaXMgY2FsbGVkCisgICAgICAgICAqICAgICAgICAgICAgICAgICAg
ICAgICAgd2hlbiB0aGlzIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZS4KKyAgICAgICAgICogQHBhcmFt
IHtGdW5jdGlvbn0gZnVuYyBBIGZ1bmN0aW9uIHRha2luZyBubyBhcmd1bWVudHMgdG8gY2FsbCBv
bmNlCisgICAgICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGNvbmRpdGlvbiBpcyBt
ZXQuCisgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjcmlwdGlvbiBFcnJvciBtZXNzYWdl
IHRvIGFkZCB0byBhc3NlcnQgaW4gY2FzZSBvZgorICAgICAgICAgKiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZmFpbHVyZS4KKyAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IHRpbWVvdXQg
VGltZW91dCBpbiBtcy4gVGhpcyBpcyBtdWx0aXBsaWVkIGJ5IHRoZSBnbG9iYWwKKyAgICAgICAg
ICogICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dF9tdWx0aXBsaWVyCisgICAgICAgICAq
IEBwYXJhbSB7bnVtYmVyfSBpbnRlcnZhbCBQb2xsaW5nIGludGVydmFsIGluIG1zCisgICAgICAg
ICAqCisgICAgICAgICAqKi8KKworICAgICAgICB2YXIgdGltZW91dF9mdWxsID0gdGltZW91dCAq
IHRlc3RzLnRpbWVvdXRfbXVsdGlwbGllcjsKKyAgICAgICAgdmFyIHJlbWFpbmluZyA9IE1hdGgu
Y2VpbCh0aW1lb3V0X2Z1bGwgLyBpbnRlcnZhbCk7CisgICAgICAgIHZhciB0ZXN0X3RoaXMgPSB0
aGlzOworCisgICAgICAgIHZhciB3YWl0X2Zvcl9pbm5lciA9IHRlc3RfdGhpcy5zdGVwX2Z1bmMo
KCkgPT4geworICAgICAgICAgICAgaWYgKGNvbmQoKSkgeworICAgICAgICAgICAgICAgIGZ1bmMo
KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYocmVtYWluaW5nID09
PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydChmYWxzZSwgInN0ZXBfd2FpdF9mdW5j
IiwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGltZWQgb3V0IHdh
aXRpbmcgb24gY29uZGl0aW9uIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IHJlbWFpbmluZy0tOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQod2FpdF9mb3JfaW5uZXIs
IGludGVydmFsKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisKKyAgICAgICAgd2FpdF9m
b3JfaW5uZXIoKTsKKyAgICB9OworCisgICAgVGVzdC5wcm90b3R5cGUuc3RlcF93YWl0X2Z1bmNf
ZG9uZSA9IGZ1bmN0aW9uKGNvbmQsIGZ1bmMsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PTMwMDAsIGludGVydmFs
PTEwMCkgeworICAgICAgICAvKioKKyAgICAgICAgICogUG9sbCBmb3IgYSBmdW5jdGlvbiB0byBy
ZXR1cm4gdHJ1ZSwgYW5kIGludm9rZSBhIGNhbGxiYWNrCisgICAgICAgICAqIGZvbGxvd2VkIGJ5
IHRoaXMuZG9uZSgpIG9uY2UgaXQgZG9lcywgb3IgYXNzZXJ0IGlmIGEgdGltZW91dAorICAgICAg
ICAgKiBpcyByZWFjaGVkLiBUaGlzIGlzIHByZWZlcnJlZCBvdmVyIGEgc2ltcGxlIHN0ZXBfdGlt
ZW91dAorICAgICAgICAgKiB3aGVuZXZlciBwb3NzaWJsZSBzaW5jZSBpdCBhbGxvd3MgdGhlIHRp
bWVvdXQgdG8gYmUgbG9uZ2VyCisgICAgICAgICAqIHRvIHJlZHVjZSBpbnRlcm1pdHRlbnRzIHdp
dGhvdXQgY29tcHJvbWlzaW5nIHRlc3QgZXhlY3V0aW9uIHNwZWVkCisgICAgICAgICAqIHdoZW4g
dGhlIGNvbmRpdGlvbiBpcyBxdWlja2x5IG1ldC4KKyAgICAgICAgICoKKyAgICAgICAgICogQHBh
cmFtIHtGdW5jdGlvbn0gY29uZCBBIGZ1bmN0aW9uIHRha2luZyBubyBhcmd1bWVudHMgYW5kCisg
ICAgICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuaW5nIGEgYm9vbGVhbi4gVGhl
IGNhbGxiYWNrIGlzIGNhbGxlZAorICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgIHdo
ZW4gdGhpcyBmdW5jdGlvbiByZXR1cm5zIHRydWUuCisgICAgICAgICAqIEBwYXJhbSB7RnVuY3Rp
b259IGZ1bmMgQSBmdW5jdGlvbiB0YWtpbmcgbm8gYXJndW1lbnRzIHRvIGNhbGwgb25jZQorICAg
ICAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBjb25kaXRpb24gaXMgbWV0LgorICAg
ICAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzY3JpcHRpb24gRXJyb3IgbWVzc2FnZSB0byBhZGQg
dG8gYXNzZXJ0IGluIGNhc2Ugb2YKKyAgICAgICAgICogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZhaWx1cmUuCisgICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0aW1lb3V0IFRpbWVvdXQg
aW4gbXMuIFRoaXMgaXMgbXVsdGlwbGllZCBieSB0aGUgZ2xvYmFsCisgICAgICAgICAqICAgICAg
ICAgICAgICAgICAgICAgICAgIHRpbWVvdXRfbXVsdGlwbGllcgorICAgICAgICAgKiBAcGFyYW0g
e251bWJlcn0gaW50ZXJ2YWwgUG9sbGluZyBpbnRlcnZhbCBpbiBtcworICAgICAgICAgKgorICAg
ICAgICAgKiovCisKKyAgICAgICAgIHRoaXMuc3RlcF93YWl0X2Z1bmMoY29uZCwgKCkgPT4gewor
ICAgICAgICAgICAgaWYgKGZ1bmMpIHsKKyAgICAgICAgICAgICAgICBmdW5jKCk7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICB0aGlzLmRvbmUoKTsKKyAgICAgICAgIH0sIGRlc2NyaXB0aW9u
LCB0aW1lb3V0LCBpbnRlcnZhbCk7CisgICAgfQorCisgICAgVGVzdC5wcm90b3R5cGUuc3RlcF93
YWl0ID0gZnVuY3Rpb24oY29uZCwgZGVzY3JpcHRpb24sIHRpbWVvdXQ9MzAwMCwgaW50ZXJ2YWw9
MTAwKSB7CisgICAgICAgIC8qKgorICAgICAgICAgKiBQb2xsIGZvciBhIGZ1bmN0aW9uIHRvIHJl
dHVybiB0cnVlLCBhbmQgcmVzb2x2ZSBhIHByb21pc2UKKyAgICAgICAgICogb25jZSBpdCBkb2Vz
LCBvciBhc3NlcnQgaWYgYSB0aW1lb3V0IGlzIHJlYWNoZWQuIFRoaXMgaXMKKyAgICAgICAgICog
cHJlZmVycmVkIG92ZXIgYSBzaW1wbGUgc3RlcF90aW1lb3V0IHdoZW5ldmVyIHBvc3NpYmxlCisg
ICAgICAgICAqIHNpbmNlIGl0IGFsbG93cyB0aGUgdGltZW91dCB0byBiZSBsb25nZXIgdG8gcmVk
dWNlCisgICAgICAgICAqIGludGVybWl0dGVudHMgd2l0aG91dCBjb21wcm9taXNpbmcgdGVzdCBl
eGVjdXRpb24gc3BlZWQKKyAgICAgICAgICogd2hlbiB0aGUgY29uZGl0aW9uIGlzIHF1aWNrbHkg
bWV0LgorICAgICAgICAgKgorICAgICAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjb25kIEEgZnVu
Y3Rpb24gdGFraW5nIG5vIGFyZ3VtZW50cyBhbmQKKyAgICAgICAgICogICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm5pbmcgYSBib29sZWFuLgorICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30g
ZGVzY3JpcHRpb24gRXJyb3IgbWVzc2FnZSB0byBhZGQgdG8gYXNzZXJ0IGluIGNhc2Ugb2YKKyAg
ICAgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWx1cmUuCisgICAgICAgICAq
IEBwYXJhbSB7bnVtYmVyfSB0aW1lb3V0IFRpbWVvdXQgaW4gbXMuIFRoaXMgaXMgbXVsdGlwbGll
ZCBieSB0aGUgZ2xvYmFsCisgICAgICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVv
dXRfbXVsdGlwbGllcgorICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gaW50ZXJ2YWwgUG9sbGlu
ZyBpbnRlcnZhbCBpbiBtcworICAgICAgICAgKiBAcmV0dXJucyB7UHJvbWlzZX0gUHJvbWlzZSBy
ZXNvbHZlZCBvbmNlIGNvbmQgaXMgbWV0LgorICAgICAgICAgKgorICAgICAgICAgKiovCisKKyAg
ICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4geworICAgICAgICAgICAgdGhpcy5z
dGVwX3dhaXRfZnVuYyhjb25kLCByZXNvbHZlLCBkZXNjcmlwdGlvbiwgdGltZW91dCwgaW50ZXJ2
YWwpOworICAgICAgICB9KTsKICAgICB9CiAKICAgICAvKgpAQCAtMTczNyw2ICsyMzE1LDEyIEBA
IHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAgICAgICAgY2xlYXJU
aW1lb3V0KHRoaXMudGltZW91dF9pZCk7CiAgICAgICAgIH0KIAorICAgICAgICBpZiAoc2V0dGlu
Z3MuZGVidWcpIHsKKyAgICAgICAgICAgIGNvbnNvbGUubG9nKCJURVNUIERPTkUiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0dXMsCisgICAgICAgICAgICAgICAgICAgICAgICB0
aGlzLm5hbWUsKQorICAgICAgICB9CisKICAgICAgICAgdGhpcy5jbGVhbnVwKCk7CiAgICAgfTsK
IApAQCAtMTkzNiw2ICsyNTIwLDEwIEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMg
WzNdLgogICAgICAgICAgICAgICAgIH0pOwogICAgIH0KIAorICAgIFJlbW90ZVRlc3QucHJvdG90
eXBlLmZvcm1hdF9zdGF0dXMgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIFRlc3QucHJv
dG90eXBlLnN0YXR1c19mb3JtYXRzW3RoaXMuc3RhdHVzXTsKKyAgICB9CisKICAgICAvKgogICAg
ICAqIEEgUmVtb3RlQ29udGV4dCBsaXN0ZW5zIGZvciB0ZXN0IGV2ZW50cyBmcm9tIGEgcmVtb3Rl
IHRlc3QgY29udGV4dCwgc3VjaAogICAgICAqIGFzIGFub3RoZXIgd2luZG93IG9yIGEgd29ya2Vy
LiBUaGVzZSBldmVudHMgYXJlIHRoZW4gdXNlZCB0byBjb25zdHJ1Y3QKQEAgLTIwNDQsNiArMjYz
MiwxNiBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgICAg
IHRlc3RzLnNldF9zdGF0dXMoZGF0YS5zdGF0dXMuc3RhdHVzLCBkYXRhLnN0YXR1cy5tZXNzYWdl
LCBkYXRhLnN0YXR1cy5zYWNrKTsKICAgICAgICAgfQogCisgICAgICAgIGZvciAobGV0IGFzc2Vy
dCBvZiBkYXRhLmFzc2VydHMpIHsKKyAgICAgICAgICAgIHZhciByZWNvcmQgPSBuZXcgQXNzZXJ0
UmVjb3JkKCk7CisgICAgICAgICAgICByZWNvcmQuYXNzZXJ0X25hbWUgPSBhc3NlcnQuYXNzZXJ0
X25hbWU7CisgICAgICAgICAgICByZWNvcmQuYXJncyA9IGFzc2VydC5hcmdzOworICAgICAgICAg
ICAgcmVjb3JkLnRlc3QgPSBhc3NlcnQudGVzdCAhPSBudWxsID8gdGhpcy50ZXN0c1thc3NlcnQu
dGVzdC5pbmRleF0gOiBudWxsOworICAgICAgICAgICAgcmVjb3JkLnN0YXR1cyA9IGFzc2VydC5z
dGF0dXM7CisgICAgICAgICAgICByZWNvcmQuc3RhY2sgPSBhc3NlcnQuc3RhY2s7CisgICAgICAg
ICAgICB0ZXN0cy5hc3NlcnRzX3J1bi5wdXNoKHJlY29yZCk7CisgICAgICAgIH0KKwogICAgICAg
ICB0aGlzLm1lc3NhZ2VfdGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCB0aGlz
Lm1lc3NhZ2VfaGFuZGxlcik7CiAgICAgICAgIHRoaXMucnVubmluZyA9IGZhbHNlOwogCkBAIC0y
MDg3LDExICsyNjg1LDIwIEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgog
ICAgIFRlc3RzU3RhdHVzLnN0YXR1c2VzID0gewogICAgICAgICBPSzowLAogICAgICAgICBFUlJP
UjoxLAotICAgICAgICBUSU1FT1VUOjIKKyAgICAgICAgVElNRU9VVDoyLAorICAgICAgICBQUkVD
T05ESVRJT05fRkFJTEVEOjMKICAgICB9OwogCiAgICAgVGVzdHNTdGF0dXMucHJvdG90eXBlID0g
bWVyZ2Uoe30sIFRlc3RzU3RhdHVzLnN0YXR1c2VzKTsKIAorICAgIFRlc3RzU3RhdHVzLnByb3Rv
dHlwZS5mb3JtYXRzID0geworICAgICAgICAwOiAiT0siLAorICAgICAgICAxOiAiRXJyb3IiLAor
ICAgICAgICAyOiAiVGltZW91dCIsCisgICAgICAgIDM6ICJPcHRpb25hbCBGZWF0dXJlIFVuc3Vw
cG9ydGVkIgorICAgIH0KKworCiAgICAgVGVzdHNTdGF0dXMucHJvdG90eXBlLnN0cnVjdHVyZWRf
Y2xvbmUgPSBmdW5jdGlvbigpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX3N0cnVjdHVyZWRf
Y2xvbmUpIHsKQEAgLTIxMDYsNiArMjcxMywyNyBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9u
IGZvcm1zIFszXS4KICAgICAgICAgcmV0dXJuIHRoaXMuX3N0cnVjdHVyZWRfY2xvbmU7CiAgICAg
fTsKIAorICAgIFRlc3RzU3RhdHVzLnByb3RvdHlwZS5mb3JtYXRfc3RhdHVzID0gZnVuY3Rpb24o
KSB7CisgICAgICAgIHJldHVybiB0aGlzLmZvcm1hdHNbdGhpcy5zdGF0dXNdOworICAgIH0KKwor
ICAgIGZ1bmN0aW9uIEFzc2VydFJlY29yZCh0ZXN0LCBhc3NlcnRfbmFtZSwgYXJncyA9IFtdKSB7
CisgICAgICAgIHRoaXMuYXNzZXJ0X25hbWUgPSBhc3NlcnRfbmFtZTsKKyAgICAgICAgdGhpcy50
ZXN0ID0gdGVzdDsKKyAgICAgICAgLy8gQXZvaWQga2VlcGluZyBjb21wbGV4IG9iamVjdHMgYWxp
dmUKKyAgICAgICAgdGhpcy5hcmdzID0gYXJncy5tYXAoeCA9PiBmb3JtYXRfdmFsdWUoeCkucmVw
bGFjZSgvXG4vZywgIiAiKSk7CisgICAgICAgIHRoaXMuc3RhdHVzID0gbnVsbDsKKyAgICB9CisK
KyAgICBBc3NlcnRSZWNvcmQucHJvdG90eXBlLnN0cnVjdHVyZWRfY2xvbmUgPSBmdW5jdGlvbigp
IHsKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgIGFzc2VydF9uYW1lOiB0aGlzLmFzc2Vy
dF9uYW1lLAorICAgICAgICAgICAgdGVzdDogdGhpcy50ZXN0ID8gdGhpcy50ZXN0LnN0cnVjdHVy
ZWRfY2xvbmUoKSA6IG51bGwsCisgICAgICAgICAgICBhcmdzOiB0aGlzLmFyZ3MsCisgICAgICAg
ICAgICBzdGF0dXM6IHRoaXMuc3RhdHVzLAorICAgICAgICB9CisgICAgfQorCiAgICAgZnVuY3Rp
b24gVGVzdHMoKQogICAgIHsKICAgICAgICAgdGhpcy50ZXN0cyA9IFtdOwpAQCAtMjEyOCw2ICsy
NzU2LDEwIEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAgICB0
aGlzLmFsbG93X3VuY2F1Z2h0X2V4Y2VwdGlvbiA9IGZhbHNlOwogCiAgICAgICAgIHRoaXMuZmls
ZV9pc190ZXN0ID0gZmFsc2U7CisgICAgICAgIC8vIFRoaXMgdmFsdWUgaXMgbGF6aWx5IGluaXRp
YWxpemVkIGluIG9yZGVyIHRvIGF2b2lkIGludHJvZHVjaW5nIGEKKyAgICAgICAgLy8gZGVwZW5k
ZW5jeSBvbiBFQ01BU2NyaXB0IDIwMTUgUHJvbWlzZXMgdG8gYWxsIHRlc3RzLgorICAgICAgICB0
aGlzLnByb21pc2VfdGVzdHMgPSBudWxsOworICAgICAgICB0aGlzLnByb21pc2Vfc2V0dXBfY2Fs
bGVkID0gZmFsc2U7CiAKICAgICAgICAgdGhpcy50aW1lb3V0X211bHRpcGxpZXIgPSAxOwogICAg
ICAgICB0aGlzLnRpbWVvdXRfbGVuZ3RoID0gdGVzdF9lbnZpcm9ubWVudC50ZXN0X3RpbWVvdXQo
KTsKQEAgLTIxMzgsOCArMjc3MCwyMSBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1z
IFszXS4KICAgICAgICAgdGhpcy50ZXN0X2RvbmVfY2FsbGJhY2tzID0gW107CiAgICAgICAgIHRo
aXMuYWxsX2RvbmVfY2FsbGJhY2tzID0gW107CiAKKyAgICAgICAgdGhpcy5oaWRlX3Rlc3Rfc3Rh
dGUgPSBmYWxzZTsKICAgICAgICAgdGhpcy5wZW5kaW5nX3JlbW90ZXMgPSBbXTsKIAorICAgICAg
ICB0aGlzLmN1cnJlbnRfdGVzdCA9IG51bGw7CisgICAgICAgIHRoaXMuYXNzZXJ0c19ydW4gPSBb
XTsKKworICAgICAgICAvLyBUcmFjayB3aGV0aGVyIG91dHB1dCBpcyBlbmFibGVkLCBhbmQgdGh1
cyB3aGV0aGVyIG9yIG5vdCB3ZSBzaG91bGQKKyAgICAgICAgLy8gdHJhY2sgYXNzZXJ0cy4KKyAg
ICAgICAgLy8KKyAgICAgICAgLy8gT24gd29ya2VycyB3ZSBkb24ndCBnZXQgcHJvcGVydGllcyBz
ZXQgZnJvbSB0ZXN0aGFybmVzc3JlcG9ydC5qcywgc28KKyAgICAgICAgLy8gd2UgZG9uJ3Qga25v
dyB3aGV0aGVyIG9yIG5vdCB0byB0cmFjayBhc3NlcnRzLiBUbyBhdm9pZCB0aGUKKyAgICAgICAg
Ly8gcmVzdWx0aW5nIHBlcmZvcm1hbmNlIGhpdCwgd2UgYXNzdW1lIHdlIGFyZSBub3QgbWVhbnQg
dG8uIFRoaXMgbWVhbnMKKyAgICAgICAgLy8gdGhhdCBhc3NlcnQgdHJhY2tpbmcgZG9lcyBub3Qg
ZnVuY3Rpb24gb24gd29ya2Vycy4KKyAgICAgICAgdGhpcy5vdXRwdXQgPSBzZXR0aW5ncy5vdXRw
dXQgJiYgJ2RvY3VtZW50JyBpbiBnbG9iYWxfc2NvcGU7CisKICAgICAgICAgdGhpcy5zdGF0dXMg
PSBuZXcgVGVzdHNTdGF0dXMoKTsKIAogICAgICAgICB2YXIgdGhpc19vYmogPSB0aGlzOwpAQCAt
MjE3OCwxMSArMjgyMywxOSBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4K
ICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJUaW1l
b3V0KHRoaXMudGltZW91dF9pZCk7CiAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICB9IGVsc2UgaWYgKHAgPT0gInNpbmdsZV90ZXN0IiAmJiB2YWx1ZSkgeworICAgICAgICAg
ICAgICAgICAgICB0aGlzLnNldF9maWxlX2lzX3Rlc3QoKTsKICAgICAgICAgICAgICAgICB9IGVs
c2UgaWYgKHAgPT0gInRpbWVvdXRfbXVsdGlwbGllciIpIHsKICAgICAgICAgICAgICAgICAgICAg
dGhpcy50aW1lb3V0X211bHRpcGxpZXIgPSB2YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgaWYg
KHRoaXMudGltZW91dF9sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRp
bWVvdXRfbGVuZ3RoICo9IHRoaXMudGltZW91dF9tdWx0aXBsaWVyOwogICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwID09ICJoaWRlX3Rlc3Rfc3RhdGUi
KSB7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZV90ZXN0X3N0YXRlID0gdmFsdWU7Cisg
ICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwID09ICJvdXRwdXQiKSB7CisgICAgICAgICAgICAg
ICAgICAgIHRoaXMub3V0cHV0ID0gdmFsdWU7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChw
ID09PSAiZGVidWciKSB7CisgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzLmRlYnVnID0gdmFs
dWU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0yMTkx
LDkgKzI4NDQsMTAgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAg
ICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgIGZ1bmMoKTsKICAgICAgICAgICAgIH0gY2F0
Y2ggKGUpIHsKLSAgICAgICAgICAgICAgICB0aGlzLnN0YXR1cy5zdGF0dXMgPSB0aGlzLnN0YXR1
cy5FUlJPUjsKKyAgICAgICAgICAgICAgICB0aGlzLnN0YXR1cy5zdGF0dXMgPSBlIGluc3RhbmNl
b2YgT3B0aW9uYWxGZWF0dXJlVW5zdXBwb3J0ZWRFcnJvciA/IHRoaXMuc3RhdHVzLlBSRUNPTkRJ
VElPTl9GQUlMRUQgOiB0aGlzLnN0YXR1cy5FUlJPUjsKICAgICAgICAgICAgICAgICB0aGlzLnN0
YXR1cy5tZXNzYWdlID0gU3RyaW5nKGUpOwogICAgICAgICAgICAgICAgIHRoaXMuc3RhdHVzLnN0
YWNrID0gZS5zdGFjayA/IGUuc3RhY2sgOiBudWxsOworICAgICAgICAgICAgICAgIHRoaXMuY29t
cGxldGUoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICB0aGlzLnNldF90aW1l
b3V0KCk7CkBAIC0yMjA2LDcgKzI4NjAsNyBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZv
cm1zIFszXS4KICAgICAgICAgdGhpcy53YWl0X2Zvcl9maW5pc2ggPSB0cnVlOwogICAgICAgICB0
aGlzLmZpbGVfaXNfdGVzdCA9IHRydWU7CiAgICAgICAgIC8vIENyZWF0ZSB0aGUgdGVzdCwgd2hp
Y2ggd2lsbCBhZGQgaXQgdG8gdGhlIGxpc3Qgb2YgdGVzdHMKLSAgICAgICAgYXN5bmNfdGVzdCgp
OworICAgICAgICB0ZXN0cy5jdXJyZW50X3Rlc3QgPSBhc3luY190ZXN0KCk7CiAgICAgfTsKIAog
ICAgIFRlc3RzLnByb3RvdHlwZS5zZXRfc3RhdHVzID0gZnVuY3Rpb24oc3RhdHVzLCBtZXNzYWdl
LCBzdGFjaykKQEAgLTIzNzAsNiArMzAyNCwxNiBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9u
IGZvcm1zIFszXS4KICAgICAgICAgICAgICAgICAgIGFsbF9jb21wbGV0ZSk7CiAgICAgfTsKIAor
ICAgIFRlc3RzLnByb3RvdHlwZS5zZXRfYXNzZXJ0ID0gZnVuY3Rpb24oYXNzZXJ0X25hbWUsIGFy
Z3MpIHsKKyAgICAgICAgdGhpcy5hc3NlcnRzX3J1bi5wdXNoKG5ldyBBc3NlcnRSZWNvcmQodGhp
cy5jdXJyZW50X3Rlc3QsIGFzc2VydF9uYW1lLCBhcmdzKSkKKyAgICB9CisKKyAgICBUZXN0cy5w
cm90b3R5cGUuc2V0X2Fzc2VydF9zdGF0dXMgPSBmdW5jdGlvbihzdGF0dXMsIHN0YWNrKSB7Cisg
ICAgICAgIGxldCBhc3NlcnRfcmVjb3JkID0gdGhpcy5hc3NlcnRzX3J1blt0aGlzLmFzc2VydHNf
cnVuLmxlbmd0aCAtIDFdOworICAgICAgICBhc3NlcnRfcmVjb3JkLnN0YXR1cyA9IHN0YXR1czsK
KyAgICAgICAgYXNzZXJ0X3JlY29yZC5zdGFjayA9IHN0YWNrOworICAgIH0KKwogICAgIC8qKgog
ICAgICAqIFVwZGF0ZSB0aGUgaGFybmVzcyBzdGF0dXMgdG8gcmVmbGVjdCBhbiB1bnJlY292ZXJh
YmxlIGhhcm5lc3MgZXJyb3IgdGhhdAogICAgICAqIHNob3VsZCBjYW5jZWwgYWxsIGZ1cnRoZXIg
dGVzdGluZy4gVXBkYXRlIGFsbCBwcmV2aW91c2x5LWRlZmluZWQgdGVzdHMKQEAgLTI0MTIsMjIg
KzMwNzYsMTYgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgfQog
CiAgICAgZnVuY3Rpb24gc2FuaXRpemVfdW5wYWlyZWRfc3Vycm9nYXRlcyhzdHIpIHsKLSAgICAg
ICAgcmV0dXJuIHN0ci5yZXBsYWNlKC8oW1x1ZDgwMC1cdWRiZmZdKSg/IVtcdWRjMDAtXHVkZmZm
XSkvZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKF8sIHVucGFpcmVkKQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBjb2RlX3VuaXRfc3RyKHVucGFpcmVkKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0pCi0gICAgICAgICAgICAgICAgICAvLyBUaGlzIHJlcGxhY2VtZW50IGlzIGludGVu
dGlvbmFsbHkgaW1wbGVtZW50ZWQgd2l0aG91dCBhbgotICAgICAgICAgICAgICAgICAgLy8gRVMy
MDE4IG5lZ2F0aXZlIGxvb2tiZWhpbmQgYXNzZXJ0aW9uIHRvIHN1cHBvcnQgcnVudGltZXMKLSAg
ICAgICAgICAgICAgICAgIC8vIHdoaWNoIGRvIG5vdCB5ZXQgaW1wbGVtZW50IHRoYXQgbGFuZ3Vh
Z2UgZmVhdHVyZS4KLSAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC8oXnxbXlx1ZDgwMC1cdWRi
ZmZdKShbXHVkYzAwLVx1ZGZmZl0pL2csCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5j
dGlvbihfLCBwcmV2aW91cywgdW5wYWlyZWQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICgvW1x1ZGMwMC1cdWRmZmZdLy50ZXN0KHByZXZpb3VzKSkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzID0gY29kZV91bml0X3N0cihwcmV2aW91cyk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBwcmV2aW91cyArIGNvZGVfdW5pdF9zdHIodW5wYWlyZWQpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgIHJldHVybiBzdHIucmVwbGFjZSgK
KyAgICAgICAgICAgIC8oW1x1ZDgwMC1cdWRiZmZdKykoPyFbXHVkYzAwLVx1ZGZmZl0pfChefFte
XHVkODAwLVx1ZGJmZl0pKFtcdWRjMDAtXHVkZmZmXSspL2csCisgICAgICAgICAgICBmdW5jdGlv
bihfLCBsb3csIHByZWZpeCwgaGlnaCkgeworICAgICAgICAgICAgICAgIHZhciBvdXRwdXQgPSBw
cmVmaXggfHwgIiI7ICAvLyBwcmVmaXggbWF5IGJlIHVuZGVmaW5lZAorICAgICAgICAgICAgICAg
IHZhciBzdHJpbmcgPSBsb3cgfHwgaGlnaDsgIC8vIG9ubHkgb25lIG9mIHRoZXNlIGFsdGVybmF0
ZXMgY2FuIG1hdGNoCisgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHJpbmcu
bGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0ICs9IGNvZGVfdW5pdF9z
dHIoc3RyaW5nW2ldKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJu
IG91dHB1dDsKKyAgICAgICAgICAgIH0pOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHNhbml0aXpl
X2FsbF91bnBhaXJlZF9zdXJyb2dhdGVzKHRlc3RzKSB7CkBAIC0yNDczLDcgKzMxMzEsNyBAQCBw
b2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgZm9yRWFjaCAodGhp
cy5hbGxfZG9uZV9jYWxsYmFja3MsCiAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGNhbGxiYWNr
KQogICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayh0aGlz
X29iai50ZXN0cywgdGhpc19vYmouc3RhdHVzKTsKKyAgICAgICAgICAgICAgICAgICAgIGNhbGxi
YWNrKHRoaXNfb2JqLnRlc3RzLCB0aGlzX29iai5zdGF0dXMsIHRoaXNfb2JqLmFzc2VydHNfcnVu
KTsKICAgICAgICAgICAgICAgICAgfSk7CiAgICAgfTsKIApAQCAtMjQ4NCwyNCArMzE0Miw4IEBA
IHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAgICB2YXIgbWVzc2Fn
ZV9wb3J0OwogCiAgICAgICAgIGlmIChpc19zZXJ2aWNlX3dvcmtlcih3b3JrZXIpKSB7Ci0gICAg
ICAgICAgICBpZiAod2luZG93Lk1lc3NhZ2VDaGFubmVsKSB7Ci0gICAgICAgICAgICAgICAgLy8g
VGhlIFNlcnZpY2VXb3JrZXIncyBpbXBsaWNpdCBNZXNzYWdlUG9ydCBpcyBjdXJyZW50bHkgbm90
Ci0gICAgICAgICAgICAgICAgLy8gcmVsaWFibHkgYWNjZXNzaWJsZSBmcm9tIHRoZSBTZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGUgZHVlIHRvCi0gICAgICAgICAgICAgICAgLy8gQmxpbmsgc2V0dGlu
ZyBNZXNzYWdlRXZlbnQuc291cmNlIHRvIG51bGwgZm9yIG1lc3NhZ2VzIHNlbnQKLSAgICAgICAg
ICAgICAgICAvLyB2aWEgU2VydmljZVdvcmtlci5wb3N0TWVzc2FnZSgpLiBVbnRpbCB0aGF0J3Mg
cmVzb2x2ZWQsCi0gICAgICAgICAgICAgICAgLy8gY3JlYXRlIGFuIGV4cGxpY2l0IE1lc3NhZ2VD
aGFubmVsIGFuZCBwYXNzIG9uZSBlbmQgdG8gdGhlCi0gICAgICAgICAgICAgICAgLy8gd29ya2Vy
LgotICAgICAgICAgICAgICAgIHZhciBtZXNzYWdlX2NoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5u
ZWwoKTsKLSAgICAgICAgICAgICAgICBtZXNzYWdlX3BvcnQgPSBtZXNzYWdlX2NoYW5uZWwucG9y
dDE7Ci0gICAgICAgICAgICAgICAgbWVzc2FnZV9wb3J0LnN0YXJ0KCk7Ci0gICAgICAgICAgICAg
ICAgd29ya2VyLnBvc3RNZXNzYWdlKHt0eXBlOiAiY29ubmVjdCJ9LCBbbWVzc2FnZV9jaGFubmVs
LnBvcnQyXSk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIC8vIElmIE1l
c3NhZ2VDaGFubmVsIGlzIG5vdCBhdmFpbGFibGUsIHRoZW4gdHJ5IHRoZQotICAgICAgICAgICAg
ICAgIC8vIFNlcnZpY2VXb3JrZXIucG9zdE1lc3NhZ2UoKSBhcHByb2FjaCB1c2luZyBNZXNzYWdl
RXZlbnQuc291cmNlCi0gICAgICAgICAgICAgICAgLy8gb24gdGhlIG90aGVyIGVuZC4KLSAgICAg
ICAgICAgICAgICBtZXNzYWdlX3BvcnQgPSBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlcjsKLSAgICAg
ICAgICAgICAgICB3b3JrZXIucG9zdE1lc3NhZ2Uoe3R5cGU6ICJjb25uZWN0In0pOwotICAgICAg
ICAgICAgfQorICAgICAgICAgICAgbWVzc2FnZV9wb3J0ID0gbmF2aWdhdG9yLnNlcnZpY2VXb3Jr
ZXI7CisgICAgICAgICAgICB3b3JrZXIucG9zdE1lc3NhZ2Uoe3R5cGU6ICJjb25uZWN0In0pOwog
ICAgICAgICB9IGVsc2UgaWYgKGlzX3NoYXJlZF93b3JrZXIod29ya2VyKSkgewogICAgICAgICAg
ICAgbWVzc2FnZV9wb3J0ID0gd29ya2VyLnBvcnQ7CiAgICAgICAgICAgICBtZXNzYWdlX3BvcnQu
c3RhcnQoKTsKQEAgLTI3MDQsNyArMzM0Niw3IEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24g
Zm9ybXMgWzNdLgogICAgICAgICAgICAgdGhpcy5waGFzZSA9IHRoaXMuSEFWRV9SRVNVTFRTOwog
ICAgICAgICB9CiAgICAgICAgIHZhciBkb25lX2NvdW50ID0gdGVzdHMudGVzdHMubGVuZ3RoIC0g
dGVzdHMubnVtX3BlbmRpbmc7Ci0gICAgICAgIGlmICh0aGlzLm91dHB1dF9ub2RlKSB7CisgICAg
ICAgIGlmICh0aGlzLm91dHB1dF9ub2RlICYmICF0ZXN0cy5oaWRlX3Rlc3Rfc3RhdGUpIHsKICAg
ICAgICAgICAgIGlmIChkb25lX2NvdW50IDwgMTAwIHx8CiAgICAgICAgICAgICAgICAgKGRvbmVf
Y291bnQgPCAxMDAwICYmIGRvbmVfY291bnQgJSAxMDAgPT09IDApIHx8CiAgICAgICAgICAgICAg
ICAgZG9uZV9jb3VudCAlIDEwMDAgPT09IDApIHsKQEAgLTI3MTUsNyArMzM1Nyw3IEBAIHBvbGlj
aWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAgICB9CiAgICAgfTsKIAotICAg
IE91dHB1dC5wcm90b3R5cGUuc2hvd19yZXN1bHRzID0gZnVuY3Rpb24gKHRlc3RzLCBoYXJuZXNz
X3N0YXR1cykgeworICAgIE91dHB1dC5wcm90b3R5cGUuc2hvd19yZXN1bHRzID0gZnVuY3Rpb24g
KHRlc3RzLCBoYXJuZXNzX3N0YXR1cywgYXNzZXJ0c19ydW4pIHsKICAgICAgICAgaWYgKHRoaXMu
cGhhc2UgPj0gdGhpcy5DT01QTEVURSkgewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CkBAIC0yNzQ0LDIxICszMzg2LDEwIEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMg
WzNdLgogICAgICAgICAgICAgaGVhZHNbMF0uYXBwZW5kQ2hpbGQoc3R5bGVzaGVldCk7CiAgICAg
ICAgIH0KIAotICAgICAgICB2YXIgc3RhdHVzX3RleHRfaGFybmVzcyA9IHt9OwotICAgICAgICBz
dGF0dXNfdGV4dF9oYXJuZXNzW2hhcm5lc3Nfc3RhdHVzLk9LXSA9ICJPSyI7Ci0gICAgICAgIHN0
YXR1c190ZXh0X2hhcm5lc3NbaGFybmVzc19zdGF0dXMuRVJST1JdID0gIkVycm9yIjsKLSAgICAg
ICAgc3RhdHVzX3RleHRfaGFybmVzc1toYXJuZXNzX3N0YXR1cy5USU1FT1VUXSA9ICJUaW1lb3V0
IjsKLQotICAgICAgICB2YXIgc3RhdHVzX3RleHQgPSB7fTsKLSAgICAgICAgc3RhdHVzX3RleHRb
VGVzdC5wcm90b3R5cGUuUEFTU10gPSAiUGFzcyI7Ci0gICAgICAgIHN0YXR1c190ZXh0W1Rlc3Qu
cHJvdG90eXBlLkZBSUxdID0gIkZhaWwiOwotICAgICAgICBzdGF0dXNfdGV4dFtUZXN0LnByb3Rv
dHlwZS5USU1FT1VUXSA9ICJUaW1lb3V0IjsKLSAgICAgICAgc3RhdHVzX3RleHRbVGVzdC5wcm90
b3R5cGUuTk9UUlVOXSA9ICJOb3QgUnVuIjsKLQogICAgICAgICB2YXIgc3RhdHVzX251bWJlciA9
IHt9OwogICAgICAgICBmb3JFYWNoKHRlc3RzLAogICAgICAgICAgICAgICAgIGZ1bmN0aW9uKHRl
c3QpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXR1cyA9IHN0YXR1c190ZXh0W3Rlc3Qu
c3RhdHVzXTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXR1cyA9IHRlc3QuZm9ybWF0X3N0
YXR1cygpOwogICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzX251bWJlci5oYXNPd25Qcm9w
ZXJ0eShzdGF0dXMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXNfbnVtYmVyW3N0
YXR1c10gKz0gMTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTI3NzUsOCArMzQw
Niw3IEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBbImgyIiwge30sICJTdW1tYXJ5Il0sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgewotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc3RhdHVz
ID0gc3RhdHVzX3RleHRfaGFybmVzc1toYXJuZXNzX3N0YXR1cy5zdGF0dXNdOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXR1cyA9IGhhcm5lc3Nfc3RhdHVzLmZv
cm1hdF9zdGF0dXMoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBy
diA9IFtbInNlY3Rpb24iLCB7fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgWyJwIiwge30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiSGFybmVzcyBzdGF0dXM6ICIsCkBAIC0yNzk4LDEzICszNDI4LDE0IEBA
IHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZhciBydiA9IFtbImRpdiIsIHt9XV07CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2YXIgaSA9IDA7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB3aGlsZSAoc3RhdHVzX3RleHQuaGFzT3duUHJvcGVydHkoaSkpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzX251bWJlci5oYXNPd25Qcm9wZXJ0
eShzdGF0dXNfdGV4dFtpXSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyIHN0YXR1cyA9IHN0YXR1c190ZXh0W2ldOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBydlswXS5wdXNoKFsiZGl2IiwgeyJjbGFzcyI6c3Rh
dHVzX2NsYXNzKHN0YXR1cyl9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
d2hpbGUgKFRlc3QucHJvdG90eXBlLnN0YXR1c19mb3JtYXRzLmhhc093blByb3BlcnR5KGkpKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXR1c19udW1i
ZXIuaGFzT3duUHJvcGVydHkoVGVzdC5wcm90b3R5cGUuc3RhdHVzX2Zvcm1hdHNbaV0pKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzdGF0dXMgPSBU
ZXN0LnByb3RvdHlwZS5zdGF0dXNfZm9ybWF0c1tpXTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcnZbMF0ucHVzaChbImRpdiIsIHt9LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImxhYmVsIiwge30s
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBbImlucHV0Iiwge3R5cGU6ImNoZWNrYm94IiwgY2hlY2tlZDoiY2hlY2tlZCJ9XSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1
c19udW1iZXJbc3RhdHVzXSArICIgIiArIHN0YXR1c11dKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c19udW1iZXJbc3RhdHVz
XSArICIgIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFsic3BhbiIsIHsiY2xhc3MiOnN0YXR1c19jbGFzcyhzdGF0dXMpfSwgc3RhdHVz
XV1dKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSsrOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQpAQCAtMjgyNCwxMyArMzQ1NSwxMyBAQCBwb2xpY2llcyBhbmQg
Y29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3VsdF9jbGFzcyA9IGVsZW1lbnQucGFy
ZW50Tm9kZS5nZXRBdHRyaWJ1dGUoImNsYXNzIik7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2YXIgcmVzdWx0X2NsYXNzID0gZWxlbWVudC5xdWVyeVNlbGVjdG9yKCJzcGFuW2Ns
YXNzXSIpLmdldEF0dHJpYnV0ZSgiY2xhc3MiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZhciBzdHlsZV9lbGVtZW50ID0gb3V0cHV0X2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3Io
InN0eWxlI2hpZGUtIiArIHJlc3VsdF9jbGFzcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2YXIgaW5wdXRfZWxlbWVudCA9IGVsZW1lbnQucXVlcnlTZWxlY3RvcigiaW5wdXQi
KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc3R5bGVfZWxlbWVudCAm
JiAhaW5wdXRfZWxlbWVudC5jaGVja2VkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3R5bGVfZWxlbWVudCA9IG91dHB1dF9kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
eGh0bWxfbnMsICJzdHlsZSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0eWxlX2VsZW1lbnQuaWQgPSAiaGlkZS0iICsgcmVzdWx0X2NsYXNzOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlX2VsZW1lbnQudGV4dENvbnRlbnQgPSAidGFi
bGUjcmVzdWx0cyA+IHRib2R5ID4gdHIuIityZXN1bHRfY2xhc3MrIntkaXNwbGF5Om5vbmV9IjsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZV9lbGVtZW50LnRleHRD
b250ZW50ID0gInRhYmxlI3Jlc3VsdHMgPiB0Ym9keSA+IHRyLm92ZXJhbGwtIityZXN1bHRfY2xh
c3MrIntkaXNwbGF5Om5vbmV9IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBvdXRwdXRfZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzdHlsZV9lbGVtZW50KTsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc3R5bGVfZWxlbWVudCAmJiBp
bnB1dF9lbGVtZW50LmNoZWNrZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdHlsZV9lbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoc3R5bGVfZWxlbWVudCk7
CkBAIC0yODcxLDYgKzM1MDIsNTIgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBb
M10uCiAgICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgIH0KIAorICAgICAgICB2YXIgYXNz
ZXJ0c19ydW5fYnlfdGVzdCA9IG5ldyBNYXAoKTsKKyAgICAgICAgYXNzZXJ0c19ydW4uZm9yRWFj
aChhc3NlcnQgPT4geworICAgICAgICAgICAgaWYgKCFhc3NlcnRzX3J1bl9ieV90ZXN0Lmhhcyhh
c3NlcnQudGVzdCkpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnRzX3J1bl9ieV90ZXN0LnNldChh
c3NlcnQudGVzdCwgW10pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYXNzZXJ0c19ydW5f
YnlfdGVzdC5nZXQoYXNzZXJ0LnRlc3QpLnB1c2goYXNzZXJ0KTsKKyAgICAgICAgfSk7CisKKyAg
ICAgICAgZnVuY3Rpb24gZ2V0X2Fzc2VydHNfb3V0cHV0KHRlc3QpIHsKKyAgICAgICAgICAgIHZh
ciBhc3NlcnRzID0gYXNzZXJ0c19ydW5fYnlfdGVzdC5nZXQodGVzdCk7CisgICAgICAgICAgICBp
ZiAoIWFzc2VydHMpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gIk5vIGFzc2VydHMgcmFuIjsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJ2ID0gIjx0YWJsZT4iOworICAgICAgICAgICAg
cnYgKz0gYXNzZXJ0cy5tYXAoYXNzZXJ0ID0+IHsKKyAgICAgICAgICAgICAgICB2YXIgb3V0cHV0
X2ZuID0gIjxzdHJvbmc+IiArIGVzY2FwZV9odG1sKGFzc2VydC5hc3NlcnRfbmFtZSkgKyAiPC9z
dHJvbmc+KCI7CisgICAgICAgICAgICAgICAgdmFyIHByZWZpeF9sZW4gPSBvdXRwdXRfZm4ubGVu
Z3RoOworICAgICAgICAgICAgICAgIHZhciBvdXRwdXRfYXJncyA9IGFzc2VydC5hcmdzOworICAg
ICAgICAgICAgICAgIHZhciBvdXRwdXRfbGVuID0gb3V0cHV0X2FyZ3MucmVkdWNlKChwcmV2LCBj
dXJyZW50KSA9PiBwcmV2K2N1cnJlbnQsIHByZWZpeF9sZW4pOworICAgICAgICAgICAgICAgIGlm
IChvdXRwdXRfbGVuW291dHB1dF9sZW4ubGVuZ3RoIC0gMV0gPiA1MCkgeworICAgICAgICAgICAg
ICAgICAgICBvdXRwdXRfYXJncyA9IG91dHB1dF9hcmdzLm1hcCgoeCwgaSkgPT4KKyAgICAgICAg
ICAgICAgICAgICAgKGkgPiAwID8gIiAgIi5yZXBlYXQocHJlZml4X2xlbikgOiAiIiApKyB4ICsg
KGkgPCBvdXRwdXRfYXJncy5sZW5ndGggLSAxID8gIixcbiIgOiAiIikpOworICAgICAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIG91dHB1dF9hcmdzID0gb3V0cHV0X2Fy
Z3MubWFwKCh4LCBpKSA9PiB4ICsgKGkgPCBvdXRwdXRfYXJncy5sZW5ndGggLSAxID8gIiwgIiA6
ICIiKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG91dHB1dF9mbiArPSBl
c2NhcGVfaHRtbChvdXRwdXRfYXJncy5qb2luKCIiKSk7CisgICAgICAgICAgICAgICAgb3V0cHV0
X2ZuICs9ICcpJzsKKyAgICAgICAgICAgICAgICB2YXIgb3V0cHV0X2xvY2F0aW9uOworICAgICAg
ICAgICAgICAgIGlmIChhc3NlcnQuc3RhY2spIHsKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0
X2xvY2F0aW9uID0gYXNzZXJ0LnN0YWNrLnNwbGl0KCJcbiIsIDEpWzBdLnJlcGxhY2UoL0A/XHcr
OlwvXC9bXiAiXC9dKyg/OjpcZCspPy9nLCAiICIpOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICByZXR1cm4gIjx0ciBjbGFzcz0nb3ZlcmFsbC0iICsKKyAgICAgICAgICAgICAg
ICAgICAgc3RhdHVzX2NsYXNzKFRlc3QucHJvdG90eXBlLnN0YXR1c19mb3JtYXRzW2Fzc2VydC5z
dGF0dXNdKSArICInPiIgKworICAgICAgICAgICAgICAgICAgICAiPHRkIGNsYXNzPSciICsKKyAg
ICAgICAgICAgICAgICAgICAgc3RhdHVzX2NsYXNzKFRlc3QucHJvdG90eXBlLnN0YXR1c19mb3Jt
YXRzW2Fzc2VydC5zdGF0dXNdKSArICInPiIgKworICAgICAgICAgICAgICAgICAgICBUZXN0LnBy
b3RvdHlwZS5zdGF0dXNfZm9ybWF0c1thc3NlcnQuc3RhdHVzXSArICI8L3RkPiIgKworICAgICAg
ICAgICAgICAgICAgICAiPHRkPjxwcmU+IiArCisgICAgICAgICAgICAgICAgICAgIG91dHB1dF9m
biArCisgICAgICAgICAgICAgICAgICAgIChvdXRwdXRfbG9jYXRpb24gPyAiXG4iICsgZXNjYXBl
X2h0bWwob3V0cHV0X2xvY2F0aW9uKSA6ICIiKSArCisgICAgICAgICAgICAgICAgICAgICI8L3By
ZT48L3RkPjwvdHI+IjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICkuam9pbigiXG4iKTsK
KyAgICAgICAgICAgIHJ2ICs9ICI8L3RhYmxlPiI7CisgICAgICAgICAgICByZXR1cm4gcnY7Cisg
ICAgICAgIH0KKwogICAgICAgICBsb2cuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKHhodG1sX25zLCAic2VjdGlvbiIpKTsKICAgICAgICAgdmFyIGFzc2VydGlvbnMgPSBoYXNf
YXNzZXJ0aW9ucygpOwogICAgICAgICB2YXIgaHRtbCA9ICI8aDI+RGV0YWlsczwvaDI+PHRhYmxl
IGlkPSdyZXN1bHRzJyAiICsgKGFzc2VydGlvbnMgPyAiY2xhc3M9J2Fzc2VydGlvbnMnIiA6ICIi
ICkgKyAiPiIgKwpAQCAtMjg3OSwxOSArMzU1NiwyNiBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0
aW9uIGZvcm1zIFszXS4KICAgICAgICAgICAgICI8dGg+TWVzc2FnZTwvdGg+PC90cj48L3RoZWFk
PiIgKwogICAgICAgICAgICAgIjx0Ym9keT4iOwogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IHRlc3RzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICBodG1sICs9ICc8dHIgY2xhc3M9Iicg
KwotICAgICAgICAgICAgICAgIGVzY2FwZV9odG1sKHN0YXR1c19jbGFzcyhzdGF0dXNfdGV4dFt0
ZXN0c1tpXS5zdGF0dXNdKSkgKwotICAgICAgICAgICAgICAgICciPjx0ZD4nICsKLSAgICAgICAg
ICAgICAgICBlc2NhcGVfaHRtbChzdGF0dXNfdGV4dFt0ZXN0c1tpXS5zdGF0dXNdKSArCisgICAg
ICAgICAgICB2YXIgdGVzdCA9IHRlc3RzW2ldOworICAgICAgICAgICAgaHRtbCArPSAnPHRyIGNs
YXNzPSJvdmVyYWxsLScgKworICAgICAgICAgICAgICAgIHN0YXR1c19jbGFzcyh0ZXN0LmZvcm1h
dF9zdGF0dXMoKSkgKworICAgICAgICAgICAgICAgICciPicgKworICAgICAgICAgICAgICAgICc8
dGQgY2xhc3M9IicgKworICAgICAgICAgICAgICAgIHN0YXR1c19jbGFzcyh0ZXN0LmZvcm1hdF9z
dGF0dXMoKSkgKworICAgICAgICAgICAgICAgICciPicgKworICAgICAgICAgICAgICAgIHRlc3Qu
Zm9ybWF0X3N0YXR1cygpICsKICAgICAgICAgICAgICAgICAiPC90ZD48dGQ+IiArCi0gICAgICAg
ICAgICAgICAgZXNjYXBlX2h0bWwodGVzdHNbaV0ubmFtZSkgKworICAgICAgICAgICAgICAgIGVz
Y2FwZV9odG1sKHRlc3QubmFtZSkgKwogICAgICAgICAgICAgICAgICI8L3RkPjx0ZD4iICsKLSAg
ICAgICAgICAgICAgICAoYXNzZXJ0aW9ucyA/IGVzY2FwZV9odG1sKGdldF9hc3NlcnRpb24odGVz
dHNbaV0pKSArICI8L3RkPjx0ZD4iIDogIiIpICsKLSAgICAgICAgICAgICAgICBlc2NhcGVfaHRt
bCh0ZXN0c1tpXS5tZXNzYWdlID8gdGVzdHNbaV0ubWVzc2FnZSA6ICIgIikgKworICAgICAgICAg
ICAgICAgIChhc3NlcnRpb25zID8gZXNjYXBlX2h0bWwoZ2V0X2Fzc2VydGlvbih0ZXN0KSkgKyAi
PC90ZD48dGQ+IiA6ICIiKSArCisgICAgICAgICAgICAgICAgZXNjYXBlX2h0bWwodGVzdC5tZXNz
YWdlID8gdGVzdHNbaV0ubWVzc2FnZSA6ICIgIikgKwogICAgICAgICAgICAgICAgICh0ZXN0c1tp
XS5zdGFjayA/ICI8cHJlPiIgKwogICAgICAgICAgICAgICAgICBlc2NhcGVfaHRtbCh0ZXN0c1tp
XS5zdGFjaykgKwotICAgICAgICAgICAgICAgICAiPC9wcmU+IjogIiIpICsKLSAgICAgICAgICAg
ICAgICAiPC90ZD48L3RyPiI7CisgICAgICAgICAgICAgICAgICI8L3ByZT4iOiAiIik7CisgICAg
ICAgICAgICBpZiAoISh0ZXN0IGluc3RhbmNlb2YgUmVtb3RlVGVzdCkpIHsKKyAgICAgICAgICAg
ICAgICAgaHRtbCArPSAiPGRldGFpbHM+PHN1bW1hcnk+QXNzZXJ0cyBydW48L3N1bW1hcnk+IiAr
IGdldF9hc3NlcnRzX291dHB1dCh0ZXN0KSArICI8L2RldGFpbHM+IgorICAgICAgICAgICAgfQor
ICAgICAgICAgICAgaHRtbCArPSAiPC90ZD48L3RyPiI7CiAgICAgICAgIH0KICAgICAgICAgaHRt
bCArPSAiPC90Ym9keT48L3RhYmxlPiI7CiAgICAgICAgIHRyeSB7CkBAIC0zMDczLDkgKzM3NTcs
NiBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgKi8KICAgICBm
dW5jdGlvbiBhc3NlcnQoZXhwZWN0ZWRfdHJ1ZSwgZnVuY3Rpb25fbmFtZSwgZGVzY3JpcHRpb24s
IGVycm9yLCBzdWJzdGl0dXRpb25zKQogICAgIHsKLSAgICAgICAgaWYgKHRlc3RzLnRlc3RzLmxl
bmd0aCA9PT0gMCkgewotICAgICAgICAgICAgdGVzdHMuc2V0X2ZpbGVfaXNfdGVzdCgpOwotICAg
ICAgICB9CiAgICAgICAgIGlmIChleHBlY3RlZF90cnVlICE9PSB0cnVlKSB7CiAgICAgICAgICAg
ICB2YXIgbXNnID0gbWFrZV9tZXNzYWdlKGZ1bmN0aW9uX25hbWUsIGRlc2NyaXB0aW9uLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciwgc3Vic3RpdHV0aW9ucyk7CkBA
IC0zMDg1LDE0ICszNzY2LDE3IEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNd
LgogCiAgICAgZnVuY3Rpb24gQXNzZXJ0aW9uRXJyb3IobWVzc2FnZSkKICAgICB7CisgICAgICAg
IGlmICh0eXBlb2YgbWVzc2FnZSA9PSAic3RyaW5nIikgeworICAgICAgICAgICAgbWVzc2FnZSA9
IHNhbml0aXplX3VucGFpcmVkX3N1cnJvZ2F0ZXMobWVzc2FnZSk7CisgICAgICAgIH0KICAgICAg
ICAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZTsKLSAgICAgICAgdGhpcy5zdGFjayA9IHRoaXMuZ2V0
X3N0YWNrKCk7CisgICAgICAgIHRoaXMuc3RhY2sgPSBnZXRfc3RhY2soKTsKICAgICB9CiAgICAg
ZXhwb3NlKEFzc2VydGlvbkVycm9yLCAiQXNzZXJ0aW9uRXJyb3IiKTsKIAogICAgIEFzc2VydGlv
bkVycm9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoRXJyb3IucHJvdG90eXBlKTsKIAotICAg
IEFzc2VydGlvbkVycm9yLnByb3RvdHlwZS5nZXRfc3RhY2sgPSBmdW5jdGlvbigpIHsKKyAgICBj
b25zdCBnZXRfc3RhY2sgPSBmdW5jdGlvbigpIHsKICAgICAgICAgdmFyIHN0YWNrID0gbmV3IEVy
cm9yKCkuc3RhY2s7CiAgICAgICAgIC8vIElFMTEgZG9lcyBub3QgaW5pdGlhbGl6ZSAnRXJyb3Iu
c3RhY2snIHVudGlsIHRoZSBvYmplY3QgaXMgdGhyb3duLgogICAgICAgICBpZiAoIXN0YWNrKSB7
CkBAIC0zMTM4LDYgKzM4MjIsMTMgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBb
M10uCiAgICAgICAgIHJldHVybiBsaW5lcy5zbGljZShpKS5qb2luKCJcbiIpOwogICAgIH0KIAor
ICAgIGZ1bmN0aW9uIE9wdGlvbmFsRmVhdHVyZVVuc3VwcG9ydGVkRXJyb3IobWVzc2FnZSkKKyAg
ICB7CisgICAgICAgIEFzc2VydGlvbkVycm9yLmNhbGwodGhpcywgbWVzc2FnZSk7CisgICAgfQor
ICAgIE9wdGlvbmFsRmVhdHVyZVVuc3VwcG9ydGVkRXJyb3IucHJvdG90eXBlID0gT2JqZWN0LmNy
ZWF0ZShBc3NlcnRpb25FcnJvci5wcm90b3R5cGUpOworICAgIGV4cG9zZShPcHRpb25hbEZlYXR1
cmVVbnN1cHBvcnRlZEVycm9yLCAiT3B0aW9uYWxGZWF0dXJlVW5zdXBwb3J0ZWRFcnJvciIpOwor
CiAgICAgZnVuY3Rpb24gbWFrZV9tZXNzYWdlKGZ1bmN0aW9uX25hbWUsIGRlc2NyaXB0aW9uLCBl
cnJvciwgc3Vic3RpdHV0aW9ucykKICAgICB7CiAgICAgICAgIGZvciAodmFyIHAgaW4gc3Vic3Rp
dHV0aW9ucykgewpAQCAtMzMwNiw3ICszOTk3LDcgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlv
biBmb3JtcyBbM10uCiAgICAgZnVuY3Rpb24gZ2V0X3RpdGxlKCkKICAgICB7CiAgICAgICAgIGlm
ICgnZG9jdW1lbnQnIGluIGdsb2JhbF9zY29wZSkgewotICAgICAgICAgICAgLy9Eb24ndCB1c2Ug
ZG9jdW1lbnQudGl0bGUgdG8gd29yayBhcm91bmQgYW4gT3BlcmEgYnVnIGluIFhIVE1MIGRvY3Vt
ZW50cworICAgICAgICAgICAgLy9Eb24ndCB1c2UgZG9jdW1lbnQudGl0bGUgdG8gd29yayBhcm91
bmQgYW4gT3BlcmEvUHJlc3RvIGJ1ZyBpbiBYSFRNTCBkb2N1bWVudHMKICAgICAgICAgICAgIHZh
ciB0aXRsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0aXRsZSIpWzBdOwogICAg
ICAgICAgICAgaWYgKHRpdGxlICYmIHRpdGxlLmZpcnN0Q2hpbGQgJiYgdGl0bGUuZmlyc3RDaGls
ZC5kYXRhKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRpdGxlLmZpcnN0Q2hpbGQuZGF0YTsK
QEAgLTMzNjUsMzggKzQwNTYsNTYgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBb
M10uCiAgICAgdmFyIHRlc3RzID0gbmV3IFRlc3RzKCk7CiAKICAgICBpZiAoZ2xvYmFsX3Njb3Bl
LmFkZEV2ZW50TGlzdGVuZXIpIHsKLSAgICAgICAgdmFyIGVycm9yX2hhbmRsZXIgPSBmdW5jdGlv
bihlKSB7Ci0gICAgICAgICAgICBpZiAodGVzdHMudGVzdHMubGVuZ3RoID09PSAwICYmICF0ZXN0
cy5hbGxvd191bmNhdWdodF9leGNlcHRpb24pIHsKLSAgICAgICAgICAgICAgICB0ZXN0cy5zZXRf
ZmlsZV9pc190ZXN0KCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHZhciBzdGFjazsK
LSAgICAgICAgICAgIGlmIChlLmVycm9yICYmIGUuZXJyb3Iuc3RhY2spIHsKLSAgICAgICAgICAg
ICAgICBzdGFjayA9IGUuZXJyb3Iuc3RhY2s7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgICAgIHN0YWNrID0gZS5maWxlbmFtZSArICI6IiArIGUubGluZW5vICsgIjoiICsgZS5j
b2xubzsKLSAgICAgICAgICAgIH0KLQorICAgICAgICB2YXIgZXJyb3JfaGFuZGxlciA9IGZ1bmN0
aW9uKGVycm9yLCBtZXNzYWdlLCBzdGFjaykgeworICAgICAgICAgICAgdmFyIG9wdGlvbmFsX3Vu
c3VwcG9ydGVkID0gZXJyb3IgaW5zdGFuY2VvZiBPcHRpb25hbEZlYXR1cmVVbnN1cHBvcnRlZEVy
cm9yOwogICAgICAgICAgICAgaWYgKHRlc3RzLmZpbGVfaXNfdGVzdCkgewogICAgICAgICAgICAg
ICAgIHZhciB0ZXN0ID0gdGVzdHMudGVzdHNbMF07CiAgICAgICAgICAgICAgICAgaWYgKHRlc3Qu
cGhhc2UgPj0gdGVzdC5waGFzZXMuSEFTX1JFU1VMVCkgewogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHRlc3Quc2V0X3N0YXR1
cyh0ZXN0LkZBSUwsIGUubWVzc2FnZSwgc3RhY2spOworICAgICAgICAgICAgICAgIHZhciBzdGF0
dXMgPSBvcHRpb25hbF91bnN1cHBvcnRlZCA/IHRlc3QuUFJFQ09ORElUSU9OX0ZBSUxFRCA6IHRl
c3QuRkFJTDsKKyAgICAgICAgICAgICAgICB0ZXN0LnNldF9zdGF0dXMoc3RhdHVzLCBtZXNzYWdl
LCBzdGFjayk7CiAgICAgICAgICAgICAgICAgdGVzdC5waGFzZSA9IHRlc3QucGhhc2VzLkhBU19S
RVNVTFQ7Ci0gICAgICAgICAgICAgICAgLy8gVGhlIGZvbGxvd2luZyBmdW5jdGlvbiBpbnZvY2F0
aW9uIGlzIHN1cGVyZmx1b3VzLgotICAgICAgICAgICAgICAgIC8vIFRPRE86IFJlbW92ZS4KLSAg
ICAgICAgICAgICAgICB0ZXN0LmRvbmUoKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRlc3Rz
LmFsbG93X3VuY2F1Z2h0X2V4Y2VwdGlvbikgewotICAgICAgICAgICAgICAgIHRlc3RzLnN0YXR1
cy5zdGF0dXMgPSB0ZXN0cy5zdGF0dXMuRVJST1I7Ci0gICAgICAgICAgICAgICAgdGVzdHMuc3Rh
dHVzLm1lc3NhZ2UgPSBlLm1lc3NhZ2U7CisgICAgICAgICAgICAgICAgdmFyIHN0YXR1cyA9IG9w
dGlvbmFsX3Vuc3VwcG9ydGVkID8gdGVzdHMuc3RhdHVzLlBSRUNPTkRJVElPTl9GQUlMRUQgOiB0
ZXN0cy5zdGF0dXMuRVJST1I7CisgICAgICAgICAgICAgICAgdGVzdHMuc3RhdHVzLnN0YXR1cyA9
IHN0YXR1czsKKyAgICAgICAgICAgICAgICB0ZXN0cy5zdGF0dXMubWVzc2FnZSA9IG1lc3NhZ2U7
CiAgICAgICAgICAgICAgICAgdGVzdHMuc3RhdHVzLnN0YWNrID0gc3RhY2s7CiAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBkb25lKCk7CisKKyAgICAgICAgICAgIC8vIERvIG5vdCB0cmFuc2l0
aW9uIHRvIHRoZSAiY29tcGxldGUiIHBoYXNlIGlmIHRoZSB0ZXN0IGhhcyBiZWVuCisgICAgICAg
ICAgICAvLyBjb25maWd1cmVkIHRvIGFsbG93IHVuY2F1Z2h0IGV4Y2VwdGlvbnMuIFRoaXMgZ2l2
ZXMgdGhlIHRlc3QgYW4KKyAgICAgICAgICAgIC8vIG9wcG9ydHVuaXR5IHRvIGRlZmluZSBzdWJ0
ZXN0cyBiYXNlZCBvbiB0aGUgZXhjZXB0aW9uIHJlcG9ydGluZworICAgICAgICAgICAgLy8gYmVo
YXZpb3IuCisgICAgICAgICAgICBpZiAoIXRlc3RzLmFsbG93X3VuY2F1Z2h0X2V4Y2VwdGlvbikg
eworICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfTsKIAot
ICAgICAgICBhZGRFdmVudExpc3RlbmVyKCJlcnJvciIsIGVycm9yX2hhbmRsZXIsIGZhbHNlKTsK
LSAgICAgICAgYWRkRXZlbnRMaXN0ZW5lcigidW5oYW5kbGVkcmVqZWN0aW9uIiwgZnVuY3Rpb24o
ZSl7IGVycm9yX2hhbmRsZXIoZS5yZWFzb24pOyB9LCBmYWxzZSk7CisgICAgICAgIGFkZEV2ZW50
TGlzdGVuZXIoImVycm9yIiwgZnVuY3Rpb24oZSkgeworICAgICAgICAgICAgdmFyIG1lc3NhZ2Ug
PSBlLm1lc3NhZ2U7CisgICAgICAgICAgICB2YXIgc3RhY2s7CisgICAgICAgICAgICBpZiAoZS5l
cnJvciAmJiBlLmVycm9yLnN0YWNrKSB7CisgICAgICAgICAgICAgICAgc3RhY2sgPSBlLmVycm9y
LnN0YWNrOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBzdGFjayA9IGUu
ZmlsZW5hbWUgKyAiOiIgKyBlLmxpbmVubyArICI6IiArIGUuY29sbm87CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBlcnJvcl9oYW5kbGVyKGUuZXJyb3IsIG1lc3NhZ2UsIHN0YWNrKTsKKyAg
ICAgICAgfSwgZmFsc2UpOworCisgICAgICAgIGFkZEV2ZW50TGlzdGVuZXIoInVuaGFuZGxlZHJl
amVjdGlvbiIsIGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgICAgIHZhciBtZXNzYWdlOworICAgICAg
ICAgICAgaWYgKGUucmVhc29uICYmIGUucmVhc29uLm1lc3NhZ2UpIHsKKyAgICAgICAgICAgICAg
ICBtZXNzYWdlID0gIlVuaGFuZGxlZCByZWplY3Rpb246ICIgKyBlLnJlYXNvbi5tZXNzYWdlOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtZXNzYWdlID0gIlVuaGFuZGxl
ZCByZWplY3Rpb24iOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdmFyIHN0YWNrOworICAg
ICAgICAgICAgaWYgKGUucmVhc29uICYmIGUucmVhc29uLnN0YWNrKSB7CisgICAgICAgICAgICAg
ICAgc3RhY2sgPSBlLnJlYXNvbi5zdGFjazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVy
cm9yX2hhbmRsZXIoZS5yZWFzb24sIG1lc3NhZ2UsIHN0YWNrKTsKKyAgICAgICAgfSwgZmFsc2Up
OwogICAgIH0KIAogICAgIHRlc3RfZW52aXJvbm1lbnQub25fdGVzdHNfcmVhZHkoKTsKQEAgLTM0
MzEsNTAgKzQxNDAsNjIgQEAgdGFibGUjcmVzdWx0cyB7XAogICAgIHdpZHRoOjEwMCU7XAogfVwK
IFwKLXRhYmxlI3Jlc3VsdHMgdGg6Zmlyc3QtY2hpbGQsXAotdGFibGUjcmVzdWx0cyB0ZDpmaXJz
dC1jaGlsZCB7XAotICAgIHdpZHRoOjRlbTtcCit0YWJsZSNyZXN1bHRzID4gdGhlYWQgPiB0ciA+
IHRoOmZpcnN0LWNoaWxkLFwKK3RhYmxlI3Jlc3VsdHMgPiB0Ym9keSA+IHRyID4gdGQ6Zmlyc3Qt
Y2hpbGQge1wKKyAgICB3aWR0aDo4ZW07XAogfVwKIFwKLXRhYmxlI3Jlc3VsdHMgdGg6bGFzdC1j
aGlsZCxcCi10YWJsZSNyZXN1bHRzIHRkOmxhc3QtY2hpbGQge1wKK3RhYmxlI3Jlc3VsdHMgPiB0
aGVhZCA+IHRyID4gdGg6bGFzdC1jaGlsZCxcCit0YWJsZSNyZXN1bHRzID4gdGhlYWQgPiB0ciA+
IHRkOmxhc3QtY2hpbGQge1wKICAgICB3aWR0aDo1MCU7XAogfVwKIFwKLXRhYmxlI3Jlc3VsdHMu
YXNzZXJ0aW9ucyB0aDpsYXN0LWNoaWxkLFwKLXRhYmxlI3Jlc3VsdHMuYXNzZXJ0aW9ucyB0ZDps
YXN0LWNoaWxkIHtcCit0YWJsZSNyZXN1bHRzLmFzc2VydGlvbnMgPiB0aGVhZCA+IHRyID4gdGg6
bGFzdC1jaGlsZCxcCit0YWJsZSNyZXN1bHRzLmFzc2VydGlvbnMgPiB0Ym9keSA+IHRyID4gdGQ6
bGFzdC1jaGlsZCB7XAogICAgIHdpZHRoOjM1JTtcCiB9XAogXAotdGFibGUjcmVzdWx0cyB0aCB7
XAordGFibGUjcmVzdWx0cyA+IHRoZWFkID4gPiB0ciA+IHRoIHtcCiAgICAgcGFkZGluZzowO1wK
ICAgICBwYWRkaW5nLWJvdHRvbTowLjVlbTtcCiAgICAgYm9yZGVyLWJvdHRvbTptZWRpdW0gc29s
aWQgYmxhY2s7XAogfVwKIFwKLXRhYmxlI3Jlc3VsdHMgdGQge1wKK3RhYmxlI3Jlc3VsdHMgPiB0
Ym9keSA+IHRyPiB0ZCB7XAogICAgIHBhZGRpbmc6MWVtO1wKICAgICBwYWRkaW5nLWJvdHRvbTow
LjVlbTtcCiAgICAgYm9yZGVyLWJvdHRvbTp0aGluIHNvbGlkIGJsYWNrO1wKIH1cCiBcCi10ci5w
YXNzID4gdGQ6Zmlyc3QtY2hpbGQge1wKKy5wYXNzIHtcCiAgICAgY29sb3I6Z3JlZW47XAogfVwK
IFwKLXRyLmZhaWwgPiB0ZDpmaXJzdC1jaGlsZCB7XAorLmZhaWwge1wKICAgICBjb2xvcjpyZWQ7
XAogfVwKIFwKLXRyLnRpbWVvdXQgPiB0ZDpmaXJzdC1jaGlsZCB7XAordHIudGltZW91dCB7XAog
ICAgIGNvbG9yOnJlZDtcCiB9XAogXAotdHIubm90cnVuID4gdGQ6Zmlyc3QtY2hpbGQge1wKK3Ry
Lm5vdHJ1biB7XAogICAgIGNvbG9yOmJsdWU7XAogfVwKIFwKLS5wYXNzID4gdGQ6Zmlyc3QtY2hp
bGQsIC5mYWlsID4gdGQ6Zmlyc3QtY2hpbGQsIC50aW1lb3V0ID4gdGQ6Zmlyc3QtY2hpbGQsIC5u
b3RydW4gPiB0ZDpmaXJzdC1jaGlsZCB7XAordHIub3B0aW9uYWx1bnN1cHBvcnRlZCB7XAorICAg
IGNvbG9yOmJsdWU7XAorfVwKK1wKKy5vayB7XAorICAgIGNvbG9yOmdyZWVuO1wKK31cCitcCisu
ZXJyb3Ige1wKKyAgICBjb2xvcjpyZWQ7XAorfVwKK1wKKy5wYXNzLCAuZmFpbCwgLnRpbWVvdXQs
IC5ub3RydW4sIC5vcHRpb25hbHVuc3VwcG9ydGVkIC5vaywgLnRpbWVvdXQsIC5lcnJvciB7XAog
ICAgIGZvbnQtdmFyaWFudDpzbWFsbC1jYXBzO1wKIH1cCiBcCkBAIC0zNDkxLDIzICs0MjEyLDcg
QEAgdGFibGUjcmVzdWx0cyBzcGFuLmFjdHVhbCB7XAogICAgIGZvbnQtZmFtaWx5OkRlamFWdSBT
YW5zIE1vbm8sIEJpdHN0cmVhbSBWZXJhIFNhbnMgTW9ubywgTW9ub3NwYWNlO1wKICAgICB3aGl0
ZS1zcGFjZTpwcmU7XAogfVwKLVwKLXNwYW4ub2sge1wKLSAgICBjb2xvcjpncmVlbjtcCi19XAot
XAotdHIuZXJyb3Ige1wKLSAgICBjb2xvcjpyZWQ7XAotfVwKLVwKLXNwYW4udGltZW91dCB7XAot
ICAgIGNvbG9yOnJlZDtcCi19XAotXAotc3Bhbi5vaywgc3Bhbi50aW1lb3V0LCBzcGFuLmVycm9y
IHtcCi0gICAgZm9udC12YXJpYW50OnNtYWxsLWNhcHM7XAotfVwKICI7CiAKLX0pKHRoaXMpOwor
fSkoc2VsZik7CiAvLyB2aW06IHNldCBleHBhbmR0YWIgc2hpZnR3aWR0aD00IHRhYnN0b3A9NDoK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2Uvd2Vic3FsL29wZW5EYXRhYmFzZS1kZXBy
ZWNhdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS93ZWJzcWwvb3BlbkRhdGFiYXNlLWRl
cHJlY2F0aW9uLmh0bWwKaW5kZXggYjAzNjg0NGVlYmM1MWYxMjA0NWMxNjExZmZjZTdhMjgwNGIz
OGI2NC4uMDkwZjk5ZDI1MjlhZGRkMjI2OWJiNmNmN2Y5YjU3OTE2MWI1MGMwZiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS93ZWJzcWwvb3BlbkRhdGFiYXNlLWRlcHJlY2F0aW9uLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS93ZWJzcWwvb3BlbkRhdGFiYXNlLWRlcHJlY2F0
aW9uLmh0bWwKQEAgLTgsNiArOCw3IEBACiAgICAgPC9oZWFkPgogICAgIDxib2R5PgogICAgICAg
ICA8c2NyaXB0Pgorc2V0dXAoeyBzaW5nbGVfdGVzdDogdHJ1ZSB9KTsKIGFzc2VydF9lcXVhbHMo
T2JqZWN0LmtleXMod2luZG93KS5pbmRleE9mKCJvcGVuRGF0YWJhc2UiKSwgLTEpOwogd2luZG93
Lm9wZW5EYXRhYmFzZShudWxsLCBudWxsLCBudWxsLCBudWxsKTsKIGRvbmUoKTsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW0tY29udHJvbGxlci5q
cyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVhZGFibGUtYnl0ZS1zdHJlYW0tY29udHJvbGxlci5q
cwppbmRleCBmZTgyZmE1YTFhMzZiMDYxNzZmNjQzMDEwNjg2MzYxZjNiYmJjNDBiLi4wOTI0MDQ1
MDZmMzBhZWRiZTY4MjAwNjlkNGU4MDM0ZGQxYTI5YTAxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9zdHJlYW1zL3JlYWRhYmxlLWJ5dGUtc3RyZWFtLWNvbnRyb2xsZXIuanMKKysrIGIvTGF5b3V0
VGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1ieXRlLXN0cmVhbS1jb250cm9sbGVyLmpzCkBAIC0yMCw3
ICsyMCw3IEBAIHRlc3QoZnVuY3Rpb24oKSB7CiAgICAgICAgIHR5cGU6ICJieXRlcyIKICAgICB9
KTsKIAotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigiQ2FuIG9ubHkgY2FsbCBSZWFk
YWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyLmVycm9yIG9uIGluc3RhbmNlcyBvZiBSZWFkYWJsZUJ5
dGVTdHJlYW1Db250cm9sbGVyIiksCisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsCiAg
ICAgICAgIGZ1bmN0aW9uKCkgeyBjb250cm9sbGVyLmVycm9yLmFwcGx5KHJzKTsgfSk7CiB9LCAi
Q2FsbGluZyBlcnJvcigpIHdpdGggYSB0aGlzIG9iamVjdCBkaWZmZXJlbnQgZnJvbSBSZWFkYWJs
ZUJ5dGVTdHJlYW1Db250cm9sbGVyIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvciIpOwogCkBAIC0z
NCw3ICszNCw3IEBAIHRlc3QoZnVuY3Rpb24oKSB7CiAgICAgICAgIHR5cGU6ICJieXRlcyIKICAg
ICB9KTsKIAotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigiQ2FuIG9ubHkgY2FsbCBS
ZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyLmNsb3NlIG9uIGluc3RhbmNlcyBvZiBSZWFkYWJs
ZUJ5dGVTdHJlYW1Db250cm9sbGVyIiksCisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3Is
CiAgICAgICAgIGZ1bmN0aW9uKCkgeyBjb250cm9sbGVyLmNsb3NlLmFwcGx5KHJzKTsgfSk7CiB9
LCAiQ2FsbGluZyBjbG9zZSgpIHdpdGggYSB0aGlzIG9iamVjdCBkaWZmZXJlbnQgZnJvbSBSZWFk
YWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvciIpOwogCkBA
IC00OCw3ICs0OCw3IEBAIHRlc3QoZnVuY3Rpb24oKSB7CiAgICAgICAgIHR5cGU6ICJieXRlcyIK
ICAgICB9KTsKIAotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigiQ2FuIG9ubHkgY2Fs
bCBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyLmVucXVldWUgb24gaW5zdGFuY2VzIG9mIFJl
YWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIiKSwKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVF
cnJvciwKICAgICAgICAgZnVuY3Rpb24oKSB7IGNvbnRyb2xsZXIuZW5xdWV1ZS5hcHBseShycywg
bmV3IEludDhBcnJheSgxKSk7IH0pOwogfSwgIkNhbGxpbmcgZW5xdWV1ZSgpIHdpdGggYSB0aGlz
IG9iamVjdCBkaWZmZXJlbnQgZnJvbSBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyIHNob3Vs
ZCB0aHJvdyBhIFR5cGVFcnJvciIpOwogCkBAIC02NSw3ICs2NSw3IEBAIHRlc3QoZnVuY3Rpb24o
KSB7CiAgICAgY29udHJvbGxlci5lbnF1ZXVlKG5ldyBJbnQ4QXJyYXkoMikpOwogICAgIGNvbnRy
b2xsZXIuY2xvc2UoKTsKIAotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigiUmVhZGFi
bGVCeXRlU3RyZWFtQ29udHJvbGxlciBpcyByZXF1ZXN0ZWQgdG8gY2xvc2UiKSwKKyAgICBhc3Nl
cnRfdGhyb3dzX2pzKFR5cGVFcnJvciwKICAgICAgICAgZnVuY3Rpb24oKSB7IGNvbnRyb2xsZXIu
ZW5xdWV1ZShuZXcgSW50OEFycmF5KDEpKTsgfSk7CiB9LCAiQ2FsbGluZyBlbnF1ZXVlKCkgd2hl
biBjbG9zZSBoYXMgYmVlbiByZXF1ZXN0ZWQgYnV0IG5vdCB5ZXQgcGVyZm9ybWVkIHNob3VsZCB0
aHJvdyBhIFR5cGVFcnJvciIpOwogCkBAIC04MCw3ICs4MCw3IEBAIHRlc3QoZnVuY3Rpb24oKSB7
CiAgICAgfSk7CiAgICAgY29udHJvbGxlci5jbG9zZSgpOwogCi0gICAgYXNzZXJ0X3Rocm93cyhu
ZXcgVHlwZUVycm9yKCJSZWFkYWJsZVN0cmVhbSBpcyBub3QgcmVhZGFibGUiKSwKKyAgICBhc3Nl
cnRfdGhyb3dzX2pzKFR5cGVFcnJvciwKICAgICAgICAgZnVuY3Rpb24oKSB7CiAgICAgICAgICAg
ICBjb250cm9sbGVyLmVucXVldWUobmV3IEludDhBcnJheSgxKSk7CiAgICAgICAgIH0pOwpAQCAt
OTgsNyArOTgsNyBAQCB0ZXN0KGZ1bmN0aW9uKCkgewogCiAgICAgY29uc3QgaW52YWxpZENodW5r
ID0gZnVuY3Rpb24oKSB7fTsKIAotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigiUHJv
dmlkZWQgY2h1bmsgaXMgbm90IGFuIG9iamVjdCIpLAorICAgIGFzc2VydF90aHJvd3NfanMoVHlw
ZUVycm9yLAogICAgICAgICBmdW5jdGlvbigpIHsgY29udHJvbGxlci5lbnF1ZXVlKGludmFsaWRD
aHVuayk7IH0pOwogfSwgIkNhbGxpbmcgZW5xdWV1ZSgpIHdpdGggYSBjaHVuayB0aGF0IGlzIG5v
dCBhbiBvYmplY3Qgc2hvdWxkIHRyaG93IGEgVHlwZUVycm9yIik7CiAKQEAgLTExNCw3ICsxMTQs
NyBAQCB0ZXN0KGZ1bmN0aW9uKCkgewogCiAgICAgY29uc3QgaW52YWxpZENodW5rID0ge307CiAK
LSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoIlByb3ZpZGVkIGNodW5rIGlzIG5vdCBh
biBvYmplY3QiKSwKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwKICAgICAgICAgZnVu
Y3Rpb24oKSB7IGNvbnRyb2xsZXIuZW5xdWV1ZShpbnZhbGlkQ2h1bmspOyB9KTsKIH0sICJDYWxs
aW5nIGVucXVldWUoKSB3aXRoIGEgY2h1bmsgdGhhdCBpcyBub3QgYW4gQXJyYXlCdWZmZXJWaWV3
IHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvciIpOwogCkBAIC0xMjgsNyArMTI4LDcgQEAgdGVzdChm
dW5jdGlvbigpIHsKICAgICAgICAgdHlwZTogImJ5dGVzIgogICAgIH0pOwogCi0gICAgYXNzZXJ0
X3Rocm93cyhuZXcgVHlwZUVycm9yKCJSZWFkYWJsZVN0cmVhbSBpcyBub3QgcmVhZGFibGUiKSwK
KyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwKICAgICAgICAgZnVuY3Rpb24oKSB7CiAg
ICAgICAgICAgICBjb250cm9sbGVyLmNsb3NlKCk7CiAgICAgICAgICAgICBjb250cm9sbGVyLmVy
cm9yKCk7CkBAIC0xNDUsNyArMTQ1LDcgQEAgdGVzdChmdW5jdGlvbigpIHsKICAgICAgICAgdHlw
ZTogImJ5dGVzIgogICAgIH0pOwogCi0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCJS
ZWFkYWJsZVN0cmVhbSBpcyBub3QgcmVhZGFibGUiKSwKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5
cGVFcnJvciwKICAgICAgICAgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICBjb250cm9sbGVyLmVy
cm9yKCk7CiAgICAgICAgICAgICBjb250cm9sbGVyLmVycm9yKCk7CkBAIC0xNjIsNyArMTYyLDcg
QEAgdGVzdChmdW5jdGlvbigpIHsKICAgICAgICAgdHlwZTogImJ5dGVzIgogICAgIH0pOwogCi0g
ICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCJDbG9zZSBoYXMgYWxyZWFkeSBiZWVuIHJl
cXVlc3RlZCIpLAorICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLAogICAgICAgICBmdW5j
dGlvbigpIHsKICAgICAgICAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKTsKICAgICAgICAgICAgIGNv
bnRyb2xsZXIuY2xvc2UoKTsKQEAgLTE3OSw3ICsxNzksNyBAQCB0ZXN0KGZ1bmN0aW9uKCkgewog
ICAgICAgICB0eXBlOiAiYnl0ZXMiCiAgICAgfSk7CiAKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBU
eXBlRXJyb3IoIlJlYWRhYmxlU3RyZWFtIGlzIG5vdCByZWFkYWJsZSIpLAorICAgIGFzc2VydF90
aHJvd3NfanMoVHlwZUVycm9yLAogICAgICAgICBmdW5jdGlvbigpIHsKICAgICAgICAgICAgIGNv
bnRyb2xsZXIuZXJyb3IoKTsKICAgICAgICAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKTsKQEAgLTE5
OCw3ICsxOTgsNyBAQCBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odGVzdCkgewogICAgIGNvbnN0IG15
RXJyb3IgPSBuZXcgRXJyb3IoIm15IGVycm9yIik7CiAgICAgY29udHJvbGxlci5lcnJvcihteUVy
cm9yKTsKIAotICAgIHJldHVybiBwcm9taXNlX3JlamVjdHModGVzdCwgbXlFcnJvciwgcnMuZ2V0
UmVhZGVyKCkucmVhZCgpKTsKKyAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodGVz
dCwgbXlFcnJvciwgcnMuZ2V0UmVhZGVyKCkucmVhZCgpKTsKIH0sICJDYWxsaW5nIHJlYWQoKSBv
biBhIHJlYWRlciBhc3NvY2lhdGVkIHRvIGEgY29udHJvbGxlciB0aGF0IGhhcyBiZWVuIGVycm9y
ZWQgc2hvdWxkIGZhaWwgd2l0aCBwcm92aWRlZCBlcnJvciIpOwogCiBwcm9taXNlX3Rlc3QoZnVu
Y3Rpb24oKSB7CkBAIC0yMzQsNyArMjM0LDcgQEAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHRlc3Qp
IHsKICAgICBsZXQgcmVhZGluZ1Byb21pc2UgPSBycy5nZXRSZWFkZXIoKS5yZWFkKCk7CiAgICAg
Y29udHJvbGxlci5lcnJvcihteUVycm9yKTsKIAotICAgIHJldHVybiBwcm9taXNlX3JlamVjdHMo
dGVzdCwgbXlFcnJvciwgcmVhZGluZ1Byb21pc2UpOworICAgIHJldHVybiBwcm9taXNlX3JlamVj
dHNfZXhhY3RseSh0ZXN0LCBteUVycm9yLCByZWFkaW5nUHJvbWlzZSk7CiB9LCAiUGVuZGluZyBy
ZWFkaW5nIHByb21pc2Ugc2hvdWxkIGJlIHJlamVjdGVkIGlmIGNvbnRyb2xsZXIgaXMgZXJyb3Jl
ZCAoY2FzZSB3aGVyZSBhdXRvQWxsb2NhdGVDaHVua1NpemUgaXMgdW5kZWZpbmVkKSIpOwogCiBw
cm9taXNlX3Rlc3QoZnVuY3Rpb24odGVzdCkgewpAQCAtMjUyLDcgKzI1Miw3IEBAIHByb21pc2Vf
dGVzdChmdW5jdGlvbih0ZXN0KSB7CiAgICAgbGV0IHJlYWRpbmdQcm9taXNlID0gcnMuZ2V0UmVh
ZGVyKCkucmVhZCgpOwogICAgIGNvbnRyb2xsZXIuZXJyb3IobXlFcnJvcik7CiAKLSAgICByZXR1
cm4gcHJvbWlzZV9yZWplY3RzKHRlc3QsIG15RXJyb3IsIHJlYWRpbmdQcm9taXNlKTsKKyAgICBy
ZXR1cm4gcHJvbWlzZV9yZWplY3RzX2V4YWN0bHkodGVzdCwgbXlFcnJvciwgcmVhZGluZ1Byb21p
c2UpOwogfSwgIlBlbmRpbmcgcmVhZGluZyBwcm9taXNlIHNob3VsZCBiZSByZWplY3RlZCBpZiBj
b250cm9sbGVyIGlzIGVycm9yZWQgKGNhc2Ugd2hlcmUgYXV0b0FsbG9jYXRlQ2h1bmtTaXplIGlz
IHNwZWNpZmllZCkiKTsKIAogcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKCkgewpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tYnlvYi1yZWFkZXIuanMgYi9MYXlv
dXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1ieW9iLXJlYWRlci5qcwppbmRleCBhOTcx
OWY3ZTgxNGZlZDI2MDNiMGM3ODhlZjc1Nzg2OWM4MzBjMzNkLi5iMDgyMzVmZTVmYmQzZjcxODA4
ZjNhZTY4NTZlYzA0ZjBhMzEwNWNjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3Jl
YWRhYmxlLXN0cmVhbS1ieW9iLXJlYWRlci5qcworKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3Jl
YWRhYmxlLXN0cmVhbS1ieW9iLXJlYWRlci5qcwpAQCAtMTQsMTQgKzE0LDE0IEBAIHRlc3QoZnVu
Y3Rpb24oKSB7CiB0ZXN0KGZ1bmN0aW9uKCkgewogICAgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxl
U3RyZWFtKCk7CiAgICAgY29uc3QgdG1wID0gMTI7Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlw
ZUVycm9yKCJDYW4gb25seSBjYWxsIFJlYWRhYmxlU3RyZWFtLmdldFJlYWRlciBvbiBpbnN0YW5j
ZXMgb2YgUmVhZGFibGVTdHJlYW0iKSwKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwK
ICAgICAgICAgZnVuY3Rpb24oKSB7IHJzLmdldFJlYWRlci5hcHBseSh0bXApOyB9KTsKIH0sICJD
YWxsaW5nIGdldFJlYWRlcigpIHdpdGggYSB0aGlzIG9iamVjdCBkaWZmZXJlbnQgZnJvbSBSZWFk
YWJsZVN0cmVhbSBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3IiKTsKIAogdGVzdChmdW5jdGlvbigp
IHsKICAgICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgpOwogCi0gICAgYXNzZXJ0X3Ro
cm93cyhuZXcgVHlwZUVycm9yKCJSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIgbmVlZHMgYSBSZWFk
YWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyIiksCisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJy
b3IsCiAgICAgICAgIGZ1bmN0aW9uKCkgeyBycy5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicgfSk7
IH0pOwogfSwgIkNhbGxpbmcgZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pIHdpdGggYSBSZWFk
YWJsZVN0cmVhbSB3aG9zZSBjb250cm9sbGVyIGlzIGEgUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29u
dHJvbGxlciBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3IiKTsKIApAQCAtMjksOSArMjksNyBAQCBw
cm9taXNlX3Rlc3QoZnVuY3Rpb24odGVzdCkgewogICAgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxl
U3RyZWFtKHsgdHlwZTogJ2J5dGVzJyB9KTsKICAgICBjb25zdCByZWFkZXIgPSBycy5nZXRSZWFk
ZXIoeyBtb2RlOiAnYnlvYicgfSk7CiAgICAgbGV0IHJwID0gcmVhZGVyLmNhbmNlbC5hcHBseShy
cyk7Ci0gICAgY29uc3QgbXlFcnJvcj0gbmV3IFR5cGVFcnJvcigiQ2FuIG9ubHkgY2FsbCBSZWFk
YWJsZVN0cmVhbUJZT0JSZWFkZXIuY2FuY2VsKCkgb24gaW5zdGFuY2VzIG9mIFJlYWRhYmxlU3Ry
ZWFtQllPQlJlYWRlciIpOwotCi0gICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0ZXN0LCBteUVy
cm9yLCBycCk7CisgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19qcyh0ZXN0LCBUeXBlRXJyb3Is
IHJwKTsKIH0sICJDYWxsaW5nIFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlci5jYW5jZWwoKSB3aXRo
IGEgdGhpcyBvYmplY3QgZGlmZmVyZW50IGZyb20gUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyIHNo
b3VsZCBiZSByZWplY3RlZCIpOwogCiBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odGVzdCkgewpAQCAt
NDksNyArNDcsNyBAQCBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odGVzdCkgewogICAgIGNvbnRyb2xs
ZXIuZXJyb3IobXlFcnJvcik7CiAgICAgbGV0IHJwID0gcmVhZGVyLmNhbmNlbCgiU2FtcGxlIHJl
YXNvbiIpOwogCi0gICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0ZXN0LCBteUVycm9yLCBycCk7
CisgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19leGFjdGx5KHRlc3QsIG15RXJyb3IsIHJwKTsK
IH0sICJDYWxsaW5nIFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlci5jYW5jZWwoKSBvbiBhIFJlYWRh
YmxlU3RyZWFtIHRoYXQgaGFzIGJlZW4gZXJyb3JlZCBzaG91bGQgcmVzdWx0IGluIGEgcHJvbWlz
ZSByZWplY3RlZCB3aXRoIHRoZSBzYW1lIGVycm9yIik7CiAKIHByb21pc2VfdGVzdChmdW5jdGlv
bih0ZXN0KSB7CkBAIC0xMjYsNyArMTI0LDcgQEAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHRlc3Qp
IHsKICAgICBjb25zdCBteUVycm9yID0gbmV3IFR5cGVFcnJvcigiU2FtcGxlIGVycm9yIik7CiAg
ICAgY29udHJvbGxlci5lcnJvcihteUVycm9yKTsKIAotICAgIHJldHVybiBwcm9taXNlX3JlamVj
dHModGVzdCwgbXlFcnJvciwgcmVhZGVyLmNsb3NlZCk7CisgICAgcmV0dXJuIHByb21pc2VfcmVq
ZWN0c19leGFjdGx5KHRlc3QsIG15RXJyb3IsIHJlYWRlci5jbG9zZWQpOwogfSwgIklmIGNvbnRy
b2xsZXIgaXMgZXJyb3JlZCBhZnRlciBSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIgY3JlYXRpb24s
IFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlci5jbG9zZWQgc2hvdWxkIGJlIGEgcHJvbWlzZSByZWpl
Y3RlZCB3aXRoIHRoZSBzYW1lIGVycm9yIik7CiAKIHByb21pc2VfdGVzdChmdW5jdGlvbih0ZXN0
KSB7CkBAIC0xNDMsMTMgKzE0MSwxMyBAQCBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odGVzdCkgewog
ICAgIGNvbnRyb2xsZXIuZXJyb3IobXlFcnJvcik7CiAgICAgY29uc3QgcmVhZGVyID0gcnMuZ2V0
UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOwogCi0gICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0
ZXN0LCBteUVycm9yLCByZWFkZXIuY2xvc2VkKTsKKyAgICByZXR1cm4gcHJvbWlzZV9yZWplY3Rz
X2V4YWN0bHkodGVzdCwgbXlFcnJvciwgcmVhZGVyLmNsb3NlZCk7CiB9LCAiSWYgY29udHJvbGxl
ciBoYXMgYWxyZWFkeSBiZWVuIGVycm9yZWQgd2hlbiBSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIg
aXMgY3JlYXRlZCwgUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyLmNsb3NlZCBzaG91bGQgYmUgYSBw
cm9taXNlIHJlamVjdGVkIHdpdGggdGhlIHNhbWUgZXJyb3IiKTsKIAogdGVzdChmdW5jdGlvbigp
IHsKICAgICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7IHR5cGU6ICdieXRlcycgfSk7
CiAgICAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOwotICAg
IGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigiQ2FuIG9ubHkgY2FsbCBSZWFkYWJsZVN0cmVh
bUJZT0JSZWFkZXIucmVsZWFzZUxvY2soKSBvbiBpbnN0YW5jZXMgb2YgUmVhZGFibGVTdHJlYW1C
WU9CUmVhZGVyIiksCisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsCiAgICAgICAgIGZ1
bmN0aW9uKCkgeyByZWFkZXIucmVsZWFzZUxvY2suYXBwbHkocnMpOyB9KTsKIH0sICJDYWxsaW5n
IFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlci5yZWxlYXNlTG9jaygpIHdpdGggYSB0aGlzIG9iamVj
dCBkaWZmZXJlbnQgZnJvbSBSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIgc2hvdWxkIGJlIHJlamVj
dGVkIik7CiAKQEAgLTE2MCw5ICsxNTgsNyBAQCBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odGVzdCkg
ewogCiAgICAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2InIH0pOwog
ICAgIHJlYWRlci5yZWxlYXNlTG9jaygpOwotICAgIGNvbnN0IG15RXJyb3IgPSBuZXcgVHlwZUVy
cm9yKCk7Ci0KLSAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHRlc3QsIG15RXJyb3IsIHJlYWRl
ci5jbG9zZWQpOworICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNfanModGVzdCwgVHlwZUVycm9y
LCByZWFkZXIuY2xvc2VkKTsKIH0sICJDYWxsaW5nIFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlci5y
ZWxlYXNlTG9jaygpIG9uIGEgc3RyZWFtIHRoYXQgaXMgcmVhZGFibGUgc2hvdWxkIHJlc3VsdCBp
biBSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIuY2xvc2VkIHByb21pc2UgdG8gYmUgcmVqZWN0ZWQg
d2l0aCBhIFR5cGVFcnJvciIpOwogCiBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odGVzdCkgewpAQCAt
MTc4LDE4ICsxNzQsMTQgQEAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHRlc3QpIHsKICAgICBjb25z
dCByZWFkZXIgPSBycy5nZXRSZWFkZXIoeyBtb2RlOiAnYnlvYicgfSk7CiAgICAgY29udHJvbGxl
ci5jbG9zZSgpOwogICAgIHJlYWRlci5yZWxlYXNlTG9jaygpOwotICAgIGNvbnN0IG15RXJyb3Ig
PSBuZXcgVHlwZUVycm9yKCk7Ci0KLSAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHRlc3QsIG15
RXJyb3IsIHJlYWRlci5jbG9zZWQpOworICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNfanModGVz
dCwgVHlwZUVycm9yLCByZWFkZXIuY2xvc2VkKTsKIH0sICJDYWxsaW5nIFJlYWRhYmxlU3RyZWFt
QllPQlJlYWRlci5yZWxlYXNlTG9jaygpIG9uIGEgc3RyZWFtIHRoYXQgaXMgbm90IHJlYWRhYmxl
IHNob3VsZCByZXN1bHQgaW4gUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyLmNsb3NlZCBwcm9taXNl
IHRvIGJlIHJlamVjdGVkIHdpdGggYSBUeXBlRXJyb3IiKTsKIAogcHJvbWlzZV90ZXN0KGZ1bmN0
aW9uKHRlc3QpIHsKICAgICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7IHR5cGU6ICdi
eXRlcycgfSk7CiAgICAgY29uc3QgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKHsgbW9kZTogJ2J5b2In
IH0pOwogICAgIGxldCBycCA9IHJlYWRlci5yZWFkLmFwcGx5KHJzKTsKLSAgICBjb25zdCBteUVy
cm9yPSBuZXcgVHlwZUVycm9yKCJDYW4gb25seSBjYWxsIFJlYWRhYmxlU3RyZWFtQllPQlJlYWRl
ci5yZWFkKCkgb24gaW5zdGFuY2VzIG9mIFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlciIpOwotCi0g
ICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0ZXN0LCBteUVycm9yLCBycCk7CisgICAgcmV0dXJu
IHByb21pc2VfcmVqZWN0c19qcyh0ZXN0LCBUeXBlRXJyb3IsIHJwKTsKIH0sICJDYWxsaW5nIFJl
YWRhYmxlU3RyZWFtQllPQlJlYWRlci5yZWFkKCkgd2l0aCBhIHRoaXMgb2JqZWN0IGRpZmZlcmVu
dCBmcm9tIFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlciBzaG91bGQgYmUgcmVqZWN0ZWQiKTsKIAog
ZG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0t
YnlvYi1yZXF1ZXN0LmpzIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tYnlv
Yi1yZXF1ZXN0LmpzCmluZGV4IGQ1YTZmOGU3NzhmN2MyZDQ5ZDMyYjFiNDQyYThmODhjNzkxOTNm
YjMuLjAxOWVmOTcwODJmYjQ5MjYwOTE3NTJhMDBmNzQxNDY0MTk3YTJmZDggMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtLWJ5b2ItcmVxdWVzdC5qcworKysg
Yi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1ieW9iLXJlcXVlc3QuanMKQEAg
LTU2LDcgKzU2LDcgQEAgdGVzdChmdW5jdGlvbigpIHsKICAgICBycy5nZXRSZWFkZXIoKS5yZWFk
KCk7CiAgICAgY29uc3QgYnlvYlJlcSA9IGNvbnRyb2xsZXIuYnlvYlJlcXVlc3Q7CiAKLSAgICBh
c3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoIkNhbiBvbmx5IGNhbGwgUmVhZGFibGVTdHJlYW1C
WU9CUmVxdWVzdC5yZXNwb25kIG9uIGluc3RhbmNlcyBvZiBSZWFkYWJsZVN0cmVhbUJZT0JSZXF1
ZXN0IiksCisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsCiAgICAgICAgIGZ1bmN0aW9u
KCkgeyBieW9iUmVxLnJlc3BvbmQuYXBwbHkocnMsIDEpOyB9KTsKIAogfSwgIkNhbGxpbmcgcmVz
cG9uZCgpIHdpdGggYSB0aGlzIG9iamVjdCBkaWZmZXJlbnQgZnJvbSBSZWFkYWJsZVN0cmVhbUJZ
T0JSZXF1ZXN0IHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvciIpOwpAQCAtNzUsNyArNzUsNyBAQCB0
ZXN0KGZ1bmN0aW9uKCkgewogICAgIHJzLmdldFJlYWRlcigpLnJlYWQoKTsKICAgICBjb25zdCBi
eW9iUmVxID0gY29udHJvbGxlci5ieW9iUmVxdWVzdDsKIAotICAgIGFzc2VydF90aHJvd3MobmV3
IFJhbmdlRXJyb3IoImJ5dGVzV3JpdHRlbiBoYXMgYW4gaW5jb3JyZWN0IHZhbHVlIiksCisgICAg
YXNzZXJ0X3Rocm93c19qcyhSYW5nZUVycm9yLAogICAgICAgICBmdW5jdGlvbigpIHsgYnlvYlJl
cS5yZXNwb25kKC0xKTsgfSk7CiB9LCAiQ2FsbGluZyByZXNwb25kKCkgd2l0aCBhIG5lZ2F0aXZl
IGJ5dGVzV3JpdHRlbiB2YWx1ZSBzaG91bGQgdGhyb3cgYSBSYW5nZUVycm9yIik7CiAKQEAgLTkz
LDcgKzkzLDcgQEAgdGVzdChmdW5jdGlvbigpIHsKICAgICBycy5nZXRSZWFkZXIoKS5yZWFkKCk7
CiAgICAgY29uc3QgYnlvYlJlcSA9IGNvbnRyb2xsZXIuYnlvYlJlcXVlc3Q7CiAKLSAgICBhc3Nl
cnRfdGhyb3dzKG5ldyBSYW5nZUVycm9yKCJieXRlc1dyaXR0ZW4gaGFzIGFuIGluY29ycmVjdCB2
YWx1ZSIpLAorICAgIGFzc2VydF90aHJvd3NfanMoUmFuZ2VFcnJvciwKICAgICAgICAgZnVuY3Rp
b24oKSB7IGJ5b2JSZXEucmVzcG9uZCgiYWJjIik7IH0pOwogfSwgIkNhbGxpbmcgcmVzcG9uZCgp
IHdpdGggYSBieXRlc1dyaXR0ZW4gdmFsdWUgd2hpY2ggaXMgbm90IGEgbnVtYmVyIHNob3VsZCB0
aHJvdyBhIFJhbmdlRXJyb3IiKTsKIApAQCAtMTExLDcgKzExMSw3IEBAIHRlc3QoZnVuY3Rpb24o
KSB7CiAgICAgcnMuZ2V0UmVhZGVyKCkucmVhZCgpOwogICAgIGNvbnN0IGJ5b2JSZXEgPSBjb250
cm9sbGVyLmJ5b2JSZXF1ZXN0OwogCi0gICAgYXNzZXJ0X3Rocm93cyhuZXcgUmFuZ2VFcnJvcigi
Ynl0ZXNXcml0dGVuIGhhcyBhbiBpbmNvcnJlY3QgdmFsdWUiKSwKKyAgICBhc3NlcnRfdGhyb3dz
X2pzKFJhbmdlRXJyb3IsCiAgICAgICAgIGZ1bmN0aW9uKCkgeyBieW9iUmVxLnJlc3BvbmQoTnVt
YmVyLlBPU0lUSVZFX0lORklOSVRZKTsgfSk7CiB9LCAiQ2FsbGluZyByZXNwb25kKCkgd2l0aCBh
IHBvc2l0aXZlIGluZmluaXR5IGJ5dGVzV3JpdHRlbiB2YWx1ZSBzaG91bGQgdGhyb3cgYSBSYW5n
ZUVycm9yIik7CiAKQEAgLTEzMCw3ICsxMzAsNyBAQCB0ZXN0KGZ1bmN0aW9uKCkgewogICAgIGNv
bnN0IGJ5b2JSZXEgPSBjb250cm9sbGVyLmJ5b2JSZXF1ZXN0OwogICAgIGNvbnRyb2xsZXIuY2xv
c2UoKTsKIAotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigiYnl0ZXNXcml0dGVuIGlz
IGRpZmZlcmVudCBmcm9tIDAgZXZlbiB0aG91Z2ggc3RyZWFtIGlzIGNsb3NlZCIpLAorICAgIGFz
c2VydF90aHJvd3NfanMoVHlwZUVycm9yLAogICAgICAgICBmdW5jdGlvbigpIHsgYnlvYlJlcS5y
ZXNwb25kKDEpOyB9KTsKIH0sICJDYWxsaW5nIHJlc3BvbmQoKSB3aXRoIGEgYnl0ZXNXcml0dGVu
IHZhbHVlIGRpZmZlcmVudCBmcm9tIDAgd2hlbiBzdHJlYW0gaXMgY2xvc2VkIHNob3VsZCB0aHJv
dyBhIFR5cGVFcnJvciIpOwogCkBAIC0xNjgsNyArMTY4LDcgQEAgdGVzdChmdW5jdGlvbigpIHsK
IAogICAgIHJzLmdldFJlYWRlcigpLnJlYWQoKTsKICAgICBjb25zdCBieW9iUmVxID0gY29udHJv
bGxlci5ieW9iUmVxdWVzdDsKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBSYW5nZUVycm9yKCJieXRl
c1dyaXR0ZW4gdmFsdWUgaXMgdG9vIGdyZWF0IiksCisgICAgYXNzZXJ0X3Rocm93c19qcyhSYW5n
ZUVycm9yLAogICAgICAgICBmdW5jdGlvbigpIHsgYnlvYlJlcS5yZXNwb25kKDE3KTsgfSk7CiAK
IH0sICJDYWxsaW5nIHJlc3BvbmQoKSB3aXRoIGEgYnl0ZXNXcml0dGVuIHZhbHVlIGdyZWF0ZXIg
dGhhbiBhdXRvQWxsb2NhdGVDaHVua1NpemUgc2hvdWxkIGZhaWwiKTsKQEAgLTIxMiw3ICsyMTIs
NyBAQCB0ZXN0KGZ1bmN0aW9uKCkgewogICAgIHJzLmdldFJlYWRlcigpLnJlYWQoKTsKICAgICBj
b25zdCBieW9iUmVxID0gY29udHJvbGxlci5ieW9iUmVxdWVzdDsKIAotICAgIGFzc2VydF90aHJv
d3MobmV3IFR5cGVFcnJvcigiQ2FuIG9ubHkgY2FsbCBSZWFkYWJsZVN0cmVhbUJZT0JSZXF1ZXN0
LnJlc3BvbmRXaXRoTmV3VmlldyBvbiBpbnN0YW5jZXMgb2YgUmVhZGFibGVTdHJlYW1CWU9CUmVx
dWVzdCIpLAorICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLAogICAgICAgICBmdW5jdGlv
bigpIHsgYnlvYlJlcS5yZXNwb25kV2l0aE5ld1ZpZXcuYXBwbHkocnMsIG5ldyBVaW50OEFycmF5
KDEpKTsgfSk7CiAKIH0sICJDYWxsaW5nIHJlc3BvbmRXaXRoTmV3VmlldygpIHdpdGggYSB0aGlz
IG9iamVjdCBkaWZmZXJlbnQgZnJvbSBSZWFkYWJsZVN0cmVhbUJZT0JSZXF1ZXN0IHNob3VsZCB0
aHJvdyBhIFR5cGVFcnJvciIpOwpAQCAtMjMxLDcgKzIzMSw3IEBAIHRlc3QoZnVuY3Rpb24oKSB7
CiAgICAgcnMuZ2V0UmVhZGVyKCkucmVhZCgpOwogICAgIGNvbnN0IGJ5b2JSZXEgPSBjb250cm9s
bGVyLmJ5b2JSZXF1ZXN0OwogCi0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCJQcm92
aWRlZCB2aWV3IGlzIG5vdCBhbiBvYmplY3QiKSwKKyAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVF
cnJvciwKICAgICAgICAgZnVuY3Rpb24oKSB7IGJ5b2JSZXEucmVzcG9uZFdpdGhOZXdWaWV3KGZ1
bmN0aW9uKCkge30pOyB9KTsKIAogfSwgIkNhbGxpbmcgcmVzcG9uZFdpdGhOZXdWaWV3KCkgd2l0
aCBhbiBhcmd1bWVudCB0aGF0IGlzIG5vdCBhbiBvYmplY3Qgc2hvdWxkIHRocm93IGEgVHlwZUVy
cm9yIik7CkBAIC0yNTAsNyArMjUwLDcgQEAgdGVzdChmdW5jdGlvbigpIHsKICAgICBycy5nZXRS
ZWFkZXIoKS5yZWFkKCk7CiAgICAgY29uc3QgYnlvYlJlcSA9IGNvbnRyb2xsZXIuYnlvYlJlcXVl
c3Q7CiAKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoIlByb3ZpZGVkIHZpZXcgaXMg
bm90IGFuIEFycmF5QnVmZmVyVmlldyIpLAorICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9y
LAogICAgICAgICBmdW5jdGlvbigpIHsgYnlvYlJlcS5yZXNwb25kV2l0aE5ld1ZpZXcoe30pOyB9
KTsKIAogfSwgIkNhbGxpbmcgcmVzcG9uZFdpdGhOZXdWaWV3KCkgd2l0aCBhbiBhcmd1bWVudCB0
aGF0IGlzIG5vdCBhbiBBcnJheUJ1ZmZlclZpZXcgc2hvdWxkIHRocm93IGEgVHlwZUVycm9yIik7
CkBAIC0yODcsMTAgKzI4Nyw3IEBAIHByb21pc2VfdGVzdChmdW5jdGlvbih0ZXN0KSB7CiAgICAg
ICAgIH0sCiAgICAgICAgIHR5cGU6ICJieXRlcyIKICAgICB9KTsKLQotICAgIGNvbnN0IGVycm9y
ID0gbmV3IFJhbmdlRXJyb3IoIkludmFsaWQgdmFsdWUgZm9yIHZpZXcuYnl0ZUxlbmd0aCIpOwot
Ci0gICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0ZXN0LCBlcnJvciwgcnMuZ2V0UmVhZGVyKCku
cmVhZCgpKTsKKyAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2pzKHRlc3QsIFJhbmdlRXJyb3Is
IHJzLmdldFJlYWRlcigpLnJlYWQoKSk7CiB9LCAiV2hlbiB1c2luZyBhdXRvQWxsb2NhdGVDaHVu
a1NpemUsIGNhbGxpbmcgcmVzcG9uZFdpdGhOZXdWaWV3KCkgc2hvdWxkIHRocm93IGEgUmFuZ2VF
cnJvciBpZiB2aWV3LmJ5dGVPZmZzZXQgaXMgZGlmZmVyZW50IGZyb20gMCIpOwogCiBwcm9taXNl
X3Rlc3QoZnVuY3Rpb24odGVzdCkgewpAQCAtMzA1LDEwICszMDIsNyBAQCBwcm9taXNlX3Rlc3Qo
ZnVuY3Rpb24odGVzdCkgewogICAgICAgICB9LAogICAgICAgICB0eXBlOiAiYnl0ZXMiCiAgICAg
fSk7Ci0KLSAgICBjb25zdCBlcnJvciA9IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIHZhbHVlIGZv
ciB2aWV3LmJ5dGVPZmZzZXQiKTsKLQotICAgIHJldHVybiBwcm9taXNlX3JlamVjdHModGVzdCwg
ZXJyb3IsIHJzLmdldFJlYWRlcigpLnJlYWQoKSk7CisgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0
c19qcyh0ZXN0LCBSYW5nZUVycm9yLCBycy5nZXRSZWFkZXIoKS5yZWFkKCkpOwogfSwgIldoZW4g
dXNpbmcgYXV0b0FsbG9jYXRlQ2h1bmtTaXplLCBjYWxsaW5nIHJlc3BvbmRXaXRoTmV3Vmlldygp
IHNob3VsZCB0aHJvdyBhIFJhbmdlRXJyb3IgaWYgdmlldy5ieXRlTGVuZ3RoIGlzIGRpZmZlcmVu
dCBmcm9tIGF1dG9BbGxvY2F0ZUNodW5rU2l6ZSIpOwogCiBkb25lKCk7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1nZXRSZWFkZXIuaHRtbCBiL0xheW91
dFRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtLWdldFJlYWRlci5odG1sCmluZGV4IDZmYzVl
NGZiOTIwOGEzOWFlZmJjOTQxNTgwY2UxODBlN2YwMzYxMjQuLjZjOTYyMmY3YTY5N2ZhODQ0YjUx
Njk5MzJhODZlMjVlNmM3OGVkN2EgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVh
ZGFibGUtc3RyZWFtLWdldFJlYWRlci5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVh
ZGFibGUtc3RyZWFtLWdldFJlYWRlci5odG1sCkBAIC0xMiwxMiArMTIsMTIgQEAgdGVzdChmdW5j
dGlvbigpIHsKIAogdGVzdChmdW5jdGlvbigpIHsKICAgICBjb25zdCBycyA9IG5ldyBSZWFkYWJs
ZVN0cmVhbSgpOwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigp
IHsgcnMuZ2V0UmVhZGVyKHttb2RlOiAnYnlvYid9KSB9KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pz
KFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7IHJzLmdldFJlYWRlcih7bW9kZTogJ2J5b2InfSkgfSk7
CiB9LCAiZ2V0UmVhZGVyKHttb2RlOiAnYnlvYid9KSBzaG91bGQgcmV0dXJuIGEgVHlwZUVycm9y
IGFzIEJZT0IgcmVhZGVyIGlzIG5vdCB5ZXQgaW1wbGVtZW50ZWQiKTsKIAogdGVzdChmdW5jdGlv
bigpIHsKICAgICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgpOwogICAgIC8vIEFueSB2
YWx1ZSBkaWZmZXJlbnQgZnJvbSB1bmRlZmluZWQgYW5kICdieW9iJyBzaG91bGQgdGhyb3cgYSBU
eXBlRXJyb3IuCi0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkg
eyBycy5nZXRSZWFkZXIoe21vZGUgOiAnYU1vZGUnfSkgfSk7CisgICAgYXNzZXJ0X3Rocm93c19q
cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeyBycy5nZXRSZWFkZXIoe21vZGUgOiAnYU1vZGUnfSkg
fSk7CiB9LCAiZ2V0UmVhZGVyKHttb2RlOiAnYU1vZGUnfSkgc2hvdWxkIHJldHVybiBhIFR5cGVF
cnJvciBhcyAnYU1vZGUnIGlzIGRpZmZlcmVudCBmcm9tIHVuZGVmaW5lZCBhbmQgJ2J5b2InIik7
CiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWlt
cGxlbWVudGF0aW9uL2JhZC1zdHJhdGVnaWVzLmh0bWwgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3Jl
ZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9iYWQtc3RyYXRlZ2llcy5odG1sCmluZGV4IDkwOGI4YWNj
ZTM0YzcxYzNjMGY5MzUyYWQyYmE4NjI5ZDI1Y2U5MzguLmUxZTk1M2UxNDFhZTllZjRjMzlmZTY2
ZWI0MDk4ZjM0ODlhMzlhZTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJl
bmNlLWltcGxlbWVudGF0aW9uL2JhZC1zdHJhdGVnaWVzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
c3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vYmFkLXN0cmF0ZWdpZXMuaHRtbApAQCAt
Nyw3ICs3LDcgQEAKIHRlc3QoZnVuY3Rpb24oKSB7CiAgICAgdmFyIHRoZUVycm9yID0gbmV3IEVy
cm9yKCdhIHVuaXF1ZSBzdHJpbmcnKTsKIAotICAgIGFzc2VydF90aHJvd3ModGhlRXJyb3IsIGZ1
bmN0aW9uKCkgeworICAgIGFzc2VydF90aHJvd3NfZXhhY3RseSh0aGVFcnJvciwgZnVuY3Rpb24o
KSB7CiAgICAgICAgIG5ldyBXcml0YWJsZVN0cmVhbSh7fSwgewogICAgICAgICAgICAgZ2V0IHNp
emUoKSB7CiAgICAgICAgICAgICAgICAgdGhyb3cgdGhlRXJyb3I7CkBAIC02NCw3ICs2NCw3IEBA
IHRlc3QyLnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgICAgIH0pOwogCiAgICAgICAgIHZhciB3cml0
ZUZ1bmN0aW9uID0gZnVuY3Rpb24oaSwgcikgewotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyhu
ZXcgUmFuZ2VFcnJvcigpLCBmdW5jdGlvbigpIHsgdGhyb3cgcjsgfSwgJ3dyaXRlIHNob3VsZCBy
ZWplY3Qgd2l0aCBhIFJhbmdlRXJyb3IgZm9yICcgKyBlbGVtZW50c1tpXSk7CisgICAgICAgICAg
ICBhc3NlcnRfdGhyb3dzX2pzKFJhbmdlRXJyb3IsIGZ1bmN0aW9uKCkgeyB0aHJvdyByOyB9LCAn
d3JpdGUgc2hvdWxkIHJlamVjdCB3aXRoIGEgUmFuZ2VFcnJvciBmb3IgJyArIGVsZW1lbnRzW2ld
KTsKICAgICAgICAgICAgIHRoZUVycm9yW2ldID0gcjsKICAgICAgICAgfTsKICAgICAgICAgd3Mu
d3JpdGUoJ2EnKS50aGVuKApAQCAtODYsNyArODYsNyBAQCB0ZXN0Mi5zdGVwKGZ1bmN0aW9uKCkg
ewogdGVzdChmdW5jdGlvbigpIHsKICAgICB2YXIgdGhlRXJyb3IgPSBuZXcgRXJyb3IoJ2EgdW5p
cXVlIHN0cmluZycpOwogCi0gICAgYXNzZXJ0X3Rocm93cyh0aGVFcnJvciwgZnVuY3Rpb24oKSB7
CisgICAgYXNzZXJ0X3Rocm93c19leGFjdGx5KHRoZUVycm9yLCBmdW5jdGlvbigpIHsKICAgICAg
ICAgbmV3IFdyaXRhYmxlU3RyZWFtKHt9LCB7CiAgICAgICAgICAgICBzaXplOiBmdW5jdGlvbigp
IHsKICAgICAgICAgICAgICAgICByZXR1cm4gMTsKQEAgLTEwMCw3ICsxMDAsNyBAQCB0ZXN0KGZ1
bmN0aW9uKCkgewogCiB0ZXN0KGZ1bmN0aW9uKCkgewogICAgIGZvciAodmFyIGhpZ2hXYXRlck1h
cmsgb2YgWy0xLCAtSW5maW5pdHldKSB7Ci0gICAgICAgIGFzc2VydF90aHJvd3MobmV3IFJhbmdl
RXJyb3IoKSwgZnVuY3Rpb24oKSB7CisgICAgICAgIGFzc2VydF90aHJvd3NfanMoUmFuZ2VFcnJv
ciwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICBuZXcgV3JpdGFibGVTdHJlYW0oe30sIHsKICAg
ICAgICAgICAgICAgICBzaXplOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIDE7CkBAIC0xMTEsNyArMTExLDcgQEAgdGVzdChmdW5jdGlvbigpIHsKICAgICB9CiAKICAg
ICBmb3IgKHZhciBoaWdoV2F0ZXJNYXJrIG9mIFtOYU4sICdmb28nLCB7fV0pIHsKLSAgICAgICAg
YXNzZXJ0X3Rocm93cyhuZXcgUmFuZ2VFcnJvcigpLCBmdW5jdGlvbigpIHsKKyAgICAgICAgYXNz
ZXJ0X3Rocm93c19qcyhSYW5nZUVycm9yLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgIG5ldyBX
cml0YWJsZVN0cmVhbSh7fSwgewogICAgICAgICAgICAgICAgIHNpemU6IGZ1bmN0aW9uKCkgewog
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0
cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2JhZC11bmRlcmx5aW5nLXNpbmtzLmh0bWwg
Yi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9iYWQtdW5kZXJs
eWluZy1zaW5rcy5odG1sCmluZGV4IDliZTZmZmNkNTA4ZDNjZGVmMzZiN2NiMDE4MjY0NTk4OGZk
NWYyYWMuLjM1MjdhMzg2YzQ1ZDgxZDQ1MmIwMGMzOTVlZGU2OWIxYzM5NGYzYjkgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2JhZC11bmRl
cmx5aW5nLXNpbmtzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1w
bGVtZW50YXRpb24vYmFkLXVuZGVybHlpbmctc2lua3MuaHRtbApAQCAtOCw3ICs4LDcgQEAKIHRl
c3QoZnVuY3Rpb24oKSB7CiAgICAgdmFyIHRoZUVycm9yID0gbmV3IEVycm9yKCdhIHVuaXF1ZSBz
dHJpbmcnKTsKIAotICAgIGFzc2VydF90aHJvd3ModGhlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAg
IGFzc2VydF90aHJvd3NfZXhhY3RseSh0aGVFcnJvciwgZnVuY3Rpb24oKSB7CiAgICAgICAgIG5l
dyBXcml0YWJsZVN0cmVhbSh7CiAgICAgICAgICAgICBnZXQgc3RhcnQoKSB7CiAgICAgICAgICAg
ICAgICAgdGhyb3cgdGhlRXJyb3I7CkBAIC0yMCw3ICsyMCw3IEBAIHRlc3QoZnVuY3Rpb24oKSB7
CiB0ZXN0KGZ1bmN0aW9uKCkgewogICAgIHZhciB0aGVFcnJvciA9IG5ldyBFcnJvcignYSB1bmlx
dWUgc3RyaW5nJyk7CiAKLSAgICBhc3NlcnRfdGhyb3dzKHRoZUVycm9yLCBmdW5jdGlvbigpIHsK
KyAgICBhc3NlcnRfdGhyb3dzX2V4YWN0bHkodGhlRXJyb3IsIGZ1bmN0aW9uKCkgewogICAgICAg
ICBuZXcgV3JpdGFibGVTdHJlYW0oewogICAgICAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKCkgewog
ICAgICAgICAgICAgICAgIHRocm93IHRoZUVycm9yOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vdHJhbnNmb3JtLXN0cmVhbS1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi90cmFu
c2Zvcm0tc3RyZWFtLWV4cGVjdGVkLnR4dAppbmRleCAxOGNhMGI1YzZmMTIwMmQ2ZjYzZDhmYWU5
NzMxMmY0MTQ1MGMwNjBlLi4xMjFjMjRmOGVkMWIwOWQzZmY3MzJhMGYzODllMjdjMThjYjllMGIx
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlv
bi90cmFuc2Zvcm0tc3RyZWFtLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1z
L3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi90cmFuc2Zvcm0tc3RyZWFtLWV4cGVjdGVkLnR4dApA
QCAtMSw2ICsxLDYgQEAKIAogUEFTUyBUcmFuc2Zvcm1TdHJlYW0gY2FuIGJlIGNvbnN0cnVjdGVk
IHdpdGggYSB0cmFuc2Zvcm0gZnVuY3Rpb24KLUZBSUwgVHJhbnNmb3JtU3RyZWFtIGNhbm5vdCBi
ZSBjb25zdHJ1Y3RlZCB3aXRoIG5vIHRyYW5zZm9ybSBmdW5jdGlvbiBhc3NlcnRfdGhyb3dzOiBU
cmFuc2Zvcm1TdHJlYW0gY2Fubm90IGJlIGNvbnN0cnVjdGVkIHdpdGggbm8gYXJndW1lbnRzIGZ1
bmN0aW9uICJmdW5jdGlvbiAoKSB7IG5ldyBUcmFuc2Zvcm1TdHJlYW0oKTsgfSIgZGlkIG5vdCB0
aHJvdworRkFJTCBUcmFuc2Zvcm1TdHJlYW0gY2Fubm90IGJlIGNvbnN0cnVjdGVkIHdpdGggbm8g
dHJhbnNmb3JtIGZ1bmN0aW9uIGFzc2VydF90aHJvd3NfanM6IFRyYW5zZm9ybVN0cmVhbSBjYW5u
b3QgYmUgY29uc3RydWN0ZWQgd2l0aCBubyBhcmd1bWVudHMgZnVuY3Rpb24gImZ1bmN0aW9uICgp
IHsgbmV3IFRyYW5zZm9ybVN0cmVhbSgpOyB9IiBkaWQgbm90IHRocm93CiBGQUlMIFRyYW5zZm9y
bVN0cmVhbSBpbnN0YW5jZXMgbXVzdCBoYXZlIHdyaXRhYmxlIGFuZCByZWFkYWJsZSBwcm9wZXJ0
aWVzIG9mIHRoZSBjb3JyZWN0IHR5cGVzIGFzc2VydF90cnVlOiBpdCBoYXMgYSB3cml0YWJsZSBw
cm9wZXJ0eSBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQogRkFJTCBUcmFuc2Zvcm1TdHJlYW0gd3Jp
dGFibGUgc3RhcnRzIGluIHRoZSB3cml0YWJsZSBzdGF0ZSBhc3NlcnRfZXF1YWxzOiB3cml0YWJs
ZSBzdGFydHMgd3JpdGFibGUgZXhwZWN0ZWQgKHN0cmluZykgIndyaXRhYmxlIiBidXQgZ290ICh1
bmRlZmluZWQpIHVuZGVmaW5lZAogRkFJTCBQYXNzLXRocm91Z2ggc3luYyBUcmFuc2Zvcm1TdHJl
YW06IGNhbiByZWFkIGZyb20gcmVhZGFibGUgd2hhdCBpcyBwdXQgaW50byB3cml0YWJsZSB0cy53
cml0YWJsZS53cml0ZSBpcyBub3QgYSBmdW5jdGlvbi4gKEluICd0cy53cml0YWJsZS53cml0ZSgn
YScpJywgJ3RzLndyaXRhYmxlLndyaXRlJyBpcyB1bmRlZmluZWQpCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi90cmFuc2Zvcm0tc3RyZWFt
Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi90cmFu
c2Zvcm0tc3RyZWFtLmh0bWwKaW5kZXggM2Q5OTJkZGY4M2FmMTE1YjcyMmZkZDQ3YmQ5YjAxZTRl
Yzc4ODA0Yi4uNjc5NTBhMjg1OTcyNWNmNzViMzQxZGQwZjJmODQ1MDgzMjFhOTIxMyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vdHJhbnNm
b3JtLXN0cmVhbS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxl
bWVudGF0aW9uL3RyYW5zZm9ybS1zdHJlYW0uaHRtbApAQCAtMTAsOCArMTAsOCBAQCB0ZXN0KGZ1
bmN0aW9uKCkgewogfSwgJ1RyYW5zZm9ybVN0cmVhbSBjYW4gYmUgY29uc3RydWN0ZWQgd2l0aCBh
IHRyYW5zZm9ybSBmdW5jdGlvbicpOwogCiB0ZXN0KGZ1bmN0aW9uKCkgewotICAgIGFzc2VydF90
aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsgbmV3IFRyYW5zZm9ybVN0cmVhbSgp
OyB9LCAnVHJhbnNmb3JtU3RyZWFtIGNhbm5vdCBiZSBjb25zdHJ1Y3RlZCB3aXRoIG5vIGFyZ3Vt
ZW50cycpOwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsg
bmV3IFRyYW5zZm9ybVN0cmVhbSh7fSk7IH0sICdUcmFuc2Zvcm1TdHJlYW0gY2Fubm90IGJlIGNv
bnN0cnVjdGVkIHdpdGggYW4gZW1wdHkgb2JqZWN0Jyk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhU
eXBlRXJyb3IsIGZ1bmN0aW9uKCkgeyBuZXcgVHJhbnNmb3JtU3RyZWFtKCk7IH0sICdUcmFuc2Zv
cm1TdHJlYW0gY2Fubm90IGJlIGNvbnN0cnVjdGVkIHdpdGggbm8gYXJndW1lbnRzJyk7CisgICAg
YXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeyBuZXcgVHJhbnNmb3JtU3Ry
ZWFtKHt9KTsgfSwgJ1RyYW5zZm9ybVN0cmVhbSBjYW5ub3QgYmUgY29uc3RydWN0ZWQgd2l0aCBh
biBlbXB0eSBvYmplY3QnKTsKIH0sICdUcmFuc2Zvcm1TdHJlYW0gY2Fubm90IGJlIGNvbnN0cnVj
dGVkIHdpdGggbm8gdHJhbnNmb3JtIGZ1bmN0aW9uJyk7CiAKIHRlc3QoZnVuY3Rpb24oKSB7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJhbmltYXRpb25zL2FjY2VsZXJhdGVkLWFuaW1hdGlv
bi1zaW5nbGUta2V5ZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmFuaW1hdGlvbnMvYWNjZWxl
cmF0ZWQtYW5pbWF0aW9uLXNpbmdsZS1rZXlmcmFtZS5odG1sCmluZGV4IGYzZjUzYTk5ZjBkNjMx
ZjYxZGRjNDMxZjdjMDQ1ZTNkYmQ5MzUxYTIuLjVhN2JlMDliODAxODg3NDQyMWE3Yjg2MTE1Y2U0
YjQ5YWVhOTlhZTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYmFuaW1hdGlvbnMvYWNjZWxl
cmF0ZWQtYW5pbWF0aW9uLXNpbmdsZS1rZXlmcmFtZS5odG1sCisrKyBiL0xheW91dFRlc3RzL3dl
YmFuaW1hdGlvbnMvYWNjZWxlcmF0ZWQtYW5pbWF0aW9uLXNpbmdsZS1rZXlmcmFtZS5odG1sCkBA
IC0xNyw3ICsxNyw3IEBACiA8ZGl2IGlkPSJ0YXJnZXQiPjwvZGl2PgogPHNjcmlwdD4KIAotYXN5
bmNfdGVzdChhc3luYyB0ID0+IHsKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKICAgICAvLyBT
dGFydCBhbiBhbmltYXRpb24gd2l0aCBhbiBpbXBsaWNpdCBmcm9tIGtleWZyYW1lLgogICAgIGNv
bnN0IGFuaW1hdGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKS5hbmltYXRl
KHsgdHJhbnNmb3JtOiAidHJhbnNsYXRlWCg2MDBweCkiIH0sIHsgZHVyYXRpb246IDEwMDAgKiAx
MDAwIH0pOwogCkBAIC0yNyw3ICsyNyw2IEBAIGFzeW5jX3Rlc3QoYXN5bmMgdCA9PiB7CiAgICAg
YXdhaXQgbmV3IFByb21pc2UocmVxdWVzdEFuaW1hdGlvbkZyYW1lKTsKIAogICAgIGFzc2VydF9l
cXVhbHMoaW50ZXJuYWxzLmFjY2VsZXJhdGVkQW5pbWF0aW9uc0ZvckVsZW1lbnQodGFyZ2V0KS5s
ZW5ndGgsIDEsICJUaGVyZSBzaG91bGQgYmUgYW4gYWNjZWxlcmF0ZWQgYW5pbWF0aW9uLiIpOwot
ICAgIHQuZG9uZSgpOwogfSwgIkEgdHJhbnNmb3JtIGFuaW1hdGlvbiB3aXRoIGEgc2luZ2xlIGtl
eWZyYW1lIHNob3VsZCBiZSBhYmxlIHRvIHJ1biBhY2NlbGVyYXRlZC4iKTsKIAogPC9zY3JpcHQ+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJhbmltYXRpb25zL2ZyYW1lLXJhdGUvYW5pbWF0
aW9uLWZyYW1lLXJhdGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmFuaW1hdGlvbnMvZnJhbWUtcmF0
ZS9hbmltYXRpb24tZnJhbWUtcmF0ZS5odG1sCmluZGV4IGVmMzk2MmQ0YWRkNTdkODJjZTg2Mjgw
NjJiMDNmMTc2YzUxYzczYTkuLmRiNWQ1YjIxMjdhZDZkOWM5NDZjZDNjMTUzNWYwZjg4MTIyNzg4
ODkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYmFuaW1hdGlvbnMvZnJhbWUtcmF0ZS9hbmlt
YXRpb24tZnJhbWUtcmF0ZS5odG1sCisrKyBiL0xheW91dFRlc3RzL3dlYmFuaW1hdGlvbnMvZnJh
bWUtcmF0ZS9hbmltYXRpb24tZnJhbWUtcmF0ZS5odG1sCkBAIC0yNyw3ICsyNyw3IEBAIHRlc3Qo
dCA9PiB7CiB0ZXN0KHQgPT4gewogICAgIGNvbnN0IGFuaW1hdGlvbiA9IG5ldyBBbmltYXRpb247
CiAgICAgZm9yIChsZXQgdmFsdWUgb2YgWyJkZWZhdWx0IiwgIjEyMCIsIG51bGwsIHVuZGVmaW5l
ZCwgW10sIHt9XSkgewotICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IsICgpID0+
IGFuaW1hdGlvbi5mcmFtZVJhdGUgPSB2YWx1ZSwgYFNldHRpbmcgdGhlIHZhbHVlICR7dmFsdWV9
IHRocm93c2ApOworICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gYW5p
bWF0aW9uLmZyYW1lUmF0ZSA9IHZhbHVlLCBgU2V0dGluZyB0aGUgdmFsdWUgJHt2YWx1ZX0gdGhy
b3dzYCk7CiAgICAgICAgIGFzc2VydF9lcXVhbHMoYW5pbWF0aW9uLmZyYW1lUmF0ZSwgImF1dG8i
LCBgU2V0dGluZyB0aGUgaW52YWxpZCB2YWx1ZSAiJHt2YWx1ZX0iIGRvZXMgbm90IGNoYW5nZSB0
aGUgdmFsdWVgKTsKICAgICB9CiB9LCAiSW52YWxpZCBhbmltYXRpb24uZnJhbWVSYXRlIHZhbHVl
cyIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViYW5pbWF0aW9ucy9zY2hlZHVsaW5nLW9m
LWFuaW1hdGlvbi13aXRoLXN0ZXBzLXRpbWluZy1mdW5jdGlvbi1vbi1lZmZlY3QuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmFuaW1hdGlvbnMvc2NoZWR1bGluZy1vZi1hbmltYXRpb24td2l0aC1zdGVw
cy10aW1pbmctZnVuY3Rpb24tb24tZWZmZWN0Lmh0bWwKaW5kZXggZjRiN2YwODU4NGIxZDg2N2Ez
OWNmMTgxNzU5MTYyYjNmYWYwMjdjYy4uYzI2NzhmNTQwZDk0MjZhODViYTkyNTIxMzUzYWZlYjU1
MDUwNjA5YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2ViYW5pbWF0aW9ucy9zY2hlZHVsaW5n
LW9mLWFuaW1hdGlvbi13aXRoLXN0ZXBzLXRpbWluZy1mdW5jdGlvbi1vbi1lZmZlY3QuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJhbmltYXRpb25zL3NjaGVkdWxpbmctb2YtYW5pbWF0aW9uLXdp
dGgtc3RlcHMtdGltaW5nLWZ1bmN0aW9uLW9uLWVmZmVjdC5odG1sCkBAIC0zLDE1ICszLDEzIEBA
CiA8ZGl2PjwvZGl2PgogPHNjcmlwdD4KIAotYXN5bmNfdGVzdChhc3luYyB0ID0+IHsKK3Byb21p
c2VfdGVzdChhc3luYyB0ID0+IHsKICAgICBjb25zdCBhbmltYXRpb24gPSBkb2N1bWVudC5xdWVy
eVNlbGVjdG9yKCJkaXYiKS5hbmltYXRlKHsgbWFyZ2luTGVmdDogIjEwMHB4IiB9LCB7IGR1cmF0
aW9uOiAxMDAwLCBlYXNpbmc6ICJzdGVwcygxMCkiIH0pOwogCiAgICAgYXdhaXQgYW5pbWF0aW9u
LnJlYWR5OwotICAgIAorCiAgICAgYW5pbWF0aW9uLmN1cnJlbnRUaW1lID0gMjI1OwogICAgIGFz
c2VydF9lcXVhbHMoaW50ZXJuYWxzLnRpbWVUb05leHRBbmltYXRpb25UaWNrKGFuaW1hdGlvbiks
IDc1LCAiQ29tcHV0aW5nIHRoZSB0aW1lIHVudGlsIHRoZSBuZXh0IHRpY2sgd2hlbiBwYXJ0bHkg
dGhyb3VnaCBhIHN0ZXBzIGludGVydmFsLiIpOwotICAgIAotICAgIHQuZG9uZSgpOwogfSwgIkNv
bXB1dGluZyB0aGUgdGltZSB1bnRpbCB0aGUgbmV4dCB0aWNrIGZvciBhbiBlZmZlY3Qgd2l0aCBh
IHN0ZXBzKCkgZWFzaW5nLiIpOwogCiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmFuaW1hdGlvbnMvc2NoZWR1bGluZy1vZi1hbmltYXRpb24td2l0aC1zdGVwcy10aW1pbmct
ZnVuY3Rpb24tb24ta2V5ZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmFuaW1hdGlvbnMvc2No
ZWR1bGluZy1vZi1hbmltYXRpb24td2l0aC1zdGVwcy10aW1pbmctZnVuY3Rpb24tb24ta2V5ZnJh
bWUuaHRtbAppbmRleCAzOWZjYmRlMzBhMTYyZDhiYmM2OWVhMTg2NTU4NGU3MzE0ODg0ZTIxLi5j
OTM4ZTlhZTYwMmIzYTQ2NzkzM2UxNjdkYWNjYzRiMjNkYTIyY2QyIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy93ZWJhbmltYXRpb25zL3NjaGVkdWxpbmctb2YtYW5pbWF0aW9uLXdpdGgtc3RlcHMt
dGltaW5nLWZ1bmN0aW9uLW9uLWtleWZyYW1lLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvd2ViYW5p
bWF0aW9ucy9zY2hlZHVsaW5nLW9mLWFuaW1hdGlvbi13aXRoLXN0ZXBzLXRpbWluZy1mdW5jdGlv
bi1vbi1rZXlmcmFtZS5odG1sCkBAIC0zLDE4ICszLDE2IEBACiA8ZGl2PjwvZGl2PgogPHNjcmlw
dD4KIAotYXN5bmNfdGVzdChhc3luYyB0ID0+IHsKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsK
ICAgICBjb25zdCBhbmltYXRpb24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJkaXYiKS5hbmlt
YXRlKHsKICAgICAgICAgbWFyZ2luTGVmdDogWyIwIiwgIjI1MHB4IiwgIjUwMHB4IiwgIjc1MHB4
IiwgIjEwMDBweCJdLAogICAgICAgICBlYXNpbmc6IFsibGluZWFyIiwgImxpbmVhciIsICJzdGVw
cygxMCkiLCAibGluZWFyIl0KICAgICB9LCAxMDAwKTsKIAogICAgIGF3YWl0IGFuaW1hdGlvbi5y
ZWFkeTsKLSAgICAKKwogICAgIGFuaW1hdGlvbi5jdXJyZW50VGltZSA9IDUzNTsKICAgICBhc3Nl
cnRfZXF1YWxzKGludGVybmFscy50aW1lVG9OZXh0QW5pbWF0aW9uVGljayhhbmltYXRpb24pLCAx
NSk7Ci0KLSAgICB0LmRvbmUoKTsKIH0sICJDb21wdXRpbmcgdGhlIHRpbWUgdW50aWwgdGhlIG5l
eHQgdGljayBmb3IgYSBrZXlmcmFtZSB3aXRoIGEgc3RlcHMoKSB0aW1pbmcgZnVuY3Rpb24uIik7
CiAKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViYW5pbWF0aW9ucy9zY2hl
ZHVsaW5nLW9mLWNzcy1hbmltYXRpb24td2l0aC1leHBsaWNpdC1zdGVwcy10aW1pbmctZnVuY3Rp
b24tb24tc29tZS1rZXlmcmFtZXMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmFuaW1hdGlvbnMvc2No
ZWR1bGluZy1vZi1jc3MtYW5pbWF0aW9uLXdpdGgtZXhwbGljaXQtc3RlcHMtdGltaW5nLWZ1bmN0
aW9uLW9uLXNvbWUta2V5ZnJhbWVzLmh0bWwKaW5kZXggOTFlMmZjZGFmMTc0YzNmODc4YjUwZmI0
YTc0MzZkNWNlMTE0MzVkMS4uNjQzNjM0YWIxMjE3NzliZGQwMTVhMTE0NzRhYTkyZTdkZTIxNWZi
NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2ViYW5pbWF0aW9ucy9zY2hlZHVsaW5nLW9mLWNz
cy1hbmltYXRpb24td2l0aC1leHBsaWNpdC1zdGVwcy10aW1pbmctZnVuY3Rpb24tb24tc29tZS1r
ZXlmcmFtZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy93ZWJhbmltYXRpb25zL3NjaGVkdWxpbmct
b2YtY3NzLWFuaW1hdGlvbi13aXRoLWV4cGxpY2l0LXN0ZXBzLXRpbWluZy1mdW5jdGlvbi1vbi1z
b21lLWtleWZyYW1lcy5odG1sCkBAIC0xNiw3ICsxNiw3IEBACiA8ZGl2PjwvZGl2PgogPHNjcmlw
dD4KIAotYXN5bmNfdGVzdChhc3luYyB0ID0+IHsKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsK
ICAgICBjb25zdCBhbmltYXRpb24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJkaXYiKS5nZXRB
bmltYXRpb25zKClbMF07CiAKICAgICBhd2FpdCBhbmltYXRpb24ucmVhZHk7CkBAIC0zMiw4ICsz
Miw2IEBAIGFzeW5jX3Rlc3QoYXN5bmMgdCA9PiB7CiAKICAgICBhbmltYXRpb24uY3VycmVudFRp
bWUgPSA3ODA7CiAgICAgYXNzZXJ0X2VxdWFscyhpbnRlcm5hbHMudGltZVRvTmV4dEFuaW1hdGlv
blRpY2soYW5pbWF0aW9uKSwgMjAsICJQcm9ncmVzcyBjb250YWluZWQgaW4gdGhlIGludGVydmFs
IGZvciBhbiBpbXBsaWNpdCAxMDAlIGtleWZyYW1lLiIpOwotCi0gICAgdC5kb25lKCk7CiB9LCAi
Q29tcHV0aW5nIHRoZSB0aW1lIHVudGlsIHRoZSBuZXh0IHRpY2sgZm9yIGEgQ1NTIEFuaW1hdGlv
biB3aXRoIGltcGxpY2l0IGFuZCBleHBsaWNpdCBzdGVwcygpIHRpbWluZyBmdW5jdGlvbnMuIik7
CiAKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViYW5pbWF0aW9ucy9zY2hl
ZHVsaW5nLW9mLWNzcy1hbmltYXRpb24td2l0aC1pbXBsaWNpdC1zdGVwcy10aW1pbmctZnVuY3Rp
b24uaHRtbCBiL0xheW91dFRlc3RzL3dlYmFuaW1hdGlvbnMvc2NoZWR1bGluZy1vZi1jc3MtYW5p
bWF0aW9uLXdpdGgtaW1wbGljaXQtc3RlcHMtdGltaW5nLWZ1bmN0aW9uLmh0bWwKaW5kZXggYmM5
MDQ3MDdjNzBlMjZkZDAyOWI3OGUyZGZhZjU5Y2QyZmRhNzMwMy4uODEyYzY3NTdmMDhlNzdlN2Jm
MTMwZDM4YmQ4ODNjYWFhNWYzNTgzMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2ViYW5pbWF0
aW9ucy9zY2hlZHVsaW5nLW9mLWNzcy1hbmltYXRpb24td2l0aC1pbXBsaWNpdC1zdGVwcy10aW1p
bmctZnVuY3Rpb24uaHRtbAorKysgYi9MYXlvdXRUZXN0cy93ZWJhbmltYXRpb25zL3NjaGVkdWxp
bmctb2YtY3NzLWFuaW1hdGlvbi13aXRoLWltcGxpY2l0LXN0ZXBzLXRpbWluZy1mdW5jdGlvbi5o
dG1sCkBAIC0xNCwxOCArMTQsMTYgQEAKIDxkaXY+PC9kaXY+CiA8c2NyaXB0PgogCi1hc3luY190
ZXN0KGFzeW5jIHQgPT4geworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4gewogICAgIGNvbnN0IGFu
aW1hdGlvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImRpdiIpLmdldEFuaW1hdGlvbnMoKVsw
XTsKIAogICAgIGF3YWl0IGFuaW1hdGlvbi5yZWFkeTsKLSAgICAKKwogICAgIGFuaW1hdGlvbi5j
dXJyZW50VGltZSA9IDEwOwogICAgIGFzc2VydF9lcXVhbHMoaW50ZXJuYWxzLnRpbWVUb05leHRB
bmltYXRpb25UaWNrKGFuaW1hdGlvbiksIDQwLCAiUHJvZ3Jlc3MgY29udGFpbmVkIGluIHRoZSBp
bnRlcnZhbCBmb3IgYW4gaW1wbGljaXQgMCUga2V5ZnJhbWUuIik7CiAKICAgICBhbmltYXRpb24u
Y3VycmVudFRpbWUgPSA5MjA7CiAgICAgYXNzZXJ0X2VxdWFscyhpbnRlcm5hbHMudGltZVRvTmV4
dEFuaW1hdGlvblRpY2soYW5pbWF0aW9uKSwgMzAsICJQcm9ncmVzcyBjb250YWluZWQgaW4gdGhl
IGludGVydmFsIGZvciBhbiBpbXBsaWNpdCAxMDAlIGtleWZyYW1lLiIpOwotCi0gICAgdC5kb25l
KCk7CiB9LCAiQ29tcHV0aW5nIHRoZSB0aW1lIHVudGlsIHRoZSBuZXh0IHRpY2sgZm9yIGEgQ1NT
IEFuaW1hdGlvbiB3aXRoIGltcGxpY2l0IHN0ZXBzKCkgdGltaW5nIGZ1bmN0aW9ucy4iKTsKIAog
PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJhdWRpby93ZWJhdWRpby1nYy5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vd2ViYXVkaW8tZ2MuaHRtbAppbmRleCA3MTY3ZWNm
NTExYzVhMDRiOTgwYjE4MTRiYTNkNjhhMWU2MGExODlhLi5mNWFkMjlmYWFmYmYxOTc3ZTUwODZh
NThjNjg1ZmVhMWViZDhiOTRmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJhdWRpby93ZWJh
dWRpby1nYy5odG1sCisrKyBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL3dlYmF1ZGlvLWdjLmh0bWwK
QEAgLTgsNiArOCw3IEBACiA8c2NyaXB0IHNyYz0uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBv
cnQuanM+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0uLi9yZXNvdXJjZXMvZ2MuanM+PC9zY3JpcHQ+
CiA8c2NyaXB0Pgorc2V0dXAoeyBzaW5nbGVfdGVzdDogdHJ1ZSB9KTsKIGxldCBjb3VudCA9IDEw
MDsKIAogZnVuY3Rpb24gY2hlY2tFdmVudCgpIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YnJ0Yy9jYWxsaW5nLXBlZXJjb25uZWN0aW9uLW9uY2UtY2xvc2VkLmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJydGMvY2FsbGluZy1wZWVyY29ubmVjdGlvbi1vbmNlLWNsb3NlZC5odG1sCmluZGV4IGM2
YTQxYmQ1NWNiMjY5MDI5MGNhN2IzY2M2MWJkMDc1MzA4MjczNmIuLjQwYmEyOWZlMTkwNzVmNmZi
Y2Q2MGUwYjAxODU4YTViZDA3OGYwMDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYnJ0Yy9j
YWxsaW5nLXBlZXJjb25uZWN0aW9uLW9uY2UtY2xvc2VkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
d2VicnRjL2NhbGxpbmctcGVlcmNvbm5lY3Rpb24tb25jZS1jbG9zZWQuaHRtbApAQCAtMzAsMjYg
KzMwLDI2IEBAIHByb21pc2VfdGVzdCgoKSA9PiB7CiAKIHByb21pc2VfdGVzdCgodGVzdCkgPT4g
ewogICAgIHJldHVybiBjbG9zZWRDb25uZWN0aW9uKCkudGhlbigoY29ubmVjdGlvbikgPT4gewot
ICAgICAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHRlc3QsICdJbnZhbGlkU3RhdGVFcnJvcics
IGNvbm5lY3Rpb24uY3JlYXRlT2ZmZXIoKSk7CisgICAgICAgIHJldHVybiBwcm9taXNlX3JlamVj
dHNfZG9tKHRlc3QsICdJbnZhbGlkU3RhdGVFcnJvcicsIGNvbm5lY3Rpb24uY3JlYXRlT2ZmZXIo
KSk7CiAgICAgfSk7CiB9LCAiRW5zdXJpbmcgY2xvc2VkIGNvbm5lY3Rpb24gY3JlYXRlT2ZmZXIg
ZG9lcyBub3QgY3Jhc2giKTsKIAogcHJvbWlzZV90ZXN0KCgpID0+IHsKICAgICByZXR1cm4gY2xv
c2VkQ29ubmVjdGlvbigpLnRoZW4oKGNvbm5lY3Rpb24pID0+IHsKLSAgICAgICAgYXNzZXJ0X3Ro
cm93cygiSW52YWxpZFN0YXRlRXJyb3IiLCAoKSA9PiB7ICBjb25uZWN0aW9uLmNyZWF0ZURhdGFD
aGFubmVsKCJ0ZXN0Iik7IH0pOworICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiSW52YWxpZFN0
YXRlRXJyb3IiLCAoKSA9PiB7ICBjb25uZWN0aW9uLmNyZWF0ZURhdGFDaGFubmVsKCJ0ZXN0Iik7
IH0pOwogICAgIH0pOwogfSwgIkVuc3VyaW5nIGNsb3NlZCBjb25uZWN0aW9uIGNyZWF0ZURhdGFD
aGFubmVsIGRvZXMgbm90IGNyYXNoIik7CiAKIHByb21pc2VfdGVzdCgoKSA9PiB7CiAgICAgcmV0
dXJuIGNsb3NlZENvbm5lY3Rpb24oKS50aGVuKChjb25uZWN0aW9uKSA9PiB7Ci0gICAgICAgIGFz
c2VydF90aHJvd3MoIkludmFsaWRTdGF0ZUVycm9yIiwgKCkgPT4geyBjb25uZWN0aW9uLmFkZFRy
YW5zY2VpdmVyKCJ2aWRlbyIpOyB9KTsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19kb20oIkludmFs
aWRTdGF0ZUVycm9yIiwgKCkgPT4geyBjb25uZWN0aW9uLmFkZFRyYW5zY2VpdmVyKCJ2aWRlbyIp
OyB9KTsKICAgICB9KTsKIH0sICJFbnN1cmluZyBjbG9zZWQgY29ubmVjdGlvbiBhZGRUcmFuc2Nl
aXZlciBkb2VzIG5vdCBjcmFzaCIpOwogCiBwcm9taXNlX3Rlc3QoKCkgPT4gewogICAgIHJldHVy
biBjbG9zZWRDb25uZWN0aW9uKCkudGhlbigoY29ubmVjdGlvbikgPT4gewogICAgICAgICByZXR1
cm4gbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe3ZpZGVvOiB0cnVlfSkudGhl
bigoc3RyZWFtKSA9PiB7Ci0gICAgICAgICAgICBhc3NlcnRfdGhyb3dzKCJJbnZhbGlkU3RhdGVF
cnJvciIsICgpID0+IHsgY29ubmVjdGlvbi5hZGRUcmFjayhzdHJlYW0uZ2V0VmlkZW9UcmFja3Mo
KVswXSwgc3RyZWFtKTsgfSk7CisgICAgICAgICAgICBhc3NlcnRfdGhyb3dzX2RvbSgiSW52YWxp
ZFN0YXRlRXJyb3IiLCAoKSA9PiB7IGNvbm5lY3Rpb24uYWRkVHJhY2soc3RyZWFtLmdldFZpZGVv
VHJhY2tzKClbMF0sIHN0cmVhbSk7IH0pOwogICAgICAgICB9KTsKICAgICB9KTsKIH0sICJFbnN1
cmluZyBjbG9zZWQgY29ubmVjdGlvbiBhZGRUcmFjayBkb2VzIG5vdCBjcmFzaCIpOwpAQCAtNjIs
NyArNjIsNyBAQCBwcm9taXNlX3Rlc3QoKHRlc3QpID0+IHsKICAgICAgICAgcGMyLmNyZWF0ZURh
dGFDaGFubmVsKCJ0ZXN0Iik7CiAgICAgICAgIHJldHVybiBwYzIuY3JlYXRlT2ZmZXIoKTsKICAg
ICB9KS50aGVuKChzZHApID0+IHsKLSAgICAgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0ZXN0
LCAnSW52YWxpZFN0YXRlRXJyb3InLCBjb25uZWN0aW9uLnNldFJlbW90ZURlc2NyaXB0aW9uKHNk
cCkpOworICAgICAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2RvbSh0ZXN0LCAnSW52YWxpZFN0
YXRlRXJyb3InLCBjb25uZWN0aW9uLnNldFJlbW90ZURlc2NyaXB0aW9uKHNkcCkpOwogICAgIH0p
OwogfSwgIkVuc3VyaW5nIGNsb3NlZCBjb25uZWN0aW9uIHNldFJlbW90ZURlc2NyaXB0aW9uIGRv
ZXMgbm90IGNyYXNoIik7CiAKQEAgLTc0LDcgKzc0LDcgQEAgcHJvbWlzZV90ZXN0KCh0ZXN0KSA9
PiB7CiAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHJlc29sdmUoc2RwKSwgMTAwKTsKICAg
ICAgICAgfSk7CiAgICAgfSkudGhlbigoc2RwKSA9PiB7Ci0gICAgICAgIHJldHVybiBwcm9taXNl
X3JlamVjdHModGVzdCwgJ0ludmFsaWRTdGF0ZUVycm9yJywgbG9jYWxDb25uZWN0aW9uLnNldExv
Y2FsRGVzY3JpcHRpb24oc2RwKSk7CisgICAgICAgIHJldHVybiBwcm9taXNlX3JlamVjdHNfZG9t
KHRlc3QsICdJbnZhbGlkU3RhdGVFcnJvcicsIGxvY2FsQ29ubmVjdGlvbi5zZXRMb2NhbERlc2Ny
aXB0aW9uKHNkcCkpOwogICAgIH0pOwogfSwgIkVuc3VyaW5nIGNsb3NlZCBjb25uZWN0aW9uIHNl
dExvY2FsRGVzY3JpcHRpb24gZG9lcyBub3QgY3Jhc2giKTsKIApAQCAtODcsNyArODcsNyBAQCBw
cm9taXNlX3Rlc3QoKHRlc3QpID0+IHsKICAgICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgbG9j
YWxDb25uZWN0aW9uLmNsb3NlKCk7CiAgICAgfSkudGhlbigoKSA9PiB7Ci0gICAgICAgIHJldHVy
biBwcm9taXNlX3JlamVjdHModGVzdCwgJ0ludmFsaWRTdGF0ZUVycm9yJywgbG9jYWxDb25uZWN0
aW9uLmNyZWF0ZUFuc3dlcigpKTsKKyAgICAgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19kb20o
dGVzdCwgJ0ludmFsaWRTdGF0ZUVycm9yJywgbG9jYWxDb25uZWN0aW9uLmNyZWF0ZUFuc3dlcigp
KTsKICAgICB9KTsKIH0sICJFbnN1cmluZyBjbG9zZWQgY29ubmVjdGlvbiBjcmVhdGVBbnN3ZXIg
ZG9lcyBub3QgY3Jhc2giKTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2VicnRjL2NlcnRp
ZmljYXRlcy1pbmRleGVkZGIuaHRtbCBiL0xheW91dFRlc3RzL3dlYnJ0Yy9jZXJ0aWZpY2F0ZXMt
aW5kZXhlZGRiLmh0bWwKaW5kZXggM2FhOGJhY2FjMTE2ZDFmNzczMjRkYmVkY2NhZDE1M2ZjZjJj
ZmQ0Ny4uYzljMjEyMTIyZmQxZDE5ZWQyNzRjZDUzZWJjMDBhNmRkZmExMmIxZSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvd2VicnRjL2NlcnRpZmljYXRlcy1pbmRleGVkZGIuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJydGMvY2VydGlmaWNhdGVzLWluZGV4ZWRkYi5odG1sCkBAIC04LDYgKzgs
NyBAQAogICAgIDwvaGVhZD4KICAgICA8Ym9keT4KICAgICAgICAgPHNjcmlwdD4KK3NldHVwKHsg
c2luZ2xlX3Rlc3Q6IHRydWUgfSk7CiBsZXQgY2VydGlmaWNhdGU7CiAKIGZ1bmN0aW9uIHN0b3Jl
S2V5KCkgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2VicnRjL2RhdGFjaGFubmVsL2NyZWF0
aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJydGMvZGF0YWNoYW5uZWwvY3JlYXRpb24uaHRtbApp
bmRleCAwNjM1OGI2YTUxMmIxMTJmYjg0YTBhYmIwMDdmMTgyOWZlMGY1NDdkLi40NjdmNWQ3MmZl
ZTQ5MTBkMzA2YTQ2Y2VjOTU5MjM2ZmUyNWI3MGMwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93
ZWJydGMvZGF0YWNoYW5uZWwvY3JlYXRpb24uaHRtbAorKysgYi9MYXlvdXRUZXN0cy93ZWJydGMv
ZGF0YWNoYW5uZWwvY3JlYXRpb24uaHRtbApAQCAtMTQsMjAgKzE0LDIwIEBAIGZvciAodmFyIGNw
dHIgPSAwOyBjcHRyIDwgMTY7ICsrY3B0cikKIAogdGVzdCgoKSA9PiB7CiAgICAgdmFyIHBjID0g
bmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7Ci0gICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9y
LCAoKSA9PiB7IHBjLmNyZWF0ZURhdGFDaGFubmVsKGxvbmdTdHJpbmcpOyB9KTsKKyAgICBhc3Nl
cnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4geyBwYy5jcmVhdGVEYXRhQ2hhbm5lbChsb25n
U3RyaW5nKTsgfSk7CiB9LCAiQ3JlYXRpbmcgZGF0YSBjaGFubmVsIHdpdGggdmVyeSBsb25nIGxh
YmVsIik7CiAKIHRlc3QoKCkgPT4gewogICAgIHZhciBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlv
bigpOwogICAgIHBjLmNsb3NlKCk7Ci0gICAgYXNzZXJ0X3Rocm93cygiSW52YWxpZFN0YXRlRXJy
b3IiLCAoKSA9PiB7IHBjLmNyZWF0ZURhdGFDaGFubmVsKCdzZW5kRGF0YUNoYW5uZWwnKTsgfSk7
CisgICAgYXNzZXJ0X3Rocm93c19kb20oIkludmFsaWRTdGF0ZUVycm9yIiwgKCkgPT4geyBwYy5j
cmVhdGVEYXRhQ2hhbm5lbCgnc2VuZERhdGFDaGFubmVsJyk7IH0pOwogfSwgIkNyZWF0aW5nIGRh
dGEgY2hhbm5lbCBhZnRlciBjbG9zaW5nIHRoZSBjb25uZWN0aW9uIik7CiAKIGZ1bmN0aW9uIHRl
c3RXcm9uZ0RhdGFDaGFubmVsSW5pdChpbml0LCB0aXRsZSkKIHsKICAgICByZXR1cm4gdGVzdCgo
KSA9PiB7CiAgICAgICAgIHZhciBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOwotICAgICAg
ICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IsICgpID0+IHsgcGMuY3JlYXRlRGF0YUNoYW5u
ZWwoJ3NlbmREYXRhQ2hhbm5lbCcsIGluaXQpOyB9KTsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19q
cyhUeXBlRXJyb3IsICgpID0+IHsgcGMuY3JlYXRlRGF0YUNoYW5uZWwoJ3NlbmREYXRhQ2hhbm5l
bCcsIGluaXQpOyB9KTsKICAgICB9LCAiV3JvbmcgZGF0YSBjaGFubmVsIGluaXQ6ICIgKyB0aXRs
ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYnJ0Yy9kYXRhY2hhbm5lbC9kYXRh
Y2hhbm5lbC1ldmVudC5odG1sIGIvTGF5b3V0VGVzdHMvd2VicnRjL2RhdGFjaGFubmVsL2RhdGFj
aGFubmVsLWV2ZW50Lmh0bWwKaW5kZXggYTZjZGQ1YmZjM2FkYzZjNzAxMGRkYmRkYTg5MWM4ZjY1
NDhkYzJkMC4uZDgxYjAxMDJiYjk0MGI2NDg1ODg4NTdmYTgxYWRhODhkY2M5MTFlZiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvd2VicnRjL2RhdGFjaGFubmVsL2RhdGFjaGFubmVsLWV2ZW50Lmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvd2VicnRjL2RhdGFjaGFubmVsL2RhdGFjaGFubmVsLWV2ZW50
Lmh0bWwKQEAgLTEyLDExICsxMiwxMSBAQCB0ZXN0KCgpID0+IHsKICAgICB2YXIgcGMgPSBuZXcg
UlRDUGVlckNvbm5lY3Rpb24oKTsKICAgICB2YXIgY2hhbm5lbCA9IHBjLmNyZWF0ZURhdGFDaGFu
bmVsKCJ0ZXN0Iik7CiAKLSAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IsICgpID0+IG5l
dyBSVENEYXRhQ2hhbm5lbEV2ZW50KCkpOwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJv
ciwgKCkgPT4gbmV3IFJUQ0RhdGFDaGFubmVsRXZlbnQoInRlc3QiKSk7Ci0gICAgYXNzZXJ0X3Ro
cm93cyhuZXcgVHlwZUVycm9yLCAoKSA9PiBuZXcgUlRDRGF0YUNoYW5uZWxFdmVudCgidGVzdCIs
IHVuZGVmaW5lZCkpOwotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvciwgKCkgPT4gbmV3
IFJUQ0RhdGFDaGFubmVsRXZlbnQoInRlc3QiLCB7IGNoYW5uZWw6IDEgfSkpOwotICAgIGFzc2Vy
dF90aHJvd3MobmV3IFR5cGVFcnJvciwgKCkgPT4gbmV3IFJUQ0RhdGFDaGFubmVsRXZlbnQodW5k
ZWZpbmVkLCB7IGNoYW5uZWw6IDEgfSkpOworICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9y
LCAoKSA9PiBuZXcgUlRDRGF0YUNoYW5uZWxFdmVudCgpKTsKKyAgICBhc3NlcnRfdGhyb3dzX2pz
KFR5cGVFcnJvciwgKCkgPT4gbmV3IFJUQ0RhdGFDaGFubmVsRXZlbnQoInRlc3QiKSk7CisgICAg
YXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IG5ldyBSVENEYXRhQ2hhbm5lbEV2ZW50
KCJ0ZXN0IiwgdW5kZWZpbmVkKSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgp
ID0+IG5ldyBSVENEYXRhQ2hhbm5lbEV2ZW50KCJ0ZXN0IiwgeyBjaGFubmVsOiAxIH0pKTsKKyAg
ICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgKCkgPT4gbmV3IFJUQ0RhdGFDaGFubmVsRXZl
bnQodW5kZWZpbmVkLCB7IGNoYW5uZWw6IDEgfSkpOwogCiAgICAgdmFyIGV2ZW50ID0gbmV3IFJU
Q0RhdGFDaGFubmVsRXZlbnQoInRlc3QiLCB7IGNoYW5uZWw6IGNoYW5uZWwgfSk7CiAgICAgYXNz
ZXJ0X2VxdWFscyhldmVudC5jaGFubmVsLCBjaGFubmVsLCAiY2hhbm5lbCBwYXNzZWQgaW4gY29u
c3RydWN0b3Igc2hvdWxkIGJlIHVzZWQiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYnJ0
Yy9kYXRhY2hhbm5lbC9nZXRTdGF0cy1uby1wcmZseC1yZW1vdGUtY2FuZGlkYXRlLmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJydGMvZGF0YWNoYW5uZWwvZ2V0U3RhdHMtbm8tcHJmbHgtcmVtb3RlLWNh
bmRpZGF0ZS5odG1sCmluZGV4IDk3YjU5MWFmZTNhMTJiMWZhYmM0OWY3ZDM2ZjdiYjgzNDY3YWE0
NTguLjQyN2M0OTFiODIxNTFiN2RiN2E4NDZmYTM2ZTQ4YmE5YzkzNzJhYmIgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3dlYnJ0Yy9kYXRhY2hhbm5lbC9nZXRTdGF0cy1uby1wcmZseC1yZW1vdGUt
Y2FuZGlkYXRlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvd2VicnRjL2RhdGFjaGFubmVsL2dldFN0
YXRzLW5vLXByZmx4LXJlbW90ZS1jYW5kaWRhdGUuaHRtbApAQCAtNCw3ICs0LDggQEAKIDxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgogPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CiA8
c2NyaXB0PgotICAndXNlIHN0cmljdCc7CisndXNlIHN0cmljdCc7CitzZXR1cCh7IHNpbmdsZV90
ZXN0OiB0cnVlIH0pOwogY29uc3QgbG9jYWxQYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOwog
Y29uc3QgcmVtb3RlUGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2VicnRjL2Rpc2FibGUtZW5jcnlwdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMv
d2VicnRjL2Rpc2FibGUtZW5jcnlwdGlvbi5odG1sCmluZGV4IDY3NDliZjlkOWM3MzFlOTJkYjY4
ODcwOTUxMGFmODcxYTViNzk0NGUuLjE1YmU3MzE5OWE1MThiYjQxMTJjMTJhYzkyMjVlMTIyOTk2
ZGY0Y2YgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYnJ0Yy9kaXNhYmxlLWVuY3J5cHRpb24u
aHRtbAorKysgYi9MYXlvdXRUZXN0cy93ZWJydGMvZGlzYWJsZS1lbmNyeXB0aW9uLmh0bWwKQEAg
LTQzLDcgKzQzLDcgQEAgcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CiAgICAgY29uc3Qg
b2ZmZXIgPSBhd2FpdCBwYzEuY3JlYXRlT2ZmZXIoKTsKICAgICBhd2FpdCBwYzEuc2V0TG9jYWxE
ZXNjcmlwdGlvbihvZmZlcik7CiAKLSAgICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHRlc3QsICdJ
bnZhbGlkQWNjZXNzRXJyb3InLCBwYzIuc2V0UmVtb3RlRGVzY3JpcHRpb24ob2ZmZXIpKTsKKyAg
ICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2RvbSh0ZXN0LCAnSW52YWxpZEFjY2Vzc0Vycm9yJywg
cGMyLnNldFJlbW90ZURlc2NyaXB0aW9uKG9mZmVyKSk7CiB9LCAiTWFrZSBzdXJlIGEgcGMgd2l0
aCBlbmNyeXB0aW9uIGFuZCBhIHBjIHdpdGhvdXQgZW5jcnlwdGlvbiBjYW5ub3QgdGFsayIpOwog
ICAgIDwvc2NyaXB0PgogICA8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJydGMv
bGVnYWN5LWFwaS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJydGMvbGVnYWN5LWFwaS1l
eHBlY3RlZC50eHQKaW5kZXggNjg2NTVlNGYwY2VkOTExODM0MjBmYWY1OGE0YmRhZmM3YmVjM2Ix
OC4uZmIyMjIyNWJlYzY0NjA2YTNmMjc5ZmJkNjFjMjJmYmUyZTYyMTM1YyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvd2VicnRjL2xlZ2FjeS1hcGktZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL3dlYnJ0Yy9sZWdhY3ktYXBpLWV4cGVjdGVkLnR4dApAQCAtOSw2ICs5LDcgQEAgRGV0YWls
cwogCiBSZXN1bHQJVGVzdCBOYW1lCU1lc3NhZ2UKIFBhc3MJVGVzdGluZyBsZWdhY3kgQVBJIGlz
IG5vdCBkZWZpbmVkCQorQXNzZXJ0cyBydW4KIAogUEFTUyBUZXN0aW5nIGxlZ2FjeSBBUEkgaXMg
bm90IGRlZmluZWQKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2VicnRjL3BjLWRldGFjaGVk
LWRvY3VtZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJydGMvcGMtZGV0YWNoZWQtZG9jdW1lbnQu
aHRtbAppbmRleCA5ZmVjZjIyNTQ4MTE2YTRiOTI4MmRmNTU1MjQ3MmE4YjQ2MWVjOGRlLi4zZDNi
NTM3Y2Q2Njk0M2UyYTllNTA3ODE2OWRjOTUyODliY2IzNGY1IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy93ZWJydGMvcGMtZGV0YWNoZWQtZG9jdW1lbnQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJydGMvcGMtZGV0YWNoZWQtZG9jdW1lbnQuaHRtbApAQCAtOSwxNiArOSwxOCBAQCB0ZXN0KCgp
ID0+IHsKICAgICBmcmFtZS5zZXRBdHRyaWJ1dGUoInNyYyIsICIvIik7CiAgICAgZG9jdW1lbnQu
Ym9keS5hcHBlbmRDaGlsZChmcmFtZSk7CiAgICAgdmFyIGNvbnN0cnVjdG9yID0gZnJhbWUuY29u
dGVudFdpbmRvdy5SVENQZWVyQ29ubmVjdGlvbjsKKyAgICBjb25zdCBmcmFtZURPTUV4Y2VwdGlv
biA9IGZyYW1lLmNvbnRlbnRXaW5kb3cuRE9NRXhjZXB0aW9uCiAgICAgZG9jdW1lbnQuYm9keS5y
ZW1vdmVDaGlsZChmcmFtZSk7Ci0gICAgYXNzZXJ0X3Rocm93cygnTm90U3VwcG9ydGVkRXJyb3In
LCAoKSA9PiB7IG5ldyBjb25zdHJ1Y3RvcigpIH0pOworICAgIGFzc2VydF90aHJvd3NfZG9tKCdO
b3RTdXBwb3J0ZWRFcnJvcicsIGZyYW1lRE9NRXhjZXB0aW9uLCAoKSA9PiB7IG5ldyBjb25zdHJ1
Y3RvcigpIH0pOwogfSwgIlBlZXIgQ29ubmVjdGlvbiBvYmplY3RzIHNob3VsZCBub3QgYmUgY3Jl
YXRlZCBpbiBkZXRhY2hlZCBkb2N1bWVudHMiKTsKIHRlc3QoKCkgPT4gewogICAgIHZhciBmcmFt
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOwogICAgIGZyYW1lLnNldEF0dHJp
YnV0ZSgic3JjIiwgIi8iKTsKICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGZyYW1lKTsK
ICAgICB2YXIgcGMgPSBuZXcgZnJhbWUuY29udGVudFdpbmRvdy5SVENQZWVyQ29ubmVjdGlvbigp
OworICAgIGNvbnN0IGZyYW1lRE9NRXhjZXB0aW9uID0gZnJhbWUuY29udGVudFdpbmRvdy5ET01F
eGNlcHRpb24KICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGZyYW1lKTsKLSAgICBhc3Nl
cnRfdGhyb3dzKCdJbnZhbGlkU3RhdGVFcnJvcicsICgpID0+IHsgcGMuc2V0Q29uZmlndXJhdGlv
bih7fSkgfSk7CisgICAgYXNzZXJ0X3Rocm93c19kb20oJ0ludmFsaWRTdGF0ZUVycm9yJywgZnJh
bWVET01FeGNlcHRpb24sICgpID0+IHsgcGMuc2V0Q29uZmlndXJhdGlvbih7fSkgfSk7CiB9LCAi
UGVlciBDb25uZWN0aW9uIG9iamVjdHMgc2hvdWxkIG5vdCBiZSBjcmVhdGVkIGluIGRldGFjaGVk
IGRvY3VtZW50cyAyIik7CiA8L3NjcmlwdD4KIDwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYnJ0Yy9zdHVuLXNlcnZlci1maWx0ZXJpbmcuaHRtbCBiL0xheW91dFRlc3RzL3dlYnJ0
Yy9zdHVuLXNlcnZlci1maWx0ZXJpbmcuaHRtbAppbmRleCBkMGM5NGZlNjIxZWZiOTY4YzM0MGQ3
YWY1MjU2Yzk5YzU2MTgxOTI1Li4yNTAwZjJjNTE5YjQ4MjdjZmVjYzdmMTFhNTNjNjNmOGVhMjVk
MTQ3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJydGMvc3R1bi1zZXJ2ZXItZmlsdGVyaW5n
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvd2VicnRjL3N0dW4tc2VydmVyLWZpbHRlcmluZy5odG1s
CkBAIC0zOCw3ICszOCw3IEBAIHRlc3QoKCkgPT4gewogCiAgICAgbGV0IHN0cmluZzUxMCA9IHN0
cmluZzUwOSArICdhJzsKIAotICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvciwgKCkgPT4g
bmV3IFJUQ1BlZXJDb25uZWN0aW9uKHtpY2VTZXJ2ZXJzOlt7dXNlcm5hbWU6ICd0ZXN0JywgY3Jl
ZGVudGlhbDogc3RyaW5nNTEwLCB1cmxzOlsndHVybjpmb28uY29tJ119XX0pKTsKLSAgICBhc3Nl
cnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IsICgpID0+IG5ldyBSVENQZWVyQ29ubmVjdGlvbih7aWNl
U2VydmVyczpbe3VzZXJuYW1lOiBzdHJpbmc1MTAsIGNyZWRlbnRpYWw6ICd0ZXN0JywgdXJsczpb
J3R1cm46Zm9vLmNvbSddfV19KSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgp
ID0+IG5ldyBSVENQZWVyQ29ubmVjdGlvbih7aWNlU2VydmVyczpbe3VzZXJuYW1lOiAndGVzdCcs
IGNyZWRlbnRpYWw6IHN0cmluZzUxMCwgdXJsczpbJ3R1cm46Zm9vLmNvbSddfV19KSk7CisgICAg
YXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsICgpID0+IG5ldyBSVENQZWVyQ29ubmVjdGlvbih7
aWNlU2VydmVyczpbe3VzZXJuYW1lOiBzdHJpbmc1MTAsIGNyZWRlbnRpYWw6ICd0ZXN0JywgdXJs
czpbJ3R1cm46Zm9vLmNvbSddfV19KSk7CiB9LCAiUlRDUGVlckNvbm5lY3Rpb24gYW5kIGJpZyBU
VVJOIHVzZXJuYW1lL2NyZWRlbnRpYWwiKTsKIDwvc2NyaXB0Pgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>