<?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>215628</bug_id>
          
          <creation_ts>2020-08-18 14:35:46 -0700</creation_ts>
          <short_desc>[webkitpy] Adopt webkitcorepy&apos;s OutputCapture</short_desc>
          <delta_ts>2020-08-19 11:35:20 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>WebKit Nightly 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=215380</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jonathan Bedard">jbedard</reporter>
          <assigned_to name="Jonathan Bedard">jbedard</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>cdumez</cc>
    
    <cc>dewei_zhu</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1681190</commentid>
    <comment_count>0</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-08-18 14:35:46 -0700</bug_when>
    <thetext>Now that OutputCapture has been moved from webkitpy to webkitcorepy, we should remove the one in webkitpy and refactor our testing code so that we use the more modern idioms of the webkitcorepy version of OutputCapture.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681192</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-08-18 14:36:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/67353710&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681196</commentid>
    <comment_count>2</comment_count>
      <attachid>406812</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-08-18 14:41:10 -0700</bug_when>
    <thetext>Created attachment 406812
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681197</commentid>
    <comment_count>3</comment_count>
      <attachid>406812</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-08-18 14:42:53 -0700</bug_when>
    <thetext>Comment on attachment 406812
Patch

All about unifying OutputCapture idioms and removing unused code.

There are many individual changes here, but they&apos;re all essentially the same thing: use OutputCapture as a decorator, compare stdout/stderr and logs explicitly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681423</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-08-19 11:35:19 -0700</bug_when>
    <thetext>Committed r265883: &lt;https://trac.webkit.org/changeset/265883&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 406812.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406812</attachid>
            <date>2020-08-18 14:41:10 -0700</date>
            <delta_ts>2020-08-19 11:35:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215628-20200818144108.patch</filename>
            <type>text/plain</type>
            <size>240780</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2NTgzMykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDg2IEBACisyMDIwLTA4LTE4ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBbd2Via2l0cHldIEFkb3B0IHdlYmtpdGNvcmVweSdzIE91dHB1dENhcHR1
cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTYy
OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjczNTM3MTA+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHdlYmtpdHB5J3MgT3V0cHV0Q2Fw
dHVyZSBpbiBmYXZvciBvZiB3ZWJraXRjb3JlcHkncy4gVGhlIHJlZmFjdG9yIHJldGFpbnMgdGhl
IG9yZ2luYWwKKyAgICAgICAgZnVuY3Rpb25hbGl0eSBvZiB0aGUgb2xkIE91dHB1dENhcHR1cmUs
IGJ1dCBkZWxldGVzIHNvbWUgbm93IHVudXNlZCBjb2RlLgorCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY2hlY2tvdXRfdW5pdHRlc3QucHk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL2RldGVjdGlvbl91bml0dGVzdC5w
eToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc2NtX3Vu
aXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxs
YS9idWd6aWxsYV91bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9uZXQvY3JlZGVudGlhbHNfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vbmV0L2V3c3NlcnZlcl91bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9uZXQvaXJjL2lyY3Byb3h5X3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9sYXlvdXR0ZXN0cmVzdWx0c191bml0dGVzdC5weToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vb3V0cHV0Y2FwdHVyZS5w
eTogUmVtb3ZlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vb3V0
cHV0Y2FwdHVyZV91bml0dGVzdC5weTogUmVtb3ZlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi9zeXN0ZW0vc3RhY2tfdXRpbHNfdW5pdHRlc3QucHk6CisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3VzZXJfdW5pdHRlc3QucHk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3dvcmtzcGFjZV91bml0dGVzdC5weToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi93YXRjaGxpc3Qvd2F0Y2hsaXN0cGFyc2Vy
X3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21v
ZGVscy90ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX2ludGVncmF0aW9udGVzdC5weToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9zZXJ2ZXJzL2FwYWNoZV9o
dHRwX3NlcnZlcl91bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BlcmZv
cm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0X3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyX2ludGVncmF0aW9udGVzdC5w
eToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0
c3J1bm5lcl91bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFz
ZV91bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvY29uZmlnX3Vu
aXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9kYXJ3aW5fdGVzdGNh
c2UucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2d0a191bml0dGVzdC5weToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zX2RldmljZV91bml0dGVzdC5weToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zX3NpbXVsYXRvcl91bml0dGVzdC5w
eToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvbGVha2RldGVjdG9yX3VuaXR0ZXN0
LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9sZWFrZGV0ZWN0b3JfdmFsZ3Jp
bmRfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L21hY191bml0
dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvcG9ydF90ZXN0Y2FzZS5w
eToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvc2VydmVyX3Byb2Nlc3NfdW5pdHRl
c3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L3dhdGNoX3NpbXVsYXRvcl91
bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvd2VzdG9uZHJpdmVy
X3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC93aW5fdW5pdHRl
c3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L3dwZV91bml0dGVzdC5weToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQveHZmYmRyaXZlcl91bml0dGVzdC5weToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3B5dGhvbi5weToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL21haW5fdW5pdHRlc3QucHk6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS90ZXN0L2ZpbmRlcl91bml0dGVzdC5weToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L3Rlc3QvbWFpbl91bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L3Rlc3QvcHJpbnRlci5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvYm90L2ZsYWt5dGVzdHJlcG9ydGVyX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvdG9vbC9ib3QvaXJjX2NvbW1hbmRfdW5pdHRlc3QucHk6CisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS90b29sL2JvdC9pcmNib3RfdW5pdHRlc3QucHk6CisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS90b29sL2JvdC9sYXlvdXR0ZXN0cmVzdWx0c3JlYWRlcl91bml0dGVzdC5w
eToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L3F1ZXVlZW5naW5lX3VuaXR0
ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3Qvc2hlcmlmZl91bml0
dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvYW5hbHl6
ZWNoYW5nZWxvZ191bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
Y29tbWFuZHMvY29tbWFuZHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29s
L2NvbW1hbmRzL2Rvd25sb2FkX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvdG9vbC9jb21tYW5kcy9lYXJseXdhcm5pbmdzeXN0ZW1fdW5pdHRlc3QucHk6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3BlcmZhbGl6ZXJfdW5pdHRlc3QucHk6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXJpZXNfdW5pdHRl
c3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVlc191
bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVl
dWVzdGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcmVi
YXNlbGluZV91bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvbXVs
dGljb21tYW5kdG9vbF91bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvc2VydmVycy9nYXJkZW5pbmdzZXJ2ZXJfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS90b29sL3N0ZXBzL2FkZHN2bm1pbWV0eXBlZm9ycG5nX3VuaXR0ZXN0LnB5Ogor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9hcHBseXdhdGNobGlzdF91bml0
dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY2xvc2VidWdm
b3JsYW5kZGlmZl91bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
c3RlcHMvY29tbWl0X3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9v
bC9zdGVwcy9wcmVwYXJlY2hhbmdlbG9nX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvdG9vbC9zdGVwcy9ydW50ZXN0c191bml0dGVzdC5weToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvc3RlcHNfdW5pdHRlc3QucHk6CisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3N1Z2dlc3RyZXZpZXdlcnNfdW5pdHRlc3QucHk6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3VwZGF0ZWNoYW5nZWxvZ3N3aXRo
cmV2aWV3X3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVw
cy92YWxpZGF0ZWNoYW5nZWxvZ3NfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS93M2MvdGVzdF9jb252ZXJ0ZXJfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS93M2MvdGVzdF9pbXBvcnRlcl91bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L3czYy90ZXN0X3BhcnNlcl91bml0dGVzdC5weToKKwogMjAyMC0wOC0xNyAgQWFr
YXNoIEphaW4gIDxhYWthc2hfamFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgRGV2ZWxvcCBhIG1l
Y2hhbmlzbSB0byB1bnN1YnNjcmliZSBmcm9tIGV3cyBlbWFpbHMKSW5kZXg6IFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2NoZWNrb3V0X3VuaXR0ZXN0LnB5Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2NoZWNrb3V0X3Vu
aXR0ZXN0LnB5CShyZXZpc2lvbiAyNjU3NzMpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9jaGVja291dC9jaGVja291dF91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMSw0
ICsxLDUgQEAKICMgQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0yNiw2ICsyNyw3IEBACiAj
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCitpbXBvcnQgbG9nZ2luZwogaW1wb3J0IG9z
CiBpbXBvcnQgdW5pdHRlc3QKIApAQCAtNDAsOSArNDIsMTAgQEAgZnJvbSB3ZWJraXRweS5jb21t
b24uc3lzdGVtLmV4ZWN1dGl2ZSBpbQogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVz
eXN0ZW0gaW1wb3J0IEZpbGVTeXN0ZW0gICMgRklYTUU6IFRoaXMgc2hvdWxkIG5vdCBiZSBuZWVk
ZWQuCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbV9tb2NrIGltcG9ydCBN
b2NrRmlsZVN5c3RlbQogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZV9tb2Nr
IGltcG9ydCBNb2NrRXhlY3V0aXZlCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0
Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQogZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5Lm1v
Y2sgaW1wb3J0IE1vY2sKIAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IE91dHB1dENhcHR1cmUK
KwogCiBfY2hhbmdlbG9nMWVudHJ5MSA9IHUiIiIyMDEwLTAzLTI1ICBGclx1MDBlOWRcdTAwZTly
aWMgV2FuZyAgPGZyZWQud2FuZ0BmcmVlLmZyPgogCkBAIC00NDYsNSArNDQ5LDkgQEAgY2xhc3Mg
Q2hlY2tvdXRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgbW9ja19wYXRjaCA9IE1v
Y2soKQogICAgICAgICBtb2NrX3BhdGNoLmNvbnRlbnRzID0gbGFtYmRhOiAiZm9vIgogICAgICAg
ICBtb2NrX3BhdGNoLnJldmlld2VyID0gbGFtYmRhOiBOb25lCi0gICAgICAgIGV4cGVjdGVkX2xv
Z3MgPSAiTU9DSyBydW5fY29tbWFuZDogWydzdm4tYXBwbHknLCAnLS1mb3JjZSddLCBjd2Q9L21v
Y2stY2hlY2tvdXQsIGlucHV0PWZvb1xuIgotICAgICAgICBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0
X291dHB1dHMoc2VsZiwgY2hlY2tvdXQuYXBwbHlfcGF0Y2gsIFttb2NrX3BhdGNoXSwgZXhwZWN0
ZWRfbG9ncz1leHBlY3RlZF9sb2dzKQorICAgICAgICB3aXRoIE91dHB1dENhcHR1cmUobGV2ZWw9
bG9nZ2luZy5JTkZPKSBhcyBjYXB0dXJlZDoKKyAgICAgICAgICAgIGNoZWNrb3V0LmFwcGx5X3Bh
dGNoKG1vY2tfcGF0Y2gpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBj
YXB0dXJlZC5yb290LmxvZy5nZXR2YWx1ZSgpLAorICAgICAgICAgICAgIk1PQ0sgcnVuX2NvbW1h
bmQ6IFsnc3ZuLWFwcGx5JywgJy0tZm9yY2UnXSwgY3dkPS9tb2NrLWNoZWNrb3V0LCBpbnB1dD1m
b29cbiIsCisgICAgICAgICkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2No
ZWNrb3V0L3NjbS9kZXRlY3Rpb25fdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL2RldGVjdGlvbl91bml0dGVzdC5weQko
cmV2aXNpb24gMjY1NzczKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tv
dXQvc2NtL2RldGVjdGlvbl91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKICMgQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0jIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
IENvcHlyaWdodCAoQykgMjAwOSwgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAjIENvcHlyaWdodCAoQykgMjAxMSBEYW5pZWwgQmF0ZXMgKGRiYXRlc0BpbnR1ZGF0YS5jb20p
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTI4LDEyICsyOCwxNCBA
QAogIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAoraW1wb3J0IGxvZ2dpbmcKIGltcG9y
dCB1bml0dGVzdAogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5zY20uZGV0ZWN0aW9u
IGltcG9ydCBTQ01EZXRlY3RvcgogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0
ZW1fbW9jayBpbXBvcnQgTW9ja0ZpbGVTeXN0ZW0KIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3Rl
bS5leGVjdXRpdmVfbW9jayBpbXBvcnQgTW9ja0V4ZWN1dGl2ZQotZnJvbSB3ZWJraXRweS5jb21t
b24uc3lzdGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0IE91dHB1dENhcHR1cmUKKworZnJvbSB3ZWJr
aXRjb3JlcHkgaW1wb3J0IE91dHB1dENhcHR1cmUKIAogCiBjbGFzcyBTQ01EZXRlY3RvclRlc3Qo
dW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtNDIsMTAgKzQ0LDE0IEBAIGNsYXNzIFNDTURldGVjdG9y
VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSkKICAgICAgICAgZXhlY3V0aXZlID0gTW9ja0V4ZWN1dGl2
ZShzaG91bGRfbG9nPVRydWUpCiAgICAgICAgIGRldGVjdG9yID0gU0NNRGV0ZWN0b3IoZmlsZXN5
c3RlbSwgZXhlY3V0aXZlKQogCi0gICAgICAgIGV4cGVjdGVkX2xvZ3MgPSAiIiJcCi1NT0NLIHJ1
bl9jb21tYW5kOiBbJ3N2bicsICdpbmZvJ10sIGN3ZD0vCisgICAgICAgIHdpdGggT3V0cHV0Q2Fw
dHVyZShsZXZlbD1sb2dnaW5nLklORk8pIGFzIGNhcHR1cmVkOgorICAgICAgICAgICAgc2NtID0g
ZGV0ZWN0b3IuZGV0ZWN0X3NjbV9zeXN0ZW0oJy8nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KAorICAgICAgICAgICAgY2FwdHVyZWQucm9vdC5sb2cuZ2V0dmFsdWUoKSwKKyAgICAgICAgICAg
ICcnJ01PQ0sgcnVuX2NvbW1hbmQ6IFsnc3ZuJywgJ2luZm8nXSwgY3dkPS8KIE1PQ0sgcnVuX2Nv
bW1hbmQ6IFsnZ2l0JywgJ3Jldi1wYXJzZScsICctLWlzLWluc2lkZS13b3JrLXRyZWUnXSwgY3dk
PS8KLSIiIgotICAgICAgICBzY20gPSBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMoc2Vs
ZiwgZGV0ZWN0b3IuZGV0ZWN0X3NjbV9zeXN0ZW0sIFsiLyJdLCBleHBlY3RlZF9sb2dzPWV4cGVj
dGVkX2xvZ3MpCisnJycsCisgICAgICAgICkKKwogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShz
Y20pCiAgICAgICAgICMgRklYTUU6IFRoaXMgc2hvdWxkIG1ha2UgYSBzeW50aGV0aWMgdHJlZSBh
bmQgdGVzdCBTVk4gYW5kIEdpdCBkZXRlY3Rpb24gaW4gdGhhdCB0cmVlLgpJbmRleDogVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3NjbV91bml0dGVzdC5weQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc2Nt
X3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNjU3NzMpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9jaGVja291dC9zY20vc2NtX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogIyBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSMgQ29weXJpZ2h0IChDKSAyMDA5LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDA5LCAyMDE2LCAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICMgQ29weXJpZ2h0IChDKSAyMDExIERhbmllbCBCYXRlcyAo
ZGJhdGVzQGludHVkYXRhLmNvbSkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dApAQCAtMzIsNiArMzIsNyBAQCBpbXBvcnQgYXRleGl0CiBpbXBvcnQgYmFzZTY0CiBpbXBvcnQg
Y29kZWNzCiBpbXBvcnQgZ2V0cGFzcworaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBvcwogaW1wb3J0
IG9zLnBhdGgKIGltcG9ydCByZQpAQCAtNTIsMTMgKzUzLDE0IEBAIGZyb20gd2Via2l0cHkuY29t
bW9uLmNvbmZpZy5jb21taXR0ZXJzIGkKIGZyb20gd2Via2l0cHkuY29tbW9uLm5ldC5idWd6aWxs
YSBpbXBvcnQgQXR0YWNobWVudCAgIyBGSVhNRTogVGhpcyBzaG91bGQgbm90IGJlIG5lZWRlZAog
ZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgRXhlY3V0aXZlLCBT
Y3JpcHRFcnJvcgogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW1fbW9jayBp
bXBvcnQgTW9ja0ZpbGVTeXN0ZW0KLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5vdXRwdXRj
YXB0dXJlIGltcG9ydCBPdXRwdXRDYXB0dXJlCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0u
ZXhlY3V0aXZlX21vY2sgaW1wb3J0IE1vY2tFeGVjdXRpdmUKIGZyb20gd2Via2l0cHkuY29tbW9u
LmNoZWNrb3V0LnNjbS5naXQgaW1wb3J0IEdpdCwgQW1iaWd1b3VzQ29tbWl0RXJyb3IKIGZyb20g
d2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LnNjbS5kZXRlY3Rpb24gaW1wb3J0IGRldGVjdF9zY21f
c3lzdGVtCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5zY20uc2NtIGltcG9ydCBDaGVj
a291dE5lZWRzVXBkYXRlLCBjb21taXRfZXJyb3JfaGFuZGxlciwgQXV0aGVudGljYXRpb25FcnJv
cgogZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuc2NtLnN2biBpbXBvcnQgU1ZOCiAKK2Zy
b20gd2Via2l0Y29yZXB5IGltcG9ydCBPdXRwdXRDYXB0dXJlCisKIAogIyBXZSBjYWNoZSB0aGUg
bW9jayBTVk4gcmVwbyBzbyB0aGF0IHdlIGRvbid0IGNyZWF0ZSBpdCBhZ2FpbiBmb3IgZWFjaCBj
YWxsIHRvIGFuIFNWTlRlc3Qgb3IgR2l0VGVzdCB0ZXN0XyBtZXRob2QuCiAjIFdlIHN0b3JlIGl0
IGluIGEgZ2xvYmFsIHZhcmlhYmxlIHNvIHRoYXQgd2UgY2FuIGRlbGV0ZSB0aGlzIGNhY2hlZCBy
ZXBvIG9uIGV4aXQoMykuCkBAIC0xNzE3LDEzICsxNzE5LDE2IEBAIGNsYXNzIEdpdFRlc3RXaXRo
TW9jayh1bml0dGVzdC5UZXN0Q2FzZSkKIAogICAgIGRlZiB0ZXN0X2NyZWF0ZV9wYXRjaChzZWxm
KToKICAgICAgICAgc2NtID0gc2VsZi5tYWtlX3NjbShsb2dnaW5nX2V4ZWN1dGl2ZT1UcnVlKQot
ICAgICAgICBleHBlY3RlZF9zdGRlcnIgPSAiIiJcCi1NT0NLIHJ1bl9jb21tYW5kOiBbJ2dpdCcs
ICdtZXJnZS1iYXNlJywgJ01PQ0tWQUxVRScsICdIRUFEJ10sIGN3ZD0lKGNoZWNrb3V0KXMKKyAg
ICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlKGxldmVsPWxvZ2dpbmcuSU5GTykgYXMgY2FwdHVyZWQ6
CisgICAgICAgICAgICBzY20uY3JlYXRlX3BhdGNoKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgKKyAgICAgICAgICAgIGNhcHR1cmVkLnN0ZGVyci5nZXR2YWx1ZSgpLAorICAgICAgICAgICAg
JycnTU9DSyBydW5fY29tbWFuZDogWydnaXQnLCAnbWVyZ2UtYmFzZScsICdNT0NLVkFMVUUnLCAn
SEVBRCddLCBjd2Q9e2NoZWNrb3V0fXMKIE1PQ0sgcnVuX2NvbW1hbmQ6IFsnZ2l0JywgJ2RpZmYn
LCAnLS1iaW5hcnknLCAnLS1uby1jb2xvcicsICctLW5vLWV4dC1kaWZmJywgJy0tZnVsbC1pbmRl
eCcsICctLW5vLXJlbmFtZXMnLCAnJywgJ01PQ0sgb3V0cHV0IG9mIGNoaWxkIHByb2Nlc3MnLCAn
LS0nXSwgY3dkPSUoY2hlY2tvdXQpcwotTU9DSyBydW5fY29tbWFuZDogWydnaXQnLCAncmV2LXBh
cnNlJywgJy0tc2hvdy10b3BsZXZlbCddLCBjd2Q9JShjaGVja291dClzCitNT0NLIHJ1bl9jb21t
YW5kOiBbJ2dpdCcsICdyZXYtcGFyc2UnLCAnLS1zaG93LXRvcGxldmVsJ10sIGN3ZD17Y2hlY2tv
dXR9cwogTU9DSyBydW5fY29tbWFuZDogWydnaXQnLCAnbG9nJywgJy0xJywgJy0tZ3JlcD1naXQt
c3ZuLWlkOicsICctLWRhdGU9aXNvJywgJy4vTU9DSyBvdXRwdXQgb2YgY2hpbGQgcHJvY2Vzcy9N
T0NLIG91dHB1dCBvZiBjaGlsZCBwcm9jZXNzJ10sIGN3ZD0lKGNoZWNrb3V0KXMKLSIiIiAlIHsn
Y2hlY2tvdXQnOiBzY20uY2hlY2tvdXRfcm9vdH0KLSAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFz
c2VydF9vdXRwdXRzKHNlbGYsIHNjbS5jcmVhdGVfcGF0Y2gsIGV4cGVjdGVkX2xvZ3M9ZXhwZWN0
ZWRfc3RkZXJyKQorJycnLmZvcm1hdChjaGVja291dD1zY20uY2hlY2tvdXRfcm9vdCksCisgICAg
ICAgICkKIAogICAgIGRlZiB0ZXN0X3B1c2hfbG9jYWxfY29tbWl0c190b19zZXJ2ZXJfd2l0aF91
c2VybmFtZV9hbmRfcGFzc3dvcmQoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2Vs
Zi5tYWtlX3NjbSgpLnB1c2hfbG9jYWxfY29tbWl0c190b19zZXJ2ZXIodXNlcm5hbWU9J2RiYXRl
c0B3ZWJraXQub3JnJywgcGFzc3dvcmQ9J2JsYWgnKSwgIk1PQ0sgb3V0cHV0IG9mIGNoaWxkIHBy
b2Nlc3MiKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2NyZWRlbnRp
YWxzX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL25ldC9jcmVkZW50aWFsc191bml0dGVzdC5weQkocmV2aXNpb24gMjY1NzczKQorKysgVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2NyZWRlbnRpYWxzX3VuaXR0ZXN0LnB5CSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogIyBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMgQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQpAQCAtMjcsMTggKzI3LDIwIEBACiAjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCitp
bXBvcnQgbG9nZ2luZwogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCiBpbXBvcnQgdGVtcGZpbGUKIGlt
cG9ydCB1bml0dGVzdAogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQuY3JlZGVudGlhbHMgaW1w
b3J0IENyZWRlbnRpYWxzCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVy
ZSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnVzZXJf
bW9jayBpbXBvcnQgTW9ja1VzZXIKIGZyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5tb2NrIGltcG9y
dCBNb2NrCiBmcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tPcHRpb25zCiBm
cm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlX21vY2sgaW1wb3J0IE1vY2tFeGVj
dXRpdmUKIAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IE91dHB1dENhcHR1cmUKKwogaWYgc3lz
LnZlcnNpb25faW5mbyA+ICgzLCAwKToKICAgICBpbnB1dF9mdW5jID0gaW5wdXQKIGVsc2U6CkBA
IC0xMTQsMTcgKzExNiwxOSBAQCBwYXNzd29yZDogIlNFQ1JFVFNBVUNFIgogCiAgICAgICAgICMg
Tm90ZSwgd2UgaWdub3JlIHRoZSBjYXB0dXJlZCBvdXRwdXQgYmVjYXVzZSBpdCBpcyBhbHJlYWR5
IGNvdmVyZWQKICAgICAgICAgIyBieSB0aGUgdGVzdCBjYXNlIENyZWRlbnRpYWxzVGVzdC5fYXNz
ZXJ0X3NlY3VyaXR5X2NhbGwgKGJlbG93KS4KLSAgICAgICAgb3V0cHV0Q2FwdHVyZSA9IE91dHB1
dENhcHR1cmUoKQotICAgICAgICBvdXRwdXRDYXB0dXJlLmNhcHR1cmVfb3V0cHV0KCkKLSAgICAg
ICAgc2VsZi5hc3NlcnRJc05vbmUoY3JlZGVudGlhbHMuX3J1bl9zZWN1cml0eV90b29sKCJmaW5k
LWludGVybmV0LXBhc3N3b3JkIikpCi0gICAgICAgIG91dHB1dENhcHR1cmUucmVzdG9yZV9vdXRw
dXQoKQorICAgICAgICB3aXRoIE91dHB1dENhcHR1cmUoKToKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0SXNOb25lKGNyZWRlbnRpYWxzLl9ydW5fc2VjdXJpdHlfdG9vbCgiZmluZC1pbnRlcm5ldC1w
YXNzd29yZCIpKQogCiAgICAgZGVmIF9hc3NlcnRfc2VjdXJpdHlfY2FsbChzZWxmLCB1c2VybmFt
ZT1Ob25lKToKICAgICAgICAgZXhlY3V0aXZlX21vY2sgPSBNb2NrKCkKICAgICAgICAgY3JlZGVu
dGlhbHMgPSBNb2NrZWRDcmVkZW50aWFscygiZXhhbXBsZS5jb20iLCBleGVjdXRpdmU9ZXhlY3V0
aXZlX21vY2spCiAKLSAgICAgICAgZXhwZWN0ZWRfbG9ncyA9ICJSZWFkaW5nIEtleWNoYWluIGZv
ciBleGFtcGxlLmNvbSBhY2NvdW50IGFuZCBwYXNzd29yZC4gIENsaWNrIFwiQWxsb3dcIiB0byBj
b250aW51ZS4uLlxuIgotICAgICAgICBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMoc2Vs
ZiwgY3JlZGVudGlhbHMuX3J1bl9zZWN1cml0eV90b29sLCBbImZpbmQtaW50ZXJuZXQtcGFzc3dv
cmQiLCB1c2VybmFtZV0sIGV4cGVjdGVkX2xvZ3M9ZXhwZWN0ZWRfbG9ncykKKyAgICAgICAgd2l0
aCBPdXRwdXRDYXB0dXJlKGxldmVsPWxvZ2dpbmcuSU5GTykgYXMgY2FwdHVyZWQ6CisgICAgICAg
ICAgICBjcmVkZW50aWFscy5fcnVuX3NlY3VyaXR5X3Rvb2woJ2ZpbmQtaW50ZXJuZXQtcGFzc3dv
cmQnLCB1c2VybmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNh
cHR1cmVkLnJvb3QubG9nLmdldHZhbHVlKCksCisgICAgICAgICAgICAnUmVhZGluZyBLZXljaGFp
biBmb3IgZXhhbXBsZS5jb20gYWNjb3VudCBhbmQgcGFzc3dvcmQuICBDbGljayAiQWxsb3ciIHRv
IGNvbnRpbnVlLi4uXG4nCisgICAgICAgICkKIAogICAgICAgICBzZWN1cml0eV9hcmdzID0gWyIv
dXNyL2Jpbi9zZWN1cml0eSIsICJmaW5kLWludGVybmV0LXBhc3N3b3JkIiwgIi1nIiwgIi1zIiwg
ImV4YW1wbGUuY29tIl0KICAgICAgICAgaWYgdXNlcm5hbWU6CkluZGV4OiBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9uZXQvZXdzc2VydmVyX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9ld3NzZXJ2ZXJfdW5pdHRlc3QucHkJ
KHJldmlzaW9uIDI2NTc3MykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9l
d3NzZXJ2ZXJfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTIzLDE0ICsyMywxNiBAQAog
aW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20gd2Via2l0cHkuY29tbW9uLm5ldC5ld3NzZXJ2ZXIgaW1w
b3J0IEVXU1NlcnZlcgotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLm91dHB1dGNhcHR1cmUg
aW1wb3J0IE91dHB1dENhcHR1cmVUZXN0Q2FzZUJhc2UKIGZyb20gd2Via2l0cHkuY29tbW9uLm5l
dC53ZWJfbW9jayBpbXBvcnQgTW9ja0Jyb3dzZXIKIAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0
IE91dHB1dENhcHR1cmUKIAotY2xhc3MgRVdTU2VydmVyVGVzdChPdXRwdXRDYXB0dXJlVGVzdENh
c2VCYXNlKToKKworY2xhc3MgRVdTU2VydmVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAg
ZGVmIHRlc3Rfc3VibWl0X3RvX2V3cyhzZWxmKToKLSAgICAgICAgbW9ja19icm93c2VyID0gTW9j
a0Jyb3dzZXIoKQotICAgICAgICBld3Nfc2VydmVyID0gRVdTU2VydmVyKGJyb3dzZXI9bW9ja19i
cm93c2VyKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoZXdzX3NlcnZlci51c2VfaHR0cHMpCi0g
ICAgICAgIGV3c19zZXJ2ZXIuc3VibWl0X3RvX2V3cygxMDAwOCkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChtb2NrX2Jyb3dzZXJbJ3BhdGNoX2lkJ10sIHUnMTAwMDgnKQorICAgICAgICB3aXRo
IE91dHB1dENhcHR1cmUoKToKKyAgICAgICAgICAgIG1vY2tfYnJvd3NlciA9IE1vY2tCcm93c2Vy
KCkKKyAgICAgICAgICAgIGV3c19zZXJ2ZXIgPSBFV1NTZXJ2ZXIoYnJvd3Nlcj1tb2NrX2Jyb3dz
ZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZXdzX3NlcnZlci51c2VfaHR0cHMpCisg
ICAgICAgICAgICBld3Nfc2VydmVyLnN1Ym1pdF90b19ld3MoMTAwMDgpCisgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKG1vY2tfYnJvd3NlclsncGF0Y2hfaWQnXSwgdScxMDAwOCcpCkluZGV4
OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvbGF5b3V0dGVzdHJlc3VsdHNfdW5p
dHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0
L2xheW91dHRlc3RyZXN1bHRzX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNjU3NzMpCisrKyBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvbGF5b3V0dGVzdHJlc3VsdHNfdW5pdHRlc3Qu
cHkJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDYgQEAKIGltcG9ydCB1bml0dGVzdAogCiBm
cm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQubGF5b3V0dGVzdHJlc3VsdHMgaW1wb3J0IExheW91dFRl
c3RSZXN1bHRzCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBv
cnQgT3V0cHV0Q2FwdHVyZQogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzIGltcG9y
dCB0ZXN0X3Jlc3VsdHMKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscyBpbXBvcnQg
dGVzdF9mYWlsdXJlcwogZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5LkJlYXV0aWZ1bFNvdXAgaW1w
b3J0IEJlYXV0aWZ1bFNvdXAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25l
dC9idWd6aWxsYS9idWd6aWxsYV91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnemlsbGFfdW5pdHRlc3QucHkJKHJl
dmlzaW9uIDI2NTc3MykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6
aWxsYS9idWd6aWxsYV91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDUgQEAK
ICMgQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0yNywxNSArMjgsMTUgQEAKICMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KIAogaW1wb3J0IGRhdGV0aW1lCitpbXBvcnQgbG9nZ2luZwogaW1wb3J0IHVuaXR0ZXN0
CiAKLWZyb20gd2Via2l0Y29yZXB5IGltcG9ydCBTdHJpbmdJTworZnJvbSB3ZWJraXRjb3JlcHkg
aW1wb3J0IFN0cmluZ0lPLCBPdXRwdXRDYXB0dXJlCiAKIGZyb20gd2Via2l0cHkuY29tbW9uLmNv
bmZpZyBpbXBvcnQgdXJscwogZnJvbSB3ZWJraXRweS5jb21tb24uY29uZmlnLmNvbW1pdHRlcnMg
aW1wb3J0IFJldmlld2VyLCBDb21taXR0ZXIsIENvbnRyaWJ1dG9yLCBDb21taXR0ZXJMaXN0CiBm
cm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQud2ViX21vY2sgaW1wb3J0IE1vY2tCcm93c2VyCiBmcm9t
IHdlYmtpdHB5LmNvbW1vbi5uZXQuYnVnemlsbGEuYnVnemlsbGEgaW1wb3J0IEJ1Z3ppbGxhLCBC
dWd6aWxsYVF1ZXJpZXMsIENvbW1pdFF1ZXVlRmxhZywgRWRpdFVzZXJzUGFyc2VyCi1mcm9tIHdl
YmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQog
ZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5LkJlYXV0aWZ1bFNvdXAgaW1wb3J0IEJlYXV0aWZ1bFNv
dXAKIGZyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5tb2NrIGltcG9ydCBNb2NrCiAKQEAgLTI1MSw4
ICsyNTIsOSBAQCBJZ25vcmUgdGhpcyBidWcuICBKdXN0IGZvciB0ZXN0aW5nIGZhaWx1CiAgICAg
ICAgIGJ1Z3ppbGxhID0gQnVnemlsbGEoKQogICAgICAgICBidWd6aWxsYS5icm93c2VyID0gTW9j
a0Jyb3dzZXIoKQogICAgICAgICBidWd6aWxsYS5hdXRoZW50aWNhdGUgPSBsYW1iZGE6IE5vbmUK
LSAgICAgICAgZXhwZWN0ZWRfbG9ncyA9ICJBZGRpbmcgWydhZGFtQGV4YW1wbGUuY29tJ10gdG8g
dGhlIENDIGxpc3QgZm9yIGJ1ZyA0MlxuIgotICAgICAgICBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0
X291dHB1dHMoc2VsZiwgYnVnemlsbGEuYWRkX2NjX3RvX2J1ZywgWzQyLCBbImFkYW1AZXhhbXBs
ZS5jb20iXV0sIGV4cGVjdGVkX2xvZ3M9ZXhwZWN0ZWRfbG9ncykKKyAgICAgICAgd2l0aCBPdXRw
dXRDYXB0dXJlKGxldmVsPWxvZ2dpbmcuSU5GTykgYXMgY2FwdHVyZWQ6CisgICAgICAgICAgICBi
dWd6aWxsYS5hZGRfY2NfdG9fYnVnKDQyLCBbJ2FkYW1AZXhhbXBsZS5jb20nXSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChjYXB0dXJlZC5yb290LmxvZy5nZXR2YWx1ZSgpLCAiQWRkaW5nIFsn
YWRhbUBleGFtcGxlLmNvbSddIHRvIHRoZSBDQyBsaXN0IGZvciBidWcgNDJcbiIpCiAKICAgICBk
ZWYgX21vY2tfY29udHJvbF9pdGVtKHNlbGYsIG5hbWUpOgogICAgICAgICBtb2NrX2l0ZW0gPSBN
b2NrKCkKQEAgLTI3MiwxMCArMjc0LDkgQEAgSWdub3JlIHRoaXMgYnVnLiAgSnVzdCBmb3IgdGVz
dGluZyBmYWlsdQogCiAgICAgICAgIG1vY2tfZmluZF9jb250cm9sID0gc2VsZi5fbW9ja19maW5k
X2NvbnRyb2woaXRlbV9uYW1lcywgc2VsZWN0ZWRfaW5kZXgpCiAgICAgICAgIGJ1Z3ppbGxhLmJy
b3dzZXIuZmluZF9jb250cm9sID0gbW9ja19maW5kX2NvbnRyb2wKLSAgICAgICAgZXhwZWN0ZWRf
bG9ncyA9ICJSZS1vcGVuaW5nIGJ1ZyA0MlxuWydjb21tZW50J11cbiIKLSAgICAgICAgaWYgZXh0
cmFfbG9nczoKLSAgICAgICAgICAgIGV4cGVjdGVkX2xvZ3MgKz0gZXh0cmFfbG9ncwotICAgICAg
ICBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMoc2VsZiwgYnVnemlsbGEucmVvcGVuX2J1
ZywgWzQyLCBbImNvbW1lbnQiXV0sIGV4cGVjdGVkX2xvZ3M9ZXhwZWN0ZWRfbG9ncykKKyAgICAg
ICAgd2l0aCBPdXRwdXRDYXB0dXJlKGxldmVsPWxvZ2dpbmcuSU5GTykgYXMgY2FwdHVyZWQ6Cisg
ICAgICAgICAgICBidWd6aWxsYS5yZW9wZW5fYnVnKDQyLCBbJ2NvbW1lbnQnXSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChjYXB0dXJlZC5yb290LmxvZy5nZXR2YWx1ZSgpLCAiUmUtb3Blbmlu
ZyBidWcgNDJcblsnY29tbWVudCddXG4iICsgKGV4dHJhX2xvZ3Mgb3IgJycpKQogCiAgICAgZGVm
IHRlc3RfcmVvcGVuX2J1ZyhzZWxmKToKICAgICAgICAgc2VsZi5fYXNzZXJ0X3Jlb3BlbihpdGVt
X25hbWVzPVsiUkVPUEVORUQiLCAiUkVTT0xWRUQiLCAiQ0xPU0VEIl0sIHNlbGVjdGVkX2luZGV4
PTEpCkBAIC0zMTAsMTIgKzMxMSw4IEBAIElnbm9yZSB0aGlzIGJ1Zy4gIEp1c3QgZm9yIHRlc3Rp
bmcgZmFpbHUKIAogICAgICAgICBkZWYgYXNzZXJ0X2NvbW1pdF9xdWV1ZV9mbGFnKGNvbW1pdF9m
bGFnLCBleHBlY3RlZCwgdXNlcm5hbWU9Tm9uZSk6CiAgICAgICAgICAgICBidWd6aWxsYS51c2Vy
bmFtZSA9IHVzZXJuYW1lCi0gICAgICAgICAgICBjYXB0dXJlID0gT3V0cHV0Q2FwdHVyZSgpCi0g
ICAgICAgICAgICBjYXB0dXJlLmNhcHR1cmVfb3V0cHV0KCkKLSAgICAgICAgICAgIHRyeToKKyAg
ICAgICAgICAgIHdpdGggT3V0cHV0Q2FwdHVyZSgpOgogICAgICAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoYnVnemlsbGEuX2NvbW1pdF9xdWV1ZV9mbGFnKGNvbW1pdF9mbGFnKSwgZXhwZWN0
ZWQpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIGNhcHR1cmUucmVzdG9y
ZV9vdXRwdXQoKQogCiAgICAgICAgIGFzc2VydF9jb21taXRfcXVldWVfZmxhZyhjb21taXRfZmxh
Zz1Db21taXRRdWV1ZUZsYWcubWFya19mb3Jfbm90aGluZywgZXhwZWN0ZWQ9J1gnLCB1c2VybmFt
ZT0ndW5rbm93bkB3ZWJraXQub3JnJykKICAgICAgICAgYXNzZXJ0X2NvbW1pdF9xdWV1ZV9mbGFn
KGNvbW1pdF9mbGFnPUNvbW1pdFF1ZXVlRmxhZy5tYXJrX2Zvcl9jb21taXRfcXVldWUsIGV4cGVj
dGVkPSc/JywgdXNlcm5hbWU9J3Vua25vd25Ad2Via2l0Lm9yZycpCkluZGV4OiBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvaXJjL2lyY3Byb3h5X3VuaXR0ZXN0LnB5Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9pcmMvaXJjcHJveHlfdW5p
dHRlc3QucHkJKHJldmlzaW9uIDI2NTc3MykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL25ldC9pcmMvaXJjcHJveHlfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTEsNCAr
MSw1IEBACiAjIENvcHlyaWdodCAoYykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMjYsMTIgKzI3LDE0IEBACiAj
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCitpbXBvcnQgbG9nZ2luZwogaW1wb3J0IHVu
aXR0ZXN0CiAKIGZyb20gd2Via2l0cHkuY29tbW9uLm5ldC5pcmMuaXJjcHJveHkgaW1wb3J0IElS
Q1Byb3h5Ci1mcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQg
T3V0cHV0Q2FwdHVyZQogZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5Lm1vY2sgaW1wb3J0IE1vY2sK
IAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IE91dHB1dENhcHR1cmUKKwogCiBjbGFzcyBJUkNQ
cm94eVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X3RyaXZpYWwoc2VsZik6
CkBAIC00MCw1ICs0Myw2IEBAIGNsYXNzIElSQ1Byb3h5VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6
CiAgICAgICAgICAgICBwcm94eS5wb3N0KCJoZWxsbyIpCiAgICAgICAgICAgICBwcm94eS5kaXNj
b25uZWN0KCkKIAotICAgICAgICBleHBlY3RlZF9sb2dzID0gIkNvbm5lY3RpbmcgdG8gSVJDXG5E
aXNjb25uZWN0aW5nIGZyb20gSVJDLi4uXG4iCi0gICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3Nl
cnRfb3V0cHV0cyhzZWxmLCBmdW4sIGV4cGVjdGVkX2xvZ3M9ZXhwZWN0ZWRfbG9ncykKKyAgICAg
ICAgd2l0aCBPdXRwdXRDYXB0dXJlKGxldmVsPWxvZ2dpbmcuSU5GTykgYXMgY2FwdHVyZWQ6Cisg
ICAgICAgICAgICBmdW4oKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhcHR1cmVkLnJvb3Qu
bG9nLmdldHZhbHVlKCksICdDb25uZWN0aW5nIHRvIElSQ1xuRGlzY29ubmVjdGluZyBmcm9tIElS
Qy4uLlxuJykKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9vdXRw
dXRjYXB0dXJlLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L3N5c3RlbS9vdXRwdXRjYXB0dXJlLnB5CShyZXZpc2lvbiAyNjU3NzMpCisrKyBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vb3V0cHV0Y2FwdHVyZS5weQkobm9uZXhpc3RlbnQp
CkBAIC0xLDE0MiArMCwwIEBACi0jIENvcHlyaWdodCAoYykgMjAwOSwgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0
OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0jCi0jIENsYXNzIGZvciB1bml0
dGVzdCBzdXBwb3J0LiAgVXNlZCBmb3IgY2FwdHVyaW5nIHN0ZGVyci9zdGRvdXQuCi0KLWltcG9y
dCBsb2dnaW5nCi1pbXBvcnQgc3lzCi1pbXBvcnQgdW5pdHRlc3QKLQotZnJvbSB3ZWJraXRjb3Jl
cHkgaW1wb3J0IFN0cmluZ0lPCi0KLQotY2xhc3MgT3V0cHV0Q2FwdHVyZShvYmplY3QpOgotICAg
ICMgQnkgZGVmYXVsdCB3ZSBjYXB0dXJlIHRoZSBvdXRwdXQgdG8gYSBzdHJlYW0uIE90aGVyIG1v
ZHVsZXMgbWF5IG92ZXJyaWRlCi0gICAgIyB0aGlzIGZ1bmN0aW9uIGluIG9yZGVyIHRvIGRvIHRo
aW5ncyBsaWtlIHBhc3MgdGhyb3VnaCB0aGUgb3V0cHV0LiBTZWUKLSAgICAjIHdlYmtpdHB5LnRl
c3QubWFpbiBmb3IgYW4gZXhhbXBsZS4KLSAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIHN0cmVh
bV93cmFwcGVyKHN0cmVhbSk6Ci0gICAgICAgIHJldHVybiBTdHJpbmdJTygpCi0KLSAgICBkZWYg
X19pbml0X18oc2VsZiwgbG9nX2xldmVsPWxvZ2dpbmcuSU5GTyk6Ci0gICAgICAgIHNlbGYuc2F2
ZWRfb3V0cHV0cyA9IGRpY3QoKQotICAgICAgICBzZWxmLl9sb2dfbGV2ZWwgPSBsb2dfbGV2ZWwK
LQotICAgIGRlZiBzZXRfbG9nX2xldmVsKHNlbGYsIGxvZ19sZXZlbCk6Ci0gICAgICAgIHNlbGYu
X2xvZ19sZXZlbCA9IGxvZ19sZXZlbAotICAgICAgICBpZiBoYXNhdHRyKHNlbGYsICdfbG9nc19o
YW5kbGVyJyk6Ci0gICAgICAgICAgICBzZWxmLl9sb2dzX2hhbmRsZXIuc2V0TGV2ZWwoc2VsZi5f
bG9nX2xldmVsKQotCi0gICAgZGVmIF9jYXB0dXJlX291dHB1dF93aXRoX25hbWUoc2VsZiwgb3V0
cHV0X25hbWUpOgotICAgICAgICBzdHJlYW0gPSBnZXRhdHRyKHN5cywgb3V0cHV0X25hbWUpCi0g
ICAgICAgIGNhcHR1cmVkX291dHB1dCA9IHNlbGYuc3RyZWFtX3dyYXBwZXIoc3RyZWFtKQotICAg
ICAgICBzZWxmLnNhdmVkX291dHB1dHNbb3V0cHV0X25hbWVdID0gc3RyZWFtCi0gICAgICAgIHNl
dGF0dHIoc3lzLCBvdXRwdXRfbmFtZSwgY2FwdHVyZWRfb3V0cHV0KQotICAgICAgICByZXR1cm4g
Y2FwdHVyZWRfb3V0cHV0Ci0KLSAgICBkZWYgX3Jlc3RvcmVfb3V0cHV0X3dpdGhfbmFtZShzZWxm
LCBvdXRwdXRfbmFtZSk6Ci0gICAgICAgIGNhcHR1cmVkX291dHB1dCA9IGdldGF0dHIoc3lzLCBv
dXRwdXRfbmFtZSkuZ2V0dmFsdWUoKQotICAgICAgICBzZXRhdHRyKHN5cywgb3V0cHV0X25hbWUs
IHNlbGYuc2F2ZWRfb3V0cHV0c1tvdXRwdXRfbmFtZV0pCi0gICAgICAgIGRlbCBzZWxmLnNhdmVk
X291dHB1dHNbb3V0cHV0X25hbWVdCi0gICAgICAgIHJldHVybiBjYXB0dXJlZF9vdXRwdXQKLQot
ICAgIGRlZiBjYXB0dXJlX291dHB1dChzZWxmKToKLSAgICAgICAgc2VsZi5fbG9ncyA9IFN0cmlu
Z0lPKCkKLSAgICAgICAgc2VsZi5fbG9nc19oYW5kbGVyID0gbG9nZ2luZy5TdHJlYW1IYW5kbGVy
KHNlbGYuX2xvZ3MpCi0gICAgICAgIHNlbGYuX2xvZ3NfaGFuZGxlci5zZXRMZXZlbChzZWxmLl9s
b2dfbGV2ZWwpCi0gICAgICAgIHNlbGYuX2xvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCkKLSAg
ICAgICAgc2VsZi5fb3JpZ19sb2dfbGV2ZWwgPSBzZWxmLl9sb2dnZXIubGV2ZWwKLSAgICAgICAg
c2VsZi5fbG9nZ2VyLmFkZEhhbmRsZXIoc2VsZi5fbG9nc19oYW5kbGVyKQotICAgICAgICBzZWxm
Ll9sb2dnZXIuc2V0TGV2ZWwobWluKHNlbGYuX2xvZ19sZXZlbCwgc2VsZi5fb3JpZ19sb2dfbGV2
ZWwpKQotICAgICAgICByZXR1cm4gKHNlbGYuX2NhcHR1cmVfb3V0cHV0X3dpdGhfbmFtZSgic3Rk
b3V0IiksIHNlbGYuX2NhcHR1cmVfb3V0cHV0X3dpdGhfbmFtZSgic3RkZXJyIikpCi0KLSAgICBk
ZWYgcmVzdG9yZV9vdXRwdXQoc2VsZik6Ci0gICAgICAgIHNlbGYuX2xvZ2dlci5yZW1vdmVIYW5k
bGVyKHNlbGYuX2xvZ3NfaGFuZGxlcikKLSAgICAgICAgc2VsZi5fbG9nZ2VyLnNldExldmVsKHNl
bGYuX29yaWdfbG9nX2xldmVsKQotICAgICAgICBzZWxmLl9sb2dzX2hhbmRsZXIuZmx1c2goKQot
ICAgICAgICBzZWxmLl9sb2dzLmZsdXNoKCkKLSAgICAgICAgbG9nc19zdHJpbmcgPSBzZWxmLl9s
b2dzLmdldHZhbHVlKCkKLSAgICAgICAgZGVsYXR0cihzZWxmLCAnX2xvZ3NfaGFuZGxlcicpCi0g
ICAgICAgIGRlbGF0dHIoc2VsZiwgJ19sb2dzJykKLSAgICAgICAgcmV0dXJuIChzZWxmLl9yZXN0
b3JlX291dHB1dF93aXRoX25hbWUoInN0ZG91dCIpLCBzZWxmLl9yZXN0b3JlX291dHB1dF93aXRo
X25hbWUoInN0ZGVyciIpLCBsb2dzX3N0cmluZykKLQotICAgIGRlZiBhc3NlcnRfb3V0cHV0cyhz
ZWxmLCB0ZXN0Y2FzZSwgZnVuY3Rpb24sIGFyZ3M9W10sIGt3YXJncz17fSwgZXhwZWN0ZWRfc3Rk
b3V0PSIiLCBleHBlY3RlZF9zdGRlcnI9IiIsIGV4cGVjdGVkX2V4Y2VwdGlvbj1Ob25lLCBleHBl
Y3RlZF9sb2dzPU5vbmUpOgotICAgICAgICBzZWxmLmNhcHR1cmVfb3V0cHV0KCkKLSAgICAgICAg
dHJ5OgotICAgICAgICAgICAgaWYgZXhwZWN0ZWRfZXhjZXB0aW9uOgotICAgICAgICAgICAgICAg
IHJldHVybl92YWx1ZSA9IHRlc3RjYXNlLmFzc2VydFJhaXNlcyhleHBlY3RlZF9leGNlcHRpb24s
IGZ1bmN0aW9uLCAqYXJncywgKiprd2FyZ3MpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgICAgIHJldHVybl92YWx1ZSA9IGZ1bmN0aW9uKCphcmdzLCAqKmt3YXJncykKLSAgICAgICAg
ZmluYWxseToKLSAgICAgICAgICAgIChzdGRvdXRfc3RyaW5nLCBzdGRlcnJfc3RyaW5nLCBsb2dz
X3N0cmluZykgPSBzZWxmLnJlc3RvcmVfb3V0cHV0KCkKLQotICAgICAgICBpZiBoYXNhdHRyKHRl
c3RjYXNlLCAnYXNzZXJ0TXVsdGlMaW5lRXF1YWwnKToKLSAgICAgICAgICAgIHRlc3Rhc3NlcnQg
PSB0ZXN0Y2FzZS5hc3NlcnRNdWx0aUxpbmVFcXVhbAotICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgdGVzdGFzc2VydCA9IHRlc3RjYXNlLmFzc2VydEVxdWFsCi0KLSAgICAgICAgdGVzdGFzc2Vy
dChzdGRvdXRfc3RyaW5nLCBleHBlY3RlZF9zdGRvdXQpCi0gICAgICAgIHRlc3Rhc3NlcnQoc3Rk
ZXJyX3N0cmluZywgZXhwZWN0ZWRfc3RkZXJyKQotICAgICAgICBpZiBleHBlY3RlZF9sb2dzIGlz
IG5vdCBOb25lOgotICAgICAgICAgICAgdGVzdGFzc2VydChsb2dzX3N0cmluZywgZXhwZWN0ZWRf
bG9ncykKLSAgICAgICAgIyBUaGlzIGlzIGEgbGl0dGxlIHN0cmFuZ2UsIGJ1dCBJIGRvbid0IGtu
b3cgd2hlcmUgZWxzZSB0byByZXR1cm4gdGhpcyBpbmZvcm1hdGlvbi4KLSAgICAgICAgcmV0dXJu
IHJldHVybl92YWx1ZQotCi0KLWNsYXNzIE91dHB1dENhcHR1cmVTY29wZShvYmplY3QpOgotCi0g
ICAgZGVmIF9faW5pdF9fKHNlbGYsIG91dHB1dF9jYXB0dXJlPU91dHB1dENhcHR1cmUoKSk6Ci0g
ICAgICAgIHNlbGYuX291dHB1dF9jYXB0dXJlID0gb3V0cHV0X2NhcHR1cmUKLSAgICAgICAgc2Vs
Zi5jYXB0dXJlZF9vdXRwdXQgPSAoTm9uZSwgTm9uZSwgTm9uZSkKLQotICAgIGRlZiBfX2VudGVy
X18oc2VsZik6Ci0gICAgICAgIHNlbGYuX291dHB1dF9jYXB0dXJlLmNhcHR1cmVfb3V0cHV0KCkK
LQotICAgIGRlZiBfX2V4aXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbHVlLCB0cmFjZWJhY2sp
OgotICAgICAgICBzZWxmLmNhcHR1cmVkX291dHB1dCA9IHNlbGYuX291dHB1dF9jYXB0dXJlLnJl
c3RvcmVfb3V0cHV0KCkKLQotCi1jbGFzcyBPdXRwdXRDYXB0dXJlVGVzdENhc2VCYXNlKHVuaXR0
ZXN0LlRlc3RDYXNlKToKLSAgICBtYXhEaWZmID0gTm9uZQotCi0gICAgZGVmIHNldFVwKHNlbGYp
OgotICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZS5zZXRVcChzZWxmKQotICAgICAgICBzZWxmLm91
dHB1dF9jYXB0dXJlID0gT3V0cHV0Q2FwdHVyZSgpCi0gICAgICAgIChzZWxmLl9fY2FwdHVyZWRf
c3Rkb3V0LCBzZWxmLl9fY2FwdHVyZWRfc3RkZXJyKSA9IHNlbGYub3V0cHV0X2NhcHR1cmUuY2Fw
dHVyZV9vdXRwdXQoKQotCi0gICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICBkZWwgc2Vs
Zi5fX2NhcHR1cmVkX3N0ZG91dAotICAgICAgICBkZWwgc2VsZi5fX2NhcHR1cmVkX3N0ZGVycgot
ICAgICAgICBzZWxmLm91dHB1dF9jYXB0dXJlLnJlc3RvcmVfb3V0cHV0KCkKLSAgICAgICAgdW5p
dHRlc3QuVGVzdENhc2UudGVhckRvd24oc2VsZikKLQotICAgIGRlZiBhc3NlcnRTdGRvdXQoc2Vs
ZiwgZXhwZWN0ZWRfc3Rkb3V0KToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF9z
dGRvdXQsIHNlbGYuX19jYXB0dXJlZF9zdGRvdXQuZ2V0dmFsdWUoKSkKLQotICAgIGRlZiBhc3Nl
cnRTdGRlcnIoc2VsZiwgZXhwZWN0ZWRfc3RkZXJyKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChleHBlY3RlZF9zdGRlcnIsIHNlbGYuX19jYXB0dXJlZF9zdGRlcnIuZ2V0dmFsdWUoKSkKSW5k
ZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9vdXRwdXRjYXB0dXJlX3Vu
aXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5
c3RlbS9vdXRwdXRjYXB0dXJlX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNjU3NzMpCisrKyBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vb3V0cHV0Y2FwdHVyZV91bml0dGVzdC5w
eQkobm9uZXhpc3RlbnQpCkBAIC0xLDc1ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDExIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0j
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFO
RAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLQotaW1wb3J0IGxvZ2dpbmcKLWltcG9ydCB1bml0dGVzdAotCi1mcm9t
IHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVy
ZSwgT3V0cHV0Q2FwdHVyZVNjb3BlCi0KLQotX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFt
ZV9fKQotCi0KLWNsYXNzIE91dHB1dENhcHR1cmVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAg
ICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIHNlbGYub3V0cHV0ID0gT3V0cHV0Q2FwdHVyZSgp
Ci0KLSAgICBkZWYgbG9nX2FsbF9sZXZlbHMoc2VsZik6Ci0gICAgICAgIF9sb2cuaW5mbygnSU5G
TycpCi0gICAgICAgIF9sb2cud2FybmluZygnV0FSTicpCi0gICAgICAgIF9sb2cuZXJyb3IoJ0VS
Uk9SJykKLSAgICAgICAgX2xvZy5jcml0aWNhbCgnQ1JJVElDQUwnKQotCi0gICAgZGVmIGFzc2Vy
dExvZ2dlZChzZWxmLCBleHBlY3RlZF9sb2dzKToKLSAgICAgICAgYWN0dWFsX3N0ZG91dCwgYWN0
dWFsX3N0ZGVyciwgYWN0dWFsX2xvZ3MgPSBzZWxmLm91dHB1dC5yZXN0b3JlX291dHB1dCgpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycsIGFjdHVhbF9zdGRvdXQpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoJycsIGFjdHVhbF9zdGRlcnIpCi0gICAgICAgIHNlbGYuYXNzZXJ0TXVsdGlM
aW5lRXF1YWwoZXhwZWN0ZWRfbG9ncywgYWN0dWFsX2xvZ3MpCi0KLSAgICBkZWYgdGVzdF9pbml0
aWFsX2xvZ19sZXZlbChzZWxmKToKLSAgICAgICAgc2VsZi5vdXRwdXQuY2FwdHVyZV9vdXRwdXQo
KQotICAgICAgICBzZWxmLmxvZ19hbGxfbGV2ZWxzKCkKLSAgICAgICAgc2VsZi5hc3NlcnRMb2dn
ZWQoJ0lORk9cbldBUk5cbkVSUk9SXG5DUklUSUNBTFxuJykKLQotICAgIGRlZiB0ZXN0X3NldF9s
b2dfbGV2ZWwoc2VsZik6Ci0gICAgICAgIHNlbGYub3V0cHV0LnNldF9sb2dfbGV2ZWwobG9nZ2lu
Zy5FUlJPUikKLSAgICAgICAgc2VsZi5vdXRwdXQuY2FwdHVyZV9vdXRwdXQoKQotICAgICAgICBz
ZWxmLmxvZ19hbGxfbGV2ZWxzKCkKLSAgICAgICAgc2VsZi5vdXRwdXQuc2V0X2xvZ19sZXZlbChs
b2dnaW5nLldBUk4pCi0gICAgICAgIHNlbGYubG9nX2FsbF9sZXZlbHMoKQotICAgICAgICBzZWxm
LmFzc2VydExvZ2dlZCgnRVJST1JcbkNSSVRJQ0FMXG5XQVJOXG5FUlJPUlxuQ1JJVElDQUxcbicp
Ci0KLSAgICBkZWYgdGVzdF9vdXRwdXRfY2FwdHVyZV9zY29wZShzZWxmKToKLSAgICAgICAgc2Nv
cGUgPSBPdXRwdXRDYXB0dXJlU2NvcGUoKQotICAgICAgICB3aXRoIHNjb3BlOgotICAgICAgICAg
ICAgcHJpbnQoJ1NUUklORyAxJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoJ1NUUklORyAx
XG4nLCAnJywgJycpLCBzY29wZS5jYXB0dXJlZF9vdXRwdXQpCi0KLSAgICAgICAgd2l0aCBzY29w
ZToKLSAgICAgICAgICAgIHByaW50KCdTVFJJTkcgMicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoKCdTVFJJTkcgMlxuJywgJycsICcnKSwgc2NvcGUuY2FwdHVyZWRfb3V0cHV0KQotCi0gICAg
ZGVmIHRlc3Rfb3V0cHV0X2NhcHR1cmVfc2NvcGVfZnJvbV9vdXRwdXRfY2FwdHVyZShzZWxmKToK
LSAgICAgICAgc2NvcGUgPSBPdXRwdXRDYXB0dXJlU2NvcGUoc2VsZi5vdXRwdXQpCi0gICAgICAg
IHdpdGggc2NvcGU6Ci0gICAgICAgICAgICBzZWxmLmxvZ19hbGxfbGV2ZWxzKCkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgoJycsICcnLCAnSU5GT1xuV0FSTlxuRVJST1JcbkNSSVRJQ0FMXG4n
KSwgc2NvcGUuY2FwdHVyZWRfb3V0cHV0KQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9j
b21tb24vc3lzdGVtL3N0YWNrX3V0aWxzX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9zdGFja191dGlsc191bml0dGVzdC5weQko
cmV2aXNpb24gMjY1NzczKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVt
L3N0YWNrX3V0aWxzX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw2IEBA
CiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIAotZnJvbSB3ZWJraXRweS5jb21tb24uc3lz
dGVtIGltcG9ydCBvdXRwdXRjYXB0dXJlCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1w
b3J0IHN0YWNrX3V0aWxzCiAKIApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24v
c3lzdGVtL3VzZXJfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vc3lzdGVtL3VzZXJfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2NTc3MykKKysr
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS91c2VyX3VuaXR0ZXN0LnB5CSh3
b3JraW5nIGNvcHkpCkBAIC0yOCw5ICsyOCwxMCBAQAogCiBpbXBvcnQgdW5pdHRlc3QKIAotZnJv
bSB3ZWJraXRweS5jb21tb24uc3lzdGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0IE91dHB1dENhcHR1
cmUKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS51c2VyIGltcG9ydCBVc2VyCiAKK2Zyb20g
d2Via2l0Y29yZXB5IGltcG9ydCBPdXRwdXRDYXB0dXJlCisKIAogY2xhc3MgVXNlclRlc3QodW5p
dHRlc3QuVGVzdENhc2UpOgogCkBAIC01OCwxMyArNTksMTYgQEAgY2xhc3MgVXNlclRlc3QodW5p
dHRlc3QuVGVzdENhc2UpOgogICAgICAgICBkZWYgcnVuX3Byb21wdF90ZXN0KGlucHV0cywgZXhw
ZWN0ZWRfcmVzdWx0LCBjYW5fY2hvb3NlX211bHRpcGxlPUZhbHNlKToKICAgICAgICAgICAgIGRl
ZiBtb2NrX3Jhd19pbnB1dChtZXNzYWdlKToKICAgICAgICAgICAgICAgICByZXR1cm4gaW5wdXRz
LnBvcCgwKQotICAgICAgICAgICAgb3V0cHV0X2NhcHR1cmUgPSBPdXRwdXRDYXB0dXJlKCkKLSAg
ICAgICAgICAgIGFjdHVhbF9yZXN1bHQgPSBvdXRwdXRfY2FwdHVyZS5hc3NlcnRfb3V0cHV0cygK
LSAgICAgICAgICAgICAgICBzZWxmLAotICAgICAgICAgICAgICAgIFVzZXIucHJvbXB0X3dpdGhf
bXVsdGlwbGVfbGlzdHMsCi0gICAgICAgICAgICAgICAgYXJncz1bInRpdGxlIiwgWyJzdWJ0aXRs
ZTEiLCAic3VidGl0bGUyIl0sIFtbImZvbyIsICJiYXIiXSwgWyJmb29iYXIiLCAiYmFyYmF6Iiwg
ImZvb2JheiJdXV0sCi0gICAgICAgICAgICAgICAga3dhcmdzPXsiY2FuX2Nob29zZV9tdWx0aXBs
ZSI6IGNhbl9jaG9vc2VfbXVsdGlwbGUsICJyYXdfaW5wdXQiOiBtb2NrX3Jhd19pbnB1dH0sCi0g
ICAgICAgICAgICAgICAgZXhwZWN0ZWRfc3Rkb3V0PSJ0aXRsZVxuXG5zdWJ0aXRsZTFcbiAxLiBm
b29cbiAyLiBiYXJcblxuc3VidGl0bGUyXG4gMy4gZm9vYmFyXG4gNC4gYmFyYmF6XG4gNS4gZm9v
YmF6XG4iKQorICAgICAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlKCkgYXMgY2FwdHVyZWQ6Cisg
ICAgICAgICAgICAgICAgYWN0dWFsX3Jlc3VsdCA9IFVzZXIucHJvbXB0X3dpdGhfbXVsdGlwbGVf
bGlzdHMoCisgICAgICAgICAgICAgICAgICAgICd0aXRsZScsIFsnc3VidGl0bGUxJywgJ3N1YnRp
dGxlMiddLCBbWydmb28nLCAnYmFyJ10sIFsnZm9vYmFyJywgJ2JhcmJheicsICdmb29iYXonXV0s
CisgICAgICAgICAgICAgICAgICAgIGNhbl9jaG9vc2VfbXVsdGlwbGU9Y2FuX2Nob29zZV9tdWx0
aXBsZSwKKyAgICAgICAgICAgICAgICAgICAgcmF3X2lucHV0PW1vY2tfcmF3X2lucHV0LAorICAg
ICAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAg
ICAgICAgY2FwdHVyZWQuc3Rkb3V0LmdldHZhbHVlKCksCisgICAgICAgICAgICAgICAgJ3RpdGxl
XG5cbnN1YnRpdGxlMVxuIDEuIGZvb1xuIDIuIGJhclxuXG5zdWJ0aXRsZTJcbiAzLiBmb29iYXJc
biA0LiBiYXJiYXpcbiA1LiBmb29iYXpcbicsCisgICAgICAgICAgICApCiAgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGFjdHVhbF9yZXN1bHQsIGV4cGVjdGVkX3Jlc3VsdCkKICAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGlucHV0cyksIDApCiAKQEAgLTg4LDEzICs5MiwxNiBA
QCBjbGFzcyBVc2VyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIGRlZiBydW5fcHJv
bXB0X3Rlc3QoaW5wdXRzLCBleHBlY3RlZF9yZXN1bHQsIGNhbl9jaG9vc2VfbXVsdGlwbGU9RmFs
c2UpOgogICAgICAgICAgICAgZGVmIG1vY2tfcmF3X2lucHV0KG1lc3NhZ2UpOgogICAgICAgICAg
ICAgICAgIHJldHVybiBpbnB1dHMucG9wKDApCi0gICAgICAgICAgICBvdXRwdXRfY2FwdHVyZSA9
IE91dHB1dENhcHR1cmUoKQotICAgICAgICAgICAgYWN0dWFsX3Jlc3VsdCA9IG91dHB1dF9jYXB0
dXJlLmFzc2VydF9vdXRwdXRzKAotICAgICAgICAgICAgICAgIHNlbGYsCi0gICAgICAgICAgICAg
ICAgVXNlci5wcm9tcHRfd2l0aF9saXN0LAotICAgICAgICAgICAgICAgIGFyZ3M9WyJ0aXRsZSIs
IFsiZm9vIiwgImJhciJdXSwKLSAgICAgICAgICAgICAgICBrd2FyZ3M9eyJjYW5fY2hvb3NlX211
bHRpcGxlIjogY2FuX2Nob29zZV9tdWx0aXBsZSwgInJhd19pbnB1dCI6IG1vY2tfcmF3X2lucHV0
fSwKLSAgICAgICAgICAgICAgICBleHBlY3RlZF9zdGRvdXQ9InRpdGxlXG4gMS4gZm9vXG4gMi4g
YmFyXG4iKQorICAgICAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlKCkgYXMgY2FwdHVyZWQ6Cisg
ICAgICAgICAgICAgICAgYWN0dWFsX3Jlc3VsdCA9IFVzZXIucHJvbXB0X3dpdGhfbGlzdCgKKyAg
ICAgICAgICAgICAgICAgICAgJ3RpdGxlJywgWydmb28nLCAnYmFyJ10sCisgICAgICAgICAgICAg
ICAgICAgIGNhbl9jaG9vc2VfbXVsdGlwbGU9Y2FuX2Nob29zZV9tdWx0aXBsZSwKKyAgICAgICAg
ICAgICAgICAgICAgcmF3X2lucHV0PW1vY2tfcmF3X2lucHV0CisgICAgICAgICAgICAgICAgKQor
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBjYXB0dXJlZC5z
dGRvdXQuZ2V0dmFsdWUoKSwKKyAgICAgICAgICAgICAgICAndGl0bGVcbiAxLiBmb29cbiAyLiBi
YXJcbicKKyAgICAgICAgICAgICkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFs
X3Jlc3VsdCwgZXhwZWN0ZWRfcmVzdWx0KQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChs
ZW4oaW5wdXRzKSwgMCkKIApAQCAtMTMxLDEyICsxMzgsMTcgQEAgY2xhc3MgVXNlclRlc3QodW5p
dHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZFsx
XSwgcmVzdWx0KQogCiAgICAgZGVmIHRlc3Rfd2Fybl9pZl9hcHBsaWNhdGlvbl9pc194Y29kZShz
ZWxmKToKLSAgICAgICAgb3V0cHV0ID0gT3V0cHV0Q2FwdHVyZSgpCiAgICAgICAgIHVzZXIgPSBV
c2VyKCkKLSAgICAgICAgb3V0cHV0LmFzc2VydF9vdXRwdXRzKHNlbGYsIHVzZXIuX3dhcm5faWZf
YXBwbGljYXRpb25faXNfeGNvZGUsIFsiVGV4dE1hdGUiXSkKLSAgICAgICAgb3V0cHV0LmFzc2Vy
dF9vdXRwdXRzKHNlbGYsIHVzZXIuX3dhcm5faWZfYXBwbGljYXRpb25faXNfeGNvZGUsIFsiL0Fw
cGxpY2F0aW9ucy9UZXh0TWF0ZS5hcHAiXSkKLSAgICAgICAgb3V0cHV0LmFzc2VydF9vdXRwdXRz
KHNlbGYsIHVzZXIuX3dhcm5faWZfYXBwbGljYXRpb25faXNfeGNvZGUsIFsiWENvZGUiXSkgICMg
Y2FzZSBzZW5zaXRpdmUgbWF0Y2hpbmcKLQotICAgICAgICB4Y29kZV93YXJuaW5nID0gIkluc3Rl
YWQgb2YgdXNpbmcgWGNvZGUuYXBwLCBjb25zaWRlciB1c2luZyBFRElUT1I9XCJ4ZWQgLS13YWl0
XCIuXG4iCi0gICAgICAgIG91dHB1dC5hc3NlcnRfb3V0cHV0cyhzZWxmLCB1c2VyLl93YXJuX2lm
X2FwcGxpY2F0aW9uX2lzX3hjb2RlLCBbIlhjb2RlIl0sIGV4cGVjdGVkX3N0ZG91dD14Y29kZV93
YXJuaW5nKQotICAgICAgICBvdXRwdXQuYXNzZXJ0X291dHB1dHMoc2VsZiwgdXNlci5fd2Fybl9p
Zl9hcHBsaWNhdGlvbl9pc194Y29kZSwgWyIvRGV2ZWxvcGVyL0FwcGxpY2F0aW9ucy9YY29kZS5h
cHAiXSwgZXhwZWN0ZWRfc3Rkb3V0PXhjb2RlX3dhcm5pbmcpCisgICAgICAgIHdpdGggT3V0cHV0
Q2FwdHVyZSgpIGFzIGNhcHR1cmVkOgorICAgICAgICAgICAgdXNlci5fd2Fybl9pZl9hcHBsaWNh
dGlvbl9pc194Y29kZSgnVGV4dE1hdGUnKQorICAgICAgICAgICAgdXNlci5fd2Fybl9pZl9hcHBs
aWNhdGlvbl9pc194Y29kZSgnL0FwcGxpY2F0aW9ucy9UZXh0TWF0ZS5hcHAnKQorICAgICAgICAg
ICAgdXNlci5fd2Fybl9pZl9hcHBsaWNhdGlvbl9pc194Y29kZSgnWENvZGUnKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGNhcHR1cmVkLnN0ZG91dC5nZXR2YWx1ZSgpLCAnJykKKworICAgICAg
ICB3aXRoIE91dHB1dENhcHR1cmUoKSBhcyBjYXB0dXJlZDoKKyAgICAgICAgICAgIHVzZXIuX3dh
cm5faWZfYXBwbGljYXRpb25faXNfeGNvZGUoJ1hjb2RlJykKKyAgICAgICAgICAgIHVzZXIuX3dh
cm5faWZfYXBwbGljYXRpb25faXNfeGNvZGUoJy9EZXZlbG9wZXIvQXBwbGljYXRpb25zL1hjb2Rl
LmFwcCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBjYXB0dXJlZC5z
dGRvdXQuZ2V0dmFsdWUoKSwKKyAgICAgICAgICAgICdJbnN0ZWFkIG9mIHVzaW5nIFhjb2RlLmFw
cCwgY29uc2lkZXIgdXNpbmcgRURJVE9SPVwieGVkIC0td2FpdFwiLlxuJyAqIDIsCisgICAgICAg
ICkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS93b3Jrc3BhY2Vf
dW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24v
c3lzdGVtL3dvcmtzcGFjZV91bml0dGVzdC5weQkocmV2aXNpb24gMjY1NzczKQorKysgVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3dvcmtzcGFjZV91bml0dGVzdC5weQkod29y
a2luZyBjb3B5KQpAQCAtMjYsMTMgKzI2LDE1IEBACiAjIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogCitpbXBvcnQgbG9nZ2luZwogaW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20gd2Via2l0cHku
Y29tbW9uLnN5c3RlbS5maWxlc3lzdGVtX21vY2sgaW1wb3J0IE1vY2tGaWxlU3lzdGVtCi1mcm9t
IHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVy
ZQogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLndvcmtzcGFjZSBpbXBvcnQgV29ya3NwYWNl
CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlX21vY2sgaW1wb3J0IE1vY2tF
eGVjdXRpdmUKIAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IE91dHB1dENhcHR1cmUKKwogCiBj
bGFzcyBXb3Jrc3BhY2VUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtNTAsMjUgKzUyLDMz
IEBAIGNsYXNzIFdvcmtzcGFjZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRl
c3RfY3JlYXRlX3ppcChzZWxmKToKICAgICAgICAgd29ya3NwYWNlID0gV29ya3NwYWNlKE5vbmUs
IE1vY2tFeGVjdXRpdmUoc2hvdWxkX2xvZz1UcnVlKSkKLSAgICAgICAgZXhwZWN0ZWRfbG9ncyA9
ICJNT0NLIHJ1bl9jb21tYW5kOiBbJ3ppcCcsICctOScsICctcicsICcvemlwL3BhdGgnLCAnLidd
LCBjd2Q9L3NvdXJjZS9wYXRoXG4iCiAKICAgICAgICAgY2xhc3MgTW9ja1ppcEZpbGUob2JqZWN0
KToKICAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRoKToKICAgICAgICAgICAgICAg
ICBzZWxmLmZpbGVuYW1lID0gcGF0aAotICAgICAgICBhcmNoaXZlID0gT3V0cHV0Q2FwdHVyZSgp
LmFzc2VydF9vdXRwdXRzKHNlbGYsIHdvcmtzcGFjZS5jcmVhdGVfemlwLCBbIi96aXAvcGF0aCIs
ICIvc291cmNlL3BhdGgiLCBNb2NrWmlwRmlsZV0sIGV4cGVjdGVkX2xvZ3M9ZXhwZWN0ZWRfbG9n
cykKKworICAgICAgICB3aXRoIE91dHB1dENhcHR1cmUobGV2ZWw9bG9nZ2luZy5JTkZPKSBhcyBj
YXB0dXJlZDoKKyAgICAgICAgICAgIGFyY2hpdmUgPSB3b3Jrc3BhY2UuY3JlYXRlX3ppcCgnL3pp
cC9wYXRoJywgJy9zb3VyY2UvcGF0aCcsIE1vY2taaXBGaWxlKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGNhcHR1cmVkLnJvb3QubG9nLmdldHZhbHVlKCksICJNT0NLIHJ1bl9jb21tYW5kOiBb
J3ppcCcsICctOScsICctcicsICcvemlwL3BhdGgnLCAnLiddLCBjd2Q9L3NvdXJjZS9wYXRoXG4i
KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyY2hpdmUuZmlsZW5hbWUsICIvemlwL3BhdGgi
KQogCiAgICAgZGVmIHRlc3RfY3JlYXRlX3ppcF9leGNlcHRpb24oc2VsZik6CiAgICAgICAgIHdv
cmtzcGFjZSA9IFdvcmtzcGFjZShOb25lLCBNb2NrRXhlY3V0aXZlKHNob3VsZF9sb2c9VHJ1ZSwg
c2hvdWxkX3Rocm93PVRydWUpKQotICAgICAgICBleHBlY3RlZF9sb2dzID0gIiIiTU9DSyBydW5f
Y29tbWFuZDogWyd6aXAnLCAnLTknLCAnLXInLCAnL3ppcC9wYXRoJywgJy4nXSwgY3dkPS9zb3Vy
Y2UvcGF0aAorCisgICAgICAgIGNsYXNzIE1vY2taaXBGaWxlKG9iamVjdCk6CisgICAgICAgICAg
ICBkZWYgX19pbml0X18oc2VsZiwgcGF0aCk6CisgICAgICAgICAgICAgICAgc2VsZi5maWxlbmFt
ZSA9IHBhdGgKKworICAgICAgICB3aXRoIE91dHB1dENhcHR1cmUobGV2ZWw9bG9nZ2luZy5JTkZP
KSBhcyBjYXB0dXJlZDoKKyAgICAgICAgICAgIGFyY2hpdmUgPSB3b3Jrc3BhY2UuY3JlYXRlX3pp
cCgnL3ppcC9wYXRoJywgJy9zb3VyY2UvcGF0aCcsIE1vY2taaXBGaWxlKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY2FwdHVyZWQucm9vdC5sb2cuZ2V0dmFsdWUoKSwK
KyAgICAgICAgICAgICcnJ01PQ0sgcnVuX2NvbW1hbmQ6IFsnemlwJywgJy05JywgJy1yJywgJy96
aXAvcGF0aCcsICcuJ10sIGN3ZD0vc291cmNlL3BhdGgKIFdvcmtzcGFjZS5jcmVhdGVfemlwIGZh
aWxlZCBpbiAvc291cmNlL3BhdGg6CiBNT0NLIFNjcmlwdEVycm9yCiAKIE1PQ0sgb3V0cHV0IG9m
IGNoaWxkIHByb2Nlc3MKLSIiIgorJycnLAorICAgICAgICApCiAKLSAgICAgICAgY2xhc3MgTW9j
a1ppcEZpbGUob2JqZWN0KToKLSAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRoKToK
LSAgICAgICAgICAgICAgICBzZWxmLmZpbGVuYW1lID0gcGF0aAotICAgICAgICBhcmNoaXZlID0g
T3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIHdvcmtzcGFjZS5jcmVhdGVfemlw
LCBbIi96aXAvcGF0aCIsICIvc291cmNlL3BhdGgiLCBNb2NrWmlwRmlsZV0sIGV4cGVjdGVkX2xv
Z3M9ZXhwZWN0ZWRfbG9ncykKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoYXJjaGl2ZSkKSW5k
ZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3dhdGNobGlzdC93YXRjaGxpc3RwYXJz
ZXJfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21t
b24vd2F0Y2hsaXN0L3dhdGNobGlzdHBhcnNlcl91bml0dGVzdC5weQkocmV2aXNpb24gMjY1Nzcz
KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vd2F0Y2hsaXN0L3dhdGNobGlzdHBh
cnNlcl91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMzQsOSArMzQsMTAgQEAgaW1wb3J0
IHN5cwogCiAKIGZyb20gd2Via2l0cHkuY29tbW9uIGltcG9ydCB3ZWJraXR1bml0dGVzdAotZnJv
bSB3ZWJraXRweS5jb21tb24uc3lzdGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0IE91dHB1dENhcHR1
cmUKIGZyb20gd2Via2l0cHkuY29tbW9uLndhdGNobGlzdC53YXRjaGxpc3RwYXJzZXIgaW1wb3J0
IFdhdGNoTGlzdFBhcnNlcgogCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgT3V0cHV0Q2FwdHVy
ZQorCiAKIGNsYXNzIFdhdGNoTGlzdFBhcnNlclRlc3Qod2Via2l0dW5pdHRlc3QuVGVzdENhc2Up
OgogICAgIGRlZiBzZXRVcChzZWxmKToKQEAgLTQ1LDE0ICs0NiwyMSBAQCBjbGFzcyBXYXRjaExp
c3RQYXJzZXJUZXN0KHdlYmtpdHVuaXR0ZXN0CiAKICAgICBkZWYgdGVzdF9iYWRfc2VjdGlvbihz
ZWxmKToKICAgICAgICAgd2F0Y2hfbGlzdCA9ICgneyJGT08iOiB7fX0nKQotICAgICAgICBPdXRw
dXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMoc2VsZiwgc2VsZi5fd2F0Y2hfbGlzdF9wYXJzZXIu
cGFyc2UsIGFyZ3M9W3dhdGNoX2xpc3RdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZXhwZWN0ZWRfbG9ncz0nVW5rbm93biBzZWN0aW9uICJGT08iIGluIHdhdGNoIGxp
c3QuXG4nKQorICAgICAgICB3aXRoIE91dHB1dENhcHR1cmUobGV2ZWw9bG9nZ2luZy5JTkZPKSBh
cyBjYXB0dXJlZDoKKyAgICAgICAgICAgIHNlbGYuX3dhdGNoX2xpc3RfcGFyc2VyLnBhcnNlKHdh
dGNoX2xpc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBjYXB0dXJl
ZC5yb290LmxvZy5nZXR2YWx1ZSgpLAorICAgICAgICAgICAgJ1Vua25vd24gc2VjdGlvbiAiRk9P
IiBpbiB3YXRjaCBsaXN0LlxuJywKKyAgICAgICAgKQogCiAgICAgZGVmIHRlc3Rfc2VjdGlvbl90
eXBvKHNlbGYpOgogICAgICAgICB3YXRjaF9saXN0ID0gKCd7IkRFRklOVElPTlMiOiB7fX0nKQot
ICAgICAgICBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMoc2VsZiwgc2VsZi5fd2F0Y2hf
bGlzdF9wYXJzZXIucGFyc2UsIGFyZ3M9W3dhdGNoX2xpc3RdLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfbG9ncz0nVW5rbm93biBzZWN0aW9uICJERUZJ
TlRJT05TIiBpbiB3YXRjaCBsaXN0LicKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICsgJ1xuXG5QZXJoYXBzIGl0IHNob3VsZCBiZSBERUZJTklUSU9OUy5cbicpCisgICAg
ICAgIHdpdGggT3V0cHV0Q2FwdHVyZShsZXZlbD1sb2dnaW5nLklORk8pIGFzIGNhcHR1cmVkOgor
ICAgICAgICAgICAgc2VsZi5fd2F0Y2hfbGlzdF9wYXJzZXIucGFyc2Uod2F0Y2hfbGlzdCkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNhcHR1cmVkLnJvb3QubG9nLmdl
dHZhbHVlKCksCisgICAgICAgICAgICAnVW5rbm93biBzZWN0aW9uICJERUZJTlRJT05TIiBpbiB3
YXRjaCBsaXN0LlxuXG5QZXJoYXBzIGl0IHNob3VsZCBiZSBERUZJTklUSU9OUy5cbicsCisgICAg
ICAgICkKIAogICAgIGRlZiB0ZXN0X2JhZF9kZWZpbml0aW9uKHNlbGYpOgogICAgICAgICB3YXRj
aF9saXN0ID0gKApAQCAtNjQsOCArNzIsOSBAQCBjbGFzcyBXYXRjaExpc3RQYXJzZXJUZXN0KHdl
YmtpdHVuaXR0ZXN0CiAgICAgICAgICAgICAnICAgICB9LCcKICAgICAgICAgICAgICd9JykKIAot
ICAgICAgICBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMoc2VsZiwgc2VsZi5fd2F0Y2hf
bGlzdF9wYXJzZXIucGFyc2UsIGFyZ3M9W3dhdGNoX2xpc3RdLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfbG9ncz0nSW52YWxpZCBjaGFyYWN0ZXIgInwi
IGluIGRlZmluaXRpb24gIldhdGNoTGlzdDF8QSIuXG4nKQorICAgICAgICB3aXRoIE91dHB1dENh
cHR1cmUobGV2ZWw9bG9nZ2luZy5JTkZPKSBhcyBjYXB0dXJlZDoKKyAgICAgICAgICAgIHNlbGYu
X3dhdGNoX2xpc3RfcGFyc2VyLnBhcnNlKHdhdGNoX2xpc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoY2FwdHVyZWQucm9vdC5sb2cuZ2V0dmFsdWUoKSwgJ0ludmFsaWQgY2hhcmFjdGVyICJ8
IiBpbiBkZWZpbml0aW9uICJXYXRjaExpc3QxfEEiLlxuJykKIAogICAgIGRlZiB0ZXN0X2JhZF9m
aWxlbmFtZV9yZWdleChzZWxmKToKICAgICAgICAgd2F0Y2hfbGlzdCA9ICgKQEAgLTgxLDExICs5
MCwxMyBAQCBjbGFzcyBXYXRjaExpc3RQYXJzZXJUZXN0KHdlYmtpdHVuaXR0ZXN0CiAgICAgICAg
ICAgICAnICAgICB9LCcKICAgICAgICAgICAgICd9JykKIAorICAgICAgICB3aXRoIE91dHB1dENh
cHR1cmUobGV2ZWw9bG9nZ2luZy5JTkZPKSBhcyBjYXB0dXJlZDoKKyAgICAgICAgICAgIHNlbGYu
X3dhdGNoX2xpc3RfcGFyc2VyLnBhcnNlKHdhdGNoX2xpc3QpCiAgICAgICAgIGlmIHN5cy52ZXJz
aW9uX2luZm8gPiAoMywgMCk6CiAgICAgICAgICAgICBleHBlY3RlZF9sb2cgPSAnVGhlIHJlZ2V4
ICIqIiBpcyBpbnZhbGlkIGR1ZSB0byAibm90aGluZyB0byByZXBlYXQgYXQgcG9zaXRpb24gMCIu
XG4nCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBleHBlY3RlZF9sb2cgPSAnVGhlIHJlZ2V4
ICIqIiBpcyBpbnZhbGlkIGR1ZSB0byAibm90aGluZyB0byByZXBlYXQiLlxuJwotICAgICAgICBP
dXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMoc2VsZiwgc2VsZi5fd2F0Y2hfbGlzdF9wYXJz
ZXIucGFyc2UsIGFyZ3M9W3dhdGNoX2xpc3RdLCBleHBlY3RlZF9sb2dzPWV4cGVjdGVkX2xvZykK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYXB0dXJlZC5yb290LmxvZy5nZXR2YWx1ZSgpLCBl
eHBlY3RlZF9sb2cpCiAKICAgICBkZWYgdGVzdF9iYWRfbW9yZV9yZWdleChzZWxmKToKICAgICAg
ICAgd2F0Y2hfbGlzdCA9ICgKQEAgLTEwMSwxMSArMTEyLDEzIEBAIGNsYXNzIFdhdGNoTGlzdFBh
cnNlclRlc3Qod2Via2l0dW5pdHRlc3QKICAgICAgICAgICAgICcgICAgIH0sJwogICAgICAgICAg
ICAgJ30nKQogCisgICAgICAgIHdpdGggT3V0cHV0Q2FwdHVyZShsZXZlbD1sb2dnaW5nLklORk8p
IGFzIGNhcHR1cmVkOgorICAgICAgICAgICAgc2VsZi5fd2F0Y2hfbGlzdF9wYXJzZXIucGFyc2Uo
d2F0Y2hfbGlzdCkKICAgICAgICAgaWYgc3lzLnZlcnNpb25faW5mbyA+ICgzLCAwKToKICAgICAg
ICAgICAgIGV4cGVjdGVkX2xvZyA9ICdUaGUgcmVnZXggIioiIGlzIGludmFsaWQgZHVlIHRvICJu
b3RoaW5nIHRvIHJlcGVhdCBhdCBwb3NpdGlvbiAwIi5cbicKICAgICAgICAgZWxzZToKICAgICAg
ICAgICAgIGV4cGVjdGVkX2xvZyA9ICdUaGUgcmVnZXggIioiIGlzIGludmFsaWQgZHVlIHRvICJu
b3RoaW5nIHRvIHJlcGVhdCIuXG4nCi0gICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0
cHV0cyhzZWxmLCBzZWxmLl93YXRjaF9saXN0X3BhcnNlci5wYXJzZSwgYXJncz1bd2F0Y2hfbGlz
dF0sIGV4cGVjdGVkX2xvZ3M9ZXhwZWN0ZWRfbG9nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGNhcHR1cmVkLnJvb3QubG9nLmdldHZhbHVlKCksIGV4cGVjdGVkX2xvZykKIAogICAgIGRlZiB0
ZXN0X2JhZF9tYXRjaF90eXBlKHNlbGYpOgogICAgICAgICB3YXRjaF9saXN0ID0gKApAQCAtMTIx
LDggKzEzNCwxMiBAQCBjbGFzcyBXYXRjaExpc3RQYXJzZXJUZXN0KHdlYmtpdHVuaXR0ZXN0CiAg
ICAgICAgICAgICAnICAgICB9LCcKICAgICAgICAgICAgICd9JykKIAotICAgICAgICBPdXRwdXRD
YXB0dXJlKCkuYXNzZXJ0X291dHB1dHMoc2VsZiwgc2VsZi5fd2F0Y2hfbGlzdF9wYXJzZXIucGFy
c2UsIGFyZ3M9W3dhdGNoX2xpc3RdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZXhwZWN0ZWRfbG9ncz0nVW5rbm93biBwYXR0ZXJuIHR5cGUgIm5vdGhpbmdfbWF0Y2hl
c190aGlzIiBpbiBkZWZpbml0aW9uICJXYXRjaExpc3QxIi5cbicpCisgICAgICAgIHdpdGggT3V0
cHV0Q2FwdHVyZShsZXZlbD1sb2dnaW5nLklORk8pIGFzIGNhcHR1cmVkOgorICAgICAgICAgICAg
c2VsZi5fd2F0Y2hfbGlzdF9wYXJzZXIucGFyc2Uod2F0Y2hfbGlzdCkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNhcHR1cmVkLnJvb3QubG9nLmdldHZhbHVlKCksCisg
ICAgICAgICAgICAnVW5rbm93biBwYXR0ZXJuIHR5cGUgIm5vdGhpbmdfbWF0Y2hlc190aGlzIiBp
biBkZWZpbml0aW9uICJXYXRjaExpc3QxIi5cbicsCisgICAgICAgICkKIAogICAgIGRlZiB0ZXN0
X21hdGNoX3R5cGVfdHlwbyhzZWxmKToKICAgICAgICAgd2F0Y2hfbGlzdCA9ICgKQEAgLTEzOCw5
ICsxNTUsMTIgQEAgY2xhc3MgV2F0Y2hMaXN0UGFyc2VyVGVzdCh3ZWJraXR1bml0dGVzdAogICAg
ICAgICAgICAgJyAgICAgfSwnCiAgICAgICAgICAgICAnfScpCiAKLSAgICAgICAgT3V0cHV0Q2Fw
dHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIHNlbGYuX3dhdGNoX2xpc3RfcGFyc2VyLnBhcnNl
LCBhcmdzPVt3YXRjaF9saXN0XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGV4cGVjdGVkX2xvZ3M9J1Vua25vd24gcGF0dGVybiB0eXBlICJpZmxlbmFtZSIgaW4gZGVm
aW5pdGlvbiAiV2F0Y2hMaXN0MSIuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKyAnXG5cblBlcmhhcHMgaXQgc2hvdWxkIGJlIGZpbGVuYW1lLlxuJykKKyAgICAgICAg
d2l0aCBPdXRwdXRDYXB0dXJlKGxldmVsPWxvZ2dpbmcuSU5GTykgYXMgY2FwdHVyZWQ6CisgICAg
ICAgICAgICBzZWxmLl93YXRjaF9saXN0X3BhcnNlci5wYXJzZSh3YXRjaF9saXN0KQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY2FwdHVyZWQucm9vdC5sb2cuZ2V0dmFs
dWUoKSwKKyAgICAgICAgICAgICdVbmtub3duIHBhdHRlcm4gdHlwZSAiaWZsZW5hbWUiIGluIGRl
ZmluaXRpb24gIldhdGNoTGlzdDEiLlxuXG5QZXJoYXBzIGl0IHNob3VsZCBiZSBmaWxlbmFtZS5c
bicsCisgICAgICAgICkKIAogICAgIGRlZiB0ZXN0X2VtcHR5X2RlZmluaXRpb24oc2VsZik6CiAg
ICAgICAgIHdhdGNoX2xpc3QgPSAoCkBAIC0xNTQsOCArMTc0LDEyIEBAIGNsYXNzIFdhdGNoTGlz
dFBhcnNlclRlc3Qod2Via2l0dW5pdHRlc3QKICAgICAgICAgICAgICcgICAgIH0sJwogICAgICAg
ICAgICAgJ30nKQogCi0gICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxm
LCBzZWxmLl93YXRjaF9saXN0X3BhcnNlci5wYXJzZSwgYXJncz1bd2F0Y2hfbGlzdF0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9sb2dzPSdUaGUgZGVm
aW5pdGlvbiAiV2F0Y2hMaXN0MSIgaGFzIG5vIHBhdHRlcm5zLCBzbyBpdCBzaG91bGQgYmUgZGVs
ZXRlZC5cbicpCisgICAgICAgIHdpdGggT3V0cHV0Q2FwdHVyZShsZXZlbD1sb2dnaW5nLklORk8p
IGFzIGNhcHR1cmVkOgorICAgICAgICAgICAgc2VsZi5fd2F0Y2hfbGlzdF9wYXJzZXIucGFyc2Uo
d2F0Y2hfbGlzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNhcHR1
cmVkLnJvb3QubG9nLmdldHZhbHVlKCksCisgICAgICAgICAgICAnVGhlIGRlZmluaXRpb24gIldh
dGNoTGlzdDEiIGhhcyBubyBwYXR0ZXJucywgc28gaXQgc2hvdWxkIGJlIGRlbGV0ZWQuXG4nLAor
ICAgICAgICApCiAKICAgICBkZWYgdGVzdF9lbXB0eV9jY19ydWxlKHNlbGYpOgogICAgICAgICB3
YXRjaF9saXN0ID0gKApAQCAtMTcwLDkgKzE5NCwxMyBAQCBjbGFzcyBXYXRjaExpc3RQYXJzZXJU
ZXN0KHdlYmtpdHVuaXR0ZXN0CiAgICAgICAgICAgICAnICAgICB9LCcKICAgICAgICAgICAgICd9
JykKIAotICAgICAgICBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMoc2VsZiwgc2VsZi5f
d2F0Y2hfbGlzdF9wYXJzZXIucGFyc2UsIGFyZ3M9W3dhdGNoX2xpc3RdLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfbG9ncz0nQSBydWxlIGZvciBkZWZp
bml0aW9uICJXYXRjaExpc3QxIiBpcyBlbXB0eSwgc28gaXQgc2hvdWxkIGJlIGRlbGV0ZWQuXG4n
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICdUaGUgZm9sbG93aW5n
IGRlZmluaXRpb25zIGFyZSBub3QgdXNlZCBhbmQgc2hvdWxkIGJlIHJlbW92ZWQ6IFdhdGNoTGlz
dDFcbicpCisgICAgICAgIHdpdGggT3V0cHV0Q2FwdHVyZShsZXZlbD1sb2dnaW5nLklORk8pIGFz
IGNhcHR1cmVkOgorICAgICAgICAgICAgc2VsZi5fd2F0Y2hfbGlzdF9wYXJzZXIucGFyc2Uod2F0
Y2hfbGlzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNhcHR1cmVk
LnJvb3QubG9nLmdldHZhbHVlKCksCisgICAgICAgICAgICAnQSBydWxlIGZvciBkZWZpbml0aW9u
ICJXYXRjaExpc3QxIiBpcyBlbXB0eSwgc28gaXQgc2hvdWxkIGJlIGRlbGV0ZWQuXG5UaGUgZm9s
bG93aW5nIGRlZmluaXRpb25zIGFyZSBub3QgJworICAgICAgICAgICAgJ3VzZWQgYW5kIHNob3Vs
ZCBiZSByZW1vdmVkOiBXYXRjaExpc3QxXG4nLAorICAgICAgICApCiAKICAgICBkZWYgdGVzdF9j
Y19ydWxlX3dpdGhfaW52YWxpZF9lbWFpbChzZWxmKToKICAgICAgICAgd2F0Y2hfbGlzdCA9ICgK
QEAgLTE4Nyw5ICsyMTUsMTMgQEAgY2xhc3MgV2F0Y2hMaXN0UGFyc2VyVGVzdCh3ZWJraXR1bml0
dGVzdAogICAgICAgICAgICAgJyAgICAgfSwnCiAgICAgICAgICAgICAnfScpCiAKLSAgICAgICAg
T3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIHNlbGYuX3dhdGNoX2xpc3RfcGFy
c2VyLnBhcnNlLCBhcmdzPVt3YXRjaF9saXN0XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGV4cGVjdGVkX2xvZ3M9J1RoZSBlbWFpbCBhbGlhcyBsZXZpbitiYWQrZW1h
aWxAY2hyb21pdW0ub3JnIHdoaWNoIGlzJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKyAnIGluIHRoZSB3YXRjaGxpc3QgaXMgbm90IGxpc3RlZCBhcyBhIGNvbnRyaWJ1
dG9yIGluIGNvbnRyaWJ1dG9ycy5qc29uXG4nKQorICAgICAgICB3aXRoIE91dHB1dENhcHR1cmUo
bGV2ZWw9bG9nZ2luZy5JTkZPKSBhcyBjYXB0dXJlZDoKKyAgICAgICAgICAgIHNlbGYuX3dhdGNo
X2xpc3RfcGFyc2VyLnBhcnNlKHdhdGNoX2xpc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
CisgICAgICAgICAgICBjYXB0dXJlZC5yb290LmxvZy5nZXR2YWx1ZSgpLAorICAgICAgICAgICAg
J1RoZSBlbWFpbCBhbGlhcyBsZXZpbitiYWQrZW1haWxAY2hyb21pdW0ub3JnIHdoaWNoIGlzIGlu
IHRoZSB3YXRjaGxpc3QgaXMgbm90IGxpc3RlZCBhcyBhIGNvbnRyaWJ1dG9yIGluICcKKyAgICAg
ICAgICAgICdjb250cmlidXRvcnMuanNvblxuJywKKyAgICAgICAgKQogCiAgICAgZGVmIHRlc3Rf
Y2NfcnVsZV93aXRoX3NlY29uZGFyeV9lbWFpbChzZWxmKToKICAgICAgICAgIyBGSVhNRTogV2Ug
c2hvdWxkIHByb3ZpZGUgYSBtb2NrIG9mIENvbW1pdHRlckxpc3Qgc28gdGhhdCB3ZSBjYW4gdGVz
dCB0aGlzIG9uIGZha2UgZGF0YS4KQEAgLTIwNSw4ICsyMzcsOSBAQCBjbGFzcyBXYXRjaExpc3RQ
YXJzZXJUZXN0KHdlYmtpdHVuaXR0ZXN0CiAgICAgICAgICAgICAnICAgICB9LCcKICAgICAgICAg
ICAgICd9JykKIAotICAgICAgICBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMoc2VsZiwg
c2VsZi5fd2F0Y2hfbGlzdF9wYXJzZXIucGFyc2UsIGFyZ3M9W3dhdGNoX2xpc3RdLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfbG9ncz0nJykKKyAgICAg
ICAgd2l0aCBPdXRwdXRDYXB0dXJlKGxldmVsPWxvZ2dpbmcuSU5GTykgYXMgY2FwdHVyZWQ6Cisg
ICAgICAgICAgICBzZWxmLl93YXRjaF9saXN0X3BhcnNlci5wYXJzZSh3YXRjaF9saXN0KQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGNhcHR1cmVkLnJvb3QubG9nLmdldHZhbHVlKCksICcnKQog
CiAgICAgZGVmIHRlc3RfZW1wdHlfbWVzc2FnZV9ydWxlKHNlbGYpOgogICAgICAgICB3YXRjaF9s
aXN0ID0gKApAQCAtMjIyLDkgKzI1NSwxMyBAQCBjbGFzcyBXYXRjaExpc3RQYXJzZXJUZXN0KHdl
YmtpdHVuaXR0ZXN0CiAgICAgICAgICAgICAnICAgICB9LCcKICAgICAgICAgICAgICd9JykKIAot
ICAgICAgICBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMoc2VsZiwgc2VsZi5fd2F0Y2hf
bGlzdF9wYXJzZXIucGFyc2UsIGFyZ3M9W3dhdGNoX2xpc3RdLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfbG9ncz0nQSBydWxlIGZvciBkZWZpbml0aW9u
ICJXYXRjaExpc3QxIiBpcyBlbXB0eSwgc28gaXQgc2hvdWxkIGJlIGRlbGV0ZWQuXG4nCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICdUaGUgZm9sbG93aW5nIGRlZmlu
aXRpb25zIGFyZSBub3QgdXNlZCBhbmQgc2hvdWxkIGJlIHJlbW92ZWQ6IFdhdGNoTGlzdDFcbicp
CisgICAgICAgIHdpdGggT3V0cHV0Q2FwdHVyZShsZXZlbD1sb2dnaW5nLklORk8pIGFzIGNhcHR1
cmVkOgorICAgICAgICAgICAgc2VsZi5fd2F0Y2hfbGlzdF9wYXJzZXIucGFyc2Uod2F0Y2hfbGlz
dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNhcHR1cmVkLnJvb3Qu
bG9nLmdldHZhbHVlKCksCisgICAgICAgICAgICAnQSBydWxlIGZvciBkZWZpbml0aW9uICJXYXRj
aExpc3QxIiBpcyBlbXB0eSwgc28gaXQgc2hvdWxkIGJlIGRlbGV0ZWQuXG5UaGUgZm9sbG93aW5n
IGRlZmluaXRpb25zIGFyZSBub3QgJworICAgICAgICAgICAgJ3VzZWQgYW5kIHNob3VsZCBiZSBy
ZW1vdmVkOiBXYXRjaExpc3QxXG4nLAorICAgICAgICApCiAKICAgICBkZWYgdGVzdF91bnVzZWRf
ZGVmaW50aW9uKHNlbGYpOgogICAgICAgICB3YXRjaF9saXN0ID0gKApAQCAtMjM2LDggKzI3Mywx
MiBAQCBjbGFzcyBXYXRjaExpc3RQYXJzZXJUZXN0KHdlYmtpdHVuaXR0ZXN0CiAgICAgICAgICAg
ICAnICAgICB9LCcKICAgICAgICAgICAgICd9JykKIAotICAgICAgICBPdXRwdXRDYXB0dXJlKCku
YXNzZXJ0X291dHB1dHMoc2VsZiwgc2VsZi5fd2F0Y2hfbGlzdF9wYXJzZXIucGFyc2UsIGFyZ3M9
W3dhdGNoX2xpc3RdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhw
ZWN0ZWRfbG9ncz0nVGhlIGZvbGxvd2luZyBkZWZpbml0aW9ucyBhcmUgbm90IHVzZWQgYW5kIHNo
b3VsZCBiZSByZW1vdmVkOiBXYXRjaExpc3QxXG4nKQorICAgICAgICB3aXRoIE91dHB1dENhcHR1
cmUobGV2ZWw9bG9nZ2luZy5JTkZPKSBhcyBjYXB0dXJlZDoKKyAgICAgICAgICAgIHNlbGYuX3dh
dGNoX2xpc3RfcGFyc2VyLnBhcnNlKHdhdGNoX2xpc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoCisgICAgICAgICAgICBjYXB0dXJlZC5yb290LmxvZy5nZXR2YWx1ZSgpLAorICAgICAgICAg
ICAgJ1RoZSBmb2xsb3dpbmcgZGVmaW5pdGlvbnMgYXJlIG5vdCB1c2VkIGFuZCBzaG91bGQgYmUg
cmVtb3ZlZDogV2F0Y2hMaXN0MVxuJywKKyAgICAgICAgKQogCiAgICAgZGVmIHRlc3RfY2NfcnVs
ZV93aXRoX3VuZGVmaW5lZF9kZWZpbnRpb24oc2VsZik6CiAgICAgICAgIHdhdGNoX2xpc3QgPSAo
CkBAIC0yNDcsOCArMjg4LDEyIEBAIGNsYXNzIFdhdGNoTGlzdFBhcnNlclRlc3Qod2Via2l0dW5p
dHRlc3QKICAgICAgICAgICAgICcgICAgIH0sJwogICAgICAgICAgICAgJ30nKQogCi0gICAgICAg
IE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCBzZWxmLl93YXRjaF9saXN0X3Bh
cnNlci5wYXJzZSwgYXJncz1bd2F0Y2hfbGlzdF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBleHBlY3RlZF9sb2dzPSdJbiBzZWN0aW9uICJDQ19SVUxFUyIsIHRoZSBm
b2xsb3dpbmcgZGVmaW5pdGlvbnMgYXJlIG5vdCB1c2VkIGFuZCBzaG91bGQgYmUgcmVtb3ZlZDog
V2F0Y2hMaXN0MVxuJykKKyAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlKGxldmVsPWxvZ2dpbmcu
SU5GTykgYXMgY2FwdHVyZWQ6CisgICAgICAgICAgICBzZWxmLl93YXRjaF9saXN0X3BhcnNlci5w
YXJzZSh3YXRjaF9saXN0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAg
Y2FwdHVyZWQucm9vdC5sb2cuZ2V0dmFsdWUoKSwKKyAgICAgICAgICAgICdJbiBzZWN0aW9uICJD
Q19SVUxFUyIsIHRoZSBmb2xsb3dpbmcgZGVmaW5pdGlvbnMgYXJlIG5vdCB1c2VkIGFuZCBzaG91
bGQgYmUgcmVtb3ZlZDogV2F0Y2hMaXN0MVxuJywKKyAgICAgICAgKQogCiAgICAgZGVmIHRlc3Rf
bWVzc2FnZV9ydWxlX3dpdGhfdW5kZWZpbmVkX2RlZmludGlvbihzZWxmKToKICAgICAgICAgd2F0
Y2hfbGlzdCA9ICgKQEAgLTI1OCw4ICszMDMsMTIgQEAgY2xhc3MgV2F0Y2hMaXN0UGFyc2VyVGVz
dCh3ZWJraXR1bml0dGVzdAogICAgICAgICAgICAgJyAgICAgfSwnCiAgICAgICAgICAgICAnfScp
CiAKLSAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIHNlbGYuX3dh
dGNoX2xpc3RfcGFyc2VyLnBhcnNlLCBhcmdzPVt3YXRjaF9saXN0XSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX2xvZ3M9J0luIHNlY3Rpb24gIk1FU1NB
R0VfUlVMRVMiLCB0aGUgZm9sbG93aW5nIGRlZmluaXRpb25zIGFyZSBub3QgdXNlZCBhbmQgc2hv
dWxkIGJlIHJlbW92ZWQ6IFdhdGNoTGlzdDFcbicpCisgICAgICAgIHdpdGggT3V0cHV0Q2FwdHVy
ZShsZXZlbD1sb2dnaW5nLklORk8pIGFzIGNhcHR1cmVkOgorICAgICAgICAgICAgc2VsZi5fd2F0
Y2hfbGlzdF9wYXJzZXIucGFyc2Uod2F0Y2hfbGlzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgKKyAgICAgICAgICAgIGNhcHR1cmVkLnJvb3QubG9nLmdldHZhbHVlKCksCisgICAgICAgICAg
ICAnSW4gc2VjdGlvbiAiTUVTU0FHRV9SVUxFUyIsIHRoZSBmb2xsb3dpbmcgZGVmaW5pdGlvbnMg
YXJlIG5vdCB1c2VkIGFuZCBzaG91bGQgYmUgcmVtb3ZlZDogV2F0Y2hMaXN0MVxuJywKKyAgICAg
ICAgKQogCiAgICAgZGVmIHRlc3RfY2NfcnVsZV93aXRoX3VuZGVmaW5lZF9kZWZpbnRpb25fd2l0
aF9zdWdnZXN0aW9uKHNlbGYpOgogICAgICAgICB3YXRjaF9saXN0ID0gKApAQCAtMjc3LDkgKzMy
NiwxMyBAQCBjbGFzcyBXYXRjaExpc3RQYXJzZXJUZXN0KHdlYmtpdHVuaXR0ZXN0CiAgICAgICAg
ICAgICAnICAgICB9LCcKICAgICAgICAgICAgICd9JykKIAotICAgICAgICBPdXRwdXRDYXB0dXJl
KCkuYXNzZXJ0X291dHB1dHMoc2VsZiwgc2VsZi5fd2F0Y2hfbGlzdF9wYXJzZXIucGFyc2UsIGFy
Z3M9W3dhdGNoX2xpc3RdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZXhwZWN0ZWRfbG9ncz0nSW4gc2VjdGlvbiAiQ0NfUlVMRVMiLCB0aGUgZm9sbG93aW5nIGRlZmlu
aXRpb25zIGFyZSBub3QgdXNlZCBhbmQgc2hvdWxkIGJlIHJlbW92ZWQ6IFdhdGNoTGlzdCcKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgJ1xuXG5QZXJoYXBzIGl0IHNo
b3VsZCBiZSBXYXRjaExpc3QxLlxuJykKKyAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlKGxldmVs
PWxvZ2dpbmcuSU5GTykgYXMgY2FwdHVyZWQ6CisgICAgICAgICAgICBzZWxmLl93YXRjaF9saXN0
X3BhcnNlci5wYXJzZSh3YXRjaF9saXN0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAg
ICAgICAgICAgY2FwdHVyZWQucm9vdC5sb2cuZ2V0dmFsdWUoKSwKKyAgICAgICAgICAgICdJbiBz
ZWN0aW9uICJDQ19SVUxFUyIsIHRoZSBmb2xsb3dpbmcgZGVmaW5pdGlvbnMgYXJlIG5vdCB1c2Vk
IGFuZCBzaG91bGQgYmUgcmVtb3ZlZDogJworICAgICAgICAgICAgJ1dhdGNoTGlzdFxuXG5QZXJo
YXBzIGl0IHNob3VsZCBiZSBXYXRjaExpc3QxLlxuJywKKyAgICAgICAgKQogCiAgICAgZGVmIHRl
c3RfY2NfcnVsZV93aXRoX2NvbXBsZXhfbG9naWMoc2VsZik6CiAgICAgICAgIHdhdGNoX2xpc3Qg
PSAoCkBAIC0zMDMsOCArMzU2LDE1IEBAIGNsYXNzIFdhdGNoTGlzdFBhcnNlclRlc3Qod2Via2l0
dW5pdHRlc3QKICAgICAgICAgICAgICcgICAgIH0sJwogICAgICAgICAgICAgJ30nKQogCi0gICAg
ICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCBzZWxmLl93YXRjaF9saXN0
X3BhcnNlci5wYXJzZSwgYXJncz1bd2F0Y2hfbGlzdF0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBleHBlY3RlZF9sb2dzPSdJbiBzZWN0aW9uICJDQ19SVUxFUyIsIHRo
ZSBmb2xsb3dpbmcgZGVmaW5pdGlvbnMgYXJlIG5vdCB1c2VkIGFuZCBzaG91bGQgYmUgcmVtb3Zl
ZDogV2F0Y2hMaXN0VW5kZWZpbmVkXG5cbicgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ1BlcmhhcHMgaXQgc2hvdWxkIGJlIFdhdGNoTGlzdDMgb3IgV2F0Y2hMaXN0
MiBvciBXYXRjaExpc3QxLlxuJyArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnSW4gc2VjdGlvbiAiTUVTU0FHRV9SVUxFUyIsIHRoZSBmb2xsb3dpbmcgZGVmaW5pdGlv
bnMgYXJlIG5vdCB1c2VkIGFuZCBzaG91bGQgYmUgcmVtb3ZlZDogV2F0Y2hMaXN0VW5kZWZpbmVk
XG5cbicgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1BlcmhhcHMg
aXQgc2hvdWxkIGJlIFdhdGNoTGlzdDMgb3IgV2F0Y2hMaXN0MiBvciBXYXRjaExpc3QxLlxuJykK
KyAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlKGxldmVsPWxvZ2dpbmcuSU5GTykgYXMgY2FwdHVy
ZWQ6CisgICAgICAgICAgICBzZWxmLl93YXRjaF9saXN0X3BhcnNlci5wYXJzZSh3YXRjaF9saXN0
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY2FwdHVyZWQucm9vdC5s
b2cuZ2V0dmFsdWUoKSwKKyAgICAgICAgICAgICcnJ0luIHNlY3Rpb24gIkNDX1JVTEVTIiwgdGhl
IGZvbGxvd2luZyBkZWZpbml0aW9ucyBhcmUgbm90IHVzZWQgYW5kIHNob3VsZCBiZSByZW1vdmVk
OiBXYXRjaExpc3RVbmRlZmluZWQKKworUGVyaGFwcyBpdCBzaG91bGQgYmUgV2F0Y2hMaXN0MyBv
ciBXYXRjaExpc3QyIG9yIFdhdGNoTGlzdDEuCitJbiBzZWN0aW9uICJNRVNTQUdFX1JVTEVTIiwg
dGhlIGZvbGxvd2luZyBkZWZpbml0aW9ucyBhcmUgbm90IHVzZWQgYW5kIHNob3VsZCBiZSByZW1v
dmVkOiBXYXRjaExpc3RVbmRlZmluZWQKKworUGVyaGFwcyBpdCBzaG91bGQgYmUgV2F0Y2hMaXN0
MyBvciBXYXRjaExpc3QyIG9yIFdhdGNoTGlzdDEuCisnJycsCisgICAgICAgICkKSW5kZXg6IFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfaW50ZWdy
YXRpb250ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfaW50ZWdyYXRpb250ZXN0LnB5CShyZXZpc2lvbiAyNjU3
NzMpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rl
c3RzX2ludGVncmF0aW9udGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMzIsOSArMzIsOSBAQCBp
bXBvcnQganNvbgogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiAKLWZyb20gd2Via2l0Y29y
ZXB5IGltcG9ydCBTdHJpbmdJTworZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IFN0cmluZ0lPLCBP
dXRwdXRDYXB0dXJlCiAKLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgb3V0cHV0
Y2FwdHVyZSwgcGF0aAorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBwYXRoCiBm
cm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uY3Jhc2hsb2dzX3VuaXR0ZXN0IGltcG9ydCBtYWtl
X21vY2tfY3Jhc2hfcmVwb3J0X2RhcndpbgogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnN5
c3RlbWhvc3QgaW1wb3J0IFN5c3RlbUhvc3QKIGZyb20gd2Via2l0cHkuY29tbW9uLmhvc3QgaW1w
b3J0IEhvc3QKQEAgLTEwMSwxMyArMTAxLDEwIEBAIGRlZiBsb2dnaW5nX3J1bihleHRyYV9hcmdz
PU5vbmUsIHBvcnRfb2IKIGRlZiBydW5fYW5kX2NhcHR1cmUocG9ydF9vYmosIG9wdGlvbnMsIHBh
cnNlZF9hcmdzLCBzaGFyZWRfcG9ydD1UcnVlKToKICAgICBpZiBzaGFyZWRfcG9ydDoKICAgICAg
ICAgcG9ydF9vYmouaG9zdC5wb3J0X2ZhY3RvcnkuZ2V0ID0gbGFtYmRhICphcmdzLCAqKmt3YXJn
czogcG9ydF9vYmoKLSAgICBvYyA9IG91dHB1dGNhcHR1cmUuT3V0cHV0Q2FwdHVyZSgpCi0gICAg
dHJ5OgotICAgICAgICBvYy5jYXB0dXJlX291dHB1dCgpCisgICAgd2l0aCBPdXRwdXRDYXB0dXJl
KCk6CiAgICAgICAgIGxvZ2dpbmdfc3RyZWFtID0gU3RyaW5nSU8oKQogICAgICAgICBydW5fZGV0
YWlscyA9IHJ1bl93ZWJraXRfdGVzdHMucnVuKHBvcnRfb2JqLCBvcHRpb25zLCBwYXJzZWRfYXJn
cywgbG9nZ2luZ19zdHJlYW09bG9nZ2luZ19zdHJlYW0pCi0gICAgZmluYWxseToKLSAgICAgICAg
b2MucmVzdG9yZV9vdXRwdXQoKQorCiAgICAgcmV0dXJuIChydW5fZGV0YWlscywgbG9nZ2luZ19z
dHJlYW0pCiAKIApAQCAtMTM3LDEzICsxMzQsOSBAQCBkZWYgZ2V0X3Rlc3RfcmVzdWx0cyhhcmdz
LCBob3N0PU5vbmUpOgogICAgIGhvc3QgPSBob3N0IG9yIE1vY2tIb3N0KCkKICAgICBwb3J0X29i
aiA9IGhvc3QucG9ydF9mYWN0b3J5LmdldChwb3J0X25hbWU9b3B0aW9ucy5wbGF0Zm9ybSwgb3B0
aW9ucz1vcHRpb25zKQogCi0gICAgb2MgPSBvdXRwdXRjYXB0dXJlLk91dHB1dENhcHR1cmUoKQot
ICAgIG9jLmNhcHR1cmVfb3V0cHV0KCkKLSAgICBsb2dnaW5nX3N0cmVhbSA9IFN0cmluZ0lPKCkK
LSAgICB0cnk6CisgICAgd2l0aCBPdXRwdXRDYXB0dXJlKCk6CisgICAgICAgIGxvZ2dpbmdfc3Ry
ZWFtID0gU3RyaW5nSU8oKQogICAgICAgICBydW5fZGV0YWlscyA9IHJ1bl93ZWJraXRfdGVzdHMu
cnVuKHBvcnRfb2JqLCBvcHRpb25zLCBwYXJzZWRfYXJncywgbG9nZ2luZ19zdHJlYW09bG9nZ2lu
Z19zdHJlYW0pCi0gICAgZmluYWxseToKLSAgICAgICAgb2MucmVzdG9yZV9vdXRwdXQoKQogCiAg
ICAgYWxsX3Jlc3VsdHMgPSBbXQogICAgIGlmIHJ1bl9kZXRhaWxzLmluaXRpYWxfcmVzdWx0czoK
QEAgLTk2NSwxMyArOTU4LDkgQEAgY2xhc3MgUnVuVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSwgU3Ry
ZWFtVAogICAgICAgICBob3N0LmZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKCcvbW9jay1jaGVj
a291dC9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pcGFkL3Rlc3QzLmh0bWwnLCAnJykKICAgICAgICAg
aG9zdC5maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZSgnL01PQ0sgb3V0cHV0IG9mIGNoaWxkIHBy
b2Nlc3MvSW1hZ2VEaWZmJywgJycpCiAKLSAgICAgICAgb2MgPSBvdXRwdXRjYXB0dXJlLk91dHB1
dENhcHR1cmUoKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBvYy5jYXB0dXJlX291dHB1dCgp
CisgICAgICAgIHdpdGggT3V0cHV0Q2FwdHVyZSgpIGFzIGNhcHR1cmVkOgogICAgICAgICAgICAg
bG9nZ2luZyA9IFN0cmluZ0lPKCkKICAgICAgICAgICAgIHJ1bl93ZWJraXRfdGVzdHMucnVuKHBv
cnQsIHJ1bl93ZWJraXRfdGVzdHMucGFyc2VfYXJncyhbJy0tZGVidWctcnd0LWxvZ2dpbmcnLCAn
LW4nLCAnLS1uby1idWlsZCcsICctLXJvb3QnLCAnL2J1aWxkJ10pWzBdLCBbXSwgbG9nZ2luZ19z
dHJlYW09bG9nZ2luZykKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIG91dHB1dCwgZXJy
LCBfID0gb2MucmVzdG9yZV9vdXRwdXQoKQogCiAgICAgICAgIGZvciBsaW5lIGluIGxvZ2dpbmcu
Z2V0dmFsdWUoKToKICAgICAgICAgICAgIGlmIHN0cihEZXZpY2VUeXBlLmZyb21fc3RyaW5nKCdp
UGhvbmUgU0UnKSkgaW4gbGluZToKQEAgLTk4OSwxNyArOTc4LDEzIEBAIGNsYXNzIFJ1blRlc3Qo
dW5pdHRlc3QuVGVzdENhc2UsIFN0cmVhbVQKICAgICAgICAgaG9zdC5maWxlc3lzdGVtLndyaXRl
X3RleHRfZmlsZSgnL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL3Rlc3Qy
Lmh0bWwnLCAnJykKICAgICAgICAgaG9zdC5maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZSgnL21v
Y2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaXBhZC90ZXN0My5odG1sJywgJycpCiAK
LSAgICAgICAgb2MgPSBvdXRwdXRjYXB0dXJlLk91dHB1dENhcHR1cmUoKQotICAgICAgICB0cnk6
Ci0gICAgICAgICAgICBvYy5jYXB0dXJlX291dHB1dCgpCisgICAgICAgIHdpdGggT3V0cHV0Q2Fw
dHVyZSgpIGFzIGNhcHR1cmVkOgogICAgICAgICAgICAgbG9nZ2luZyA9IFN0cmluZ0lPKCkKICAg
ICAgICAgICAgIHJ1bl93ZWJraXRfdGVzdHMuX3ByaW50X2V4cGVjdGF0aW9ucyhwb3J0LCBydW5f
d2Via2l0X3Rlc3RzLnBhcnNlX2FyZ3MoW10pWzBdLCBbXSwgbG9nZ2luZ19zdHJlYW09bG9nZ2lu
ZykKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIG91dHB1dCwgXywgXyA9IG9jLnJlc3Rv
cmVfb3V0cHV0KCkKIAogICAgICAgICBjdXJyZW50X3R5cGUgPSBOb25lCiAgICAgICAgIGJ5X3R5
cGUgPSB7fQotICAgICAgICBmb3IgbGluZSBpbiBvdXRwdXQuc3BsaXRsaW5lcygpOgorICAgICAg
ICBmb3IgbGluZSBpbiBjYXB0dXJlZC5zdGRvdXQuZ2V0dmFsdWUoKS5zcGxpdGxpbmVzKCk6CiAg
ICAgICAgICAgICBpZiBub3QgbGluZSBvciAnc2tpcCcgaW4gbGluZToKICAgICAgICAgICAgICAg
ICBjb250aW51ZQogICAgICAgICAgICAgaWYgJ1Rlc3RzIHRvIHJ1bicgaW4gbGluZToKQEAgLTEw
MjMsMTMgKzEwMDgsOSBAQCBjbGFzcyBSdW5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlLCBTdHJlYW1U
CiAgICAgICAgIGhvc3QuZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUoJy9tb2NrLWNoZWNrb3V0
L0xheW91dFRlc3RzL3BsYXRmb3JtL2lwaG9uZS90ZXN0NC5odG1sJywgJycpCiAgICAgICAgIGhv
c3QuZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUoJy9NT0NLIG91dHB1dCBvZiBjaGlsZCBwcm9j
ZXNzL0ltYWdlRGlmZicsICcnKQogCi0gICAgICAgIG9jID0gb3V0cHV0Y2FwdHVyZS5PdXRwdXRD
YXB0dXJlKCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgb2MuY2FwdHVyZV9vdXRwdXQoKQor
ICAgICAgICB3aXRoIE91dHB1dENhcHR1cmUoKToKICAgICAgICAgICAgIGxvZ2dpbmcgPSBTdHJp
bmdJTygpCiAgICAgICAgICAgICBydW5fd2Via2l0X3Rlc3RzLnJ1bihwb3J0LCBydW5fd2Via2l0
X3Rlc3RzLnBhcnNlX2FyZ3MoWyctLWRlYnVnLXJ3dC1sb2dnaW5nJywgJy1uJywgJy0tbm8tYnVp
bGQnLCAnLS1yb290JywgJy9idWlsZCddKVswXSwgW10sIGxvZ2dpbmdfc3RyZWFtPWxvZ2dpbmcp
Ci0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBvdXRwdXQsIGVyciwgXyA9IG9jLnJlc3Rv
cmVfb3V0cHV0KCkKIAogICAgICAgICBmb3IgbGluZSBpbiBsb2dnaW5nLmdldHZhbHVlKCk6CiAg
ICAgICAgICAgICBpZiBzdHIoRGV2aWNlVHlwZS5mcm9tX3N0cmluZygnaVBhZCAoNXRoIGdlbmVy
YXRpb24pJykpIGluIGxpbmU6CkBAIC0xMDQ0LDE3ICsxMDI1LDEzIEBAIGNsYXNzIFJ1blRlc3Qo
dW5pdHRlc3QuVGVzdENhc2UsIFN0cmVhbVQKICAgICAgICAgaG9zdC5maWxlc3lzdGVtLndyaXRl
X3RleHRfZmlsZSgnL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaXBhZC90ZXN0
My5odG1sJywgJycpCiAgICAgICAgIGhvc3QuZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUoJy9t
b2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL3BsYXRmb3JtL2lwaG9uZS90ZXN0NC5odG1sJywgJycp
CiAKLSAgICAgICAgb2MgPSBvdXRwdXRjYXB0dXJlLk91dHB1dENhcHR1cmUoKQotICAgICAgICB0
cnk6Ci0gICAgICAgICAgICBvYy5jYXB0dXJlX291dHB1dCgpCisgICAgICAgIHdpdGggT3V0cHV0
Q2FwdHVyZSgpIGFzIGNhcHR1cmVkOgogICAgICAgICAgICAgbG9nZ2luZyA9IFN0cmluZ0lPKCkK
ICAgICAgICAgICAgIHJ1bl93ZWJraXRfdGVzdHMuX3ByaW50X2V4cGVjdGF0aW9ucyhwb3J0LCBy
dW5fd2Via2l0X3Rlc3RzLnBhcnNlX2FyZ3MoW10pWzBdLCBbXSwgbG9nZ2luZ19zdHJlYW09bG9n
Z2luZykKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIG91dHB1dCwgXywgXyA9IG9jLnJl
c3RvcmVfb3V0cHV0KCkKIAogICAgICAgICBjdXJyZW50X3R5cGUgPSBOb25lCiAgICAgICAgIGJ5
X3R5cGUgPSB7fQotICAgICAgICBmb3IgbGluZSBpbiBvdXRwdXQuc3BsaXRsaW5lcygpOgorICAg
ICAgICBmb3IgbGluZSBpbiBjYXB0dXJlZC5zdGRvdXQuZ2V0dmFsdWUoKS5zcGxpdGxpbmVzKCk6
CiAgICAgICAgICAgICBpZiBub3QgbGluZSBvciAnc2tpcCcgaW4gbGluZToKICAgICAgICAgICAg
ICAgICBjb250aW51ZQogICAgICAgICAgICAgaWYgJ1Rlc3RzIHRvIHJ1bicgaW4gbGluZToKSW5k
ZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X2V4cGVj
dGF0aW9uc191bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHkJKHJldmlz
aW9uIDI2NTc3MykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVs
cy90ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMzIsMTIg
KzMyLDEzIEBAIGltcG9ydCB1bml0dGVzdAogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgT3JkZXJl
ZERpY3QKIAogZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdF9tb2NrIGltcG9ydCBNb2NrSG9zdAot
ZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0IE91dHB1dENh
cHR1cmUKIAogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzLnRlc3RfY29uZmlndXJh
dGlvbiBpbXBvcnQgKgogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzLnRlc3RfZXhw
ZWN0YXRpb25zIGltcG9ydCAqCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMudGVz
dF9jb25maWd1cmF0aW9uIGltcG9ydCAqCiAKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBPdXRw
dXRDYXB0dXJlCisKIAogY2xhc3MgQmFzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIyBOb3Rl
IHRoYXQgYWxsIG9mIHRoZXNlIHRlc3RzIGFyZSB3cml0dGVuIGFzc3VtaW5nIHRoZSBjb25maWd1
cmF0aW9uCkBAIC0xOTYsMTMgKzE5Nyw5IEBAIGNsYXNzIE1pc2NUZXN0cyhCYXNlKToKICAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGUpLCB3YXJuaW5ncykKIAogICAgIGRlZiB0ZXN0
X3BhcnNlX3dhcm5pbmdzX2FyZV9sb2dnZWRfaWZfbm90X2luX2xpbnRfbW9kZShzZWxmKToKLSAg
ICAgICAgb2MgPSBPdXRwdXRDYXB0dXJlKCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgb2Mu
Y2FwdHVyZV9vdXRwdXQoKQorICAgICAgICB3aXRoIE91dHB1dENhcHR1cmUoKSBhcyBjYXB0dXJl
ZDoKICAgICAgICAgICAgIHNlbGYucGFyc2VfZXhwKCctLSB0aGlzIHNob3VsZCBiZSBhIHN5bnRh
eCBlcnJvcicsIGlzX2xpbnRfbW9kZT1GYWxzZSkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAg
ICAgIF8sIF8sIGxvZ3MgPSBvYy5yZXN0b3JlX291dHB1dCgpCi0gICAgICAgICAgICBzZWxmLmFz
c2VydE5vdEVxdWFscyhsb2dzLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbHMoY2Fw
dHVyZWQucm9vdC5sb2cuZ2V0dmFsdWUoKSwgJycpCiAKICAgICBkZWYgdGVzdF9lcnJvcl9vbl9k
aWZmZXJlbnRfcGxhdGZvcm0oc2VsZik6CiAgICAgICAgICMgcGFyc2VfZXhwIHVzZXMgYSBXaW5k
b3dzIHBvcnQuIEFzc2VydCBlcnJvcnMgb24gTWFjIHNob3cgdXAgaW4gbGludCBtb2RlLgpAQCAt
MzMwLDEzICszMjcsMTQgQEAgY2xhc3MgU2tpcHBlZFRlc3RzKEJhc2UpOgogICAgICAgICBleHBl
Y3RhdGlvbnNfZGljdCA9IE9yZGVyZWREaWN0KCkKICAgICAgICAgZXhwZWN0YXRpb25zX2RpY3Rb
J2V4cGVjdGF0aW9ucyddID0gJycKICAgICAgICAgcG9ydC5leHBlY3RhdGlvbnNfZGljdCA9IGxh
bWJkYSAqKmt3YXJnczogZXhwZWN0YXRpb25zX2RpY3QKLSAgICAgICAgcG9ydC5za2lwcGVkX2xh
eW91dF90ZXN0cyA9IGxhbWJkYSB0ZXN0cywgKiprd2FyZ3M6IHNldChbJ2Zvby9iYXIvYmF6Lmh0
bWwnXSkKLSAgICAgICAgY2FwdHVyZSA9IE91dHB1dENhcHR1cmUoKQotICAgICAgICBjYXB0dXJl
LmNhcHR1cmVfb3V0cHV0KCkKLSAgICAgICAgZXhwID0gVGVzdEV4cGVjdGF0aW9ucyhwb3J0KQot
ICAgICAgICBleHAucGFyc2VfYWxsX2V4cGVjdGF0aW9ucygpCi0gICAgICAgIF8sIF8sIGxvZ3Mg
PSBjYXB0dXJlLnJlc3RvcmVfb3V0cHV0KCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnVGhl
IGZvbGxvd2luZyB0ZXN0IGZvby9iYXIvYmF6Lmh0bWwgZnJvbSB0aGUgU2tpcHBlZCBsaXN0IGRv
ZXNuXCd0IGV4aXN0XG4nLCBsb2dzKQorICAgICAgICBwb3J0LnNraXBwZWRfbGF5b3V0X3Rlc3Rz
ID0gbGFtYmRhIHRlc3RzLCAqKmt3YXJnczogeydmb28vYmFyL2Jhei5odG1sJ30KKyAgICAgICAg
d2l0aCBPdXRwdXRDYXB0dXJlKCkgYXMgY2FwdHVyZWQ6CisgICAgICAgICAgICBleHAgPSBUZXN0
RXhwZWN0YXRpb25zKHBvcnQpCisgICAgICAgICAgICBleHAucGFyc2VfYWxsX2V4cGVjdGF0aW9u
cygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBjYXB0dXJlZC5yb290
LmxvZy5nZXR2YWx1ZSgpLAorICAgICAgICAgICAgJ1RoZSBmb2xsb3dpbmcgdGVzdCBmb28vYmFy
L2Jhei5odG1sIGZyb20gdGhlIFNraXBwZWQgbGlzdCBkb2VzblwndCBleGlzdFxuJywKKyAgICAg
ICAgKQogCiAKIGNsYXNzIEV4cGVjdGF0aW9uU3ludGF4VGVzdHMoQmFzZSk6CkluZGV4OiBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9zZXJ2ZXJzL2FwYWNoZV9odHRwX3NlcnZl
cl91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9zZXJ2ZXJzL2FwYWNoZV9odHRwX3NlcnZlcl91bml0dGVzdC5weQkocmV2aXNpb24g
MjY1NzczKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvc2VydmVycy9h
cGFjaGVfaHR0cF9zZXJ2ZXJfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw1
IEBACiAjIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
IwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMzAsMTEgKzMxLDEyIEBAIGltcG9y
dCBzeXMKIGltcG9ydCB1bml0dGVzdAogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhl
Y3V0aXZlX21vY2sgaW1wb3J0IE1vY2tFeGVjdXRpdmUKLWZyb20gd2Via2l0cHkuY29tbW9uLnN5
c3RlbS5vdXRwdXRjYXB0dXJlIGltcG9ydCBPdXRwdXRDYXB0dXJlCiBmcm9tIHdlYmtpdHB5LmNv
bW1vbi5ob3N0X21vY2sgaW1wb3J0IE1vY2tIb3N0CiBmcm9tIHdlYmtpdHB5LnBvcnQgaW1wb3J0
IHRlc3QKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnNlcnZlcnMuYXBhY2hlX2h0dHBfc2Vy
dmVyIGltcG9ydCBMYXlvdXRUZXN0QXBhY2hlSHR0cGQKIAorZnJvbSB3ZWJraXRjb3JlcHkgaW1w
b3J0IE91dHB1dENhcHR1cmUKKwogCiBjbGFzcyBUZXN0TGF5b3V0VGVzdEFwYWNoZUh0dHBkKHVu
aXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9zdGFydF9jbWQoc2VsZik6CkBAIC02MCwx
MSArNjIsOCBAQCBjbGFzcyBUZXN0TGF5b3V0VGVzdEFwYWNoZUh0dHBkKHVuaXR0ZXN0CiAKICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJ2ZXIucG9ydHNfdG9fZm9yd2FyZCgpLCBbODAwMCwg
ODA4MCwgODQ0M10pCiAKLSAgICAgICAgb2MgPSBPdXRwdXRDYXB0dXJlKCkKLSAgICAgICAgdHJ5
OgotICAgICAgICAgICAgb2MuY2FwdHVyZV9vdXRwdXQoKQorICAgICAgICB3aXRoIE91dHB1dENh
cHR1cmUoKToKICAgICAgICAgICAgIHNlcnZlci5zdGFydCgpCiAgICAgICAgICAgICBzZXJ2ZXIu
c3RvcCgpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBfLCBfLCBsb2dzID0gb2MucmVz
dG9yZV9vdXRwdXQoKQorCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShob3N0LmZpbGVzeXN0ZW0u
ZXhpc3RzKCIvbW9jay9vdXRwdXRfZGlyL2h0dHBkLmNvbmYiKSkKSW5kZXg6IFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RfdW5pdHRlc3QucHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVz
dF91bml0dGVzdC5weQkocmV2aXNpb24gMjY1NzczKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdF91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpA
QCAtMSw0ICsxLDUgQEAKICMgQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0yNiwxMCArMjcs
MTAgQEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKK2ltcG9ydCBsb2dnaW5nCiBp
bXBvcnQgdW5pdHRlc3QKIAogZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdF9tb2NrIGltcG9ydCBN
b2NrSG9zdAotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0
IE91dHB1dENhcHR1cmUKIGZyb20gd2Via2l0cHkucG9ydC5kcml2ZXIgaW1wb3J0IERyaXZlck91
dHB1dAogZnJvbSB3ZWJraXRweS5wb3J0LnRlc3QgaW1wb3J0IFRlc3RQb3J0CiBmcm9tIHdlYmtp
dHB5LnBlcmZvcm1hbmNlX3Rlc3RzLnBlcmZ0ZXN0IGltcG9ydCBQZXJmVGVzdApAQCAtMzcsNiAr
MzgsOCBAQCBmcm9tIHdlYmtpdHB5LnBlcmZvcm1hbmNlX3Rlc3RzLnBlcmZ0ZXN0CiBmcm9tIHdl
YmtpdHB5LnBlcmZvcm1hbmNlX3Rlc3RzLnBlcmZ0ZXN0IGltcG9ydCBQZXJmVGVzdEZhY3RvcnkK
IGZyb20gd2Via2l0cHkucGVyZm9ybWFuY2VfdGVzdHMucGVyZnRlc3QgaW1wb3J0IFNpbmdsZVBy
b2Nlc3NQZXJmVGVzdAogCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQor
CiAKIGNsYXNzIE1vY2tQb3J0KFRlc3RQb3J0KToKICAgICBkZWYgX19pbml0X18oc2VsZiwgY3Vz
dG9tX3J1bl90ZXN0PU5vbmUpOgpAQCAtOTgsMTYgKzEwMSwxMyBAQCBjbGFzcyBUZXN0UGVyZlRl
c3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBvdXRwdXQgPSBEcml2ZXJPdXRwdXQoIiIi
CiA6VGltZSAtPiBbMTA4MCwgMTEyMCwgMTA5NSwgMTEwMSwgMTEwNF0gbXMKICIiIiwgaW1hZ2U9
Tm9uZSwgaW1hZ2VfaGFzaD1Ob25lLCBhdWRpbz1Ob25lKQotICAgICAgICBvdXRwdXRfY2FwdHVy
ZSA9IE91dHB1dENhcHR1cmUoKQotICAgICAgICBvdXRwdXRfY2FwdHVyZS5jYXB0dXJlX291dHB1
dCgpCi0gICAgICAgIHRyeToKKyAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlKGxldmVsPWxvZ2dp
bmcuSU5GTykgYXMgY2FwdHVyZWQ6CiAgICAgICAgICAgICB0ZXN0ID0gUGVyZlRlc3QoTW9ja1Bv
cnQoKSwgJ3NvbWUtdGVzdCcsICcvcGF0aC9zb21lLWRpci9zb21lLXRlc3QnKQogICAgICAgICAg
ICAgc2VsZi5fYXNzZXJ0X3Jlc3VsdHNfYXJlX2NvcnJlY3QodGVzdCwgb3V0cHV0KQotICAgICAg
ICBmaW5hbGx5OgotICAgICAgICAgICAgYWN0dWFsX3N0ZG91dCwgYWN0dWFsX3N0ZGVyciwgYWN0
dWFsX2xvZ3MgPSBvdXRwdXRfY2FwdHVyZS5yZXN0b3JlX291dHB1dCgpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoYWN0dWFsX3N0ZG91dCwgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
YWN0dWFsX3N0ZGVyciwgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsX2xvZ3Ms
ICIiIlJFU1VMVCBzb21lLXRlc3Q6IFRpbWU9IDExMDAuMCBtcworCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoY2FwdHVyZWQuc3Rkb3V0LmdldHZhbHVlKCksICcnKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGNhcHR1cmVkLnN0ZGVyci5nZXR2YWx1ZSgpLCAnJykKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChjYXB0dXJlZC5yb290LmxvZy5nZXR2YWx1ZSgpLCAiIiJSRVNVTFQgc29tZS10
ZXN0OiBUaW1lPSAxMTAwLjAgbXMKIG1lZGlhbj0gMTEwMS4wIG1zLCBzdGRldj0gMTMuMzE0MDIx
MTAxNiBtcywgbWluPSAxMDgwLjAgbXMsIG1heD0gMTEyMC4wIG1zCiAiIiIpCiAKQEAgLTExNiwx
NiArMTE2LDEzIEBAIG1lZGlhbj0gMTEwMS4wIG1zLCBzdGRldj0gMTMuMzE0MDIxMTAxNiAKIG1h
aW4gZnJhbWUgLSBoYXMgMSBvbnVubG9hZCBoYW5kbGVyKHMpCiA6VGltZSAtPiBbMTA4MCwgMTEy
MCwgMTA5NSwgMTEwMSwgMTEwNF0gbXMKICIiIiwgaW1hZ2U9Tm9uZSwgaW1hZ2VfaGFzaD1Ob25l
LCBhdWRpbz1Ob25lKQotICAgICAgICBvdXRwdXRfY2FwdHVyZSA9IE91dHB1dENhcHR1cmUoKQot
ICAgICAgICBvdXRwdXRfY2FwdHVyZS5jYXB0dXJlX291dHB1dCgpCi0gICAgICAgIHRyeToKKyAg
ICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlKGxldmVsPWxvZ2dpbmcuSU5GTykgYXMgY2FwdHVyZWQ6
CiAgICAgICAgICAgICB0ZXN0ID0gUGVyZlRlc3QoTW9ja1BvcnQoKSwgJ3NvbWUtdGVzdCcsICcv
cGF0aC9zb21lLWRpci9zb21lLXRlc3QnKQogICAgICAgICAgICAgc2VsZi5fYXNzZXJ0X3Jlc3Vs
dHNfYXJlX2NvcnJlY3QodGVzdCwgb3V0cHV0KQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAg
ICAgYWN0dWFsX3N0ZG91dCwgYWN0dWFsX3N0ZGVyciwgYWN0dWFsX2xvZ3MgPSBvdXRwdXRfY2Fw
dHVyZS5yZXN0b3JlX291dHB1dCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsX3N0
ZG91dCwgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsX3N0ZGVyciwgJycpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsX2xvZ3MsICIiIlJFU1VMVCBzb21lLXRlc3Q6
IFRpbWU9IDExMDAuMCBtcworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQuc3Rk
b3V0LmdldHZhbHVlKCksICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhcHR1cmVkLnN0
ZGVyci5nZXR2YWx1ZSgpLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYXB0dXJlZC5y
b290LmxvZy5nZXR2YWx1ZSgpLCAiIiJSRVNVTFQgc29tZS10ZXN0OiBUaW1lPSAxMTAwLjAgbXMK
IG1lZGlhbj0gMTEwMS4wIG1zLCBzdGRldj0gMTMuMzE0MDIxMTAxNiBtcywgbWluPSAxMDgwLjAg
bXMsIG1heD0gMTEyMC4wIG1zCiAiIiIpCiAKQEAgLTE0MiwzMiArMTM5LDI2IEBAIEphbiAyMiAx
NDowOToyNCAgV2ViS2l0VGVzdFJ1bm5lclsxMjk2XSAKICAgICAgICAgICAgIGRlZiBuYW1lKHNl
bGYpOgogICAgICAgICAgICAgICAgIHJldHVybiAibWFjLXNpZXJyYSIKIAotICAgICAgICBvdXRw
dXRfY2FwdHVyZSA9IE91dHB1dENhcHR1cmUoKQotICAgICAgICBvdXRwdXRfY2FwdHVyZS5jYXB0
dXJlX291dHB1dCgpCi0gICAgICAgIHRyeToKKyAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlKGxl
dmVsPWxvZ2dpbmcuSU5GTykgYXMgY2FwdHVyZWQ6CiAgICAgICAgICAgICB0ZXN0ID0gUGVyZlRl
c3QoTW9ja1BvcnRXaXRoU2llcnJhTmFtZSgpLCAnc29tZS10ZXN0JywgJy9wYXRoL3NvbWUtZGly
L3NvbWUtdGVzdCcpCiAgICAgICAgICAgICBzZWxmLl9hc3NlcnRfcmVzdWx0c19hcmVfY29ycmVj
dCh0ZXN0LCBvdXRwdXQpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBhY3R1YWxfc3Rk
b3V0LCBhY3R1YWxfc3RkZXJyLCBhY3R1YWxfbG9ncyA9IG91dHB1dF9jYXB0dXJlLnJlc3RvcmVf
b3V0cHV0KCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWxfc3Rkb3V0LCAnJykKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWxfc3RkZXJyLCAnJykKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChhY3R1YWxfbG9ncywgIiIiUkVTVUxUIHNvbWUtdGVzdDogVGltZT0gMTEwMC4w
IG1zCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYXB0dXJlZC5zdGRvdXQuZ2V0dmFsdWUo
KSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQuc3RkZXJyLmdldHZhbHVl
KCksICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhcHR1cmVkLnJvb3QubG9nLmdldHZh
bHVlKCksICIiIlJFU1VMVCBzb21lLXRlc3Q6IFRpbWU9IDExMDAuMCBtcwogbWVkaWFuPSAxMTAx
LjAgbXMsIHN0ZGV2PSAxMy4zMTQwMjExMDE2IG1zLCBtaW49IDEwODAuMCBtcywgbWF4PSAxMTIw
LjAgbXMKICIiIikKIAogICAgIGRlZiBfYXNzZXJ0X2ZhaWxlZF9vbl9saW5lKHNlbGYsIG91dHB1
dF90ZXh0LCBleHBlY3RlZF9sb2cpOgogICAgICAgICBvdXRwdXQgPSBEcml2ZXJPdXRwdXQob3V0
cHV0X3RleHQsIGltYWdlPU5vbmUsIGltYWdlX2hhc2g9Tm9uZSwgYXVkaW89Tm9uZSkKLSAgICAg
ICAgb3V0cHV0X2NhcHR1cmUgPSBPdXRwdXRDYXB0dXJlKCkKLSAgICAgICAgb3V0cHV0X2NhcHR1
cmUuY2FwdHVyZV9vdXRwdXQoKQotICAgICAgICB0cnk6CisgICAgICAgIHdpdGggT3V0cHV0Q2Fw
dHVyZShsZXZlbD1sb2dnaW5nLklORk8pIGFzIGNhcHR1cmVkOgogICAgICAgICAgICAgdGVzdCA9
IFBlcmZUZXN0KE1vY2tQb3J0KCksICdzb21lLXRlc3QnLCAnL3BhdGgvc29tZS1kaXIvc29tZS10
ZXN0JykKICAgICAgICAgICAgIHRlc3QucnVuX3NpbmdsZSA9IGxhbWJkYSBkcml2ZXIsIHBhdGgs
IHRpbWVfb3V0X21zOiBvdXRwdXQKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UodGVzdC5f
cnVuX3dpdGhfZHJpdmVyKE5vbmUsIE5vbmUpKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAg
ICAgYWN0dWFsX3N0ZG91dCwgYWN0dWFsX3N0ZGVyciwgYWN0dWFsX2xvZ3MgPSBvdXRwdXRfY2Fw
dHVyZS5yZXN0b3JlX291dHB1dCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsX3N0
ZG91dCwgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsX3N0ZGVyciwgJycpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsX2xvZ3MsIGV4cGVjdGVkX2xvZykKKworICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGNhcHR1cmVkLnN0ZG91dC5nZXR2YWx1ZSgpLCAnJykKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYXB0dXJlZC5zdGRlcnIuZ2V0dmFsdWUoKSwgJycpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQucm9vdC5sb2cuZ2V0dmFsdWUoKSwgZXhw
ZWN0ZWRfbG9nKQogCiAgICAgZGVmIHRlc3RfcGFyc2Vfb3V0cHV0X3dpdGhfcnVubmluZ19maXZl
X3RpbWVzKHNlbGYpOgogICAgICAgICBzZWxmLl9hc3NlcnRfZmFpbGVkX29uX2xpbmUoIiIiCkBA
IC0yMTMsMTQgKzIwNCwxMCBAQCBEb2pvIC0gZGl2IH4gZGl2OlRpbWUgLT4gWzY2NzMsIDY2NzUs
IDY3CiAKIDpUaW1lIC0+IFsxMDgwLCAxMTIwLCAxMDk1LCAxMTAxLCAxMTA0XSBtcwogIiIiLCBp
bWFnZT1Ob25lLCBpbWFnZV9oYXNoPU5vbmUsIGF1ZGlvPU5vbmUpCi0gICAgICAgIG91dHB1dF9j
YXB0dXJlID0gT3V0cHV0Q2FwdHVyZSgpCi0gICAgICAgIG91dHB1dF9jYXB0dXJlLmNhcHR1cmVf
b3V0cHV0KCkKLSAgICAgICAgdHJ5OgorICAgICAgICB3aXRoIE91dHB1dENhcHR1cmUobGV2ZWw9
bG9nZ2luZy5JTkZPKSBhcyBjYXB0dXJlZDoKICAgICAgICAgICAgIHRlc3QgPSBQZXJmVGVzdChN
b2NrUG9ydCgpLCAnc29tZS1kaXIvc29tZS10ZXN0JywgJy9wYXRoL3NvbWUtZGlyL3NvbWUtdGVz
dCcpCiAgICAgICAgICAgICB0ZXN0LnJ1bl9zaW5nbGUgPSBsYW1iZGEgZHJpdmVyLCBwYXRoLCB0
aW1lX291dF9tczogb3V0cHV0CiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUodGVzdC5ydW4o
MTApKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgYWN0dWFsX3N0ZG91dCwgYWN0dWFs
X3N0ZGVyciwgYWN0dWFsX2xvZ3MgPSBvdXRwdXRfY2FwdHVyZS5yZXN0b3JlX291dHB1dCgpCiAK
ICAgICAgICAgc3VidGVzdHMgPSB0ZXN0Ll9tZXRyaWNzCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwobGlzdChtYXAobGFtYmRhIHRlc3Q6IHRlc3RbJ25hbWUnXSwgc3VidGVzdHMpKSwgWydzb21l
IHRlc3QnLCAnc29tZSBvdGhlciB0ZXN0ID0gZWxzZScsCkBAIC0yNDQsOSArMjMxLDkgQEAgRG9q
byAtIGRpdiB+IGRpdjpUaW1lIC0+IFs2NjczLCA2Njc1LCA2NwogICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKG1haW5fbWV0cmljc1swXS5wYXRoKCksIFsnc29tZS1kaXInLCAnc29tZS10ZXN0J10p
CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbl9tZXRyaWNzWzBdLmZsYXR0ZW5lZF9pdGVy
YXRpb25fdmFsdWVzKCksIFsxMDgwLCAxMTIwLCAxMDk1LCAxMTAxLCAxMTA0XSAqIDQpCiAKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWxfc3Rkb3V0LCAnJykKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChhY3R1YWxfc3RkZXJyLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChh
Y3R1YWxfbG9ncywgIiIiREVTQ1JJUFRJT046IHRoaXMgaXMgYSB0ZXN0IGRlc2NyaXB0aW9uLgor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhcHR1cmVkLnN0ZG91dC5nZXR2YWx1ZSgpLCAnJykK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYXB0dXJlZC5zdGRlcnIuZ2V0dmFsdWUoKSwgJycp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQucm9vdC5sb2cuZ2V0dmFsdWUoKSwg
IiIiREVTQ1JJUFRJT046IHRoaXMgaXMgYSB0ZXN0IGRlc2NyaXB0aW9uLgogUkVTVUxUIHNvbWUt
ZGlyOiBzb21lLXRlc3Q6IFRpbWU9IDExMDAuMCBtcwogbWVkaWFuPSAxMTAxLjAgbXMsIHN0ZGV2
PSAxMy4zMTQwMjExMDE2IG1zLCBtaW49IDEwODAuMCBtcywgbWF4PSAxMTIwLjAgbXMKICIiIikK
QEAgLTI1OCwxNCArMjQ1LDEwIEBAIEVtYmVySlMtVG9kb01WQzpUaW1lOlRvdGFsIC0+IFsxNDYy
LCAxNDcKIEVtYmVySlMtVG9kb01WQy9hOlRpbWUgLT4gWzEsIDIsIDMsIDQsIDVdIG1zCiBCYWNr
Ym9uZUpTLVRvZG9NVkM6VGltZSAtPiBbODYyLCA4NTUsIDg1NSwgODQ5LCA4NTRdIG1zCiAiIiIs
IGltYWdlPU5vbmUsIGltYWdlX2hhc2g9Tm9uZSwgYXVkaW89Tm9uZSkKLSAgICAgICAgb3V0cHV0
X2NhcHR1cmUgPSBPdXRwdXRDYXB0dXJlKCkKLSAgICAgICAgb3V0cHV0X2NhcHR1cmUuY2FwdHVy
ZV9vdXRwdXQoKQotICAgICAgICB0cnk6CisgICAgICAgIHdpdGggT3V0cHV0Q2FwdHVyZShsZXZl
bD1sb2dnaW5nLklORk8pIGFzIGNhcHR1cmVkOgogICAgICAgICAgICAgdGVzdCA9IFBlcmZUZXN0
KE1vY2tQb3J0KCksICdzb21lLWRpci9zb21lLXRlc3QnLCAnL3BhdGgvc29tZS1kaXIvc29tZS10
ZXN0JykKICAgICAgICAgICAgIHRlc3QucnVuX3NpbmdsZSA9IGxhbWJkYSBkcml2ZXIsIHBhdGgs
IHRpbWVfb3V0X21zOiBvdXRwdXQKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0ZXN0LnJ1
bigxMCkpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBhY3R1YWxfc3Rkb3V0LCBhY3R1
YWxfc3RkZXJyLCBhY3R1YWxfbG9ncyA9IG91dHB1dF9jYXB0dXJlLnJlc3RvcmVfb3V0cHV0KCkK
IAogICAgICAgICBzdWJ0ZXN0cyA9IHRlc3QuX21ldHJpY3MKICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChsaXN0KG1hcChsYW1iZGEgdGVzdDogdGVzdFsnbmFtZSddLCBzdWJ0ZXN0cykpLCBbTm9u
ZSwgJ0VtYmVySlMtVG9kb01WQycsICdFbWJlckpTLVRvZG9NVkMvYScsICdCYWNrYm9uZUpTLVRv
ZG9NVkMnXSkKQEAgLTI5NCw5ICsyNzcsOSBAQCBCYWNrYm9uZUpTLVRvZG9NVkM6VGltZSAtPiBb
ODYyLCA4NTUsIDg1CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29tZV90ZXN0X21ldHJpY3Nb
MF0ucGF0aCgpLCBbJ3NvbWUtZGlyJywgJ3NvbWUtdGVzdCcsICdCYWNrYm9uZUpTLVRvZG9NVkMn
XSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb21lX3Rlc3RfbWV0cmljc1swXS5mbGF0dGVu
ZWRfaXRlcmF0aW9uX3ZhbHVlcygpLCBbODYyLCA4NTUsIDg1NSwgODQ5LCA4NTRdICogNCkKIAot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbF9zdGRvdXQsICcnKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGFjdHVhbF9zdGRlcnIsICcnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGFjdHVhbF9sb2dzLCAiIiJSRVNVTFQgc29tZS1kaXI6IHNvbWUtdGVzdDogVGltZT0gMjMyNC42
IG1zCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQuc3Rkb3V0LmdldHZhbHVlKCks
ICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhcHR1cmVkLnN0ZGVyci5nZXR2YWx1ZSgp
LCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYXB0dXJlZC5yb290LmxvZy5nZXR2YWx1
ZSgpLCAiIiJSRVNVTFQgc29tZS1kaXI6IHNvbWUtdGVzdDogVGltZT0gMjMyNC42IG1zCiBtZWRp
YW49IDIzMjQuMCBtcywgc3RkZXY9IDEyLjEzMjYwMDcxMDUgbXMsIG1pbj0gMjMxMi4wIG1zLCBt
YXg9IDIzNDUuMCBtcwogIiIiKQogCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZv
cm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0c3J1bm5lcl9pbnRlZ3JhdGlvbnRlc3QucHkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNy
dW5uZXJfaW50ZWdyYXRpb250ZXN0LnB5CShyZXZpc2lvbiAyNjU3NzMpCisrKyBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0c3J1bm5lcl9pbnRlZ3JhdGlv
bnRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw1IEBACiAjIENvcHlyaWdodCAoQykg
MjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQpAQCAtMzAsMTYgKzMxLDE4IEBACiAKIGltcG9ydCBkYXRldGltZQogaW1wb3J0
IGpzb24KK2ltcG9ydCBsb2dnaW5nCiBpbXBvcnQgcmUKIGltcG9ydCB1bml0dGVzdAogCiBmcm9t
IHdlYmtpdHB5LmNvbW1vbi5ob3N0X21vY2sgaW1wb3J0IE1vY2tIb3N0Ci1mcm9tIHdlYmtpdHB5
LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQogZnJvbSB3
ZWJraXRweS5wb3J0LmRyaXZlciBpbXBvcnQgRHJpdmVyT3V0cHV0CiBmcm9tIHdlYmtpdHB5LnBv
cnQudGVzdCBpbXBvcnQgVGVzdFBvcnQKIGZyb20gd2Via2l0cHkucGVyZm9ybWFuY2VfdGVzdHMu
cGVyZnRlc3QgaW1wb3J0IFBlcmZUZXN0CiBmcm9tIHdlYmtpdHB5LnBlcmZvcm1hbmNlX3Rlc3Rz
LnBlcmZ0ZXN0c3J1bm5lciBpbXBvcnQgUGVyZlRlc3RzUnVubmVyCiAKK2Zyb20gd2Via2l0Y29y
ZXB5IGltcG9ydCBPdXRwdXRDYXB0dXJlCisKIAogY2xhc3MgRXZlbnRUYXJnZXRXcmFwcGVyVGVz
dERhdGE6CiAgICAgdGV4dCA9ICIiIjpUaW1lIC0+IFsxNDg2LCAxNDcxLCAxNTEwLCAxNTA1LCAx
NDc4LCAxNDkwXSBtcwpAQCAtMjI3LDI4ICsyMzAsMjggQEAgY2xhc3MgTWFpblRlc3QodW5pdHRl
c3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X3J1bl90ZXN0X3NldF9mb3JfcGFyc2VyX3Rlc3Rz
KHNlbGYpOgogICAgICAgICBydW5uZXIsIHBvcnQgPSBzZWxmLmNyZWF0ZV9ydW5uZXIoKQogICAg
ICAgICB0ZXN0cyA9IHNlbGYuX3Rlc3RzX2Zvcl9ydW5uZXIocnVubmVyLCBbJ0JpbmRpbmdzL2V2
ZW50LXRhcmdldC13cmFwcGVyLmh0bWwnLCAnUGFyc2VyL3NvbWUtcGFyc2VyLmh0bWwnXSkKLSAg
ICAgICAgb3V0cHV0ID0gT3V0cHV0Q2FwdHVyZSgpCi0gICAgICAgIG91dHB1dC5jYXB0dXJlX291
dHB1dCgpCi0gICAgICAgIHRyeToKKyAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlKGxldmVsPWxv
Z2dpbmcuSU5GTykgYXMgY2FwdHVyZXI6CiAgICAgICAgICAgICB1bmV4cGVjdGVkX3Jlc3VsdF9j
b3VudCA9IHJ1bm5lci5fcnVuX3Rlc3RzX3NldCh0ZXN0cykKLSAgICAgICAgZmluYWxseToKLSAg
ICAgICAgICAgIHN0ZG91dCwgc3RkZXJyLCBsb2cgPSBvdXRwdXQucmVzdG9yZV9vdXRwdXQoKQor
CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodW5leHBlY3RlZF9yZXN1bHRfY291bnQsIDApCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fbm9ybWFsaXplX291dHB1dChsb2cpLCBFdmVu
dFRhcmdldFdyYXBwZXJUZXN0RGF0YS5vdXRwdXQgKyBTb21lUGFyc2VyVGVzdERhdGEub3V0cHV0
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc2VsZi5fbm9ybWFsaXpl
X291dHB1dChjYXB0dXJlci5yb290LmxvZy5nZXR2YWx1ZSgpKSwKKyAgICAgICAgICAgIEV2ZW50
VGFyZ2V0V3JhcHBlclRlc3REYXRhLm91dHB1dCArIFNvbWVQYXJzZXJUZXN0RGF0YS5vdXRwdXQs
CisgICAgICAgICkKIAogICAgIGRlZiB0ZXN0X3J1bl9tZW1vcnlfdGVzdChzZWxmKToKICAgICAg
ICAgcnVubmVyLCBwb3J0ID0gc2VsZi5jcmVhdGVfcnVubmVyX2FuZF9zZXR1cF9yZXN1bHRzX3Rl
bXBsYXRlKCkKICAgICAgICAgcnVubmVyLl90aW1lc3RhbXAgPSAxMjM0NTY3ODkKICAgICAgICAg
cG9ydC5ob3N0LmZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKHJ1bm5lci5fYmFzZV9wYXRoICsg
Jy9QYXJzZXIvbWVtb3J5LXRlc3QuaHRtbCcsICdzb21lIGNvbnRlbnQnKQogCi0gICAgICAgIG91
dHB1dCA9IE91dHB1dENhcHR1cmUoKQotICAgICAgICBvdXRwdXQuY2FwdHVyZV9vdXRwdXQoKQot
ICAgICAgICB0cnk6CisgICAgICAgIHdpdGggT3V0cHV0Q2FwdHVyZShsZXZlbD1sb2dnaW5nLklO
Rk8pIGFzIGNhcHR1cmVyOgogICAgICAgICAgICAgdW5leHBlY3RlZF9yZXN1bHRfY291bnQgPSBy
dW5uZXIucnVuKCkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHN0ZG91dCwgc3RkZXJy
LCBsb2cgPSBvdXRwdXQucmVzdG9yZV9vdXRwdXQoKQorCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwodW5leHBlY3RlZF9yZXN1bHRfY291bnQsIDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
c2VsZi5fbm9ybWFsaXplX291dHB1dChsb2cpLCBNZW1vcnlUZXN0RGF0YS5vdXRwdXQgKyAnXG5N
T0NLOiB1c2VyLm9wZW5fdXJsOiBmaWxlOi8vLi4uXG4nKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKAorICAgICAgICAgICAgc2VsZi5fbm9ybWFsaXplX291dHB1dChjYXB0dXJlci5yb290Lmxv
Zy5nZXR2YWx1ZSgpKSwKKyAgICAgICAgICAgIE1lbW9yeVRlc3REYXRhLm91dHB1dCArICdcbk1P
Q0s6IHVzZXIub3Blbl91cmw6IGZpbGU6Ly8uLi5cbicsCisgICAgICAgICkKICAgICAgICAgcGFy
c2VyX3Rlc3RzID0gc2VsZi5fbG9hZF9vdXRwdXRfanNvbihydW5uZXIpWzBdWyd0ZXN0cyddWydQ
YXJzZXInXVsndGVzdHMnXQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcnNlcl90ZXN0c1sn
bWVtb3J5LXRlc3QnXVsnbWV0cmljcyddWydUaW1lJ10sIE1lbW9yeVRlc3REYXRhLnJlc3VsdHMp
CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyc2VyX3Rlc3RzWydtZW1vcnktdGVzdCddWydt
ZXRyaWNzJ11bJ0pTSGVhcCddLCBNZW1vcnlUZXN0RGF0YS5qc19oZWFwX3Jlc3VsdHMpCkBAIC0y
NTksMTUgKzI2MiwxNCBAQCBjbGFzcyBNYWluVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAg
ICAgIHJ1bm5lci5fdGltZXN0YW1wID0gMTIzNDU2Nzg5CiAgICAgICAgIHBvcnQuaG9zdC5maWxl
c3lzdGVtLndyaXRlX3RleHRfZmlsZShydW5uZXIuX2Jhc2VfcGF0aCArICcvUGFyc2VyL3Rlc3Qt
d2l0aC1zdWJ0ZXN0cy5odG1sJywgJ3NvbWUgY29udGVudCcpCiAKLSAgICAgICAgb3V0cHV0ID0g
T3V0cHV0Q2FwdHVyZSgpCi0gICAgICAgIG91dHB1dC5jYXB0dXJlX291dHB1dCgpCi0gICAgICAg
IHRyeToKKyAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlKGxldmVsPWxvZ2dpbmcuSU5GTykgYXMg
Y2FwdHVyZXI6CiAgICAgICAgICAgICB1bmV4cGVjdGVkX3Jlc3VsdF9jb3VudCA9IHJ1bm5lci5y
dW4oKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc3Rkb3V0LCBzdGRlcnIsIGxvZyA9
IG91dHB1dC5yZXN0b3JlX291dHB1dCgpCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1bmV4
cGVjdGVkX3Jlc3VsdF9jb3VudCwgMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9u
b3JtYWxpemVfb3V0cHV0KGxvZyksIFRlc3RXaXRoU3VidGVzdHNEYXRhLm91dHB1dCArICdcbk1P
Q0s6IHVzZXIub3Blbl91cmw6IGZpbGU6Ly8uLi5cbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoCisgICAgICAgICAgICBzZWxmLl9ub3JtYWxpemVfb3V0cHV0KGNhcHR1cmVyLnJvb3QubG9n
LmdldHZhbHVlKCkpLAorICAgICAgICAgICAgVGVzdFdpdGhTdWJ0ZXN0c0RhdGEub3V0cHV0ICsg
J1xuTU9DSzogdXNlci5vcGVuX3VybDogZmlsZTovLy4uLlxuJywKKyAgICAgICAgKQogICAgICAg
ICBwYXJzZXJfdGVzdHMgPSBzZWxmLl9sb2FkX291dHB1dF9qc29uKHJ1bm5lcilbMF1bJ3Rlc3Rz
J11bJ1BhcnNlciddWyd0ZXN0cyddCiAgICAgICAgIHNlbGYubWF4RGlmZiA9IE5vbmUKICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChwYXJzZXJfdGVzdHNbJ3Rlc3Qtd2l0aC1zdWJ0ZXN0cyddLCBU
ZXN0V2l0aFN1YnRlc3RzRGF0YS5yZXN1bHRzKQpAQCAtMjg5LDEyICsyOTEsOCBAQCBjbGFzcyBN
YWluVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHJ1bm5lci5fdXBsb2FkX2pzb24g
PSBtb2NrX3VwbG9hZF9qc29uCiAgICAgICAgIHJ1bm5lci5fdGltZXN0YW1wID0gMTIzNDU2Nzg5
CiAgICAgICAgIHJ1bm5lci5fdXRjX3RpbWVzdGFtcCA9IGRhdGV0aW1lLmRhdGV0aW1lKDIwMTMs
IDIsIDgsIDE1LCAxOSwgMzcsIDQ2MDAwMCkKLSAgICAgICAgb3V0cHV0X2NhcHR1cmUgPSBPdXRw
dXRDYXB0dXJlKCkKLSAgICAgICAgb3V0cHV0X2NhcHR1cmUuY2FwdHVyZV9vdXRwdXQoKQotICAg
ICAgICB0cnk6CisgICAgICAgIHdpdGggT3V0cHV0Q2FwdHVyZShsZXZlbD1sb2dnaW5nLklORk8p
IGFzIGNhcHR1cmVyOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChydW5uZXIucnVuKCks
IGV4cGVjdGVkX2V4aXRfY29kZSkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHN0ZG91
dCwgc3RkZXJyLCBsb2dzID0gb3V0cHV0X2NhcHR1cmUucmVzdG9yZV9vdXRwdXQoKQogCiAgICAg
ICAgIGlmIG5vdCBleHBlY3RlZF9leGl0X2NvZGUgYW5kIGNvbXBhcmVfbG9nczoKICAgICAgICAg
ICAgIGV4cGVjdGVkX2xvZ3MgPSAnJwpAQCAtMzAzLDExICszMDEsMTEgQEAgY2xhc3MgTWFpblRl
c3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgICAgICAgIGV4cGVjdGVkX2xvZ3MgKz0g
J1J1bm5pbmcgMiB0ZXN0cyVzXG4nICUgcnVucyArIEV2ZW50VGFyZ2V0V3JhcHBlclRlc3REYXRh
Lm91dHB1dCArIFNvbWVQYXJzZXJUZXN0RGF0YS5vdXRwdXQKICAgICAgICAgICAgIGlmIHJlc3Vs
dHNfc2hvd246CiAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfbG9ncyArPSAnTU9DSzogdXNlci5v
cGVuX3VybDogZmlsZTovLy4uLlxuJwotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxm
Ll9ub3JtYWxpemVfb3V0cHV0KGxvZ3MpLCBleHBlY3RlZF9sb2dzKQorICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChzZWxmLl9ub3JtYWxpemVfb3V0cHV0KGNhcHR1cmVyLnJvb3QubG9nLmdl
dHZhbHVlKCkpLCBleHBlY3RlZF9sb2dzKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodXBs
b2FkZWRbMF0sIHVwbG9hZF9zdWNjZWVkcykKIAotICAgICAgICByZXR1cm4gbG9ncworICAgICAg
ICByZXR1cm4gY2FwdHVyZXIucm9vdC5sb2cuZ2V0dmFsdWUoKQogCiAgICAgX2V2ZW50X3Rhcmdl
dF93cmFwcGVyX2FuZF9pbnNwZWN0b3JfcmVzdWx0cyA9IHsKICAgICAgICAgIkJpbmRpbmdzIjoK
SW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3Rz
cnVubmVyX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
cGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAy
NjU3NzMpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0
ZXN0c3J1bm5lcl91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDUgQEAKICMg
Q29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0yOSwxNSArMzAsMTcgQEAKICIiIlVuaXQgdGVz
dHMgZm9yIHJ1bl9wZXJmX3Rlc3RzLiIiIgogCiBpbXBvcnQganNvbgoraW1wb3J0IGxvZ2dpbmcK
IGltcG9ydCB1bml0dGVzdAogCiBmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgU3RyaW5nSU8KIAog
ZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdF9tb2NrIGltcG9ydCBNb2NrSG9zdAotZnJvbSB3ZWJr
aXRweS5jb21tb24uc3lzdGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0IE91dHB1dENhcHR1cmUKIGZy
b20gd2Via2l0cHkucG9ydC50ZXN0IGltcG9ydCBUZXN0UG9ydAogZnJvbSB3ZWJraXRweS5wZXJm
b3JtYW5jZV90ZXN0cy5wZXJmdGVzdHNydW5uZXIgaW1wb3J0IFBlcmZUZXN0c1J1bm5lcgogCitm
cm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQorCiAKIGNsYXNzIE1haW5UZXN0
KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgY3JlYXRlX3J1bm5lcihzZWxmLCBhcmdzPVtd
KToKQEAgLTIxMCwxMSArMjEzLDEyIEBAIGNsYXNzIE1haW5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNl
KToKIAogICAgICAgICBNb2NrRmlsZVVwbG9hZGVyLnJlc2V0KCkKICAgICAgICAgTW9ja0ZpbGVV
cGxvYWRlci51cGxvYWRfc2luZ2xlX3RleHRfZmlsZV9yZXR1cm5fdmFsdWUgPSBTdHJpbmdJTygn
U29tZSBlcnJvcicpCi0gICAgICAgIG91dHB1dCA9IE91dHB1dENhcHR1cmUoKQotICAgICAgICBv
dXRwdXQuY2FwdHVyZV9vdXRwdXQoKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHJ1bm5lci5f
dXBsb2FkX2pzb24oJ2h0dHBzOi8vc29tZS5ob3N0JywgJ3NvbWUuanNvbicsICcvc29tZS9wYXRo
JywgTW9ja0ZpbGVVcGxvYWRlcikpCi0gICAgICAgIF8sIF8sIGxvZ3MgPSBvdXRwdXQucmVzdG9y
ZV9vdXRwdXQoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvZ3MsICdVcGxvYWRlZCBKU09O
IHRvIGh0dHBzOi8vc29tZS5ob3N0L3NvbWUvcGF0aCBidXQgZ290IGEgYmFkIHJlc3BvbnNlOlxu
U29tZSBlcnJvclxuJykKKyAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlKGxldmVsPWxvZ2dpbmcu
SU5GTykgYXMgY2FwdHVyZWQ6CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHJ1bm5lci5f
dXBsb2FkX2pzb24oJ2h0dHBzOi8vc29tZS5ob3N0JywgJ3NvbWUuanNvbicsICcvc29tZS9wYXRo
JywgTW9ja0ZpbGVVcGxvYWRlcikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAg
ICAgICBjYXB0dXJlZC5yb290LmxvZy5nZXR2YWx1ZSgpLAorICAgICAgICAgICAgJ1VwbG9hZGVk
IEpTT04gdG8gaHR0cHM6Ly9zb21lLmhvc3Qvc29tZS9wYXRoIGJ1dCBnb3QgYSBiYWQgcmVzcG9u
c2U6XG5Tb21lIGVycm9yXG4nLAorICAgICAgICApCiAKICAgICAgICAgIyBUaHJvd2luZyBhbiBl
eGNlcHRpb24gdXBsb2FkX3NpbmdsZV90ZXh0X2ZpbGUgc2hvdWxkbid0IGJsb3cgdXAgX3VwbG9h
ZF9qc29uCiAgICAgICAgIE1vY2tGaWxlVXBsb2FkZXIucmVzZXQoKQpAQCAtMjI5LDkgKzIzMywx
MCBAQCBjbGFzcyBNYWluVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICAgICAgTW9ja0Zp
bGVVcGxvYWRlci5yZXNldCgpCiAgICAgICAgIE1vY2tGaWxlVXBsb2FkZXIudXBsb2FkX3Npbmds
ZV90ZXh0X2ZpbGVfcmV0dXJuX3ZhbHVlID0gU3RyaW5nSU8oJ3sic3RhdHVzIjogIlNvbWV0aGlu
Z0hhc0ZhaWxlZCIsICJmYWlsdXJlU3RvcmVkIjogZmFsc2V9JykKLSAgICAgICAgb3V0cHV0ID0g
T3V0cHV0Q2FwdHVyZSgpCi0gICAgICAgIG91dHB1dC5jYXB0dXJlX291dHB1dCgpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RmFsc2UocnVubmVyLl91cGxvYWRfanNvbignaHR0cHM6Ly9zb21lLmhvc3Qn
LCAnc29tZS5qc29uJywgJy9zb21lL3BhdGgnLCBNb2NrRmlsZVVwbG9hZGVyKSkKLSAgICAgICAg
XywgXywgbG9ncyA9IG91dHB1dC5yZXN0b3JlX291dHB1dCgpCisgICAgICAgIHdpdGggT3V0cHV0
Q2FwdHVyZShsZXZlbD1sb2dnaW5nLklORk8pIGFzIGNhcHR1cmVkOgorICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRGYWxzZShydW5uZXIuX3VwbG9hZF9qc29uKCdodHRwczovL3NvbWUuaG9zdCcsICdz
b21lLmpzb24nLCAnL3NvbWUvcGF0aCcsIE1vY2tGaWxlVXBsb2FkZXIpKQogICAgICAgICBzZXJp
YWxpemVkX2pzb24gPSBqc29uLmR1bXBzKHsnc3RhdHVzJzogJ1NvbWV0aGluZ0hhc0ZhaWxlZCcs
ICdmYWlsdXJlU3RvcmVkJzogRmFsc2V9LCBpbmRlbnQ9NCkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChsb2dzLCAnVXBsb2FkZWQgSlNPTiB0byBodHRwczovL3NvbWUuaG9zdC9zb21lL3BhdGgg
YnV0IGdvdCBhbiBlcnJvcjpcbiVzXG4nICUgc2VyaWFsaXplZF9qc29uKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY2FwdHVyZWQucm9vdC5sb2cuZ2V0dmFsdWUoKSwK
KyAgICAgICAgICAgICdVcGxvYWRlZCBKU09OIHRvIGh0dHBzOi8vc29tZS5ob3N0L3NvbWUvcGF0
aCBidXQgZ290IGFuIGVycm9yOlxue31cbicuZm9ybWF0KHNlcmlhbGl6ZWRfanNvbiksCisgICAg
ICAgICkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlX3VuaXR0ZXN0LnB5
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlX3VuaXR0ZXN0
LnB5CShyZXZpc2lvbiAyNjU3NzMpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFz
ZV91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDUgQEAKICMgQ29weXJpZ2h0
IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCkBAIC0zMywxNCArMzQsMTQgQEAgaW1wb3J0IHVuaXR0ZXN0CiBmcm9t
IHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBTY3JpcHRFcnJvcgogZnJv
bSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBleGVjdXRpdmVfbW9jawogZnJvbSB3ZWJr
aXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW1fbW9jayBpbXBvcnQgTW9ja0ZpbGVTeXN0ZW0K
LWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5vdXRwdXRjYXB0dXJlIGltcG9ydCBPdXRwdXRD
YXB0dXJlCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlX21vY2sgaW1wb3J0
IE1vY2tFeGVjdXRpdmUyCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uc3lzdGVtaG9zdF9t
b2NrIGltcG9ydCBNb2NrU3lzdGVtSG9zdAogZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdF9tb2Nr
IGltcG9ydCBNb2NrSG9zdAotCiBmcm9tIHdlYmtpdHB5LnBvcnQgaW1wb3J0IFBvcnQKIGZyb20g
d2Via2l0cHkucG9ydC50ZXN0IGltcG9ydCBhZGRfdW5pdF90ZXN0c190b19tb2NrX2ZpbGVzeXN0
ZW0sIFRlc3RQb3J0CiAKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBPdXRwdXRDYXB0dXJlCisK
IAogZGVmIGNtcChhLCBiKToKICAgICByZXR1cm4gKGEgPiBiKSAtIChhIDwgYikKQEAgLTY3LDE1
ICs2OCwxMyBAQCBjbGFzcyBQb3J0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYg
dGVzdF9wcmV0dHlfcGF0Y2hfb3NfZXJyb3Ioc2VsZik6CiAgICAgICAgIHBvcnQgPSBzZWxmLm1h
a2VfcG9ydChleGVjdXRpdmU9ZXhlY3V0aXZlX21vY2suTW9ja0V4ZWN1dGl2ZTIoZXhjZXB0aW9u
PU9TRXJyb3IpKQotICAgICAgICBvYyA9IE91dHB1dENhcHR1cmUoKQotICAgICAgICBvYy5jYXB0
dXJlX291dHB1dCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5wcmV0dHlfcGF0Y2gu
cHJldHR5X3BhdGNoX3RleHQoInBhdGNoLnR4dCIpLAotICAgICAgICAgICAgICAgICAgICAgICAg
IHBvcnQucHJldHR5X3BhdGNoLnByZXR0eV9wYXRjaF9lcnJvcl9odG1sKQotCi0gICAgICAgICMg
VGhpcyB0ZXN0cyByZXBlYXRlZCBjYWxscyB0byBtYWtlIHN1cmUgd2UgY2FjaGUgdGhlIHJlc3Vs
dC4KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LnByZXR0eV9wYXRjaC5wcmV0dHlfcGF0
Y2hfdGV4dCgicGF0Y2gudHh0IiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgcG9ydC5wcmV0
dHlfcGF0Y2gucHJldHR5X3BhdGNoX2Vycm9yX2h0bWwpCi0gICAgICAgIG9jLnJlc3RvcmVfb3V0
cHV0KCkKKyAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlKCk6CisgICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHBvcnQucHJldHR5X3BhdGNoLnByZXR0eV9wYXRjaF90ZXh0KCJwYXRjaC50eHQi
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9ydC5wcmV0dHlfcGF0Y2gucHJldHR5
X3BhdGNoX2Vycm9yX2h0bWwpCisKKyAgICAgICAgICAgICMgVGhpcyB0ZXN0cyByZXBlYXRlZCBj
YWxscyB0byBtYWtlIHN1cmUgd2UgY2FjaGUgdGhlIHJlc3VsdC4KKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwocG9ydC5wcmV0dHlfcGF0Y2gucHJldHR5X3BhdGNoX3RleHQoInBhdGNoLnR4
dCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3J0LnByZXR0eV9wYXRjaC5wcmV0
dHlfcGF0Y2hfZXJyb3JfaHRtbCkKIAogICAgIGRlZiB0ZXN0X3ByZXR0eV9wYXRjaF9zY3JpcHRf
ZXJyb3Ioc2VsZik6CiAgICAgICAgICMgRklYTUU6IFRoaXMgaXMgc29tZSB1Z2x5IHdoaXRlLWJv
eCB0ZXN0IGhhY2tpbmcgLi4uCkBAIC0zMzAsMjAgKzMyOSwxNiBAQCBjbGFzcyBQb3J0VGVzdCh1
bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfY2hlY2tfaHR0cGRfc3VjY2VzcyhzZWxm
KToKICAgICAgICAgcG9ydCA9IHNlbGYubWFrZV9wb3J0KGV4ZWN1dGl2ZT1Nb2NrRXhlY3V0aXZl
MigpKQogICAgICAgICBwb3J0Ll9wYXRoX3RvX2FwYWNoZSA9IGxhbWJkYTogJy91c3Ivc2Jpbi9o
dHRwZCcKLSAgICAgICAgY2FwdHVyZSA9IE91dHB1dENhcHR1cmUoKQotICAgICAgICBjYXB0dXJl
LmNhcHR1cmVfb3V0cHV0KCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvcnQuY2hlY2tfaHR0
cGQoKSkKLSAgICAgICAgXywgXywgbG9ncyA9IGNhcHR1cmUucmVzdG9yZV9vdXRwdXQoKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKCcnLCBsb2dzKQorICAgICAgICB3aXRoIE91dHB1dENhcHR1
cmUoKSBhcyBjYXB0dXJlZDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3J0LmNoZWNr
X2h0dHBkKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycsIGNhcHR1cmVkLnJvb3QubG9n
LmdldHZhbHVlKCkpCiAKICAgICBkZWYgdGVzdF9odHRwZF9yZXR1cm5zX2Vycm9yX2NvZGUoc2Vs
Zik6CiAgICAgICAgIHBvcnQgPSBzZWxmLm1ha2VfcG9ydChleGVjdXRpdmU9TW9ja0V4ZWN1dGl2
ZTIoZXhpdF9jb2RlPTEpKQogICAgICAgICBwb3J0Ll9wYXRoX3RvX2FwYWNoZSA9IGxhbWJkYTog
Jy91c3Ivc2Jpbi9odHRwZCcKLSAgICAgICAgY2FwdHVyZSA9IE91dHB1dENhcHR1cmUoKQotICAg
ICAgICBjYXB0dXJlLmNhcHR1cmVfb3V0cHV0KCkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShw
b3J0LmNoZWNrX2h0dHBkKCkpCi0gICAgICAgIF8sIF8sIGxvZ3MgPSBjYXB0dXJlLnJlc3RvcmVf
b3V0cHV0KCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnaHR0cGQgc2VlbXMgYnJva2VuLiBD
YW5ub3QgcnVuIGh0dHAgdGVzdHMuXG4nLCBsb2dzKQorICAgICAgICB3aXRoIE91dHB1dENhcHR1
cmUoKSBhcyBjYXB0dXJlZDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocG9ydC5jaGVj
a19odHRwZCgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdodHRwZCBzZWVtcyBicm9rZW4u
IENhbm5vdCBydW4gaHR0cCB0ZXN0cy5cbicsIGNhcHR1cmVkLnJvb3QubG9nLmdldHZhbHVlKCkp
CiAKICAgICBkZWYgdGVzdF90ZXN0X2V4aXN0cyhzZWxmKToKICAgICAgICAgcG9ydCA9IHNlbGYu
bWFrZV9wb3J0KHdpdGhfdGVzdHM9VHJ1ZSkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
cG9ydC9jb25maWdfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9wb3J0L2NvbmZpZ191bml0dGVzdC5weQkocmV2aXNpb24gMjY1NzczKQorKysgVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9wb3J0L2NvbmZpZ191bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpA
QCAtMSw0ICsxLDUgQEAKICMgQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0zNCw5ICszNSwx
MCBAQCBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltCiBmcm9tIHdlYmtp
dHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlX21vY2sgaW1wb3J0IE1vY2tFeGVjdXRpdmUyCiBm
cm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbSBpbXBvcnQgRmlsZVN5c3RlbQog
ZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW1fbW9jayBpbXBvcnQgTW9ja0Zp
bGVTeXN0ZW0KLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5vdXRwdXRjYXB0dXJlIGltcG9y
dCBPdXRwdXRDYXB0dXJlCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi53ZWJraXRfZmluZGVyIGltcG9y
dCBXZWJLaXRGaW5kZXIKIAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IE91dHB1dENhcHR1cmUK
KwogaW1wb3J0IHdlYmtpdHB5LnBvcnQuY29uZmlnIGFzIGNvbmZpZwogCiAKQEAgLTExOCwxMCAr
MTIwLDggQEAgY2xhc3MgQ29uZmlnVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYg
dGVzdF9kZWZhdWx0X2NvbmZpZ3VyYXRpb25fX3Vua25vd24oc2VsZik6CiAgICAgICAgICMgSWdu
b3JlIHRoZSB3YXJuaW5nIGFib3V0IGFuIHVua25vd24gY29uZmlndXJhdGlvbiB2YWx1ZS4KLSAg
ICAgICAgb2MgPSBPdXRwdXRDYXB0dXJlKCkKLSAgICAgICAgb2MuY2FwdHVyZV9vdXRwdXQoKQot
ICAgICAgICBzZWxmLmFzc2VydF9jb25maWd1cmF0aW9uKCdVbmtub3duJywgJ1Vua25vd24nKQot
ICAgICAgICBvYy5yZXN0b3JlX291dHB1dCgpCisgICAgICAgIHdpdGggT3V0cHV0Q2FwdHVyZSgp
OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRfY29uZmlndXJhdGlvbignVW5rbm93bicsICdVbmtu
b3duJykKIAogICAgIGRlZiB0ZXN0X2RlZmF1bHRfY29uZmlndXJhdGlvbl9fc3RhbmRhbG9uZShz
ZWxmKToKICAgICAgICAgIyBGSVhNRTogVGhpcyB0ZXN0IHJ1bnMgYSBzdGFuZGFsb25lIHB5dGhv
biBzY3JpcHQgdG8gdGVzdApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Rhcndp
bl90ZXN0Y2FzZS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQv
ZGFyd2luX3Rlc3RjYXNlLnB5CShyZXZpc2lvbiAyNjU3NzMpCisrKyBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3BvcnQvZGFyd2luX3Rlc3RjYXNlLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEs
NCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxNC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjAsMTYgKzIwLDE4IEBA
CiAjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKK2ltcG9ydCBsb2dnaW5n
CiBpbXBvcnQgdGltZQogCiBmcm9tIHdlYmtpdHB5LnBvcnQgaW1wb3J0IHBvcnRfdGVzdGNhc2UK
LWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5vdXRwdXRjYXB0dXJlIGltcG9ydCBPdXRwdXRD
YXB0dXJlCiBmcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tPcHRpb25zCiBm
cm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbV9tb2NrIGltcG9ydCBNb2NrRmls
ZVN5c3RlbQogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZV9tb2NrIGltcG9y
dCBNb2NrRXhlY3V0aXZlLCBNb2NrRXhlY3V0aXZlMiwgTW9ja1Byb2Nlc3MsIFNjcmlwdEVycm9y
CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uc3lzdGVtaG9zdF9tb2NrIGltcG9ydCBNb2Nr
U3lzdGVtSG9zdAogZnJvbSB3ZWJraXRweS5jb21tb24udmVyc2lvbl9uYW1lX21hcCBpbXBvcnQg
VmVyc2lvbk5hbWVNYXAKIAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IE91dHB1dENhcHR1cmUK
KwogCiBjbGFzcyBEYXJ3aW5UZXN0KHBvcnRfdGVzdGNhc2UuUG9ydFRlc3RDYXNlKToKIApAQCAt
NTAsMTggKzUyLDIwIEBAIGNsYXNzIERhcndpblRlc3QocG9ydF90ZXN0Y2FzZS5Qb3J0VGVzdEMK
ICAgICAgICAgcG9ydCA9IHNlbGYubWFrZV9wb3J0KCkKICAgICAgICAgIyBEZWxheSBzZXR0aW5n
IGEgc2hvdWxkX2xvZyBleGVjdXRpdmUgdG8gYXZvaWQgbG9nZ2luZyBmcm9tIE1hY1BvcnQuX19p
bml0X18uCiAgICAgICAgIHBvcnQuX2V4ZWN1dGl2ZSA9IE1vY2tFeGVjdXRpdmUoc2hvdWxkX2xv
Zz1UcnVlKQotICAgICAgICBleHBlY3RlZF9sb2dzID0gIk1PQ0sgcG9wZW46IFsnVG9vbHMvU2Ny
aXB0cy9ydW4tc2FmYXJpJywgJy0tcmVsZWFzZScsICctLW5vLXNhdmVkLXN0YXRlJywgJy1OU09w
ZW4nLCAndGVzdC5odG1sJ10sIGN3ZD0vbW9jay1jaGVja291dFxuIgotICAgICAgICBPdXRwdXRD
YXB0dXJlKCkuYXNzZXJ0X291dHB1dHMoc2VsZiwgcG9ydC5zaG93X3Jlc3VsdHNfaHRtbF9maWxl
LCBbInRlc3QuaHRtbCJdLCBleHBlY3RlZF9sb2dzPWV4cGVjdGVkX2xvZ3MpCisgICAgICAgIHdp
dGggT3V0cHV0Q2FwdHVyZShsZXZlbD1sb2dnaW5nLklORk8pIGFzIGNhcHR1cmVkOgorICAgICAg
ICAgICAgcG9ydC5zaG93X3Jlc3VsdHNfaHRtbF9maWxlKCd0ZXN0Lmh0bWwnKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY2FwdHVyZWQucm9vdC5sb2cuZ2V0dmFsdWUo
KSwKKyAgICAgICAgICAgICJNT0NLIHBvcGVuOiBbJ1Rvb2xzL1NjcmlwdHMvcnVuLXNhZmFyaScs
ICctLXJlbGVhc2UnLCAnLS1uby1zYXZlZC1zdGF0ZScsICctTlNPcGVuJywgJ3Rlc3QuaHRtbCdd
LCBjd2Q9L21vY2stY2hlY2tvdXRcbiIsCisgICAgICAgICkKIAogICAgIGRlZiB0ZXN0X2hlbHBl
cl9zdGFydHMoc2VsZik6CiAgICAgICAgIGhvc3QgPSBNb2NrU3lzdGVtSG9zdChNb2NrRXhlY3V0
aXZlKCkpCiAgICAgICAgIHBvcnQgPSBzZWxmLm1ha2VfcG9ydChob3N0KQotICAgICAgICBvYyA9
IE91dHB1dENhcHR1cmUoKQotICAgICAgICBvYy5jYXB0dXJlX291dHB1dCgpCi0gICAgICAgIGhv
c3QuZXhlY3V0aXZlLl9wcm9jID0gTW9ja1Byb2Nlc3MoJ3JlYWR5XG4nKQotICAgICAgICBwb3J0
LnN0YXJ0X2hlbHBlcigpCi0gICAgICAgIHBvcnQuc3RvcF9oZWxwZXIoKQotICAgICAgICBvYy5y
ZXN0b3JlX291dHB1dCgpCisgICAgICAgIHdpdGggT3V0cHV0Q2FwdHVyZSgpOgorICAgICAgICAg
ICAgaG9zdC5leGVjdXRpdmUuX3Byb2MgPSBNb2NrUHJvY2VzcygncmVhZHlcbicpCisgICAgICAg
ICAgICBwb3J0LnN0YXJ0X2hlbHBlcigpCisgICAgICAgICAgICBwb3J0LnN0b3BfaGVscGVyKCkK
IAogICAgICAgICAjIG1ha2Ugc3VyZSB0cnlpbmcgdG8gc3RvcCB0aGUgaGVscGVyIHR3aWNlIGlz
IHNhZmUuCiAgICAgICAgIHBvcnQuc3RvcF9oZWxwZXIoKQpAQCAtNjksMTEgKzczLDkgQEAgY2xh
c3MgRGFyd2luVGVzdChwb3J0X3Rlc3RjYXNlLlBvcnRUZXN0QwogICAgIGRlZiB0ZXN0X2hlbHBl
cl9mYWlsc190b19zdGFydChzZWxmKToKICAgICAgICAgaG9zdCA9IE1vY2tTeXN0ZW1Ib3N0KE1v
Y2tFeGVjdXRpdmUoKSkKICAgICAgICAgcG9ydCA9IHNlbGYubWFrZV9wb3J0KGhvc3QpCi0gICAg
ICAgIG9jID0gT3V0cHV0Q2FwdHVyZSgpCi0gICAgICAgIG9jLmNhcHR1cmVfb3V0cHV0KCkKLSAg
ICAgICAgcG9ydC5zdGFydF9oZWxwZXIoKQotICAgICAgICBwb3J0LnN0b3BfaGVscGVyKCkKLSAg
ICAgICAgb2MucmVzdG9yZV9vdXRwdXQoKQorICAgICAgICB3aXRoIE91dHB1dENhcHR1cmUoKToK
KyAgICAgICAgICAgIHBvcnQuc3RhcnRfaGVscGVyKCkKKyAgICAgICAgICAgIHBvcnQuc3RvcF9o
ZWxwZXIoKQogCiAgICAgZGVmIHRlc3RfaGVscGVyX2ZhaWxzX3RvX3N0b3Aoc2VsZik6CiAgICAg
ICAgIGhvc3QgPSBNb2NrU3lzdGVtSG9zdChNb2NrRXhlY3V0aXZlKCkpCkBAIC04NCwxMSArODYs
OSBAQCBjbGFzcyBEYXJ3aW5UZXN0KHBvcnRfdGVzdGNhc2UuUG9ydFRlc3RDCiAgICAgICAgIGhv
c3QuZXhlY3V0aXZlLl9wcm9jLndhaXQgPSBiYWRfd2FpdGVyCiAKICAgICAgICAgcG9ydCA9IHNl
bGYubWFrZV9wb3J0KGhvc3QpCi0gICAgICAgIG9jID0gT3V0cHV0Q2FwdHVyZSgpCi0gICAgICAg
IG9jLmNhcHR1cmVfb3V0cHV0KCkKLSAgICAgICAgcG9ydC5zdGFydF9oZWxwZXIoKQotICAgICAg
ICBwb3J0LnN0b3BfaGVscGVyKCkKLSAgICAgICAgb2MucmVzdG9yZV9vdXRwdXQoKQorICAgICAg
ICB3aXRoIE91dHB1dENhcHR1cmUoKToKKyAgICAgICAgICAgIHBvcnQuc3RhcnRfaGVscGVyKCkK
KyAgICAgICAgICAgIHBvcnQuc3RvcF9oZWxwZXIoKQogCiAgICAgZGVmIHRlc3RfY3Jhc2hsb2df
cGF0aChzZWxmKToKICAgICAgICAgcG9ydCA9IHNlbGYubWFrZV9wb3J0KCkKQEAgLTEwNywxMCAr
MTA3LDE0IEBAIGNsYXNzIERhcndpblRlc3QocG9ydF90ZXN0Y2FzZS5Qb3J0VGVzdEMKICAgICAg
ICAgcG9ydC5ob3N0LmZpbGVzeXN0ZW0uZmlsZXNbJy9fX2ltX3RtcC90bXBfMF8vdGVzdC00Mi10
YWlsc3Bpbi10ZW1wLnR4dCddID0gJ1RlbXBvcmFyeSB0YWlsc3BpbiBvdXRwdXQgZmlsZScKICAg
ICAgICAgcG9ydC5ob3N0LmZpbGVzeXN0ZW0uZmlsZXNbJy9fX2ltX3RtcC90bXBfMF8vdGVzdC00
Mi10YWlsc3Bpbi50eHQnXSA9ICdTeW1ib2xvY2F0ZWQgdGFpbHNwaW4gZmlsZScKICAgICAgICAg
cG9ydC5ob3N0LmV4ZWN1dGl2ZSA9IE1vY2tFeGVjdXRpdmUyKHJ1bl9jb21tYW5kX2ZuPWxvZ2dp
bmdfcnVuX2NvbW1hbmQpCi0gICAgICAgIGV4cGVjdGVkX3N0ZG91dCA9ICIiIlsnL3Vzci9iaW4v
c3VkbycsICctbicsICcvdXNyL2Jpbi90YWlsc3BpbicsICdzYXZlJywgJy1uJywgJy9fX2ltX3Rt
cC90bXBfMF8vdGVzdC00Mi10YWlsc3Bpbi10ZW1wLnR4dCddCisgICAgICAgIHdpdGggT3V0cHV0
Q2FwdHVyZSgpIGFzIGNhcHR1cmVkOgorICAgICAgICAgICAgcG9ydC5zYW1wbGVfcHJvY2Vzcygn
dGVzdCcsIDQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY2FwdHVy
ZWQuc3Rkb3V0LmdldHZhbHVlKCksCisgICAgICAgICAgICAiIiJbJy91c3IvYmluL3N1ZG8nLCAn
LW4nLCAnL3Vzci9iaW4vdGFpbHNwaW4nLCAnc2F2ZScsICctbicsICcvX19pbV90bXAvdG1wXzBf
L3Rlc3QtNDItdGFpbHNwaW4tdGVtcC50eHQnXQogWycvdXNyL3NiaW4vc3BpbmR1bXAnLCAnLWkn
LCAnL19faW1fdG1wL3RtcF8wXy90ZXN0LTQyLXRhaWxzcGluLXRlbXAudHh0JywgJy1maWxlJywg
Jy9fX2ltX3RtcC90bXBfMF8vdGVzdC00Mi10YWlsc3Bpbi50eHQnLCAnLW5vQnVsa1N5bWJvbGlj
YXRpb24nXQotIiIiCi0gICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxm
LCBwb3J0LnNhbXBsZV9wcm9jZXNzLCBhcmdzPVsndGVzdCcsIDQyXSwgZXhwZWN0ZWRfc3Rkb3V0
PWV4cGVjdGVkX3N0ZG91dCkKKyIiIiwKKyAgICAgICAgKQogICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHBvcnQuaG9zdC5maWxlc3lzdGVtLmZpbGVzWycvbW9jay1idWlsZC9sYXlvdXQtdGVzdC1y
ZXN1bHRzL3Rlc3QtNDItdGFpbHNwaW4udHh0J10sICdTeW1ib2xvY2F0ZWQgdGFpbHNwaW4gZmls
ZScpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHBvcnQuaG9zdC5maWxlc3lzdGVtLmZpbGVz
WycvX19pbV90bXAvdG1wXzBfL3Rlc3QtNDItdGFpbHNwaW4tdGVtcC50eHQnXSkKICAgICAgICAg
c2VsZi5hc3NlcnRJc05vbmUocG9ydC5ob3N0LmZpbGVzeXN0ZW0uZmlsZXNbJy9fX2ltX3RtcC90
bXBfMF8vdGVzdC00Mi10YWlsc3Bpbi50eHQnXSkKQEAgLTEyNiw4ICsxMzAsMTIgQEAgY2xhc3Mg
RGFyd2luVGVzdChwb3J0X3Rlc3RjYXNlLlBvcnRUZXN0QwogICAgICAgICBwb3J0ID0gc2VsZi5t
YWtlX3BvcnQoKQogICAgICAgICBwb3J0Lmhvc3QuZmlsZXN5c3RlbS5maWxlc1snL19faW1fdG1w
L3RtcF8wXy90ZXN0LTQyLXNhbXBsZS50eHQnXSA9ICdTYW1wbGUgZmlsZScKICAgICAgICAgcG9y
dC5ob3N0LmV4ZWN1dGl2ZSA9IE1vY2tFeGVjdXRpdmUyKHJ1bl9jb21tYW5kX2ZuPWxvZ2dpbmdf
cnVuX2NvbW1hbmQpCi0gICAgICAgIGV4cGVjdGVkX3N0ZG91dCA9ICJbJy91c3IvYmluL3NhbXBs
ZScsIDQyLCAxMCwgMTAsICctZmlsZScsICcvX19pbV90bXAvdG1wXzBfL3Rlc3QtNDItc2FtcGxl
LnR4dCddXG4iCi0gICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCBw
b3J0LnNhbXBsZV9wcm9jZXNzLCBhcmdzPVsndGVzdCcsIDQyXSwgZXhwZWN0ZWRfc3Rkb3V0PWV4
cGVjdGVkX3N0ZG91dCkKKyAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlKCkgYXMgY2FwdHVyZWQ6
CisgICAgICAgICAgICBwb3J0LnNhbXBsZV9wcm9jZXNzKCd0ZXN0JywgNDIpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBjYXB0dXJlZC5zdGRvdXQuZ2V0dmFsdWUoKSwK
KyAgICAgICAgICAgICJbJy91c3IvYmluL3NhbXBsZScsIDQyLCAxMCwgMTAsICctZmlsZScsICcv
X19pbV90bXAvdG1wXzBfL3Rlc3QtNDItc2FtcGxlLnR4dCddXG4iLAorICAgICAgICApCiAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5ob3N0LmZpbGVzeXN0ZW0uZmlsZXNbJy9tb2NrLWJ1
aWxkL2xheW91dC10ZXN0LXJlc3VsdHMvdGVzdC00Mi1zYW1wbGUudHh0J10sICdTYW1wbGUgZmls
ZScpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHBvcnQuaG9zdC5maWxlc3lzdGVtLmZpbGVz
WycvX19pbV90bXAvdG1wXzBfL3Rlc3QtNDItc2FtcGxlLnR4dCddKQogCkBAIC0xMzksNyArMTQ3
LDkgQEAgY2xhc3MgRGFyd2luVGVzdChwb3J0X3Rlc3RjYXNlLlBvcnRUZXN0QwogCiAgICAgICAg
IHBvcnQgPSBzZWxmLm1ha2VfcG9ydCgpCiAgICAgICAgIHBvcnQuaG9zdC5leGVjdXRpdmUgPSBN
b2NrRXhlY3V0aXZlMihydW5fY29tbWFuZF9mbj10aHJvd2luZ19ydW5fY29tbWFuZCkKLSAgICAg
ICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIHBvcnQuc2FtcGxlX3Byb2Nl
c3MsIGFyZ3M9Wyd0ZXN0JywgNDJdKQorICAgICAgICB3aXRoIE91dHB1dENhcHR1cmUoKSBhcyBj
YXB0dXJlZDoKKyAgICAgICAgICAgIHBvcnQuc2FtcGxlX3Byb2Nlc3MoJ3Rlc3QnLCA0MikKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYXB0dXJlZC5zdGRvdXQuZ2V0dmFsdWUoKSwgJycpCiAK
ICAgICBkZWYgdGVzdF9nZXRfY3Jhc2hfbG9nKHNlbGYpOgogICAgICAgICBwb3J0ID0gc2VsZi5t
YWtlX3BvcnQocG9ydF9uYW1lPXNlbGYucG9ydF9uYW1lKQpJbmRleDogVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9wb3J0L2d0a191bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3BvcnQvZ3RrX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNjU3NzMpCisrKyBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZ3RrX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBA
IC0xLDQgKzEsNSBAQAogIyBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTI2LDEzICsyNywx
MyBAQAogIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAoraW1wb3J0IGxvZ2dpbmcKIGlt
cG9ydCBvcwogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20gd2Via2l0cHkuY29t
bW9uLnN5c3RlbS5leGVjdXRpdmVfbW9jayBpbXBvcnQgTW9ja0V4ZWN1dGl2ZQogZnJvbSB3ZWJr
aXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW1fbW9jayBpbXBvcnQgTW9ja0ZpbGVTeXN0ZW0K
LWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5vdXRwdXRjYXB0dXJlIGltcG9ydCBPdXRwdXRD
YXB0dXJlCiBmcm9tIHdlYmtpdHB5LnBvcnQuY29uZmlnIGltcG9ydCBjbGVhcl9jYWNoZWRfY29u
ZmlndXJhdGlvbgogZnJvbSB3ZWJraXRweS5wb3J0Lmd0ayBpbXBvcnQgR3RrUG9ydAogZnJvbSB3
ZWJraXRweS5wb3J0LnB1bHNlYXVkaW9fc2FuaXRpemVyX21vY2sgaW1wb3J0IFB1bHNlQXVkaW9T
YW5pdGl6ZXJNb2NrCkBAIC00MCw2ICs0MSw4IEBAIGZyb20gd2Via2l0cHkucG9ydCBpbXBvcnQg
cG9ydF90ZXN0Y2FzZQogZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5Lm1vY2sgaW1wb3J0IE1vY2sK
IGZyb20gd2Via2l0cHkudG9vbC5tb2NrdG9vbCBpbXBvcnQgTW9ja09wdGlvbnMKIAorZnJvbSB3
ZWJraXRjb3JlcHkgaW1wb3J0IE91dHB1dENhcHR1cmUKKwogCiBjbGFzcyBHdGtQb3J0VGVzdChw
b3J0X3Rlc3RjYXNlLlBvcnRUZXN0Q2FzZSk6CiAgICAgcG9ydF9uYW1lID0gJ2d0aycKQEAgLTcy
LDggKzc1LDEyIEBAIGNsYXNzIEd0a1BvcnRUZXN0KHBvcnRfdGVzdGNhc2UuUG9ydFRlc3QKICAg
ICAgICAgcG9ydC5fZmlsZXN5c3RlbSA9IE1vY2tGaWxlU3lzdGVtKHsKICAgICAgICAgICAgICIv
bW9jay1idWlsZC9iaW4vTWluaUJyb3dzZXIiOiAiIgogICAgICAgICB9KQotICAgICAgICBleHBl
Y3RlZF9sb2dzID0gIk1PQ0sgcnVuX2NvbW1hbmQ6IFsnL21vY2stYnVpbGQvYmluL01pbmlCcm93
c2VyJywgJ2ZpbGU6Ly90ZXN0Lmh0bWwnXSwgY3dkPS9tb2NrLWNoZWNrb3V0XG4iCi0gICAgICAg
IE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCBwb3J0LnNob3dfcmVzdWx0c19o
dG1sX2ZpbGUsIFsidGVzdC5odG1sIl0sIGV4cGVjdGVkX2xvZ3M9ZXhwZWN0ZWRfbG9ncykKKyAg
ICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlKGxldmVsPWxvZ2dpbmcuSU5GTykgYXMgY2FwdHVyZWQ6
CisgICAgICAgICAgICBwb3J0LnNob3dfcmVzdWx0c19odG1sX2ZpbGUoJ3Rlc3QuaHRtbCcpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBjYXB0dXJlZC5yb290LmxvZy5n
ZXR2YWx1ZSgpLAorICAgICAgICAgICAgIk1PQ0sgcnVuX2NvbW1hbmQ6IFsnL21vY2stYnVpbGQv
YmluL01pbmlCcm93c2VyJywgJ2ZpbGU6Ly90ZXN0Lmh0bWwnXSwgY3dkPS9tb2NrLWNoZWNrb3V0
XG4iLAorICAgICAgICApCiAKICAgICBkZWYgdGVzdF9kZWZhdWx0X3RpbWVvdXRfbXMoc2VsZik6
CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5tYWtlX3BvcnQob3B0aW9ucz1Nb2NrT3B0
aW9ucyhjb25maWd1cmF0aW9uPSdSZWxlYXNlJykpLmRlZmF1bHRfdGltZW91dF9tcygpLCAxNTAw
MCkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9pb3NfZGV2aWNlX3VuaXR0ZXN0
LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9pb3NfZGV2aWNl
X3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNjU3NzMpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3BvcnQvaW9zX2RldmljZV91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQg
QEAKLSMgQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMgQ29weXJpZ2h0IChDKSAyMDE3LCAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjQsNyArMjQsNiBAQCBpbXBvcnQg
dGltZQogCiBmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgVmVyc2lvbgogCi1mcm9tIHdlYmtpdHB5
LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQogZnJvbSB3
ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZV9tb2NrIGltcG9ydCBNb2NrRXhlY3V0aXZl
MiwgU2NyaXB0RXJyb3IKIGZyb20gd2Via2l0cHkucG9ydC5jb25maWcgaW1wb3J0IGNsZWFyX2Nh
Y2hlZF9jb25maWd1cmF0aW9uCiBmcm9tIHdlYmtpdHB5LnBvcnQuaW9zX2RldmljZSBpbXBvcnQg
SU9TRGV2aWNlUG9ydApAQCAtMzIsNiArMzEsOCBAQCBmcm9tIHdlYmtpdHB5LnBvcnQgaW1wb3J0
IGlvc190ZXN0Y2FzZQogZnJvbSB3ZWJraXRweS5wb3J0IGltcG9ydCBwb3J0X3Rlc3RjYXNlCiBm
cm9tIHdlYmtpdHB5Lnhjb2RlLmRldmljZV90eXBlIGltcG9ydCBEZXZpY2VUeXBlCiAKK2Zyb20g
d2Via2l0Y29yZXB5IGltcG9ydCBPdXRwdXRDYXB0dXJlCisKIAogY2xhc3MgSU9TRGV2aWNlVGVz
dChpb3NfdGVzdGNhc2UuSU9TVGVzdCk6CiAgICAgb3NfbmFtZSA9ICdpb3MnCkBAIC01NSwxMCAr
NTYsMTYgQEAgY2xhc3MgSU9TRGV2aWNlVGVzdChpb3NfdGVzdGNhc2UuSU9TVGVzdAogICAgICAg
ICBwb3J0Lmhvc3QuZmlsZXN5c3RlbS5maWxlc1snL19faW1fdG1wL3RtcF8wXy90ZXN0LTQyLXRh
aWxzcGluLXRlbXAudHh0J10gPSAnVGVtcG9yYXJ5IHRhaWxzcGluIG91dHB1dCBmaWxlJwogICAg
ICAgICBwb3J0Lmhvc3QuZmlsZXN5c3RlbS5maWxlc1snL19faW1fdG1wL3RtcF8wXy90ZXN0LTQy
LXRhaWxzcGluLnR4dCddID0gJ1N5bWJvbG9jYXRlZCB0YWlsc3BpbiBmaWxlJwogICAgICAgICBw
b3J0Lmhvc3QuZXhlY3V0aXZlID0gTW9ja0V4ZWN1dGl2ZTIocnVuX2NvbW1hbmRfZm49bG9nZ2lu
Z19ydW5fY29tbWFuZCkKLSAgICAgICAgZXhwZWN0ZWRfc3Rkb3V0ID0gIiIiWycvdXNyL2Jpbi90
YWlsc3BpbicsICdzYXZlJywgJy1uJywgJy9fX2ltX3RtcC90bXBfMF8vdGVzdC00Mi10YWlsc3Bp
bi10ZW1wLnR4dCddCisKKyAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlKCkgYXMgY2FwdHVyZWQ6
CisgICAgICAgICAgICBwb3J0LnNhbXBsZV9wcm9jZXNzKCd0ZXN0JywgNDIpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBjYXB0dXJlZC5zdGRvdXQuZ2V0dmFsdWUoKSwK
KyAgICAgICAgICAgICIiIlsnL3Vzci9iaW4vdGFpbHNwaW4nLCAnc2F2ZScsICctbicsICcvX19p
bV90bXAvdG1wXzBfL3Rlc3QtNDItdGFpbHNwaW4tdGVtcC50eHQnXQogWycvdXNyL3NiaW4vc3Bp
bmR1bXAnLCAnLWknLCAnL19faW1fdG1wL3RtcF8wXy90ZXN0LTQyLXRhaWxzcGluLXRlbXAudHh0
JywgJy1maWxlJywgJy9fX2ltX3RtcC90bXBfMF8vdGVzdC00Mi10YWlsc3Bpbi50eHQnLCAnLW5v
QnVsa1N5bWJvbGljYXRpb24nXQotIiIiCi0gICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRf
b3V0cHV0cyhzZWxmLCBwb3J0LnNhbXBsZV9wcm9jZXNzLCBhcmdzPVsndGVzdCcsIDQyXSwgZXhw
ZWN0ZWRfc3Rkb3V0PWV4cGVjdGVkX3N0ZG91dCkKKyIiIiwKKyAgICAgICAgKQorCiAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5ob3N0LmZpbGVzeXN0ZW0uZmlsZXNbJy9tb2NrLWJ1aWxk
L2xheW91dC10ZXN0LXJlc3VsdHMvdGVzdC00Mi10YWlsc3Bpbi50eHQnXSwgJ1N5bWJvbG9jYXRl
ZCB0YWlsc3BpbiBmaWxlJykKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocG9ydC5ob3N0LmZp
bGVzeXN0ZW0uZmlsZXNbJy9fX2ltX3RtcC90bXBfMF8vdGVzdC00Mi10YWlsc3Bpbi10ZW1wLnR4
dCddKQogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwb3J0Lmhvc3QuZmlsZXN5c3RlbS5maWxl
c1snL19faW1fdG1wL3RtcF8wXy90ZXN0LTQyLXRhaWxzcGluLnR4dCddKQpAQCAtNzMsOCArODAs
MTQgQEAgY2xhc3MgSU9TRGV2aWNlVGVzdChpb3NfdGVzdGNhc2UuSU9TVGVzdAogICAgICAgICBw
b3J0ID0gc2VsZi5tYWtlX3BvcnQoKQogICAgICAgICBwb3J0Lmhvc3QuZmlsZXN5c3RlbS5maWxl
c1snL19faW1fdG1wL3RtcF8wXy90ZXN0LTQyLXNhbXBsZS50eHQnXSA9ICdTYW1wbGUgZmlsZScK
ICAgICAgICAgcG9ydC5ob3N0LmV4ZWN1dGl2ZSA9IE1vY2tFeGVjdXRpdmUyKHJ1bl9jb21tYW5k
X2ZuPWxvZ2dpbmdfcnVuX2NvbW1hbmQpCi0gICAgICAgIGV4cGVjdGVkX3N0ZG91dCA9ICJbJy91
c3IvYmluL3NhbXBsZScsIDQyLCAxMCwgMTAsICctZmlsZScsICcvX19pbV90bXAvdG1wXzBfL3Rl
c3QtNDItc2FtcGxlLnR4dCddXG4iCi0gICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0
cHV0cyhzZWxmLCBwb3J0LnNhbXBsZV9wcm9jZXNzLCBhcmdzPVsndGVzdCcsIDQyXSwgZXhwZWN0
ZWRfc3Rkb3V0PWV4cGVjdGVkX3N0ZG91dCkKKworICAgICAgICB3aXRoIE91dHB1dENhcHR1cmUo
KSBhcyBjYXB0dXJlZDoKKyAgICAgICAgICAgIHBvcnQuc2FtcGxlX3Byb2Nlc3MoJ3Rlc3QnLCA0
MikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNhcHR1cmVkLnN0ZG91
dC5nZXR2YWx1ZSgpLAorICAgICAgICAgICAgIlsnL3Vzci9iaW4vc2FtcGxlJywgNDIsIDEwLCAx
MCwgJy1maWxlJywgJy9fX2ltX3RtcC90bXBfMF8vdGVzdC00Mi1zYW1wbGUudHh0J11cbiIsCisg
ICAgICAgICkKKwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQuaG9zdC5maWxlc3lzdGVt
LmZpbGVzWycvbW9jay1idWlsZC9sYXlvdXQtdGVzdC1yZXN1bHRzL3Rlc3QtNDItc2FtcGxlLnR4
dCddLCAnU2FtcGxlIGZpbGUnKQogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwb3J0Lmhvc3Qu
ZmlsZXN5c3RlbS5maWxlc1snL19faW1fdG1wL3RtcF8wXy90ZXN0LTQyLXNhbXBsZS50eHQnXSkK
IApAQCAtODYsNyArOTksMTAgQEAgY2xhc3MgSU9TRGV2aWNlVGVzdChpb3NfdGVzdGNhc2UuSU9T
VGVzdAogCiAgICAgICAgIHBvcnQgPSBzZWxmLm1ha2VfcG9ydCgpCiAgICAgICAgIHBvcnQuaG9z
dC5leGVjdXRpdmUgPSBNb2NrRXhlY3V0aXZlMihydW5fY29tbWFuZF9mbj10aHJvd2luZ19ydW5f
Y29tbWFuZCkKLSAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIHBv
cnQuc2FtcGxlX3Byb2Nlc3MsIGFyZ3M9Wyd0ZXN0JywgNDJdKQorCisgICAgICAgIHdpdGggT3V0
cHV0Q2FwdHVyZSgpIGFzIGNhcHR1cmVkOgorICAgICAgICAgICAgcG9ydC5zYW1wbGVfcHJvY2Vz
cygndGVzdCcsIDQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhcHR1cmVkLnN0ZG91dC5n
ZXR2YWx1ZSgpLCAnJykKIAogICAgIGRlZiB0ZXN0X2dldF9jcmFzaF9sb2coc2VsZik6CiAgICAg
ICAgIHBvcnQgPSBzZWxmLm1ha2VfcG9ydChwb3J0X25hbWU9c2VsZi5wb3J0X25hbWUpCkluZGV4
OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zX3NpbXVsYXRvcl91bml0dGVzdC5weQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zX3NpbXVsYXRvcl91
bml0dGVzdC5weQkocmV2aXNpb24gMjY1NzczKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9w
b3J0L2lvc19zaW11bGF0b3JfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0
IEBACi0jIENvcHlyaWdodCAoQykgMjAxNC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDE0LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNSwxMiArMjUsMTMgQEAg
ZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IFZlcnNpb24KIGZyb20gd2Via2l0cHkucG9ydC5pb3Nf
c2ltdWxhdG9yIGltcG9ydCBJT1NTaW11bGF0b3JQb3J0CiBmcm9tIHdlYmtpdHB5LnBvcnQgaW1w
b3J0IGlvc190ZXN0Y2FzZQogZnJvbSB3ZWJraXRweS5wb3J0IGltcG9ydCBwb3J0X3Rlc3RjYXNl
Ci1mcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0
Q2FwdHVyZQogZnJvbSB3ZWJraXRweS5wb3J0LmNvbmZpZyBpbXBvcnQgY2xlYXJfY2FjaGVkX2Nv
bmZpZ3VyYXRpb24KIGZyb20gd2Via2l0cHkudG9vbC5tb2NrdG9vbCBpbXBvcnQgTW9ja09wdGlv
bnMKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmVfbW9jayBpbXBvcnQgTW9j
a0V4ZWN1dGl2ZTIsIFNjcmlwdEVycm9yCiBmcm9tIHdlYmtpdHB5Lnhjb2RlLmRldmljZV90eXBl
IGltcG9ydCBEZXZpY2VUeXBlCiAKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBPdXRwdXRDYXB0
dXJlCisKIAogY2xhc3MgSU9TU2ltdWxhdG9yVGVzdChpb3NfdGVzdGNhc2UuSU9TVGVzdCk6CiAg
ICAgIyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzEw
NwpAQCAtODgsOCArODksMTIgQEAgY2xhc3MgSU9TU2ltdWxhdG9yVGVzdChpb3NfdGVzdGNhc2Uu
SU9TVAogCiAgICAgICAgIHBvcnQgPSBzZWxmLm1ha2VfcG9ydCgpCiAgICAgICAgIHBvcnQuX2V4
ZWN1dGl2ZSA9IE1vY2tFeGVjdXRpdmUyKHJ1bl9jb21tYW5kX2ZuPXRocm93aW5nX3J1bl9jb21t
YW5kKQotICAgICAgICBleHBlY3RlZF9zdGRvdXQgPSAiWyd4Y3J1bicsICctLXNkaycsICdpcGhv
bmVzaW11bGF0b3InLCAnLWZpbmQnLCAndGVzdCddXG4iCi0gICAgICAgIE91dHB1dENhcHR1cmUo
KS5hc3NlcnRfb3V0cHV0cyhzZWxmLCBwb3J0LnhjcnVuX2ZpbmQsIGFyZ3M9Wyd0ZXN0JywgJ2Zh
bGxpbmcnXSwgZXhwZWN0ZWRfc3Rkb3V0PWV4cGVjdGVkX3N0ZG91dCkKKyAgICAgICAgd2l0aCBP
dXRwdXRDYXB0dXJlKCkgYXMgY2FwdHVyZWQ6CisgICAgICAgICAgICBwb3J0LnhjcnVuX2ZpbmQo
J3Rlc3QnLCAnZmFsbGluZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAg
ICBjYXB0dXJlZC5zdGRvdXQuZ2V0dmFsdWUoKSwKKyAgICAgICAgICAgICJbJ3hjcnVuJywgJy0t
c2RrJywgJ2lwaG9uZXNpbXVsYXRvcicsICctZmluZCcsICd0ZXN0J11cbiIsCisgICAgICAgICkK
IAogICAgIGRlZiB0ZXN0X2xheW91dF90ZXN0X3NlYXJjaHBhdGhfd2l0aF9hcHBsZV9hZGRpdGlv
bnMoc2VsZik6CiAgICAgICAgIHdpdGggcG9ydF90ZXN0Y2FzZS5iaW5kX21vY2tfYXBwbGVfYWRk
aXRpb25zKCk6CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvbGVha2RldGVjdG9y
X3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9s
ZWFrZGV0ZWN0b3JfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2NTc3MykKKysrIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvcG9ydC9sZWFrZGV0ZWN0b3JfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkK
QEAgLTEsNCArMSw1IEBACiAjIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMzAsOSArMzEs
MTAgQEAgaW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20gd2Via2l0cHkucG9ydC5sZWFrZGV0ZWN0b3Ig
aW1wb3J0IExlYWtEZXRlY3RvcgogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0
ZW1fbW9jayBpbXBvcnQgTW9ja0ZpbGVTeXN0ZW0KLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3Rl
bS5vdXRwdXRjYXB0dXJlIGltcG9ydCBPdXRwdXRDYXB0dXJlCiBmcm9tIHdlYmtpdHB5LmNvbW1v
bi5zeXN0ZW0uZXhlY3V0aXZlX21vY2sgaW1wb3J0IE1vY2tFeGVjdXRpdmUKIAorZnJvbSB3ZWJr
aXRjb3JlcHkgaW1wb3J0IE91dHB1dENhcHR1cmUKKwogCiBjbGFzcyBMZWFrRGV0ZWN0b3JUZXN0
KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgX21vY2tfcG9ydChzZWxmKToKQEAgLTEzOSw4
ICsxNDEsMTIgQEAgdG90YWw6IDUsODg4IGJ5dGVzICgwIGJ5dGVzIGV4Y2x1ZGVkKS4iIgogICAg
ICAgICBkZXRlY3Rvci5fcG9ydC5fcnVuX3NjcmlwdCA9IG1vY2tfcnVuX3NjcmlwdAogCiAgICAg
ICAgIGxlYWtfZmlsZXMgPSBbJy9tb2NrLXJlc3VsdHMvRHVtcFJlbmRlclRyZWUtMTIzNC1sZWFr
cy50eHQnLCAnL21vY2stcmVzdWx0cy9EdW1wUmVuZGVyVHJlZS0xMjM1LWxlYWtzLnR4dCddCi0g
ICAgICAgIGV4cGVjdGVkX3N0ZG91dCA9ICJNT0NLIF9ydW5fc2NyaXB0OiBwYXJzZS1tYWxsb2Mt
aGlzdG9yeSBbJy0tbWVyZ2UtZGVwdGgnLCA1LCAnL21vY2stcmVzdWx0cy9EdW1wUmVuZGVyVHJl
ZS0xMjM0LWxlYWtzLnR4dCcsICcvbW9jay1yZXN1bHRzL0R1bXBSZW5kZXJUcmVlLTEyMzUtbGVh
a3MudHh0J11cbiIKLSAgICAgICAgcmVzdWx0c190dXBsZSA9IE91dHB1dENhcHR1cmUoKS5hc3Nl
cnRfb3V0cHV0cyhzZWxmLCBkZXRlY3Rvci5jb3VudF90b3RhbF9ieXRlc19hbmRfdW5pcXVlX2xl
YWtzLCBbbGVha19maWxlc10sIGV4cGVjdGVkX3N0ZG91dD1leHBlY3RlZF9zdGRvdXQpCisgICAg
ICAgIHdpdGggT3V0cHV0Q2FwdHVyZSgpIGFzIGNhcHR1cmVkOgorICAgICAgICAgICAgcmVzdWx0
c190dXBsZSA9IGRldGVjdG9yLmNvdW50X3RvdGFsX2J5dGVzX2FuZF91bmlxdWVfbGVha3MobGVh
a19maWxlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNhcHR1cmVk
LnN0ZG91dC5nZXR2YWx1ZSgpLAorICAgICAgICAgICAgIk1PQ0sgX3J1bl9zY3JpcHQ6IHBhcnNl
LW1hbGxvYy1oaXN0b3J5IFsnLS1tZXJnZS1kZXB0aCcsIDUsICcvbW9jay1yZXN1bHRzL0R1bXBS
ZW5kZXJUcmVlLTEyMzQtbGVha3MudHh0JywgJy9tb2NrLXJlc3VsdHMvRHVtcFJlbmRlclRyZWUt
MTIzNS1sZWFrcy50eHQnXVxuIiwKKyAgICAgICAgKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHJlc3VsdHNfdHVwbGUsICgiNSw4ODggYnl0ZXMiLCAyKSkKIAogICAgIGRlZiB0ZXN0X2NvdW50
X3RvdGFsX2xlYWtzKHNlbGYpOgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2xl
YWtkZXRlY3Rvcl92YWxncmluZF91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3BvcnQvbGVha2RldGVjdG9yX3ZhbGdyaW5kX3VuaXR0ZXN0LnB5CShyZXZp
c2lvbiAyNjU3NzMpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvbGVha2RldGVjdG9y
X3ZhbGdyaW5kX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yMywxMyArMjMsMTMgQEAK
ICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKK2ltcG9ydCBsb2dnaW5nCiBpbXBvcnQg
dW5pdHRlc3QKIAotZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IHN0cmluZ191dGlscworZnJvbSB3
ZWJraXRjb3JlcHkgaW1wb3J0IHN0cmluZ191dGlscywgT3V0cHV0Q2FwdHVyZQogCiBmcm9tIHdl
YmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlX21vY2sgaW1wb3J0IE1vY2tFeGVjdXRpdmUy
CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbV9tb2NrIGltcG9ydCBNb2Nr
RmlsZVN5c3RlbQotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLm91dHB1dGNhcHR1cmUgaW1w
b3J0IE91dHB1dENhcHR1cmUKIGZyb20gd2Via2l0cHkucG9ydC5sZWFrZGV0ZWN0b3JfdmFsZ3Jp
bmQgaW1wb3J0IExlYWtEZXRlY3RvclZhbGdyaW5kCiAKIApAQCAtODIzLDcgKzgyMyw5IEBAIGNs
YXNzIExlYWtEZXRlY3RvclZhbGdyaW5kVGVzdCh1bml0dGVzdC4KIAogICAgICAgICBsZWFrZGV0
ZWN0b3JfdmFsZ3JpbmQgPSBMZWFrRGV0ZWN0b3JWYWxncmluZChNb2NrRXhlY3V0aXZlMihydW5f
Y29tbWFuZF9mbj1tb2NrX3J1bl9jcHBmaWx0X2NvbW1hbmQpLCBNb2NrRmlsZVN5c3RlbShmaWxl
cyksICcvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvJykKIAotICAgICAgICBPdXRwdXRDYXB0dXJl
KCkuYXNzZXJ0X291dHB1dHMoc2VsZiwgbGVha2RldGVjdG9yX3ZhbGdyaW5kLnBhcnNlX2FuZF9w
cmludF9sZWFrc19kZXRhaWwsIFtmaWxlc10sIGV4cGVjdGVkX2xvZ3M9bWFrZV9tb2NrX3ZhbGdy
aW5kX3Jlc3VsdHMoKSkKKyAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlKGxldmVsPWxvZ2dpbmcu
SU5GTykgYXMgY2FwdHVyZWQ6CisgICAgICAgICAgICBsZWFrZGV0ZWN0b3JfdmFsZ3JpbmQucGFy
c2VfYW5kX3ByaW50X2xlYWtzX2RldGFpbChmaWxlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChjYXB0dXJlZC5yb290LmxvZy5nZXR2YWx1ZSgpLCBtYWtlX21vY2tfdmFsZ3JpbmRfcmVzdWx0
cygpKQogCiAgICAgZGVmIHRlc3RfcGFyc2VfYW5kX3ByaW50X2xlYWtzX2RldGFpbF9pbmNvbXBs
ZXRlKHNlbGYpOgogICAgICAgICBtb2NrX2luY29tcGxldGVfdmFsZ3JpbmRfb3V0cHV0ID0gbWFr
ZV9tb2NrX2luY29tcGxldGVfdmFsZ3JpbmRfb3V0cHV0KCdEdW1wUmVuZGVyVHJlZScsIDI4NTMx
LCAnZThjN2Q3YjgzYmU0MTFlMzkwYzlkNDNkN2UwMWJhMDgnKQpAQCAtODMxLDE0ICs4MzMsMTgg
QEAgY2xhc3MgTGVha0RldGVjdG9yVmFsZ3JpbmRUZXN0KHVuaXR0ZXN0LgogICAgICAgICBmaWxl
c1snL3RtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2RydC0yODUzMS1lOGM3ZDdiODNiZTQxMWUzOTBj
OWQ0M2Q3ZTAxYmEwOC1sZWFrcy54bWwnXSA9IG1vY2tfaW5jb21wbGV0ZV92YWxncmluZF9vdXRw
dXQKICAgICAgICAgbGVha2RldGVjdG9yX3ZhbGdyaW5kID0gTGVha0RldGVjdG9yVmFsZ3JpbmQo
TW9ja0V4ZWN1dGl2ZTIoKSwgTW9ja0ZpbGVTeXN0ZW0oZmlsZXMpLCAnL3RtcC9sYXlvdXQtdGVz
dC1yZXN1bHRzLycpCiAKLSAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNl
bGYsIGxlYWtkZXRlY3Rvcl92YWxncmluZC5wYXJzZV9hbmRfcHJpbnRfbGVha3NfZGV0YWlsLCBb
ZmlsZXNdLCBleHBlY3RlZF9sb2dzPW1ha2VfbW9ja192YWxncmluZF9yZXN1bHRzX2luY29tcGxl
dGUoKSkKKyAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlKGxldmVsPWxvZ2dpbmcuSU5GTykgYXMg
Y2FwdHVyZWQ6CisgICAgICAgICAgICBsZWFrZGV0ZWN0b3JfdmFsZ3JpbmQucGFyc2VfYW5kX3By
aW50X2xlYWtzX2RldGFpbChmaWxlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYXB0dXJl
ZC5yb290LmxvZy5nZXR2YWx1ZSgpLCBtYWtlX21vY2tfdmFsZ3JpbmRfcmVzdWx0c19pbmNvbXBs
ZXRlKCkpCiAKICAgICBkZWYgdGVzdF9wYXJzZV9hbmRfcHJpbnRfbGVha3NfZGV0YWlsX2VtcHR5
KHNlbGYpOgogICAgICAgICBmaWxlcyA9IHt9CiAgICAgICAgIGZpbGVzWycvdG1wL0xvZ3MvbGF5
b3V0LXRlc3QtcmVzdWx0cy9kcnQtMjg1MzItZWJjOWE2YzYzYmU0MTFlMzk5ZDRkNDNkN2UwMWJh
MDgtbGVha3MueG1sJ10gPSAiIgogICAgICAgICBsZWFrZGV0ZWN0b3JfdmFsZ3JpbmQgPSBMZWFr
RGV0ZWN0b3JWYWxncmluZChNb2NrRXhlY3V0aXZlMigpLCBNb2NrRmlsZVN5c3RlbShmaWxlcyks
ICcvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvJykKIAotICAgICAgICBPdXRwdXRDYXB0dXJlKCku
YXNzZXJ0X291dHB1dHMoc2VsZiwgbGVha2RldGVjdG9yX3ZhbGdyaW5kLnBhcnNlX2FuZF9wcmlu
dF9sZWFrc19kZXRhaWwsIFtmaWxlc10sIGV4cGVjdGVkX2xvZ3M9bWFrZV9tb2NrX3ZhbGdyaW5k
X3Jlc3VsdHNfZW1wdHkoKSkKKyAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlKGxldmVsPWxvZ2dp
bmcuSU5GTykgYXMgY2FwdHVyZWQ6CisgICAgICAgICAgICBsZWFrZGV0ZWN0b3JfdmFsZ3JpbmQu
cGFyc2VfYW5kX3ByaW50X2xlYWtzX2RldGFpbChmaWxlcykKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChjYXB0dXJlZC5yb290LmxvZy5nZXR2YWx1ZSgpLCBtYWtlX21vY2tfdmFsZ3JpbmRfcmVz
dWx0c19lbXB0eSgpKQogCiAgICAgZGVmIHRlc3RfcGFyc2VfYW5kX3ByaW50X2xlYWtzX2RldGFp
bF9taXNmb3JtYXR0ZWQoc2VsZik6CiAgICAgICAgIHNlbGYubWF4RGlmZiA9IE5vbmUKQEAgLTg0
Nyw0ICs4NTMsNiBAQCBjbGFzcyBMZWFrRGV0ZWN0b3JWYWxncmluZFRlc3QodW5pdHRlc3QuCiAg
ICAgICAgIGZpbGVzWycvdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvZHJ0LTI4NTMzLWZhNmQwY2Q2
M2JlNDExZTM5YzcyZDQzZDdlMDFiYTA4LWxlYWtzLnhtbCddID0gbWlzZm9ybWF0dGVkX21vY2tf
dmFsZ3JpbmRfb3V0cHV0CiAgICAgICAgIGxlYWtkZXRlY3Rvcl92YWxncmluZCA9IExlYWtEZXRl
Y3RvclZhbGdyaW5kKE1vY2tFeGVjdXRpdmUyKCksIE1vY2tGaWxlU3lzdGVtKGZpbGVzKSwgJy90
bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy8nKQogCi0gICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3Nl
cnRfb3V0cHV0cyhzZWxmLCBsZWFrZGV0ZWN0b3JfdmFsZ3JpbmQucGFyc2VfYW5kX3ByaW50X2xl
YWtzX2RldGFpbCwgW2ZpbGVzXSwgZXhwZWN0ZWRfbG9ncz1tYWtlX21vY2tfdmFsZ3JpbmRfcmVz
dWx0c19taXNmb3JtYXR0ZWQoKSkKKyAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlKGxldmVsPWxv
Z2dpbmcuSU5GTykgYXMgY2FwdHVyZWQ6CisgICAgICAgICAgICBsZWFrZGV0ZWN0b3JfdmFsZ3Jp
bmQucGFyc2VfYW5kX3ByaW50X2xlYWtzX2RldGFpbChmaWxlcykKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChjYXB0dXJlZC5yb290LmxvZy5nZXR2YWx1ZSgpLCBtYWtlX21vY2tfdmFsZ3JpbmRf
cmVzdWx0c19taXNmb3JtYXR0ZWQoKSkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9y
dC9tYWNfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9w
b3J0L21hY191bml0dGVzdC5weQkocmV2aXNpb24gMjY1NzczKQorKysgVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9wb3J0L21hY191bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKICMgQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0jIENvcHlyaWdodCAoQykgMjAxNC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMgQ29weXJpZ2h0IChDKSAyMDE0LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMjcsMTIgKzI3LDEzIEBA
CiAjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi1mcm9tIHdlYmtpdGNvcmVweSBpbXBv
cnQgVmVyc2lvbgoraW1wb3J0IGxvZ2dpbmcKKworZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IFZl
cnNpb24sIE91dHB1dENhcHR1cmUKIAogZnJvbSB3ZWJraXRweS5wb3J0Lm1hYyBpbXBvcnQgTWFj
UG9ydAogZnJvbSB3ZWJraXRweS5wb3J0IGltcG9ydCBkYXJ3aW5fdGVzdGNhc2UKIGZyb20gd2Vi
a2l0cHkucG9ydCBpbXBvcnQgcG9ydF90ZXN0Y2FzZQotZnJvbSB3ZWJraXRweS5jb21tb24uc3lz
dGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0IE91dHB1dENhcHR1cmUKIGZyb20gd2Via2l0cHkudG9v
bC5tb2NrdG9vbCBpbXBvcnQgTW9ja09wdGlvbnMKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3Rl
bS5leGVjdXRpdmVfbW9jayBpbXBvcnQgTW9ja0V4ZWN1dGl2ZSwgTW9ja0V4ZWN1dGl2ZTIsIFNj
cmlwdEVycm9yCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi52ZXJzaW9uX25hbWVfbWFwIGltcG9ydCBW
ZXJzaW9uTmFtZU1hcApAQCAtOTEsOCArOTIsMTIgQEAgY2xhc3MgTWFjVGVzdChkYXJ3aW5fdGVz
dGNhc2UuRGFyd2luVGVzdAogICAgICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQoKQogICAgICAg
ICAjIERlbGF5IHNldHRpbmcgYSBzaG91bGRfbG9nIGV4ZWN1dGl2ZSB0byBhdm9pZCBsb2dnaW5n
IGZyb20gTWFjUG9ydC5fX2luaXRfXy4KICAgICAgICAgcG9ydC5fZXhlY3V0aXZlID0gTW9ja0V4
ZWN1dGl2ZShzaG91bGRfbG9nPVRydWUpCi0gICAgICAgIGV4cGVjdGVkX2xvZ3MgPSAiTU9DSyBw
b3BlbjogWydUb29scy9TY3JpcHRzL3J1bi1zYWZhcmknLCAnLS1yZWxlYXNlJywgJy0tbm8tc2F2
ZWQtc3RhdGUnLCAnLU5TT3BlbicsICd0ZXN0Lmh0bWwnXSwgY3dkPS9tb2NrLWNoZWNrb3V0XG4i
Ci0gICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCBwb3J0LnNob3df
cmVzdWx0c19odG1sX2ZpbGUsIFsidGVzdC5odG1sIl0sIGV4cGVjdGVkX2xvZ3M9ZXhwZWN0ZWRf
bG9ncykKKyAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlKGxldmVsPWxvZ2dpbmcuSU5GTykgYXMg
Y2FwdHVyZWQ6CisgICAgICAgICAgICBwb3J0LnNob3dfcmVzdWx0c19odG1sX2ZpbGUoJ3Rlc3Qu
aHRtbCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBjYXB0dXJlZC5y
b290LmxvZy5nZXR2YWx1ZSgpLAorICAgICAgICAgICAgIk1PQ0sgcG9wZW46IFsnVG9vbHMvU2Ny
aXB0cy9ydW4tc2FmYXJpJywgJy0tcmVsZWFzZScsICctLW5vLXNhdmVkLXN0YXRlJywgJy1OU09w
ZW4nLCAndGVzdC5odG1sJ10sIGN3ZD0vbW9jay1jaGVja291dFxuIgorICAgICAgICApCiAKICAg
ICBkZWYgdGVzdF9vcGVyYXRpbmdfc3lzdGVtKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKCdtYWMnLCBzZWxmLm1ha2VfcG9ydCgpLm9wZXJhdGluZ19zeXN0ZW0oKSkKQEAgLTEwNCwx
NCArMTA5LDIyIEBAIGNsYXNzIE1hY1Rlc3QoZGFyd2luX3Rlc3RjYXNlLkRhcndpblRlc3QKIAog
ICAgICAgICBieXRlc19mb3JfZHJ0ID0gMjAwICogMTAyNCAqIDEwMjQKICAgICAgICAgcG9ydC5o
b3N0LnBsYXRmb3JtLnRvdGFsX2J5dGVzX21lbW9yeSA9IGxhbWJkYTogYnl0ZXNfZm9yX2RydAot
ICAgICAgICBleHBlY3RlZF9sb2dzID0gIlRoaXMgbWFjaGluZSBjb3VsZCBzdXBwb3J0IDIgY2hp
bGQgcHJvY2Vzc2VzLCBidXQgb25seSBoYXMgZW5vdWdoIG1lbW9yeSBmb3IgMS5cbiIKLSAgICAg
ICAgY2hpbGRfcHJvY2Vzc2VzID0gT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYs
IHBvcnQuZGVmYXVsdF9jaGlsZF9wcm9jZXNzZXMsICgpLCBleHBlY3RlZF9sb2dzPWV4cGVjdGVk
X2xvZ3MpCisgICAgICAgIHdpdGggT3V0cHV0Q2FwdHVyZShsZXZlbD1sb2dnaW5nLklORk8pIGFz
IGNhcHR1cmVkOgorICAgICAgICAgICAgY2hpbGRfcHJvY2Vzc2VzID0gcG9ydC5kZWZhdWx0X2No
aWxkX3Byb2Nlc3NlcygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBj
YXB0dXJlZC5yb290LmxvZy5nZXR2YWx1ZSgpLAorICAgICAgICAgICAgIlRoaXMgbWFjaGluZSBj
b3VsZCBzdXBwb3J0IDIgY2hpbGQgcHJvY2Vzc2VzLCBidXQgb25seSBoYXMgZW5vdWdoIG1lbW9y
eSBmb3IgMS5cbiIKKyAgICAgICAgKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoaWxkX3By
b2Nlc3NlcywgMSkKIAogICAgICAgICAjIE1ha2Ugc3VyZSB0aGF0IHdlIGFsd2F5cyB1c2Ugb25l
IHByb2Nlc3MsIGV2ZW4gaWYgd2UgZG9uJ3QgaGF2ZSB0aGUgbWVtb3J5IGZvciBpdC4KICAgICAg
ICAgcG9ydC5ob3N0LnBsYXRmb3JtLnRvdGFsX2J5dGVzX21lbW9yeSA9IGxhbWJkYTogYnl0ZXNf
Zm9yX2RydCAtIDEKLSAgICAgICAgZXhwZWN0ZWRfbG9ncyA9ICJUaGlzIG1hY2hpbmUgY291bGQg
c3VwcG9ydCAyIGNoaWxkIHByb2Nlc3NlcywgYnV0IG9ubHkgaGFzIGVub3VnaCBtZW1vcnkgZm9y
IDEuXG4iCi0gICAgICAgIGNoaWxkX3Byb2Nlc3NlcyA9IE91dHB1dENhcHR1cmUoKS5hc3NlcnRf
b3V0cHV0cyhzZWxmLCBwb3J0LmRlZmF1bHRfY2hpbGRfcHJvY2Vzc2VzLCAoKSwgZXhwZWN0ZWRf
bG9ncz1leHBlY3RlZF9sb2dzKQorICAgICAgICB3aXRoIE91dHB1dENhcHR1cmUobGV2ZWw9bG9n
Z2luZy5JTkZPKSBhcyBjYXB0dXJlZDoKKyAgICAgICAgICAgIGNoaWxkX3Byb2Nlc3NlcyA9IHBv
cnQuZGVmYXVsdF9jaGlsZF9wcm9jZXNzZXMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAor
ICAgICAgICAgICAgY2FwdHVyZWQucm9vdC5sb2cuZ2V0dmFsdWUoKSwKKyAgICAgICAgICAgICJU
aGlzIG1hY2hpbmUgY291bGQgc3VwcG9ydCAyIGNoaWxkIHByb2Nlc3NlcywgYnV0IG9ubHkgaGFz
IGVub3VnaCBtZW1vcnkgZm9yIDEuXG4iCisgICAgICAgICkKICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChjaGlsZF9wcm9jZXNzZXMsIDEpCiAKICAgICBkZWYgdGVzdF8zMmJpdChzZWxmKToKQEAg
LTE2OSw4ICsxODIsMTIgQEAgY2xhc3MgTWFjVGVzdChkYXJ3aW5fdGVzdGNhc2UuRGFyd2luVGVz
dAogCiAgICAgICAgIHBvcnQgPSBzZWxmLm1ha2VfcG9ydCgpCiAgICAgICAgIHBvcnQuX2V4ZWN1
dGl2ZSA9IE1vY2tFeGVjdXRpdmUyKHJ1bl9jb21tYW5kX2ZuPXRocm93aW5nX3J1bl9jb21tYW5k
KQotICAgICAgICBleHBlY3RlZF9zdGRvdXQgPSAiWyd4Y3J1bicsICctLXNkaycsICdtYWNvc3gn
LCAnLWZpbmQnLCAndGVzdCddXG4iCi0gICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0
cHV0cyhzZWxmLCBwb3J0LnhjcnVuX2ZpbmQsIGFyZ3M9Wyd0ZXN0JywgJ2ZhbGxpbmcnXSwgZXhw
ZWN0ZWRfc3Rkb3V0PWV4cGVjdGVkX3N0ZG91dCkKKyAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJl
KCkgYXMgY2FwdHVyZWQ6CisgICAgICAgICAgICBwb3J0LnhjcnVuX2ZpbmQoJ3Rlc3QnLCAnZmFs
bGluZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBjYXB0dXJlZC5z
dGRvdXQuZ2V0dmFsdWUoKSwKKyAgICAgICAgICAgICJbJ3hjcnVuJywgJy0tc2RrJywgJ21hY29z
eCcsICctZmluZCcsICd0ZXN0J11cbiIKKyAgICAgICAgKQogCiAgICAgZGVmIHRlc3RfbGF5b3V0
X3Rlc3Rfc2VhcmNocGF0aF93aXRoX2FwcGxlX2FkZGl0aW9ucyhzZWxmKToKICAgICAgICAgd2l0
aCBwb3J0X3Rlc3RjYXNlLmJpbmRfbW9ja19hcHBsZV9hZGRpdGlvbnMoKToKSW5kZXg6IFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5CShyZXZpc2lvbiAyNjU3
NzMpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvcG9ydF90ZXN0Y2FzZS5weQkod29y
a2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNiBAQCBmcm9tIGNvbnRleHRsaWIgaW1wb3J0IGNvbnRl
eHRtYW5hZ2VyCiAKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmVfbW9jayBp
bXBvcnQgTW9ja0V4ZWN1dGl2ZQogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0
ZW1fbW9jayBpbXBvcnQgTW9ja0ZpbGVTeXN0ZW0KLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3Rl
bS5vdXRwdXRjYXB0dXJlIGltcG9ydCBPdXRwdXRDYXB0dXJlCiBmcm9tIHdlYmtpdHB5LmNvbW1v
bi5zeXN0ZW0uc3lzdGVtaG9zdF9tb2NrIGltcG9ydCBNb2NrU3lzdGVtSG9zdAogZnJvbSB3ZWJr
aXRweS5jb21tb24udmVyc2lvbl9uYW1lX21hcCBpbXBvcnQgSU5URVJOQUxfVEFCTEUKIGZyb20g
d2Via2l0cHkucG9ydC5iYXNlIGltcG9ydCBQb3J0CkBAIC01MSw2ICs1MCw4IEBAIGZyb20gd2Vi
a2l0cHkucG9ydC5zZXJ2ZXJfcHJvY2Vzc19tb2NrIGkKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rl
c3RzLnNlcnZlcnMgaW1wb3J0IGh0dHBfc2VydmVyX2Jhc2UKIGZyb20gd2Via2l0cHkudG9vbC5t
b2NrdG9vbCBpbXBvcnQgTW9ja09wdGlvbnMKIAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IE91
dHB1dENhcHR1cmUKKwogCiAjIEZJWE1FOiBnZXQgcmlkIG9mIHRoaXMgZml4dHVyZQogY2xhc3Mg
VGVzdFdlYktpdFBvcnQoUG9ydCk6CkBAIC01MzQsMzggKzUzNSw1MyBAQCBjbGFzcyBQb3J0VGVz
dENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnLmpv
aW4obGlzdChwb3J0LmV4cGVjdGF0aW9uc19kaWN0KCkudmFsdWVzKCkpKSwgJ0JVR19URVNURVhQ
RUNUQVRJT05TIFNLSVAgOiBmYXN0L2h0bWwvYXJ0aWNsZS1lbGVtZW50Lmh0bWwgPSBGQUlMXG4n
KQogCiAgICAgZGVmIHRlc3RfYnVpbGRfZHJpdmVyKHNlbGYpOgotICAgICAgICBvdXRwdXQgPSBP
dXRwdXRDYXB0dXJlKCkKICAgICAgICAgcG9ydCA9IFRlc3RXZWJLaXRQb3J0KCkKICAgICAgICAg
IyBEZWxheSBzZXR0aW5nIF9leGVjdXRpdmUgdG8gYXZvaWQgbG9nZ2luZyBkdXJpbmcgY29uc3Ry
dWN0aW9uCiAgICAgICAgIHBvcnQuX2V4ZWN1dGl2ZSA9IE1vY2tFeGVjdXRpdmUoc2hvdWxkX2xv
Zz1UcnVlKQogICAgICAgICBwb3J0Ll9vcHRpb25zID0gTW9ja09wdGlvbnMoY29uZmlndXJhdGlv
bj0iUmVsZWFzZSIpICAjIFRoaXMgc2hvdWxkIG5vdCBiZSBuZWNlc3NhcnksIGJ1dCBJIHRoaW5r
IFRlc3RXZWJLaXRQb3J0IGlzIGFjdHVhbGx5IHJlYWRpbmcgZnJvbSBkaXNrIChhbmQgdGh1cyBk
ZXRlY3RzIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24pLgotICAgICAgICBleHBlY3RlZF9sb2dz
ID0gIk1PQ0sgcnVuX2NvbW1hbmQ6IFsnVG9vbHMvU2NyaXB0cy9idWlsZC1kdW1wcmVuZGVydHJl
ZScsICctLXJlbGVhc2UnXSwgY3dkPS9tb2NrLWNoZWNrb3V0LCBlbnY9eydNT0NLX0VOVklST05f
Q09QWSc6ICcxJ31cbiIKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG91dHB1dC5hc3NlcnRfb3V0
cHV0cyhzZWxmLCBwb3J0Ll9idWlsZF9kcml2ZXIsIGV4cGVjdGVkX2xvZ3M9ZXhwZWN0ZWRfbG9n
cykpCisgICAgICAgIHdpdGggT3V0cHV0Q2FwdHVyZShsZXZlbD1sb2dnaW5nLklORk8pIGFzIGNh
cHR1cmVkOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvcnQuX2J1aWxkX2RyaXZlcigp
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY2FwdHVyZWQucm9vdC5s
b2cuZ2V0dmFsdWUoKSwKKyAgICAgICAgICAgICJNT0NLIHJ1bl9jb21tYW5kOiBbJ1Rvb2xzL1Nj
cmlwdHMvYnVpbGQtZHVtcHJlbmRlcnRyZWUnLCAnLS1yZWxlYXNlJ10sIGN3ZD0vbW9jay1jaGVj
a291dCwgZW52PXsnTU9DS19FTlZJUk9OX0NPUFknOiAnMSd9XG4iLAorICAgICAgICApCiAKICAg
ICAgICAgIyBNYWtlIHN1cmUgV2ViS2l0VGVzdFJ1bm5lciBpcyB1c2VkLgogICAgICAgICBwb3J0
Ll9vcHRpb25zID0gTW9ja09wdGlvbnMod2Via2l0X3Rlc3RfcnVubmVyPVRydWUsIGNvbmZpZ3Vy
YXRpb249IlJlbGVhc2UiKQotICAgICAgICBleHBlY3RlZF9sb2dzID0gIk1PQ0sgcnVuX2NvbW1h
bmQ6IFsnVG9vbHMvU2NyaXB0cy9idWlsZC1kdW1wcmVuZGVydHJlZScsICctLXJlbGVhc2UnXSwg
Y3dkPS9tb2NrLWNoZWNrb3V0LCBlbnY9eydNT0NLX0VOVklST05fQ09QWSc6ICcxJ31cbk1PQ0sg
cnVuX2NvbW1hbmQ6IFsnVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXR0ZXN0cnVubmVyJywgJy0t
cmVsZWFzZSddLCBjd2Q9L21vY2stY2hlY2tvdXQsIGVudj17J01PQ0tfRU5WSVJPTl9DT1BZJzog
JzEnfVxuIgotICAgICAgICBzZWxmLmFzc2VydFRydWUob3V0cHV0LmFzc2VydF9vdXRwdXRzKHNl
bGYsIHBvcnQuX2J1aWxkX2RyaXZlciwgZXhwZWN0ZWRfbG9ncz1leHBlY3RlZF9sb2dzKSkKKyAg
ICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlKGxldmVsPWxvZ2dpbmcuSU5GTykgYXMgY2FwdHVyZWQ6
CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocG9ydC5fYnVpbGRfZHJpdmVyKCkpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBjYXB0dXJlZC5yb290LmxvZy5nZXR2
YWx1ZSgpLAorICAgICAgICAgICAgJycnTU9DSyBydW5fY29tbWFuZDogWydUb29scy9TY3JpcHRz
L2J1aWxkLWR1bXByZW5kZXJ0cmVlJywgJy0tcmVsZWFzZSddLCBjd2Q9L21vY2stY2hlY2tvdXQs
IGVudj17J01PQ0tfRU5WSVJPTl9DT1BZJzogJzEnfQorTU9DSyBydW5fY29tbWFuZDogWydUb29s
cy9TY3JpcHRzL2J1aWxkLXdlYmtpdHRlc3RydW5uZXInLCAnLS1yZWxlYXNlJ10sIGN3ZD0vbW9j
ay1jaGVja291dCwgZW52PXsnTU9DS19FTlZJUk9OX0NPUFknOiAnMSd9CisnJycsCisgICAgICAg
ICkKIAogICAgICAgICAjIE1ha2Ugc3VyZSB3ZSBzaG93IHRoZSBidWlsZCBsb2cgd2hlbiAtLXZl
cmJvc2UgaXMgcGFzc2VkLCB3aGljaCB3ZSBzaW11bGF0ZSBieSBzZXR0aW5nIHRoZSBsb2dnaW5n
IGxldmVsIHRvIERFQlVHLgotICAgICAgICBvdXRwdXQuc2V0X2xvZ19sZXZlbChsb2dnaW5nLkRF
QlVHKQogICAgICAgICBwb3J0Ll9vcHRpb25zID0gTW9ja09wdGlvbnMoY29uZmlndXJhdGlvbj0i
UmVsZWFzZSIpCi0gICAgICAgIGV4cGVjdGVkX2xvZ3MgPSAiIiJNT0NLIHJ1bl9jb21tYW5kOiBb
J1Rvb2xzL1NjcmlwdHMvYnVpbGQtZHVtcHJlbmRlcnRyZWUnLCAnLS1yZWxlYXNlJ10sIGN3ZD0v
bW9jay1jaGVja291dCwgZW52PXsnTU9DS19FTlZJUk9OX0NPUFknOiAnMSd9CisgICAgICAgIHdp
dGggT3V0cHV0Q2FwdHVyZShsZXZlbD1sb2dnaW5nLkRFQlVHKSBhcyBjYXB0dXJlZDoKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3J0Ll9idWlsZF9kcml2ZXIoKSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNhcHR1cmVkLnJvb3QubG9nLmdldHZhbHVlKCks
CisgICAgICAgICAgICAnJydNT0NLIHJ1bl9jb21tYW5kOiBbJ1Rvb2xzL1NjcmlwdHMvYnVpbGQt
ZHVtcHJlbmRlcnRyZWUnLCAnLS1yZWxlYXNlJ10sIGN3ZD0vbW9jay1jaGVja291dCwgZW52PXsn
TU9DS19FTlZJUk9OX0NPUFknOiAnMSd9CiBPdXRwdXQgb2YgWydUb29scy9TY3JpcHRzL2J1aWxk
LWR1bXByZW5kZXJ0cmVlJywgJy0tcmVsZWFzZSddOgogTU9DSyBvdXRwdXQgb2YgY2hpbGQgcHJv
Y2VzcwotIiIiCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvdXRwdXQuYXNzZXJ0X291dHB1dHMo
c2VsZiwgcG9ydC5fYnVpbGRfZHJpdmVyLCBleHBlY3RlZF9sb2dzPWV4cGVjdGVkX2xvZ3MpKQot
ICAgICAgICBvdXRwdXQuc2V0X2xvZ19sZXZlbChsb2dnaW5nLklORk8pCisnJycsCisgICAgICAg
ICkKIAogICAgICAgICAjIE1ha2Ugc3VyZSB0aGF0IGZhaWx1cmUgdG8gYnVpbGQgcmV0dXJucyBG
YWxzZS4KICAgICAgICAgcG9ydC5fZXhlY3V0aXZlID0gTW9ja0V4ZWN1dGl2ZShzaG91bGRfbG9n
PVRydWUsIHNob3VsZF90aHJvdz1UcnVlKQorICAgICAgICB3aXRoIE91dHB1dENhcHR1cmUobGV2
ZWw9bG9nZ2luZy5ERUJVRykgYXMgY2FwdHVyZWQ6CisgICAgICAgICAgICBzZWxmLmFzc2VydEZh
bHNlKHBvcnQuX2J1aWxkX2RyaXZlcigpKQogICAgICAgICAjIEJlY2F1c2UgV0syIGN1cnJlbnRs
eSBoYXMgdG8gYnVpbGQgYm90aCB3ZWJraXR0ZXN0cnVubmVyIGFuZCBEUlQsIGlmIERSVCBmYWls
cywgdGhhdCdzIHRoZSBvbmx5IG9uZSBpdCB0cmllcy4KLSAgICAgICAgZXhwZWN0ZWRfbG9ncyA9
ICIiIk1PQ0sgcnVuX2NvbW1hbmQ6IFsnVG9vbHMvU2NyaXB0cy9idWlsZC1kdW1wcmVuZGVydHJl
ZScsICctLXJlbGVhc2UnXSwgY3dkPS9tb2NrLWNoZWNrb3V0LCBlbnY9eydNT0NLX0VOVklST05f
Q09QWSc6ICcxJ30KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNhcHR1
cmVkLnJvb3QubG9nLmdldHZhbHVlKCksCisgICAgICAgICAgICAnJydNT0NLIHJ1bl9jb21tYW5k
OiBbJ1Rvb2xzL1NjcmlwdHMvYnVpbGQtZHVtcHJlbmRlcnRyZWUnLCAnLS1yZWxlYXNlJ10sIGN3
ZD0vbW9jay1jaGVja291dCwgZW52PXsnTU9DS19FTlZJUk9OX0NPUFknOiAnMSd9CiBNT0NLIFNj
cmlwdEVycm9yCiAKIE1PQ0sgb3V0cHV0IG9mIGNoaWxkIHByb2Nlc3MKLSIiIgotICAgICAgICBz
ZWxmLmFzc2VydEZhbHNlKG91dHB1dC5hc3NlcnRfb3V0cHV0cyhzZWxmLCBwb3J0Ll9idWlsZF9k
cml2ZXIsIGV4cGVjdGVkX2xvZ3M9ZXhwZWN0ZWRfbG9ncykpCisnJycsCisgICAgICAgICkKIAog
ICAgIGRlZiBfYXNzZXJ0X2NvbmZpZ19maWxlX2Zvcl9wbGF0Zm9ybShzZWxmLCBwb3J0LCBwbGF0
Zm9ybSwgY29uZmlnX2ZpbGUpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQuX2FwYWNo
ZV9jb25maWdfZmlsZV9uYW1lX2Zvcl9wbGF0Zm9ybShwbGF0Zm9ybSksIGNvbmZpZ19maWxlKQpJ
bmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3NlcnZlcl9wcm9jZXNzX3VuaXR0ZXN0
LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9zZXJ2ZXJfcHJv
Y2Vzc191bml0dGVzdC5weQkocmV2aXNpb24gMjY1NzczKQorKysgVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9wb3J0L3NlcnZlcl9wcm9jZXNzX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0z
NSw3ICszNSw2IEBAIGZyb20gd2Via2l0cHkucG9ydC5mYWN0b3J5IGltcG9ydCBQb3J0RmEKIGZy
b20gd2Via2l0cHkucG9ydCBpbXBvcnQgc2VydmVyX3Byb2Nlc3MKIGZyb20gd2Via2l0cHkuY29t
bW9uLnN5c3RlbS5zeXN0ZW1ob3N0IGltcG9ydCBTeXN0ZW1Ib3N0CiBmcm9tIHdlYmtpdHB5LmNv
bW1vbi5zeXN0ZW0uc3lzdGVtaG9zdF9tb2NrIGltcG9ydCBNb2NrU3lzdGVtSG9zdAotZnJvbSB3
ZWJraXRweS5jb21tb24uc3lzdGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0IE91dHB1dENhcHR1cmUK
IAogCiBjbGFzcyBUcml2aWFsTW9ja1BvcnQob2JqZWN0KToKSW5kZXg6IFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvcG9ydC93YXRjaF9zaW11bGF0b3JfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3dhdGNoX3NpbXVsYXRvcl91bml0dGVzdC5weQko
cmV2aXNpb24gMjY1NzczKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3dhdGNoX3Np
bXVsYXRvcl91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29w
eXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJp
Z2h0IChDKSAyMDE4LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywxMyArMjMsMTQgQEAKIGZyb20gd2Via2l0Y29y
ZXB5IGltcG9ydCBWZXJzaW9uCiAKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRp
dmVfbW9jayBpbXBvcnQgTW9ja0V4ZWN1dGl2ZTIsIFNjcmlwdEVycm9yCi1mcm9tIHdlYmtpdHB5
LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQogZnJvbSB3
ZWJraXRweS5wb3J0LmNvbmZpZyBpbXBvcnQgY2xlYXJfY2FjaGVkX2NvbmZpZ3VyYXRpb24KIGZy
b20gd2Via2l0cHkucG9ydC53YXRjaF9zaW11bGF0b3IgaW1wb3J0IFdhdGNoU2ltdWxhdG9yUG9y
dAogZnJvbSB3ZWJraXRweS5wb3J0IGltcG9ydCB3YXRjaF90ZXN0Y2FzZQogZnJvbSB3ZWJraXRw
eS50b29sLm1vY2t0b29sIGltcG9ydCBNb2NrT3B0aW9ucwogZnJvbSB3ZWJraXRweS54Y29kZS5k
ZXZpY2VfdHlwZSBpbXBvcnQgRGV2aWNlVHlwZQogCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQg
T3V0cHV0Q2FwdHVyZQorCiAKIGNsYXNzIFdhdGNoU2ltdWxhdG9yVGVzdCh3YXRjaF90ZXN0Y2Fz
ZS5XYXRjaFRlc3QpOgogICAgICMgRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzMxMDcKQEAgLTc1LDggKzc2LDkgQEAgY2xhc3MgV2F0Y2hTaW11bGF0b3JU
ZXN0KHdhdGNoX3Rlc3RjYXNlLgogCiAgICAgICAgIHBvcnQgPSBzZWxmLm1ha2VfcG9ydChvcHRp
b25zPU1vY2tPcHRpb25zKGFyY2hpdGVjdHVyZT0naTM4NicpKQogICAgICAgICBwb3J0Ll9leGVj
dXRpdmUgPSBNb2NrRXhlY3V0aXZlMihydW5fY29tbWFuZF9mbj10aHJvd2luZ19ydW5fY29tbWFu
ZCkKLSAgICAgICAgZXhwZWN0ZWRfc3Rkb3V0ID0gIlsneGNydW4nLCAnLS1zZGsnLCAnd2F0Y2hz
aW11bGF0b3InLCAnLWZpbmQnLCAndGVzdCddXG4iCi0gICAgICAgIE91dHB1dENhcHR1cmUoKS5h
c3NlcnRfb3V0cHV0cyhzZWxmLCBwb3J0LnhjcnVuX2ZpbmQsIGFyZ3M9Wyd0ZXN0JywgJ2ZhbGxp
bmcnXSwgZXhwZWN0ZWRfc3Rkb3V0PWV4cGVjdGVkX3N0ZG91dCkKKyAgICAgICAgd2l0aCBPdXRw
dXRDYXB0dXJlKCkgYXMgY2FwdHVyZWQ6CisgICAgICAgICAgICBwb3J0LnhjcnVuX2ZpbmQoJ3Rl
c3QnLCAnZmFsbGluZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQuc3Rkb3V0
LmdldHZhbHVlKCksICJbJ3hjcnVuJywgJy0tc2RrJywgJ3dhdGNoc2ltdWxhdG9yJywgJy1maW5k
JywgJ3Rlc3QnXVxuIikKIAogICAgIGRlZiB0ZXN0X21heF9jaGlsZF9wcm9jZXNzZXMoc2VsZik6
CiAgICAgICAgIHBvcnQgPSBzZWxmLm1ha2VfcG9ydCgpCkluZGV4OiBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3BvcnQvd2VzdG9uZHJpdmVyX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvcG9ydC93ZXN0b25kcml2ZXJfdW5pdHRlc3QucHkJKHJldmlzaW9u
IDI2NTc3MykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC93ZXN0b25kcml2ZXJfdW5p
dHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw1IEBACiAjIENvcHlyaWdodCAoQykg
MjAxMyBJZ2FsaWEgUy5MLgorIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMzEsMTMg
KzMyLDE0IEBAIGltcG9ydCByZQogaW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20gd2Via2l0cHkuY29t
bW9uLnN5c3RlbS5maWxlc3lzdGVtX21vY2sgaW1wb3J0IE1vY2tGaWxlU3lzdGVtCi1mcm9tIHdl
YmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQog
ZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnN5c3RlbWhvc3RfbW9jayBpbXBvcnQgTW9ja1N5
c3RlbUhvc3QKIGZyb20gd2Via2l0cHkucG9ydCBpbXBvcnQgUG9ydAogZnJvbSB3ZWJraXRweS5w
b3J0LnNlcnZlcl9wcm9jZXNzX21vY2sgaW1wb3J0IE1vY2tTZXJ2ZXJQcm9jZXNzCiBmcm9tIHdl
YmtpdHB5LnBvcnQud2VzdG9uZHJpdmVyIGltcG9ydCBXZXN0b25Ecml2ZXIKIGZyb20gd2Via2l0
cHkudG9vbC5tb2NrdG9vbCBpbXBvcnQgTW9ja09wdGlvbnMKIAorZnJvbSB3ZWJraXRjb3JlcHkg
aW1wb3J0IE91dHB1dENhcHR1cmUKKwogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9f
KQogCiAKQEAgLTY0LDE2ICs2NiwxOSBAQCBjbGFzcyBXZXN0b25Ecml2ZXJUZXN0KHVuaXR0ZXN0
LlRlc3RDYXNlCiAKICAgICBkZWYgdGVzdF9zdGFydChzZWxmKToKICAgICAgICAgZHJpdmVyID0g
c2VsZi5tYWtlX2RyaXZlcigpCi0gICAgICAgIG91dHB1dF9jYXB0dXJlID0gT3V0cHV0Q2FwdHVy
ZSgpCi0KLSAgICAgICAgb3V0cHV0X2NhcHR1cmUuY2FwdHVyZV9vdXRwdXQoKQotICAgICAgICBk
cml2ZXIuc3RhcnQocGl4ZWxfdGVzdHM9VHJ1ZSwgcGVyX3Rlc3RfYXJncz1bXSkKLSAgICAgICAg
XywgXywgbG9ncyA9IG91dHB1dF9jYXB0dXJlLnJlc3RvcmVfb3V0cHV0KCkKKyAgICAgICAgd2l0
aCBPdXRwdXRDYXB0dXJlKGxldmVsPWxvZ2dpbmcuSU5GTykgYXMgY2FwdHVyZWQ6CisgICAgICAg
ICAgICBkcml2ZXIuc3RhcnQocGl4ZWxfdGVzdHM9VHJ1ZSwgcGVyX3Rlc3RfYXJncz1bXSkKIAot
ICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gociJNT0NLIHBvcGVuOiBcWyd3ZXN0b24n
LCAnLS1zb2NrZXQ9V0tUZXN0aW5nLXdlc3Rvbi1bMC05YS1mXXszMn0nLCAnLS13aWR0aD0xMDI0
JywgJy0taGVpZ2h0PTc2OCcsICctLXVzZS1waXhtYW4nXF0sIGVudj0uKlxuIiwgbG9ncyksIE5v
bmUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgKKyAgICAgICAgICAgIHJlLm1hdGNoKAorICAg
ICAgICAgICAgICAgIHIiTU9DSyBwb3BlbjogXFsnd2VzdG9uJywgJy0tc29ja2V0PVdLVGVzdGlu
Zy13ZXN0b24tWzAtOWEtZl17MzJ9JywgJy0td2lkdGg9MTAyNCcsICctLWhlaWdodD03NjgnLCAn
LS11c2UtcGl4bWFuJ1xdLCBlbnY9LipcbiIsCisgICAgICAgICAgICAgICAgY2FwdHVyZWQucm9v
dC5sb2cuZ2V0dmFsdWUoKSwKKyAgICAgICAgICAgICksCisgICAgICAgICAgICBOb25lLAorICAg
ICAgICApCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyIldLVGVzdGluZy13ZXN0
b24tWzAtOWEtZl17MzJ9IiwgZHJpdmVyLl9zZXJ2ZXJfcHJvY2Vzcy5lbnZbJ1dBWUxBTkRfRElT
UExBWSddKSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgnRElTUExBWScgaW4gZHJpdmVyLl9z
ZXJ2ZXJfcHJvY2Vzcy5lbnYpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgiJ0RJU1BMQVknOiAn
OiVzJyIgJSBkcml2ZXIuX2V4cGVjdGVkX3h2ZmJkaXNwbGF5IGluIGxvZ3MpCisgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZSgiJ0RJU1BMQVknOiAnOnt9JyIuZm9ybWF0KGRyaXZlci5fZXhwZWN0ZWRf
eHZmYmRpc3BsYXkpIGluIGNhcHR1cmVkLnJvb3QubG9nLmdldHZhbHVlKCkpCiAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoZHJpdmVyLl9zZXJ2ZXJfcHJvY2Vzcy5lbnZbJ0dES19CQUNLRU5EJ10s
ICd3YXlsYW5kJykKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGRyaXZlci5fc2VydmVyX3Byb2Nl
c3Muc3RhcnRlZCkKIApAQCAtODgsNyArOTMsOCBAQCBjbGFzcyBXZXN0b25Ecml2ZXJUZXN0KHVu
aXR0ZXN0LlRlc3RDYXNlCiAgICAgICAgIGRyaXZlciA9IHNlbGYubWFrZV9kcml2ZXIoKQogICAg
ICAgICBkcml2ZXIuX3dlc3Rvbl9wcm9jZXNzID0gRmFrZVdlc3RvblByb2Nlc3MoKQogCi0gICAg
ICAgIGV4cGVjdGVkX2xvZ3MgPSAiTU9DSyBGYWtlV2VzdG9uUHJvY2Vzcy50ZXJtaW5hdGVcbiIK
LSAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIGRyaXZlci5zdG9w
LCBbXSwgZXhwZWN0ZWRfbG9ncz1leHBlY3RlZF9sb2dzKQorICAgICAgICB3aXRoIE91dHB1dENh
cHR1cmUobGV2ZWw9bG9nZ2luZy5JTkZPKSBhcyBjYXB0dXJlZDoKKyAgICAgICAgICAgIGRyaXZl
ci5zdG9wKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYXB0dXJlZC5yb290LmxvZy5nZXR2
YWx1ZSgpLCAnTU9DSyBGYWtlV2VzdG9uUHJvY2Vzcy50ZXJtaW5hdGVcbicpCiAKICAgICAgICAg
c2VsZi5hc3NlcnRJc05vbmUoZHJpdmVyLl93ZXN0b25fcHJvY2VzcykKSW5kZXg6IFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvcG9ydC93aW5fdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9wb3J0L3dpbl91bml0dGVzdC5weQkocmV2aXNpb24gMjY1NzczKQor
KysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3dpbl91bml0dGVzdC5weQkod29ya2luZyBj
b3B5KQpAQCAtMSw0ICsxLDUgQEAKICMgQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0yNiwx
MCArMjcsMTEgQEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLWZyb20gd2Via2l0
Y29yZXB5IGltcG9ydCBWZXJzaW9uCitpbXBvcnQgbG9nZ2luZworCitmcm9tIHdlYmtpdGNvcmVw
eSBpbXBvcnQgVmVyc2lvbiwgT3V0cHV0Q2FwdHVyZQogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5z
eXN0ZW0uZXhlY3V0aXZlX21vY2sgaW1wb3J0IE1vY2tFeGVjdXRpdmUKLWZyb20gd2Via2l0cHku
Y29tbW9uLnN5c3RlbS5vdXRwdXRjYXB0dXJlIGltcG9ydCBPdXRwdXRDYXB0dXJlCiBmcm9tIHdl
YmtpdHB5LmNvbW1vbi5zeXN0ZW0uc3lzdGVtaG9zdF9tb2NrIGltcG9ydCBNb2NrU3lzdGVtSG9z
dAogZnJvbSB3ZWJraXRweS5jb21tb24udmVyc2lvbl9uYW1lX21hcCBpbXBvcnQgUFVCTElDX1RB
QkxFLCBWZXJzaW9uTmFtZU1hcAogZnJvbSB3ZWJraXRweS5wb3J0IGltcG9ydCBwb3J0X3Rlc3Rj
YXNlCkBAIC00NiwxNCArNDgsMTMgQEAgY2xhc3MgV2luUG9ydFRlc3QocG9ydF90ZXN0Y2FzZS5Q
b3J0VGVzdAogICAgIGRlZiB0ZXN0X3Nob3dfcmVzdWx0c19odG1sX2ZpbGUoc2VsZik6CiAgICAg
ICAgIHBvcnQgPSBzZWxmLm1ha2VfcG9ydCgpCiAgICAgICAgIHBvcnQuX2V4ZWN1dGl2ZSA9IE1v
Y2tFeGVjdXRpdmUoc2hvdWxkX2xvZz1UcnVlKQotICAgICAgICBjYXB0dXJlID0gT3V0cHV0Q2Fw
dHVyZSgpCi0gICAgICAgIGNhcHR1cmUuY2FwdHVyZV9vdXRwdXQoKQotICAgICAgICBwb3J0LnNo
b3dfcmVzdWx0c19odG1sX2ZpbGUoJ3Rlc3QuaHRtbCcpCi0gICAgICAgIF8sIF8sIGxvZ3MgPSBj
YXB0dXJlLnJlc3RvcmVfb3V0cHV0KCkKKyAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlKGxldmVs
PWxvZ2dpbmcuSU5GTykgYXMgY2FwdHVyZWQ6CisgICAgICAgICAgICBwb3J0LnNob3dfcmVzdWx0
c19odG1sX2ZpbGUoJ3Rlc3QuaHRtbCcpCisKICAgICAgICAgIyBXZSBjYW4ndCBrbm93IGZvciBz
dXJlIHdoYXQgcGF0aCB3aWxsIGJlIHByb2R1Y2VkIGJ5IGN5Z3BhdGgsIGJ1dCB3ZSBjYW4gYXNz
ZXJ0IGFib3V0CiAgICAgICAgICMgZXZlcnl0aGluZyBlbHNlLgotICAgICAgICBzZWxmLmFzc2Vy
dFRydWUobG9ncy5zdGFydHN3aXRoKCJNT0NLIHJ1bl9jb21tYW5kOiBbJ1Rvb2xzL1NjcmlwdHMv
cnVuLXNhZmFyaScsICctLXJlbGVhc2UnLCAnIikpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShs
b2dzLmVuZHN3aXRoKCJ0ZXN0Lmh0bWwnXSwgY3dkPS9tb2NrLWNoZWNrb3V0XG4iKSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKGNhcHR1cmVkLnJvb3QubG9nLmdldHZhbHVlKCkuc3RhcnRzd2l0
aCgiTU9DSyBydW5fY29tbWFuZDogWydUb29scy9TY3JpcHRzL3J1bi1zYWZhcmknLCAnLS1yZWxl
YXNlJywgJyIpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoY2FwdHVyZWQucm9vdC5sb2cuZ2V0
dmFsdWUoKS5lbmRzd2l0aCgidGVzdC5odG1sJ10sIGN3ZD0vbW9jay1jaGVja291dFxuIikpCiAK
ICAgICBkZWYgX2Fzc2VydF9zZWFyY2hfcGF0aChzZWxmLCBleHBlY3RlZF9zZWFyY2hfcGF0aHMs
IHZlcnNpb24sIHVzZV93ZWJraXQyPUZhbHNlKToKICAgICAgICAgcG9ydCA9IHNlbGYubWFrZV9w
b3J0KHBvcnRfbmFtZT0nd2luJywgb3NfdmVyc2lvbj12ZXJzaW9uLCBvcHRpb25zPU1vY2tPcHRp
b25zKHdlYmtpdF90ZXN0X3J1bm5lcj11c2Vfd2Via2l0MikpCkluZGV4OiBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3BvcnQvd3BlX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvcG9ydC93cGVfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2NTc3MykKKysrIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC93cGVfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkK
QEAgLTMzLDcgKzMzLDYgQEAgaW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20gd2Via2l0cHkuY29tbW9u
LnN5c3RlbS5leGVjdXRpdmVfbW9jayBpbXBvcnQgTW9ja0V4ZWN1dGl2ZQogZnJvbSB3ZWJraXRw
eS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW1fbW9jayBpbXBvcnQgTW9ja0ZpbGVTeXN0ZW0KLWZy
b20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5vdXRwdXRjYXB0dXJlIGltcG9ydCBPdXRwdXRDYXB0
dXJlCiBmcm9tIHdlYmtpdHB5LnBvcnQuY29uZmlnIGltcG9ydCBjbGVhcl9jYWNoZWRfY29uZmln
dXJhdGlvbgogZnJvbSB3ZWJraXRweS5wb3J0LndwZSBpbXBvcnQgV1BFUG9ydAogZnJvbSB3ZWJr
aXRweS5wb3J0LnB1bHNlYXVkaW9fc2FuaXRpemVyX21vY2sgaW1wb3J0IFB1bHNlQXVkaW9TYW5p
dGl6ZXJNb2NrCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQveHZmYmRyaXZlcl91
bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQveHZm
YmRyaXZlcl91bml0dGVzdC5weQkocmV2aXNpb24gMjY1NzczKQorKysgVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9wb3J0L3h2ZmJkcml2ZXJfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTEs
NCArMSw1IEBACiAjIENvcHlyaWdodCAoQykgMjAxMiBaYW4gRG9iZXJzZWsgPHphbmRvYmVyc2Vr
QGdtYWlsLmNvbT4KKyMgQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTMxLDEzICszMiwx
NCBAQCBpbXBvcnQgdW5pdHRlc3QKIAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVz
eXN0ZW1fbW9jayBpbXBvcnQgTW9ja0ZpbGVTeXN0ZW0KIGZyb20gd2Via2l0cHkuY29tbW9uLnN5
c3RlbS5leGVjdXRpdmVfbW9jayBpbXBvcnQgTW9ja0V4ZWN1dGl2ZTIKLWZyb20gd2Via2l0cHku
Y29tbW9uLnN5c3RlbS5vdXRwdXRjYXB0dXJlIGltcG9ydCBPdXRwdXRDYXB0dXJlCiBmcm9tIHdl
YmtpdHB5LmNvbW1vbi5zeXN0ZW0uc3lzdGVtaG9zdF9tb2NrIGltcG9ydCBNb2NrU3lzdGVtSG9z
dAogZnJvbSB3ZWJraXRweS5wb3J0IGltcG9ydCBQb3J0CiBmcm9tIHdlYmtpdHB5LnBvcnQuc2Vy
dmVyX3Byb2Nlc3NfbW9jayBpbXBvcnQgTW9ja1NlcnZlclByb2Nlc3MKIGZyb20gd2Via2l0cHku
cG9ydC54dmZiZHJpdmVyIGltcG9ydCBYdmZiRHJpdmVyCiBmcm9tIHdlYmtpdHB5LnRvb2wubW9j
a3Rvb2wgaW1wb3J0IE1vY2tPcHRpb25zCiAKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBPdXRw
dXRDYXB0dXJlCisKIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKIAogCkBAIC02
NSw3ICs2NywxMCBAQCBjbGFzcyBYdmZiRHJpdmVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAg
ICAgICAgIGRyaXZlci5feHZmYl9wcm9jZXNzID0gTm9uZQogCiAgICAgZGVmIGFzc2VydERyaXZl
clN0YXJ0U3VjY2Vzc2Z1bChzZWxmLCBkcml2ZXIsIGV4cGVjdGVkX2xvZ3MsIGV4cGVjdGVkX2Rp
c3BsYXksIHBpeGVsX3Rlc3RzPUZhbHNlKToKLSAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2Vy
dF9vdXRwdXRzKHNlbGYsIGRyaXZlci5zdGFydCwgW3BpeGVsX3Rlc3RzLCBbXV0sIGV4cGVjdGVk
X2xvZ3M9ZXhwZWN0ZWRfbG9ncykKKyAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlKGxldmVsPWxv
Z2dpbmcuSU5GTykgYXMgY2FwdHVyZWQ6CisgICAgICAgICAgICBkcml2ZXIuc3RhcnQocGl4ZWxf
dGVzdHMsIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhcHR1cmVkLnJvb3QubG9nLmdl
dHZhbHVlKCksIGV4cGVjdGVkX2xvZ3MpCisKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGRyaXZl
ci5fc2VydmVyX3Byb2Nlc3Muc3RhcnRlZCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkcml2
ZXIuX3NlcnZlcl9wcm9jZXNzLmVudlsnRElTUExBWSddLCBleHBlY3RlZF9kaXNwbGF5KQogICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGRyaXZlci5fc2VydmVyX3Byb2Nlc3MuZW52WydHREtfQkFD
S0VORCddLCAneDExJykKQEAgLTkyLDcgKzk3LDggQEAgY2xhc3MgWHZmYkRyaXZlclRlc3QodW5p
dHRlc3QuVGVzdENhc2UpOgogCiAgICAgICAgIGRyaXZlci5feHZmYl9wcm9jZXNzID0gRmFrZVh2
ZmJQcm9jZXNzKCkKIAotICAgICAgICBleHBlY3RlZF9sb2dzID0gIk1PQ0sga2lsbF9wcm9jZXNz
IHBpZDogMTIzNFxuIgotICAgICAgICBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMoc2Vs
ZiwgZHJpdmVyLnN0b3AsIFtdLCBleHBlY3RlZF9sb2dzPWV4cGVjdGVkX2xvZ3MpCisgICAgICAg
IHdpdGggT3V0cHV0Q2FwdHVyZShsZXZlbD1sb2dnaW5nLklORk8pIGFzIGNhcHR1cmVkOgorICAg
ICAgICAgICAgZHJpdmVyLnN0b3AoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhcHR1cmVk
LnJvb3QubG9nLmdldHZhbHVlKCksICJNT0NLIGtpbGxfcHJvY2VzcyBwaWQ6IDEyMzRcbiIpCiAK
ICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZHJpdmVyLl94dmZiX3Byb2Nlc3MpCkluZGV4OiBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL21haW5fdW5pdHRlc3QucHkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9tYWluX3VuaXR0ZXN0LnB5CShyZXZpc2lv
biAyNjU3NzMpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL21haW5fdW5pdHRlc3Qu
cHkJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw1IEBACiAjIENvcHlyaWdodCAoQykgMjAxMCBD
aHJpcyBKZXJkb25layAoY2plcmRvbmVrQHdlYmtpdC5vcmcpCisjIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTI4LDEyICsyOSwxMyBAQCBpbXBvcnQgd2Via2l0cHkuc3R5bGUuY2hlY2tlciBh
cyBjaGVja2VyCiAKIGZyb20gd2Via2l0cHkuY29tbW9uLmhvc3QgaW1wb3J0IEhvc3QKIGZyb20g
d2Via2l0cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVtX21vY2sgaW1wb3J0IE1vY2tGaWxlU3lz
dGVtCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0
cHV0Q2FwdHVyZSwgT3V0cHV0Q2FwdHVyZVNjb3BlCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0
ZW0ubG9ndGVzdGluZyBpbXBvcnQgTG9nVGVzdGluZwogZnJvbSB3ZWJraXRweS5zdHlsZS5jaGVj
a2VyIGltcG9ydCBTdHlsZVByb2Nlc3NvcgogZnJvbSB3ZWJraXRweS5zdHlsZS5maWxlcmVhZGVy
IGltcG9ydCBUZXh0RmlsZVJlYWRlcgogZnJvbSB3ZWJraXRweS5zdHlsZS5tYWluIGltcG9ydCBj
aGFuZ2VfZGlyZWN0b3J5CiAKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBPdXRwdXRDYXB0dXJl
CisKIAogY2xhc3MgQ2hhbmdlRGlyZWN0b3J5VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAg
X29yaWdpbmFsX2RpcmVjdG9yeSA9ICIvb3JpZ2luYWwiCkBAIC0xMTYsMTEgKzExOCwxMiBAQCBj
bGFzcyBFeHBlY3RhdGlvbkxpbnRlckluU3R5bGVDaGVja2VyVGVzCiAgICAgZGVmIHRlc3Rfbm9f
bGludGVyX2Vycm9ycyhzZWxmKToKICAgICAgICAgaG9zdCA9IHNlbGYuX2dlbmVyYXRlX3Rlc3Rp
bmdfaG9zdCgpCiAKLSAgICAgICAgc2NvcGUgPSBPdXRwdXRDYXB0dXJlU2NvcGUoT3V0cHV0Q2Fw
dHVyZShsb2dnaW5nLkVSUk9SKSkKLSAgICAgICAgd2l0aCBzY29wZToKKyAgICAgICAgd2l0aCBP
dXRwdXRDYXB0dXJlKGxldmVsPWxvZ2dpbmcuRVJST1IpIGFzIGNhcHR1cmVkOgogICAgICAgICAg
ICAgZmlsZV9yZWFkZXIgPSBzZWxmLl9nZW5lcmF0ZV9maWxlX3JlYWRlcihob3N0LmZpbGVzeXN0
ZW0pCiAgICAgICAgICAgICBmaWxlX3JlYWRlci5kb19hc3NvY2lhdGlvbl9jaGVjaygnL21vY2st
Y2hlY2tvdXQnLCBob3N0KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNjb3BlLmNhcHR1cmVk
X291dHB1dCwgKCcnLCAnJywgJycpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhcHR1cmVk
LnN0ZG91dC5nZXR2YWx1ZSgpLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYXB0dXJl
ZC5zdGRlcnIuZ2V0dmFsdWUoKSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVy
ZWQucm9vdC5sb2cuZ2V0dmFsdWUoKSwgJycpCiAKICAgICBkZWYgdGVzdF9saW50ZXJfZHVwbGlj
YXRlX2xpbmUoc2VsZik6CiAgICAgICAgIGZpbGVzID0gewpAQCAtMTI4LDE0ICsxMzEsMjMgQEAg
Y2xhc3MgRXhwZWN0YXRpb25MaW50ZXJJblN0eWxlQ2hlY2tlclRlcwogICAgICAgICAgICAgJyMg
VGVzdEV4cGVjdGF0aW9uc1xuY3NzMS90ZXN0Lmh0bWwgWyBGYWlsdXJlIF1cbmNzczEvdGVzdC5o
dG1sIFsgRmFpbHVyZSBdXG4nfQogICAgICAgICBob3N0ID0gc2VsZi5fZ2VuZXJhdGVfdGVzdGlu
Z19ob3N0KGZpbGVzKQogCi0gICAgICAgIHNjb3BlID0gT3V0cHV0Q2FwdHVyZVNjb3BlKE91dHB1
dENhcHR1cmUobG9nZ2luZy5FUlJPUikpCi0gICAgICAgIHdpdGggc2NvcGU6CisgICAgICAgIHdp
dGggT3V0cHV0Q2FwdHVyZShsZXZlbD1sb2dnaW5nLkVSUk9SKSBhcyBjYXB0dXJlZDoKKyAgICAg
ICAgICAgIGZpbGVfcmVhZGVyID0gc2VsZi5fZ2VuZXJhdGVfZmlsZV9yZWFkZXIoaG9zdC5maWxl
c3lzdGVtKQorICAgICAgICAgICAgZmlsZV9yZWFkZXIuZG9fYXNzb2NpYXRpb25fY2hlY2soJy9t
b2NrLWNoZWNrb3V0JywgaG9zdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYXB0dXJlZC5z
dGRvdXQuZ2V0dmFsdWUoKSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQu
c3RkZXJyLmdldHZhbHVlKCksICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhcHR1cmVk
LnJvb3QubG9nLmdldHZhbHVlKCksICcnKQorCisgICAgICAgIHdpdGggT3V0cHV0Q2FwdHVyZShs
ZXZlbD1sb2dnaW5nLkVSUk9SKSBhcyBjYXB0dXJlZDoKICAgICAgICAgICAgIGZpbGVfcmVhZGVy
ID0gc2VsZi5fZ2VuZXJhdGVfZmlsZV9yZWFkZXIoaG9zdC5maWxlc3lzdGVtKQogICAgICAgICAg
ICAgZmlsZV9yZWFkZXIucHJvY2Vzc19maWxlKCcvbW9jay1jaGVja291dC9MYXlvdXRUZXN0cy9U
ZXN0RXhwZWN0YXRpb25zJywgbGluZV9udW1iZXJzPVsxLCAyLCAzXSkKICAgICAgICAgICAgIGZp
bGVfcmVhZGVyLmRvX2Fzc29jaWF0aW9uX2NoZWNrKCcvbW9jay1jaGVja291dCcsIGhvc3QpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQuc3Rkb3V0LmdldHZhbHVlKCksICcnKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhcHR1cmVkLnN0ZGVyci5nZXR2YWx1ZSgpLCAnJykK
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIHNjb3BlLmNhcHR1cmVkX291
dHB1dCwKLSAgICAgICAgICAgICgnJywgJycsICcvbW9jay1jaGVja291dC9MYXlvdXRUZXN0cy9U
ZXN0RXhwZWN0YXRpb25zOjM6ICBEdXBsaWNhdGUgb3IgYW1iaWd1b3VzIGVudHJ5IGxpbmVzIExh
eW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnM6MiBhbmQgTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0
aW9uczozLiAgW3Rlc3QvZXhwZWN0YXRpb25zXSBbNV1cbicpKQorICAgICAgICAgICAgY2FwdHVy
ZWQucm9vdC5sb2cuZ2V0dmFsdWUoKSwKKyAgICAgICAgICAgICcvbW9jay1jaGVja291dC9MYXlv
dXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zOjM6ICBEdXBsaWNhdGUgb3IgYW1iaWd1b3VzIGVudHJ5
IGxpbmVzIExheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnM6MiBhbmQgTGF5b3V0VGVzdHMvVGVz
dEV4cGVjdGF0aW9uczozLiAgW3Rlc3QvZXhwZWN0YXRpb25zXSBbNV1cbicsCisgICAgICAgICkK
IAogICAgIGRlZiB0ZXN0X2xpbnRlcl9kdXBsaWNhdGVfbGluZV9ub19lZGl0KHNlbGYpOgogICAg
ICAgICBmaWxlcyA9IHsKQEAgLTE0MywxMiArMTU1LDEzIEBAIGNsYXNzIEV4cGVjdGF0aW9uTGlu
dGVySW5TdHlsZUNoZWNrZXJUZXMKICAgICAgICAgICAgICcjIFRlc3RFeHBlY3RhdGlvbnNcbmNz
czEvdGVzdC5odG1sIFsgRmFpbHVyZSBdXG5jc3MxL3Rlc3QuaHRtbCBbIEZhaWx1cmUgXVxuJ30K
ICAgICAgICAgaG9zdCA9IHNlbGYuX2dlbmVyYXRlX3Rlc3RpbmdfaG9zdChmaWxlcykKIAotICAg
ICAgICBzY29wZSA9IE91dHB1dENhcHR1cmVTY29wZShPdXRwdXRDYXB0dXJlKGxvZ2dpbmcuRVJS
T1IpKQotICAgICAgICB3aXRoIHNjb3BlOgorICAgICAgICB3aXRoIE91dHB1dENhcHR1cmUobGV2
ZWw9bG9nZ2luZy5FUlJPUikgYXMgY2FwdHVyZWQ6CiAgICAgICAgICAgICBmaWxlX3JlYWRlciA9
IHNlbGYuX2dlbmVyYXRlX2ZpbGVfcmVhZGVyKGhvc3QuZmlsZXN5c3RlbSkKICAgICAgICAgICAg
IGZpbGVfcmVhZGVyLnByb2Nlc3NfcGF0aHMoWycvbW9jay1jaGVja291dC9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucyddKQogICAgICAgICAgICAgZmlsZV9yZWFkZXIu
ZG9fYXNzb2NpYXRpb25fY2hlY2soJy9tb2NrLWNoZWNrb3V0JywgaG9zdCkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChzY29wZS5jYXB0dXJlZF9vdXRwdXQsICgnJywgJycsICcnKSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChjYXB0dXJlZC5zdGRvdXQuZ2V0dmFsdWUoKSwgJycpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQuc3RkZXJyLmdldHZhbHVlKCksICcnKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGNhcHR1cmVkLnJvb3QubG9nLmdldHZhbHVlKCksICcnKQog
CiAgICAgZGVmIHRlc3RfbGludGVyX2R1cGxpY2F0ZV9saW5lX2VkaXRfaW5fZmlsZShzZWxmKToK
ICAgICAgICAgZmlsZXMgPSB7CkBAIC0xNTYsMTIgKzE2OSwxMyBAQCBjbGFzcyBFeHBlY3RhdGlv
bkxpbnRlckluU3R5bGVDaGVja2VyVGVzCiAgICAgICAgICAgICAnIyBUZXN0RXhwZWN0YXRpb25z
XG5jc3MxL3Rlc3QuaHRtbCBbIEZhaWx1cmUgXVxuY3NzMS90ZXN0Lmh0bWwgWyBGYWlsdXJlIF1c
bid9CiAgICAgICAgIGhvc3QgPSBzZWxmLl9nZW5lcmF0ZV90ZXN0aW5nX2hvc3QoZmlsZXMpCiAK
LSAgICAgICAgc2NvcGUgPSBPdXRwdXRDYXB0dXJlU2NvcGUoT3V0cHV0Q2FwdHVyZShsb2dnaW5n
LkVSUk9SKSkKLSAgICAgICAgd2l0aCBzY29wZToKKyAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJl
KGxldmVsPWxvZ2dpbmcuRVJST1IpIGFzIGNhcHR1cmVkOgogICAgICAgICAgICAgZmlsZV9yZWFk
ZXIgPSBzZWxmLl9nZW5lcmF0ZV9maWxlX3JlYWRlcihob3N0LmZpbGVzeXN0ZW0pCiAgICAgICAg
ICAgICBmaWxlX3JlYWRlci5wcm9jZXNzX2ZpbGUoJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3Rz
L1Rlc3RFeHBlY3RhdGlvbnMnLCBsaW5lX251bWJlcnM9WzFdKQogICAgICAgICAgICAgZmlsZV9y
ZWFkZXIuZG9fYXNzb2NpYXRpb25fY2hlY2soJy9tb2NrLWNoZWNrb3V0JywgaG9zdCkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChzY29wZS5jYXB0dXJlZF9vdXRwdXQsICgnJywgJycsICcnKSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYXB0dXJlZC5zdGRvdXQuZ2V0dmFsdWUoKSwgJycp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQuc3RkZXJyLmdldHZhbHVlKCksICcn
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhcHR1cmVkLnJvb3QubG9nLmdldHZhbHVlKCks
ICcnKQogCiAgICAgZGVmIHRlc3RfbGludGVyX2R1cGxpY2F0ZV9saW5lX29ubHlfZGVsZXRlcyhz
ZWxmKToKICAgICAgICAgZmlsZXMgPSB7CkBAIC0xNjksMTIgKzE4MywxMyBAQCBjbGFzcyBFeHBl
Y3RhdGlvbkxpbnRlckluU3R5bGVDaGVja2VyVGVzCiAgICAgICAgICAgICAgICAgJyMgVGVzdEV4
cGVjdGF0aW9uc1xuY3NzMS90ZXN0Lmh0bWwgWyBGYWlsdXJlIF1cbmNzczEvdGVzdC5odG1sIFsg
RmFpbHVyZSBdXG4nfQogICAgICAgICBob3N0ID0gc2VsZi5fZ2VuZXJhdGVfdGVzdGluZ19ob3N0
KGZpbGVzKQogCi0gICAgICAgIHNjb3BlID0gT3V0cHV0Q2FwdHVyZVNjb3BlKE91dHB1dENhcHR1
cmUobG9nZ2luZy5FUlJPUikpCi0gICAgICAgIHdpdGggc2NvcGU6CisgICAgICAgIHdpdGggT3V0
cHV0Q2FwdHVyZShsZXZlbD1sb2dnaW5nLkVSUk9SKSBhcyBjYXB0dXJlZDoKICAgICAgICAgICAg
IGZpbGVfcmVhZGVyID0gc2VsZi5fZ2VuZXJhdGVfZmlsZV9yZWFkZXIoaG9zdC5maWxlc3lzdGVt
KQogICAgICAgICAgICAgZmlsZV9yZWFkZXIucHJvY2Vzc19maWxlKCcvbW9jay1jaGVja291dC9M
YXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zJykKICAgICAgICAgICAgIGZpbGVfcmVhZGVyLmRv
X2Fzc29jaWF0aW9uX2NoZWNrKCcvbW9jay1jaGVja291dCcsIGhvc3QpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoc2NvcGUuY2FwdHVyZWRfb3V0cHV0LCAoJycsICcnLCAnJykpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQuc3Rkb3V0LmdldHZhbHVlKCksICcnKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGNhcHR1cmVkLnN0ZGVyci5nZXR2YWx1ZSgpLCAnJykKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChjYXB0dXJlZC5yb290LmxvZy5nZXR2YWx1ZSgpLCAnJykKIAog
ICAgIGRlZiB0ZXN0X2xpbnRlcl9hZGRlZF9maWxlX3dpdGhfZXJyb3Ioc2VsZik6CiAgICAgICAg
IGZpbGVzID0gewpAQCAtMTgyLDEyICsxOTcsMTYgQEAgY2xhc3MgRXhwZWN0YXRpb25MaW50ZXJJ
blN0eWxlQ2hlY2tlclRlcwogICAgICAgICAgICAgJyMgVGVzdEV4cGVjdGF0aW9uc1xuY3NzMS90
ZXN0Lmh0bWwgWyBGYWlsdXJlIF1cbmNzczEvdGVzdC5odG1sIFsgRmFpbHVyZSBdXG4nfQogICAg
ICAgICBob3N0ID0gc2VsZi5fZ2VuZXJhdGVfdGVzdGluZ19ob3N0KGZpbGVzKQogCi0gICAgICAg
IHNjb3BlID0gT3V0cHV0Q2FwdHVyZVNjb3BlKE91dHB1dENhcHR1cmUobG9nZ2luZy5FUlJPUikp
Ci0gICAgICAgIHdpdGggc2NvcGU6CisgICAgICAgIHdpdGggT3V0cHV0Q2FwdHVyZShsZXZlbD1s
b2dnaW5nLkVSUk9SKSBhcyBjYXB0dXJlZDoKICAgICAgICAgICAgIGZpbGVfcmVhZGVyID0gc2Vs
Zi5fZ2VuZXJhdGVfZmlsZV9yZWFkZXIoaG9zdC5maWxlc3lzdGVtKQogICAgICAgICAgICAgZmls
ZV9yZWFkZXIucHJvY2Vzc19maWxlKCcvbW9jay1jaGVja291dC9MYXlvdXRUZXN0cy9UZXN0RXhw
ZWN0YXRpb25zJywgbGluZV9udW1iZXJzPVsxLCAyLCAzXSkKICAgICAgICAgICAgIGZpbGVfcmVh
ZGVyLmRvX2Fzc29jaWF0aW9uX2NoZWNrKCcvbW9jay1jaGVja291dCcsIGhvc3QpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoc2NvcGUuY2FwdHVyZWRfb3V0cHV0LCAoJycsICcnLCAnL21vY2st
Y2hlY2tvdXQvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9uczozOiAgRHVwbGljYXRlIG9yIGFt
YmlndW91cyBlbnRyeSBsaW5lcyBMYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zOjIgYW5kIExh
eW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnM6My4gIFt0ZXN0L2V4cGVjdGF0aW9uc10gWzVdXG4n
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYXB0dXJlZC5zdGRvdXQuZ2V0dmFsdWUoKSwg
JycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQuc3RkZXJyLmdldHZhbHVlKCks
ICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY2FwdHVyZWQucm9v
dC5sb2cuZ2V0dmFsdWUoKSwKKyAgICAgICAgICAgICcvbW9jay1jaGVja291dC9MYXlvdXRUZXN0
cy9UZXN0RXhwZWN0YXRpb25zOjM6ICBEdXBsaWNhdGUgb3IgYW1iaWd1b3VzIGVudHJ5IGxpbmVz
IExheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnM6MiBhbmQgTGF5b3V0VGVzdHMvVGVzdEV4cGVj
dGF0aW9uczozLiAgW3Rlc3QvZXhwZWN0YXRpb25zXSBbNV1cbicsCisgICAgICAgICkKIAogICAg
IGRlZiB0ZXN0X2xpbnRlcl9kZWxldGVkX2ZpbGUoc2VsZik6CiAgICAgICAgIGZpbGVzID0gewpA
QCAtMTk1LDE0ICsyMTQsMTYgQEAgY2xhc3MgRXhwZWN0YXRpb25MaW50ZXJJblN0eWxlQ2hlY2tl
clRlcwogICAgICAgICAgICAgJyMgVGVzdEV4cGVjdGF0aW9uc1xuY3NzMS9kZWxldGVkLXRlc3Qu
aHRtbCBbIEZhaWx1cmUgXVxuJ30KICAgICAgICAgaG9zdCA9IHNlbGYuX2dlbmVyYXRlX3Rlc3Rp
bmdfaG9zdChmaWxlcykKIAotICAgICAgICBzY29wZSA9IE91dHB1dENhcHR1cmVTY29wZShPdXRw
dXRDYXB0dXJlKGxvZ2dpbmcuRVJST1IpKQotICAgICAgICB3aXRoIHNjb3BlOgorICAgICAgICB3
aXRoIE91dHB1dENhcHR1cmUobGV2ZWw9bG9nZ2luZy5FUlJPUikgYXMgY2FwdHVyZWQ6CiAgICAg
ICAgICAgICBmaWxlX3JlYWRlciA9IHNlbGYuX2dlbmVyYXRlX2ZpbGVfcmVhZGVyKGhvc3QuZmls
ZXN5c3RlbSkKICAgICAgICAgICAgIGZpbGVfcmVhZGVyLmRlbGV0ZV9maWxlKCcvbW9jay1jaGVj
a291dC9MYXlvdXRUZXN0cy9jc3MxL2RlbGV0ZWQtdGVzdC5odG1sJykKICAgICAgICAgICAgIGZp
bGVfcmVhZGVyLmRvX2Fzc29jaWF0aW9uX2NoZWNrKCcvbW9jay1jaGVja291dCcsIGhvc3QpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQuc3Rkb3V0LmdldHZhbHVlKCksICcnKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhcHR1cmVkLnN0ZGVyci5nZXR2YWx1ZSgpLCAnJykK
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIHNjb3BlLmNhcHR1cmVkX291
dHB1dCwKLSAgICAgICAgICAgICgnJywgJycsICcvbW9jay1jaGVja291dC9MYXlvdXRUZXN0cy9U
ZXN0RXhwZWN0YXRpb25zOjI6ICBQYXRoIGRvZXMgbm90IGV4aXN0LiAgW3Rlc3QvZXhwZWN0YXRp
b25zXSBbNV1cbicpKQorICAgICAgICAgICAgY2FwdHVyZWQucm9vdC5sb2cuZ2V0dmFsdWUoKSwK
KyAgICAgICAgICAgICcvbW9jay1jaGVja291dC9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25z
OjI6ICBQYXRoIGRvZXMgbm90IGV4aXN0LiAgW3Rlc3QvZXhwZWN0YXRpb25zXSBbNV1cbicsCisg
ICAgICAgICkKIAogICAgIGRlZiB0ZXN0X2xpbnRlcl9kZWxldGVkX2ZpbGVfbm9fZWRpdChzZWxm
KToKICAgICAgICAgZmlsZXMgPSB7CkBAIC0yMTAsOSArMjMxLDEwIEBAIGNsYXNzIEV4cGVjdGF0
aW9uTGludGVySW5TdHlsZUNoZWNrZXJUZXMKICAgICAgICAgICAgICcjIFRlc3RFeHBlY3RhdGlv
bnNcbmNzczEvZGVsZXRlZC10ZXN0Lmh0bWwgWyBGYWlsdXJlIF1cbid9CiAgICAgICAgIGhvc3Qg
PSBzZWxmLl9nZW5lcmF0ZV90ZXN0aW5nX2hvc3QoZmlsZXMpCiAKLSAgICAgICAgc2NvcGUgPSBP
dXRwdXRDYXB0dXJlU2NvcGUoT3V0cHV0Q2FwdHVyZShsb2dnaW5nLkVSUk9SKSkKLSAgICAgICAg
d2l0aCBzY29wZToKKyAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlKGxldmVsPWxvZ2dpbmcuRVJS
T1IpIGFzIGNhcHR1cmVkOgogICAgICAgICAgICAgZmlsZV9yZWFkZXIgPSBzZWxmLl9nZW5lcmF0
ZV9maWxlX3JlYWRlcihob3N0LmZpbGVzeXN0ZW0pCiAgICAgICAgICAgICBmaWxlX3JlYWRlci5k
ZWxldGVfZmlsZSgnL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvY3NzMS9vdGhlci1kZWxldGVk
LXRlc3QuaHRtbCcpCiAgICAgICAgICAgICBmaWxlX3JlYWRlci5kb19hc3NvY2lhdGlvbl9jaGVj
aygnL21vY2stY2hlY2tvdXQnLCBob3N0KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNjb3Bl
LmNhcHR1cmVkX291dHB1dCwgKCcnLCAnJywgJycpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGNhcHR1cmVkLnN0ZG91dC5nZXR2YWx1ZSgpLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChjYXB0dXJlZC5zdGRlcnIuZ2V0dmFsdWUoKSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoY2FwdHVyZWQucm9vdC5sb2cuZ2V0dmFsdWUoKSwgJycpCkluZGV4OiBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3B5dGhvbi5weQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3B5dGhvbi5weQkocmV2aXNpb24gMjY1Nzcz
KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9weXRob24ucHkJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAjIENvcHlyaWdodCAoQykgMjAxMCBDaHJpcyBK
ZXJkb25layAoY2plcmRvbmVrQHdlYmtpdC5vcmcpCi0jIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxOSwgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTI5LDEwICsyOSwxMSBAQCBpbXBvcnQgc3lzCiBmcm9tIHdlYmtpdGNvcmVweSBpbXBv
cnQgU3RyaW5nSU8KIAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW0gaW1w
b3J0IEZpbGVTeXN0ZW0KLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5vdXRwdXRjYXB0dXJl
IGltcG9ydCBPdXRwdXRDYXB0dXJlU2NvcGUKIGZyb20gd2Via2l0cHkuY29tbW9uLndlYmtpdF9m
aW5kZXIgaW1wb3J0IFdlYktpdEZpbmRlcgogZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5LmF1dG9p
bnN0YWxsZWQgaW1wb3J0IHB5Y29kZXN0eWxlCiAKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBP
dXRwdXRDYXB0dXJlCisKIGNsYXNzIFB5dGhvbkNoZWNrZXIob2JqZWN0KToKICAgICAiIiJQcm9j
ZXNzZXMgdGV4dCBsaW5lcyBmb3IgY2hlY2tpbmcgc3R5bGUuIiIiCiAgICAgZGVmIF9faW5pdF9f
KHNlbGYsIGZpbGVfcGF0aCwgaGFuZGxlX3N0eWxlX2Vycm9yKToKQEAgLTEwOCw3ICsxMDksNyBA
QCBjbGFzcyBQeWxpbnRlcihvYmplY3QpOgogCiAgICAgZGVmIHJ1bihzZWxmLCBhcmd2KToKICAg
ICAgICAgb3V0cHV0ID0gX0ZpbHRlcmVkU3RyaW5nSU8oc2VsZi5GQUxTRV9QT1NJVElWRVMpCi0g
ICAgICAgIHdpdGggT3V0cHV0Q2FwdHVyZVNjb3BlKCk6CisgICAgICAgIHdpdGggT3V0cHV0Q2Fw
dHVyZSgpOgogICAgICAgICAgICAgZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5LmF1dG9pbnN0YWxs
ZWQucHlsaW50IGltcG9ydCBsaW50CiAgICAgICAgICAgICBmcm9tIHdlYmtpdHB5LnRoaXJkcGFy
dHkuYXV0b2luc3RhbGxlZC5weWxpbnQucmVwb3J0ZXJzLnRleHQgaW1wb3J0IFBhcnNlYWJsZVRl
eHRSZXBvcnRlcgogICAgICAgICAgICAgbGludC5SdW4oWyctLXJjZmlsZScsIHNlbGYuX3B5bGlu
dHJjXSArIGFyZ3YsIHJlcG9ydGVyPVBhcnNlYWJsZVRleHRSZXBvcnRlcihvdXRwdXQ9b3V0cHV0
KSwgZXhpdD1GYWxzZSkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdC9maW5kZXJf
dW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L2Zp
bmRlcl91bml0dGVzdC5weQkocmV2aXNpb24gMjY1NzczKQorKysgVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS90ZXN0L2ZpbmRlcl91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMjQsOSArMjQs
MTAgQEAgaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCB1bml0dGVzdAogCiBmcm9tIHdlYmtpdHB5LmNv
bW1vbi5zeXN0ZW0uZmlsZXN5c3RlbV9tb2NrIGltcG9ydCBNb2NrRmlsZVN5c3RlbQotZnJvbSB3
ZWJraXRweS5jb21tb24uc3lzdGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0IE91dHB1dENhcHR1cmUK
IGZyb20gd2Via2l0cHkudGVzdC5maW5kZXIgaW1wb3J0IEZpbmRlcgogCitmcm9tIHdlYmtpdGNv
cmVweSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQorCiAKIGNsYXNzIEZpbmRlclRlc3QodW5pdHRlc3Qu
VGVzdENhc2UpOgogICAgIGRlZiBzZXRVcChzZWxmKToKQEAgLTEwNSwyMiArMTA2LDE0IEBAIGNs
YXNzIEZpbmRlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBzZWxmLmNoZWNrX25h
bWVzKFsnYmFyLyddLCBbJ2Jhci5iYXpfdW5pdHRlc3QnXSkKIAogICAgICAgICAjIFRoaXMgc2hv
dWxkIGxvZyBhbiBlcnJvciwgc2luY2UgaXQncyBvdXRzaWRlIHRoZSB0cmVlcy4KLSAgICAgICAg
b2MgPSBPdXRwdXRDYXB0dXJlKCkKLSAgICAgICAgb2Muc2V0X2xvZ19sZXZlbChsb2dnaW5nLkVS
Uk9SKQotICAgICAgICBvYy5jYXB0dXJlX291dHB1dCgpCi0gICAgICAgIHRyeToKKyAgICAgICAg
d2l0aCBPdXRwdXRDYXB0dXJlKGxldmVsPWxvZ2dpbmcuRVJST1IpIGFzIGNhcHR1cmVkOgogICAg
ICAgICAgICAgc2VsZi5jaGVja19uYW1lcyhbJy90bXAvYW5vdGhlcl91bml0dGVzdC5weSddLCBb
XSkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIF8sIF8sIGxvZ3MgPSBvYy5yZXN0b3Jl
X291dHB1dCgpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEluKCdhbm90aGVyX3VuaXR0ZXN0LnB5
JywgbG9ncykKKyAgICAgICAgc2VsZi5hc3NlcnRJbignYW5vdGhlcl91bml0dGVzdC5weScsIGNh
cHR1cmVkLnJvb3QubG9nLmdldHZhbHVlKCkpCiAKICAgICAgICAgIyBQYXRocyB0aGF0IGRvbid0
IGV4aXN0IGFyZSBlcnJvcnMuCi0gICAgICAgIG9jLmNhcHR1cmVfb3V0cHV0KCkKLSAgICAgICAg
dHJ5OgorICAgICAgICB3aXRoIE91dHB1dENhcHR1cmUobGV2ZWw9bG9nZ2luZy5JTkZPKSBhcyBj
YXB0dXJlZDoKICAgICAgICAgICAgIHNlbGYuY2hlY2tfbmFtZXMoWycvZm9vL2Jhci9ub3RleGlz
dF91bml0dGVzdC5weSddLCBbXSkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIF8sIF8s
IGxvZ3MgPSBvYy5yZXN0b3JlX291dHB1dCgpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEluKCdu
b3RleGlzdF91bml0dGVzdC5weScsIGxvZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ25vdGV4
aXN0X3VuaXR0ZXN0LnB5JywgY2FwdHVyZWQucm9vdC5sb2cuZ2V0dmFsdWUoKSkKIAogICAgICAg
ICAjIE5hbWVzIHRoYXQgZG9uJ3QgZXhpc3QgYXJlIGNhdWdodCBsYXRlciwgYXQgbG9hZCB0aW1l
LgogICAgICAgICBzZWxmLmNoZWNrX25hbWVzKFsnYmFyLm5vdGV4aXN0X3VuaXR0ZXN0J10sIFsn
YmFyLm5vdGV4aXN0X3VuaXR0ZXN0J10pCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rl
c3QvbWFpbl91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3Rlc3QvbWFpbl91bml0dGVzdC5weQkocmV2aXNpb24gMjY1NzczKQorKysgVG9vbHMvU2NyaXB0
cy93ZWJraXRweS90ZXN0L21haW5fdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTEsNCAr
MSw1IEBACiAjIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUsIEluYy4KKyMgQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMjgsOSArMjksMTAgQEAgZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IFN0
cmluZ0lPCiAKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVtIGltcG9ydCBG
aWxlU3lzdGVtCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBF
eGVjdXRpdmUKLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5vdXRwdXRjYXB0dXJlIGltcG9y
dCBPdXRwdXRDYXB0dXJlCiBmcm9tIHdlYmtpdHB5LnRlc3QubWFpbiBpbXBvcnQgVGVzdGVyLCBf
TG9hZGVyCiAKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBPdXRwdXRDYXB0dXJlCisKIAogU1RV
QlNfQ0xBU1MgPSBfX25hbWVfXyArICIuVGVzdFN0dWJzIgogCkBAIC02MywxNiArNjUsMTIgQEAg
Y2xhc3MgVGVzdGVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICAgICAgdGVzdGVyLnBy
aW50ZXIuc3RyZWFtID0gZXJyb3JzCiAgICAgICAgIHRlc3Rlci5maW5kZXIuZmluZF9uYW1lcyA9
IGxhbWJkYSBhcmdzLCBydW5fYWxsOiBbXQotICAgICAgICBvYyA9IE91dHB1dENhcHR1cmUoKQot
ICAgICAgICB0cnk6Ci0gICAgICAgICAgICBvYy5jYXB0dXJlX291dHB1dCgpCisgICAgICAgIHdp
dGggT3V0cHV0Q2FwdHVyZShsZXZlbD1sb2dnaW5nLklORk8pIGFzIGNhcHR1cmVkOgogICAgICAg
ICAgICAgc2VsZi5hc3NlcnRGYWxzZSh0ZXN0ZXIucnVuKCkpCi0gICAgICAgIGZpbmFsbHk6Ci0g
ICAgICAgICAgICBfLCBfLCBsb2dzID0gb2MucmVzdG9yZV9vdXRwdXQoKQotICAgICAgICAgICAg
cm9vdF9sb2dnZXIuaGFuZGxlcnMgPSByb290X2hhbmRsZXJzCisgICAgICAgIHJvb3RfbG9nZ2Vy
LmhhbmRsZXJzID0gcm9vdF9oYW5kbGVycwogCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ05vIHRl
c3RzIHRvIHJ1bicsIGVycm9ycy5nZXR2YWx1ZSgpKQotICAgICAgICBzZWxmLmFzc2VydEluKCdO
byB0ZXN0cyB0byBydW4nLCBsb2dzKQorICAgICAgICBzZWxmLmFzc2VydEluKCdObyB0ZXN0cyB0
byBydW4nLCBjYXB0dXJlZC5yb290LmxvZy5nZXR2YWx1ZSgpKQogCiAgICAgZGVmIF9maW5kX3Rl
c3RfbmFtZXMoc2VsZiwgYXJncyk6CiAgICAgICAgIHRlc3RlciA9IFRlc3RlcigpCkluZGV4OiBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3QvcHJpbnRlci5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3QvcHJpbnRlci5weQkocmV2aXNpb24gMjY1NzczKQorKysg
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L3ByaW50ZXIucHkJKHdvcmtpbmcgY29weSkKQEAg
LTI1LDcgKzI1LDYgQEAgaW1wb3J0IGxvZ2dpbmcKIAogZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0
IFN0cmluZ0lPCiAKLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgb3V0cHV0Y2Fw
dHVyZQogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnN5c3RlbWhvc3QgaW1wb3J0IFN5c3Rl
bUhvc3QKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnZpZXdzLm1ldGVyZWRfc3RyZWFtIGlt
cG9ydCBNZXRlcmVkU3RyZWFtCiBmcm9tIHdlYmtpdHB5LnRvb2wuZ3JhbW1hciBpbXBvcnQgcGx1
cmFsaXplCkBAIC0xMDUsOSArMTA0LDYgQEAgY2xhc3MgUHJpbnRlcihvYmplY3QpOgogICAgICAg
ICBfbG9nLmluZm8oIlN1cHByZXNzaW5nIG1vc3Qgd2Via2l0cHkgbG9nZ2luZyB3aGlsZSBydW5u
aW5nIHVuaXQgdGVzdHMuIikKICAgICAgICAgaGFuZGxlci5hZGRGaWx0ZXIodGVzdGluZ19maWx0
ZXIpCiAKLSAgICAgICAgaWYgc2VsZi5vcHRpb25zLnBhc3NfdGhyb3VnaDoKLSAgICAgICAgICAg
IG91dHB1dGNhcHR1cmUuT3V0cHV0Q2FwdHVyZS5zdHJlYW1fd3JhcHBlciA9IF9DYXB0dXJlQW5k
UGFzc1Rocm91Z2hTdHJlYW0KLQogICAgIGRlZiB3cml0ZV91cGRhdGUoc2VsZiwgbXNnKToKICAg
ICAgICAgc2VsZi5tZXRlci53cml0ZV91cGRhdGUobXNnKQogCkBAIC0xODQsMzIgKzE4MCwzIEBA
IGNsYXNzIFByaW50ZXIob2JqZWN0KToKICAgICAgICAgICAgIHdyaXRlKCdGQUlMRUQgKGZhaWx1
cmVzPSVkLCBlcnJvcnM9JWQpXG4nICUgKHNlbGYubnVtX2ZhaWx1cmVzLCBzZWxmLm51bV9lcnJv
cnMpKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgd3JpdGUoJ1xuT0tcbicpCi0KLQotY2xh
c3MgX0NhcHR1cmVBbmRQYXNzVGhyb3VnaFN0cmVhbShvYmplY3QpOgotICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBzdHJlYW0pOgotICAgICAgICBzZWxmLl9idWZmZXIgPSBTdHJpbmdJTygpCi0gICAg
ICAgIHNlbGYuX3N0cmVhbSA9IHN0cmVhbQotCi0gICAgZGVmIHdyaXRlKHNlbGYsIG1zZyk6Ci0g
ICAgICAgIHNlbGYuX3N0cmVhbS53cml0ZShtc2cpCi0KLSAgICAgICAgIyBOb3RlIHRoYXQgd2Ug
ZG9uJ3Qgd2FudCB0byBjYXB0dXJlIGFueSBvdXRwdXQgZ2VuZXJhdGVkIGJ5IHRoZSBkZWJ1Z2dl
cgotICAgICAgICAjIGJlY2F1c2UgdGhhdCBjb3VsZCBjYXVzZSB0aGUgcmVzdWx0cyBvZiBjYXB0
dXJlX291dHB1dCgpIHRvIGJlIGludmFsaWQuCi0gICAgICAgIGlmIG5vdCBzZWxmLl9tZXNzYWdl
X2lzX2Zyb21fcGRiKCk6Ci0gICAgICAgICAgICBzZWxmLl9idWZmZXIud3JpdGUobXNnKQotCi0g
ICAgZGVmIF9tZXNzYWdlX2lzX2Zyb21fcGRiKHNlbGYpOgotICAgICAgICAjIFdlIHdpbGwgYXNz
dW1lIHRoYXQgaWYgdGhlIHBkYiBtb2R1bGUgaXMgaW4gdGhlIHN0YWNrIHRoZW4gdGhlIG91dHB1
dAotICAgICAgICAjIGlzIGJlaW5nIGdlbmVyYXRlZCBieSB0aGUgcHl0aG9uIGRlYnVnZ2VyIChv
ciB0aGUgdXNlciBjYWxsaW5nIHNvbWV0aGluZwotICAgICAgICAjIGZyb20gaW5zaWRlIHRoZSBk
ZWJ1Z2dlcikuCi0gICAgICAgIGltcG9ydCBpbnNwZWN0Ci0gICAgICAgIGltcG9ydCBwZGIKLSAg
ICAgICAgc3RhY2sgPSBpbnNwZWN0LnN0YWNrKCkKLSAgICAgICAgcmV0dXJuIGFueShmcmFtZVsx
XSA9PSBwZGIuX19maWxlX18ucmVwbGFjZSgnLnB5YycsICcucHknKSBmb3IgZnJhbWUgaW4gc3Rh
Y2spCi0KLSAgICBkZWYgZmx1c2goc2VsZik6Ci0gICAgICAgIHNlbGYuX3N0cmVhbS5mbHVzaCgp
Ci0KLSAgICBkZWYgZ2V0dmFsdWUoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9idWZmZXIu
Z2V0dmFsdWUoKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL211bHRpY29tbWFu
ZHRvb2xfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL211bHRpY29tbWFuZHRvb2xfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2NTc3MykKKysrIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9tdWx0aWNvbW1hbmR0b29sX3VuaXR0ZXN0LnB5CSh3
b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNSBAQAogIyBDb3B5cmlnaHQgKGMpIDIwMDkgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
QEAgLTI2LDE0ICsyNywxNSBAQAogIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAoraW1w
b3J0IGxvZ2dpbmcKIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogCiBmcm9tIG9wdHBhcnNl
IGltcG9ydCBtYWtlX29wdGlvbgotCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0
Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQogZnJvbSB3ZWJraXRweS50b29sLm11bHRpY29t
bWFuZHRvb2wgaW1wb3J0IE11bHRpQ29tbWFuZFRvb2wsIENvbW1hbmQsIFRyeUFnYWluCiAKK2Zy
b20gd2Via2l0Y29yZXB5IGltcG9ydCBPdXRwdXRDYXB0dXJlCisKIAogY2xhc3MgVHJpdmlhbENv
bW1hbmQoQ29tbWFuZCk6CiAgICAgbmFtZSA9ICJ0cml2aWFsIgpAQCAtODcsOCArODksMTQgQEAg
Y2xhc3MgQ29tbWFuZFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X3JlcXVp
cmVkX2FyZ3VtZW50cyhzZWxmKToKICAgICAgICAgVHJpdmlhbENvbW1hbmQuYXJndW1lbnRfbmFt
ZXMgPSAiQVJHMSBBUkcyIFtBUkczXSIKICAgICAgICAgdHdvX3JlcXVpcmVkX2FyZ3VtZW50cyA9
IFRyaXZpYWxDb21tYW5kKCkKLSAgICAgICAgZXhwZWN0ZWRfbG9ncyA9ICIyIGFyZ3VtZW50cyBy
ZXF1aXJlZCwgMSBhcmd1bWVudCBwcm92aWRlZC4gIFByb3ZpZGVkOiAnZm9vJyAgUmVxdWlyZWQ6
IEFSRzEgQVJHMlxuU2VlICd0cml2aWFsLXRvb2wgaGVscCB0cml2aWFsJyBmb3IgdXNhZ2UuXG4i
Ci0gICAgICAgIGV4aXRfY29kZSA9IE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxm
LCB0d29fcmVxdWlyZWRfYXJndW1lbnRzLmNoZWNrX2FyZ3VtZW50c19hbmRfZXhlY3V0ZSwgW05v
bmUsIFsiZm9vIl0sIFRyaXZpYWxUb29sKCldLCBleHBlY3RlZF9sb2dzPWV4cGVjdGVkX2xvZ3Mp
CisKKyAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlKGxldmVsPWxvZ2dpbmcuSU5GTykgYXMgY2Fw
dHVyZWQ6CisgICAgICAgICAgICBleGl0X2NvZGUgPSB0d29fcmVxdWlyZWRfYXJndW1lbnRzLmNo
ZWNrX2FyZ3VtZW50c19hbmRfZXhlY3V0ZShOb25lLCBbImZvbyJdLCBUcml2aWFsVG9vbCgpKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY2FwdHVyZWQucm9vdC5sb2cu
Z2V0dmFsdWUoKSwKKyAgICAgICAgICAgICIyIGFyZ3VtZW50cyByZXF1aXJlZCwgMSBhcmd1bWVu
dCBwcm92aWRlZC4gIFByb3ZpZGVkOiAnZm9vJyAgUmVxdWlyZWQ6IEFSRzEgQVJHMlxuU2VlICd0
cml2aWFsLXRvb2wgaGVscCB0cml2aWFsJyBmb3IgdXNhZ2UuXG4iLAorICAgICAgICApCisKICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGl0X2NvZGUsIDEpCiAgICAgICAgIFRyaXZpYWxDb21t
YW5kLmFyZ3VtZW50X25hbWVzID0gTm9uZQogCkBAIC0xMjksNyArMTM3LDEwIEBAIGNsYXNzIE11
bHRpQ29tbWFuZFRvb2xUZXN0KHVuaXR0ZXN0LlRlc3QKICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCh0b29sLmNvbW1hbmRfYnlfbmFtZSgiYmFyIiksIE5vbmUpCiAKICAgICBkZWYgX2Fzc2VydF90
b29sX21haW5fb3V0cHV0cyhzZWxmLCB0b29sLCBtYWluX2FyZ3MsIGV4cGVjdGVkX3N0ZG91dCwg
ZXhwZWN0ZWRfc3RkZXJyPSIiLCBleHBlY3RlZF9leGl0X2NvZGU9MCk6Ci0gICAgICAgIGV4aXRf
Y29kZSA9IE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCB0b29sLm1haW4sIFtt
YWluX2FyZ3NdLCBleHBlY3RlZF9zdGRvdXQ9ZXhwZWN0ZWRfc3Rkb3V0LCBleHBlY3RlZF9zdGRl
cnI9ZXhwZWN0ZWRfc3RkZXJyKQorICAgICAgICB3aXRoIE91dHB1dENhcHR1cmUoKSBhcyBjYXB0
dXJlZDoKKyAgICAgICAgICAgIGV4aXRfY29kZSA9IHRvb2wubWFpbihtYWluX2FyZ3MpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQuc3Rkb3V0LmdldHZhbHVlKCksIGV4cGVjdGVk
X3N0ZG91dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYXB0dXJlZC5zdGRlcnIuZ2V0dmFs
dWUoKSwgZXhwZWN0ZWRfc3RkZXJyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4aXRfY29k
ZSwgZXhwZWN0ZWRfZXhpdF9jb2RlKQogCiAgICAgZGVmIHRlc3RfcmV0cnkoc2VsZik6CkluZGV4
OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2ZsYWt5dGVzdHJlcG9ydGVyX3VuaXR0
ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvZmxh
a3l0ZXN0cmVwb3J0ZXJfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2NTc3MykKKysrIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvZmxha3l0ZXN0cmVwb3J0ZXJfdW5pdHRlc3QucHkJKHdv
cmtpbmcgY29weSkKQEAgLTEsNCArMSw1IEBACiAjIENvcHlyaWdodCAoYykgMjAxMCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpA
QCAtMjYsMTcgKzI3LDE5IEBACiAjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCitpbXBv
cnQgbG9nZ2luZwogaW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20gd2Via2l0cHkuY29tbW9uLmNvbmZp
Zy5jb21taXR0ZXJzIGltcG9ydCBDb21taXR0ZXIKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3Rl
bS5maWxlc3lzdGVtX21vY2sgaW1wb3J0IE1vY2tGaWxlU3lzdGVtCi1mcm9tIHdlYmtpdHB5LmNv
bW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQogZnJvbSB3ZWJr
aXRweS5sYXlvdXRfdGVzdHMubW9kZWxzIGltcG9ydCB0ZXN0X3Jlc3VsdHMKIGZyb20gd2Via2l0
cHkubGF5b3V0X3Rlc3RzLm1vZGVscyBpbXBvcnQgdGVzdF9mYWlsdXJlcwogZnJvbSB3ZWJraXRw
eS50aGlyZHBhcnR5Lm1vY2sgaW1wb3J0IE1vY2sKIGZyb20gd2Via2l0cHkudG9vbC5ib3QuZmxh
a3l0ZXN0cmVwb3J0ZXIgaW1wb3J0IEZsYWt5VGVzdFJlcG9ydGVyCiBmcm9tIHdlYmtpdHB5LnRv
b2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tUb29sCiAKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBP
dXRwdXRDYXB0dXJlCisKIAogIyBDcmVhdGluZyBmYWtlIENvbW1pdEluZm9zIGlzIGEgcGFpbiwg
c28gd2UgdXNlIGEgbW9jayBvbmUgaGVyZS4KIGNsYXNzIE1vY2tDb21taXRJbmZvKG9iamVjdCk6
CkBAIC02OSw3ICs3MiwxMiBAQCBjbGFzcyBGbGFreVRlc3RSZXBvcnRlclRlc3QodW5pdHRlc3Qu
VGVzCiAKICAgICBkZWYgdGVzdF9jcmVhdGVfYnVnX2Zvcl9mbGFreV90ZXN0KHNlbGYpOgogICAg
ICAgICByZXBvcnRlciA9IEZsYWt5VGVzdFJlcG9ydGVyKE1vY2tUb29sKCksICdkdW1teS1xdWV1
ZScpCi0gICAgICAgIGV4cGVjdGVkX2xvZ3MgPSAiIiJNT0NLIGNyZWF0ZV9idWcKKworICAgICAg
ICB3aXRoIE91dHB1dENhcHR1cmUobGV2ZWw9bG9nZ2luZy5JTkZPKSBhcyBjYXB0dXJlZDoKKyAg
ICAgICAgICAgIHJlcG9ydGVyLl9jcmVhdGVfYnVnX2Zvcl9mbGFreV90ZXN0KCdmb28vYmFyLmh0
bWwnLCBbJ3Rlc3RAdGVzdC5jb20nXSwgJ0ZMQUtFX01FU1NBR0UnKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKAorICAgICAgICAgICAgY2FwdHVyZWQucm9vdC5sb2cuZ2V0dmFsdWUoKSwKKyAg
ICAgICAgICAgICIiIk1PQ0sgY3JlYXRlX2J1ZwogYnVnX3RpdGxlOiBGbGFreSBUZXN0OiBmb28v
YmFyLmh0bWwKIGJ1Z19kZXNjcmlwdGlvbjogVGhpcyBpcyBhbiBhdXRvbWF0aWNhbGx5IGdlbmVy
YXRlZCBidWcgZnJvbSB0aGUgZHVtbXktcXVldWUuCiBmb28vYmFyLmh0bWwgaGFzIGJlZW4gZmxh
a3kgb24gdGhlIGR1bW15LXF1ZXVlLgpAQCAtODgsOCArOTYsOCBAQCBJZiB5b3Ugd291bGQgbGlr
ZSB0byB0cmFjayB0aGlzIHRlc3QgZml4CiBjb21wb25lbnQ6IFRvb2xzIC8gVGVzdHMKIGNjOiB0
ZXN0QHRlc3QuY29tCiBibG9ja2VkOiA1MDg1NgotIiIiCi0gICAgICAgIE91dHB1dENhcHR1cmUo
KS5hc3NlcnRfb3V0cHV0cyhzZWxmLCByZXBvcnRlci5fY3JlYXRlX2J1Z19mb3JfZmxha3lfdGVz
dCwgWydmb28vYmFyLmh0bWwnLCBbJ3Rlc3RAdGVzdC5jb20nXSwgJ0ZMQUtFX01FU1NBR0UnXSwg
ZXhwZWN0ZWRfbG9ncz1leHBlY3RlZF9sb2dzKQorIiIiLAorICAgICAgICApCiAKICAgICBkZWYg
dGVzdF9mb2xsb3dfZHVwbGljYXRlX2NoYWluKHNlbGYpOgogICAgICAgICB0b29sID0gTW9ja1Rv
b2woKQpAQCAtMTAzLDcgKzExMSwyMiBAQCBibG9ja2VkOiA1MDg1NgogICAgICAgICByZXBvcnRl
ciA9IEZsYWt5VGVzdFJlcG9ydGVyKHRvb2wsICdkdW1teS1xdWV1ZScpCiAgICAgICAgIHJlcG9y
dGVyLl9sb29rdXBfYnVnX2Zvcl9mbGFreV90ZXN0ID0gbGFtYmRhIGJ1Z19pZDogTm9uZQogICAg
ICAgICBwYXRjaCA9IHRvb2wuYnVncy5mZXRjaF9hdHRhY2htZW50KDEwMDAwKQotICAgICAgICBl
eHBlY3RlZF9sb2dzID0gIiIiQnVnIGRvZXMgbm90IGFscmVhZHkgZXhpc3QgZm9yIGZvby9iYXIu
aHRtbCwgY3JlYXRpbmcuCisKKyAgICAgICAgdGVzdF9yZXN1bHRzID0gW3NlbGYuX21vY2tfdGVz
dF9yZXN1bHQoJ2Zvby9iYXIuaHRtbCcpXQorCisgICAgICAgIGNsYXNzIE1vY2taaXBGaWxlKG9i
amVjdCk6CisgICAgICAgICAgICBkZWYgcmVhZChzZWxmLCBwYXRoKToKKyAgICAgICAgICAgICAg
ICByZXR1cm4gIiIKKworICAgICAgICAgICAgZGVmIG5hbWVsaXN0KHNlbGYpOgorICAgICAgICAg
ICAgICAgIHJldHVybiBbJ2Zvby9iYXItZGlmZnMudHh0J10KKworICAgICAgICB3aXRoIE91dHB1
dENhcHR1cmUobGV2ZWw9bG9nZ2luZy5JTkZPKSBhcyBjYXB0dXJlZDoKKyAgICAgICAgICAgIHJl
cG9ydGVyLnJlcG9ydF9mbGFreV90ZXN0cyhwYXRjaCwgdGVzdF9yZXN1bHRzLCBNb2NrWmlwRmls
ZSgpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBjYXB0dXJlZC5y
b290LmxvZy5nZXR2YWx1ZSgpLAorICAgICAgICAgICAgIiIiQnVnIGRvZXMgbm90IGFscmVhZHkg
ZXhpc3QgZm9yIGZvby9iYXIuaHRtbCwgY3JlYXRpbmcuCiBNT0NLIGNyZWF0ZV9idWcKIGJ1Z190
aXRsZTogRmxha3kgVGVzdDogZm9vL2Jhci5odG1sCiBidWdfZGVzY3JpcHRpb246IFRoaXMgaXMg
YW4gYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnVnIGZyb20gdGhlIGR1bW15LXF1ZXVlLgpAQCAt
MTMzLDE3ICsxNTYsOCBAQCBmb28vYmFyLmh0bWwgYnVnIDYwMDAxIChhdXRob3I6IGFiYXJ0aEB3
CiBUaGUgZHVtbXktcXVldWUgaXMgY29udGludWluZyB0byBwcm9jZXNzIHlvdXIgcGF0Y2guCiAt
LS0gRW5kIGNvbW1lbnQgLS0tCiAKLSIiIgotICAgICAgICB0ZXN0X3Jlc3VsdHMgPSBbc2VsZi5f
bW9ja190ZXN0X3Jlc3VsdCgnZm9vL2Jhci5odG1sJyldCi0KLSAgICAgICAgY2xhc3MgTW9ja1pp
cEZpbGUob2JqZWN0KToKLSAgICAgICAgICAgIGRlZiByZWFkKHNlbGYsIHBhdGgpOgotICAgICAg
ICAgICAgICAgIHJldHVybiAiIgotCi0gICAgICAgICAgICBkZWYgbmFtZWxpc3Qoc2VsZik6Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIFsnZm9vL2Jhci1kaWZmcy50eHQnXQotCi0gICAgICAgIE91
dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCByZXBvcnRlci5yZXBvcnRfZmxha3lf
dGVzdHMsIFtwYXRjaCwgdGVzdF9yZXN1bHRzLCBNb2NrWmlwRmlsZSgpXSwgZXhwZWN0ZWRfbG9n
cz1leHBlY3RlZF9sb2dzKQorIiIiLAorICAgICAgICApCiAKICAgICBkZWYgdGVzdF9vcHRpb25h
bF9hdXRob3Jfc3RyaW5nKHNlbGYpOgogICAgICAgICByZXBvcnRlciA9IEZsYWt5VGVzdFJlcG9y
dGVyKE1vY2tUb29sKCksICdkdW1teS1xdWV1ZScpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3Rvb2wvYm90L2lyY19jb21tYW5kX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvaXJjX2NvbW1hbmRfdW5pdHRlc3QucHkJKHJldmlz
aW9uIDI2NTc3MykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvaXJjX2NvbW1h
bmRfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw1IEBACiAjIENvcHlyaWdo
dCAoYykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQpAQCAtMjYsMTYgKzI3LDE4IEBACiAjIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogCitpbXBvcnQgbG9nZ2luZwogaW1wb3J0IG9zCiBpbXBvcnQgdW5pdHRlc3QK
IAotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0IE91dHB1
dENhcHR1cmUKIGZyb20gd2Via2l0cHkudG9vbC5ib3QuaXJjX2NvbW1hbmQgaW1wb3J0ICoKIGZy
b20gd2Via2l0cHkudG9vbC5tb2NrdG9vbCBpbXBvcnQgTW9ja1Rvb2wKIGZyb20gd2Via2l0cHku
Y29tbW9uLm5ldC53ZWJfbW9jayBpbXBvcnQgTW9ja1dlYgogZnJvbSB3ZWJraXRweS5jb21tb24u
c3lzdGVtLmV4ZWN1dGl2ZV9tb2NrIGltcG9ydCBNb2NrRXhlY3V0aXZlCiBmcm9tIHdlYmtpdHB5
LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbV9tb2NrIGltcG9ydCBNb2NrRmlsZVN5c3RlbQogCitm
cm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQorCiAKIGNsYXNzIElSQ0NvbW1h
bmRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF93aG9pcyhzZWxmKToKQEAg
LTg2LDggKzg5LDEyIEBAIGNsYXNzIElSQ0NvbW1hbmRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToK
ICAgICAgICAgcmV2ZXJ0ID0gUmV2ZXJ0KCkKICAgICAgICAgdG9vbCA9IE1vY2tUb29sKCkKICAg
ICAgICAgdG9vbC5leGVjdXRpdmUgPSBNb2NrRXhlY3V0aXZlKHNob3VsZF9sb2c9VHJ1ZSkKLSAg
ICAgICAgZXhwZWN0ZWRfbG9ncyA9ICJNT0NLIHJ1bl9hbmRfdGhyb3dfaWZfZmFpbDogWydtb2Nr
LXVwZGF0ZS13ZWJraXQnXSwgY3dkPS9tb2NrLWNoZWNrb3V0XG4iCi0gICAgICAgIE91dHB1dENh
cHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCByZXZlcnQuX3VwZGF0ZV93b3JraW5nX2NvcHks
IFt0b29sXSwgZXhwZWN0ZWRfbG9ncz1leHBlY3RlZF9sb2dzKQorICAgICAgICB3aXRoIE91dHB1
dENhcHR1cmUobGV2ZWw9bG9nZ2luZy5JTkZPKSBhcyBjYXB0dXJlZDoKKyAgICAgICAgICAgIHJl
dmVydC5fdXBkYXRlX3dvcmtpbmdfY29weSh0b29sKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KAorICAgICAgICAgICAgY2FwdHVyZWQucm9vdC5sb2cuZ2V0dmFsdWUoKSwKKyAgICAgICAgICAg
ICJNT0NLIHJ1bl9hbmRfdGhyb3dfaWZfZmFpbDogWydtb2NrLXVwZGF0ZS13ZWJraXQnXSwgY3dk
PS9tb2NrLWNoZWNrb3V0XG4iLAorICAgICAgICApCiAKICAgICBkZWYgdGVzdF9yZXZlcnQoc2Vs
Zik6CiAgICAgICAgIHJldmVydCA9IFJldmVydCgpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3Rvb2wvYm90L2lyY2JvdF91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvYm90L2lyY2JvdF91bml0dGVzdC5weQkocmV2aXNpb24gMjY1Nzcz
KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9pcmNib3RfdW5pdHRlc3QucHkJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw1IEBACiAjIENvcHlyaWdodCAoYykgMjAxMCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQpAQCAtMjYsMTAgKzI3LDEwIEBACiAjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCitp
bXBvcnQgbG9nZ2luZwogaW1wb3J0IHJhbmRvbQogaW1wb3J0IHVuaXR0ZXN0CiAKLWZyb20gd2Vi
a2l0cHkuY29tbW9uLnN5c3RlbS5vdXRwdXRjYXB0dXJlIGltcG9ydCBPdXRwdXRDYXB0dXJlCiBm
cm9tIHdlYmtpdHB5LnRvb2wuYm90IGltcG9ydCBpcmNfY29tbWFuZAogZnJvbSB3ZWJraXRweS50
b29sLmJvdC5xdWV1ZWVuZ2luZSBpbXBvcnQgVGVybWluYXRlUXVldWUKIGZyb20gd2Via2l0cHku
dG9vbC5ib3Quc2hlcmlmZiBpbXBvcnQgU2hlcmlmZgpAQCAtMzgsNiArMzksOCBAQCBmcm9tIHdl
YmtpdHB5LnRvb2wuYm90LmlyY2JvdCBpbXBvcnQgVW5rCiBmcm9tIHdlYmtpdHB5LnRvb2wuYm90
LnNoZXJpZmZfdW5pdHRlc3QgaW1wb3J0IE1vY2tTaGVyaWZmQm90CiBmcm9tIHdlYmtpdHB5LnRv
b2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tUb29sCiAKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBP
dXRwdXRDYXB0dXJlCisKIAogZGVmIHJ1bihtZXNzYWdlKToKICAgICB0b29sID0gTW9ja1Rvb2wo
KQpAQCAtNjYsOCArNjksOSBAQCBjbGFzcyBJUkNCb3RUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToK
ICAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIm1vY2tfZXhjZXB0aW9uIikKIAogICAg
ICAgICBib3QuX3BhcnNlX2NvbW1hbmRfYW5kX2FyZ3MgPSBsYW1iZGEgcmVxdWVzdDogKENvbW1h
bmRXaXRoRXhjZXB0aW9uLCBbXSkKLSAgICAgICAgZXhwZWN0ZWRfbG9ncyA9ICdNT0NLOiBpcmMu
cG9zdDogRXhjZXB0aW9uIGV4ZWN1dGluZyBjb21tYW5kOiBtb2NrX2V4Y2VwdGlvblxuJwotICAg
ICAgICBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMoc2VsZiwgYm90LnByb2Nlc3NfbWVz
c2FnZSwgYXJncz1bIm1vY2tfbmljayIsICJpZ25vcmVkIG1lc3NhZ2UiXSwgZXhwZWN0ZWRfbG9n
cz1leHBlY3RlZF9sb2dzKQorICAgICAgICB3aXRoIE91dHB1dENhcHR1cmUobGV2ZWw9bG9nZ2lu
Zy5JTkZPKSBhcyBjYXB0dXJlZDoKKyAgICAgICAgICAgIGJvdC5wcm9jZXNzX21lc3NhZ2UoJ21v
Y2tfbmljaycsICdpZ25vcmVkIG1lc3NhZ2UnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNh
cHR1cmVkLnJvb3QubG9nLmdldHZhbHVlKCksICdNT0NLOiBpcmMucG9zdDogRXhjZXB0aW9uIGV4
ZWN1dGluZyBjb21tYW5kOiBtb2NrX2V4Y2VwdGlvblxuJykKIAogCiAgICAgICAgIGNsYXNzIENv
bW1hbmRXaXRoRXhjZXB0aW9uKG9iamVjdCk6CkBAIC03Niw3OSArODAsMTQ5IEBAIGNsYXNzIElS
Q0JvdFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgICAgIGJvdC5fcGFyc2VfY29tbWFu
ZF9hbmRfYXJncyA9IGxhbWJkYSByZXF1ZXN0OiAoQ29tbWFuZFdpdGhFeGNlcHRpb24sIFtdKQog
ICAgICAgICAjIEtleWJvYXJkSW50ZXJydXB0IGFuZCBTeXN0ZW1FeGl0IGFyZSBub3Qgc3ViY2xh
c3NlcyBvZiBFeGNlcHRpb24gYW5kIHRodXMgY29ycmVjdGx5IHdpbGwgbm90IGJlIGNhdWdodC4K
LSAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIGJvdC5wcm9jZXNz
X21lc3NhZ2UsIGFyZ3M9WyJtb2NrX25pY2siLCAiaWdub3JlZCBtZXNzYWdlIl0sIGV4cGVjdGVk
X2V4Y2VwdGlvbj1LZXlib2FyZEludGVycnVwdCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJh
aXNlcyhLZXlib2FyZEludGVycnVwdCk6CisgICAgICAgICAgICB3aXRoIE91dHB1dENhcHR1cmUo
bGV2ZWw9bG9nZ2luZy5JTkZPKToKKyAgICAgICAgICAgICAgICBib3QucHJvY2Vzc19tZXNzYWdl
KCdtb2NrX25pY2snLCAnaWdub3JlZCBtZXNzYWdlJykKIAogICAgIGRlZiB0ZXN0X2hpKHNlbGYp
OgogICAgICAgICByYW5kb20uc2VlZCgyMzMyNCkKLSAgICAgICAgZXhwZWN0ZWRfbG9ncyA9ICdN
T0NLOiBpcmMucG9zdDogIk9ubHkgeW91IGNhbiBwcmV2ZW50IGZvcmVzdCBmaXJlcy4iIC0tIFNt
b2tleSB0aGUgQmVhclxuJwotICAgICAgICBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMo
c2VsZiwgcnVuLCBhcmdzPVsiaGkiXSwgZXhwZWN0ZWRfbG9ncz1leHBlY3RlZF9sb2dzKQorICAg
ICAgICB3aXRoIE91dHB1dENhcHR1cmUobGV2ZWw9bG9nZ2luZy5JTkZPKSBhcyBjYXB0dXJlZDoK
KyAgICAgICAgICAgIHJ1bignaGknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAg
ICAgICAgY2FwdHVyZWQucm9vdC5sb2cuZ2V0dmFsdWUoKSwKKyAgICAgICAgICAgICdNT0NLOiBp
cmMucG9zdDogIk9ubHkgeW91IGNhbiBwcmV2ZW50IGZvcmVzdCBmaXJlcy4iIC0tIFNtb2tleSB0
aGUgQmVhclxuJywKKyAgICAgICAgKQogCiAgICAgZGVmIHRlc3RfaGVscChzZWxmKToKLSAgICAg
ICAgZXhwZWN0ZWRfbG9ncyA9ICdNT0NLOiBpcmMucG9zdDogbW9ja19uaWNrOiBBdmFpbGFibGUg
Y29tbWFuZHM6IGNyZWF0ZS1idWcsIGhlbHAsIGhpLCBwaW5nLCByZXN0YXJ0LCByZXZlcnQsIHdo
b2lzLCB5dD9cbk1PQ0s6IGlyYy5wb3N0OiBtb2NrX25pY2s6IFR5cGUgIm1vY2stc2hlcmlmZi1i
b3Q6IGhlbHAgQ09NTUFORCIgZm9yIGhlbHAgb24gbXkgaW5kaXZpZHVhbCBjb21tYW5kcy5cbicK
LSAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIHJ1biwgYXJncz1b
ImhlbHAiXSwgZXhwZWN0ZWRfbG9ncz1leHBlY3RlZF9sb2dzKQotICAgICAgICBleHBlY3RlZF9s
b2dzID0gJ01PQ0s6IGlyYy5wb3N0OiBtb2NrX25pY2s6IFVzYWdlOiBoaVxuTU9DSzogaXJjLnBv
c3Q6IG1vY2tfbmljazogUmVzcG9uZHMgd2l0aCBoaS5cbk1PQ0s6IGlyYy5wb3N0OiBtb2NrX25p
Y2s6IEFsaWFzZXM6IGhlbGxvXG4nCi0gICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0
cHV0cyhzZWxmLCBydW4sIGFyZ3M9WyJoZWxwIGhpIl0sIGV4cGVjdGVkX2xvZ3M9ZXhwZWN0ZWRf
bG9ncykKLSAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIHJ1biwg
YXJncz1bImhlbHAgaGVsbG8iXSwgZXhwZWN0ZWRfbG9ncz1leHBlY3RlZF9sb2dzKQorICAgICAg
ICB3aXRoIE91dHB1dENhcHR1cmUobGV2ZWw9bG9nZ2luZy5JTkZPKSBhcyBjYXB0dXJlZDoKKyAg
ICAgICAgICAgIHJ1bignaGVscCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAg
ICAgICBjYXB0dXJlZC5yb290LmxvZy5nZXR2YWx1ZSgpLAorICAgICAgICAgICAgJycnTU9DSzog
aXJjLnBvc3Q6IG1vY2tfbmljazogQXZhaWxhYmxlIGNvbW1hbmRzOiBjcmVhdGUtYnVnLCBoZWxw
LCBoaSwgcGluZywgcmVzdGFydCwgcmV2ZXJ0LCB3aG9pcywgeXQ/CitNT0NLOiBpcmMucG9zdDog
bW9ja19uaWNrOiBUeXBlICJtb2NrLXNoZXJpZmYtYm90OiBoZWxwIENPTU1BTkQiIGZvciBoZWxw
IG9uIG15IGluZGl2aWR1YWwgY29tbWFuZHMuCisnJycsCisgICAgICAgICkKKworICAgICAgICBl
eHBlY3RlZF9sb2dzID0gJycnTU9DSzogaXJjLnBvc3Q6IG1vY2tfbmljazogVXNhZ2U6IGhpCitN
T0NLOiBpcmMucG9zdDogbW9ja19uaWNrOiBSZXNwb25kcyB3aXRoIGhpLgorTU9DSzogaXJjLnBv
c3Q6IG1vY2tfbmljazogQWxpYXNlczogaGVsbG8KKycnJworICAgICAgICB3aXRoIE91dHB1dENh
cHR1cmUobGV2ZWw9bG9nZ2luZy5JTkZPKSBhcyBjYXB0dXJlZDoKKyAgICAgICAgICAgIHJ1bign
aGVscCBoaScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQucm9vdC5sb2cuZ2V0
dmFsdWUoKSwgZXhwZWN0ZWRfbG9ncykKKworICAgICAgICB3aXRoIE91dHB1dENhcHR1cmUobGV2
ZWw9bG9nZ2luZy5JTkZPKSBhcyBjYXB0dXJlZDoKKyAgICAgICAgICAgIHJ1bignaGVscCBoZWxs
bycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQucm9vdC5sb2cuZ2V0dmFsdWUo
KSwgZXhwZWN0ZWRfbG9ncykKIAogICAgIGRlZiB0ZXN0X3Jlc3RhcnQoc2VsZik6Ci0gICAgICAg
IGV4cGVjdGVkX2xvZ3MgPSAiTU9DSzogaXJjLnBvc3Q6IFJlc3RhcnRpbmcuLi5cbiIKLSAgICAg
ICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIHJ1biwgYXJncz1bInJlc3Rh
cnQiXSwgZXhwZWN0ZWRfbG9ncz1leHBlY3RlZF9sb2dzLCBleHBlY3RlZF9leGNlcHRpb249VGVy
bWluYXRlUXVldWUpCisgICAgICAgIHdpdGggT3V0cHV0Q2FwdHVyZShsZXZlbD1sb2dnaW5nLklO
Rk8pIGFzIGNhcHR1cmVkOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUZXJt
aW5hdGVRdWV1ZSk6CisgICAgICAgICAgICAgICAgcnVuKCdyZXN0YXJ0JykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChjYXB0dXJlZC5yb290LmxvZy5nZXR2YWx1ZSgpLCAnTU9DSzogaXJjLnBv
c3Q6IFJlc3RhcnRpbmcuLi5cbicpCiAKICAgICBkZWYgdGVzdF9yb2xsb3V0KHNlbGYpOgotICAg
ICAgICBleHBlY3RlZF9sb2dzID0gIk1PQ0s6IGlyYy5wb3N0OiBtb2NrX25pY2s6IFByZXBhcmlu
ZyByZXZlcnQgZm9yIGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yMTY1NCAuLi5c
bk1PQ0s6IGlyYy5wb3N0OiBtb2NrX25pY2ssIGFiYXJ0aCwgYXAsIGRhcmluOiBDcmVhdGVkIGEg
cmV2ZXJ0IHBhdGNoOiBodHRwOi8vZXhhbXBsZS5jb20vMzY5MzZcbiIKLSAgICAgICAgT3V0cHV0
Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIHJ1biwgYXJncz1bInJvbGxvdXQgMjE2NTQg
VGhpcyBwYXRjaCBicm9rZSB0aGUgd29ybGQiXSwgZXhwZWN0ZWRfbG9ncz1leHBlY3RlZF9sb2dz
KQorICAgICAgICB3aXRoIE91dHB1dENhcHR1cmUobGV2ZWw9bG9nZ2luZy5JTkZPKSBhcyBjYXB0
dXJlZDoKKyAgICAgICAgICAgIHJ1bigncm9sbG91dCAyMTY1NCBUaGlzIHBhdGNoIGJyb2tlIHRo
ZSB3b3JsZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBjYXB0dXJl
ZC5yb290LmxvZy5nZXR2YWx1ZSgpLAorICAgICAgICAgICAgJycnTU9DSzogaXJjLnBvc3Q6IG1v
Y2tfbmljazogUHJlcGFyaW5nIHJldmVydCBmb3IgaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hh
bmdlc2V0LzIxNjU0IC4uLgorTU9DSzogaXJjLnBvc3Q6IG1vY2tfbmljaywgYWJhcnRoLCBhcCwg
ZGFyaW46IENyZWF0ZWQgYSByZXZlcnQgcGF0Y2g6IGh0dHA6Ly9leGFtcGxlLmNvbS8zNjkzNgor
JycnLAorICAgICAgICApCiAKICAgICBkZWYgdGVzdF9yZXZlcnQoc2VsZik6Ci0gICAgICAgIGV4
cGVjdGVkX2xvZ3MgPSAiTU9DSzogaXJjLnBvc3Q6IG1vY2tfbmljazogUHJlcGFyaW5nIHJldmVy
dCBmb3IgaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzIxNjU0IC4uLlxuTU9DSzog
aXJjLnBvc3Q6IG1vY2tfbmljaywgYWJhcnRoLCBhcCwgZGFyaW46IENyZWF0ZWQgYSByZXZlcnQg
cGF0Y2g6IGh0dHA6Ly9leGFtcGxlLmNvbS8zNjkzNlxuIgotICAgICAgICBPdXRwdXRDYXB0dXJl
KCkuYXNzZXJ0X291dHB1dHMoc2VsZiwgcnVuLCBhcmdzPVsicmV2ZXJ0IDIxNjU0IFRoaXMgcGF0
Y2ggYnJva2UgdGhlIHdvcmxkIl0sIGV4cGVjdGVkX2xvZ3M9ZXhwZWN0ZWRfbG9ncykKKyAgICAg
ICAgd2l0aCBPdXRwdXRDYXB0dXJlKGxldmVsPWxvZ2dpbmcuSU5GTykgYXMgY2FwdHVyZWQ6Cisg
ICAgICAgICAgICBydW4oJ3JldmVydCAyMTY1NCBUaGlzIHBhdGNoIGJyb2tlIHRoZSB3b3JsZCcp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBjYXB0dXJlZC5yb290Lmxv
Zy5nZXR2YWx1ZSgpLAorICAgICAgICAgICAgJycnTU9DSzogaXJjLnBvc3Q6IG1vY2tfbmljazog
UHJlcGFyaW5nIHJldmVydCBmb3IgaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzIx
NjU0IC4uLgorTU9DSzogaXJjLnBvc3Q6IG1vY2tfbmljaywgYWJhcnRoLCBhcCwgZGFyaW46IENy
ZWF0ZWQgYSByZXZlcnQgcGF0Y2g6IGh0dHA6Ly9leGFtcGxlLmNvbS8zNjkzNgorJycnLAorICAg
ICAgICApCiAKICAgICBkZWYgdGVzdF9tdWx0aV9yZXZlcnQoc2VsZik6Ci0gICAgICAgIGV4cGVj
dGVkX2xvZ3MgPSAiTU9DSzogaXJjLnBvc3Q6IG1vY2tfbmljazogUHJlcGFyaW5nIHJldmVydCBm
b3IgaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzIxNjU0LCBodHRwczovL3RyYWMu
d2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjE2NTUsIGFuZCBodHRwczovL3RyYWMud2Via2l0Lm9yZy9j
aGFuZ2VzZXQvMjE2NTYgLi4uXG5NT0NLOiBpcmMucG9zdDogbW9ja19uaWNrLCBhYmFydGgsIGFw
LCBkYXJpbjogQ3JlYXRlZCBhIHJldmVydCBwYXRjaDogaHR0cDovL2V4YW1wbGUuY29tLzM2OTM2
XG4iCi0gICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCBydW4sIGFy
Z3M9WyJyZXZlcnQgMjE2NTQgMjE2NTUgMjE2NTYgVGhpcyAyMTY1NCBwYXRjaCBicm9rZSB0aGUg
d29ybGQiXSwgZXhwZWN0ZWRfbG9ncz1leHBlY3RlZF9sb2dzKQorICAgICAgICB3aXRoIE91dHB1
dENhcHR1cmUobGV2ZWw9bG9nZ2luZy5JTkZPKSBhcyBjYXB0dXJlZDoKKyAgICAgICAgICAgIHJ1
bigncmV2ZXJ0IDIxNjU0IDIxNjU1IDIxNjU2IFRoaXMgMjE2NTQgcGF0Y2ggYnJva2UgdGhlIHdv
cmxkJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNhcHR1cmVkLnJv
b3QubG9nLmdldHZhbHVlKCksCisgICAgICAgICAgICAnJydNT0NLOiBpcmMucG9zdDogbW9ja19u
aWNrOiBQcmVwYXJpbmcgcmV2ZXJ0IGZvciBodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2Vz
ZXQvMjE2NTQsIGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yMTY1NSwgYW5kIGh0
dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yMTY1NiAuLi4KK01PQ0s6IGlyYy5wb3N0
OiBtb2NrX25pY2ssIGFiYXJ0aCwgYXAsIGRhcmluOiBDcmVhdGVkIGEgcmV2ZXJ0IHBhdGNoOiBo
dHRwOi8vZXhhbXBsZS5jb20vMzY5MzYKKycnJywKKyAgICAgICAgKQogCiAgICAgZGVmIHRlc3Rf
cmV2ZXJ0X3dpdGhfcl9pbl9zdm5fcmV2aXNpb24oc2VsZik6Ci0gICAgICAgIGV4cGVjdGVkX2xv
Z3MgPSAiTU9DSzogaXJjLnBvc3Q6IG1vY2tfbmljazogUHJlcGFyaW5nIHJldmVydCBmb3IgaHR0
cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzIxNjU0IC4uLlxuTU9DSzogaXJjLnBvc3Q6
IG1vY2tfbmljaywgYWJhcnRoLCBhcCwgZGFyaW46IENyZWF0ZWQgYSByZXZlcnQgcGF0Y2g6IGh0
dHA6Ly9leGFtcGxlLmNvbS8zNjkzNlxuIgotICAgICAgICBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0
X291dHB1dHMoc2VsZiwgcnVuLCBhcmdzPVsicmV2ZXJ0IHIyMTY1NCBUaGlzIHBhdGNoIGJyb2tl
IHRoZSB3b3JsZCJdLCBleHBlY3RlZF9sb2dzPWV4cGVjdGVkX2xvZ3MpCisgICAgICAgIHdpdGgg
T3V0cHV0Q2FwdHVyZShsZXZlbD1sb2dnaW5nLklORk8pIGFzIGNhcHR1cmVkOgorICAgICAgICAg
ICAgcnVuKCdyZXZlcnQgcjIxNjU0IFRoaXMgcGF0Y2ggYnJva2UgdGhlIHdvcmxkJykKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNhcHR1cmVkLnJvb3QubG9nLmdldHZh
bHVlKCksCisgICAgICAgICAgICAnJydNT0NLOiBpcmMucG9zdDogbW9ja19uaWNrOiBQcmVwYXJp
bmcgcmV2ZXJ0IGZvciBodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjE2NTQgLi4u
CitNT0NLOiBpcmMucG9zdDogbW9ja19uaWNrLCBhYmFydGgsIGFwLCBkYXJpbjogQ3JlYXRlZCBh
IHJldmVydCBwYXRjaDogaHR0cDovL2V4YW1wbGUuY29tLzM2OTM2CisnJycsCisgICAgICAgICkK
IAogICAgIGRlZiB0ZXN0X211bHRpX3JldmVydF93aXRoX3JfaW5fc3ZuX3JldmlzaW9uKHNlbGYp
OgotICAgICAgICBleHBlY3RlZF9sb2dzID0gIk1PQ0s6IGlyYy5wb3N0OiBtb2NrX25pY2s6IFBy
ZXBhcmluZyByZXZlcnQgZm9yIGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yMTY1
NCwgaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzIxNjU1LCBhbmQgaHR0cHM6Ly90
cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzIxNjU2IC4uLlxuTU9DSzogaXJjLnBvc3Q6IG1vY2tf
bmljaywgYWJhcnRoLCBhcCwgZGFyaW46IENyZWF0ZWQgYSByZXZlcnQgcGF0Y2g6IGh0dHA6Ly9l
eGFtcGxlLmNvbS8zNjkzNlxuIgotICAgICAgICBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1
dHMoc2VsZiwgcnVuLCBhcmdzPVsicmV2ZXJ0IHIyMTY1NCAyMTY1NSByMjE2NTYgVGhpcyByMjE2
NTQgcGF0Y2ggYnJva2UgdGhlIHdvcmxkIl0sIGV4cGVjdGVkX2xvZ3M9ZXhwZWN0ZWRfbG9ncykK
KyAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlKGxldmVsPWxvZ2dpbmcuSU5GTykgYXMgY2FwdHVy
ZWQ6CisgICAgICAgICAgICBydW4oJ3JldmVydCByMjE2NTQgMjE2NTUgcjIxNjU2IFRoaXMgcjIx
NjU0IHBhdGNoIGJyb2tlIHRoZSB3b3JsZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisg
ICAgICAgICAgICBjYXB0dXJlZC5yb290LmxvZy5nZXR2YWx1ZSgpLAorICAgICAgICAgICAgJycn
TU9DSzogaXJjLnBvc3Q6IG1vY2tfbmljazogUHJlcGFyaW5nIHJldmVydCBmb3IgaHR0cHM6Ly90
cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzIxNjU0LCBodHRwczovL3RyYWMud2Via2l0Lm9yZy9j
aGFuZ2VzZXQvMjE2NTUsIGFuZCBodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjE2
NTYgLi4uCitNT0NLOiBpcmMucG9zdDogbW9ja19uaWNrLCBhYmFydGgsIGFwLCBkYXJpbjogQ3Jl
YXRlZCBhIHJldmVydCBwYXRjaDogaHR0cDovL2V4YW1wbGUuY29tLzM2OTM2CisnJycsCisgICAg
ICAgICkKIAogICAgIGRlZiB0ZXN0X3JldmVydF9iYW5hbmFzKHNlbGYpOgotICAgICAgICBleHBl
Y3RlZF9sb2dzID0gIk1PQ0s6IGlyYy5wb3N0OiBtb2NrX25pY2s6IFVzYWdlOiByZXZlcnQgU1ZO
X1JFVklTSU9OIFtTVk5fUkVWSVNJT05TXSBSRUFTT05cbiIKLSAgICAgICAgT3V0cHV0Q2FwdHVy
ZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIHJ1biwgYXJncz1bInJldmVydCBiYW5hbmFzIl0sIGV4
cGVjdGVkX2xvZ3M9ZXhwZWN0ZWRfbG9ncykKKyAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlKGxl
dmVsPWxvZ2dpbmcuSU5GTykgYXMgY2FwdHVyZWQ6CisgICAgICAgICAgICBydW4oJ3JldmVydCBi
YW5hbmFzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNhcHR1cmVk
LnJvb3QubG9nLmdldHZhbHVlKCksCisgICAgICAgICAgICAnTU9DSzogaXJjLnBvc3Q6IG1vY2tf
bmljazogVXNhZ2U6IHJldmVydCBTVk5fUkVWSVNJT04gW1NWTl9SRVZJU0lPTlNdIFJFQVNPTlxu
JywKKyAgICAgICAgKQogCiAgICAgZGVmIHRlc3RfcmV2ZXJ0X2ludmFsaWRhdGVfcmV2aXNpb24o
c2VsZik6CiAgICAgICAgICMgV2hlbiBmb2xrcyBwYXNzIGp1bmsgYXJndW1lbnRzLCB3ZSBzaG91
bGQganVzdCBzcGl0IHRoZSB1c2FnZSBiYWNrIGF0IHRoZW0uCi0gICAgICAgIGV4cGVjdGVkX2xv
Z3MgPSAiTU9DSzogaXJjLnBvc3Q6IG1vY2tfbmljazogVXNhZ2U6IHJldmVydCBTVk5fUkVWSVNJ
T04gW1NWTl9SRVZJU0lPTlNdIFJFQVNPTlxuIgotICAgICAgICBPdXRwdXRDYXB0dXJlKCkuYXNz
ZXJ0X291dHB1dHMoc2VsZiwgcnVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYXJncz1bInJldmVydCAtLWNvbXBvbmVudD1Ub29scyAyMTY1NCJdLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfbG9ncz1leHBlY3RlZF9sb2dz
KQorICAgICAgICB3aXRoIE91dHB1dENhcHR1cmUobGV2ZWw9bG9nZ2luZy5JTkZPKSBhcyBjYXB0
dXJlZDoKKyAgICAgICAgICAgIHJ1bigncmV2ZXJ0IC0tY29tcG9uZW50PVRvb2xzIDIxNjU0JykK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNhcHR1cmVkLnJvb3QubG9n
LmdldHZhbHVlKCksCisgICAgICAgICAgICAnTU9DSzogaXJjLnBvc3Q6IG1vY2tfbmljazogVXNh
Z2U6IHJldmVydCBTVk5fUkVWSVNJT04gW1NWTl9SRVZJU0lPTlNdIFJFQVNPTlxuJywKKyAgICAg
ICAgKQogCiAgICAgZGVmIHRlc3RfcmV2ZXJ0X2ludmFsaWRhdGVfcmVhc29uKHNlbGYpOgogICAg
ICAgICAjIEZJWE1FOiBJJ20gc2xpZ2h0bHkgY29uZnVzZWQgYXMgdG8gd2h5IHRoaXMgZG9lc24n
dCByZXR1cm4gdGhlIFVTQUdFIG1lc3NhZ2UuCi0gICAgICAgIGV4cGVjdGVkX2xvZ3MgPSAiIiJN
T0NLOiBpcmMucG9zdDogbW9ja19uaWNrOiBQcmVwYXJpbmcgcmV2ZXJ0IGZvciBodHRwczovL3Ry
YWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjE2NTQgLi4uCisgICAgICAgIHdpdGggT3V0cHV0Q2Fw
dHVyZShsZXZlbD1sb2dnaW5nLklORk8pIGFzIGNhcHR1cmVkOgorICAgICAgICAgICAgcnVuKCdy
ZXZlcnQgMjE2NTQgLWJhZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAg
ICBjYXB0dXJlZC5yb290LmxvZy5nZXR2YWx1ZSgpLAorICAgICAgICAgICAgJycnTU9DSzogaXJj
LnBvc3Q6IG1vY2tfbmljazogUHJlcGFyaW5nIHJldmVydCBmb3IgaHR0cHM6Ly90cmFjLndlYmtp
dC5vcmcvY2hhbmdlc2V0LzIxNjU0IC4uLgogTU9DSzogaXJjLnBvc3Q6IG1vY2tfbmljaywgYWJh
cnRoLCBhcCwgZGFyaW46IEZhaWxlZCB0byBjcmVhdGUgcmV2ZXJ0IHBhdGNoOgogTU9DSzogaXJj
LnBvc3Q6IFRoZSByZXZlcnQgcmVhc29uIG1heSBub3QgYmVnaW4gd2l0aCAtIChcIi1iYWQgKFJl
cXVlc3RlZCBieSBtb2NrX25pY2sgb24gI3dlYmtpdCkuXCIpLgotIiIiCi0gICAgICAgIE91dHB1
dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCBydW4sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhcmdzPVsicmV2ZXJ0IDIxNjU0IC1iYWQiXSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX2xvZ3M9ZXhwZWN0ZWRfbG9n
cykKKycnJywKKyAgICAgICAgKQogCiAgICAgZGVmIHRlc3RfbXVsdGlfcmV2ZXJ0X2ludmFsaWRh
dGVfcmVhc29uKHNlbGYpOgotICAgICAgICBleHBlY3RlZF9sb2dzID0gIiIiTU9DSzogaXJjLnBv
c3Q6IG1vY2tfbmljazogUHJlcGFyaW5nIHJldmVydCBmb3IgaHR0cHM6Ly90cmFjLndlYmtpdC5v
cmcvY2hhbmdlc2V0LzIxNjU0LCBodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjE2
NTUsIGFuZCBodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjE2NTYgLi4uCisgICAg
ICAgIHdpdGggT3V0cHV0Q2FwdHVyZShsZXZlbD1sb2dnaW5nLklORk8pIGFzIGNhcHR1cmVkOgor
ICAgICAgICAgICAgcnVuKCdyZXZlcnQgMjE2NTQgMjE2NTUgcjIxNjU2IC1iYWQnKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY2FwdHVyZWQucm9vdC5sb2cuZ2V0dmFs
dWUoKSwKKyAgICAgICAgICAgICcnJ01PQ0s6IGlyYy5wb3N0OiBtb2NrX25pY2s6IFByZXBhcmlu
ZyByZXZlcnQgZm9yIGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yMTY1NCwgaHR0
cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzIxNjU1LCBhbmQgaHR0cHM6Ly90cmFjLndl
YmtpdC5vcmcvY2hhbmdlc2V0LzIxNjU2IC4uLgogTU9DSzogaXJjLnBvc3Q6IG1vY2tfbmljaywg
YWJhcnRoLCBhcCwgZGFyaW46IEZhaWxlZCB0byBjcmVhdGUgcmV2ZXJ0IHBhdGNoOgogTU9DSzog
aXJjLnBvc3Q6IFRoZSByZXZlcnQgcmVhc29uIG1heSBub3QgYmVnaW4gd2l0aCAtIChcIi1iYWQg
KFJlcXVlc3RlZCBieSBtb2NrX25pY2sgb24gI3dlYmtpdCkuXCIpLgotIiIiCi0gICAgICAgIE91
dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCBydW4sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhcmdzPVsicmV2ZXJ0ICIKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICIyMTY1NCAyMTY1NSByMjE2NTYgLWJhZCJdLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfbG9ncz1leHBl
Y3RlZF9sb2dzKQorJycnLAorICAgICAgICApCiAKICAgICBkZWYgdGVzdF9yZXZlcnRfbm9fcmVh
c29uKHNlbGYpOgotICAgICAgICBleHBlY3RlZF9sb2dzID0gIk1PQ0s6IGlyYy5wb3N0OiBtb2Nr
X25pY2s6IFVzYWdlOiByZXZlcnQgU1ZOX1JFVklTSU9OIFtTVk5fUkVWSVNJT05TXSBSRUFTT05c
biIKLSAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIHJ1biwgYXJn
cz1bInJldmVydCAyMTY1NCJdLCBleHBlY3RlZF9sb2dzPWV4cGVjdGVkX2xvZ3MpCi0KLSAgICBk
ZWYgdGVzdF9tdWx0aV9yZXZlcnRfbm9fcmVhc29uKHNlbGYpOgotICAgICAgICBleHBlY3RlZF9s
b2dzID0gIk1PQ0s6IGlyYy5wb3N0OiBtb2NrX25pY2s6IFVzYWdlOiByZXZlcnQgU1ZOX1JFVklT
SU9OIFtTVk5fUkVWSVNJT05TXSBSRUFTT05cbiIKLSAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFz
c2VydF9vdXRwdXRzKHNlbGYsIHJ1biwgYXJncz1bInJldmVydCAyMTY1NCAyMTY1NSByMjE2NTYi
XSwgZXhwZWN0ZWRfbG9ncz1leHBlY3RlZF9sb2dzKQorICAgICAgICB3aXRoIE91dHB1dENhcHR1
cmUobGV2ZWw9bG9nZ2luZy5JTkZPKSBhcyBjYXB0dXJlZDoKKyAgICAgICAgICAgIHJ1bigncmV2
ZXJ0IDIxNjU0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNhcHR1
cmVkLnJvb3QubG9nLmdldHZhbHVlKCksCisgICAgICAgICAgICAnTU9DSzogaXJjLnBvc3Q6IG1v
Y2tfbmljazogVXNhZ2U6IHJldmVydCBTVk5fUkVWSVNJT04gW1NWTl9SRVZJU0lPTlNdIFJFQVNP
TlxuJywKKyAgICAgICAgKQorCisgICAgZGVmIF90ZXN0X211bHRpX3JldmVydF9ub19yZWFzb24o
c2VsZik6CisgICAgICAgIHdpdGggT3V0cHV0Q2FwdHVyZShsZXZlbD1sb2dnaW5nLklORk8pIGFz
IGNhcHR1cmVkOgorICAgICAgICAgICAgcnVuKCdyZXZlcnQgMjE2NTQgMjE2NTUgcjIxNjU2JykK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNhcHR1cmVkLnJvb3QubG9n
LmdldHZhbHVlKCksCisgICAgICAgICAgICAnTU9DSzogaXJjLnBvc3Q6IG1vY2tfbmljazogVXNh
Z2U6IHJldmVydCBTVk5fUkVWSVNJT04gW1NWTl9SRVZJU0lPTlNdIFJFQVNPTlxuJywKKyAgICAg
ICAgKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9sYXlvdXR0ZXN0cmVz
dWx0c3JlYWRlcl91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3Rvb2wvYm90L2xheW91dHRlc3RyZXN1bHRzcmVhZGVyX3VuaXR0ZXN0LnB5CShyZXZpc2lv
biAyNjU3NzMpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2xheW91dHRlc3Ry
ZXN1bHRzcmVhZGVyX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNSBAQAog
IyBDb3B5cmlnaHQgKGMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMg
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTI2LDE1ICsyNywxNyBAQAogIyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KIAoraW1wb3J0IGxvZ2dpbmcKIGltcG9ydCB1bml0dGVzdAog
CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbV9tb2NrIGltcG9ydCBNb2Nr
RmlsZVN5c3RlbQotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLm91dHB1dGNhcHR1cmUgaW1w
b3J0IE91dHB1dENhcHR1cmUKIGZyb20gd2Via2l0cHkuY29tbW9uLm5ldC5sYXlvdXR0ZXN0cmVz
dWx0cyBpbXBvcnQgTGF5b3V0VGVzdFJlc3VsdHMKIGZyb20gd2Via2l0cHkuY29tbW9uLmhvc3Rf
bW9jayBpbXBvcnQgTW9ja0hvc3QKIAogZnJvbSAubGF5b3V0dGVzdHJlc3VsdHNyZWFkZXIgaW1w
b3J0IExheW91dFRlc3RSZXN1bHRzUmVhZGVyCiAKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBP
dXRwdXRDYXB0dXJlCisKIAogY2xhc3MgTGF5b3V0VGVzdFJlc3VsdHNSZWFkZXJUZXN0KHVuaXR0
ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9taXNzaW5nX2xheW91dF90ZXN0X3Jlc3VsdHMo
c2VsZik6CkBAIC05MSw4ICs5NCw5IEBAIGNsYXNzIExheW91dFRlc3RSZXN1bHRzUmVhZGVyVGVz
dCh1bml0dGUKICAgICAgICAgcGF0Y2ggPSBob3N0LmJ1Z3MuZmV0Y2hfYXR0YWNobWVudCgxMDAw
MSkKICAgICAgICAgaG9zdC5maWxlc3lzdGVtID0gTW9ja0ZpbGVTeXN0ZW0oKQogICAgICAgICAj
IFNob3VsZCBmYWlsIGJlY2F1c2UgdGhlIHJlc3VsdHNfZGlyZWN0b3J5IGRvZXMgbm90IGV4aXN0
LgotICAgICAgICBleHBlY3RlZF9sb2dzID0gIi9tb2NrLXJlc3VsdHMgZG9lcyBub3QgZXhpc3Qs
IG5vdCBhcmNoaXZpbmcuXG4iCi0gICAgICAgIGFyY2hpdmUgPSBPdXRwdXRDYXB0dXJlKCkuYXNz
ZXJ0X291dHB1dHMoc2VsZiwgcmVhZGVyLmFyY2hpdmUsIFtwYXRjaF0sIGV4cGVjdGVkX2xvZ3M9
ZXhwZWN0ZWRfbG9ncykKKyAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlKGxldmVsPWxvZ2dpbmcu
SU5GTykgYXMgY2FwdHVyZWQ6CisgICAgICAgICAgICBhcmNoaXZlID0gcmVhZGVyLmFyY2hpdmUo
cGF0Y2gpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQucm9vdC5sb2cuZ2V0dmFs
dWUoKSwgJy9tb2NrLXJlc3VsdHMgZG9lcyBub3QgZXhpc3QsIG5vdCBhcmNoaXZpbmcuXG4nKQog
ICAgICAgICBzZWxmLmFzc2VydElzTm9uZShhcmNoaXZlKQogCiAgICAgICAgIGhvc3QuZmlsZXN5
c3RlbS5tYXliZV9tYWtlX2RpcmVjdG9yeShyZXN1bHRzX2RpcmVjdG9yeSkKSW5kZXg6IFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvcXVldWVlbmdpbmVfdW5pdHRlc3QucHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9xdWV1ZWVuZ2luZV91bml0
dGVzdC5weQkocmV2aXNpb24gMjY1NzczKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29s
L2JvdC9xdWV1ZWVuZ2luZV91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDUg
QEAKICMgQ29weXJpZ2h0IChjKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAj
CiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0yNyw2ICsyOCw3IEBACiAjIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAKIGltcG9ydCBkYXRldGltZQoraW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBvcwogaW1w
b3J0IHNodXRpbAogaW1wb3J0IHRlbXBmaWxlCkBAIC0zNCw5ICszNiwxMCBAQCBpbXBvcnQgdGhy
ZWFkaW5nCiBpbXBvcnQgdW5pdHRlc3QKIAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4
ZWN1dGl2ZSBpbXBvcnQgU2NyaXB0RXJyb3IKLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5v
dXRwdXRjYXB0dXJlIGltcG9ydCBPdXRwdXRDYXB0dXJlCiBmcm9tIHdlYmtpdHB5LnRvb2wuYm90
LnF1ZXVlZW5naW5lIGltcG9ydCBRdWV1ZUVuZ2luZSwgUXVldWVFbmdpbmVEZWxlZ2F0ZSwgVGVy
bWluYXRlUXVldWUKIAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IE91dHB1dENhcHR1cmUKKwog
CiBjbGFzcyBMb2dnaW5nRGVsZWdhdGUoUXVldWVFbmdpbmVEZWxlZ2F0ZSk6CiAgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIHRlc3QpOgpAQCAtMTQ0LDggKzE0NywxMCBAQCBjbGFzcyBRdWV1ZUVuZ2lu
ZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpCiAgICAgICAgICAgICBlbmdpbmUgPSBRdWV1ZUVuZ2lu
ZSgidGVzdC1xdWV1ZSIsIGRlbGVnYXRlLCB0aHJlYWRpbmcuRXZlbnQoKSkKICAgICAgICAgaWYg
bm90IHRlcm1pbmF0aW9uX21lc3NhZ2U6CiAgICAgICAgICAgICB0ZXJtaW5hdGlvbl9tZXNzYWdl
ID0gIkRlbGVnYXRlIHRlcm1pbmF0ZWQgcXVldWUuIgotICAgICAgICBleHBlY3RlZF9sb2dzID0g
IiVzXG4iICUgdGVybWluYXRpb25fbWVzc2FnZQotICAgICAgICBPdXRwdXRDYXB0dXJlKCkuYXNz
ZXJ0X291dHB1dHMoc2VsZiwgZW5naW5lLnJ1biwgZXhwZWN0ZWRfbG9ncz1leHBlY3RlZF9sb2dz
KQorCisgICAgICAgIHdpdGggT3V0cHV0Q2FwdHVyZShsZXZlbD1sb2dnaW5nLklORk8pIGFzIGNh
cHR1cmVkOgorICAgICAgICAgICAgZW5naW5lLnJ1bigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoY2FwdHVyZWQucm9vdC5sb2cuZ2V0dmFsdWUoKSwgJ3t9XG4nLmZvcm1hdCh0ZXJtaW5hdGlv
bl9tZXNzYWdlKSkKIAogICAgIGRlZiBfdGVzdF90ZXJtaW5hdGluZ19xdWV1ZShzZWxmLCBleGNl
cHRpb24sIHRlcm1pbmF0aW9uX21lc3NhZ2UpOgogICAgICAgICB3b3JrX2l0ZW1faW5kZXggPSBM
b2dnaW5nRGVsZWdhdGUuZXhwZWN0ZWRfY2FsbGJhY2tzLmluZGV4KCdwcm9jZXNzX3dvcmtfaXRl
bScpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L3NoZXJpZmZfdW5pdHRl
c3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9zaGVy
aWZmX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNjU3NzMpCisrKyBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3Rvb2wvYm90L3NoZXJpZmZfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTEsNCAr
MSw1IEBACiAjIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMjYsMTQgKzI3LDE2IEBACiAj
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCitpbXBvcnQgbG9nZ2luZwogaW1wb3J0IHVu
aXR0ZXN0CiAKIGZyb20gd2Via2l0cHkuY29tbW9uLm5ldC5idWlsZGJvdCBpbXBvcnQgQnVpbGRl
cgotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0IE91dHB1
dENhcHR1cmUKIGZyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5tb2NrIGltcG9ydCBNb2NrCiBmcm9t
IHdlYmtpdHB5LnRvb2wuYm90LnNoZXJpZmYgaW1wb3J0IFNoZXJpZmYKIGZyb20gd2Via2l0cHku
dG9vbC5tb2NrdG9vbCBpbXBvcnQgTW9ja1Rvb2wKIAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0
IE91dHB1dENhcHR1cmUKKwogCiBjbGFzcyBNb2NrU2hlcmlmZkJvdChvYmplY3QpOgogICAgIG5h
bWUgPSAibW9jay1zaGVyaWZmLWJvdCIKQEAgLTY1LDcgKzY4LDEyIEBAIGNsYXNzIFNoZXJpZmZU
ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgIHNoZXJpZmYucG9zdF9ibGFtZV9j
b21tZW50X29uX2J1Zyhjb21taXRfaW5mbywgYnVpbGRlcnMsIFsibW9jay10ZXN0LTEiXSkKICAg
ICAgICAgICAgIHNoZXJpZmYucG9zdF9ibGFtZV9jb21tZW50X29uX2J1Zyhjb21taXRfaW5mbywg
YnVpbGRlcnMsIFsibW9jay10ZXN0LTEiLCAibW9jay10ZXN0LTIiXSkKIAotICAgICAgICBleHBl
Y3RlZF9sb2dzID0gdSIiIk1PQ0sgYnVnIGNvbW1lbnQ6IGJ1Z19pZD0xMjM0LCBjYz1bJ3dhdGNo
ZXJAZXhhbXBsZS5jb20nXSwgc2VlX2Fsc289Tm9uZQorICAgICAgICB3aXRoIE91dHB1dENhcHR1
cmUobGV2ZWw9bG9nZ2luZy5JTkZPKSBhcyBjYXB0dXJlZDoKKyAgICAgICAgICAgIHJ1bigpCisK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNhcHR1cmVkLnJvb3QubG9n
LmdldHZhbHVlKCksCisgICAgICAgICAgICB1IiIiTU9DSyBidWcgY29tbWVudDogYnVnX2lkPTEy
MzQsIGNjPVsnd2F0Y2hlckBleGFtcGxlLmNvbSddLCBzZWVfYWxzbz1Ob25lCiAtLS0gQmVnaW4g
Y29tbWVudCAtLS0KIGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC80MzIxIG1pZ2h0
IGhhdmUgYnJva2VuIEZvbyBhbmQgQmFyCiAtLS0gRW5kIGNvbW1lbnQgLS0tCkBAIC04NSw1ICs5
Myw1IEBAIG1vY2stdGVzdC0xCiBtb2NrLXRlc3QtMgogLS0tIEVuZCBjb21tZW50IC0tLQogCi0i
IiIKLSAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIHJ1biwgZXhw
ZWN0ZWRfbG9ncz1leHBlY3RlZF9sb2dzKQorIiIiLAorICAgICAgICApCkluZGV4OiBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvYW5hbHl6ZWNoYW5nZWxvZ191bml0dGVzdC5w
eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvYW5h
bHl6ZWNoYW5nZWxvZ191bml0dGVzdC5weQkocmV2aXNpb24gMjY1NzczKQorKysgVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2FuYWx5emVjaGFuZ2Vsb2dfdW5pdHRlc3QucHkJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw1IEBACi0jIENweXJpZ2h0IChjKSAyMDExIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoYykgMjAxMSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpA
QCAtMzEsMTIgKzMyLDEzIEBAIGltcG9ydCBzeXMKIGZyb20gd2Via2l0cHkuY29tbW9uLmNvbmZp
Zy5jb250cmlidXRpb25hcmVhcyBpbXBvcnQgQ29udHJpYnV0aW9uQXJlYXMKIGZyb20gd2Via2l0
cHkuY29tbW9uLmhvc3RfbW9jayBpbXBvcnQgTW9ja0hvc3QKIGZyb20gd2Via2l0cHkuY29tbW9u
LnN5c3RlbS5maWxlc3lzdGVtX21vY2sgaW1wb3J0IE1vY2tGaWxlU3lzdGVtCi1mcm9tIHdlYmtp
dHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQogZnJv
bSB3ZWJraXRweS50b29sLmNvbW1hbmRzLmFuYWx5emVjaGFuZ2Vsb2cgaW1wb3J0IEFuYWx5emVD
aGFuZ2VMb2cKIGZyb20gd2Via2l0cHkudG9vbC5jb21tYW5kcy5hbmFseXplY2hhbmdlbG9nIGlt
cG9ydCBDaGFuZ2VMb2dBbmFseXplcgogZnJvbSB3ZWJraXRweS50b29sLmNvbW1hbmRzLmNvbW1h
bmR0ZXN0IGltcG9ydCBDb21tYW5kc1Rlc3QKIGZyb20gd2Via2l0cHkudG9vbC5tdWx0aWNvbW1h
bmR0b29sIGltcG9ydCBDb21tYW5kCiAKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBPdXRwdXRD
YXB0dXJlCisKIAogY2xhc3MgQW5hbHl6ZUNoYW5nZUxvZ1Rlc3QoQ29tbWFuZHNUZXN0KToKICAg
ICBkZWYgdGVzdF9lbnVtZXJhdGVfZW51bWVyYXRlX2NoYW5nZWxvZ3Moc2VsZik6CkBAIC01Nywx
MyArNTksOSBAQCBjbGFzcyBBbmFseXplQ2hhbmdlTG9nVGVzdChDb21tYW5kc1Rlc3QpCiAgICAg
ICAgIGZpbGVzeXN0ZW0gPSBNb2NrRmlsZVN5c3RlbSgpCiAgICAgICAgIHRlc3RfanNvbiA9IHsn
YXJyYXkuanNvbic6IFsxLCAyLCAzLCB7J2tleSc6ICd2YWx1ZSd9XSwgJ2RpY3Rpb25hcnkuanNv
bic6IHsnc29tZWtleSc6ICdzb21ldmFsdWUnLCAnYXJyYXknOiBbNCwgNV19fQogCi0gICAgICAg
IGNhcHR1cmUgPSBPdXRwdXRDYXB0dXJlKCkKLSAgICAgICAgY2FwdHVyZS5jYXB0dXJlX291dHB1
dCgpCi0KLSAgICAgICAgQW5hbHl6ZUNoYW5nZUxvZy5fZ2VuZXJhdGVfanNvbnMoZmlsZXN5c3Rl
bSwgdGVzdF9qc29uLCAnYmFyJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQoZmlsZXN5
c3RlbS5maWxlcy5rZXlzKCkpLCBzZXQoWydiYXIvYXJyYXkuanNvbicsICdiYXIvZGljdGlvbmFy
eS5qc29uJ10pKQotCi0gICAgICAgIGNhcHR1cmUucmVzdG9yZV9vdXRwdXQoKQorICAgICAgICB3
aXRoIE91dHB1dENhcHR1cmUoKToKKyAgICAgICAgICAgIEFuYWx5emVDaGFuZ2VMb2cuX2dlbmVy
YXRlX2pzb25zKGZpbGVzeXN0ZW0sIHRlc3RfanNvbiwgJ2JhcicpCisgICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHNldChmaWxlc3lzdGVtLmZpbGVzLmtleXMoKSksIHsnYmFyL2FycmF5Lmpz
b24nLCAnYmFyL2RpY3Rpb25hcnkuanNvbid9KQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
anNvbi5sb2FkcyhmaWxlc3lzdGVtLmZpbGVzWydiYXIvYXJyYXkuanNvbiddKSwgdGVzdF9qc29u
WydhcnJheS5qc29uJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoanNvbi5sb2FkcyhmaWxl
c3lzdGVtLmZpbGVzWydiYXIvZGljdGlvbmFyeS5qc29uJ10pLCB0ZXN0X2pzb25bJ2RpY3Rpb25h
cnkuanNvbiddKQpAQCAtMTQwLDE5ICsxMzgsMTcgQEAgY2xhc3MgQ2hhbmdlTG9nQW5hbHl6ZXJU
ZXN0KENvbW1hbmRzVGVzdAogICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OmxvYWRQbGF0Zm9y
bVJlc291cmNlKToKICIiIgogCi0gICAgICAgIGNhcHR1cmUgPSBPdXRwdXRDYXB0dXJlKCkKLSAg
ICAgICAgY2FwdHVyZS5jYXB0dXJlX291dHB1dCgpCi0KLSAgICAgICAgYW5hbHl6ZXIgPSBDaGFu
Z2VMb2dBbmFseXplcihob3N0LCBbJ21vY2stY2hlY2tvdXQvZm9vL0NoYW5nZUxvZyddKQotICAg
ICAgICBhbmFseXplci5hbmFseXplKCkKLQotICAgICAgICBjYXB0dXJlLnJlc3RvcmVfb3V0cHV0
KCkKKyAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlKCk6CisgICAgICAgICAgICBhbmFseXplciA9
IENoYW5nZUxvZ0FuYWx5emVyKGhvc3QsIFsnbW9jay1jaGVja291dC9mb28vQ2hhbmdlTG9nJ10p
CisgICAgICAgICAgICBhbmFseXplci5hbmFseXplKCkKIAogICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGFuYWx5emVyLnN1bW1hcnkoKSwKICAgICAgICAgICAgIHsncmV2aWV3ZWQnOiAyLCAndW5y
ZXZpZXdlZCc6IDEsICdjb250cmlidXRvcnMnOiA2LCAnY29udHJpYnV0b3JzX3dpdGhfcmV2aWV3
cyc6IDIsICdjb250cmlidXRvcnNfd2l0aG91dF9yZXZpZXdzJzogNH0pCiAKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChzZXQoYW5hbHl6ZXIuY29udHJpYnV0b3JzX3N0YXRpc3RpY3MoKS5rZXlz
KCkpLAotICAgICAgICAgICAgc2V0KFsnU2FtIFdlaW5pZycsIHUnTWFyayBSb3dlJywgdSdLZXZp
biBPbGxpdmllcicsICdNYXJ0aW4gUm9iaW5zb24nLCB1J1BoaWxpcHBlIE5vcm1hbmQnLCB1J1ph
biBEb2JlcnNlayddKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHNl
dChhbmFseXplci5jb250cmlidXRvcnNfc3RhdGlzdGljcygpLmtleXMoKSksCisgICAgICAgICAg
ICB7J1NhbSBXZWluaWcnLCB1J01hcmsgUm93ZScsIHUnS2V2aW4gT2xsaXZpZXInLCAnTWFydGlu
IFJvYmluc29uJywgdSdQaGlsaXBwZSBOb3JtYW5kJywgdSdaYW4gRG9iZXJzZWsnfSwKKyAgICAg
ICAgKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5hbHl6ZXIuY29udHJpYnV0b3JzX3N0
YXRpc3RpY3MoKVsnU2FtIFdlaW5pZyddLAogICAgICAgICAgICAgeydyZXZpZXdzJzogeydmaWxl
cyc6IHt1J2Zvby9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5TU3RyaW5nRXh0cmFzLm1tJzogMSwgdSdm
b28vcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVDRk5ldC5jcHAnOiAxfSwK
SW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9jb21tYW5kdGVzdC5w
eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvY29t
bWFuZHRlc3QucHkJKHJldmlzaW9uIDI2NTc3MykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dG9vbC9jb21tYW5kcy9jb21tYW5kdGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDUg
QEAKICMgQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAj
CiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0yNiwxMCArMjcsMTMgQEAKICMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5v
dXRwdXRjYXB0dXJlIGltcG9ydCBPdXRwdXRDYXB0dXJlCitpbXBvcnQgbG9nZ2luZworCiBmcm9t
IHdlYmtpdHB5LmNvbW1vbi53ZWJraXR1bml0dGVzdCBpbXBvcnQgVGVzdENhc2UKIGZyb20gd2Vi
a2l0cHkudG9vbC5tb2NrdG9vbCBpbXBvcnQgTW9ja09wdGlvbnMsIE1vY2tUb29sCiAKK2Zyb20g
d2Via2l0Y29yZXB5IGltcG9ydCBPdXRwdXRDYXB0dXJlCisKIAogY2xhc3MgQ29tbWFuZHNUZXN0
KFRlc3RDYXNlKToKICAgICBkZWYgYXNzZXJ0X2V4ZWN1dGVfb3V0cHV0cyhzZWxmLCBjb21tYW5k
LCBhcmdzPVtdLCBleHBlY3RlZF9zdGRvdXQ9IiIsIGV4cGVjdGVkX3N0ZGVycj0iIiwgZXhwZWN0
ZWRfZXhjZXB0aW9uPU5vbmUsIGV4cGVjdGVkX2xvZ3M9Tm9uZSwgb3B0aW9ucz1Nb2NrT3B0aW9u
cygpLCB0b29sPU1vY2tUb29sKCkpOgpAQCAtNDksNCArNTMsOSBAQCBjbGFzcyBDb21tYW5kc1Rl
c3QoVGVzdENhc2UpOgogICAgICAgICBvcHRpb25zLnF1aWV0ID0gVHJ1ZQogICAgICAgICBvcHRp
b25zLnJldmlld2VyID0gJ01PQ0sgcmV2aWV3ZXInCiAgICAgICAgIGNvbW1hbmQuYmluZF90b190
b29sKHRvb2wpCi0gICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCBj
b21tYW5kLmV4ZWN1dGUsIFtvcHRpb25zLCBhcmdzLCB0b29sXSwgZXhwZWN0ZWRfc3Rkb3V0PWV4
cGVjdGVkX3N0ZG91dCwgZXhwZWN0ZWRfc3RkZXJyPWV4cGVjdGVkX3N0ZGVyciwgZXhwZWN0ZWRf
ZXhjZXB0aW9uPWV4cGVjdGVkX2V4Y2VwdGlvbiwgZXhwZWN0ZWRfbG9ncz1leHBlY3RlZF9sb2dz
KQorCisgICAgICAgIHdpdGggT3V0cHV0Q2FwdHVyZShsZXZlbD1sb2dnaW5nLklORk8pIGFzIGNh
cHR1cmVkOgorICAgICAgICAgICAgY29tbWFuZC5leGVjdXRlKG9wdGlvbnMsIGFyZ3MsIHRvb2wp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQuc3Rkb3V0LmdldHZhbHVlKCksIGV4
cGVjdGVkX3N0ZG91dCBvciAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYXB0dXJlZC5z
dGRlcnIuZ2V0dmFsdWUoKSwgZXhwZWN0ZWRfc3RkZXJyIG9yICcnKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGNhcHR1cmVkLnJvb3QubG9nLmdldHZhbHVlKCksIGV4cGVjdGVkX2xvZ3Mgb3Ig
JycpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZG93bmxvYWRf
dW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2Nv
bW1hbmRzL2Rvd25sb2FkX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNjU3NzMpCisrKyBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZG93bmxvYWRfdW5pdHRlc3QucHkJKHdvcmtp
bmcgY29weSkKQEAgLTI2LDMyICsyNiwzNSBAQAogIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KIAoraW1wb3J0IGxvZ2dpbmcKIGltcG9ydCB1bml0dGVzdAogCi1mcm9tIHdlYmtpdHB5LmNv
bW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQogZnJvbSB3ZWJr
aXRweS50aGlyZHBhcnR5Lm1vY2sgaW1wb3J0IE1vY2sKIGZyb20gd2Via2l0cHkudG9vbC5jb21t
YW5kcy5jb21tYW5kdGVzdCBpbXBvcnQgQ29tbWFuZHNUZXN0CiBmcm9tIHdlYmtpdHB5LnRvb2wu
Y29tbWFuZHMuZG93bmxvYWQgaW1wb3J0ICoKIGZyb20gd2Via2l0cHkudG9vbC5tb2NrdG9vbCBp
bXBvcnQgTW9ja09wdGlvbnMsIE1vY2tUb29sCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291
dC5jaGVja291dF9tb2NrIGltcG9ydCBNb2NrQ2hlY2tvdXQKIAorZnJvbSB3ZWJraXRjb3JlcHkg
aW1wb3J0IE91dHB1dENhcHR1cmUKKwogCiBjbGFzcyBBYnN0cmFjdFJldmVydFByZXBDb21tYW5k
VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfY29tbWl0X2luZm8oc2VsZik6
CiAgICAgICAgIGNvbW1hbmQgPSBBYnN0cmFjdFJldmVydFByZXBDb21tYW5kKCkKICAgICAgICAg
dG9vbCA9IE1vY2tUb29sKCkKICAgICAgICAgY29tbWFuZC5iaW5kX3RvX3Rvb2wodG9vbCkKLSAg
ICAgICAgb3V0cHV0ID0gT3V0cHV0Q2FwdHVyZSgpCiAKLSAgICAgICAgZXhwZWN0ZWRfbG9ncyA9
ICJQcmVwYXJpbmcgcmV2ZXJ0IGZvciBidWcgNTAwMDAuXG4iCi0gICAgICAgIGNvbW1pdF9pbmZv
ID0gb3V0cHV0LmFzc2VydF9vdXRwdXRzKHNlbGYsIGNvbW1hbmQuX2NvbW1pdF9pbmZvLCBbMTIz
NF0sIGV4cGVjdGVkX2xvZ3M9ZXhwZWN0ZWRfbG9ncykKKyAgICAgICAgd2l0aCBPdXRwdXRDYXB0
dXJlKGxldmVsPWxvZ2dpbmcuSU5GTykgYXMgY2FwdHVyZWQ6CisgICAgICAgICAgICBjb21taXRf
aW5mbyA9IGNvbW1hbmQuX2NvbW1pdF9pbmZvKDEyMzQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoY2FwdHVyZWQucm9vdC5sb2cuZ2V0dmFsdWUoKSwgJ1ByZXBhcmluZyByZXZlcnQgZm9yIGJ1
ZyA1MDAwMC5cbicpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb21taXRfaW5mbykKIAogICAg
ICAgICBtb2NrX2NvbW1pdF9pbmZvID0gTW9jaygpCiAgICAgICAgIG1vY2tfY29tbWl0X2luZm8u
YnVnX2lkID0gbGFtYmRhOiBOb25lCiAgICAgICAgIHRvb2wuX2NoZWNrb3V0LmNvbW1pdF9pbmZv
X2Zvcl9yZXZpc2lvbiA9IGxhbWJkYSByZXZpc2lvbjogbW9ja19jb21taXRfaW5mbwotICAgICAg
ICBleHBlY3RlZF9sb2dzID0gIlVuYWJsZSB0byBwYXJzZSBidWcgbnVtYmVyIGZyb20gZGlmZi5c
biIKLSAgICAgICAgY29tbWl0X2luZm8gPSBvdXRwdXQuYXNzZXJ0X291dHB1dHMoc2VsZiwgY29t
bWFuZC5fY29tbWl0X2luZm8sIFsxMjM0XSwgZXhwZWN0ZWRfbG9ncz1leHBlY3RlZF9sb2dzKQor
ICAgICAgICB3aXRoIE91dHB1dENhcHR1cmUobGV2ZWw9bG9nZ2luZy5JTkZPKSBhcyBjYXB0dXJl
ZDoKKyAgICAgICAgICAgIGNvbW1pdF9pbmZvID0gY29tbWFuZC5fY29tbWl0X2luZm8oMTIzNCkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYXB0dXJlZC5yb290LmxvZy5nZXR2YWx1ZSgpLCAn
VW5hYmxlIHRvIHBhcnNlIGJ1ZyBudW1iZXIgZnJvbSBkaWZmLlxuJykKICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChjb21taXRfaW5mbywgbW9ja19jb21taXRfaW5mbykKIAogICAgIGRlZiB0ZXN0
X3ByZXBhcmVfc3RhdGUoc2VsZik6CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
Y29tbWFuZHMvZWFybHl3YXJuaW5nc3lzdGVtX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9lYXJseXdhcm5pbmdzeXN0ZW1fdW5p
dHRlc3QucHkJKHJldmlzaW9uIDI2NTc3MykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9jb21tYW5kcy9lYXJseXdhcm5pbmdzeXN0ZW1fdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAjIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotIyBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTcsIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMzIsNyAr
MzIsNiBAQCBmcm9tIHdlYmtpdHB5LmNvbW1vbi5ob3N0IGltcG9ydCBIb3N0CiBmcm9tIHdlYmtp
dHB5LmNvbW1vbi5ob3N0X21vY2sgaW1wb3J0IE1vY2tIb3N0CiBmcm9tIHdlYmtpdHB5LmNvbW1v
bi5uZXQuanNjdGVzdHJlc3VsdHMgaW1wb3J0IEpTQ1Rlc3RSZXN1bHRzCiBmcm9tIHdlYmtpdHB5
LmNvbW1vbi5uZXQubGF5b3V0dGVzdHJlc3VsdHMgaW1wb3J0IExheW91dFRlc3RSZXN1bHRzCi1m
cm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2Fw
dHVyZQogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzIGltcG9ydCB0ZXN0X3Jlc3Vs
dHMKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscyBpbXBvcnQgdGVzdF9mYWlsdXJl
cwogZnJvbSB3ZWJraXRweS5wb3J0LmZhY3RvcnkgaW1wb3J0IFBvcnRGYWN0b3J5CkBAIC00Miw2
ICs0MSw4IEBAIGZyb20gd2Via2l0cHkudG9vbC5jb21tYW5kcy5xdWV1ZXMgaW1wb3IKIGZyb20g
d2Via2l0cHkudG9vbC5jb21tYW5kcy5xdWV1ZXN0ZXN0IGltcG9ydCBRdWV1ZXNUZXN0CiBmcm9t
IHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tUb29sLCBNb2NrT3B0aW9ucwogCitm
cm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQorCiAKICMgTmVlZGVkIHRvIGRl
ZmluZSBwb3J0X25hbWUsIHVzZWQgaW4gQWJzdHJhY3RFYXJseVdhcm5pbmdTeXN0ZW0uX19pbml0
X18KIGNsYXNzIFRlc3RFV1MoQWJzdHJhY3RFYXJseVdhcm5pbmdTeXN0ZW0pOgpAQCAtNjEsNyAr
NjIsMTEgQEAgY2xhc3MgQWJzdHJhY3RFYXJseVdhcm5pbmdTeXN0ZW1UZXN0KFF1ZQogICAgICAg
ICBld3MuYmluZF90b190b29sKE1vY2tUb29sKCkpCiAgICAgICAgIGV3cy5ob3N0ID0gTW9ja0hv
c3QoKQogICAgICAgICBld3MuX29wdGlvbnMgPSBNb2NrT3B0aW9ucyhwb3J0PU5vbmUsIGNvbmZp
cm09RmFsc2UpCi0gICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCBl
d3MuYmVnaW5fd29ya19xdWV1ZSwgZXhwZWN0ZWRfbG9ncz1zZWxmLl9kZWZhdWx0X2JlZ2luX3dv
cmtfcXVldWVfbG9ncyhld3MubmFtZSkpCisKKyAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlKGxl
dmVsPWxvZ2dpbmcuSU5GTykgYXMgY2FwdHVyZWQ6CisgICAgICAgICAgICBld3MuYmVnaW5fd29y
a19xdWV1ZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQucm9vdC5sb2cuZ2V0
dmFsdWUoKSwgc2VsZi5fZGVmYXVsdF9iZWdpbl93b3JrX3F1ZXVlX2xvZ3MoZXdzLm5hbWUpKQor
CiAgICAgICAgIHRhc2sgPSBNb2NrKCkKICAgICAgICAgdGFzay5yZXN1bHRzX2Zyb21fcGF0Y2hf
dGVzdF9ydW4gPSByZXN1bHRzCiAgICAgICAgIHBhdGNoID0gZXdzLl90b29sLmJ1Z3MuZmV0Y2hf
YXR0YWNobWVudCgxMDAwMCkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21t
YW5kcy9wZXJmYWxpemVyX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdG9vbC9jb21tYW5kcy9wZXJmYWxpemVyX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAy
NjU3NzMpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcGVyZmFsaXpl
cl91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDUgQEAKICMgQ29weXJpZ2h0
IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCkBAIC0zMCwxMSArMzEsMTIgQEAgaW1wb3J0IHVuaXR0ZXN0CiAKIGZy
b20gd2Via2l0cHkuY29tbW9uLm5ldC5idWlsZGJvdCBpbXBvcnQgQnVpbGRlcgogZnJvbSB3ZWJr
aXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgU2NyaXB0RXJyb3IKLWZyb20gd2Vi
a2l0cHkuY29tbW9uLnN5c3RlbS5vdXRwdXRjYXB0dXJlIGltcG9ydCBPdXRwdXRDYXB0dXJlCiBm
cm9tIHdlYmtpdHB5LnBvcnQudGVzdCBpbXBvcnQgVGVzdFBvcnQKIGZyb20gd2Via2l0cHkudG9v
bC5jb21tYW5kcy5wZXJmYWxpemVyIGltcG9ydCBQZXJmYWxpemVyVGFzawogZnJvbSB3ZWJraXRw
eS50b29sLm1vY2t0b29sIGltcG9ydCBNb2NrVG9vbAogCitmcm9tIHdlYmtpdGNvcmVweSBpbXBv
cnQgT3V0cHV0Q2FwdHVyZQorCiAKIGNsYXNzIFBlcmZhbGl6ZXJUYXNrVGVzdCh1bml0dGVzdC5U
ZXN0Q2FzZSk6CiAgICAgZGVmIF9jcmVhdGVfYW5kX3J1bl9wZXJmYWxpemVyKHNlbGYsIGNvbW1h
bmRzX3RvX2ZhaWw9W10pOgpAQCAtNjMsMTUgKzY1LDExIEBAIGNsYXNzIFBlcmZhbGl6ZXJUYXNr
VGVzdCh1bml0dGVzdC5UZXN0Q2EKICAgICAgICAgcGVyZmFsaXplci5ydW5fd2Via2l0X3BhdGNo
ID0gcnVuX3dlYmtpdF9wYXRjaAogICAgICAgICBwZXJmYWxpemVyLl9ydW5fcGVyZl90ZXN0ID0g
cnVuX3BlcmZfdGVzdAogCi0gICAgICAgIGNhcHR1cmUgPSBPdXRwdXRDYXB0dXJlKCkKLSAgICAg
ICAgY2FwdHVyZS5jYXB0dXJlX291dHB1dCgpCi0KLSAgICAgICAgaWYgY29tbWFuZHNfdG9fZmFp
bDoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocGVyZmFsaXplci5ydW4oKSkKLSAgICAg
ICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwZXJmYWxpemVyLnJ1bigpKQot
Ci0gICAgICAgIGNhcHR1cmUucmVzdG9yZV9vdXRwdXQoKQorICAgICAgICB3aXRoIE91dHB1dENh
cHR1cmUoKToKKyAgICAgICAgICAgIGlmIGNvbW1hbmRzX3RvX2ZhaWw6CisgICAgICAgICAgICAg
ICAgc2VsZi5hc3NlcnRGYWxzZShwZXJmYWxpemVyLnJ1bigpKQorICAgICAgICAgICAgZWxzZToK
KyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocGVyZmFsaXplci5ydW4oKSkKIAogICAg
ICAgICByZXR1cm4gbG9ncwogCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29t
bWFuZHMvcXVlcmllc191bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVlcmllc191bml0dGVzdC5weQkocmV2aXNpb24gMjY1Nzcz
KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXJpZXNfdW5pdHRl
c3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTI5LDE1ICsyOSwxNSBAQAogCiBpbXBvcnQgdW5pdHRl
c3QKIAotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0IE91
dHB1dENhcHR1cmUKIGZyb20gd2Via2l0cHkuY29tbW9uLm5ldC5idWd6aWxsYSBpbXBvcnQgQnVn
emlsbGEKLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5vdXRwdXRjYXB0dXJlIGltcG9ydCBP
dXRwdXRDYXB0dXJlCiBmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkubW9jayBpbXBvcnQgTW9jawog
ZnJvbSB3ZWJraXRweS5wb3J0LnRlc3QgaW1wb3J0IFRlc3RQb3J0CiBmcm9tIHdlYmtpdHB5LnRv
b2wuY29tbWFuZHMuY29tbWFuZHRlc3QgaW1wb3J0IENvbW1hbmRzVGVzdAogZnJvbSB3ZWJraXRw
eS50b29sLmNvbW1hbmRzLnF1ZXJpZXMgaW1wb3J0ICoKIGZyb20gd2Via2l0cHkudG9vbC5tb2Nr
dG9vbCBpbXBvcnQgTW9ja1Rvb2wsIE1vY2tPcHRpb25zCiAKK2Zyb20gd2Via2l0Y29yZXB5IGlt
cG9ydCBPdXRwdXRDYXB0dXJlCisKIAogY2xhc3MgTW9ja1Rlc3RQb3J0MShvYmplY3QpOgogICAg
IGRlZiBza2lwc19sYXlvdXRfdGVzdChzZWxmLCB0ZXN0X25hbWUpOgpAQCAtMTY3LDEzICsxNjcs
OSBAQCBjbGFzcyBQcmludEV4cGVjdGF0aW9uc1Rlc3QodW5pdHRlc3QuVGVzCiAgICAgICAgIGNv
bW1hbmQgPSBQcmludEV4cGVjdGF0aW9ucygpCiAgICAgICAgIGNvbW1hbmQuYmluZF90b190b29s
KHRvb2wpCiAKLSAgICAgICAgb2MgPSBPdXRwdXRDYXB0dXJlKCkKLSAgICAgICAgdHJ5OgotICAg
ICAgICAgICAgb2MuY2FwdHVyZV9vdXRwdXQoKQorICAgICAgICB3aXRoIE91dHB1dENhcHR1cmUo
KSBhcyBjYXB0dXJlZDoKICAgICAgICAgICAgIGNvbW1hbmQuZXhlY3V0ZShvcHRpb25zLCB0ZXN0
cywgdG9vbCkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHN0ZG91dCwgXywgXyA9IG9j
LnJlc3RvcmVfb3V0cHV0KCkKLSAgICAgICAgc2VsZi5hc3NlcnRNdWx0aUxpbmVFcXVhbChzdGRv
dXQsIGV4cGVjdGVkX3N0ZG91dCkKKyAgICAgICAgc2VsZi5hc3NlcnRNdWx0aUxpbmVFcXVhbChj
YXB0dXJlZC5zdGRvdXQuZ2V0dmFsdWUoKSwgZXhwZWN0ZWRfc3Rkb3V0KQogCiAgICAgZGVmIHRl
c3RfYmFzaWMoc2VsZik6CiAgICAgICAgIHNlbGYucnVuX3Rlc3QoWydmYWlsdXJlcy9leHBlY3Rl
ZC90ZXh0Lmh0bWwnLCAnZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2UuaHRtbCddLApAQCAtMjQwLDI2
ICsyMzYsMTIgQEAgY2xhc3MgUHJpbnRCYXNlbGluZXNUZXN0KHVuaXR0ZXN0LlRlc3RDYQogICAg
ICAgICBzZWxmLnRvb2wucG9ydF9mYWN0b3J5LmdldCA9IGxhbWJkYSBwb3J0X25hbWU9Tm9uZTog
c2VsZi50ZXN0X3BvcnQKICAgICAgICAgc2VsZi50b29sLnBvcnRfZmFjdG9yeS5hbGxfcG9ydF9u
YW1lcyA9IGxhbWJkYTogVGVzdFBvcnQuQUxMX0JBU0VMSU5FX1ZBUklBTlRTCiAKLSAgICBkZWYg
dGVhckRvd24oc2VsZik6Ci0gICAgICAgIGlmIHNlbGYub2M6Ci0gICAgICAgICAgICBzZWxmLnJl
c3RvcmVfb3V0cHV0KCkKLQotICAgIGRlZiBjYXB0dXJlX291dHB1dChzZWxmKToKLSAgICAgICAg
c2VsZi5vYyA9IE91dHB1dENhcHR1cmUoKQotICAgICAgICBzZWxmLm9jLmNhcHR1cmVfb3V0cHV0
KCkKLQotICAgIGRlZiByZXN0b3JlX291dHB1dChzZWxmKToKLSAgICAgICAgc3Rkb3V0LCBzdGRl
cnIsIGxvZ3MgPSBzZWxmLm9jLnJlc3RvcmVfb3V0cHV0KCkKLSAgICAgICAgc2VsZi5vYyA9IE5v
bmUKLSAgICAgICAgcmV0dXJuIChzdGRvdXQsIHN0ZGVyciwgbG9ncykKLQogICAgIGRlZiB0ZXN0
X2Jhc2ljKHNlbGYpOgogICAgICAgICBjb21tYW5kID0gUHJpbnRCYXNlbGluZXMoKQogICAgICAg
ICBjb21tYW5kLmJpbmRfdG9fdG9vbChzZWxmLnRvb2wpCi0gICAgICAgIHNlbGYuY2FwdHVyZV9v
dXRwdXQoKQotICAgICAgICBjb21tYW5kLmV4ZWN1dGUoTW9ja09wdGlvbnMoYWxsPUZhbHNlLCBw
bGF0Zm9ybT1Ob25lKSwgWydwYXNzZXMvdGV4dC5odG1sJ10sIHNlbGYudG9vbCkKLSAgICAgICAg
c3Rkb3V0LCBfLCBfID0gc2VsZi5yZXN0b3JlX291dHB1dCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0
TXVsdGlMaW5lRXF1YWwoc3Rkb3V0LAorICAgICAgICB3aXRoIE91dHB1dENhcHR1cmUoKSBhcyBj
YXB0dXJlZDoKKyAgICAgICAgICAgIGNvbW1hbmQuZXhlY3V0ZShNb2NrT3B0aW9ucyhhbGw9RmFs
c2UsIHBsYXRmb3JtPU5vbmUpLCBbJ3Bhc3Nlcy90ZXh0Lmh0bWwnXSwgc2VsZi50b29sKQorICAg
ICAgICBzZWxmLmFzc2VydE11bHRpTGluZUVxdWFsKGNhcHR1cmVkLnN0ZG91dC5nZXR2YWx1ZSgp
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAoJy8vIEZvciB0ZXN0LXdpbi14cFxuJwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ3Bhc3Nlcy90ZXh0LWV4cGVjdGVkLnBuZ1xuJwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ3Bhc3Nlcy90ZXh0LWV4cGVjdGVkLnR4dFxuJykpCkBA
IC0yNjcsMTAgKzI0OSw5IEBAIGNsYXNzIFByaW50QmFzZWxpbmVzVGVzdCh1bml0dGVzdC5UZXN0
Q2EKICAgICBkZWYgdGVzdF9tdWx0aXBsZShzZWxmKToKICAgICAgICAgY29tbWFuZCA9IFByaW50
QmFzZWxpbmVzKCkKICAgICAgICAgY29tbWFuZC5iaW5kX3RvX3Rvb2woc2VsZi50b29sKQotICAg
ICAgICBzZWxmLmNhcHR1cmVfb3V0cHV0KCkKLSAgICAgICAgY29tbWFuZC5leGVjdXRlKE1vY2tP
cHRpb25zKGFsbD1GYWxzZSwgcGxhdGZvcm09J3Rlc3Qtd2luLSonKSwgWydwYXNzZXMvdGV4dC5o
dG1sJ10sIHNlbGYudG9vbCkKLSAgICAgICAgc3Rkb3V0LCBfLCBfID0gc2VsZi5yZXN0b3JlX291
dHB1dCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0TXVsdGlMaW5lRXF1YWwoc3Rkb3V0LAorICAgICAg
ICB3aXRoIE91dHB1dENhcHR1cmUoKSBhcyBjYXB0dXJlZDoKKyAgICAgICAgICAgIGNvbW1hbmQu
ZXhlY3V0ZShNb2NrT3B0aW9ucyhhbGw9RmFsc2UsIHBsYXRmb3JtPSd0ZXN0LXdpbi0qJyksIFsn
cGFzc2VzL3RleHQuaHRtbCddLCBzZWxmLnRvb2wpCisgICAgICAgIHNlbGYuYXNzZXJ0TXVsdGlM
aW5lRXF1YWwoY2FwdHVyZWQuc3Rkb3V0LmdldHZhbHVlKCksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICgnLy8gRm9yIHRlc3Qtd2luLXZpc3RhXG4nCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAncGFzc2VzL3RleHQtZXhwZWN0ZWQucG5nXG4nCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAncGFzc2VzL3RleHQtZXhwZWN0ZWQudHh0XG4nCkluZGV4OiBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVldWVzX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXNfdW5pdHRlc3QucHkJKHJl
dmlzaW9uIDI2NTc3MykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9x
dWV1ZXNfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAjIENvcHly
aWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIyBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQg
KEMpIDIwMTktMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0yNywxMiArMjcsMTMgQEAKICMgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAKLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5vdXRwdXRjYXB0
dXJlIGltcG9ydCBPdXRwdXRDYXB0dXJlCiBmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkubW9jayBp
bXBvcnQgTW9jawogZnJvbSB3ZWJraXRweS50b29sLmNvbW1hbmRzLmNvbW1hbmR0ZXN0IGltcG9y
dCBDb21tYW5kc1Rlc3QKIGZyb20gd2Via2l0cHkudG9vbC5jb21tYW5kcy5xdWV1ZXMgaW1wb3J0
ICoKIGZyb20gd2Via2l0cHkudG9vbC5tb2NrdG9vbCBpbXBvcnQgTW9ja1Rvb2wKIAorZnJvbSB3
ZWJraXRjb3JlcHkgaW1wb3J0IE91dHB1dENhcHR1cmUKKwogCiBjbGFzcyBUZXN0UXVldWUoQWJz
dHJhY3RQYXRjaFF1ZXVlKToKICAgICBuYW1lID0gInRlc3QtcXVldWUiCkBAIC05MCwxMCArOTEs
MTUgQEAgY2xhc3MgUGF0Y2hQcm9jZXNzaW5nUXVldWVUZXN0KENvbW1hbmRzVAogICAgICAgICBx
dWV1ZS5fb3B0aW9ucyA9IE1vY2soKQogICAgICAgICBxdWV1ZS5fb3B0aW9ucy5wb3J0ID0gTm9u
ZQogICAgICAgICBwYXRjaCA9IHF1ZXVlLl90b29sLmJ1Z3MuZmV0Y2hfYXR0YWNobWVudCgxMDAw
MSkKLSAgICAgICAgZXhwZWN0ZWRfbG9ncyA9ICIiIk1PQ0sgYWRkX2F0dGFjaG1lbnRfdG9fYnVn
OiBidWdfaWQ9NTAwMDAsIGRlc2NyaXB0aW9uPUFyY2hpdmUgb2YgbGF5b3V0LXRlc3QtcmVzdWx0
cyBmb3IgbWFjLWhpZ2hzaWVycmEgZmlsZW5hbWU9bGF5b3V0LXRlc3QtcmVzdWx0cy56aXAgbWlt
ZXR5cGU9Tm9uZQorCisgICAgICAgIHdpdGggT3V0cHV0Q2FwdHVyZShsZXZlbD1sb2dnaW5nLklO
Rk8pIGFzIGNhcHR1cmVkOgorICAgICAgICAgICAgcXVldWUuX3VwbG9hZF9yZXN1bHRzX2FyY2hp
dmVfZm9yX3BhdGNoKHBhdGNoLCBNb2NrKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisg
ICAgICAgICAgICBjYXB0dXJlZC5yb290LmxvZy5nZXR2YWx1ZSgpLAorICAgICAgICAgICAgIiIi
TU9DSyBhZGRfYXR0YWNobWVudF90b19idWc6IGJ1Z19pZD01MDAwMCwgZGVzY3JpcHRpb249QXJj
aGl2ZSBvZiBsYXlvdXQtdGVzdC1yZXN1bHRzIGZvciBtYWMtaGlnaHNpZXJyYSBmaWxlbmFtZT1s
YXlvdXQtdGVzdC1yZXN1bHRzLnppcCBtaW1ldHlwZT1Ob25lCiAtLSBCZWdpbiBjb21tZW50IC0t
CiBUaGUgYXR0YWNoZWQgdGVzdCBmYWlsdXJlcyB3ZXJlIHNlZW4gd2hpbGUgcnVubmluZyBydW4t
d2Via2l0LXRlc3RzIG9uIHRoZSBtb2NrLXF1ZXVlLgogUG9ydDogbWFjLWhpZ2hzaWVycmEgIFBs
YXRmb3JtOiBNb2NrUGxhdGZvcm0gMS4wCiAtLSBFbmQgY29tbWVudCAtLQotIiIiCi0gICAgICAg
IE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCBxdWV1ZS5fdXBsb2FkX3Jlc3Vs
dHNfYXJjaGl2ZV9mb3JfcGF0Y2gsIFtwYXRjaCwgTW9jaygpXSwgZXhwZWN0ZWRfbG9ncz1leHBl
Y3RlZF9sb2dzKQorIiIiLAorICAgICAgICApCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvY29tbWFuZHMvcXVldWVzdGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVldWVzdGVzdC5weQkocmV2aXNpb24gMjY1NzczKQor
KysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVlc3Rlc3QucHkJKHdv
cmtpbmcgY29weSkKQEAgLTEsNCArMSw1IEBACiAjIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpA
QCAtMjYsMTUgKzI3LDE3IEBACiAjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCitpbXBv
cnQgbG9nZ2luZwogaW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20gd2Via2l0cHkuY29tbW9uLm5ldC5i
dWd6aWxsYSBpbXBvcnQgQXR0YWNobWVudAotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLm91
dHB1dGNhcHR1cmUgaW1wb3J0IE91dHB1dENhcHR1cmUKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5
c3RlbS5leGVjdXRpdmUgaW1wb3J0IFNjcmlwdEVycm9yCiBmcm9tIHdlYmtpdHB5LnRoaXJkcGFy
dHkubW9jayBpbXBvcnQgTW9jawogZnJvbSB3ZWJraXRweS50b29sLmNvbW1hbmRzLnN0ZXBzZXF1
ZW5jZSBpbXBvcnQgU3RlcFNlcXVlbmNlRXJyb3JIYW5kbGVyCiBmcm9tIHdlYmtpdHB5LnRvb2wu
bW9ja3Rvb2wgaW1wb3J0IE1vY2tUb29sCiAKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBPdXRw
dXRDYXB0dXJlCisKIAogY2xhc3MgTW9ja1F1ZXVlRW5naW5lKG9iamVjdCk6CiAgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIG5hbWUsIHF1ZXVlLCB3YWtldXBfZXZlbnQsIHNlY29uZHNfdG9fc2xlZXAp
OgpAQCAtNTcsMTMgKzYwLDE2IEBAIGNsYXNzIFF1ZXVlc1Rlc3QodW5pdHRlc3QuVGVzdENhc2Up
OgogICAgICAgICBpZiBleHBlY3RlZF9sb2dzIGFuZCBmdW5jX25hbWUgaW4gZXhwZWN0ZWRfbG9n
czoKICAgICAgICAgICAgIGxvZ3MgPSBleHBlY3RlZF9sb2dzW2Z1bmNfbmFtZV0KIAotICAgICAg
ICBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMoc2VsZiwKLSAgICAgICAgICAgICAgICBm
dW5jLAotICAgICAgICAgICAgICAgIGFyZ3M9YXJncywKLSAgICAgICAgICAgICAgICBleHBlY3Rl
ZF9zdGRvdXQ9ZXhwZWN0ZWRfc3Rkb3V0LmdldChmdW5jX25hbWUsICIiKSwKLSAgICAgICAgICAg
ICAgICBleHBlY3RlZF9zdGRlcnI9ZXhwZWN0ZWRfc3RkZXJyLmdldChmdW5jX25hbWUsICIiKSwK
LSAgICAgICAgICAgICAgICBleHBlY3RlZF9leGNlcHRpb249ZXhjZXB0aW9uLAotICAgICAgICAg
ICAgICAgIGV4cGVjdGVkX2xvZ3M9bG9ncykKKyAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlKGxl
dmVsPWxvZ2dpbmcuSU5GTykgYXMgY2FwdHVyZWQ6CisgICAgICAgICAgICBpZiBleGNlcHRpb246
CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhleGNlcHRpb24pOgorICAg
ICAgICAgICAgICAgICAgICBmdW5jKCphcmdzKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgICAgICBmdW5jKCphcmdzKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQu
c3Rkb3V0LmdldHZhbHVlKCksIGV4cGVjdGVkX3N0ZG91dC5nZXQoZnVuY19uYW1lLCAnJykpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQuc3RkZXJyLmdldHZhbHVlKCksIGV4cGVj
dGVkX3N0ZGVyci5nZXQoZnVuY19uYW1lLCAnJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Y2FwdHVyZWQucm9vdC5sb2cuZ2V0dmFsdWUoKSwgbG9ncyBvciAnJykKIAogICAgIGRlZiBfZGVm
YXVsdF9iZWdpbl93b3JrX3F1ZXVlX2xvZ3Moc2VsZiwgbmFtZSk6CiAgICAgICAgIGNoZWNrb3V0
X2RpciA9ICcvbW9jay1jaGVja291dCcKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9jb21tYW5kcy9yZWJhc2VsaW5lX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9yZWJhc2VsaW5lX3VuaXR0ZXN0LnB5CShyZXZp
c2lvbiAyNjU3NzMpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcmVi
YXNlbGluZV91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMjksMTMgKzI5LDE0IEBACiAK
IGltcG9ydCB1bml0dGVzdAogCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2Fw
dHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQogZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LmJ1aWxk
Ym90LmJ1aWxkYm90X21vY2sgaW1wb3J0IE1vY2tCdWlsZGVyCiBmcm9tIHdlYmtpdHB5LmNvbW1v
bi5zeXN0ZW0uZXhlY3V0aXZlX21vY2sgaW1wb3J0IE1vY2tFeGVjdXRpdmUyCiBmcm9tIHdlYmtp
dHB5LnRoaXJkcGFydHkubW9jayBpbXBvcnQgTW9jawogZnJvbSB3ZWJraXRweS50b29sLmNvbW1h
bmRzLnJlYmFzZWxpbmUgaW1wb3J0ICoKIGZyb20gd2Via2l0cHkudG9vbC5tb2NrdG9vbCBpbXBv
cnQgTW9ja1Rvb2wsIE1vY2tPcHRpb25zCiAKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBPdXRw
dXRDYXB0dXJlCisKIAogY2xhc3MgX0Jhc2VUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAg
ICAgTU9DS19XRUJfUkVTVUxUID0gJ01PQ0sgV2ViIHJlc3VsdCwgY29udmVydCA0MDQgdG8gTm9u
ZT1UcnVlJwpAQCAtMjExLDI0ICsyMTIsMjEgQEAgQnVnKEEpIFsgRGVidWcgXSA6IGZhc3QvY3Nz
L2xhcmdlLWxpc3QtbwogICAgICAgICBzZWxmLl93cml0ZShwb3J0Ll9maWxlc3lzdGVtLmpvaW4o
cG9ydC5sYXlvdXRfdGVzdHNfZGlyKCksICdwbGF0Zm9ybS90ZXN0LW1hYy1zbm93bGVvcGFyZC9m
YWlsdXJlcy9leHBlY3RlZC9pbWFnZS1leHBlY3RlZC50eHQnKSwgJ29yaWdpbmFsIHNub3dsZW9w
YXJkIHJlc3VsdCcpCiAKICAgICAgICAgb2xkX2V4YWN0X21hdGNoZXMgPSBidWlsZGVycy5fZXhh
Y3RfbWF0Y2hlcwotICAgICAgICBvYyA9IE91dHB1dENhcHR1cmUoKQotICAgICAgICB0cnk6Cisg
ICAgICAgIHdpdGggT3V0cHV0Q2FwdHVyZSgpIGFzIGNhcHR1cmVkOgogICAgICAgICAgICAgYnVp
bGRlcnMuX2V4YWN0X21hdGNoZXMgPSB7Ci0gICAgICAgICAgICAgICAgIk1PQ0sgTGVvcGFyZCI6
IHsicG9ydF9uYW1lIjogInRlc3QtbWFjLWxlb3BhcmQiLCAic3BlY2lmaWVycyI6IHNldChbIm1v
Y2stc3BlY2lmaWVyIl0pfSwKLSAgICAgICAgICAgICAgICAiTU9DSyBTbm93TGVvcGFyZCI6IHsi
cG9ydF9uYW1lIjogInRlc3QtbWFjLXNub3dsZW9wYXJkIiwgInNwZWNpZmllcnMiOiBzZXQoWyJt
b2NrLXNwZWNpZmllciJdKX0sCisgICAgICAgICAgICAgICAgIk1PQ0sgTGVvcGFyZCI6IHsicG9y
dF9uYW1lIjogInRlc3QtbWFjLWxlb3BhcmQiLCAic3BlY2lmaWVycyI6IHsibW9jay1zcGVjaWZp
ZXIifX0sCisgICAgICAgICAgICAgICAgIk1PQ0sgU25vd0xlb3BhcmQiOiB7InBvcnRfbmFtZSI6
ICJ0ZXN0LW1hYy1zbm93bGVvcGFyZCIsICJzcGVjaWZpZXJzIjogeyJtb2NrLXNwZWNpZmllciJ9
fSwKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgb3B0aW9ucyA9IE1vY2tPcHRpb25zKG9w
dGltaXplPVRydWUsIGJ1aWxkZXI9Ik1PQ0sgU25vd0xlb3BhcmQiLCBzdWZmaXhlcz0idHh0Iiwg
bW92ZV9vdmVyd3JpdHRlbl9iYXNlbGluZXNfdG89WyJ0ZXN0LW1hYy1sZW9wYXJkIl0sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyYm9zZT1UcnVlLCB0ZXN0PSJmYWlsdXJl
cy9leHBlY3RlZC9pbWFnZS5odG1sIiwgcmVzdWx0c19kaXJlY3Rvcnk9Tm9uZSwgdXBkYXRlX2V4
cGVjdGF0aW9ucz1UcnVlKQogCi0gICAgICAgICAgICBvYy5jYXB0dXJlX291dHB1dCgpCiAgICAg
ICAgICAgICBzZWxmLmNvbW1hbmQuZXhlY3V0ZShvcHRpb25zLCBbXSwgc2VsZi50b29sKQotICAg
ICAgICBmaW5hbGx5OgotICAgICAgICAgICAgb3V0LCBfLCBfID0gb2MucmVzdG9yZV9vdXRwdXQo
KQotICAgICAgICAgICAgYnVpbGRlcnMuX2V4YWN0X21hdGNoZXMgPSBvbGRfZXhhY3RfbWF0Y2hl
cworCisgICAgICAgIGJ1aWxkZXJzLl9leGFjdF9tYXRjaGVzID0gb2xkX2V4YWN0X21hdGNoZXMK
IAogICAgICAgICBzZWxmLmFzc2VydE11bHRpTGluZUVxdWFsKHNlbGYuX3JlYWQoc2VsZi50b29s
LmZpbGVzeXN0ZW0uam9pbihwb3J0LmxheW91dF90ZXN0c19kaXIoKSwgJ3BsYXRmb3JtL3Rlc3Qt
bWFjLWxlb3BhcmQvZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2UtZXhwZWN0ZWQudHh0JykpLCAnb3Jp
Z2luYWwgc25vd2xlb3BhcmQgcmVzdWx0JykKLSAgICAgICAgc2VsZi5hc3NlcnRNdWx0aUxpbmVF
cXVhbChvdXQsICd7ImFkZCI6IFtdfVxuJykKKyAgICAgICAgc2VsZi5hc3NlcnRNdWx0aUxpbmVF
cXVhbChjYXB0dXJlZC5zdGRvdXQuZ2V0dmFsdWUoKSwgJ3siYWRkIjogW119XG4nKQogCiAKIGNs
YXNzIFRlc3RSZWJhc2VsaW5lSnNvbihfQmFzZVRlc3RDYXNlKToKQEAgLTI4MCw3ICsyNzgsOCBA
QCBjbGFzcyBUZXN0UmViYXNlbGluZShfQmFzZVRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X3Rl
c3RzX3RvX3VwZGF0ZShzZWxmKToKICAgICAgICAgYnVpbGQgPSBNb2NrKCkKLSAgICAgICAgT3V0
cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIHNlbGYuY29tbWFuZC5fdGVzdHNfdG9f
dXBkYXRlLCBbYnVpbGRdKQorICAgICAgICB3aXRoIE91dHB1dENhcHR1cmUoKToKKyAgICAgICAg
ICAgIHNlbGYuY29tbWFuZC5fdGVzdHNfdG9fdXBkYXRlKGJ1aWxkKQogCiAgICAgZGVmIHRlc3Rf
cmViYXNlbGluZShzZWxmKToKICAgICAgICAgc2VsZi5jb21tYW5kLl9idWlsZGVyc190b19wdWxs
X2Zyb20gPSBsYW1iZGE6IFtNb2NrQnVpbGRlcignTU9DSyBidWlsZGVyJyldCkBAIC0yODksMTYg
KzI4OCwxMyBAQCBjbGFzcyBUZXN0UmViYXNlbGluZShfQmFzZVRlc3RDYXNlKToKICAgICAgICAg
c2VsZi5femVyb19vdXRfdGVzdF9leHBlY3RhdGlvbnMoKQogCiAgICAgICAgIG9sZF9leGFjdF9t
YXRjaGVzID0gYnVpbGRlcnMuX2V4YWN0X21hdGNoZXMKLSAgICAgICAgb2MgPSBPdXRwdXRDYXB0
dXJlKCkKLSAgICAgICAgdHJ5OgorICAgICAgICB3aXRoIE91dHB1dENhcHR1cmUoKSBhcyBjYXB0
dXJlZDoKICAgICAgICAgICAgIGJ1aWxkZXJzLl9leGFjdF9tYXRjaGVzID0gewotICAgICAgICAg
ICAgICAgICJNT0NLIGJ1aWxkZXIiOiB7InBvcnRfbmFtZSI6ICJ0ZXN0LW1hYy1sZW9wYXJkIiwg
InNwZWNpZmllcnMiOiBzZXQoWyJtb2NrLXNwZWNpZmllciJdKX0sCisgICAgICAgICAgICAgICAg
Ik1PQ0sgYnVpbGRlciI6IHsicG9ydF9uYW1lIjogInRlc3QtbWFjLWxlb3BhcmQiLCAic3BlY2lm
aWVycyI6IHsibW9jay1zcGVjaWZpZXIifX0sCiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBv
Yy5jYXB0dXJlX291dHB1dCgpCiAgICAgICAgICAgICBzZWxmLmNvbW1hbmQuZXhlY3V0ZShNb2Nr
T3B0aW9ucyhvcHRpbWl6ZT1GYWxzZSwgYnVpbGRlcnM9Tm9uZSwgc3VmZml4ZXM9InR4dCxwbmci
LCB2ZXJib3NlPVRydWUsIG1vdmVfb3ZlcndyaXR0ZW5fYmFzZWxpbmVzPUZhbHNlLCB1cGRhdGVf
ZXhwZWN0YXRpb25zPVRydWUpLCBbXSwgc2VsZi50b29sKQotICAgICAgICBmaW5hbGx5OgotICAg
ICAgICAgICAgb2MucmVzdG9yZV9vdXRwdXQoKQotICAgICAgICAgICAgYnVpbGRlcnMuX2V4YWN0
X21hdGNoZXMgPSBvbGRfZXhhY3RfbWF0Y2hlcworCisgICAgICAgIGJ1aWxkZXJzLl9leGFjdF9t
YXRjaGVzID0gb2xkX2V4YWN0X21hdGNoZXMKIAogICAgICAgICBjYWxscyA9IGxpc3QoZmlsdGVy
KGxhbWJkYSB4OiB4WzBdIG5vdCBpbiBbJ3BlcmwnLCAnL3Vzci9iaW4veGNydW4nLCAnL3Vzci9i
aW4vdWxpbWl0J10sIHNlbGYudG9vbC5leGVjdXRpdmUuY2FsbHMpKQogICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGNhbGxzLCBbW1snZWNobycsICdyZWJhc2VsaW5lLXRlc3QtaW50ZXJuYWwnLCAn
LS1zdWZmaXhlcycsICd0eHQscG5nJywgJy0tYnVpbGRlcicsICdNT0NLIGJ1aWxkZXInLApAQCAt
MzI5LDE0ICszMjUsMTEgQEAgY2xhc3MgVGVzdFJlYmFzZWxpbmVFeHBlY3RhdGlvbnMoX0Jhc2VU
ZQogICAgIGRlZiB0ZXN0X3JlYmFzZWxpbmVfZXhwZWN0YXRpb25zX25vb3Aoc2VsZik6CiAgICAg
ICAgIHNlbGYuX3plcm9fb3V0X3Rlc3RfZXhwZWN0YXRpb25zKCkKIAotICAgICAgICBvYyA9IE91
dHB1dENhcHR1cmUoKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBvYy5jYXB0dXJlX291dHB1
dCgpCisgICAgICAgIHdpdGggT3V0cHV0Q2FwdHVyZSgpIGFzIGNhcHR1cmVkOgogICAgICAgICAg
ICAgc2VsZi5jb21tYW5kLmV4ZWN1dGUoc2VsZi5vcHRpb25zLCBbXSwgc2VsZi50b29sKQotICAg
ICAgICBmaW5hbGx5OgotICAgICAgICAgICAgXywgXywgbG9ncyA9IG9jLnJlc3RvcmVfb3V0cHV0
KCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50b29sLmZpbGVzeXN0ZW0ud3Jp
dHRlbl9maWxlcywge30pCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvZ3MsICdEaWQg
bm90IGZpbmQgYW55IHRlc3RzIG1hcmtlZCBSZWJhc2VsaW5lLlxuJykKKworICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHNlbGYudG9vbC5maWxlc3lzdGVtLndyaXR0ZW5fZmlsZXMsIHt9KQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGNhcHR1cmVkLnJvb3QubG9nLmdldHZhbHVlKCksICdEaWQg
bm90IGZpbmQgYW55IHRlc3RzIG1hcmtlZCBSZWJhc2VsaW5lLlxuJykKIAogICAgIGRlZiBkaXNh
YmxlZF90ZXN0X292ZXJyaWRlc19hcmVfaW5jbHVkZWRfY29ycmVjdGx5KHNlbGYpOgogICAgICAg
ICAjIFRoaXMgdGVzdHMgdGhhdCB0aGUgYW55IHRlc3RzIG1hcmtlZCBhcyBSRUJBU0VMSU5FIGlu
IHRoZSBvdmVycmlkZXMgYXJlIGZvdW5kLCBidXQKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdG9vbC9zZXJ2ZXJzL2dhcmRlbmluZ3NlcnZlcl91bml0dGVzdC5weQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc2VydmVycy9nYXJkZW5pbmdzZXJ2ZXJfdW5p
dHRlc3QucHkJKHJldmlzaW9uIDI2NTc3MykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9zZXJ2ZXJzL2dhcmRlbmluZ3NlcnZlcl91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAt
MzEsNyArMzEsNiBAQCBpbXBvcnQganNvbgogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiAK
LWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5vdXRwdXRjYXB0dXJlIGltcG9ydCBPdXRwdXRD
YXB0dXJlCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMudGVzdF9jb25maWd1cmF0
aW9uIGltcG9ydCAqCiBmcm9tIHdlYmtpdHB5LnBvcnQgaW1wb3J0IGJ1aWxkZXJzCiBmcm9tIHdl
YmtpdHB5LnRoaXJkcGFydHkubW9jayBpbXBvcnQgTW9jawpAQCAtNDAsNiArMzksOCBAQCBmcm9t
IHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlX21vCiBmcm9tIHdlYmtpdHB5LmNvbW1v
bi5ob3N0X21vY2sgaW1wb3J0IE1vY2tIb3N0CiBmcm9tIHdlYmtpdHB5LnRvb2wuc2VydmVycy5n
YXJkZW5pbmdzZXJ2ZXIgaW1wb3J0ICoKIAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IE91dHB1
dENhcHR1cmUKKwogCiBjbGFzcyBUZXN0UG9ydEZhY3Rvcnkob2JqZWN0KToKICAgICAjIEZJWE1F
OiBXaHkgaXMgdGhpcyBhIGNsYXNzIG1ldGhvZD8KQEAgLTg5LDcgKzkwLDEwIEBAIGNsYXNzIEdh
cmRlbmluZ1NlcnZlclRlc3QodW5pdHRlc3QuVGVzdEMKICAgICAgICAgaGFuZGxlciA9IFRlc3RH
YXJkZW5pbmdIVFRQUmVxdWVzdEhhbmRsZXIoc2VydmVyIG9yIE1vY2tTZXJ2ZXIoKSkKICAgICAg
ICAgaGFuZGxlci5wYXRoID0gcGF0aAogICAgICAgICBoYW5kbGVyLmJvZHkgPSBib2R5Ci0gICAg
ICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCBoYW5kbGVyLmRvX1BPU1Qs
IGV4cGVjdGVkX3N0ZGVycj1leHBlY3RlZF9zdGRlcnIsIGV4cGVjdGVkX3N0ZG91dD1leHBlY3Rl
ZF9zdGRvdXQpCisgICAgICAgIHdpdGggT3V0cHV0Q2FwdHVyZSgpIGFzIGNhcHR1cmVkOgorICAg
ICAgICAgICAgaGFuZGxlci5kb19QT1NUKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYXB0
dXJlZC5zdGRvdXQsIGV4cGVjdGVkX3N0ZG91dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChj
YXB0dXJlZC5zdGRlcnIsIGV4cGVjdGVkX3N0ZGVycikKIAogICAgIGRlZiBkaXNhYmxlZF90ZXN0
X3JldmVydChzZWxmKToKICAgICAgICAgZXhwZWN0ZWRfc3RkZXJyID0gIk1PQ0sgcnVuX2NvbW1h
bmQ6IFsnZWNobycsICdyZXZlcnQnLCAnLS1mb3JjZS1jbGVhbicsICctLW5vbi1pbnRlcmFjdGl2
ZScsICcyMzE0JywgJ01PQ0sgcmV2ZXJ0IHJlYXNvbiddLCBjd2Q9L21vY2stY2hlY2tvdXRcbiIK
SW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9hZGRzdm5taW1ldHlwZWZv
cnBuZ191bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvc3RlcHMvYWRkc3ZubWltZXR5cGVmb3JwbmdfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2NTc3
MykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9hZGRzdm5taW1ldHlwZWZv
cnBuZ191bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDUgQEAKICMgQ29weXJp
Z2h0IChDKSAyMDEyIEJhbGF6cyBBbmtlcyAoYmFua0BpbmYudS1zemVnZWQuaHUpIFVuaXZlcnNp
dHkgb2YgU3plZ2VkCisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDcgKzI4LDggQEAg
ZnJvbSB3ZWJraXRweS50b29sLnN0ZXBzLmFkZHN2bm1pbWV0eXBlZgogZnJvbSB3ZWJraXRweS5j
b21tb24uc3lzdGVtLmZpbGVzeXN0ZW1fbW9jayBpbXBvcnQgTW9ja0ZpbGVTeXN0ZW0KIGZyb20g
d2Via2l0cHkudG9vbC5tb2NrdG9vbCBpbXBvcnQgTW9ja09wdGlvbnMsIE1vY2tUb29sCiBmcm9t
IHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uc3lzdGVtaG9zdF9tb2NrIGltcG9ydCBNb2NrU3lzdGVt
SG9zdAotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0IE91
dHB1dENhcHR1cmUKKworZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IE91dHB1dENhcHR1cmUKIAog
CiBjbGFzcyBNb2NrU0NNRGV0ZWN0b3Iob2JqZWN0KToKQEAgLTQxLDcgKzQzLDYgQEAgY2xhc3Mg
TW9ja1NDTURldGVjdG9yKG9iamVjdCk6CiAKIGNsYXNzIEFkZFN2bk1pbWV0eXBlRm9yUG5nVGVz
dCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfcnVuKHNlbGYpOgotICAgICAgICBj
YXB0dXJlID0gT3V0cHV0Q2FwdHVyZSgpCiAgICAgICAgIG9wdGlvbnMgPSBNb2NrT3B0aW9ucyhn
aXRfY29tbWl0PSdNT0NLIGdpdCBjb21taXQnKQogCiAgICAgICAgIGZpbGVzID0geycvVXNlcnMv
bW9jay8uc3VidmVyc2lvbi9jb25maWcnOiAnZW5hYmxlLWF1dG8tcHJvcHMgPSB5ZXNcbioucG5n
ID0gc3ZuOm1pbWUtdHlwZT1pbWFnZS9wbmcnfQpAQCAtNTMsNiArNTQsNyBAQCBjbGFzcyBBZGRT
dm5NaW1ldHlwZUZvclBuZ1Rlc3QodW5pdHRlc3QuCiAgICAgICAgICAgICAiY2hhbmdlZF9maWxl
cyI6IFsidGVzdC5wbmciLCAidGVzdC50eHQiXSwKICAgICAgICAgfQogICAgICAgICB0cnk6Ci0g
ICAgICAgICAgICBjYXB0dXJlLmFzc2VydF9vdXRwdXRzKHNlbGYsIHN0ZXAucnVuLCBbc3RhdGVd
KQorICAgICAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlKCk6CisgICAgICAgICAgICAgICAgc3Rl
cC5ydW4oc3RhdGUpCiAgICAgICAgIGV4Y2VwdCBTeXN0ZW1FeGl0IGFzIGU6CiAgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGUuY29kZSwgMSkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdG9vbC9zdGVwcy9hcHBseXdhdGNobGlzdF91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvYXBwbHl3YXRjaGxpc3RfdW5pdHRlc3Qu
cHkJKHJldmlzaW9uIDI2NTc3MykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVw
cy9hcHBseXdhdGNobGlzdF91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDUg
QEAKICMgQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAj
CiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0yNiwyNyArMjcsMzIgQEAKICMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKK2ltcG9ydCBsb2dnaW5nCiBpbXBvcnQgdW5pdHRl
c3QKIAotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0IE91
dHB1dENhcHR1cmUKIGZyb20gd2Via2l0cHkudG9vbC5tb2NrdG9vbCBpbXBvcnQgTW9ja09wdGlv
bnMsIE1vY2tUb29sCiBmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMuYXBwbHl3YXRjaGxpc3QgaW1w
b3J0IEFwcGx5V2F0Y2hMaXN0CiAKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBPdXRwdXRDYXB0
dXJlCisKIAogY2xhc3MgQXBwbHlXYXRjaExpc3RUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAg
ICBkZWYgdGVzdF9hcHBseV93YXRjaF9saXN0X2xvY2FsKHNlbGYpOgotICAgICAgICBjYXB0dXJl
ID0gT3V0cHV0Q2FwdHVyZSgpCiAgICAgICAgIHN0ZXAgPSBBcHBseVdhdGNoTGlzdChNb2NrVG9v
bChsb2dfZXhlY3V0aXZlPVRydWUpLCBNb2NrT3B0aW9ucygpKQogICAgICAgICBzdGF0ZSA9IHsK
ICAgICAgICAgICAgICdidWdfaWQnOiAnNTAwMDEnLAogICAgICAgICAgICAgJ2RpZmYnOiAnVGhl
IGRpZmYnLAogICAgICAgICB9Ci0gICAgICAgIGV4cGVjdGVkX2xvZ3MgPSAiIiJNb2NrV2F0Y2hM
aXN0OiBkZXRlcm1pbmVfY2NfYW5kX21lc3NhZ2VzCisgICAgICAgIHdpdGggT3V0cHV0Q2FwdHVy
ZShsZXZlbD1sb2dnaW5nLklORk8pIGFzIGNhcHR1cmVkOgorICAgICAgICAgICAgc3RlcC5ydW4o
c3RhdGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBjYXB0dXJlZC5y
b290LmxvZy5nZXR2YWx1ZSgpLAorICAgICAgICAgICAgJycnTW9ja1dhdGNoTGlzdDogZGV0ZXJt
aW5lX2NjX2FuZF9tZXNzYWdlcwogTU9DSyBidWcgY29tbWVudDogYnVnX2lkPTUwMDAxLCBjYz1b
J2xldmluQGNocm9taXVtLm9yZyddLCBzZWVfYWxzbz1Ob25lCiAtLS0gQmVnaW4gY29tbWVudCAt
LS0KIE1lc3NhZ2UyLgogLS0tIEVuZCBjb21tZW50IC0tLQogCiBSZXN1bHQgb2Ygd2F0Y2hsaXN0
OiBjYyAibGV2aW5AY2hyb21pdW0ub3JnIiBtZXNzYWdlcyAiTWVzc2FnZTIuIgotIiIiCi0gICAg
ICAgIGNhcHR1cmUuYXNzZXJ0X291dHB1dHMoc2VsZiwgc3RlcC5ydW4sIFtzdGF0ZV0sIGV4cGVj
dGVkX2xvZ3M9ZXhwZWN0ZWRfbG9ncykKKycnJywKKyAgICAgICAgKQpJbmRleDogVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2Nsb3NlYnVnZm9ybGFuZGRpZmZfdW5pdHRlc3QucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2Nsb3NlYnVn
Zm9ybGFuZGRpZmZfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2NTc3MykKKysrIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdG9vbC9zdGVwcy9jbG9zZWJ1Z2ZvcmxhbmRkaWZmX3VuaXR0ZXN0LnB5CSh3
b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNSBAQAogIyBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
QEAgLTI2LDE2ICsyNywyMSBAQAogIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAoraW1w
b3J0IGxvZ2dpbmcKIGltcG9ydCB1bml0dGVzdAogCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0
ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQogZnJvbSB3ZWJraXRweS50b29s
Lm1vY2t0b29sIGltcG9ydCBNb2NrT3B0aW9ucywgTW9ja1Rvb2wKIGZyb20gd2Via2l0cHkudG9v
bC5zdGVwcy5jbG9zZWJ1Z2ZvcmxhbmRkaWZmIGltcG9ydCBDbG9zZUJ1Z0ZvckxhbmREaWZmCiAK
K2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBPdXRwdXRDYXB0dXJlCisKIAogY2xhc3MgQ2xvc2VC
dWdGb3JMYW5kRGlmZlRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X2VtcHR5
X3N0YXRlKHNlbGYpOgotICAgICAgICBjYXB0dXJlID0gT3V0cHV0Q2FwdHVyZSgpCiAgICAgICAg
IHN0ZXAgPSBDbG9zZUJ1Z0ZvckxhbmREaWZmKE1vY2tUb29sKCksIE1vY2tPcHRpb25zKCkpCi0g
ICAgICAgIGV4cGVjdGVkX2xvZ3MgPSAiQ29tbWl0dGVkIHI0OTgyNDogPGh0dHBzOi8vdHJhYy53
ZWJraXQub3JnL2NoYW5nZXNldC80OTgyND5cbk5vIGJ1ZyBpZCBwcm92aWRlZC5cbiIKLSAgICAg
ICAgY2FwdHVyZS5hc3NlcnRfb3V0cHV0cyhzZWxmLCBzdGVwLnJ1biwgW3siY29tbWl0X3RleHQi
OiAiTW9jayBjb21taXQgdGV4dCJ9XSwgZXhwZWN0ZWRfbG9ncz1leHBlY3RlZF9sb2dzKQorICAg
ICAgICB3aXRoIE91dHB1dENhcHR1cmUobGV2ZWw9bG9nZ2luZy5JTkZPKSBhcyBjYXB0dXJlZDoK
KyAgICAgICAgICAgIHN0ZXAucnVuKGRpY3QoY29tbWl0X3RleHQ9J01vY2sgY29tbWl0IHRleHQn
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNhcHR1cmVkLnJvb3Qu
bG9nLmdldHZhbHVlKCksCisgICAgICAgICAgICAnQ29tbWl0dGVkIHI0OTgyNDogPGh0dHBzOi8v
dHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC80OTgyND5cbk5vIGJ1ZyBpZCBwcm92aWRlZC5cbicK
KyAgICAgICAgKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2NvbW1p
dF91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
c3RlcHMvY29tbWl0X3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNjU3NzMpCisrKyBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY29tbWl0X3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkp
CkBAIC0xLDQgKzEsNSBAQAogIyBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTI2LDE4ICsy
NywxOSBAQAogIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAoraW1wb3J0IGxvZ2dpbmcK
IGltcG9ydCB1bml0dGVzdAogCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2Fw
dHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4
ZWN1dGl2ZSBpbXBvcnQgU2NyaXB0RXJyb3IKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5l
eGVjdXRpdmVfbW9jayBpbXBvcnQgTW9ja0V4ZWN1dGl2ZQogZnJvbSB3ZWJraXRweS50b29sLm1v
Y2t0b29sIGltcG9ydCBNb2NrT3B0aW9ucywgTW9ja1Rvb2wKIGZyb20gd2Via2l0cHkudG9vbC5z
dGVwcy5jb21taXQgaW1wb3J0IENvbW1pdAogCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgT3V0
cHV0Q2FwdHVyZQorCiAKIGNsYXNzIENvbW1pdFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAg
IGRlZiBfdGVzdF9jaGVja190ZXN0X2V4cGVjdGF0aW9ucyhzZWxmLCBmaWxlbmFtZSk6Ci0gICAg
ICAgIGNhcHR1cmUgPSBPdXRwdXRDYXB0dXJlKCkKICAgICAgICAgb3B0aW9ucyA9IE1vY2tPcHRp
b25zKCkKICAgICAgICAgb3B0aW9ucy5naXRfY29tbWl0ID0gIiIKICAgICAgICAgb3B0aW9ucy5u
b25faW50ZXJhY3RpdmUgPSBUcnVlCkBAIC01MCwxOSArNTIsMjUgQEAgY2xhc3MgQ29tbWl0VGVz
dCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIH0KIAogICAgICAgICB0b29sLmV4ZWN1dGl2
ZSA9IE1vY2tFeGVjdXRpdmUoc2hvdWxkX2xvZz1UcnVlLCBzaG91bGRfdGhyb3dfd2hlbl9ydW49
RmFsc2UpCi0gICAgICAgIGV4cGVjdGVkX2xvZ3MgPSAiQ29tbWl0dGVkIHI0OTgyNDogPGh0dHBz
Oi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC80OTgyND5cbiIKLSAgICAgICAgY2FwdHVyZS5h
c3NlcnRfb3V0cHV0cyhzZWxmLCBzdGVwLnJ1biwgW3N0YXRlXSwgZXhwZWN0ZWRfbG9ncz1leHBl
Y3RlZF9sb2dzKQorICAgICAgICB3aXRoIE91dHB1dENhcHR1cmUobGV2ZWw9bG9nZ2luZy5JTkZP
KSBhcyBjYXB0dXJlZDoKKyAgICAgICAgICAgIHN0ZXAucnVuKHN0YXRlKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGNhcHR1cmVkLnJvb3QubG9nLmdldHZhbHVlKCksICdDb21taXR0ZWQgcjQ5
ODI0OiA8aHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzQ5ODI0PlxuJykKIAogICAg
ICAgICBzdGF0ZSA9IHsKICAgICAgICAgICAgICJjaGFuZ2VkX2ZpbGVzIjogWyJwbGF0Zm9ybS9j
aHJvbWl1bS8iICsgZmlsZW5hbWVdLAogICAgICAgICB9Ci0gICAgICAgIGV4cGVjdGVkX2xvZ3Mg
PSAiIiJNT0NLIHJ1bl9hbmRfdGhyb3dfaWZfZmFpbDogWydtb2NrLWNoZWNrLXdlYmtpdC1zdHls
ZScsICctLWRpZmYtZmlsZXMnLCAncGxhdGZvcm0vY2hyb21pdW0vJXMnXSwgY3dkPS9tb2NrLWNo
ZWNrb3V0CisgICAgICAgIHdpdGggT3V0cHV0Q2FwdHVyZShsZXZlbD1sb2dnaW5nLklORk8pIGFz
IGNhcHR1cmVkOgorICAgICAgICAgICAgc3RlcC5ydW4oc3RhdGUpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoCisgICAgICAgICAgICBjYXB0dXJlZC5yb290LmxvZy5nZXR2YWx1ZSgpLAorICAg
ICAgICAgICAgJycnTU9DSyBydW5fYW5kX3Rocm93X2lmX2ZhaWw6IFsnbW9jay1jaGVjay13ZWJr
aXQtc3R5bGUnLCAnLS1kaWZmLWZpbGVzJywgJ3BsYXRmb3JtL2Nocm9taXVtL3t9J10sIGN3ZD0v
bW9jay1jaGVja291dAogQ29tbWl0dGVkIHI0OTgyNDogPGh0dHBzOi8vdHJhYy53ZWJraXQub3Jn
L2NoYW5nZXNldC80OTgyND4KLSIiIiAlIGZpbGVuYW1lCi0gICAgICAgIGNhcHR1cmUuYXNzZXJ0
X291dHB1dHMoc2VsZiwgc3RlcC5ydW4sIFtzdGF0ZV0sIGV4cGVjdGVkX2xvZ3M9ZXhwZWN0ZWRf
bG9ncykKKycnJy5mb3JtYXQoZmlsZW5hbWUpLAorICAgICAgICApCiAKLSAgICAgICAgdG9vbC5l
eGVjdXRpdmUgPSBNb2NrRXhlY3V0aXZlKHNob3VsZF9sb2c9VHJ1ZSwgc2hvdWxkX3Rocm93X3do
ZW5fcnVuPXNldChbInBsYXRmb3JtL2Nocm9taXVtLyIgKyBmaWxlbmFtZV0pKQotICAgICAgICBz
ZWxmLmFzc2VydFJhaXNlcyhTY3JpcHRFcnJvciwgY2FwdHVyZS5hc3NlcnRfb3V0cHV0cywgc2Vs
Ziwgc3RlcC5ydW4sIFtzdGF0ZV0pCisgICAgICAgIHRvb2wuZXhlY3V0aXZlID0gTW9ja0V4ZWN1
dGl2ZShzaG91bGRfbG9nPVRydWUsIHNob3VsZF90aHJvd193aGVuX3J1bj17InBsYXRmb3JtL2No
cm9taXVtLyIgKyBmaWxlbmFtZX0pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU2Ny
aXB0RXJyb3IpLCBPdXRwdXRDYXB0dXJlKCk6CisgICAgICAgICAgICBzdGVwLnJ1bihzdGF0ZSkK
IAogICAgIGRlZiB0ZXN0X2NoZWNrX3Rlc3RfZXhwZWN0YXRpb25zKHNlbGYpOgogICAgICAgICBz
ZWxmLl90ZXN0X2NoZWNrX3Rlc3RfZXhwZWN0YXRpb25zKCdUZXN0RXhwZWN0YXRpb25zJykKSW5k
ZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9wcmVwYXJlY2hhbmdlbG9nX3Vu
aXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVw
cy9wcmVwYXJlY2hhbmdlbG9nX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNjU3NzMpCisrKyBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvcHJlcGFyZWNoYW5nZWxvZ191bml0dGVzdC5w
eQkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDUgQEAKICMgQ29weXJpZ2h0IChDKSAyMDEwIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCkBAIC0zMiwxMCArMzMsMTEgQEAgaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHdlYmtpdHB5LmNv
bW1vbi5jaGVja291dCBpbXBvcnQgY2hhbmdlbG9nX3VuaXR0ZXN0CiAKIGZyb20gd2Via2l0cHku
Y29tbW9uLnN5c3RlbS5maWxlc3lzdGVtX21vY2sgaW1wb3J0IE1vY2tGaWxlU3lzdGVtCi1mcm9t
IHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVy
ZQogZnJvbSB3ZWJraXRweS50b29sLm1vY2t0b29sIGltcG9ydCBNb2NrT3B0aW9ucywgTW9ja1Rv
b2wKIGZyb20gd2Via2l0cHkudG9vbC5zdGVwcy5wcmVwYXJlY2hhbmdlbG9nIGltcG9ydCBQcmVw
YXJlQ2hhbmdlTG9nCiAKK2Zyb20gd2Via2l0Y29yZXB5IGltcG9ydCBPdXRwdXRDYXB0dXJlCisK
IAogY2xhc3MgUHJlcGFyZUNoYW5nZUxvZ1Rlc3QoY2hhbmdlbG9nX3VuaXR0ZXN0LkNoYW5nZUxv
Z1Rlc3QpOgogICAgIGRlZiB0ZXN0X3Jlc29sdmVfZXhpc3RpbmdfZW50cnkoc2VsZik6CkBAIC0x
MTYsNyArMTE4LDYgQEAgY2xhc3MgUHJlcGFyZUNoYW5nZUxvZ1Rlc3QoY2hhbmdlbG9nX3VuaQog
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoYWN0dWFsX291dHB1dCwgZW5kX2ZpbGUpCiAK
ICAgICBkZWYgdGVzdF9lbnN1cmVfYnVnX3VybChzZWxmKToKLSAgICAgICAgY2FwdHVyZSA9IE91
dHB1dENhcHR1cmUoKQogICAgICAgICBzdGVwID0gUHJlcGFyZUNoYW5nZUxvZyhNb2NrVG9vbCgp
LCBNb2NrT3B0aW9ucygpKQogICAgICAgICBjaGFuZ2Vsb2dfY29udGVudHMgPSB1IiVzXG4lcyIg
JSAoc2VsZi5fbmV3X2VudHJ5X2JvaWxlcnBsYXRlLCBzZWxmLl9leGFtcGxlX2NoYW5nZWxvZykK
ICAgICAgICAgY2hhbmdlbG9nX3BhdGggPSAiQ2hhbmdlTG9nIgpAQCAtMTI3LDcgKzEyOCwxMCBA
QCBjbGFzcyBQcmVwYXJlQ2hhbmdlTG9nVGVzdChjaGFuZ2Vsb2dfdW5pCiAgICAgICAgIH0KICAg
ICAgICAgc3RlcC5fdG9vbC5maWxlc3lzdGVtID0gTW9ja0ZpbGVTeXN0ZW0oKQogICAgICAgICBz
dGVwLl90b29sLmZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKGNoYW5nZWxvZ19wYXRoLCBjaGFu
Z2Vsb2dfY29udGVudHMpCi0gICAgICAgIGNhcHR1cmUuYXNzZXJ0X291dHB1dHMoc2VsZiwgc3Rl
cC5fZW5zdXJlX2J1Z191cmwsIFtzdGF0ZV0pCisKKyAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJl
KCk6CisgICAgICAgICAgICBzdGVwLl9lbnN1cmVfYnVnX3VybChzdGF0ZSkKKwogICAgICAgICBh
Y3R1YWxfY29udGVudHMgPSBzdGVwLl90b29sLmZpbGVzeXN0ZW0ucmVhZF90ZXh0X2ZpbGUoY2hh
bmdlbG9nX3BhdGgpCiAgICAgICAgIGV4cGVjdGVkX21lc3NhZ2UgPSAiRXhhbXBsZSB0aXRsZVxu
ICAgICAgICBodHRwOi8vZXhhbXBsZS5jb20vMTIzNCIKICAgICAgICAgZXhwZWN0ZWRfY29udGVu
dHMgPSBjaGFuZ2Vsb2dfY29udGVudHMucmVwbGFjZSgiTmVlZCBhIHNob3J0IGRlc2NyaXB0aW9u
IChPT1BTISkuXG4gICAgICAgIE5lZWQgdGhlIGJ1ZyBVUkwgKE9PUFMhKS4iLCBleHBlY3RlZF9t
ZXNzYWdlKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3J1bnRlc3Rz
X3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9z
dGVwcy9ydW50ZXN0c191bml0dGVzdC5weQkocmV2aXNpb24gMjY1NzczKQorKysgVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3J1bnRlc3RzX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNv
cHkpCkBAIC0xLDQgKzEsNSBAQAogIyBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTI2LDE0
ICsyNywxNiBAQAogIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAoraW1wb3J0IGxvZ2dp
bmcKIGltcG9ydCBwbGF0Zm9ybQogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiAKLWZyb20g
d2Via2l0cHkuY29tbW9uLnN5c3RlbS5vdXRwdXRjYXB0dXJlIGltcG9ydCBPdXRwdXRDYXB0dXJl
CiBmcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tPcHRpb25zLCBNb2NrVG9v
bAogZnJvbSB3ZWJraXRweS50b29sLnN0ZXBzLnJ1bnRlc3RzIGltcG9ydCBSdW5UZXN0cwogCitm
cm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQorCiAKIGNsYXNzIFJ1blRlc3Rz
VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3Rfd2Via2l0X3J1bl91bml0X3Rl
c3RzKHNlbGYpOgpAQCAtNDIsMTMgKzQ1LDIwIEBAIGNsYXNzIFJ1blRlc3RzVGVzdCh1bml0dGVz
dC5UZXN0Q2FzZSk6CiAgICAgICAgIHRvb2wuX2RlcHJlY2F0ZWRfcG9ydC5ydW5fcGVybF91bml0
dGVzdHNfY29tbWFuZCA9IGxhbWJkYTogTm9uZQogICAgICAgICBzdGVwID0gUnVuVGVzdHModG9v
bCwgTW9ja09wdGlvbnModGVzdD1UcnVlLCBub25faW50ZXJhY3RpdmU9VHJ1ZSwgcXVpZXQ9RmFs
c2UsIGJ1aWxkX3N0eWxlPSJyZWxlYXNlIiwgaXRlcmF0ZV9vbl9uZXdfdGVzdHM9MCwgZ3JvdXA9
Tm9uZSkpCiAKKyAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlKGxldmVsPWxvZ2dpbmcuSU5GTykg
YXMgY2FwdHVyZWQ6CisgICAgICAgICAgICBzdGVwLnJ1bih7fSkKKwogICAgICAgICBpZiBzeXMu
cGxhdGZvcm0gIT0gImN5Z3dpbiI6Ci0gICAgICAgICAgICBleHBlY3RlZF9sb2dzID0gIiIiUnVu
bmluZyBydW4td2Via2l0LXRlc3RzCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAg
ICAgICAgICAgICAgIGNhcHR1cmVkLnJvb3QubG9nLmdldHZhbHVlKCksCisgICAgICAgICAgICAg
ICAgJycnUnVubmluZyBydW4td2Via2l0LXRlc3RzCiBNT0NLIHJ1bl9hbmRfdGhyb3dfaWZfZmFp
bDogWydtb2NrLXJ1bi13ZWJraXQtdGVzdHMnLCAnLS1uby1uZXctdGVzdC1yZXN1bHRzJywgJy0t
bm8tc2hvdy1yZXN1bHRzJywgJy0tZXhpdC1hZnRlci1uLWZhaWx1cmVzPTMwJywgJy0tcXVpZXQn
LCAnLS1za2lwLWZhaWxpbmctdGVzdHMnXSwgY3dkPS9tb2NrLWNoZWNrb3V0Ci0iIiIKKycnJywK
KyAgICAgICAgICAgICkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGV4cGVjdGVkX2xvZ3Mg
PSAiIiJSdW5uaW5nIHJ1bi13ZWJraXQtdGVzdHMKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoCisgICAgICAgICAgICAgICAgY2FwdHVyZWQucm9vdC5sb2cuZ2V0dmFsdWUoKSwKKyAgICAg
ICAgICAgICAgICAnJydSdW5uaW5nIHJ1bi13ZWJraXQtdGVzdHMKIE1PQ0sgcnVuX2FuZF90aHJv
d19pZl9mYWlsOiBbJ21vY2stcnVuLXdlYmtpdC10ZXN0cycsICctLW5vLW5ldy10ZXN0LXJlc3Vs
dHMnLCAnLS1uby1zaG93LXJlc3VsdHMnLCAnLS1leGl0LWFmdGVyLW4tZmFpbHVyZXM9MzAnLCAn
LS1uby1idWlsZCddLCBjd2Q9L21vY2stY2hlY2tvdXQKLSIiIgotCi0gICAgICAgIE91dHB1dENh
cHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCBzdGVwLnJ1biwgW3t9XSwgZXhwZWN0ZWRfbG9n
cz1leHBlY3RlZF9sb2dzKQorJycnLAorICAgICAgICAgICAgKQpJbmRleDogVG9vbHMvU2NyaXB0
cy93ZWJraXRweS90b29sL3N0ZXBzL3N0ZXBzX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9zdGVwc191bml0dGVzdC5weQkocmV2aXNp
b24gMjY1NzczKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3N0ZXBzX3Vu
aXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogIyBDb3B5cmlnaHQgKEMp
IDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMgQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDE3
LCAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKQEAgLTI3LDE1ICsyNywxNiBAQAogIyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KIAoraW1wb3J0IGxvZ2dpbmcKIGltcG9ydCB1bml0dGVzdAogCiBmcm9tIHdlYmtp
dHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBTY3JpcHRFcnJvcgotZnJvbSB3ZWJr
aXRweS5jb21tb24uc3lzdGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0IE91dHB1dENhcHR1cmUKIGZy
b20gd2Via2l0cHkuY29tbW9uLmNvbmZpZy5wb3J0cyBpbXBvcnQgRGVwcmVjYXRlZFBvcnQKIGZy
b20gd2Via2l0cHkudG9vbC5tb2NrdG9vbCBpbXBvcnQgTW9ja09wdGlvbnMsIE1vY2tUb29sCi0K
IGZyb20gd2Via2l0cHkudG9vbCBpbXBvcnQgc3RlcHMKIAorZnJvbSB3ZWJraXRjb3JlcHkgaW1w
b3J0IE91dHB1dENhcHR1cmUKKwogCiBjbGFzcyBTdGVwc1Rlc3QodW5pdHRlc3QuVGVzdENhc2Up
OgogCkBAIC03MCw4ICs3MSw5IEBAIGNsYXNzIFN0ZXBzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6
CiAgICAgICAgIHRvb2wgPSBNb2NrVG9vbCgpCiAgICAgICAgIG9wdGlvbnMgPSBzZWxmLl9zdGVw
X29wdGlvbnMoKQogICAgICAgICBvcHRpb25zLnVwZGF0ZSA9IFRydWUKLSAgICAgICAgZXhwZWN0
ZWRfbG9ncyA9ICJVcGRhdGluZyB3b3JraW5nIGRpcmVjdG9yeVxuIgotICAgICAgICBPdXRwdXRD
YXB0dXJlKCkuYXNzZXJ0X291dHB1dHMoc2VsZiwgc2VsZi5fcnVuX3N0ZXAsIFtzdGVwcy5VcGRh
dGUsIHRvb2wsIG9wdGlvbnNdLCBleHBlY3RlZF9sb2dzPWV4cGVjdGVkX2xvZ3MpCisgICAgICAg
IHdpdGggT3V0cHV0Q2FwdHVyZShsZXZlbD1sb2dnaW5nLklORk8pIGFzIGNhcHR1cmVkOgorICAg
ICAgICAgICAgc2VsZi5fcnVuX3N0ZXAoc3RlcHMuVXBkYXRlLCB0b29sLCBvcHRpb25zKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGNhcHR1cmVkLnJvb3QubG9nLmdldHZhbHVlKCksICdVcGRh
dGluZyB3b3JraW5nIGRpcmVjdG9yeVxuJykKIAogICAgIGRlZiB0ZXN0X3Byb21wdF9mb3JfYnVn
X29yX3RpdGxlX3N0ZXAoc2VsZik6CiAgICAgICAgIHRvb2wgPSBNb2NrVG9vbCgpCkBAIC05MCw3
ICs5Miw5IEBAIGNsYXNzIFN0ZXBzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYg
X2Fzc2VydF9zdGVwX291dHB1dF93aXRoX2J1ZyhzZWxmLCBzdGVwLCBidWdfaWQsIGV4cGVjdGVk
X2xvZ3MsIG9wdGlvbnM9Tm9uZSk6CiAgICAgICAgIHN0YXRlID0geydidWdfaWQnOiBidWdfaWR9
Ci0gICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCBzZWxmLl9ydW5f
c3RlcCwgW3N0ZXAsIE1vY2tUb29sKCksIG9wdGlvbnMsIHN0YXRlXSwgZXhwZWN0ZWRfbG9ncz1l
eHBlY3RlZF9sb2dzKQorICAgICAgICB3aXRoIE91dHB1dENhcHR1cmUobGV2ZWw9bG9nZ2luZy5J
TkZPKSBhcyBjYXB0dXJlZDoKKyAgICAgICAgICAgIHNlbGYuX3J1bl9zdGVwKHN0ZXAsIE1vY2tU
b29sKCksIG9wdGlvbnMsIHN0YXRlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhcHR1cmVk
LnJvb3QubG9nLmdldHZhbHVlKCksIGV4cGVjdGVkX2xvZ3MpCiAKICAgICBkZWYgX2Fzc2VydF9w
b3N0X2RpZmZfb3V0cHV0X2Zvcl9idWcoc2VsZiwgc3RlcCwgYnVnX2lkLCBleHBlY3RlZF9sb2dz
KToKICAgICAgICAgc2VsZi5fYXNzZXJ0X3N0ZXBfb3V0cHV0X3dpdGhfYnVnKHN0ZXAsIGJ1Z19p
ZCwgZXhwZWN0ZWRfbG9ncywgc2VsZi5fcG9zdF9kaWZmX29wdGlvbnMoKSkKQEAgLTExOCw3ICsx
MjIsMTEgQEAgY2xhc3MgU3RlcHNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgIyBG
SVhNRTogV2Ugc2hvdWxkbid0IHVzZSBhIHJlYWwgcG9ydC1vYmplY3QgaGVyZSwgYnV0IHRoZXJl
IGlzIHRvbyBtdWNoIHRvIG1vY2sgYXQgdGhlIG1vbWVudC4KICAgICAgICAgdG9vbC5fZGVwcmVj
YXRlZF9wb3J0ID0gRGVwcmVjYXRlZFBvcnQoKQogICAgICAgICBzdGVwID0gc3RlcHMuUnVuVGVz
dHModG9vbCwgbW9ja19vcHRpb25zKQotICAgICAgICBleHBlY3RlZF9sb2dzID0gIiIiUnVubmlu
ZyBQeXRob24gdW5pdCB0ZXN0cworICAgICAgICB3aXRoIE91dHB1dENhcHR1cmUobGV2ZWw9bG9n
Z2luZy5JTkZPKSBhcyBjYXB0dXJlZDoKKyAgICAgICAgICAgIHN0ZXAucnVuKHt9KQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY2FwdHVyZWQucm9vdC5sb2cuZ2V0dmFs
dWUoKSwKKyAgICAgICAgICAgICcnJ1J1bm5pbmcgUHl0aG9uIHVuaXQgdGVzdHMKIE1PQ0sgcnVu
X2FuZF90aHJvd19pZl9mYWlsOiBbJ1Rvb2xzL1NjcmlwdHMvdGVzdC13ZWJraXRweSddLCBjd2Q9
L21vY2stY2hlY2tvdXQKIFJ1bm5pbmcgUGVybCB1bml0IHRlc3RzCiBNT0NLIHJ1bl9hbmRfdGhy
b3dfaWZfZmFpbDogWydUb29scy9TY3JpcHRzL3Rlc3Qtd2Via2l0cGVybCddLCBjd2Q9L21vY2st
Y2hlY2tvdXQKQEAgLTEyNiw4ICsxMzQsOCBAQCBSdW5uaW5nIEphdmFTY3JpcHRDb3JlIHRlc3Rz
CiBNT0NLIHJ1bl9hbmRfdGhyb3dfaWZfZmFpbDogWydUb29scy9TY3JpcHRzL3J1bi1qYXZhc2Ny
aXB0Y29yZS10ZXN0cycsICctLW5vLWZhaWwtZmFzdCddLCBjd2Q9L21vY2stY2hlY2tvdXQKIFJ1
bm5pbmcgcnVuLXdlYmtpdC10ZXN0cwogTU9DSyBydW5fYW5kX3Rocm93X2lmX2ZhaWw6IFsnVG9v
bHMvU2NyaXB0cy9ydW4td2Via2l0LXRlc3RzJywgJy0tcmVsZWFzZScsICctLXF1aWV0J10sIGN3
ZD0vbW9jay1jaGVja291dAotIiIiCi0gICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0
cHV0cyhzZWxmLCBzdGVwLnJ1biwgW3t9XSwgZXhwZWN0ZWRfbG9ncz1leHBlY3RlZF9sb2dzKQor
JycnLAorICAgICAgICApCiAKICAgICBkZWYgdGVzdF9ydW50ZXN0c19kZWJ1Z19hcmdzKHNlbGYp
OgogICAgICAgICBtb2NrX29wdGlvbnMgPSBzZWxmLl9zdGVwX29wdGlvbnMoKQpAQCAtMTM4LDcg
KzE0NiwxMSBAQCBNT0NLIHJ1bl9hbmRfdGhyb3dfaWZfZmFpbDogWydUb29scy9TY3JpCiAgICAg
ICAgICMgRklYTUU6IFdlIHNob3VsZG4ndCB1c2UgYSByZWFsIHBvcnQtb2JqZWN0IGhlcmUsIGJ1
dCB0aGVyZSBpcyB0b28gbXVjaCB0byBtb2NrIGF0IHRoZSBtb21lbnQuCiAgICAgICAgIHRvb2wu
X2RlcHJlY2F0ZWRfcG9ydCA9IERlcHJlY2F0ZWRQb3J0KCkKICAgICAgICAgc3RlcCA9IHN0ZXBz
LlJ1blRlc3RzKHRvb2wsIG1vY2tfb3B0aW9ucykKLSAgICAgICAgZXhwZWN0ZWRfbG9ncyA9ICIi
IlJ1bm5pbmcgUHl0aG9uIHVuaXQgdGVzdHMKKyAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlKGxl
dmVsPWxvZ2dpbmcuSU5GTykgYXMgY2FwdHVyZWQ6CisgICAgICAgICAgICBzdGVwLnJ1bih7fSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNhcHR1cmVkLnJvb3QubG9n
LmdldHZhbHVlKCksCisgICAgICAgICAgICAnJydSdW5uaW5nIFB5dGhvbiB1bml0IHRlc3RzCiBN
T0NLIHJ1bl9hbmRfdGhyb3dfaWZfZmFpbDogWydUb29scy9TY3JpcHRzL3Rlc3Qtd2Via2l0cHkn
XSwgY3dkPS9tb2NrLWNoZWNrb3V0CiBSdW5uaW5nIFBlcmwgdW5pdCB0ZXN0cwogTU9DSyBydW5f
YW5kX3Rocm93X2lmX2ZhaWw6IFsnVG9vbHMvU2NyaXB0cy90ZXN0LXdlYmtpdHBlcmwnXSwgY3dk
PS9tb2NrLWNoZWNrb3V0CkBAIC0xNDYsOCArMTU4LDggQEAgUnVubmluZyBKYXZhU2NyaXB0Q29y
ZSB0ZXN0cwogTU9DSyBydW5fYW5kX3Rocm93X2lmX2ZhaWw6IFsnVG9vbHMvU2NyaXB0cy9ydW4t
amF2YXNjcmlwdGNvcmUtdGVzdHMnLCAnLS1uby1mYWlsLWZhc3QnXSwgY3dkPS9tb2NrLWNoZWNr
b3V0CiBSdW5uaW5nIHJ1bi13ZWJraXQtdGVzdHMKIE1PQ0sgcnVuX2FuZF90aHJvd19pZl9mYWls
OiBbJ1Rvb2xzL1NjcmlwdHMvcnVuLXdlYmtpdC10ZXN0cycsICctLWRlYnVnJywgJy0tcXVpZXQn
XSwgY3dkPS9tb2NrLWNoZWNrb3V0Ci0iIiIKLSAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2Vy
dF9vdXRwdXRzKHNlbGYsIHN0ZXAucnVuLCBbe31dLCBleHBlY3RlZF9sb2dzPWV4cGVjdGVkX2xv
Z3MpCisnJycsCisgICAgICAgICkKIAogICAgIGRlZiB0ZXN0X3J1bnRlc3RzX2pzYyhzZWxmKToK
ICAgICAgICAgbW9ja19vcHRpb25zID0gc2VsZi5fc3RlcF9vcHRpb25zKCkKQEAgLTE1OSw5ICsx
NzEsMTIgQEAgTU9DSyBydW5fYW5kX3Rocm93X2lmX2ZhaWw6IFsnVG9vbHMvU2NyaQogICAgICAg
ICAjIEZJWE1FOiBXZSBzaG91bGRuJ3QgdXNlIGEgcmVhbCBwb3J0LW9iamVjdCBoZXJlLCBidXQg
dGhlcmUgaXMgdG9vIG11Y2ggdG8gbW9jayBhdCB0aGUgbW9tZW50LgogICAgICAgICB0b29sLl9k
ZXByZWNhdGVkX3BvcnQgPSBEZXByZWNhdGVkUG9ydCgpCiAgICAgICAgIHN0ZXAgPSBzdGVwcy5S
dW5UZXN0cyh0b29sLCBtb2NrX29wdGlvbnMpCi0gICAgICAgIGV4cGVjdGVkX2xvZ3MgPSAiIiJN
T0NLIHJ1bl9hbmRfdGhyb3dfaWZfZmFpbDogWydUb29scy9TY3JpcHRzL3J1bi1qYXZhc2NyaXB0
Y29yZS10ZXN0cycsICctLW5vLWZhaWwtZmFzdCcsICctLXJlbGVhc2UnLCAnLS1qc29uLW91dHB1
dD0vdG1wL2pzY190ZXN0X3Jlc3VsdHMuanNvbiddLCBjd2Q9L21vY2stY2hlY2tvdXQKLSIiIgot
ICAgICAgICBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMoc2VsZiwgc3RlcC5ydW4sIFt7
fV0sIGV4cGVjdGVkX2xvZ3M9ZXhwZWN0ZWRfbG9ncykKKyAgICAgICAgd2l0aCBPdXRwdXRDYXB0
dXJlKGxldmVsPWxvZ2dpbmcuSU5GTykgYXMgY2FwdHVyZWQ6CisgICAgICAgICAgICBzdGVwLnJ1
bih7fSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNhcHR1cmVkLnJv
b3QubG9nLmdldHZhbHVlKCksCisgICAgICAgICAgICAiTU9DSyBydW5fYW5kX3Rocm93X2lmX2Zh
aWw6IFsnVG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMnLCAnLS1uby1mYWls
LWZhc3QnLCAnLS1yZWxlYXNlJywgJy0tanNvbi1vdXRwdXQ9L3RtcC9qc2NfdGVzdF9yZXN1bHRz
Lmpzb24nXSwgY3dkPS9tb2NrLWNoZWNrb3V0XG4iLAorICAgICAgICApCiAKICAgICBkZWYgdGVz
dF9ydW50ZXN0c19qc2NfZGVidWcoc2VsZik6CiAgICAgICAgIG1vY2tfb3B0aW9ucyA9IHNlbGYu
X3N0ZXBfb3B0aW9ucygpCkBAIC0xNzIsOSArMTg3LDEyIEBAIE1PQ0sgcnVuX2FuZF90aHJvd19p
Zl9mYWlsOiBbJ1Rvb2xzL1NjcmkKICAgICAgICAgIyBGSVhNRTogV2Ugc2hvdWxkbid0IHVzZSBh
IHJlYWwgcG9ydC1vYmplY3QgaGVyZSwgYnV0IHRoZXJlIGlzIHRvbyBtdWNoIHRvIG1vY2sgYXQg
dGhlIG1vbWVudC4KICAgICAgICAgdG9vbC5fZGVwcmVjYXRlZF9wb3J0ID0gRGVwcmVjYXRlZFBv
cnQoKQogICAgICAgICBzdGVwID0gc3RlcHMuUnVuVGVzdHModG9vbCwgbW9ja19vcHRpb25zKQot
ICAgICAgICBleHBlY3RlZF9sb2dzID0gIiIiTU9DSyBydW5fYW5kX3Rocm93X2lmX2ZhaWw6IFsn
VG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMnLCAnLS1uby1mYWlsLWZhc3Qn
LCAnLS1kZWJ1ZycsICctLWpzb24tb3V0cHV0PS90bXAvanNjX3Rlc3RfcmVzdWx0cy5qc29uJ10s
IGN3ZD0vbW9jay1jaGVja291dAotIiIiCi0gICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRf
b3V0cHV0cyhzZWxmLCBzdGVwLnJ1biwgW3t9XSwgZXhwZWN0ZWRfbG9ncz1leHBlY3RlZF9sb2dz
KQorICAgICAgICB3aXRoIE91dHB1dENhcHR1cmUobGV2ZWw9bG9nZ2luZy5JTkZPKSBhcyBjYXB0
dXJlZDoKKyAgICAgICAgICAgIHN0ZXAucnVuKHt9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KAorICAgICAgICAgICAgY2FwdHVyZWQucm9vdC5sb2cuZ2V0dmFsdWUoKSwKKyAgICAgICAgICAg
ICJNT0NLIHJ1bl9hbmRfdGhyb3dfaWZfZmFpbDogWydUb29scy9TY3JpcHRzL3J1bi1qYXZhc2Ny
aXB0Y29yZS10ZXN0cycsICctLW5vLWZhaWwtZmFzdCcsICctLWRlYnVnJywgJy0tanNvbi1vdXRw
dXQ9L3RtcC9qc2NfdGVzdF9yZXN1bHRzLmpzb24nXSwgY3dkPS9tb2NrLWNoZWNrb3V0XG4iLAor
ICAgICAgICApCiAKICAgICBkZWYgdGVzdF9idWlsZF9qc2NfZGVidWcoc2VsZik6CiAgICAgICAg
IG1vY2tfb3B0aW9ucyA9IHNlbGYuX3N0ZXBfb3B0aW9ucygpCkBAIC0xODcsMTAgKzIwNSwxNCBA
QCBNT0NLIHJ1bl9hbmRfdGhyb3dfaWZfZmFpbDogWydUb29scy9TY3JpCiAgICAgICAgICMgRklY
TUU6IFdlIHNob3VsZG4ndCB1c2UgYSByZWFsIHBvcnQtb2JqZWN0IGhlcmUsIGJ1dCB0aGVyZSBp
cyB0b28gbXVjaCB0byBtb2NrIGF0IHRoZSBtb21lbnQuCiAgICAgICAgIHRvb2wuX2RlcHJlY2F0
ZWRfcG9ydCA9IERlcHJlY2F0ZWRQb3J0KCkKICAgICAgICAgc3RlcCA9IHN0ZXBzLkJ1aWxkKHRv
b2wsIG1vY2tfb3B0aW9ucykKLSAgICAgICAgZXhwZWN0ZWRfbG9ncyA9ICIiIkJ1aWxkaW5nIFdl
YktpdAorICAgICAgICB3aXRoIE91dHB1dENhcHR1cmUobGV2ZWw9bG9nZ2luZy5JTkZPKSBhcyBj
YXB0dXJlZDoKKyAgICAgICAgICAgIHN0ZXAucnVuKHt9KQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKAorICAgICAgICAgICAgY2FwdHVyZWQucm9vdC5sb2cuZ2V0dmFsdWUoKSwKKyAgICAgICAg
ICAgICcnJ0J1aWxkaW5nIFdlYktpdAogTU9DSyBydW5fYW5kX3Rocm93X2lmX2ZhaWw6IFsnVG9v
bHMvU2NyaXB0cy9idWlsZC1qc2MnLCAnLS1kZWJ1ZycsICdBUkNIUz1UcnVlJ10sIGN3ZD0vbW9j
ay1jaGVja291dCwgZW52PXsnTU9DS19FTlZJUk9OX0NPUFknOiAnMScsICdURVJNJzogJ2R1bWIn
fQotIiIiCi0gICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCBzdGVw
LnJ1biwgW3t9XSwgZXhwZWN0ZWRfbG9ncz1leHBlY3RlZF9sb2dzKQorJycnLAorICAgICAgICAp
CiAKICAgICBkZWYgdGVzdF9idWlsZF9qc2Moc2VsZik6CiAgICAgICAgIG1vY2tfb3B0aW9ucyA9
IHNlbGYuX3N0ZXBfb3B0aW9ucygpCkBAIC0yMDMsMTAgKzIyNSwxNCBAQCBNT0NLIHJ1bl9hbmRf
dGhyb3dfaWZfZmFpbDogWydUb29scy9TY3JpCiAgICAgICAgICMgRklYTUU6IFdlIHNob3VsZG4n
dCB1c2UgYSByZWFsIHBvcnQtb2JqZWN0IGhlcmUsIGJ1dCB0aGVyZSBpcyB0b28gbXVjaCB0byBt
b2NrIGF0IHRoZSBtb21lbnQuCiAgICAgICAgIHRvb2wuX2RlcHJlY2F0ZWRfcG9ydCA9IERlcHJl
Y2F0ZWRQb3J0KCkKICAgICAgICAgc3RlcCA9IHN0ZXBzLkJ1aWxkKHRvb2wsIG1vY2tfb3B0aW9u
cykKLSAgICAgICAgZXhwZWN0ZWRfbG9ncyA9ICIiIkJ1aWxkaW5nIFdlYktpdAorICAgICAgICB3
aXRoIE91dHB1dENhcHR1cmUobGV2ZWw9bG9nZ2luZy5JTkZPKSBhcyBjYXB0dXJlZDoKKyAgICAg
ICAgICAgIHN0ZXAucnVuKHt9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAg
ICAgY2FwdHVyZWQucm9vdC5sb2cuZ2V0dmFsdWUoKSwKKyAgICAgICAgICAgICcnJ0J1aWxkaW5n
IFdlYktpdAogTU9DSyBydW5fYW5kX3Rocm93X2lmX2ZhaWw6IFsnVG9vbHMvU2NyaXB0cy9idWls
ZC1qc2MnLCAnLS1yZWxlYXNlJywgJ0FSQ0hTPVRydWUnXSwgY3dkPS9tb2NrLWNoZWNrb3V0LCBl
bnY9eydNT0NLX0VOVklST05fQ09QWSc6ICcxJywgJ1RFUk0nOiAnZHVtYid9Ci0iIiIKLSAgICAg
ICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIHN0ZXAucnVuLCBbe31dLCBl
eHBlY3RlZF9sb2dzPWV4cGVjdGVkX2xvZ3MpCisnJycsCisgICAgICAgICkKIAogICAgIGRlZiB0
ZXN0X3BhdGNoX3JlbGV2YW50KHNlbGYpOgogICAgICAgICBzZWxmLm1heERpZmYgPSBOb25lCkBA
IC0yMTYsOSArMjQyLDEyIEBAIE1PQ0sgcnVuX2FuZF90aHJvd19pZl9mYWlsOiBbJ1Rvb2xzL1Nj
cmkKICAgICAgICAgIyBGSVhNRTogV2Ugc2hvdWxkbid0IHVzZSBhIHJlYWwgcG9ydC1vYmplY3Qg
aGVyZSwgYnV0IHRoZXJlIGlzIHRvbyBtdWNoIHRvIG1vY2sgYXQgdGhlIG1vbWVudC4KICAgICAg
ICAgdG9vbC5fZGVwcmVjYXRlZF9wb3J0ID0gRGVwcmVjYXRlZFBvcnQoKQogICAgICAgICBzdGVw
ID0gc3RlcHMuQ2hlY2tQYXRjaFJlbGV2YW5jZSh0b29sLCBtb2NrX29wdGlvbnMpCi0gICAgICAg
IGV4cGVjdGVkX2xvZ3MgPSAiIiJDaGVja2luZyByZWxldmFuY2Ugb2YgcGF0Y2gKLSIiIgotICAg
ICAgICBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMoc2VsZiwgc3RlcC5ydW4sIFt7fV0s
IGV4cGVjdGVkX2xvZ3M9ZXhwZWN0ZWRfbG9ncykKKyAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJl
KGxldmVsPWxvZ2dpbmcuSU5GTykgYXMgY2FwdHVyZWQ6CisgICAgICAgICAgICBzdGVwLnJ1bih7
fSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNhcHR1cmVkLnJvb3Qu
bG9nLmdldHZhbHVlKCksCisgICAgICAgICAgICAnQ2hlY2tpbmcgcmVsZXZhbmNlIG9mIHBhdGNo
XG4nLAorICAgICAgICApCiAKICAgICBkZWYgdGVzdF9wYXRjaF9yZWxldmFudF9qc2Moc2VsZik6
CiAgICAgICAgIHNlbGYubWF4RGlmZiA9IE5vbmUKQEAgLTIyOSw5ICsyNTgsMTIgQEAgTU9DSyBy
dW5fYW5kX3Rocm93X2lmX2ZhaWw6IFsnVG9vbHMvU2NyaQogICAgICAgICAjIEZJWE1FOiBXZSBz
aG91bGRuJ3QgdXNlIGEgcmVhbCBwb3J0LW9iamVjdCBoZXJlLCBidXQgdGhlcmUgaXMgdG9vIG11
Y2ggdG8gbW9jayBhdCB0aGUgbW9tZW50LgogICAgICAgICB0b29sLl9kZXByZWNhdGVkX3BvcnQg
PSBEZXByZWNhdGVkUG9ydCgpCiAgICAgICAgIHN0ZXAgPSBzdGVwcy5DaGVja1BhdGNoUmVsZXZh
bmNlKHRvb2wsIG1vY2tfb3B0aW9ucykKLSAgICAgICAgZXhwZWN0ZWRfbG9ncyA9ICIiIkNoZWNr
aW5nIHJlbGV2YW5jZSBvZiBwYXRjaAotIiIiCi0gICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3Nl
cnRfb3V0cHV0cyhzZWxmLCBzdGVwLnJ1biwgW3t9XSwgZXhwZWN0ZWRfbG9ncz1leHBlY3RlZF9s
b2dzKQorICAgICAgICB3aXRoIE91dHB1dENhcHR1cmUobGV2ZWw9bG9nZ2luZy5JTkZPKSBhcyBj
YXB0dXJlZDoKKyAgICAgICAgICAgIHN0ZXAucnVuKHt9KQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKAorICAgICAgICAgICAgY2FwdHVyZWQucm9vdC5sb2cuZ2V0dmFsdWUoKSwKKyAgICAgICAg
ICAgICdDaGVja2luZyByZWxldmFuY2Ugb2YgcGF0Y2hcbicsCisgICAgICAgICkKIAogICAgIGRl
ZiB0ZXN0X3BhdGNoX25vdF9yZWxldmFudF9qc2Moc2VsZik6CiAgICAgICAgIHNlbGYubWF4RGlm
ZiA9IE5vbmUKQEAgLTI0Miw4ICsyNzQsMTAgQEAgTU9DSyBydW5fYW5kX3Rocm93X2lmX2ZhaWw6
IFsnVG9vbHMvU2NyaQogICAgICAgICAjIEZJWE1FOiBXZSBzaG91bGRuJ3QgdXNlIGEgcmVhbCBw
b3J0LW9iamVjdCBoZXJlLCBidXQgdGhlcmUgaXMgdG9vIG11Y2ggdG8gbW9jayBhdCB0aGUgbW9t
ZW50LgogICAgICAgICB0b29sLl9kZXByZWNhdGVkX3BvcnQgPSBEZXByZWNhdGVkUG9ydCgpCiAg
ICAgICAgIHN0ZXAgPSBzdGVwcy5DaGVja1BhdGNoUmVsZXZhbmNlKHRvb2wsIG1vY2tfb3B0aW9u
cykKLSAgICAgICAgZXhwZWN0ZWRfbG9ncyA9ICIiIkNoZWNraW5nIHJlbGV2YW5jZSBvZiBwYXRj
aAotVGhpcyBwYXRjaCBkb2VzIG5vdCBoYXZlIHJlbGV2YW50IGNoYW5nZXMuCi0iIiIKLSAgICAg
ICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTY3JpcHRFcnJvcik6Ci0gICAgICAgICAgICBPdXRw
dXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMoc2VsZiwgc3RlcC5ydW4sIFt7fV0sIGV4cGVjdGVk
X2xvZ3M9ZXhwZWN0ZWRfbG9ncykKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFNj
cmlwdEVycm9yKSwgT3V0cHV0Q2FwdHVyZShsZXZlbD1sb2dnaW5nLklORk8pIGFzIGNhcHR1cmVk
OgorICAgICAgICAgICAgc3RlcC5ydW4oe30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisg
ICAgICAgICAgICBjYXB0dXJlZC5yb290LmxvZy5nZXR2YWx1ZSgpLAorICAgICAgICAgICAgJ0No
ZWNraW5nIHJlbGV2YW5jZSBvZiBwYXRjaFxuJywKKyAgICAgICAgKQpJbmRleDogVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3N1Z2dlc3RyZXZpZXdlcnNfdW5pdHRlc3QucHkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3N1Z2dlc3RyZXZp
ZXdlcnNfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2NTc3MykKKysrIFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9zdGVwcy9zdWdnZXN0cmV2aWV3ZXJzX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNv
cHkpCkBAIC0xLDQgKzEsNSBAQAogIyBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTI2LDIx
ICsyNywyNyBAQAogIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAoraW1wb3J0IGxvZ2dp
bmcKIGltcG9ydCB1bml0dGVzdAogCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0
Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQogZnJvbSB3ZWJraXRweS50b29sLm1vY2t0b29s
IGltcG9ydCBNb2NrT3B0aW9ucywgTW9ja1Rvb2wKIGZyb20gd2Via2l0cHkudG9vbC5zdGVwcy5z
dWdnZXN0cmV2aWV3ZXJzIGltcG9ydCBTdWdnZXN0UmV2aWV3ZXJzCiAKK2Zyb20gd2Via2l0Y29y
ZXB5IGltcG9ydCBPdXRwdXRDYXB0dXJlCisKIAogY2xhc3MgU3VnZ2VzdFJldmlld2Vyc1Rlc3Qo
dW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X2Rpc2FibGVkKHNlbGYpOgogICAgICAg
ICBzdGVwID0gU3VnZ2VzdFJldmlld2VycyhNb2NrVG9vbCgpLCBNb2NrT3B0aW9ucyhzdWdnZXN0
X3Jldmlld2Vycz1GYWxzZSkpCi0gICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0
cyhzZWxmLCBzdGVwLnJ1biwgW3t9XSkKKyAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlKGxldmVs
PWxvZ2dpbmcuSU5GTykgYXMgY2FwdHVyZWQ6CisgICAgICAgICAgICBzdGVwLnJ1bih7fSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYXB0dXJlZC5zdGRvdXQuZ2V0dmFsdWUoKSwgJycpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQucm9vdC5sb2cuZ2V0dmFsdWUoKSwgJycp
CiAKICAgICBkZWYgdGVzdF9iYXNpYyhzZWxmKToKICAgICAgICAgY2FwdHVyZSA9IE91dHB1dENh
cHR1cmUoKQogICAgICAgICBzdGVwID0gU3VnZ2VzdFJldmlld2VycyhNb2NrVG9vbCgpLCBNb2Nr
T3B0aW9ucyhzdWdnZXN0X3Jldmlld2Vycz1UcnVlLCBnaXRfY29tbWl0PU5vbmUpKQotICAgICAg
ICBleHBlY3RlZF9zdGRvdXQgPSAiVGhlIGZvbGxvd2luZyByZXZpZXdlcnMgaGF2ZSByZWNlbnRs
eSBtb2RpZmllZCBmaWxlcyBpbiB5b3VyIHBhdGNoOlxuRm9vIEJhclxuIgotICAgICAgICBleHBl
Y3RlZF9sb2dzID0gIldvdWxkIHlvdSBsaWtlIHRvIENDIHRoZW0/XG4iCi0gICAgICAgIGNhcHR1
cmUuYXNzZXJ0X291dHB1dHMoc2VsZiwgc3RlcC5ydW4sIFt7ImJ1Z19pZCI6ICIxMjMifV0sIGV4
cGVjdGVkX3N0ZG91dD1leHBlY3RlZF9zdGRvdXQsIGV4cGVjdGVkX2xvZ3M9ZXhwZWN0ZWRfbG9n
cykKKyAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlKGxldmVsPWxvZ2dpbmcuSU5GTykgYXMgY2Fw
dHVyZWQ6CisgICAgICAgICAgICBzdGVwLnJ1bihkaWN0KGJ1Z19pZD0nMTIzJykpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQuc3Rkb3V0LmdldHZhbHVlKCksICdUaGUgZm9sbG93
aW5nIHJldmlld2VycyBoYXZlIHJlY2VudGx5IG1vZGlmaWVkIGZpbGVzIGluIHlvdXIgcGF0Y2g6
XG5Gb28gQmFyXG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhcHR1cmVkLnJvb3QubG9n
LmdldHZhbHVlKCksICdXb3VsZCB5b3UgbGlrZSB0byBDQyB0aGVtP1xuJykKSW5kZXg6IFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy91cGRhdGVjaGFuZ2Vsb2dzd2l0aHJldmlld191
bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3Rl
cHMvdXBkYXRlY2hhbmdlbG9nc3dpdGhyZXZpZXdfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2NTc3
MykKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy91cGRhdGVjaGFuZ2Vsb2dz
d2l0aHJldmlld191bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDUgQEAKICMg
Q29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0yNiwzMCArMjcsMzMgQEAKICMgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAKK2ltcG9ydCBsb2dnaW5nCiBpbXBvcnQgdW5pdHRlc3QKIAot
ZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0IE91dHB1dENh
cHR1cmUKIGZyb20gd2Via2l0cHkudG9vbC5tb2NrdG9vbCBpbXBvcnQgTW9ja09wdGlvbnMsIE1v
Y2tUb29sCiBmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMudXBkYXRlY2hhbmdlbG9nc3dpdGhyZXZp
ZXdlciBpbXBvcnQgVXBkYXRlQ2hhbmdlTG9nc1dpdGhSZXZpZXdlcgogCitmcm9tIHdlYmtpdGNv
cmVweSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQorCiAKIGNsYXNzIFVwZGF0ZUNoYW5nZUxvZ3NXaXRo
UmV2aWV3ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9ndWVzc19yZXZp
ZXdlcl9mcm9tX2J1ZyhzZWxmKToKLSAgICAgICAgY2FwdHVyZSA9IE91dHB1dENhcHR1cmUoKQog
ICAgICAgICBzdGVwID0gVXBkYXRlQ2hhbmdlTG9nc1dpdGhSZXZpZXdlcihNb2NrVG9vbCgpLCBN
b2NrT3B0aW9ucygpKQotICAgICAgICBleHBlY3RlZF9sb2dzID0gIk5vIHJldmlld2VkIHBhdGNo
ZXMgb24gYnVnIDUwMDAxLCBjYW5ub3QgaW5mZXIgcmV2aWV3ZXIuXG4iCi0gICAgICAgIGNhcHR1
cmUuYXNzZXJ0X291dHB1dHMoc2VsZiwgc3RlcC5fZ3Vlc3NfcmV2aWV3ZXJfZnJvbV9idWcsIFs1
MDAwMV0sIGV4cGVjdGVkX2xvZ3M9ZXhwZWN0ZWRfbG9ncykKKyAgICAgICAgd2l0aCBPdXRwdXRD
YXB0dXJlKGxldmVsPWxvZ2dpbmcuSU5GTykgYXMgY2FwdHVyZWQ6CisgICAgICAgICAgICBzdGVw
Ll9ndWVzc19yZXZpZXdlcl9mcm9tX2J1Zyg1MDAwMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChjYXB0dXJlZC5yb290LmxvZy5nZXR2YWx1ZSgpLCAnTm8gcmV2aWV3ZWQgcGF0Y2hlcyBvbiBi
dWcgNTAwMDEsIGNhbm5vdCBpbmZlciByZXZpZXdlci5cbicpCiAKICAgICBkZWYgdGVzdF9ndWVz
c19yZXZpZXdlcl9mcm9tX211bHRpcGF0Y2hfYnVnKHNlbGYpOgotICAgICAgICBjYXB0dXJlID0g
T3V0cHV0Q2FwdHVyZSgpCiAgICAgICAgIHN0ZXAgPSBVcGRhdGVDaGFuZ2VMb2dzV2l0aFJldmll
d2VyKE1vY2tUb29sKCksIE1vY2tPcHRpb25zKCkpCi0gICAgICAgIGV4cGVjdGVkX2xvZ3MgPSAi
R3Vlc3NpbmcgXCJSZXZpZXdlcjJcIiBhcyByZXZpZXdlciBmcm9tIGF0dGFjaG1lbnQgMTAwMDEg
b24gYnVnIDUwMDAwLlxuIgotICAgICAgICBjYXB0dXJlLmFzc2VydF9vdXRwdXRzKHNlbGYsIHN0
ZXAuX2d1ZXNzX3Jldmlld2VyX2Zyb21fYnVnLCBbNTAwMDBdLCBleHBlY3RlZF9sb2dzPWV4cGVj
dGVkX2xvZ3MpCisgICAgICAgIHdpdGggT3V0cHV0Q2FwdHVyZShsZXZlbD1sb2dnaW5nLklORk8p
IGFzIGNhcHR1cmVkOgorICAgICAgICAgICAgc3RlcC5fZ3Vlc3NfcmV2aWV3ZXJfZnJvbV9idWco
NTAwMDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQucm9vdC5sb2cuZ2V0dmFs
dWUoKSwgJ0d1ZXNzaW5nICJSZXZpZXdlcjIiIGFzIHJldmlld2VyIGZyb20gYXR0YWNobWVudCAx
MDAwMSBvbiBidWcgNTAwMDAuXG4nKQogCiAgICAgZGVmIHRlc3RfZW1wdHlfc3RhdGUoc2VsZik6
Ci0gICAgICAgIGNhcHR1cmUgPSBPdXRwdXRDYXB0dXJlKCkKICAgICAgICAgb3B0aW9ucyA9IE1v
Y2tPcHRpb25zKCkKICAgICAgICAgb3B0aW9ucy5yZXZpZXdlciA9ICdNT0NLIHJldmlld2VyJwog
ICAgICAgICBvcHRpb25zLmdpdF9jb21taXQgPSAnTU9DSyBnaXQgY29tbWl0JwogICAgICAgICBz
dGVwID0gVXBkYXRlQ2hhbmdlTG9nc1dpdGhSZXZpZXdlcihNb2NrVG9vbCgpLCBvcHRpb25zKQot
ICAgICAgICBjYXB0dXJlLmFzc2VydF9vdXRwdXRzKHNlbGYsIHN0ZXAucnVuLCBbe31dKQorICAg
ICAgICB3aXRoIE91dHB1dENhcHR1cmUobGV2ZWw9bG9nZ2luZy5JTkZPKSBhcyBjYXB0dXJlZDoK
KyAgICAgICAgICAgIHN0ZXAucnVuKHt9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhcHR1
cmVkLnJvb3QubG9nLmdldHZhbHVlKCksICcnKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90b29sL3N0ZXBzL3ZhbGlkYXRlY2hhbmdlbG9nc191bml0dGVzdC5weQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvdmFsaWRhdGVjaGFuZ2Vsb2dzX3Vu
aXR0ZXN0LnB5CShyZXZpc2lvbiAyNjU3NzMpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvc3RlcHMvdmFsaWRhdGVjaGFuZ2Vsb2dzX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBA
IC0xLDQgKzEsNSBAQAogIyBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTI2LDEzICsyNywx
NSBAQAogIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAoraW1wb3J0IGxvZ2dpbmcKIGlt
cG9ydCB1bml0dGVzdAogCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVy
ZSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQogZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5Lm1vY2sgaW1w
b3J0IE1vY2sKIGZyb20gd2Via2l0cHkudG9vbC5tb2NrdG9vbCBpbXBvcnQgTW9ja09wdGlvbnMs
IE1vY2tUb29sCiBmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMudmFsaWRhdGVjaGFuZ2Vsb2dzIGlt
cG9ydCBWYWxpZGF0ZUNoYW5nZUxvZ3MKIAorZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IE91dHB1
dENhcHR1cmUKKwogCiBjbGFzcyBWYWxpZGF0ZUNoYW5nZUxvZ3NUZXN0KHVuaXR0ZXN0LlRlc3RD
YXNlKToKIApAQCAtNDIsMTIgKzQ1LDIxIEBAIGNsYXNzIFZhbGlkYXRlQ2hhbmdlTG9nc1Rlc3Qo
dW5pdHRlc3QuVGUKICAgICAgICAgZGlmZl9maWxlID0gTW9jaygpCiAgICAgICAgIGRpZmZfZmls
ZS5maWxlbmFtZSA9ICJtb2NrL0NoYW5nZUxvZyIKICAgICAgICAgZGlmZl9maWxlLmxpbmVzID0g
WyhzdGFydF9saW5lLCBzdGFydF9saW5lLCAiZm9vIildCi0gICAgICAgIGV4cGVjdGVkX3N0ZG91
dCA9IGV4cGVjdGVkX3N0ZGVyciA9IGV4cGVjdGVkX2xvZ3MgPSAiIgotICAgICAgICBpZiBzaG91
bGRfZmFpbCBhbmQgbm90IG5vbl9pbnRlcmFjdGl2ZToKLSAgICAgICAgICAgIGV4cGVjdGVkX2xv
Z3MgPSAiVGhlIGRpZmYgdG8gbW9jay9DaGFuZ2VMb2cgbG9va3Mgd3JvbmcuIEFyZSB5b3Ugc3Vy
ZSB5b3VyIENoYW5nZUxvZyBlbnRyeSBpcyBhdCB0aGUgdG9wIG9mIHRoZSBmaWxlP1xuT0sgdG8g
Y29udGludWU/XG4iCi0gICAgICAgIHJlc3VsdCA9IE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0
cHV0cyhzZWxmLCBzdGVwLl9jaGVja19jaGFuZ2Vsb2dfZGlmZiwgW2RpZmZfZmlsZV0sIGV4cGVj
dGVkX2xvZ3M9ZXhwZWN0ZWRfbG9ncykKKworICAgICAgICB3aXRoIE91dHB1dENhcHR1cmUobGV2
ZWw9bG9nZ2luZy5JTkZPKSBhcyBjYXB0dXJlZDoKKyAgICAgICAgICAgIHJlc3VsdCA9IHN0ZXAu
X2NoZWNrX2NoYW5nZWxvZ19kaWZmKGRpZmZfZmlsZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChub3QgcmVzdWx0LCBzaG91bGRfZmFpbCkKIAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNh
cHR1cmVkLnN0ZG91dC5nZXR2YWx1ZSgpLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChj
YXB0dXJlZC5zdGRlcnIuZ2V0dmFsdWUoKSwgJycpCisgICAgICAgIGlmIHNob3VsZF9mYWlsIGFu
ZCBub3Qgbm9uX2ludGVyYWN0aXZlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAg
ICAgICAgICAgICAgICBjYXB0dXJlZC5yb290LmxvZy5nZXR2YWx1ZSgpLAorICAgICAgICAgICAg
ICAgICdUaGUgZGlmZiB0byBtb2NrL0NoYW5nZUxvZyBsb29rcyB3cm9uZy4gQXJlIHlvdSBzdXJl
IHlvdXIgQ2hhbmdlTG9nIGVudHJ5IGlzIGF0IHRoZSB0b3Agb2YgdGhlIGZpbGU/XG5PSyB0byBj
b250aW51ZT9cbicsCisgICAgICAgICAgICApCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGNhcHR1cmVkLnJvb3QubG9nLmdldHZhbHVlKCksICcnKQorCiAgICAg
ZGVmIHRlc3RfY2hlY2tfY2hhbmdlbG9nX2RpZmYoc2VsZik6CiAgICAgICAgIHNlbGYuX2Fzc2Vy
dF9zdGFydF9saW5lX3Byb2R1Y2VzX291dHB1dCgxKQogICAgICAgICBzZWxmLl9hc3NlcnRfc3Rh
cnRfbGluZV9wcm9kdWNlc19vdXRwdXQoNykKQEAgLTYzLDcgKzc1LDEyIEBAIGNsYXNzIFZhbGlk
YXRlQ2hhbmdlTG9nc1Rlc3QodW5pdHRlc3QuVGUKICAgICAgICAgZGlmZl9maWxlID0gTW9jaygp
CiAgICAgICAgIGRpZmZfZmlsZS5maWxlbmFtZSA9ICJtb2NrL0NoYW5nZUxvZyIKICAgICAgICAg
ZGlmZl9maWxlLmxpbmVzID0gWygxLCAxLCAiZm9vIiksICgyLCAyLCAiYmFyIE9PUFMhIGJhciIp
LCAoMywgMywgImZvbyIpXQotICAgICAgICBzZWxmLmFzc2VydFRydWUoT3V0cHV0Q2FwdHVyZSgp
LmFzc2VydF9vdXRwdXRzKHNlbGYsIHN0ZXAuX2NoYW5nZWxvZ19jb250YWluc19vb3BzLCBbZGlm
Zl9maWxlXSwgZXhwZWN0ZWRfbG9ncz0nJykpCisKKyAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJl
KGxldmVsPWxvZ2dpbmcuSU5GTykgYXMgY2FwdHVyZWQ6CisgICAgICAgICAgICBzZWxmLmFzc2Vy
dFRydWUoc3RlcC5fY2hhbmdlbG9nX2NvbnRhaW5zX29vcHMoZGlmZl9maWxlKSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChjYXB0dXJlZC5yb290LmxvZy5nZXR2YWx1ZSgpLCAnJykKIAogICAg
ICAgICBkaWZmX2ZpbGUubGluZXMgPSBbKDEsIDEsICJmb28iKSwgKDIsIDIsICJiYXIgT09QUyBi
YXIiKSwgKDMsIDMsICJmb28iKV0KLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShPdXRwdXRDYXB0
dXJlKCkuYXNzZXJ0X291dHB1dHMoc2VsZiwgc3RlcC5fY2hhbmdlbG9nX2NvbnRhaW5zX29vcHMs
IFtkaWZmX2ZpbGVdLCBleHBlY3RlZF9sb2dzPScnKSkKKyAgICAgICAgd2l0aCBPdXRwdXRDYXB0
dXJlKGxldmVsPWxvZ2dpbmcuSU5GTykgYXMgY2FwdHVyZWQ6CisgICAgICAgICAgICBzZWxmLmFz
c2VydEZhbHNlKHN0ZXAuX2NoYW5nZWxvZ19jb250YWluc19vb3BzKGRpZmZfZmlsZSkpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQucm9vdC5sb2cuZ2V0dmFsdWUoKSwgJycpCklu
ZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2NvbnZlcnRlcl91bml0dGVzdC5w
eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2NvbnZlcnRl
cl91bml0dGVzdC5weQkocmV2aXNpb24gMjY1NzczKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS93M2MvdGVzdF9jb252ZXJ0ZXJfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTEsNCAr
MSw1IEBACiAjIENvcHlyaWdodCAoQykgMjAxMyBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsMTEg
KzMzLDEyIEBAIGltcG9ydCB1bml0dGVzdAogZnJvbSB3ZWJraXRjb3JlcHkgaW1wb3J0IHVuaWNv
ZGUKIAogZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdCBpbXBvcnQgSG9zdAotZnJvbSB3ZWJraXRw
eS5jb21tb24uc3lzdGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0IE91dHB1dENhcHR1cmUKIGZyb20g
d2Via2l0cHkuY29tbW9uLndlYmtpdF9maW5kZXIgaW1wb3J0IFdlYktpdEZpbmRlcgogZnJvbSB3
ZWJraXRweS50aGlyZHBhcnR5LkJlYXV0aWZ1bFNvdXAgaW1wb3J0IEJlYXV0aWZ1bFNvdXAKIGZy
b20gd2Via2l0cHkudzNjLnRlc3RfY29udmVydGVyIGltcG9ydCBfVzNDVGVzdENvbnZlcnRlcgog
Citmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQorCiBEVU1NWV9GSUxFTkFN
RSA9ICdkdW1teS5odG1sJwogRFVNTVlfUEFUSCA9ICdkdW1teS90ZXN0aGFybmVzcy9wYXRoJwog
CkBAIC04MywxNCArODUsMTAgQEAgQ09OVEVOVCBPRiBURVNUCiAiIiIKICAgICAgICAgY29udmVy
dGVyID0gX1czQ1Rlc3RDb252ZXJ0ZXIoRFVNTVlfUEFUSCwgRFVNTVlfRklMRU5BTUUsIE5vbmUp
CiAKLSAgICAgICAgb2MgPSBPdXRwdXRDYXB0dXJlKCkKLSAgICAgICAgb2MuY2FwdHVyZV9vdXRw
dXQoKQotICAgICAgICB0cnk6CisgICAgICAgIHdpdGggT3V0cHV0Q2FwdHVyZSgpOgogICAgICAg
ICAgICAgY29udmVydGVyLmZlZWQodGVzdF9odG1sKQogICAgICAgICAgICAgY29udmVydGVyLmNs
b3NlKCkKICAgICAgICAgICAgIGNvbnZlcnRlZCA9IGNvbnZlcnRlci5vdXRwdXQoKQotICAgICAg
ICBmaW5hbGx5OgotICAgICAgICAgICAgb2MucmVzdG9yZV9vdXRwdXQoKQogCiAgICAgICAgIHNl
bGYudmVyaWZ5X25vX2NvbnZlcnNpb25faGFwcGVuZWQoY29udmVydGVkLCB0ZXN0X2h0bWwpCiAK
QEAgLTEzNSwxNCArMTMzLDEwIEBAIENPTlRFTlQgT0YgVEVTVAogICAgICAgICBjb252ZXJ0ZXIg
PSBfVzNDVGVzdENvbnZlcnRlcihmYWtlX2Rpcl9wYXRoLCBEVU1NWV9GSUxFTkFNRSwgTm9uZSkK
ICAgICAgICAgdGVzdF9jb250ZW50ID0gc2VsZi5nZW5lcmF0ZV90ZXN0X2NvbnRlbnRfcHJvcGVy
dGllc19hbmRfdmFsdWVzKGNvbnZlcnRlci5wcmVmaXhlZF9wcm9wZXJ0aWVzLCBjb252ZXJ0ZXIu
cHJlZml4ZWRfcHJvcGVydHlfdmFsdWVzLCAxLCB0ZXN0X2h0bWwpCiAKLSAgICAgICAgb2MgPSBP
dXRwdXRDYXB0dXJlKCkKLSAgICAgICAgb2MuY2FwdHVyZV9vdXRwdXQoKQotICAgICAgICB0cnk6
CisgICAgICAgIHdpdGggT3V0cHV0Q2FwdHVyZSgpOgogICAgICAgICAgICAgY29udmVydGVyLmZl
ZWQodGVzdF9jb250ZW50WzJdKQogICAgICAgICAgICAgY29udmVydGVyLmNsb3NlKCkKICAgICAg
ICAgICAgIGNvbnZlcnRlZCA9IGNvbnZlcnRlci5vdXRwdXQoKQotICAgICAgICBmaW5hbGx5Ogot
ICAgICAgICAgICAgb2MucmVzdG9yZV9vdXRwdXQoKQogCiAgICAgICAgIHNlbGYudmVyaWZ5X2Nv
bnZlcnNpb25faGFwcGVuZWQoY29udmVydGVkKQogICAgICAgICBzZWxmLnZlcmlmeV90ZXN0X2hh
cm5lc3NfcGF0aHMoY29udmVydGVyLCBjb252ZXJ0ZWRbMl0sIGZha2VfZGlyX3BhdGgsIDEsIDEp
CkBAIC0xNzIsMTUgKzE2NiwxMSBAQCBDT05URU5UIE9GIFRFU1QKICAgICAgICAgZmFrZV9kaXJf
cGF0aCA9IHNlbGYuZmFrZV9kaXJfcGF0aCgnaGFybmVzc2FuZHByb3BzJykKICAgICAgICAgY29u
dmVydGVyID0gX1czQ1Rlc3RDb252ZXJ0ZXIoZmFrZV9kaXJfcGF0aCwgRFVNTVlfRklMRU5BTUUs
IE5vbmUpCiAKLSAgICAgICAgb2MgPSBPdXRwdXRDYXB0dXJlKCkKLSAgICAgICAgb2MuY2FwdHVy
ZV9vdXRwdXQoKQotICAgICAgICB0cnk6CisgICAgICAgIHdpdGggT3V0cHV0Q2FwdHVyZSgpOgog
ICAgICAgICAgICAgdGVzdF9jb250ZW50ID0gc2VsZi5nZW5lcmF0ZV90ZXN0X2NvbnRlbnRfcHJv
cGVydGllc19hbmRfdmFsdWVzKGNvbnZlcnRlci5wcmVmaXhlZF9wcm9wZXJ0aWVzLCBjb252ZXJ0
ZXIucHJlZml4ZWRfcHJvcGVydHlfdmFsdWVzLCAyLCB0ZXN0X2h0bWwpCiAgICAgICAgICAgICBj
b252ZXJ0ZXIuZmVlZCh0ZXN0X2NvbnRlbnRbMl0pCiAgICAgICAgICAgICBjb252ZXJ0ZXIuY2xv
c2UoKQogICAgICAgICAgICAgY29udmVydGVkID0gY29udmVydGVyLm91dHB1dCgpCi0gICAgICAg
IGZpbmFsbHk6Ci0gICAgICAgICAgICBvYy5yZXN0b3JlX291dHB1dCgpCiAKICAgICAgICAgc2Vs
Zi52ZXJpZnlfY29udmVyc2lvbl9oYXBwZW5lZChjb252ZXJ0ZWQpCiAgICAgICAgIHNlbGYudmVy
aWZ5X3Rlc3RfaGFybmVzc19wYXRocyhjb252ZXJ0ZXIsIGNvbnZlcnRlZFsyXSwgZmFrZV9kaXJf
cGF0aCwgMSwgMSkKQEAgLTE5OSwxNCArMTg5LDEwIEBAIENPTlRFTlQgT0YgVEVTVAogICAgICAg
ICBmYWtlX2Rpcl9wYXRoID0gc2VsZi5mYWtlX2Rpcl9wYXRoKCd0ZXN0aGFybmVzc3BhdGhzJykK
ICAgICAgICAgY29udmVydGVyID0gX1czQ1Rlc3RDb252ZXJ0ZXIoZmFrZV9kaXJfcGF0aCwgRFVN
TVlfRklMRU5BTUUsIE5vbmUpCiAKLSAgICAgICAgb2MgPSBPdXRwdXRDYXB0dXJlKCkKLSAgICAg
ICAgb2MuY2FwdHVyZV9vdXRwdXQoKQotICAgICAgICB0cnk6CisgICAgICAgIHdpdGggT3V0cHV0
Q2FwdHVyZSgpOgogICAgICAgICAgICAgY29udmVydGVyLmZlZWQodGVzdF9odG1sKQogICAgICAg
ICAgICAgY29udmVydGVyLmNsb3NlKCkKICAgICAgICAgICAgIGNvbnZlcnRlZCA9IGNvbnZlcnRl
ci5vdXRwdXQoKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgb2MucmVzdG9yZV9vdXRw
dXQoKQogCiAgICAgICAgIHNlbGYudmVyaWZ5X2NvbnZlcnNpb25faGFwcGVuZWQoY29udmVydGVk
KQogICAgICAgICBzZWxmLnZlcmlmeV90ZXN0X2hhcm5lc3NfcGF0aHMoY29udmVydGVyLCBjb252
ZXJ0ZWRbMl0sIGZha2VfZGlyX3BhdGgsIDIsIDEpCkBAIC0yNzksMTQgKzI2NSwxMCBAQCBDT05U
RU5UIE9GIFRFU1QKICAgICAgICAgY29udmVydGVyID0gX1czQ1Rlc3RDb252ZXJ0ZXIoRFVNTVlf
UEFUSCwgRFVNTVlfRklMRU5BTUUsIE5vbmUpCiAgICAgICAgIHRlc3RfY29udGVudCA9IHNlbGYu
Z2VuZXJhdGVfdGVzdF9jb250ZW50X3Byb3BlcnRpZXNfYW5kX3ZhbHVlcyhjb252ZXJ0ZXIucHJl
Zml4ZWRfcHJvcGVydGllcywgY29udmVydGVyLnByZWZpeGVkX3Byb3BlcnR5X3ZhbHVlcywgMjAs
IHRlc3RfaHRtbCkKIAotICAgICAgICBvYyA9IE91dHB1dENhcHR1cmUoKQotICAgICAgICBvYy5j
YXB0dXJlX291dHB1dCgpCi0gICAgICAgIHRyeToKKyAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJl
KCk6CiAgICAgICAgICAgICBjb252ZXJ0ZXIuZmVlZCh0ZXN0X2NvbnRlbnRbMl0pCiAgICAgICAg
ICAgICBjb252ZXJ0ZXIuY2xvc2UoKQogICAgICAgICAgICAgY29udmVydGVkID0gY29udmVydGVy
Lm91dHB1dCgpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBvYy5yZXN0b3JlX291dHB1
dCgpCiAKICAgICAgICAgc2VsZi52ZXJpZnlfY29udmVyc2lvbl9oYXBwZW5lZChjb252ZXJ0ZWQp
CiAgICAgICAgIHNlbGYudmVyaWZ5X3ByZWZpeGVkX3Byb3BlcnRpZXMoY29udmVydGVkLCB0ZXN0
X2NvbnRlbnRbMF0pCkBAIC0zMTEsMTQgKzI5MywxMCBAQCBDT05URU5UIE9GIFRFU1QKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlbGVtZW50cyc6IFsnc2NyaXB0Jywg
J3N0eWxlJywgJ2ltZycsICdsaW5rJywgJ3ZpZGVvJ119CiAgICAgICAgIGNvbnZlcnRlciA9IF9X
M0NUZXN0Q29udmVydGVyKERVTU1ZX1BBVEgsIERVTU1ZX0ZJTEVOQU1FLCB0ZXN0X3JlZmVyZW5j
ZV9zdXBwb3J0X2luZm8pCiAKLSAgICAgICAgb2MgPSBPdXRwdXRDYXB0dXJlKCkKLSAgICAgICAg
b2MuY2FwdHVyZV9vdXRwdXQoKQotICAgICAgICB0cnk6CisgICAgICAgIHdpdGggT3V0cHV0Q2Fw
dHVyZSgpOgogICAgICAgICAgICAgY29udmVydGVyLmZlZWQodGVzdF9odG1sKQogICAgICAgICAg
ICAgY29udmVydGVyLmNsb3NlKCkKICAgICAgICAgICAgIGNvbnZlcnRlZCA9IGNvbnZlcnRlci5v
dXRwdXQoKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgb2MucmVzdG9yZV9vdXRwdXQo
KQogCiAgICAgICAgIHNlbGYudmVyaWZ5X2NvbnZlcnNpb25faGFwcGVuZWQoY29udmVydGVkKQog
ICAgICAgICBzZWxmLnZlcmlmeV9yZWZlcmVuY2VfcmVsYXRpdmVfcGF0aHMoY29udmVydGVkLCB0
ZXN0X3JlZmVyZW5jZV9zdXBwb3J0X2luZm8pCkBAIC0zNjIsMTQgKzM0MCwxMCBAQCBDT05URU5U
IE9GIFRFU1QKICAgICAgICAgdGVzdF9yZWZlcmVuY2Vfc3VwcG9ydF9pbmZvID0geydyZWZlcmVu
Y2VfcmVscGF0aCc6ICcuLi8nLCAnZmlsZXMnOiBbJy4uL3N1cHBvcnQveXl5LnBuZycsICcuLi9z
dXBwb3J0L3l5LnBuZycsICcuLi8uLi9hbm90aGVyL2RpcmVjdG9yeS94LnBuZyddfQogICAgICAg
ICBjb252ZXJ0ZXIgPSBfVzNDVGVzdENvbnZlcnRlcihEVU1NWV9QQVRILCBEVU1NWV9GSUxFTkFN
RSwgdGVzdF9yZWZlcmVuY2Vfc3VwcG9ydF9pbmZvKQogCi0gICAgICAgIG9jID0gT3V0cHV0Q2Fw
dHVyZSgpCi0gICAgICAgIG9jLmNhcHR1cmVfb3V0cHV0KCkKLSAgICAgICAgdHJ5OgorICAgICAg
ICB3aXRoIE91dHB1dENhcHR1cmUoKToKICAgICAgICAgICAgIGNvbnZlcnRlci5mZWVkKHRlc3Rf
aHRtbCkKICAgICAgICAgICAgIGNvbnZlcnRlci5jbG9zZSgpCiAgICAgICAgICAgICBjb252ZXJ0
ZWQgPSBjb252ZXJ0ZXIub3V0cHV0KCkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIG9j
LnJlc3RvcmVfb3V0cHV0KCkKIAogICAgICAgICBzZWxmLnZlcmlmeV9jb252ZXJzaW9uX2hhcHBl
bmVkKGNvbnZlcnRlZCkKIApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9p
bXBvcnRlcl91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3czYy90ZXN0X2ltcG9ydGVyX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNjU3NzMpCisrKyBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2ltcG9ydGVyX3VuaXR0ZXN0LnB5CSh3b3JraW5n
IGNvcHkpCkBAIC0xLDQgKzEsNSBAQAogIyBDb3B5cmlnaHQgKEMpIDIwMTMgQWRvYmUgU3lzdGVt
cyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTMxLDEwICszMiwxMSBAQCBpbXBvcnQgdW5pdHRlc3QKIGZyb20gd2Via2l0cHku
Y29tbW9uLmhvc3RfbW9jayBpbXBvcnQgTW9ja0hvc3QKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5
c3RlbS5maWxlc3lzdGVtX21vY2sgaW1wb3J0IE1vY2tGaWxlU3lzdGVtCiBmcm9tIHdlYmtpdHB5
LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlX21vY2sgaW1wb3J0IE1vY2tFeGVjdXRpdmUyLCBTY3Jp
cHRFcnJvcgotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0
IE91dHB1dENhcHR1cmUKIGZyb20gd2Via2l0cHkudzNjLnRlc3RfZG93bmxvYWRlciBpbXBvcnQg
VGVzdERvd25sb2FkZXIKIGZyb20gd2Via2l0cHkudzNjLnRlc3RfaW1wb3J0ZXIgaW1wb3J0IHBh
cnNlX2FyZ3MsIFRlc3RJbXBvcnRlcgogCitmcm9tIHdlYmtpdGNvcmVweSBpbXBvcnQgT3V0cHV0
Q2FwdHVyZQorCiBGQUtFX1NPVVJDRV9ESVIgPSAnL3Rlc3RzL2Nzc3dnJwogRkFLRV9URVNUX1BB
VEggPSAnY3NzLWZha2UtMScKIApAQCAtMTA4LDEyICsxMTAsOCBAQCBjbGFzcyBUZXN0SW1wb3J0
ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlCiAKICAgICAgICAgaW1wb3J0ZXIgPSBUZXN0SW1wb3J0
ZXIoaG9zdCwgRkFLRV9URVNUX1BBVEgsIHNlbGYuX3BhcnNlX29wdGlvbnMoWyctbicsICctZCcs
ICd3M2MnLCAnLXMnLCBGQUtFX1NPVVJDRV9ESVJdKSkKIAotICAgICAgICBvYyA9IE91dHB1dENh
cHR1cmUoKQotICAgICAgICBvYy5jYXB0dXJlX291dHB1dCgpCi0gICAgICAgIHRyeToKKyAgICAg
ICAgd2l0aCBPdXRwdXRDYXB0dXJlKCk6CiAgICAgICAgICAgICBpbXBvcnRlci5kb19pbXBvcnQo
KQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgb2MucmVzdG9yZV9vdXRwdXQoKQogCiAg
ICAgZGVmIHRlc3RfaW1wb3J0X2Rpcl93aXRoX25vX3Rlc3RzKHNlbGYpOgogICAgICAgICBGQUtF
X0ZJTEVTLnVwZGF0ZShGQUtFX1JFUE9TSVRPUklFUykKQEAgLTEyMywxMiArMTIxLDggQEAgY2xh
c3MgVGVzdEltcG9ydGVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZQogICAgICAgICBob3N0LmZpbGVz
eXN0ZW0gPSBNb2NrRmlsZVN5c3RlbShmaWxlcz1GQUtFX0ZJTEVTKQogCiAgICAgICAgIGltcG9y
dGVyID0gVGVzdEltcG9ydGVyKGhvc3QsIEZBS0VfVEVTVF9QQVRILCBzZWxmLl9wYXJzZV9vcHRp
b25zKFsnLW4nLCAnLWQnLCAndzNjJywgJy1zJywgRkFLRV9TT1VSQ0VfRElSXSkpCi0gICAgICAg
IG9jID0gT3V0cHV0Q2FwdHVyZSgpCi0gICAgICAgIG9jLmNhcHR1cmVfb3V0cHV0KCkKLSAgICAg
ICAgdHJ5OgorICAgICAgICB3aXRoIE91dHB1dENhcHR1cmUoKToKICAgICAgICAgICAgIGltcG9y
dGVyLmRvX2ltcG9ydCgpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBvYy5yZXN0b3Jl
X291dHB1dCgpCiAKICAgICBkZWYgdGVzdF9pbXBvcnRfZGlyX3dpdGhfZW1wdHlfaW5pdF9weShz
ZWxmKToKICAgICAgICAgRkFLRV9GSUxFUyA9IHsKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdzNjL3Rlc3RfcGFyc2VyX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdzNjL3Rlc3RfcGFyc2VyX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNjU3NzMp
CisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X3BhcnNlcl91bml0dGVzdC5weQko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKICMgQ29weXJpZ2h0IChDKSAyMDEzIEFkb2Jl
IFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIyBDb3B5cmlnaHQg
KEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMp
IDIwMTUsIDIwMjAgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogIwogIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yNiwxMiArMjYsMTQgQEAKICMgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCiAjIFNVQ0ggREFN
QUdFLgogCitpbXBvcnQgbG9nZ2luZwogaW1wb3J0IG9zCiBpbXBvcnQgdW5pdHRlc3QKIAotZnJv
bSB3ZWJraXRweS5jb21tb24uc3lzdGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0IE91dHB1dENhcHR1
cmUKIGZyb20gd2Via2l0cHkudzNjLnRlc3RfcGFyc2VyIGltcG9ydCBUZXN0UGFyc2VyCiAKK2Zy
b20gd2Via2l0Y29yZXB5IGltcG9ydCBPdXRwdXRDYXB0dXJlCisKIAogb3B0aW9ucyA9IHsnYWxs
JzogRmFsc2UsICdub19vdmVyd3JpdGUnOiBGYWxzZX0KIApAQCAtNjEsMTQgKzYzLDEwIEBAIGNs
YXNzIFRlc3RQYXJzZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIDxsaW5rIHJlbD0ibWF0Y2gi
IGhyZWY9Im9yYW5nZS1ib3gtcmVmLnhodCIgLz4KIDwvaGVhZD4KICIiIgotICAgICAgICBvYyA9
IE91dHB1dENhcHR1cmUoKQotICAgICAgICBvYy5jYXB0dXJlX291dHB1dCgpCi0gICAgICAgIHRy
eToKKyAgICAgICAgd2l0aCBPdXRwdXRDYXB0dXJlKGxldmVsPWxvZ2dpbmcuSU5GTykgYXMgY2Fw
dHVyZWQ6CiAgICAgICAgICAgICB0ZXN0X3BhdGggPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5zZXAs
ICdzb21lJywgJ21hZGV1cCcsICdwYXRoJykKICAgICAgICAgICAgIHBhcnNlciA9IFRlc3RQYXJz
ZXIob3B0aW9ucywgb3MucGF0aC5qb2luKHRlc3RfcGF0aCwgJ3NvbWVmaWxlLmh0bWwnKSkKICAg
ICAgICAgICAgIHRlc3RfaW5mbyA9IHBhcnNlci5hbmFseXplX3Rlc3QodGVzdF9jb250ZW50cz10
ZXN0X2h0bWwpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBfLCBfLCBsb2dzID0gb2Mu
cmVzdG9yZV9vdXRwdXQoKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodGVzdF9pbmZv
LCBOb25lLCAnZGlkIG5vdCBmaW5kIGEgdGVzdCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgn
dGVzdCcgaW4gdGVzdF9pbmZvLmtleXMoKSwgJ2RpZCBub3QgZmluZCBhIHRlc3QgZmlsZScpCkBA
IC03Nyw3ICs3NSwxMCBAQCBjbGFzcyBUZXN0UGFyc2VyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6
CiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJ3JlZnN1cHBvcnQnIGluIHRlc3RfaW5mby5rZXlz
KCksICd0aGVyZSBzaG91bGQgYmUgbm8gcmVmc3VwcG9ydCBmaWxlcyBmb3IgdGhpcyB0ZXN0JykK
ICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgnanN0ZXN0JyBpbiB0ZXN0X2luZm8ua2V5cygpLCAn
dGVzdCBzaG91bGQgbm90IGhhdmUgYmVlbiBhbmFseXplZCBhcyBhIGpzdGVzdCcpCiAKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChsb2dzLCAnTXVsdGlwbGUgcmVmZXJlbmNlcyBhcmUgbm90IHN1
cHBvcnRlZC4gSW1wb3J0aW5nIHRoZSBmaXJzdCByZWYgZGVmaW5lZCBpbiBzb21lZmlsZS5odG1s
XG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY2FwdHVyZWQucm9v
dC5sb2cuZ2V0dmFsdWUoKSwKKyAgICAgICAgICAgICdNdWx0aXBsZSByZWZlcmVuY2VzIGFyZSBu
b3Qgc3VwcG9ydGVkLiBJbXBvcnRpbmcgdGhlIGZpcnN0IHJlZiBkZWZpbmVkIGluIHNvbWVmaWxl
Lmh0bWxcbicsCisgICAgICAgICkKIAogICAgIGRlZiB0ZXN0X2FuYWx5emVfdGVzdF9yZWZ0ZXN0
X21hdGNoX2FuZF9taXNtYXRjaChzZWxmKToKICAgICAgICAgdGVzdF9odG1sID0gIiIiPGhlYWQ+
CkBAIC04NiwxNSArODcsMTAgQEAgY2xhc3MgVGVzdFBhcnNlclRlc3QodW5pdHRlc3QuVGVzdENh
c2UpOgogPGxpbmsgcmVsPSJtaXNtYXRjaCIgaHJlZj0ib3JhbmdlLWJveC1ub3RyZWYueGh0IiAv
PgogPC9oZWFkPgogIiIiCi0gICAgICAgIG9jID0gT3V0cHV0Q2FwdHVyZSgpCi0gICAgICAgIG9j
LmNhcHR1cmVfb3V0cHV0KCkKLQotICAgICAgICB0cnk6CisgICAgICAgIHdpdGggT3V0cHV0Q2Fw
dHVyZShsZXZlbD1sb2dnaW5nLklORk8pIGFzIGNhcHR1cmVkOgogICAgICAgICAgICAgdGVzdF9w
YXRoID0gb3MucGF0aC5qb2luKG9zLnBhdGguc2VwLCAnc29tZScsICdtYWRldXAnLCAncGF0aCcp
CiAgICAgICAgICAgICBwYXJzZXIgPSBUZXN0UGFyc2VyKG9wdGlvbnMsIG9zLnBhdGguam9pbih0
ZXN0X3BhdGgsICdzb21lZmlsZS5odG1sJykpCiAgICAgICAgICAgICB0ZXN0X2luZm8gPSBwYXJz
ZXIuYW5hbHl6ZV90ZXN0KHRlc3RfY29udGVudHM9dGVzdF9odG1sKQotICAgICAgICBmaW5hbGx5
OgotICAgICAgICAgICAgXywgXywgbG9ncyA9IG9jLnJlc3RvcmVfb3V0cHV0KCkKIAogICAgICAg
ICBzZWxmLmFzc2VydE5vdEVxdWFsKHRlc3RfaW5mbywgTm9uZSwgJ2RpZCBub3QgZmluZCBhIHRl
c3QnKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3Rlc3QnIGluIHRlc3RfaW5mby5rZXlzKCks
ICdkaWQgbm90IGZpbmQgYSB0ZXN0IGZpbGUnKQpAQCAtMTAzLDcgKzk5LDEwIEBAIGNsYXNzIFRl
c3RQYXJzZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRGYWxz
ZSgncmVmc3VwcG9ydCcgaW4gdGVzdF9pbmZvLmtleXMoKSwgJ3RoZXJlIHNob3VsZCBiZSBubyBy
ZWZzdXBwb3J0IGZpbGVzIGZvciB0aGlzIHRlc3QnKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNl
KCdqc3Rlc3QnIGluIHRlc3RfaW5mby5rZXlzKCksICd0ZXN0IHNob3VsZCBub3QgaGF2ZSBiZWVu
IGFuYWx5emVkIGFzIGEganN0ZXN0JykKIAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvZ3Ms
ICdNdWx0aXBsZSByZWZlcmVuY2VzIGFyZSBub3Qgc3VwcG9ydGVkLiBJbXBvcnRpbmcgdGhlIGZp
cnN0IHJlZiBkZWZpbmVkIGluIHNvbWVmaWxlLmh0bWxcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoCisgICAgICAgICAgICBjYXB0dXJlZC5yb290LmxvZy5nZXR2YWx1ZSgpLAorICAgICAg
ICAgICAgJ011bHRpcGxlIHJlZmVyZW5jZXMgYXJlIG5vdCBzdXBwb3J0ZWQuIEltcG9ydGluZyB0
aGUgZmlyc3QgcmVmIGRlZmluZWQgaW4gc29tZWZpbGUuaHRtbFxuJywKKyAgICAgICAgKQogCiAg
ICAgZGVmIHRlc3RfYW5hbHl6ZV90ZXN0X3JlZnRlc3Rfd2l0aF9yZWZfc3VwcG9ydF9GaWxlcyhz
ZWxmKToKICAgICAgICAgIiIiIFRlc3RzIGFuYWx5emVfdGVzdCgpIHVzaW5nIGEgcmVmdGVzdCB0
aGF0IGhhcyByZWZlcnMgdG8gYSByZWZlcmVuY2UgZmlsZSBvdXRzaWRlIG9mIHRoZSB0ZXN0cyBk
aXJlY3RvcnkgYW5kIHRoZSByZWZlcmVuY2UgZmlsZSBoYXMgcGF0aHMgdG8gb3RoZXIgc3VwcG9y
dCBmaWxlcyAiIiIK
</data>

          </attachment>
      

    </bug>

</bugzilla>